depot/third_party/nixpkgs/pkgs/by-name/zx/zxfer/package.nix

88 lines
1.9 KiB
Nix

{
lib,
bash,
fetchFromGitHub,
installShellFiles,
coreutils,
gawk,
gnugrep,
gnused,
openssh,
resholve,
rsync,
which,
zfs,
}:
resholve.mkDerivation rec {
pname = "zxfer";
version = "1.1.7";
src = fetchFromGitHub {
owner = "allanjude";
repo = pname;
rev = "v${version}";
hash = "sha256-11SQJcD3GqPYBIgaycyKkc62/diVKPuuj2Or97j+NZY=";
};
nativeBuildInputs = [ installShellFiles ];
# these may point to paths on remote systems, calculated at runtime, thus we cannot fix them
# we can only set their initial values, and let them remain dynamic
postPatch = ''
substituteInPlace zxfer \
--replace 'LCAT=""' 'LCAT=${coreutils}/bin/cat' \
--replace 'LZFS=$( which zfs )' 'LZFS=${zfs}/bin/zfs'
'';
installPhase = ''
runHook preInstall
installManPage zxfer.1m zxfer.8
install -Dm755 zxfer -t $out/bin/
runHook postInstall
'';
solutions.default = {
scripts = [ "bin/zxfer" ];
interpreter = "${bash}/bin/sh";
inputs = [
coreutils
gawk
gnugrep
gnused
openssh
rsync
which
];
fake.external = [
"kldload" # bsd builtin
"kldstat" # bsd builtin
"svcadm" # solaris builtin
];
keep = {
"$LCAT" = true;
"$LZFS" = true;
"$PROGRESS_DIALOG" = true;
"$RZFS" = true;
"$input_optionts" = true;
"$option_O" = true;
"$option_T" = true;
};
fix = {
"$AWK" = [ "awk" ];
"$RSYNC" = [ "rsync" ];
};
execer = [ "cannot:${rsync}/bin/rsync" ];
};
meta = with lib; {
description = "Popular script for managing ZFS snapshot replication";
homepage = "https://github.com/allanjude/zxfer";
changelog = "https://github.com/allanjude/zxfer/releases/tag/v${version}";
license = licenses.bsd2;
maintainers = with lib.maintainers; [ urandom ];
mainProgram = "zxfer";
};
}