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