gnomeExtensions.pano: package manually

It's been a while since the Pano extension has been uploaded to EGO, and it's not in gnomeExtensions set after GNOME 48. So, package it manually.

Honnip 582ffa59 9c55b12a

+57 -19
-19
pkgs/desktops/gnome/extensions/extensionOverrides.nix
··· 1 { 2 lib, 3 fetchFromGitLab, 4 - fetchzip, 5 cpio, 6 ddcutil, 7 easyeffects, ··· 9 glib, 10 nautilus, 11 gobject-introspection, 12 - gsound, 13 hddtemp, 14 - libgda6, 15 libgtop, 16 libhandy, 17 liquidctl, ··· 168 chinese_calendar_path = chinese-calendar; 169 }) 170 ]; 171 - } 172 - )) 173 - 174 - (patchExtension "pano@elhan.io" ( 175 - final: prev: { 176 - version = "23-alpha3"; 177 - src = fetchzip { 178 - url = "https://github.com/oae/gnome-shell-pano/releases/download/v${final.version}/pano@elhan.io.zip"; 179 - hash = "sha256-LYpxsl/PC8hwz0ZdH5cDdSZPRmkniBPUCqHQxB4KNhc="; 180 - stripRoot = false; 181 - }; 182 - preInstall = '' 183 - substituteInPlace extension.js \ 184 - --replace-fail "import Gda from 'gi://Gda?version>=5.0'" "imports.gi.GIRepository.Repository.prepend_search_path('${libgda6}/lib/girepository-1.0'); const Gda = (await import('gi://Gda')).default" \ 185 - --replace-fail "import GSound from 'gi://GSound'" "imports.gi.GIRepository.Repository.prepend_search_path('${gsound}/lib/girepository-1.0'); const GSound = (await import('gi://GSound')).default" 186 - ''; 187 } 188 )) 189
··· 1 { 2 lib, 3 fetchFromGitLab, 4 cpio, 5 ddcutil, 6 easyeffects, ··· 8 glib, 9 nautilus, 10 gobject-introspection, 11 hddtemp, 12 libgtop, 13 libhandy, 14 liquidctl, ··· 165 chinese_calendar_path = chinese-calendar; 166 }) 167 ]; 168 } 169 )) 170
+2
pkgs/desktops/gnome/extensions/manuallyPackaged.nix
··· 20 "unite@hardpixel.eu" = callPackage ./unite { }; 21 "valent@andyholmes.ca" = callPackage ./valent { }; 22 "window-corner-preview@fabiomereu.it" = callPackage ./window-corner-preview { }; 23 }
··· 20 "unite@hardpixel.eu" = callPackage ./unite { }; 21 "valent@andyholmes.ca" = callPackage ./valent { }; 22 "window-corner-preview@fabiomereu.it" = callPackage ./window-corner-preview { }; 23 + # Can be removed when https://github.com/oae/gnome-shell-pano/issues/271 resolved 24 + "pano@elhan.io" = callPackage ./pano { }; 25 }
+55
pkgs/desktops/gnome/extensions/pano/default.nix
···
··· 1 + { 2 + lib, 3 + stdenv, 4 + fetchzip, 5 + glib, 6 + libgda6, 7 + gsound, 8 + }: 9 + 10 + stdenv.mkDerivation (finalAttrs: { 11 + pname = "gnome-shell-extension-pano"; 12 + version = "23-alpha5"; 13 + 14 + src = fetchzip { 15 + url = "https://github.com/oae/gnome-shell-pano/releases/download/v${finalAttrs.version}/pano@elhan.io.zip"; 16 + hash = "sha256-kTaJOSyFtBa/fl3Mot8Q8qyhwJwhcbBY4FvdztqUP4w="; 17 + stripRoot = false; 18 + }; 19 + 20 + nativeBuildInputs = [ 21 + glib 22 + ]; 23 + 24 + buildPhase = '' 25 + runHook preBuild 26 + glib-compile-schemas --strict schemas 27 + runHook postBuild 28 + ''; 29 + 30 + preInstall = '' 31 + substituteInPlace extension.js \ 32 + --replace-fail "import Gda from 'gi://Gda?version>=5.0'" "imports.gi.GIRepository.Repository.prepend_search_path('${libgda6}/lib/girepository-1.0'); const Gda = (await import('gi://Gda')).default" \ 33 + --replace-fail "import GSound from 'gi://GSound'" "imports.gi.GIRepository.Repository.prepend_search_path('${gsound}/lib/girepository-1.0'); const GSound = (await import('gi://GSound')).default" 34 + ''; 35 + 36 + installPhase = '' 37 + runHook preInstall 38 + mkdir -p $out/share/gnome-shell/extensions 39 + cp -r -T . $out/share/gnome-shell/extensions/pano@elhan.io 40 + runHook postInstall 41 + ''; 42 + 43 + passthru = { 44 + extensionPortalSlug = "pano"; 45 + extensionUuid = "pano@elhan.io"; 46 + }; 47 + 48 + meta = with lib; { 49 + description = "Next-gen Clipboard Manager for Gnome Shell"; 50 + homepage = "https://github.com/oae/gnome-shell-pano"; 51 + license = licenses.gpl2Plus; 52 + maintainers = with maintainers; [ honnip ]; 53 + platforms = platforms.linux; 54 + }; 55 + })