Commit Graph

237 Commits

Author SHA1 Message Date
lassulus
ccd7e3d91d vars password-store: fix secret mangling due to string encoding 2025-07-07 02:35:17 +02:00
lassulus
bbb7773567 rename lingering clan.vars -> clan.core.vars 2025-07-07 00:59:52 +02:00
Johannes Kirschbauer
045e297438 vars/api: rename 'get_generators_closure' into 'get_machine_generators' 2025-07-06 20:57:42 +02:00
Johannes Kirschbauer
360766f7a6 api/flash: refactor into 'list_flash_options' 2025-07-06 20:57:42 +02:00
Johannes Kirschbauer
ad48771c98 vars/api: rename, unregister some unused vars functions 2025-07-06 20:57:42 +02:00
Johannes Kirschbauer
7370212ec2 Vars: rename public functions into 'create_machine_vars' 2025-07-06 20:57:42 +02:00
Johannes Kirschbauer
3af529d76e Vars: rename 'keygen' to 'create_secrets_user' 2025-07-06 20:57:42 +02:00
lassulus
2f0f9a9fba vars/password-store: replace passBackend option with passPackage
The `clan.core.vars.settings.passBackend` option has been replaced with
`clan.vars.password-store.passPackage` to provide better type safety and
clearer configuration.

Changes:
- Remove problematic mkRemovedOptionModule that caused circular dependency
- Add proper option definition with assertion-based migration
- Users setting the old option get clear migration instructions
- Normal evaluation continues to work for users not using the old option

Migration: Replace `clan.core.vars.settings.passBackend = "passage"`
with `clan.vars.password-store.passPackage = pkgs.passage`
2025-07-06 12:46:39 +02:00
DavHau
bfc8c4c399 refactor: reduce coupling to Machine class in vars module
- Change Generator class to store machine name as string instead of Machine reference
- Update Generator.generators_from_flake() to only require machine name and flake
- Refactor check_vars() to accept machine name and flake instead of Machine object
- Create Machine instances only when needed for specific operations

This continues the effort to reduce dependencies on the Machine class,
making the codebase more modular and easier to refactor.
2025-07-05 16:30:05 +07:00
DavHau
3d2ede9f8e refactor: remove Machine.vars_generators() method
Replace all calls to machine.vars_generators() with direct calls to
Generator.generators_from_flake() to make the dependency more explicit
and remove unnecessary indirection.

