awesome-nix/README.md
2024-08-01 22:56:30 +02:00

22 KiB

Awesome Nix Awesome NixOS

A curated list of the best resources in the Nix community.

Nix is a powerful package manager for Linux and other Unix systems that makes package management reliable and reproducible.

Please read the contribution guidelines before contributing.

Contents

Resources

Learning

  • Building a Rust service with Nix - An in-depth blog series about creating a Rust application with Nix.
  • Explainix - Explain Nix syntax visually.
  • How to Learn Nix - It's like a Let's Play, but for obscure software documentation.
  • Nix - A One Pager - A one page introduction to the Nix language.
  • Nix from First Principles: Flake Edition - A modern crash-course to using Nix features, Flakes, and developing with Nix.
  • Nix Notes - A collection of short notes about Nix, each contributing to the same virtual machine image.
  • Nix Pills - The best way to learn, with examples.
  • Nix Shorts - A collection of short notes about how to use Nix, updated for Nix Flakes.
  • nix.dev - An opinionated guide for developers about getting things done using the Nix ecosystem.
  • NixOS & Flakes Book - An unofficial and opinionated NixOS & Flakes book for beginners.
  • NixOS Asia Tutorial Series - A series of high-level tutorials on using Nix Flakes, NixOS, home-manager, etc.
  • Tour of Nix - An online interactive tutorial on Nix language constructs.
  • Wombat's Book of Nix - A book-length introduction to Nix and flakes.
  • Zero to Nix - A flake-centric guide to Nix and its concepts created by Determinate Systems to quickly onboard beginners.

Discovery

  • Nix Package Versions - Find all versions of a package that were available in a channel and the revision you can download it from.
  • Noogle - Nix API search engine allowing to search functions based on their types and other attributes.
  • Home Manager Option Search - Search through all 2000+ Home Manager options and read how to use them.
  • Searchix - Search Nix packages and options from NixOS, Darwin and Home Manager.

Installation Media

  • nixos-generators - Take a NixOS config and build multiple different images types including VirtualBox VMs, Azure images, and installation ISOs.
  • nixos-infect - Replace a running non-NixOS Linux host with NixOS.
  • nixos-up - Super easy NixOS installer that can be used from the installation ISO.
  • nix-installer - Opinionated alternative to the official Nix install scripts.
  • nix-installer-scripts - Runs the official installer but does some tweaking as well such as adding fcontext for selinux and installing nix outside of the default profile so you don't accidently uninstall it.

Channel History

  • Channel History - Get historical git commits for Nix channels.
  • Nix Infra Status - Get the age and current git commit of each Nix channel.
  • Nix Review Tools Reports - Reports showing problematic dependencies (dependencies causing the most failed builds) for major Hydra jobsets.

Deployment Tools

  • bento - A KISS deployment tool to keep your NixOS fleet (servers & workstations) up to date.
  • Colmena - A simple, stateless NixOS deployment tool modeled after NixOps and morph.
  • comin - A deployment tool to continuously pull from Git repositories.
  • deploy-rs - A simple multi-profile Nix-flake deploy tool.
  • krops - A lightweight toolkit to deploy NixOS systems, remotely or locally.
  • KubeNix - A Kubernetes resource builder using Nix.
  • KuberNix - Single-dependency Kubernetes clusters via Nix packages.
  • morph - A tool for managing existing NixOS hosts.
  • Nixery - A Docker-compatible container registry which builds images ad-hoc via Nix.
  • Nixinate - A Nix flake library to provide app outputs for managing existing NixOS hosts over SSH.
  • NixOps - The official Nix deployment tool, compatible with AWS, Hetzner, and more.
  • pushnix - Simple cli utility that pushes NixOS configuration and triggers a rebuild using ssh.
  • terraform-nixos - A set of Terraform modules designed to deploy NixOS.
  • terranix - Use Nix and the NixOS module system to write your Terraform code.

Virtualisation

  • nixos-shell - Simple headless VM configuration using Nix (similar to Vagrant).
  • extra-container - Run declarative NixOS containers from the command line.
  • microvm - NixOS-based MicroVMs.

