Some checks failed
Periodic Merges (6h) / master → staging-nixos (push) Failing after 12m50s
Periodic Merges (6h) / master → staging-next (push) Failing after 12m54s
Periodic Merges (24h) / merge-base(master,staging) → haskell-updates (push) Failing after 11m54s
Periodic Merges (6h) / staging-next → staging (push) Failing after 12m13s
Periodic Merges (24h) / staging-next-25.05 → staging-25.05 (push) Failing after 13m24s
Periodic Merges (24h) / release-25.05 → staging-next-25.05 (push) Failing after 14m28s
33 lines
2.0 KiB
Markdown
33 lines
2.0 KiB
Markdown
# 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,
|
||
|
||
1. Run `update-extensions.py`.
|
||
2. Update `extensionRenames.nix` according to the comment at the top.
|
||
|
||
#### To package the extensions for new GNOME version,
|
||
|
||
1. Add a new `gnomeXYExtensions` set in `default.nix`.
|
||
2. Update `all-packages.nix` accordingly. (grep for `gnomeExtensions`)
|
||
3. Update `supported_versions` in `update-extensions.py`.
|
||
4. Follow the [For everyday updates](#for-everyday-updates) section.
|
||
|
||
#### For GNOME updates,
|
||
|
||
1. Follow the [To package the extensions for new GNOME version](#to-package-the-extensions-for-new-gnome-version) section if required.
|
||
2. Update `versions_to_merge` variable in `./update-extensions.py`.
|
||
3. Run `update-extensions.py --skip-fetch`, and update `extensionRenames.nix` according to the comment at the top.
|
||
4. Update `gnomeExtensions` in `default.nix` to 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.
|