{ self, inputs, ... }: let username = "john"; baseUserModules = self.factory.user { username = username; isAdmin = true; }; in { flake.meta.users."${username}" = { email = "32917998+jsl12@users.noreply.github.com"; name = "John Lancaster"; inherit username; key = ""; keygrip = [ ]; authorizedKeys = [ # Shared keys for every host can go here. "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIIAUa4dcg1TWc4pW++uodyhX4eOqrX/QYIxFWtEP7HFJ john@john-pc-ubuntu" "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIFn5ilhqaeDsOWSk7y29se2NvxGm8djlfL3RGLokj0q6 john@john-p14s" ]; }; flake.modules = { nixos."${username}" = { config, pkgs, ... }: let selfMeta = inputs.self.meta.users."${username}"; in { imports = [ baseUserModules.nixos."${username}" ]; users.users."${username}" = { openssh.authorizedKeys.keys = selfMeta.authorizedKeys; }; }; # This module will be imported by the user factory homeManager."${username}" = { pkgs, ... }: let selfMeta = inputs.self.meta.users."${username}"; selfPkgs = inputs.self.packages.${pkgs.stdenv.hostPlatform.system}; in { home.stateVersion = "25.11"; imports = with inputs.self.modules.homeManager; [ ssh-new shell-tools git ]; xdg.enable = true; home.packages = [ selfPkgs.neovim-min ]; home.sessionVariables = { EDITOR = "nvim"; VISUAL = "nvim"; GIT_EDITOR = "nvim"; SOPS_EDITOR = "nvim"; }; programs.git.settings.user.name = selfMeta.name; programs.git.settings.user.email = selfMeta.email; programs.git.settings.core.editor = "nvim"; }; }; }