A Nix-based skeleton project for quickly setting up reproducible Haskell development environments.
Nixkell is a Nix-based project skeleton designed to streamline the setup of Haskell development environments. It automates the provisioning of toolchains, dependency management, and reproducible builds, eliminating the common friction of configuring Haskell projects. By leveraging Nix, it ensures that every developer working on the project has an identical environment, reducing 'works on my machine' issues.
Haskell developers and teams who want reproducible, hassle-free project setups, especially those interested in leveraging Nix for dependency management and consistent builds across different machines.
Developers choose Nixkell because it provides a ready-to-use, minimal template that encapsulates best practices for Nix-powered Haskell development. Its integration with direnv for automatic environment loading and support for static executables offers a smoother workflow compared to manual Nix configuration.
A simple Nix-Haskell skeleton
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Integrates direnv to automatically load a per-project shell with GHC, cabal, and hpack, eliminating manual toolchain configuration every time you enter the directory.
Pins dependencies and tool versions via Nix and nixpkgs hashes, ensuring identical builds across all machines and reducing 'works on my machine' issues.
Supports Cachix for sharing pre-built binaries, speeding up builds in CI and for team members by avoiding redundant compilations.
Offers a simple command to build statically-linked Linux executables, simplifying deployment without external library dependencies.
Static executable builds are only for X86_64 Linux, and setting up remote Nix builders for other platforms adds significant complexity.
Requires installing and understanding Nix, direnv, and the Nix language, which can be a barrier for developers unfamiliar with these tools.
First-time static builds can take hours, and shell rebuilds after dependency changes may be time-consuming, as noted in the README.