mirror of
https://github.com/vale981/poetry2nix
synced 2025-03-04 16:51:40 -05:00
59 lines
2.1 KiB
Markdown
59 lines
2.1 KiB
Markdown
![]() |
[](https://gitlab.com/nix-community/poetry2nix/-/jobs)
|
||
|
|
||
|
# poetry2nix
|
||
|
poetry2nix turns [Poetry](https://poetry.eustace.io/) 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.
|
||
|
|
||
|
## Usage
|
||
|
|
||
|
poetry2nix has 2 main use-cases:
|
||
|
|
||
|
- `mkPoetryApplication`: For building poetry based Python applications.
|
||
|
- `mkPoetryEnv`: For creating a python environment with the dependencies of a `poetry.lock` file.
|
||
|
|
||
|
## Notes
|
||
|
|
||
|
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.
|
||
|
|
||
|
## Examples
|
||
|
|
||
|
### mkPoetryApplication
|
||
|
|
||
|
```nix
|
||
|
poetry2nix.mkPoetryApplication {
|
||
|
src = lib.cleanSource ./.;
|
||
|
pyproject = ./pyproject.toml;
|
||
|
poetrylock = ./poetry.lock;
|
||
|
python = python3;
|
||
|
}
|
||
|
```
|
||
|
|
||
|
See [./pkgs/poetry/default.nix](./pkgs/poetry/default.nix) for a working example.
|
||
|
|
||
|
### mkPoetryEnv
|
||
|
|
||
|
```nix
|
||
|
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](./tests/env/default.nix) for a working example.
|
||
|
|
||
|
## Contributing
|
||
|
|
||
|
Contributions to this project are welcome in the form of GitHub PRs. Please consider the following before creating PRs:
|
||
|
|
||
|
- This project uses [nixpkgs-fmt](https://github.com/nix-community/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.
|
||
|
|
||
|
|
||
|
## License
|
||
|
`poetry2nix` is released under the terms of the MIT license.
|