{ inputs, flake, flakeRoot, }: { hostName, system, extraModules ? [ ], isLaptop ? false, }: let pkgs = import inputs.nixpkgs { inherit system; config.allowUnfree = true; }; pkgs-unstable = import inputs.nixpkgs-unstable { inherit system; config.allowUnfree = true; }; pkgs-flake = flake.packages.${system}; pkgs-firefox-addons = inputs.nix-firefox-addons.addons.${system}; lib = inputs.nixpkgs.lib; flakeLib = import ./default.nix { inherit pkgs lib; nix-jetbrains-plugins = inputs.nix-jetbrains-plugins; }; in lib.nixosSystem { inherit system; modules = [ inputs.lix-module.nixosModules.default inputs.disko.nixosModules.disko ../hosts/${hostName} { nixpkgs.pkgs = pkgs; networking.hostName = hostName; } ] ++ builtins.attrValues flake.nixosModules ++ lib.optionals isLaptop [ ../hardware/battery.nix ] ++ extraModules; specialArgs = { inherit flakeRoot flakeLib pkgs-unstable pkgs-flake pkgs-firefox-addons isLaptop hostName ; # TODO: use better inherit syntax for these lanzaboote = inputs.lanzaboote; nixos-hardware = inputs.nixos-hardware; home-manager = inputs.home-manager; nixcord = inputs.nixcord; }; }