{ 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; }; }; }; }