direnv: enable nushell integration

This enables nushell integration by default for direnv, similar to
bash/zsh/fish. The slightly verbose way of setting this is to ensure
that peoples' existing nushell configuration isn't overwritten, only
appended to, as would be the case if we just used the integration
example from the nushell docs:

  https://www.nushell.sh/cookbook/direnv.html

Closes #3520
This commit is contained in:
Mika Naylor 2022-12-24 14:00:20 +01:00 committed by Robert Helgesson
parent 5a570962a9
commit 3ad22341a2
No known key found for this signature in database
GPG key ID: 36BDAA14C2797E89
3 changed files with 45 additions and 0 deletions

View file

@ -1,6 +1,7 @@
{
direnv-bash = ./bash.nix;
direnv-nix-direnv = ./nix-direnv.nix;
direnv-nushell = ./nushell.nix;
direnv-stdlib = ./stdlib.nix;
direnv-stdlib-and-nix-direnv = ./stdlib-and-nix-direnv.nix;
}

View file

@ -0,0 +1,19 @@
{ pkgs, ... }:
{
programs.nushell.enable = true;
programs.direnv.enable = true;
test.stubs.nushell = { };
nmt.script = let
configFile = if pkgs.stdenv.isDarwin then
"home-files/Library/Application Support/nushell/config.nu"
else
"home-files/.config/nushell/config.nu";
in ''
assertFileExists "${configFile}"
assertFileRegex "${configFile}" \
'let direnv = (/nix/store/.*direnv.*/bin/direnv export json | from json)'
'';
}