{ description = "NixOS configuration"; inputs = { nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable"; home-manager = { url = "github:nix-community/home-manager/master"; inputs.nixpkgs.follows = "nixpkgs"; }; nix-vscode-extensions = { url = "github:nix-community/nix-vscode-extensions"; inputs.nixpkgs.follows = "nixpkgs"; }; stylix = { url = "github:danth/stylix/master"; inputs.nixpkgs.follows = "nixpkgs"; }; elephant = { url = "github:abenz1267/elephant/master"; inputs.nixpkgs.follows = "nixpkgs"; }; walker = { url = "github:abenz1267/walker/master"; inputs = { elephant.follows = "elephant"; nixpkgs.follows = "nixpkgs"; }; }; install-system = { url = "path:scripts/install-system"; inputs.nixpkgs.follows = "nixpkgs"; }; }; outputs = { nixpkgs, home-manager, install-system, nix-vscode-extensions, stylix, ... }@inputs: let system = "x86_64-linux"; pkgs = import nixpkgs { inherit system; config.allowUnfree = true; overlays = [ nix-vscode-extensions.overlays.default ]; }; in { nixosConfigurations = { laptop = let host = "laptop"; profile = "desktop"; username = "josh"; in nixpkgs.lib.nixosSystem { inherit system; specialArgs = { inherit inputs; inherit host; inherit profile; inherit username; }; pkgs = pkgs; modules = [ ./hosts/${host} ]; }; vm = let host = "vm"; profile = "desktop"; username = "josh"; in nixpkgs.lib.nixosSystem { inherit system; specialArgs = { inherit inputs; inherit host; inherit profile; inherit username; }; pkgs = pkgs; modules = [ ./hosts/${host} ]; }; live = let host = "installation-iso"; profile = "desktop"; username = "josh"; in nixpkgs.lib.nixosSystem { inherit system; specialArgs = { inherit inputs; inherit host; inherit profile; inherit username; }; pkgs = pkgs; modules = [ (nixpkgs + "/nixos/modules/installer/cd-dvd/installation-cd-minimal.nix") { environment.systemPackages = [ install-system.packages.${system}.default ]; } ./hosts/installation-iso ]; }; }; homeConfigurations.josh = let profile = "desktop"; username = "josh"; gpgSigningKey = null; in home-manager.lib.homeManagerConfiguration { extraSpecialArgs = { inherit inputs; inherit profile; inherit username; }; pkgs = pkgs; modules = [ { modules.gpg.signingKey = gpgSigningKey; } ./homes/josh/home.nix stylix.homeModules.stylix ]; }; devShell.${system} = nixpkgs.legacyPackages.${system}.pkgs.mkShell { packages = with nixpkgs.legacyPackages.${system}.pkgs; [ nil nixd ]; }; formatter.${system} = nixpkgs.legacyPackages.${system}.nixfmt-tree; }; }