{ self, inputs, ... }: let # shorten paths inherit (inputs.nixpkgs.lib) nixosSystem; # Server uses its own pinned 24.05 nixpkgs (kept isolated from the laptop's unstable) nixosSystem24 = inputs.nixos-24-05.lib.nixosSystem; unstablePkgs = import inputs.nixpkgs-unstable {system = "x86_64-linux";}; mod = "${self}/system"; home = "${self}/home"; # get the basic config to build on top of inherit (import "${self}/system") tty desktop laptop; # get these into the module system specialArgs = {inherit inputs self;}; # shared modules for all configurations sharedModules = [ ./aesthetic "${mod}/services/gnome-services.nix" "${mod}/core/limine.nix" "${home}" inputs.agenix.nixosModules.default ]; in { flake.nixosConfigurations = { # TTY: desktop headless (no GUI) tty = nixosSystem { inherit specialArgs; modules = tty ++ sharedModules; }; # Desktop: desktop with GUI desktop = nixosSystem { inherit specialArgs; modules = desktop ++ sharedModules; }; # Laptop: laptop with GUI + battery + bluetooth laptop = nixosSystem { inherit specialArgs; modules = laptop ++ sharedModules ++ [ "${mod}/services/location.nix" ]; }; # Server: severijnse.eu (Hetzner) — fully isolated under servers/hetzner/. # Uses nixos-24.05 + disko + sops-nix and does NOT inherit the laptop's shared modules. hetzner = nixosSystem24 { system = "x86_64-linux"; specialArgs = { inherit inputs self; unstablePkgs = unstablePkgs; }; modules = [ inputs.disko.nixosModules.disko inputs.sops-nix.nixosModules.sops "${self}/servers/hetzner/hosts/hetzner/hardware-configuration.nix" "${self}/servers/hetzner/hosts/hetzner/default.nix" ]; }; }; }