typioca: 2.7.0 -> 2.8.0
[NixPkgs.git] / nixos / modules / programs / _1password-gui.nix
blob27c0d34a2eedfa6f9e2a2919635944b679a51907
1 { config, pkgs, lib, ... }:
3 with lib;
5 let
7   cfg = config.programs._1password-gui;
9 in
11   imports = [
12     (mkRemovedOptionModule [ "programs" "_1password-gui" "gid" ] ''
13       A preallocated GID will be used instead.
14     '')
15   ];
17   options = {
18     programs._1password-gui = {
19       enable = mkEnableOption (lib.mdDoc "the 1Password GUI application");
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       };
30       package = mkPackageOptionMD pkgs "1Password GUI" {
31         default = [ "_1password-gui" ];
32       };
33     };
34   };
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;
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         };
55         "1Password-KeyringHelper" = {
56           source = "${package}/share/1password/1Password-KeyringHelper";
57           owner = "root";
58           group = "onepassword";
59           setuid = true;
60           setgid = true;
61         };
62       };
64     };