zaphyra's git: tgcNUR

fork of https://git.transgirl.cafe/zaphoid/tgc-nix-user-repository

commit 23fed5c92fa50d65f00eb815f21cfb58e5458ec7
parent c920b8e54b1d5ed231b6389e9acbc32f0f809355
Author: Katja Ramona Sophie Kwast (zaphyra) <git@zaphyra.eu>
Date: Sun, 24 Aug 2025 15:57:56 +0200

homeManagerModules/services: add `dssd` Dead Simple Secret Daemon
1 file changed, 50 insertions(+), 0 deletions(-)
A
homeManagerModules/services/dssd/default.nix
|
50
++++++++++++++++++++++++++++++++++++++++++++++++++
diff --git a/homeManagerModules/services/dssd/default.nix b/homeManagerModules/services/dssd/default.nix
@@ -0,0 +1,50 @@
+{ tgcFlake, tgcMaintainers, ... }:
+{
+  config,
+  lib,
+  pkgs,
+  ...
+}:
+let
+  cfg = config.services.dssd;
+  busName = "org.freedesktop.secrets";
+
+in
+{
+  meta.maintainers = [ tgcMaintainers.zaphyra ];
+
+  options.services.dssd = {
+    enable = lib.mkEnableOption "Dead Simple libSecret Daemon";
+    package = lib.mkPackageOption tgcFlake.packages.${pkgs.system} "dssd" { };
+  };
+
+  config = lib.mkIf cfg.enable {
+    assertions = [
+      (lib.hm.assertions.assertPlatform "services.dssd" pkgs lib.platforms.linux)
+      {
+        assertion = !config.services.gnome-keyring.enable;
+        message = ''
+          Only one secrets service per user can be enabled at a time.
+          Other services enabled:
+          - gnome-keyring
+        '';
+      }
+    ];
+
+    dbus.packages = [ cfg.package ];
+
+    systemd.user.services.dssd = {
+      Unit = {
+        Description = "Dead Simple Secret Daemon";
+        Documentation = "https://github.com/ylxdzsw/dssd";
+      };
+
+      Service = {
+        Type = "dbus";
+        ExecStart = lib.getExe cfg.package;
+        BusName = busName;
+      };
+    };
+  };
+
+}