From 11ba75e40728e8b5735c9c7cefc7af1631c942af Mon Sep 17 00:00:00 2001 From: "Henry J. Webster" Date: Thu, 30 Jul 2026 10:38:54 -0500 Subject: Restructure into a multi-machine flake and add the enzo laptop Split the single-host config into a shared minimal base plus opt-in profiles, and add a second machine (enzo laptop) alongside kusanagi. - flake: add mkMachine helper; declare nixosConfigurations.kusanagi and .enzo; add the disko input; move overlays per-machine. - common/: minimal base only (boot, networking, tailscale, locale, nix settings, neovim editor). Old configuration.nix/programs.nix removed. - profiles/: coarse opt-in bundles (desktop, dev, apps). kusanagi imports all three and stays byte-for-byte identical to the running system. - machines/kusanagi/: all workstation-only config (ROCm, Scarlett audio, optical-disc archiving, NAS mounts, kavita/immich/ollama); hardware config moved here unchanged. User stays 'henz'. - machines/enzo/: new laptop. Declarative LUKS+btrfs via disko (LVM-on-LUKS, TPM2+PIN unlock, zram + encrypted swap for suspend-then-hibernate); its own minimal niri desktop with playback-only audio (no rtkit/jack); user 'hwebs'. Assisted-by: Claude:claude-opus-4-8 --- flake.nix | 27 ++++++++++++++++++++++----- 1 file changed, 22 insertions(+), 5 deletions(-) (limited to 'flake.nix') diff --git a/flake.nix b/flake.nix index 3a8765b..75732a6 100644 --- a/flake.nix +++ b/flake.nix @@ -4,18 +4,33 @@ inputs = { nixpkgs.url = "github:NixOS/nixpkgs/nixos-26.05"; + disko.url = "github:nix-community/disko"; + disko.inputs.nixpkgs.follows = "nixpkgs"; + discidurl.url = "git+https://git.hwebs.info/discidurl?ref=main"; discidurl.inputs.nixpkgs.follows = "nixpkgs"; }; outputs = { self, nixpkgs, ... }@inputs: + let + # A machine is common/ + its own machines/ module, plus any extra + # inline modules (e.g. per-machine overlays). + mkMachine = + machineModule: extraModules: + nixpkgs.lib.nixosSystem { + system = "x86_64-linux"; + specialArgs = { inherit inputs; }; + modules = [ + ./common + machineModule + ] + ++ extraModules; + }; + in { - nixosConfigurations.kusanagi = nixpkgs.lib.nixosSystem { - system = "x86_64-linux"; - modules = [ - ./configuration.nix - ./programs.nix + nixosConfigurations = { + kusanagi = mkMachine ./machines/kusanagi [ { nixpkgs.overlays = [ (import ./overlays/haunt.nix) @@ -23,6 +38,8 @@ ]; } ]; + + enzo = mkMachine ./machines/enzo [ ]; }; }; } -- cgit v1.3