On Wed, Mar 4, 2015 at 6:12 PM Jesse Haber-Kucharsky < [email protected]> 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 <[email protected]> wrote: > >> On Tue, Mar 3, 2015 at 5:09 PM Jesse Haber-Kucharsky < >> [email protected]> 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 >>> [email protected] >>> http://lists.science.uu.nl/mailman/listinfo/nix-dev >>> >> > _______________________________________________ > nix-dev mailing list > [email protected] > http://lists.science.uu.nl/mailman/listinfo/nix-dev >
_______________________________________________ nix-dev mailing list [email protected] http://lists.science.uu.nl/mailman/listinfo/nix-dev
