{ config, lib, ... }: with lib; let cfg = config.system.disks; defaultMountOptions = ["compress-force=zstd:15"]; in { imports = [ ./impermanence.nix]; 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; 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=2G" "mode=755"]; }; }; }; fileSystems = { "/srv" = { neededForBoot = true; }; "/boot" = { neededForBoot = true; }; }; }; } # vim: ts=2