Dependency management
Overview
We use the Nix package manager to handle our dependencies. In general we use the packages out of the package collection nixpkgs. For frequently changing dependencies for Python and JavaScript we use the tools which are described in this section to generate the needed Nix derivations.
Python dependencies
We use the tool pip2nix to generate the Nix derivations for our Python dependencies.
Generating the dependencies should be done with the following command:
pip2nix generate --license
Note
License extraction support is still experimental, use the version from the following pull request: https://github.com/ktosiek/pip2nix/pull/30
Node dependencies
After adding new dependencies via npm install --save, use node2nix to update the corresponding Nix derivations:
cd pkgs node2nix --input ../package.json \ -o node-packages.nix \ -e node-env.nix \ -c node-default.nix \ -d --flatten
Bower dependencies
Frontend dependencies are managed based on bower, with bower2nix a tool exists which can generate the needed Nix derivations:
bower2nix bower.json pkgs/bower-packages.nix