dotfiles/curacao/disko.nix

192 lines
6 KiB
Nix

{ 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 = "/";
};
};
};
};
};
};
};
};
};
};
}