{ config, lib, pkgs, ... }: let cfg = config.my.home.direnv; fishEnabled = config.my.home.shell.name == "fish"; in { options.my.home.direnv = with lib; { enable = mkEnableOption "direnv configuration"; }; config = lib.mkIf cfg.enable { programs.direnv = { enable = true; nix-direnv = { enable = true; }; config = { global.disable_stdin = true; global.strict_env = true; }; }; programs.fish.interactiveShellInit = lib.mkIf fishEnabled ( # Using mkAfter to make it more likely to appear after other # manipulations of the prompt. lib.mkAfter '' ${pkgs.direnv}/bin/direnv hook fish | source ''); home.sessionVariables = { DIRENV_DEFAULT_FLAKE = "nixpkgs"; }; }; }