GNOME Shell extensions
All extensions are packaged automatically. They can be found in the pkgs.gnomeXYExtensions for XY being a GNOME version. The package names are the extension’s UUID, which can be a bit unwieldy to use. pkgs.gnomeExtensions is a set of manually curated extensions that match the current pkgs.gnome-shell versions. Their name is human-friendly, compared to the other extensions sets. Some of its extensions are manually packaged.
Automatically packaged extensions
The actual packages are created by buildGnomeExtension.nix, provided the correct arguments are fed into it. The important extension data is stored in extensions.json, one line/item per extension. That file is generated by running update-extensions.py. Furthermore, the automatic generated names are dumped in collisions.json for manual inspection. extensionRenames.nix contains new names for all extensions that collide.
Extensions updates
For everyday updates,
- Run
update-extensions.py. - Update
extensionRenames.nixaccording to the comment at the top.
To package the extensions for new GNOME version,
- Add a new
gnomeXYExtensionsset indefault.nix. - Update
all-packages.nixaccordingly. (grep forgnomeExtensions) - Update
supported_versionsinupdate-extensions.py. - Follow the For everyday updates section.
For GNOME updates,
- Follow the To package the extensions for new GNOME version section if required.
- Update
versions_to_mergevariable in./update-extensions.py. - Run
update-extensions.py --skip-fetch, and updateextensionRenames.nixaccording to the comment at the top. - Update
gnomeExtensionsindefault.nixto the new versions.
Manually packaged extensions
Manually packaged extensions overwrite some of the automatically packaged ones in pkgs.gnomeExtensions. They are listed in manuallyPackaged.nix, every extension has its own sub-folder.