[Nix-dev] Getting started with cloned nixpkgs: multiple errors and other questions

Kirill Elagin kirelagin at gmail.com
Thu Mar 5 09:00:38 CET 2015


On Wed, Mar 4, 2015 at 6:12 PM Jesse Haber-Kucharsky <
jesse at haberkucharsky.com> wrote:

> Thank you all very kindly for the information!
>
> Based on your responses, this is my understanding on what I should do for
> a local clone of nixpkgs:
>
> - Set NIX_PATH="nixpkgs=/home/jhaberku/src/nixpkgs/pkgs"
> - Update ~/.nix-defexpr to point to the clone. Luca, your pill #15
> references that you will describe how to do this in the next edition (#16),
> but I didn't see it there. I saw on
> http://fluffynukeit.com/installing-essential-software-in-nixos/ that one
> can just delete the contents of ~/.nix-defexpr and create a link to the
> local nixpkgs:
>
>   $ cd ~/.nix-defexpr && rm * && ln -s ~/src/nixpkgs nixpkgs
>
> Is that right?
>

Right.

Also, there is really no reason to delete everything. It’s enough to create
this link you mentioned and remove the nixpkgs channel by `nix-channel
--remove nixpkgs`.
You can even add it with a different name then (e.g. `nix-channel --add
https://nixos.org/channels/nixpkgs-unstable nixpkgs-unstable`), so that
you’ll be able to install packages from the channel later by e.g. `nix-env
-iA nixpkgs-unstable.foo`.

> If you are fine with building everything from source, there shouldn’t be
> anything wrong. That’s actually the purpose of Nix/NixOS.
>
> Great. :-)
>
> Best,
> --
> Jesse
>
> On Wed, Mar 4, 2015 at 1:03 AM, Kirill Elagin <kirelagin at gmail.com> wrote:
>
>> On Tue, Mar 3, 2015 at 5:09 PM Jesse Haber-Kucharsky <
>> jesse at 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 at lists.science.uu.nl
>>> http://lists.science.uu.nl/mailman/listinfo/nix-dev
>>>
>>
> _______________________________________________
> nix-dev mailing list
> nix-dev at lists.science.uu.nl
> http://lists.science.uu.nl/mailman/listinfo/nix-dev
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.science.uu.nl/pipermail/nix-dev/attachments/20150305/d7fb61a2/attachment-0001.html 


More information about the nix-dev mailing list