nix-community/pip2nix

Freeze pip-installable packages into Nix expressions [maintainer=@datakurre]

Python

243

302 commits

updated Mar 26, 2026

See the code

README

pip2nix
=======

Generate nix expressions for Python packages.

.. image:: https://travis-ci.com/nix-community/pip2nix.svg?branch=master
   :target: https://travis-ci.com/nix-community/pip2nix
   :alt: Build Status

.. image:: https://readthedocs.org/projects/pip2nix/badge/?version=latest
   :target: http://pip2nix.readthedocs.org/en/latest/
   :alt: Documentation Status

.. image:: https://img.shields.io/pypi/status/pip2nix.svg
   :target: https://pypi.python.org/pypi/pip2nix
   :alt: PyPI status

.. image:: https://img.shields.io/pypi/v/pip2nix.svg
   :target: https://pypi.python.org/pypi/pip2nix
   :alt: PyPI version


Why another .nix generator for Python?
======================================

The original author of `pip2nix` started the project with the following motivation:

  I needed something that can work not only with pypi but also with local paths,
  VCS links, and dependency links. I couldn't get any of the other generators to
  work, so I started my own :-)

Major difference between `pip2nix` and `pypi2nix` is that `pip2nix` can be used to extend `nixpkgs` Python package set and reuse its package functions where `pypi2nix` maintains separate package tree from `nixpkgs`. Both approaches have their own pros and cons.


Installation
============

Be aware that `pip2nix` is not yet mature software. It is a tool to aid Python
developers who use Nix to automate a good chunk of the work to maintain a Nix
based development environments.

The recommended usage at the moment is inside of a `nix-shell`, since this
avoids putting a specific version into the user's environment::

  $ git clone https://github.com/nix-community/pip2nix
  $ cd pip2nix
  $ nix-shell release.nix -A pip2nix.python36

Alternatively `pip2nix` can be installed into the user's environment::

  $ git clone https://github.com/nix-community/pip2nix
  $ nix-env -f pip2nix/release.nix -iA pip2nix.python36



Usage
=====

To generate python-packages.nix for a set of requirements::

    $ pip2nix generate -r requirements.txt

Alternatively if having flakes enabled you can run `pip2nix` without the need to install it::

    $ nix run github:nix-community/pip2nix -- generate -r requirements.txt


``pip2nix generate`` takes the same set of package specifications ``pip
install`` does.


Contact
=======

Problems and questions should go to GitHub `issues
<https://github.com/nix-community/pip2nix/issues>`_.


Credits and History
===================

Tomasz Kontusz started the project back in 2015, he's `ktosiek` on Freenode, and
`@tkontusz <https://twitter.com/tkontusz>`_ on Twitter.

In 2016 Johannes Bornhold took over as maintainer, since he was actively using
`pip2nix` and Tomas was not actively using it himself anymore. Find him via
https://www.johbo.com.

In 2019 Asko Soukka forked the project below https://github.com/nix-community/
and took over as maintainer.

Not written in Markdown, so it's shown here as plain text — view it formatted on GitHub.

Contributors

johbo

99 commits

ktosiek

98 commits

datakurre

94 commits

nix-community/pip2nix

Freeze pip-installable packages into Nix expressions [maintainer=@datakurre]

Python

243

302 commits

updated Mar 26, 2026

See the code

README

pip2nix
=======

Generate nix expressions for Python packages.

.. image:: https://travis-ci.com/nix-community/pip2nix.svg?branch=master
   :target: https://travis-ci.com/nix-community/pip2nix
   :alt: Build Status

.. image:: https://readthedocs.org/projects/pip2nix/badge/?version=latest
   :target: http://pip2nix.readthedocs.org/en/latest/
   :alt: Documentation Status

.. image:: https://img.shields.io/pypi/status/pip2nix.svg
   :target: https://pypi.python.org/pypi/pip2nix
   :alt: PyPI status

.. image:: https://img.shields.io/pypi/v/pip2nix.svg
   :target: https://pypi.python.org/pypi/pip2nix
   :alt: PyPI version


Why another .nix generator for Python?
======================================

The original author of `pip2nix` started the project with the following motivation:

  I needed something that can work not only with pypi but also with local paths,
  VCS links, and dependency links. I couldn't get any of the other generators to
  work, so I started my own :-)

Major difference between `pip2nix` and `pypi2nix` is that `pip2nix` can be used to extend `nixpkgs` Python package set and reuse its package functions where `pypi2nix` maintains separate package tree from `nixpkgs`. Both approaches have their own pros and cons.


Installation
============

Be aware that `pip2nix` is not yet mature software. It is a tool to aid Python
developers who use Nix to automate a good chunk of the work to maintain a Nix
based development environments.

The recommended usage at the moment is inside of a `nix-shell`, since this
avoids putting a specific version into the user's environment::

  $ git clone https://github.com/nix-community/pip2nix
  $ cd pip2nix
  $ nix-shell release.nix -A pip2nix.python36

Alternatively `pip2nix` can be installed into the user's environment::

  $ git clone https://github.com/nix-community/pip2nix
  $ nix-env -f pip2nix/release.nix -iA pip2nix.python36



Usage
=====

To generate python-packages.nix for a set of requirements::

    $ pip2nix generate -r requirements.txt

Alternatively if having flakes enabled you can run `pip2nix` without the need to install it::

    $ nix run github:nix-community/pip2nix -- generate -r requirements.txt


``pip2nix generate`` takes the same set of package specifications ``pip
install`` does.


Contact
=======

Problems and questions should go to GitHub `issues
<https://github.com/nix-community/pip2nix/issues>`_.


Credits and History
===================

Tomasz Kontusz started the project back in 2015, he's `ktosiek` on Freenode, and
`@tkontusz <https://twitter.com/tkontusz>`_ on Twitter.

In 2016 Johannes Bornhold took over as maintainer, since he was actively using
`pip2nix` and Tomas was not actively using it himself anymore. Find him via
https://www.johbo.com.

In 2019 Asko Soukka forked the project below https://github.com/nix-community/
and took over as maintainer.

Not written in Markdown, so it's shown here as plain text — view it formatted on GitHub.

Contributors

johbo

99 commits

ktosiek

98 commits

datakurre

94 commits

Languages

Python

65.9%

Nix

29.8%

Jinja

2.7%

Shell

1.6%