diff options
author | Jan Tojnar <jtojnar@gmail.com> | 2021-01-07 13:04:31 +0100 |
---|---|---|
committer | Jan Tojnar <jtojnar@gmail.com> | 2021-01-07 13:04:31 +0100 |
commit | f19eb635b4585f6ba4f9f4c3e9e07f56623446f5 (patch) | |
tree | 4d64a15e34e8a2b54466ba165297a6bb08bfb280 /pkgs/shells/fish | |
parent | 0e4e47512d709e93c35fa575dd82e3e6ce4f884d (diff) | |
parent | 2be707eca80b573c931007de78c936d49ab45395 (diff) | |
download | nixlib-f19eb635b4585f6ba4f9f4c3e9e07f56623446f5.tar nixlib-f19eb635b4585f6ba4f9f4c3e9e07f56623446f5.tar.gz nixlib-f19eb635b4585f6ba4f9f4c3e9e07f56623446f5.tar.bz2 nixlib-f19eb635b4585f6ba4f9f4c3e9e07f56623446f5.tar.lz nixlib-f19eb635b4585f6ba4f9f4c3e9e07f56623446f5.tar.xz nixlib-f19eb635b4585f6ba4f9f4c3e9e07f56623446f5.tar.zst nixlib-f19eb635b4585f6ba4f9f4c3e9e07f56623446f5.zip |
Merge branch 'master' into staging-next
https://github.com/NixOS/nixpkgs/commit/b04fc593e7b55fe1f74421b11589f12a339c92e2 seems to have accidentally changed mkDerivation function for dfilemanager and solarus-quest-editor so I have reverted that here.
Diffstat (limited to 'pkgs/shells/fish')
-rw-r--r-- | pkgs/shells/fish/plugins/build-fish-plugin.nix | 77 | ||||
-rw-r--r-- | pkgs/shells/fish/plugins/default.nix | 13 | ||||
-rw-r--r-- | pkgs/shells/fish/plugins/fishtape.nix | 32 | ||||
-rw-r--r-- | pkgs/shells/fish/plugins/foreign-env/default.nix (renamed from pkgs/shells/fish/fish-foreign-env/default.nix) | 18 | ||||
-rw-r--r-- | pkgs/shells/fish/plugins/foreign-env/suppress-harmless-warnings.patch (renamed from pkgs/shells/fish/fish-foreign-env/suppress-harmless-warnings.patch) | 0 | ||||
-rw-r--r-- | pkgs/shells/fish/plugins/pure.nix | 29 |
6 files changed, 159 insertions, 10 deletions
diff --git a/pkgs/shells/fish/plugins/build-fish-plugin.nix b/pkgs/shells/fish/plugins/build-fish-plugin.nix new file mode 100644 index 000000000000..e2ec342e5440 --- /dev/null +++ b/pkgs/shells/fish/plugins/build-fish-plugin.nix @@ -0,0 +1,77 @@ +{ stdenv, lib, writeShellScriptBin, writeScript, fish }: + +let + rtpPath = "share/fish"; + + mapToFuncPath = v: + if lib.isString v + then v + else "${v}/${rtpPath}/vendor_functions.d"; + + fishWithFunctionPath = plugins: let + funcPaths = map mapToFuncPath plugins; + in writeShellScriptBin "fish" '' + ${fish}/bin/fish \ + --init-command \ + "set --prepend fish_function_path ${lib.escapeShellArgs funcPaths}" \ + "$@" + ''; + +in attrs@{ + pname, + version, + src, + + name ? "fishplugin-${pname}-${version}", + unpackPhase ? "", + configurePhase ? ":", + buildPhase ? ":", + preInstall ? "", + postInstall ? "", + # name of the subdirectory in which to store the plugin + installPath ? lib.getName pname, + + checkInputs ? [], + # plugins or paths to add to the function path of the test fish shell + checkFunctionPath ? [], + # test script to be executed in a fish shell + checkPhase ? "", + doCheck ? checkPhase != "", + + ... +}: + +stdenv.mkDerivation (attrs // { + inherit name; + inherit unpackPhase configurePhase buildPhase; + + inherit preInstall postInstall; + installPhase = '' + runHook preInstall + + ( + install_vendor_files() { + source="$1" + target="$out/${rtpPath}/vendor_$2.d" + + [ -d $source ] || return 0 + mkdir -p $target + cp -r $source/*.fish "$target/" + } + + install_vendor_files completions completions + install_vendor_files functions functions + install_vendor_files conf conf + install_vendor_files conf.d conf + ) + + runHook postInstall + ''; + + inherit doCheck; + checkInputs = [ (fishWithFunctionPath checkFunctionPath) ] ++ checkInputs; + checkPhase = '' + export HOME=$(mktemp -d) # fish wants a writable home + fish "${writeScript "${name}-test" checkPhase}" + ''; +}) diff --git a/pkgs/shells/fish/plugins/default.nix b/pkgs/shells/fish/plugins/default.nix new file mode 100644 index 000000000000..e543d49516a8 --- /dev/null +++ b/pkgs/shells/fish/plugins/default.nix @@ -0,0 +1,13 @@ +{ lib, newScope }: + +lib.makeScope newScope (self: with self; { + + buildFishPlugin = callPackage ./build-fish-plugin.nix { }; + + fishtape = callPackage ./fishtape.nix { }; + + foreign-env = callPackage ./foreign-env { }; + + pure = callPackage ./pure.nix { }; + +}) diff --git a/pkgs/shells/fish/plugins/fishtape.nix b/pkgs/shells/fish/plugins/fishtape.nix new file mode 100644 index 000000000000..326ff61c4174 --- /dev/null +++ b/pkgs/shells/fish/plugins/fishtape.nix @@ -0,0 +1,32 @@ +{ lib, buildFishPlugin, fetchFromGitHub }: + +buildFishPlugin rec { + pname = "fishtape"; + version = "2.1.3"; + + src = fetchFromGitHub { + owner = "jorgebucaran"; + repo = "fishtape"; + rev = version; + sha256 = "0dxcyhs2shhgy5xnwcimqja8vqsyk841x486lgq13i3y1h0kp2kd"; + }; + + checkFunctionPath = [ "./" ]; # fishtape is introspective + checkPhase = '' + rm test/tty.fish # test expects a tty + fishtape test/*.fish + ''; + + preInstall = '' + # move the function script in the proper sub-directory + mkdir functions + mv fishtape.fish functions/ + ''; + + meta = { + description = "TAP-based test runner for Fish"; + homepage = "https://github.com/jorgebucaran/fishtape"; + license = lib.licenses.mit; + maintainers = with lib.maintainers; [ pacien ]; + }; +} diff --git a/pkgs/shells/fish/fish-foreign-env/default.nix b/pkgs/shells/fish/plugins/foreign-env/default.nix index ef157f323923..03435340d179 100644 --- a/pkgs/shells/fish/fish-foreign-env/default.nix +++ b/pkgs/shells/fish/plugins/foreign-env/default.nix @@ -1,7 +1,7 @@ -{ stdenv, fetchFromGitHub, gnused, bash, coreutils }: +{ lib, buildFishPlugin, fetchFromGitHub, gnused, bash, coreutils }: -stdenv.mkDerivation { - pname = "fish-foreign-env"; +buildFishPlugin { + pname = "foreign-env"; version = "git-20200209"; src = fetchFromGitHub { @@ -11,18 +11,16 @@ stdenv.mkDerivation { sha256 = "00xqlyl3lffc5l0viin1nyp819wf81fncqyz87jx8ljjdhilmgbs"; }; - installPhase = '' - mkdir -p $out/share/fish-foreign-env/functions/ - cp functions/* $out/share/fish-foreign-env/functions/ + patches = [ ./suppress-harmless-warnings.patch ]; + + preInstall = '' sed -e "s|sed|${gnused}/bin/sed|" \ -e "s|bash|${bash}/bin/bash|" \ -e "s|\| tr|\| ${coreutils}/bin/tr|" \ - -i $out/share/fish-foreign-env/functions/* + -i functions/* ''; - patches = [ ./suppress-harmless-warnings.patch ]; - - meta = with stdenv.lib; { + meta = with lib; { description = "A foreign environment interface for Fish shell"; license = licenses.mit; maintainers = with maintainers; [ jgillich ]; diff --git a/pkgs/shells/fish/fish-foreign-env/suppress-harmless-warnings.patch b/pkgs/shells/fish/plugins/foreign-env/suppress-harmless-warnings.patch index 6eed35152120..6eed35152120 100644 --- a/pkgs/shells/fish/fish-foreign-env/suppress-harmless-warnings.patch +++ b/pkgs/shells/fish/plugins/foreign-env/suppress-harmless-warnings.patch diff --git a/pkgs/shells/fish/plugins/pure.nix b/pkgs/shells/fish/plugins/pure.nix new file mode 100644 index 000000000000..54af2e0663e8 --- /dev/null +++ b/pkgs/shells/fish/plugins/pure.nix @@ -0,0 +1,29 @@ +{ lib, buildFishPlugin, fetchFromGitHub, git, fishtape }: + +buildFishPlugin rec { + pname = "pure"; + version = "3.4.2"; + + src = fetchFromGitHub { + owner = "rafaelrinaldi"; + repo = "pure"; + rev = "v${version}"; + sha256 = "134sz3f98gb6z2vgd5kkm6dd8pka5gijk843c32s616w35y07sga"; + }; + + checkInputs = [ git ]; + checkFunctionPath = [ fishtape ]; + checkPhase = '' + # https://github.com/rafaelrinaldi/pure/issues/264 + rm tests/_pure_string_width.test.fish + + fishtape tests/*.test.fish + ''; + + meta = { + description = "Pretty, minimal and fast Fish prompt, ported from zsh"; + homepage = "https://github.com/rafaelrinaldi/pure"; + license = lib.licenses.mit; + maintainers = with lib.maintainers; [ pacien ]; + }; +} |