[Nix-dev] Garbled man pages/incomplete environment

Jeffrey David Johnson jefdaj at gmail.com
Sun Jul 5 19:51:43 CEST 2015


Thanks, you're right that was it! I put the mkForce in while trying to
set NIX_PATH, then forgot to remove it after moving that to
interactiveShellInit instead. Man pages/environment variables back to
normal.

That reminds me though, is there a way to force NIX_PATH while leaving
the rest in place? I tried:

{ config, ... }:
{ environment.variables = config.environment.variables // {
    # my other vars here
    NIX_PATH = "/git/hub/nixcfg";
  };
}

But it causes infinite recursion. I imagine there's a special hook
or override pattern for that?
Jeff

On Sat, 4 Jul 2015 18:20:20 -0700
James Cook <james.cook at utoronto.ca> wrote:

> On 4 July 2015 at 09:24, Jeffrey David Johnson <jefdaj at gmail.com> wrote:
> > I'm having the same issue described here on the Gentoo forums:
> >
> > https://forums.gentoo.org/viewtopic-t-670013.html
> >
> > Man pages are hard to read because they're full of control characters. For example:
> >
> > NIXOS-REBUILD(8)              NixOS Reference Pages              NIXOS-REBUILD(8)
> >
> > ESC[1mNAMEESC[0m
> >        nixos-rebuild - reconfigure a NixOS machine
> >
> > ESC[1mSYNOPSISESC[0m
> >        ESC[1mnixos-rebuild ESC[22m{ESC[1mswitch ESC[22m| ESC[1mboot ESC[22m| ESC[1mtest
> > ESC[22m| ESC[1mbuild ESC[22m| ESC[1mdry-build ESC[22m| ESC[1mdry-activate ESC[22m|
> > ...
> >
> > I expect it's a problem with my environment variables, so
> > here's my profile.nix which I import into configuration.nix:
> >
> > with import <mypkgs>;
> >
> > {
> >   programs.bash = {
> >     enableCompletion = true;
> >     # promptInit = "PS1=\"# \"";
> >   };
> >
> >   # replaces traditional xinitrc
> >   services.xserver.displayManager.sessionCommands = ''
> >     export EDITOR=qvim # why no gvim?
> >     xsetroot -cursor_name left_ptr &
> >     [[ -a ~/.fehbg ]] && eval $(cat ~/.fehbg)
> >     unclutter -idle 1 &
> >     eval "$(ssh-agent -s)" &
> >   '';
> >
> >   environment.variables = lib.mkForce rec {
> >     EDITOR   = "vim" ;
> >     TERM     = TERMINAL;
> >     TERMINAL = "xfce4-terminal";
> >   };
> >
> >   # this gets reset if in environment.variables for some reason
> >   environment.interactiveShellInit = ''
> >     export NIX_PATH=/git/hub/nixcfg
> >   '';
> >
> >   # TODO why can't nix-env find things on the regular NIX_PATH?
> >   environment.shellAliases = {
> >     "nix-env" = "nix-env -f ${<mypkgs>}";
> >   };
> > }
> >
> > As you can see I also have issues setting up NIX_PATH.
> > The current kludgy solution is working OK, but if you know
> > how to clean it up please mention that too! My worry is
> > that I've deleted all the environment variables not
> > mentioned here including some important ones, and man
> > pages are just the first thing I noticed.
> >
> > Thanks
> > Jeff
> 
> The only thing that comes to mind: environment.varibles = lib.mkForce
> ... looks suspicious to me. Does it work without the mkForce?
> 
> (If environment.variables is like other configuration variables I've
> met, then mkForce means discard whatever the defaults are, and leaving
> out mkForce means append the values you specify to whatever the
> defaults are.)
> 
> You could always start commenting out parts of the configuration and
> observing the changes, but of course that's tedious. Maybe using
> nixos-rebuild build-vm could help.
> 
> James


More information about the nix-dev mailing list