uboot: (firmwareOdroidC2/C4) don't invoke patch tool, use patches = [] instead

https://github.com/NixOS/nixpkgs/blob/master/pkgs/stdenv/generic/setup.sh#L948
this can do it nicely.

Signed-off-by: Anton Arapov <anton@deadbeef.mx>
This commit is contained in:
Anton Arapov 2021-04-03 12:58:10 +02:00 committed by Alan Daniels
commit 56de2bcd43
30691 changed files with 3076956 additions and 0 deletions

View file

@ -0,0 +1,176 @@
{ lib
, stdenv
, fetchurl
, fetchpatch
, pkg-config
, gtk3
, vala
, enchant2
, wrapGAppsHook
, meson
, ninja
, desktop-file-utils
, gnome-online-accounts
, gsettings-desktop-schemas
, adwaita-icon-theme
, libpeas
, libsecret
, gmime3
, isocodes
, icu
, libxml2
, gettext
, sqlite
, gcr
, json-glib
, itstool
, libgee
, gnome
, webkitgtk
, python3
, gnutls
, cacert
, xvfb-run
, glibcLocales
, dbus
, shared-mime-info
, libunwind
, folks
, glib-networking
, gobject-introspection
, gspell
, appstream-glib
, libstemmer
, libytnef
, libhandy
, gsound
}:
stdenv.mkDerivation rec {
pname = "geary";
version = "40.0";
src = fetchurl {
url = "mirror://gnome/sources/${pname}/${lib.versions.major version}/${pname}-${version}.tar.xz";
sha256 = "1c2nd35500ng28223y5pszc7fh8g16njj34f6p5xc9594lvj0mik";
};
patches = [
# Fix accessibility issues with initializer of constants (Fix build with vala 0.56)
# https://gitlab.gnome.org/GNOME/geary/-/merge_requests/720
(fetchpatch {
url = "https://gitlab.gnome.org/GNOME/geary/-/commit/9bd4c82952a0a2c3308c5cc86c0b85650c1fb484.patch";
sha256 = "sha256-mSms0MOfw8xHxOrEQwrIv+d4h01xLPgyvX2oWmmFQVw=";
})
# Util.Cache.Lru: Workaround missing generic type argument (Fix build with vala 0.56)
# https://gitlab.gnome.org/GNOME/geary/-/merge_requests/721
(fetchpatch {
url = "https://gitlab.gnome.org/GNOME/geary/-/commit/0f75e7a84a39492d0748cec2ba6028e08cae3644.patch";
sha256 = "sha256-1ADQqKm3DxtjDGPSThq3c7s5S+q/3u/qr9JQEsLaFMI=";
})
];
nativeBuildInputs = [
appstream-glib
desktop-file-utils
gettext
gobject-introspection
itstool
libxml2
meson
ninja
pkg-config
python3
vala
wrapGAppsHook
];
buildInputs = [
adwaita-icon-theme
enchant2
folks
gcr
glib-networking
gmime3
gnome-online-accounts
gsettings-desktop-schemas
gsound
gspell
gtk3
isocodes
icu
json-glib
libgee
libhandy
libpeas
libsecret
libunwind
libstemmer
libytnef
sqlite
webkitgtk
];
checkInputs = [
dbus
gnutls # for certtool
cacert # trust store for glib-networking
xvfb-run
glibcLocales # required by Geary.ImapDb.DatabaseTest/utf8_case_insensitive_collation
];
mesonFlags = [
"-Dprofile=release"
"-Dcontractor=enabled" # install the contractor file (Pantheon specific)
];
# NOTE: Remove `build-auxyaml_to_json.py` when no longer needed, see:
# https://gitlab.gnome.org/GNOME/geary/commit/f7f72143e0f00ca5e0e6a798691805c53976ae31#0cc1139e3347f573ae1feee5b73dbc8a8a21fcfa
postPatch = ''
chmod +x build-aux/post_install.py build-aux/git_version.py
patchShebangs build-aux/post_install.py build-aux/git_version.py
chmod +x build-aux/yaml_to_json.py
patchShebangs build-aux/yaml_to_json.py
chmod +x desktop/geary-attach
'';
# Some tests time out.
doCheck = false;
checkPhase = ''
runHook preCheck
NO_AT_BRIDGE=1 \
GIO_EXTRA_MODULES=$GIO_EXTRA_MODULES:${glib-networking}/lib/gio/modules \
HOME=$TMPDIR \
XDG_DATA_DIRS=$XDG_DATA_DIRS:${gsettings-desktop-schemas}/share/gsettings-schemas/${gsettings-desktop-schemas.name}:${shared-mime-info}/share:${folks}/share/gsettings-schemas/${folks.name} \
xvfb-run -s '-screen 0 800x600x24' dbus-run-session \
--config-file=${dbus.daemon}/share/dbus-1/session.conf \
meson test -v --no-stdsplit
runHook postCheck
'';
preFixup = ''
# Add geary to path for geary-attach
gappsWrapperArgs+=(--prefix PATH : "$out/bin")
'';
passthru = {
updateScript = gnome.updateScript {
packageName = pname;
attrPath = "gnome.${pname}";
};
};
meta = with lib; {
homepage = "https://wiki.gnome.org/Apps/Geary";
description = "Mail client for GNOME 3";
maintainers = teams.gnome.members;
license = licenses.lgpl21Plus;
platforms = platforms.linux;
};
}

View file

@ -0,0 +1,105 @@
{ lib
, stdenv
, fetchurl
, fetchpatch
, vala
, gettext
, pkg-config
, gtk3
, glib
, json-glib
, wrapGAppsHook
, libpeas
, bash
, gobject-introspection
, libsoup
, gtksourceview4
, gsettings-desktop-schemas
, adwaita-icon-theme
, gnome
, gspell
, shared-mime-info
, libgee
, libgit2-glib
, libsecret
, meson
, ninja
, python3
, libdazzle
}:
stdenv.mkDerivation rec {
pname = "gitg";
version = "41";
src = fetchurl {
url = "mirror://gnome/sources/${pname}/${lib.versions.majorMinor version}/${pname}-${version}.tar.xz";
sha256 = "f7Ybn7EPuqVI0j1wZbq9cq1j5iHeVYQMBlzm45hsRik=";
};
patches = [
# Fix build with meson 0.61
# data/meson.build:8:5: ERROR: Function does not take positional arguments.
(fetchpatch {
url = "https://gitlab.gnome.org/GNOME/gitg/-/commit/1978973b12848741b08695ec2020bac98584d636.patch";
sha256 = "sha256-RzaGPGGiKMgjy0waFqt48rV2yWBGZgC3kHehhVhxktk=";
})
];
nativeBuildInputs = [
gobject-introspection
gettext
meson
ninja
pkg-config
python3
vala
wrapGAppsHook
];
buildInputs = [
adwaita-icon-theme
glib
gsettings-desktop-schemas
gtk3
gtksourceview4
gspell
json-glib
libdazzle
libgee
libgit2-glib
libpeas
libsecret
libsoup
];
doCheck = false; # FAIL: tests-gitg gtk_style_context_add_provider_for_screen: assertion 'GDK_IS_SCREEN (screen)' failed
postPatch = ''
chmod +x meson_post_install.py
patchShebangs meson_post_install.py
substituteInPlace tests/libgitg/test-commit.vala --replace "/bin/bash" "${bash}/bin/bash"
'';
preFixup = ''
gappsWrapperArgs+=(
# Thumbnailers
--prefix XDG_DATA_DIRS : "${shared-mime-info}/share"
)
'';
passthru = {
updateScript = gnome.updateScript {
packageName = pname;
};
};
meta = with lib; {
homepage = "https://wiki.gnome.org/Apps/Gitg";
description = "GNOME GUI client to view git repositories";
maintainers = with maintainers; [ domenkozar ];
license = licenses.gpl2Plus;
platforms = platforms.linux;
};
}

View file

@ -0,0 +1,80 @@
{ lib, stdenv
, fetchurl
, gettext
, itstool
, libxml2
, pkg-config
, gnome-panel
, gtk3
, glib
, libwnck
, libgtop
, libnotify
, upower
, wirelesstools
, linuxPackages
, adwaita-icon-theme
, libgweather
, gucharmap
, tracker
, polkit
, gnome
}:
stdenv.mkDerivation rec {
pname = "gnome-applets";
version = "3.44.0";
src = fetchurl {
url = "mirror://gnome/sources/${pname}/${lib.versions.majorMinor version}/${pname}-${version}.tar.xz";
sha256 = "MDlifKknGeSAWH1yT0aXEJw9Em7BUPFPOy4Gkk2576c=";
};
nativeBuildInputs = [
gettext
itstool
pkg-config
libxml2
];
buildInputs = [
gnome-panel
gtk3
glib
libxml2
libwnck
libgtop
libnotify
upower
adwaita-icon-theme
libgweather
gucharmap
tracker
polkit
wirelesstools
linuxPackages.cpupower
];
enableParallelBuilding = true;
doCheck = true;
# Don't try to install modules to gnome panel's directory, as it's read only
PKG_CONFIG_LIBGNOME_PANEL_MODULESDIR = "${placeholder "out"}/lib/gnome-panel/modules";
passthru = {
updateScript = gnome.updateScript {
packageName = pname;
attrPath = "gnome.${pname}";
versionPolicy = "odd-unstable";
};
};
meta = with lib; {
description = "Applets for use with the GNOME panel";
homepage = "https://wiki.gnome.org/Projects/GnomeApplets";
license = licenses.gpl2Plus;
maintainers = teams.gnome.members;
platforms = platforms.linux;
};
}

View file

@ -0,0 +1,60 @@
{ stdenv
, lib
, fetchurl
, meson
, ninja
, pkg-config
, gnome
, gtk3
, glib
, gobject-introspection
, libarchive
, vala
}:
stdenv.mkDerivation rec {
pname = "gnome-autoar";
version = "0.4.3";
outputs = [ "out" "dev" ];
src = fetchurl {
url = "mirror://gnome/sources/gnome-autoar/${lib.versions.majorMinor version}/${pname}-${version}.tar.xz";
sha256 = "e98HiVU0lqvdw8ljsM5zY4BcDALAJf7d68qsx4cknog=";
};
nativeBuildInputs = [
gobject-introspection
meson
ninja
pkg-config
vala
];
buildInputs = [
gtk3
];
propagatedBuildInputs = [
libarchive
glib
];
mesonFlags = [
"-Dvapi=true"
];
passthru = {
updateScript = gnome.updateScript {
packageName = "gnome-autoar";
attrPath = "gnome.gnome-autoar";
};
};
meta = with lib; {
platforms = platforms.linux;
maintainers = teams.gnome.members;
license = licenses.lgpl21Plus;
description = "Library to integrate compressed files management with GNOME";
};
}

View file

@ -0,0 +1,228 @@
{ stdenv
, lib
, autoreconfHook
, fetchurl
, gettext
, glib
, gnome-bluetooth_1_0
, gnome-desktop
, gnome-panel
, gnome-session
, gnome
, gsettings-desktop-schemas
, gtk3
, ibus
, libcanberra-gtk3
, libpulseaudio
, libxkbfile
, libxml2
, pkg-config
, polkit
, gdm
, systemd
, upower
, pam
, wrapGAppsHook
, writeTextFile
, xkeyboard_config
, xorg
, runCommand
, buildEnv
}:
let
pname = "gnome-flashback";
version = "3.44.0";
# From data/sessions/Makefile.am
requiredComponentsCommon = enableGnomePanel:
[ "gnome-flashback" ]
++ lib.optional enableGnomePanel "gnome-panel";
requiredComponentsGsd = [
"org.gnome.SettingsDaemon.A11ySettings"
"org.gnome.SettingsDaemon.Color"
"org.gnome.SettingsDaemon.Datetime"
"org.gnome.SettingsDaemon.Housekeeping"
"org.gnome.SettingsDaemon.Keyboard"
"org.gnome.SettingsDaemon.MediaKeys"
"org.gnome.SettingsDaemon.Power"
"org.gnome.SettingsDaemon.PrintNotifications"
"org.gnome.SettingsDaemon.Rfkill"
"org.gnome.SettingsDaemon.ScreensaverProxy"
"org.gnome.SettingsDaemon.Sharing"
"org.gnome.SettingsDaemon.Smartcard"
"org.gnome.SettingsDaemon.Sound"
"org.gnome.SettingsDaemon.UsbProtection"
"org.gnome.SettingsDaemon.Wacom"
"org.gnome.SettingsDaemon.XSettings"
];
requiredComponents = wmName: enableGnomePanel: "RequiredComponents=${lib.concatStringsSep ";" ([ wmName ] ++ requiredComponentsCommon enableGnomePanel ++ requiredComponentsGsd)};";
gnome-flashback = stdenv.mkDerivation rec {
name = "${pname}-${version}";
src = fetchurl {
url = "mirror://gnome/sources/${pname}/${lib.versions.majorMinor version}/${name}.tar.xz";
sha256 = "sha256-HfCDgSfGJG7s2J0cUP+I/IKr9t47MGjlLd5JWkK9VQo=";
};
# make .desktop Execs absolute
postPatch = ''
patch -p0 <<END_PATCH
+++ data/applications/gnome-flashback.desktop.in.in
@@ -4 +4 @@
-Exec=gnome-flashback
+Exec=$out/bin/gnome-flashback
END_PATCH
'';
postInstall = ''
# Check that our expected RequiredComponents match the stock session files, but then don't install them.
# They can be installed using mkSessionForWm.
grep '${requiredComponents "metacity" true}' $out/share/gnome-session/sessions/gnome-flashback-metacity.session || (echo "RequiredComponents have changed, please update gnome-flashback/default.nix."; false)
rm -r $out/share/gnome-session
rm -r $out/share/xsessions
rm -r $out/libexec
'';
nativeBuildInputs = [
autoreconfHook
gettext
libxml2
pkg-config
wrapGAppsHook
];
buildInputs = [
glib
gnome-bluetooth_1_0
gnome-desktop
gsettings-desktop-schemas
gtk3
ibus
libcanberra-gtk3
libpulseaudio
libxkbfile
xorg.libXxf86vm
polkit
gdm
gnome-panel
systemd
upower
pam
xkeyboard_config
];
doCheck = true;
enableParallelBuilding = true;
PKG_CONFIG_LIBGNOME_PANEL_LAYOUTSDIR = "${placeholder "out"}/share/gnome-panel/layouts";
PKG_CONFIG_LIBGNOME_PANEL_MODULESDIR = "${placeholder "out"}/lib/gnome-panel/modules";
passthru = {
updateScript = gnome.updateScript {
packageName = pname;
attrPath = "gnome.${pname}";
versionPolicy = "odd-unstable";
};
mkSessionForWm = { wmName, wmLabel, wmCommand, enableGnomePanel, panelModulePackages }:
let
wmApplication = writeTextFile {
name = "gnome-flashback-${wmName}-wm";
destination = "/share/applications/${wmName}.desktop";
text = ''
[Desktop Entry]
Type=Application
Encoding=UTF-8
Name=${wmLabel}
Exec=${wmCommand}
NoDisplay=true
X-GNOME-WMName=${wmLabel}
X-GNOME-Autostart-Phase=WindowManager
X-GNOME-Provides=windowmanager
X-GNOME-Autostart-Notify=false
'';
};
gnomeSession = writeTextFile {
name = "gnome-flashback-${wmName}-gnome-session";
destination = "/share/gnome-session/sessions/gnome-flashback-${wmName}.session";
text = ''
[GNOME Session]
Name=GNOME Flashback (${wmLabel})
${requiredComponents wmName enableGnomePanel}
'';
};
# gnome-panel will only look for applets in a single directory so symlink them into here.
panelModulesEnv = buildEnv {
name = "gnome-panel-modules-env";
# We always want to find the built-in panel applets.
paths = [ gnome-panel gnome-flashback ] ++ panelModulePackages;
pathsToLink = [ "/lib/gnome-panel/modules" ];
};
executable = stdenv.mkDerivation {
name = "gnome-flashback-${wmName}";
nativeBuildInputs = [ glib wrapGAppsHook ];
buildInputs = [ gnome-flashback ] ++ lib.optionals enableGnomePanel ([ gnome-panel ] ++ panelModulePackages);
# We want to use the wrapGAppsHook mechanism to wrap gnome-session
# with the environment that gnome-flashback and gnome-panel need to
# run, including the configured applet packages. This is only possible
# in the fixup phase, so turn everything else off.
dontUnpack = true;
dontConfigure = true;
dontBuild = true;
dontInstall = true;
dontWrapGApps = true; # We want to do the wrapping ourselves.
# gnome-flashback and gnome-panel need to be added to XDG_DATA_DIRS so that their .desktop files can be found by gnome-session.
preFixup = ''
makeWrapper ${gnome-session}/bin/gnome-session $out \
--add-flags "--session=gnome-flashback-${wmName}" \
--set-default XDG_CURRENT_DESKTOP 'GNOME-Flashback:GNOME' \
--prefix XDG_DATA_DIRS : '${lib.makeSearchPath "share" ([ wmApplication gnomeSession gnome-flashback ] ++ lib.optional enableGnomePanel gnome-panel)}' \
"''${gappsWrapperArgs[@]}" \
${lib.optionalString enableGnomePanel "--set NIX_GNOME_PANEL_MODULESDIR '${panelModulesEnv}/lib/gnome-panel/modules'"}
'';
};
in
writeTextFile
{
name = "gnome-flashback-${wmName}-xsession";
destination = "/share/xsessions/gnome-flashback-${wmName}.desktop";
text = ''
[Desktop Entry]
Name=GNOME Flashback (${wmLabel})
Comment=This session logs you into GNOME Flashback with ${wmLabel}
Exec=${executable}
TryExec=${wmCommand}
Type=Application
DesktopNames=GNOME-Flashback;GNOME;
'';
} // {
providedSessions = [ "gnome-flashback-${wmName}" ];
};
mkSystemdTargetForWm = { wmName, wmLabel, wmCommand, enableGnomePanel }:
runCommand "gnome-flashback-${wmName}.target" {} ''
mkdir -p $out/lib/systemd/user
cp -r "${gnome-flashback}/lib/systemd/user/gnome-session@gnome-flashback-metacity.target.d" \
"$out/lib/systemd/user/gnome-session@gnome-flashback-${wmName}.target.d"
'';
};
meta = with lib; {
description = "GNOME 2.x-like session for GNOME 3";
homepage = "https://wiki.gnome.org/Projects/GnomeFlashback";
license = licenses.gpl2;
maintainers = teams.gnome.members;
platforms = platforms.linux;
};
};
in
gnome-flashback

View file

@ -0,0 +1,37 @@
{ lib, stdenv, fetchurl, pkg-config, meson, ninja, gettext, gnome, packagekit, polkit
, gtk3, systemd, wrapGAppsHook, desktop-file-utils }:
stdenv.mkDerivation rec {
pname = "gnome-packagekit";
version = "3.32.0";
src = fetchurl {
url = "mirror://gnome/sources/gnome-packagekit/${lib.versions.majorMinor version}/${pname}-${version}.tar.xz";
sha256 = "08rhsisdvx7pnx3rrg5v7c09jbw4grglkdj979gwl4a31j24zjsd";
};
nativeBuildInputs = [
pkg-config meson ninja gettext wrapGAppsHook desktop-file-utils
];
buildInputs = [ gtk3 packagekit systemd polkit ];
postPatch = ''
patchShebangs meson_post_install.sh
'';
passthru = {
updateScript = gnome.updateScript {
packageName = "gnome-packagekit";
attrPath = "gnome.gnome-packagekit";
};
};
meta = with lib; {
homepage = "https://www.freedesktop.org/software/PackageKit/";
platforms = platforms.linux;
maintainers = teams.gnome.members;
license = licenses.gpl2;
description = "Tools for installing software on the GNOME desktop using PackageKit";
};
}

View file

@ -0,0 +1,117 @@
{ stdenv
, lib
, fetchurl
, fetchpatch
, autoreconfHook
, dconf
, evolution-data-server
, gdm
, geocode-glib
, gettext
, glib
, gnome-desktop
, gnome-menus
, gnome
, gtk3
, itstool
, libgweather
, libsoup
, libwnck
, libxml2
, pkg-config
, polkit
, systemd
, wrapGAppsHook
}:
stdenv.mkDerivation rec {
pname = "gnome-panel";
version = "3.44.0";
outputs = [ "out" "dev" "man" ];
src = fetchurl {
url = "mirror://gnome/sources/${pname}/${lib.versions.majorMinor version}/${pname}-${version}.tar.xz";
hash = "sha256-mWVfddAxh2wTDtI8TaIsCZ57zEBIsCVaPDo7vHh7Mao=";
};
patches = [
# Load modules from path in `NIX_GNOME_PANEL_MODULESDIR` environment variable
# instead of gnome-panels libdir so that the NixOS module can make gnome-panel
# load modules from other packages as well.
./modulesdir-env-var.patch
# Add missing geocode-glib-1.0 dependency
# https://gitlab.gnome.org/GNOME/gnome-panel/-/merge_requests/49
(fetchpatch {
url = "https://gitlab.gnome.org/GNOME/gnome-panel/-/commit/f58a43ec4649a25f1a762b36e1401b81cd2b214b.patch";
sha256 = "sha256-DFqaNUjkLh4xd81qgQpl+568eUZeWyF8LxdZoTgMfCQ=";
})
];
# make .desktop Exec absolute
postPatch = ''
patch -p0 <<END_PATCH
+++ gnome-panel/gnome-panel.desktop.in
@@ -7 +7 @@
-Exec=gnome-panel
+Exec=$out/bin/gnome-panel
END_PATCH
'';
preFixup = ''
gappsWrapperArgs+=(
--prefix XDG_DATA_DIRS : "${gnome-menus}/share"
--prefix XDG_CONFIG_DIRS : "${gnome-menus}/etc/xdg"
)
'';
nativeBuildInputs = [
autoreconfHook
gettext
itstool
libxml2
pkg-config
wrapGAppsHook
];
buildInputs = [
dconf
evolution-data-server
gdm
geocode-glib
glib
gnome-desktop
gnome-menus
gtk3
libgweather
libsoup
libwnck
polkit
systemd
];
configureFlags = [
"--enable-eds"
];
enableParallelBuilding = true;
doCheck = true;
passthru = {
updateScript = gnome.updateScript {
packageName = pname;
attrPath = "gnome.${pname}";
versionPolicy = "odd-unstable";
};
};
meta = with lib; {
description = "Component of Gnome Flashback that provides panels and default applets for the desktop";
homepage = "https://wiki.gnome.org/Projects/GnomePanel";
license = licenses.gpl2Plus;
maintainers = teams.gnome.members;
platforms = platforms.linux;
};
}

View file

@ -0,0 +1,31 @@
diff --git a/gnome-panel/gp-module-manager.c b/gnome-panel/gp-module-manager.c
index 58447fd84..7af99de7d 100644
--- a/gnome-panel/gp-module-manager.c
+++ b/gnome-panel/gp-module-manager.c
@@ -49,8 +49,16 @@ load_modules (GpModuleManager *self)
{
GDir *dir;
const gchar *name;
+ const gchar *modules_dir;
- dir = g_dir_open (MODULESDIR, 0, NULL);
+ modules_dir = g_getenv ("NIX_GNOME_PANEL_MODULESDIR");
+
+ if (!modules_dir) {
+ g_warning ("The NIX_GNOME_PANEL_MODULESDIR environment variable was not set, modules will not be loaded.");
+ return;
+ }
+
+ dir = g_dir_open (modules_dir, 0, NULL);
if (!dir)
return;
@@ -63,7 +71,7 @@ load_modules (GpModuleManager *self)
if (!g_str_has_suffix (name, ".so"))
continue;
- path = g_build_filename (MODULESDIR, name, NULL);
+ path = g_build_filename (modules_dir, name, NULL);
module = gp_module_new_from_path (path);
g_free (path);

View file

@ -0,0 +1,11 @@
--- a/configure.ac 2019-01-20 20:28:01.309231507 +0100
+++ b/configure.ac 2019-01-20 20:31:54.927978927 +0100
@@ -137,7 +137,7 @@
# Find out where the session service file goes
# The sad sed hack is recomended by section 27.10 of the automake manual.
-DBUS_SESSION_SERVICE_DIR=`pkg-config --variable session_bus_services_dir dbus-1 | sed -e 's,/usr/share,${datarootdir},g'`
+DBUS_SESSION_SERVICE_DIR=`pkg-config --variable session_bus_services_dir dbus-1 --define-variable 'datadir=${datadir}'`
AC_SUBST(DBUS_SESSION_SERVICE_DIR)
dnl ---------------------------------------------------------------------------

View file

@ -0,0 +1,92 @@
{ lib
, meson
, ninja
, fetchurl
, gdk-pixbuf
, gettext
, glib
, gnome
, gnome-desktop
, gobject-introspection
, gsettings-desktop-schemas
, gtk3
, itstool
, libhandy
, libnotify
, libsoup
, libxml2
, pkg-config
, python3Packages
, wrapGAppsHook }:
python3Packages.buildPythonApplication rec {
pname = "gnome-tweaks";
version = "42.beta";
format = "other";
strictDeps = false; # https://github.com/NixOS/nixpkgs/issues/56943
src = fetchurl {
url = "mirror://gnome/sources/${pname}/${lib.versions.major version}/${pname}-${version}.tar.xz";
sha256 = "g/RMwdyK3HcM2tcXtAPLmmzDwN5Q445vHmeLQ0Aa2Gg=";
};
nativeBuildInputs = [
gettext
gobject-introspection
itstool
libxml2
meson
ninja
pkg-config
wrapGAppsHook
];
buildInputs = [
gdk-pixbuf
glib
gnome-desktop
gnome.gnome-settings-daemon
gnome.gnome-shell
# Makes it possible to select user themes through the `user-theme` extension
gnome.gnome-shell-extensions
gnome.mutter
gsettings-desktop-schemas
gtk3
libhandy
libnotify
libsoup
];
pythonPath = with python3Packages; [
pygobject3
];
postPatch = ''
patchShebangs meson-postinstall.py
'';
dontWrapGApps = true;
preFixup = ''
makeWrapperArgs+=("''${gappsWrapperArgs[@]}")
'';
postFixup = ''
wrapPythonProgramsIn "$out/libexec" "$out $pythonPath"
'';
passthru = {
updateScript = gnome.updateScript {
packageName = pname;
attrPath = "gnome.${pname}";
};
};
meta = with lib; {
homepage = "https://wiki.gnome.org/Apps/Tweaks";
description = "A tool to customize advanced GNOME 3 options";
maintainers = teams.gnome.members;
license = licenses.gpl3Plus;
platforms = platforms.linux;
};
}

View file

@ -0,0 +1,86 @@
{ stdenv
, lib
, fetchFromGitHub
, fetchpatch
, appstream-glib
, clutter
, gjs
, glib
, gobject-introspection
, gtk3
, gtk4
, libadwaita
, meson
, mutter
, ninja
, pango
, pkg-config
, vala
, wrapGAppsHook
}:
stdenv.mkDerivation rec {
version = "42.1";
pname = "gpaste";
src = fetchFromGitHub {
owner = "Keruspe";
repo = "GPaste";
rev = "v${version}";
sha256 = "sha256-A5NZ4NiPVZUr7vPdDuNywLsLrejZ4SCg7+3//ZNRmLY=";
};
patches = [
./fix-paths.patch
];
# TODO: switch to substituteAll with placeholder
# https://github.com/NixOS/nix/issues/1846
postPatch = ''
substituteInPlace src/gnome-shell/extension.js \
--subst-var-by typelibPath "${placeholder "out"}/lib/girepository-1.0"
substituteInPlace src/gnome-shell/prefs.js \
--subst-var-by typelibPath "${placeholder "out"}/lib/girepository-1.0"
substituteInPlace src/libgpaste/gpaste/gpaste-settings.c \
--subst-var-by gschemasCompiled ${glib.makeSchemaPath (placeholder "out") "${pname}-${version}"}
'';
nativeBuildInputs = [
appstream-glib
gobject-introspection
meson
ninja
pkg-config
vala
wrapGAppsHook
];
buildInputs = [
clutter # required by mutter-clutter
gjs
glib
gtk3
gtk4
libadwaita
mutter
pango
];
mesonFlags = [
"-Dcontrol-center-keybindings-dir=${placeholder "out"}/share/gnome-control-center/keybindings"
"-Ddbus-services-dir=${placeholder "out"}/share/dbus-1/services"
"-Dsystemd-user-unit-dir=${placeholder "out"}/etc/systemd/user"
];
postInstall = ''
${glib.dev}/bin/glib-compile-schemas "$out/share/glib-2.0/schemas"
'';
meta = with lib; {
homepage = "https://github.com/Keruspe/GPaste";
description = "Clipboard management system with GNOME 3 integration";
license = licenses.gpl3;
platforms = platforms.linux;
maintainers = teams.gnome.members;
};
}

View file

@ -0,0 +1,43 @@
diff --git a/src/gnome-shell/extension.js b/src/gnome-shell/extension.js
index c8773fd6..9efbed67 100644
--- a/src/gnome-shell/extension.js
+++ b/src/gnome-shell/extension.js
@@ -6,6 +6,8 @@
const Config = imports.misc.config;
+imports.gi.GIRepository.Repository.prepend_search_path('@typelibPath@');
+
imports.gi.versions.Clutter = Config.LIBMUTTER_API_VERSION;
imports.gi.versions.GLib = '2.0';
imports.gi.versions.GPaste = '2';
diff --git a/src/gnome-shell/prefs.js b/src/gnome-shell/prefs.js
index 32244ab2..74b85572 100644
--- a/src/gnome-shell/prefs.js
+++ b/src/gnome-shell/prefs.js
@@ -6,6 +6,8 @@
imports.gi.versions.GPasteGtk = '4';
+imports.gi.GIRepository.Repository.prepend_search_path('@typelibPath@');
+
const ExtensionUtils = imports.misc.extensionUtils;
const { GPasteGtk } = imports.gi;
diff --git a/src/libgpaste/gpaste/gpaste-settings.c b/src/libgpaste/gpaste/gpaste-settings.c
index 7e53eb64..57c399fc 100644
--- a/src/libgpaste/gpaste/gpaste-settings.c
+++ b/src/libgpaste/gpaste/gpaste-settings.c
@@ -1013,7 +1013,11 @@ create_g_settings (void)
}
else
{
- return g_settings_new (G_PASTE_SETTINGS_NAME);
+ // library used by introspection requires schemas but we cannot set XDG_DATA_DIRS for the library
+ GSettingsSchemaSource *schema_source = g_settings_schema_source_new_from_directory ("@gschemasCompiled@", NULL, FALSE, NULL);
+ g_autoptr (GSettingsSchema) schema = g_settings_schema_source_lookup (schema_source, G_PASTE_SETTINGS_NAME, FALSE);
+ g_settings_schema_source_unref (schema_source);
+ return g_settings_new_full (schema, NULL, NULL);
}
}

View file

@ -0,0 +1,27 @@
{ lib, stdenv, fetchurl, pkg-config, gtk3, intltool
, gnome, enchant, isocodes, gsettings-desktop-schemas }:
stdenv.mkDerivation rec {
pname = "gtkhtml";
version = "4.10.0";
src = fetchurl {
url = "mirror://gnome/sources/gtkhtml/${lib.versions.majorMinor version}/${pname}-${version}.tar.xz";
sha256 = "ca3b6424fb2c7ac5d9cb8fdafb69318fa2e825c9cf6ed17d1e38d9b29e5606c3";
};
passthru = {
updateScript = gnome.updateScript { packageName = "gtkhtml"; attrPath = "gnome.gtkhtml"; };
};
nativeBuildInputs = [ pkg-config ];
buildInputs = [ gtk3 intltool gnome.adwaita-icon-theme
gsettings-desktop-schemas ];
propagatedBuildInputs = [ enchant isocodes ];
meta = with lib; {
platforms = platforms.linux;
maintainers = teams.gnome.members;
};
}

View file

@ -0,0 +1,74 @@
{ lib, stdenv
, fetchurl
, gettext
, glib
, gnome
, gsettings-desktop-schemas
, gtk3
, xorg
, libcanberra-gtk3
, libgtop
, libstartup_notification
, libxml2
, pkg-config
, substituteAll
, wrapGAppsHook
, zenity
}:
stdenv.mkDerivation rec {
pname = "metacity";
version = "3.44.0";
src = fetchurl {
url = "mirror://gnome/sources/${pname}/${lib.versions.majorMinor version}/${pname}-${version}.tar.xz";
sha256 = "GcPF150hcfRbqg9jLMiZX4YHvxIxoWAUQ5usm6Flp8A=";
};
patches = [
(substituteAll {
src = ./fix-paths.patch;
inherit zenity;
})
];
nativeBuildInputs = [
gettext
libxml2
pkg-config
wrapGAppsHook
];
buildInputs = [
xorg.libXres
xorg.libXpresent
xorg.libXdamage
glib
gsettings-desktop-schemas
gtk3
libcanberra-gtk3
libgtop
libstartup_notification
zenity
];
enableParallelBuilding = true;
passthru = {
updateScript = gnome.updateScript {
packageName = pname;
attrPath = "gnome.${pname}";
versionPolicy = "odd-unstable";
};
};
doCheck = true;
meta = with lib; {
description = "Window manager used in Gnome Flashback";
homepage = "https://wiki.gnome.org/Projects/Metacity";
license = licenses.gpl2;
maintainers = teams.gnome.members;
platforms = platforms.linux;
};
}

View file

@ -0,0 +1,11 @@
--- a/src/core/util.c
+++ b/src/core/util.c
@@ -424,7 +424,7 @@
g_slist_length (columns)*2 +
g_slist_length (entries)));
- argvl[i++] = "zenity";
+ argvl[i++] = "@zenity@/bin/zenity";
argvl[i++] = type;
argvl[i++] = "--display";
argvl[i++] = display;

View file

@ -0,0 +1,75 @@
{ stdenv
, lib
, substituteAll
, fetchurl
, pkg-config
, which
, gtk-doc
, docbook_xsl
, docbook_xml_dtd_412
, python3
, ncurses
, nautilus
, gtk3
, gnome
}:
stdenv.mkDerivation rec {
pname = "nautilus-python";
version = "1.2.3";
outputs = [ "out" "dev" "doc" ];
src = fetchurl {
url = "mirror://gnome/sources/${pname}/${lib.versions.majorMinor version}/${pname}-${version}.tar.xz";
sha256 = "161050sx3sdxqcpjkjcpf6wl4kx0jydihga7mcvrj9c2f8ly0g07";
};
patches = [
# Make PyGObjects gi library available.
(substituteAll {
src = ./fix-paths.patch;
pythonPaths = lib.concatMapStringsSep ", " (pkg: "'${pkg}/${python3.sitePackages}'") [
python3.pkgs.pygobject3
];
})
];
nativeBuildInputs = [
pkg-config
which
gtk-doc
docbook_xsl
docbook_xml_dtd_412
];
buildInputs = [
python3
ncurses # required by python3
python3.pkgs.pygobject3
nautilus
gtk3 # required by libnautilus-extension
];
makeFlags = [
"PYTHON_LIB_LOC=${python3}/lib"
];
PKG_CONFIG_LIBNAUTILUS_EXTENSION_EXTENSIONDIR = "${placeholder "out"}/lib/nautilus/extensions-3.0";
passthru = {
updateScript = gnome.updateScript {
packageName = pname;
attrPath = "gnome.${pname}";
versionPolicy = "odd-unstable";
};
};
meta = with lib; {
description = "Python bindings for the Nautilus Extension API";
homepage = "https://wiki.gnome.org/Projects/NautilusPython";
license = licenses.gpl2Plus;
maintainers = teams.gnome.members;
platforms = platforms.unix;
};
}

View file

@ -0,0 +1,14 @@
diff --git a/src/nautilus-python.c b/src/nautilus-python.c
index 843e3c6..466a513 100644
--- a/src/nautilus-python.c
+++ b/src/nautilus-python.c
@@ -184,6 +184,9 @@ nautilus_python_init_python (void) {
return FALSE;
}
+ debug("Add PyGObject to path");
+ PyRun_SimpleString("import site;import functools; functools.reduce(lambda k, p: site.addsitedir(p, k), [@pythonPaths@], site._init_pathinfo())");
+
/* import gobject */
debug("init_pygobject");
if (!np_init_pygobject()) {

View file

@ -0,0 +1,82 @@
{ lib
, stdenv
, fetchFromGitHub
, substituteAll
, meson
, ninja
, pkg-config
, wrapGAppsHook
, desktop-file-utils
, libcanberra
, gst_all_1
, vala
, gtk3
, gom
, sqlite
, libxml2
, glib
, gobject-introspection
, json-glib
, libpeas
, gsettings-desktop-schemas
, gettext
}:
stdenv.mkDerivation rec {
pname = "gnome-shell-pomodoro";
version = "0.21.1";
src = fetchFromGitHub {
owner = "gnome-pomodoro";
repo = "gnome-pomodoro";
rev = version;
sha256 = "sha256-47gZsL1Hg30wtq6NeZdi8gbLHUZJ34KLzxvIg5DqyUk=";
};
patches = [
# Our glib setup hooks moves GSettings schemas to a subdirectory to prevent conflicts.
# We need to patch the build script so that the extension can find them.
(substituteAll {
src = ./fix-schema-path.patch;
inherit pname version;
})
];
nativeBuildInputs = [
meson
ninja
gettext
gobject-introspection
libxml2
pkg-config
vala
wrapGAppsHook
desktop-file-utils
];
buildInputs = [
glib
gom
gsettings-desktop-schemas
gst_all_1.gst-plugins-base
gst_all_1.gst-plugins-good
gst_all_1.gstreamer
gtk3
json-glib
libcanberra
libpeas
sqlite
];
meta = with lib; {
homepage = "https://gnomepomodoro.org/";
description = "Time management utility for GNOME based on the pomodoro technique";
longDescription = ''
This GNOME utility helps to manage time according to Pomodoro Technique.
It intends to improve productivity and focus by taking short breaks.
'';
maintainers = with maintainers; [ ];
license = licenses.gpl3Plus;
platforms = platforms.linux;
};
}

View file

@ -0,0 +1,40 @@
diff --git a/data/meson.build b/data/meson.build
index 5e4ce69..982b3c9 100644
--- a/data/meson.build
+++ b/data/meson.build
@@ -31,7 +31,7 @@ i18n.merge_file(
install_data(
'org.gnome.pomodoro.gschema.xml',
- install_dir: get_option('datadir') / 'glib-2.0' / 'schemas',
+ install_dir: gschema_dir,
)
subdir('icons')
diff --git a/meson-post-install.sh b/meson-post-install.sh
index bf4013a..c87fba4 100644
--- a/meson-post-install.sh
+++ b/meson-post-install.sh
@@ -7,7 +7,7 @@ datadir="${prefix}/$1"
# want/need us to do the below
if [ -z "${DESTDIR}" ]; then
echo "Compiling GSchema..."
- glib-compile-schemas "${datadir}/glib-2.0/schemas"
+ glib-compile-schemas "${datadir}/gsettings-schemas/@pname@-@version@/glib-2.0/schemas"
echo "Updating icon cache..."
gtk-update-icon-cache -f -t "${datadir}/icons/hicolor"
diff --git a/meson.build b/meson.build
index 09857a1..a07d27c 100644
--- a/meson.build
+++ b/meson.build
@@ -40,7 +40,8 @@ add_project_arguments(
)
# We are going to use these variables later on for the plugins
-gschema_dir = get_option('prefix') / get_option('datadir') / 'glib-2.0' / 'schemas'
+nix_package_name = '@pname@' + '-' + '@version@'
+gschema_dir = get_option('prefix') / get_option('datadir') / 'gsettings-schemas' / nix_package_name / 'glib-2.0' / 'schemas'
plugin_libdir = get_option('prefix') / get_option('libdir') / meson.project_name() / 'plugins'
extension_dir = get_option('prefix') / get_option('datadir') / 'gnome-shell' / 'extensions' / 'pomodoro@arun.codito.in'