aboutsummaryrefslogtreecommitdiffstats
path: root/modules/by-name/di/direnv/module.nix
diff options
context:
space:
mode:
authorBenedikt Peetz <benedikt.peetz@b-peetz.de>2026-08-17 22:27:54 +0200
committerBenedikt Peetz <benedikt.peetz@b-peetz.de>2026-08-17 22:27:54 +0200
commitaa55de1820a5ae27ac32b9b0e33b18ae592b46fb (patch)
tree3588105ee84d057c90b3ff2ff18d5d4e50fc4afc /modules/by-name/di/direnv/module.nix
parenttreewide: Update (diff)
downloadnixos-config-aa55de1820a5ae27ac32b9b0e33b18ae592b46fb.zip
modules/direnv: Implement pre-cached devshells
That means, that the devshells are only build once and centrally updated. Ideally, they would be built upon system update, but I haven't figured out a way to run `nix print-dev-env` in a nix build sandbox yet (and hope, that it's not necessary anymore once, that functionality moves to nixpkgs' `mkShell`).
Diffstat (limited to 'modules/by-name/di/direnv/module.nix')
-rw-r--r--modules/by-name/di/direnv/module.nix39
1 files changed, 29 insertions, 10 deletions
diff --git a/modules/by-name/di/direnv/module.nix b/modules/by-name/di/direnv/module.nix
index 363f5cea..743375af 100644
--- a/modules/by-name/di/direnv/module.nix
+++ b/modules/by-name/di/direnv/module.nix
@@ -11,26 +11,45 @@
config,
lib,
pkgs,
+ sources,
...
}: let
cfg = config.soispha.programs.direnv;
+
+ devshells = sources.loadFlake "devshells";
+
+ pre-cache = pkgs.runCommand "pre-cache.sh" {} ''
+ cat "${./pre-cache.sh}" > $out
+
+ substituteInPlace $out \
+ --replace-fail "%DEVSHELLS_REPO%" "${devshells}"
+ '';
in {
options.soispha.programs.direnv = {
enable = lib.mkEnableOption "direnv";
};
- config.home-manager.users.soispha.programs.direnv = lib.mkIf cfg.enable {
- enable = true;
-
- nix-direnv = {
+ config.home-manager.users.soispha = lib.mkIf cfg.enable {
+ programs.direnv = {
enable = true;
- package = pkgs.nix-direnv.override {nix = config.nix.package;};
- };
- config = {
- warn_timeout = 0;
- # strict_env = true;
- # disable_stdin = true;
+ package = pkgs.direnv-patched;
+
+ nix-direnv = {
+ enable = true;
+ package = pkgs.nix-direnv.override {nix = config.nix.package;};
+ };
+
+ config = {
+ warn_timeout = 0;
+ strict_env = true;
+ # disable_stdin = true;
+ };
+ };
+ xdg.configFile = {
+ "direnv/lib/hm-pre-cache.sh" = {
+ source = pre-cache;
+ };
};
};
}