at 24.11-pre 1.4 kB view raw
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}