nixos-and-flakes-book/docs/advanced-topics/index.md

5.2 KiB

Advanced Topics

Once you have become familiar with NixOS, you can explore advanced topics and dive deeper into the Nix ecosystem. Here are some resources and community projects that can help you expand your knowledge:

Community

  • Nix Official - Community: Contains information about the Nix community, forums, realtime chat, meetups, RFCs, the official team architecture, etc.
  • Nix Channel Status: The build status of each Nix channel.
  • nix-community/NUR: Although Nixpkgs contains a large number of packages, some packages are not included in Nixpkgs due to reasons such as review speed and licensing agreements. NUR is a decentralized Nix package repository where anyone can create their own Nix repository and add it to NUR for others to use. If you want to use a package that is not in Nixpkgs, you can try to find it here. If you want to share your own Nix package with others, you can create and share your own Nix repository according to the README of NUR.

Documentation and Videos

  • Eelco Dolstra - The Purely Functional Software Deployment Model - 2006: Eelco Dolstra's seminal PhD thesis about the Nix package manager,
  • Nix Reference Manual: A comprehensive guide to the Nix package manager, covering its design and usage from the command line.
  • nixpkgs Manual: The manual for nixpkgs, which introduces its parameters, explains how to use, modify, and package Nix packages.
  • NixOS Manual: A user manual for NixOS, providing configuration instructions for system-level components such as Wayland/X11 and GPU.
  • nix-pills: "Nix Pills" is a series of guides that provide an in-depth explanation of building software packages with Nix. It offers clear and understandable explanations.
  • nixos-in-production: This is a work-in-progress book hosted on LeanPub about introducing and maintaining NixOS in a production environment.

And there are many official videos on the NixOS Foundation and NixCon channels on YouTube. Here are a few videos that are highly recommended:

  • Summer of Nix 2022 — Public Lecture Series: A series of public lectures hosted by the NixOS Foundation, presented by core members of the Nix community such as Eelco Dolstra and Armijn Hemel. The content covers the development history of Nix, the history of NixOS, and the future of Nix, among other topics.
  • Summer of Nix 2023 — Nix Developer Dialogues: A series of dialogues between core members of the Nix community in 2023. The content includes the evolution and architectural challenges of Nixpkgs, exploration of Nix's module system, discussion of the Nix ecosystem, AI applications in Nixpkgs, and the application of Nix in the commercial field and open source economics.

Advanced Techniques and Community Projects

Once you are comfortable with Flakes, you can explore more advanced techniques and community projects. Here are some popular ones to try out:

  • flake-parts: Simplifies the writing and maintenance of configurations using the Module module system.
  • flake-utils-plus: A third-party package that enhances Flake configuration and provides additional powerful features.

There are many other valuable community projects worth exploring. Here are a few examples:

  • nix-output-monitor: Beautifully displays the build progress of Nix packages, with additional information such as build time and build log.
  • agenix: A tool for secrets management.
  • colmena: Tools for NixOS deployment.
  • nixos-generators: A tool to generate ISO/qcow2/... from NixOS configurations.
  • lanzaboote: Enables secure boot for NixOS.
  • impermanence: Helps make NixOS stateless and improves system reproducibility.
  • devbox: Lightweight, repeatable dev environments without container woes, internally powered by nix, similar to earthly.
  • nixpak: A tool to sandbox all sorts of Nix-packaged applications, including graphical ones.
  • nixpacks: Nixpacks takes a source directory and produces an OCI compliant image that can be deployed anywhere, similar to buildpacks.
  • ...

These projects offer additional functionality and tools that can enhance your NixOS experience.

For more information, see the awesome-nix.