573f967c39
The idea of having one line per extension for diff reasons mostly worked out well. However, especially around major Gnome updates it happens that extensions only change in the set of supported versions. This information is currently a bit hard to track, since such a change would still result in a diff for the entire line, which can be pretty long. Additionally, it may happen that this applies to many extensions at once, and the way git renders diff (first all removals in a hunk, then all additions) makes it even harder to track because now the change is not local in the diff. Having one line per supported version per extension should solve this problem, while still providing a good compromise in overall line count of the file. It shall be noted that GitHub already refuses to render diffs on this file even for comparatively small updates, therefore this change cannot really make it worse here. |
||
---|---|---|
.. | ||
arcmenu | ||
argos | ||
clock-override | ||
drop-down-terminal | ||
EasyScreenCast | ||
extensionOverridesPatches | ||
gnome-browser-connector | ||
gsconnect | ||
icon-hider | ||
impatience | ||
no-title-bar | ||
pidgin-im-integration | ||
pop-shell | ||
sound-output-device-chooser | ||
system-monitor | ||
taskwhisperer | ||
tilingnome | ||
topicons-plus | ||
valent | ||
window-corner-preview | ||
buildGnomeExtension.nix | ||
collisions.json | ||
default.nix | ||
extensionOverrides.nix | ||
extensionRenames.nix | ||
extensions.json | ||
manuallyPackaged.nix | ||
README.md | ||
update-extensions.py |
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 gnome.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.nix
according to the comment at the top.
For GNOME updates,
- Add a new
gnomeXYExtensions
set - Remove old ones for GNOME versions we don’t want to support any more
- Update
supported_versions
in./update-extensions.py
and re-run it - Change
gnomeExtensions
to the new version - Update
./extensionsRenames.nix
accordingly - Update
all-packages.nix
accordingly (grep forgnomeExtensions
)
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.