Skip to content

Basics of the Nix Language

The Nix language is essential for declaring configurations to be built by Nix. To fully enjoy the benefits of NixOS and Flakes, it is necessary to grasp the fundamentals of this language.

The Nix language is a straightforward functional language. If you have some programming experience, it should take you less than 2 hours to grasp its basics.

The community already has a lot of good Nix language tutorials, so I won't reinvent the wheel. To get started, I recommend reading the following resources for a quick introduction to the Nix language:

  1. Nix Language Basics - nix.dev: This tutorial provides a comprehensive overview of the basics of the Nix language, recommended for beginners.
  2. A tour of Nix: An online interactive tutorial focuses on programming language constructs and how Nix can be algorithmically used to solve problems.
  3. Nix Language - Nix Reference Manual: The official documentation of the Nix language.
    1. nix.dev and other user-friendly tutorials are suitable for starter reading only, and neither of them fully introduces the full syntax of Nix. If you encounter a new syntax that you have not come across before, please refer to this official document.
  4. https://noogle.dev/ is a Nix function library search engine that can help you quickly find the functions you need and their usage, which is very practical.

It's okay to have a rough impression of the syntax for now. You can come back to review the syntax when you find something you don't understand later.