Unverified Commit 20d3d501 authored by Florian's avatar Florian Committed by GitHub
Browse files

Merge pull request #290913 from flandweber/borgmatic-improvement

nixos/borgmatic: added test
parents 729c56cf 9d94b98e
Loading
Loading
Loading
Loading
+31 −18
Original line number Diff line number Diff line
@@ -76,9 +76,25 @@ in
      default = { };
      type = types.attrsOf cfgType;
    };

    enableConfigCheck = mkEnableOption (lib.mdDoc "checking all configurations during build time") // { default = true; };
  };

  config = mkIf cfg.enable {
  config =
    let
      configFiles =
        (optionalAttrs (cfg.settings != null) { "borgmatic/config.yaml".source = cfgfile; }) //
        mapAttrs'
          (name: value: nameValuePair
            "borgmatic.d/${name}.yaml"
            { source = settingsFormat.generate "${name}.yaml" value; })
          cfg.configurations;
      borgmaticCheck = name: f: pkgs.runCommandCC "${name} validation" { } ''
            ${pkgs.borgmatic}/bin/borgmatic -c ${f.source} config validate
            touch $out
          '';
    in
      mkIf cfg.enable {

        warnings = []
          ++ optional (cfg.settings != null && cfg.settings ? location)
@@ -89,16 +105,13 @@ in

        environment.systemPackages = [ pkgs.borgmatic ];

    environment.etc = (optionalAttrs (cfg.settings != null) { "borgmatic/config.yaml".source = cfgfile; }) //
      mapAttrs'
        (name: value: nameValuePair
          "borgmatic.d/${name}.yaml"
          { source = settingsFormat.generate "${name}.yaml" value; })
        cfg.configurations;
        environment.etc = configFiles;

        systemd.packages = [ pkgs.borgmatic ];

        # Workaround: https://github.com/NixOS/nixpkgs/issues/81138
        systemd.timers.borgmatic.wantedBy = [ "timers.target" ];

        system.checks = mkIf cfg.enableConfigCheck (mapAttrsToList borgmaticCheck configFiles);
      };
}
+1 −0
Original line number Diff line number Diff line
@@ -160,6 +160,7 @@ in {
  bootspec = handleTestOn ["x86_64-linux"] ./bootspec.nix {};
  boot-stage1 = handleTest ./boot-stage1.nix {};
  borgbackup = handleTest ./borgbackup.nix {};
  borgmatic = handleTest ./borgmatic.nix {};
  botamusique = handleTest ./botamusique.nix {};
  bpf = handleTestOn ["x86_64-linux" "aarch64-linux"] ./bpf.nix {};
  bpftune = handleTest ./bpftune.nix {};
+24 −0
Original line number Diff line number Diff line
import ./make-test-python.nix ({ pkgs, ... }:
{
  name = "borgmatic";
  nodes.machine = { ... }: {
    services.borgmatic = {
      enable = true;
      settings = {
        source_directories = [ "/home" ];
        repositories = [
          {
            label = "local";
            path = "/var/backup";
          }
        ];
        keep_daily = 7;
      };
    };
  };

  testScript = ''
    machine.succeed("borgmatic rcreate -e none")
    machine.succeed("borgmatic")
  '';
})