diff options
Diffstat (limited to 'pkgs/applications/version-management/git-ftp/default.nix')
-rw-r--r-- | pkgs/applications/version-management/git-ftp/default.nix | 99 |
1 files changed, 99 insertions, 0 deletions
diff --git a/pkgs/applications/version-management/git-ftp/default.nix b/pkgs/applications/version-management/git-ftp/default.nix new file mode 100644 index 0000000000000..57b5e3c463724 --- /dev/null +++ b/pkgs/applications/version-management/git-ftp/default.nix @@ -0,0 +1,99 @@ +{ lib +, resholve +, fetchFromGitHub +, fetchpatch +, bash +, coreutils +, git +, gnugrep +, gawk +, curl +, hostname +, gnused +, findutils +, lftp +, pandoc +, man +}: + +resholve.mkDerivation rec { + pname = "git-ftp"; + version = "1.6.0"; + src = fetchFromGitHub { + owner = "git-ftp"; + repo = "git-ftp"; + rev = version; + sha256 = "1hxkqf7jbrx24q18yxpnd3dxzh4xk6asymwkylp1x7zg6mcci87d"; + }; + + dontBuild = true; + + # fix bug/typo; PRed upstream @ + # https://github.com/git-ftp/git-ftp/pull/628 + patches = [ + (fetchpatch { + name = "fix-function-invocation-typo.patch"; + url = "https://github.com/git-ftp/git-ftp/commit/cddf7cbba80e710758f6aac0ec0d77552ea8cd75.patch"; + sha256 = "sha256-2B0QaMJi78Bg3bA1jp41aiyql1/LCryoaDs7+xmS1HY="; + }) + ]; + + installPhase = '' + make install-all prefix=$out + ''; + + nativeBuildInputs = [ pandoc man ]; + + solutions = { + git-ftp = { + scripts = [ "bin/git-ftp" ]; + interpreter = "${bash}/bin/bash"; + inputs = [ + coreutils + git + gnugrep + gawk + curl + hostname + gnused + findutils + lftp + ]; + fake = { + # don't resolve impure system macOS security + # caution: will still be fragile if PATH is bad + # TODO: fixable once we figure out how to handle + # this entire class of problem... + "external" = [ "security" ]; + }; + keep = { + # looks like run-time user/env/git-config controlled + "$GIT_PAGER" = true; + "$hook" = true; # presumably git hooks given context + }; + execer = [ + # TODO: rm when binlore/resholve handle git; manually + # checked and see no obvious subexec for now + "cannot:${git}/bin/git" + /* + Mild uncertainty here. There *are* commandlikes in + the arguments (especially wait & cd), but I think they are + fine as-is, because I'm reading them as: + 1. ftp commands + 2. running on the remote anyways + + See https://github.com/git-ftp/git-ftp/blob/057f7d8e9f00ffc5a8c6ceaa4be30af2939df41a/git-ftp#L1214-L1221 + */ + "cannot:${lftp}/bin/lftp" + ]; + }; + }; + + meta = with lib; { + description = "Git powered FTP client written as shell script"; + homepage = "https://git-ftp.github.io/"; + license = licenses.gpl3; + maintainers = with maintainers; [ tweber ]; + platforms = platforms.unix; + }; +} |