diff --git a/common/global/nix.nix b/common/global/nix.nix index 34ec89c..342a132 100644 --- a/common/global/nix.nix +++ b/common/global/nix.nix @@ -31,6 +31,10 @@ in "flakes" "ca-derivations" ]; + system-features = lib.mkAfter [ + "gccarch-x86-64-v2" + "gccarch-x86-64-v3" + ]; warn-dirty = false; flake-registry = ""; # disable global flake registries connect-timeout = 10; diff --git a/python/installer/__main__.py b/python/installer/__main__.py index ddf3c68..c661c72 100644 --- a/python/installer/__main__.py +++ b/python/installer/__main__.py @@ -176,6 +176,21 @@ def create_zfs_datasets() -> None: run_output(("zfs", "create", "root_pool/home")) run_output(("zfs", "create", "-o", "reservation=1G", "root_pool/var")) run_output(("zfs", "create", "-o", "compression=zstd-9", "-o", "reservation=10G", "root_pool/nix")) + run_output( + ( + "zfs", + "create", + "-o", + "sync=disabled", + "-o", + "redundant_metadata=some", + "-o", + "normalization=none", + "-o", + "utf8only=off", + "root_pool/nix_build", + ) + ) datasets = run_output(("zfs", "list", "-o", "name")) expected_datasets = { @@ -183,6 +198,7 @@ def create_zfs_datasets() -> None: "root_pool/home", "root_pool/var", "root_pool/nix", + "root_pool/nix_build", } missing_datasets = expected_datasets.difference(datasets.splitlines()) if missing_datasets: @@ -248,6 +264,7 @@ def create_nix_hardware_file(mnt_dir: str, disks: Sequence[str], encrypt: str | ' "/home" = {\n device = "root_pool/home";\n fsType = "zfs";\n };\n\n' ' "/var" = {\n device = "root_pool/var";\n fsType = "zfs";\n };\n\n' ' "/nix" = {\n device = "root_pool/nix";\n fsType = "zfs";\n };\n\n' + ' "/nix/var/nix/builds" = {\n device = "root_pool/nix_build";\n fsType = "zfs";\n };\n\n' ' "/boot" = {\n' f' device = "/dev/disk/by-uuid/{get_boot_drive_id(disks[0])}";\n' ' fsType = "vfat";\n options = [\n "fmask=0077"\n' @@ -270,6 +287,7 @@ def install_nixos(mnt_dir: str, disks: Sequence[str], encrypt: str | None) -> No run_output(("mount", "-o", "X-mount.mkdir", "-t", "zfs", "root_pool/home", f"{mnt_dir}/home")) run_output(("mount", "-o", "X-mount.mkdir", "-t", "zfs", "root_pool/var", f"{mnt_dir}/var")) run_output(("mount", "-o", "X-mount.mkdir", "-t", "zfs", "root_pool/nix", f"{mnt_dir}/nix")) + run_output(("mount", "-o", "X-mount.mkdir", "-t", "zfs", "root_pool/nix_build", f"{mnt_dir}/nix/var/nix/builds")) for disk in disks: run_output(("mkfs.vfat", "-n", "EFI", f"{disk}-part1")) diff --git a/systems/bob/hardware.nix b/systems/bob/hardware.nix index e835d47..b7791f3 100644 --- a/systems/bob/hardware.nix +++ b/systems/bob/hardware.nix @@ -50,6 +50,11 @@ fsType = "zfs"; }; + "/nix/var/nix/builds" = { + device = "root_pool/nix_build"; + fsType = "zfs"; + }; + "/var" = { device = "root_pool/var"; fsType = "zfs"; diff --git a/systems/brain/hardware.nix b/systems/brain/hardware.nix index f830163..fc3ecf5 100644 --- a/systems/brain/hardware.nix +++ b/systems/brain/hardware.nix @@ -53,6 +53,11 @@ fsType = "zfs"; }; + "/nix/var/nix/builds" = { + device = "root_pool/nix_build"; + fsType = "zfs"; + }; + "/boot" = { device = "/dev/disk/by-uuid/12CE-A600"; fsType = "vfat"; diff --git a/systems/jeeves/default.nix b/systems/jeeves/default.nix index de3165c..494df08 100644 --- a/systems/jeeves/default.nix +++ b/systems/jeeves/default.nix @@ -24,10 +24,6 @@ in ./runners ./syncthing.nix ]; - nix.settings.system-features = lib.mkAfter [ - "gccarch-x86-64-v2" - "gccarch-x86-64-v3" - ]; services = { openssh.ports = [ 629 ]; diff --git a/systems/jeeves/hardware.nix b/systems/jeeves/hardware.nix index 0358e43..ab323b5 100644 --- a/systems/jeeves/hardware.nix +++ b/systems/jeeves/hardware.nix @@ -96,6 +96,11 @@ in fsType = "zfs"; }; + "/nix/var/nix/builds" = { + device = "root_pool/nix_build"; + fsType = "zfs"; + }; + "/var" = { device = "root_pool/var"; fsType = "zfs"; diff --git a/systems/rhapsody-in-green/hardware.nix b/systems/rhapsody-in-green/hardware.nix index 7b15c5e..d1002a4 100644 --- a/systems/rhapsody-in-green/hardware.nix +++ b/systems/rhapsody-in-green/hardware.nix @@ -34,14 +34,22 @@ device = "root_pool/root"; fsType = "zfs"; }; + "/home" = { device = "root_pool/home"; fsType = "zfs"; }; + + "/nix/var/nix/builds" = { + device = "root_pool/nix_build"; + fsType = "zfs"; + }; + "/var" = { device = "root_pool/var"; fsType = "zfs"; }; + "/boot" = { device = "/dev/disk/by-uuid/12CE-A600"; fsType = "vfat";