at 23.11-pre 1.0 kB view raw
1{ config, lib, pkgs, ... }: 2with lib; 3let 4 cfg = config.services.keybase; 5 6in { 7 8 ###### interface 9 10 options = { 11 12 services.keybase = { 13 14 enable = mkOption { 15 type = types.bool; 16 default = false; 17 description = lib.mdDoc "Whether to start the Keybase service."; 18 }; 19 20 }; 21 }; 22 23 ###### implementation 24 25 config = mkIf cfg.enable { 26 27 # Upstream: https://github.com/keybase/client/blob/master/packaging/linux/systemd/keybase.service 28 systemd.user.services.keybase = { 29 description = "Keybase service"; 30 unitConfig.ConditionUser = "!@system"; 31 environment.KEYBASE_SERVICE_TYPE = "systemd"; 32 serviceConfig = { 33 Type = "notify"; 34 EnvironmentFile = [ 35 "-%E/keybase/keybase.autogen.env" 36 "-%E/keybase/keybase.env" 37 ]; 38 ExecStart = "${pkgs.keybase}/bin/keybase service"; 39 Restart = "on-failure"; 40 PrivateTmp = true; 41 }; 42 wantedBy = [ "default.target" ]; 43 }; 44 45 environment.systemPackages = [ pkgs.keybase ]; 46 }; 47}