nixpkgs/pkgs/by-name/gi/git-ftp/package.nix
aleksana 571c71e6f7 treewide: migrate packages to pkgs/by-name, take 1
We are migrating packages that meet below requirements:

1. using `callPackage`
2. called path is a directory
3. overriding set is empty (`{ }`)
4. not containing path expressions other than relative path (to
makenixpkgs-vet happy)
5. not referenced by nix files outside of the directory, other
than`pkgs/top-level/all-packages.nix`
6. not referencing nix files outside of the directory
7. not referencing `default.nix` (since it's changed to `package.nix`)
8. `outPath` doesn't change after migration

The tool is here: https://github.com/Aleksanaa/by-name-migrate.
2024-11-09 20:04:51 +08:00

101 lines
2.4 KiB
Nix

{ 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;
mainProgram = "git-ftp";
};
}