mirror of
https://github.com/NixOS/nixpkgs.git
synced 2024-11-21 05:00:16 +00:00
Merge pull request #12000 from nathan7/nix-auto-run
command-not-found: add NIX_AUTO_RUN option, to automatically invoke nix-shell
This commit is contained in:
commit
e312276b01
|
@ -16,7 +16,7 @@ let
|
|||
isExecutable = true;
|
||||
inherit (pkgs) perl;
|
||||
perlFlags = concatStrings (map (path: "-I ${path}/lib/perl5/site_perl ")
|
||||
[ pkgs.perlPackages.DBI pkgs.perlPackages.DBDSQLite ]);
|
||||
[ pkgs.perlPackages.DBI pkgs.perlPackages.DBDSQLite pkgs.perlPackages.StringShellQuote ]);
|
||||
};
|
||||
|
||||
in
|
||||
|
@ -30,7 +30,7 @@ in
|
|||
local p=/run/current-system/sw/bin/command-not-found
|
||||
if [ -x $p -a -f /nix/var/nix/profiles/per-user/root/channels/nixos/programs.sqlite ]; then
|
||||
# Run the helper program.
|
||||
$p "$1"
|
||||
$p "$@"
|
||||
# Retry the command if we just installed it.
|
||||
if [ $? = 126 ]; then
|
||||
"$@"
|
||||
|
@ -51,7 +51,7 @@ in
|
|||
local p=/run/current-system/sw/bin/command-not-found
|
||||
if [ -x $p -a -f /nix/var/nix/profiles/per-user/root/channels/nixos/programs.sqlite ]; then
|
||||
# Run the helper program.
|
||||
$p "$1"
|
||||
$p "$@"
|
||||
|
||||
# Retry the command if we just installed it.
|
||||
if [ $? = 126 ]; then
|
||||
|
|
|
@ -3,6 +3,7 @@
|
|||
use strict;
|
||||
use DBI;
|
||||
use DBD::SQLite;
|
||||
use String::ShellQuote;
|
||||
use Config;
|
||||
|
||||
my $program = $ARGV[0];
|
||||
|
@ -31,6 +32,8 @@ the package ‘$package’, which I will now install for you.
|
|||
EOF
|
||||
;
|
||||
exit 126 if system("nix-env", "-iA", "nixos.$package") == 0;
|
||||
} elsif ($ENV{"NIX_AUTO_RUN"} // "") {
|
||||
exec("nix-shell", "-p", $package, "--run", shell_quote("exec", @ARGV));
|
||||
} else {
|
||||
print STDERR <<EOF;
|
||||
The program ‘$program’ is currently not installed. You can install it by typing:
|
||||
|
|
13
pkgs/shells/fish/command-not-found.patch
Normal file
13
pkgs/shells/fish/command-not-found.patch
Normal file
|
@ -0,0 +1,13 @@
|
|||
diff --git a/share/functions/__fish_config_interactive.fish b/share/functions/__fish_config_interactive.fish
|
||||
index c3864a8..a12ac4d 100644
|
||||
--- a/share/functions/__fish_config_interactive.fish
|
||||
+++ b/share/functions/__fish_config_interactive.fish
|
||||
@@ -230,7 +230,7 @@ function __fish_config_interactive -d "Initializations that should be performed
|
||||
# Check for NixOS handler
|
||||
else if test -f /run/current-system/sw/bin/command-not-found
|
||||
function __fish_command_not_found_handler --on-event fish_command_not_found
|
||||
- /run/current-system/sw/bin/command-not-found $argv[1]
|
||||
+ /run/current-system/sw/bin/command-not-found $argv
|
||||
end
|
||||
# Ubuntu Feisty places this command in the regular path instead
|
||||
else if type -q -p command-not-found
|
|
@ -4,6 +4,8 @@ stdenv.mkDerivation rec {
|
|||
name = "fish-${version}";
|
||||
version = "2.2.0";
|
||||
|
||||
patches = [ ./command-not-found.patch ];
|
||||
|
||||
src = fetchurl {
|
||||
url = "http://fishshell.com/files/${version}/${name}.tar.gz";
|
||||
sha256 = "0ympqz7llmf0hafxwglykplw6j5cz82yhlrw50lw4bnf2kykjqx7";
|
||||
|
|
Loading…
Reference in a new issue