summaryrefslogtreecommitdiffstats
path: root/makefu/3modules/snapraid.nix
diff options
context:
space:
mode:
authormakefu <github@syntax-fehler.de>2023-07-28 22:24:15 +0200
committermakefu <github@syntax-fehler.de>2023-07-28 22:24:15 +0200
commit060a8f28fa1fc648bdf66afb31a5d1efac868837 (patch)
tree2b354eacc7897365ee45244fe7a51720e0d0333f /makefu/3modules/snapraid.nix
parentcbfcc890e3b76d942b927809bf981a5fa7289e6a (diff)
makefu: move out to own repo, add vacation-note
Diffstat (limited to 'makefu/3modules/snapraid.nix')
-rw-r--r--makefu/3modules/snapraid.nix126
1 files changed, 0 insertions, 126 deletions
diff --git a/makefu/3modules/snapraid.nix b/makefu/3modules/snapraid.nix
deleted file mode 100644
index 25254c142..000000000
--- a/makefu/3modules/snapraid.nix
+++ /dev/null
@@ -1,126 +0,0 @@
-{ config, lib, pkgs, ... }:
-
-with import <stockholm/lib>;
-
-let
- # returns dirname without / , used as disk name
- dname = dir: replaceStrings ["/"] [""] (head (reverseList (splitString "/" dir)));
- snapraid-conf = ''
- # Disks
- ${concatMapStringsSep "\n" (d: "disk ${dname d} ${d}") cfg.disks}
- # Parity
- ${optionalString (cfg.parity != "") "parity ${cfg.parity}/snapraid.parity"}
-
- # content on Disks
- ${optionalString cfg.contentOnDisks
- concatMapStringsSep "\n" (d: "content ${d}/snapraid.content") cfg.disks}
-
- # content on Parity
- ${optionalString (cfg.contentOnParity && cfg.parity != "")
- "content ${cfg.parity}/snapraid.content"}
- # Default content file
- content ${cfg.defaultContentFile}
-
- # Extra Configuration
- ${cfg.extraConfig}
- '';
- cfg = config.makefu.snapraid;
-
- out = {
- options.makefu.snapraid = api;
- config = lib.mkIf cfg.enable imp;
- };
-
- api = {
- enable = mkEnableOption "snapraid";
-
- timerConfig = mkOption {
- type = with types;attrsOf str;
- description = ''
- Start snapraid service
- '';
- default = {
- OnCalendar = "daily";
- };
- };
- disks = mkOption {
- type = with types;listOf str;
- description = ''
- Disks to protect. Each disk is a path to the mounted directory of the
- disk.
- '';
- };
- parity = mkOption {
- type = types.str;
- description = ''
- Folder to store parity file.
- Set to empty string if you want to configure the parity yourself in
- extraConfig.
-
- All extra parity files (2,3,z, etc...) should be configured via
- extraConfig.
- '';
- };
- contentOnDisks = mkOption {
- type = types.bool;
- default = true;
- description = ''
- Store Content file on each Disk to protect.
- Set this to false if you do not want this behavior to apply.
- '';
- };
- contentOnParity = mkOption {
- type = types.bool;
- default = true;
- description = ''
- Store Content file on parity Disk.
- Set this to false if you do not want this behavior to apply.
- '';
- };
- defaultContentFile = mkOption {
- type = types.str;
- default = "/var/cache/snapraid.content";
- description = ''
- Path to default content file
- Set to empty string if this content file should be written.
- '';
- };
- extraConfig = mkOption {
- type = types.lines;
- default = "";
- description = ''
- Extra configuration to be appended to the snapraid conf file.
- You can configure extra Parity files as well as extra content files.
- See `man snapraid` for additional configuration
- '';
- };
- };
-
- imp = {
- environment.systemPackages = [
- # for scrubbing,fixing
- pkgs.snapraid
- ];
- krebs.on-failure.plans.snapraid-sync.name = "snapraid-sync";
- environment.etc."snapraid.conf".text = snapraid-conf;
- systemd.timers.snapraid-sync = {
- description = "snapraid sync timer";
- wantedBy = [ "timers.target" ];
- timerConfig = cfg.timerConfig;
- };
- systemd.services.snapraid-sync = {
- description = "Snapraid sync service";
- after = [ "network.target" "local-fs.target" ];
-
- serviceConfig = {
- Type = "simple";
- ExecStartPre = pkgs.writeScript "Snapraid-sync-init" ''
- #! /bin/sh
- ${optionalString (cfg.defaultContentFile != "")
- "mkdir -p $(dirname ${cfg.defaultContentFile})"}
- '';
- ExecStart = "${pkgs.snapraid}/bin/snapraid sync";
- };
- };
- };
-in out