about summary refs log tree commit diff
path: root/nixpkgs/pkgs/tools/misc/snapper/default.nix
diff options
context:
space:
mode:
Diffstat (limited to 'nixpkgs/pkgs/tools/misc/snapper/default.nix')
-rw-r--r--nixpkgs/pkgs/tools/misc/snapper/default.nix76
1 files changed, 76 insertions, 0 deletions
diff --git a/nixpkgs/pkgs/tools/misc/snapper/default.nix b/nixpkgs/pkgs/tools/misc/snapper/default.nix
new file mode 100644
index 000000000000..03f24c16aab2
--- /dev/null
+++ b/nixpkgs/pkgs/tools/misc/snapper/default.nix
@@ -0,0 +1,76 @@
+{ lib, stdenv, fetchFromGitHub
+, autoreconfHook, pkg-config, docbook_xsl, libxslt, docbook_xml_dtd_45
+, acl, attr, boost, btrfs-progs, dbus, diffutils, e2fsprogs, libxml2
+, lvm2, pam, python, util-linux, fetchpatch, json_c, nixosTests
+, ncurses }:
+
+stdenv.mkDerivation rec {
+  pname = "snapper";
+  version = "0.8.15";
+
+  src = fetchFromGitHub {
+    owner = "openSUSE";
+    repo = "snapper";
+    rev = "v${version}";
+    sha256 = "1rqv1qfxr02qbkix1mpx91s4827irxryxkhby3ii0fdkm3ympsas";
+  };
+
+  nativeBuildInputs = [
+    autoreconfHook pkg-config
+    docbook_xsl libxslt docbook_xml_dtd_45
+  ];
+  buildInputs = [
+    acl attr boost btrfs-progs dbus diffutils e2fsprogs libxml2
+    lvm2 pam python util-linux json_c ncurses
+  ];
+
+  passthru.tests.snapper = nixosTests.snapper;
+
+  patches = [
+    # Don't use etc/dbus-1/system.d
+    (fetchpatch {
+      url = "https://github.com/openSUSE/snapper/commit/c51708aea22d9436da287cba84424557ad03644b.patch";
+      sha256 = "106pf7pv8z3q37c8ckmgwxs1phf2fy7l53a9g5xq5kk2rjj1cx34";
+    })
+  ];
+
+  postPatch = ''
+    # Hard-coded root paths, hard-coded root paths everywhere...
+    for file in {client,data,pam,scripts,zypp-plugin}/Makefile.am; do
+      substituteInPlace $file \
+        --replace '$(DESTDIR)/usr' "$out" \
+        --replace "DESTDIR" "out" \
+        --replace "/usr" "$out"
+    done
+    substituteInPlace pam/Makefile.am \
+      --replace '/`basename $(libdir)`' "$out/lib"
+  '';
+
+  configureFlags = [
+    "--disable-ext4"	# requires patched kernel & e2fsprogs
+  ];
+
+  enableParallelBuilding = true;
+
+  NIX_CFLAGS_COMPILE = "-I${libxml2.dev}/include/libxml2";
+
+  postInstall = ''
+    rm -r $out/etc/cron.*
+    patchShebangs $out/lib/zypp/plugins/commit/*
+    for file in \
+      $out/lib/pam_snapper/* \
+      $out/lib/systemd/system/* \
+      $out/share/dbus-1/system-services/* \
+    ; do
+      substituteInPlace $file --replace "/usr" "$out"
+    done
+  '';
+
+  meta = with lib; {
+    description = "Tool for Linux filesystem snapshot management";
+    homepage = "http://snapper.io";
+    license = licenses.gpl2Only;
+    platforms = platforms.linux;
+    maintainers = with maintainers; [ tstrobel markuskowa ];
+  };
+}