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