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,74 @@
{ lib
, fetchurl
, pkg-config
, gnome
, gtk3
, wrapGAppsHook
, gobject-introspection
, itstool
, libxml2
, python3
, at-spi2-core
, dbus
, gettext
, libwnck
, adwaita-icon-theme
}:
python3.pkgs.buildPythonApplication rec {
pname = "accerciser";
version = "3.38.0";
format = "other";
src = fetchurl {
url = "mirror://gnome/sources/${pname}/${lib.versions.majorMinor version}/${pname}-${version}.tar.xz";
sha256 = "0fd9vv2abd2if2qj4nlfy7mpd7rc4sx18zhmxd5ijlnfhkpggbp5";
};
nativeBuildInputs = [
gettext
gobject-introspection # For setup hook
itstool
libxml2
pkg-config
dbus
wrapGAppsHook
];
buildInputs = [
adwaita-icon-theme
at-spi2-core
gtk3
libwnck
];
propagatedBuildInputs = with python3.pkgs; [
ipython
pyatspi
pycairo
pygobject3
setuptools
xlib
];
# Strict deps breaks accerciser
# and https://github.com/NixOS/nixpkgs/issues/56943
strictDeps = false;
passthru = {
updateScript = gnome.updateScript {
packageName = "accerciser";
attrPath = "gnome.accerciser";
versionPolicy = "odd-unstable";
};
};
meta = with lib; {
homepage = "https://wiki.gnome.org/Apps/Accerciser";
description = "Interactive Python accessibility explorer";
maintainers = teams.gnome.members;
license = licenses.bsd3;
platforms = platforms.linux;
};
}

View file

@ -0,0 +1,114 @@
{ lib
, stdenv
, gettext
, fetchurl
, wrapGAppsHook
, gnome-video-effects
, libcanberra-gtk3
, pkg-config
, gtk3
, glib
, clutter-gtk
, clutter-gst
, gst_all_1
, itstool
, vala
, docbook_xml_dtd_43
, docbook-xsl-nons
, appstream-glib
, libxslt
, gtk-doc
, adwaita-icon-theme
, librsvg
, totem
, gdk-pixbuf
, gnome
, gnome-desktop
, libxml2
, meson
, ninja
, dbus
, python3
, pipewire
}:
stdenv.mkDerivation rec {
pname = "cheese";
version = "41.1";
outputs = [ "out" "man" "devdoc" ];
src = fetchurl {
url = "mirror://gnome/sources/cheese/${lib.versions.major version}/${pname}-${version}.tar.xz";
sha256 = "UilgyihzD/ZkOQcLBEGMngpLtVVg11v+CLIY2ixn5Uc=";
};
nativeBuildInputs = [
appstream-glib
docbook_xml_dtd_43
docbook-xsl-nons
gettext
gtk-doc
itstool
libxml2
libxslt # for xsltproc
meson
ninja
pkg-config
python3
vala
wrapGAppsHook
glib # for glib-compile-schemas
];
buildInputs = [
adwaita-icon-theme
clutter-gst
clutter-gtk
dbus
gdk-pixbuf
glib
gnome-desktop
gnome-video-effects
gst_all_1.gst-plugins-bad
gst_all_1.gst-plugins-base
gst_all_1.gst-plugins-good
gst_all_1.gstreamer
gtk3
libcanberra-gtk3
librsvg
pipewire # PipeWire provides a gstreamer plugin for using PipeWire for video
];
postPatch = ''
chmod +x meson_post_install.py
patchShebangs meson_post_install.py
'';
preFixup = ''
gappsWrapperArgs+=(
# Effects
--prefix XDG_DATA_DIRS : "${gnome-video-effects}/share"
# vp8enc preset
--prefix GST_PRESET_PATH : "${gst_all_1.gst-plugins-good}/share/gstreamer-1.0/presets"
# Thumbnailers
--prefix XDG_DATA_DIRS : "${gdk-pixbuf}/share"
--prefix XDG_DATA_DIRS : "${totem}/share"
)
'';
passthru = {
updateScript = gnome.updateScript {
packageName = "cheese";
attrPath = "gnome.cheese";
};
};
meta = with lib; {
homepage = "https://wiki.gnome.org/Apps/Cheese";
description = "Take photos and videos with your webcam, with fun graphical effects";
maintainers = teams.gnome.members;
license = licenses.gpl2Plus;
platforms = platforms.linux;
};
}

View file

@ -0,0 +1,93 @@
{ lib
, stdenv
, fetchurl
, desktop-file-utils
, gettext
, glibcLocales
, itstool
, libxml2
, meson
, ninja
, pkg-config
, python3
, wrapGAppsHook
, cpio
, file
, glib
, gnome
, gtk3
, libhandy
, json-glib
, libarchive
, libnotify
, nautilus
, unzip
}:
stdenv.mkDerivation rec {
pname = "file-roller";
version = "3.42.0";
src = fetchurl {
url = "mirror://gnome/sources/${pname}/${lib.versions.majorMinor version}/${pname}-${version}.tar.xz";
sha256 = "HEOObVPsEP9PLrWyLXu/KKfCqElXq2SnUcHN88UjAsc=";
};
LANG = "en_US.UTF-8"; # postinstall.py
nativeBuildInputs = [
desktop-file-utils
gettext
glibcLocales
itstool
libxml2
meson
ninja
pkg-config
python3
wrapGAppsHook
];
buildInputs = [
cpio
file
glib
gnome.adwaita-icon-theme
gtk3
libhandy
json-glib
libarchive
libnotify
nautilus
];
PKG_CONFIG_LIBNAUTILUS_EXTENSION_EXTENSIONDIR = "${placeholder "out"}/lib/nautilus/extensions-3.0";
postPatch = ''
chmod +x postinstall.py # patchShebangs requires executable file
patchShebangs postinstall.py
patchShebangs data/set-mime-type-entry.py
'';
preFixup = ''
# Workaround because of https://gitlab.gnome.org/GNOME/file-roller/issues/40
gappsWrapperArgs+=(
--prefix PATH : ${lib.makeBinPath [ unzip ]}
)
'';
passthru = {
updateScript = gnome.updateScript {
packageName = "file-roller";
attrPath = "gnome.file-roller";
};
};
meta = with lib; {
homepage = "https://wiki.gnome.org/Apps/FileRoller";
description = "Archive manager for the GNOME desktop environment";
license = licenses.gpl2Plus;
platforms = platforms.linux;
maintainers = teams.gnome.members ++ teams.pantheon.members;
};
}

View file

@ -0,0 +1,13 @@
diff --git a/gedit/meson.build b/gedit/meson.build
index a8683e61a..fc48669f7 100644
--- a/gedit/meson.build
+++ b/gedit/meson.build
@@ -191,7 +191,7 @@ libgedit_shared_lib = shared_library(
c_args: libgedit_c_args,
link_args: libgedit_link_args,
install: true,
- install_dir: get_option('libdir') / 'gedit',
+ install_dir: get_option('prefix') / get_option('libdir') / 'gedit',
)
# GObject Introspection

View file

@ -0,0 +1,91 @@
{ stdenv
, lib
, meson
, fetchurl
, python3
, pkg-config
, gtk3
, gtk-mac-integration
, glib
, adwaita-icon-theme
, libpeas
, libxml2
, gtksourceview4
, gsettings-desktop-schemas
, wrapGAppsHook
, ninja
, libsoup
, gnome
, gspell
, perl
, itstool
, desktop-file-utils
, vala
}:
stdenv.mkDerivation rec {
pname = "gedit";
version = "42.1";
src = fetchurl {
url = "mirror://gnome/sources/gedit/${lib.versions.major version}/${pname}-${version}.tar.xz";
sha256 = "fx/UPfURDUw33mVBmT9B8PvD78eQkA6SBTR5ugaZIOk=";
};
patches = [
# We patch gobject-introspection and meson to store absolute paths to libraries in typelibs
# but that requires the install_dir is an absolute path.
./correct-gir-lib-path.patch
];
nativeBuildInputs = [
desktop-file-utils
itstool
libxml2
meson
ninja
perl
pkg-config
python3
vala
wrapGAppsHook
];
buildInputs = [
adwaita-icon-theme
glib
gsettings-desktop-schemas
gspell
gtk3
gtksourceview4
libpeas
libsoup
] ++ lib.optionals stdenv.isDarwin [
gtk-mac-integration
];
postPatch = ''
chmod +x build-aux/meson/post_install.py
chmod +x plugins/externaltools/scripts/gedit-tool-merge.pl
patchShebangs build-aux/meson/post_install.py
patchShebangs plugins/externaltools/scripts/gedit-tool-merge.pl
'';
# Reliably fails to generate gedit-file-browser-enum-types.h in time
enableParallelBuilding = false;
passthru = {
updateScript = gnome.updateScript {
packageName = "gedit";
attrPath = "gnome.gedit";
};
};
meta = with lib; {
homepage = "https://wiki.gnome.org/Apps/Gedit";
description = "Official text editor of the GNOME desktop environment";
maintainers = teams.gnome.members;
license = licenses.gpl2Plus;
platforms = platforms.unix;
};
}

View file

@ -0,0 +1,81 @@
{ stdenv
, lib
, fetchurl
, pkg-config
, gi-docgen
, meson
, ninja
, gnome
, desktop-file-utils
, appstream-glib
, gettext
, itstool
, libxml2
, gtk4
, glib
, atk
, gobject-introspection
, wrapGAppsHook4
}:
stdenv.mkDerivation rec {
pname = "ghex";
version = "42.2";
outputs = [ "out" "dev" "devdoc" ];
src = fetchurl {
url = "mirror://gnome/sources/ghex/${lib.versions.major version}/${pname}-${version}.tar.xz";
sha256 = "Rd6Oa4ofMd5amRC+GMB/CaMo2HU434BAOuxa+IF8ljE=";
};
nativeBuildInputs = [
desktop-file-utils
gettext
itstool
meson
ninja
pkg-config
gi-docgen
gobject-introspection
wrapGAppsHook4
];
buildInputs = [
gtk4
atk
glib
];
checkInputs = [
appstream-glib
desktop-file-utils
];
mesonFlags = [
"-Dgtk_doc=true"
] ++ lib.optionals stdenv.isDarwin [
# mremap does not exist on darwin
"-Dmmap-buffer-backend=false"
];
postFixup = ''
# Cannot be in postInstall, otherwise _multioutDocs hook in preFixup will move right back.
moveToOutput "share/doc" "$devdoc"
'';
passthru = {
updateScript = gnome.updateScript {
packageName = "ghex";
attrPath = "gnome.${pname}";
};
};
meta = with lib; {
homepage = "https://wiki.gnome.org/Apps/Ghex";
description = "Hex editor for GNOME desktop environment";
platforms = platforms.unix;
license = licenses.gpl2Plus;
maintainers = teams.gnome.members;
};
}

View file

@ -0,0 +1,97 @@
{ stdenv
, lib
, meson
, ninja
, gettext
, fetchurl
, fetchpatch
, evince
, gjs
, pkg-config
, gtk3
, glib
, tracker
, tracker-miners
, libxslt
, webkitgtk
, gnome-desktop
, libgepub
, gnome
, gdk-pixbuf
, gsettings-desktop-schemas
, adwaita-icon-theme
, docbook-xsl-nons
, docbook_xml_dtd_42
, desktop-file-utils
, python3
, gobject-introspection
, wrapGAppsHook
}:
stdenv.mkDerivation rec {
pname = "gnome-books";
version = "40.0";
src = fetchurl {
url = "mirror://gnome/sources/${pname}/${lib.versions.major version}/${pname}-${version}.tar.xz";
sha256 = "0c41l8m2di8h39bmk2fnhpwglwp6qhljmwqqbihzp4ay9976zrc5";
};
patches = [
# Fix build with meson 0.61
# https://gitlab.gnome.org/GNOME/gnome-books/-/merge_requests/62
(fetchpatch {
url = "https://gitlab.gnome.org/GNOME/gnome-books/-/commit/2663dcdaaaa71f067a4c2d0005eecc0fdf940bf5.patch";
sha256 = "v2mLzrxSWrkJ0N6seR8jNXX14FsneEPuE9ELLVUe6+E=";
})
];
nativeBuildInputs = [
meson
ninja
pkg-config
gettext
libxslt
desktop-file-utils
docbook-xsl-nons
docbook_xml_dtd_42
wrapGAppsHook
python3
];
buildInputs = [
gtk3
glib
gsettings-desktop-schemas
gdk-pixbuf
adwaita-icon-theme
evince
webkitgtk
gjs
gobject-introspection
tracker
tracker-miners
gnome-desktop
libgepub
];
postPatch = ''
chmod +x meson_post_install.py # patchShebangs requires executable file
patchShebangs meson_post_install.py
'';
passthru = {
updateScript = gnome.updateScript {
packageName = "gnome-books";
attrPath = "gnome.gnome-books";
};
};
meta = with lib; {
homepage = "https://wiki.gnome.org/Apps/Books";
description = "An e-book manager application for GNOME";
maintainers = teams.gnome.members;
license = licenses.gpl2Plus;
platforms = platforms.linux;
};
}

View file

@ -0,0 +1,154 @@
{ lib, stdenv
, fetchurl
, meson
, ninja
, wrapGAppsHook
, pkg-config
, gettext
, itstool
, libvirt-glib
, glib
, gobject-introspection
, libxml2
, gtk3
, gtksourceview4
, gtk-vnc
, freerdp
, libvirt
, spice-gtk
, python3
, appstream-glib
, spice-protocol
, libhandy
, libsoup
, libosinfo
, systemd
, tracker
, tracker-miners
, vala
, libcap
, yajl
, gmp
, gdbm
, cyrus_sasl
, gnome
, librsvg
, desktop-file-utils
, mtools
, cdrkit
, libcdio
, libusb1
, libarchive
, acl
, libgudev
, libsecret
, libcap_ng
, numactl
, libapparmor
, json-glib
, webkitgtk
, vte
, glib-networking
, qemu-utils
, qemu
}:
stdenv.mkDerivation rec {
pname = "gnome-boxes";
version = "42.1";
src = fetchurl {
url = "mirror://gnome/sources/${pname}/${lib.versions.major version}/${pname}-${version}.tar.xz";
sha256 = "lvXQEbdQjbVhvw0WbA6p6LEhgFxA5dnzYRkkXBUXIIA=";
};
patches = [
# Fix path to libgovf-0.1.so (and libgtk-frdp-0.1.so when enabling rdp meson option)
# in the gir file. We patch gobject-introspection to hardcode absolute paths but
# our Meson patch will only pass the info when install_dir is absolute as well.
./fix-gir-lib-path.patch
];
doCheck = true;
nativeBuildInputs = [
appstream-glib # for appstream-util
desktop-file-utils
gettext
gobject-introspection
itstool
meson
ninja
pkg-config
python3
vala
wrapGAppsHook
];
# Required for USB redirection PolicyKit rules file
propagatedUserEnvPkgs = [
spice-gtk
];
buildInputs = [
acl
cyrus_sasl
freerdp
gdbm
glib
glib-networking
gmp
gnome.adwaita-icon-theme
gtk-vnc
gtk3
gtksourceview4
json-glib
libapparmor
libarchive
libcap
libcap_ng
libgudev
libhandy
libosinfo
librsvg
libsecret
libsoup
libusb1
libvirt
libvirt-glib
libxml2
numactl
spice-gtk
spice-protocol
systemd
tracker
tracker-miners
vte
webkitgtk
yajl
];
preFixup = ''
gappsWrapperArgs+=(--prefix PATH : "${lib.makeBinPath [ mtools cdrkit libcdio qemu-utils qemu ]}")
'';
postPatch = ''
chmod +x build-aux/post_install.py # patchShebangs requires executable file
patchShebangs build-aux/post_install.py
'';
passthru = {
updateScript = gnome.updateScript {
packageName = pname;
attrPath = "gnome.${pname}";
};
};
meta = with lib; {
description = "Simple GNOME 3 application to access remote or virtual systems";
homepage = "https://wiki.gnome.org/Apps/Boxes";
license = licenses.lgpl2Plus;
platforms = platforms.linux;
maintainers = teams.gnome.members;
};
}

View file

@ -0,0 +1,22 @@
--- a/subprojects/libovf-glib/govf/meson.build
+++ b/subprojects/libovf-glib/govf/meson.build
@@ -39,7 +39,7 @@ govf_lib = shared_library('govf-' + api_version,
govf_sources,
dependencies: govf_deps,
install: true,
- install_dir: libdir
+ install_dir: get_option ('prefix') / libdir
)
govf_dep = declare_dependency(
--- a/subprojects/gtk-frdp/src/meson.build
+++ b/subprojects/gtk-frdp/src/meson.build
@@ -50,7 +50,7 @@ gtk_frdp_lib = shared_library('gtk-frdp-' + api_version,
gtk_frdp_sources,
dependencies: gtk_frdp_deps,
install: true,
- install_dir: libdir
+ install_dir: get_option ('prefix') / libdir
)
gtk_frdp_dep = declare_dependency(

View file

@ -0,0 +1,68 @@
{ stdenv
, lib
, fetchurl
, meson
, ninja
, pkg-config
, wrapGAppsHook4
, libgweather
, geoclue2
, geocode-glib
, gettext
, libxml2
, gnome
, gtk4
, evolution-data-server
, libical
, libsoup
, glib
, gsettings-desktop-schemas
, libadwaita
}:
stdenv.mkDerivation rec {
pname = "gnome-calendar";
version = "42.1";
src = fetchurl {
url = "mirror://gnome/sources/${pname}/${lib.versions.major version}/${pname}-${version}.tar.xz";
sha256 = "0SKBy78a+GxyN1/mrZNG7Q4sLziKHq6FjOzmQGCm66g=";
};
nativeBuildInputs = [
meson
ninja
pkg-config
gettext
libxml2
wrapGAppsHook4
];
buildInputs = [
gtk4
evolution-data-server # waiting for GTK4 port
libical
libsoup
glib
libgweather
geoclue2
geocode-glib
gsettings-desktop-schemas
libadwaita
];
passthru = {
updateScript = gnome.updateScript {
packageName = pname;
attrPath = "gnome.${pname}";
};
};
meta = with lib; {
homepage = "https://wiki.gnome.org/Apps/Calendar";
description = "Simple and beautiful calendar application for GNOME";
maintainers = teams.gnome.members;
license = licenses.gpl3Plus;
platforms = platforms.linux;
};
}

View file

@ -0,0 +1,88 @@
{ lib
, stdenv
, fetchurl
, meson
, ninja
, pkg-config
, gettext
, gnome
, glib
, gtk4
, pango
, wrapGAppsHook4
, python3
, desktop-file-utils
, gobject-introspection
, gjs
, libunistring
, libadwaita
, gsettings-desktop-schemas
, gnome-desktop
}:
stdenv.mkDerivation rec {
pname = "gnome-characters";
version = "42.0";
src = fetchurl {
url = "mirror://gnome/sources/gnome-characters/${lib.versions.major version}/${pname}-${version}.tar.xz";
sha256 = "XaD/uBb4prRPMDdEyoJ6NAgBGMHJONjXmvF7f+Z5gPg=";
};
nativeBuildInputs = [
gettext
gobject-introspection
meson
ninja
pkg-config
python3
desktop-file-utils
wrapGAppsHook4
];
buildInputs = [
gjs
glib
gnome-desktop # for typelib
gsettings-desktop-schemas
gtk4
libunistring
libadwaita
pango
];
postPatch = ''
chmod +x meson_post_install.py # patchShebangs requires executable file
patchShebangs meson_post_install.py
# https://gitlab.gnome.org/GNOME/gnome-characters/-/merge_requests/70
substituteInPlace meson_post_install.py \
--replace "gtk-update-icon-cache" "gtk4-update-icon-cache"
'';
dontWrapGApps = true;
postFixup = ''
# Fixes https://github.com/NixOS/nixpkgs/issues/31168
file="$out/share/org.gnome.Characters/org.gnome.Characters"
sed -e $"2iimports.package._findEffectiveEntryPointName = () => \'$(basename $file)\' " \
-i $file
wrapGApp "$file"
'';
passthru = {
updateScript = gnome.updateScript {
packageName = pname;
attrPath = "gnome.${pname}";
};
};
meta = with lib; {
homepage = "https://wiki.gnome.org/Apps/Characters";
description = "Simple utility application to find and insert unusual characters";
maintainers = teams.gnome.members;
license = licenses.gpl2Plus;
platforms = platforms.linux;
};
}

View file

@ -0,0 +1,86 @@
{ stdenv
, lib
, fetchurl
, meson
, ninja
, gettext
, pkg-config
, wrapGAppsHook
, itstool
, desktop-file-utils
, vala_0_56
, gobject-introspection
, libxml2
, gtk4
, glib
, gsound
, sound-theme-freedesktop
, gsettings-desktop-schemas
, gnome-desktop
, geocode-glib
, gnome
, gdk-pixbuf
, geoclue2
, libgweather
, libadwaita
}:
stdenv.mkDerivation rec {
pname = "gnome-clocks";
version = "42.0";
src = fetchurl {
url = "mirror://gnome/sources/gnome-clocks/${lib.versions.major version}/${pname}-${version}.tar.xz";
sha256 = "DnEY20oDLjzqMhLZjLuCjWt88i/gXgxfyLORxqPdb+A=";
};
nativeBuildInputs = [
vala_0_56
meson
ninja
pkg-config
gettext
itstool
wrapGAppsHook
desktop-file-utils
libxml2
gobject-introspection # for finding vapi files
];
buildInputs = [
gtk4
glib
gsettings-desktop-schemas
gdk-pixbuf
gnome-desktop
geocode-glib
geoclue2
libgweather
gsound
libadwaita
];
preFixup = ''
gappsWrapperArgs+=(
# Fallback sound theme
--prefix XDG_DATA_DIRS : "${sound-theme-freedesktop}/share"
)
'';
doCheck = true;
passthru = {
updateScript = gnome.updateScript {
packageName = "gnome-clocks";
attrPath = "gnome.gnome-clocks";
};
};
meta = with lib; {
homepage = "https://wiki.gnome.org/Apps/Clocks";
description = "Clock application designed for GNOME 3";
maintainers = teams.gnome.members;
license = licenses.gpl2Plus;
platforms = platforms.linux;
};
}

View file

@ -0,0 +1,75 @@
{ lib
, stdenv
, fetchurl
, meson
, ninja
, pkg-config
, vala_0_56
, gettext
, itstool
, python3
, appstream-glib
, desktop-file-utils
, wrapGAppsHook
, glib
, gtk3
, libhandy
, libsecret
, libxml2
, gtk-vnc
, gtk-frdp
, gnome
}:
stdenv.mkDerivation rec {
pname = "gnome-connections";
version = "42.1.2";
src = fetchurl {
url = "mirror://gnome/sources/${pname}/${lib.versions.major version}/${pname}-${version}.tar.xz";
hash = "sha256-2ObnJ0EJHYkt/IQoH2JVUdBWjNSC1I21ik7bivoTd7Y=";
};
nativeBuildInputs = [
meson
ninja
pkg-config
vala_0_56
gettext
itstool
python3
appstream-glib
desktop-file-utils
glib # glib-compile-resources
wrapGAppsHook
];
buildInputs = [
glib
gtk-vnc
gtk3
libhandy
libsecret
libxml2
gtk-frdp
];
postPatch = ''
chmod +x build-aux/meson/postinstall.py
patchShebangs build-aux/meson/postinstall.py
'';
passthru = {
updateScript = gnome.updateScript {
packageName = pname;
};
};
meta = with lib; {
homepage = "https://gitlab.gnome.org/GNOME/connections";
description = "A remote desktop client for the GNOME desktop environment";
maintainers = teams.gnome.members;
license = licenses.gpl3Plus;
platforms = platforms.linux;
};
}

View file

@ -0,0 +1,127 @@
{ lib, stdenv
, meson
, ninja
, gettext
, fetchurl
, fetchpatch
, evince
, gjs
, pkg-config
, gtk3
, glib
, tracker
, tracker-miners
, itstool
, libxslt
, webkitgtk
, libgdata
, gnome-desktop
, libzapojit
, libgepub
, gnome
, gdk-pixbuf
, libsoup
, docbook_xsl
, docbook_xml_dtd_42
, gobject-introspection
, inkscape
, poppler_utils
, desktop-file-utils
, wrapGAppsHook
, python3
, appstream-glib
, gsettings-desktop-schemas
}:
stdenv.mkDerivation rec {
pname = "gnome-documents";
version = "3.34.0";
src = fetchurl {
url = "mirror://gnome/sources/gnome-documents/${lib.versions.majorMinor version}/${pname}-${version}.tar.xz";
sha256 = "1qph567mapg3s1a26k7b8y57g9bklhj2mh8xm758z9zkms20xafq";
};
patches = [
# Fix inkscape 1.0 usage
(fetchpatch {
url = "https://gitlab.gnome.org/GNOME/gnome-documents/commit/0f55a18c40a61e6ae4ec4652604775f139892350.diff";
sha256 = "1yrisq69dl1dn7639drlbza20a5ic6xg04ksr9iq4sxdx3xj3d8s";
})
];
nativeBuildInputs = [
meson
ninja
pkg-config
gettext
itstool
libxslt
desktop-file-utils
docbook_xsl
docbook_xml_dtd_42
wrapGAppsHook
python3
appstream-glib
# building getting started
inkscape
poppler_utils
];
buildInputs = [
gtk3
glib
gsettings-desktop-schemas
gdk-pixbuf
gnome.adwaita-icon-theme
evince
libsoup
webkitgtk
gjs
gobject-introspection
tracker
tracker-miners
libgdata
gnome-desktop
libzapojit
libgepub
];
doCheck = true;
mesonFlags = [
"-Dgetting_started=true"
];
postPatch = ''
chmod +x meson_post_install.py # patchShebangs requires executable file
patchShebangs meson_post_install.py
'';
preFixup = ''
substituteInPlace $out/bin/gnome-documents --replace gapplication "${glib.bin}/bin/gapplication"
'';
preConfigure =
# To silence inkscape warnings regarding profile directory
''
export INKSCAPE_PROFILE_DIR="$(mktemp -d)"
'';
passthru = {
updateScript = gnome.updateScript {
packageName = pname;
attrPath = "gnome.${pname}";
};
};
meta = with lib; {
broken = true; # Tracker 3 not supported and it cannot start Tracker 2.
homepage = "https://wiki.gnome.org/Apps/Documents";
description = "Document manager application designed to work with GNOME 3";
maintainers = teams.gnome.members;
license = licenses.gpl2;
platforms = platforms.linux;
};
}

View file

@ -0,0 +1,79 @@
{ stdenv
, lib
, fetchurl
, meson
, ninja
, pkg-config
, gnome
, glib
, gtk3
, wrapGAppsHook
, gettext
, itstool
, libhandy
, libxml2
, libxslt
, docbook_xsl
, docbook_xml_dtd_43
, systemd
, python3
, gsettings-desktop-schemas
}:
stdenv.mkDerivation rec {
pname = "gnome-logs";
version = "42.0";
src = fetchurl {
url = "mirror://gnome/sources/gnome-logs/${lib.versions.major version}/${pname}-${version}.tar.xz";
sha256 = "TV5FFp1r9DkC16npoHk8kW65LaumuoWzXI629nLNq9c=";
};
nativeBuildInputs = [
python3
meson
ninja
pkg-config
wrapGAppsHook
gettext
itstool
libxml2
libxslt
docbook_xsl
docbook_xml_dtd_43
];
buildInputs = [
glib
gtk3
libhandy
systemd
gsettings-desktop-schemas
];
mesonFlags = [
"-Dman=true"
];
postPatch = ''
chmod +x meson_post_install.py
patchShebangs meson_post_install.py
'';
doCheck = true;
passthru = {
updateScript = gnome.updateScript {
packageName = "gnome-logs";
attrPath = "gnome.gnome-logs";
};
};
meta = with lib; {
homepage = "https://wiki.gnome.org/Apps/Logs";
description = "A log viewer for the systemd journal";
maintainers = teams.gnome.members;
license = licenses.gpl3Plus;
platforms = platforms.linux;
};
}

View file

@ -0,0 +1,104 @@
{ stdenv
, lib
, fetchurl
, meson
, ninja
, gettext
, python3
, pkg-config
, gnome
, gtk3
, gobject-introspection
, gdk-pixbuf
, librest
, librsvg
, libgweather
, geoclue2
, wrapGAppsHook
, folks
, libchamplain
, libsoup
, gsettings-desktop-schemas
, webkitgtk
, gjs
, libgee
, libhandy
, geocode-glib
, evolution-data-server
, gnome-online-accounts
}:
stdenv.mkDerivation rec {
pname = "gnome-maps";
version = "42.2";
src = fetchurl {
url = "mirror://gnome/sources/${pname}/${lib.versions.major version}/${pname}-${version}.tar.xz";
sha256 = "sha256-Xm0bDKfMk56pGq39pWM6hl6oX6VlADaGGyv+8L/QabE=";
};
doCheck = true;
nativeBuildInputs = [
gettext
meson
ninja
pkg-config
python3
wrapGAppsHook
];
buildInputs = [
evolution-data-server
folks
gdk-pixbuf
geoclue2
geocode-glib
gjs
gnome-online-accounts
gobject-introspection
gsettings-desktop-schemas
gtk3
libchamplain
libgee
libgweather
libhandy
librest
librsvg
libsoup
webkitgtk
];
postPatch = ''
chmod +x meson_post_install.py # patchShebangs requires executable file
patchShebangs meson_post_install.py
# The .service file isn't wrapped with the correct environment
# so misses GIR files when started. By re-pointing from the gjs
# entry point to the wrapped binary we get back to a wrapped
# binary.
substituteInPlace "data/org.gnome.Maps.service.in" \
--replace "Exec=@pkgdatadir@/@app-id@" \
"Exec=$out/bin/gnome-maps"
'';
preCheck = ''
# “time.js” included by “timeTest” and “translationsTest” depends on “org.gnome.desktop.interface” schema.
export XDG_DATA_DIRS="${gsettings-desktop-schemas}/share/gsettings-schemas/${gsettings-desktop-schemas.name}:$XDG_DATA_DIRS"
'';
passthru = {
updateScript = gnome.updateScript {
packageName = pname;
attrPath = "gnome.${pname}";
};
};
meta = with lib; {
homepage = "https://wiki.gnome.org/Apps/Maps";
description = "A map application for GNOME 3";
maintainers = teams.gnome.members;
license = licenses.gpl2Plus;
platforms = platforms.linux;
};
}

View file

@ -0,0 +1,112 @@
{ lib
, meson
, ninja
, gettext
, fetchurl
, gdk-pixbuf
, tracker
, libxml2
, python3
, libnotify
, wrapGAppsHook4
, libmediaart
, gobject-introspection
, gnome-online-accounts
, grilo
, grilo-plugins
, pkg-config
, gtk4
, pango
, glib
, desktop-file-utils
, appstream-glib
, itstool
, gnome
, gst_all_1
, libsoup
, libadwaita
, gsettings-desktop-schemas
}:
python3.pkgs.buildPythonApplication rec {
pname = "gnome-music";
version = "42.1";
format = "other";
src = fetchurl {
url = "mirror://gnome/sources/${pname}/${lib.versions.major version}/${pname}-${version}.tar.xz";
sha256 = "x3R/pqhrVrGK1v+VD/kB5Z7n+sEcaLKmcnr4bq7tgnA=";
};
nativeBuildInputs = [
meson
ninja
gettext
itstool
pkg-config
libxml2
wrapGAppsHook4
desktop-file-utils
appstream-glib
gobject-introspection
];
buildInputs = [
gtk4
pango
glib
libmediaart
gnome-online-accounts
gobject-introspection
gdk-pixbuf
python3
grilo
grilo-plugins
libnotify
libsoup
libadwaita
gsettings-desktop-schemas
tracker
] ++ (with gst_all_1; [
gstreamer
gst-plugins-base
gst-plugins-good
gst-plugins-bad
gst-plugins-ugly
gst-libav
]);
pythonPath = with python3.pkgs; [
pycairo
dbus-python
pygobject3
];
# Prevent double wrapping, let the Python wrapper use the args in preFixup.
dontWrapGApps = true;
preFixup = ''
makeWrapperArgs+=("''${gappsWrapperArgs[@]}")
'';
doCheck = false;
# handle setup hooks better
strictDeps = false;
passthru = {
updateScript = gnome.updateScript {
packageName = pname;
attrPath = "gnome.${pname}";
};
};
meta = with lib; {
homepage = "https://wiki.gnome.org/Apps/Music";
description = "Music player and management application for the GNOME desktop environment";
maintainers = teams.gnome.members;
license = licenses.gpl2Plus;
platforms = platforms.linux;
};
}

View file

@ -0,0 +1,86 @@
{ stdenv
, lib
, fetchurl
, fetchpatch
, desktop-file-utils
, itstool
, meson
, ninja
, pkg-config
, python3
, wrapGAppsHook
, glib
, gtk3
, libgtop
, dnsutils
, iputils
, nmap
, inetutils
, gnome
}:
stdenv.mkDerivation rec {
pname = "gnome-nettool";
version = "42.0";
src = fetchurl {
url = "mirror://gnome/sources/${pname}/${lib.versions.major version}/${pname}-${version}.tar.xz";
sha256 = "pU8p7vIDiu5pVRyLGcpPdY5eueIJCkvGtWM9/wGIdR8=";
};
patches = [
# Fix build with meson 0.61
# https://gitlab.gnome.org/GNOME/gnome-nettool/-/merge_requests/3
(fetchpatch {
url = "https://gitlab.gnome.org/GNOME/gnome-nettool/-/commit/1124c3e1fdb8472d30b7636500229aa16cdc1244.patch";
sha256 = "fbpfL8Xb1GsadpQzAdmu8FSPs++bsGCVdcwnzQWttGY=";
})
];
nativeBuildInputs = [
desktop-file-utils
itstool
meson
ninja
pkg-config
python3
wrapGAppsHook
];
buildInputs = [
glib
gtk3
libgtop
];
postPatch = ''
chmod +x postinstall.py
patchShebangs postinstall.py
'';
preFixup = ''
gappsWrapperArgs+=(
--prefix PATH : "${lib.makeBinPath [
dnsutils # for dig
iputils # for ping
nmap # for nmap
inetutils # for ping6, traceroute, whois
]}"
)
'';
passthru = {
updateScript = gnome.updateScript {
packageName = pname;
attrPath = "gnome.${pname}";
};
};
meta = with lib; {
homepage = "https://gitlab.gnome.org/GNOME/gnome-nettool";
description = "A collection of networking tools";
maintainers = teams.gnome.members;
license = licenses.gpl2Plus;
platforms = platforms.linux;
};
}

View file

@ -0,0 +1,98 @@
{ stdenv
, lib
, meson
, ninja
, gettext
, fetchurl
, fetchpatch
, pkg-config
, wrapGAppsHook
, itstool
, desktop-file-utils
, python3
, glib
, gtk3
, evolution-data-server
, gnome-online-accounts
, json-glib
, libuuid
, curl
, libhandy
, webkitgtk
, gnome
, libxml2
, gsettings-desktop-schemas
, tracker
}:
stdenv.mkDerivation rec {
pname = "gnome-notes";
version = "40.1";
src = fetchurl {
url = "mirror://gnome/sources/bijiben/${lib.versions.major version}/bijiben-${version}.tar.xz";
sha256 = "1gvvb2klkzbmyzwkjgmscdiqcl8lyz9b0rxb4igjz079csq6z805";
};
patches = [
# Fix build with meson 0.61
# data/appdata/meson.build:3:5: ERROR: Function does not take positional arguments.
(fetchpatch {
url = "https://gitlab.gnome.org/GNOME/gnome-notes/-/commit/994af76ce5144062d55d141129bf6bf5fab002ee.patch";
sha256 = "sha256-z7dPOLZzaqvdqUIDy6+V3dKossRbG0EDjBu2oJCF6b4=";
})
];
doCheck = true;
postPatch = ''
chmod +x build-aux/meson_post_install.py
patchShebangs build-aux/meson_post_install.py
'';
nativeBuildInputs = [
meson
ninja
pkg-config
gettext
itstool
libxml2
desktop-file-utils
python3
wrapGAppsHook
];
buildInputs = [
glib
gtk3
json-glib
libuuid
curl
libhandy
webkitgtk
tracker
gnome-online-accounts
gsettings-desktop-schemas
evolution-data-server
gnome.adwaita-icon-theme
];
mesonFlags = [
"-Dupdate_mimedb=false"
];
passthru = {
updateScript = gnome.updateScript {
packageName = "bijiben";
attrPath = "gnome.gnome-notes";
};
};
meta = with lib; {
description = "Note editor designed to remain simple to use";
homepage = "https://wiki.gnome.org/Apps/Notes";
license = licenses.gpl3;
maintainers = teams.gnome.members;
platforms = platforms.linux;
};
}

View file

@ -0,0 +1,60 @@
{ lib, stdenv
, gettext
, fetchurl
, pkg-config
, gtk3
, glib
, meson
, ninja
, upower
, python3
, desktop-file-utils
, wrapGAppsHook
, gnome }:
let
pname = "gnome-power-manager";
version = "3.32.0";
in stdenv.mkDerivation rec {
name = "${pname}-${version}";
src = fetchurl {
url = "mirror://gnome/sources/${pname}/${lib.versions.majorMinor version}/${name}.tar.xz";
sha256 = "0drfn3wcc8l4n07qwv6p0rw2dwcd00hwzda282q62l6sasks2b2g";
};
passthru = {
updateScript = gnome.updateScript {
packageName = pname;
attrPath = "gnome.${pname}";
};
};
nativeBuildInputs = [
meson
ninja
pkg-config
wrapGAppsHook
gettext
# needed by meson_post_install.sh
python3
glib.dev
desktop-file-utils
];
buildInputs = [
gtk3
glib
upower
gnome.adwaita-icon-theme
];
meta = with lib; {
homepage = "https://gitlab.gnome.org/GNOME/gnome-power-manager";
description = "View battery and power statistics provided by UPower";
maintainers = teams.gnome.members;
license = licenses.gpl2Plus;
platforms = platforms.linux;
};
}

View file

@ -0,0 +1,73 @@
{ stdenv
, lib
, fetchurl
, pkg-config
, gettext
, gobject-introspection
, wrapGAppsHook
, gjs
, glib
, gtk4
, gdk-pixbuf
, gst_all_1
, gnome
, meson
, ninja
, python3
, desktop-file-utils
, libadwaita
}:
stdenv.mkDerivation rec {
pname = "gnome-sound-recorder";
version = "42.0";
src = fetchurl {
url = "mirror://gnome/sources/${pname}/${lib.versions.major version}/${pname}-${version}.tar.xz";
sha256 = "TAjDFSgvPr96LabyDg/58McdqlIp/NL+C1wKqqoG8K0=";
};
nativeBuildInputs = [
pkg-config
gettext
meson
ninja
gobject-introspection
wrapGAppsHook
python3
desktop-file-utils
];
buildInputs = [
gjs
glib
gtk4
gdk-pixbuf
libadwaita
] ++ (with gst_all_1; [
gstreamer
gst-plugins-base
gst-plugins-good
gst-plugins-bad # for gstreamer-player-1.0
]);
postPatch = ''
chmod +x build-aux/meson_post_install.py
patchShebangs build-aux/meson_post_install.py
'';
passthru = {
updateScript = gnome.updateScript {
packageName = pname;
attrPath = "gnome.${pname}";
};
};
meta = with lib; {
description = "A simple and modern sound recorder";
homepage = "https://wiki.gnome.org/Apps/SoundRecorder";
license = licenses.gpl2Plus;
maintainers = teams.gnome.members;
platforms = platforms.linux;
};
}

View file

@ -0,0 +1,69 @@
{ lib
, stdenv
, meson
, fetchurl
, python3
, pkg-config
, gtk4
, glib
, gtksourceview5
, gsettings-desktop-schemas
, wrapGAppsHook4
, ninja
, gnome
, enchant
, icu
, itstool
, libadwaita
, libxml2
, pcre
, appstream-glib
, desktop-file-utils
}:
stdenv.mkDerivation rec {
pname = "gnome-text-editor";
version = "42.1";
src = fetchurl {
url = "mirror://gnome/sources/gnome-text-editor/${lib.versions.major version}/${pname}-${version}.tar.xz";
sha256 = "sha256-o8hQgDO/tjqLSKBirB5nssMzugFTh5s4xmGWihA60Vw=";
};
nativeBuildInputs = [
appstream-glib
desktop-file-utils
itstool
libxml2 # for xmllint
meson
ninja
pkg-config
python3
wrapGAppsHook4
];
buildInputs = [
enchant
icu
glib
gsettings-desktop-schemas
gtk4
gtksourceview5
libadwaita
pcre
];
passthru = {
updateScript = gnome.updateScript {
packageName = "gnome-text-editor";
};
};
meta = with lib; {
homepage = "https://gitlab.gnome.org/GNOME/gnome-text-editor";
description = "A Text Editor for GNOME";
maintainers = teams.gnome.members;
license = licenses.gpl3Plus;
platforms = platforms.unix;
};
}

View file

@ -0,0 +1,96 @@
{ lib
, stdenv
, fetchFromGitLab
, fetchpatch
, meson
, ninja
, pkg-config
, python3
, wrapGAppsHook
, gettext
, gnome
, glib
, gtk4
, wayland
, libadwaita
, libpeas
, gnome-online-accounts
, gsettings-desktop-schemas
, libportal-gtk4
, evolution-data-server
, libical
, librest
, json-glib
, itstool
, unstableGitUpdater
}:
stdenv.mkDerivation rec {
pname = "gnome-todo";
version = "unstable-2022-05-23";
src = fetchFromGitLab {
domain = "gitlab.gnome.org";
owner = "GNOME";
repo = "gnome-todo";
rev = "ac1d540de63e2540b4eb8a642054862b5793b40a";
sha256 = "7fJOXQpapQ8RqJq5tJEWjOxnY9qExz5SbYMWFDREQlY=";
};
patches = [
# fix build race bug https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=257667
(fetchpatch {
url = "https://cgit.freebsd.org/ports/plain/deskutils/gnome-todo/files/patch-src_meson.build?id=a4faaf6cf7835014b5f69a337b544ea4ee7f9655";
sha256 = "sha256:0ihixyq72yhx6njij7bldsqb80x3y217yh6livknlf5r1wr3hakn";
extraPrefix = "";
name = "gnome-todo_meson-build.patch";
})
];
nativeBuildInputs = [
meson
ninja
pkg-config
gettext
python3
wrapGAppsHook
itstool
];
buildInputs = [
glib
gtk4
wayland # required by gtk header
libadwaita
libpeas
gnome-online-accounts
gsettings-desktop-schemas
gnome.adwaita-icon-theme
# Plug-ins
libportal-gtk4 # background
evolution-data-server # eds
libical
librest # todoist
json-glib # todoist
];
postPatch = ''
chmod +x build-aux/meson/meson_post_install.py
patchShebangs build-aux/meson/meson_post_install.py
'';
passthru = {
updateScript = unstableGitUpdater {
url = "https://gitlab.gnome.org/GNOME/gnome-todo.git";
};
};
meta = with lib; {
description = "Personal task manager for GNOME";
homepage = "https://wiki.gnome.org/Apps/Todo";
license = licenses.gpl3Plus;
maintainers = teams.gnome.members;
platforms = platforms.linux;
};
}

View file

@ -0,0 +1,74 @@
{ lib
, stdenv
, fetchurl
, pkg-config
, gnome
, gtk4
, libadwaita
, wrapGAppsHook
, gjs
, gobject-introspection
, libgweather
, meson
, ninja
, geoclue2
, python3
, gsettings-desktop-schemas
}:
stdenv.mkDerivation rec {
pname = "gnome-weather";
version = "42.0";
src = fetchurl {
url = "mirror://gnome/sources/gnome-weather/${lib.versions.major version}/${pname}-${version}.tar.xz";
sha256 = "V57mkdhT5bs/9Q6Me0P4Wundfls6ZJ4CwlSi2bgHtGU=";
};
nativeBuildInputs = [
pkg-config
meson
ninja
wrapGAppsHook
python3
];
buildInputs = [
gtk4
libadwaita
gjs
gobject-introspection
libgweather
gnome.adwaita-icon-theme
geoclue2
gsettings-desktop-schemas
];
postPatch = ''
# The .service file is not wrapped with the correct environment
# so misses GIR files when started. By re-pointing from the gjs
# entry point to the wrapped binary we get back to a wrapped
# binary.
substituteInPlace "data/org.gnome.Weather.service.in" \
--replace "Exec=@DATA_DIR@/@APP_ID@" \
"Exec=$out/bin/gnome-weather"
chmod +x meson_post_install.py
patchShebangs meson_post_install.py
'';
passthru = {
updateScript = gnome.updateScript {
packageName = "gnome-weather";
attrPath = "gnome.gnome-weather";
};
};
meta = with lib; {
homepage = "https://wiki.gnome.org/Apps/Weather";
description = "Access current weather conditions and forecasts";
maintainers = teams.gnome.members;
license = licenses.gpl2Plus;
platforms = platforms.linux;
};
}

View file

@ -0,0 +1,99 @@
{ stdenv
, lib
, itstool
, fetchurl
, gdk-pixbuf
, telepathy-glib
, gjs
, meson
, ninja
, gettext
, telepathy-idle
, libxml2
, desktop-file-utils
, pkg-config
, gtk4
, libadwaita
, gtk3
, glib
, libsecret
, libsoup
, webkitgtk
, gobject-introspection
, appstream-glib
, gnome
, wrapGAppsHook4
, telepathy-logger
, gspell
, gsettings-desktop-schemas
}:
stdenv.mkDerivation rec {
pname = "polari";
version = "42.0";
src = fetchurl {
url = "mirror://gnome/sources/${pname}/${lib.versions.major version}/${pname}-${version}.tar.xz";
sha256 = "WPFbv1tCwLASPv3td1cR07DyRJl1cwlAOMpVZGHgSTw=";
};
patches = [
# Upstream runs the thumbnailer by passing it to gjs.
# If we wrap it in a shell script, gjs can no longer run it.
# Lets change the code to run the script directly by making it executable and having gjs in shebang.
./make-thumbnailer-wrappable.patch
];
propagatedUserEnvPkgs = [
telepathy-idle
telepathy-logger
];
nativeBuildInputs = [
meson
ninja
pkg-config
itstool
gettext
wrapGAppsHook4
libxml2
desktop-file-utils
gobject-introspection
appstream-glib
];
buildInputs = [
gtk4
libadwaita
gtk3 # for thumbnailer
glib
gsettings-desktop-schemas
telepathy-glib
telepathy-logger
gjs
gspell
gdk-pixbuf
libsecret
libsoup
webkitgtk # for thumbnailer
];
postFixup = ''
wrapGApp "$out/share/polari/thumbnailer.js"
'';
passthru = {
updateScript = gnome.updateScript {
packageName = pname;
attrPath = "gnome.${pname}";
};
};
meta = with lib; {
homepage = "https://wiki.gnome.org/Apps/Polari";
description = "IRC chat client designed to integrate with the GNOME desktop";
maintainers = teams.gnome.members;
license = licenses.gpl2Plus;
platforms = platforms.linux;
};
}

View file

@ -0,0 +1,24 @@
diff --git a/src/thumbnailer.js b/src/thumbnailer.js
old mode 100644
new mode 100755
index ed6350ea..83d832cb
--- a/src/thumbnailer.js
+++ b/src/thumbnailer.js
@@ -1,3 +1,4 @@
+#!/usr/bin/env gjs --module
import Cairo from 'cairo';
import Gdk from 'gi://Gdk?version=3.0';
import Gio from 'gi://Gio';
diff --git a/src/urlPreview.js b/src/urlPreview.js
index 5f7931e4..d2282900 100644
--- a/src/urlPreview.js
+++ b/src/urlPreview.js
@@ -69,7 +69,7 @@ class Thumbnailer {
async _generateThumbnail(data) {
let { filename, uri } = data;
this._subProc = Gio.Subprocess.new(
- ['gjs', '--module', `${pkg.pkgdatadir}/thumbnailer.js`, uri, filename],
+ [`${pkg.pkgdatadir}/thumbnailer.js`, uri, filename],
Gio.SubprocessFlags.NONE);
try {
await this._subProc.wait_async(null);

View file

@ -0,0 +1,101 @@
{ lib, stdenv
, fetchurl
, vala
, meson
, ninja
, libpwquality
, pkg-config
, gtk3
, glib
, glib-networking
, wrapGAppsHook
, itstool
, gnupg
, libsoup
, gnome
, gpgme
, python3
, openldap
, gcr
, libsecret
, avahi
, p11-kit
, openssh
, gsettings-desktop-schemas
, libhandy
}:
stdenv.mkDerivation rec {
pname = "seahorse";
version = "42.0";
src = fetchurl {
url = "mirror://gnome/sources/${pname}/${lib.versions.major version}/${pname}-${version}.tar.xz";
hash = "sha256-xQys6/jeen4uXx2uC5gjIRR0Epar6NVD45I9YqFT1jA=";
};
nativeBuildInputs = [
meson
ninja
pkg-config
vala
itstool
wrapGAppsHook
python3
];
buildInputs = [
gtk3
glib
glib-networking
gcr
gsettings-desktop-schemas
gnupg
gpgme
libsecret
avahi
libsoup
p11-kit
openssh
openldap
libpwquality
libhandy
];
doCheck = true;
postPatch = ''
patchShebangs build-aux/
'';
preCheck = ''
# Add “org.gnome.crypto.pgp” GSettings schema to path
# to make it available for “gpgme-backend” test.
# It is used by Seahorses internal “common” library.
addToSearchPath XDG_DATA_DIRS "${glib.getSchemaDataDirPath gcr}"
# The same test also requires home directory so that it can store settings.
export HOME=$TMPDIR
'';
preFixup = ''
gappsWrapperArgs+=(
# Pick up icons from Gcr
--prefix XDG_DATA_DIRS : "${gcr}/share"
)
'';
passthru = {
updateScript = gnome.updateScript {
packageName = pname;
attrPath = "gnome.${pname}";
};
};
meta = with lib; {
homepage = "https://wiki.gnome.org/Apps/Seahorse";
description = "Application for managing encryption keys and passwords in the GnomeKeyring";
maintainers = teams.gnome.members;
license = licenses.gpl2Plus;
platforms = platforms.linux;
};
}

View file

@ -0,0 +1,34 @@
{ lib, stdenv, fetchurl, pkg-config, gtk3, gnome, vte, libxml2, gtk-vnc, intltool
, libsecret, itstool, wrapGAppsHook, librsvg }:
stdenv.mkDerivation rec {
pname = "vinagre";
version = "3.22.0";
src = fetchurl {
url = "mirror://gnome/sources/vinagre/${lib.versions.majorMinor version}/${pname}-${version}.tar.xz";
sha256 = "cd1cdbacca25c8d1debf847455155ee798c3e67a20903df8b228d4ece5505e82";
};
nativeBuildInputs = [ pkg-config intltool itstool wrapGAppsHook ];
buildInputs = [
gtk3 vte libxml2 gtk-vnc libsecret gnome.adwaita-icon-theme librsvg
];
NIX_CFLAGS_COMPILE = "-Wno-format-nonliteral";
passthru = {
updateScript = gnome.updateScript {
packageName = "vinagre";
attrPath = "gnome.vinagre";
};
};
meta = with lib; {
description = "Remote desktop viewer for GNOME";
homepage = "https://wiki.gnome.org/Apps/Vinagre";
license = licenses.gpl2Plus;
maintainers = teams.gnome.members;
platforms = platforms.linux;
};
}

View file

@ -0,0 +1,44 @@
{ lib, stdenv, fetchurl, fetchpatch, pkg-config, autoreconfHook, intltool, gnome
, iconnamingutils, gtk3, gdk-pixbuf, librsvg, hicolor-icon-theme }:
stdenv.mkDerivation rec {
pname = "adwaita-icon-theme";
version = "42.0";
src = fetchurl {
url = "mirror://gnome/sources/adwaita-icon-theme/${lib.versions.major version}/${pname}-${version}.tar.xz";
sha256 = "XoW1rcje5maQD8rycbpxf33LnQoD2W2uCPnL0n4YseA=";
};
patches = [
(fetchpatch {
name = "reduce-build-parallelism.patch";
url = "https://gitlab.gnome.org/vcunat/adwaita-icon-theme/-/commit/27edeca7927eb2247d7385fccb3f0fd7787471e6.patch";
sha256 = "vDWuvz5yRhtn9obTtHRp6J7gJpXDZz1cajyquPGw53I=";
})
];
# For convenience, we can specify adwaita-icon-theme only in packages
propagatedBuildInputs = [ hicolor-icon-theme ];
buildInputs = [ gdk-pixbuf librsvg ];
nativeBuildInputs = [ pkg-config autoreconfHook intltool iconnamingutils gtk3 ];
dontDropIconThemeCache = true;
# remove a tree of dirs with no files within
postInstall = '' rm -rf "$out/locale" '';
passthru = {
updateScript = gnome.updateScript {
packageName = "adwaita-icon-theme";
attrPath = "gnome.adwaita-icon-theme";
};
};
meta = with lib; {
platforms = with platforms; linux ++ darwin;
maintainers = teams.gnome.members;
};
}

View file

@ -0,0 +1,74 @@
{ stdenv
, lib
, gettext
, fetchurl
, vala
, desktop-file-utils
, meson
, ninja
, pkg-config
, python3
, gtk4
, libadwaita
, glib
, libxml2
, wrapGAppsHook4
, itstool
, gnome
}:
stdenv.mkDerivation rec {
pname = "baobab";
version = "42.0";
src = fetchurl {
url = "mirror://gnome/sources/${pname}/${lib.versions.major version}/${pname}-${version}.tar.xz";
sha256 = "Sxqr5rqxWCs/6nmigpvOfyQVu25QYvJTV67t1TF6UNw=";
};
nativeBuildInputs = [
desktop-file-utils
gettext
glib
itstool
libxml2
meson
ninja
pkg-config
python3
vala
wrapGAppsHook4
# Prevents “error: Package `libadwaita-1' not found in specified Vala API
# directories or GObject-Introspection GIR directories” with strictDeps,
# even though it should only be a runtime dependency.
libadwaita
];
buildInputs = [
gtk4
libadwaita
glib
];
doCheck = true;
postPatch = ''
# https://gitlab.gnome.org/GNOME/baobab/-/merge_requests/40
substituteInPlace build-aux/post-install.py \
--replace "gtk-update-icon-cache" "gtk4-update-icon-cache"
'';
passthru = {
updateScript = gnome.updateScript {
packageName = pname;
};
};
meta = with lib; {
description = "Graphical application to analyse disk usage in any GNOME environment";
homepage = "https://wiki.gnome.org/Apps/DiskUsageAnalyzer";
license = licenses.gpl2Plus;
maintainers = teams.gnome.members;
platforms = platforms.linux;
};
}

View file

@ -0,0 +1,69 @@
{ fetchurl, lib, stdenv, pkg-config, gnome, glib, gtk3, clutter, dbus, python3, libxml2
, libxklavier, libXtst, gtk2, intltool, libxslt, at-spi2-core, autoreconfHook
, wrapGAppsHook, libgee, vala }:
let
pname = "caribou";
version = "0.4.21";
pythonEnv = python3.withPackages ( ps: with ps; [ pygobject3 ] );
in stdenv.mkDerivation rec {
name = "${pname}-${version}";
src = fetchurl {
url = "mirror://gnome/sources/${pname}/${lib.versions.majorMinor version}/${name}.tar.xz";
sha256 = "0mfychh1q3dx0b96pjz9a9y112bm9yqyim40yykzxx1hppsdjhww";
};
patches = [
# Fix crash in GNOME Flashback
# https://bugzilla.gnome.org/show_bug.cgi?id=791001
(fetchurl {
url = "https://bugzilla.gnome.org/attachment.cgi?id=364774";
sha256 = "15k1455grf6knlrxqbjnk7sals1730b0whj30451scp46wyvykvd";
})
# Stop patching the generated GIR, fixes build with latest vala
(fetchurl {
url = "https://gitlab.gnome.org/GNOME/caribou/-/commit/c52ce71c49dc8d6109a58d16cc8d491d7bd1d781.patch";
sha256 = "sha256-jbF1Ygp8Q0ENN/5aEpROuK5zkufIfn6cGW8dncl7ET4=";
})
(fetchurl {
name = "fix-build-modern-vala.patch";
url = "https://gitlab.gnome.org/GNOME/caribou/-/commit/76fbd11575f918fc898cb0f5defe07f67c11ec38.patch";
sha256 = "0qy27zk7889hg51nx40afgppcx9iaihxbg3aqz9w35d6fmhr2k2y";
})
(fetchurl {
name = "CVE-2021-3567.patch";
url = "https://gitlab.gnome.org/GNOME/caribou/-/commit/d41c8e44b12222a290eaca16703406b113a630c6.patch";
sha256 = "1vd2j3823k2p3msv7fq2437p3jvxzbd7hyh07i80g9754ylh92y8";
})
];
nativeBuildInputs = [ pkg-config intltool libxslt libxml2 autoreconfHook wrapGAppsHook vala ];
buildInputs = [
glib gtk3 clutter at-spi2-core dbus pythonEnv python3.pkgs.pygobject3
libXtst gtk2
];
propagatedBuildInputs = [ libgee libxklavier ];
postPatch = ''
patchShebangs .
substituteInPlace libcaribou/Makefile.am --replace "--shared-library=libcaribou.so.0" "--shared-library=$out/lib/libcaribou.so.0"
'';
passthru = {
updateScript = gnome.updateScript {
packageName = pname;
attrPath = "gnome.${pname}";
};
};
meta = with lib; {
description = "An input assistive technology intended for switch and pointer users";
homepage = "https://wiki.gnome.org/Projects/Caribou";
license = licenses.lgpl21;
maintainers = teams.gnome.members;
platforms = platforms.linux;
};
}

View file

@ -0,0 +1,82 @@
{ lib
, stdenv
, fetchurl
, fetchpatch
, meson
, ninja
, vala
, libxslt
, pkg-config
, glib
, gtk3
, gnome
, python3
, dconf
, libxml2
, gettext
, docbook-xsl-nons
, wrapGAppsHook
, gobject-introspection
}:
stdenv.mkDerivation rec {
pname = "dconf-editor";
version = "3.38.3";
src = fetchurl {
url = "mirror://gnome/sources/${pname}/${lib.versions.majorMinor version}/${pname}-${version}.tar.xz";
sha256 = "sha256-Vxr0x9rU8Em1PmzXKLea3fCMJ92ra8V7OW0hGGbueeM=";
};
patches = [
# Look for compiled schemas in NIX_GSETTINGS_OVERRIDES_DIR
# environment variable, to match what we patched GLib to do.
./schema-override-variable.patch
# Fix build with Meson 0.61.0
(fetchpatch {
url = "https://gitlab.gnome.org/GNOME/dconf-editor/-/commit/56474378568e6ff4af8aa912810323e808c1d977.patch";
sha256 = "iFyJcskqcmvz7tp1Z9jM9f8WvAhD0L9Vx1hu2c402MA=";
})
];
nativeBuildInputs = [
meson
ninja
vala
libxslt
pkg-config
wrapGAppsHook
gettext
docbook-xsl-nons
libxml2
gobject-introspection
python3
];
buildInputs = [
glib
gtk3
dconf
];
postPatch = ''
chmod +x meson_post_install.py
patchShebangs meson_post_install.py
'';
passthru = {
updateScript = gnome.updateScript {
packageName = pname;
attrPath = "gnome.${pname}";
};
};
meta = with lib; {
description = "GSettings editor for GNOME";
homepage = "https://wiki.gnome.org/Apps/DconfEditor";
license = licenses.gpl3Plus;
maintainers = teams.gnome.members;
platforms = platforms.linux;
};
}

View file

@ -0,0 +1,14 @@
diff --git a/editor/source-manager.vala b/editor/source-manager.vala
index 27b2b17a..87f7ba86 100644
--- a/editor/source-manager.vala
+++ b/editor/source-manager.vala
@@ -121,6 +121,9 @@ private class SourceManager : Object
source = try_prepend_dir (source, Path.build_filename (system_data_dirs [i], "glib-2.0", "schemas"));
string user_data_dir = GLib.Environment.get_user_data_dir ();
source = try_prepend_dir (source, Path.build_filename (user_data_dir, "glib-2.0", "schemas"));
+ string? nix_var_schema_dir = GLib.Environment.get_variable ("NIX_GSETTINGS_OVERRIDES_DIR");
+ if (nix_var_schema_dir != null)
+ source = try_prepend_dir (source, (!) nix_var_schema_dir);
string? var_schema_dir = GLib.Environment.get_variable ("GSETTINGS_SCHEMA_DIR");
if (var_schema_dir != null)
source = try_prepend_dir (source, (!) var_schema_dir);

View file

@ -0,0 +1,147 @@
{ lib, stdenv
, intltool
, fetchurl
, webkitgtk
, pkg-config
, gtk3
, glib
, file
, librsvg
, gnome
, gdk-pixbuf
, python3
, telepathy-glib
, telepathy-farstream
, clutter-gtk
, clutter-gst
, gst_all_1
, cogl
, gnome-online-accounts
, gcr
, libsecret
, folks
, libpulseaudio
, telepathy-mission-control
, telepathy-logger
, libnotify
, clutter
, libsoup
, gnutls
, evolution-data-server
, yelp-xsl
, libcanberra-gtk3
, p11-kit
, farstream
, libtool
, shared-mime-info
, wrapGAppsHook
, itstool
, libxml2
, libxslt
, icu
, libgee
, gsettings-desktop-schemas
, isocodes
, enchant
, libchamplain
, geoclue2
, geocode-glib
, cheese
, libgudev
}:
stdenv.mkDerivation rec {
pname = "empathy";
version = "3.25.90";
src = fetchurl {
url = "mirror://gnome/sources/empathy/${lib.versions.majorMinor version}/${pname}-${version}.tar.xz";
sha256 = "0sn10fcymc6lyrabk7vx8lpvlaxxkqnmcwj9zdkfa8qf3388k4nc";
};
propagatedBuildInputs = [
(folks.override { telepathySupport = true; })
telepathy-logger
evolution-data-server
telepathy-mission-control
];
nativeBuildInputs = [
pkg-config
libtool
intltool
itstool
file
wrapGAppsHook
libxml2
libxslt
yelp-xsl
python3
];
buildInputs = [
gtk3
glib
webkitgtk
icu
gnome-online-accounts
telepathy-glib
clutter-gtk
clutter-gst
cogl
gst_all_1.gstreamer
gst_all_1.gst-plugins-base
gcr
libsecret
libpulseaudio
gdk-pixbuf
libnotify
clutter
libsoup
gnutls
libgee
p11-kit
libcanberra-gtk3
telepathy-farstream
farstream
gnome.adwaita-icon-theme
gsettings-desktop-schemas
librsvg
# Spell-checking
enchant
isocodes
# Display maps, location awareness, geocode support
libchamplain
geoclue2
geocode-glib
# Cheese webcam support, camera monitoring
cheese
libgudev
];
enableParallelBuilding = true;
preFixup = ''
gappsWrapperArgs+=(
--prefix XDG_DATA_DIRS : "${shared-mime-info}/share"
)
'';
passthru = {
updateScript = gnome.updateScript {
packageName = "empathy";
versionPolicy = "none";
};
};
meta = with lib; {
homepage = "https://wiki.gnome.org/Apps/Empathy";
description = "Messaging program which supports text, voice, video chat, and file transfers over many different protocols";
maintainers = teams.gnome.members;
license = [ licenses.gpl2 ];
platforms = platforms.linux;
};
}

View file

@ -0,0 +1,109 @@
{ lib
, stdenv
, fetchurl
, meson
, ninja
, gettext
, itstool
, pkg-config
, libxml2
, libjpeg
, libpeas
, libportal-gtk3
, gnome
, gtk3
, libhandy
, glib
, gsettings-desktop-schemas
, gnome-desktop
, lcms2
, gdk-pixbuf
, exempi
, shared-mime-info
, wrapGAppsHook
, librsvg
, libexif
, gobject-introspection
, gi-docgen
}:
stdenv.mkDerivation rec {
pname = "eog";
version = "42.2";
outputs = [ "out" "dev" "devdoc" ];
src = fetchurl {
url = "mirror://gnome/sources/${pname}/${lib.versions.major version}/${pname}-${version}.tar.xz";
sha256 = "sha256-Dk1Kai7hokCui1hEnwK6LGS3+ZSQ0LiRXX9SyQpYBF4=";
};
patches = [
# Fix path to libeog.so in the gir file.
# We patch gobject-introspection to hardcode absolute paths but
# our Meson patch will only pass the info when install_dir is absolute as well.
./fix-gir-lib-path.patch
];
nativeBuildInputs = [
meson
ninja
pkg-config
gettext
itstool
wrapGAppsHook
libxml2 # for xmllint for xml-stripblanks
gobject-introspection
gi-docgen
];
buildInputs = [
libjpeg
libportal-gtk3
gtk3
libhandy
gdk-pixbuf
glib
libpeas
librsvg
lcms2
gnome-desktop
libexif
exempi
gsettings-desktop-schemas
shared-mime-info
];
mesonFlags = [
"-Dgtk_doc=true"
];
preFixup = ''
gappsWrapperArgs+=(
# Thumbnailers
--prefix XDG_DATA_DIRS : "${gdk-pixbuf}/share"
--prefix XDG_DATA_DIRS : "${librsvg}/share"
--prefix XDG_DATA_DIRS : "${shared-mime-info}/share"
)
'';
postFixup = ''
# Cannot be in postInstall, otherwise _multioutDocs hook in preFixup will move right back.
moveToOutput "share/doc" "$devdoc"
'';
passthru = {
updateScript = gnome.updateScript {
packageName = pname;
attrPath = "gnome.${pname}";
};
};
meta = with lib; {
description = "GNOME image viewer";
homepage = "https://wiki.gnome.org/Apps/EyeOfGnome";
license = licenses.gpl2Plus;
maintainers = teams.gnome.members;
platforms = platforms.unix;
};
}

View file

@ -0,0 +1,13 @@
diff --git a/src/meson.build b/src/meson.build
index cc9d3856..f909836d 100644
--- a/src/meson.build
+++ b/src/meson.build
@@ -165,7 +165,7 @@ libeog = shared_library(
link_args: ldflags,
link_depends: symbol_map,
install: true,
- install_dir: eog_pkglibdir,
+ install_dir: eog_prefix / eog_pkglibdir,
)
libeog_dep = declare_dependency(

View file

@ -0,0 +1,129 @@
{ lib
, stdenv
, meson
, ninja
, gettext
, fetchurl
, fetchpatch
, pkg-config
, gtk3
, glib
, icu
, wrapGAppsHook
, gnome
, libportal-gtk3
, libxml2
, libxslt
, itstool
, webkitgtk
, libsoup
, glib-networking
, libsecret
, gnome-desktop
, libnotify
, libarchive
, p11-kit
, sqlite
, gcr
, isocodes
, desktop-file-utils
, python3
, nettle
, gdk-pixbuf
, gst_all_1
, json-glib
, libdazzle
, libhandy
, buildPackages
, withPantheon ? false
}:
stdenv.mkDerivation rec {
pname = "epiphany";
version = "42.2";
src = fetchurl {
url = "mirror://gnome/sources/${pname}/${lib.versions.major version}/${pname}-${version}.tar.xz";
sha256 = "ksAs+IbRDSzP9d5ljhpCDqsx0gu1DnRtQw6VNbSFGS0=";
};
patches = lib.optionals withPantheon [
# Pantheon specific patches for epiphany
# https://github.com/elementary/browser
#
# Patch to unlink nav buttons
# https://github.com/elementary/browser/pull/18
(fetchpatch {
url = "https://raw.githubusercontent.com/elementary/browser/cc17559a7ac6effe593712b4f3d0bbefde6e3b62/navigation-buttons.patch";
sha256 = "sha256-G1/JUjn/8DyO9sgL/5Kq205KbTOs4EMi4Vf3cJ8FHXU=";
})
];
nativeBuildInputs = [
desktop-file-utils
gettext
itstool
libxslt
meson
ninja
pkg-config
python3
wrapGAppsHook
buildPackages.glib
buildPackages.gtk3
];
buildInputs = [
gcr
gdk-pixbuf
glib
glib-networking
gnome-desktop
gst_all_1.gst-libav
gst_all_1.gst-plugins-bad
gst_all_1.gst-plugins-base
gst_all_1.gst-plugins-good
gst_all_1.gst-plugins-ugly
gst_all_1.gstreamer
gtk3
icu
isocodes
json-glib
libdazzle
libhandy
libportal-gtk3
libnotify
libarchive
libsecret
libsoup
libxml2
nettle
p11-kit
sqlite
webkitgtk
];
# Tests need an X display
mesonFlags = [
"-Dunit_tests=disabled"
];
postPatch = ''
chmod +x post_install.py # patchShebangs requires executable file
patchShebangs post_install.py
'';
passthru = {
updateScript = gnome.updateScript {
packageName = pname;
};
};
meta = with lib; {
homepage = "https://wiki.gnome.org/Apps/Epiphany";
description = "WebKit based web browser for GNOME";
maintainers = teams.gnome.members ++ teams.pantheon.members;
license = licenses.gpl3Plus;
platforms = platforms.linux;
};
}

View file

@ -0,0 +1,148 @@
{ lib
, stdenv
, fetchurl
, meson
, ninja
, pkg-config
, gettext
, libxml2
, appstream
, glib
, gtk3
, pango
, atk
, gdk-pixbuf
, shared-mime-info
, itstool
, gnome
, poppler
, ghostscriptX
, djvulibre
, libspectre
, libarchive
, libhandy
, libsecret
, wrapGAppsHook
, librsvg
, gobject-introspection
, yelp-tools
, gspell
, adwaita-icon-theme
, gsettings-desktop-schemas
, gnome-desktop
, dbus
, python3
, texlive
, gst_all_1
, gi-docgen
, supportMultimedia ? true # PDF multimedia
, libgxps
, supportXPS ? true # Open XML Paper Specification via libgxps
, withLibsecret ? true
}:
stdenv.mkDerivation rec {
pname = "evince";
version = "42.3";
outputs = [ "out" "dev" "devdoc" ];
src = fetchurl {
url = "mirror://gnome/sources/evince/${lib.versions.major version}/${pname}-${version}.tar.xz";
sha256 = "Sa7PhFyUbJbbF7qJ11yAAsWuiWP1BKmwYm0SZ1kUZF4=";
};
postPatch = ''
chmod +x meson_post_install.py
patchShebangs meson_post_install.py
'';
nativeBuildInputs = [
appstream
gettext
gobject-introspection
gi-docgen
itstool
meson
ninja
pkg-config
python3
wrapGAppsHook
yelp-tools
];
buildInputs = [
adwaita-icon-theme
atk
dbus # only needed to find the service directory
djvulibre
gdk-pixbuf
ghostscriptX
glib
gnome-desktop
gsettings-desktop-schemas
gspell
gtk3
libarchive
libhandy
librsvg
libspectre
libxml2
pango
poppler
texlive.bin.core # kpathsea for DVI support
] ++ lib.optionals withLibsecret [
libsecret
] ++ lib.optionals supportXPS [
libgxps
] ++ lib.optionals supportMultimedia (with gst_all_1; [
gstreamer
gst-plugins-base
gst-plugins-good
gst-plugins-bad
gst-plugins-ugly
gst-libav
]);
mesonFlags = [
"-Dnautilus=false"
"-Dps=enabled"
] ++ lib.optionals (!withLibsecret) [
"-Dkeyring=disabled"
] ++ lib.optionals (!supportMultimedia) [
"-Dmultimedia=disabled"
];
NIX_CFLAGS_COMPILE = "-I${glib.dev}/include/gio-unix-2.0";
preFixup = ''
gappsWrapperArgs+=(--prefix XDG_DATA_DIRS : "${shared-mime-info}/share")
'';
postFixup = ''
# Cannot be in postInstall, otherwise _multioutDocs hook in preFixup will move right back.
moveToOutput "share/doc" "$devdoc"
'';
passthru = {
updateScript = gnome.updateScript {
packageName = pname;
};
};
meta = with lib; {
homepage = "https://wiki.gnome.org/Apps/Evince";
description = "GNOME's document viewer";
longDescription = ''
Evince is a document viewer for multiple document formats. It
currently supports PDF, PostScript, DjVu, TIFF and DVI. The goal
of Evince is to replace the multiple document viewers that exist
on the GNOME Desktop with a single simple application.
'';
license = licenses.gpl2Plus;
platforms = platforms.linux;
maintainers = teams.gnome.members ++ teams.pantheon.members;
};
}

View file

@ -0,0 +1,142 @@
{ stdenv
, lib
, fetchurl
, substituteAll
, pkg-config
, gnome
, python3
, gobject-introspection
, gettext
, libsoup
, libxml2
, libsecret
, icu
, sqlite
, tzdata
, libcanberra-gtk3
, gcr
, p11-kit
, db
, nspr
, nss
, libical
, gperf
, wrapGAppsHook
, glib-networking
, pcre
, vala
, cmake
, ninja
, libkrb5
, openldap
, webkitgtk
, libaccounts-glib
, json-glib
, glib
, gtk3
, libphonenumber
, gnome-online-accounts
, libgweather
, libgdata
, gsettings-desktop-schemas
, boost
, protobuf
}:
stdenv.mkDerivation rec {
pname = "evolution-data-server";
version = "3.44.2";
outputs = [ "out" "dev" ];
src = fetchurl {
url = "mirror://gnome/sources/evolution-data-server/${lib.versions.majorMinor version}/${pname}-${version}.tar.xz";
sha256 = "Ltcq/k1rsXD4co+uoJB/7hAhLf3nqfq4L7zIPQ8i8Cg=";
};
patches = [
(substituteAll {
src = ./fix-paths.patch;
inherit tzdata;
})
];
prePatch = ''
substitute ${./hardcode-gsettings.patch} hardcode-gsettings.patch \
--subst-var-by ESD_GSETTINGS_PATH ${glib.makeSchemaPath "$out" "${pname}-${version}"} \
--subst-var-by GDS_GSETTINGS_PATH ${glib.getSchemaPath gsettings-desktop-schemas}
patches="$patches $PWD/hardcode-gsettings.patch"
'';
nativeBuildInputs = [
cmake
ninja
pkg-config
gettext
python3
gperf
wrapGAppsHook
gobject-introspection
vala
];
buildInputs = [
glib
libsoup
libxml2
gtk3
gnome-online-accounts
gcr
p11-kit
libgweather
libgdata
libaccounts-glib
json-glib
icu
sqlite
libkrb5
openldap
webkitgtk
glib-networking
libcanberra-gtk3
pcre
libphonenumber
boost
protobuf
];
propagatedBuildInputs = [
db
libsecret
nss
nspr
libical
libgdata # needed for GObject inspection, https://gitlab.gnome.org/GNOME/evolution-data-server/-/merge_requests/57/diffs
libsoup
];
cmakeFlags = [
"-DENABLE_UOA=OFF"
"-DENABLE_VALA_BINDINGS=ON"
"-DENABLE_INTROSPECTION=ON"
"-DCMAKE_SKIP_BUILD_RPATH=OFF"
"-DINCLUDE_INSTALL_DIR=${placeholder "dev"}/include"
"-DWITH_PHONENUMBER=ON"
"-DWITH_GWEATHER4=ON"
];
passthru = {
updateScript = gnome.updateScript {
packageName = "evolution-data-server";
versionPolicy = "odd-unstable";
};
};
meta = with lib; {
description = "Unified backend for programs that work with contacts, tasks, and calendar information";
homepage = "https://wiki.gnome.org/Apps/Evolution";
license = licenses.lgpl2Plus;
maintainers = teams.gnome.members;
platforms = platforms.linux;
};
}

View file

@ -0,0 +1,11 @@
--- a/src/calendar/libecal/e-cal-system-timezone.c
+++ b/src/calendar/libecal/e-cal-system-timezone.c
@@ -26,7 +26,7 @@
#ifdef HAVE_SOLARIS
#define SYSTEM_ZONEINFODIR "/usr/share/lib/zoneinfo/tab"
#else
-#define SYSTEM_ZONEINFODIR "/usr/share/zoneinfo"
+#define SYSTEM_ZONEINFODIR "@tzdata@/share/zoneinfo"
#endif
#define ETC_TIMEZONE "/etc/timezone"

View file

@ -0,0 +1,526 @@
diff --git a/src/addressbook/libebook/e-book-client.c b/src/addressbook/libebook/e-book-client.c
index 2c0557c3c..5955aa55e 100644
--- a/src/addressbook/libebook/e-book-client.c
+++ b/src/addressbook/libebook/e-book-client.c
@@ -1989,7 +1989,20 @@ e_book_client_get_self (ESourceRegistry *registry,
*out_client = book_client;
- settings = g_settings_new (SELF_UID_PATH_ID);
+ {
+ GSettingsSchemaSource *schema_source;
+ GSettingsSchema *schema;
+ schema_source = g_settings_schema_source_new_from_directory("@ESD_GSETTINGS_PATH@",
+ g_settings_schema_source_get_default(),
+ TRUE,
+ NULL);
+ schema = g_settings_schema_source_lookup(schema_source,
+ SELF_UID_PATH_ID,
+ FALSE);
+ settings = g_settings_new_full(schema, NULL, NULL);
+ g_settings_schema_source_unref(schema_source);
+ g_settings_schema_unref(schema);
+ }
uid = g_settings_get_string (settings, SELF_UID_KEY);
g_object_unref (settings);
@@ -2057,7 +2070,20 @@ e_book_client_set_self (EBookClient *client,
g_return_val_if_fail (
e_contact_get_const (contact, E_CONTACT_UID) != NULL, FALSE);
- settings = g_settings_new (SELF_UID_PATH_ID);
+ {
+ GSettingsSchemaSource *schema_source;
+ GSettingsSchema *schema;
+ schema_source = g_settings_schema_source_new_from_directory("@ESD_GSETTINGS_PATH@",
+ g_settings_schema_source_get_default(),
+ TRUE,
+ NULL);
+ schema = g_settings_schema_source_lookup(schema_source,
+ SELF_UID_PATH_ID,
+ FALSE);
+ settings = g_settings_new_full(schema, NULL, NULL);
+ g_settings_schema_source_unref(schema_source);
+ g_settings_schema_unref(schema);
+ }
g_settings_set_string (
settings, SELF_UID_KEY,
e_contact_get_const (contact, E_CONTACT_UID));
@@ -2093,8 +2119,20 @@ e_book_client_is_self (EContact *contact)
* unfortunately the API doesn't allow that.
*/
g_mutex_lock (&mutex);
- if (!settings)
- settings = g_settings_new (SELF_UID_PATH_ID);
+ if (!settings) {
+ GSettingsSchemaSource *schema_source;
+ GSettingsSchema *schema;
+ schema_source = g_settings_schema_source_new_from_directory("@ESD_GSETTINGS_PATH@",
+ g_settings_schema_source_get_default(),
+ TRUE,
+ NULL);
+ schema = g_settings_schema_source_lookup(schema_source,
+ SELF_UID_PATH_ID,
+ FALSE);
+ settings = g_settings_new_full(schema, NULL, NULL);
+ g_settings_schema_source_unref(schema_source);
+ g_settings_schema_unref(schema);
+ }
uid = g_settings_get_string (settings, SELF_UID_KEY);
g_mutex_unlock (&mutex);
diff --git a/src/addressbook/libebook/e-book.c b/src/addressbook/libebook/e-book.c
index 3396b57c0..ac6420b2e 100644
--- a/src/addressbook/libebook/e-book.c
+++ b/src/addressbook/libebook/e-book.c
@@ -2594,7 +2594,20 @@ e_book_get_self (ESourceRegistry *registry,
return FALSE;
}
- settings = g_settings_new (SELF_UID_PATH_ID);
+ {
+ GSettingsSchemaSource *schema_source;
+ GSettingsSchema *schema;
+ schema_source = g_settings_schema_source_new_from_directory("@ESD_GSETTINGS_PATH@",
+ g_settings_schema_source_get_default(),
+ TRUE,
+ NULL);
+ schema = g_settings_schema_source_lookup(schema_source,
+ SELF_UID_PATH_ID,
+ FALSE);
+ settings = g_settings_new_full(schema, NULL, NULL);
+ g_settings_schema_source_unref(schema_source);
+ g_settings_schema_unref(schema);
+ }
uid = g_settings_get_string (settings, SELF_UID_KEY);
g_object_unref (settings);
@@ -2649,7 +2662,20 @@ e_book_set_self (EBook *book,
g_return_val_if_fail (E_IS_BOOK (book), FALSE);
g_return_val_if_fail (E_IS_CONTACT (contact), FALSE);
- settings = g_settings_new (SELF_UID_PATH_ID);
+ {
+ GSettingsSchemaSource *schema_source;
+ GSettingsSchema *schema;
+ schema_source = g_settings_schema_source_new_from_directory("@ESD_GSETTINGS_PATH@",
+ g_settings_schema_source_get_default(),
+ TRUE,
+ NULL);
+ schema = g_settings_schema_source_lookup(schema_source,
+ SELF_UID_PATH_ID,
+ FALSE);
+ settings = g_settings_new_full(schema, NULL, NULL);
+ g_settings_schema_source_unref(schema_source);
+ g_settings_schema_unref(schema);
+ }
g_settings_set_string (
settings, SELF_UID_KEY,
e_contact_get_const (contact, E_CONTACT_UID));
@@ -2677,7 +2703,20 @@ e_book_is_self (EContact *contact)
g_return_val_if_fail (E_IS_CONTACT (contact), FALSE);
- settings = g_settings_new (SELF_UID_PATH_ID);
+ {
+ GSettingsSchemaSource *schema_source;
+ GSettingsSchema *schema;
+ schema_source = g_settings_schema_source_new_from_directory("@ESD_GSETTINGS_PATH@",
+ g_settings_schema_source_get_default(),
+ TRUE,
+ NULL);
+ schema = g_settings_schema_source_lookup(schema_source,
+ SELF_UID_PATH_ID,
+ FALSE);
+ settings = g_settings_new_full(schema, NULL, NULL);
+ g_settings_schema_source_unref(schema_source);
+ g_settings_schema_unref(schema);
+ }
uid = g_settings_get_string (settings, SELF_UID_KEY);
g_object_unref (settings);
diff --git a/src/calendar/backends/contacts/e-cal-backend-contacts.c b/src/calendar/backends/contacts/e-cal-backend-contacts.c
index de1716941..e83b104f1 100644
--- a/src/calendar/backends/contacts/e-cal-backend-contacts.c
+++ b/src/calendar/backends/contacts/e-cal-backend-contacts.c
@@ -1397,7 +1397,20 @@ e_cal_backend_contacts_init (ECalBackendContacts *cbc)
(GDestroyNotify) g_free,
(GDestroyNotify) contact_record_free);
- cbc->priv->settings = g_settings_new ("org.gnome.evolution-data-server.calendar");
+ {
+ GSettingsSchemaSource *schema_source;
+ GSettingsSchema *schema;
+ schema_source = g_settings_schema_source_new_from_directory("@ESD_GSETTINGS_PATH@",
+ g_settings_schema_source_get_default(),
+ TRUE,
+ NULL);
+ schema = g_settings_schema_source_lookup(schema_source,
+ "org.gnome.evolution-data-server.calendar",
+ FALSE);
+ cbc->priv->settings = g_settings_new_full(schema, NULL, NULL);
+ g_settings_schema_source_unref(schema_source);
+ g_settings_schema_unref(schema);
+ }
cbc->priv->notifyid = 0;
cbc->priv->update_alarms_id = 0;
cbc->priv->alarm_enabled = FALSE;
diff --git a/src/calendar/libecal/e-reminder-watcher.c b/src/calendar/libecal/e-reminder-watcher.c
index b08a7f301..a49fe39c5 100644
--- a/src/calendar/libecal/e-reminder-watcher.c
+++ b/src/calendar/libecal/e-reminder-watcher.c
@@ -2202,7 +2202,21 @@ e_reminder_watcher_init (EReminderWatcher *watcher)
watcher->priv = G_TYPE_INSTANCE_GET_PRIVATE (watcher, E_TYPE_REMINDER_WATCHER, EReminderWatcherPrivate);
watcher->priv->cancellable = g_cancellable_new ();
- watcher->priv->settings = g_settings_new ("org.gnome.evolution-data-server.calendar");
+ {
+ GSettingsSchemaSource *schema_source;
+ GSettingsSchema *schema;
+ schema_source = g_settings_schema_source_new_from_directory("@ESD_GSETTINGS_PATH@",
+ g_settings_schema_source_get_default(),
+ TRUE,
+ NULL);
+ schema = g_settings_schema_source_lookup(schema_source,
+ "org.gnome.evolution-data-server.calendar",
+ FALSE);
+ watcher->priv->settings = g_settings_new_full(schema, NULL,
+ NULL);
+ g_settings_schema_source_unref(schema_source);
+ g_settings_schema_unref(schema);
+ }
watcher->priv->scheduled = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, e_reminder_watcher_free_rd_slist);
watcher->priv->default_zone = icaltimezone_copy (zone);
watcher->priv->timers_enabled = TRUE;
diff --git a/src/camel/camel-cipher-context.c b/src/camel/camel-cipher-context.c
index dcdc3eed0..fd2e428c2 100644
--- a/src/camel/camel-cipher-context.c
+++ b/src/camel/camel-cipher-context.c
@@ -1635,7 +1635,20 @@ camel_cipher_can_load_photos (void)
GSettings *settings;
gboolean load_photos;
- settings = g_settings_new ("org.gnome.evolution-data-server");
+ {
+ GSettingsSchemaSource *schema_source;
+ GSettingsSchema *schema;
+ schema_source = g_settings_schema_source_new_from_directory("@ESD_GSETTINGS_PATH@",
+ g_settings_schema_source_get_default(),
+ TRUE,
+ NULL);
+ schema = g_settings_schema_source_lookup(schema_source,
+ "org.gnome.evolution-data-server",
+ FALSE);
+ settings = g_settings_new_full(schema, NULL, NULL);
+ g_settings_schema_source_unref(schema_source);
+ g_settings_schema_unref(schema);
+ }
load_photos = g_settings_get_boolean (settings, "camel-cipher-load-photos");
g_clear_object (&settings);
diff --git a/src/camel/camel-gpg-context.c b/src/camel/camel-gpg-context.c
index 1b3362886..f0811b292 100644
--- a/src/camel/camel-gpg-context.c
+++ b/src/camel/camel-gpg-context.c
@@ -573,7 +573,20 @@ gpg_ctx_get_executable_name (void)
GSettings *settings;
gchar *path;
- settings = g_settings_new ("org.gnome.evolution-data-server");
+ {
+ GSettingsSchemaSource *schema_source;
+ GSettingsSchema *schema;
+ schema_source = g_settings_schema_source_new_from_directory("@ESD_GSETTINGS_PATH@",
+ g_settings_schema_source_get_default(),
+ TRUE,
+ NULL);
+ schema = g_settings_schema_source_lookup(schema_source,
+ "org.gnome.evolution-data-server",
+ FALSE);
+ settings = g_settings_new_full(schema, NULL, NULL);
+ g_settings_schema_source_unref(schema_source);
+ g_settings_schema_unref(schema);
+ }
path = g_settings_get_string (settings, "camel-gpg-binary");
g_clear_object (&settings);
diff --git a/src/libedataserver/e-network-monitor.c b/src/libedataserver/e-network-monitor.c
index e0d8b87d6..3a4d5a359 100644
--- a/src/libedataserver/e-network-monitor.c
+++ b/src/libedataserver/e-network-monitor.c
@@ -255,7 +255,20 @@ e_network_monitor_constructed (GObject *object)
/* Chain up to parent's method. */
G_OBJECT_CLASS (e_network_monitor_parent_class)->constructed (object);
- settings = g_settings_new ("org.gnome.evolution-data-server");
+ {
+ GSettingsSchemaSource *schema_source;
+ GSettingsSchema *schema;
+ schema_source = g_settings_schema_source_new_from_directory("@ESD_GSETTINGS_PATH@",
+ g_settings_schema_source_get_default(),
+ TRUE,
+ NULL);
+ schema = g_settings_schema_source_lookup(schema_source,
+ "org.gnome.evolution-data-server",
+ FALSE);
+ settings = g_settings_new_full(schema, NULL, NULL);
+ g_settings_schema_source_unref(schema_source);
+ g_settings_schema_unref(schema);
+ }
g_settings_bind (
settings, "network-monitor-gio-name",
object, "gio-name",
diff --git a/src/libedataserver/e-oauth2-service-google.c b/src/libedataserver/e-oauth2-service-google.c
index f0c6f2cbf..0053e3ce6 100644
--- a/src/libedataserver/e-oauth2-service-google.c
+++ b/src/libedataserver/e-oauth2-service-google.c
@@ -69,7 +69,20 @@ eos_google_read_settings (EOAuth2Service *service,
if (!value) {
GSettings *settings;
- settings = g_settings_new ("org.gnome.evolution-data-server");
+ {
+ GSettingsSchemaSource *schema_source;
+ GSettingsSchema *schema;
+ schema_source = g_settings_schema_source_new_from_directory("@ESD_GSETTINGS_PATH@",
+ g_settings_schema_source_get_default(),
+ TRUE,
+ NULL);
+ schema = g_settings_schema_source_lookup(schema_source,
+ "org.gnome.evolution-data-server",
+ FALSE);
+ settings = g_settings_new_full(schema, NULL, NULL);
+ g_settings_schema_source_unref(schema_source);
+ g_settings_schema_unref(schema);
+ }
value = g_settings_get_string (settings, key_name);
g_object_unref (settings);
diff --git a/src/libedataserver/e-oauth2-service-outlook.c b/src/libedataserver/e-oauth2-service-outlook.c
index 687c10d3b..684583c35 100644
--- a/src/libedataserver/e-oauth2-service-outlook.c
+++ b/src/libedataserver/e-oauth2-service-outlook.c
@@ -70,7 +70,20 @@ eos_outlook_read_settings (EOAuth2Service *service,
if (!value) {
GSettings *settings;
- settings = g_settings_new ("org.gnome.evolution-data-server");
+ {
+ GSettingsSchemaSource *schema_source;
+ GSettingsSchema *schema;
+ schema_source = g_settings_schema_source_new_from_directory("@ESD_GSETTINGS_PATH@",
+ g_settings_schema_source_get_default(),
+ TRUE,
+ NULL);
+ schema = g_settings_schema_source_lookup(schema_source,
+ "org.gnome.evolution-data-server",
+ FALSE);
+ settings = g_settings_new_full(schema, NULL, NULL);
+ g_settings_schema_source_unref(schema_source);
+ g_settings_schema_unref(schema);
+ }
value = g_settings_get_string (settings, key_name);
g_object_unref (settings);
diff --git a/src/libedataserver/e-oauth2-service.c b/src/libedataserver/e-oauth2-service.c
index 682673c16..436f52d5f 100644
--- a/src/libedataserver/e-oauth2-service.c
+++ b/src/libedataserver/e-oauth2-service.c
@@ -95,7 +95,20 @@ eos_default_guess_can_process (EOAuth2Service *service,
name_len = strlen (name);
hostname_len = strlen (hostname);
- settings = g_settings_new ("org.gnome.evolution-data-server");
+ {
+ GSettingsSchemaSource *schema_source;
+ GSettingsSchema *schema;
+ schema_source = g_settings_schema_source_new_from_directory("@ESD_GSETTINGS_PATH@",
+ g_settings_schema_source_get_default(),
+ TRUE,
+ NULL);
+ schema = g_settings_schema_source_lookup(schema_source,
+ "org.gnome.evolution-data-server",
+ FALSE);
+ settings = g_settings_new_full(schema, NULL, NULL);
+ g_settings_schema_source_unref(schema_source);
+ g_settings_schema_unref(schema);
+ }
values = g_settings_get_strv (settings, "oauth2-services-hint");
g_object_unref (settings);
diff --git a/src/libedataserver/e-proxy.c b/src/libedataserver/e-proxy.c
index 883379a60..989353494 100644
--- a/src/libedataserver/e-proxy.c
+++ b/src/libedataserver/e-proxy.c
@@ -969,8 +969,37 @@ e_proxy_init (EProxy *proxy)
proxy->priv->type = PROXY_TYPE_SYSTEM;
- proxy->priv->evolution_proxy_settings = g_settings_new ("org.gnome.evolution.shell.network-config");
- proxy->priv->proxy_settings = g_settings_new ("org.gnome.system.proxy");
+ {
+ GSettingsSchemaSource *schema_source;
+ GSettingsSchema *schema;
+ schema_source = g_settings_schema_source_new_from_directory("@ESD_GSETTINGS_PATH@",
+ g_settings_schema_source_get_default(),
+ TRUE,
+ NULL);
+ schema = g_settings_schema_source_lookup(schema_source,
+ "org.gnome.evolution.shell.network-config",
+ FALSE);
+ proxy->priv->evolution_proxy_settings = g_settings_new_full(schema,
+ NULL,
+ NULL);
+ g_settings_schema_source_unref(schema_source);
+ g_settings_schema_unref(schema);
+ }
+ {
+ GSettingsSchemaSource *schema_source;
+ GSettingsSchema *schema;
+ schema_source = g_settings_schema_source_new_from_directory("@GDS_GSETTINGS_PATH@",
+ g_settings_schema_source_get_default(),
+ TRUE,
+ NULL);
+ schema = g_settings_schema_source_lookup(schema_source,
+ "org.gnome.system.proxy",
+ FALSE);
+ proxy->priv->proxy_settings = g_settings_new_full(schema,
+ NULL, NULL);
+ g_settings_schema_source_unref(schema_source);
+ g_settings_schema_unref(schema);
+ }
proxy->priv->proxy_http_settings = g_settings_get_child (proxy->priv->proxy_settings, "http");
proxy->priv->proxy_https_settings = g_settings_get_child (proxy->priv->proxy_settings, "https");
proxy->priv->proxy_socks_settings = g_settings_get_child (proxy->priv->proxy_settings, "socks");
diff --git a/src/libedataserver/e-source-registry.c b/src/libedataserver/e-source-registry.c
index a5a30a3e1..5fbdf8190 100644
--- a/src/libedataserver/e-source-registry.c
+++ b/src/libedataserver/e-source-registry.c
@@ -1749,7 +1749,21 @@ e_source_registry_init (ESourceRegistry *registry)
g_mutex_init (&registry->priv->sources_lock);
- registry->priv->settings = g_settings_new (GSETTINGS_SCHEMA);
+ {
+ GSettingsSchemaSource *schema_source;
+ GSettingsSchema *schema;
+ schema_source = g_settings_schema_source_new_from_directory("@ESD_GSETTINGS_PATH@",
+ g_settings_schema_source_get_default(),
+ TRUE,
+ NULL);
+ schema = g_settings_schema_source_lookup(schema_source,
+ GSETTINGS_SCHEMA,
+ FALSE);
+ registry->priv->settings = g_settings_new_full(schema, NULL,
+ NULL);
+ g_settings_schema_source_unref(schema_source);
+ g_settings_schema_unref(schema);
+ }
g_signal_connect (
registry->priv->settings, "changed",
diff --git a/src/libedataserverui/e-reminders-widget.c b/src/libedataserverui/e-reminders-widget.c
index f89cd4a5c..06cca9b5f 100644
--- a/src/libedataserverui/e-reminders-widget.c
+++ b/src/libedataserverui/e-reminders-widget.c
@@ -1650,7 +1650,21 @@ static void
e_reminders_widget_init (ERemindersWidget *reminders)
{
reminders->priv = e_reminders_widget_get_instance_private (reminders);
- reminders->priv->settings = g_settings_new ("org.gnome.evolution-data-server.calendar");
+ {
+ GSettingsSchemaSource *schema_source;
+ GSettingsSchema *schema;
+ schema_source = g_settings_schema_source_new_from_directory("@ESD_GSETTINGS_PATH@",
+ g_settings_schema_source_get_default(),
+ TRUE,
+ NULL);
+ schema = g_settings_schema_source_lookup(schema_source,
+ "org.gnome.evolution-data-server.calendar",
+ FALSE);
+ reminders->priv->settings = g_settings_new_full(schema, NULL,
+ NULL);
+ g_settings_schema_source_unref(schema_source);
+ g_settings_schema_unref(schema);
+ }
reminders->priv->cancellable = g_cancellable_new ();
reminders->priv->is_empty = TRUE;
reminders->priv->is_mapped = FALSE;
diff --git a/src/services/evolution-source-registry/evolution-source-registry-autoconfig.c b/src/services/evolution-source-registry/evolution-source-registry-autoconfig.c
index 6f03053d6..dffc186c7 100644
--- a/src/services/evolution-source-registry/evolution-source-registry-autoconfig.c
+++ b/src/services/evolution-source-registry/evolution-source-registry-autoconfig.c
@@ -706,7 +706,20 @@ evolution_source_registry_merge_autoconfig_sources (ESourceRegistryServer *serve
gchar *autoconfig_directory;
gint ii;
- settings = g_settings_new ("org.gnome.evolution-data-server");
+ {
+ GSettingsSchemaSource *schema_source;
+ GSettingsSchema *schema;
+ schema_source = g_settings_schema_source_new_from_directory("@ESD_GSETTINGS_PATH@",
+ g_settings_schema_source_get_default(),
+ TRUE,
+ NULL);
+ schema = g_settings_schema_source_lookup(schema_source,
+ "org.gnome.evolution-data-server",
+ FALSE);
+ settings = g_settings_new_full(schema, NULL, NULL);
+ g_settings_schema_source_unref(schema_source);
+ g_settings_schema_unref(schema);
+ }
autoconfig_sources = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, e_autoconfig_free_merge_source_data);
diff --git a/src/services/evolution-source-registry/evolution-source-registry-migrate-proxies.c b/src/services/evolution-source-registry/evolution-source-registry-migrate-proxies.c
index d531cb9e2..c5b1c761c 100644
--- a/src/services/evolution-source-registry/evolution-source-registry-migrate-proxies.c
+++ b/src/services/evolution-source-registry/evolution-source-registry-migrate-proxies.c
@@ -61,7 +61,20 @@ evolution_source_registry_migrate_proxies (ESourceRegistryServer *server)
extension_name = E_SOURCE_EXTENSION_PROXY;
extension = e_source_get_extension (source, extension_name);
- settings = g_settings_new (NETWORK_CONFIG_SCHEMA_ID);
+ {
+ GSettingsSchemaSource *schema_source;
+ GSettingsSchema *schema;
+ schema_source = g_settings_schema_source_new_from_directory("@ESD_GSETTINGS_PATH@",
+ g_settings_schema_source_get_default(),
+ TRUE,
+ NULL);
+ schema = g_settings_schema_source_lookup(schema_source,
+ NETWORK_CONFIG_SCHEMA_ID,
+ FALSE);
+ settings = g_settings_new_full(schema, NULL, NULL);
+ g_settings_schema_source_unref(schema_source);
+ g_settings_schema_unref(schema);
+ }
switch (g_settings_get_int (settings, "proxy-type")) {
case 1:
diff --git a/src/services/evolution-source-registry/evolution-source-registry.c b/src/services/evolution-source-registry/evolution-source-registry.c
index 1c0a11382..3e144845e 100644
--- a/src/services/evolution-source-registry/evolution-source-registry.c
+++ b/src/services/evolution-source-registry/evolution-source-registry.c
@@ -181,7 +181,20 @@ main (gint argc,
reload:
- settings = g_settings_new ("org.gnome.evolution-data-server");
+ {
+ GSettingsSchemaSource *schema_source;
+ GSettingsSchema *schema;
+ schema_source = g_settings_schema_source_new_from_directory("@ESD_GSETTINGS_PATH@",
+ g_settings_schema_source_get_default(),
+ TRUE,
+ NULL);
+ schema = g_settings_schema_source_lookup(schema_source,
+ "org.gnome.evolution-data-server",
+ FALSE);
+ settings = g_settings_new_full(schema, NULL, NULL);
+ g_settings_schema_source_unref(schema_source);
+ g_settings_schema_unref(schema);
+ }
if (!opt_disable_migration && !g_settings_get_boolean (settings, "migrated")) {
g_settings_set_boolean (settings, "migrated", TRUE);

View file

@ -0,0 +1,183 @@
{ lib, stdenv
, fetchurl
, fetchpatch
, substituteAll
, meson
, ninja
, python3
, rsync
, pkg-config
, glib
, itstool
, libxml2
, xorg
, accountsservice
, libX11
, gnome
, systemd
, dconf
, gtk3
, libcanberra-gtk3
, pam
, libgudev
, libselinux
, keyutils
, audit
, gobject-introspection
, plymouth
, librsvg
, coreutils
, xorgserver
, xwayland
, dbus
, nixos-icons
}:
let
override = substituteAll {
src = ./org.gnome.login-screen.gschema.override;
icon = "${nixos-icons}/share/icons/hicolor/scalable/apps/nix-snowflake-white.svg";
};
in
stdenv.mkDerivation rec {
pname = "gdm";
version = "42.0";
outputs = [ "out" "dev" ];
src = fetchurl {
url = "mirror://gnome/sources/gdm/${lib.versions.major version}/${pname}-${version}.tar.xz";
sha256 = "oyisl2k3vsF5lx/weCmhJGuYznJBgcEorjKguketOFU=";
};
mesonFlags = [
"-Dgdm-xsession=true"
# TODO: Setup a default-path? https://gitlab.gnome.org/GNOME/gdm/-/blob/6fc40ac6aa37c8ad87c32f0b1a5d813d34bf7770/meson_options.txt#L6
"-Dinitial-vt=${passthru.initialVT}"
"-Dudev-dir=${placeholder "out"}/lib/udev/rules.d"
"-Dsystemdsystemunitdir=${placeholder "out"}/lib/systemd/system"
"-Dsystemduserunitdir=${placeholder "out"}/lib/systemd/user"
"--sysconfdir=/etc"
"--localstatedir=/var"
];
nativeBuildInputs = [
dconf
glib # for glib-compile-schemas
itstool
meson
ninja
pkg-config
python3
rsync
];
buildInputs = [
accountsservice
audit
glib
gobject-introspection
gtk3
keyutils
libX11
libcanberra-gtk3
libgudev
libselinux
pam
plymouth
systemd
xorg.libXdmcp
];
patches = [
# GDM fails to find g-s with the following error in the journal.
# gdm-x-session[976]: dbus-run-session: failed to exec 'gnome-session': No such file or directory
# https://gitlab.gnome.org/GNOME/gdm/-/merge_requests/92
(fetchpatch {
url = "https://gitlab.gnome.org/GNOME/gdm/-/commit/ccecd9c975d04da80db4cd547b67a1a94fa83292.patch";
sha256 = "5hKS9wjjhuSAYwXct5vS0dPbmPRIINJoLC0Zm1naz6Q=";
revert = true;
})
# Change hardcoded paths to nix store paths.
(substituteAll {
src = ./fix-paths.patch;
inherit coreutils plymouth xorgserver xwayland dbus;
})
# The following patches implement certain environment variables in GDM which are set by
# the gdm configuration module (nixos/modules/services/x11/display-managers/gdm.nix).
./gdm-x-session_extra_args.patch
# Allow specifying a wrapper for running the session command.
./gdm-x-session_session-wrapper.patch
# Forwards certain environment variables to the gdm-x-session child process
# to ensure that the above two patches actually work.
./gdm-session-worker_forward-vars.patch
# Set up the environment properly when launching sessions
# https://github.com/NixOS/nixpkgs/issues/48255
./reset-environment.patch
];
postPatch = ''
patchShebangs build-aux/meson_post_install.py
# Upstream checks some common paths to find an `X` binary. We already know it.
echo #!/bin/sh > build-aux/find-x-server.sh
echo "echo ${lib.getBin xorg.xorgserver}/bin/X" >> build-aux/find-x-server.sh
patchShebangs build-aux/find-x-server.sh
'';
preInstall = ''
install -D ${override} ${DESTDIR}/$out/share/glib-2.0/schemas/org.gnome.login-screen.gschema.override
'';
postInstall = ''
# Move stuff from DESTDIR to proper location.
# We use rsync to merge the directories.
rsync --archive "${DESTDIR}/etc" "$out"
rm --recursive "${DESTDIR}/etc"
for o in $outputs; do
rsync --archive "${DESTDIR}/''${!o}" "$(dirname "''${!o}")"
rm --recursive "${DESTDIR}/''${!o}"
done
# Ensure the DESTDIR is removed.
rmdir "${DESTDIR}/nix/store" "${DESTDIR}/nix" "${DESTDIR}"
# We are setting DESTDIR so the post-install script does not compile the schemas.
glib-compile-schemas "$out/share/glib-2.0/schemas"
'';
# HACK: We want to install configuration files to $out/etc
# but GDM should read them from /etc on a NixOS system.
# With autotools, it was possible to override Make variables
# at install time but Meson does not support this
# so we need to convince it to install all files to a temporary
# location using DESTDIR and then move it to proper one in postInstall.
DESTDIR = "${placeholder "out"}/dest";
passthru = {
updateScript = gnome.updateScript {
packageName = "gdm";
attrPath = "gnome.gdm";
};
# Used in GDM NixOS module
# Don't remove.
initialVT = "7";
};
meta = with lib; {
description = "A program that manages graphical display servers and handles graphical user logins";
homepage = "https://wiki.gnome.org/Projects/GDM";
license = licenses.gpl2Plus;
maintainers = teams.gnome.members;
platforms = platforms.linux;
};
}

View file

@ -0,0 +1,93 @@
diff --git a/daemon/gdm-local-display-factory.c b/daemon/gdm-local-display-factory.c
index 5fbbad68..739718ec 100644
--- a/daemon/gdm-local-display-factory.c
+++ b/daemon/gdm-local-display-factory.c
@@ -233,9 +233,9 @@ struct GdmDisplayServerConfiguration {
const char *session_type;
} display_server_configuration[] = {
#ifdef ENABLE_WAYLAND_SUPPORT
- { "wayland", GDM_KEY_WAYLAND_ENABLE, "/usr/bin/Xwayland", "wayland" },
+ { "wayland", GDM_KEY_WAYLAND_ENABLE, "@xwayland@/bin/Xwayland", "wayland" },
#endif
- { "xorg", GDM_KEY_XORG_ENABLE, "/usr/bin/Xorg", "x11" },
+ { "xorg", GDM_KEY_XORG_ENABLE, "@xorgserver@/bin/Xorg", "x11" },
{ NULL, NULL, NULL },
};
diff --git a/daemon/gdm-manager.c b/daemon/gdm-manager.c
index cc61efc9..4c9d15af 100644
--- a/daemon/gdm-manager.c
+++ b/daemon/gdm-manager.c
@@ -148,7 +148,7 @@ plymouth_is_running (void)
GError *error;
error = NULL;
- res = g_spawn_command_line_sync ("plymouth --ping",
+ res = g_spawn_command_line_sync ("@plymouth@/bin/plymouth --ping",
NULL, NULL, &status, &error);
if (! res) {
g_debug ("Could not ping plymouth: %s", error->message);
@@ -166,7 +166,7 @@ plymouth_prepare_for_transition (void)
GError *error;
error = NULL;
- res = g_spawn_command_line_sync ("plymouth deactivate",
+ res = g_spawn_command_line_sync ("@plymouth@/bin/plymouth deactivate",
NULL, NULL, NULL, &error);
if (! res) {
g_warning ("Could not deactivate plymouth: %s", error->message);
@@ -181,7 +181,7 @@ plymouth_quit_with_transition (void)
GError *error;
error = NULL;
- res = g_spawn_command_line_async ("plymouth quit --retain-splash", &error);
+ res = g_spawn_command_line_async ("@plymouth@/bin/plymouth quit --retain-splash", &error);
if (! res) {
g_warning ("Could not quit plymouth: %s", error->message);
g_error_free (error);
@@ -197,7 +197,7 @@ plymouth_quit_without_transition (void)
GError *error;
error = NULL;
- res = g_spawn_command_line_async ("plymouth quit", &error);
+ res = g_spawn_command_line_async ("@plymouth@/bin/plymouth quit", &error);
if (! res) {
g_warning ("Could not quit plymouth: %s", error->message);
g_error_free (error);
diff --git a/daemon/gdm-session.c b/daemon/gdm-session.c
index 4b709731..245ac0cf 100644
--- a/daemon/gdm-session.c
+++ b/daemon/gdm-session.c
@@ -2972,16 +2972,16 @@ gdm_session_start_session (GdmSession *self,
*/
if (run_launcher) {
if (is_x11) {
- program = g_strdup_printf (LIBEXECDIR "/gdm-x-session %s\"dbus-run-session -- %s\"",
+ program = g_strdup_printf (LIBEXECDIR "/gdm-x-session %s\"@dbus@/bin/dbus-run-session --dbus-daemon=@dbus@/bin/dbus-daemon -- %s\"",
register_session ? "--register-session " : "",
self->selected_program);
} else {
- program = g_strdup_printf (LIBEXECDIR "/gdm-wayland-session %s\"dbus-run-session -- %s\"",
+ program = g_strdup_printf (LIBEXECDIR "/gdm-wayland-session %s\"@dbus@/bin/dbus-run-session --dbus-daemon=@dbus@/bin/dbus-daemon -- %s\"",
register_session ? "--register-session " : "",
self->selected_program);
}
} else {
- program = g_strdup_printf ("dbus-run-session -- %s",
+ program = g_strdup_printf ("@dbus@/bin/dbus-run-session --dbus-daemon=@dbus@/bin/dbus-daemon -- %s",
self->selected_program);
}
}
diff --git a/data/gdm.service.in b/data/gdm.service.in
index 17e8a8de..afc70977 100644
--- a/data/gdm.service.in
+++ b/data/gdm.service.in
@@ -26,7 +26,7 @@ Restart=always
IgnoreSIGPIPE=no
BusName=org.gnome.DisplayManager
EnvironmentFile=-${LANG_CONFIG_FILE}
-ExecReload=/bin/kill -SIGHUP $MAINPID
+ExecReload=@coreutils@/bin/kill -SIGHUP $MAINPID
KeyringMode=shared
[Install]

View file

@ -0,0 +1,31 @@
diff --git a/daemon/gdm-session-worker.c b/daemon/gdm-session-worker.c
index 9ef4c5b..94da834 100644
--- a/daemon/gdm-session-worker.c
+++ b/daemon/gdm-session-worker.c
@@ -1515,6 +1515,16 @@ gdm_session_worker_load_env_d (GdmSessionWorker *worker)
g_object_unref (dir);
}
+static void
+gdm_session_worker_forward_var (GdmSessionWorker *worker, char const *var)
+{
+ char const *value = g_getenv(var);
+ if (value != NULL) {
+ g_debug ("forwarding %s= %s", var, value);
+ gdm_session_worker_set_environment_variable(worker, var, value);
+ }
+}
+
static gboolean
gdm_session_worker_accredit_user (GdmSessionWorker *worker,
GError **error)
@@ -1559,6 +1569,9 @@ gdm_session_worker_accredit_user (GdmSessionWorker *worker,
goto out;
}
+ gdm_session_worker_forward_var(worker, "GDM_X_SERVER_EXTRA_ARGS");
+ gdm_session_worker_forward_var(worker, "GDM_X_SESSION_WRAPPER");
+
gdm_session_worker_update_environment_from_passwd_info (worker,
uid,
gid,

View file

@ -0,0 +1,38 @@
diff --git a/daemon/gdm-x-session.c.orig b/daemon/gdm-x-session.c
index d835b34..1f4b7f1 100644
--- a/daemon/gdm-x-session.c.orig
+++ b/daemon/gdm-x-session.c
@@ -211,6 +211,7 @@ spawn_x_server (State *state,
char *vt_string = NULL;
char *display_number;
gsize display_number_size;
+ gchar **xserver_extra_args = NULL;
auth_file = prepare_auth_file ();
@@ -285,6 +286,17 @@ spawn_x_server (State *state,
if (state->debug_enabled) {
g_ptr_array_add (arguments, "-core");
}
+
+ if (g_getenv ("GDM_X_SERVER_EXTRA_ARGS") != NULL) {
+ g_debug ("using GDM_X_SERVER_EXTRA_ARGS: %s", g_getenv("GDM_X_SERVER_EXTRA_ARGS"));
+ xserver_extra_args = g_strsplit(g_getenv("GDM_X_SERVER_EXTRA_ARGS"), " ", -1);
+ for (gchar **extra_arg = xserver_extra_args; *extra_arg; extra_arg++) {
+ if (strlen(*extra_arg) < 1) continue;
+ g_debug ("adding: %s", *extra_arg);
+ g_ptr_array_add (arguments, *extra_arg);
+ }
+ }
+
g_ptr_array_add (arguments, NULL);
subprocess = g_subprocess_launcher_spawnv (launcher,
@@ -332,6 +344,7 @@ spawn_x_server (State *state,
is_running = TRUE;
out:
+ g_strfreev(xserver_extra_args);
g_clear_pointer (&auth_file, g_free);
g_clear_object (&data_stream);
g_clear_object (&subprocess);

View file

@ -0,0 +1,40 @@
diff --git a/daemon/gdm-x-session.c b/daemon/gdm-x-session.c
index 88fe96f..b1b140a 100644
--- a/daemon/gdm-x-session.c
+++ b/daemon/gdm-x-session.c
@@ -664,18 +664,34 @@ spawn_session (State *state,
state->session_command,
NULL);
} else {
+ char const *session_wrapper;
+ char *eff_session_command;
int ret;
char **argv;
- ret = g_shell_parse_argv (state->session_command,
+ session_wrapper = g_getenv("GDM_X_SESSION_WRAPPER");
+ if (session_wrapper != NULL) {
+ char *quoted_wrapper = g_shell_quote(session_wrapper);
+ eff_session_command = g_strjoin(" ", quoted_wrapper, state->session_command, NULL);
+ g_free(quoted_wrapper);
+ } else {
+ eff_session_command = state->session_command;
+ }
+
+ ret = g_shell_parse_argv (eff_session_command,
NULL,
&argv,
&error);
+ if (session_wrapper != NULL) {
+ g_free(eff_session_command);
+ }
+
if (!ret) {
g_debug ("could not parse session arguments: %s", error->message);
goto out;
}
+
subprocess = g_subprocess_launcher_spawnv (launcher,
(const char * const *) argv,
&error);

View file

@ -0,0 +1,2 @@
[org.gnome.login-screen]
logo='@icon@'

View file

@ -0,0 +1,20 @@
--- a/daemon/gdm-wayland-session.c
+++ b/daemon/gdm-wayland-session.c
@@ -285,6 +285,7 @@ spawn_session (State *state,
"WAYLAND_DISPLAY",
"WAYLAND_SOCKET",
"GNOME_SHELL_SESSION_MODE",
+ "__NIXOS_SET_ENVIRONMENT_DONE",
NULL };
g_debug ("Running wayland session");
--- a/daemon/gdm-x-session.c
+++ b/daemon/gdm-x-session.c
@@ -610,6 +610,7 @@ spawn_session (State *state,
"WAYLAND_DISPLAY",
"WAYLAND_SOCKET",
"GNOME_SHELL_SESSION_MODE",
+ "__NIXOS_SET_ENVIRONMENT_DONE",
NULL };
g_debug ("Running X session");

View file

@ -0,0 +1,44 @@
{ stdenv
, lib
, fetchurl
, meson
, ninja
, gnome
}:
stdenv.mkDerivation rec {
pname = "gnome-backgrounds";
version = "42.0";
src = fetchurl {
url = "mirror://gnome/sources/gnome-backgrounds/${lib.versions.major version}/${pname}-${version}.tar.xz";
sha256 = "TH/hoJ9FnF93GJpZglJPzgXYiJRJVdZ5kQ8jRgbBKV0=";
};
patches = [
# Makes the database point to stable paths in /run/current-system/sw/share, which don't decay whenever this package's hash changes.
# This assumes a nixos + gnome system, where this package is installed in environment.systemPackages,
# and /share outputs are included in environment.pathsToLink.
./stable-dir.patch
];
nativeBuildInputs = [
meson
ninja
];
passthru = {
updateScript = gnome.updateScript {
packageName = "gnome-backgrounds";
attrPath = "gnome.gnome-backgrounds";
};
};
meta = with lib; {
description = "Default wallpaper set for GNOME";
homepage = "https://gitlab.gnome.org/GNOME/gnome-backgrounds";
license = licenses.cc-by-sa-30;
platforms = platforms.unix;
maintainers = teams.gnome.members;
};
}

View file

@ -0,0 +1,9 @@
diff --git a/backgrounds/meson.build b/backgrounds/meson.build
index 2175a16..cf521df 100644
--- a/backgrounds/meson.build
+++ b/backgrounds/meson.build
@@ -1,5 +1,5 @@
dataconf = configuration_data()
-dataconf.set('BACKGROUNDDIR', backgrounddir)
+dataconf.set('BACKGROUNDDIR', '/run/current-system/sw/share/backgrounds/gnome')
dataconf.set('datadir', datadir)

View file

@ -0,0 +1,97 @@
{ stdenv
, lib
, fetchurl
, fetchpatch
, gnome
, meson
, ninja
, pkg-config
, gtk3
, gettext
, glib
, udev
, itstool
, libxml2
, wrapGAppsHook
, libnotify
, libcanberra-gtk3
, gobject-introspection
, gtk-doc
, docbook-xsl-nons
, docbook_xml_dtd_43
, python3
, gsettings-desktop-schemas
}:
stdenv.mkDerivation rec {
pname = "gnome-bluetooth";
version = "3.34.5";
# TODO: split out "lib"
outputs = [ "out" "dev" "devdoc" "man" ];
src = fetchurl {
url = "mirror://gnome/sources/${pname}/${lib.versions.majorMinor version}/${pname}-${version}.tar.xz";
sha256 = "bJSeUsi+zCBU2qzWBJAfZs5c9wml+pHEu3ysyTm1Pqk=";
};
patches = [
# Fix build with meson 0.61.
# sendto/meson.build:24:5: ERROR: Function does not take positional arguments.
(fetchpatch {
url = "https://gitlab.gnome.org/GNOME/gnome-bluetooth/-/commit/755fd758f866d3a3f7ca482942beee749f13a91e.patch";
sha256 = "sha256-N0MJ0pYO411o2CTNZHWmEoG2m5TGUjR6YW6HSXHTR/A=";
})
];
nativeBuildInputs = [
meson
ninja
gettext
itstool
pkg-config
libxml2
wrapGAppsHook
gobject-introspection
gtk-doc
docbook-xsl-nons
docbook_xml_dtd_43
python3
];
buildInputs = [
glib
gtk3
udev
libnotify
libcanberra-gtk3
gnome.adwaita-icon-theme
gsettings-desktop-schemas
];
mesonFlags = [
"-Dicon_update=false"
"-Dgtk_doc=true"
];
postPatch = ''
chmod +x meson_post_install.py # patchShebangs requires executable file
patchShebangs meson_post_install.py
'';
passthru = {
updateScript = gnome.updateScript {
packageName = pname;
attrPath = "gnome.gnome-bluetooth_1_0";
freeze = true;
};
};
meta = with lib; {
homepage = "https://help.gnome.org/users/gnome-bluetooth/stable/index.html.en";
description = "Application that let you manage Bluetooth in the GNOME destkop";
maintainers = teams.gnome.members;
license = licenses.gpl2Plus;
platforms = platforms.linux;
};
}

View file

@ -0,0 +1,83 @@
{ lib
, stdenv
, fetchurl
, gnome
, meson
, ninja
, pkg-config
, gtk4
, libadwaita
, gettext
, glib
, udev
, upower
, itstool
, libxml2
, wrapGAppsHook
, libnotify
, gsound
, gobject-introspection
, gtk-doc
, docbook-xsl-nons
, docbook_xml_dtd_43
, python3
, gsettings-desktop-schemas
}:
stdenv.mkDerivation rec {
pname = "gnome-bluetooth";
version = "42.0";
# TODO: split out "lib"
outputs = [ "out" "dev" "devdoc" "man" ];
src = fetchurl {
url = "mirror://gnome/sources/${pname}/${lib.versions.major version}/${pname}-${version}.tar.xz";
sha256 = "PR4nIGc7yaJCYZ3F0jH9bndsGKSdop9DzcQzBVrbAXA=";
};
nativeBuildInputs = [
meson
ninja
gettext
itstool
pkg-config
libxml2
wrapGAppsHook
gobject-introspection
gtk-doc
docbook-xsl-nons
docbook_xml_dtd_43
python3
];
buildInputs = [
glib
gtk4
libadwaita
udev
upower
libnotify
gsound
gsettings-desktop-schemas
];
mesonFlags = [
"-Dgtk_doc=true"
];
passthru = {
updateScript = gnome.updateScript {
packageName = pname;
attrPath = "gnome.${pname}";
};
};
meta = with lib; {
homepage = "https://gitlab.gnome.org/GNOME/gnome-bluetooth";
description = "Application that lets you manage Bluetooth in the GNOME desktop";
maintainers = teams.gnome.members;
license = licenses.gpl2Plus;
platforms = platforms.linux;
};
}

View file

@ -0,0 +1,81 @@
{ stdenv
, lib
, meson
, ninja
, vala
, gettext
, itstool
, fetchurl
, pkg-config
, libxml2
, gtk4
, glib
, gtksourceview5
, wrapGAppsHook
, gobject-introspection
, gnome
, mpfr
, gmp
, libsoup
, libmpc
, libadwaita
, gsettings-desktop-schemas
, libgee
}:
stdenv.mkDerivation rec {
pname = "gnome-calculator";
version = "42.1";
src = fetchurl {
url = "mirror://gnome/sources/gnome-calculator/${lib.versions.major version}/${pname}-${version}.tar.xz";
sha256 = "700k5Cpl3IYOYgbztHC30jPCripNSWXYhZqp6oo5Ws0=";
};
nativeBuildInputs = [
meson
ninja
pkg-config
vala
gettext
itstool
wrapGAppsHook
gobject-introspection # for finding vapi files
];
buildInputs = [
gtk4
glib
libxml2
gtksourceview5
mpfr
gmp
libgee
gsettings-desktop-schemas
libsoup
libmpc
libadwaita
];
doCheck = true;
preCheck = ''
# Currency conversion test tries to store currency data in $HOME/.cache.
export HOME=$TMPDIR
'';
passthru = {
updateScript = gnome.updateScript {
packageName = "gnome-calculator";
attrPath = "gnome.gnome-calculator";
};
};
meta = with lib; {
homepage = "https://wiki.gnome.org/Apps/Calculator";
description = "Application that solves mathematical equations and is suitable as a default application in a Desktop environment";
maintainers = teams.gnome.members;
license = licenses.gpl3Plus;
platforms = platforms.linux;
};
}

View file

@ -0,0 +1,66 @@
{ lib, stdenv
, fetchurl
, meson
, ninja
, pkg-config
, gettext
, itstool
, desktop-file-utils
, gnome
, glib
, gtk3
, libexif
, libtiff
, colord
, colord-gtk
, libcanberra-gtk3
, lcms2
, vte
, exiv2
}:
stdenv.mkDerivation rec {
pname = "gnome-color-manager";
version = "3.32.0";
src = fetchurl {
url = "mirror://gnome/sources/${pname}/${lib.versions.majorMinor version}/${pname}-${version}.tar.xz";
sha256 = "1vpxa2zjz3lkq9ldjg0fl65db9s6b4kcs8nyaqfz3jygma7ifg3w";
};
nativeBuildInputs = [
meson
ninja
pkg-config
gettext
itstool
desktop-file-utils
];
buildInputs = [
glib
gtk3
libexif
libtiff
colord
colord-gtk
libcanberra-gtk3
lcms2
vte
exiv2
];
passthru = {
updateScript = gnome.updateScript {
packageName = pname;
attrPath = "gnome.${pname}";
};
};
meta = with lib; {
description = "A set of graphical utilities for color management to be used in the GNOME desktop";
license = licenses.gpl2Plus;
maintainers = teams.gnome.members;
platforms = platforms.linux;
};
}

View file

@ -0,0 +1,27 @@
{ lib, stdenv, fetchurl, which, gnome, autoconf, automake }:
stdenv.mkDerivation rec {
pname = "gnome-common";
version = "3.18.0";
src = fetchurl {
url = "mirror://gnome/sources/gnome-common/${lib.versions.majorMinor version}/${pname}-${version}.tar.xz";
sha256 = "22569e370ae755e04527b76328befc4c73b62bfd4a572499fde116b8318af8cf";
};
passthru = {
updateScript = gnome.updateScript { packageName = "gnome-common"; attrPath = "gnome.gnome-common"; };
};
patches = [(fetchurl {
name = "gnome-common-patch";
url = "https://bug697543.bugzilla-attachments.gnome.org/attachment.cgi?id=240935";
sha256 = "17abp7czfzirjm7qsn2czd03hdv9kbyhk3lkjxg2xsf5fky7z7jl";
})];
propagatedBuildInputs = [ which autoconf automake ]; # autogen.sh which is using gnome-common tends to require which
meta = with lib; {
maintainers = teams.gnome.members;
};
}

View file

@ -0,0 +1,83 @@
{ lib
, stdenv
, gettext
, fetchurl
, evolution-data-server
, pkg-config
, libxslt
, docbook-xsl-nons
, docbook_xml_dtd_42
, desktop-file-utils
, gtk4
, glib
, libportal
, gnome-desktop
, gnome-online-accounts
, wrapGAppsHook
, folks
, libgdata
, libxml2
, gnome
, vala
, meson
, ninja
, libadwaita
, gsettings-desktop-schemas
}:
stdenv.mkDerivation rec {
pname = "gnome-contacts";
version = "42.0";
src = fetchurl {
url = "mirror://gnome/sources/gnome-contacts/${lib.versions.major version}/${pname}-${version}.tar.xz";
sha256 = "iALDj9wj9SjawSj1O9zx9sow4OHGhIxCzWyEpeIsUhY=";
};
propagatedUserEnvPkgs = [
evolution-data-server
];
nativeBuildInputs = [
meson
ninja
pkg-config
vala
gettext
libxslt
docbook-xsl-nons
docbook_xml_dtd_42
desktop-file-utils
wrapGAppsHook
];
buildInputs = [
gtk4
glib
libportal
evolution-data-server
gsettings-desktop-schemas
folks
gnome-desktop
libadwaita
libxml2
gnome-online-accounts
];
doCheck = true;
passthru = {
updateScript = gnome.updateScript {
packageName = "gnome-contacts";
attrPath = "gnome.gnome-contacts";
};
};
meta = with lib; {
homepage = "https://wiki.gnome.org/Apps/Contacts";
description = "GNOMEs integrated address book";
maintainers = teams.gnome.members;
license = licenses.gpl2Plus;
platforms = platforms.linux;
};
}

View file

@ -0,0 +1,180 @@
{ fetchurl
, lib
, stdenv
, substituteAll
, accountsservice
, adwaita-icon-theme
, colord
, colord-gtk4
, cups
, docbook-xsl-nons
, fontconfig
, gdk-pixbuf
, gettext
, glib
, glib-networking
, gcr
, glibc
, gnome-bluetooth
, gnome-color-manager
, gnome-desktop
, gnome-online-accounts
, gnome-settings-daemon
, gnome
, gsettings-desktop-schemas
, gsound
, gtk4
, ibus
, libgnomekbd
, libgtop
, libgudev
, libadwaita
, libkrb5
, libpulseaudio
, libpwquality
, librsvg
, libsecret
, libwacom
, libxml2
, libxslt
, meson
, modemmanager
, mutter
, networkmanager
, networkmanagerapplet
, libnma-gtk4
, ninja
, pkg-config
, polkit
, python3
, samba
, shared-mime-info
, sound-theme-freedesktop
, tracker
, tracker-miners
, tzdata
, udisks2
, upower
, libepoxy
, gnome-user-share
, gnome-remote-desktop
, wrapGAppsHook
}:
stdenv.mkDerivation rec {
pname = "gnome-control-center";
version = "42.2";
src = fetchurl {
url = "mirror://gnome/sources/${pname}/${lib.versions.major version}/${pname}-${version}.tar.xz";
sha256 = "sha256-eLolewn73cBYh5F00Tg3p5zVnpWoSQEX5Myi5SLJ6wA=";
};
patches = [
(substituteAll {
src = ./paths.patch;
gcm = gnome-color-manager;
gnome_desktop = gnome-desktop;
inherit glibc libgnomekbd tzdata;
inherit cups networkmanagerapplet;
})
];
nativeBuildInputs = [
docbook-xsl-nons
gettext
libxslt
meson
ninja
pkg-config
python3
shared-mime-info
wrapGAppsHook
];
buildInputs = [
accountsservice
adwaita-icon-theme
colord
colord-gtk4
libepoxy
fontconfig
gdk-pixbuf
glib
glib-networking
gcr
gnome-bluetooth
gnome-desktop
gnome-online-accounts
gnome-remote-desktop # optional, sharing panel
gnome-settings-daemon
gnome-user-share # optional, sharing panel
gsettings-desktop-schemas
gsound
gtk4
ibus
libgtop
libgudev
libadwaita
libkrb5
libnma-gtk4
libpulseaudio
libpwquality
librsvg
libsecret
libwacom
libxml2
modemmanager
mutter # schemas for the keybindings
networkmanager
polkit
samba
tracker
tracker-miners # for search locations dialog
udisks2
upower
];
# postPatch = ''
# scriptsToPatch=(
# build-aux/meson/meson_post_install.py
# build-aux/meson/find_xdg_file.py
# )
# # # patchShebangs requires executable file
# # chmod +x "''${scriptsToPatch[@]}"
# # patchShebangs "''${scriptsToPatch[@]}"
# '';
preConfigure = ''
# For ITS rules
addToSearchPath "XDG_DATA_DIRS" "${polkit.out}/share"
'';
preFixup = ''
gappsWrapperArgs+=(
--prefix XDG_DATA_DIRS : "${sound-theme-freedesktop}/share"
# Thumbnailers (for setting user profile pictures)
--prefix XDG_DATA_DIRS : "${gdk-pixbuf}/share"
--prefix XDG_DATA_DIRS : "${librsvg}/share"
# WM keyboard shortcuts
--prefix XDG_DATA_DIRS : "${mutter}/share"
)
for i in $out/share/applications/*; do
substituteInPlace $i --replace "Exec=gnome-control-center" "Exec=$out/bin/gnome-control-center"
done
'';
passthru = {
updateScript = gnome.updateScript {
packageName = pname;
attrPath = "gnome.${pname}";
};
};
meta = with lib; {
description = "Utilities to configure the GNOME desktop";
license = licenses.gpl2Plus;
maintainers = teams.gnome.members;
platforms = platforms.linux;
};
}

View file

@ -0,0 +1,194 @@
diff --git a/panels/color/cc-color-panel.c b/panels/color/cc-color-panel.c
index 603178efc..c363a6a5c 100644
--- a/panels/color/cc-color-panel.c
+++ b/panels/color/cc-color-panel.c
@@ -591,7 +591,7 @@ gcm_prefs_calibrate_cb (CcColorPanel *prefs)
/* run with modal set */
argv = g_ptr_array_new_with_free_func (g_free);
- g_ptr_array_add (argv, g_strdup ("gcm-calibrate"));
+ g_ptr_array_add (argv, g_build_filename ("@gcm@", "bin", "gcm-calibrate", NULL));
g_ptr_array_add (argv, g_strdup ("--device"));
g_ptr_array_add (argv, g_strdup (cd_device_get_id (prefs->current_device)));
g_ptr_array_add (argv, g_strdup ("--parent-window"));
@@ -1029,7 +1029,7 @@ gcm_prefs_profile_view (CcColorPanel *prefs, CdProfile *profile)
/* open up gcm-viewer as a info pane */
argv = g_ptr_array_new_with_free_func (g_free);
- g_ptr_array_add (argv, g_strdup ("gcm-viewer"));
+ g_ptr_array_add (argv, g_build_filename ("@gcm@", "bin", "gcm-viewer", NULL));
g_ptr_array_add (argv, g_strdup ("--profile"));
g_ptr_array_add (argv, g_strdup (cd_profile_get_id (profile)));
g_ptr_array_add (argv, g_strdup ("--parent-window"));
@@ -1275,15 +1275,12 @@ gcm_prefs_device_clicked (CcColorPanel *prefs, CdDevice *device)
static void
gcm_prefs_profile_clicked (CcColorPanel *prefs, CdProfile *profile, CdDevice *device)
{
- g_autofree gchar *s = NULL;
-
/* get profile */
g_debug ("selected profile = %s",
cd_profile_get_filename (profile));
/* allow getting profile info */
- if (cd_profile_get_filename (profile) != NULL &&
- (s = g_find_program_in_path ("gcm-viewer")) != NULL)
+ if (cd_profile_get_filename (profile) != NULL)
gtk_widget_set_sensitive (prefs->toolbutton_profile_view, TRUE);
else
gtk_widget_set_sensitive (prefs->toolbutton_profile_view, FALSE);
diff --git a/panels/datetime/tz.h b/panels/datetime/tz.h
index a2376f8a4..98769e08f 100644
--- a/panels/datetime/tz.h
+++ b/panels/datetime/tz.h
@@ -27,11 +27,7 @@
G_BEGIN_DECLS
-#ifndef __sun
-# define TZ_DATA_FILE "/usr/share/zoneinfo/zone.tab"
-#else
-# define TZ_DATA_FILE "/usr/share/lib/zoneinfo/tab/zone_sun.tab"
-#endif
+#define TZ_DATA_FILE "@tzdata@/share/zoneinfo/zone.tab"
typedef struct _TzDB TzDB;
typedef struct _TzLocation TzLocation;
diff --git a/panels/info-overview/cc-info-overview-panel.c b/panels/info-overview/cc-info-overview-panel.c
index bd0e07762..0e71351f8 100644
--- a/panels/info-overview/cc-info-overview-panel.c
+++ b/panels/info-overview/cc-info-overview-panel.c
@@ -172,7 +172,7 @@ load_gnome_version (char **version,
gsize length;
g_autoptr(VersionData) data = NULL;
- if (!g_file_get_contents (DATADIR "/gnome/gnome-version.xml",
+ if (!g_file_get_contents ("@gnome_desktop@/share/gnome/gnome-version.xml",
&contents,
&length,
&error))
diff --git a/panels/keyboard/cc-input-list-box.c b/panels/keyboard/cc-input-list-box.c
index 6c2cb5614..8f57159cc 100644
--- a/panels/keyboard/cc-input-list-box.c
+++ b/panels/keyboard/cc-input-list-box.c
@@ -223,10 +223,10 @@ row_layout_cb (CcInputListBox *self,
layout_variant = cc_input_source_get_layout_variant (source);
if (layout_variant && layout_variant[0])
- commandline = g_strdup_printf ("gkbd-keyboard-display -l \"%s\t%s\"",
+ commandline = g_strdup_printf ("@libgnomekbd@/bin/gkbd-keyboard-display -l \"%s\t%s\"",
layout, layout_variant);
else
- commandline = g_strdup_printf ("gkbd-keyboard-display -l %s",
+ commandline = g_strdup_printf ("@libgnomekbd@/bin/gkbd-keyboard-display -l %s",
layout);
g_spawn_command_line_async (commandline, NULL);
diff --git a/panels/network/connection-editor/net-connection-editor.c b/panels/network/connection-editor/net-connection-editor.c
index 505b8ee25..62e94009f 100644
--- a/panels/network/connection-editor/net-connection-editor.c
+++ b/panels/network/connection-editor/net-connection-editor.c
@@ -267,9 +267,9 @@ net_connection_editor_do_fallback (NetConnectionEditor *self, const gchar *type)
g_autoptr(GError) error = NULL;
if (self->is_new_connection) {
- cmdline = g_strdup_printf ("nm-connection-editor --type='%s' --create", type);
+ cmdline = g_strdup_printf ("@networkmanagerapplet@/bin/nm-connection-editor --type='%s' --create", type);
} else {
- cmdline = g_strdup_printf ("nm-connection-editor --edit='%s'",
+ cmdline = g_strdup_printf ("@networkmanagerapplet@/bin/nm-connection-editor --edit='%s'",
nm_connection_get_uuid (self->connection));
}
diff --git a/panels/network/net-device-bluetooth.c b/panels/network/net-device-bluetooth.c
index 74dfb0e9a..5f53d1a20 100644
--- a/panels/network/net-device-bluetooth.c
+++ b/panels/network/net-device-bluetooth.c
@@ -90,7 +90,7 @@ nm_device_bluetooth_refresh_ui (NetDeviceBluetooth *self)
update_off_switch_from_device_state (self->device_off_switch, state, self);
/* set up the Options button */
- path = g_find_program_in_path ("nm-connection-editor");
+ path = g_find_program_in_path ("@networkmanagerapplet@/bin/nm-connection-editor");
gtk_widget_set_visible (GTK_WIDGET (self->options_button), state != NM_DEVICE_STATE_UNMANAGED && path != NULL);
}
@@ -141,7 +141,7 @@ options_button_clicked_cb (NetDeviceBluetooth *self)
connection = net_device_get_find_connection (self->client, self->device);
uuid = nm_connection_get_uuid (connection);
- cmdline = g_strdup_printf ("nm-connection-editor --edit %s", uuid);
+ cmdline = g_strdup_printf ("@networkmanagerapplet@/bin/nm-connection-editor --edit %s", uuid);
g_debug ("Launching '%s'\n", cmdline);
if (!g_spawn_command_line_async (cmdline, &error))
g_warning ("Failed to launch nm-connection-editor: %s", error->message);
@@ -185,7 +185,7 @@ net_device_bluetooth_init (NetDeviceBluetooth *self)
gtk_widget_init_template (GTK_WIDGET (self));
- path = g_find_program_in_path ("nm-connection-editor");
+ path = g_find_program_in_path ("@networkmanagerapplet@/bin/nm-connection-editor");
gtk_widget_set_visible (GTK_WIDGET (self->options_button), path != NULL);
}
diff --git a/panels/network/net-device-mobile.c b/panels/network/net-device-mobile.c
index 34eb86241..50d0a2bed 100644
--- a/panels/network/net-device-mobile.c
+++ b/panels/network/net-device-mobile.c
@@ -508,7 +508,7 @@ options_button_clicked_cb (NetDeviceMobile *self)
connection = net_device_get_find_connection (self->client, self->device);
uuid = nm_connection_get_uuid (connection);
- cmdline = g_strdup_printf ("nm-connection-editor --edit %s", uuid);
+ cmdline = g_strdup_printf ("@networkmanagerapplet@/bin/nm-connection-editor --edit %s", uuid);
g_debug ("Launching '%s'\n", cmdline);
if (!g_spawn_command_line_async (cmdline, &error))
g_warning ("Failed to launch nm-connection-editor: %s", error->message);
@@ -797,7 +797,7 @@ net_device_mobile_init (NetDeviceMobile *self)
self->cancellable = g_cancellable_new ();
- path = g_find_program_in_path ("nm-connection-editor");
+ path = g_find_program_in_path ("@networkmanagerapplet@/bin/nm-connection-editor");
gtk_widget_set_visible (GTK_WIDGET (self->options_button), path != NULL);
}
diff --git a/panels/printers/pp-host.c b/panels/printers/pp-host.c
index a31a606e3..ed5133d29 100644
--- a/panels/printers/pp-host.c
+++ b/panels/printers/pp-host.c
@@ -256,7 +256,7 @@ _pp_host_get_snmp_devices_thread (GTask *task,
devices = g_ptr_array_new_with_free_func (g_object_unref);
argv = g_new0 (gchar *, 3);
- argv[0] = g_strdup ("/usr/lib/cups/backend/snmp");
+ argv[0] = g_strdup ("@cups@/lib/cups/backend/snmp");
argv[1] = g_strdup (priv->hostname);
/* Use SNMP to get printer's informations */
diff --git a/panels/user-accounts/run-passwd.c b/panels/user-accounts/run-passwd.c
index 86f53d4fc..0b052856f 100644
--- a/panels/user-accounts/run-passwd.c
+++ b/panels/user-accounts/run-passwd.c
@@ -150,7 +150,7 @@ spawn_passwd (PasswdHandler *passwd_handler, GError **error)
gchar **envp;
gint my_stdin, my_stdout, my_stderr;
- argv[0] = "/usr/bin/passwd"; /* Is it safe to rely on a hard-coded path? */
+ argv[0] = "/run/wrappers/bin/passwd"; /* Is it safe to rely on a hard-coded path? */
argv[1] = NULL;
envp = g_get_environ ();
diff --git a/tests/datetime/test-endianess.c b/tests/datetime/test-endianess.c
index 9cb92007a..84d2f0fa3 100644
--- a/tests/datetime/test-endianess.c
+++ b/tests/datetime/test-endianess.c
@@ -26,7 +26,7 @@ test_endianess (void)
g_autoptr(GDir) dir = NULL;
const char *name;
- dir = g_dir_open ("/usr/share/i18n/locales/", 0, NULL);
+ dir = g_dir_open ("@glibc@/share/i18n/locales/", 0, NULL);
if (dir == NULL) {
/* Try with /usr/share/locale/
* https://bugzilla.gnome.org/show_bug.cgi?id=646780 */

View file

@ -0,0 +1,85 @@
{ stdenv
, lib
, fetchurl
, fetchpatch
, meson
, ninja
, pkg-config
, desktop-file-utils
, appstream-glib
, libxslt
, libxml2
, gettext
, itstool
, wrapGAppsHook
, docbook_xsl
, docbook_xml_dtd_43
, gnome
, gtk3
, glib
, gsettings-desktop-schemas
}:
stdenv.mkDerivation rec {
pname = "gnome-dictionary";
version = "40.0";
src = fetchurl {
url = "mirror://gnome/sources/gnome-dictionary/${lib.versions.major version}/${pname}-${version}.tar.xz";
sha256 = "1d8dhcfys788vv27v34i3s3x3jdvdi2kqn2a5p8c937a9hm0qr9f";
};
patches = [
# Fix test dependencies with meson 0.57, can be removed on next bump
# We need to explicitly depend on the generated files.
(fetchpatch {
url = "https://gitlab.gnome.org/GNOME/gnome-dictionary/-/commit/87c026cfe4acbcfc62d15950f88a71d8d9678c7e.patch";
sha256 = "tKesWeOK3OqOxrXm4dZvCZHHdTD7AQbYDjtYDCsLd3A=";
})
# Fix build with meson 0.61, can be removed on next bump
# data/appdata/meson.build:3:5: ERROR: Function does not take positional arguments.
(fetchpatch {
url = "https://gitlab.gnome.org/GNOME/gnome-dictionary/-/commit/cf3f8a67cd6f3059c555ed9cf0f5fba10abb7f68.patch";
sha256 = "cIRM6ACqsnEo2JWYvr6EBye5o0BudugZMShCe1U5hz8=";
})
];
nativeBuildInputs = [
meson
ninja
pkg-config
wrapGAppsHook
libxml2
gettext
itstool
desktop-file-utils
appstream-glib
libxslt
docbook_xsl
docbook_xml_dtd_43
];
buildInputs = [
gtk3
glib
gsettings-desktop-schemas
gnome.adwaita-icon-theme
];
doCheck = true;
passthru = {
updateScript = gnome.updateScript {
packageName = "gnome-dictionary";
attrPath = "gnome.gnome-dictionary";
};
};
meta = with lib; {
homepage = "https://wiki.gnome.org/Apps/Dictionary";
description = "Dictionary is the GNOME application to look up definitions";
maintainers = teams.gnome.members;
license = licenses.gpl2;
platforms = platforms.linux;
};
}

View file

@ -0,0 +1,86 @@
{ lib
, stdenv
, gettext
, fetchurl
, pkg-config
, udisks2
, libhandy
, libsecret
, libdvdread
, meson
, ninja
, gtk3
, glib
, wrapGAppsHook
, python3
, libnotify
, itstool
, gnome
, libxml2
, gsettings-desktop-schemas
, libcanberra-gtk3
, libxslt
, docbook-xsl-nons
, libpwquality
, systemd
}:
stdenv.mkDerivation rec {
pname = "gnome-disk-utility";
version = "42.0";
src = fetchurl {
url = "mirror://gnome/sources/gnome-disk-utility/${lib.versions.major version}/${pname}-${version}.tar.xz";
sha256 = "sha256-G2VkRU1nQmMiyzv8WlVYZTv8ff7qKuCCWx0IYp8BCQs=";
};
nativeBuildInputs = [
meson
ninja
pkg-config
gettext
itstool
libxslt
docbook-xsl-nons
wrapGAppsHook
python3
libxml2
];
buildInputs = [
gtk3
glib
libhandy
libsecret
libpwquality
libnotify
libdvdread
libcanberra-gtk3
udisks2
gnome.adwaita-icon-theme
systemd
gnome.gnome-settings-daemon
gsettings-desktop-schemas
];
postPatch = ''
chmod +x meson_post_install.py # patchShebangs requires executable file
patchShebangs meson_post_install.py
'';
passthru = {
updateScript = gnome.updateScript {
packageName = "gnome-disk-utility";
attrPath = "gnome.gnome-disk-utility";
};
};
meta = with lib; {
homepage = "https://wiki.gnome.org/Apps/Disks";
description = "A udisks graphical front-end";
maintainers = teams.gnome.members;
license = licenses.gpl2Plus;
platforms = platforms.linux;
mainProgram = "gnome-disks";
};
}

View file

@ -0,0 +1,63 @@
{ lib
, stdenv
, meson
, ninja
, gettext
, fetchurl
, pkg-config
, gtk4
, glib
, libxml2
, gnome-desktop
, libadwaita
, wrapGAppsHook4
, gnome
, harfbuzz
}:
stdenv.mkDerivation rec {
pname = "gnome-font-viewer";
version = "42.0";
src = fetchurl {
url = "mirror://gnome/sources/gnome-font-viewer/${lib.versions.major version}/${pname}-${version}.tar.xz";
sha256 = "z6K43/8hoQWhoCHa36IT8TYn5qF5p3x7Wf3O2sqEjcw=";
};
doCheck = true;
nativeBuildInputs = [
meson
ninja
pkg-config
gettext
wrapGAppsHook4
libxml2
];
buildInputs = [
gtk4
glib
gnome-desktop
harfbuzz
libadwaita
];
# Do not run meson-postinstall.sh
preConfigure = "sed -i '2,$ d' meson-postinstall.sh";
passthru = {
updateScript = gnome.updateScript {
packageName = "gnome-font-viewer";
attrPath = "gnome.gnome-font-viewer";
};
};
meta = with lib; {
description = "Program that can preview fonts and create thumbnails for fonts";
homepage = "https://gitlab.gnome.org/GNOME/gnome-font-viewer";
maintainers = teams.gnome.members;
license = licenses.gpl2Plus;
platforms = platforms.linux;
};
}

View file

@ -0,0 +1,62 @@
From 1ae0eca39ba6af27f37e2fe81395b91a2761a408 Mon Sep 17 00:00:00 2001
Message-Id: <1ae0eca39ba6af27f37e2fe81395b91a2761a408.1600627676.git-series.worldofpeace@protonmail.ch>
From: WORLDofPEACE <worldofpeace@protonmail.ch>
Date: Sun, 20 Sep 2020 14:46:59 -0400
Subject: [PATCH] fix paths
---
gnome-initial-setup/pages/keyboard/cc-input-chooser.c | 6 +++---
gnome-initial-setup/pages/timezone/tz.h | 4 ++--
3 files changed, 5 insertions(+), 5 deletions(-)
diff --git a/gnome-initial-setup/pages/keyboard/cc-input-chooser.c b/gnome-initial-setup/pages/keyboard/cc-input-chooser.c
index 196abf6..613d0e5 100644
--- a/gnome-initial-setup/pages/keyboard/cc-input-chooser.c
+++ b/gnome-initial-setup/pages/keyboard/cc-input-chooser.c
@@ -177,9 +177,9 @@ preview_cb (GtkLabel *label,
return TRUE;
if (variant[0])
- commandline = g_strdup_printf ("gkbd-keyboard-display -l \"%s\t%s\"", layout, variant);
+ commandline = g_strdup_printf ("@libgnomekbd@/bin/gkbd-keyboard-display -l \"%s\t%s\"", layout, variant);
else
- commandline = g_strdup_printf ("gkbd-keyboard-display -l %s", layout);
+ commandline = g_strdup_printf ("@libgnomekbd@/bin/gkbd-keyboard-display -l %s", layout);
g_spawn_command_line_async (commandline, NULL);
g_free (commandline);
@@ -831,7 +831,7 @@ cc_input_chooser_class_init (CcInputChooserClass *klass)
g_param_spec_string ("showing-extra", "", "", "",
G_PARAM_READABLE | G_PARAM_STATIC_STRINGS);
- signals[CHANGED] =
+ signals[CHANGED] =
g_signal_new ("changed",
G_TYPE_FROM_CLASS (object_class),
G_SIGNAL_RUN_FIRST,
diff --git a/gnome-initial-setup/pages/timezone/tz.h b/gnome-initial-setup/pages/timezone/tz.h
index a2376f8..5cb7bc9 100644
--- a/gnome-initial-setup/pages/timezone/tz.h
+++ b/gnome-initial-setup/pages/timezone/tz.h
@@ -4,7 +4,7 @@
* Copyright (C) 2000-2001 Ximian, Inc.
*
* Authors: Hans Petter Jansson <hpj@ximian.com>
- *
+ *
* Largely based on Michael Fulbright's work on Anaconda.
*
* This program is free software; you can redistribute it and/or modify
@@ -28,7 +28,7 @@
G_BEGIN_DECLS
#ifndef __sun
-# define TZ_DATA_FILE "/usr/share/zoneinfo/zone.tab"
+# define TZ_DATA_FILE "@tzdata@/share/zoneinfo/zone.tab"
#else
# define TZ_DATA_FILE "/usr/share/lib/zoneinfo/tab/zone_sun.tab"
#endif
base-commit: 5132e206a6bf81964450561d68473ac015760455
--
git-series 0.9.1

View file

@ -0,0 +1,108 @@
{ lib, stdenv
, fetchurl
, substituteAll
, gettext
, meson
, ninja
, pkg-config
, wrapGAppsHook
, gnome
, accountsservice
, fontconfig
, gdm
, geoclue2
, geocode-glib
, glib
, gnome-desktop
, gnome-online-accounts
, gtk3
, libgweather
, json-glib
, krb5
, libpwquality
, librest
, libsecret
, networkmanager
, pango
, polkit
, webkitgtk
, systemd
, libhandy
, libnma
, tzdata
, libgnomekbd
, gsettings-desktop-schemas
}:
stdenv.mkDerivation rec {
pname = "gnome-initial-setup";
version = "42.2";
src = fetchurl {
url = "mirror://gnome/sources/${pname}/${lib.versions.major version}/${pname}-${version}.tar.xz";
sha256 = "TYPZiySavhW7Kz5+eurZxH+Ei8p7agkavJCLdlQavns=";
};
patches = [
(substituteAll {
src = ./0001-fix-paths.patch;
inherit tzdata libgnomekbd;
})
];
nativeBuildInputs = [
gettext
meson
ninja
pkg-config
systemd
wrapGAppsHook
];
buildInputs = [
accountsservice
fontconfig
gdm
geoclue2
geocode-glib
glib
gnome-desktop
gnome-online-accounts
gsettings-desktop-schemas
gtk3
json-glib
krb5
libgweather
libhandy
libnma
libpwquality
librest
libsecret
networkmanager
pango
polkit
webkitgtk
];
mesonFlags = [
"-Dcheese=disabled"
"-Dibus=disabled"
"-Dparental_controls=disabled"
"-Dvendor-conf-file=${./vendor.conf}"
];
passthru = {
updateScript = gnome.updateScript {
packageName = pname;
attrPath = "gnome.${pname}";
};
};
meta = with lib; {
description = "Simple, easy, and safe way to prepare a new system";
homepage = "https://gitlab.gnome.org/GNOME/gnome-initial-setup";
license = licenses.gpl2Plus;
platforms = platforms.linux;
maintainers = teams.gnome.members;
};
}

View file

@ -0,0 +1,5 @@
# Disable pages not right for NixOS
# For example user accounts should be preconfigured
# and we can't modify system time with systemd.
[pages]
skip=account;software;password;timezone;

View file

@ -0,0 +1,104 @@
{ lib
, stdenv
, fetchurl
, pkg-config
, dbus
, libgcrypt
, pam
, python3
, glib
, libxslt
, gettext
, gcr
, autoreconfHook
, libcap_ng
, libselinux
, p11-kit
, openssh
, wrapGAppsHook
, docbook-xsl-nons
, docbook_xml_dtd_43
, gnome
}:
stdenv.mkDerivation rec {
pname = "gnome-keyring";
version = "42.1";
outputs = [ "out" "dev" ];
src = fetchurl {
url = "mirror://gnome/sources/gnome-keyring/${lib.versions.major version}/${pname}-${version}.tar.xz";
sha256 = "x/TQQMx2prf+Z+CO+RBpEcPIDUD8iMv8jiaEpMlG4+Y=";
};
nativeBuildInputs = [
pkg-config
gettext
libxslt
# Upstream uses ancient autotools to pre-generate the scripts.
autoreconfHook
docbook-xsl-nons
docbook_xml_dtd_43
wrapGAppsHook
];
buildInputs = [
glib
libgcrypt
pam
openssh
libcap_ng
libselinux
gcr
p11-kit
];
checkInputs = [ dbus python3 ];
configureFlags = [
"--with-pkcs11-config=${placeholder "out"}/etc/pkcs11/" # installation directories
"--with-pkcs11-modules=${placeholder "out"}/lib/pkcs11/"
];
# Tends to fail non-deterministically.
# - https://github.com/NixOS/nixpkgs/issues/55293
# - https://github.com/NixOS/nixpkgs/issues/51121
doCheck = false;
postPatch = ''
patchShebangs build
'';
checkPhase = ''
export HOME=$(mktemp -d)
dbus-run-session \
--config-file=${dbus.daemon}/share/dbus-1/session.conf \
make check
'';
# Use wrapped gnome-keyring-daemon with cap_ipc_lock=ep
postFixup = ''
files=($out/etc/xdg/autostart/* $out/share/dbus-1/services/*)
for file in ''${files[*]}; do
substituteInPlace $file \
--replace "$out/bin/gnome-keyring-daemon" "/run/wrappers/bin/gnome-keyring-daemon"
done
'';
passthru = {
updateScript = gnome.updateScript {
packageName = "gnome-keyring";
attrPath = "gnome.gnome-keyring";
};
};
meta = with lib; {
description = "Collection of components in GNOME that store secrets, passwords, keys, certificates and make them available to applications";
homepage = "https://wiki.gnome.org/Projects/GnomeKeyring";
license = licenses.gpl2;
maintainers = teams.gnome.members;
platforms = platforms.linux;
};
}

View file

@ -0,0 +1,116 @@
{ lib, stdenv
, fetchurl
, fetchpatch
, autoconf-archive
, autoreconfHook
, pkg-config
, glib
, gnome
, libxml2
, libgdata
, grilo
, libzapojit
, grilo-plugins
, gnome-online-accounts
, libmediaart
, tracker
, gfbgraph
, librest
, libsoup
, json-glib
, gmp
, openssl
, dleyna-server
, wrapGAppsHook
}:
stdenv.mkDerivation rec {
pname = "gnome-online-miners";
version = "3.34.0";
src = fetchurl {
url = "mirror://gnome/sources/gnome-online-miners/${lib.versions.majorMinor version}/${pname}-${version}.tar.xz";
sha256 = "1n2jz9i8a42zwxx5h8j2gdy6q1vyydh4vl00r0al7w8jzdh24p44";
};
patches = [
# Fix use after free
# https://gitlab.gnome.org/GNOME/gnome-online-miners/merge_requests/4
(fetchpatch {
url = "https://gitlab.gnome.org/GNOME/gnome-online-miners/commit/9eb57c6a8cd1a925c508646edae936eee0a8e46b.patch";
sha256 = "O1GRnzs33I0mFzrNDFkTGiBKstq5krYg7fwj60367TA=";
})
# Port to Tracker 3
# https://gitlab.gnome.org/GNOME/gnome-online-miners/merge_requests/3
(fetchpatch {
url = "https://gitlab.gnome.org/GNOME/gnome-online-miners/commit/2d3798252807cad9eb061ed2b37e35170c1a1daf.patch";
sha256 = "hwrkxroMpTfOwJAPkYQFdDCroZ2qSsvOgDetrJDig20=";
})
(fetchpatch {
url = "https://gitlab.gnome.org/GNOME/gnome-online-miners/commit/1548c0c527f0e4389047448d7d3b6cff55278c8e.patch";
sha256 = "U9w81c9Kze7kv5KHeGqvDeSNHzSayVrUG0XYsYMa1sg=";
})
(fetchpatch {
url = "https://gitlab.gnome.org/GNOME/gnome-online-miners/commit/941ebd8890c9ac4f75a1f58ccbea9731f46ad912.patch";
sha256 = "JHtDlZ54/BlSiUA3ROHfCTtTKSin3g6JNm8NS6pYML8=";
})
(fetchpatch {
url = "https://gitlab.gnome.org/GNOME/gnome-online-miners/commit/d1681a64bc3f65894af2549e3ba2bffbaf6f539a.patch";
sha256 = "9ZEatz5I81UAnjS1qCGWYDQQOxg/qp9Tg3xG/a+3goc=";
})
(fetchpatch {
url = "https://gitlab.gnome.org/GNOME/gnome-online-miners/commit/3d2af8785c84d6e50d8a8e6a2569a4b709184e94.patch";
sha256 = "7bdUE2k6g3Z8sdGYEb6pUm1/wbKDe4BHbylXUzfuTG0=";
})
];
nativeBuildInputs = [
# patch changes configure.ac
autoconf-archive
autoreconfHook
pkg-config
wrapGAppsHook
];
buildInputs = [
glib
libgdata
libxml2
libsoup
gmp
openssl
grilo
libzapojit
grilo-plugins
gnome-online-accounts
libmediaart
tracker
gfbgraph
json-glib
librest
dleyna-server
];
NIX_CFLAGS_COMPILE = [
"-Wno-error=format-security" # https://gitlab.gnome.org/GNOME/gnome-online-miners/merge_requests/3/diffs#note_942747
];
enableParallelBuilding = true;
passthru = {
updateScript = gnome.updateScript {
packageName = "gnome-online-miners";
attrPath = "gnome.gnome-online-miners";
};
};
meta = with lib; {
homepage = "https://wiki.gnome.org/Projects/GnomeOnlineMiners";
description = "A set of crawlers that go through your online content and index them locally in Tracker";
maintainers = teams.gnome.members;
license = licenses.gpl2Plus;
platforms = platforms.linux;
};
}

View file

@ -0,0 +1,104 @@
{ lib, stdenv
, fetchurl
, cairo
, meson
, ninja
, pkg-config
, python3
, wrapGAppsHook
, glib
, libepoxy
, libdrm
, nv-codec-headers-11
, pipewire
, systemd
, libvncserver
, libsecret
, libnotify
, libxkbcommon
, gdk-pixbuf
, freerdp
, fuse3
, mesa
, libgudev
, xvfb-run
, dbus
, gnome
}:
stdenv.mkDerivation rec {
pname = "gnome-remote-desktop";
version = "42.2";
src = fetchurl {
url = "mirror://gnome/sources/${pname}/${lib.versions.major version}/${pname}-${version}.tar.xz";
hash = "sha256-wcy82MpwN+9ttz9r8rXdOKM2t9gKKpyY32/4g4eP+dU=";
};
nativeBuildInputs = [
meson
ninja
pkg-config
python3
wrapGAppsHook
];
buildInputs = [
cairo
freerdp
fuse3
gdk-pixbuf # For libnotify
glib
libepoxy
libdrm
nv-codec-headers-11
libnotify
libsecret
libvncserver
libxkbcommon
pipewire
systemd
] ++ checkInputs;
checkInputs = [
mesa # for gbm
libgudev
xvfb-run
python3.pkgs.dbus-python
python3.pkgs.pygobject3
dbus # for dbus-run-session
];
mesonFlags = [
"-Dsystemd_user_unit_dir=${placeholder "out"}/lib/systemd/user"
];
# Too deep of a rabbit hole.
doCheck = false;
postPatch = ''
chmod +x meson_post_install.py # patchShebangs requires executable file
patchShebangs \
tests/vnc-test-runner.sh \
tests/run-vnc-tests.py \
meson_post_install.py
substituteInPlace tests/vnc-test-runner.sh \
--replace "dbus-run-session" "dbus-run-session --config-file=${dbus}/share/dbus-1/session.conf"
'';
passthru = {
updateScript = gnome.updateScript {
packageName = pname;
attrPath = "gnome.${pname}";
};
};
meta = with lib; {
homepage = "https://wiki.gnome.org/Projects/Mutter/RemoteDesktop";
description = "GNOME Remote Desktop server";
maintainers = teams.gnome.members;
license = licenses.gpl2Plus;
platforms = platforms.linux;
};
}

View file

@ -0,0 +1,82 @@
{ stdenv
, lib
, gettext
, libxml2
, libhandy
, fetchurl
, fetchpatch
, pkg-config
, libcanberra-gtk3
, gtk3
, glib
, meson
, ninja
, python3
, wrapGAppsHook
, appstream-glib
, desktop-file-utils
, gnome
, gsettings-desktop-schemas
}:
stdenv.mkDerivation rec {
pname = "gnome-screenshot";
version = "41.0";
src = fetchurl {
url = "mirror://gnome/sources/${pname}/${lib.versions.major version}/${pname}-${version}.tar.xz";
sha256 = "Stt97JJkKPdCY9V5ZnPPFC5HILbnaPVGio0JM/mMlZc=";
};
patches = [
# Fix build with meson 0.61
# https://gitlab.gnome.org/GNOME/gnome-screenshot/-/issues/186
(fetchpatch {
url = "https://gitlab.gnome.org/GNOME/gnome-screenshot/-/commit/b60dad3c2536c17bd201f74ad8e40eb74385ed9f.patch";
sha256 = "Js83h/3xxcw2hsgjzGa5lAYFXVrt6MPhXOTh5dZTx/w=";
})
];
nativeBuildInputs = [
meson
ninja
pkg-config
gettext
appstream-glib
libxml2
desktop-file-utils
python3
wrapGAppsHook
];
buildInputs = [
gtk3
glib
libcanberra-gtk3
libhandy
gnome.adwaita-icon-theme
gsettings-desktop-schemas
];
doCheck = true;
postPatch = ''
chmod +x build-aux/postinstall.py # patchShebangs requires executable file
patchShebangs build-aux/postinstall.py
'';
passthru = {
updateScript = gnome.updateScript {
packageName = pname;
attrPath = "gnome.${pname}";
};
};
meta = with lib; {
homepage = "https://gitlab.gnome.org/GNOME/gnome-screenshot";
description = "Utility used in the GNOME desktop environment for taking screenshots";
maintainers = teams.gnome.members;
license = licenses.gpl2Plus;
platforms = platforms.linux;
};
}

View file

@ -0,0 +1,42 @@
{ lib
, stdenv
, fetchFromGitHub
, meson
, ninja
, pkg-config
, glib
, systemd
, wrapGAppsHook
}:
stdenv.mkDerivation rec {
pname = "gnome-session-ctl";
version = "42.0";
src = fetchFromGitHub {
owner = "nix-community";
repo = pname;
rev = version;
hash = "sha256-XGJVmlxqbJ/1frbzn2TI7BJm449xeLk43xMMqFsLYko=";
};
nativeBuildInputs = [
meson
ninja
pkg-config
wrapGAppsHook
];
buildInputs = [
glib
systemd
];
meta = with lib; {
description = "gnome-session-ctl extracted from gnome-session for nixpkgs";
homepage = "https://github.com/nix-community/gnome-session-ctl";
license = licenses.gpl2Plus;
maintainers = teams.gnome.members;
platforms = platforms.linux;
};
}

View file

@ -0,0 +1,138 @@
{ fetchurl
, lib
, stdenv
, substituteAll
, meson
, ninja
, pkg-config
, gnome
, glib
, gtk3
, gsettings-desktop-schemas
, gnome-desktop
, dbus
, json-glib
, libICE
, xmlto
, docbook_xsl
, docbook_xml_dtd_412
, python3
, libxslt
, gettext
, makeWrapper
, systemd
, xorg
, libepoxy
, bash
, gnome-session-ctl
}:
stdenv.mkDerivation rec {
pname = "gnome-session";
# Also bump ./ctl.nix when bumping major version.
version = "42.0";
outputs = [ "out" "sessions" ];
src = fetchurl {
url = "mirror://gnome/sources/gnome-session/${lib.versions.major version}/${pname}-${version}.tar.xz";
sha256 = "PMoGBTq2gpJpIJUafalfjMbXLadMaCxG0KBlMzKWnKo=";
};
patches = [
(substituteAll {
src = ./fix-paths.patch;
gsettings = "${glib.bin}/bin/gsettings";
dbusLaunch = "${dbus.lib}/bin/dbus-launch";
bash = "${bash}/bin/bash";
})
];
nativeBuildInputs = [
meson
ninja
pkg-config
gettext
makeWrapper
xmlto
libxslt
docbook_xsl
docbook_xml_dtd_412
python3
dbus # for DTD
];
buildInputs = [
glib
gtk3
libICE
gnome-desktop
json-glib
xorg.xtrans
gnome.adwaita-icon-theme
gnome.gnome-settings-daemon
gsettings-desktop-schemas
systemd
libepoxy
];
mesonFlags = [
"-Dsystemd=true"
"-Dsystemd_session=default"
];
postPatch = ''
chmod +x meson_post_install.py # patchShebangs requires executable file
patchShebangs meson_post_install.py
# Use our provided `gnome-session-ctl`
original="@libexecdir@/gnome-session-ctl"
replacement="${gnome-session-ctl}/libexec/gnome-session-ctl"
find data/ -type f -name "*.service.in" -exec sed -i \
-e s,$original,$replacement,g \
{} +
'';
# We move the GNOME sessions to another output since gnome-session is a dependency of
# GDM itself. If we do not hide them, it will show broken GNOME sessions when GDM is
# enabled without proper GNOME installation.
postInstall = ''
mkdir $sessions
moveToOutput share/wayland-sessions "$sessions"
moveToOutput share/xsessions "$sessions"
# Our provided one is being used
rm -rf $out/libexec/gnome-session-ctl
'';
# `bin/gnome-session` will reset the environment when run in wayland, we
# therefor wrap `libexec/gnome-session-binary` instead which is the actual
# binary needing wrapping
preFixup = ''
wrapProgram "$out/libexec/gnome-session-binary" \
--prefix GI_TYPELIB_PATH : "$GI_TYPELIB_PATH" \
--suffix XDG_DATA_DIRS : "$out/share:$GSETTINGS_SCHEMAS_PATH" \
--suffix XDG_DATA_DIRS : "${gnome.gnome-shell}/share"\
--suffix XDG_CONFIG_DIRS : "${gnome.gnome-settings-daemon}/etc/xdg"
'';
passthru = {
updateScript = gnome.updateScript {
packageName = "gnome-session";
attrPath = "gnome.gnome-session";
};
providedSessions = [
"gnome"
"gnome-xorg"
];
};
meta = with lib; {
description = "GNOME session manager";
homepage = "https://wiki.gnome.org/Projects/SessionManagement";
license = licenses.gpl2Plus;
maintainers = teams.gnome.members;
platforms = platforms.linux;
};
}

View file

@ -0,0 +1,35 @@
diff --git a/gnome-session/gnome-session.in b/gnome-session/gnome-session.in
index b4b1f8fa..99d52cba 100755
--- a/gnome-session/gnome-session.in
+++ b/gnome-session/gnome-session.in
@@ -4,13 +4,15 @@ if [ "x$XDG_SESSION_TYPE" = "xwayland" ] &&
[ "x$XDG_SESSION_CLASS" != "xgreeter" ] &&
[ -n "$SHELL" ]; then
if [ "$1" != '-l' ]; then
- exec bash -c "exec -l '$SHELL' -c '$0 -l $*'"
+ # Make sure the shell actually sets up the environment.
+ unset __NIXOS_SET_ENVIRONMENT_DONE
+ exec @bash@ -c "exec -l '$SHELL' -c '$0 -l $*'"
else
shift
fi
fi
-SETTING=$(G_MESSAGES_DEBUG='' gsettings get org.gnome.system.locale region)
+SETTING=$(G_MESSAGES_DEBUG='' @gsettings@ get org.gnome.system.locale region)
REGION=${SETTING#\'}
REGION=${REGION%\'}
diff --git a/gnome-session/main.c b/gnome-session/main.c
index a460a849..9d07898f 100644
--- a/gnome-session/main.c
+++ b/gnome-session/main.c
@@ -215,7 +215,7 @@ require_dbus_session (int argc,
}
new_argv[i + 2] = NULL;
- if (!execvp ("dbus-launch", new_argv)) {
+ if (!execvp ("@dbusLaunch@", new_argv)) {
g_set_error (error,
G_SPAWN_ERROR,
G_SPAWN_ERROR_FAILED,

View file

@ -0,0 +1,160 @@
{ stdenv
, lib
, fetchpatch
, substituteAll
, fetchurl
, meson
, ninja
, pkg-config
, gnome
, perl
, gettext
, gtk3
, glib
, libnotify
, libgnomekbd
, lcms2
, libpulseaudio
, alsa-lib
, libcanberra-gtk3
, upower
, colord
, libgweather
, polkit
, gsettings-desktop-schemas
, geoclue2
, systemd
, libgudev
, libwacom
, libxslt
, libxml2
, modemmanager
, networkmanager
, gnome-desktop
, geocode-glib
, docbook_xsl
, wrapGAppsHook
, python3
, tzdata
, nss
, gcr
, gnome-session-ctl
, pantheon
}:
stdenv.mkDerivation rec {
pname = "gnome-settings-daemon";
version = "3.38.2";
src = fetchurl {
url = "mirror://gnome/sources/gnome-settings-daemon/${lib.versions.majorMinor version}/${pname}-${version}.tar.xz";
sha256 = "136p3prdqvc0lvrcqs4h7crpnfqnimqklpzjivq5w4g1rhbdbhrj";
};
patches = [
# https://gitlab.gnome.org/GNOME/gnome-settings-daemon/-/merge_requests/202
(fetchpatch {
url = "https://gitlab.gnome.org/GNOME/gnome-settings-daemon/commit/aae1e774dd9de22fe3520cf9eb2bfbf7216f5eb0.patch";
sha256 = "O4m0rOW8Zrgu3Q0p0OA8b951VC0FjYbOUk9MLzB9icI=";
})
(substituteAll {
src = ./fix-paths.patch;
inherit tzdata;
})
# Adjust to libgweather changes.
# https://gitlab.gnome.org/GNOME/gnome-settings-daemon/-/merge_requests/217
(fetchpatch {
url = "https://gitlab.gnome.org/GNOME/gnome-settings-daemon/commit/82d88014dfca2df7e081712870e1fb017c16b808.patch";
sha256 = "H5k/v+M2bRaswt5nrDJFNn4gS4BdB0UfzdjUCT4yLKg=";
})
# Fix build with new meson
# plugins/power/meson.build:78:7: ERROR: Function does not take positional arguments.
# https://gitlab.gnome.org/GNOME/gnome-settings-daemon/-/merge_requests/283
(fetchpatch {
url = "https://gitlab.gnome.org/GNOME/gnome-settings-daemon/-/commit/afa7e4bb9c519e2daf500a6079088669500768c0.patch";
sha256 = "8wxJIKPoZyfs1t0zAsb5SVCdt297NUiGmXIBNI6hbCQ=";
})
# meson.build:86:3: ERROR: The `==` operator of str does not accept objects of type bool (True)
# https://gitlab.gnome.org/GNOME/gnome-settings-daemon/-/merge_requests/249
(fetchpatch {
url = "https://gitlab.gnome.org/GNOME/gnome-settings-daemon/-/commit/28e28e9e598342c897ae5ca350d0da6f4aea057b.diff";
sha256 = "U+suR7wYjLWPqmkJpHm6pPOWL7sjL6GhIFX8MHrBRAY=";
})
# Port to gweather4
(fetchpatch {
url = "https://gitlab.gnome.org/GNOME/gnome-settings-daemon/-/commit/66cae69ad82cfc59435016fba737ce046ffb7e66.patch";
sha256 = "zf8/rkKdQQFNV/qx/jo4kx1KoLl7SUSu4/T1OBGrZ4c=";
})
(fetchpatch {
url = "https://gitlab.gnome.org/GNOME/gnome-settings-daemon/-/commit/f390e6e9d56ce7d3e3a725b8204d81c0b6240515.patch";
sha256 = "8mfnlhkSF9ogjVWE+IESzRQzrxHQSwUWsq5OLBM08iM=";
})
];
nativeBuildInputs = [
meson
ninja
pkg-config
perl
gettext
libxml2
libxslt
docbook_xsl
wrapGAppsHook
python3
];
buildInputs = [
gtk3
glib
gsettings-desktop-schemas
modemmanager
networkmanager
libnotify
libgnomekbd # for org.gnome.libgnomekbd.keyboard schema
gnome-desktop
lcms2
libpulseaudio
alsa-lib
libcanberra-gtk3
upower
colord
libgweather
nss
polkit
geocode-glib
geoclue2
systemd
libgudev
libwacom
gcr
];
mesonFlags = [
"-Dudev_dir=${placeholder "out"}/lib/udev"
"-Dgnome_session_ctl_path=${gnome-session-ctl}/libexec/gnome-session-ctl"
];
# Default for release buildtype but passed manually because
# we're using plain
NIX_CFLAGS_COMPILE = "-DG_DISABLE_CAST_CHECKS";
postPatch = ''
for f in gnome-settings-daemon/codegen.py plugins/power/gsd-power-constants-update.pl meson_post_install.py; do
chmod +x $f
patchShebangs $f
done
'';
meta = with lib; {
description = "GNOME Settings Daemon";
homepage = "https://gitlab.gnome.org/GNOME/gnome-settings-daemon/";
license = licenses.gpl2Plus;
maintainers = teams.pantheon.members;
platforms = platforms.linux;
};
}

View file

@ -0,0 +1,15 @@
--- a/plugins/datetime/tz.h
+++ b/plugins/datetime/tz.h
@@ -27,11 +27,7 @@
#include <glib.h>
-#ifndef __sun
-# define TZ_DATA_FILE "/usr/share/zoneinfo/zone.tab"
-#else
-# define TZ_DATA_FILE "/usr/share/lib/zoneinfo/tab/zone_sun.tab"
-#endif
+#define TZ_DATA_FILE "@tzdata@/share/zoneinfo/zone.tab"
typedef struct _TzDB TzDB;
typedef struct _TzLocation TzLocation;

View file

@ -0,0 +1,133 @@
{ lib, stdenv
, fetchpatch
, substituteAll
, fetchurl
, meson
, ninja
, pkg-config
, gnome
, perl
, gettext
, gtk3
, glib
, libnotify
, libgnomekbd
, lcms2
, libpulseaudio
, alsa-lib
, libcanberra-gtk3
, upower
, colord
, libgweather
, polkit
, gsettings-desktop-schemas
, geoclue2
, systemd
, libgudev
, libwacom
, libxslt
, libxml2
, modemmanager
, networkmanager
, gnome-desktop
, geocode-glib
, docbook_xsl
, wrapGAppsHook
, python3
, tzdata
, nss
, gcr
, gnome-session-ctl
}:
stdenv.mkDerivation rec {
pname = "gnome-settings-daemon";
version = "42.2";
src = fetchurl {
url = "mirror://gnome/sources/gnome-settings-daemon/${lib.versions.major version}/${pname}-${version}.tar.xz";
sha256 = "nESXFKqOwSccDbUTffNFgZWUPwXM0KyJNdkzl3cLqwA=";
};
patches = [
# https://gitlab.gnome.org/GNOME/gnome-settings-daemon/-/merge_requests/202
(fetchpatch {
url = "https://gitlab.gnome.org/GNOME/gnome-settings-daemon/commit/aae1e774dd9de22fe3520cf9eb2bfbf7216f5eb0.patch";
sha256 = "O4m0rOW8Zrgu3Q0p0OA8b951VC0FjYbOUk9MLzB9icI=";
})
(substituteAll {
src = ./fix-paths.patch;
inherit tzdata;
})
];
nativeBuildInputs = [
meson
ninja
pkg-config
perl
gettext
libxml2
libxslt
docbook_xsl
wrapGAppsHook
python3
];
buildInputs = [
gtk3
glib
gsettings-desktop-schemas
modemmanager
networkmanager
libnotify
libgnomekbd # for org.gnome.libgnomekbd.keyboard schema
gnome-desktop
lcms2
libpulseaudio
alsa-lib
libcanberra-gtk3
upower
colord
libgweather
nss
polkit
geocode-glib
geoclue2
systemd
libgudev
libwacom
gcr
];
mesonFlags = [
"-Dudev_dir=${placeholder "out"}/lib/udev"
"-Dgnome_session_ctl_path=${gnome-session-ctl}/libexec/gnome-session-ctl"
];
# Default for release buildtype but passed manually because
# we're using plain
NIX_CFLAGS_COMPILE = "-DG_DISABLE_CAST_CHECKS";
postPatch = ''
for f in gnome-settings-daemon/codegen.py plugins/power/gsd-power-constants-update.pl meson_post_install.py; do
chmod +x $f
patchShebangs $f
done
'';
passthru = {
updateScript = gnome.updateScript {
packageName = pname;
attrPath = "gnome.${pname}";
};
};
meta = with lib; {
license = licenses.gpl2Plus;
maintainers = teams.gnome.members;
platforms = platforms.linux;
};
}

View file

@ -0,0 +1,15 @@
--- a/plugins/datetime/tz.h
+++ b/plugins/datetime/tz.h
@@ -27,11 +27,7 @@
#include <glib.h>
-#ifndef __sun
-# define TZ_DATA_FILE "/usr/share/zoneinfo/zone.tab"
-#else
-# define TZ_DATA_FILE "/usr/share/lib/zoneinfo/tab/zone_sun.tab"
-#endif
+#define TZ_DATA_FILE "@tzdata@/share/zoneinfo/zone.tab"
typedef struct _TzDB TzDB;
typedef struct _TzLocation TzLocation;

View file

@ -0,0 +1,26 @@
diff --git a/plugins/power/gsd-backlight.c b/plugins/power/gsd-backlight.c
index d7d10fd2..5619d6ad 100644
--- a/plugins/power/gsd-backlight.c
+++ b/plugins/power/gsd-backlight.c
@@ -358,7 +358,7 @@ gsd_backlight_run_set_helper (GsdBacklight *backlight, GTask *task)
proc = g_subprocess_new (G_SUBPROCESS_FLAGS_STDOUT_SILENCE,
&error,
"pkexec",
- LIBEXECDIR "/gsd-backlight-helper",
+ "/run/current-system/sw/bin/gnome-settings-daemon/gsd-backlight-helper",
g_udev_device_get_sysfs_path (backlight->udev_device),
data->value_str, NULL);
} else {
diff --git a/plugins/power/org.gnome.settings-daemon.plugins.power.policy.in.in b/plugins/power/org.gnome.settings-daemon.plugins.power.policy.in.in
index f16300f8..79d6bd17 100644
--- a/plugins/power/org.gnome.settings-daemon.plugins.power.policy.in.in
+++ b/plugins/power/org.gnome.settings-daemon.plugins.power.policy.in.in
@@ -25,7 +25,7 @@
<allow_inactive>no</allow_inactive>
<allow_active>yes</allow_active>
</defaults>
- <annotate key="org.freedesktop.policykit.exec.path">@libexecdir@/gsd-backlight-helper</annotate>
+ <annotate key="org.freedesktop.policykit.exec.path">/run/current-system/sw/bin/gnome-settings-daemon/gsd-backlight-helper</annotate>
</action>
</policyconfig>

View file

@ -0,0 +1,78 @@
{ lib
, stdenv
, fetchurl
, meson
, ninja
, gettext
, pkg-config
, glib
, gnome
, gnome-menus
, substituteAll
}:
stdenv.mkDerivation rec {
pname = "gnome-shell-extensions";
version = "42.2";
src = fetchurl {
url = "mirror://gnome/sources/gnome-shell-extensions/${lib.versions.major version}/${pname}-${version}.tar.xz";
sha256 = "ZXGEQKocLxe7CSIv+AJpn2Qf1RJ5Ih8EyxkZOWjsCzA=";
};
patches = [
(substituteAll {
src = ./fix_gmenu.patch;
gmenu_path = "${gnome-menus}/lib/girepository-1.0";
})
];
nativeBuildInputs = [
meson
ninja
pkg-config
gettext
glib
];
mesonFlags = [
"-Dextension_set=all"
];
preFixup = ''
# The meson build doesn't compile the schemas.
# Fixup adapted from export-zips.sh in the source.
extensiondir=$out/share/gnome-shell/extensions
schemadir=${glib.makeSchemaPath "$out" "${pname}-${version}"}
glib-compile-schemas $schemadir
for f in $extensiondir/*; do
name=`basename ''${f%%@*}`
uuid=$name@gnome-shell-extensions.gcampax.github.com
schema=$schemadir/org.gnome.shell.extensions.$name.gschema.xml
if [ -f $schema ]; then
mkdir $f/schemas
ln -s $schema $f/schemas;
glib-compile-schemas $f/schemas
fi
done
'';
passthru = {
updateScript = gnome.updateScript {
packageName = pname;
attrPath = "gnome.${pname}";
};
};
meta = with lib; {
homepage = "https://wiki.gnome.org/Projects/GnomeShell/Extensions";
description = "Modify and extend GNOME Shell functionality and behavior";
maintainers = teams.gnome.members;
license = licenses.gpl2Plus;
platforms = platforms.linux;
};
}

View file

@ -0,0 +1,11 @@
--- a/extensions/apps-menu/extension.js
+++ b/extensions/apps-menu/extension.js
@@ -1,6 +1,8 @@
/* -*- mode: js2; js2-basic-offset: 4; indent-tabs-mode: nil -*- */
/* exported init enable disable */
+imports.gi.GIRepository.Repository.prepend_search_path('@gmenu_path@');
+
const {
Atk, Clutter, Gio, GLib, GMenu, GObject, Gtk, Meta, Shell, St
} = imports.gi;

View file

@ -0,0 +1,220 @@
{ fetchurl
, fetchpatch
, substituteAll
, lib, stdenv
, meson
, ninja
, pkg-config
, gnome
, json-glib
, gettext
, libsecret
, python3
, polkit
, networkmanager
, gtk-doc
, docbook-xsl-nons
, at-spi2-core
, libstartup_notification
, unzip
, shared-mime-info
, libgweather
, librsvg
, geoclue2
, perl
, docbook_xml_dtd_45
, desktop-file-utils
, libpulseaudio
, libical
, gobject-introspection
, wrapGAppsHook
, libxslt
, gcr
, accountsservice
, gdk-pixbuf
, gdm
, upower
, ibus
, libnma
, libgnomekbd
, gnome-desktop
, gsettings-desktop-schemas
, gnome-keyring
, glib
, gjs
, mutter
, evolution-data-server
, gtk3
, gtk4
, libadwaita
, sassc
, systemd
, pipewire
, gst_all_1
, adwaita-icon-theme
, gnome-bluetooth
, gnome-clocks
, gnome-settings-daemon
, gnome-autoar
, asciidoc
, bash-completion
, mesa
}:
# http://sources.gentoo.org/cgi-bin/viewvc.cgi/gentoo-x86/gnome-base/gnome-shell/gnome-shell-3.10.2.1.ebuild?revision=1.3&view=markup
let
pythonEnv = python3.withPackages (ps: with ps; [ pygobject3 ]);
in
stdenv.mkDerivation rec {
pname = "gnome-shell";
version = "42.2";
outputs = [ "out" "devdoc" ];
src = fetchurl {
url = "mirror://gnome/sources/gnome-shell/${lib.versions.major version}/${pname}-${version}.tar.xz";
sha256 = "Z+sTzRdeIDGoOMzqkukDdK4OnMumFoP7rNZ/9q/dWQ4=";
};
patches = [
# Hardcode paths to various dependencies so that they can be found at runtime.
(substituteAll {
src = ./fix-paths.patch;
inherit libgnomekbd unzip;
gsettings = "${glib.bin}/bin/gsettings";
})
# Use absolute path for libshew installation to make our patched gobject-introspection
# aware of the location to hardcode in the generated GIR file.
./shew-gir-path.patch
# Make D-Bus services wrappable.
./wrap-services.patch
# Fix greeter logo being too big.
# https://gitlab.gnome.org/GNOME/gnome-shell/issues/2591
(fetchpatch {
url = "https://gitlab.gnome.org/GNOME/gnome-shell/commit/ffb8bd5fa7704ce70ce7d053e03549dd15dce5ae.patch";
revert = true;
sha256 = "14h7ahlxgly0n3sskzq9dhxzbyb04fn80pv74vz1526396676dzl";
})
# Work around failing fingerprint auth
(fetchpatch {
url = "https://src.fedoraproject.org/rpms/gnome-shell/raw/9a647c460b651aaec0b8a21f046cc289c1999416/f/0001-gdm-Work-around-failing-fingerprint-auth.patch";
sha256 = "pFvZli3TilUt6YwdZztpB8Xq7O60XfuWUuPMMVSpqLw=";
})
];
nativeBuildInputs = [
meson
ninja
pkg-config
gettext
docbook-xsl-nons
docbook_xml_dtd_45
gtk-doc
perl
wrapGAppsHook
sassc
desktop-file-utils
libxslt.bin
asciidoc
];
buildInputs = [
systemd
gsettings-desktop-schemas
gnome-keyring
glib
gcr
accountsservice
libsecret
polkit
gdk-pixbuf
librsvg
networkmanager
libstartup_notification
gjs
mutter
libpulseaudio
evolution-data-server
libical
gtk3
gtk4
libadwaita
gdm
geoclue2
adwaita-icon-theme
gnome-bluetooth
gnome-clocks # schemas needed
at-spi2-core
upower
ibus
gnome-desktop
gnome-settings-daemon
gobject-introspection
mesa
# recording
pipewire
gst_all_1.gstreamer
gst_all_1.gst-plugins-base
gst_all_1.gst-plugins-good
# not declared at build time, but typelib is needed at runtime
libgweather
libnma
# for gnome-extension tool
bash-completion
gnome-autoar
json-glib
# for tools
pythonEnv
];
mesonFlags = [
"-Dgtk_doc=true"
];
postPatch = ''
patchShebangs src/data-to-c.pl
# We can generate it ourselves.
rm -f man/gnome-shell.1
'';
preFixup = ''
gappsWrapperArgs+=(
# Until glibs xdgmime is patched
# Fixes “Failed to load resource:///org/gnome/shell/theme/noise-texture.png: Unrecognized image file format”
--prefix XDG_DATA_DIRS : "${shared-mime-info}/share"
)
'';
postFixup = ''
# The services need typelibs.
for svc in org.gnome.ScreenSaver org.gnome.Shell.Extensions org.gnome.Shell.Notifications org.gnome.Shell.Screencast; do
wrapGApp $out/share/gnome-shell/$svc
done
'';
passthru = {
mozillaPlugin = "/lib/mozilla/plugins";
updateScript = gnome.updateScript {
packageName = "gnome-shell";
attrPath = "gnome.gnome-shell";
};
};
meta = with lib; {
description = "Core user interface for the GNOME 3 desktop";
homepage = "https://wiki.gnome.org/Projects/GnomeShell";
license = licenses.gpl2Plus;
maintainers = teams.gnome.members;
platforms = platforms.linux;
};
}

View file

@ -0,0 +1,36 @@
diff --git a/data/org.gnome.Shell-disable-extensions.service b/data/org.gnome.Shell-disable-extensions.service
index de91167c5..1c9965678 100644
--- a/data/org.gnome.Shell-disable-extensions.service
+++ b/data/org.gnome.Shell-disable-extensions.service
@@ -11,5 +11,5 @@ ConditionPathExists=%t/gnome-shell-disable-extensions
[Service]
Type=simple
# Disable extensions
-ExecStart=gsettings set org.gnome.shell disable-user-extensions true
+ExecStart=@gsettings@ set org.gnome.shell disable-user-extensions true
Restart=no
diff --git a/js/ui/extensionDownloader.js b/js/ui/extensionDownloader.js
index 8bf4646a6..59e88bb4c 100644
--- a/js/ui/extensionDownloader.js
+++ b/js/ui/extensionDownloader.js
@@ -114,7 +114,7 @@ async function extractExtensionArchive(bytes, dir) {
stream.close_async(GLib.PRIORITY_DEFAULT, null);
const unzip = Gio.Subprocess.new(
- ['unzip', '-uod', dir.get_path(), '--', file.get_path()],
+ ['@unzip@/bin/unzip', '-uod', dir.get_path(), '--', file.get_path()],
Gio.SubprocessFlags.NONE);
await unzip.wait_check_async(null);
}
diff --git a/js/ui/status/keyboard.js b/js/ui/status/keyboard.js
index bc50f3d37..868eb5abf 100644
--- a/js/ui/status/keyboard.js
+++ b/js/ui/status/keyboard.js
@@ -1080,6 +1080,6 @@ class InputSourceIndicator extends PanelMenu.Button {
if (xkbVariant.length > 0)
description = '%s\t%s'.format(description, xkbVariant);
- Util.spawn(['gkbd-keyboard-display', '-l', description]);
+ Util.spawn(['@libgnomekbd@/bin/gkbd-keyboard-display', '-l', description]);
}
});

View file

@ -0,0 +1,11 @@
--- a/subprojects/shew/src/meson.build
+++ b/subprojects/shew/src/meson.build
@@ -13,7 +13,7 @@ shew_sources = [
libshew = library(full_name,
sources: shew_sources,
dependencies: [gtk_dep, x11_dep],
- install_dir: pkglibdir,
+ install_dir: get_option('prefix') / pkglibdir,
install: true,
)

View file

@ -0,0 +1,57 @@
diff --git a/js/dbusServices/dbus-service.in b/js/dbusServices/dbus-service.in
old mode 100644
new mode 100755
index 524166102..6d0722a1c
--- a/js/dbusServices/dbus-service.in
+++ b/js/dbusServices/dbus-service.in
@@ -1,3 +1,9 @@
+#!@gjs@
+
+// gjs determines the package name from argv[0], which is .*-wrapped
+// so we need to override it to the original one.
+imports.package._findEffectiveEntryPointName = () => '@service@'
+
imports.package.start({
name: '@PACKAGE_NAME@',
prefix: '@prefix@',
diff --git a/js/dbusServices/dbus-service.service.in b/js/dbusServices/dbus-service.service.in
index 3b0d09abe..4fd4bb66d 100644
--- a/js/dbusServices/dbus-service.service.in
+++ b/js/dbusServices/dbus-service.service.in
@@ -1,3 +1,3 @@
[D-BUS Service]
Name=@service@
-Exec=@gjs@ @pkgdatadir@/@service@
+Exec=@pkgdatadir@/@service@
diff --git a/js/dbusServices/meson.build b/js/dbusServices/meson.build
index eb941ed90..552051e5a 100644
--- a/js/dbusServices/meson.build
+++ b/js/dbusServices/meson.build
@@ -2,6 +2,7 @@ launcherconf = configuration_data()
launcherconf.set('PACKAGE_NAME', meson.project_name())
launcherconf.set('prefix', prefix)
launcherconf.set('libdir', libdir)
+launcherconf.set('gjs', gjs.full_path())
dbus_services = {
'org.gnome.Shell.Extensions': 'extensions',
@@ -18,16 +19,17 @@ endif
config_dir = '@0@/..'.format(meson.current_build_dir())
foreach service, dir : dbus_services
+ svc_launcherconf = launcherconf
+ svc_launcherconf.set('service', service)
configure_file(
input: 'dbus-service.in',
output: service,
- configuration: launcherconf,
+ configuration: svc_launcherconf,
install_dir: pkgdatadir,
)
serviceconf = configuration_data()
serviceconf.set('service', service)
- serviceconf.set('gjs', gjs.full_path())
serviceconf.set('pkgdatadir', pkgdatadir)
configure_file(

View file

@ -0,0 +1,120 @@
{ lib
, stdenv
, fetchurl
, substituteAll
, pkg-config
, meson
, ninja
, gettext
, gnome
, wrapGAppsHook
, packagekit
, ostree
, glib
, appstream
, libsoup
, libadwaita
, polkit
, isocodes
, gspell
, libxslt
, gobject-introspection
, flatpak
, fwupd
, gtk4
, gsettings-desktop-schemas
, gnome-desktop
, libxmlb
, json-glib
, libsecret
, valgrind-light
, docbook-xsl-nons
, docbook_xml_dtd_42
, docbook_xml_dtd_43
, gtk-doc
, desktop-file-utils
, libsysprof-capture
}:
let
withFwupd = stdenv.hostPlatform.isx86;
in
stdenv.mkDerivation rec {
pname = "gnome-software";
version = "42.2";
src = fetchurl {
url = "mirror://gnome/sources/gnome-software/${lib.versions.major version}/${pname}-${version}.tar.xz";
sha256 = "6ENJYyp/XQhmzlwMVi5f6oQRoF8ickRBzZqCQgRiMiQ=";
};
patches = [
(substituteAll {
src = ./fix-paths.patch;
inherit isocodes;
})
];
nativeBuildInputs = [
meson
ninja
pkg-config
gettext
wrapGAppsHook
libxslt
docbook_xml_dtd_42
docbook_xml_dtd_43
valgrind-light
docbook-xsl-nons
gtk-doc
desktop-file-utils
gobject-introspection
];
buildInputs = [
gtk4
glib
packagekit
appstream
libsoup
libadwaita
gsettings-desktop-schemas
gnome-desktop
gspell
json-glib
libsecret
ostree
polkit
flatpak
libxmlb
libsysprof-capture
] ++ lib.optionals withFwupd [
fwupd
];
mesonFlags = [
"-Dgudev=false"
# FIXME: package malcontent parental controls
"-Dmalcontent=false"
# Needs flatpak to upgrade
"-Dsoup2=true"
] ++ lib.optionals (!withFwupd) [
"-Dfwupd=false"
];
passthru = {
updateScript = gnome.updateScript {
packageName = pname;
attrPath = "gnome.gnome-software";
};
};
meta = with lib; {
description = "Software store that lets you install and update applications and system extensions";
homepage = "https://wiki.gnome.org/Apps/Software";
license = licenses.gpl2Plus;
maintainers = teams.gnome.members;
platforms = platforms.linux;
};
}

View file

@ -0,0 +1,11 @@
--- a/src/gs-language.c
+++ b/src/gs-language.c
@@ -95,7 +95,7 @@
g_autoptr(GMarkupParseContext) context = NULL;
/* find filename */
- filename = g_build_filename (DATADIR, "xml", "iso-codes", "iso_639.xml", NULL);
+ filename = g_build_filename ("@isocodes@", "share", "xml", "iso-codes", "iso_639.xml", NULL);
if (!g_file_test (filename, G_FILE_TEST_EXISTS)) {
g_free (filename);
filename = g_build_filename ("/usr", "share", "xml", "iso-codes", "iso_639.xml", NULL);

View file

@ -0,0 +1,73 @@
{ lib
, stdenv
, gettext
, fetchurl
, pkg-config
, gtkmm3
, libxml2
, bash
, gtk3
, libhandy
, glib
, wrapGAppsHook
, meson
, ninja
, gsettings-desktop-schemas
, itstool
, gnome
, librsvg
, gdk-pixbuf
, libgtop
, systemd
}:
stdenv.mkDerivation rec {
pname = "gnome-system-monitor";
version = "42.0";
src = fetchurl {
url = "mirror://gnome/sources/gnome-system-monitor/${lib.versions.major version}/${pname}-${version}.tar.xz";
sha256 = "EyOdIgMiAaIr0pgzxXW2hIFnANLeFooVMCI1d8XAddw=";
};
nativeBuildInputs = [
pkg-config
gettext
itstool
wrapGAppsHook
meson
ninja
];
buildInputs = [
bash
gtk3
libhandy
glib
libxml2
gtkmm3
libgtop
gdk-pixbuf
gnome.adwaita-icon-theme
librsvg
gsettings-desktop-schemas
systemd
];
doCheck = true;
passthru = {
updateScript = gnome.updateScript {
packageName = "gnome-system-monitor";
attrPath = "gnome.gnome-system-monitor";
};
};
meta = with lib; {
homepage = "https://wiki.gnome.org/Apps/SystemMonitor";
description = "System Monitor shows you what programs are running and how much processor time, memory, and disk space are being used";
maintainers = teams.gnome.members;
license = licenses.gpl2;
platforms = platforms.linux;
};
}

View file

@ -0,0 +1,95 @@
{ stdenv
, lib
, fetchurl
, meson
, ninja
, pkg-config
, python3
, libxml2
, gnome
, dconf
, nautilus
, glib
, gtk3
, gsettings-desktop-schemas
, vte
, gettext
, which
, libuuid
, vala
, desktop-file-utils
, itstool
, wrapGAppsHook
, pcre2
, libxslt
, docbook-xsl-nons
, nixosTests
}:
stdenv.mkDerivation rec {
pname = "gnome-terminal";
version = "3.44.1";
src = fetchurl {
url = "mirror://gnome/sources/gnome-terminal/${lib.versions.majorMinor version}/${pname}-${version}.tar.xz";
sha256 = "+28g7h/yMamq7asT1dxuWmTJVXESJISLeQCG6IlZ03s=";
};
nativeBuildInputs = [
meson
ninja
pkg-config
gettext
itstool
which
libxml2
libxslt
glib # for glib-compile-schemas
docbook-xsl-nons
vala
desktop-file-utils
wrapGAppsHook
pcre2
python3
];
buildInputs = [
glib
gtk3
gsettings-desktop-schemas
vte
libuuid
dconf
nautilus # For extension
];
# Silly build system, it looks for dbus file from gnome-shell in the
# installation tree of the package it is configuring.
postPatch = ''
substituteInPlace src/meson.build \
--replace "gt_prefix / gt_dbusinterfacedir / 'org.gnome.ShellSearchProvider2.xml'" \
"'${gnome.gnome-shell}/share/dbus-1/interfaces/org.gnome.ShellSearchProvider2.xml'"
patchShebangs \
data/icons/meson_updateiconcache.py \
data/meson_desktopfile.py \
src/meson_compileschemas.py
'';
passthru = {
updateScript = gnome.updateScript {
packageName = "gnome-terminal";
attrPath = "gnome.gnome-terminal";
};
};
passthru.tests.test = nixosTests.terminal-emulators.gnome-terminal;
meta = with lib; {
description = "The GNOME Terminal Emulator";
homepage = "https://wiki.gnome.org/Apps/Terminal";
platforms = platforms.linux;
license = licenses.gpl3Plus;
maintainers = teams.gnome.members;
};
}

View file

@ -0,0 +1,35 @@
{ lib, stdenv, fetchurl, intltool, gtk3, gnome, librsvg, pkg-config, pango, atk, gtk2
, gdk-pixbuf, hicolor-icon-theme }:
let
pname = "gnome-themes-extra";
version = "3.28";
in stdenv.mkDerivation rec {
name = "${pname}-${version}";
src = fetchurl {
url = "mirror://gnome/sources/${pname}/${lib.versions.majorMinor version}/${name}.tar.xz";
sha256 = "06aqg9asq2vqi9wr29bs4v8z2bf4manhbhfghf4nvw01y2zs0jvw";
};
passthru = {
updateScript = gnome.updateScript {
packageName = pname;
};
};
nativeBuildInputs = [ pkg-config intltool ];
buildInputs = [ gtk3 librsvg pango atk gtk2 gdk-pixbuf ];
propagatedBuildInputs = [ gnome.adwaita-icon-theme hicolor-icon-theme ];
dontDropIconThemeCache = true;
postInstall = ''
gtk-update-icon-cache "$out"/share/icons/HighContrast
'';
meta = with lib; {
platforms = platforms.linux;
maintainers = teams.gnome.members;
};
}

View file

@ -0,0 +1,70 @@
{ lib
, stdenv
, rustPlatform
, gettext
, meson
, ninja
, fetchurl
, pkg-config
, gtk4
, glib
, gdk-pixbuf
, desktop-file-utils
, appstream-glib
, wrapGAppsHook
, python3
, gnome
, libadwaita
, librsvg
, rustc
, cargo
}:
stdenv.mkDerivation rec {
pname = "gnome-tour";
version = "42.0";
src = fetchurl {
url = "mirror://gnome/sources/${pname}/${lib.versions.major version}/${pname}-${version}.tar.xz";
hash = "sha256-/PGsaJBX2oZZaXDsPag1VSHApy6VBj6wWdX+5N6oL08=";
};
cargoVendorDir = "vendor";
nativeBuildInputs = [
appstream-glib
cargo
desktop-file-utils
gettext
glib # glib-compile-resources
meson
ninja
pkg-config
python3
rustPlatform.cargoSetupHook
rustc
wrapGAppsHook
];
buildInputs = [
gdk-pixbuf
glib
gtk4
libadwaita
librsvg
];
passthru = {
updateScript = gnome.updateScript {
packageName = pname;
};
};
meta = with lib; {
homepage = "https://gitlab.gnome.org/GNOME/gnome-tour";
description = "GNOME Greeter & Tour";
maintainers = teams.gnome.members;
license = licenses.gpl3Plus;
platforms = platforms.linux;
};
}

View file

@ -0,0 +1,101 @@
{ lib, stdenv
, gettext
, meson
, ninja
, fetchurl
, fetchpatch
, apacheHttpd
, nautilus
, pkg-config
, gtk3
, glib
, libxml2
, systemd
, wrapGAppsHook
, itstool
, libnotify
, mod_dnssd
, gnome
, libcanberra-gtk3
, python3
}:
stdenv.mkDerivation rec {
pname = "gnome-user-share";
version = "3.34.0";
src = fetchurl {
url = "mirror://gnome/sources/${pname}/${lib.versions.majorMinor version}/${pname}-${version}.tar.xz";
sha256 = "04r9ck9v4i0d31grbli1d4slw2d6dcsfkpaybkwbzi7wnj72l30x";
};
patches = [
# fix gio-unix-2.0 lookup
(fetchpatch {
url = "https://gitlab.gnome.org/GNOME/gnome-user-share/commit/8772980d4732c15505b15dccff2ca3c97e96d49d.patch";
sha256 = "03clzhrx72pq1cbmg2y24hvw4i1xsvrg9ip113fi5bc3w4gcji7p";
})
# fix compilation with meson >=0.61
(fetchpatch {
url = "https://gitlab.gnome.org/GNOME/gnome-user-share/-/commit/c31b0a8f33b95c0077cd5ee2102a71a49bee8abe.patch";
hash = "sha256-kH+cPBmSErWxsw+IyyjWgENi4I3ZcKjSA9+em8u4DYs=";
})
];
postPatch = ''
chmod +x meson_post_install.py
patchShebangs meson_post_install.py
'';
preConfigure = ''
sed -e 's,^LoadModule dnssd_module.\+,LoadModule dnssd_module ${mod_dnssd}/modules/mod_dnssd.so,' \
-e 's,''${HTTP_MODULES_PATH},${apacheHttpd}/modules,' \
-i data/dav_user_2.4.conf
'';
mesonFlags = [
"-Dhttpd=${apacheHttpd.out}/bin/httpd"
"-Dmodules_path=${apacheHttpd}/modules"
"-Dsystemduserunitdir=${placeholder "out"}/etc/systemd/user"
# In 3.34.0 it defaults to false but it is silently ignored and always installed.
# Lets add it anyway in case they decide to make build respect the option in the future.
"-Dnautilus_extension=true"
];
nativeBuildInputs = [
pkg-config
meson
ninja
gettext
itstool
libxml2
wrapGAppsHook
python3
];
buildInputs = [
gtk3
glib
nautilus
libnotify
libcanberra-gtk3
systemd
];
doCheck = true;
passthru = {
updateScript = gnome.updateScript {
packageName = pname;
attrPath = "gnome.${pname}";
};
};
meta = with lib; {
homepage = "https://help.gnome.org/users/gnome-user-share/3.8";
description = "Service that exports the contents of the Public folder in your home directory on the local network";
maintainers = teams.gnome.members;
license = licenses.gpl2;
platforms = platforms.linux;
};
}

View file

@ -0,0 +1,109 @@
{ stdenv
, lib
, intltool
, fetchFromGitLab
, meson
, ninja
, pkg-config
, python3
, gtk3
, pcre2
, glib
, desktop-file-utils
, gtk-doc
, wrapGAppsHook
, itstool
, libxml2
, yelp-tools
, docbook_xsl
, docbook_xml_dtd_412
, gsettings-desktop-schemas
, callPackage
, unzip
, unicode-character-database
, unihan-database
, runCommand
, symlinkJoin
, gobject-introspection
, nix-update-script
}:
let
# TODO: make upstream patch allowing to use the uncompressed file,
# preferably from XDG_DATA_DIRS.
# https://gitlab.gnome.org/GNOME/gucharmap/issues/13
unihanZip = runCommand "unihan" {} ''
mkdir -p $out/share/unicode
ln -s ${unihan-database.src} $out/share/unicode/Unihan.zip
'';
ucd = symlinkJoin {
name = "ucd+unihan";
paths = [
unihanZip
unicode-character-database
];
};
in stdenv.mkDerivation rec {
pname = "gucharmap";
version = "14.0.3";
outputs = [ "out" "lib" "dev" "devdoc" ];
src = fetchFromGitLab {
domain = "gitlab.gnome.org";
owner = "GNOME";
repo = pname;
rev = version;
sha256 = "sha256-xO34CR+SWxtHuP6G8m0jla0rivVp3ddrsODNo50MhHw=";
};
nativeBuildInputs = [
meson
ninja
pkg-config
python3
wrapGAppsHook
unzip
intltool
itstool
gtk-doc
docbook_xsl
docbook_xml_dtd_412
yelp-tools
libxml2
desktop-file-utils
gobject-introspection
];
buildInputs = [
gtk3
glib
gsettings-desktop-schemas
pcre2
];
mesonFlags = [
"-Ducd_path=${ucd}/share/unicode"
"-Dvapi=false"
];
doCheck = true;
postPatch = ''
patchShebangs data/meson_desktopfile.py gucharmap/gen-guch-unicode-tables.pl gucharmap/meson_compileschemas.py
'';
passthru = {
updateScript = nix-update-script {
attrPath = "gnome.gucharmap";
};
};
meta = with lib; {
description = "GNOME Character Map, based on the Unicode Character Database";
homepage = "https://wiki.gnome.org/Apps/Gucharmap";
license = licenses.gpl3;
maintainers = teams.gnome.members;
platforms = platforms.linux;
};
}

View file

@ -0,0 +1,32 @@
{ lib, stdenv, fetchurl, glib, dbus, libgcrypt, pkg-config, intltool, gobject-introspection, gnome }:
let
pname = "libgnome-keyring";
version = "3.12.0";
in
stdenv.mkDerivation rec {
name = "${pname}-${version}";
src = fetchurl {
url = "mirror://gnome/sources/${pname}/${lib.versions.majorMinor version}/${name}.tar.xz";
sha256 = "c4c178fbb05f72acc484d22ddb0568f7532c409b0a13e06513ff54b91e947783";
};
outputs = [ "out" "dev" ];
propagatedBuildInputs = [ glib gobject-introspection dbus libgcrypt ];
nativeBuildInputs = [ pkg-config intltool ];
meta = {
description = "Framework for managing passwords and other secrets";
homepage = "https://wiki.gnome.org/Projects/GnomeKeyring";
license = with lib.licenses; [ gpl2Plus lgpl2Plus ];
inherit (glib.meta) platforms maintainers;
longDescription = ''
gnome-keyring is a program that keeps password and other secrets for
users. The library libgnome-keyring is used by applications to integrate
with the gnome-keyring system.
'';
};
}

View file

@ -0,0 +1,164 @@
{ fetchurl
, substituteAll
, runCommand
, lib
, stdenv
, pkg-config
, gnome
, gettext
, gobject-introspection
, cairo
, pango
, json-glib
, libstartup_notification
, zenity
, libcanberra
, ninja
, xkeyboard_config
, libxkbfile
, libXdamage
, libxkbcommon
, libXtst
, libinput
, libdrm
, gsettings-desktop-schemas
, glib
, gtk3
, gnome-desktop
, pipewire
, libgudev
, libwacom
, xwayland
, mesa
, meson
, gnome-settings-daemon
, xorgserver
, python3
, wrapGAppsHook
, sysprof
, desktop-file-utils
, libcap_ng
, egl-wayland
, graphene
, wayland-protocols
, pantheon
}:
let self = stdenv.mkDerivation rec {
pname = "mutter";
version = "3.38.6";
outputs = [ "out" "dev" "man" ];
src = fetchurl {
url = "mirror://gnome/sources/mutter/${lib.versions.majorMinor version}/${pname}-${version}.tar.xz";
sha256 = "0mxln9azl4krmknq2vmhd15lgpa2q7gh7whiv14nsqbr9iaxmg2x";
};
patches = [
# Drop inheritable cap_sys_nice, to prevent the ambient set from leaking
# from mutter/gnome-shell, see https://github.com/NixOS/nixpkgs/issues/71381
./drop-inheritable.patch
# Fixes issues for users of mutter like in gala.
# https://github.com/elementary/gala/issues/605
# https://gitlab.gnome.org/GNOME/mutter/issues/536
./fix-glitches-in-gala.patch
(substituteAll {
src = ./fix-paths.patch;
inherit zenity;
})
];
mesonFlags = [
"-Degl_device=true"
"-Dinstalled_tests=false" # TODO: enable these
"-Dwayland_eglstream=true"
"-Dprofiler=true"
"-Dxwayland_path=${xwayland}/bin/Xwayland"
# This should be auto detected, but it looks like it manages a false
# positive.
"-Dxwayland_initfd=disabled"
];
propagatedBuildInputs = [
# required for pkg-config to detect mutter-clutter
json-glib
libXtst
libcap_ng
graphene
];
nativeBuildInputs = [
desktop-file-utils
gettext
mesa # needed for gbm
meson
ninja
pkg-config
python3
wrapGAppsHook
xorgserver # for cvt command
];
buildInputs = [
cairo
egl-wayland
glib
gnome-desktop
gnome-settings-daemon
gobject-introspection
gsettings-desktop-schemas
gtk3
libcanberra
libdrm
libgudev
libinput
libstartup_notification
libwacom
libxkbcommon
libxkbfile
libXdamage
pango
pipewire
sysprof
xkeyboard_config
xwayland
wayland-protocols
];
postPatch = ''
patchShebangs src/backends/native/gen-default-modes.py
'';
postInstall = ''
${glib.dev}/bin/glib-compile-schemas "$out/share/glib-2.0/schemas"
'';
# Install udev files into our own tree.
PKG_CONFIG_UDEV_UDEVDIR = "${placeholder "out"}/lib/udev";
passthru = {
libdir = "${self}/lib/mutter-7";
tests = {
libdirExists = runCommand "mutter-libdir-exists" {} ''
if [[ ! -d ${self.libdir} ]]; then
echo "passthru.libdir should contain a directory, ${self.libdir} is not one."
exit 1
fi
touch $out
'';
};
};
meta = with lib; {
description = "A window manager for GNOME";
homepage = "https://gitlab.gnome.org/GNOME/mutter";
license = licenses.gpl2Plus;
maintainers = teams.pantheon.members;
platforms = platforms.linux;
};
};
in self

View file

@ -0,0 +1,132 @@
From e9c772e265b2293af031c79f4bbc99b5847dfe3c Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Tor=20Hedin=20Br=C3=B8nner?= <torhedinbronner@gmail.com>
Date: Sat, 19 Oct 2019 13:26:05 +0200
Subject: [PATCH] drop inheritable
Adapted from https://gitlab.gnome.org/GNOME/mutter/commit/c53c47ae123b03cc66044d2b846342123ecb3a01
We only want to drop inheritable though, to prevent the ambient set leaking further than gnome-shell.
---
config.h.meson | 3 +++
meson.build | 5 +++++
meson_options.txt | 6 ++++++
src/core/main.c | 11 +++++++++++
src/meson.build | 1 +
5 files changed, 26 insertions(+)
diff --git a/config.h.meson b/config.h.meson
index 0bab71848..202fb7ed1 100644
--- a/config.h.meson
+++ b/config.h.meson
@@ -58,6 +58,9 @@
/* Xwayland applications allowed to issue keyboard grabs */
#mesondefine XWAYLAND_GRAB_DEFAULT_ACCESS_RULES
+/* Defined if libcap-ng is available */
+#mesondefine HAVE_LIBCAPNG
+
/* XKB base prefix */
#mesondefine XKB_BASE
diff --git a/meson.build b/meson.build
index 3322bd3b1..01c8020fa 100644
--- a/meson.build
+++ b/meson.build
@@ -35,6 +35,7 @@ libstartup_notification_req = '>= 0.7'
libcanberra_req = '>= 0.26'
libwacom_req = '>= 0.13'
atk_req = '>= 2.5.3'
+libcapng_req = '>= 0.7.9'
# optional version requirements
udev_req = '>= 228'
@@ -131,6 +131,7 @@ ice_dep = dependency('ice')
atk_dep = dependency('atk', version: atk_req)
libcanberra_dep = dependency('libcanberra', version: libcanberra_req)
dbus_dep = dependency('dbus-1')
+libcapng_dep = dependency('libcap-ng', required: get_option('libcapng'))
# For now always require X11 support
have_x11 = true
@@ -256,6 +258,7 @@ have_core_tests = false
have_cogl_tests = false
have_clutter_tests = false
have_installed_tests = false
+have_libcapng = libcapng_dep.found()
if have_tests
have_core_tests = get_option('core_tests')
@@ -361,6 +364,7 @@ cdata.set('HAVE_LIBWACOM', have_libwacom)
cdata.set('HAVE_SM', have_sm)
cdata.set('HAVE_STARTUP_NOTIFICATION', have_startup_notification)
cdata.set('HAVE_INTROSPECTION', have_introspection)
+cdata.set('HAVE_LIBCAPNG', have_libcapng)
cdata.set('HAVE_PROFILER', have_profiler)
xkb_base = xkeyboard_config_dep.get_pkgconfig_variable('xkb_base')
@@ -465,6 +465,7 @@ output = [
' Introspection............ ' + have_introspection.to_string(),
' Profiler................. ' + have_profiler.to_string(),
' Xwayland initfd.......... ' + have_xwayland_initfd.to_string(),
+ ' libcap-ng................ ' + have_libcapng.to_string(),
'',
' Tests:',
'',
diff --git a/meson_options.txt b/meson_options.txt
index 73aa7adde..8bfaacd9a 100644
--- a/meson_options.txt
+++ b/meson_options.txt
@@ -152,3 +152,9 @@ option('xwayland_grab_default_access_rules',
value: 'gnome-boxes,remote-viewer,virt-viewer,virt-manager,vinagre,vncviewer,Xephyr',
description: 'Comma delimited list of applications ressources or class allowed to issue X11 grabs in Xwayland'
)
+
+option('libcapng',
+ type: 'feature',
+ value: 'auto',
+ description: 'Enable libcap-ng support'
+)
diff --git a/src/core/main.c b/src/core/main.c
index 7f4f666d2..b27968f13 100644
--- a/src/core/main.c
+++ b/src/core/main.c
@@ -66,6 +66,10 @@
#include <girepository.h>
#endif
+#ifdef HAVE_LIBCAPNG
+#include <cap-ng.h>
+#endif
+
#if defined(HAVE_NATIVE_BACKEND) && defined(HAVE_WAYLAND)
#include <systemd/sd-login.h>
#endif /* HAVE_WAYLAND && HAVE_NATIVE_BACKEND */
@@ -670,5 +674,12 @@ int
meta_run (void)
{
meta_start ();
+
+#ifdef HAVE_LIBCAPNG
+ capng_clear(CAPNG_SELECT_BOTH);
+ capng_update(CAPNG_ADD, CAPNG_EFFECTIVE|CAPNG_PERMITTED, CAP_SYS_NICE);
+ capng_apply(CAPNG_SELECT_BOTH);
+#endif
+
meta_run_main_loop ();
meta_finalize ();
diff --git a/src/meson.build b/src/meson.build
index 90d80734f..a9fffa2c2 100644
--- a/src/meson.build
+++ b/src/meson.build
@@ -18,6 +18,7 @@ mutter_pkg_deps = [
glib_dep,
gsettings_desktop_schemas_dep,
gtk3_dep,
+ libcapng_dep,
pango_dep,
]
--
2.23.0

View file

@ -0,0 +1,27 @@
From a58ace29db48f98ad59f4f309d49b458c68a6eec Mon Sep 17 00:00:00 2001
From: Bobby Rong <rjl931189261@126.com>
Date: Wed, 28 Jul 2021 22:08:11 +0800
Subject: [PATCH] Fix glitches in gala
Co-Authored-By: WORLDofPEACE <worldofpeace@protonmail.ch>
This fixes issues for users of mutter like in gala[0].
Upstream report: https://gitlab.gnome.org/GNOME/mutter/issues/536
[0]: https://github.com/elementary/gala/issues/605
---
clutter/clutter/clutter-actor.c | 1 -
1 file changed, 1 deletion(-)
diff --git a/clutter/clutter/clutter-actor.c b/clutter/clutter/clutter-actor.c
index febfb31918..71906000c0 100644
--- a/clutter/clutter/clutter-actor.c
+++ b/clutter/clutter/clutter-actor.c
@@ -15926,7 +15926,6 @@ _clutter_actor_get_paint_volume_mutable (ClutterActor *self)
if (_clutter_actor_get_paint_volume_real (self, &priv->paint_volume))
{
priv->paint_volume_valid = TRUE;
- priv->needs_paint_volume_update = FALSE;
return &priv->paint_volume;
}
else

View file

@ -0,0 +1,13 @@
diff --git a/src/core/util.c b/src/core/util.c
index 57b73747d..f424cc81c 100644
--- a/src/core/util.c
+++ b/src/core/util.c
@@ -636,7 +636,7 @@ meta_show_dialog (const char *type,
args = g_ptr_array_new ();
- append_argument (args, "zenity");
+ append_argument (args, "@zenity@/bin/zenity");
append_argument (args, type);
if (display)

View file

@ -0,0 +1,165 @@
{ fetchurl
, substituteAll
, runCommand
, lib
, stdenv
, pkg-config
, gnome
, gettext
, gobject-introspection
, cairo
, pango
, json-glib
, libstartup_notification
, zenity
, libcanberra
, ninja
, xvfb-run
, xkeyboard_config
, libxkbfile
, libXdamage
, libxkbcommon
, libXtst
, libinput
, libdrm
, gsettings-desktop-schemas
, glib
, gtk3
, gnome-desktop
, pipewire
, libgudev
, libwacom
, xwayland
, mesa
, meson
, gnome-settings-daemon
, xorgserver
, python3
, wrapGAppsHook
, sysprof
, desktop-file-utils
, libcap_ng
, egl-wayland
, graphene
, wayland-protocols
}:
let self = stdenv.mkDerivation rec {
pname = "mutter";
version = "42.2";
outputs = [ "out" "dev" "man" ];
src = fetchurl {
url = "mirror://gnome/sources/mutter/${lib.versions.major version}/${pname}-${version}.tar.xz";
sha256 = "vTDXi+fRcAE6CovMg3zsXubETXcP8AZ03N/CizQms0w=";
};
patches = [
# Drop inheritable cap_sys_nice, to prevent the ambient set from leaking
# from mutter/gnome-shell, see https://github.com/NixOS/nixpkgs/issues/71381
# ./drop-inheritable.patch
(substituteAll {
src = ./fix-paths.patch;
inherit zenity;
})
];
mesonFlags = [
"-Degl_device=true"
"-Dinstalled_tests=false" # TODO: enable these
"-Dwayland_eglstream=true"
"-Dprofiler=true"
"-Dxwayland_path=${xwayland}/bin/Xwayland"
# This should be auto detected, but it looks like it manages a false
# positive.
"-Dxwayland_initfd=disabled"
];
propagatedBuildInputs = [
# required for pkg-config to detect mutter-clutter
json-glib
libXtst
libcap_ng
graphene
];
nativeBuildInputs = [
desktop-file-utils
gettext
mesa # needed for gbm
meson
ninja
xvfb-run
pkg-config
python3
wrapGAppsHook
xorgserver # for cvt command
];
buildInputs = [
cairo
egl-wayland
glib
gnome-desktop
gnome-settings-daemon
gobject-introspection
gsettings-desktop-schemas
gtk3
libcanberra
libdrm
libgudev
libinput
libstartup_notification
libwacom
libxkbcommon
libxkbfile
libXdamage
pango
pipewire
sysprof
xkeyboard_config
xwayland
wayland-protocols
];
postPatch = ''
patchShebangs src/backends/native/gen-default-modes.py
'';
postInstall = ''
${glib.dev}/bin/glib-compile-schemas "$out/share/glib-2.0/schemas"
'';
# Install udev files into our own tree.
PKG_CONFIG_UDEV_UDEVDIR = "${placeholder "out"}/lib/udev";
passthru = {
libdir = "${self}/lib/mutter-10";
tests = {
libdirExists = runCommand "mutter-libdir-exists" {} ''
if [[ ! -d ${self.libdir} ]]; then
echo "passthru.libdir should contain a directory, ${self.libdir} is not one."
exit 1
fi
touch $out
'';
};
updateScript = gnome.updateScript {
packageName = pname;
attrPath = "gnome.${pname}";
};
};
meta = with lib; {
description = "A window manager for GNOME";
homepage = "https://gitlab.gnome.org/GNOME/mutter";
license = licenses.gpl2Plus;
maintainers = teams.gnome.members;
platforms = platforms.linux;
};
};
in self

View file

@ -0,0 +1,13 @@
diff --git a/src/core/util.c b/src/core/util.c
index 57b73747d..f424cc81c 100644
--- a/src/core/util.c
+++ b/src/core/util.c
@@ -636,7 +636,7 @@ meta_show_dialog (const char *type,
args = g_ptr_array_new ();
- append_argument (args, "zenity");
+ append_argument (args, "@zenity@/bin/zenity");
append_argument (args, type);
if (display)

View file

@ -0,0 +1,119 @@
{ lib
, stdenv
, fetchurl
, meson
, ninja
, pkg-config
, gettext
, libxml2
, desktop-file-utils
, python3
, wrapGAppsHook
, gtk3
, libhandy
, libportal-gtk3
, gnome
, gnome-autoar
, glib-networking
, shared-mime-info
, libnotify
, libexif
, libseccomp
, librsvg
, tracker
, tracker-miners
, gexiv2
, libselinux
, gdk-pixbuf
, substituteAll
, gnome-desktop
, gst_all_1
, gsettings-desktop-schemas
, gobject-introspection
}:
stdenv.mkDerivation rec {
pname = "nautilus";
version = "42.2";
outputs = [ "out" "dev" ];
src = fetchurl {
url = "mirror://gnome/sources/${pname}/${lib.versions.major version}/${pname}-${version}.tar.xz";
sha256 = "mSEtLrdZlvGBcorQSi4thvJXewZOaKNMi4GnA330zLI=";
};
patches = [
# Allow changing extension directory using environment variable.
./extension_dir.patch
# Hardcode required paths.
(substituteAll {
src = ./fix-paths.patch;
inherit tracker;
})
];
nativeBuildInputs = [
desktop-file-utils
gettext
gobject-introspection
libxml2
meson
ninja
pkg-config
python3
wrapGAppsHook
];
buildInputs = [
gexiv2
glib-networking
gnome-desktop
gnome.adwaita-icon-theme
gsettings-desktop-schemas
gst_all_1.gst-plugins-base
gtk3
libhandy
libportal-gtk3
libexif
libnotify
libseccomp
libselinux
shared-mime-info
tracker
tracker-miners
];
propagatedBuildInputs = [
gnome-autoar
];
preFixup = ''
gappsWrapperArgs+=(
# Thumbnailers
--prefix XDG_DATA_DIRS : "${gdk-pixbuf}/share"
--prefix XDG_DATA_DIRS : "${librsvg}/share"
--prefix XDG_DATA_DIRS : "${shared-mime-info}/share"
)
'';
postPatch = ''
patchShebangs build-aux/meson/postinstall.py
'';
passthru = {
updateScript = gnome.updateScript {
packageName = pname;
attrPath = "gnome.${pname}";
};
};
meta = with lib; {
description = "The file manager for GNOME";
homepage = "https://wiki.gnome.org/Apps/Files";
license = licenses.gpl3Plus;
platforms = platforms.linux;
maintainers = teams.gnome.members;
};
}

View file

@ -0,0 +1,24 @@
diff --git a/src/nautilus-module.c b/src/nautilus-module.c
index 6273a76..4adcc8a 100644
--- a/src/nautilus-module.c
+++ b/src/nautilus-module.c
@@ -242,11 +242,17 @@ void
nautilus_module_setup (void)
{
static gboolean initialized = FALSE;
+ const gchar* extensiondir = NULL;
if (!initialized)
{
initialized = TRUE;
- load_module_dir (NAUTILUS_EXTENSIONDIR);
+ extensiondir = g_getenv ("NAUTILUS_EXTENSION_DIR");
+ if (extensiondir == NULL) {
+ extensiondir = NAUTILUS_EXTENSIONDIR;
+ }
+
+ load_module_dir (extensiondir);
eel_debug_call_at_shutdown (free_module_objects);
}

View file

@ -0,0 +1,13 @@
diff --git a/src/nautilus-tag-manager.c b/src/nautilus-tag-manager.c
index 28b96c996..0b1fad9ab 100644
--- a/src/nautilus-tag-manager.c
+++ b/src/nautilus-tag-manager.c
@@ -962,7 +962,7 @@ child_watch_cb (GPid pid,
static void
export_tracker2_data (NautilusTagManager *self)
{
- gchar *argv[] = {"tracker3", "export", "--2to3", "files-starred", "--keyfile", NULL};
+ gchar *argv[] = {"@tracker@/bin/tracker3", "export", "--2to3", "files-starred", "--keyfile", NULL};
gint stdout_fd;
GPid child_pid;
g_autoptr (GError) error = NULL;

Some files were not shown because too many files have changed in this diff Show more