Commit Graph

8968 Commits

Author SHA1 Message Date
a-kenji
35315d9596 pkgs/clan/cli: Add clan flake validation to clan vars check
This now gives a clearer error than:
```
Traceback (most recent call last):
  File "/nix/store/mznnb8il3njp6jxn5i57d0myjdh6cs0i-clan-cli/bin/.clan-wrapped", line 9, in <module>
    sys.exit(main())
             ~~~~^^
  File "/nix/store/mznnb8il3njp6jxn5i57d0myjdh6cs0i-clan-cli/lib/python3.13/site-packages/clan_cli/cli.py", line 516, in main
    args.func(args)
    ~~~~~~~~~^^^^^^
  File "/nix/store/mznnb8il3njp6jxn5i57d0myjdh6cs0i-clan-cli/lib/python3.13/site-packages/clan_cli/vars/check.py", line 113, in check_command
    ok = check_vars(args.machine, args.flake, generator_name=args.generator)
  File "/nix/store/mznnb8il3njp6jxn5i57d0myjdh6cs0i-clan-cli/lib/python3.13/site-packages/clan_cli/vars/check.py", line 103, in check_vars
    status = vars_status(machine_name, flake, generator_name=generator_name)
  File "/nix/store/mznnb8il3njp6jxn5i57d0myjdh6cs0i-clan-cli/lib/python3.13/site-packages/clan_cli/vars/check.py", line 41, in vars_status
    generators = Generator.generators_from_flake(machine.name, machine.flake)
  File "/nix/store/mznnb8il3njp6jxn5i57d0myjdh6cs0i-clan-cli/lib/python3.13/site-packages/clan_cli/vars/generate.py", line 67, in generators_from_flake
    generators_data = flake.select_machine(
                      ^^^^^^^^^^^^^^^^^^^^
AttributeError: 'NoneType' object has no attribute 'select_machine'
```

