{ pkgs, config, lib, ... }: with lib; let cfg = config.services.pass-secret-service; in { disabledModules = [ "services/pass-secret-service.nix" ]; meta.maintainers = with maintainers; [ cab404 cyntheticfox ]; options.services.pass-secret-service = { enable = mkEnableOption "Pass libsecret service"; package = mkPackageOption pkgs "pass-secret-service" { }; storePath = mkOption { type = with types; nullOr str; default = null; defaultText = "~/.password-store"; example = "/home/user/.local/share/password-store"; description = "Absolute path to password store."; }; extraArgs = lib.mkOption { type = with lib.types; listOf str; default = [ ]; description = "Extra command-line arguments to be passed to the service."; }; }; config = mkIf cfg.enable { assertions = [ (hm.assertions.assertPlatform "services.pass-secret-service" pkgs platforms.linux) ]; services.pass-secret-service.extraArgs = optional (cfg.storePath != null) "--path=${cfg.storePath}"; systemd.user.services.pass-secret-service = { Unit = { AssertFileIsExecutable = "${cfg.package}/bin/pass_secret_service"; Description = "Pass libsecret service"; Documentation = "https://github.com/mdellweg/pass_secret_service"; PartOf = [ "default.target" ]; }; Service = { ExecStart = "${cfg.package}/bin/pass_secret_service ${lib.escapeShellArgs cfg.extraArgs}"; }; Install = { WantedBy = [ "default.target" ]; }; }; }; }