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.