When not being in a flake.
2025-07-29 10:25:28 +02:00
a-kenji
86ac1c4405 pkgs/cli: Validate clan flake for clan machines list 2025-07-29 10:14:34 +02:00
hsjobeki
a06ba7f0f9 Merge pull request 'ui/refactor: move machine specifics from scene into MachineManager' (#4511) from ui-fixes into main
Reviewed-on: https://git.clan.lol/clan/clan-core/pulls/4511
2025-07-29 08:08:43 +00:00
Johannes Kirschbauer
323de27651 ui: fixup types 2025-07-29 10:03:42 +02:00
Johannes Kirschbauer
782e8b330d UI: move machine specifics into MachineManager 2025-07-29 10:01:48 +02:00
Johannes Kirschbauer
682d8c786c ui: add MachineManager
Handles maping solidjs signals to updating and maintaining a map of MachineRepr
2025-07-29 10:01:18 +02:00
Johannes Kirschbauer
9e32be4e48 ui: add machineRepr to handle machine visual representation 2025-07-29 10:00:36 +02:00
Johannes Kirschbauer
686976a143 ui: add objectRegistry for memory management 2025-07-29 10:00:12 +02:00
hsjobeki
a2404f5fbb Merge pull request 'ui: disable scene rotation' (#4510) from ui-fixes into main
Reviewed-on: https://git.clan.lol/clan/clan-core/pulls/4510
2025-07-28 18:42:14 +00:00
Johannes Kirschbauer
a6a25075f7 ui: disable scene rotation 2025-07-28 20:38:17 +02:00
hsjobeki
ec71badc3c Merge pull request 'ui: fix memory management in renderLoop' (#4509) from ui-fixes into main
Reviewed-on: https://git.clan.lol/clan/clan-core/pulls/4509
2025-07-28 18:34:02 +00:00
Johannes Kirschbauer
1c4469e20c ui: fix memory management in renderLoop 2025-07-28 20:30:28 +02:00
hsjobeki
6fa4348aa6 Merge pull request 'ui: move rendering logic into renderLoop singleton' (#4508) from ui-fixes into main
Reviewed-on: https://git.clan.lol/clan/clan-core/pulls/4508
2025-07-28 18:25:29 +00:00
Johannes Kirschbauer
dac06531d4 ui: move rendering logic into renderLoop singleton 2025-07-28 20:20:42 +02:00
DavHau
cb89fb97f1 clan machines update: add --fetch-local feature
Motivation: updating a machine fails, if it depends on a private github repo, as the remote will likely not be authenticated.

This adds a new flag `--fetch-local` to `clan machines update` which fetches all flake inputs prior to building, then uploads them to the build-host.

This also adds a new error message, when flake inputs could not fetched, to hint the user to use `--fetch-local`
2025-07-28 17:01:42 +07:00
hsjobeki
6a8d7aa5fd Merge pull request 'api: init get_machine_writeability' (#4504) from cli-fixes into main
Reviewed-on: https://git.clan.lol/clan/clan-core/pulls/4504
2025-07-28 08:47:43 +00:00
Luis Hebendanz
63bcfc4809 Merge pull request 'pkgs/cli: Remove uncommented logic from creation test' (#4497) from kenji/ke-remove-uncommented into main
Reviewed-on: https://git.clan.lol/clan/clan-core/pulls/4497
2025-07-28 03:48:57 +00:00
Johannes Kirschbauer
e73350f6af test: fix add modules 2025-07-27 12:48:04 +02:00
Johannes Kirschbauer
98a0b9600b api/writability: add docstring 2025-07-27 12:47:37 +02:00
Johannes Kirschbauer
abeb517a22 api/writability: add unit test 2025-07-27 00:03:05 +02:00
Johannes Kirschbauer
fbdbcfa6d5 InventoryStore: factor write into _write for actual disk interaction 2025-07-27 00:02:47 +02:00
Johannes Kirschbauer
303af9af6b api: init get_machine_writeability 2025-07-27 00:01:51 +02:00
Johannes Kirschbauer
414e412e7e persist/writeability: expose is writeable key helper 2025-07-27 00:01:36 +02:00
Johannes Kirschbauer
c2e84f11af persist/util: add field helper 2025-07-27 00:01:07 +02:00
Johannes Kirschbauer
bf2eb000d5 api/set_machine: add unit tests 2025-07-26 23:59:51 +02:00
hsjobeki
b01029ccd4 Merge pull request 'pyproject: remove global SLF001 ignore' (#4503) from cli-fixes into main
Reviewed-on: https://git.clan.lol/clan/clan-core/pulls/4503
2025-07-26 18:28:06 +00:00
Johannes Kirschbauer
798c1a9277 pyproject: remove global SLF001 ignore
ignoring SLF001 (private member access) globally is not ideal, as it disables a valuable check throughout the entire codebase
disable SLF001 only for test files instead
2025-07-26 20:24:20 +02:00
hsjobeki
d6327e0bc9 Merge pull request 'adr-01: add clarifying sentence' (#4502) from adr-fix into main
Reviewed-on: https://git.clan.lol/clan/clan-core/pulls/4502
2025-07-26 16:01:46 +00:00
Johannes Kirschbauer
f5b2be63d5 adr-01: add clarifying sentence 2025-07-26 17:58:02 +02:00
Kenji Berthold
6e904de655 Merge pull request 'pkgs/cli: machines install handle invalid character' (#4488) from kenji/ke-clan-machines-install-prompt into main
Reviewed-on: https://git.clan.lol/clan/clan-core/pulls/4488
2025-07-26 13:29:10 +00: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
51eb7bd0b5 pkgs/cli/create: Show less output by default
This masks the output of `nix flake update`, since it is quite verbose
and takes attention away to usually more interesting and pressing
information.

Example:
```
unpacking 'https://git.clan.lol/clan/clan-core/archive/main.tar.gz' into the Git cache...
warning: creating lock file "/tmp/hoowowo/clan/flake.lock":
• Added input 'clan-core':
    '1d8ac7b1b5.tar.gz?narHash=sha256-eBxi0ZMwaALfMsP70N0FRMlOSq0qePv%2BjebVBHXlOqk%3D' (2025-07-25)
• Added input 'clan-core/data-mesher':
    '18dfd42bdb.tar.gz?narHash=sha256-jyoEbaXa8/MwVQ%2BPajUdT63y3gYhgD9o7snO/SLaikw%3D' (2025-07-21)
• Added input 'clan-core/data-mesher/flake-parts':
    follows 'clan-core/flake-parts'
• Added input 'clan-core/data-mesher/nixpkgs':
    follows 'clan-core/nixpkgs'
• Added input 'clan-core/data-mesher/treefmt-nix':
    follows 'clan-core/treefmt-nix'
• Added input 'clan-core/disko':
    'github:nix-community/disko/545aba02960caa78a31bd9a8709a0ad4b6320a5c?narHash=sha256-7lrVrE0jSvZHrxEzvnfHFE/Wkk9DDqb%2BmYCodI5uuB8%3D' (2025-07-21)
• Added input 'clan-core/disko/nixpkgs':
    follows 'clan-core/nixpkgs'
• Added input 'clan-core/flake-parts':
    'github:hercules-ci/flake-parts/644e0fc48951a860279da645ba77fe4a6e814c5e?narHash=sha256-TVcTNvOeWWk1DXljFxVRp%2BE0tzG1LhrVjOGGoMHuXio%3D' (2025-07-21)
• Added input 'clan-core/flake-parts/nixpkgs-lib':
    follows 'clan-core/nixpkgs'
• Added input 'clan-core/nix-darwin':
    'github:nix-darwin/nix-darwin/e04a388232d9a6ba56967ce5b53a8a6f713cdfcf?narHash=sha256-HsJM3XLa43WpG%2B665aGEh8iS8AfEwOIQWk3Mke3e7nk%3D' (2025-06-30)
• Added input 'clan-core/nix-darwin/nixpkgs':
    follows 'clan-core/nixpkgs'
• Added input 'clan-core/nix-select':
    '69d8bf5961.tar.gz?narHash=sha256-IVaoOGDIvAa/8I0sdiiZuKptDldrkDWUNf/%2BezIRhyc%3D' (2025-04-18)
• Added input 'clan-core/nixos-facter-modules':
    'github:nix-community/nixos-facter-modules/14df13c84552a7d1f33c1cd18336128fbc43f920?narHash=sha256-uP9Xxw5XcFwjX9lNoYRpybOnIIe1BHfZu5vJnnPg3Jc%3D' (2025-06-20)
• Added input 'clan-core/nixpkgs':
    'https://releases.nixos.org/nixpkgs/nixpkgs-25.11pre827262.be9e214982e2/nixexprs.tar.xz?narHash=sha256-lUi%2BsPH7Kuh9uP3PyfgbENcJGReUM8Ffk9GxGBFbSN8%3D' (1980-01-01)
• Added input 'clan-core/sops-nix':
    'github:Mic92/sops-nix/2c8def626f54708a9c38a5861866660395bb3461?narHash=sha256-GllP7cmQu7zLZTs9z0J2gIL42IZHa9CBEXwBY9szT0U%3D' (2025-07-15)
• Added input 'clan-core/sops-nix/nixpkgs':
    follows 'clan-core/nixpkgs'
• Added input 'clan-core/systems':
    'github:nix-systems/default/da67096a3b9bf56a91d16901293e51ba5b49a27e?narHash=sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768%3D' (2023-04-09)
• Added input 'clan-core/treefmt-nix':
    'github:numtide/treefmt-nix/421b56313c65a0815a52b424777f55acf0b56ddf?narHash=sha256-tzbhc4XttkyEhswByk5R38l%2BztN9UDbnj0cTcP6Hp9A%3D' (2025-07-20)
• Added input 'clan-core/treefmt-nix/nixpkgs':
    follows 'clan-core/nixpkgs'
• Added input 'flake-parts':
    'github:hercules-ci/flake-parts/644e0fc48951a860279da645ba77fe4a6e814c5e?narHash=sha256-TVcTNvOeWWk1DXljFxVRp%2BE0tzG1LhrVjOGGoMHuXio%3D' (2025-07-21)
• Added input 'flake-parts/nixpkgs-lib':
    follows 'clan-core/nixpkgs'
• Added input 'nixpkgs':
    follows 'clan-core/nixpkgs'
```

Those are 48 lines that seldom carry actual useful information.
This can be shown on running `clan flakes create` with the `--debug`
flag.

Closes: #4496
2025-07-26 14:11:56 +02:00
Kenji Berthold
1d8ac7b1b5 Merge pull request 'pkgs/cli/lib: Allow clan templates list to function outside a clan' (#4490) from kenji/ke-templates-list-without-clan into main
Reviewed-on: https://git.clan.lol/clan/clan-core/pulls/4490
Reviewed-by: hsjobeki <hsjobeki@gmail.com>
2025-07-25 14:32:15 +00: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
Kenji Berthold
bac2f15668 Merge pull request 'docs: Fix typos in hero section of the documentation index' (#4495) from kenji/ke-docs-fix-typo into main
Reviewed-on: https://git.clan.lol/clan/clan-core/pulls/4495
2025-07-25 12:45:19 +00:00
Kenji Berthold
3804c62c7d Merge pull request 'docs: Fix grammar of getting started card' (#4494) from kenji/ke-fix-grammar into main
Reviewed-on: https://git.clan.lol/clan/clan-core/pulls/4494
2025-07-25 12:45:13 +00:00
a-kenji
326f418c88 pkgs/cli: Remove uncommented logic from creation test 2025-07-25 14:44:20 +02:00
a-kenji
9ebba12e5b docs: Fix typos in hero section of the documentation index 2025-07-25 14:30:32 +02:00
a-kenji
1924d222e1 docs: Fix grammar of getting started card 2025-07-25 14:29:19 +02:00
Luis Hebendanz
15d88ba595 Merge pull request 'docs: Replace backup guide with the new one from Bruno Adele' (#4493) from Qubasa/clan-core:improv_docs3 into main
Reviewed-on: https://git.clan.lol/clan/clan-core/pulls/4493
2025-07-25 10:34:01 +00:00
Qubasa
986e74663a docs: Replace backup guide with the new one from Bruno Adele
docs: fix build errors
2025-07-25 17:30:05 +07:00
hsjobeki
2d85230097 Merge pull request 'templates(default): Enable modern GNOME options by default' (#4489) from kenji/ke-templates-enable-gnome into main
Reviewed-on: https://git.clan.lol/clan/clan-core/pulls/4489
2025-07-25 09:57:05 +00:00
Luis Hebendanz
0e1fe60d8a Merge pull request 'Improve landing page for docs, re-enable footer navigation' (#4491) from Qubasa/clan-core:improv_docs into main
Reviewed-on: https://git.clan.lol/clan/clan-core/pulls/4491
2025-07-25 09:32:44 +00:00
Qubasa
cad7d2d95f docs: reword concepts description
docs: fix build errors
2025-07-25 16:29:22 +07:00
Qubasa
e1f57cd618 docs: Improve the documentation index page 2025-07-25 16:07:18 +07:00
Qubasa
51b4b0b647 docs: FIx old nix symlinks not being cleaned up 2025-07-25 15:20:26 +07:00
Qubasa
abc78bac57 docs: Add a navigation footer button 2025-07-25 15:20:03 +07:00
Luis Hebendanz
510ab2811a Merge pull request 'docs(borgbackup): add detailed usage and management guide for borgbackup clanServices' (#4484) from badele/fork-clan-core:docs/clanservices-borgbackup into main
Reviewed-on: https://git.clan.lol/clan/clan-core/pulls/4484
2025-07-25 07:43:44 +00:00
Bruno Adelé
5e81b26b87 fix(readme): correct relative link to state documentation 2025-07-25 09:08:08 +02:00
Bruno Adelé
2618d0d68f Merge branch 'main' into docs/clanservices-borgbackup 2025-07-24 22:43:19 +00:00