diff options
Diffstat (limited to 'modules/by-name/di/disko/module.nix')
-rw-r--r-- | modules/by-name/di/disko/module.nix | 78 |
1 files changed, 78 insertions, 0 deletions
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; + }; + }; + }; +} |