{ inputs, specialArgs, user ? "rayandrew", ... }: let mkNixosConfiguration = host: system: let pkgs = import inputs.nixpkgs { inherit system; config.allowUnfree = true; overlays = [ (import ../overlays { inherit inputs; inherit 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"; home-dir = "/home/${user}"; }; modules = [ inputs.disko.nixosModules.default ./shared.nix ./${host} ./${host}/hardware.nix ../nixos ( { 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.homeModules.nix-index inputs.sops-nix.homeManagerModules.sops ../modules/home-manager ../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 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"; home-dir = "/Users/${user}"; }; modules = [ ./shared.nix ./${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.homeModules.nix-index inputs.sops-nix.homeManagerModules.sops inputs.mac-app-util.homeManagerModules.default ../modules/home-manager ../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 ( { config, ... }: { homebrew.taps = builtins.attrNames config.nix-homebrew.taps; } ) ]; }; in { nixosConfigurations = { pickwick = mkNixosConfiguration "pickwick" "x86_64-linux"; lemur = mkNixosConfiguration "lemur" "x86_64-linux"; }; darwinConfigurations = { dango = mkDarwinConfiguration "dango" "aarch64-darwin"; }; }