
These are both equivalent to one another, and we're about to convert the IOPty package to become an alias of IOTty. It follows that the IOPty package will only be available when `conf.allowAliases = true`.
109 lines
2.6 KiB
Nix
109 lines
2.6 KiB
Nix
{
|
|
pkgs,
|
|
lib,
|
|
fetchurl,
|
|
fetchpatch,
|
|
perlPackages,
|
|
rsync,
|
|
which,
|
|
installShellFiles,
|
|
...
|
|
}:
|
|
perlPackages.buildPerlPackage rec {
|
|
pname = "Rex";
|
|
version = "1.14.3";
|
|
src = fetchurl {
|
|
url = "mirror://cpan/authors/id/F/FE/FERKI/Rex-${version}.tar.gz";
|
|
hash = "sha256-An0wQu+UC2dZDlmJ6W8irh5nunRIlcXdPbVpwFE3Alw=";
|
|
};
|
|
|
|
buildInputs = with perlPackages; [
|
|
FileShareDirInstall
|
|
ParallelForkManager
|
|
StringEscape
|
|
TestDeep
|
|
TestOutput
|
|
TestWarnings
|
|
TestUseAllModules
|
|
TestException
|
|
SubOverride
|
|
|
|
rsync
|
|
which
|
|
];
|
|
|
|
# These are part of a greater effort to add better support upstream:
|
|
# https://github.com/RexOps/Rex/compare/master...nixos
|
|
patches = [
|
|
# Fix rex's ability to execute things on NixOS managed hosts
|
|
(fetchpatch {
|
|
url = "https://github.com/RexOps/Rex/commit/c71f3b255dac8f929abea46913798f132566af55.patch";
|
|
hash = "sha256-S2tF3IZ96QrxDN3HfBk7RWDZcEwukQYAkSId51dATiU=";
|
|
})
|
|
# Fix explicit calls to /bin/mv and /bin/rm
|
|
(fetchpatch {
|
|
url = "https://github.com/RexOps/Rex/commit/2782e80bb9789d3afb42e08904c28a4366a58334.patch";
|
|
hash = "sha256-htm39fF2tumG5b5E1ZBRX5n3vRaZZZzn2lfSN1omP8s=";
|
|
})
|
|
# Fix for PATH assumptions
|
|
(fetchpatch {
|
|
url = "https://github.com/RexOps/Rex/commit/ec72c8d1fdddf9116afdb21091100fe7cc20f41a.patch";
|
|
hash = "sha256-a/Sns2f596dbAWbuIveNldc/V3MwR08/ocXVgx0Tbcw=";
|
|
})
|
|
# Fix explicit path in Sudo.pm
|
|
(fetchpatch {
|
|
url = "https://github.com/RexOps/Rex/commit/f0b312f42178e7e4271b5b010c00efb5cdba2970.patch";
|
|
hash = "sha256-n/+huVCM8zpgx2LZgMB41PPIYgNhF6AK8+4FGPQH+FU=";
|
|
})
|
|
];
|
|
|
|
nativeBuildInputs = with perlPackages; [
|
|
installShellFiles
|
|
ParallelForkManager
|
|
];
|
|
|
|
propagatedBuildInputs = with perlPackages; [
|
|
AWSSignature4
|
|
DataValidateIP
|
|
DevelCaller
|
|
DigestHMAC
|
|
FileLibMagic
|
|
HashMerge
|
|
HTTPMessage
|
|
IOTty
|
|
IOString
|
|
JSONMaybeXS
|
|
LWP
|
|
NetOpenSSH
|
|
NetSFTPForeign
|
|
SortNaturally
|
|
TermReadKey
|
|
TextGlob
|
|
URI
|
|
XMLSimple
|
|
YAML
|
|
];
|
|
|
|
outputs = [ "out" ];
|
|
|
|
postPatch = ''
|
|
patchShebangs bin
|
|
'';
|
|
|
|
fixupPhase = ''
|
|
for sh in bash zsh; do
|
|
substituteInPlace ./share/rex-tab-completion.$sh \
|
|
--replace 'perl' "${pkgs.perl.withPackages (ps: [ ps.YAML ])}/bin/perl"
|
|
done
|
|
installShellCompletion --name _rex --zsh ./share/rex-tab-completion.zsh
|
|
installShellCompletion --name rex --bash ./share/rex-tab-completion.bash
|
|
'';
|
|
|
|
meta = {
|
|
homepage = "https://www.rexify.org";
|
|
description = "Friendly automation framework";
|
|
license = lib.licenses.asl20;
|
|
maintainers = with lib.maintainers; [ qbit ];
|
|
};
|
|
}
|