summary refs log tree commit diff
path: root/pkgs/tools/backup/borgmatic/default.nix
diff options
context:
space:
mode:
Diffstat (limited to 'pkgs/tools/backup/borgmatic/default.nix')
-rw-r--r--pkgs/tools/backup/borgmatic/default.nix50
1 files changed, 50 insertions, 0 deletions
diff --git a/pkgs/tools/backup/borgmatic/default.nix b/pkgs/tools/backup/borgmatic/default.nix
new file mode 100644
index 00000000000..4913ca29cb8
--- /dev/null
+++ b/pkgs/tools/backup/borgmatic/default.nix
@@ -0,0 +1,50 @@
+{ borgbackup, coreutils, lib, python3Packages, systemd }:
+
+python3Packages.buildPythonApplication rec {
+  pname = "borgmatic";
+  version = "1.5.12";
+
+  src = python3Packages.fetchPypi {
+    inherit pname version;
+    sha256 = "sha256-XLbBJvNRmH8W9SnOjF7zUbazRYFCMW6SEO2wKN/2VTY=";
+  };
+
+  checkInputs = with python3Packages; [ flexmock pytestCheckHook pytest-cov ];
+
+  # - test_borgmatic_version_matches_news_version
+  # The file NEWS not available on the pypi source, and this test is useless
+  # - test_collect_configuration_run_summary_logs_outputs_merged_json_results
+  # Upstream fixed in the next version, see
+  # https://github.com/witten/borgmatic/commit/ea6cd53067435365a96786b006aec391714501c4
+  disabledTests = [
+    "test_borgmatic_version_matches_news_version"
+    "test_collect_configuration_run_summary_logs_outputs_merged_json_results"
+  ];
+
+  propagatedBuildInputs = with python3Packages; [
+    borgbackup
+    colorama
+    pykwalify
+    ruamel_yaml
+    requests
+    setuptools
+  ];
+
+  postInstall = ''
+    mkdir -p $out/lib/systemd/system
+    cp sample/systemd/borgmatic.timer $out/lib/systemd/system/
+    substitute sample/systemd/borgmatic.service \
+               $out/lib/systemd/system/borgmatic.service \
+               --replace /root/.local/bin/borgmatic $out/bin/borgmatic \
+               --replace systemd-inhibit ${systemd}/bin/systemd-inhibit \
+               --replace sleep ${coreutils}/bin/sleep
+  '';
+
+  meta = with lib; {
+    description = "Simple, configuration-driven backup software for servers and workstations";
+    homepage = "https://torsion.org/borgmatic/";
+    license = licenses.gpl3Plus;
+    platforms = platforms.linux;
+    maintainers = with maintainers; [ imlonghao ];
+  };
+}