{inputs}: _: _: let mkComputer = { host, system, user, extraModules ? [], }: inputs.nixpkgs.lib.nixosSystem { inherit system; modules = extraModules ++ [ ../computers/${host} inputs.self.nixosModules.default ({config, ...}: { config = { alqueva.fish.enable = true; nix = { settings.extra-experimental-features = [ "nix-command" "flakes" ]; gc = { automatic = true; dates = "weekly"; }; }; users = { users.${user} = { isNormalUser = true; useDefaultShell = true; initialPassword = "password"; extraGroups = ["wheel" "networkmanager" "video" "audio" "input" "libvirtd"]; name = user; }; defaultUserShell = config.programs.fish.package; }; environment.shellAliases = { rebs = "nixos-rebuild --use-remote-sudo switch --flake .#${host}"; rebt = "nixos-rebuild --use-remote-sudo test --flake .#${host}"; }; nixpkgs.overlays = [ inputs.self.overlays.default ]; networking.hostName = host; }; }) ]; specialArgs = { inherit inputs; inherit (inputs) self; }; }; in { mkComputers = computers: builtins.mapAttrs (n: v: mkComputer (v // {host = n;})) computers; }