command-not-found: add NIX_AUTO_RUN

Changed files
+4 -1
nixos
modules
programs
+1 -1
nixos/modules/programs/command-not-found/command-not-found.nix
···
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
+3
nixos/modules/programs/command-not-found/command-not-found.pl
···
use strict;
use DBI;
use DBD::SQLite;
+
use String::ShellQuote;
use Config;
my $program = $ARGV[0];
···
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: