Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

gnome: Package all the Gnome extensions … again?! #118232

Merged
merged 2 commits into from
May 21, 2021

Conversation

piegamesde
Copy link
Member

image

Take II, aka "Revert #118184" CC @mweinelt @maralorn

Motivation for this change

An automatic way to do this that scales up and requires little manual intervention is really needed. It works by scraping extensions.gnome.org with a python script,
that writes all relevant information into the extensions.json. Every attribute of besaid file can be built into a package using buildShellExtension.

Extensions are grouped by Gnome shell version for practical reasons. Only extensions for Gnome 3.36 and 3.38 were added for now. If desired, we can always add older versions later on.
The extensions are exposed as an attrset, pkgs.gnome36Extensions and pkgs.gnome38Extensions respectively. The extension's UUID is used as attribute name.

pkgs.gnomeExtensions is now enhanced with automatically generated extensions, taken from the set matching the currently packaged Gnome Shell. It is manually curated and all attributes have a proper human-friendly name. Manual conflict resolution has to be done when there are multiple extensions that share the same human-friendly name. The previously packaged extensions are left as-is, but in the future we can remove those who don't require manual packaging in the future.

Things done
  • Tested using sandboxing (nix.useSandbox on NixOS, or option sandbox in nix.conf on non-NixOS linux)
  • Built on platform(s)
    • NixOS
    • macOS
    • other Linux distributions
  • Tested via one or more NixOS test(s) if existing and applicable for the change (look inside nixos/tests)
  • Tested compilation of all pkgs that depend on this change using nix-shell -p nixpkgs-review --run "nixpkgs-review pr 108414"
  • Tested execution of all binary files (usually in ./result/bin/)
  • Determined the impact on package closure size (by running nix path-info -S before and after)
  • Ensured that relevant documentation is up to date
  • Fits CONTRIBUTING.md.

@github-actions github-actions bot added the 6.topic: GNOME GNOME desktop environment and its underlying platform label Apr 1, 2021
@ofborg ofborg bot added 8.has: package (new) This PR adds a new package 11.by: package-maintainer This PR was created by the maintainer of the package it changes 10.rebuild-darwin: 0 This PR does not cause any packages to rebuild on Darwin 10.rebuild-linux: 101-500 labels Apr 1, 2021
@r-rmcgibbo
Copy link

Result of nixpkgs-review pr 118232 at 8c60f059 run on x86_64-linux 1

83 packages failed to build:
6 packages skipped due to time constraints:
  • gnomeExtensions.big-avatar
  • gnomeExtensions.bitcoin-markets
  • gnomeExtensions.bottom-panel
  • gnomeExtensions.click-to-close-overview
  • gnomeExtensions.jetbrains-search-provider
  • gnomeExtensions.spotify-artwork-fixer
215 packages built successfully:
  • gnomeExtensions.activities-icons
  • gnomeExtensions.activities-menu-for-apps-and-windows
  • gnomeExtensions.activity-app-launcher
  • gnomeExtensions.add-to-desktop
  • gnomeExtensions.adwaita-theme-switcher
  • gnomeExtensions.airpods-battery-status
  • gnomeExtensions.all-ip-addresses
  • gnomeExtensions.always-show-titles-in-overview
  • gnomeExtensions.animation-tweaks
  • gnomeExtensions.app-grid-tweaks
  • gnomeExtensions.app-switcher-current-workspace-first
  • gnomeExtensions.application-view-text
  • gnomeExtensions.application-volume-mixer
  • gnomeExtensions.arc-menu
  • gnomeExtensions.ascii-emoji-buckets
  • gnomeExtensions.audio-output-switcher
  • gnomeExtensions.auto-select-headset
  • gnomeExtensions.azan-islamic-prayer-times
  • gnomeExtensions.backslide
  • gnomeExtensions.battery-time-percentage-compact
  • gnomeExtensions.binaryclock
  • gnomeExtensions.bluetooth-battery
  • gnomeExtensions.blur-my-shell
  • gnomeExtensions.blur-provider
  • gnomeExtensions.bottompanel
  • gnomeExtensions.bowser-gnome-extension
  • gnomeExtensions.break-reminder
  • gnomeExtensions.brightness-control-using-ddcutil
  • gnomeExtensions.brightness-panel-menu-indicator
  • gnomeExtensions.bubblemail
  • gnomeExtensions.calculator-button
  • gnomeExtensions.cleaner-overview
  • gnomeExtensions.cmus-status
  • gnomeExtensions.color-app-menu-icon
  • gnomeExtensions.corona-tracker
  • gnomeExtensions.coverflow-alt-tab
  • gnomeExtensions.cpu-power-governor
  • gnomeExtensions.cpu-power-manager
  • gnomeExtensions.custom-3-finger-gestures
  • gnomeExtensions.deja-dup-backup-button
  • gnomeExtensions.denon-avr-controler
  • gnomeExtensions.desk-changer
  • gnomeExtensions.desktop-icons
  • gnomeExtensions.desktop-icons-ng-ding
  • gnomeExtensions.dim-on-battery-power
  • gnomeExtensions.disable-unredirect-fullscreen-windows
  • gnomeExtensions.disable-workspace-switch-animation
  • gnomeExtensions.dismiss-notifications-on-right-click
  • gnomeExtensions.display-switcher
  • gnomeExtensions.distinct-windows
  • gnomeExtensions.downfall
  • gnomeExtensions.draw-on-you-screen
  • gnomeExtensions.drop-down-terminal-x
  • gnomeExtensions.duckduckgo-search-provider
  • gnomeExtensions.easy-docker-containers
  • gnomeExtensions.executor
  • gnomeExtensions.extensions-sync
  • gnomeExtensions.eye-and-mouse-extended
  • gnomeExtensions.favorites-only-dash
  • gnomeExtensions.files-view
  • gnomeExtensions.floating-dock
  • gnomeExtensions.floating-dock-2
  • gnomeExtensions.fly-pie
  • gnomeExtensions.fnlock-switch-thinkpad-compact-usb-keyboard
  • gnomeExtensions.focus
  • gnomeExtensions.force-quit
  • gnomeExtensions.fully-transparent-top-bar
  • gnomeExtensions.fuzzy-clock
  • gnomeExtensions.generic-monitor
  • gnomeExtensions.get-out-of-the-way
  • gnomeExtensions.github-notifications
  • gnomeExtensions.gitlab-extension
  • gnomeExtensions.gnome-trash
  • gnomeExtensions.gnomesome
  • gnomeExtensions.gnordvpn-local
  • gnomeExtensions.gtile
  • gnomeExtensions.guillotine
  • gnomeExtensions.hack
  • gnomeExtensions.harddisk-led
  • gnomeExtensions.hibernate-status-button
  • gnomeExtensions.hide-dash
  • gnomeExtensions.hide-dash-forked
  • gnomeExtensions.hide-minimized
  • gnomeExtensions.hide-panel
  • gnomeExtensions.hide-top-bar
  • gnomeExtensions.horizontal-workspaces
  • gnomeExtensions.hotel-manager
  • gnomeExtensions.hplip-menu
  • gnomeExtensions.ibus-font-setting
  • gnomeExtensions.icinga-checker
  • gnomeExtensions.improved-workspace-indicator
  • gnomeExtensions.intel-gpu-indicator
  • gnomeExtensions.internet-radio
  • gnomeExtensions.internet-speed-meter
  • gnomeExtensions.ip-finder
  • gnomeExtensions.kaskadeur
  • gnomeExtensions.keep-awake
  • gnomeExtensions.keyboard-modifiers-status
  • gnomeExtensions.keypad-tiling
  • gnomeExtensions.kitsch
  • gnomeExtensions.krypto
  • gnomeExtensions.looking-glass-button
  • gnomeExtensions.lunar-calendar
  • gnomeExtensions.mailnag
  • gnomeExtensions.maximize-to-empty-workspace
  • gnomeExtensions.maximize-to-workspace-with-history
  • gnomeExtensions.middle-click-to-close-in-overview
  • gnomeExtensions.minimalist-calendar-2
  • gnomeExtensions.minimalist-calendar-3
  • gnomeExtensions.minimize-all
  • gnomeExtensions.mmod-panel
  • gnomeExtensions.multi-monitors-add-on
  • gnomeExtensions.mute-spotify-ads
  • gnomeExtensions.myhiddentopbar
  • gnomeExtensions.network-speed
  • gnomeExtensions.no-title-bar-forked
  • gnomeExtensions.nordvpn-connect
  • gnomeExtensions.notejot-button
  • gnomeExtensions.notes
  • gnomeExtensions.nothing-to-say
  • gnomeExtensions.notification-centerselenium-h
  • gnomeExtensions.notification-timeout
  • gnomeExtensions.nvidia-gpu-stats-tool
  • gnomeExtensions.on-screen-keyboard-button
  • gnomeExtensions.one-drive
  • gnomeExtensions.openweather
  • gnomeExtensions.optimus-manager-indicator
  • gnomeExtensions.overview-full-bright
  • gnomeExtensions.overview-navigation
  • gnomeExtensions.panel-icons
  • gnomeExtensions.panel-osd
  • gnomeExtensions.panel-world-clock-lite
  • gnomeExtensions.persistent-email-notifications
  • gnomeExtensions.personalize
  • gnomeExtensions.pi-hole
  • gnomeExtensions.ping-indicator
  • gnomeExtensions.podman-as-docker
  • gnomeExtensions.printers
  • gnomeExtensions.put-windows
  • gnomeExtensions.quake-mode
  • gnomeExtensions.quicklists
  • gnomeExtensions.rdesktop-launcher
  • gnomeExtensions.refresh-wifi-connections
  • gnomeExtensions.reminder-alarm-clock
  • gnomeExtensions.remove-alttab-delay-v2
  • gnomeExtensions.remove-app-menu
  • gnomeExtensions.reorder-workspaces
  • gnomeExtensions.resource-monitor
  • gnomeExtensions.right-click-down
  • gnomeExtensions.rounded-corners
  • gnomeExtensions.runcat
  • gnomeExtensions.scanlines-effect
  • gnomeExtensions.screenshot-directory
  • gnomeExtensions.screenshot-locations
  • gnomeExtensions.screenshot-tool
  • gnomeExtensions.sensory-perception
  • gnomeExtensions.sermon
  • gnomeExtensions.shamsi-calendar
  • gnomeExtensions.shelltile
  • gnomeExtensions.shortcuts
  • gnomeExtensions.show-application-view-when-workspace-empty
  • gnomeExtensions.show-applications-instead-of-overview
  • gnomeExtensions.show-desktop-button
  • gnomeExtensions.showtime
  • gnomeExtensions.showtime-horizontal
  • gnomeExtensions.simple-monitor
  • gnomeExtensions.simple-task-bar
  • gnomeExtensions.snap-manager
  • gnomeExtensions.snow
  • gnomeExtensions.status-area-horizontal-spacing
  • gnomeExtensions.sticky-r-terminal
  • gnomeExtensions.sticky-terminal
  • gnomeExtensions.stocks-extension
  • gnomeExtensions.switch-focus-type
  • gnomeExtensions.switch-two-layouts
  • gnomeExtensions.switcher
  • gnomeExtensions.synaptic-button
  • gnomeExtensions.system-menu
  • gnomeExtensions.taskbar-updated
  • gnomeExtensions.text-translator
  • gnomeExtensions.the-circles-desktop-widget
  • gnomeExtensions.three-finger-window-move
  • gnomeExtensions.time
  • gnomeExtensions.tocuhpad-window-switcher
  • gnomeExtensions.toggle-alacritty
  • gnomeExtensions.toggle-night-light
  • gnomeExtensions.top-bar-visuals-transparent-and-blur
  • gnomeExtensions.top-indicator-app
  • gnomeExtensions.topiconsfix
  • gnomeExtensions.transcodeappsearch
  • gnomeExtensions.translate-indicator
  • gnomeExtensions.transparent-shell
  • gnomeExtensions.transparent-top-bar
  • gnomeExtensions.transparent-top-bar-adjustable-transparency
  • gnomeExtensions.transparent-top-panel
  • gnomeExtensions.transparent-window-moving
  • gnomeExtensions.trash
  • gnomeExtensions.tray-icons
  • gnomeExtensions.tray-icons-reloaded
  • gnomeExtensions.unity-like-app-switcher
  • gnomeExtensions.unix-timestamp-clock
  • gnomeExtensions.vitals
  • gnomeExtensions.volume-mixer
  • gnomeExtensions.vpnstatus-indicator
  • gnomeExtensions.wacom-indicator
  • gnomeExtensions.window-is-ready-notification-remover
  • gnomeExtensions.window-search-provider
  • gnomeExtensions.window-session-manager
  • gnomeExtensions.window-switcher-current-workspace-first
  • gnomeExtensions.windowoverlay-icons
  • gnomeExtensions.worksets
  • gnomeExtensions.workspaces-bar
  • gnomeExtensions.workspaces-thumbnails-applet
  • gnomeExtensions.yaru-remix-theme-toggle
  • gnomeExtensions.zilence
2 suggestions:
  • warning: unused-argument

    Unused argument: name.
    Near pkgs/desktops/gnome-3/extensions/buildGnomeExtension.nix:8:7:

      |
    8 |     , name
      |       ^
    
  • warning: unused-argument

    Unused argument: pkgs.
    Near pkgs/desktops/gnome-3/extensions/buildGnomeExtension.nix:1:3:

      |
    1 | { pkgs, lib, stdenv, fetchurl, unzip }:
      |   ^
    

Note that build failures may predate this PR, and could be nondeterministic or hardware dependent.
Please exercise your independent judgement.

@mweinelt mweinelt requested a review from a team April 1, 2021 13:07
@piegamesde
Copy link
Member Author

Can somebody please validate the results from the bot? It shows some hash mismatches, but works for me …

@mweinelt
Copy link
Member

mweinelt commented Apr 1, 2021

Most errors due to hash mismatches AFAICT.

Result of nixpkgs-review pr 118232 run on x86_64-linux 1

90 packages failed to build:
  • gnomeExtensions.activities-configurator
  • gnomeExtensions.alttab-mod
  • gnomeExtensions.appindicator-support
  • gnomeExtensions.applications-menu
  • gnomeExtensions.applications-overview-tooltip
  • gnomeExtensions.archlinux-updates-indicator
  • gnomeExtensions.arrange-windows
  • gnomeExtensions.auto-move-windows
  • gnomeExtensions.babar
  • gnomeExtensions.big-avatar
  • gnomeExtensions.bing-wallpaper-changer
  • gnomeExtensions.bitcoin-markets
  • gnomeExtensions.bluetooth-quick-connect
  • gnomeExtensions.bottom-panel
  • gnomeExtensions.bring-out-submenu-of-power-offlogout-button
  • gnomeExtensions.color-picker
  • gnomeExtensions.compiz-alike-magic-lamp-effect
  • gnomeExtensions.compiz-alike-windows-effect
  • gnomeExtensions.compiz-windows-effect
  • gnomeExtensions.control-blur-effect-on-lock-screen
  • gnomeExtensions.custom-vpn-toggler
  • gnomeExtensions.ddterm
  • gnomeExtensions.desktop-lyric
  • gnomeExtensions.disconnect-wifi
  • gnomeExtensions.eruption-profile-switcher
  • gnomeExtensions.extension-list
  • gnomeExtensions.extensions-in-system-menu
  • gnomeExtensions.frippery-applications-menu
  • gnomeExtensions.fullscreen-hot-corner
  • gnomeExtensions.fullscreen-notifications
  • gnomeExtensions.haguichi-indicator
  • gnomeExtensions.hide-top-bar
  • gnomeExtensions.hue-lights
  • gnomeExtensions.ibus-tweaker
  • gnomeExtensions.ideapad
  • gnomeExtensions.just-perfection
  • gnomeExtensions.kimpanel
  • gnomeExtensions.kitchen-timer
  • gnomeExtensions.latency-monitor
  • gnomeExtensions.launch-new-instance
  • gnomeExtensions.light-dict
  • gnomeExtensions.lock-keys
  • gnomeExtensions.lock-keys-2
  • gnomeExtensions.maximize-to-empty-workspace
  • gnomeExtensions.messaging-menu
  • gnomeExtensions.move-clock
  • gnomeExtensions.native-window-placement
  • gnomeExtensions.net-speed-simplified
  • gnomeExtensions.new-mail-indicator
  • gnomeExtensions.night-light-slider
  • gnomeExtensions.overview-improved
  • gnomeExtensions.panel-favorites
  • gnomeExtensions.panel-scroll
  • gnomeExtensions.persian-calendar
  • gnomeExtensions.pixel-saver
  • gnomeExtensions.places-status-indicator
  • gnomeExtensions.random-wallpaper
  • gnomeExtensions.removable-drive-menu
  • gnomeExtensions.resource-monitor
  • gnomeExtensions.run-or-raise
  • gnomeExtensions.screen-word-translate
  • gnomeExtensions.screenshot-window-sizer
  • gnomeExtensions.settingscenter
  • gnomeExtensions.shu-zhi
  • gnomeExtensions.simple-net-speed
  • gnomeExtensions.snowy
  • gnomeExtensions.soft-brightness
  • gnomeExtensions.ss-subscriber
  • gnomeExtensions.ssh-search-provider-reborn
  • gnomeExtensions.stocks-extension
  • gnomeExtensions.switch-workspace
  • gnomeExtensions.syncthing-indicator
  • gnomeExtensions.system-action-hibernate
  • gnomeExtensions.task-widget
  • gnomeExtensions.tiling-assistant
  • gnomeExtensions.todotxt
  • gnomeExtensions.transparent-window
  • gnomeExtensions.tweaks-in-system-menu
  • gnomeExtensions.unblank
  • gnomeExtensions.unlock-dialog-background
  • gnomeExtensions.user-themes
  • gnomeExtensions.user-themes-x
  • gnomeExtensions.utcclock
  • gnomeExtensions.wandering-pixel
  • gnomeExtensions.weeks-start-on-monday-again
  • gnomeExtensions.window-list
  • gnomeExtensions.windownavigator
  • gnomeExtensions.workspace-indicator
  • gnomeExtensions.workspace-indicator-2
  • gnomeExtensions.x11-gestures
214 packages built:
  • gnomeExtensions.activities-icons
  • gnomeExtensions.activities-menu-for-apps-and-windows
  • gnomeExtensions.activity-app-launcher
  • gnomeExtensions.add-to-desktop
  • gnomeExtensions.adwaita-theme-switcher
  • gnomeExtensions.airpods-battery-status
  • gnomeExtensions.all-ip-addresses
  • gnomeExtensions.always-show-titles-in-overview
  • gnomeExtensions.animation-tweaks
  • gnomeExtensions.app-grid-tweaks
  • gnomeExtensions.app-switcher-current-workspace-first
  • gnomeExtensions.application-view-text
  • gnomeExtensions.application-volume-mixer
  • gnomeExtensions.arc-menu
  • gnomeExtensions.ascii-emoji-buckets
  • gnomeExtensions.audio-output-switcher
  • gnomeExtensions.auto-select-headset
  • gnomeExtensions.azan-islamic-prayer-times
  • gnomeExtensions.backslide
  • gnomeExtensions.battery-time-percentage-compact
  • gnomeExtensions.binaryclock
  • gnomeExtensions.bluetooth-battery
  • gnomeExtensions.blur-my-shell
  • gnomeExtensions.blur-provider
  • gnomeExtensions.bottompanel
  • gnomeExtensions.bowser-gnome-extension
  • gnomeExtensions.break-reminder
  • gnomeExtensions.brightness-control-using-ddcutil
  • gnomeExtensions.brightness-panel-menu-indicator
  • gnomeExtensions.bubblemail
  • gnomeExtensions.calculator-button
  • gnomeExtensions.cleaner-overview
  • gnomeExtensions.click-to-close-overview
  • gnomeExtensions.cmus-status
  • gnomeExtensions.color-app-menu-icon
  • gnomeExtensions.corona-tracker
  • gnomeExtensions.coverflow-alt-tab
  • gnomeExtensions.cpu-power-governor
  • gnomeExtensions.cpu-power-manager
  • gnomeExtensions.custom-3-finger-gestures
  • gnomeExtensions.deja-dup-backup-button
  • gnomeExtensions.denon-avr-controler
  • gnomeExtensions.desk-changer
  • gnomeExtensions.desktop-icons
  • gnomeExtensions.desktop-icons-ng-ding
  • gnomeExtensions.dim-on-battery-power
  • gnomeExtensions.disable-unredirect-fullscreen-windows
  • gnomeExtensions.disable-workspace-switch-animation
  • gnomeExtensions.dismiss-notifications-on-right-click
  • gnomeExtensions.display-switcher
  • gnomeExtensions.distinct-windows
  • gnomeExtensions.downfall
  • gnomeExtensions.draw-on-you-screen
  • gnomeExtensions.drop-down-terminal-x
  • gnomeExtensions.duckduckgo-search-provider
  • gnomeExtensions.easy-docker-containers
  • gnomeExtensions.executor
  • gnomeExtensions.extensions-sync
  • gnomeExtensions.eye-and-mouse-extended
  • gnomeExtensions.favorites-only-dash
  • gnomeExtensions.files-view
  • gnomeExtensions.floating-dock
  • gnomeExtensions.floating-dock-2
  • gnomeExtensions.fly-pie
  • gnomeExtensions.fnlock-switch-thinkpad-compact-usb-keyboard
  • gnomeExtensions.focus
  • gnomeExtensions.force-quit
  • gnomeExtensions.fully-transparent-top-bar
  • gnomeExtensions.fuzzy-clock
  • gnomeExtensions.generic-monitor
  • gnomeExtensions.get-out-of-the-way
  • gnomeExtensions.github-notifications
  • gnomeExtensions.gitlab-extension
  • gnomeExtensions.gnome-trash
  • gnomeExtensions.gnomesome
  • gnomeExtensions.gnordvpn-local
  • gnomeExtensions.gtile
  • gnomeExtensions.guillotine
  • gnomeExtensions.hack
  • gnomeExtensions.harddisk-led
  • gnomeExtensions.hibernate-status-button
  • gnomeExtensions.hide-dash
  • gnomeExtensions.hide-dash-forked
  • gnomeExtensions.hide-minimized
  • gnomeExtensions.hide-panel
  • gnomeExtensions.horizontal-workspaces
  • gnomeExtensions.hotel-manager
  • gnomeExtensions.hplip-menu
  • gnomeExtensions.ibus-font-setting
  • gnomeExtensions.icinga-checker
  • gnomeExtensions.improved-workspace-indicator
  • gnomeExtensions.intel-gpu-indicator
  • gnomeExtensions.internet-radio
  • gnomeExtensions.internet-speed-meter
  • gnomeExtensions.ip-finder
  • gnomeExtensions.jetbrains-search-provider
  • gnomeExtensions.kaskadeur
  • gnomeExtensions.keep-awake
  • gnomeExtensions.keyboard-modifiers-status
  • gnomeExtensions.keypad-tiling
  • gnomeExtensions.kitsch
  • gnomeExtensions.krypto
  • gnomeExtensions.looking-glass-button
  • gnomeExtensions.lunar-calendar
  • gnomeExtensions.mailnag
  • gnomeExtensions.maximize-to-workspace-with-history
  • gnomeExtensions.middle-click-to-close-in-overview
  • gnomeExtensions.minimalist-calendar-2
  • gnomeExtensions.minimalist-calendar-3
  • gnomeExtensions.minimize-all
  • gnomeExtensions.mmod-panel
  • gnomeExtensions.multi-monitors-add-on
  • gnomeExtensions.mute-spotify-ads
  • gnomeExtensions.myhiddentopbar
  • gnomeExtensions.network-speed
  • gnomeExtensions.no-title-bar-forked
  • gnomeExtensions.nordvpn-connect
  • gnomeExtensions.notejot-button
  • gnomeExtensions.notes
  • gnomeExtensions.nothing-to-say
  • gnomeExtensions.notification-centerselenium-h
  • gnomeExtensions.notification-timeout
  • gnomeExtensions.nvidia-gpu-stats-tool
  • gnomeExtensions.on-screen-keyboard-button
  • gnomeExtensions.one-drive
  • gnomeExtensions.openweather
  • gnomeExtensions.optimus-manager-indicator
  • gnomeExtensions.overview-full-bright
  • gnomeExtensions.overview-navigation
  • gnomeExtensions.panel-icons
  • gnomeExtensions.panel-osd
  • gnomeExtensions.panel-world-clock-lite
  • gnomeExtensions.persistent-email-notifications
  • gnomeExtensions.personalize
  • gnomeExtensions.pi-hole
  • gnomeExtensions.ping-indicator
  • gnomeExtensions.podman-as-docker
  • gnomeExtensions.printers
  • gnomeExtensions.put-windows
  • gnomeExtensions.quake-mode
  • gnomeExtensions.quicklists
  • gnomeExtensions.rdesktop-launcher
  • gnomeExtensions.refresh-wifi-connections
  • gnomeExtensions.reminder-alarm-clock
  • gnomeExtensions.remove-alttab-delay-v2
  • gnomeExtensions.remove-app-menu
  • gnomeExtensions.reorder-workspaces
  • gnomeExtensions.right-click-down
  • gnomeExtensions.rounded-corners
  • gnomeExtensions.runcat
  • gnomeExtensions.scanlines-effect
  • gnomeExtensions.screenshot-directory
  • gnomeExtensions.screenshot-locations
  • gnomeExtensions.screenshot-tool
  • gnomeExtensions.sensory-perception
  • gnomeExtensions.sermon
  • gnomeExtensions.shamsi-calendar
  • gnomeExtensions.shelltile
  • gnomeExtensions.shortcuts
  • gnomeExtensions.show-application-view-when-workspace-empty
  • gnomeExtensions.show-applications-instead-of-overview
  • gnomeExtensions.show-desktop-button
  • gnomeExtensions.showtime
  • gnomeExtensions.showtime-horizontal
  • gnomeExtensions.simple-monitor
  • gnomeExtensions.simple-task-bar
  • gnomeExtensions.snap-manager
  • gnomeExtensions.snow
  • gnomeExtensions.spotify-artwork-fixer
  • gnomeExtensions.status-area-horizontal-spacing
  • gnomeExtensions.sticky-r-terminal
  • gnomeExtensions.sticky-terminal
  • gnomeExtensions.switch-focus-type
  • gnomeExtensions.switch-two-layouts
  • gnomeExtensions.switcher
  • gnomeExtensions.synaptic-button
  • gnomeExtensions.system-menu
  • gnomeExtensions.taskbar-updated
  • gnomeExtensions.text-translator
  • gnomeExtensions.the-circles-desktop-widget
  • gnomeExtensions.three-finger-window-move
  • gnomeExtensions.time
  • gnomeExtensions.tocuhpad-window-switcher
  • gnomeExtensions.toggle-alacritty
  • gnomeExtensions.toggle-night-light
  • gnomeExtensions.top-bar-visuals-transparent-and-blur
  • gnomeExtensions.top-indicator-app
  • gnomeExtensions.topiconsfix
  • gnomeExtensions.transcodeappsearch
  • gnomeExtensions.translate-indicator
  • gnomeExtensions.transparent-shell
  • gnomeExtensions.transparent-top-bar
  • gnomeExtensions.transparent-top-bar-adjustable-transparency
  • gnomeExtensions.transparent-top-panel
  • gnomeExtensions.transparent-window-moving
  • gnomeExtensions.trash
  • gnomeExtensions.tray-icons
  • gnomeExtensions.tray-icons-reloaded
  • gnomeExtensions.unity-like-app-switcher
  • gnomeExtensions.unix-timestamp-clock
  • gnomeExtensions.vitals
  • gnomeExtensions.volume-mixer
  • gnomeExtensions.vpnstatus-indicator
  • gnomeExtensions.wacom-indicator
  • gnomeExtensions.window-is-ready-notification-remover
  • gnomeExtensions.window-search-provider
  • gnomeExtensions.window-session-manager
  • gnomeExtensions.window-switcher-current-workspace-first
  • gnomeExtensions.windowoverlay-icons
  • gnomeExtensions.worksets
  • gnomeExtensions.workspaces-bar
  • gnomeExtensions.workspaces-thumbnails-applet
  • gnomeExtensions.yaru-remix-theme-toggle
  • gnomeExtensions.zilence

@piegamesde
Copy link
Member Author

Okay, I can reproduce after a garbage collect. The URLs changed their hash, wtf?

@SuperSandro2000
Copy link
Member

@ofborg eval

@ofborg ofborg bot added 2.status: merge conflict This PR has merge conflicts with the target branch and removed 2.status: merge conflict This PR has merge conflicts with the target branch labels Apr 2, 2021
@rhoriguchi
Copy link
Contributor

rhoriguchi commented Apr 3, 2021

Please exclude fuzzy-app-search, it has a patch which is needed for it to work.


Edit: arcmenu needs a patch as well, maybe exclude the ones which have patches or other special dependencies.

@piegamesde
Copy link
Member Author

Thanks for the notice. The current approach is to package all of them in a hit-or-miss style (pkgs.gnome36Extensions and pkgs.gnome38Extensions), and then have a curated pkgs.gnomeExtensions that contains all the required patches and curation to make it work well. pkgs.gnomeExtensions will also be in version sync with the current gnome-shell version.

@piegamesde
Copy link
Member Author

I finally found the root cause for the hash mismatches. The description can be updated at any point it time through the web site, and that is reflected in the metadata.json.

@piegamesde piegamesde force-pushed the gnome-extensions branch 4 times, most recently from 180c939 to f89ac30 Compare April 5, 2021 20:38
@piegamesde
Copy link
Member Author

