diff options
Diffstat (limited to '')
-rw-r--r-- | hosts/server1/configuration.nix | 3 | ||||
-rw-r--r-- | hosts/server1/hardware.nix | 8 | ||||
-rw-r--r-- | modules/by-name/di/disko/module.nix | 78 | ||||
-rw-r--r-- | system/default.nix | 1 | ||||
-rw-r--r-- | system/disks/default.nix | 83 |
5 files changed, 84 insertions, 89 deletions
diff --git a/hosts/server1/configuration.nix b/hosts/server1/configuration.nix index 0bbb993..2d35bd8 100644 --- a/hosts/server1/configuration.nix +++ b/hosts/server1/configuration.nix @@ -21,8 +21,5 @@ networking.hostName = "server1"; networking.domain = "vhack.eu"; - # FIXME: Find a better way to specify the disk - system.disks.disk = "/dev/vda"; - system.stateVersion = "22.11"; } diff --git a/hosts/server1/hardware.nix b/hosts/server1/hardware.nix index 6086362..9abc64c 100644 --- a/hosts/server1/hardware.nix +++ b/hosts/server1/hardware.nix @@ -3,8 +3,12 @@ (modulesPath + "/profiles/qemu-guest.nix") (modulesPath + "/profiles/headless.nix") ]; - # FIXME: The name of the grub device depends on the disko settings - boot.loader.grub.device = "/dev/vda"; + + vhack.disko = { + enable = true; + # FIXME: Find a better way to specify the disk + disk = "/dev/vda"; + }; boot.initrd.availableKernelModules = ["ata_piix" "uhci_hcd" "virtio_pci" "sr_mod" "virtio_blk"]; boot.initrd.kernelModules = []; } diff --git a/modules/by-name/di/disko/module.nix b/modules/by-name/di/disko/module.nix new file mode 100644 index 0000000..0aff93f --- /dev/null +++ b/modules/by-name/di/disko/module.nix @@ -0,0 +1,78 @@ +{ + config, + lib, + ... +}: let + cfg = config.system.disko; + + defaultMountOptions = ["compress-force=zstd:15" "noatime"]; +in { + options.vhack.disko = { + enable = lib.mkEnableOption "disk configuration via disko"; + + disk = lib.mkOption { + type = lib.types.path; + example = "/dev/disk/by-id/ata-WDC_WD10SDRW-11A0XS0_WD-WXP2A901KJN5"; + description = "Path to the main disk"; + }; + }; + + config = { + disko.devices = { + disk.main = { + type = "disk"; + device = cfg.disk; + + content = { + type = "gpt"; + partitions = { + boot = { + size = "1M"; + type = "EF02"; # for grub MBR + }; + root = { + size = "100%"; + content = { + type = "btrfs"; + extraArgs = ["-f" "--label nixos"]; # f: Override existing partitions + + subvolumes = { + "/nix" = { + mountpoint = "/nix"; + mountOptions = defaultMountOptions; + }; + "/srv" = { + mountpoint = "/srv"; + mountOptions = defaultMountOptions; + }; + "/srv/.snapshots" = { + mountpoint = "/srv/.snapshots"; + mountOptions = defaultMountOptions; + }; + "/boot" = { + mountpoint = "/boot"; + mountOptions = defaultMountOptions; + }; + }; + }; + }; + }; + }; + }; + + nodev."/" = { + fsType = "tmpfs"; + mountOptions = ["defaults" "size=6G" "mode=755"]; + }; + }; + + fileSystems = { + "/srv" = { + neededForBoot = true; + }; + "/boot" = { + neededForBoot = true; + }; + }; + }; +} diff --git a/system/default.nix b/system/default.nix index 14f0748..4c80ed9 100644 --- a/system/default.nix +++ b/system/default.nix @@ -1,6 +1,5 @@ {...}: { imports = [ - ./disks ./impermanence ./packages ./secrets diff --git a/system/disks/default.nix b/system/disks/default.nix deleted file mode 100644 index 3ae682c..0000000 --- a/system/disks/default.nix +++ /dev/null @@ -1,83 +0,0 @@ -{ - config, - lib, - ... -}: -with lib; let - cfg = config.system.disks; - defaultMountOptions = ["compress-force=zstd:15"]; -in { - options.system.disks = { - disk = mkOption { - type = lib.types.path; - example = literalExpression "/dev/disk/by-id/ata-WDC_WD10SDRW-11A0XS0_WD-WXP2A901KJN5"; - description = lib.mdDoc "Path to the disk"; - }; - }; - - config = { - disko.devices = { - disk.main = { - device = cfg.disk; - type = "disk"; - content = { - type = "table"; - format = "gpt"; - partitions = [ - { - name = "boot"; - start = "0"; - end = "1M"; - part-type = "primary"; - flags = ["bios_grub"]; - } - { - name = "root"; - # leave space for the grub aka BIOS boot - start = "1M"; - end = "100%"; - part-type = "primary"; - bootable = true; - content = { - type = "btrfs"; - extraArgs = ["-f" "--label nixos"]; # f: Override existing partitions - subvolumes = { - "nix" = { - mountpoint = "/nix"; - mountOptions = defaultMountOptions; - }; - "persistent-storage" = { - mountpoint = "/srv"; - mountOptions = defaultMountOptions; - }; - "persistent-storage@snapshots" = { - mountpoint = "/srv/.snapshots"; - mountOptions = defaultMountOptions; - }; - "boot" = { - mountpoint = "/boot"; - mountOptions = defaultMountOptions; - }; - }; - }; - } - ]; - }; - }; - nodev = { - "/" = { - fsType = "tmpfs"; - mountOptions = ["defaults" "size=6G" "mode=755"]; - }; - }; - }; - fileSystems = { - "/srv" = { - neededForBoot = true; - }; - "/boot" = { - neededForBoot = true; - }; - }; - }; -} |