{ description = "Jon's NixOS configuration"; inputs = { nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable"; nixpkgs-stable.url = "github:nixos/nixpkgs/nixos-23.11"; home-manager = { url = "github:nix-community/home-manager"; inputs.nixpkgs.follows = "nixpkgs"; }; nix-index-database.url = "github:Mic92/nix-index-database"; }; outputs = inputs @ { self, nixpkgs, nix-index-database, ... }: let system = "x86_64-linux"; lib = nixpkgs.lib.extend ( final: prev: { custom = import ./lib.nix nixpkgs.lib; } ); pkgs = import nixpkgs { inherit system; config.allowUnfree = true; overlays = [ self.overlays.default ]; }; in { overlays.default = import ./overlay.nix {inherit inputs system;}; nixosModules = { nixosConfig = import ./.;} // lib.custom.mapModulesRec ./modules import; nixosConfigurations = let mkHost = system: path: lib.nixosSystem { inherit system; specialArgs = {inherit lib inputs system;}; modules = [ nix-index-database.nixosModules.nix-index { nixpkgs.pkgs = pkgs; modules.device.name = lib.mkDefault (builtins.baseNameOf path); } ./. (import path) ]; }; in lib.custom.mapModules ./hosts (mkHost system); }; }