Commit Graph

32 Commits

Author SHA1 Message Date
Michael Hoang
19a209c75a cli/templates: only catch ClanError 2025-09-16 16:07:54 +02:00
Jörg Thalheim
cb9c8e5b5a try{300,301,400}: fix 2025-08-26 15:17:16 +02:00
Jörg Thalheim
b38b10c9a6 automatic ruff fixes 2025-08-26 11:07:57 +02:00
Jörg Thalheim
954301465f s608: ignore 2025-08-25 14:07:59 +02:00
Jörg Thalheim
0ec2c32ff8 ruff: apply automatic unsafe fixes 2025-08-25 11:34:41 +02:00
Jörg Thalheim
ea2d6aab65 ruff: apply automatic fixes 2025-08-25 11:34:41 +02:00
Johannes Kirschbauer
f4d6edc501 api/modules: unify frontmatter with module manifest 2025-08-20 20:15:41 +02:00
Johannes Kirschbauer
cbbc235570 api/modules: rename Frontmatter -> ModulesFrontmatter to make room for other disk templates metadata 2025-08-20 19:46:28 +02:00
hsjobeki
b421698f70 Merge pull request 'templates: fix urls for relative file paths' (#4520) from fix-template-urls into main
Reviewed-on: https://git.clan.lol/clan/clan-core/pulls/4520
2025-07-29 15:19:20 +00:00
Johannes Kirschbauer
2776294de0 templates: url add support for home and abspath 2025-07-29 17:04:15 +02:00
Johannes Kirschbauer
7784df8180 templates: fix urls for relative file paths 2025-07-29 15:01:29 +02:00
a-kenji
0a43721a45 pkgs/clan/lib: Fix clan template creation when already in a flake
Fix clan template creation when already in a flake.
Currently we already fail with very clear and descriptive error when
trying to evaluate the template of the flake we are in:
```
Failed to select template 'flake-parts' from flake '/tmp/superclan' (via attribute path: /tmp/superclan#clanInternals.templates.clan."flake-parts")
```

This is undesired behavior.
When we are trying to create a clan with `clan flakes create`.
We can't rely on the fact that the flake we are currently in exports flake templates.

Now we *try* to evaluate the flake we are in upon creation.
If there are no clan templates available, we now will fall back to
builtin templates.

Closes: #4472
2025-07-26 15:21:44 +02:00
a-kenji
5b5f1975c5 pkgs/cli/lib: Allow clan templates list to function outside a clan
Allow `clan templates list` to function outside a clan.
Currently when bootstrapping a clan and trying to list the templates
it fails as follows:

```
Traceback (most recent call last):
  File "/nix/store/pkrsr8zr90bps1fwrl8n74zbb9g038b8-clan-cli/bin/.clan-wrapped", line 9, in <module>
    sys.exit(main())
             ~~~~^^
  File "/nix/store/pkrsr8zr90bps1fwrl8n74zbb9g038b8-clan-cli/lib/python3.13/site-packages/clan_cli/cli.py", line 516, in main
    args.func(args)
    ~~~~~~~~~^^^^^^
  File "/nix/store/pkrsr8zr90bps1fwrl8n74zbb9g038b8-clan-cli/lib/python3.13/site-packages/clan_cli/templates/list.py", line 11, in list_command
    templates = list_templates(args.flake)
  File "/nix/store/pkrsr8zr90bps1fwrl8n74zbb9g038b8-clan-cli/lib/python3.13/site-packages/clan_lib/templates/__init__.py", line 20, in list_templates
    custom_templates = flake.select("clanInternals.inventoryClass.templatesPerSource")
                       ^^^^^^^^^^^^
AttributeError: 'NoneType' object has no attribute 'select'
```

With the change we get the following output:
```
Available 'clan' templates
├── <builtin>
│   ├── default: Initialize a new clan flake
│   ├── flake-parts: Flake-parts
│   └── minimal: for clans managed via (G)UI
Available 'disko' templates
├── <builtin>
│   └── single-disk: A simple ext4 disk with a single partition
Available 'machine' templates
├── <builtin>
│   ├── flash-installer: Initialize a new flash-installer machine
│   └── new-machine: Initialize a new machine
```

Allowing to check for available templates without needing to have a
clan, which improves the bootstrapping experience.
2025-07-25 16:14:43 +02:00
Johannes Kirschbauer
a34ec8ed22 templates: add post_process hook for tests or other extensions 2025-07-22 18:07:26 +02:00
Johannes Kirschbauer
ceb0221daf lib/disks: move from api to templates 2025-07-13 13:57:02 +02:00
Johannes Kirschbauer
c1bad93d36 templates/copy: fix use shutil to copy hidden dot files 2025-07-12 15:08:40 +02:00
Johannes Kirschbauer
615607730d lib/copy: fix, copying the content of tempate directory, not the directory itself 2025-07-11 18:53:54 +02:00
Johannes Kirschbauer
d49ff467db Templates: remove InputPrio and related classes 2025-07-06 19:08:45 +02:00
Johannes Kirschbauer
f2db543651 Templates: migrate clan templates to flake identifiers 2025-07-06 15:37:10 +02:00
Johannes Kirschbauer
e18fe13430 Templates: remove outdated check for 'configuration.nix' in machine templates 2025-07-06 15:37:10 +02:00
Johannes Kirschbauer
8de70da475 Templates: replace leftover MachineID, by Machine 2025-07-06 15:37:10 +02:00
Johannes Kirschbauer
091c567570 templates_url: add clan template url test 2025-07-06 15:37:10 +02:00
Johannes Kirschbauer
adb726c318 Templates/list: display templates via exposed nix value 2025-07-06 14:37:03 +02:00
Johannes Kirschbauer
fafb4d8b4e fix(templates): add error handling 2025-06-11 20:22:20 +02:00
Johannes Kirschbauer
1724f127d5 feat(templates_urls): short circuit input names 2025-06-11 20:21:29 +02:00
Johannes Kirschbauer
1e3e7b6d37 Chore(machine/templates): simplify template args for machines command 2025-06-11 17:00:08 +02:00
Johannes Kirschbauer
1249a18901 Feat(template_url): substitute local refs
To execute the CLI in foreign directories
.#new-machine needs to get tranformed into /path/to/clan#new-machine
Otherwise it might pick-up some random flake that is in scope where the cli started executing
2025-06-11 16:59:32 +02:00
Johannes Kirschbauer
0280d3a6a6 Feat(templates): init with_machine_template context handler 2025-06-11 16:52:52 +02:00
Johannes Kirschbauer
5acac54f48 Feat(templates): add template selector tranformation 2025-06-11 16:52:50 +02:00
Johannes Kirschbauer
92fdba3965 Chore(templates): move helper functions into a util file 2025-06-10 19:38:10 +02:00
Johannes Kirschbauer
ca8a228fba chore(flake): move 'inputs-from' into templates handling 2025-06-09 20:40:20 +02:00
lassulus
03990ef7f0 clan-cli: clan_cli.templates -> clan_lib.templates 2025-05-20 16:08:02 +02:00