grafana-alloy: don't build the frontend twice
[NixPkgs.git] / nixos / modules / programs / _1password-gui.nix
blob04f36cf0237ab8e65098935e72f3948b4a95084d
1 { config, pkgs, lib, ... }:
3 let
5   cfg = config.programs._1password-gui;
7 in
9   imports = [
10     (lib.mkRemovedOptionModule [ "programs" "_1password-gui" "gid" ] ''
11       A preallocated GID will be used instead.
12     '')
13   ];
15   options = {
16     programs._1password-gui = {
17       enable = lib.mkEnableOption "the 1Password GUI application";
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       };
28       package = lib.mkPackageOption pkgs "1Password GUI" {
29         default = [ "_1password-gui" ];
30       };
31     };
32   };
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;
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       };
54     };