On Tue, Mar 3, 2015 at 5:09 PM Jesse Haber-Kucharsky <
je...@haberkucharsky.com> wrote:

> I cloned the master branch of github.com/nixos/nixpkgs and set my
> NIX_PATH to point exclusively to the local checkout with "export
> NIX_PATH=/home/jhaberku/src" (nixpkgs exist in the "nixpkgs" directory in
> that location).
>

This way of seting `NIX_PATH` is somewhat outdated as it is not very useful
nowadays, when nixpkgs and nixos are merged into one repo (they used to be
in different repos). Most of the time you really want to use different
syntax: `NIX_PATH=nixpkgs=/home/jhaberku/src/nixpkgs/pkgs` (note that
pointing it to `pkgs` inside the repo is crucial).


> Now, aside from nix complaining about unfree packages and packages marked
> as bad (which I set in my ~/.nixpkgs/config.nix file as directed), I get
> this error all the time:
>
>  $ NIX_PATH=/home/jhaberku/src nix-env -qa firefox
> error: attribute ‘interpreterName’ missing, at
> "/home/jhaberku/src/nixpkgs/pkgs/development/web/nodejs/build-node-package.nix":7:16
>

This part of Nix is a little bit complicated (and I will also take it one
step furrther and say “messy”).
`NIX_PATH` actually has almost no effect on `nix-env` as by default (unless
overriden with `-f`) it takes the expression to evaluate from
`~/.nix-defexpr` (see the “FILES” section of `man nix-env`). So unless you
use `-f` it uses `nixpkgs` from the channel you are using.
But nixpkgs themselves occasionally do `import <nixpkgs>` which _is_
influenced by `NIX_PATH` (see the “ENVIRONMENT VARIABLES” section of `man
nix-env`).
So my best guess is that it is this mixture of different versions of
nixpkgs that causes problems.

So the rule of thumb is to use `-f` with `nix-env` whenever you want to
test something in your local checkout. For some reason I never had problems
using just `-f` without overriding `NIX_PATH` (even though, I believe this
version conflict still takes place but in the opposite direction).


> I checkout out a version of nixpkgs from many days earlier, and had no
> such problem. This leads to me questions:
>
> - Was I doing things the right way? If so, is this just a bug that slipped
> through the radar, or is the master branch regularly broken like this? If
> this is normal for master, how does anyone get anything done if nix-env
> refuses to do anything when a package is broken? If it's not a bug (and an
> error in my configuration), what can I do to fix it?
>

Actually `nix-env` doesn’t refuse to work with broken packages if
everything is set up properly. Tons of errors about broken packages and
other weird stuff is usually a result of it being pointed to a wrong
expression (likely, caused by incorrect `NIX_PATH` in your particular case).


> - I'm running my NixOS installation from the nixos-unstable channel and I
> have some system-level packages specified in /etc/nixos/configuration.nix.
> If I somehow manage to get the master branch of nixpkgs actually working,
> is there any reason why I shouldn't install all my user-level packages from
> my local clone of master with "nix-env -i"? In other words, is it okay that
> the system-wide packages are from a different channel than the user-level
> packages?
>

If you are fine with building everything from source, there shouldn’t be
anything wrong. That’s actually the purpose of Nix/NixOS.


>
> Thanks
> _______________________________________________
> nix-dev mailing list
> nix-dev@lists.science.uu.nl
> http://lists.science.uu.nl/mailman/listinfo/nix-dev
>
_______________________________________________
nix-dev mailing list
nix-dev@lists.science.uu.nl
http://lists.science.uu.nl/mailman/listinfo/nix-dev

Reply via email to