diff options
| author | sommerfeld <sommerfeld@sommerfeld.dev> | 2026-09-17 15:05:37 +0100 |
|---|---|---|
| committer | sommerfeld <sommerfeld@sommerfeld.dev> | 2026-09-17 15:05:37 +0100 |
| commit | f25d094d0652e8dedff206ca56671b3548f755ff (patch) | |
| tree | 10bdacf9ba14c03e298a196d3d23c5a4ab8fef47 /scripts/canonical.py | |
| parent | 0b0ebfe0b6a77f07fe6c92f0c9e5312a330e8196 (diff) | |
| download | dotfiles-f25d094d0652e8dedff206ca56671b3548f755ff.tar.gz dotfiles-f25d094d0652e8dedff206ca56671b3548f755ff.tar.bz2 dotfiles-f25d094d0652e8dedff206ca56671b3548f755ff.zip | |
Add a disposable Canonical desktop test VM
Diffstat (limited to 'scripts/canonical.py')
| -rw-r--r-- | scripts/canonical.py | 36 |
1 files changed, 29 insertions, 7 deletions
diff --git a/scripts/canonical.py b/scripts/canonical.py index 2ff6310..db7f773 100644 --- a/scripts/canonical.py +++ b/scripts/canonical.py @@ -81,14 +81,28 @@ def install() -> None: subprocess.run(command, check=True) -def check() -> None: +def require_lab() -> None: + marker = Path("/etc/canonical-lab") + if not marker.is_file() or marker.stat().st_uid != 0: + raise SystemExit("This command requires a root-owned lab marker.") + if subprocess.run( + ["systemd-detect-virt", "--vm", "--quiet"], check=False + ).returncode: + raise SystemExit("This command requires a virtual machine.") + + +def check(lab: bool = False) -> None: + if lab: + require_lab() + print("UNTESTED: company provisioning, authd, and Landscape registration.") commands = [ ["lsb_release", "-ds"], *[ ["systemctl", "is-active", unit] - for unit in ["display-manager", "snapd", "apparmor", "nix-daemon"] + for unit in ["display-manager", "snapd", "apparmor"] ], - ["landscape-config", "--actively-registered"], + ["nix", "store", "ping", "--store", "daemon"], + *([] if lab else [["landscape-config", "--actively-registered"]]), ["snap", "connections", "thunderbird"], ["snap", "list", *packages("snap")], ["gnome-extensions", "list", "--enabled"], @@ -113,14 +127,22 @@ def check() -> None: def main() -> None: parser = argparse.ArgumentParser(description=__doc__) parser.add_argument( - "action", choices=["install", "update", "flatpak-update", "extensions", "check"] + "action", + choices=[ + "install", + "update", + "flatpak-update", + "extensions", + "check", + "lab-check", + ], ) args = parser.parse_args() require_canonical() if args.action == "install": install() - elif args.action == "check": - check() + elif args.action in {"check", "lab-check"}: + check(lab=args.action == "lab-check") else: commands = update_commands() if args.action == "flatpak-update": @@ -128,7 +150,7 @@ def main() -> None: ["flatpak", "update", "--user", "--assumeyes", *packages("flatpak")] ] elif args.action == "extensions": - commands = [["gext", "install", *packages("extensions")]] + commands = [["gext", "--filesystem", "install", *packages("extensions")]] for command in commands: subprocess.run(command, check=True) |
