nix-flakes

Installation
SKILL.md

Nix Flakes

Modern Nix project management with hermeticity through flake.lock. Every dependency is locked to a specific revision for reproducibility.

Project Setup

Initialize a new flake:

nix flake init                    # Basic flake in current directory
nix flake new hello -t templates#hello  # From template

Manage dependencies:

nix flake update                  # Update all inputs in flake.lock
nix flake update nixpkgs          # Update specific input only
nix flake lock                    # Lock missing entries without updating

Building & Running

Always prefix local paths with path: to include untracked files:

nix build path:.                  # Build default package
nix build path:.#packageName      # Build a specific output
nix run path:.                    # Run the default app
nix run path:.#appName            # Run a specific app
nix run github:numtide/treefmt    # Run from a remote flake

Development Environments

Run commands inside a devShell:

nix develop path:. --command make build
nix develop path:. --command env  # Check the environment

The --command flag is required in headless environments to avoid interactive mode.

Inspecting Flakes

nix flake show path:.             # List all outputs
nix flake metadata path:.         # See inputs and revisions
nix eval path:.#packages.x86_64-linux.default.name  # Evaluate a specific output

Basic Flake Structure

{
  description = "A basic flake";

  inputs = {
    nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable";
  };

  outputs = { self, nixpkgs }:
    let
      system = "x86_64-linux";
      pkgs = nixpkgs.legacyPackages.${system};
    in {
      packages.${system}.default = pkgs.hello;
      devShells.${system}.default = pkgs.mkShell {
        buildInputs = [ pkgs.git pkgs.vim ];
      };
    };
}

Best Practices

  • Always commit flake.lock for reproducibility
  • Use path: prefix when building local flakes to include untracked files
  • Always use --command with nix develop in scripts and headless environments

Related Skills

  • nix: Run packages temporarily and evaluate expressions
  • nh: Cleaner interface for NixOS/Home Manager operations
Related skills
Installs
54
Repository
knoopx/pi
GitHub Stars
46
First Seen
Jan 24, 2026