diff --git a/pkgs/shells/fish/plugins/build-fish-plugin.nix b/pkgs/shells/fish/plugins/build-fish-plugin.nix index ce8b99cca1af..350f7f41cd17 100644 --- a/pkgs/shells/fish/plugins/build-fish-plugin.nix +++ b/pkgs/shells/fish/plugins/build-fish-plugin.nix @@ -3,84 +3,74 @@ lib, writeScript, wrapFish, + writableTmpDirAsHomeHook, }: - -attrs@{ - pname, - version, - src, - - name ? "fishplugin-${pname}-${version}", - unpackPhase ? "", - configurePhase ? ":", - buildPhase ? ":", - preInstall ? "", - postInstall ? "", - - nativeCheckInputs ? [ ], - # plugin packages to add to the vendor paths of the test fish shell - checkPlugins ? [ ], - # vendor directories to add to the function path of the test fish shell - checkFunctionDirs ? [ ], - # test script to be executed in a fish shell - checkPhase ? "", - doCheck ? checkPhase != "", - - ... -}: - -let - # Do not pass attributes that are only relevant to buildFishPlugin to mkDerivation. - drvAttrs = removeAttrs attrs [ +lib.extendMkDerivation { + constructDrv = stdenv.mkDerivation; + excludeDrvArgNames = [ "checkPlugins" "checkFunctionDirs" ]; -in + extendDrvArgs = + finalAttrs: + { + name ? "fishplugin-${finalAttrs.pname}-${finalAttrs.version}", + unpackPhase ? "", + configurePhase ? ":", + buildPhase ? ":", -stdenv.mkDerivation ( - drvAttrs - // { - inherit name; - inherit unpackPhase configurePhase buildPhase; + nativeCheckInputs ? [ ], + # plugin packages to add to the vendor paths of the test fish shell + checkPlugins ? [ ], + # vendor directories to add to the function path of the test fish shell + checkFunctionDirs ? [ ], + # test script to be executed in a fish shell + checkPhase ? "", + doCheck ? checkPhase != "", - inherit preInstall postInstall; - installPhase = '' - runHook preInstall + ... + }: + { + inherit name; + inherit unpackPhase configurePhase buildPhase; - ( - install_vendor_files() { - source="$1" - target="$out/share/fish/vendor_$2.d" + installPhase = '' + runHook preInstall - # Check if any .fish file exists in $source - [ -n "$(shopt -s nullglob; echo $source/*.fish)" ] || return 0 + ( + install_vendor_files() { + source="$1" + target="$out/share/fish/vendor_$2.d" - mkdir -p $target - cp $source/*.fish "$target/" - } + # Check if any .fish file exists in $source + [ -n "$(shopt -s nullglob; echo $source/*.fish)" ] || return 0 - install_vendor_files completions completions - install_vendor_files functions functions - install_vendor_files conf conf - install_vendor_files conf.d conf - ) + mkdir -p $target + cp $source/*.fish "$target/" + } - runHook postInstall - ''; + install_vendor_files completions completions + install_vendor_files functions functions + install_vendor_files conf conf + install_vendor_files conf.d conf + ) - inherit doCheck; + runHook postInstall + ''; - nativeCheckInputs = [ - (wrapFish { - pluginPkgs = checkPlugins; - functionDirs = checkFunctionDirs; - }) - ] - ++ nativeCheckInputs; + inherit doCheck; - checkPhase = '' - export HOME=$(mktemp -d) # fish wants a writable home - fish "${writeScript "${name}-test" checkPhase}" - ''; - } -) + nativeCheckInputs = [ + writableTmpDirAsHomeHook + (wrapFish { + pluginPkgs = checkPlugins; + functionDirs = checkFunctionDirs; + }) + ] + ++ nativeCheckInputs; + + checkPhase = '' + fish "${writeScript "${finalAttrs.name}-test" checkPhase}" + ''; + }; +} diff --git a/pkgs/shells/fish/plugins/done.nix b/pkgs/shells/fish/plugins/done.nix index bc580f35e396..1d5eb0d00a25 100644 --- a/pkgs/shells/fish/plugins/done.nix +++ b/pkgs/shells/fish/plugins/done.nix @@ -5,15 +5,14 @@ fishtape, jq, }: - -buildFishPlugin rec { +buildFishPlugin (finalAttrs: { pname = "done"; version = "1.21.1"; src = fetchFromGitHub { owner = "franciscolourenco"; repo = "done"; - rev = version; + rev = finalAttrs.version; hash = "sha256-GZ1ZpcaEfbcex6XvxOFJDJqoD9C5out0W4bkkn768r0="; }; @@ -37,4 +36,4 @@ buildFishPlugin rec { rexies ]; }; -} +}) diff --git a/pkgs/shells/fish/plugins/pisces.nix b/pkgs/shells/fish/plugins/pisces.nix index cd768233ae3b..f94e7922daf2 100644 --- a/pkgs/shells/fish/plugins/pisces.nix +++ b/pkgs/shells/fish/plugins/pisces.nix @@ -3,15 +3,14 @@ buildFishPlugin, fetchFromGitHub, }: - -buildFishPlugin rec { +buildFishPlugin (finalAttrs: { pname = "pisces"; version = "0.7.0"; src = fetchFromGitHub { owner = "laughedelic"; repo = "pisces"; - tag = "v${version}"; + tag = "v${finalAttrs.version}"; hash = "sha256-Oou2IeNNAqR00ZT3bss/DbhrJjGeMsn9dBBYhgdafBw="; }; @@ -21,4 +20,4 @@ buildFishPlugin rec { license = lib.licenses.lgpl3; maintainers = with lib.maintainers; [ vanilla ]; }; -} +}) diff --git a/pkgs/shells/fish/plugins/pure.nix b/pkgs/shells/fish/plugins/pure.nix index 438f30145a0a..a5cfeda94c30 100644 --- a/pkgs/shells/fish/plugins/pure.nix +++ b/pkgs/shells/fish/plugins/pure.nix @@ -5,15 +5,14 @@ git, fishtape_3, }: - -buildFishPlugin rec { +buildFishPlugin (finalAttrs: { pname = "pure"; version = "4.15.0"; src = fetchFromGitHub { owner = "pure-fish"; repo = "pure"; - rev = "v${version}"; + rev = "v${finalAttrs.version}"; hash = "sha256-fqcIfst9YnkOi50pIUMoJJQ7s1w1Vr6hRdEFo+FWIZY="; }; @@ -32,4 +31,4 @@ buildFishPlugin rec { license = lib.licenses.mit; maintainers = with lib.maintainers; [ euxane ]; }; -} +})