lol

kbfs service: init (#25610)

* kbfs service: init

authored by

Calum MacRae and committed by
Peter Hoeg
abe0da42 4e88906f

+104
+2
nixos/modules/module-list.nix
··· 370 370 ./services/network-filesystems/cachefilesd.nix 371 371 ./services/network-filesystems/drbd.nix 372 372 ./services/network-filesystems/glusterfs.nix 373 + ./services/network-filesystems/kbfs.nix 373 374 ./services/network-filesystems/ipfs.nix 374 375 ./services/network-filesystems/netatalk.nix 375 376 ./services/network-filesystems/nfsd.nix ··· 431 432 ./services/networking/iodine.nix 432 433 ./services/networking/ircd-hybrid/default.nix 433 434 ./services/networking/keepalived/default.nix 435 + ./services/networking/keybase.nix 434 436 ./services/networking/kippo.nix 435 437 ./services/networking/kresd.nix 436 438 ./services/networking/lambdabot.nix
+62
nixos/modules/services/network-filesystems/kbfs.nix
··· 1 + { config, lib, pkgs, ... }: 2 + with lib; 3 + let 4 + cfg = config.services.kbfs; 5 + 6 + in { 7 + 8 + ###### interface 9 + 10 + options = { 11 + 12 + services.kbfs = { 13 + 14 + enable = mkOption { 15 + type = types.bool; 16 + default = false; 17 + description = "Whether to mount the Keybase filesystem."; 18 + }; 19 + 20 + mountPoint = mkOption { 21 + type = types.str; 22 + default = "%h/keybase"; 23 + example = "/keybase"; 24 + description = "Mountpoint for the Keybase filesystem."; 25 + }; 26 + 27 + extraFlags = mkOption { 28 + type = types.listOf types.str; 29 + default = []; 30 + example = [ 31 + "-label kbfs" 32 + "-mount-type normal" 33 + ]; 34 + description = '' 35 + Additional flags to pass to the Keybase filesystem on launch. 36 + ''; 37 + }; 38 + 39 + }; 40 + }; 41 + 42 + ###### implementation 43 + 44 + config = mkIf cfg.enable { 45 + 46 + systemd.user.services.kbfs = { 47 + description = "Keybase File System"; 48 + requires = [ "keybase.service" ]; 49 + after = [ "keybase.service" ]; 50 + path = [ "/run/wrappers" ]; 51 + serviceConfig = { 52 + ExecStartPre = "${pkgs.coreutils}/bin/mkdir -p ${cfg.mountPoint}"; 53 + ExecStart = "${pkgs.kbfs}/bin/kbfsfuse ${toString cfg.extraFlags} ${cfg.mountPoint}"; 54 + ExecStopPost = "/run/wrappers/bin/fusermount -u ${cfg.mountPoint}"; 55 + Restart = "on-failure"; 56 + PrivateTmp = true; 57 + }; 58 + }; 59 + 60 + services.keybase.enable = true; 61 + }; 62 + }
+40
nixos/modules/services/networking/keybase.nix
··· 1 + { config, lib, pkgs, ... }: 2 + with lib; 3 + let 4 + cfg = config.services.keybase; 5 + 6 + in { 7 + 8 + ###### interface 9 + 10 + options = { 11 + 12 + services.keybase = { 13 + 14 + enable = mkOption { 15 + type = types.bool; 16 + default = false; 17 + description = "Whether to start the Keybase service."; 18 + }; 19 + 20 + }; 21 + }; 22 + 23 + ###### implementation 24 + 25 + config = mkIf cfg.enable { 26 + 27 + systemd.user.services.keybase = { 28 + description = "Keybase service"; 29 + serviceConfig = { 30 + ExecStart = '' 31 + ${pkgs.keybase}/bin/keybase service 32 + ''; 33 + Restart = "on-failure"; 34 + PrivateTmp = true; 35 + }; 36 + }; 37 + 38 + environment.systemPackages = [ pkgs.keybase ]; 39 + }; 40 + }