{ inputs = { nixpkgs.url = "github:NixOS/nixpkgs/nixos-24.11"; nixpkgs-unstable.url = "github:NixOS/nixpkgs/nixos-unstable"; lix-module = { url = "https://git.lix.systems/lix-project/nixos-module/archive/2.92.0-3.tar.gz"; inputs.nixpkgs.follows = "nixpkgs"; }; home-manager = { url = "github:nix-community/home-manager/release-24.11"; inputs.nixpkgs.follows = "nixpkgs"; }; agenix = { url = "github:ryantm/agenix"; inputs.nixpkgs.follows = "nixpkgs"; inputs.home-manager.follows = "home-manager"; }; nix-vscode-extensions = { url = "github:nix-community/nix-vscode-extensions"; inputs.nixpkgs.follows = "nixpkgs-unstable"; }; nixpkgs-esp-dev = { url = "github:mirrexagon/nixpkgs-esp-dev"; inputs.nixpkgs.follows = "nixpkgs-unstable"; }; flake-compat.url = "github:edolstra/flake-compat"; }; outputs = inputs@{ self, nixpkgs, nixpkgs-unstable, lix-module, agenix, home-manager, nix-vscode-extensions, nixpkgs-esp-dev, ... }: let system = "x86_64-linux"; machines = [ "graphite" "bismuth" ]; overlays = [ lix-module.overlays.default agenix.overlays.default nix-vscode-extensions.overlays.default nixpkgs-esp-dev.overlays.default ]; packageSets = let commonPkgsInputs = { inherit system; config = import ./config.nix; }; in rec { pkgs = import nixpkgs (commonPkgsInputs // { inherit overlays; }); unstablePkgs = import nixpkgs-unstable commonPkgsInputs; auxiliaryPkgs = import ./pkgs { inherit pkgs unstablePkgs; }; }; in { nixosConfigurations = nixpkgs.lib.genAttrs machines ( machine: let specialArgs = inputs // packageSets // { me = machine; }; in nixpkgs.lib.nixosSystem { inherit system specialArgs; modules = [ ./machines/${machine} home-manager.nixosModules.home-manager { home-manager.useGlobalPkgs = true; home-manager.useUserPackages = true; home-manager.backupFileExtension = "hm-backup"; home-manager.extraSpecialArgs = specialArgs; home-manager.users.mel = import ./machines/${machine}/home.nix; } lix-module.nixosModules.default agenix.nixosModules.default ]; } ); # compatibility wrapper for nixos-option legacyPackages.${system} = with packageSets; pkgs.recurseIntoAttrs pkgs; }; }