aboutsummaryrefslogtreecommitdiffstats
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
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
-rw-r--r--modules/home/desktop-apps.nix6
-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
5 files changed, 51 insertions, 2 deletions
diff --git a/modules/home/desktop-apps.nix b/modules/home/desktop-apps.nix
index a565c18..22a7892 100644
--- a/modules/home/desktop-apps.nix
+++ b/modules/home/desktop-apps.nix
@@ -19,8 +19,10 @@ let
19 # standalone, non-NixOS activations of this shared profile. osConfig is the 19 # standalone, non-NixOS activations of this shared profile. osConfig is the
20 # full NixOS config and is only present when home-manager is integrated 20 # full NixOS config and is only present when home-manager is integrated
21 # into a NixOS system; it's absent for standalone `home-manager switch`. 21 # into a NixOS system; it's absent for standalone `home-manager switch`.
22 gnomeOnlyApps = lib.optional (osConfig.services.desktopManager.gnome.enable or false 22 gnomeOnlyApps = lib.optionals (osConfig.services.desktopManager.gnome.enable or false) [
23 ) pkgs.gnome-tweaks; 23 pkgs.gnome-tweaks
24 pkgs.gnome-extension-manager
25 ];
24 candidateApps = crossPlatformApps ++ linuxOnlyApps ++ gnomeOnlyApps; 26 candidateApps = crossPlatformApps ++ linuxOnlyApps ++ gnomeOnlyApps;
25in 27in
26{ 28{
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.