Flakes are an upcoming feature of nix the package manager.

They do a lot of things, and I am still trying to grasp it fully.

Here are some thing I’ve found out so far:

They are a way to specify all dependencies in a declarative way through:

  • Being explicit about the inputs of the flake
    • In a flake you cannot load local files that are not part of its repository
    • You also cannot load external files without also specifying their sha hash
  • Streamlining lock files, to make sure it stays reproducible

Some important links:

Hemera sitting in front of a laptop with a NixOS logo on it.
Links to this page