From c2d09c74ab14b3eb8770fb1027e8da1db2d00010 Mon Sep 17 00:00:00 2001 From: Tom van der Lee Date: Thu, 24 Sep 2026 09:41:07 +0000 Subject: Add GNOME Extension Manager on GNOME-enabled NixOS hosts pkgs.gnome-extension-manager joins gnome-tweaks in the osConfig-gated list added in the prior change, so it's provisioned only where GNOME is actually enabled rather than on any Linux system. Co-Authored-By: Claude Sonnet 5 Claude-Session: https://claude.ai/code/session_01HngxrvqEzq8oBEBDtrYJyB --- .../add-gnome-extension-manager/.openspec.yaml | 2 ++ .../add-gnome-extension-manager/proposal.md | 24 ++++++++++++++++++++++ .../specs/desktop-applications/spec.md | 12 +++++++++++ .../changes/add-gnome-extension-manager/tasks.md | 9 ++++++++ 4 files changed, 47 insertions(+) create mode 100644 openspec/changes/add-gnome-extension-manager/.openspec.yaml create mode 100644 openspec/changes/add-gnome-extension-manager/proposal.md create mode 100644 openspec/changes/add-gnome-extension-manager/specs/desktop-applications/spec.md create mode 100644 openspec/changes/add-gnome-extension-manager/tasks.md (limited to 'openspec/changes') diff --git a/openspec/changes/add-gnome-extension-manager/.openspec.yaml b/openspec/changes/add-gnome-extension-manager/.openspec.yaml new file mode 100644 index 0000000..75289e4 --- /dev/null +++ b/openspec/changes/add-gnome-extension-manager/.openspec.yaml @@ -0,0 +1,2 @@ +schema: spec-driven +created: 2026-09-24 diff --git a/openspec/changes/add-gnome-extension-manager/proposal.md b/openspec/changes/add-gnome-extension-manager/proposal.md new file mode 100644 index 0000000..d1d686d --- /dev/null +++ b/openspec/changes/add-gnome-extension-manager/proposal.md @@ -0,0 +1,24 @@ +## Why + +Tom wants the GNOME Shell Extension Manager app ([mjakeman/extension-manager](https://github.com/mjakeman/extension-manager)) available for managing GNOME Shell extensions through a GUI, on NixOS hosts that run GNOME. + +## What Changes + +- Add `pkgs.gnome-extension-manager` to `modules/home/desktop-apps.nix`. Verified against the flake's pinned `nixos-unstable` nixpkgs: the attribute is named `gnome-extension-manager` (not `extension-manager`) and its `meta.homepage` is exactly `https://github.com/mjakeman/extension-manager`, confirming it's the same project; GPL-3.0-or-later license, Linux-only `meta.platforms`. +- Scoped the same way as GNOME Tweaks (added in `add-ghostty-gnome-tweaks-dark-mode`, already archived): gated on `(osConfig.services.desktopManager.gnome.enable or false)`, not on `pkgs.stdenv.hostPlatform.isLinux`. Extension Manager only makes sense where GNOME Shell is actually running — it's a management UI for GNOME Shell extensions — and `modules/home/desktop-apps.nix` is shared by both every NixOS host (GNOME force-enabled) and the standalone, non-NixOS `homeConfigurations."tom@linux"`, which has no GNOME involved. `osConfig ? null` is already present on the module's function signature from the prior change, so no further signature change is needed. +- **BREAKING**: none — additive only. + +## Capabilities + +### New Capabilities +(none) + +### Modified Capabilities +- `desktop-applications`: add a requirement that GNOME Extension Manager is provisioned only where GNOME is enabled, following the same pattern and wording style as the existing "GNOME Tweaks is provisioned only where GNOME is enabled" requirement. + +## Impact + +- **Affected code**: `modules/home/desktop-apps.nix` (add `pkgs.gnome-extension-manager` to the existing `gnomeOnlyApps` list, alongside `pkgs.gnome-tweaks`). +- **Not affected**: `lib/unfree-allowlist.nix` (free-licensed), `modules/nixos/common.nix` (GNOME is already enabled unconditionally for every NixOS host; no further system-level change needed). +- **Dependencies**: nixpkgs' `gnome-extension-manager` package (already present in the pinned `nixos-unstable` input; no new flake inputs). +- **Platforms**: Linux-only in nixpkgs today, and further scoped to NixOS hosts with GNOME enabled via `osConfig` — it will not appear on `tom@darwin`, on the standalone `tom@linux` homeConfiguration, or on a hypothetical future NixOS host that disables GNOME. diff --git a/openspec/changes/add-gnome-extension-manager/specs/desktop-applications/spec.md b/openspec/changes/add-gnome-extension-manager/specs/desktop-applications/spec.md new file mode 100644 index 0000000..87a7043 --- /dev/null +++ b/openspec/changes/add-gnome-extension-manager/specs/desktop-applications/spec.md @@ -0,0 +1,12 @@ +## ADDED Requirements + +### Requirement: GNOME Extension Manager is provisioned only where GNOME is enabled +GNOME Extension Manager SHALL be included in the provisioned package set only where the GNOME desktop is enabled (every NixOS host built from this flake's shared system module), and SHALL be excluded wherever GNOME is not known to be enabled, including standalone (non-NixOS) home-manager activations of the shared profile. + +#### Scenario: Included on a NixOS host with GNOME enabled +- **WHEN** the shared home profile is activated as part of a NixOS host built from this flake's shared system module, where GNOME is enabled +- **THEN** GNOME Extension Manager is included in the provisioned package set + +#### Scenario: Excluded on a standalone activation +- **WHEN** the shared home profile is activated standalone, not as part of a NixOS system (for example via `home-manager switch` on a non-NixOS machine) +- **THEN** GNOME Extension Manager is not included in the provisioned package set, regardless of the host's operating system diff --git a/openspec/changes/add-gnome-extension-manager/tasks.md b/openspec/changes/add-gnome-extension-manager/tasks.md new file mode 100644 index 0000000..6bec0aa --- /dev/null +++ b/openspec/changes/add-gnome-extension-manager/tasks.md @@ -0,0 +1,9 @@ +## 1. GNOME Extension Manager package + +- [x] 1.1 Add `pkgs.gnome-extension-manager` to the `gnomeOnlyApps` list in `modules/home/desktop-apps.nix` (alongside `pkgs.gnome-tweaks`). +- [x] 1.2 Verify `nix eval '.#homeConfigurations."tom@linux".config.home.packages'` excludes `gnome-extension-manager` (standalone, no `osConfig`), while `nix eval '.#nixosConfigurations.test-vm.config.home-manager.users.tom.home.packages'` includes it (NixOS host, GNOME enabled). +- [x] 1.3 Build `nixosConfigurations.test-vm`'s system closure (`nix build '.#nixosConfigurations.test-vm.config.system.build.toplevel'`) and verify it succeeds. + +## 2. Spec sync + +- [x] 2.1 Verify `openspec validate --change add-gnome-extension-manager --strict` passes once the above are implemented, confirming the delta spec matches the shipped behavior. -- cgit v1.3