poetry2nix turns Poetry projects into Nix derivations without the need to actually write Nix expressions. It does so by parsing pyproject.toml
and poetry.lock
and converting them to Nix derivations on the fly.
poetry2nix has 2 main use-cases:
mkPoetryApplication
: For building poetry based Python applications.mkPoetryEnv
: For creating a python environment with the dependencies of apoetry.lock
file.
Whenever possible poetry2nix uses source archives to install Python dependencies. Some packages however only provide binaries in
the form of .whl
files. If no source archives are provided, poetry2nix
tries to select an appropriate manylinux
binary and
automatically adds the required dependencies to the python package. Note that for manylinux packages to work you need to use
very recent nixpkgs.
poetry2nix.mkPoetryApplication {
src = lib.cleanSource ./.;
pyproject = ./pyproject.toml;
poetrylock = ./poetry.lock;
python = python3;
}
See ./pkgs/poetry/default.nix for a working example.
poetry2nix.mkPoetryEnv {
poetrylock = ./poetry.lock;
python = python3;
}
The above expression returns a package with a python interpreter and all packages specified
in the poetry.lock
lock file. See ./tests/env/default.nix for a working example.
Contributions to this project are welcome in the form of GitHub PRs. Please consider the following before creating PRs:
- This project uses nixpkgs-fmt for fomatting the Nix code. You can use `nix-shell --run "nixpkgs-fmt ." to format everything.
- If you are planning to make any considerable changes, you should first present your plans in a GitHub issue so it can be discussed.
- If you add new features please consider adding tests.
poetry2nix
is released under the terms of the MIT license.