diff --git a/docs/contributing/contributing.rst b/docs/contributing/contributing.rst --- a/docs/contributing/contributing.rst +++ b/docs/contributing/contributing.rst @@ -18,3 +18,4 @@ Welcome to the contribution guides and d db-schema dev-settings api + dependencies diff --git a/docs/contributing/dependencies.rst b/docs/contributing/dependencies.rst new file mode 100644 --- /dev/null +++ b/docs/contributing/dependencies.rst @@ -0,0 +1,60 @@ + +======================= + 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: + +.. code:: shell + + 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: + +.. code:: shell + + 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: + +.. code:: shell + + bower2nix bower.json pkgs/bower-packages.nix