Commit graph

91 commits

Author SHA1 Message Date
Domen Kožar
5384b04ead bash: fix broken completion 2013-09-27 01:15:22 +02:00
Eelco Dolstra
cfd20debfb Fix bashrc regression
Interactive non-login shells should not source /etc/profile, otherwise
environment variables set by the user will get clobbered.  For
example:

  $ export PERL5LIB=/foo
  $ bash
  $ echo $PERL5LIB
  /home/eelco/.nix-profile/lib/perl5/site_perl:/nix/var/nix/profiles/default/lib/perl5/site_perl:/run/current-system/sw/lib/perl5/site_perl:/home/eelco/.nix-profile/lib/perl5/site_perl:/nix/var/nix/profiles/default/lib/perl5/site_perl:/run/current-system/sw/lib/perl5/site_perl
2013-09-25 00:25:22 +02:00
Eelco Dolstra
b933b15d72 Don't generate /etc/environment
/etc/environment, if it exists, should be a list of NAME=VALUE pairs,
not a shell script.  See the pam_env manpage.
2013-09-24 11:01:55 +02:00
Jan Malakhovski
b3f4040512 Radically change the way NixOS handles environment variables and make it possible not to use Bash as the default interactive shell.
This change does two things:

* "NixOSizes" environment variables generation. This allows some more
  error-checking and opens possibilities for a modular environment
  configuration. From now on the most of environment variables are
  generated directly by the nix code. Generating sh code that
  generates environment variables is left in a few places where
  nontrivial access to a local environment state is needed.
* By doing the first change this patch untangles bash from the
  environment configuration and makes it trivial to add a support for
  other non bash-compatible shells.

Now to the sad part. This change is quite large (and I'm not sure it's
possible to split it) and yet is not quite complete, it needs some
changes to nixpkgs to be perfect.
See !!! comments in modules/config/shells-environment.nix.

Main principle behind this change is "change environment generation
and nothing else". In particular, shell configuration principles stay
exactly the same as before.
2013-09-23 16:55:25 +00:00
Bjørn Forsman
0192c02720 /etc/profile: try all nix profiles for ASPELL_CONF
Aspell can only handle one dict-dir directive and currently we hardocde
that to
  ASPELL_CONF="dict-dir $HOME/.nix-profile/lib/aspell"

This means that aspell doesn't work if it is installed to the system or
default nix profile -- it only works in the user profile.

With this change, aspell can be installed to any of the nix profiles. If
it is installed in more than one profile, the most "local" profile wins
(i.e. sysadmin can set up a default, users can override it).
2013-09-14 13:05:11 +02:00
Eelco Dolstra
17457297cb Update all legacy-style modules
I.e., modules that use "require = [options]".  Nowadays that should be
written as

  {
    options = { ... };
    config = { ... };
  };

Also, use "imports" instead of "require" in places where we actually
import another module.
2013-09-04 13:05:09 +02:00
Eelco Dolstra
b22e735d2b "with pkgs.lib.types; X" -> types.X 2013-08-15 13:21:49 +02:00
Marc Weber
2fcd1195e6 bash: change shell script option types from string to lines
installation-cd-base: export mountPoint=/mnt. This doesn't change the default behavior, but an explicit
mount point specification is cleaner.
2013-08-15 09:28:44 +03:00
Ivan Kozik
390fdb3e60 Fix typos, especially those that end up in the NixOS manual 2013-08-10 21:07:13 +00:00
Eelco Dolstra
24a44c98d2 bash: Disable hashing of command lookups in interactive shells
This just confuses people when (say) using multiple profiles.
Performance benefits for interactive shells are likely to be very
small anyway.
2013-07-31 14:55:24 +02:00
Eelco Dolstra
0f6e9ba946 Unconditionally add ~/bin to $PATH 2013-06-19 13:56:05 +02:00
Eelco Dolstra
0277126699 Return exit code 127 if a command is not found 2013-05-15 12:52:15 +02:00
Peter Simons
e627d309fd bash-completion: support the "$out/share/bash-completion" location used by modern packages 2013-04-11 00:48:58 +02:00
Eelco Dolstra
1568b6858d Use programs.sqlite from the NixOS channel 2013-03-25 14:14:55 +01:00
Peter Simons
c5ba924143 Revert "Add /run/nss to LD_LIBRARY_PATH".
Commit c948494342 exports too many shared
objects into the LD_LIBRARY_PATH, which causes problems with mplayer.
2013-03-21 11:25:25 +01:00
Rickard Nilsson
c948494342 Add /run/nss to LD_LIBRARY_PATH
This fixes issues with glibc-binaries (getent for example) that can't
find NSS modules that are not distributed with glibc.

