From 07cb81a1d95e15e7c864dcfd912fc2a22d65d115 Mon Sep 17 00:00:00 2001 From: aristote Date: Tue, 29 Jul 2025 18:09:28 +0200 Subject: home: devenv: update envs when nixos-upgrading --- modules/home-manager/personal/programs/devenv.nix | 55 +++++++++++++++++++++++ 1 file changed, 55 insertions(+) (limited to 'modules/home-manager/personal/programs/devenv.nix') diff --git a/modules/home-manager/personal/programs/devenv.nix b/modules/home-manager/personal/programs/devenv.nix index dbe5aab..29494f9 100644 --- a/modules/home-manager/personal/programs/devenv.nix +++ b/modules/home-manager/personal/programs/devenv.nix @@ -7,6 +7,40 @@ let cfg = config.personal.programs.devenv; importedDevenv = pkgs ? devenv; + devenvUpdateScript = pkgs.callPackage ( + { + bash, + devenv, + direnv, + findutils, + git, + gnugrep, + }: + pkgs.writeShellApplication { + name = "devenv-update"; + + runtimeInputs = [ + bash + devenv + direnv + findutils + git + gnugrep + ]; + + text = '' + find . -name '.envrc' -execdir bash -c ' + if [[ $(direnv status | grep "Found RC allowed 0") ]] + then + echo Updating shell $(pwd)... + devenv update + devenv shell echo Shell $(pwd) updated! + echo + fi + ' \; + ''; + } + ) { devenv = pkgs.devenv; }; in { options.personal.programs.devenv.enable = lib.mkEnableOption "devenv"; @@ -19,5 +53,26 @@ in } ]; home.packages = lib.optional importedDevenv pkgs.devenv; + + systemd.user = pkgs.personal.lib.homeManager.serviceWithTimer "devenv-update" { + Unit = { + Description = "Update devenv shells"; + After = [ + "network-online.target" + ]; + }; + Service = { + Type = "oneshot"; + WorkingDirectory = "${config.home.homeDirectory}"; + ExecStart = "${devenvUpdateScript}/bin/devenv-update"; + }; + Timer = { + Persistent = true; + OnCalendar = "daily"; + }; + Install = { + WantedBy = [ "default.target" ]; + }; + }; }; } -- cgit v1.2.3