{ inputs = { nixpkgs.url = "github:nixos/nixpkgs/nixos-26.05"; home-manager = { url = "github:nix-community/home-manager/release-26.05"; inputs.nixpkgs.follows = "nixpkgs"; }; nixos-hardware = { url = "github:NixOS/nixos-hardware"; inputs.nixpkgs.follows = "nixpkgs"; }; sops-nix = { url = "github:Mic92/sops-nix"; inputs.nixpkgs.follows = "nixpkgs"; }; }; outputs = { self, nixpkgs, nixos-hardware, sops-nix, home-manager, }: let system = "x86_64-linux"; pkgs = nixpkgs.legacyPackages.${system}; nixosServer = [ sops-nix.nixosModules.sops ]; mkSystem = host: extra: nixpkgs.lib.nixosSystem { inherit system; modules = [ ./system/${host}.nix ] ++ extra; }; mkHome = type: extra: home-manager.lib.homeManagerConfiguration { inherit pkgs; modules = [ ./home/${type}.nix ] ++ extra; }; in { devShells.${system}.default = pkgs.mkShell { packages = with pkgs; [ nil sops ]; }; nixosConfigurations = { na-desktop = mkSystem "na-desktop" [ nixos-hardware.nixosModules.common-pc-ssd nixos-hardware.nixosModules.common-cpu-amd nixos-hardware.nixosModules.common-gpu-amd ]; gl-desktop = mkSystem "gl-desktop" [ nixos-hardware.nixosModules.framework-11th-gen-intel ]; na-server = mkSystem "na-server" ( nixosServer ++ [ nixos-hardware.nixosModules.common-pc-ssd nixos-hardware.nixosModules.common-cpu-amd nixos-hardware.nixosModules.common-gpu-amd ] ); eu-server = mkSystem "eu-server" ( nixosServer ++ [ nixos-hardware.nixosModules.common-pc-ssd "${nixos-hardware}/common/cpu/intel/tiger-lake" "${nixos-hardware}/common/gpu/nvidia/ampere" ] ); }; homeConfigurations = { desktop = mkHome "desktop" [ ]; server = mkHome "server" [ ]; }; }; }