See this discussion:
http://comments.gmane.org/gmane.linux.distributions.nixos/9940
2013-03-07 16:54:42 +01:00
Eelco Dolstra
b89f941b20 Provide missing command suggestions, Ubuntu style
If the user tries to run a program that doesn't exist from Bash, the
program name is looked up in a database that maps to Nix package
names.  If it is found, we print out a message like:

  $ pdflatex
  The program ‘pdflatex’ is currently not installed. It is provided by
  several packages. You can install it by typing one of the following:
    nix-env -i tetex
    nix-env -i texlive-core

If the environment variable $NIX_AUTO_INSTALL is set, the command is
installed and executed automatically:

  $ hello --version
  The program ‘hello’ is currently not installed. It is provided by
  the package ‘hello’, which I will now install for you.
  installing `hello-2.8'
  hello (GNU hello) 2.8
  Copyright (C) 2011 Free Software Foundation, Inc. ...

To use this, you must currently manually put the SQLite programs
database in /var/lib/nixos/programs.sqlite.  In the future, this file
should be provided as part of the NixOS channel so it gets updated
automatically.  To get a test version:

  $ curl http://nixos.org/~eelco/programs.sqlite.xz | xz -d > /var/lib/nixos/programs.sqlite
2013-01-30 15:00:59 +01:00
Eelco Dolstra
2f97304833 Add an option ‘environment.interactiveShellInit’
This is like ‘environment.shellInit’, but only for interactive shells.
2013-01-30 14:05:53 +01:00
Eelco Dolstra
b1da38f564 Merge remote-tracking branch 'origin/master' into systemd 2012-11-30 16:12:04 +01:00
Rickard Nilsson
a22c362155 Add option for specifying shell aliases, environment.shellAliases. 2012-11-20 16:33:29 +01:00
Eelco Dolstra
08e6c0cb7c Update channel URLs 2012-11-12 09:19:25 +01:00
Peter Simons
622a652411 Add option "environment.binsh" to configure the shell executable used to create the global /bin/sh symlink. 2012-11-11 21:46:25 +01:00
Peter Simons
04ba5de70a modules/programs/bash/bash.nix: cosmetic indention fix 2012-11-11 21:29:33 +01:00
Rob Vermaas
88a9d7a9ca Added environment.promptInit to allow PS1 overriding. Would be nicer to be able to allow overriding via shellInit, however could not get that to work. For now this is a temporary solution which will not break anything. 2012-10-30 13:33:37 +01:00
Peter Simons
56f90da276 modules/programs/bash: '/run/current-system/sw' is already a part of $NIX_PROFILES 2012-10-16 19:08:10 +02:00
Peter Simons
6a9b855412 modules/programs/bash: '/run/current-system/sw' is already a part of $NIX_PROFILES 2012-10-16 19:07:19 +02:00
Peter Simons
04a8642b4b modules/programs/bash: clean-up variables used in initialization of bash-completion 2012-10-16 18:41:45 +02:00
Peter Simons
efc104c4c8 modules/programs/bash: improve bash completion support
The new configuration.nix option 'environment.enableBashCompletion'
determines whether bash completion is automatically enabled system-wide
for all interactive shells or not. The default setting is 'off'.
2012-10-16 18:41:45 +02:00
Peter Simons
c7fb0defe6 modules/programs/bash: clean-up variables used in initialization of bash-completion 2012-10-16 18:41:20 +02:00
Peter Simons
4ca0617f4a modules/programs/bash: improve bash completion support
The new configuration.nix option 'environment.enableBashCompletion'
determines whether bash completion is automatically enabled system-wide
for all interactive shells or not. The default setting is 'off'.
2012-10-16 18:23:28 +02:00
Eelco Dolstra
2cf9bb929b Add a ‘restart’ alias 2012-10-11 16:18:34 -04:00
Eelco Dolstra
08f14b33c1 Merge branch 'master' of github.com:NixOS/nixos into systemd 2012-08-20 11:27:38 -04:00
Peter Simons
16713db4e2 modules/programs/bash/bashrc.sh: adapt bash completion for version 2.0 of the package 2012-08-20 16:37:14 +02:00
Eelco Dolstra
9dce4bd9c5 Provide start/stop/status aliases as a convenience for Upstart users 2012-08-14 17:22:04 -04:00
Eelco Dolstra
73532c3855 Global replace /var/run/current-system -> /run/current-system 2012-07-16 11:34:21 -04:00
Eelco Dolstra
f1a99bd914 * Subscribe the root user to the NixOS channel by default.
svn path=/nixos/trunk/; revision=33883
2012-04-22 22:43:57 +00:00
Eelco Dolstra
6abf3c8a97 * Change $NIXPKGS_CONFIG to a better location (/etc/nix instead of
/nix/etc).  Not sure the default profile should be setting this at
  all though.

svn path=/nixos/trunk/; revision=33824
2012-04-18 10:59:57 +00:00
Eelco Dolstra
7ba5881146 * Don't install the "nixpkgs_sys" symlink in ~/.nix-defexpr anymore.
Note that for attribute-based nix-env installations, the NixOS
  channel contains Nixpkgs as its "pkgs" attribute, so

    $ nix-env -iA nixos.pkgs.foo

  will work instead of the old

    $ nix-env -iA nixpkgs_sys.foo
    
* Fix the path to root's channels installed in ~/.nix-defexpr.

svn path=/nixos/trunk/; revision=33823
2012-04-18 10:58:33 +00:00
Eelco Dolstra
a193fe4f1d * Add root's NixOS channel to $NIX_PATH. Will remove
/etc/nixos/{nixos,nixpkgs,services} eventually.

svn path=/nixos/trunk/; revision=33822
2012-04-18 10:34:39 +00:00
Eelco Dolstra
6f03065dce * Move the setting of $MODULE_DIR to modprobe.nix.
* Add a slash to the end of $MODULE_DIR, as expected by depmod.  (Not
  that running depmod from the command line is all that useful, since
  you can't use it to update the tree in the Nix store.  But at least
  commands like "depmod -n" work now.)  Reported by Kirill Elagin on
  IRC.

svn path=/nixos/trunk/; revision=33312
2012-03-20 22:02:27 +00:00
Eelco Dolstra
dde8453a09 * Initialise $LOCALE_ARCHIVE earlier in /etc/profile to prevent the
warning

    -bash: warning: setlocale: LC_TIME: cannot change locale (en_GB.UTF8): No such file or directory

  when $LC_TIME is set in environment.shellInit.

svn path=/nixos/trunk/; revision=33248
2012-03-19 02:53:58 +00:00
Eelco Dolstra
bcbe2dce4c * Don't source /etc/profile in interactive non-login shells, unless it
wasn't sourced in a parent shell (as determined by the environment
  variable __ETC_PROFILE_DONE).  This prevents overriden values of
  environment variables such as $PATH from being clobbered in
  subshells.
* Move all aliases to /etc/bashrc (since those are for interactive
  use).

svn path=/nixos/trunk/; revision=33246
2012-03-19 02:35:17 +00:00
Eelco Dolstra
e97817b577 * Atomically replace the /bin/sh symlink; otherwise there is a time
window in which /bin/sh is missing.  This can cause concurrently
  running programs to fail (e.g. Hydra jobs =>
  http://hydra.nixos.org/build/2267831).  You'd think the odds of this
  are very low, but they're not.

svn path=/nixos/trunk/; revision=32901
2012-03-08 16:08:03 +00:00
Eelco Dolstra
29d84af677 * Remove the use of the NIXPKGS and NIXOS environment variables.
Instead use $NIX_PATH.  NIXOS_CONFIG is still supported.

svn path=/nixos/trunk/; revision=32739
2012-03-02 12:38:22 +00:00
Florian Friesdorf
66f82c043e Revert "Revert "add ~/bin to PATH if it exists""
sorry m(

svn path=/nixos/trunk/; revision=31246
2012-01-03 17:29:20 +00:00
Florian Friesdorf
68e9f2e09b Revert "add ~/bin to PATH if it exists"
This reverts commit 73bda7c4575b5664d54340db95fec2fa759b6f28.

svn path=/nixos/trunk/; revision=31243
2012-01-03 17:11:21 +00:00
Florian Friesdorf
7b7976ac01 export NIX_PROFILES and NIX_USER_PROFILE_DIR
svn path=/nixos/trunk/; revision=31242
2012-01-03 17:11:19 +00:00
Florian Friesdorf
b4765401af add ~/bin to PATH if it exists
svn path=/nixos/trunk/; revision=31235
2012-01-03 14:36:05 +00:00
Peter Simons
8eca4db54a /etc/profile: do not add ~/bin to $PATH in system-wide init file
Users who want a user-specific bin directory to override system paths should
configure that in their user-specific ~/.bashrc, not in the system-wide init
file. The global file shouldn't add directories from user homes to $PATH
without knowing whether those actually exist or whether the users even want
them in $PATH. On my system, for example, there is no ~/bin, so I don't want my
$PATH to look for one. Removing an erroneous entry from $PATH is cumbersome,
but adding one is easy, so it feels better to err on the side of caution.

svn path=/nixos/trunk/; revision=31188
2011-12-31 12:56:45 +00:00
Florian Friesdorf
ea121d0ff9 Revert "EMACSLOADPATH in /etc/profile"
svn path=/nixos/trunk/; revision=31187
2011-12-31 06:24:12 +00:00