aboutsummaryrefslogtreecommitdiff
path: root/modules/zrepl.nix
diff options
context:
space:
mode:
authorIsmaël Bouya <ismael.bouya@normalesup.org>2020-09-02 00:23:50 +0200
committerIsmaël Bouya <ismael.bouya@normalesup.org>2020-09-02 00:23:50 +0200
commit5dda316b382211733cda7163b33bf388dd052671 (patch)
tree9b3487e6455dbd445f1cc5048ee16aba78f69e53 /modules/zrepl.nix
parent740a6506f419bdcfb082f1cfde7553735dfd0570 (diff)
downloadNix-5dda316b382211733cda7163b33bf388dd052671.tar.gz
Nix-5dda316b382211733cda7163b33bf388dd052671.tar.zst
Nix-5dda316b382211733cda7163b33bf388dd052671.zip
Use zrepl to make zfs backups
Diffstat (limited to 'modules/zrepl.nix')
-rw-r--r--modules/zrepl.nix46
1 files changed, 46 insertions, 0 deletions
diff --git a/modules/zrepl.nix b/modules/zrepl.nix
new file mode 100644
index 0000000..cb74082
--- /dev/null
+++ b/modules/zrepl.nix
@@ -0,0 +1,46 @@
1{ config, lib, pkgs, ... }:
2let
3 cfg = config.services.zrepl;
4in
5{
6 options = {
7 services.zrepl = {
8 enable = lib.mkEnableOption "Enable the zrepl daemon";
9
10 config = lib.mkOption {
11 type = lib.types.lines;
12 default = "";
13 description = "Configuration";
14 };
15 };
16 };
17
18 config = lib.mkIf cfg.enable {
19 secrets.keys = [
20 {
21 dest = "zrepl/zrepl.yml";
22 permissions = "0400";
23 text = cfg.config;
24 user = config.systemd.services.zrepl.serviceConfig.User or "root";
25 group = config.systemd.services.zrepl.serviceConfig.Group or "root";
26 }
27 ];
28 services.filesWatcher.zrepl = {
29 restart = true;
30 paths = [ config.secrets.fullPaths."zrepl/zrepl.yml" ];
31 };
32 systemd.services.zrepl = {
33 description = "zrepl daemon";
34 wantedBy = [ "multi-user.target" ];
35 path = [ pkgs.zfs pkgs.openssh ];
36 serviceConfig = {
37 ExecStart =
38 let configFile = config.secrets.fullPaths."zrepl/zrepl.yml";
39 in "${pkgs.zrepl}/bin/zrepl daemon --config ${configFile}";
40 Type = "simple";
41 RuntimeDirectory= "zrepl";
42 RuntimeDirectoryMode= "0700";
43 };
44 };
45 };
46}