diff options
-rw-r--r-- | nixos/modules/module-list.nix | 1 | ||||
-rw-r--r-- | nixos/modules/programs/zsh/zsh-autoenv.nix | 28 | ||||
-rw-r--r-- | pkgs/tools/misc/zsh-autoenv/default.nix | 40 | ||||
-rw-r--r-- | pkgs/top-level/all-packages.nix | 2 |
4 files changed, 71 insertions, 0 deletions
diff --git a/nixos/modules/module-list.nix b/nixos/modules/module-list.nix index b271ca0f35576..d8d6749f7965b 100644 --- a/nixos/modules/module-list.nix +++ b/nixos/modules/module-list.nix @@ -114,6 +114,7 @@ ./programs/yabar.nix ./programs/zsh/oh-my-zsh.nix ./programs/zsh/zsh.nix + ./programs/zsh/zsh-autoenv.nix ./programs/zsh/zsh-syntax-highlighting.nix ./rename.nix ./security/acme.nix diff --git a/nixos/modules/programs/zsh/zsh-autoenv.nix b/nixos/modules/programs/zsh/zsh-autoenv.nix new file mode 100644 index 0000000000000..630114bcda9f3 --- /dev/null +++ b/nixos/modules/programs/zsh/zsh-autoenv.nix @@ -0,0 +1,28 @@ +{ config, lib, pkgs, ... }: + +with lib; + +let + cfg = config.programs.zsh.zsh-autoenv; +in { + options = { + programs.zsh.zsh-autoenv = { + enable = mkEnableOption "zsh-autoenv"; + package = mkOption { + default = pkgs.zsh-autoenv; + defaultText = "pkgs.zsh-autoenv"; + description = '' + Package to install for `zsh-autoenv` usage. + ''; + + type = types.package; + }; + }; + }; + + config = mkIf cfg.enable { + programs.zsh.interactiveShellInit = '' + source ${cfg.package}/share/zsh-autoenv/autoenv.zsh + ''; + }; +} diff --git a/pkgs/tools/misc/zsh-autoenv/default.nix b/pkgs/tools/misc/zsh-autoenv/default.nix new file mode 100644 index 0000000000000..492b72a176edb --- /dev/null +++ b/pkgs/tools/misc/zsh-autoenv/default.nix @@ -0,0 +1,40 @@ +{ stdenv, fetchFromGitHub, bash }: + +stdenv.mkDerivation rec { + name = "zsh-autoenv-${version}"; + version = "2017-12-16"; + + src = fetchFromGitHub { + owner = "Tarrasch"; + repo = "zsh-autoenv"; + rev = "2c8cfbcea8e7286649840d7ec98d7e9d5e1d45a0"; + sha256 = "004svkfzhc3ab6q2qvwzgj36wvicg5bs8d2gcibx6adq042di7zj"; + }; + + buildPhase = ":"; + + installPhase = '' + mkdir -p $out/{bin,share} + cp -R $src $out/share/zsh-autoenv + + cat <<SCRIPT > $out/bin/zsh-autoenv-share + #!${stdenv.shell} + # Run this script to find the fzf shared folder where all the shell + # integration scripts are living. + echo $out/share/zsh-autoenv + SCRIPT + chmod +x $out/bin/zsh-autoenv-share + ''; + + meta = with stdenv.lib; { + description = "Automatically sources whitelisted .autoenv.zsh files"; + longDescription = '' + zsh-autoenv automatically sources (known/whitelisted) + .autoenv.zsh files, typically used in project root directories. + It handles "enter" and "leave" events, nesting, and stashing of + variables (overwriting and restoring). + ''; + homepage = https://github.com/Tarrasch/zsh-autoenv; + platforms = stdenv.lib.platforms.all; + }; +} diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index f17fe5260f3c4..25373f63212cb 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -5550,6 +5550,8 @@ with pkgs; zpaq = callPackage ../tools/archivers/zpaq { }; zpaqd = callPackage ../tools/archivers/zpaq/zpaqd.nix { }; + zsh-autoenv = callPackage ../tools/misc/zsh-autoenv { }; + zsh-git-prompt = callPackage ../shells/zsh-git-prompt { }; zsh-navigation-tools = callPackage ../tools/misc/zsh-navigation-tools { }; |