Merge #247766: GNOME: 44 -> 45

...into release-23.11
This commit is contained in:
Vladimír Čunát
2023-11-21 20:46:16 +01:00
180 changed files with 8167 additions and 1895 deletions

View File

@@ -4,6 +4,8 @@
"mpd.conf(5)": "https://mpd.readthedocs.io/en/latest/mpd.conf.5.html",
"nix.conf(5)": "https://nixos.org/manual/nix/stable/command-ref/conf-file.html",
"portals.conf(5)": "https://github.com/flatpak/xdg-desktop-portal/blob/1.18.1/doc/portals.conf.rst.in",
"journald.conf(5)": "https://www.freedesktop.org/software/systemd/man/journald.conf.html",
"logind.conf(5)": "https://www.freedesktop.org/software/systemd/man/logind.conf.html",
"networkd.conf(5)": "https://www.freedesktop.org/software/systemd/man/networkd.conf.html",

View File

@@ -6,6 +6,8 @@
- PostgreSQL now defaults to major version 15.
- GNOME has been updated to version 45, see the [release notes](https://release.gnome.org/45/) for details. Notably, Loupe has replaced Eye of GNOME as the default image viewer, Snapshot has replaced Cheese as the default camera application, and Photos will no longer be installed.
- Support for WiFi6 (IEEE 802.11ax) and WPA3-SAE-PK was enabled in the `hostapd` package, along with a significant rework of the hostapd module.
- LXD now supports virtual machine instances to complement the existing container support
@@ -172,6 +174,10 @@
- `python3.pkgs.fetchPypi` (and `python3Packages.fetchPypi`) has been deprecated in favor of top-level `fetchPypi`.
- xdg-desktop-portal has been updated to 1.18, which reworked how portal implementations are selected. If you roll your own desktop environment, you should either set `xdg.portal.config` or `xdg.portal.configPackages`, which allow fine-grained control over which portal backend to use for specific interfaces, as described in {manpage}`portals.conf(5)`.
If you don't provide configurations, a portal backend will only be considered when the desktop you use matches its deprecated `UseIn` key. While some NixOS desktop modules should already ship one for you, it is suggested to test portal availability by trying [Door Knocker](https://flathub.org/apps/xyz.tytanium.DoorKnocker) and [ASHPD Demo](https://flathub.org/apps/com.belmoussaoui.ashpd.demo). If things regressed, you may run `G_MESSAGES_DEBUG=all /path/to/xdg-desktop-portal/libexec/xdg-desktop-portal` for ideas on which config file and which portals are chosen.
- `pass` now does not contain `password-store.el`. Users should get `password-store.el` from Emacs lisp package set `emacs.pkgs.password-store`.
- `services.knot` now supports `.settings` from RFC42. The previous `.extraConfig` still works the same, but it displays a warning now.

View File

@@ -8,6 +8,10 @@ let
mkRenamedOptionModule
teams
types;
associationOptions = with types; attrsOf (
coercedTo (either (listOf str) str) (x: lib.concatStringsSep ";" (lib.toList x)) str
);
in
{
@@ -72,20 +76,76 @@ in
See [#160923](https://github.com/NixOS/nixpkgs/issues/160923) for more info.
'';
};
config = mkOption {
type = types.attrsOf associationOptions;
default = { };
example = {
x-cinnamon = {
default = [ "xapp" "gtk" ];
};
pantheon = {
default = [ "pantheon" "gtk" ];
"org.freedesktop.impl.portal.Secret" = [ "gnome-keyring" ];
};
common = {
default = [ "gtk" ];
};
};
description = lib.mdDoc ''
Sets which portal backend should be used to provide the implementation
for the requested interface. For details check {manpage}`portals.conf(5)`.
Configs will be linked to `/etx/xdg/xdg-desktop-portal/` with the name `$desktop-portals.conf`
for `xdg.portal.config.$desktop` and `portals.conf` for `xdg.portal.config.common`
as an exception.
'';
};
configPackages = mkOption {
type = types.listOf types.package;
default = [ ];
example = lib.literalExpression "[ pkgs.gnome.gnome-session ]";
description = lib.mdDoc ''
List of packages that provide XDG desktop portal configuration, usually in
the form of `share/xdg-desktop-portal/$desktop-portals.conf`.
Note that configs in `xdg.portal.config` will be preferred if set.
'';
};
};
config =
let
cfg = config.xdg.portal;
packages = [ pkgs.xdg-desktop-portal ] ++ cfg.extraPortals;
configPackages = cfg.configPackages;
joinedPortals = pkgs.buildEnv {
name = "xdg-portals";
paths = packages;
pathsToLink = [ "/share/xdg-desktop-portal/portals" "/share/applications" ];
};
joinedPortalConfigs = pkgs.buildEnv {
name = "xdg-portal-configs";
paths = configPackages;
pathsToLink = [ "/share/xdg-desktop-portal" ];
};
in
mkIf cfg.enable {
warnings = lib.optional (cfg.configPackages == [ ] && cfg.config == { }) ''
xdg-desktop-portal 1.17 reworked how portal implementations are loaded, you
should either set `xdg.portal.config` or `xdg.portal.configPackages`
to specify which portal backend to use for the requested interface.
https://github.com/flatpak/xdg-desktop-portal/blob/1.18.1/doc/portals.conf.rst.in
If you simply want to keep the behaviour in < 1.17, which uses the first
portal implementation found in lexicographical order, use the following:
xdg.portal.config.common.default = "*";
'';
assertions = [
{
@@ -108,7 +168,14 @@ in
GTK_USE_PORTAL = mkIf cfg.gtkUsePortal "1";
NIXOS_XDG_OPEN_USE_PORTAL = mkIf cfg.xdgOpenUsePortal "1";
XDG_DESKTOP_PORTAL_DIR = "${joinedPortals}/share/xdg-desktop-portal/portals";
NIXOS_XDG_DESKTOP_PORTAL_CONFIG_DIR = mkIf (cfg.configPackages != [ ]) "${joinedPortalConfigs}/share/xdg-desktop-portal";
};
etc = lib.concatMapAttrs
(desktop: conf: lib.optionalAttrs (conf != { }) {
"xdg/xdg-desktop-portal/${lib.optionalString (desktop != "common") "${desktop}-"}portals.conf".text =
lib.generators.toINI { } { preferred = conf; };
}) cfg.config;
};
};
}

View File

@@ -64,6 +64,7 @@ in
xdg.portal = {
enable = mkDefault true;
extraPortals = [ finalPortalPackage ];
configPackages = mkDefault [ cfg.finalPackage ];
};
};

View File

@@ -149,6 +149,8 @@ in {
"sway/config".source = mkOptionDefault "${cfg.package}/etc/sway/config";
};
};
# https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1050913
xdg.portal.config.sway.default = mkDefault [ "wlr" "gtk" ];
# To make a Sway session available if a display manager like SDDM is enabled:
services.xserver.displayManager.sessionPackages = optionals (cfg.package != null) [ cfg.package ]; }
(import ./wayland-session.nix { inherit lib pkgs; })

View File

@@ -43,6 +43,8 @@ in
xdg.portal = {
enable = lib.mkDefault true;
wlr.enable = lib.mkDefault true;
# https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1050914
config.wayfire.default = lib.mkDefault [ "wlr" "gtk" ];
};
};
}

View File

@@ -18,6 +18,7 @@ in other cases, you will need to add something like the following to your
{file}`configuration.nix`:
```
xdg.portal.extraPortals = [ pkgs.xdg-desktop-portal-gtk ];
xdg.portal.config.common.default = "gtk";
```
Then, you will need to add a repository, for example,

View File

@@ -93,6 +93,9 @@ in
"gnome-initial-setup.service"
];
programs.dconf.profiles.gnome-initial-setup.databases = [
"${pkgs.gnome.gnome-initial-setup}/share/gnome-initial-setup/initial-setup-dconf-defaults"
];
};
}

View File

@@ -202,6 +202,7 @@ in {
xdg.portal.extraPortals = with pkgs; [
xdg-desktop-portal-gtk # provides a XDG Portals implementation.
];
xdg.portal.configPackages = mkDefault [ pkgs.budgie.budgie-desktop ];
services.geoclue2.enable = mkDefault true; # for BCC's Privacy > Location Services panel.
services.upower.enable = config.powerManagement.enable; # for Budgie's Status Indicator and BCC's Power panel.

View File

@@ -200,6 +200,9 @@ in
})
];
# https://salsa.debian.org/cinnamon-team/cinnamon/-/commit/f87c64f8d35ba406eb11ad442989a0716f6620cf#
xdg.portal.config.x-cinnamon.default = mkDefault [ "xapp" "gtk" ];
# Override GSettings schemas
environment.sessionVariables.NIX_GSETTINGS_OVERRIDES_DIR = "${nixos-gsettings-overrides}/share/gsettings-schemas/nixos-gsettings-overrides/glib-2.0/schemas";

View File

@@ -78,6 +78,9 @@ in
})
];
# https://github.com/NixOS/nixpkgs/pull/247766#issuecomment-1722839259
xdg.portal.config.deepin.default = mkDefault [ "gtk" ];
environment.sessionVariables = {
NIX_GSETTINGS_OVERRIDES_DIR = "${nixos-gsettings-overrides}/share/gsettings-schemas/nixos-gsettings-overrides/glib-2.0/schemas";
DDE_POLKIT_AGENT_PLUGINS_DIRS = [ "${pkgs.deepin.dpa-ext-gnomekeyring}/lib/polkit-1-dde/plugins" ];

View File

@@ -145,7 +145,7 @@ services.xserver.desktopManager.gnome = {
# Favorite apps in gnome-shell
[org.gnome.shell]
favorite-apps=['org.gnome.Photos.desktop', 'org.gnome.Nautilus.desktop']
favorite-apps=['org.gnome.Console.desktop', 'org.gnome.Nautilus.desktop']
'';
extraGSettingsOverridePackages = [

View File

@@ -19,7 +19,7 @@ let
defaultFavoriteAppsOverride = ''
[org.gnome.shell]
favorite-apps=[ 'org.gnome.Epiphany.desktop', 'org.gnome.Geary.desktop', 'org.gnome.Calendar.desktop', 'org.gnome.Music.desktop', 'org.gnome.Photos.desktop', 'org.gnome.Nautilus.desktop' ]
favorite-apps=[ 'org.gnome.Epiphany.desktop', 'org.gnome.Geary.desktop', 'org.gnome.Calendar.desktop', 'org.gnome.Music.desktop', 'org.gnome.Nautilus.desktop' ]
'';
nixos-background-light = pkgs.nixos-artwork.wallpapers.simple-blue;
@@ -353,6 +353,7 @@ in
buildPortalsInGnome = false;
})
];
xdg.portal.configPackages = mkDefault [ pkgs.gnome.gnome-session ];
networking.networkmanager.enable = mkDefault true;
@@ -462,15 +463,13 @@ in
++ utils.removePackagesByName optionalPackages config.environment.gnome.excludePackages;
})
# Adapt from https://gitlab.gnome.org/GNOME/gnome-build-meta/blob/gnome-3-38/elements/core/meta-gnome-core-utilities.bst
# Adapt from https://gitlab.gnome.org/GNOME/gnome-build-meta/-/blob/gnome-45/elements/core/meta-gnome-core-utilities.bst
(mkIf serviceCfg.core-utilities.enable {
environment.systemPackages =
with pkgs.gnome;
utils.removePackagesByName
([
baobab
cheese
eog
epiphany
pkgs.gnome-text-editor
gnome-calculator
@@ -483,12 +482,13 @@ in
gnome-logs
gnome-maps
gnome-music
pkgs.gnome-photos
gnome-system-monitor
gnome-weather
pkgs.loupe
nautilus
pkgs.gnome-connections
simple-scan
pkgs.snapshot
totem
yelp
] ++ lib.optionals config.services.flatpak.enable [

View File

@@ -70,6 +70,9 @@ in
services.xserver.libinput.enable = mkDefault true;
xdg.portal.lxqt.enable = true;
# https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1050804
xdg.portal.config.lxqt.default = mkDefault [ "lxqt" "gtk" ];
};
}

View File

@@ -77,6 +77,8 @@ in
security.pam.services.mate-screensaver.unixAuth = true;
xdg.portal.configPackages = mkDefault [ pkgs.mate.mate-desktop ];
environment.pathsToLink = [ "/share" ];
};

View File

@@ -229,9 +229,6 @@ in
xdg.portal.enable = true;
xdg.portal.extraPortals = [
# Some Pantheon apps enforce portal usage, we need this for e.g. notifications.
# Currently we have buildPortalsInGnome enabled, if you run into issues related
# to https://github.com/flatpak/xdg-desktop-portal/issues/656 please report to us.
pkgs.xdg-desktop-portal-gtk
] ++ (with pkgs.pantheon; [
elementary-files
@@ -239,6 +236,8 @@ in
xdg-desktop-portal-pantheon
]);
xdg.portal.configPackages = mkDefault [ pkgs.pantheon.elementary-default-settings ];
# Override GSettings schemas
environment.sessionVariables.NIX_GSETTINGS_OVERRIDES_DIR = "${nixos-gsettings-desktop-schemas}/share/gsettings-schemas/nixos-gsettings-overrides/glib-2.0/schemas";

View File

@@ -372,6 +372,7 @@ in
xdg.portal.enable = true;
xdg.portal.extraPortals = [ plasma5.xdg-desktop-portal-kde ];
xdg.portal.configPackages = mkDefault [ plasma5.xdg-desktop-portal-kde ];
# xdg-desktop-portal-kde expects PipeWire to be running.
# This does not, by default, replace PulseAudio.
services.pipewire.enable = mkDefault true;

View File

@@ -178,5 +178,7 @@ in
]) excludePackages;
security.pam.services.xfce4-screensaver.unixAuth = cfg.enableScreensaver;
xdg.portal.configPackages = mkDefault [ pkgs.xfce.xfce4-session ];
};
}

View File