This reduces coupling to the Machine class, making the codebase more
modular and easier to refactor in the future.
2025-07-05 15:26:31 +07:00
Qubasa
0d1e1d9796 treefmt/ruff: Set python lint version to 3.13. Fix all new lints coming up. 2025-07-04 17:11:31 +02:00
hsjobeki
2c8b457fd5 Merge pull request 'Clan_lib: add filtering by tag to list API' (#4197) from cli-fixup into main
Reviewed-on: https://git.clan.lol/clan/clan-core/pulls/4197
2025-07-04 11:53:43 +00:00
Johannes Kirschbauer
b0c24edd48 cli: move some references to duplicate list machines 2025-07-04 09:32:43 +02:00
lassulus
c760561dbd refactor: remove _serialized field and implement efficient vars selection
- Remove _serialized field from vars interface to prevent serialization
  errors with throwing passBackend field
- Implement direct selection of generator fields using multi-select syntax
- Refactor vars_generators() to use new Generator.from_flake() method that
  selects only safe fields (avoiding non-serializable values)
- Remove unused legacy methods: Generator.from_json(), Var.from_json(),
  Prompt.from_json()
- Update precaching to match new selection approach

This fixes the serialization errors that were preventing vars from working
with the new password-store implementation by avoiding the problematic
_serialized field entirely.
2025-07-03 18:53:36 +02:00
lassulus
a055b4d1eb refactor: remove deployment.json and use direct selectors
- Remove deployment.json file generation from outputs.nix
- Add throw for deprecated deployment.file usage with upgrade instructions
- Remove vars data from deployment.data
- Update Machine class to use direct select() calls instead of deployment property
- Update all deployment property accesses to use direct selectors
- Add precaching for frequently accessed values in update.py:
  - Module paths for facts and vars
  - Deployment settings (requireExplicitUpdate, nixosMobileWorkaround)
  - Services and generators data
  - Secret upload locations
- This removes unnecessary JSON serialization and makes the code more composable
2025-07-02 20:56:23 +02:00
Jörg Thalheim
41862ef3d3 vars: make debug logging less verbose 2025-07-01 15:04:03 +02:00
lassulus
cc923d5638 refactor: replace eval_nix/build_nix with machine.select()
- Remove nix(), eval_nix(), and build_nix() methods from Machine class
- Add select() method that handles machine-specific attribute prefixes
- Update all usages to use machine.select() directly
- Handle Path conversion and tmp_store logic at call sites
- This simplifies the Machine API and prepares for deployment.json removal
2025-06-29 17:00:27 +02:00
Qubasa
cd1d49b603 clan-lib: Move nix_options from Machine class to Flake class 2025-06-24 19:03:20 +02:00
Michael Hoang
7f667ccc16 cli: don't error when more than one SOPS key found locally 2025-06-13 14:37:19 +07:00
Johannes Kirschbauer
2685db33d7 Refactor(cli/list_machines): rename to list_full_machines
This makes it clear that this should be used with care
It is potentially more expensive to create the full object, therefore it should be discouraged by its longer name
This listing is implemented based on the basic listing, where each item is turned into the bigger machine class
2025-06-09 13:40:57 +02:00
DavHau
d9f69d7007 generate-test-vars: fake prompt inputs
Use fake prompt inputs when generating vars for testing
2025-05-31 17:14:26 +07:00
DavHau
de3a08ab63 sops: initialize age_plugins early
This avoids re-initializing the Flake object deep in the tree, which in turn leads to issue when overriding the Flake for testing, eg the URl would reset.
2025-05-31 11:27:17 +07:00
Jörg Thalheim
dcb430037f vars upload: also add become_root 2025-05-28 20:35:45 +02:00
Jörg Thalheim
ddab4b5b94 re-store controllmaster in various places where it got removed. 2025-05-28 16:21:30 +02:00
Qubasa
8b1968cca6 clan-cli: Move Machine object to clan_lib 2025-05-22 19:11:19 +02:00
Qubasa
e14f30bdc0 clan-cli: Rename Host -> Remote move to clan_lib and mark as frozen 2025-05-22 14:08:27 +02:00
DavHau
d833b62614 GUI: add credentials page (vars)
add it to machine details
2025-05-21 11:47:04 +00:00
lassulus
cb84722c11 clan-cli: clan_cli.bwrap -> clan_lib.bwrap 2025-05-21 12:06:38 +02:00
Johannes Kirschbauer
d3fc1725f0 docs: replace outdates reference links to 'guides' in the cli 2025-05-20 18:49:35 +02:00
lassulus
f2bf142e80 clan-cli: clan_cli.git -> clan_lib.git 2025-05-20 14:35:14 +02:00
lassulus
ed89352ea1 clan-cli: clan_cli.dirs -> clan_lib.dirs 2025-05-20 12:08:30 +02:00
lassulus
9a0c6f55bd clan-cli: clan_cli.cmd -> clan_lib.cmd 2025-05-19 19:07:24 +02:00
lassulus
cb74273da4 clan-cli: move clan_cli.nix to clan_lib.nix 2025-05-19 18:40:36 +02:00
Mic92
c6284e3c48 Merge pull request 'move flake test into flake folder' (#3682) from flake-in-lib into main
Reviewed-on: https://git.clan.lol/clan/clan-core/pulls/3682
2025-05-18 20:13:14 +00:00
Johannes Kirschbauer
af58c32238 Docs: unify 'manual' with 'guides' folder
This is one of the final steps towards strictly following
https://diataxis.fr/
2025-05-18 20:40:40 +02:00
lassulus
fa052f45bd clan_lib: move clan_lib.flake.flake to clan_lib.flake 2025-05-16 19:28:36 +02:00
Johannes Kirschbauer
fe0507b47c refactor: move clan_cli.error to clan_lib.error 2025-05-16 16:14:39 +02:00
lassulus
5423b9af41 clan_cli: move flake class to clan_lib 2025-05-16 13:38:47 +02:00
Qubasa
2f0114a236 clan-cli: Unify list_machines and use flake caching 2025-05-16 10:47:49 +02:00
Mic92
e4394b8dc7 Merge pull request 'Add multiline-hidden-prompt' (#3632) from multiline-hidden-prompt into main
Reviewed-on: https://git.clan.lol/clan/clan-core/pulls/3632
Reviewed-by: hsjobeki <hsjobeki@gmail.com>
Reviewed-by: lopter <louis@opter.org>
2025-05-15 08:10:34 +00:00
lassulus
f9b910b5cb clan-cli vars upload: create dir if provided 2025-05-15 06:42:24 +00:00
Jörg Thalheim
31cb76721f prompt: handle KeyboardInterrupt more gracefully 2025-05-14 19:53:36 +02:00
Jörg Thalheim
b5d132b193 do not instantiate vars_generators several times
We should really not have any property that has side effects i.e.
spawning processes.
2025-05-14 19:53:36 +02:00
Jörg Thalheim
75fa7ac609 add multiline-hidden prompt for both ui and cli 2025-05-14 19:53:36 +02:00
Mic92
5ba0189648 Merge pull request 'clan/vars: Improve help for list subcommand' (#3576) from kenji/clan-core:ke-fix-vars-help into main
Reviewed-on: https://git.clan.lol/clan/clan-core/pulls/3576
2025-05-12 14:04:27 +00:00
a-kenji
bdeb514eb1 clan/vars: Improve help for list subcommand
Closes #3550
2025-05-12 14:57:50 +02:00
a-kenji
02c5b60493 clan/vars: Fix vars help hyperlink 2025-05-12 14:55:34 +02:00
Jeremy Fleischman
f3c2e8f33f Add /bin/sh to bubblewrap sandbox
I ran into this error when trying to run `opendkim-genkey` in a vars
generator:

```console
=========================================================================== Command ===========================================================================
nix \
    --extra-experimental-features 'nix-command flakes' \
    shell \
    --inputs-from /nix/store/9r3ddw80dz4qzci9pj57ppbh6gy2pgv9-clan-cli/lib/python3.12/site-packages/clan_cli/nixpkgs \
    'nixpkgs#bash' \
    'nixpkgs#bubblewrap' \
    -c bwrap \
    --unshare-all --tmpfs \
    / \
    --ro-bind /nix/store \
    /nix/store \
    --dev /dev \
    --bind /tmp/nix-shell.ClOjgJ/vars-kh4qrnas \
    /tmp/nix-shell.ClOjgJ/vars-kh4qrnas \
    --chdir / \
    --bind /proc \
    /proc \
    --uid 1000 \
    --gid 1000 \
    -- bash \
    -c /nix/store/p0089w4y1w3h535g7ipv4jl4r6mb2hs2-generator-dkim-playground.jflei.com.mail

=========================================================================== Stderr ============================================================================
perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
	LANGUAGE = (unset),
	LC_ALL = (unset),
	LC_CTYPE = (unset),
	LC_NUMERIC = (unset),
	LC_COLLATE = (unset),
	LC_TIME = (unset),
	LC_MESSAGES = (unset),
	LC_MONETARY = (unset),
	LC_ADDRESS = (unset),
	LC_IDENTIFICATION = (unset),
	LC_MEASUREMENT = (unset),
	LC_PAPER = (unset),
	LC_TELEPHONE = (unset),
	LC_NAME = (unset),
	LANG = "en_US.UTF-8"
    are supported and installed on your system.
perl: warning: Falling back to the standard locale ("C").
Can't exec "/bin/sh": No such file or directory at /nix/store/nfawbww80p1hgpymfgq1vq8wqlak75yh-opendkim-2.11.0-Beta2/sbin/.opendkim-genkey-wrapped line 139.
.opendkim-genkey-wrapped: openssl died with signal %d
127
Return Code: 1

1 hosts failed with an error. Check the logs above
```

As we allow `/bin/sh` in the nix build sandbox, I assume we're OK
allowing it here as well?
2025-05-09 18:33:08 -07:00
Jörg Thalheim
1037bd115b Revert "Merge pull request 'clan-cli: Refactor the API to use the Flake object' (#3531) from Qubasa/clan-core:replace_machine_name_with_machine_obj into main"
This reverts commit c09618b323, reversing
changes made to 45b2539455.
2025-05-07 15:24:57 +02:00
Mic92
c09618b323 Merge pull request 'clan-cli: Refactor the API to use the Flake object' (#3531) from Qubasa/clan-core:replace_machine_name_with_machine_obj into main
Reviewed-on: https://git.clan.lol/clan/clan-core/pulls/3531
2025-05-07 13:21:13 +00:00