nix-playgraound/notes/017-templates.md

47 lines
1.1 KiB
Markdown

# Templates
This note covers `14-template/`, which exposes `templates.default` so `nix flake init -t` can scaffold a new flake from files in the repository.
---
## 1. What a Template Output Is
A template output is metadata plus a path:
```nix
templates.default = {
path = ./template;
description = "Scaffold a tiny flake with one dev shell.";
};
```
The `path` points at the directory that should be copied into the new project. The `description` is what users see in `nix flake show`.
---
## 2. Why the Template Lives in Its Own Directory
The template is just ordinary files. In this example, `template/` contains:
- a small `flake.nix`, and
- a short `README.md`.
That separation matters because the example flake and the template flake are doing different jobs:
- `14-template/flake.nix` publishes the template, and
- `14-template/template/flake.nix` is the scaffold that gets copied into a new directory.
---
## 3. Commands to Try
```bash
cd 14-template
nix flake show
mkdir /tmp/template-demo
cd /tmp/template-demo
nix flake init -t /path/to/nix-playground/14-template#default
```