@@ -332,6 +332,7 @@ in {
gitolite-fcgiwrap = handleTest ./gitolite-fcgiwrap.nix {};
glusterfs = handleTest ./glusterfs.nix {};
gnome = handleTest ./gnome.nix {};
gnome-extensions = handleTest ./gnome-extensions.nix {};
gnome-flashback = handleTest ./gnome-flashback.nix {};
gnome-xorg = handleTest ./gnome-xorg.nix {};
gnupg = handleTest ./gnupg.nix {};

View File

@@ -0,0 +1,151 @@
import ./make-test-python.nix (
{ pkgs, lib, ...}:
{
name = "gnome-extensions";
meta.maintainers = [ lib.maintainers.piegames ];
nodes.machine =
{ pkgs, ... }:
{
imports = [ ./common/user-account.nix ];
# Install all extensions
environment.systemPackages = lib.filter (e: e ? extensionUuid) (lib.attrValues pkgs.gnomeExtensions);
# Some extensions are broken, but that's kind of the point of a testing VM
nixpkgs.config.allowBroken = true;
# There are some aliases which throw exceptions; ignore them.
# Also prevent duplicate extensions under different names.
nixpkgs.config.allowAliases = false;
# Configure GDM
services.xserver.enable = true;
services.xserver.displayManager = {
gdm = {
enable = true;
debug = true;
wayland = true;
};
autoLogin = {
enable = true;
user = "alice";
};
};
# Configure Gnome
services.xserver.desktopManager.gnome.enable = true;
services.xserver.desktopManager.gnome.debug = true;
systemd.user.services = {
"org.gnome.Shell@wayland" = {
serviceConfig = {
ExecStart = [
# Clear the list before overriding it.
""
# Eval API is now internal so Shell needs to run in unsafe mode.
# TODO: improve test driver so that it supports openqa-like manipulation
# that would allow us to drop this mess.
"${pkgs.gnome.gnome-shell}/bin/gnome-shell --unsafe-mode"
];
};
};
};
};
testScript = { nodes, ... }: let
# Keep line widths somewhat manageable
user = nodes.machine.users.users.alice;
uid = toString user.uid;
bus = "DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/${uid}/bus";
# Run a command in the appropriate user environment
run = command: "su - ${user.name} -c '${bus} ${command}'";
# Call javascript in gnome shell, returns a tuple (success, output), where
# `success` is true if the dbus call was successful and output is what the
# javascript evaluates to.
eval = command: run "gdbus call --session -d org.gnome.Shell -o /org/gnome/Shell -m org.gnome.Shell.Eval ${command}";
# False when startup is done
startingUp = eval "Main.layoutManager._startingUp";
# Extensions to keep always enabled together
# Those are extensions that are usually always on for many users, and that we expect to work
# well together with most others without conflicts
alwaysOnExtensions = map (name: pkgs.gnomeExtensions.${name}.extensionUuid) [
"applications-menu"
"user-themes"
];
# Extensions to enable and disable individually
# Extensions like dash-to-dock and dash-to-panel cannot be enabled at the same time.
testExtensions = map (name: pkgs.gnomeExtensions.${name}.extensionUuid) [
"appindicator"
"dash-to-dock"
"dash-to-panel"
"ddterm"
"emoji-selector"
"gsconnect"
"system-monitor"
"desktop-icons-ng-ding"
"workspace-indicator"
"vitals"
];
in
''
with subtest("Login to GNOME with GDM"):
# wait for gdm to start
machine.wait_for_unit("display-manager.service")
# wait for the wayland server
machine.wait_for_file("/run/user/${uid}/wayland-0")
# wait for alice to be logged in
machine.wait_for_unit("default.target", "${user.name}")
# check that logging in has given the user ownership of devices
assert "alice" in machine.succeed("getfacl -p /dev/snd/timer")
with subtest("Wait for GNOME Shell"):
# correct output should be (true, 'false')
machine.wait_until_succeeds(
"${startingUp} | grep -q 'true,..false'"
)
# Close the Activities view so that Shell can correctly track the focused window.
machine.send_key("esc")
# # Disable extension version validation (only use for manual testing)
# machine.succeed(
# "${run "gsettings set org.gnome.shell disable-extension-version-validation true"}"
# )
# Assert that some extension is in a specific state
def checkState(target, extension):
state = machine.succeed(
f"${run "gnome-extensions info {extension}"} | grep '^ State: .*$'"
)
assert target in state, f"{state} instead of {target}"
def checkExtension(extension, disable):
with subtest(f"Enable extension '{extension}'"):
# Check that the extension is properly initialized; skip out of date ones
state = machine.succeed(
f"${run "gnome-extensions info {extension}"} | grep '^ State: .*$'"
)
if "OUT OF DATE" in state:
machine.log(f"Extension {extension} will be skipped because out of date")
return
assert "INITIALIZED" in state, f"{state} instead of INITIALIZED"
# Enable and optionally disable
machine.succeed(f"${run "gnome-extensions enable {extension}"}")
checkState("ENABLED", extension)
if disable:
machine.succeed(f"${run "gnome-extensions disable {extension}"}")
checkState("DISABLED", extension)
''
+ lib.concatLines (map (e: ''checkExtension("${e}", False)'') alwaysOnExtensions)
+ lib.concatLines (map (e: ''checkExtension("${e}", True)'') testExtensions)
;
}
)

View File

@@ -5,7 +5,7 @@ import ./make-test-python.nix ({ pkgs, lib, ...} : {
};
nodes.machine = { nodes, ... }: let
user = nodes.machine.config.users.users.alice;
user = nodes.machine.users.users.alice;
in
{ imports = [ ./common/user-account.nix ];
@@ -43,28 +43,28 @@ import ./make-test-python.nix ({ pkgs, lib, ...} : {
};
testScript = { nodes, ... }: let
user = nodes.machine.config.users.users.alice;
user = nodes.machine.users.users.alice;
uid = toString user.uid;
bus = "DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/${uid}/bus";
xauthority = "/run/user/${uid}/gdm/Xauthority";
display = "DISPLAY=:0.0";
env = "${bus} XAUTHORITY=${xauthority} ${display}";
gdbus = "${env} gdbus";
su = command: "su - ${user.name} -c '${env} ${command}'";
# Run a command in the appropriate user environment
run = command: "su - ${user.name} -c '${bus} ${command}'";
# Call javascript in gnome shell, returns a tuple (success, output), where
# `success` is true if the dbus call was successful and output is what the
# javascript evaluates to.
eval = "call --session -d org.gnome.Shell -o /org/gnome/Shell -m org.gnome.Shell.Eval";
eval = command: run "gdbus call --session -d org.gnome.Shell -o /org/gnome/Shell -m org.gnome.Shell.Eval ${command}";
# False when startup is done
startingUp = su "${gdbus} ${eval} Main.layoutManager._startingUp";
startingUp = eval "Main.layoutManager._startingUp";
# Start Console
launchConsole = su "${bus} gapplication launch org.gnome.Console";
launchConsole = run "gapplication launch org.gnome.Console";
# Hopefully Console's wm class
wmClass = su "${gdbus} ${eval} global.display.focus_window.wm_class";
wmClass = eval "global.display.focus_window.wm_class";
in ''
with subtest("Login to GNOME Xorg with GDM"):
machine.wait_for_x()

View File

@@ -40,25 +40,25 @@ import ./make-test-python.nix ({ pkgs, lib, ...} : {
testScript = { nodes, ... }: let
# Keep line widths somewhat manageable
user = nodes.machine.config.users.users.alice;
user = nodes.machine.users.users.alice;
uid = toString user.uid;
bus = "DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/${uid}/bus";
gdbus = "${bus} gdbus";
su = command: "su - ${user.name} -c '${command}'";
# Run a command in the appropriate user environment
run = command: "su - ${user.name} -c '${bus} ${command}'";
# Call javascript in gnome shell, returns a tuple (success, output), where
# `success` is true if the dbus call was successful and output is what the
# javascript evaluates to.
eval = "call --session -d org.gnome.Shell -o /org/gnome/Shell -m org.gnome.Shell.Eval";
eval = command: run "gdbus call --session -d org.gnome.Shell -o /org/gnome/Shell -m org.gnome.Shell.Eval ${command}";
# False when startup is done
startingUp = su "${gdbus} ${eval} Main.layoutManager._startingUp";
startingUp = eval "Main.layoutManager._startingUp";
# Start Console
launchConsole = su "${bus} gapplication launch org.gnome.Console";
launchConsole = run "gapplication launch org.gnome.Console";
# Hopefully Console's wm class
wmClass = su "${gdbus} ${eval} global.display.focus_window.wm_class";
wmClass = eval "global.display.focus_window.wm_class";
in ''
with subtest("Login to GNOME with GDM"):
# wait for gdm to start

View File

@@ -19,8 +19,9 @@
, libadwaita
, libdex
, libpanel
, libpeas
, libpeas2
, libportal-gtk4
, libsysprof-capture
, libxml2
, meson
, ninja
@@ -41,13 +42,13 @@
stdenv.mkDerivation rec {
pname = "gnome-builder";
version = "44.2";
version = "45.0";
outputs = [ "out" "devdoc" ];
src = fetchurl {
url = "mirror://gnome/sources/${pname}/${lib.versions.major version}/${pname}-${version}.tar.xz";
sha256 = "z6aJx40/AiMcp0cVV99MZIKASio08nHDXRqWLX8XKbA=";
sha256 = "JC2gJZMpPUVuokEIpFk0cwoeMW2NxbGNnfDoZNt7pZY=";
};
patches = [
@@ -82,7 +83,7 @@ stdenv.mkDerivation rec {
editorconfig-core-c
flatpak
libgit2-glib
libpeas
libpeas2
libportal-gtk4
vte-gtk4
enchant
@@ -94,12 +95,12 @@ stdenv.mkDerivation rec {
libadwaita
libdex
libpanel
libsysprof-capture
libxml2
ostree
d-spy
pcre2
python3
sysprof
template-glib
vala
webkitgtk_6_0
@@ -142,6 +143,8 @@ stdenv.mkDerivation rec {
buildPythonPath "$out $pythonPath"
gappsWrapperArgs+=(
--prefix PYTHONPATH : "$program_PYTHONPATH"
# For sysprof-agent
--prefix PATH : "${sysprof}/bin"
)
# Ensure that all plugins get their interpreter paths fixed up.

View File

@@ -1,22 +1,46 @@
{ lib, stdenv, fetchurl, fetchpatch, wrapGAppsHook4
, cargo, desktop-file-utils, meson, ninja, pkg-config, rustc
, gdk-pixbuf, glib, gtk4, gtksourceview5, libadwaita, darwin
{ lib
, stdenv
, fetchurl
, fetchpatch
, wrapGAppsHook4
, cargo
, desktop-file-utils
, meson
, ninja
, pkg-config
, rustc
, gdk-pixbuf
, glib
, gtk4
, gtksourceview5
, libadwaita
, darwin
}:
stdenv.mkDerivation rec {
pname = "icon-library";
version = "0.0.16";
version = "0.0.17";
src = fetchurl {
url = "https://gitlab.gnome.org/World/design/icon-library/uploads/5dd3d97acfdbaf69c7dc6b2f7bbf4cae/icon-library-${version}.tar.xz";
hash = "sha256-EO67foD/uRoeF+zmJyEia5Nr3eW+Se9bVjDxipMw75E=";
url = "https://gitlab.gnome.org/World/design/icon-library/uploads/8c4cad88809cd4ddc0eeae6f5170c001/icon-library-${version}.tar.xz";
hash = "sha256-Gspx3fJl+ZoUN3heGWaeMuxUsjWCrIdg4pJj7DeMTSY=";
};
nativeBuildInputs = [
cargo desktop-file-utils meson ninja pkg-config rustc wrapGAppsHook4
cargo
desktop-file-utils
meson
ninja
pkg-config
rustc
wrapGAppsHook4
];
buildInputs = [
gdk-pixbuf glib gtk4 gtksourceview5 libadwaita
gdk-pixbuf
glib
gtk4
gtksourceview5
libadwaita
] ++ lib.optionals stdenv.isDarwin [
darwin.apple_sdk.frameworks.Foundation
];

View File

@@ -40,11 +40,11 @@
stdenv.mkDerivation rec {
pname = "shotwell";
version = "0.32.2";
version = "0.32.3";
src = fetchurl {
url = "mirror://gnome/sources/${pname}/${lib.versions.majorMinor version}/${pname}-${version}.tar.xz";
sha256 = "sha256-pd5T6HMhbfj1mWyWgnvtlj1sY1TgReF5bf0ybGGIwmM=";
sha256 = "sha256-4AD+5bPzYseRFPDs/44is0yaKGW1nkGi2j5NxdLKLDw=";
};
nativeBuildInputs = [

View File

@@ -0,0 +1,78 @@
{ stdenv
, lib
, fetchurl
, fetchpatch
, cargo
, desktop-file-utils
, meson
, ninja
, pkg-config
, rustc
, wrapGAppsHook4
, glib
, gst_all_1
, gtk4
, libadwaita
, pipewire
, gnome
}:
stdenv.mkDerivation rec {
pname = "snapshot";
version = "45.0";
src = fetchurl {
url = "mirror://gnome/sources/snapshot/${lib.versions.major version}/snapshot-${version}.tar.xz";
hash = "sha256-7keO4JBzGgsIJLZrsXRr2ADcv+h6yDWEmUSa85z822c=";
};
patches = [
# Fix portal requests
# https://gitlab.gnome.org/GNOME/snapshot/-/merge_requests/168
(fetchpatch {
url = "https://gitlab.gnome.org/GNOME/snapshot/-/commit/6aec0f56d6bb994731c1309ac6e2cb822b82067e.patch";
hash = "sha256-6tnOhhTQ3Rfl3nCw/rliLKkvZknvZKCQyeMKaTxYmok=";
})
];
nativeBuildInputs = [
cargo
desktop-file-utils
meson
ninja
pkg-config
rustc
wrapGAppsHook4
];
buildInputs = [
glib
gst_all_1.gst-plugins-bad
gst_all_1.gst-plugins-base
gst_all_1.gst-plugins-good
gst_all_1.gstreamer
gtk4
libadwaita
pipewire # for device provider
];
preFixup = ''
gappsWrapperArgs+=(
# vp8enc preset
--prefix GST_PRESET_PATH : "${gst_all_1.gst-plugins-good}/share/gstreamer-1.0/presets"
)
'';
passthru.updateScript = gnome.updateScript {
packageName = "snapshot";
};
meta = with lib; {
homepage = "https://gitlab.gnome.org/GNOME/snapshot";
description = "Take pictures and videos on your computer, tablet, or phone";
maintainers = teams.gnome.members;
license = licenses.gpl3Plus;
platforms = platforms.unix;
mainProgram = "snapshot";
};
}

View File

@@ -0,0 +1,55 @@
{ stdenv
, lib
, fetchurl
, meson
, ninja
, pkg-config
, wrapGAppsHook4
, glib
, gtk4
, libadwaita
, libxkbcommon
, wayland
, gnome
}:
stdenv.mkDerivation (finalAttrs: {
pname = "tecla";
version = "45.0";
src = fetchurl {
url = "mirror://gnome/sources/tecla/${lib.versions.major finalAttrs.version}/tecla-${finalAttrs.version}.tar.xz";
hash = "sha256-XAK7QBmxz/tWY9phB1A+/4U4Nqh4PdRwXdBKSfetwls=";
};
nativeBuildInputs = [
meson
ninja
pkg-config
wrapGAppsHook4
];
buildInputs = [
glib
gtk4
libadwaita
libxkbcommon
wayland
];
passthru = {
updateScript = gnome.updateScript {
attrPath = "gnome-tecla";
packageName = "tecla";
};
};
meta = with lib; {
description = "Keyboard layout viewer";
homepage = "https://gitlab.gnome.org/GNOME/tecla";
license = licenses.gpl2Plus;
maintainers = teams.gnome.members;
platforms = platforms.unix;
mainProgram = "tecla";
};
})

View File

@@ -1,4 +1,5 @@
{ lib, stdenv
{ stdenv
, lib
, fetchurl
, meson
, ninja
@@ -7,23 +8,23 @@
, gettext
, libxml2
, desktop-file-utils
, wrapGAppsHook
, wrapGAppsHook4
, glib
, gtk3
, gtk4
, libadwaita
, libgee
, libgtop
, libdazzle
, gnome
, tracker
, libhandy
}:
stdenv.mkDerivation rec {
pname = "gnome-usage";
version = "3.38.1";
version = "45.0";
src = fetchurl {
url = "mirror://gnome/sources/${pname}/${lib.versions.majorMinor version}/${pname}-${version}.tar.xz";
sha256 = "mMdm4X4VZXEfx0uaJP0u0NX618y0VRlhLdTiFHaO05M=";
url = "mirror://gnome/sources/${pname}/${lib.versions.major version}/${pname}-${version}.tar.xz";
sha256 = "5nfE/iwBSXqE/x4RV+kTHp+ZmfGnjTUjSvHXfYJ18pQ=";
};
nativeBuildInputs = [
@@ -34,17 +35,16 @@ stdenv.mkDerivation rec {
ninja
pkg-config
vala
wrapGAppsHook
wrapGAppsHook4
];
buildInputs = [
glib
gnome.adwaita-icon-theme
gtk3
libdazzle
gtk4
libadwaita
libgee
libgtop
tracker
libhandy
];
postPatch = ''
@@ -60,7 +60,8 @@ stdenv.mkDerivation rec {
meta = with lib; {
description = "A nice way to view information about use of system resources, like memory and disk space";
license = licenses.gpl3;
homepage = "https://gitlab.gnome.org/GNOME/gnome-usage";
license = licenses.gpl3Plus;
platforms = platforms.linux;
maintainers = teams.gnome.members;
};

View File

@@ -34,13 +34,13 @@
buildPythonApplication rec {
pname = "orca";
version = "44.1";
version = "45.1";
format = "other";
src = fetchurl {
url = "mirror://gnome/sources/${pname}/${lib.versions.major version}/${pname}-${version}.tar.xz";
sha256 = "9e1lUdcviXshJI1DMIWnuBesy7ApaoTD6FHZH7Lu5N4=";
sha256 = "v8wGv0vEe70CwVaNHkZL8Wox5iv3A7SaoTsI2zihqMo=";
};
patches = [

View File

@@ -1,8 +1,8 @@
diff --git a/src/orca/debug.py b/src/orca/debug.py
index e79482ed4..cbf3a24ec 100644
index b7e11ea60..9ab996765 100644
--- a/src/orca/debug.py
+++ b/src/orca/debug.py
@@ -502,7 +502,7 @@ def traceit(frame, event, arg):
@@ -447,7 +447,7 @@ def traceit(frame, event, arg):
return traceit
def getOpenFDCount(pid):
@@ -11,29 +11,20 @@ index e79482ed4..cbf3a24ec 100644
procs = procs.decode('UTF-8').split('\n')
files = list(filter(lambda s: s and s[0] == 'f' and s[1:].isdigit(), procs))
@@ -510,7 +510,7 @@ def getOpenFDCount(pid):
def getCmdline(pid):
try:
- openFile = os.popen('cat /proc/%s/cmdline' % pid)
+ openFile = os.popen('@cat@ /proc/%s/cmdline' % pid)
cmdline = openFile.read()
openFile.close()
except:
@@ -520,7 +520,7 @@ def getCmdline(pid):
@@ -465,7 +465,7 @@ def getCmdline(pid):
return cmdline
def pidOf(procName):
- openFile = subprocess.Popen('pgrep %s' % procName,
+ openFile = subprocess.Popen('@pgrep@ %s' % procName,
- openFile = subprocess.Popen(f'pgrep {procName}',
+ openFile = subprocess.Popen(f'@pgrep@ {procName}',
shell=True,
stdout=subprocess.PIPE).stdout
pids = openFile.read()
diff --git a/src/orca/orca.py b/src/orca/orca.py
index 2fe0a0bf2..087526556 100644
index d4e89f918..bb3e6cc1d 100644
--- a/src/orca/orca.py
+++ b/src/orca/orca.py
@@ -285,7 +285,7 @@ def updateKeyMap(keyboardEvent):
@@ -312,7 +312,7 @@ def updateKeyMap(keyboardEvent):
def _setXmodmap(xkbmap):
"""Set the keyboard map using xkbcomp."""
@@ -42,7 +33,7 @@ index 2fe0a0bf2..087526556 100644
stdin=subprocess.PIPE, stdout=None, stderr=None)
p.communicate(xkbmap)
@@ -363,7 +363,7 @@ def _storeXmodmap(keyList):
@@ -389,7 +389,7 @@ def _storeXmodmap(keyList):
"""
global _originalXmodmap
@@ -51,7 +42,7 @@ index 2fe0a0bf2..087526556 100644
def _restoreXmodmap(keyList=[]):
"""Restore the original xmodmap values for the keys in keyList.
@@ -375,7 +375,7 @@ def _restoreXmodmap(keyList=[]):
@@ -404,7 +404,7 @@ def _restoreXmodmap(keyList=[]):
global _capsLockCleared
_capsLockCleared = False
@@ -61,19 +52,19 @@ index 2fe0a0bf2..087526556 100644
p.communicate(_originalXmodmap)
diff --git a/src/orca/orca_bin.py.in b/src/orca/orca_bin.py.in
index 8c9d40153..eec0d5437 100644
index 9d64af948..ca9c9e083 100644
--- a/src/orca/orca_bin.py.in
+++ b/src/orca/orca_bin.py.in
@@ -62,7 +62,7 @@ class ListApps(argparse.Action):
@@ -65,7 +65,7 @@ class ListApps(argparse.Action):
name = "[DEAD]"
try:
- cmdline = subprocess.getoutput('cat /proc/%s/cmdline' % pid)
+ cmdline = subprocess.getoutput('@cat@ /proc/%s/cmdline' % pid)
except:
except Exception:
cmdline = '(exception encountered)'
else:
@@ -197,7 +197,7 @@ def inGraphicalDesktop():
@@ -198,7 +198,7 @@ def inGraphicalDesktop():
def otherOrcas():
"""Returns the pid of any other instances of Orca owned by this user."""
@@ -82,3 +73,16 @@ index 8c9d40153..eec0d5437 100644
shell=True,
stdout=subprocess.PIPE).stdout
pids = openFile.read()
diff --git a/src/orca/script_utilities.py b/src/orca/script_utilities.py
index ed8b155e4..0436cca42 100644
--- a/src/orca/script_utilities.py
+++ b/src/orca/script_utilities.py
@@ -144,7 +144,7 @@ class Utilities:
return ""
try:
- cmdline = subprocess.getoutput(f"cat /proc/{pid}/cmdline")
+ cmdline = subprocess.getoutput(f"@cat@ /proc/{pid}/cmdline")
except Exception:
return ""

View File

@@ -254,6 +254,20 @@ let
hash = "sha256-Vryjg8kyn3cxWg3PmSwYRG6zrHOqYWBMSdEMGiaPg6M=";
revert = true;
})
] ++ lib.optionals (!chromiumVersionAtLeast "119.0.6024.0") [
# Fix build with at-spi2-core ≥ 2.49
# This version is still needed for electron.
(githubPatch {
commit = "fc09363b2278893790d131c72a4ed96ec9837624";
hash = "sha256-l60Npgs/+0ozzuKWjwiHUUV6z59ObUjAPTfXN7eXpzw=";
})
] ++ lib.optionals (!chromiumVersionAtLeast "121.0.6104.0") [
# Fix build with at-spi2-core ≥ 2.49
# https://chromium-review.googlesource.com/c/chromium/src/+/5001687
(githubPatch {
commit = "b9bef8e9555645fc91fab705bec697214a39dbc1";
hash = "sha256-CJ1v/qc8+nwaHQR9xsx08EEcuVRbyBfCZCm/G7hRY+4=";
})
];
postPatch = ''

View File

@@ -5,6 +5,7 @@
, ninja
, pkg-config
, libhandy
, libsecret
, modemmanager
, gtk3
, gom
@@ -63,6 +64,7 @@ stdenv.mkDerivation rec {
buildInputs = [
modemmanager
libhandy
libsecret
evolution-data-server
folks
gom

View File

@@ -12,6 +12,7 @@
, evolution-data-server
, feedbackd
, glibmm
, libsecret
, gnome-desktop
, gspell
, gtk3
@@ -59,6 +60,7 @@ stdenv.mkDerivation rec {
evolution-data-server
feedbackd
glibmm
libsecret
gnome-desktop
gspell
gtk3

View File

@@ -1,8 +1,6 @@
{ lib
, fetchFromGitHub
, fetchurl
, fetchpatch
, fetchpatch2
, callPackage
, pkg-config
, cmake
@@ -28,7 +26,6 @@
, libopus
, alsa-lib
, libpulseaudio
, perlPackages
, pipewire
, range-v3
, tl-expected
@@ -57,7 +54,6 @@
, libpsl
, brotli
, microsoft-gsl
, mm-common
, rlottie
, stdenv
, darwin
@@ -80,30 +76,6 @@ let
cxxStandard = "20";
};
};
glibmm = glibmm_2_68.overrideAttrs (attrs: {
version = "2.78.0";
src = fetchurl {
url = "mirror://gnome/sources/glibmm/2.78/glibmm-2.78.0.tar.xz";
hash = "sha256-XS6HJWSZbwKgbYu6w2d+fDlK+LAN0VJq69R6+EKj71A=";
};
patches = [
# Revert "Glib, Gio: Add new API from glib 2.77.0"
(fetchpatch2 {
url = "https://github.com/GNOME/glibmm/commit/5b9032c0298cbb49c3ed90d5f71f2636751fa638.patch";
revert = true;
hash = "sha256-UzrzIOnXh9pxuTDQsp6mnunDNNtc86hE9tCe1NgKsyo=";
})
];
mesonFlags = [
"-Dmaintainer-mode=true"
"-Dbuild-documentation=false"
];
nativeBuildInputs = attrs.nativeBuildInputs ++ [
mm-common
perlPackages.perl
perlPackages.XMLParser
];
});
mainProgram = if stdenv.isLinux then "telegram-desktop" else "Telegram";
in
stdenv.mkDerivation rec {
@@ -185,7 +157,7 @@ stdenv.mkDerivation rec {
libpulseaudio
pipewire
hunspell
glibmm
glibmm_2_68
webkitgtk_6_0
jemalloc
# Transitive dependencies:

View File

@@ -22,11 +22,11 @@
stdenv.mkDerivation rec {
pname = "evolution-ews";
version = "3.48.2";
version = "3.50.1";
src = fetchurl {
url = "mirror://gnome/sources/${pname}/${lib.versions.majorMinor version}/${pname}-${version}.tar.xz";
sha256 = "UE2YAPW6vMXBcO9QxUZOTrwSAOQZAs2mn+j6v/L7cMA=";
sha256 = "577S3Z/AhFf3W6ufiWJV8w/TTHu8nIqV74fi4pEqCa0=";
};
patches = [

View File

@@ -1,8 +1,33 @@
diff --git a/src/EWS/calendar/e-cal-backend-ews-utils.c b/src/EWS/calendar/e-cal-backend-ews-utils.c
index 653a8fb..ad80283 100644
--- a/src/EWS/calendar/e-cal-backend-ews-utils.c
+++ b/src/EWS/calendar/e-cal-backend-ews-utils.c
@@ -2406,7 +2406,19 @@ e_cal_backend_ews_get_configured_evolution_icaltimezone (void)
if (schema) {
GSettings *settings;
- settings = g_settings_new ("org.gnome.evolution.calendar");
+ {
+ g_autoptr(GSettingsSchemaSource) schema_source;
+ g_autoptr(GSettingsSchema) schema;
+ schema_source = g_settings_schema_source_new_from_directory("@evo@",
+ g_settings_schema_source_get_default(),
+ TRUE,
+ NULL);
+ schema = g_settings_schema_source_lookup(schema_source,
+ "org.gnome.evolution.calendar",
+ FALSE);
+ settings = g_settings_new_full(schema, NULL,
+ NULL);
+ }
if (g_settings_get_boolean (settings, "use-system-timezone"))
location = e_cal_util_get_system_timezone_location ();
diff --git a/src/EWS/camel/camel-ews-utils.c b/src/EWS/camel/camel-ews-utils.c
index 0707f72..1e71954 100644
index dbd9adb..a2372a4 100644
--- a/src/EWS/camel/camel-ews-utils.c
+++ b/src/EWS/camel/camel-ews-utils.c
@@ -1552,7 +1552,18 @@ ews_utils_save_category_changes (GHashTable *old_categories, /* gchar *guid ~> C
@@ -1553,7 +1553,18 @@ ews_utils_save_category_changes (GHashTable *old_categories, /* gchar *guid ~> C
evo_labels = g_ptr_array_new_full (5, g_free);
@@ -47,7 +72,7 @@ index 6deda60..9b44cc7 100644
if (location) {
zone = i_cal_timezone_get_builtin_timezone (location);
diff --git a/src/Microsoft365/camel/camel-m365-store.c b/src/Microsoft365/camel/camel-m365-store.c
index ff1b8e3..4f876c0 100644
index 3db3564..a233d4d 100644
--- a/src/Microsoft365/camel/camel-m365-store.c
+++ b/src/Microsoft365/camel/camel-m365-store.c
@@ -309,7 +309,18 @@ m365_store_save_category_changes (GHashTable *old_categories, /* gchar *id ~> Ca

View File

@@ -44,11 +44,11 @@
stdenv.mkDerivation rec {
pname = "evolution";
version = "3.48.4";
version = "3.50.1";
src = fetchurl {
url = "mirror://gnome/sources/evolution/${lib.versions.majorMinor version}/${pname}-${version}.tar.xz";
sha256 = "oC+Z66BQp3HyxH1D/FLgCyJg/IbQYyD79S68fozni7c=";
sha256 = "5CA240m4Mrkbprxg+Zxkte0AjrDrM7wipU8p9I7r1Zg=";
};
nativeBuildInputs = [

View File

@@ -1,5 +1,5 @@
{ stdenv, lib, fetchFromGitHub, meson, gettext, glib, gjs, ninja, python3, gtk3
, webkitgtk, gsettings-desktop-schemas, wrapGAppsHook, desktop-file-utils
, webkitgtk_4_1, gsettings-desktop-schemas, wrapGAppsHook, desktop-file-utils
, gobject-introspection, glib-networking }:
stdenv.mkDerivation rec {
@@ -17,6 +17,9 @@ stdenv.mkDerivation rec {
postPatch = ''
patchShebangs build-aux/meson/postinstall.py
substituteInPlace src/main.js \
--replace "'WebKit2': '4.0'" "'WebKit2': '4.1'"
'';
postFixup = ''
@@ -30,7 +33,7 @@ stdenv.mkDerivation rec {
glib-networking
gjs
gtk3
webkitgtk
webkitgtk_4_1
desktop-file-utils
gsettings-desktop-schemas
];

View File

@@ -3,8 +3,7 @@
, fetchurl
, desktop-file-utils
, gettext
, gspell
, gtkmm3
, gtkmm4
, itstool
, libsecret
, libuuid
@@ -13,22 +12,21 @@
, meson
, ninja
, pkg-config
, wrapGAppsHook
, wrapGAppsHook4
, gnome
}:
stdenv.mkDerivation rec {
pname = "gnote";
version = "44.1";
version = "45.0";
src = fetchurl {
url = "mirror://gnome/sources/${pname}/${lib.versions.major version}/${pname}-${version}.tar.xz";
hash = "sha256-aWelUGgiMguuGcHrC8dFFmRPnp61TtwslCU+rhDHYE0=";
hash = "sha256-XRb9h9FA7HL7s1ewVp2u+4Io4HgUcBVG5r3mVyGTwko=";
};
buildInputs = [
gspell
gtkmm3
gtkmm4
libsecret
libuuid
libxml2
@@ -42,7 +40,7 @@ stdenv.mkDerivation rec {
meson
ninja
pkg-config
wrapGAppsHook
wrapGAppsHook4
];
passthru = {

View File

@@ -7,11 +7,11 @@ let
inherit (python3Packages) python pygobject3;
in stdenv.mkDerivation rec {
pname = "gnumeric";
version = "1.12.55";
version = "1.12.56";
src = fetchurl {
url = "mirror://gnome/sources/${pname}/${lib.versions.majorMinor version}/${pname}-${version}.tar.xz";
sha256 = "xpoJzRkLYirMpHa7w9TAPWjXzPWbumG/A2zmCIX5+2U=";
sha256 = "UaOPNaxbD3He+oueIL8uCFY3mPHLMzeamhdyb7Hj4bI=";
};
configureFlags = [ "--disable-component" ];

View File

@@ -18,11 +18,11 @@
stdenv.mkDerivation rec {
pname = "gnome-console";
version = "44.4";
version = "45.0";
src = fetchurl {
url = "mirror://gnome/sources/gnome-console/${lib.versions.major version}/${pname}-${version}.tar.xz";
sha256 = "uR9E6abAQz6W2ZfzlVhSBtq6xiRzmTo8B1Uv5YiOWo0=";
sha256 = "50YhKNLfIySh10gGLEBCnNBQSvCeQHBnsz86nQxZyOE=";
};
nativeBuildInputs = [

View File

@@ -6,42 +6,61 @@
}:
/*
Can be used as part of an update script to automatically create a patch
hardcoding the path of all GSettings schemas in C code.
For example:
passthru = {
hardcodeGsettingsPatch = makeHardcodeGsettingsPatch {
inherit src;
schemaIdToVariableMapping = {
...
};
};
Creates a patch that replaces every instantiation of GSettings in a C project
with a code that loads a GSettings schema from a hardcoded path.
updateScript =
let
updateSource = ...;
updatePatch = _experimental-update-script-combinators.copyAttrOutputToFile "evolution-ews.hardcodeGsettingsPatch" ./hardcode-gsettings.patch;
in
_experimental-update-script-combinators.sequence [
updateSource
updatePatch
];
};
}
takes as input a mapping from schema path to variable name.
For example `{ "org.gnome.evolution" = "EVOLUTION_SCHEMA_PATH"; }`
hardcodes looking for `org.gnome.evolution` into `@EVOLUTION_SCHEMA_PATH@`.
All schemas must be listed.
This is useful so that libraries can find schemas even though Nix lacks
a standard location like /usr/share, where GSettings system could look for schemas.
The derivation is is somewhat dependency-heavy so it is best used as part of an update script.
For each schema id referenced in the source code (e.g. org.gnome.evolution),
a variable name such as `EVOLUTION` must be provided.
It will end up in the generated patch as `@EVOLUTION@` placeholder, which should be replaced at build time
with a path to the directory containing a `gschemas.compiled` file that includes the schema.
Arguments:
- `src`: source to generate the patch for.
- `schemaIdToVariableMapping`: attrset assigning schema ids to variable names.
All used schemas must be listed.
For example, `{ "org.gnome.evolution" = "EVOLUTION_SCHEMA_PATH"; }`
hardcodes looking for `org.gnome.evolution` into `@EVOLUTION_SCHEMA_PATH@`.
- `patches`: A list of patches to apply before generating the patch.
Example:
passthru = {
hardcodeGsettingsPatch = makeHardcodeGsettingsPatch {
inherit (finalAttrs) src;
schemaIdToVariableMapping = {
...
};
};
updateScript =
let
updateSource = ...;
updatePatch = _experimental-update-script-combinators.copyAttrOutputToFile "evolution-ews.hardcodeGsettingsPatch" ./hardcode-gsettings.patch;
in
_experimental-update-script-combinators.sequence [
updateSource
updatePatch
];
};
}
*/
{
src,
patches ? [ ],
schemaIdToVariableMapping,
}:
runCommand
"hardcode-gsettings.patch"
{
inherit src;
inherit src patches;
nativeBuildInputs = [
git
coccinelle
@@ -51,6 +70,7 @@ runCommand
''
unpackPhase
cd "''${sourceRoot:-.}"
patchPhase
set -x
cp ${builtins.toFile "glib-schema-to-var.json" (builtins.toJSON schemaIdToVariableMapping)} ./glib-schema-to-var.json
git init

View File

@@ -1,11 +1,14 @@
/**
* Since Nix does not have a standard location like /usr/share,
* where GSettings system could look for schemas, we need to point the software to a correct location somehow.
* Since Nix does not have a standard location like /usr/share where GSettings system
* could look for schemas, we need to point the software to a correct location somehow.
* For executables, we handle this using wrappers but this is not an option for libraries like e-d-s.
* Instead, we hardcode the schema path when creating the settings.
* A schema path (ie org.gnome.evolution) can be replaced by @EVOLUTION_SCHEMA_ID@
* which is then replaced at build time by substituteAll.
* The mapping is provided in a json file ./glib-schema-to-var.json
* Instead, we patch the source code to look for the schema in a schema source
* through a hardcoded path to the schema.
*
* For each schema id referenced in the source code (e.g. org.gnome.evolution),
* a variable name such as `EVOLUTION` must be provided in the ./glib-schema-to-var.json JSON file.
* It will end up in the resulting patch as `@EVOLUTION@` placeholder, which should be replaced at build time
* with a path to the directory containing a `gschemas.compiled` file that includes the schema.
*/
@initialize:python@

View File

@@ -0,0 +1,13 @@
diff --git a/vendor/glycin/src/dbus.rs b/vendor/glycin/src/dbus.rs
index aa5a876..4f37420 100644
--- a/vendor/glycin/src/dbus.rs
+++ b/vendor/glycin/src/dbus.rs
@@ -43,7 +43,7 @@ impl<'a> DecoderProcess<'a> {
let (bin, args, final_arg) = match sandbox_mechanism {
SandboxMechanism::Bwrap => (
- "bwrap".into(),
+ "@bwrap@".into(),
vec![
"--unshare-all",
"--die-with-parent",

View File

@@ -0,0 +1,70 @@
{ stdenv
, lib
, fetchurl
, substituteAll
, bubblewrap
, cargo
, git
, meson
, ninja
, pkg-config
, rustc
, gtk4
, cairo
, libheif
, libxml2
, gnome
}:
stdenv.mkDerivation (finalAttrs: {
pname = "glycin-loaders";
version = "0.1.2";
src = fetchurl {
url = "mirror://gnome/sources/glycin-loaders/${lib.versions.majorMinor finalAttrs.version}/glycin-loaders-${finalAttrs.version}.tar.xz";
hash = "sha256-x2wBklq9BwF0WJzLkWpEpXOrZbHp1JPxVOQnVkMebdc=";
};
patches = [
# Fix paths in glycin library.
# Not actually needed for this package since we are only building loaders
# and this patch is relevant just to apps that use the loaders
# but apply it here to ensure the patch continues to apply.
finalAttrs.passthru.glycinPathsPatch
];
nativeBuildInputs = [
cargo
git
meson
ninja
pkg-config
rustc
];
buildInputs = [
gtk4 # for GdkTexture
cairo
libheif
libxml2 # for librsvg crate
];
passthru = {
updateScript = gnome.updateScript {
packageName = "glycin-loaders";
};
glycinPathsPatch = substituteAll {
src = ./fix-glycin-paths.patch;
bwrap = "${bubblewrap}/bin/bwrap";
};
};
meta = with lib; {
description = "Glycin loaders for several formats";
homepage = "https://gitlab.gnome.org/sophie-h/glycin";
maintainers = teams.gnome.members;
license = with licenses; [ mpl20 /* or */ lgpl21Plus ];
platforms = platforms.linux;
};
})

View File

@@ -0,0 +1,85 @@
{ stdenv
, lib
, fetchurl
, cargo
, desktop-file-utils
, itstool
, meson
, ninja
, pkg-config
, jq
, moreutils
, rustc
, wrapGAppsHook4
, gtk4
, lcms2
, libadwaita
, libgweather
, glycin-loaders
, gnome
}:
stdenv.mkDerivation rec {
pname = "loupe";
version = "45.1";
src = fetchurl {
url = "mirror://gnome/sources/loupe/${lib.versions.major version}/loupe-${version}.tar.xz";
hash = "sha256-nX+ieKEASHKUQZoopvCo1ZGL2XnRy0tGqF6Pfe0U0+w=";
};
patches = [
# Fix paths in glycin library
glycin-loaders.passthru.glycinPathsPatch
];
nativeBuildInputs = [
cargo
desktop-file-utils
itstool
meson
ninja
pkg-config
jq
moreutils
rustc
wrapGAppsHook4
];
buildInputs = [
gtk4
lcms2
libadwaita
libgweather
];
postPatch = ''
# Replace hash of file we patch in vendored glycin.
jq \
--arg hash "$(sha256sum vendor/glycin/src/dbus.rs | cut -d' ' -f 1)" \
'.files."src/dbus.rs" = $hash' \
vendor/glycin/.cargo-checksum.json \
| sponge vendor/glycin/.cargo-checksum.json
'';
preFixup = ''
# Needed for the glycin crate to find loaders.
# https://gitlab.gnome.org/sophie-h/glycin/-/blob/0.1.beta.2/glycin/src/config.rs#L44
gappsWrapperArgs+=(
--prefix XDG_DATA_DIRS : "${glycin-loaders}/share"
)
'';
passthru.updateScript = gnome.updateScript {
packageName = "loupe";
};
meta = with lib; {
homepage = "https://gitlab.gnome.org/GNOME/loupe";
description = "A simple image viewer application written with GTK4 and Rust";
license = licenses.gpl3Plus;
maintainers = with maintainers; [ jk ] ++ teams.gnome.members;
platforms = platforms.unix;
mainProgram = "loupe";
};
}

View File

@@ -9,11 +9,11 @@
stdenv.mkDerivation rec {
pname = "gnome-user-docs";
version = "44.3";
version = "45.1";
src = fetchurl {
url = "mirror://gnome/sources/gnome-user-docs/${lib.versions.major version}/${pname}-${version}.tar.xz";
sha256 = "lOBECCNjQ4vNv6hUlImrarKWoJHotlL1chM/102xaSw=";
sha256 = "L5DGgntfFgXfLt++orNChwMAqamBvDktyWIU2WfzrfE=";
};
nativeBuildInputs = [

View File

@@ -5,11 +5,11 @@
stdenv.mkDerivation rec {
pname = "unicode-character-database";
version = "15.0.0";
version = "15.1.0";
src = fetchurl {
url = "https://www.unicode.org/Public/zipped/${version}/UCD.zip";
sha256 = "sha256-X73kAPPmh9JcybCo0w12GedssvTD6Fup347BMSy2cYw=";
sha256 = "sha256-yxxmPQU5JlAM1QEilzYEV1JxOgZr11gCCYWYt6cFYXc=";
};
nativeBuildInputs = [

View File

@@ -5,11 +5,11 @@
stdenv.mkDerivation rec {
pname = "unihan-database";
version = "15.0.0";
version = "15.1.0";
src = fetchurl {
url = "https://www.unicode.org/Public/zipped/${version}/Unihan.zip";
hash = "sha256-JLFUaR/JfLRCZ7kl1iBkKXCGs/iWtXqBgce21CcCoCY=";
hash = "sha256-oCJmEOMkvPeErDgOEfTL9TPuHms9AosJkb+MDcP4WFM=";
};
nativeBuildInputs = [

View File

@@ -126,6 +126,10 @@ stdenv.mkDerivation (finalAttrs: {
patchShebangs src/backends/native/gen-default-modes.py
# Magpie does not install any .desktop files
substituteInPlace scripts/mesonPostInstall.sh --replace "update-desktop-database" "# update-desktop-database"
# https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/3187
substituteInPlace meson.build \
--replace "dependency('sysprof-4')" "dependency('sysprof-6')"
'';
postFixup = ''

View File

@@ -18,13 +18,13 @@
python3.pkgs.buildPythonApplication rec {
pname = "accerciser";
version = "3.40.0";
version = "3.42.0";
format = "other";
src = fetchurl {
url = "mirror://gnome/sources/${pname}/${lib.versions.majorMinor version}/${pname}-${version}.tar.xz";
sha256 = "U3VF1kgTwtKxSne2TiQBABXpl3z1+zz4qmXbzgHqNiU=";
sha256 = "d2m9T09j3ImhQ+hs3ET+rr1/jJab6lwfWoaskxGQL0g=";
};
nativeBuildInputs = [
@@ -51,9 +51,14 @@ python3.pkgs.buildPythonApplication rec {
pycairo
pygobject3
setuptools
xlib
];
dontWrapGApps = true;
preFixup = ''
makeWrapperArgs+=("''${gappsWrapperArgs[@]}")
'';
passthru = {
updateScript = gnome.updateScript {
packageName = "accerciser";

View File

@@ -22,13 +22,13 @@
stdenv.mkDerivation rec {
pname = "ghex";
version = "44.2";
version = "45.1";
outputs = [ "out" "dev" "devdoc" ];
src = fetchurl {
url = "mirror://gnome/sources/ghex/${lib.versions.major version}/${pname}-${version}.tar.xz";
sha256 = "6+y0xoo30zk3uewmPIV23x2MaascHT4S1WaP0gB+kws=";
sha256 = "+ysII80WJJ7b6u6DAvm9UAXgFQNos18eR8JmgMrKwvo=";
};
nativeBuildInputs = [

View File

@@ -48,11 +48,11 @@
stdenv.mkDerivation rec {
pname = "gnome-boxes";
version = "44.3";
version = "45.0";
src = fetchurl {
url = "mirror://gnome/sources/${pname}/${lib.versions.major version}/${pname}-${version}.tar.xz";
sha256 = "ZIpBuODIdfBOOnh+pnA2vJIehYo25jQ6Q9tyQu5z4XE=";
sha256 = "zGMIDu+hR6hHKrGl/wh7l6J6tyOk7gBe1B6Mndd5jkE=";
};
patches = [

View File

@@ -7,7 +7,6 @@
, wrapGAppsHook4
, libgweather
, geoclue2
, geocode-glib_2
, gettext
, libxml2
, gnome
@@ -22,11 +21,11 @@
stdenv.mkDerivation rec {
pname = "gnome-calendar";
version = "44.1";
version = "45.1";
src = fetchurl {
url = "mirror://gnome/sources/${pname}/${lib.versions.major version}/${pname}-${version}.tar.xz";
sha256 = "MKG3OLZwvRJORiRo5nEYf8DbpbnuKvao69nnh0vzt34=";
sha256 = "f6hQdUOGWqdDK7UxmDDIcVi1RHygnMpFtgfcZ5bHEAg=";
};
nativeBuildInputs = [
@@ -46,7 +45,6 @@ stdenv.mkDerivation rec {
glib
libgweather
geoclue2
geocode-glib_2
gsettings-desktop-schemas
libadwaita
];

View File

@@ -21,11 +21,11 @@
stdenv.mkDerivation rec {
pname = "gnome-characters";
version = "44.0";
version = "45.0";
src = fetchurl {
url = "mirror://gnome/sources/gnome-characters/${lib.versions.major version}/${pname}-${version}.tar.xz";
sha256 = "BbFcAozBkK75LmCS/YT6jV8kSODpB2RGo1ZvOggf9Qs=";
sha256 = "P9VPzBTSkbd//xLe7/8A2jg+CmQAr1B9FgX7y0m4x0E=";
};
nativeBuildInputs = [

View File

@@ -13,7 +13,6 @@
, libxml2
, gtk4
, glib
, gsound
, sound-theme-freedesktop
, gsettings-desktop-schemas
, gnome-desktop
@@ -27,11 +26,11 @@
stdenv.mkDerivation rec {
pname = "gnome-clocks";
version = "44.0";
version = "45.0";
src = fetchurl {
url = "mirror://gnome/sources/gnome-clocks/${lib.versions.major version}/${pname}-${version}.tar.xz";
sha256 = "F9epc2XLjxoCOh1491AfM1Mhf6dXfXOv59DKHjtPODg=";
sha256 = "/I60/ZUw8eZB3ADuIIbufTVKegCwoNFyLjBdXJqrkbU=";
};
nativeBuildInputs = [
@@ -45,9 +44,6 @@ stdenv.mkDerivation rec {
desktop-file-utils
libxml2
gobject-introspection # for finding vapi files
# error: Package `...' not found in specified Vala API directories or GObject-Introspection GIR directories
# TODO: the vala setuphook should look for vala filess in targetOffset instead of hostOffset
gsound
];
buildInputs = [
@@ -59,7 +55,6 @@ stdenv.mkDerivation rec {
geocode-glib_2
geoclue2
libgweather
gsound
libadwaita
];

View File

@@ -22,11 +22,11 @@
stdenv.mkDerivation rec {
pname = "gnome-connections";
version = "44.1";
version = "45.0";
src = fetchurl {
url = "mirror://gnome/sources/${pname}/${lib.versions.major version}/${pname}-${version}.tar.xz";
hash = "sha256-E2otkksHfVzEEAyEWCbUcURCMKFsjawnMhE2gBcaYms=";
hash = "sha256-ufq1JbkKPifRE8FvuGjCucR7+BSTENFNuGLqGRLAb7g=";
};
nativeBuildInputs = [

View File

@@ -1,7 +1,6 @@
{ stdenv
, lib
, fetchurl
, fetchpatch
, meson
, ninja
, pkg-config
@@ -23,25 +22,13 @@
stdenv.mkDerivation rec {
pname = "gnome-logs";
version = "43.0";
version = "45.beta";
src = fetchurl {
url = "mirror://gnome/sources/gnome-logs/${lib.versions.major version}/${pname}-${version}.tar.xz";
sha256 = "M6k7l17CfISHglBIqnuK99XCNWWrz3t0yQKrez7CCGE=";
sha256 = "nbxJ/7J90jQuji/UmK8ltUENsjkQ/I7/XmiTrHa7jK4=";
};
patches = [
# Remove GTK 3 depndency
# https://gitlab.gnome.org/GNOME/gnome-logs/-/merge_requests/46
(fetchpatch {
url = "https://gitlab.gnome.org/GNOME/gnome-logs/-/commit/32193a1385b95012bc8e7007ada89566bd63697d.patch";
sha256 = "5WsTnfVpWZquU65pSLnk2M6VnY+qQPUi7A0cqMmzfrU=";
postFetch = ''
substituteInPlace "$out" --replace "43.1" "43.0"
'';
})
];
nativeBuildInputs = [
meson
ninja

View File

@@ -16,6 +16,7 @@
, geoclue2
, wrapGAppsHook4
, desktop-file-utils
, libportal
, libshumate
, libsecret
, libsoup_3
@@ -27,11 +28,11 @@
stdenv.mkDerivation rec {
pname = "gnome-maps";
version = "44.4";
version = "45.1";
src = fetchurl {
url = "mirror://gnome/sources/${pname}/${lib.versions.major version}/${pname}-${version}.tar.xz";
hash = "sha256-3admgmWnCVKWDElRnPv7+jV2gyb8W4CyYX8U/7LJuHM=";
hash = "sha256-v2nFDi4ZsV280KDvOCfUAqGVq0ogKbm2LlSr8472334=";
};
doCheck = true;
@@ -57,6 +58,7 @@ stdenv.mkDerivation rec {
gjs
gsettings-desktop-schemas
gtk4
libportal
libshumate
libgweather
libadwaita

View File

@@ -30,13 +30,13 @@
python3.pkgs.buildPythonApplication rec {
pname = "gnome-music";
version = "44.0";
version = "45.0";
format = "other";
src = fetchurl {
url = "mirror://gnome/sources/${pname}/${lib.versions.major version}/${pname}-${version}.tar.xz";
sha256 = "m9GqyVcuYkcgJKaVDYOubyhr4zzZx3fz1E+hbQOPHVE=";
sha256 = "M+dwFmImp0U31MELFTjvqIQklP/pvyyQoWyrmKuZe98=";
};
nativeBuildInputs = [

View File

@@ -18,18 +18,17 @@
, libadwaita
, editorconfig-core-c
, libxml2
, pcre
, appstream-glib
, desktop-file-utils
}:
stdenv.mkDerivation rec {
pname = "gnome-text-editor";
version = "44.0";
version = "45.1";
src = fetchurl {
url = "mirror://gnome/sources/gnome-text-editor/${lib.versions.major version}/${pname}-${version}.tar.xz";
sha256 = "sha256-9nvDeAc0/6gV/MTF2qe1VdJORZ+B6itUjmqFwWEqMco=";
sha256 = "sha256-aobsmSD0ZrbtkmlVJNO1B7HoQnLa+lNB0GoVfehor3E=";
};
nativeBuildInputs = [
@@ -54,7 +53,6 @@ stdenv.mkDerivation rec {
gtksourceview5
libadwaita
editorconfig-core-c
pcre
];
passthru = {

View File

@@ -1,6 +1,7 @@
{ lib
, stdenv
, fetchurl
, desktop-file-utils
, pkg-config
, gnome
, gtk4
@@ -18,14 +19,15 @@
stdenv.mkDerivation rec {
pname = "gnome-weather";
version = "44.0";
version = "45.0";
src = fetchurl {
url = "mirror://gnome/sources/gnome-weather/${lib.versions.major version}/${pname}-${version}.tar.xz";
sha256 = "aw04rHhQQWmd9iiSbjXbe1/6CG7g1pNMIioZxrmSO68=";
sha256 = "MMAClwKIPcjYFg5t4dYRaHfNbCW8lQ1OSQKmq0Z7L6Q=";
};
nativeBuildInputs = [
desktop-file-utils
pkg-config
meson
ninja
@@ -56,8 +58,6 @@ stdenv.mkDerivation rec {
chmod +x meson_post_install.py
patchShebangs meson_post_install.py
substituteInPlace meson_post_install.py \
--replace gtk-update-icon-cache gtk4-update-icon-cache
'';
passthru = {

View File

@@ -30,11 +30,11 @@
stdenv.mkDerivation rec {
pname = "polari";
version = "43.0";
version = "45.0";
src = fetchurl {
url = "mirror://gnome/sources/${pname}/${lib.versions.major version}/${pname}-${version}.tar.xz";
sha256 = "F6GS3uYfWOPNRHJQC+cBGUa5n75SvFrBJPqurC8zQUc=";
sha256 = "nbfdwJSqhVfxkXfhZMQti+Fn9UckuScTC3YhyCnB1KE=";
};
patches = [

View File

@@ -1,14 +1,15 @@
diff --git a/src/thumbnailer.js b/src/thumbnailer.js
old mode 100644
new mode 100755
index ed6350ea..83d832cb
index 4f7a2840..55c20199
--- a/src/thumbnailer.js
+++ b/src/thumbnailer.js
@@ -1,3 +1,4 @@
@@ -1,3 +1,5 @@
+#!/usr/bin/env gjs --module
import Cairo from 'cairo';
import Gdk from 'gi://Gdk?version=3.0';
import Gio from 'gi://Gio';
+
// SPDX-FileCopyrightText: 2019 daronion <stefanosdimos.98@gmail.com>
// SPDX-FileCopyrightText: 2019 Florian Müllner <fmuellner@gnome.org>
//
diff --git a/src/urlPreview.js b/src/urlPreview.js
index 5f7931e4..d2282900 100644
--- a/src/urlPreview.js

View File

@@ -1,8 +1,9 @@
{ lib
, stdenv
, fetchurl
, meson
, ninja
, pkg-config
, autoreconfHook
, gnome
, gtk3
, gdk-pixbuf
@@ -12,16 +13,17 @@
stdenv.mkDerivation rec {
pname = "adwaita-icon-theme";
version = "44.0";
version = "45.0";
src = fetchurl {
url = "mirror://gnome/sources/adwaita-icon-theme/${lib.versions.major version}/${pname}-${version}.tar.xz";
sha256 = "SInFYBu/7NJdgLo0IgnQqTbc9pHuVr1uykzeNh8aZkw=";
sha256 = "JEK/sG9ObMlb9uJoL9/5j6Xt3GiHUbnWIVxiPLTkL/E=";
};
nativeBuildInputs = [
meson
ninja
pkg-config
autoreconfHook
gtk3
];

View File

@@ -18,11 +18,11 @@
stdenv.mkDerivation rec {
pname = "baobab";
version = "44.0";
version = "45.0";
src = fetchurl {
url = "mirror://gnome/sources/${pname}/${lib.versions.major version}/${pname}-${version}.tar.xz";
sha256 = "hFtju5Ej10VoyBJsVxu8dCc0g/+SAXmizx7du++hv8A=";
sha256 = "p9LPMIpsg57gsL8HT49f1g1iri8GSpSzxhDWVgt1joY=";
};
nativeBuildInputs = [

View File

@@ -2,6 +2,7 @@
, stdenv
, fetchurl
, fetchpatch
, desktop-file-utils
, meson
, ninja
, vala
@@ -11,7 +12,6 @@
, gtk3
, libhandy
, gnome
, python3
, dconf
, libxml2
, gettext
@@ -22,20 +22,27 @@
stdenv.mkDerivation rec {
pname = "dconf-editor";
version = "43.0";
version = "45.0.1";
src = fetchurl {
url = "mirror://gnome/sources/${pname}/${lib.versions.major version}/${pname}-${version}.tar.xz";
sha256 = "sha256-k1o8Lddswqk81a7ppU05R/sRHrOW9LY9xfC6j40JkTY=";
sha256 = "sha256-EYApdnju2uYhfMUUomOMGH0vHR7ycgy5B5t0DEKZQd0=";
};
patches = [
# Fix crash with GSETTINGS_SCHEMA_DIR env var.
(fetchpatch {
url = "https://gitlab.gnome.org/GNOME/dconf-editor/-/commit/baf183737d459dcde065c9f8f6fe5be7ed874de6.patch";
hash = "sha256-Vp0qjJChDr6IarUD+tZPLJhdI8v8r6EzWNfqFSnGvqQ=";
})
# Look for compiled schemas in NIX_GSETTINGS_OVERRIDES_DIR
# environment variable, to match what we patched GLib to do.
./schema-override-variable.patch
];
nativeBuildInputs = [
desktop-file-utils
meson
ninja
vala
@@ -46,7 +53,6 @@ stdenv.mkDerivation rec {
docbook-xsl-nons
libxml2
gobject-introspection
python3
];
buildInputs = [
@@ -56,11 +62,6 @@ stdenv.mkDerivation rec {
dconf
];
postPatch = ''
chmod +x meson_post_install.py
patchShebangs meson_post_install.py
'';
passthru = {
updateScript = gnome.updateScript {
packageName = pname;

View File

@@ -10,5 +10,5 @@ index 27b2b17a..87f7ba86 100644
+ 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);
if (var_schema_dir != null) {
string[] extra_schema_dirs = ((!) var_schema_dir).split (Path.SEARCHPATH_SEPARATOR_S);

View File

@@ -31,13 +31,13 @@
stdenv.mkDerivation rec {
pname = "eog";
version = "44.3";
version = "45.1";
outputs = [ "out" "dev" "devdoc" ];
src = fetchurl {
url = "mirror://gnome/sources/${pname}/${lib.versions.major version}/${pname}-${version}.tar.xz";
sha256 = "sha256-1rLXD0tDL/jPSUyPkCmyYh0I54F5ODF9ZAY65sTanYw=";
sha256 = "sha256-wX+GcExyKzbAGhaPHlFDm+C7J58sZkb0i2bp0POiTNI=";
};
patches = [

View File

@@ -36,11 +36,11 @@
stdenv.mkDerivation rec {
pname = "epiphany";
version = "44.6";
version = "45.1";
src = fetchurl {
url = "mirror://gnome/sources/${pname}/${lib.versions.major version}/${pname}-${version}.tar.xz";
sha256 = "UzXdVzWB22HhJthU3BauUZZXpbh5B4mkfSXkPhfNOkM=";
sha256 = "fJlO807NYOkV3jMe4SPAiTj5YjzvrabVC5njycWtgTU=";
};
nativeBuildInputs = [

View File

@@ -28,7 +28,6 @@
, gobject-introspection
, yelp-tools
, gspell
, adwaita-icon-theme
, gsettings-desktop-schemas
, gnome-desktop
, dbus
@@ -43,13 +42,13 @@
stdenv.mkDerivation rec {
pname = "evince";
version = "44.3";
version = "45.0";
outputs = [ "out" "dev" "devdoc" ];
src = fetchurl {
url = "mirror://gnome/sources/evince/${lib.versions.major version}/${pname}-${version}.tar.xz";
sha256 = "O4uhWBpHpun1f2tqoI8PtnVJxgEhqiTjEUDpOUe4NiI=";
sha256 = "0YZH1Cdcvd8NMoF7HQTjBzQqhb6RTsTa0tgIKq+KpKg=";
};
depsBuildBuild = [
@@ -71,7 +70,6 @@ stdenv.mkDerivation rec {
];
buildInputs = [
adwaita-icon-theme
atk
dbus # only needed to find the service directory
djvulibre

View File

@@ -23,6 +23,7 @@
, gperf
, wrapGAppsHook
, glib-networking
, gsettings-desktop-schemas
, pcre
, vala
, cmake
@@ -50,13 +51,13 @@
stdenv.mkDerivation rec {
pname = "evolution-data-server";
version = "3.48.4";
version = "3.50.1";
outputs = [ "out" "dev" ];
src = fetchurl {
url = "mirror://gnome/sources/evolution-data-server/${lib.versions.majorMinor version}/${pname}-${version}.tar.xz";
sha256 = "mX4/k7F++wr/zAF77oeAul+iwAnjZVG7yRoIrlUtbWA=";
sha256 = "kfT/w4objS/ok5g0RJrFQcC/9KObRE7cKpUpNEoo6Yo=";
};
patches = [
@@ -64,11 +65,16 @@ stdenv.mkDerivation rec {
src = ./fix-paths.patch;
inherit tzdata;
})
# Avoid using wrapper function, which the hardcode gsettings
# patch generator cannot handle.
./drop-tentative-settings-constructor.patch
];
prePatch = ''
substitute ${./hardcode-gsettings.patch} hardcode-gsettings.patch \
--subst-var-by EDS ${glib.makeSchemaPath "$out" "${pname}-${version}"}
--subst-var-by EDS ${glib.makeSchemaPath "$out" "${pname}-${version}"} \
--subst-var-by GDS ${glib.getSchemaPath gsettings-desktop-schemas}
patches="$patches $PWD/hardcode-gsettings.patch"
'';
@@ -86,6 +92,7 @@ stdenv.mkDerivation rec {
buildInputs = [
glib
libsecret
libsoup_3
gnome-online-accounts
p11-kit
@@ -116,7 +123,6 @@ stdenv.mkDerivation rec {
propagatedBuildInputs = [
db
libsecret
nss
nspr
libical
@@ -158,9 +164,9 @@ stdenv.mkDerivation rec {
"org.gnome.evolution-data-server.addressbook" = "EDS";
"org.gnome.evolution-data-server.calendar" = "EDS";
"org.gnome.evolution-data-server" = "EDS";
"org.gnome.desktop.interface" = "GDS";
};
inherit src;
inherit src patches;
};
updateScript =
let

View File

@@ -0,0 +1,40 @@
diff --git a/src/calendar/libecal/e-reminder-watcher.c b/src/calendar/libecal/e-reminder-watcher.c
index f1614f2..c01e8b2 100644
--- a/src/calendar/libecal/e-reminder-watcher.c
+++ b/src/calendar/libecal/e-reminder-watcher.c
@@ -2609,26 +2609,6 @@ e_reminder_watcher_load_clock_format (EReminderWatcher *watcher)
g_free (clock_format);
}
-static GSettings*
-e_reminder_watcher_load_settings_tentative (const gchar *schema_id)
-{
- GSettings *settings;
- GSettingsSchemaSource *schema_source;
- GSettingsSchema *schema;
-
- schema_source = g_settings_schema_source_get_default ();
- schema = g_settings_schema_source_lookup (schema_source, schema_id, TRUE);
-
- if (schema == NULL) {
- return NULL;
- }
-
- settings = g_settings_new (schema_id);
- /* only unref after g_settings_new() to avoid needless realloc */
- g_settings_schema_unref (schema);
- return settings;
-}
-
static void
e_reminder_watcher_init (EReminderWatcher *watcher)
{
@@ -2647,7 +2627,7 @@ e_reminder_watcher_init (EReminderWatcher *watcher)
watcher->priv = e_reminder_watcher_get_instance_private (watcher);
watcher->priv->cancellable = g_cancellable_new ();
watcher->priv->settings = g_settings_new ("org.gnome.evolution-data-server.calendar");
- watcher->priv->desktop_settings = e_reminder_watcher_load_settings_tentative ("org.gnome.desktop.interface");
+ watcher->priv->desktop_settings = g_settings_new ("org.gnome.desktop.interface");
if (watcher->priv->desktop_settings) {
g_signal_connect_object (
watcher->priv->desktop_settings,

View File

@@ -128,10 +128,10 @@ index e85a56b..59d3fe2 100644
g_object_unref (settings);
diff --git a/src/addressbook/libedata-book/e-book-meta-backend.c b/src/addressbook/libedata-book/e-book-meta-backend.c
index 4aaabee..dd6ce6d 100644
index 63e1016..0492756 100644
--- a/src/addressbook/libedata-book/e-book-meta-backend.c
+++ b/src/addressbook/libedata-book/e-book-meta-backend.c
@@ -143,7 +143,18 @@ ebmb_is_power_saver_enabled (void)
@@ -144,7 +144,18 @@ ebmb_is_power_saver_enabled (void)
GSettings *settings;
gboolean enabled = FALSE;
@@ -175,15 +175,42 @@ index 42f3457..b4926af 100644
cbc->priv->notifyid = 0;
cbc->priv->update_alarms_id = 0;
cbc->priv->alarm_enabled = FALSE;
diff --git a/src/calendar/backends/file/e-cal-backend-file.c b/src/calendar/backends/file/e-cal-backend-file.c
index 2525856..7ecc1a8 100644
--- a/src/calendar/backends/file/e-cal-backend-file.c
+++ b/src/calendar/backends/file/e-cal-backend-file.c
@@ -3682,7 +3682,20 @@ e_cal_backend_file_receive_objects (ECalBackendSync *backend,
if (is_declined) {
GSettings *settings;
- settings = g_settings_new ("org.gnome.evolution-data-server.calendar");
+ {
+ g_autoptr(GSettingsSchemaSource) schema_source;
+ g_autoptr(GSettingsSchema) schema;
+ schema_source = g_settings_schema_source_new_from_directory("@EDS@",
+ g_settings_schema_source_get_default(),
+ TRUE,
+ NULL);
+ schema = g_settings_schema_source_lookup(schema_source,
+ "org.gnome.evolution-data-server.calendar",
+ FALSE);
+ settings = g_settings_new_full(schema,
+ NULL,
+ NULL);
+ }
can_delete = g_settings_get_boolean (settings, "delete-meeting-on-decline");
g_clear_object (&settings);
}
diff --git a/src/calendar/libecal/e-reminder-watcher.c b/src/calendar/libecal/e-reminder-watcher.c
index 5087de1..5c24b87 100644
index c01e8b2..59fb4c4 100644
--- a/src/calendar/libecal/e-reminder-watcher.c
+++ b/src/calendar/libecal/e-reminder-watcher.c
@@ -2578,7 +2578,19 @@ e_reminder_watcher_init (EReminderWatcher *watcher)
@@ -2626,8 +2626,33 @@ e_reminder_watcher_init (EReminderWatcher *watcher)
watcher->priv = e_reminder_watcher_get_instance_private (watcher);
watcher->priv->cancellable = g_cancellable_new ();
- watcher->priv->settings = g_settings_new ("org.gnome.evolution-data-server.calendar");
- watcher->priv->desktop_settings = g_settings_new ("org.gnome.desktop.interface");
+ {
+ g_autoptr(GSettingsSchemaSource) schema_source;
+ g_autoptr(GSettingsSchema) schema;
@@ -197,11 +224,25 @@ index 5087de1..5c24b87 100644
+ watcher->priv->settings = g_settings_new_full(schema, NULL,
+ NULL);
+ }
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 = e_cal_util_copy_timezone (zone);
watcher->priv->timers_enabled = TRUE;
+ {
+ g_autoptr(GSettingsSchemaSource) schema_source;
+ g_autoptr(GSettingsSchema) schema;
+ schema_source = g_settings_schema_source_new_from_directory("@GDS@",
+ g_settings_schema_source_get_default(),
+ TRUE,
+ NULL);
+ schema = g_settings_schema_source_lookup(schema_source,
+ "org.gnome.desktop.interface",
+ FALSE);
+ watcher->priv->desktop_settings = g_settings_new_full(schema,
+ NULL,
+ NULL);
+ }
if (watcher->priv->desktop_settings) {
g_signal_connect_object (
watcher->priv->desktop_settings,
diff --git a/src/calendar/libedata-cal/e-cal-meta-backend.c b/src/calendar/libedata-cal/e-cal-meta-backend.c
index cd91f07..79ede04 100644
index 27fa153..3679d72 100644
--- a/src/calendar/libedata-cal/e-cal-meta-backend.c
+++ b/src/calendar/libedata-cal/e-cal-meta-backend.c
@@ -156,7 +156,18 @@ ecmb_is_power_saver_enabled (void)
@@ -224,11 +265,33 @@ index cd91f07..79ede04 100644
if (g_settings_get_boolean (settings, "limit-operations-in-power-saver-mode")) {
GPowerProfileMonitor *power_monitor;
@@ -2633,7 +2644,20 @@ ecmb_receive_object_sync (ECalMetaBackend *meta_backend,
if (is_declined) {
GSettings *settings;
- settings = g_settings_new ("org.gnome.evolution-data-server.calendar");
+ {
+ g_autoptr(GSettingsSchemaSource) schema_source;
+ g_autoptr(GSettingsSchema) schema;
+ schema_source = g_settings_schema_source_new_from_directory("@EDS@",
+ g_settings_schema_source_get_default(),
+ TRUE,
+ NULL);
+ schema = g_settings_schema_source_lookup(schema_source,
+ "org.gnome.evolution-data-server.calendar",
+ FALSE);
+ settings = g_settings_new_full(schema,
+ NULL,
+ NULL);
+ }
is_declined = g_settings_get_boolean (settings, "delete-meeting-on-decline");
g_clear_object (&settings);
}
diff --git a/src/camel/camel-cipher-context.c b/src/camel/camel-cipher-context.c
index 8013ba7..1bba6d1 100644
index bef9188..ce92f6c 100644
--- a/src/camel/camel-cipher-context.c
+++ b/src/camel/camel-cipher-context.c
@@ -1625,7 +1625,18 @@ camel_cipher_can_load_photos (void)
@@ -1631,7 +1631,18 @@ camel_cipher_can_load_photos (void)
GSettings *settings;
gboolean load_photos;
@@ -249,10 +312,10 @@ index 8013ba7..1bba6d1 100644
g_clear_object (&settings);
diff --git a/src/camel/camel-gpg-context.c b/src/camel/camel-gpg-context.c
index 205372e..f75a88e 100644
index db5fc2e..162e00f 100644
--- a/src/camel/camel-gpg-context.c
+++ b/src/camel/camel-gpg-context.c
@@ -582,7 +582,18 @@ gpg_ctx_get_executable_name (void)
@@ -747,7 +747,18 @@ gpg_ctx_get_executable_name (void)
GSettings *settings;
gchar *path;
@@ -298,11 +361,11 @@ index e61160c..b6553a4 100644
G_CALLBACK (mi_user_headers_settings_changed_cb), NULL);
G_UNLOCK (mi_user_headers);
diff --git a/src/camel/providers/imapx/camel-imapx-server.c b/src/camel/providers/imapx/camel-imapx-server.c
index 78abb89..9f2a891 100644
index ef34665..59f294b 100644
--- a/src/camel/providers/imapx/camel-imapx-server.c
+++ b/src/camel/providers/imapx/camel-imapx-server.c
@@ -5591,7 +5591,18 @@ camel_imapx_server_skip_old_flags_update (CamelStore *store)
if (!skip_old_flags_update) {
@@ -5627,7 +5627,18 @@ camel_imapx_server_do_old_flags_update (CamelFolder *folder)
if (do_old_flags_update) {
GSettings *eds_settings;
- eds_settings = g_settings_new ("org.gnome.evolution-data-server");
@@ -322,10 +385,10 @@ index 78abb89..9f2a891 100644
if (g_settings_get_boolean (eds_settings, "limit-operations-in-power-saver-mode")) {
GPowerProfileMonitor *power_monitor;
diff --git a/src/camel/providers/smtp/camel-smtp-transport.c b/src/camel/providers/smtp/camel-smtp-transport.c
index effaf06..1b2a003 100644
index 6556f1e..90f0a5e 100644
--- a/src/camel/providers/smtp/camel-smtp-transport.c
+++ b/src/camel/providers/smtp/camel-smtp-transport.c
@@ -1462,7 +1462,18 @@ smtp_helo (CamelSmtpTransport *transport,
@@ -1471,7 +1471,18 @@ smtp_helo (CamelSmtpTransport *transport,
transport->authtypes = NULL;
}
@@ -442,7 +505,7 @@ index 3bb1071..199e822 100644
g_object_unref (settings);
diff --git a/src/libedataserver/e-oauth2-service.c b/src/libedataserver/e-oauth2-service.c
index 7eca355..795d822 100644
index 2364f3e..e8f59f2 100644
--- a/src/libedataserver/e-oauth2-service.c
+++ b/src/libedataserver/e-oauth2-service.c
@@ -94,7 +94,18 @@ eos_default_guess_can_process (EOAuth2Service *service,

View File

@@ -43,13 +43,13 @@ in
stdenv.mkDerivation (finalAttrs: {
pname = "gdm";
version = "44.1";
version = "45.0.1";
outputs = [ "out" "dev" ];
src = fetchurl {
url = "mirror://gnome/sources/gdm/${lib.versions.major finalAttrs.version}/${finalAttrs.pname}-${finalAttrs.version}.tar.xz";
sha256 = "aCZrOr59KPxGnQBnqsnF2rsMp5UswffCOKBJUfPcWw0=";
sha256 = "ZXJXjAXjxladbtJp994qrzoDVldlRYbYJDkHu3pv+oU=";
};
mesonFlags = [

View File

@@ -8,11 +8,11 @@
stdenv.mkDerivation rec {
pname = "gnome-backgrounds";
version = "44.0";
version = "45.0";
src = fetchurl {
url = "mirror://gnome/sources/gnome-backgrounds/${lib.versions.major version}/${pname}-${version}.tar.xz";
sha256 = "SoOTs4cTXypqQkoaDDrJTgdCtiuCNaCSPJKfUeBL4E4=";
sha256 = "zuDmiPuuXvenXzNa2i0Qd54I68qURfFYbeMsWptt7i0=";
};
patches = [

View File

@@ -27,14 +27,14 @@
stdenv.mkDerivation rec {
pname = "gnome-bluetooth";
version = "42.6";
version = "42.7";
# 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 = "WGT+bx5xhxXbJrYiAbdaWQIM9CR/7DdkWzVZzS26WdA=";
sha256 = "lN8XKdvsO7EF5Yjq9TEru6oFxJ6nMyAqENw/dTK9+Gk=";
};
nativeBuildInputs = [

View File

@@ -25,11 +25,11 @@
stdenv.mkDerivation rec {
pname = "gnome-calculator";
version = "44.0";
version = "45.0.2";
src = fetchurl {
url = "mirror://gnome/sources/gnome-calculator/${lib.versions.major version}/${pname}-${version}.tar.xz";
sha256 = "FOdjMp+IMJp+FSeA1XNhtUMQDjI5BrNOBlX9wxW3EEM=";
sha256 = "fcvzI4SJcXHL5Ug+xmTZlOXnVekSrh35EWJPA8kIZ8I=";
};
nativeBuildInputs = [

View File

@@ -27,11 +27,11 @@
stdenv.mkDerivation rec {
pname = "gnome-contacts";
version = "44.0";
version = "45.0";
src = fetchurl {
url = "mirror://gnome/sources/gnome-contacts/${lib.versions.major version}/${pname}-${version}.tar.xz";
sha256 = "fdEWO8HwavY4La5AFcQ0Q+4sEpKBKPyZ/USSktDee+0=";
sha256 = "vR/fKm9kzdnyq7/tB+ZPKmmuNTb3T0gZjMN7rZ/NlD4=";
};
nativeBuildInputs = [

View File

@@ -20,13 +20,13 @@
, gnome-desktop
, gnome-online-accounts
, gnome-settings-daemon
, gnome-tecla
, gnome
, gsettings-desktop-schemas
, gsound
, gst_all_1
, gtk4
, ibus
, libgnomekbd
, libgtop
, libgudev
, libadwaita
@@ -50,6 +50,7 @@
, polkit
, python3
, samba
, setxkbmap
, shadow
, shared-mime-info
, sound-theme-freedesktop
@@ -62,22 +63,23 @@
, gnome-user-share
, gnome-remote-desktop
, wrapGAppsHook
, xvfb-run
}:
stdenv.mkDerivation rec {
pname = "gnome-control-center";
version = "44.3";
version = "45.1";
src = fetchurl {
url = "mirror://gnome/sources/${pname}/${lib.versions.major version}/${pname}-${version}.tar.xz";
sha256 = "sha256-BmplBS/D7ProYAJehfeX5qsrh6WMT4q5xm7CBxioDHo=";
sha256 = "sha256-0obHYnFQ4RKqy7S3uRcX+tjokHYGFHnfxhCy3XRLV3o=";
};
patches = [
(substituteAll {
src = ./paths.patch;
gcm = gnome-color-manager;
inherit glibc libgnomekbd tzdata shadow;
inherit glibc tzdata shadow;
inherit cups networkmanagerapplet;
})
];
@@ -110,6 +112,7 @@ stdenv.mkDerivation rec {
gnome-online-accounts
gnome-remote-desktop # optional, sharing panel
gnome-settings-daemon
gnome-tecla
gnome-user-share # optional, sharing panel
gsettings-desktop-schemas
gsound
@@ -141,11 +144,34 @@ stdenv.mkDerivation rec {
gst-plugins-good
]);
nativeCheckInputs = [
python3.pkgs.python-dbusmock
setxkbmap
xvfb-run
];
doCheck = true;
preConfigure = ''
# For ITS rules
addToSearchPath "XDG_DATA_DIRS" "${polkit.out}/share"
'';
checkPhase = ''
runHook preCheck
testEnvironment=(
# Basically same as https://github.com/NixOS/nixpkgs/pull/141299
"ADW_DISABLE_PORTAL=1"
"XDG_DATA_DIRS=${glib.getSchemaDataDirPath gsettings-desktop-schemas}"
)
env "''${testEnvironment[@]}" xvfb-run \
meson test --print-errorlogs
runHook postCheck
'';
postInstall = ''
# Pull in WebP support for gnome-backgrounds.
# In postInstall to run before gappsWrapperArgsHook.

View File

@@ -1,17 +1,17 @@
diff --git a/panels/color/cc-color-panel.c b/panels/color/cc-color-panel.c
index 603178efc..c363a6a5c 100644
index f6c84e3d2..cd897f8f5 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)
@@ -614,7 +614,7 @@ gcm_prefs_calibrate_cb (CcColorPanel *self)
/* 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 (cd_device_get_id (self->current_device)));
g_ptr_array_add (argv, g_strdup ("--parent-window"));
@@ -1029,7 +1029,7 @@ gcm_prefs_profile_view (CcColorPanel *prefs, CdProfile *profile)
@@ -989,7 +989,7 @@ gcm_prefs_profile_view (CcColorPanel *self, CdProfile *profile)
/* open up gcm-viewer as a info pane */
argv = g_ptr_array_new_with_free_func (g_free);
@@ -20,9 +20,9 @@ index 603178efc..c363a6a5c 100644
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)
@@ -1221,15 +1221,12 @@ gcm_prefs_device_clicked (CcColorPanel *self, CdDevice *device)
static void
gcm_prefs_profile_clicked (CcColorPanel *prefs, CdProfile *profile, CdDevice *device)
gcm_prefs_profile_clicked (CcColorPanel *self, CdProfile *profile, CdDevice *device)
{
- g_autofree gchar *s = NULL;
-
@@ -34,9 +34,9 @@ index 603178efc..c363a6a5c 100644
- 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);
gtk_widget_set_sensitive (self->toolbutton_profile_view, TRUE);
else
gtk_widget_set_sensitive (prefs->toolbutton_profile_view, FALSE);
gtk_widget_set_sensitive (self->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
@@ -54,23 +54,6 @@ index a2376f8a4..98769e08f 100644
typedef struct _TzDB TzDB;
typedef struct _TzLocation TzLocation;
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

View File

@@ -27,11 +27,11 @@
stdenv.mkDerivation rec {
pname = "gnome-disk-utility";
version = "44.0";
version = "45.0";
src = fetchurl {
url = "mirror://gnome/sources/gnome-disk-utility/${lib.versions.major version}/${pname}-${version}.tar.xz";
sha256 = "sha256-AgMQl4ls2zfYcXpYI/k+NyPU385/3EACyd/LFrfno+8=";
sha256 = "sha256-PYYl+qmQR7xK79KZIa1yirTXAM/4bg8uxn6Nuod9DdM=";
};
nativeBuildInputs = [

View File

@@ -18,11 +18,11 @@
stdenv.mkDerivation rec {
pname = "gnome-font-viewer";
version = "44.0";
version = "45.0";
src = fetchurl {
url = "mirror://gnome/sources/gnome-font-viewer/${lib.versions.major version}/${pname}-${version}.tar.xz";
sha256 = "oVEd8wsijMLvEXXdnSuTQ46pEuJZE0BLJjzz1Fe7n5c=";
sha256 = "l8traN2mDeCrMDg4NYbx5LwdpaSPRAJb1rvnTqBcKwg=";
};
doCheck = true;

View File

@@ -17,11 +17,11 @@ index 196abf6..613d0e5 100644
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);
- commandline = g_strdup_printf ("tecla \"%s+%s\"", layout, variant);
+ commandline = g_strdup_printf ("@tecla@/bin/tecla \"%s+%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);
- commandline = g_strdup_printf ("tecla %s", layout);
+ commandline = g_strdup_printf ("@tecla@/bin/tecla %s", layout);
g_spawn_command_line_async (commandline, NULL);
g_free (commandline);
@@ -38,15 +38,6 @@ diff --git a/gnome-initial-setup/pages/timezone/tz.h b/gnome-initial-setup/pages
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

View File

@@ -2,6 +2,7 @@
, lib
, fetchurl
, substituteAll
, dconf
, gettext
, meson
, ninja
@@ -32,27 +33,29 @@
, libadwaita
, libnma-gtk4
, tzdata
, libgnomekbd
, gnome-tecla
, gsettings-desktop-schemas
}:
stdenv.mkDerivation rec {
pname = "gnome-initial-setup";
version = "44.0";
version = "45.0";
src = fetchurl {
url = "mirror://gnome/sources/${pname}/${lib.versions.major version}/${pname}-${version}.tar.xz";
sha256 = "WTz8bcj4KphnG5TANbl9vojvVucIeAsq0dIyTk0Eu/8=";
sha256 = "sa/nZHmPiUi+25XHqzG9eFKaxctIHEH3p3d/Jk3lS9g=";
};
patches = [
(substituteAll {
src = ./0001-fix-paths.patch;
inherit tzdata libgnomekbd;
inherit tzdata;
tecla = gnome-tecla;
})
];
nativeBuildInputs = [
dconf
gettext
meson
ninja

View File

@@ -8,6 +8,7 @@
, asciidoc
, wrapGAppsHook
, glib
, libei
, libepoxy
, libdrm
, nv-codec-headers-11
@@ -21,20 +22,16 @@
, fdk_aac
, tpm2-tss
, fuse3
, mesa
, libgudev
, xvfb-run
, dbus
, gnome
}:
stdenv.mkDerivation rec {
pname = "gnome-remote-desktop";
version = "44.2";
version = "45.1";
src = fetchurl {
url = "mirror://gnome/sources/${pname}/${lib.versions.major version}/${pname}-${version}.tar.xz";
hash = "sha256-ep/9NBtfy2NtJmden2JpZQlSFj//UpUydhjMLVzIe44=";
hash = "sha256-3NnBisIwZpVjH88AqIZFw443DroFxp3zn1QCBNTq/Y0=";
};
nativeBuildInputs = [
@@ -54,6 +51,7 @@ stdenv.mkDerivation rec {
fuse3
gdk-pixbuf # For libnotify
glib
libei
libepoxy
libdrm
nv-codec-headers-11
@@ -62,33 +60,13 @@ stdenv.mkDerivation rec {
libxkbcommon
pipewire
systemd
] ++ nativeCheckInputs;
nativeCheckInputs = [
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"
"-Dtests=false" # Too deep of a rabbit hole.
];
# Too deep of a rabbit hole.
doCheck = false;
postPatch = ''
patchShebangs \
tests/vnc-test-runner.sh \
tests/run-vnc-tests.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;

View File

@@ -1,5 +1,4 @@
{ fetchurl
, fetchpatch
, lib
, stdenv
, substituteAll
@@ -32,13 +31,13 @@
stdenv.mkDerivation rec {
pname = "gnome-session";
# Also bump ./ctl.nix when bumping major version.
version = "44.0";
version = "45.0";
outputs = [ "out" "sessions" ];
src = fetchurl {
url = "mirror://gnome/sources/gnome-session/${lib.versions.major version}/${pname}-${version}.tar.xz";
sha256 = "zPgpqWUmE16en5F1JlFdNqUJK9+jFvNzfdjFpSTb8sY=";
sha256 = "cG0v/KysOFU6PAGFeT9aK0qslAu154nZU8mAgWO+8vE=";
};
patches = [
@@ -48,12 +47,6 @@ stdenv.mkDerivation rec {
dbusLaunch = "${dbus.lib}/bin/dbus-launch";
bash = "${bash}/bin/bash";
})
# See #226355. Can be removed on update to v45.
(fetchpatch {
name = "fix-gnome-boxes-crash.patch";
url = "https://gitlab.gnome.org/GNOME/gnome-session/commit/fab1a3b91677035d541de2c141f8073c4057342c.patch";
hash = "sha256-2xeoNgV8UDexkufXDqimAplX0GC99tUWUqjw3kfN+5Q=";
})
];
nativeBuildInputs = [

View File

@@ -0,0 +1,58 @@
From aae1e774dd9de22fe3520cf9eb2bfbf7216f5eb0 Mon Sep 17 00:00:00 2001
From: WORLDofPEACE <worldofpeace@protonmail.ch>
Date: Sun, 20 Sep 2020 16:09:36 -0400
Subject: [PATCH] build: add a gnome_session_ctl_path option
In gsd.service.in the ExecStopPost expects g-s-d libexecdir to
be from the same prefix as gnome-session's, and this is not necessarily
true as there are linux distro's that install their packages into their
own individual prefixes (like NixOS or Guix).
---
meson_options.txt | 1 +
plugins/gsd.service.in | 2 +-
plugins/meson.build | 6 ++++++
3 files changed, 8 insertions(+), 1 deletion(-)
diff --git a/meson_options.txt b/meson_options.txt
index 3e04cf64f..21e003c61 100644
--- a/meson_options.txt
+++ b/meson_options.txt
@@ -1,4 +1,5 @@
option('udev_dir', type: 'string', value: '', description: 'Absolute path of the udev base directory')
+option('gnome_session_ctl_path', type: 'string', value: '', description: 'Absolute path to the gnome-session-ctl binary')
option('systemd', type: 'boolean', value: true, description: 'Enable systemd integration')
option('alsa', type: 'boolean', value: true, description: 'build with ALSA support (not optional on Linux platforms)')
diff --git a/plugins/gsd.service.in b/plugins/gsd.service.in
index 79b5f5536..bfbde6d05 100644
--- a/plugins/gsd.service.in
+++ b/plugins/gsd.service.in
@@ -23,4 +23,4 @@ BusName=@plugin_dbus_name@
TimeoutStopSec=5
# We cannot use OnFailure as e.g. dependency failures are normal
# https://github.com/systemd/systemd/issues/12352
-ExecStopPost=@libexecdir@/gnome-session-ctl --exec-stop-check
+ExecStopPost=@gnome_session_ctl@ --exec-stop-check
diff --git a/plugins/meson.build b/plugins/meson.build
index 83e018854..266a0f093 100644
--- a/plugins/meson.build
+++ b/plugins/meson.build
@@ -20,6 +20,11 @@ all_plugins = [
disabled_plugins = []
+gnome_session_ctl = get_option('gnome_session_ctl_path')
+if gnome_session_ctl == ''
+ gnome_session_ctl = join_paths(gsd_libexecdir, 'gnome-session-ctl')
+endif
+
if not enable_smartcard
disabled_plugins += ['smartcard']
endif
@@ -125,6 +130,7 @@ foreach plugin: all_plugins
unit_conf.set('plugin_name', plugin_name)
unit_conf.set('description', plugin_description)
unit_conf.set('libexecdir', gsd_libexecdir)
+ unit_conf.set('gnome_session_ctl', gnome_session_ctl)
unit_conf.set('plugin_dbus_name', plugin_dbus_name)
unit_conf.set('plugin_restart', plugin_restart_rule.get(plugin_name, 'on-failure'))

View File

@@ -1,5 +1,5 @@
{ lib, stdenv
, fetchpatch
{ stdenv
, lib
, substituteAll
, fetchurl
, meson
@@ -34,26 +34,22 @@
, wrapGAppsHook
, python3
, tzdata
, nss
, gcr_4
, gnome-session-ctl
}:
stdenv.mkDerivation rec {
pname = "gnome-settings-daemon";
version = "44.1";
version = "45.0";
src = fetchurl {
url = "mirror://gnome/sources/gnome-settings-daemon/${lib.versions.major version}/${pname}-${version}.tar.xz";
sha256 = "EmU7ctgfFRMApH1wCslBCsG8zjjoPxvdGc3tKTKUOYk=";
sha256 = "u03EaVDiqQ848jIlhIhW0qextxjInQKFzhl7cBa7Hcg=";
};
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=";
})
./add-gnome-session-ctl-option.patch
(substituteAll {
src = ./fix-paths.patch;
@@ -89,7 +85,6 @@ stdenv.mkDerivation rec {
upower
colord
libgweather
nss
polkit
geocode-glib_2
geoclue2

View File

@@ -13,11 +13,11 @@
stdenv.mkDerivation rec {
pname = "gnome-shell-extensions";
version = "44.0";
version = "45.1";
src = fetchurl {
url = "mirror://gnome/sources/gnome-shell-extensions/${lib.versions.major version}/${pname}-${version}.tar.xz";
sha256 = "jDRecvMaHjf1UGPgsVmXMBsBGU7WmHcv2HrrUMuxAas=";
sha256 = "JC4VoMBuggw/2N1q6sGo74Zc5YiC5Zda8dZZNLtNQmE=";
};
patches = [

View File

@@ -1,11 +1,22 @@
diff --git a/extensions/apps-menu/extension.js b/extensions/apps-menu/extension.js
index 6eb58f1..28e1195 100644
--- 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 */
@@ -10,7 +10,7 @@ import Atk from 'gi://Atk';
import Clutter from 'gi://Clutter';
import Gio from 'gi://Gio';
import GLib from 'gi://GLib';
-import GMenu from 'gi://GMenu';
+import GIRepository from 'gi://GIRepository';
import GObject from 'gi://GObject';
import Gtk from 'gi://Gtk';
import Meta from 'gi://Meta';
@@ -25,6 +25,8 @@ import * as Main from 'resource:///org/gnome/shell/ui/main.js';
import * as PanelMenu from 'resource:///org/gnome/shell/ui/panelMenu.js';
import * as PopupMenu from 'resource:///org/gnome/shell/ui/popupMenu.js';
+imports.gi.GIRepository.Repository.prepend_search_path('@gmenu_path@');
+
const {
Atk, Clutter, Gio, GLib, GMenu, GObject, Gtk, Meta, Shell, St
} = imports.gi;
+GIRepository.Repository.prepend_search_path('@gmenu_path@');
+const {default: GMenu} = await import('gi://GMenu');
const appSys = Shell.AppSystem.get_default();
const APPLICATION_ICON_SIZE = 32;

View File

@@ -28,7 +28,7 @@
, libpulseaudio
, libical
, gobject-introspection
, wrapGAppsHook
, wrapGAppsHook4
, libxslt
, gcr_4
, accountsservice
@@ -37,7 +37,6 @@
, upower
, ibus
, libnma-gtk4
, libgnomekbd
, gnome-desktop
, gsettings-desktop-schemas
, gnome-keyring
@@ -57,6 +56,7 @@
, gnome-clocks
, gnome-settings-daemon
, gnome-autoar
, gnome-tecla
, asciidoc
, bash-completion
, mesa
@@ -67,22 +67,22 @@ let
in
stdenv.mkDerivation rec {
pname = "gnome-shell";
version = "44.5";
version = "45.1";
outputs = [ "out" "devdoc" ];
src = fetchurl {
url = "mirror://gnome/sources/gnome-shell/${lib.versions.major version}/${pname}-${version}.tar.xz";
sha256 = "wWr84Dgd1ZNCfXCER6nR+sdInrApRe+zfpBMp0qSSjU=";
sha256 = "FfykvWEpqLP5kBl/vR7ljXS2QVEK+q8Igqf6NmNPxfI=";
};
patches = [
# Hardcode paths to various dependencies so that they can be found at runtime.
(substituteAll {
src = ./fix-paths.patch;
gkbd_keyboard_display = "${lib.getBin libgnomekbd}/bin/gkbd-keyboard-display";
glib_compile_schemas = "${glib.dev}/bin/glib-compile-schemas";
gsettings = "${glib.bin}/bin/gsettings";
tecla = "${lib.getBin gnome-tecla}/bin/tecla";
unzip = "${lib.getBin unzip}/bin/unzip";
})
@@ -95,11 +95,8 @@ stdenv.mkDerivation rec {
# 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";
})
# Reverts https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1101
./greeter-logo-size.patch
# Work around failing fingerprint auth
(fetchpatch {
@@ -117,7 +114,7 @@ stdenv.mkDerivation rec {
docbook_xml_dtd_45
gtk-doc
perl
wrapGAppsHook
wrapGAppsHook4
sassc
desktop-file-utils
libxslt.bin
@@ -187,7 +184,7 @@ stdenv.mkDerivation rec {
# We can generate it ourselves.
rm -f man/gnome-shell.1
rm data/theme/gnome-shell.css
rm data/theme/gnome-shell-{light,dark}.css
'';
postInstall = ''

View File

@@ -39,8 +39,8 @@ index fff4e73c2..92859b099 100644
if (xkbVariant.length > 0)
description = `${description}\t${xkbVariant}`;
- Util.spawn(['gkbd-keyboard-display', '-l', description]);
+ Util.spawn(['@gkbd_keyboard_display@', '-l', description]);
- Util.spawn(['tecla', description]);
+ Util.spawn(['@tecla@', description]);
}
});
diff --git a/subprojects/extensions-tool/src/command-install.c b/subprojects/extensions-tool/src/command-install.c

View File

@@ -0,0 +1,21 @@
diff --git a/js/gdm/loginDialog.js b/js/gdm/loginDialog.js
index a3e4372b4..36f6c1f47 100644
--- a/js/gdm/loginDialog.js
+++ b/js/gdm/loginDialog.js
@@ -43,6 +43,7 @@ import * as UserWidget from '../ui/userWidget.js';
const _FADE_ANIMATION_TIME = 250;
const _SCROLL_ANIMATION_TIME = 500;
const _TIMED_LOGIN_IDLE_THRESHOLD = 5.0;
+const _LOGO_ICON_HEIGHT = 48;
export const UserListItem = GObject.registerClass({
Signals: {'activate': {}},
@@ -839,7 +840,7 @@ export const LoginDialog = GObject.registerClass({
const scaleFactor = St.ThemeContext.get_for_stage(global.stage).scale_factor;
const texture = this._textureCache.load_file_async(
this._logoFile,
- -1, -1,
+ -1, _LOGO_ICON_HEIGHT,
scaleFactor, resourceScale);
this._logoBin.add_child(texture);
}

View File

@@ -1,19 +1,19 @@
diff --git a/js/dbusServices/dbus-service.in b/js/dbusServices/dbus-service.in
old mode 100644
new mode 100755
index 524166102..6d0722a1c
index 5c698f58a..1ed61a7e3
--- a/js/dbusServices/dbus-service.in
+++ b/js/dbusServices/dbus-service.in
@@ -1,3 +1,9 @@
+#!@gjs@
+#!@gjs@ -m
+
+// 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@',
import {programInvocationName, programArgs} from 'system';
imports.package.init({
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
@@ -21,7 +21,7 @@ index 3b0d09abe..4fd4bb66d 100644
@@ -1,3 +1,3 @@
[D-BUS Service]
Name=@service@
-Exec=@gjs@ @pkgdatadir@/@service@
-Exec=@gjs@ -m @pkgdatadir@/@service@
+Exec=@pkgdatadir@/@service@
diff --git a/js/dbusServices/meson.build b/js/dbusServices/meson.build
index eb941ed90..552051e5a 100644

View File

@@ -45,11 +45,11 @@ in
stdenv.mkDerivation rec {
pname = "gnome-software";
version = "44.4";
version = "45.1";
src = fetchurl {
url = "mirror://gnome/sources/gnome-software/${lib.versions.major version}/${pname}-${version}.tar.xz";
sha256 = "i1N2fvbMVKLbWI7xxZJoOLDWe42bIRc95ROc0PvSgJU=";
sha256 = "1ySF96bgkX9k7b7daP17VyRsbr8QxaRRCLY5RmNXeKI=";
};
patches = [

View File

@@ -23,11 +23,11 @@
stdenv.mkDerivation rec {
pname = "gnome-system-monitor";
version = "44.0";
version = "45.0.2";
src = fetchurl {
url = "mirror://gnome/sources/gnome-system-monitor/${lib.versions.major version}/${pname}-${version}.tar.xz";
sha256 = "wrq37dupKCfEyN5EKT5+PITJ5QdvMZhYh/+Jac7EXm4=";
sha256 = "xeJy2Qv5mGo/hhPXbg0n+kLfrO5cAZLnOSG7lLGGii4=";
};
patches = [

View File

@@ -12,6 +12,7 @@
, glib
, gtk4
, gtk3
, libhandy
, gsettings-desktop-schemas
, vte
, gettext
@@ -29,14 +30,14 @@
stdenv.mkDerivation rec {
pname = "gnome-terminal";
version = "3.48.2";
version = "3.50.1";
src = fetchFromGitLab {
domain = "gitlab.gnome.org";
owner = "GNOME";
repo = "gnome-terminal";
rev = version;
sha256 = "sha256-WvFKFh5BK6AS+Lqyh27xIfH1rxs1+YTkywX4w9UashQ=";
sha256 = "sha256-lJAzmz8tvEbr371VtYjlV4+z3cSy4QrmP0vmD5WiJD4=";
};
nativeBuildInputs = [
@@ -61,6 +62,7 @@ stdenv.mkDerivation rec {
glib
gtk4
gtk3
libhandy
gsettings-desktop-schemas
vte
libuuid

View File

@@ -22,11 +22,11 @@
stdenv.mkDerivation rec {
pname = "gnome-tour";
version = "44.0";
version = "45.0";
src = fetchurl {
url = "mirror://gnome/sources/${pname}/${lib.versions.major version}/${pname}-${version}.tar.xz";
hash = "sha256-Bt52d90cWQ0OozoDLJzPTDfGK8ViFbgjyHnkLuYwwrY=";
hash = "sha256-W+S470uPTV7KzMMQSNtuCFqPe/+tqghDuOiniP8dre4=";
};
cargoVendorDir = "vendor";

View File

@@ -45,7 +45,7 @@ let
};
in stdenv.mkDerivation rec {
pname = "gucharmap";
version = "15.0.4";
version = "15.1.2";
outputs = [ "out" "lib" "dev" "devdoc" ];
@@ -54,7 +54,7 @@ in stdenv.mkDerivation rec {
owner = "GNOME";
repo = "gucharmap";
rev = version;
sha256 = "sha256-lfWIaAr5FGWvDkNLOPe19hVQiFarbYVXwM78jZc5FFk=";
sha256 = "sha256-tvFw2k5xCl+QE6cHvLj5KKdYFSghN7PVgHPmd27wh7k=";
};
strictDeps = true;

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