Difference between revisions of "Language-specific package helpers"

From NixOS Wiki
Jump to: navigation, search
m (Cleaned up the order to make things easier to find.)
m (rollback unauthorized mass edits)
Tag: Rollback
 
(25 intermediate revisions by 15 users not shown)
Line 7: Line 7:
 
=== Erlang ===
 
=== Erlang ===
 
* [https://github.com/erlang-nix/hex2nix hex2nix]
 
* [https://github.com/erlang-nix/hex2nix hex2nix]
 +
* [https://github.com/axelf4/nix-rebar3 nix-rebar3] Builds rebar3 projects, without any Nix code generation.
  
 
=== Go ===
 
=== Go ===
Line 12: Line 13:
 
* [https://github.com/nixcloud/dep2nix dep2nix]
 
* [https://github.com/nixcloud/dep2nix dep2nix]
 
* For go 1.11+ modules: [https://github.com/adisbladis/vgo2nix vgo2nix]
 
* For go 1.11+ modules: [https://github.com/adisbladis/vgo2nix vgo2nix]
 +
* [https://github.com/nix-community/gomod2nix gomod2nix]
  
 
=== Haskell ===
 
=== Haskell ===
 
* [https://github.com/NixOS/cabal2nix cabal2nix]
 
* [https://github.com/NixOS/cabal2nix cabal2nix]
 
* [https://github.com/adetokunbo/haskell-overridez haskell-overridez] - Simplify usage of nix dependencies during haskell development
 
* [https://github.com/adetokunbo/haskell-overridez haskell-overridez] - Simplify usage of nix dependencies during haskell development
 +
* [https://github.com/nmattia/snack snack]
  
 
=== JavaScript / Node.js ===
 
=== JavaScript / Node.js ===
* [https://github.com/svanderburg/node2nix node2nix]
+
* [https://github.com/svanderburg/node2nix node2nix], Recommend for use in nixpkgs
* [https://github.com/NixOS/npm2nix npm2nix]
+
* [https://github.com/nmattia/napalm napalm], Imports package-lock.json into nix directly
* yarn-based (carry the same name but different implementations):
+
* yarn-based (carry the same name but different implementations), yarn is a drop-in for `npm`:
 
** [https://github.com/moretea/yarn2nix yarn2nix] by moretea
 
** [https://github.com/moretea/yarn2nix yarn2nix] by moretea
 
** [https://github.com/Profpatsch/yarn2nix yarn2nix] by Profpatsch
 
** [https://github.com/Profpatsch/yarn2nix yarn2nix] by Profpatsch
 
* [https://bitbucket.org/shlevy/bower2nix bower2nix]
 
* [https://bitbucket.org/shlevy/bower2nix bower2nix]
 +
 +
=== PureScript ===
 +
 +
* [https://github.com/purs-nix/purs-nix purs-nix]
  
 
=== Lua ===
 
=== Lua ===
Line 32: Line 39:
  
 
=== Perl ===
 
=== Perl ===
* [https://github.com/volth/cpan2nix cpan2nix]
+
* [https://gitee.com/volth/cpan2nix/ cpan2nix]
  
 
=== Python ===
 
=== Python ===
* [https://github.com/garbas/pypi2nix pypi2nix] - Recommended by Community
+
* [https://github.com/nix-community/poetry2nix poetry2nix] - poetry2nix turns Poetry projects into Nix derivations without the need to actually write Nix expressions.
* [https://github.com/johbo/pip2nix pip2nix]
+
* [https://github.com/nix-community/nixpkgs-pytools nixpkgs-pytools] - semi-automated way to add python packages to nixpkgs.
 +
* [https://github.com/cript0nauta/pynixify pynixify] - Create a nixpkgs overlay with human-readable expressions for each package
 +
* [https://github.com/johbo/pip2nix pip2nix] - Generate nix expressions for Python packages.
 +
 
 +
Abandoned / discontinued:
 +
* [https://github.com/garbas/pypi2nix pypi2nix] - Generate Nix expressions for Python packages
 
* [https://github.com/proger/python2nix python2nix]
 
* [https://github.com/proger/python2nix python2nix]
 
* [https://github.com/badi/nix-pip nix-pip]
 
* [https://github.com/badi/nix-pip nix-pip]
 +
* [https://github.com/DavHau/mach-nix mach-nix] - Create reproducible python environments from `requirements.txt` (using Nix)
  
 
=== Ruby ===
 
=== Ruby ===
Line 44: Line 57:
  
 
=== Rust ===
 
=== Rust ===
* [https://pijul.org/2017/12/12/buildrustcrate/ carnix] [https://github.com/NixOS/nixpkgs/blob/master/doc/languages-frameworks/rust.section.md#compiling-rust-crates-using-nix-instead-of-cargo documentation] - Recommend by community, also integrated into nixpkgs.
+
* [https://github.com/nmattia/naersk naersk] Pure nix, works well with dependencies from crates.io. Builds rust crates dependencies in one derivation and the crate itself in another.
* [https://github.com/williamyaoh/cratesio2nix cratesio2nix]
+
* [https://github.com/nix-community/crate2nix crate2nix] Uses `buildRustCrate` from `nixpkgs` to build all dependencies independently. Either check in the generated build file or use it via "import from derivation".
* [https://github.com/fractalide/nixcrates nixcrates]
+
* [https://github.com/cargo2nix/cargo2nix cargo2nix] Uses a `mkCrate` wrapper around Cargo and `rustc` to build all dependencies independently. Supports cross-compilation, alternative registries, and `nix-shell` integration.
* [https://github.com/fractalide/nix-crates-index nix-crates-index]
+
* [https://github.com/ipetkov/crane crane] Builds rust crate dependencies in one derivation and the crate itself in another. Boilerplate setup for running test suites.
* [https://github.com/williamyaoh/manilla manilla]
 
  
 
=== Scala ===
 
=== Scala ===
* [https://github.com/teozkr/Sbtix sbtix]
+
* [https://gitlab.com/teozkr/Sbtix sbtix]

Latest revision as of 10:54, 6 April 2024

The official overview can be found in the nixpkgs manual.

Elisp

Erlang

Go

Haskell

JavaScript / Node.js

  • node2nix, Recommend for use in nixpkgs
  • napalm, Imports package-lock.json into nix directly
  • yarn-based (carry the same name but different implementations), yarn is a drop-in for `npm`:
  • bower2nix

PureScript

Lua

OCaml

Perl

Python

  • poetry2nix - poetry2nix turns Poetry projects into Nix derivations without the need to actually write Nix expressions.
  • nixpkgs-pytools - semi-automated way to add python packages to nixpkgs.
  • pynixify - Create a nixpkgs overlay with human-readable expressions for each package
  • pip2nix - Generate nix expressions for Python packages.

Abandoned / discontinued:

Ruby

Rust

  • naersk Pure nix, works well with dependencies from crates.io. Builds rust crates dependencies in one derivation and the crate itself in another.
  • crate2nix Uses `buildRustCrate` from `nixpkgs` to build all dependencies independently. Either check in the generated build file or use it via "import from derivation".
  • cargo2nix Uses a `mkCrate` wrapper around Cargo and `rustc` to build all dependencies independently. Supports cross-compilation, alternative registries, and `nix-shell` integration.
  • crane Builds rust crate dependencies in one derivation and the crate itself in another. Boilerplate setup for running test suites.

Scala