From e374d14b0d4c4e7dac7cd6bd871a9888e1f403cc Mon Sep 17 00:00:00 2001 From: Gabriel Arazas Date: Wed, 2 Feb 2022 12:29:50 +0800 Subject: [PATCH] gnome-search-provider-browser-tabs: init at 0.1.1 It is split into three sub-packages, though. The web extensions are yet to be properly packaged. --- pkgs/default.nix | 1 + pkgs/gnome-search-provider-browser-tabs.nix | 96 +++++++++++++++++++++ 2 files changed, 97 insertions(+) create mode 100644 pkgs/gnome-search-provider-browser-tabs.nix diff --git a/pkgs/default.nix b/pkgs/default.nix index 8fa10cc4..0462c95e 100644 --- a/pkgs/default.nix +++ b/pkgs/default.nix @@ -31,6 +31,7 @@ let }; }); doggo = callPackage ./doggo.nix { }; + gnome-search-provider-browser-tabs = callPackage ./gnome-search-provider-browser-tabs.nix { }; gnome-shell-extension-burn-my-windows = callPackage ./gnome-shell-extension-burn-my-windows.nix { }; gnome-shell-extension-desktop-cube = diff --git a/pkgs/gnome-search-provider-browser-tabs.nix b/pkgs/gnome-search-provider-browser-tabs.nix new file mode 100644 index 00000000..40b73e39 --- /dev/null +++ b/pkgs/gnome-search-provider-browser-tabs.nix @@ -0,0 +1,96 @@ +{ stdenv, lib, fetchFromGitHub, rustPlatform, mkYarnPackage +, meson, ninja, yarn, zip }: + +let + version = "0.1.1"; + + repo = fetchFromGitHub { + owner = "harshadgavali"; + repo = "searchprovider-for-browser-tabs"; + rev = "connector-v${version}"; + sha256 = "sha256-5b48BZOQOSxNuFe7ehtLM5K1Qx/EUXzGeogj2vhT3bs="; + }; + + meta = with lib; { + homepage = + "https://github.com/harshadgavali/searchprovider-for-browser-tabs"; + license = licenses.mit; + platforms = platforms.unix; + }; +in { + # This is used for flattenTree from the flake definition. + recurseForDerivations = true; + + gnome-shell-extension = mkYarnPackage rec { + inherit meta; + pname = "gnome-search-provider-browser-tabs"; + + # This is more inline with the metadata from the shell extension itself. + version = "4"; + + src = "${repo}/shellextension"; + + buildPhase = '' + yarn --offline run build + ''; + + installPhase = '' + install -Dm644 deps/shellextension/dist/extension.js -t "$out/share/gnome-shell/extensions/${passthru.extensionUuid}" + install -Dm644 deps/shellextension/dist/metadata.json -t "$out/share/gnome-shell/extensions/${passthru.extensionUuid}" + ''; + + # We're overriding the 'distPhase' from mkYarnPackage. + distPhase = "true"; + + passthru.extensionUuid = "browser-tabs@com.github.harshadgavali"; + }; + + web-extension = let + folder = "webextension"; + chromiumAddonId = "pjidkdbbdemngigldodbdpkpggmgilnl"; + in mkYarnPackage rec { + inherit version meta; + pname = "firefox-extension-tab-search-provider-for-gnome"; + + src = "${repo}/${folder}"; + + buildPhase = '' + yarn --offline run build + ''; + + installPhase = '' + # Packaging Chromium addon. + install -Dm644 deps/${folder}/dist/chromium/* -t "$out/share/chromium/extensions/${chromiumAddonId}/${version}_0" + + # Package Mozilla Firefox extension. + ${zip}/bin/zip --recurse-paths --junk-paths nixos@${pname}.xpi deps/${folder}/dist/firefox/ + install -Dm644 nixos@${pname}.xpi -t $out/share/mozilla/extensions/{ec8030f7-c20a-464f-9b0e-13a3a9e97384} + ''; + + # Overriding the distPhase from mkYarnPackage. + distPhase = "true"; + }; + + connector = stdenv.mkDerivation rec { + inherit version meta; + pname = "tab-search-connector-provider"; + nativeBuildInputs = [ + meson + ninja + rustPlatform.cargoSetupHook + rustPlatform.rust.rustc + rustPlatform.rust.cargo + ]; + + src = "${repo}/connector"; + cargoDeps = rustPlatform.fetchCargoTarball { + inherit src; + name = "${pname}-${version}"; + sha256 = "sha256-SULUONFmsnEiWoAWpGOLynSXF032qW+QcYfzxQrAFLQ="; + }; + + mesonFlags = [ + "-Drelease-bindir=${placeholder "out"}/bin" + ]; + }; +}