at 23.05-pre 1.6 kB view raw
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}