mirror of
https://github.com/NixOS/nixpkgs.git
synced 2024-09-11 15:08:33 +01:00
eb12149979
Some already have it, this adds it to the rest. With all extensions having an 'uuid' attr we can do cool things like declaratively enable extensions on NixOS.
86 lines
2.6 KiB
Nix
86 lines
2.6 KiB
Nix
{ stdenv, fetchFromGitHub, substituteAll, python3, openssl, gsound
|
||
, meson, ninja, libxml2, pkgconfig, gobject-introspection, wrapGAppsHook
|
||
, glib, gtk3, at-spi2-core, upower, openssh, gnome3, gjs }:
|
||
|
||
stdenv.mkDerivation rec {
|
||
pname = "gnome-shell-gsconnect";
|
||
version = "35";
|
||
|
||
src = fetchFromGitHub {
|
||
owner = "andyholmes";
|
||
repo = "gnome-shell-extension-gsconnect";
|
||
rev = "v${version}";
|
||
sha256 = "GqM2S9FIOHw+8AK2K7fpEBq34JqgKRCsW8I9Ve6c6IM=";
|
||
};
|
||
|
||
patches = [
|
||
# Make typelibs available in the extension
|
||
(substituteAll {
|
||
src = ./fix-paths.patch;
|
||
gapplication = "${glib.bin}/bin/gapplication";
|
||
})
|
||
];
|
||
|
||
nativeBuildInputs = [
|
||
meson ninja pkgconfig
|
||
gobject-introspection # for locating typelibs
|
||
wrapGAppsHook # for wrapping daemons
|
||
libxml2 # xmllint
|
||
];
|
||
|
||
buildInputs = [
|
||
glib # libgobject
|
||
gtk3
|
||
at-spi2-core # atspi
|
||
gnome3.nautilus # TODO: this contaminates the package with nautilus and gnome-autoar typelibs but it is only needed for the extension
|
||
gnome3.nautilus-python
|
||
gsound
|
||
upower
|
||
gnome3.caribou
|
||
gjs # for running daemon
|
||
gnome3.evolution-data-server # for libebook-contacts typelib
|
||
];
|
||
|
||
mesonFlags = [
|
||
"-Dgnome_shell_libdir=${gnome3.gnome-shell}/lib"
|
||
"-Dgsettings_schemadir=${glib.makeSchemaPath (placeholder "out") "${pname}-${version}"}"
|
||
"-Dchrome_nmhdir=${placeholder "out"}/etc/opt/chrome/native-messaging-hosts"
|
||
"-Dchromium_nmhdir=${placeholder "out"}/etc/chromium/native-messaging-hosts"
|
||
"-Dopenssl_path=${openssl}/bin/openssl"
|
||
"-Dsshadd_path=${openssh}/bin/ssh-add"
|
||
"-Dsshkeygen_path=${openssh}/bin/ssh-keygen"
|
||
"-Dsession_bus_services_dir=${placeholder "out"}/share/dbus-1/services"
|
||
"-Dpost_install=true"
|
||
];
|
||
|
||
postPatch = ''
|
||
patchShebangs meson/nmh.sh
|
||
patchShebangs meson/post-install.sh
|
||
|
||
# TODO: do not include every typelib everywhere
|
||
# for example, we definitely do not need nautilus
|
||
for file in src/extension.js src/prefs.js; do
|
||
substituteInPlace "$file" \
|
||
--subst-var-by typelibPath "$GI_TYPELIB_PATH"
|
||
done
|
||
'';
|
||
|
||
postFixup = ''
|
||
# Let’s wrap the daemons
|
||
for file in $out/share/gnome-shell/extensions/gsconnect@andyholmes.github.io/service/{daemon,nativeMessagingHost}.js; do
|
||
echo "Wrapping program $file"
|
||
wrapGApp "$file"
|
||
done
|
||
'';
|
||
|
||
uuid = "gsconnect@andyholmes.github.io";
|
||
|
||
meta = with stdenv.lib; {
|
||
description = "KDE Connect implementation for Gnome Shell";
|
||
homepage = "https://github.com/andyholmes/gnome-shell-extension-gsconnect/wiki";
|
||
license = licenses.gpl2;
|
||
maintainers = with maintainers; [ etu ];
|
||
platforms = platforms.linux;
|
||
};
|
||
}
|