command-not-found: add NIX_AUTO_RUN

+4 -1
+1 -1
nixos/modules/programs/command-not-found/command-not-found.nix
··· 16 16 isExecutable = true; 17 17 inherit (pkgs) perl; 18 18 perlFlags = concatStrings (map (path: "-I ${path}/lib/perl5/site_perl ") 19 - [ pkgs.perlPackages.DBI pkgs.perlPackages.DBDSQLite ]); 19 + [ pkgs.perlPackages.DBI pkgs.perlPackages.DBDSQLite pkgs.perlPackages.StringShellQuote ]); 20 20 }; 21 21 22 22 in
+3
nixos/modules/programs/command-not-found/command-not-found.pl
··· 3 3 use strict; 4 4 use DBI; 5 5 use DBD::SQLite; 6 + use String::ShellQuote; 6 7 use Config; 7 8 8 9 my $program = $ARGV[0]; ··· 31 32 EOF 32 33 ; 33 34 exit 126 if system("nix-env", "-iA", "nixos.$package") == 0; 35 + } elsif ($ENV{"NIX_AUTO_RUN"} // "") { 36 + exec("nix-shell", "-p", $package, "--run", shell_quote("exec", @ARGV)); 34 37 } else { 35 38 print STDERR <<EOF; 36 39 The program ‘$program’ is currently not installed. You can install it by typing: