{ user ? throw "user argument is required", home ? throw "home argument is required", }: { config, lib, pkgs, ... }: { home-manager.users.${user} = { programs.gpg = { enable = true; homedir = "${home}/.local/share/gnupg"; }; services.gpg-agent = { enable = true; defaultCacheTtl = 31536000; maxCacheTtl = 31536000; }; systemd.user = { services.gpg-agent-import = let init = lib.meta.getExe ( pkgs.writeShellApplication { name = "import-gpg-keys"; runtimeInputs = with pkgs; [ coreutils gnugrep gnupg ]; runtimeEnv = { GNUPGHOME = "${home}/.local/share/gnupg"; HOME = home; }; text = builtins.readFile ./import-gpg-keys.sh; } ); in { Unit = { Description = "Auto-import GPG keys"; Requires = [ "sops-nix.service" "gpg-agent.socket" ]; After = [ "sops-nix.service" "gpg-agent.socket" ]; }; Service = { Type = "oneshot"; ExecStart = init; }; Install.WantedBy = [ "default.target" ]; }; }; }; }