forked from M-Labs/it-infra
fish-nix-shell -> any-nix-shell
This commit is contained in:
parent
bb6db330c3
commit
e99fd13de5
27
nixops/any-nix-shell.nix
Normal file
27
nixops/any-nix-shell.nix
Normal file
@ -0,0 +1,27 @@
|
||||
{ lib, stdenv, fetchFromGitHub, makeWrapper }:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "any-nix-shell";
|
||||
version = "1.2.1";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "haslersn";
|
||||
repo = "any-nix-shell";
|
||||
rev = "v${version}";
|
||||
sha256 = "0q27rhjhh7k0qgcdcfm8ly5za6wm4rckh633d0sjz87faffkp90k";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [ makeWrapper ];
|
||||
installPhase = ''
|
||||
mkdir -p $out/bin
|
||||
cp -r bin $out
|
||||
wrapProgram $out/bin/any-nix-shell --prefix PATH ":" $out/bin
|
||||
'';
|
||||
|
||||
meta = with lib; {
|
||||
description = "fish and zsh support for nix-shell";
|
||||
license = licenses.mit;
|
||||
homepage = "https://github.com/haslersn/any-nix-shell";
|
||||
maintainers = with maintainers; [ haslersn ];
|
||||
};
|
||||
}
|
@ -50,7 +50,7 @@ in
|
||||
];
|
||||
})
|
||||
virt-manager spice-gtk
|
||||
(import ./fish-nix-shell)
|
||||
(callPackage ./any-nix-shell.nix {})
|
||||
];
|
||||
programs.wireshark.enable = true;
|
||||
programs.wireshark.package = pkgs.wireshark;
|
||||
@ -128,7 +128,7 @@ in
|
||||
|
||||
programs.fish.enable = true;
|
||||
programs.fish.promptInit = ''
|
||||
fish-nix-shell --info-right | source
|
||||
any-nix-shell fish --info-right | source
|
||||
'';
|
||||
users.mutableUsers = false;
|
||||
users.defaultUserShell = pkgs.fish;
|
||||
|
@ -1,21 +0,0 @@
|
||||
MIT License
|
||||
|
||||
Copyright (c) 2018 haslersn
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
SOFTWARE.
|
@ -1,50 +0,0 @@
|
||||
# fish-nix-shell
|
||||
fish support for the *nix-shell* environment of the Nix package manager.
|
||||
|
||||
## Installation
|
||||
|
||||
### Installation in the user environment
|
||||
|
||||
Execute
|
||||
|
||||
```
|
||||
nix-env -if https://github.com/haslersn/fish-nix-shell/archive/master.tar.gz
|
||||
```
|
||||
|
||||
and add the following to your *~/.config/fish/config.fish*. Create it if it doesn't exist.
|
||||
|
||||
```
|
||||
fish-nix-shell --info-right | source
|
||||
```
|
||||
|
||||
### System-wide installation
|
||||
|
||||
Add the package to your */etc/nixos/configuration.nix*:
|
||||
|
||||
```
|
||||
environment.systemPackages = with pkgs; [
|
||||
#
|
||||
# Other packages here ...
|
||||
#
|
||||
(import (fetchGit "https://github.com/haslersn/fish-nix-shell"))
|
||||
];
|
||||
```
|
||||
|
||||
and then execute: `sudo nixos-rebuild switch`
|
||||
|
||||
If you want to configure it system-wide, also add:
|
||||
|
||||
```
|
||||
programs.fish.enable = true;
|
||||
programs.fish.promptInit = ''
|
||||
fish-nix-shell --info-right | source
|
||||
'';
|
||||
```
|
||||
|
||||
## Flags
|
||||
|
||||
The `fish-nix-shell` command **optionally** takes the following flags:
|
||||
|
||||
| Flag | Meaning |
|
||||
| - | - |
|
||||
| `--info-right` | While in a *fish-nix-shell*, display information about the loaded packages at the right.
|
@ -1,34 +0,0 @@
|
||||
#!/bin/sh
|
||||
|
||||
function init_fish () {
|
||||
cat <<EOF
|
||||
|
||||
# Overwrite the nix-shell command
|
||||
function nix-shell
|
||||
fish-nix-shell-wrapper \$argv
|
||||
set -gx FISH_NIX_SHELL_EXIT_STATUS \$status
|
||||
end
|
||||
EOF
|
||||
for arg in "$@"; do
|
||||
case "$arg" in
|
||||
--info-right)
|
||||
cat <<EOF
|
||||
|
||||
# Print additional information inside a nix-shell environment
|
||||
function fish_right_prompt
|
||||
nix-shell-info
|
||||
set -e FISH_NIX_SHELL_EXIT_STATUS
|
||||
end
|
||||
EOF
|
||||
;;
|
||||
*) exit 1;;
|
||||
esac
|
||||
done
|
||||
}
|
||||
|
||||
cat <<EOF
|
||||
# If you see this output, you probably forgot to pipe this output into 'source':
|
||||
# fish-nix-shell $@ | source
|
||||
EOF
|
||||
|
||||
init_fish "$@"
|
@ -1,22 +0,0 @@
|
||||
#!/bin/sh
|
||||
fns () {
|
||||
pkgs=$FISH_NIX_SHELL_PKGS
|
||||
for arg in "$@"; do
|
||||
if [[ $arg == -* ]]; then
|
||||
pkg=
|
||||
if [[ $arg == --pure ]] || [[ $arg == --command ]] || [[ $arg == --run ]]; then
|
||||
command nix-shell $@
|
||||
return
|
||||
elif [[ $arg == -p ]] || [[ $arg == --packages ]]; then
|
||||
pkg=1
|
||||
fi
|
||||
elif [[ $pkg == 1 ]]; then
|
||||
pkgs+=" "$arg
|
||||
fi
|
||||
done
|
||||
if [[ -n $name ]] && [[ $name != shell ]]; then
|
||||
pkgs+=" "$name
|
||||
fi
|
||||
env FISH_NIX_SHELL_PKGS="$pkgs" nix-shell "$@" --command fish
|
||||
}
|
||||
fns "$@"
|
@ -1,21 +0,0 @@
|
||||
#!/bin/sh
|
||||
if [[ $IN_NIX_SHELL != "" ]]; then
|
||||
printf "\033[1;32m"
|
||||
output=$(echo $FISH_NIX_SHELL_PKGS | xargs)
|
||||
if [[ -n $name ]] && [[ $name != shell ]]; then
|
||||
output+=" "$name
|
||||
fi
|
||||
if [[ -n $output ]]; then
|
||||
output=$(echo $output $additional_pkgs | tr ' ' '\n' | sort -u | tr '\n' ' ' | xargs)
|
||||
printf "$output "
|
||||
else
|
||||
printf "[unknown nix-shell] "
|
||||
fi
|
||||
printf "\033[0m"
|
||||
elif [[ $FISH_NIX_SHELL_EXIT_STATUS ]]; then
|
||||
if [[ $FISH_NIX_SHELL_EXIT_STATUS == 0 ]]; then
|
||||
printf "\033[1;36mexited nix-shell \033[0m"
|
||||
else
|
||||
printf "\033[1;31mERROR \033[0m"
|
||||
fi
|
||||
fi
|
@ -1,16 +0,0 @@
|
||||
with import <nixpkgs> {}; stdenv.mkDerivation rec {
|
||||
name = "fish-nix-shell";
|
||||
src = fetchGit "https://github.com/haslersn/fish-nix-shell";
|
||||
nativeBuildInputs = [ makeWrapper ];
|
||||
installPhase = ''
|
||||
mkdir -p $out
|
||||
cp LICENSE $out
|
||||
cp -r bin $out
|
||||
wrapProgram $out/bin/fish-nix-shell
|
||||
wrapProgram $out/bin/fish-nix-shell-wrapper --prefix PATH ":" ${fish}/bin
|
||||
wrapProgram $out/bin/nix-shell-info
|
||||
'';
|
||||
meta.description = "fish support for the nix-shell environment of the Nix package manager.";
|
||||
meta.license = "MIT";
|
||||
meta.homepage = https://github.com/haslersn/fish-nix-shell;
|
||||
}
|
@ -36,7 +36,7 @@
|
||||
telnet unzip zip gnupg
|
||||
sublime3 rink
|
||||
tmux screen tigervnc
|
||||
(import ./fish-nix-shell)
|
||||
(callPackage ./any-nix-shell.nix {})
|
||||
];
|
||||
programs.wireshark.enable = true;
|
||||
|
||||
@ -104,7 +104,7 @@
|
||||
|
||||
programs.fish.enable = true;
|
||||
programs.fish.promptInit = ''
|
||||
fish-nix-shell --info-right | source
|
||||
any-nix-shell fish --info-right | source
|
||||
'';
|
||||
users.mutableUsers = false;
|
||||
users.defaultUserShell = pkgs.fish;
|
||||
|
Loading…
Reference in New Issue
Block a user