Install direnv.

This commit is contained in:
Tom Alexander 2025-07-13 16:07:25 -04:00
parent 399379cea0
commit 8847063948
No known key found for this signature in database
GPG Key ID: D3A179C9A53C0EDE
5 changed files with 71 additions and 1 deletions

View File

@ -16,6 +16,7 @@
./roles/boot
./roles/chromecast
./roles/chromium
./roles/direnv
./roles/distributed_build
./roles/docker
./roles/ecc
@ -142,7 +143,7 @@
# Runs nix-collect-garbage --delete-older-than 5d
automatic = true;
persistent = true;
dates = "weekly";
dates = "monthly";
# randomizedDelaySec = "14m";
options = "--delete-older-than 30d";
};

View File

@ -64,6 +64,7 @@
me.bluetooth.enable = true;
me.chromecast.enable = true;
me.chromium.enable = true;
me.direnv.enable = true;
me.docker.enable = true;
me.ecc.enable = true;
me.emacs_flavor = "full";

View File

@ -59,6 +59,7 @@
me.bluetooth.enable = true;
me.chromecast.enable = true;
me.chromium.enable = true;
me.direnv.enable = true;
me.docker.enable = true;
me.ecc.enable = true;
me.emacs_flavor = "full";

View File

@ -0,0 +1,55 @@
{
config,
lib,
pkgs,
...
}:
let
direnv_zsh_hook = pkgs.writeTextFile {
name = "direnv_zsh_hook.zsh";
text = ''
eval "$(direnv hook zsh)"
'';
};
in
{
imports = [ ];
options.me = {
direnv.enable = lib.mkOption {
type = lib.types.bool;
default = false;
example = true;
description = "Whether we want to install direnv.";
};
};
config = lib.mkIf config.me.direnv.enable (
lib.mkMerge [
{
environment.systemPackages = with pkgs; [
direnv
nix-direnv
];
me.zsh.includes = [ direnv_zsh_hook ];
environment.persistence."/persist" = lib.mkIf (!config.me.buildingIso) {
hideMounts = true;
users.talexander = {
directories = [
{
# List of allowed directories from `direnv allow`.
directory = ".local/share/direnv";
user = "talexander";
group = "talexander";
mode = "0755";
}
];
};
};
}
]
);
}

View File

@ -49,6 +49,8 @@ let
source ${pkgs.zsh-histdb}/share/zsh/plugins/zsh-histdb/histdb-interactive.zsh
bindkey '^r' _histdb-isearch
${lib.concatMapStringsSep "\n" (item: "source ${item}") config.me.zsh.includes}
'';
};
in
@ -62,6 +64,16 @@ in
example = true;
description = "Whether we want to install zsh.";
};
zsh.includes = lib.mkOption {
type = lib.types.listOf lib.types.package;
default = [ ];
example = lib.literalExpression ''
[ (pkgs.writeTextFile {
name = "launch-kanshi.conf";
text = "exec kanshi";
}) ]'';
description = "List of zshrc files to import.";
};
};
config = lib.mkIf config.me.zsh.enable (