{ inputs, lib, specialArgs, user ? "rayandrew", ... }: let mkNixosConfiguration = host: system: let pkgs = import inputs.nixpkgs { inherit system; config.allowUnfree = true; overlays = [ (import ../overlays { inherit inputs; inherit (pkgs) system; }) ]; }; lib = ( import ../lib.nix { inherit (inputs.nixpkgs) lib; inherit pkgs; inherit (inputs) home-manager; } ); in lib.nixosSystem { inherit pkgs lib; specialArgs = specialArgs // { inherit host user; dots = "/home/${user}/dotfiles"; }; modules = [ inputs.disko.nixosModules.default ./${host} ./${host}/hardware.nix ../nixos ../overlays ({config, ...}: { home-manager = { useGlobalPkgs = true; useUserPackages = true; extraSpecialArgs = specialArgs // { inherit host user system; system-font = "Consolas"; dots = "/home/${user}/dotfiles"; home-dir = config.home-manager.users.${user}.home.homeDirectory; }; users.${user} = { imports = [ inputs.nix-index-database.hmModules.nix-index inputs.sops-nix.homeManagerModules.sops ../home ] ++ lib.optional(builtins.pathExists ./${host}/home.nix) ./${host}/home.nix; }; }; }) # alias for home-manager (lib.mkAliasOptionModule [ "hm" ] [ "home-manager" "users" user ]) inputs.home-manager.nixosModules.home-manager inputs.sops-nix.nixosModules.sops ]; }; mkDarwinConfiguration = host: system: let pkgs = import inputs.nixpkgs { inherit system; config.allowUnfree = true; overlays = [ (import ../overlays { inherit inputs; inherit (pkgs) system; }) inputs.nixpkgs-firefox-darwin.overlay ]; }; lib = ( import ../lib.nix { inherit (inputs.nixpkgs) lib; inherit pkgs; inherit (inputs) home-manager; } ); in inputs.nix-darwin.lib.darwinSystem { inherit pkgs lib; specialArgs = specialArgs // { inherit host user; dots = "/Users/${user}/dotfiles"; }; modules = [ ./${host} ../darwin ({config, ...}: { home-manager = { useGlobalPkgs = true; useUserPackages = true; extraSpecialArgs = specialArgs // { inherit host user system; system-font = "SF Mono"; home-dir = config.home-manager.users.${user}.home.homeDirectory; dots = "/Users/${user}/dotfiles"; }; users.${user} = { imports = [ inputs.nix-index-database.hmModules.nix-index inputs.sops-nix.homeManagerModules.sops inputs.mac-app-util.homeManagerModules.default ../home ] ++ lib.optional(builtins.pathExists ./${host}/home.nix) ./${host}/home.nix; }; }; }) # alias for home-manager (lib.mkAliasOptionModule [ "hm" ] [ "home-manager" "users" user ]) inputs.home-manager.darwinModules.home-manager inputs.mac-app-util.darwinModules.default inputs.nix-homebrew.darwinModules.nix-homebrew ]; }; in { nixosConfigurations = { pickwick = mkNixosConfiguration "pickwick" "x86_64-linux"; lemur = mkNixosConfiguration "lemur" "x86_64-linux"; }; darwinConfigurations = { dango = mkDarwinConfiguration "dango" "aarch64-darwin"; }; }