diff --git a/curacao/dk.nix b/curacao/dk.nix new file mode 100644 index 0000000..219fc52 --- /dev/null +++ b/curacao/dk.nix @@ -0,0 +1,183 @@ +{ passwordFile ? "/should_not_be_needed_in_this_context", ... }: +# FIXME Subvolumes for backup. If they're not created with the script. Add the script btw. +# FIXME Add partlabels to the partitions so disko can mount them +# FIXME Test. Somehow. +# FIXME Make it work for NixOS, duh +# TODO Not relatime everywhere, thank you +# TODO Default options +let + btrfs_args_hdd = [ + "rw" + "relatime" + "compress=zstd:3" + "space_cache" + ]; + btrfs_args_ssd = btrfs_args_hdd ++ [ "ssd" ]; +in +{ + disko.devices = { + disk = { + razmo = { + type = "disk"; + device = "/dev/disk/by-id/ata-ST1000LM048-2E7172_WKP8925H"; + content = { + type = "gpt"; + partitions = { + razswap = { + # Currently without partlabel + priority = 1; + start = "2048"; + size = "8G"; + content = { + type = "swap"; + # I don't think I really saw this one being used, maybe we + # could reduce it to get more /boot space. + randomEncryption = true; + # TODO NixOS documentation says not to use this with + # hibernation, as it can't set the partition where the + # hibernation image is saved. That's what I'm doing with Arch, + # but I'm setting resume=, should test if it actually works? + # Untranslated options from /etc/crypttab: swap,cipher=aes-xts-plain64,size=256 + # Untranslated options from /etc/fstab: defaults,pri=100 + }; + }; + razesp = { + # Currently without partlabel + priority = 2; + size = "128M"; + type = "EF00"; # EFI system partition + content = { + type = "filesystem"; + format = "vfat"; + mountpoint = "/efi"; + mountOptions = [ + "rw" + "relatime" + "fmask=0022" + "dmask=0022" + "codepage=437" + "iocharset=iso8859-1" + "shortname=mixed" + "utf8" + "errors=remount-ro" + "noauto" + ]; + }; + }; + razboot = { + # Currently without partlabel + priority = 3; + size = "128M"; + content = { + type = "luks"; + name = "boot"; + initrdUnlock = false; + extraFormatArgs = [ "--type luks1" ]; + passwordFile = passwordFile; + settings = { + keyFile = "/etc/keys/boot"; + }; + content = { + type = "filesystem"; + format = "ext2"; + mountOptions = [ + "rw" + "relatime" + "stripe=4" + ]; + }; + }; + }; + razmo = { + # Currently without partlabel + priority = 4; + content = { + type = "luks"; + name = "razmo"; + initrdUnlock = false; + settings = { + keyFile = "/etc/keys/razmo"; + }; + content = { + type = "btrfs"; + # extraArgs = [ "-f" ]; + mountpoint = "/mnt/razmo"; + mountOptions = btrfs_args_hdd; + subvolumes = { + "home.razmo" = { + mountpoint = "/home.heavy"; + mountOptions = btrfs_args_hdd; + }; + }; + }; + }; + }; + }; + }; + }; + rapido = { + type = "disk"; + device = "/dev/disk/by-id/nvme-GIGABYTE_GP-GSM2NE3256GNTD_SN204508906665"; + content = { + type = "gpt"; + partitions = { + rapswap = { + # Currently without partlabel + priority = 1; + start = "2048"; + size = "8G"; + type = "8200"; # Linux swap + content = { + type = "luks"; + name = "rapswap"; + initrdUnlock = true; + settings = { + keyFile = "/etc/keys/rapswap"; + allowDiscards = true; + }; + content = { + type = "swap"; + resumeDevice = true; + # Untranslated options from /etc/fstab: defaults,pri=100 + }; + }; + }; + rapido = { + # Currently without partlabel + priority = 2; + content = { + type = "luks"; + name = "rapido"; + initrdUnlock = true; + settings = { + keyFile = "/etc/keys/rapido"; + allowDiscards = true; + }; + content = { + type = "btrfs"; + # extraArgs = [ "-f" ]; + mountpoint = "/mnt/rapido"; + mountOptions = btrfs_args_ssd; + subvolumes = { + archlinux = { + mountpoint = "/"; + mountOptions = btrfs_args_ssd; + }; + "home.rapido" = { + mountpoint = "/home"; + mountOptions = btrfs_args_ssd; + }; + nix = { + mountpoint = "/nix"; + mountOptions = btrfs_args_ssd; + }; + }; + }; + }; + }; + }; + }; + }; + }; + }; +}