Command-Line Tools

  • alejandra - An opinionated Nix code formatter optimized for speed and consistency.
  • comma - Quickly run any binary; wraps together nix run and nix-index.
  • deadnix - Scan Nix files for dead code.
  • devenv - A Nix-based tool for creating developer shell environments quickly and reproducibly.
  • manix - Find configuration options and function documentation for Nixpkgs, NixOS, and Home Manager.
  • nh - Better output for nix nixos-rebuild and home-manger CLI using nvd and nix-output-monitor.
  • nixfmt - A formatter for Nix code, intended to easily apply a uniform style.
  • nixpkgs-fmt - Nix code formatter for nixpkgs.
  • nixpkgs-hammering - An opinionated linter for Nixpkgs package expressions.
  • nix-alien - Run unpatched binaries on Nix/NixOS easily.
  • nix-diff - A tool to explain why two Nix derivations differ.
  • nix-du - Visualise which gc-roots to delete to free some space in your Nix store.
  • nix-index - Quickly locate Nix packages with specific files.
  • nix-init - Generate Nix packages from URLs with hash prefetching, dependency inference, license detection, and more.
  • nix-melt - A ranger-like flake.lock viewer.
  • nix-output-monitor - A tool to produce useful graphs and statistics when building derivations.
  • nix-prefetch - A universal tool for updating source checksums.
  • nix-tree - Interactively browse the dependency graph of Nix derivations.
  • nurl - Generate Nix fetcher calls from repository URLs.
  • nvd - Diff package versions between two store paths; it's especially useful for comparing NixOS generations on rebuild.
  • statix - A linter/fixer to check for and fix antipatterns in Nix code.

Development

  • attic - Multi-tenant Nix Binary Cache.
  • Arion - Run docker-compose with help from Nix/NixOS.
  • cached-nix-shell - A nix-shell replacement that uses caching to open subsequent shells quickly.
  • Cachix - Hosted binary cache service; free for open-source projects.
  • Devbox - Instant, portable, and predictable development environments.
  • devshell - mkShell with extra bits and a toml config option to be able to onboard non-nix users.
  • dream2nix - A framework for automatically converting packages from other build systems to Nix.
  • flake.parts - Minimal Nix modules framework for Flakes: split your flakes into modules and get things done with community modules.
  • flake-utils - Pure Nix flake utility functions to help with writing flakes.
  • flake-utils-plus - A lightweight Nix library flake for painless NixOS flake configuration.
  • flakelight - A modular flake framework aiming to minimize boilerplate.
  • flox - Manage and share development environments, package projects, and publish artifacts anywhere.
  • gitignore.nix - The most feature-complete and easy-to-use .gitignore integration.
  • haumea - Filesystem-based module system for the Nix language similar to traditional programming languages, with support for file hierarchy and visibility.
  • lorri - A much better nix-shell for development that augments direnv.
  • namaka - Snapshot testing for Nix based on haumea.
  • nil - NIx Language server, an incremental analysis assistent for writing in Nix.
  • niv - Easy dependency management for Nix projects with package pinning.
  • nix-direnv - A fast loader and flake-compliant configuration for the direnv environment auto-loader.
  • nix-health - A program to check the health of your Nix install. Furthermore, individual projects can configure their own health checks in their flake.nix.
  • nix-update - Update versions/source hashes of nix packages.
  • nixd - Nix language server, based on Nix libraries.
  • nixpkgs-review - The best tool to verify that a pull-request in Nixpkgs is building properly.
  • pre-commit-hooks.nix - Run linters/formatters at commit time and on your CI.
  • rnix-lsp - A syntax-checking language server for Nix.
  • robotnix - A declarative and reproducible build system for Android (AOSP) images.
  • services-flake - A NixOS-like service configuration framework for Nix flakes.
  • Snowfall Lib - A library that makes it easy to manage your Nix flake by imposing an opinionated file structure.
  • templates - Project templates for many languages using Nix flakes.

DevOps

  • Makes - A Nix-based CI/CD pipeline framework for building, testing, and releasing projects in any language, from anywhere.
  • nixidy - Kubernetes GitOps with Nix and Argo CD.
  • Standard - An opinionated Nix Flakes framework to keep Nix code in large projects organized, accompanied by a friendly CLI/TUI optized for DevOps scenarios.

Programming Languages

Arduino

  • nixduino - Nix-based tool to help build Arduino sketches.

Clojure

  • clj-nix - Nix helper functions for Clojure projects.

Crystal

  • crystal2nix - Convert shard.lock into Nix expressions.

Elm

  • elm2nix - Convert elm.json into Nix expressions.

Gleam

  • nix-gleam - Generic Nix builder for Gleam applications.

