Loading nixos/modules/services/misc/angrr.nix +24 −0 Original line number Diff line number Diff line Loading @@ -7,6 +7,7 @@ let cfg = config.services.angrr; direnvCfg = config.programs.direnv.angrr; in { meta.maintainers = pkgs.angrr.meta.maintainers; Loading Loading @@ -77,6 +78,20 @@ in }; }; }; programs.direnv.angrr = { enable = lib.mkEnableOption "angrr direnv integration" // { default = true; example = false; }; autoUse = lib.mkOption { type = lib.types.bool; default = true; example = false; description = '' Whether to automatically use angrr before loading .envrc. ''; }; }; }; config = lib.mkIf cfg.enable ( Loading Loading @@ -106,6 +121,8 @@ in Type = "oneshot"; }; }; environment.systemPackages = [ cfg.package ]; } (lib.mkIf cfg.timer.enable { Loading @@ -123,6 +140,13 @@ in before = [ "nix-gc.service" ]; }; }) (lib.mkIf (config.programs.direnv.enable && direnvCfg.enable) { environment.etc."direnv/lib/angrr.sh".source = "${cfg.package}/share/direnv/lib/angrr.sh"; programs.direnv.direnvrcExtra = lib.mkIf direnvCfg.autoUse '' use angrr ''; }) ] ); } nixos/tests/angrr.nix +25 −0 Original line number Diff line number Diff line Loading @@ -15,6 +15,11 @@ # For `nix build /run/current-system --out-link`, # `nix-build` does not support this use case. nix.settings.experimental-features = [ "nix-command" ]; # Test direnv integration programs.direnv.enable = true; # Verbose logging for angrr in direnv environment.variables.ANGRR_DIRENV_LOG = "angrr=debug"; }; }; Loading Loading @@ -59,5 +64,25 @@ # All auto GC roots are removed machine.succeed("test ! -f /tmp/root-auto-gc-root-2") machine.succeed("test ! -f /tmp/user-auto-gc-root-2") # Direnv integration test machine.succeed("mkdir /tmp/test-direnv") machine.succeed("echo >/tmp/test-direnv/.envrc") # Simply create an empty .envrc machine.succeed("nix build /run/current-system --out-link /tmp/test-direnv/.direnv/gc-root") machine.succeed("cd /tmp/test-direnv; direnv allow; direnv exec . true") # The root will be removed if we does not use the direnv recently machine.succeed("date -s '8 days'") machine.systemctl("start nix-gc.service") machine.succeed("test ! -f /tmp/test-direnv/.direnv/gc-root") # Recreate the root machine.succeed("nix build /run/current-system --out-link /tmp/test-direnv/.direnv/gc-root") # The root will not be remove if we use the direnv recently machine.succeed("date -s '8 days'") machine.succeed("cd /tmp/test-direnv; direnv exec . true") machine.systemctl("start nix-gc.service") machine.succeed("readlink /tmp/test-direnv/.direnv/gc-root") ''; } Loading
nixos/modules/services/misc/angrr.nix +24 −0 Original line number Diff line number Diff line Loading @@ -7,6 +7,7 @@ let cfg = config.services.angrr; direnvCfg = config.programs.direnv.angrr; in { meta.maintainers = pkgs.angrr.meta.maintainers; Loading Loading @@ -77,6 +78,20 @@ in }; }; }; programs.direnv.angrr = { enable = lib.mkEnableOption "angrr direnv integration" // { default = true; example = false; }; autoUse = lib.mkOption { type = lib.types.bool; default = true; example = false; description = '' Whether to automatically use angrr before loading .envrc. ''; }; }; }; config = lib.mkIf cfg.enable ( Loading Loading @@ -106,6 +121,8 @@ in Type = "oneshot"; }; }; environment.systemPackages = [ cfg.package ]; } (lib.mkIf cfg.timer.enable { Loading @@ -123,6 +140,13 @@ in before = [ "nix-gc.service" ]; }; }) (lib.mkIf (config.programs.direnv.enable && direnvCfg.enable) { environment.etc."direnv/lib/angrr.sh".source = "${cfg.package}/share/direnv/lib/angrr.sh"; programs.direnv.direnvrcExtra = lib.mkIf direnvCfg.autoUse '' use angrr ''; }) ] ); }
nixos/tests/angrr.nix +25 −0 Original line number Diff line number Diff line Loading @@ -15,6 +15,11 @@ # For `nix build /run/current-system --out-link`, # `nix-build` does not support this use case. nix.settings.experimental-features = [ "nix-command" ]; # Test direnv integration programs.direnv.enable = true; # Verbose logging for angrr in direnv environment.variables.ANGRR_DIRENV_LOG = "angrr=debug"; }; }; Loading Loading @@ -59,5 +64,25 @@ # All auto GC roots are removed machine.succeed("test ! -f /tmp/root-auto-gc-root-2") machine.succeed("test ! -f /tmp/user-auto-gc-root-2") # Direnv integration test machine.succeed("mkdir /tmp/test-direnv") machine.succeed("echo >/tmp/test-direnv/.envrc") # Simply create an empty .envrc machine.succeed("nix build /run/current-system --out-link /tmp/test-direnv/.direnv/gc-root") machine.succeed("cd /tmp/test-direnv; direnv allow; direnv exec . true") # The root will be removed if we does not use the direnv recently machine.succeed("date -s '8 days'") machine.systemctl("start nix-gc.service") machine.succeed("test ! -f /tmp/test-direnv/.direnv/gc-root") # Recreate the root machine.succeed("nix build /run/current-system --out-link /tmp/test-direnv/.direnv/gc-root") # The root will not be remove if we use the direnv recently machine.succeed("date -s '8 days'") machine.succeed("cd /tmp/test-direnv; direnv exec . true") machine.systemctl("start nix-gc.service") machine.succeed("readlink /tmp/test-direnv/.direnv/gc-root") ''; }