Buildout recipe for creating Nix expressions from eggs list
Project description
collective.recipe.nix
This is an experimental buildout recipe for creating nix expression from a buildout eggs list. This is work in progress. Please, contribute.
Example of usage
At first, define ./default.nix with buildout:
with import <nixpkgs> {}; { myEnv = stdenv.mkDerivation { name = "myEnv"; buildInputs = [ pythonPackages.readline pythonPackages.buildout ]; shellHook = '' export SSL_CERT_FILE=~/.nix-profile/etc/ca-bundle.crt ''; }; }
And example ./buildout.cfg:
[buildout]
extends = https://dist.plone.org/release/4-latest/versions.cfg
parts =
plone
zest.releaser
versions = versions
[instance]
recipe = plone.recipe.zope2instance
eggs = Plone
user = admin:admin
[plone]
recipe = collective.recipe.nix
eggs =
${instance:eggs}
plone.recipe.zope2instance
[zest.releaser]
recipe = collective.recipe.nix
eggs = zest.releaser
[versions]
zc.buildout =
setuptools =
Run the buildout:
$ nix-shell --run buildout
Now you should be able to run zest.releaser with:
$ nix-shell zest.releaser.nix --run fullrelease
And launching python with all Plone dependencies (after removing buildout created site.py to remove references from buildout installed eggs) with:
$ rm -f parts/instance/site.py parts/instance/site.pyc
$ nix-shell plone.nix --run python
And Plone could be started by entering the following lines into the interpreter:
import plone.recipe.zope2instance.ctl
plone.recipe.zope2instance.ctl.main(['-C', 'parts/instance/etc/zope.conf', 'fg'])
Advanced configuration
Adding other buildInputs:
[plone]
...
build-inputs =
redis
Mapping buildInputs for generated Python derivations:
[plone]
...
build-inputs =
dataflake.fakeldap=pythonPackages."setuptools-git"
or:
[plone]
...
build-inputs =
plone-inputs
[plone-inputs]
dataflake.fakeldap = pythonPackages."setuptools-git"
Replacing otherwise generated Python derivations with existing nixpkgs derivations:
[plone]
...
nixpkgs =
python-ldap=pythonPackages.ldap
or:
[plone]
...
nixpkgs =
plone-nixpkgs
[plone-nixpkgs]
python-ldap = pythonPackages.ldap
Adding URLs for packages not available at PyPI:
[plone]
...
urls =
Plone=https://example.com/Plone-4.3.6.zip#md5=c370c0c8eace1081ec5b057b2c4149b7
or:
[plone]
...
urls =
plone-urls
[plone-urls]
Plone = https://example.com/Plone-4.3.6.zip#md5=c370c0c8eace1081ec5b057b2c4149b7
Changelog
0.8.0 (2015-07-10)
Add support for comma separated list for inline build-inputs, propagated-build-inputs and nixpkgs [datakurre]
0.7.0 (2015-07-10)
Add option to inject propagatedBuildInputs to enable extra package-dependent additional features [datakurre]
0.6.0 (2015-07-10)
Add to create installable python package expression for each listed egg [datakurre]
0.5.0 (2015-07-09)
Fix to resolve cyclic dependencies by letting the first seen dependency win and persist into resulting expression [datakurre]
0.4.0 (2015-07-09)
Change to produce {name}-env.nix instead of {name}.env.nix as buildable derivations [datakurre]
0.3.0 (2015-07-08)
Change resulting derivation to be buildEnv with python.buildEnv to make it also nix-buildable [datakurre]
0.2.0 (2015-07-08)
Add buildout-based configuration [datakurre]
Back to development: 0.1.2 [datakurre]
0.1.1 (2015-07-08)
Add support for plone.app.ldap [datakurre]
0.1.0 (2015-07-08)
Proof of concept release.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.