Generate Nix build instructions from Cabal files to integrate Haskell projects into the Nix ecosystem.
cabal2nix is a tool that generates Nix build instructions from Cabal files, allowing Haskell projects to be integrated into the Nix package management system. It solves the problem of managing Haskell dependencies reproducibly by converting Cabal's package descriptions into Nix expressions, which can be used within nixpkgs and NixOS.
Haskell developers and Nix users who need to build, package, or distribute Haskell software within the Nix ecosystem, particularly those maintaining or contributing to nixpkgs.
Developers choose cabal2nix because it provides a reliable bridge between Haskell's Cabal and Nix, enabling reproducible builds, declarative dependency management, and seamless integration with the broader Nix toolchain without sacrificing Haskell-native workflows.
Generate Nix build instructions from a Cabal file
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Converts .cabal files directly into Nix build instructions, enabling Haskell projects to integrate with Nix without altering original Cabal setups, as highlighted in the cabal2nix component description.
Includes hackage2nix for generating the haskellPackages set in nixpkgs, facilitating easy access to Hackage packages within Nix, mentioned in the README under components.
Provides libraries like language-nix for parsing and rendering Nix expressions, supporting custom automation and tooling, as detailed in the utilities section of the README.
Combines related tools like distribution-nixpkgs and hackage-db in a single repository, promoting consistent development and maintenance, as described in the monorepo structure overview.
Uses josh for vendoring and history management, which adds operational complexity and requires learning additional tools, as evidenced by the detailed maintenance commands in the README.
Primarily serves developers at the intersection of Haskell and Nix, limiting broader applicability and potentially reducing community support outside these ecosystems.
Requires proficiency in both Cabal's package descriptions and Nix's expression language, making it challenging for newcomers or those unfamiliar with either system.