Infrastructure for building Haskell packages with Nix by automatically translating Cabal or Stack projects into Nix code.
haskell.nix is infrastructure for building Haskell packages with Nix that automatically translates Cabal or Stack projects and their dependencies into Nix code. It provides an alternative Haskell infrastructure for Nixpkgs, solving dependency management challenges and ensuring reproducible builds for Haskell developers working within the Nix ecosystem.
Haskell developers using Nix for package management and reproducible builds, particularly those working with Cabal or Stack projects who want to integrate with Nix infrastructure.
Developers choose haskell.nix because it provides automatic conversion of Haskell projects to Nix expressions, integrates with Hackage and Stackage through companion repositories, and enables reproducible builds while minimizing compilation through proper binary cache configuration.
Alternative Haskell Infrastructure for Nixpkgs
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 or Stack projects and their dependencies into Nix code automatically, eliminating manual conversion work and reducing errors, as highlighted in the README's core functionality.
Leverages pre-built binaries to avoid rebuilding GHC when properly configured, a key feature emphasized in the troubleshooting section to prevent common compilation delays.
Uses companion repos hackage.nix and stackage.nix to provide up-to-date Hackage and Stackage snapshots as Nix expressions, ensuring seamless dependency management.
Ensures consistent Haskell package builds across different environments, addressing dependency challenges and enhancing reliability for development and deployment.
Requires precise configuration to avoid building GHC from source, a common pitfall noted in the troubleshooting documentation that can frustrate users.
Depends on separate repositories like hackage.nix and stackage.nix, adding complexity and potential points of failure for synchronization and updates.
Assumes proficiency in both Nix and Haskell tooling, making it inaccessible for developers new to either ecosystem without significant investment.