Giter VIP home page Giter VIP logo

poetry2nix's Introduction

poetry2nix

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.

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

poetry2nix.mkPoetryApplication {
    src = lib.cleanSource ./.;
    pyproject = ./pyproject.toml;
    poetrylock = ./poetry.lock;
    python = python3;
}

See ./pkgs/poetry/default.nix for a working example.

mkPoetryEnv

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.

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 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.

poetry2nix's People

Contributors

adisbladis avatar gilligan avatar zimbatm avatar andir avatar robertodr avatar fridh avatar stolyaroleh avatar coderfromhere avatar

Watchers

James Cloos avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.