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.
The minimal buildout part should include recipe and eggs:
[releaser]
recipe = collective.recipe.nix
eggs = zest.releaser[recommended]
The recipe generates three kind of expressions:
mkDerivation based [name].nix usable with nix-shell
buildEnv based [name]-env.nix usable with nix-build
buildPythonPackage based [name]-[package].nix usable with nix-env -i -f
Recipe options
- eggs
list of packages to generate expressions for
- name
string to define the used based filename in generated outputs (defaults to part name)
- prefix
string to set prefix (or path) for generated outputs (defaults to working directory)
- outputs
list of full generated expression filenames to filter outputs to be generated (defaults to nothing to generate all)
- allow-from-cache
boolean (true) to allow generated expression to use package from buildout download cache (defaults to false)
- build-inputs
list of additional build-inputs from nixpkgs for generated expressions (to be available in nix-shell environment) or list of package=nixpkgsPackage mappings to inject build-inputs for each package’s buildPythonPackage-expression
- propagated-build-inputs
list of package=other.package mappings to inject additional requirements for packages (usually to enable some additional features)
- nixpkgs
list of package=pythonPackages.package mappings to use existing packages from nixpkgs instead of generating custom buildPythonPackage (useful with package like Pillow, which need additional care to get built properly)
- urls
list of package=url#md5=hash mappings to explicitly define package download URL and MD5 checksum for cases where the recipe fails to resolve it automatically
Example of use
At first, define ./default.nix with buildout:
with import <nixpkgs> {}; { myEnv = stdenv.mkDerivation { name = "myEnv"; buildInputs = [ pythonPackages.buildout ]; shellHook = '' export SSL_CERT_FILE=~/.nix-profile/etc/ca-bundle.crt ''; }; }
And example ./buildout.cfg:
[buildout]
parts = releaser
[releaser]
recipe = collective.recipe.nix
eggs = zest.releaser[recommended]
Run the buildout:
$ nix-shell --run buildout
Now you should be able to run zest.releaser with recommended plugins with:
$ nix-shell releaser.nix --run fullrelease
Or install zest.releaser into your current Nix profile with:
$ nix-env -i -f releaser-zest_releaser.nix
Changelog
0.11.0 (2015-07-23)
Change package lookup to use setuptools package index [datakurre]
Add allow-from-cache option to distributions from from download-cache [datakurre]
Add prefix option to control output paths [datakurre]
Add outputs option to filter generated outputs [datakurre]
Fix issue where nixpkgs mapping lookup failed because of non-normalize preconfigured mappings [datakurre]
0.10.1 (2015-07-23)
Fix typo [datakurre]
0.10.0 (2015-07-22)
Fix issue where nixpkgs mappings lookup failed because of non-normalized lookup [datakurre]
Add support for name option to change the base name for created expressions [datakurre]
0.9.3 (2015-07-22)
Fix a few more issues where package was not found at PyPI [datakurre]
0.9.2 (2015-07-12)
Fix a few issues where package was not found at PyPI [datakurre]
0.9.1 (2015-07-11)
Fix issue where package requirement in wrong case caused error
Fix issue where buildout propagated-build-inputs did not support cyclic requirements (required for injecting ‘add-on’ packages) [datakurre]
0.9.0 (2015-07-10)
Refactor to handle properly setuptools requires extras [datakurre]
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.
Source Distribution
Hashes for collective.recipe.nix-0.11.0.tar.gz
Algorithm | Hash digest | |
---|---|---|
SHA256 | c1685c567c3538309cd3e1f29d811327867ab76677bdc236befd5ca86be290d1 |
|
MD5 | 6d72881fb78ce03afb579d43c0444767 |
|
BLAKE2b-256 | 3533f568050181891264dad16ec43b60ae60cafb325e31707548492009dbafea |