Haskell

  • cabal2nix - Converts a Cabal file into a Nix build expression.
  • haskell-flake - A flake-parts Nix module for Haskell development.
  • haskell.nix - Alternative Haskell Infrastructure for Nixpkgs.
  • nix-haskell-mode - Automatic Haskell setup in Emacs.
  • nixkell - A Haskell project template using Nix and direnv.

Haxe

  • haxix - Nix flake to build haxe/Heaps.io projects.
  • kebab - Haxe packages for Nix.

Node.js

  • Napalm - Support for building npm packages in Nix with a lightweight npm registry.
  • node2nix - Generate Nix expression from a package.json (or package-lock.json) (to be stored as files).
  • npmlock2nix - Generate Nix expressions from a package-lock.json (in-memory), primarily for web projects.

OCaml

  • opam2nix - Generate Nix expressions from opam packages.

PHP

  • composer2nix - Generate Nix expressions to build composer packages.
  • composer-plugin-nixify - Composer plugin to help with Nix packaging.
  • composition-c4 - Support for building composer packages from a composer.lock (using IFD).
  • nix-phps - Flake containing old and unmaintained PHP versions (intended for CI use).
  • nix-shell - Nix shells for PHP development.

PureScript

  • Easy PureScript Nix - A project to easily use PureScript and other tools with Nix.
  • purs-nix - CLI and library combo designed for managing PureScript projects using Nix. It provides a Nix API that can be used within your projects, as well as a command-line interface for managing your development process.

Python

  • poetry2nix - Build Python packages directly from Poetry's poetry.lock. No conversion step needed.

Ruby

  • Bundix - Generates a Nix expression for your Bundler-managed application.
  • ruby-nix - Generates reproducible ruby/bundler app environment with Nix.

Rust

  • cargo2nix - Granular caching, development shell, Nix & Rust integration.
  • crane - A Nix library for building Cargo projects with incremental artifact caching.
  • fenix - Rust toolchains and Rust analyzer nightly for nix.
  • naersk - Build Rust packages directly from Cargo.lock. No conversion step needed.
  • nix-cargo-integration - A library that allows easy and effortless integration for Cargo projects.
  • nixpkgs-mozilla - Mozilla's overlay with Rust toolchains and Firefox.
  • rust-nix-templater - Generates Nix build and development files for Rust projects.
  • rust-overlay - Pure and reproducible nix overlay of binary distributed Rust toolchains.

Scala

Zig

  • zon2nix - Convert the dependencies in build.zig.zon to a Nix expression.

NixOS Modules

  • base16.nix - Flake way to theme programs in base16 colorschemes, mustache template support included.
  • Home Manager - Manage your user configuration just like NixOS.
  • nix-darwin - Manage macOS configuration just like on NixOS.
  • musnix - Do real-time audio work in NixOS.
  • nixcloud-webservices - A Nixpkgs extension with a focus on ease of deployment of web-related technologies.
  • NixVim - A NeoVim distribution built with Nix modules and Nixpkgs.
  • Self Host Blocks - Modulable server management based on NixOS modules and focused on best practices.
  • Simple Nixos Mailserver - A complete mailserver, managed with NixOS modules.
  • Stylix - System-wide colorscheming and typography for NixOS.
  • nix-bitcoin - Modules and packages for Bitcoin nodes with higher-layer protocols with an emphasis on security.
  • nix-topology - Generate infrastructure and network diagrams directly from your NixOS configuration.
  • impermanence - Lets you choose what files and directories you want to keep between reboots.

NixOS Configuration Editors

Desktop apps

Webinterface

  • MyNixOS - Graphical editor for Nix flakes. Create and manage configurations and modules for NixOS and Nix home-manager. Rather a Nix generator than a Nix editor, because it does not allow to import Nix files.

Overlays

  • awesome-nix-hpc - High Performance Computing package sets.
  • chaotic-nyx - Daily bumped bleeding edge packages like mesa_git & others that aren't yet in Nixpkgs. Created by the makers of Chaotic-AUR.
  • nixpkgs-firefox-darwin - Automatically updated Firefox binary packages for macOS.
  • nixpkgs-wayland - Bleeding-edge Wayland packages.
  • NUR - Nix User Repositories. The mother of all overlays, allowing access to user repositories and installing packages via attributes.
  • System Manager - A non-NixOS Linux system configuration tool built on Nix.

Distributions

  • NixNG - A GNU/Linux distribution similar to NixOS, defining difference is a focus on containers and lightweightness.

Community