Language-specific package helpers: Difference between revisions

From NixOS Wiki
imported>Peterbecich
purs-nix
m consistency
 
(11 intermediate revisions by 7 users not shown)
Line 1: Line 1:
__NOTOC__ <!-- Page too short for TOC to be useful -->
__NOTOC__ <!-- Page too short for TOC to be useful -->
The official overview can be found in the [http://nixos.org/nixpkgs/manual/#chap-language-support nixpkgs manual].
The Nixpkgs-provided helpers can be found in the [http://nixos.org/nixpkgs/manual/#chap-language-support Nixpkgs manual].


=== Elisp ===
=== Elisp ===
Line 13: 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 ===
Line 25: Line 26:
** [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://github.com/stephank/yarn-plugin-nixify yarn-plugin-nixify] by stephank
* [https://github.com/rvl/bower2nix bower2nix]


=== PureScript ===
=== PureScript ===
Line 32: Line 34:


=== Lua ===
=== Lua ===
* [https://github.com/teto/luarocks2nix luarocks2nix] works with https://github.com/NixOS/nixpkgs/pull/33903
* [https://github.com/nix-community/luarocks-nix luarocks2nix] works with https://github.com/NixOS/nixpkgs/pull/33903


=== OCaml ===
=== OCaml ===
Line 43: Line 45:
* [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/nix-community/poetry2nix poetry2nix] - poetry2nix turns Poetry projects into Nix derivations without the need to actually write Nix expressions.
* [https://github.com/nix-community/nixpkgs-pytools nixpkgs-pytools] - semi-automated way to add python packages to nixpkgs.
* [https://github.com/nix-community/nixpkgs-pytools nixpkgs-pytools] - semi-automated way to add python packages to nixpkgs.
* [https://github.com/DavHau/mach-nix mach-nix] - Create reproducible python environments from `requirements.txt` (using Nix)
* [https://github.com/cript0nauta/pynixify pynixify] - Create a nixpkgs overlay with human-readable expressions for each package
* [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.
* [https://github.com/johbo/pip2nix pip2nix] - Generate nix expressions for Python packages.
Line 51: Line 52:
* [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 57: Line 59:
=== Rust ===
=== Rust ===
* [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/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/kolloch/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/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/tenx-tech/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/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/ipetkov/crane crane] Builds rust crate dependencies in one derivation and the crate itself in another. Boilerplate setup for running test suites.
Outdated or deprecated projects:
 
* [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] - Recommended by the docs (which are unfortunately outdated), also integrated into nixpkgs.
* [https://github.com/williamyaoh/cratesio2nix cratesio2nix]
* [https://github.com/fractalide/nixcrates nixcrates]
* [https://github.com/fractalide/nix-crates-index nix-crates-index]
* [https://github.com/williamyaoh/manilla manilla]


=== Scala ===
=== Scala ===
* [https://gitlab.com/teozkr/Sbtix sbtix]
* [https://gitlab.com/nightkr/Sbtix sbtix]
* [https://github.com/zaninime/sbt-derivation sbt-derivation]

Latest revision as of 06:10, 14 September 2024

The Nixpkgs-provided helpers can be found in the Nixpkgs manual.

Elisp

Erlang

Go

Haskell

JavaScript / Node.js

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