{ config, lib, pkgs, namespace, ... }: let cfg = config.${namespace}.gnome-keyring; in { options.${namespace}.gnome-keyring = { enable = lib.mkEnableOption "Enable GNOME Keyring integration"; }; config = lib.mkIf cfg.enable { services.gnome-keyring = { enable = true; components = [ "secrets" "ssh" ]; }; # If using SDDM: security.pam.services.sddm.enableGnomeKeyring = true; # Also generally useful for other login methods security.pam.services.login.enableGnomeKeyring = true; # If using GDM: security.pam.services.gdm.enableGnomeKeyring = true; environment.systemPackages = with pkgs; [ gnome.seahorse # Provides a GUI for managing the keyring ]; environment.variables = { # Ensure GNOME Keyring is used for SSH keys SSH_AUTH_SOCK = "${pkgs.gnome-keyring}/run/gnome-keyring-ssh-socket"; PASSWORD_STORE = "gnome-libsecret"; }; my-namespace.home.home.packages = with pkgs; [ # Ensure keyring integration in home environments gcr ]; }; }