Commit graph

52 commits

Author SHA1 Message Date
xeji
5fc8ebdda0
Merge pull request #45784 from oxij/pull/44720-shell-env-edited
nixos/shells: Avoid overriding the environment for other child shells
2018-09-06 20:30:34 +02:00
Graham Christensen
34d2ec7c09
nixos docs: give IDs to things 2018-09-01 16:20:49 -04:00
Jan Malakhovski
8952375b48 nixos/shells: fix indent everywhere
to comply with `doc/coding-conventions.xml`
2018-08-30 13:20:39 +00:00
Tor Hedin Brønner
d273db48c6 nixos/shells: avoid overriding the environment for child shells
A shared exported guard `__NIXOS_SET_ENVIRONMENT_DONE` is introduced that can
be used to prevent child shells from sourcing `system.build.setEnvironment`
the second time.

This fixes e.g. `nix run derivation` when run from e.g. ZSH through the console or
ssh. Before this Bash would resource the common environment resetting the `PATH`
environment variable.

We also export `system.build.setEnvironment` to `/etc/set-environment` making it
easy to reset the common environment with `. /etc/set-environment` when
needed and to grep for environment variables in `/etc` (which was the
motivation of #30418).

This reverts changes made in b00a3fc6fd
(the original #30418).
2018-08-30 13:20:39 +00:00
Jörg Thalheim
4e365aa453 nixos/zsh: make enableGlobalCompInit description less ambiguous 2018-08-27 10:43:31 +01:00
Tobias Happ
17876c2cf1 nixos/zsh: Adds enableGlobalCompInit option 2018-08-19 12:57:06 +02:00
Maximilian Bosch
bd40c92c2c
nixos/oh-my-zsh: add documentation
In the last year `programs.oh-my-zsh` gained more complexity and since
the introduction of features like `customPkgs` which builds a
`ZSH_CUSTOM` path from a sequence of derivation a documentation may be
fairly helpful to make the knowledge how to use the module and how to
package new ZSH plugins visible.

See https://github.com/NixOS/nixpkgs/pull/43282#issuecomment-410770432
2018-08-07 15:47:02 +02:00
Maximilian Bosch
39b85451de
nixos/oh-my-zsh: add customPkgs option to allow multiple derivations for ZSH_CUSTOM
If multiple third-party modules shall be used for `oh-my-zsh` it has to
be possible to create another env which composes all the packages.

Now it can be done like this:

```
{ pkgs, ... }:
{
  programs.zsh.enable = true;
  programs.zsh.ohMyZsh = {
    enable = true;
    customPkgs = with pkgs; [
      lambda-mod-zsh-theme
      nix-zsh-completions
    ];
    theme = "lambda-mod";
    plugins = [ "nix" ];
  };
}
```

Please keep in mind that this is not compatible with
`programs.zsh.ohMyZsh.custom`, only one of these options can be used
ATM.

Each package should store its outputs into
`$out/share/zsh/<output-name>`. Completions (and ZSH-only) extensions
should live in the `fpath` (`$out/share/zsh/site-functions`), plugins in
`.../plugins` and themes in `.../themes` (please refer to
fdb6bf6ed68c2f089ae6c729dfeaa3eddea2ce6a and 406d64aad162b3a4881747be4e24705fb5182573).

All scripts in `customPkgs` will be linked together using `linkFarm` to
provide a single directory for all scripts from all derivations in
`customPkgs` as suggested in https://github.com/NixOS/nixpkgs/pull/43282#issuecomment-410396365.
2018-08-05 23:01:18 +02:00
Maximilian Bosch
aa46b1ec0e nixos/autosuggestions: add module (#41397)
The `zsh-autosuggestions` package provides several configuration options
such as a different highlight style (like `fg=cyan` which is easier to
read).

With `rename.nix` the old `programs.zsh.enableAutosuggestions` is still
functional, but yields the following warning like this during evaluation:

```
trace: warning: The option `programs.zsh.enableAutosuggestions' defined in `<unknown-file>' has been renamed to `programs.zsh.autosuggestions.enable'.
```

The module provides the most common `zsh-autosuggestions` (highlight
style and strategy) as options that will be written into the interactive
shell init (`/etc/zshrc` by default). Further configuration options can
be declared using the `extraConfig` attr set:

```
{
  programs.zsh.autosuggestions.extraConfig = {
    "ZSH_AUTOSUGGEST_BUFFER_MAX_SIZE" = "buffer_size";
  };
}
```

A full list of available configuration options for `zsh-autosuggestions`
can be viewed here: https://github.com/zsh-users/zsh-autosuggestions/blob/v0.4.3/README.md
2018-06-10 23:08:50 +02:00
Matthew Bauer
2f68e86ce6 zsh: only do promptInit when TERM!=dumb
This allows tramp to be used correctly when default shell is zsh.
2018-05-31 12:34:16 -04:00
Gregor Kleen
effb02131c Revert "zsh: move setEnvironment stuff to zprofile"
This reverts commit 77a6cbb1c1.
2018-05-19 10:17:41 +02:00
jD91mZM2
77a6cbb1c1
zsh: move setEnvironment stuff to zprofile 2018-05-09 14:58:29 +02:00
Daiderd Jordan
db6fb869fb
Merge pull request #30418 from LnL7/inline-set-environment
nixos: inline set-environment for bash and zsh
2018-03-08 21:07:15 +01:00
Alexey Lebedeff
6d442efe99 zsh-autoenv: init at 2017-12-16 (#34932) 2018-02-14 06:31:59 +00:00
Matthieu Coudron
d9ebd0d35b zsh doc: precise environment.shellAliases 2018-01-22 10:40:23 +09:00
Robin Gloster
9bceb2b353
oh-my-zsh module: reword & fix manual build
docbook interpreted this as a tag and this sounded as if the option
defaulted to putting the cached directory into the nix store.

cc @Ma27 @fpletz
2018-01-16 21:02:54 +01:00
Maximilian Bosch
b55d4c0564 programs.zsh.ohMyZsh: add cacheDir option (#33150)
The default cache directory set by oh-my-zsh is $ohMyZsh/cache which
lives in the Nix store in our case. This causes issues with several
completion plugins provided by oh-my-zsh.
2018-01-16 17:29:46 +00:00
Pierre Chevalier
b3de3893d0 nixos/zsh: add the type for enableAutosuggestions option
Simply a small inconsistency I picked up when reading that file.

fixes #31795
2017-11-18 21:27:12 +00:00
Daiderd Jordan
b00a3fc6fd
nixos: inline set-environment for bash and zsh 2017-10-14 21:19:07 +02:00
WilliButz
7002ca7e1c nixos/zsh-syntax-highlighting: refactor 2017-10-09 23:30:10 +02:00
Franz Pletz
05c9a95d0e Merge pull request #28378 from Ma27/fix-zshrc-eval-order
programs.zsh: move evlauation of `${zshAliases}` after `cfg.interactiveShellInit`
2017-08-30 19:58:49 +02:00
Izorkin
520a43ced3 Fix zsh completions (#28550)
* Fix zsh completions

* Fix zsh completions (fix commit)

* Fix zsh completions (fix commit)
2017-08-25 09:34:21 +01:00
Maximilian Bosch
a73c721f3f
programs.zsh: move evlauation of ${zshAliases} after cfg.interactiveShellInit
`cfg.interactiveShellInit` is used by modules like
`programs.zsh.oh-my-zsh`. This means that all aliases defined in
`programs.zsh.shellAliases` might be overriden which is highly
unpredictable
2017-08-18 21:48:38 +02:00
Maximilian Bosch
95bf0cc1cb
programs.zsh.ohMyZsh: add package option to make package overrides on module-base easier 2017-07-20 08:54:10 +02:00
Yacine Hmito
1f70f3801b Make zshrc more predictable
Originially, `programs.zsh` sets default values for some
initialisation scripts.
Nix resolves the case of multiple values by concatenating them all.
It is however impossible to predict where the default script will be
inserted; but we never want the default value to override the
user-specified ones.
Now, it doesn't set default values; almost everything is hardcoded at
the begining of the file.
2017-07-06 22:43:05 +02:00
Peter Simons
003cd41310 zsh: extend default $fpath configured by NixOS to find "vendor-completions" 2017-06-26 10:50:52 +02:00
Daniel Fullmer
b8ebc60abd programs.zsh.syntaxHighlighting: Fix default value for patterns 2017-06-04 15:30:35 -04:00
Maximilian Bosch
c4e4071ed1
programs.zsh.syntax-highlighting: simplify enable option by using mkEnableOption 2017-05-31 21:52:05 +02:00
Maximilian Bosch
0925f79d56
programs.zsh.syntaxHighlighting: refactor to use attr sets rather than recursive lists for patterns
The idea has been described here: https://github.com/NixOS/nixpkgs/pull/25323#issuecomment-298677369
2017-05-31 21:52:04 +02:00
Maximilian Bosch
a549596700
programs.zsh: rename oh-my-zsh to ohMyZsh
This is intended to provide better consistency with other NixOS modules.
Please refer to mayflower/nixpkgs#21 for further information.
2017-05-25 10:51:26 +02:00
Willi Butz
4e4f7a2f66
zsh module: rename option syntax-highlighting
rename zsh-option "syntax-highlighting" -> "syntaxHighlighting"
2017-05-21 01:26:51 +02:00
Maximilian Bosch
f6e612bb8f
programs.zsh.syntax-highlighting: support custom highlighting patterns
see https://github.com/zsh-users/zsh-syntax-highlighting/blob/master/docs/highlighters/pattern.md
for further reference.
2017-05-01 20:58:56 +02:00
Maximilian Bosch
baa3b3efff
programs.zsh.syntax-highlighting: refactor highlighters option for proper validation
Right now the `programs.zsh.syntax-highlighting.highlighters` option
lacks appropriate validation which can cause confusing things when
mistyping a higlighter for zsh-syntax-highlighting.
2017-04-25 16:00:26 +02:00
Maximilian Bosch
0a12aafde4 zsh-syntax-highlighting: Add more configuration options and move to module (#25153)
* programs.zsh: factor zsh-syntax-highlighting out into its own module

* programs.zsh.syntax-highlighting: add `highlighters` option

* programs.zsh: document BC break introduced by moving zsh-syntax-completion into its own module
2017-04-23 21:17:31 +02:00
Maximilian Bosch
9ec64d2890 oh-my-zsh: add module (#25140)
* programs.zsh: add enableOhMyZsh option to automate setup of oh-my-zsh in global zshrc

* programs.zsh: make oh-my-zsh plugins configurable

* programs.zsh: add ohMyZshCustom option

* programs.zsh: add ohMyZshTheme option

* programs.zsh: applying minor fixes to evaluate expressions properly

* programs.zsh: fix ordering of oh-my-zsh config and execution

* programs.zsh: move all oh-my-zsh params into its own scope named programs.zsh.oh-my-zsh
2017-04-23 13:58:07 +02:00
gpyh
373e40736a Fix zshrc ordering
The content of programs.zsh.interactiveShellInit was
inserted too soon in the generated zshrc
This caused some settings related to autocompletion to be ignored
2017-01-11 22:03:27 +01:00
Yacine Hmito
f88e2fb5f1 zsh-autosuggestions: init at 0.3.3 (#21792)
Added a related `programs.zsh.enableAutosuggestions` option
2017-01-11 07:00:48 +01:00
Ignat Loskutov
9f34b5595e
zsh-syntax-highlighting: init at 0.4.1
fixes #19179
2016-10-03 17:49:04 +02:00
Jörg Thalheim
9049ab1a3b
zsh: do not export HISTFILE, HISTSIZE, SAVEHIST
Every interactive zsh sources /etc/zshrc (see STARTUP/SHUTDOWN FILES in zshautll(1))
Therefor every interactive zsh process will respect the content of these variables.
Using `export` will also lead to child processes inheriting this value.
This leads to problems, if other interactive shells are spawned such as bash,
because they use an incomptabible history format (without timestamps).
There seems to be also cases, where the local HISTSIZE in ~/.zshrc is
not sourced but /etc/zshrc, which leads to history truncation in other shells.
2016-09-27 22:19:53 +02:00
Rok Garbas
095c7aefe1
nixos/manual: mentioning other zsh options at program.zsh.enable
fixes #13224
2016-09-04 16:31:29 +02:00
Roger Qiu
c0ff64c2e8 zsh: Added HELPDIR variable for interactive shells, as the help directory is distribution specific, and will be useful for using run-help 2016-07-29 20:36:06 +10:00
makefu
ed83b8a61c programs.zsh: allow override of history defaults 2016-01-16 16:55:30 +01:00
Spencer Whitt
bf14849534 zsh module: add /share/zsh to pathsToLink
Needed for completion functions
abbradar: replaced optionals with optional
2015-11-26 04:33:07 +03:00
Spencer Whitt
ff58711bda zsh module: add enableCompletion option 2015-11-25 10:32:58 -05:00
Arseniy Seroka
4f596fb93f Revert "zsh: profile-relative functions path"
This reverts commit 766207ca1d.

We need to solve the problem with `environment.profileRelativeEnvVars`.
The best workaround is to make profileRelativeEnvVars prepend paths.
2015-01-10 22:11:13 +03:00
Jan Malakhovski
b6646f7ba7 nixos: make zsh use fcntl for locking history files by default
Without this zsh creates and then unlinks .lock files at each interactive
input line, which is inhumane with respect to disk.
2015-01-07 15:43:01 +00:00
Kirill Elagin
766207ca1d zsh: profile-relative functions path
This is needed mostly for autocompletion.
2015-01-04 02:02:59 +03:00
Eelco Dolstra
956f464fff Remove obsolete zsh help text 2014-04-30 11:26:39 +02:00
Eelco Dolstra
90dac235bb Remove the option ‘programs.bash.enable’
NixOS has a pervasive dependency on bash. For instance, the X11
session script sources /etc/profile to get a reasonable
environment. Thus we should not provide an option to disable bash.

Also, enabling zsh no longer sets ‘users.defaultUserShell’ to zsh, to
prevent a collision with bash's definition of the same
option. (Changing the default shell is also something that should be
left to the user.)
2014-04-29 19:00:39 +02:00
Eelco Dolstra
29027fd1e1 Rewrite ‘with pkgs.lib’ -> ‘with lib’
Using pkgs.lib on the spine of module evaluation is problematic
because the pkgs argument depends on the result of module
evaluation. To prevent an infinite recursion, pkgs and some of the
modules are evaluated twice, which is inefficient. Using ‘with lib’
prevents this problem.
2014-04-14 16:26:48 +02:00