{ description = "Nixos config flake"; inputs = { nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable"; home-manager = { url = "github:nix-community/home-manager"; inputs.nixpkgs.follows = "nixpkgs"; }; sops-nix = { url = "github:Mic92/sops-nix"; inputs.nixpkgs.follows = "nixpkgs"; }; nixos-wsl = { url = "github:nix-community/NixOS-WSL/main"; inputs.nixpkgs.follows = "nixpkgs"; }; configarr = { url = "github:raydak-labs/configarr/44fef304c1abd63cc28b32bec6bcb42950a51586"; }; alejandra.url = "github:kamadorueda/alejandra/4.0.0"; alejandra.inputs.nixpkgs.follows = "nixpkgs"; lazyvim.url = "github:pfassina/lazyvim-nix"; }; outputs = inputs @ { self, nixpkgs, sops-nix, configarr, lazyvim, alejandra, ... }: 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}]; } configarr.nixosModules.default { home-manager.useGlobalPkgs = true; home-manager.useUserPackages = true; home-manager.backupFileExtension = "backup"; 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]; }; }; }; }