1{ config, pkgs, lib, ... }:
2
3with lib;
4
5let
6
7 cfg = config.programs._1password-gui;
8
9in
10{
11 imports = [
12 (mkRemovedOptionModule [ "programs" "_1password-gui" "gid" ] ''
13 A preallocated GID will be used instead.
14 '')
15 ];
16
17 options = {
18 programs._1password-gui = {
19 enable = mkEnableOption (lib.mdDoc "the 1Password GUI application");
20
21 polkitPolicyOwners = mkOption {
22 type = types.listOf types.str;
23 default = [ ];
24 example = literalExpression ''["user1" "user2" "user3"]'';
25 description = lib.mdDoc ''
26 A list of users who should be able to integrate 1Password with polkit-based authentication mechanisms.
27 '';
28 };
29
30 package = mkPackageOption pkgs "1Password GUI" {
31 default = [ "_1password-gui" ];
32 };
33 };
34 };
35
36 config =
37 let
38 package = cfg.package.override {
39 polkitPolicyOwners = cfg.polkitPolicyOwners;
40 };
41 in
42 mkIf cfg.enable {
43 environment.systemPackages = [ package ];
44 users.groups.onepassword.gid = config.ids.gids.onepassword;
45
46 security.wrappers = {
47 "1Password-BrowserSupport" = {
48 source = "${package}/share/1password/1Password-BrowserSupport";
49 owner = "root";
50 group = "onepassword";
51 setuid = false;
52 setgid = true;
53 };
54
55 "1Password-KeyringHelper" = {
56 source = "${package}/share/1password/1Password-KeyringHelper";
57 owner = "root";
58 group = "onepassword";
59 setuid = true;
60 setgid = true;
61 };
62 };
63
64 };
65}