From 0b0e51ce6f48662e75775a3ca52837c9a152d6b3 Mon Sep 17 00:00:00 2001 From: Spencer Whitt Date: Tue, 24 Nov 2015 13:13:48 -0500 Subject: [PATCH 1/2] nix-zsh-completions: init at 0.2 --- pkgs/shells/nix-zsh-completions/default.nix | 25 +++++++++++++++++++++ pkgs/top-level/all-packages.nix | 2 ++ 2 files changed, 27 insertions(+) create mode 100644 pkgs/shells/nix-zsh-completions/default.nix diff --git a/pkgs/shells/nix-zsh-completions/default.nix b/pkgs/shells/nix-zsh-completions/default.nix new file mode 100644 index 000000000000..af7b4a746f4d --- /dev/null +++ b/pkgs/shells/nix-zsh-completions/default.nix @@ -0,0 +1,25 @@ +{ stdenv, fetchFromGitHub }: + +stdenv.mkDerivation rec { + name = "nix-zsh-completions"; + + src = fetchFromGitHub { + owner = "spwhitt"; + repo = "nix-zsh-completions"; + rev = "0.2"; + sha256 = "0wimjdxnkw1lzhjn28zm4pgbij86ym0z17ayivpzz27g0sacimga"; + }; + + installPhase = '' + mkdir -p $out/share/zsh/site-functions + cp _* $out/share/zsh/site-functions + ''; + + meta = { + homepage = "http://github.com/spwhitt/nix-zsh-completions"; + description = "ZSH completions for Nix, NixOS, and NixOps"; + license = stdenv.lib.licenses.bsd3; + platforms = stdenv.lib.platforms.all; + maintainers = [ stdenv.lib.maintainers.spwhitt ]; + }; +} diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index a97bacb779db..3a6390f524e4 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -3708,6 +3708,8 @@ let zsh = callPackage ../shells/zsh { }; + nix-zsh-completions = callPackage ../shells/nix-zsh-completions { }; + ### DEVELOPMENT / COMPILERS From ff58711bda11e4f79fed80e209fd91cff3ff62ef Mon Sep 17 00:00:00 2001 From: Spencer Whitt Date: Tue, 24 Nov 2015 18:04:17 -0500 Subject: [PATCH 2/2] zsh module: add enableCompletion option --- nixos/modules/programs/zsh/zsh.nix | 20 ++++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/nixos/modules/programs/zsh/zsh.nix b/nixos/modules/programs/zsh/zsh.nix index 74dd6af0bdde..9f7596a21e72 100644 --- a/nixos/modules/programs/zsh/zsh.nix +++ b/nixos/modules/programs/zsh/zsh.nix @@ -25,7 +25,7 @@ in enable = mkOption { default = false; description = '' - Whenever to configure Zsh as an interactive shell. + Whether to configure zsh as an interactive shell. ''; type = types.bool; }; @@ -73,6 +73,14 @@ in type = types.lines; }; + enableCompletion = mkOption { + default = true; + description = '' + Enable zsh completion for all interactive zsh shells. + ''; + type = types.bool; + }; + }; }; @@ -101,6 +109,13 @@ in export HISTFILE=$HOME/.zsh_history setopt HIST_IGNORE_DUPS SHARE_HISTORY HIST_FCNTL_LOCK + + # Tell zsh how to find installed completions + for p in ''${(z)NIX_PROFILES}; do + fpath+=($p/share/zsh/site-functions $p/share/zsh/$ZSH_VERSION/functions) + done + + ${if cfg.enableCompletion then "autoload -U compinit && compinit" else ""} ''; }; @@ -161,7 +176,8 @@ in environment.etc."zinputrc".source = ./zinputrc; - environment.systemPackages = [ pkgs.zsh ]; + environment.systemPackages = [ pkgs.zsh ] + ++ optional cfg.enableCompletion pkgs.nix-zsh-completions; #users.defaultUserShell = mkDefault "/run/current-system/sw/bin/zsh";