diff --git a/nixos/modules/programs/autoenv.nix b/nixos/modules/programs/autoenv.nix new file mode 100644 index 00000000000000..53fae886335689 --- /dev/null +++ b/nixos/modules/programs/autoenv.nix @@ -0,0 +1,32 @@ +{ + config, + lib, + pkgs, + ... +}: + +let + cfg = config.programs.autoenv; +in +{ + options = { + programs.autoenv = { + enable = lib.mkEnableOption "autoenv"; + package = lib.mkPackageOption pkgs "autoenv" { }; + }; + }; + + config = lib.mkIf cfg.enable { + environment.systemPackages = [ pkgs.autoenv ]; + + programs = { + zsh.interactiveShellInit = '' + source ${cfg.package}/share/autoenv/activate.sh + ''; + + bash.interactiveShellInit = '' + source ${cfg.package}/share/autoenv/activate.sh + ''; + }; + }; +} diff --git a/pkgs/by-name/au/autoenv/package.nix b/pkgs/by-name/au/autoenv/package.nix new file mode 100644 index 00000000000000..687ac797971ba0 --- /dev/null +++ b/pkgs/by-name/au/autoenv/package.nix @@ -0,0 +1,35 @@ +{ + stdenv, + fetchFromGitHub, + lib, +}: + +stdenv.mkDerivation (finalAttrs: { + pname = "autoenv"; + version = "0-unstable-2024-10-16"; + + src = fetchFromGitHub { + owner = "hyperupcall"; + repo = "autoenv"; + rev = "90241f182d6a7c96e9de8a25c1eccaf2a2d1b43a"; + hash = "sha256-vZrsMPhuu+xPVAww04nKyoOl7k0upvpIaxeMrCikDio="; + }; + + dontBuild = true; + + installPhase = '' + runHook preInstall + mkdir -p $out/share + cp -R $src $out/share/autoenv + chmod +x $out/share/autoenv + runHook postInstall + ''; + + meta = { + description = "Per-directory shell environments sourced from .env file"; + homepage = "https://github.com/hyperupcall/autoenv"; + license = lib.licenses.mit; + platforms = lib.platforms.all; + maintainers = with lib.maintainers; [ clebs ]; + }; +})