diff options
Diffstat (limited to 'nixpkgs/pkgs/tools/misc/snapper/default.nix')
-rw-r--r-- | nixpkgs/pkgs/tools/misc/snapper/default.nix | 76 |
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 ]; + }; +} |