Loading nixos/modules/programs/direnv.nix +43 −36 Original line number Diff line number Diff line Loading @@ -3,9 +3,18 @@ config, pkgs, ... }: let }: let cfg = config.programs.direnv; in { enabledOption = x: lib.mkEnableOption x // { default = true; example = false; }; in { options.programs.direnv = { enable = lib.mkEnableOption '' Loading @@ -16,6 +25,16 @@ in { package = lib.mkPackageOption pkgs "direnv" { }; enableBashIntegration = enabledOption '' Bash integration ''; enableZshIntegration = enabledOption '' Zsh integration ''; enableFishIntegration = enabledOption '' Fish integration ''; direnvrcExtra = lib.mkOption { type = lib.types.lines; default = ""; Loading @@ -32,22 +51,14 @@ in { the hiding of direnv logging ''; loadInNixShell = lib.mkEnableOption '' loadInNixShell = enabledOption '' loading direnv in `nix-shell` `nix shell` or `nix develop` '' // { default = true; }; ''; nix-direnv = { enable = (lib.mkEnableOption '' a faster, persistent implementation of use_nix and use_flake, to replace the built-in one '') // { default = true; }; enable = enabledOption '' a faster, persistent implementation of use_nix and use_flake, to replace the builtin one ''; package = lib.mkOption { default = pkgs.nix-direnv.override { nix = config.nix.package; }; Loading @@ -60,14 +71,10 @@ in { }; }; imports = [ (lib.mkRemovedOptionModule ["programs" "direnv" "persistDerivations"] "persistDerivations was removed as it is no longer necessary") ]; config = lib.mkIf cfg.enable { programs = { zsh.interactiveShellInit = '' zsh.interactiveShellInit = lib.mkIf cfg.enableZshIntegration '' if ${lib.boolToString cfg.loadInNixShell} || printenv PATH | grep -vqc '/nix/store'; then eval "$(${lib.getExe cfg.package} hook zsh)" fi Loading @@ -75,13 +82,13 @@ in { #$NIX_GCROOT for "nix develop" https://github.com/NixOS/nix/blob/6db66ebfc55769edd0c6bc70fcbd76246d4d26e0/src/nix/develop.cc#L530 #$IN_NIX_SHELL for "nix-shell" bash.interactiveShellInit = '' bash.interactiveShellInit = lib.mkIf cfg.enableBashIntegration '' if ${lib.boolToString cfg.loadInNixShell} || [ -z "$IN_NIX_SHELL$NIX_GCROOT$(printenv PATH | grep '/nix/store')" ] ; then eval "$(${lib.getExe cfg.package} hook bash)" fi ''; fish.interactiveShellInit = '' fish.interactiveShellInit = lib.mkIf cfg.enableFishIntegration '' if ${lib.boolToString cfg.loadInNixShell}; or printenv PATH | grep -vqc '/nix/store'; ${lib.getExe cfg.package} hook fish | source Loading @@ -90,17 +97,16 @@ in { }; environment = { systemPackages = if cfg.loadInNixShell then [cfg.package] else [ #direnv has a fish library which sources direnv for some reason (cfg.package.overrideAttrs (old: { installPhase = (old.installPhase or "") + '' systemPackages = [ # direnv has a fish library which automatically sources direnv for some reason # I don't see any harm in doing this if we're sourcing it with fish.interactiveShellInit (pkgs.symlinkJoin { inherit (cfg.package) name; paths = [ cfg.package ]; postBuild = '' rm -rf $out/share/fish ''; })) }) ]; variables = { Loading Loading @@ -141,4 +147,5 @@ in { }; }; }; meta.maintainers = with lib.maintainers; [ gerg-l ]; } Loading
nixos/modules/programs/direnv.nix +43 −36 Original line number Diff line number Diff line Loading @@ -3,9 +3,18 @@ config, pkgs, ... }: let }: let cfg = config.programs.direnv; in { enabledOption = x: lib.mkEnableOption x // { default = true; example = false; }; in { options.programs.direnv = { enable = lib.mkEnableOption '' Loading @@ -16,6 +25,16 @@ in { package = lib.mkPackageOption pkgs "direnv" { }; enableBashIntegration = enabledOption '' Bash integration ''; enableZshIntegration = enabledOption '' Zsh integration ''; enableFishIntegration = enabledOption '' Fish integration ''; direnvrcExtra = lib.mkOption { type = lib.types.lines; default = ""; Loading @@ -32,22 +51,14 @@ in { the hiding of direnv logging ''; loadInNixShell = lib.mkEnableOption '' loadInNixShell = enabledOption '' loading direnv in `nix-shell` `nix shell` or `nix develop` '' // { default = true; }; ''; nix-direnv = { enable = (lib.mkEnableOption '' a faster, persistent implementation of use_nix and use_flake, to replace the built-in one '') // { default = true; }; enable = enabledOption '' a faster, persistent implementation of use_nix and use_flake, to replace the builtin one ''; package = lib.mkOption { default = pkgs.nix-direnv.override { nix = config.nix.package; }; Loading @@ -60,14 +71,10 @@ in { }; }; imports = [ (lib.mkRemovedOptionModule ["programs" "direnv" "persistDerivations"] "persistDerivations was removed as it is no longer necessary") ]; config = lib.mkIf cfg.enable { programs = { zsh.interactiveShellInit = '' zsh.interactiveShellInit = lib.mkIf cfg.enableZshIntegration '' if ${lib.boolToString cfg.loadInNixShell} || printenv PATH | grep -vqc '/nix/store'; then eval "$(${lib.getExe cfg.package} hook zsh)" fi Loading @@ -75,13 +82,13 @@ in { #$NIX_GCROOT for "nix develop" https://github.com/NixOS/nix/blob/6db66ebfc55769edd0c6bc70fcbd76246d4d26e0/src/nix/develop.cc#L530 #$IN_NIX_SHELL for "nix-shell" bash.interactiveShellInit = '' bash.interactiveShellInit = lib.mkIf cfg.enableBashIntegration '' if ${lib.boolToString cfg.loadInNixShell} || [ -z "$IN_NIX_SHELL$NIX_GCROOT$(printenv PATH | grep '/nix/store')" ] ; then eval "$(${lib.getExe cfg.package} hook bash)" fi ''; fish.interactiveShellInit = '' fish.interactiveShellInit = lib.mkIf cfg.enableFishIntegration '' if ${lib.boolToString cfg.loadInNixShell}; or printenv PATH | grep -vqc '/nix/store'; ${lib.getExe cfg.package} hook fish | source Loading @@ -90,17 +97,16 @@ in { }; environment = { systemPackages = if cfg.loadInNixShell then [cfg.package] else [ #direnv has a fish library which sources direnv for some reason (cfg.package.overrideAttrs (old: { installPhase = (old.installPhase or "") + '' systemPackages = [ # direnv has a fish library which automatically sources direnv for some reason # I don't see any harm in doing this if we're sourcing it with fish.interactiveShellInit (pkgs.symlinkJoin { inherit (cfg.package) name; paths = [ cfg.package ]; postBuild = '' rm -rf $out/share/fish ''; })) }) ]; variables = { Loading Loading @@ -141,4 +147,5 @@ in { }; }; }; meta.maintainers = with lib.maintainers; [ gerg-l ]; }