{ pkgs, lib, config, ... }: # TODO Find a way to use keys in filesystem # 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" ]; passwordFile = "/tmp/dotfiles_${config.networking.hostName}_password"; in { boot.loader.efi.efiSysMountPoint = config.disko.devices.disk.razmo.content.partitions.esp.content.mountpoint; disko.devices = { disk = { razmo = { type = "disk"; device = "/dev/disk/by-id/ata-ST1000LM048-2E7172_WKP8925H"; content = { type = "gpt"; partitions = { swap = { priority = 10; start = "2048"; size = "6G"; content = { type = "swap"; 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 }; }; nixosboot = { priority = 15; size = "2G"; content = { type = "filesystem"; format = "vfat"; mountpoint = "/boot"; }; }; esp = { priority = 20; 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" ]; }; }; boot = { priority = 30; size = "128M"; content = { type = "luks"; name = "boot"; extraFormatArgs = [ "--type luks1" ]; passwordFile = passwordFile; settings = { # keyFile = "/etc/keys/boot"; }; content = { type = "filesystem"; format = "ext2"; mountpoint = "/mnt/old/boot"; mountOptions = [ "rw" "relatime" # "stripe=4" # For some reason doesn't work on NixOS ]; }; }; }; main = { priority = 40; content = { type = "luks"; name = "razmo"; passwordFile = passwordFile; 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 = { swap = { priority = 10; start = "2048"; size = "8G"; type = "8200"; # Linux swap content = { type = "luks"; name = "rapswap"; passwordFile = passwordFile; settings = { # keyFile = "/etc/keys/rapswap"; allowDiscards = true; }; content = { type = "swap"; resumeDevice = true; # Untranslated options from /etc/fstab: defaults,pri=100 }; }; }; main = { priority = 20; content = { type = "luks"; name = "rapido"; initrdUnlock = true; passwordFile = passwordFile; settings = { # keyFile = "/etc/keys/rapido"; allowDiscards = true; }; content = { type = "btrfs"; # extraArgs = [ "-f" ]; mountpoint = "/mnt/rapido"; mountOptions = btrfs_args_ssd; subvolumes = { archlinux = { mountpoint = "/mnt/old"; mountOptions = btrfs_args_ssd; }; # Should be temporary, to make sure we can revert to Arch anytime "home.nixos" = { mountpoint = "/home"; mountOptions = btrfs_args_ssd; }; "home.rapido" = { mountpoint = "/mnt/old/home"; mountOptions = btrfs_args_ssd; }; nix = { mountpoint = "/nix"; mountOptions = btrfs_args_ssd; }; nixos = { mountpoint = "/"; }; }; }; }; }; }; }; }; }; }; }