{ self, inputs, ... }: { flake.nixosModules.user-nathan = { config, lib, pkgs, ... }: { config = lib.mkIf ( config.sysconfig.users ? nathan && config.sysconfig.users.nathan.usePresets ) { sops.secrets."nathan/pass".neededForUsers = true; users.users.nathan = { shell = lib.mkDefault pkgs.zsh; name = lib.mkDefault "nathan"; isNormalUser = lib.mkDefault true; #hashedPasswordFile = lib.mkIf (cfg.hashedPasswordFile != null) cfg.hashedPasswordFile; extraGroups = [ "networkmanager" "docker" "libvirtd" ]; openssh.authorizedKeys.keys = with config.sysconfig.users.nathan; lib.mkIf config.sysconfig.services.openssh.enable ( ssh.keys ++ (map (z: config.sysconfig.sshHostKeys.${z}) ssh.hosts) ); packages = lib.mkIf ( config.sysconfig.users.nathan.home-manager.enable && config.sysconfig.users.nathan.home-manager.standalone ) [ pkgs.home-manager ]; }; }; }; flake.homeModules.nathan = { lib, ... }: { config = { homeconfig = { graphical = lib.mkDefault false; minimal = lib.mkDefault false; hyprland.enable = lib.mkDefault false; }; nix = { nixPath = [ "nixpkgs=${inputs.nixpkgs}" ]; settings = { experimental-features = [ "nix-command" "flakes" ]; builders = "ssh://builder x86_64-linux,aarch64-linux /run/secrets/remoteBuildKey 1 1 nixos-test,benchmark,big-parallel,kvm - -"; builders-use-substitutes = true; }; }; programs.home-manager.enable = true; }; }; flake.homeConfigurations.nathan = inputs.home-manager.lib.homeManagerConfiguration { pkgs = import inputs.nixpkgs { system = builtins.currentSystem; }; modules = [ self.homeModules.nathan ]; }; }