From 2c8ad1d1eb1ea686ec39befb36d8202085bd8051 Mon Sep 17 00:00:00 2001 From: John Titor <50095635+JohnRTitor@users.noreply.github.com> Date: Thu, 30 May 2024 17:36:26 +0530 Subject: [PATCH 1/3] nixos/gnome/gnome-keyring: rewrite the implementation --- .../services/desktops/gnome/gnome-keyring.nix | 44 ++++++++----------- 1 file changed, 19 insertions(+), 25 deletions(-) diff --git a/nixos/modules/services/desktops/gnome/gnome-keyring.nix b/nixos/modules/services/desktops/gnome/gnome-keyring.nix index 79bce0ade2fc..3e5b8a22fbd0 100644 --- a/nixos/modules/services/desktops/gnome/gnome-keyring.nix +++ b/nixos/modules/services/desktops/gnome/gnome-keyring.nix @@ -1,41 +1,37 @@ # GNOME Keyring daemon. -{ config, pkgs, lib, ... }: - +{ + config, + pkgs, + lib, + ... +}: +let + cfg = config.services.gnome.gnome-keyring; +in { meta = { maintainers = lib.teams.gnome.members; }; - ###### interface - options = { - services.gnome.gnome-keyring = { - - enable = lib.mkOption { - type = lib.types.bool; - default = false; - description = '' - Whether to enable GNOME Keyring daemon, a service designed to - take care of the user's security credentials, - such as user names and passwords. - ''; - }; - + enable = lib.mkEnableOption '' + GNOME Keyring daemon, a service designed to + take care of the user's security credentials, + such as user names and passwords + ''; }; - }; - - ###### implementation - - config = lib.mkIf config.services.gnome.gnome-keyring.enable { - + config = lib.mkIf cfg.enable { environment.systemPackages = [ pkgs.gnome.gnome-keyring ]; - services.dbus.packages = [ pkgs.gnome.gnome-keyring pkgs.gcr ]; + services.dbus.packages = [ + pkgs.gnome.gnome-keyring + pkgs.gcr + ]; xdg.portal.extraPortals = [ pkgs.gnome.gnome-keyring ]; @@ -47,7 +43,5 @@ capabilities = "cap_ipc_lock=ep"; source = "${pkgs.gnome.gnome-keyring}/bin/gnome-keyring-daemon"; }; - }; - } From c24c7933ba2e5266d91978f1eaefdd81c760af67 Mon Sep 17 00:00:00 2001 From: John Titor <50095635+JohnRTitor@users.noreply.github.com> Date: Thu, 20 Jun 2024 23:03:45 +0530 Subject: [PATCH 2/3] nixos/gnome-keyring: unlock keyring with gdm-password, gdm-autologin GDM uses gdm-password as the PAM service name for both logins and unlocks. So unlock gnome-keyring as part of `gdm-password`. Without this, keyrings may not be unlocked properly for GDM 45+. also unlock as part of GDM autologin --- .../modules/services/desktops/gnome/gnome-keyring.nix | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/nixos/modules/services/desktops/gnome/gnome-keyring.nix b/nixos/modules/services/desktops/gnome/gnome-keyring.nix index 3e5b8a22fbd0..4a4eeff41c77 100644 --- a/nixos/modules/services/desktops/gnome/gnome-keyring.nix +++ b/nixos/modules/services/desktops/gnome/gnome-keyring.nix @@ -35,7 +35,15 @@ in xdg.portal.extraPortals = [ pkgs.gnome.gnome-keyring ]; - security.pam.services.login.enableGnomeKeyring = true; + security.pam.services = lib.mkMerge [ + { + login.enableGnomeKeyring = true; + } + (lib.mkIf config.services.xserver.displayManager.gdm.enable { + gdm-password.enableGnomeKeyring = true; + gdm-autologin.enableGnomeKeyring = true; + }) + ]; security.wrappers.gnome-keyring-daemon = { owner = "root"; From 6bb516d45f2cbb56a817adf4c7f0ee680e3cf9e9 Mon Sep 17 00:00:00 2001 From: John Titor <50095635+JohnRTitor@users.noreply.github.com> Date: Thu, 20 Jun 2024 23:07:25 +0530 Subject: [PATCH 3/3] nixos/gnome-keyring: enable gnome-keyring for fingerprint authentication' this should be enabled by default if fprintd is enabled --- nixos/modules/services/desktops/gnome/gnome-keyring.nix | 3 +++ 1 file changed, 3 insertions(+) diff --git a/nixos/modules/services/desktops/gnome/gnome-keyring.nix b/nixos/modules/services/desktops/gnome/gnome-keyring.nix index 4a4eeff41c77..02b198fd81cb 100644 --- a/nixos/modules/services/desktops/gnome/gnome-keyring.nix +++ b/nixos/modules/services/desktops/gnome/gnome-keyring.nix @@ -43,6 +43,9 @@ in gdm-password.enableGnomeKeyring = true; gdm-autologin.enableGnomeKeyring = true; }) + (lib.mkIf (config.services.xserver.displayManager.gdm.enable && config.services.fprintd.enable) { + gdm-fingerprint.enableGnomeKeyring = true; + }) ]; security.wrappers.gnome-keyring-daemon = {