From 7a5b9152e97b74e51fff0e5e3545bef1c59d6504 Mon Sep 17 00:00:00 2001 From: Tad Fisher Date: Tue, 21 Nov 2017 15:29:30 -0800 Subject: [PATCH] keybase, kbfs: add modules --- modules/misc/news.nix | 9 +++++ modules/modules.nix | 2 ++ modules/services/kbfs.nix | 66 ++++++++++++++++++++++++++++++++++++ modules/services/keybase.nix | 35 +++++++++++++++++++ 4 files changed, 112 insertions(+) create mode 100644 modules/services/kbfs.nix create mode 100644 modules/services/keybase.nix diff --git a/modules/misc/news.nix b/modules/misc/news.nix index 656e95e5f..c44918bd3 100644 --- a/modules/misc/news.nix +++ b/modules/misc/news.nix @@ -494,6 +494,15 @@ in package that provides the font or theme. ''; } + + { + time = "2017-11-26T21:57:23+00:00"; + message = '' + Two new modules are available: + + 'services.kbfs' and 'services.keybase' + ''; + } ]; }; } diff --git a/modules/modules.nix b/modules/modules.nix index 4c1e1a1a2..7f9ea0268 100644 --- a/modules/modules.nix +++ b/modules/modules.nix @@ -46,7 +46,9 @@ let ./services/dunst.nix ./services/gnome-keyring.nix ./services/gpg-agent.nix + ./services/kbfs.nix ./services/keepassx.nix + ./services/keybase.nix ./services/network-manager-applet.nix ./services/owncloud-client.nix ./services/polybar.nix diff --git a/modules/services/kbfs.nix b/modules/services/kbfs.nix new file mode 100644 index 000000000..c19917327 --- /dev/null +++ b/modules/services/kbfs.nix @@ -0,0 +1,66 @@ +{ config, lib, pkgs, ... }: + +with lib; + +let + + cfg = config.services.kbfs; + +in + +{ + options = { + services.kbfs = { + enable = mkEnableOption "Keybase File System"; + + mountPoint = mkOption { + type = types.str; + default = "keybase"; + description = '' + Mount point for the Keybase filesystem, relative to + HOME. + ''; + }; + + extraFlags = mkOption { + type = types.listOf types.str; + default = []; + example = [ + "-label kbfs" + "-mount-type normal" + ]; + description = '' + Additional flags to pass to the Keybase filesystem on launch. + ''; + }; + }; + }; + + config = mkIf cfg.enable { + systemd.user.services.kbfs = { + Unit = { + Description = "Keybase File System"; + Requires = [ "keybase.service" ]; + After = [ "keybase.service" ]; + }; + + Service = + let + mountPoint = "\"%h/${cfg.mountPoint}\""; + in { + Environment = "PATH=/run/wrappers KEYBASE_SYSTEMD=1"; + ExecStartPre = "${pkgs.coreutils}/bin/mkdir -p ${mountPoint}"; + ExecStart ="${pkgs.kbfs}/bin/kbfsfuse ${toString cfg.extraFlags} ${mountPoint}"; + ExecStopPost = "/run/wrappers/bin/fusermount -u ${mountPoint}"; + Restart = "on-failure"; + PrivateTmp = true; + }; + + Install = { + WantedBy = [ "default.target" ]; + }; + }; + + services.keybase.enable = true; + }; +} diff --git a/modules/services/keybase.nix b/modules/services/keybase.nix new file mode 100644 index 000000000..4262bd079 --- /dev/null +++ b/modules/services/keybase.nix @@ -0,0 +1,35 @@ +{ config, lib, pkgs, ... }: + +with lib; + +let + + cfg = config.services.keybase; + +in + +{ + options = { + services.keybase = { + enable = mkEnableOption "Keybase"; + }; + }; + + config = mkIf cfg.enable { + systemd.user.services.keybase = { + Unit = { + Description = "Keybase service"; + }; + + Service = { + ExecStart = "${pkgs.keybase}/bin/keybase service --auto-forked"; + Restart = "on-failure"; + PrivateTmp = true; + }; + + Install = { + WantedBy = [ "default.target" ]; + }; + }; + }; +}