mirror of
https://github.com/nmasur/dotfiles
synced 2024-11-22 20:25:38 +00:00
add disko input and hardware module for swan
This commit is contained in:
parent
18c9e1efc8
commit
7a547f99c0
21
flake.lock
21
flake.lock
@ -69,6 +69,26 @@
|
|||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"disko": {
|
||||||
|
"inputs": {
|
||||||
|
"nixpkgs": [
|
||||||
|
"nixpkgs"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1677116397,
|
||||||
|
"narHash": "sha256-2OHwhv4k1SDEuNxhq+zluvrd5pbW8d4TP9NKW4B8iO8=",
|
||||||
|
"owner": "nix-community",
|
||||||
|
"repo": "disko",
|
||||||
|
"rev": "8fddb2fd721365fa77ff68b709539639d4dc65d7",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "nix-community",
|
||||||
|
"repo": "disko",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
"firefox-darwin": {
|
"firefox-darwin": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"nixpkgs": "nixpkgs"
|
"nixpkgs": "nixpkgs"
|
||||||
@ -396,6 +416,7 @@
|
|||||||
"bufferline-nvim-src": "bufferline-nvim-src",
|
"bufferline-nvim-src": "bufferline-nvim-src",
|
||||||
"cmp-nvim-lsp-src": "cmp-nvim-lsp-src",
|
"cmp-nvim-lsp-src": "cmp-nvim-lsp-src",
|
||||||
"darwin": "darwin",
|
"darwin": "darwin",
|
||||||
|
"disko": "disko",
|
||||||
"firefox-darwin": "firefox-darwin",
|
"firefox-darwin": "firefox-darwin",
|
||||||
"home-manager": "home-manager",
|
"home-manager": "home-manager",
|
||||||
"nil": "nil",
|
"nil": "nil",
|
||||||
|
@ -29,6 +29,12 @@
|
|||||||
# Use official Firefox binary for macOS
|
# Use official Firefox binary for macOS
|
||||||
firefox-darwin.url = "github:bandithedoge/nixpkgs-firefox-darwin";
|
firefox-darwin.url = "github:bandithedoge/nixpkgs-firefox-darwin";
|
||||||
|
|
||||||
|
# Manage disk format and partitioning
|
||||||
|
disko = {
|
||||||
|
url = "github:nix-community/disko";
|
||||||
|
inputs.nixpkgs.follows = "nixpkgs";
|
||||||
|
};
|
||||||
|
|
||||||
# Wallpapers
|
# Wallpapers
|
||||||
wallpapers = {
|
wallpapers = {
|
||||||
url = "gitlab:exorcist365/wallpapers";
|
url = "gitlab:exorcist365/wallpapers";
|
||||||
@ -146,6 +152,8 @@
|
|||||||
darwinConfigurations.lookingglass.config.home-manager.users."Noah.Masur".home;
|
darwinConfigurations.lookingglass.config.home-manager.users."Noah.Masur".home;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
diskoConfiguration = { swan = import ./hosts/swan/disks.nix { }; };
|
||||||
|
|
||||||
# Package servers into images with a generator
|
# Package servers into images with a generator
|
||||||
packages = forAllSystems (system: {
|
packages = forAllSystems (system: {
|
||||||
|
|
||||||
|
@ -10,11 +10,13 @@ nixpkgs.lib.nixosSystem {
|
|||||||
specialArgs = { };
|
specialArgs = { };
|
||||||
modules = [
|
modules = [
|
||||||
./hardware-configuration.nix
|
./hardware-configuration.nix
|
||||||
|
./disks.nix
|
||||||
../../modules/common
|
../../modules/common
|
||||||
../../modules/nixos
|
../../modules/nixos
|
||||||
(removeAttrs globals [ "mail.server" ])
|
(removeAttrs globals [ "mail.server" ])
|
||||||
wsl.nixosModules.wsl
|
wsl.nixosModules.wsl
|
||||||
home-manager.nixosModules.home-manager
|
home-manager.nixosModules.home-manager
|
||||||
|
disko.nixosModules.disko
|
||||||
{
|
{
|
||||||
server = true;
|
server = true;
|
||||||
gui.enable = false;
|
gui.enable = false;
|
||||||
@ -37,11 +39,11 @@ nixpkgs.lib.nixosSystem {
|
|||||||
boot.zfs.enabled = true;
|
boot.zfs.enabled = true;
|
||||||
boot.kernelPackages =
|
boot.kernelPackages =
|
||||||
config.boot.zfs.package.latestCompatibleLinuxPackages;
|
config.boot.zfs.package.latestCompatibleLinuxPackages;
|
||||||
boot.zfs.extraPools = [ "mypool" ];
|
# boot.zfs.extraPools = [ "mypool" ];
|
||||||
services.zfs.autoScrub.enable = true;
|
# services.zfs.autoScrub.enable = true;
|
||||||
services.zfs.autoScrub.interval = "daily";
|
# services.zfs.autoScrub.interval = "daily";
|
||||||
|
|
||||||
services.nfs.server.enable = true;
|
# services.nfs.server.enable = true;
|
||||||
|
|
||||||
}
|
}
|
||||||
];
|
];
|
||||||
|
@ -1,129 +1,167 @@
|
|||||||
{ bootDisk, storageDisks ? [ "/dev/vdb" "/dev/vdc" ], ... }: {
|
{ ... }: {
|
||||||
disk = {
|
disko.devices = {
|
||||||
boot = {
|
disk = {
|
||||||
type = "disk";
|
boot = {
|
||||||
device = "/dev/whatever";
|
type = "disk";
|
||||||
content = {
|
device = "/dev/nvme0n1";
|
||||||
type = "table";
|
content = {
|
||||||
format = "gpt";
|
type = "table";
|
||||||
partitions = [
|
format = "gpt";
|
||||||
{
|
partitions = [
|
||||||
|
{
|
||||||
|
type = "partition";
|
||||||
|
name = "ESP";
|
||||||
|
start = "0";
|
||||||
|
end = "512MiB";
|
||||||
|
fs-type = "fat32";
|
||||||
|
bootable = true;
|
||||||
|
content = {
|
||||||
|
type = "filesystem";
|
||||||
|
format = "vfat";
|
||||||
|
mountpoint = "/boot";
|
||||||
|
};
|
||||||
|
}
|
||||||
|
{
|
||||||
|
type = "partition";
|
||||||
|
name = "root";
|
||||||
|
start = "512MiB";
|
||||||
|
end = "100%";
|
||||||
|
part-type = "primary";
|
||||||
|
bootable = true;
|
||||||
|
content = {
|
||||||
|
type = "filesystem";
|
||||||
|
format = "ext4";
|
||||||
|
mountpoint = "/";
|
||||||
|
};
|
||||||
|
}
|
||||||
|
];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
sda = {
|
||||||
|
type = "disk";
|
||||||
|
device = "/dev/sda";
|
||||||
|
content = {
|
||||||
|
type = "table";
|
||||||
|
format = "gpt";
|
||||||
|
partitions = [{
|
||||||
type = "partition";
|
type = "partition";
|
||||||
name = "ESP";
|
name = "zfs";
|
||||||
start = "0";
|
start = "128MiB";
|
||||||
end = "512MiB";
|
|
||||||
fs-type = "fat32";
|
|
||||||
bootable = true;
|
|
||||||
content = {
|
|
||||||
type = "filesystem";
|
|
||||||
format = "vfat";
|
|
||||||
mountpoint = "/boot";
|
|
||||||
};
|
|
||||||
}
|
|
||||||
{
|
|
||||||
type = "partition";
|
|
||||||
name = "root";
|
|
||||||
start = "512MiB";
|
|
||||||
end = "100%";
|
end = "100%";
|
||||||
part-type = "primary";
|
|
||||||
bootable = true;
|
|
||||||
content = {
|
content = {
|
||||||
type = "filesystem";
|
type = "zfs";
|
||||||
format = "ext4";
|
pool = "tank";
|
||||||
mountpoint = "/";
|
|
||||||
};
|
};
|
||||||
}
|
}];
|
||||||
];
|
};
|
||||||
|
};
|
||||||
|
sdb = {
|
||||||
|
type = "disk";
|
||||||
|
device = "/dev/sdb";
|
||||||
|
content = {
|
||||||
|
type = "table";
|
||||||
|
format = "gpt";
|
||||||
|
partitions = [{
|
||||||
|
type = "partition";
|
||||||
|
name = "zfs";
|
||||||
|
start = "128MiB";
|
||||||
|
end = "100%";
|
||||||
|
content = {
|
||||||
|
type = "zfs";
|
||||||
|
pool = "tank";
|
||||||
|
};
|
||||||
|
}];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
sdc = {
|
||||||
|
type = "disk";
|
||||||
|
device = "/dev/sdc";
|
||||||
|
content = {
|
||||||
|
type = "table";
|
||||||
|
format = "gpt";
|
||||||
|
partitions = [{
|
||||||
|
type = "partition";
|
||||||
|
name = "zfs";
|
||||||
|
start = "128MiB";
|
||||||
|
end = "100%";
|
||||||
|
content = {
|
||||||
|
type = "zfs";
|
||||||
|
pool = "tank";
|
||||||
|
};
|
||||||
|
}];
|
||||||
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
a = {
|
zpool = {
|
||||||
type = "disk";
|
tank = {
|
||||||
device = builtins.elemAt storageDisks 1;
|
type = "zpool";
|
||||||
content = {
|
mode = "raidz1";
|
||||||
type = "table";
|
rootFsOptions = {
|
||||||
format = "gpt";
|
compression = "on"; # lz4 by default
|
||||||
partitions = [{
|
"com.sun:auto-snapshot" = "false";
|
||||||
type = "partition";
|
ashift = 12;
|
||||||
name = "zfs";
|
};
|
||||||
start = "128MiB";
|
# mountpoint = "/";
|
||||||
end = "100%";
|
|
||||||
content = {
|
|
||||||
type = "zfs";
|
|
||||||
pool = "tank";
|
|
||||||
};
|
|
||||||
}];
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
zpool = {
|
|
||||||
tank = {
|
|
||||||
type = "zpool";
|
|
||||||
mode = "raidz1";
|
|
||||||
rootFsOptions = {
|
|
||||||
compression = "on"; # lz4 by default
|
|
||||||
"com.sun:auto-snapshot" = "false";
|
|
||||||
ashift = 12;
|
|
||||||
};
|
|
||||||
# mountpoint = "/";
|
|
||||||
|
|
||||||
datasets = {
|
datasets = {
|
||||||
media = {
|
media = {
|
||||||
zfs_type = "filesystem";
|
zfs_type = "filesystem";
|
||||||
mountpoint = "none";
|
|
||||||
options."com.sun:auto-snapshot" = "false";
|
|
||||||
};
|
|
||||||
# "media/movies" = {
|
|
||||||
# zfs_type = "filesystem";
|
|
||||||
# mountpoint = "/media/movies";
|
|
||||||
# options.recordsize = "1M";
|
|
||||||
# };
|
|
||||||
# "media/tv" = {
|
|
||||||
# zfs_type = "filesystem";
|
|
||||||
# mountpoint = "/media/tv";
|
|
||||||
# options.recordsize = "1M";
|
|
||||||
# };
|
|
||||||
# "media/books" = {
|
|
||||||
# zfs_type = "filesystem";
|
|
||||||
# mountpoint = "/media/books";
|
|
||||||
# };
|
|
||||||
# archive = {
|
|
||||||
# zfs_type = "filesystem";
|
|
||||||
# mountpoint = "/archive";
|
|
||||||
# options.compression = "zstd";
|
|
||||||
# options."com.sun:auto-snapshot" = "true";
|
|
||||||
# };
|
|
||||||
# zfs_unmounted_fs = {
|
|
||||||
# zfs_type = "filesystem";
|
|
||||||
# options.mountpoint = "none";
|
|
||||||
# };
|
|
||||||
# zfs_legacy_fs = {
|
|
||||||
# zfs_type = "filesystem";
|
|
||||||
# options.mountpoint = "legacy";
|
|
||||||
# mountpoint = "/zfs_legacy_fs";
|
|
||||||
# };
|
|
||||||
# zfs_testvolume = {
|
|
||||||
# zfs_type = "volume";
|
|
||||||
# size = "10M";
|
|
||||||
# content = {
|
|
||||||
# type = "filesystem";
|
|
||||||
# format = "ext4";
|
|
||||||
# mountpoint = "/ext4onzfs";
|
|
||||||
# };
|
|
||||||
# };
|
|
||||||
encrypted = {
|
|
||||||
zfs_type = "filesystem";
|
|
||||||
size = "20M";
|
|
||||||
options = {
|
|
||||||
mountpoint = "none";
|
mountpoint = "none";
|
||||||
encryption = "aes-256-gcm";
|
options."com.sun:auto-snapshot" = "false";
|
||||||
keyformat = "passphrase";
|
|
||||||
keylocation = "file:///tmp/secret.key";
|
|
||||||
};
|
};
|
||||||
};
|
# "media/movies" = {
|
||||||
"encrypted/test" = {
|
# zfs_type = "filesystem";
|
||||||
zfs_type = "filesystem";
|
# mountpoint = "/media/movies";
|
||||||
size = "2M";
|
# options.recordsize = "1M";
|
||||||
mountpoint = "/zfs_crypted";
|
# };
|
||||||
|
# "media/tv" = {
|
||||||
|
# zfs_type = "filesystem";
|
||||||
|
# mountpoint = "/media/tv";
|
||||||
|
# options.recordsize = "1M";
|
||||||
|
# };
|
||||||
|
# "media/books" = {
|
||||||
|
# zfs_type = "filesystem";
|
||||||
|
# mountpoint = "/media/books";
|
||||||
|
# };
|
||||||
|
# archive = {
|
||||||
|
# zfs_type = "filesystem";
|
||||||
|
# mountpoint = "/archive";
|
||||||
|
# options.compression = "zstd";
|
||||||
|
# options."com.sun:auto-snapshot" = "true";
|
||||||
|
# };
|
||||||
|
# zfs_unmounted_fs = {
|
||||||
|
# zfs_type = "filesystem";
|
||||||
|
# options.mountpoint = "none";
|
||||||
|
# };
|
||||||
|
# zfs_legacy_fs = {
|
||||||
|
# zfs_type = "filesystem";
|
||||||
|
# options.mountpoint = "legacy";
|
||||||
|
# mountpoint = "/zfs_legacy_fs";
|
||||||
|
# };
|
||||||
|
# zfs_testvolume = {
|
||||||
|
# zfs_type = "volume";
|
||||||
|
# size = "10M";
|
||||||
|
# content = {
|
||||||
|
# type = "filesystem";
|
||||||
|
# format = "ext4";
|
||||||
|
# mountpoint = "/ext4onzfs";
|
||||||
|
# };
|
||||||
|
# };
|
||||||
|
# encrypted = {
|
||||||
|
# zfs_type = "filesystem";
|
||||||
|
# size = "20M";
|
||||||
|
# options = {
|
||||||
|
# mountpoint = "none";
|
||||||
|
# encryption = "aes-256-gcm";
|
||||||
|
# keyformat = "passphrase";
|
||||||
|
# keylocation = "file:///tmp/secret.key";
|
||||||
|
# };
|
||||||
|
# };
|
||||||
|
# "encrypted/test" = {
|
||||||
|
# zfs_type = "filesystem";
|
||||||
|
# size = "2M";
|
||||||
|
# mountpoint = "/zfs_crypted";
|
||||||
|
# };
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
29
hosts/swan/hardware-configuration.nix
Normal file
29
hosts/swan/hardware-configuration.nix
Normal file
@ -0,0 +1,29 @@
|
|||||||
|
# Do not modify this file! It was generated by ‘nixos-generate-config’
|
||||||
|
# and may be overwritten by future invocations. Please make changes
|
||||||
|
# to /etc/nixos/configuration.nix instead.
|
||||||
|
{ config, lib, pkgs, modulesPath, ... }:
|
||||||
|
|
||||||
|
{
|
||||||
|
imports = [ (modulesPath + "/installer/scan/not-detected.nix") ];
|
||||||
|
|
||||||
|
boot.initrd.availableKernelModules =
|
||||||
|
[ "xhci_pci" "ahci" "nvme" "usb_storage" "sd_mod" ];
|
||||||
|
boot.initrd.kernelModules = [ ];
|
||||||
|
boot.kernelModules = [ "kvm-intel" ];
|
||||||
|
boot.extraModulePackages = [ ];
|
||||||
|
|
||||||
|
swapDevices = [ ];
|
||||||
|
|
||||||
|
# Enables DHCP on each ethernet and wireless interface. In case of scripted networking
|
||||||
|
# (the default) this is the recommended approach. When using systemd-networkd it's
|
||||||
|
# still possible to use this option, but it's recommended to use it in conjunction
|
||||||
|
# with explicit per-interface declarations with `networking.interfaces.<interface>.useDHCP`.
|
||||||
|
networking.useDHCP = lib.mkDefault true;
|
||||||
|
# networking.interfaces.enp0s31f6.useDHCP = lib.mkDefault true;
|
||||||
|
# networking.interfaces.wlp3s0.useDHCP = lib.mkDefault true;
|
||||||
|
|
||||||
|
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
|
||||||
|
powerManagement.cpuFreqGovernor = lib.mkDefault "powersave";
|
||||||
|
hardware.cpu.intel.updateMicrocode =
|
||||||
|
lib.mkDefault config.hardware.enableRedistributableFirmware;
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user