It's really ugly, but I think the hash mismatches are now finally and completely resolved.

# hash.
extraPostFetch = let
# The replacement of \\u -> \u is to undo a workaround we do in update-extensions.py which does the opposite operation,
# because Nix can't handle unicode in JSON. The other substitutions are fallout from the previous.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Just a note that it should be in the next release: NixOS/nix#4368

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@andir told me (IIRC) that this was not enough, one cannot simply depend on the currently released version do to upgrade compatibility or something like that. Especially, all the build tooling (Hydra, Ofborgs) needs to be updated or otherwise things will break ^^. But if I get a "go" on that one, I'll be happy to change it.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yeah, it is still too soon to get rid of this. Just adding a note for future reference.

@github-actions github-actions bot removed the 6.topic: GNOME GNOME desktop environment and its underlying platform label May 10, 2021
@piegamesde piegamesde force-pushed the gnome-extensions branch 2 times, most recently from fcf589e to b9df287 Compare May 10, 2021 21:09
Copy link
Member

@jtojnar jtojnar left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Reviewed the Nix part, looks great so far.

pkgs/desktops/gnome-3/extensions/buildGnomeExtension.nix Outdated Show resolved Hide resolved
pkgs/desktops/gnome/extensions/default.nix Outdated Show resolved Hide resolved
pkgs/desktops/gnome/extensions/default.nix Outdated Show resolved Hide resolved
@@ -0,0 +1,74 @@
{
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why are we committing this? Is not this easily derivable from extensions.json?

We might want to add assertion that all collisions are handled in renames either way since instruction in a comment will get easily ignored.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I am committing this because the diff is really useful when doing updates. I thought about adding a test that checks for collision handling, but I personally don't need it for maintaining.

pkgs/desktops/gnome/extensions/default.nix Outdated Show resolved Hide resolved
pkgs/desktops/gnome/extensions/default.nix Outdated Show resolved Hide resolved
pkgs/desktops/gnome/extensions/default.nix Outdated Show resolved Hide resolved
pkgs/desktops/gnome/extensions/default.nix Outdated Show resolved Hide resolved
pkgs/desktops/gnome/extensions/default.nix Outdated Show resolved Hide resolved
pkgs/desktops/gnome/extensions/default.nix Outdated Show resolved Hide resolved
@piegamesde piegamesde force-pushed the gnome-extensions branch 2 times, most recently from bcccc50 to 0de59fa Compare May 12, 2021 11:41
@piegamesde piegamesde requested a review from jtojnar May 12, 2021 20:18
@github-actions github-actions bot added the 6.topic: GNOME GNOME desktop environment and its underlying platform label May 18, 2021
@piegamesde
Copy link
Member Author

But since you asked about the run time, here's the time output on my machine: ./update-extensions.py 96.32s user 40.46s system 8% cpu 27:09.19 total

@piegamesde
Copy link
Member Author

@jtojnar I've had a look at generate_extension_versions again and I can understand your troubles with that function. The typing is rather loose and it uses Python's weird comprehension syntax. I think I managed to improve it by creating more type aliases and maybe adding more comments and example input/output data will help too.

But I won't push these changes right now, because I wouldn't want to accidentally cause a regression in the code just before the merge window closes. All changes and improvements that are not a merge blocker will have go in a future pull request.

pkgs/desktops/gnome/extensions/update-extensions.py Outdated Show resolved Hide resolved
pkgs/desktops/gnome/extensions/update-extensions.py Outdated Show resolved Hide resolved
pkgs/desktops/gnome/extensions/update-extensions.py Outdated Show resolved Hide resolved
pkgs/desktops/gnome/extensions/update-extensions.py Outdated Show resolved Hide resolved
for shell_version in shell_version_map.keys():
if pname in package_name_registry[shell_version]:
logging.warning(f"Package name '{pname}' is colliding.")
package_name_registry[shell_version][pname] += [uuid]
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Not fond of globals but we can change that later.

pkgs/desktops/gnome/extensions/update-extensions.py Outdated Show resolved Hide resolved
pkgs/desktops/gnome/extensions/update-extensions.py Outdated Show resolved Hide resolved
pkgs/desktops/gnome/extensions/manuallyPackaged.nix Outdated Show resolved Hide resolved
pkgs/desktops/gnome/extensions/update-extensions.py Outdated Show resolved Hide resolved
@jtojnar
Copy link
Member

jtojnar commented May 21, 2021

We also need to document the updating procedure (README.md with steps describing the procedure would suffice).

User docs in the newly added GNOME section would be also nice but would not block on that.

@piegamesde piegamesde changed the title gnome3: Package all the Gnome extensions … again?! gnome: Package all the Gnome extensions … again?! May 21, 2021
@piegamesde piegamesde force-pushed the gnome-extensions branch 3 times, most recently from 1f2c444 to 042f746 Compare May 21, 2021 20:49
@jtojnar
Copy link
Member

jtojnar commented May 21, 2021

Thanks for bearing with me. Great work. Let me just quickly rebase it and then let’s merge it.

An automatic way to do this that scales up and requires little manual intervention is really needed. It works by scraping extensions.gnome.org with a python script, that writes all relevant information into the `extensions.json`. Every attribute of besaid file can be built into a package using `buildShellExtension`.

Extensions are grouped by GNOME Shell version for practical reasons. Only extensions for GNOME 40 and 3.38 were added, as we don't support legacy GNOME versions.
The extensions are exposed as an attrset, `pkgs.gnome40Extensions` and `pkgs.gnome38Extensions` respectively. The package name of each extensions is generated automatically from its UUID.

The attribute `pkgs.gnomeExtensions` contains the officially packaged and supported extensions set. It contains all the automatically packaged extensions for the current GNOME Shell version, which are overwritten by manually packaged ones where needed. Unlike gnomeXYExtensions, the names are not UUIDs, but automatically generated human-friendly names. Naming collisions – which are tracked in collisions.json – need to be manually resolved in the `extensionRenames` attrset.
@akademsubotnik
Copy link

Thank you, much appreciated.
I installed the NixOS w/ GUI last week, it came with Gnome 40.1.0. Is it possible to use Gnome 3.36 extensions or Gnome 3.38 extensions with Gnome 40.1? Are there plans to setup extensions for Gnome 40.1?

@jtojnar
Copy link
Member

jtojnar commented Jun 14, 2021

No, GNOME 40 does not support extensions for older versions.

There already are some extensions compatible with GNOME 40 in gnomeExtensions attribute.

@nixos-discourse
Copy link

This pull request has been mentioned on NixOS Discourse. There might be relevant details there:

https://discourse.nixos.org/t/easy-way-to-add-paths-to-gi-typelib-path/15240/2

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
6.topic: GNOME GNOME desktop environment and its underlying platform 8.has: package (new) This PR adds a new package 10.rebuild-darwin: 0 This PR does not cause any packages to rebuild on Darwin 10.rebuild-linux: 101-500 11.by: package-maintainer This PR was created by the maintainer of the package it changes
Projects
None yet
Development

Successfully merging this pull request may close these issues.

9 participants