diff --git a/flake.nix b/flake.nix index 7b3daec..105e19a 100644 --- a/flake.nix +++ b/flake.nix @@ -14,6 +14,11 @@ inputs.nixpkgs.follows = "nixpkgs"; }; + nixos-wsl = { + url = "github:nix-community/NixOS-WSL/main"; + inputs.nixpkgs.follows = "nixpkgs"; + }; + alejandra.url = "github:kamadorueda/alejandra/4.0.0"; alejandra.inputs.nixpkgs.follows = "nixpkgs"; @@ -27,38 +32,50 @@ lazyvim, alejandra, ... - }: { - nixosConfigurations.dogma-nixos = nixpkgs.lib.nixosSystem { - system = "x86_64-linux"; - - specialArgs = { - inherit inputs; + }: let + mkHost = { + hostname, + system ? "x86_64-linux", + extraModules ? [], + homeFile ? ./home/${hostname}.nix, + }: + nixpkgs.lib.nixosSystem { + inherit system; + specialArgs = {inherit inputs;}; + modules = + [ + ./hosts/${hostname}/default.nix + inputs.home-manager.nixosModules.default + { + environment.systemPackages = [alejandra.defaultPackage.${system}]; + } + { + home-manager.useGlobalPkgs = true; + home-manager.useUserPackages = true; + home-manager.extraSpecialArgs = {inherit inputs;}; + home-manager.sharedModules = [ + inputs.sops-nix.homeManagerModules.sops + ]; + home-manager.users.mask = homeFile; + } + inputs.sops-nix.nixosModules.sops + ] + ++ extraModules; + }; + in { + nixosConfigurations = { + dogma-nixos = mkHost { + hostname = "dogma-nixos"; + extraModules = [./modules/nvidia-gtx1060.nix]; + }; + dogma-nixos-rtx = mkHost { + hostname = "dogma-nixos-rtx"; + extraModules = [./modules/nvidia-rtx3070.nix]; + }; + dogma-wsl = mkHost { + hostname = "dogma-wsl"; + extraModules = [inputs.nixos-wsl.nixosModules.default]; }; - - modules = [ - ./configuration.nix - inputs.home-manager.nixosModules.default - { - environment.systemPackages = [alejandra.defaultPackage.${"x86_64-linux"}]; - } - - { - home-manager.useGlobalPkgs = true; - home-manager.useUserPackages = true; - - home-manager.extraSpecialArgs = { - inherit inputs; - }; - - home-manager.sharedModules = [ - inputs.sops-nix.homeManagerModules.sops - ]; - - home-manager.users.mask = ./home.nix; - } - - inputs.sops-nix.nixosModules.sops - ]; }; }; }