aboutsummaryrefslogtreecommitdiffstats
path: root/openspec/changes/add-gnome-extension-manager
diff options
context:
space:
mode:
authorGravatar Tom van der Lee <tom@vanderlee.com>2026-09-24 09:41:07 +0000
committerGravatar Tom van der Lee <tom@vanderlee.com>2026-09-24 09:41:07 +0000
commitc2d09c74ab14b3eb8770fb1027e8da1db2d00010 (patch)
treed220da5886bab486b2ca315f303817a57e152db0 /openspec/changes/add-gnome-extension-manager
parent06e724f11e3408a14b7c997f457ea163786e0938 (diff)
downloaddesktop-flake-c2d09c74ab14b3eb8770fb1027e8da1db2d00010.tar.gz
desktop-flake-c2d09c74ab14b3eb8770fb1027e8da1db2d00010.tar.bz2
desktop-flake-c2d09c74ab14b3eb8770fb1027e8da1db2d00010.zip
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 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01HngxrvqEzq8oBEBDtrYJyB
Diffstat (limited to 'openspec/changes/add-gnome-extension-manager')
-rw-r--r--openspec/changes/add-gnome-extension-manager/.openspec.yaml2
-rw-r--r--openspec/changes/add-gnome-extension-manager/proposal.md24
-rw-r--r--openspec/changes/add-gnome-extension-manager/specs/desktop-applications/spec.md12
-rw-r--r--openspec/changes/add-gnome-extension-manager/tasks.md9
4 files changed, 47 insertions, 0 deletions
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 @@
1schema: spec-driven
2created: 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 @@
1## Why
2
3Tom 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.
4
5## What Changes
6
7- 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`.
8- 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.
9- **BREAKING**: none — additive only.
10
11## Capabilities
12
13### New Capabilities
14(none)
15
16### Modified Capabilities
17- `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.
18
19## Impact
20
21- **Affected code**: `modules/home/desktop-apps.nix` (add `pkgs.gnome-extension-manager` to the existing `gnomeOnlyApps` list, alongside `pkgs.gnome-tweaks`).
22- **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).
23- **Dependencies**: nixpkgs' `gnome-extension-manager` package (already present in the pinned `nixos-unstable` input; no new flake inputs).
24- **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 @@
1## ADDED Requirements
2
3### Requirement: GNOME Extension Manager is provisioned only where GNOME is enabled
4GNOME 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.
5
6#### Scenario: Included on a NixOS host with GNOME enabled
7- **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
8- **THEN** GNOME Extension Manager is included in the provisioned package set
9
10#### Scenario: Excluded on a standalone activation
11- **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)
12- **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## 1. GNOME Extension Manager package
2
3- [x] 1.1 Add `pkgs.gnome-extension-manager` to the `gnomeOnlyApps` list in `modules/home/desktop-apps.nix` (alongside `pkgs.gnome-tweaks`).
4- [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).
5- [x] 1.3 Build `nixosConfigurations.test-vm`'s system closure (`nix build '.#nixosConfigurations.test-vm.config.system.build.toplevel'`) and verify it succeeds.
6
7## 2. Spec sync
8
9- [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.