Skip to main content
Ctrl+K
nix.dev

Official documentation for getting things done with Nix.

Ctrl+K
  • Install Nix
  • Tutorials
    • First steps
      • Ad hoc shell environments
      • Reproducible interpreted scripts
      • Declarative shell environments
      • Towards reproducibility: pinning Nixpkgs
    • Nix language basics
    • Packaging existing software
    • Package parameters and overrides with callPackage
    • Working with local files
    • Cross compilation
    • Module system
      • 1. A basic module
      • 2. Module system deep dive
    • NixOS
      • NixOS virtual machines
      • Building a bootable ISO image
      • Building and running Docker images
      • Integration testing with NixOS virtual machines
      • Provisioning remote machines via SSH
      • Installing NixOS on a Raspberry Pi
      • Deploying NixOS using Terraform
      • Setting up an HTTP binary cache
      • Setting up distributed builds
  • Guides
    • Recipes
      • Configure Nix to use a custom binary cache
      • Automatic environments
      • Dependencies in the development shell
      • Managing remote sources
      • Python development environment
      • Setting up post-build hooks
      • Continuous integration with GitHub Actions
    • Best practices
    • Troubleshooting
    • Frequently Asked Questions
  • Reference
    • Glossary
    • Nix reference manual
      • Nix pre-release (development)
      • Nix 2.29 (latest)
      • Nix 2.28 (in Nixpkgs rolling)
      • Nix 2.28 (in Nixpkgs 25.05)
      • Nix 2.24 (in Nixpkgs 24.11)
    • Nixpkgs manual
    • NixOS manual
    • Community projects
    • Support tools
    • Further reading
    • Pinning Nixpkgs
  • Concepts
    • Flakes
    • Frequently Asked Questions
  • Contributing
    • How to contribute
    • How to get help
    • Contributing documentation
      • Documentation resources
      • Documentation framework
      • Style guide
      • How to write a tutorial
  • Acknowledgements
  • Repository
  • Suggest edit
  • Open issue
  • .md

Tutorials

Tutorials#

These sections contains series of lessons to get started.

  • First steps
    • Ad hoc shell environments
    • Reproducible interpreted scripts
    • Declarative shell environments
    • Towards reproducibility: pinning Nixpkgs
  • Nix language basics
    • Overview
    • Names and values
    • Functions
    • Function libraries
    • Impurities
    • Derivations
    • Worked examples
    • References
    • Next steps
  • Packaging existing software
    • Introduction
    • Your first package
    • A package with dependencies
    • Finding packages
    • Fixing build failures
    • A successful build
    • References
    • Next steps
  • Package parameters and overrides with callPackage
    • Overview
    • Automatic function calls
    • Parameterised builds
  • Overrides
    • Interdependent package sets
    • Summary
    • References
    • Next steps
  • Working with local files
    • File sets
    • Example project
    • Adding files to the Nix store
    • Difference
    • Missing files
    • Union (explicitly exclude files)
    • Filter
    • Union (explicitly include files)
    • Matching files tracked by Git
    • Intersection
    • Conclusion
  • Cross compilation
    • What do you need?
    • Platforms
    • What’s a target platform?
    • Determining the host platform config
    • Choosing the host platform with Nix
    • Specifying the host platform
    • Cross compiling for the first time
    • Real-world cross compiling of a Hello World example
    • Developer environment with a cross compiler
    • Next steps
  • Module system
    • What do you need?
    • How long will it take?
  • NixOS
    • Creating NixOS images
    • Testing and deploying NixOS configurations
    • Scaling up

previous

Install Nix

next

First steps

By the Nix documentation team and contributors.

© Copyright 2016-2025, NixOS Foundation.