Budgie 10.10 (#478923)

This commit is contained in:
Bobby Rong
2026-02-03 15:37:58 +00:00
committed by GitHub
16 changed files with 171 additions and 387 deletions
@@ -133,6 +133,8 @@ See <https://github.com/NixOS/nixpkgs/issues/481673>.
- Cinnamon has been updated to 6.6, please check the [upstream announcement](https://www.linuxmint.com/rel_zena_whatsnew.php) for more details.
- Budgie has been updated to 10.10, please check the [upstream announcement](https://buddiesofbudgie.org/blog/budgie-10-10-released) for more details.
- `services.frp` now supports multiple instances through `services.frp.instances` to make it possible to run multiple frp clients or servers at the same time.
- `hyphen` now supports over 40 language variants through `hyphenDicts` and now allows to enable all supported languages through `hyphenDicts.all`.
@@ -156,15 +156,19 @@ in
fi
'';
# https://docs.buddiesofbudgie.org/10.10/developer/workflow/building-budgie-desktop/#compositor-recommendations
programs.labwc.enable = mkDefault true;
programs.gtklock.enable = mkDefault true;
environment.systemPackages =
with pkgs;
[
# Budgie Desktop.
budgie-backgrounds
budgie-control-center'
budgie-desktop-services
(budgie-desktop-with-plugins.override { plugins = cfg.extraPlugins; })
budgie-desktop-view
budgie-screensaver
budgie-session
# Required by Budgie Menu.
@@ -190,6 +194,17 @@ in
mate.mate-system-monitor
vlc
# Supplemental tooling.
# See budgie-desktop's with-runtime-dependencies meson option.
gammastep
grim
killall
slurp
swaybg
swayidle
wdisplays
wlopm
# Desktop themes.
qogir-theme
qogir-icon-theme
@@ -224,9 +239,6 @@ in
services.xserver.updateDbusEnvironment = true;
programs.dconf.enable = true;
# Required by Budgie Screensaver.
security.pam.services.budgie-screensaver = { };
# Required by Budgie's Polkit Dialog.
security.polkit.enable = mkDefault true;
@@ -240,6 +252,7 @@ in
xdg.portal.enable = mkDefault true; # for BCC's Applications panel.
xdg.portal.extraPortals = with pkgs; [
xdg-desktop-portal-gtk # provides a XDG Portals implementation.
xdg-desktop-portal-wlr # for screenshot and screencast.
];
xdg.portal.configPackages = mkDefault [ pkgs.budgie-desktop ];
@@ -274,11 +287,7 @@ in
# Register packages for DBus.
services.dbus.packages = [
budgie-control-center'
];
# Register packages for udev.
services.udev.packages = with pkgs; [
magpie
pkgs.budgie-desktop-services
];
# Shell integration for MATE Terminal.
+21 -26
View File
@@ -29,37 +29,38 @@
pkgs.budgie-analogue-clock-applet
];
};
environment.systemPackages = [ pkgs.wlrctl ];
};
enableOCR = true;
testScript =
{ nodes, ... }:
let
user = nodes.machine.users.users.alice;
env = "DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/${toString user.uid}/bus DISPLAY=:0";
su = command: "su - ${user.name} -c '${env} ${command}'";
env = "XDG_RUNTIME_DIR=/run/user/${toString user.uid}";
in
''
with subtest("Wait for login"):
machine.wait_for_x()
machine.wait_for_unit("display-manager.service")
machine.wait_for_file("/run/user/${toString user.uid}/wayland-0")
machine.wait_until_succeeds('journalctl -t budgie-session-binary --grep "Entering running state"')
machine.wait_for_file("${user.home}/.Xauthority")
machine.succeed("xauth merge ${user.home}/.Xauthority")
machine.wait_until_succeeds('journalctl --grep "Compositor is fully initialized"')
with subtest("Check that logging in has given the user ownership of devices"):
# Change back to /dev/snd/timer after systemd-258.1
machine.succeed("getfacl -p /dev/dri/card0 | grep -q ${user.name}")
with subtest("Check if Budgie session components actually start"):
for i in ["budgie-daemon", "budgie-panel", "budgie-wm", "bsd-media-keys", "gsd-xsettings"]:
for i in ["budgie-daemon", "budgie-panel", "labwc", "budgie-session", "swaybg", "swayidle"]:
machine.wait_until_succeeds(f"pgrep {i}")
machine.wait_until_succeeds("pgrep -xf ${pkgs.gnome-settings-daemon}/libexec/gsd-sound")
machine.wait_until_succeeds("pgrep -xf ${pkgs.budgie-desktop-services}/bin/org.buddiesofbudgie.Services")
machine.wait_until_succeeds("pgrep -xf /run/current-system/sw/bin/org.buddiesofbudgie.budgie-desktop-view")
# We don't check xwininfo for budgie-wm.
# See https://github.com/NixOS/nixpkgs/pull/216737#discussion_r1155312754
machine.wait_for_window("budgie-daemon")
machine.wait_for_window("budgie-panel")
with subtest("Check if various environment variables are set"):
cmd = "xargs --null --max-args=1 echo < /proc/$(pgrep -xf /run/current-system/sw/bin/budgie-wm)/environ"
cmd = "xargs --null --max-args=1 echo < /proc/$(pgrep -xf /run/current-system/sw/bin/budgie-panel)/environ"
machine.succeed(f"{cmd} | grep 'XDG_CURRENT_DESKTOP' | grep 'Budgie'")
machine.succeed(f"{cmd} | grep 'BUDGIE_PLUGIN_DATADIR' | grep '${pkgs.budgie-desktop-with-plugins.pname}'")
# From the nixos/budgie module
@@ -67,28 +68,22 @@
with subtest("Open run dialog"):
machine.send_key("alt-f2")
machine.wait_for_window("budgie-run-dialog")
machine.wait_until_succeeds("pgrep -xf budgie-run-dialog")
machine.sleep(2)
machine.screenshot("run_dialog")
machine.send_key("esc")
with subtest("Open Budgie Control Center"):
machine.succeed("${su "budgie-control-center >&2 &"}")
machine.wait_for_window("Budgie Control Center")
with subtest("Lock the screen"):
machine.succeed("${su "budgie-screensaver-command -l >&2 &"}")
machine.wait_until_succeeds("${su "budgie-screensaver-command -q"} | grep 'The screensaver is active'")
machine.sleep(2)
machine.send_chars("${user.password}", delay=0.5)
machine.screenshot("budgie_screensaver")
machine.send_chars("\n")
machine.wait_until_succeeds("${su "budgie-screensaver-command -q"} | grep 'The screensaver is inactive'")
machine.sleep(2)
machine.succeed("su - ${user.name} -c '${env} budgie-control-center >&2 &'")
machine.wait_until_succeeds("su - ${user.name} -c '${env} wlrctl toplevel list | grep org.buddiesofbudgie.ControlCenter'")
machine.wait_for_text("Network|Ethernet|Control|Connected")
with subtest("Open GNOME terminal"):
machine.succeed("${su "gnome-terminal"}")
machine.wait_for_window("${user.name}@machine: ~")
machine.succeed("su - ${user.name} -c '${env} gnome-terminal >&2 &'")
machine.wait_until_succeeds("su - ${user.name} -c '${env} wlrctl toplevel list | grep ${user.name}@machine'")
with subtest("Check if labwc bridge is working"):
machine.wait_until_succeeds("cat /home/${user.name}/.config/budgie-desktop/labwc/rc.xml | grep Qogir")
with subtest("Check if Budgie has ever coredumped"):
machine.fail("coredumpctl --json=short | grep budgie")
@@ -15,13 +15,13 @@
stdenv.mkDerivation (finalAttrs: {
pname = "budgie-analogue-clock-applet";
version = "2.2";
version = "2.2-unstable-2026-01-13";
src = fetchFromGitHub {
owner = "samlane-ma";
repo = "analogue-clock-applet";
rev = "v${finalAttrs.version}";
hash = "sha256-8kqDEzcUqg/TvwpazYQt1oQDVC00fOxFLVsKYMDuV9I=";
rev = "22b04faeea8f95eb83ad96ae89529560811d76d9";
hash = "sha256-8ZFExgE1aJ8XN4+ugSzI34UjdPHbtbhJ+3xetcLZ6sg=";
};
nativeBuildInputs = [
@@ -38,18 +38,6 @@ stdenv.mkDerivation (finalAttrs: {
libpeas2
];
postPatch = ''
# https://github.com/samlane-ma/analogue-clock-applet/issues/7
substituteInPlace budgie-analogue-clock-widget/src/meson.build \
--replace-fail "dependency('budgie-raven-plugin-1.0')" "dependency('budgie-raven-plugin-2.0')"
'';
mesonFlags = [
# The meson option actually enables libpeas2 support
# https://github.com/BuddiesOfBudgie/budgie-desktop/issues/749
"-Dfor-wayland=true"
];
passthru = {
updateScript = nix-update-script { };
};
@@ -0,0 +1,5 @@
# Introduction panel default applications
# This file contains full paths to .desktop files to display
# Lines starting with # are comments
@wdisplays@/share/applications/network.cycles.wdisplays.desktop
@budgie_desktop@/share/applications/org.buddiesofbudgie.BudgieDesktopSettings.desktop
@@ -4,11 +4,8 @@
fetchFromGitHub,
replaceVars,
accountsservice,
adwaita-icon-theme,
budgie-desktop,
cheese,
clutter,
clutter-gtk,
colord,
colord-gtk,
cups,
@@ -25,14 +22,11 @@
gnome-bluetooth_1_0,
gnome-color-manager,
gnome-desktop,
gnome-remote-desktop,
gnome-settings-daemon,
gnome-user-share,
gsettings-desktop-schemas,
gsound,
gtk3,
ibus,
libcanberra-gtk3,
libepoxy,
libgnomekbd,
libgtop,
@@ -49,7 +43,6 @@
libxslt,
meson,
modemmanager,
mutter,
networkmanager,
networkmanagerapplet,
ninja,
@@ -63,21 +56,30 @@
tzdata,
udisks,
upower,
wdisplays,
webp-pixbuf-loader,
wrapGAppsHook3,
enableSshSocket ? false,
}:
let
introduction_list = (
replaceVars ./introduction.list {
budgie_desktop = budgie-desktop;
inherit wdisplays;
}
);
in
stdenv.mkDerivation (finalAttrs: {
pname = "budgie-control-center";
version = "1.4.1";
version = "2.1.0";
src = fetchFromGitHub {
owner = "BuddiesOfBudgie";
repo = "budgie-control-center";
tag = "v${finalAttrs.version}";
fetchSubmodules = true;
hash = "sha256-Je3X1V4U2t0LMxWwtoYZKEI56IS4zK/w6OL615tqKkk=";
hash = "sha256-sdAzReZVAZ5omLOhly/l3buiw01eem+k9+3RbVPzS2g=";
};
patches = [
@@ -106,8 +108,6 @@ stdenv.mkDerivation (finalAttrs: {
buildInputs = [
accountsservice
clutter
clutter-gtk
colord
colord-gtk
fontconfig
@@ -117,18 +117,13 @@ stdenv.mkDerivation (finalAttrs: {
glib-networking
gnome-desktop
gst_all_1.gstreamer
adwaita-icon-theme
cheese
gnome-bluetooth_1_0
gnome-remote-desktop
gnome-settings-daemon
gnome-user-share
mutter
gsettings-desktop-schemas
gsound
gtk3
ibus
libcanberra-gtk3
libepoxy
libgtop
libgudev
@@ -137,7 +132,6 @@ stdenv.mkDerivation (finalAttrs: {
libnma
libpulseaudio
libpwquality
librsvg
libsecret
libwacom
libxml2
@@ -167,6 +161,8 @@ stdenv.mkDerivation (finalAttrs: {
];
}
}"
install -Dm644 ${introduction_list} $out/share/budgie-control-center/introduction/introduction.list
'';
preFixup = ''
@@ -176,18 +172,11 @@ stdenv.mkDerivation (finalAttrs: {
# Thumbnailers (for setting user profile pictures)
--prefix XDG_DATA_DIRS : "${gdk-pixbuf}/share"
--prefix XDG_DATA_DIRS : "${librsvg}/share"
# WM keyboard shortcuts
--prefix XDG_DATA_DIRS : "${mutter}/share"
)
'';
separateDebugInfo = true;
# Fix GCC 14 build.
# cc-display-panel.c:962:41: error: passing argument 1 of 'gtk_widget_set_sensitive'
# from incompatible pointer type [-Wincompatible-pointer-types]
env.NIX_CFLAGS_COMPILE = "-Wno-error=incompatible-pointer-types";
passthru = {
tests.version = testers.testVersion { package = finalAttrs.finalPackage; };
updateScript = nix-update-script { };
@@ -0,0 +1,50 @@
{
stdenv,
lib,
fetchFromGitea,
cmake,
kdePackages,
qt6,
toml11,
buildPackages,
}:
stdenv.mkDerivation (finalAttrs: {
pname = "budgie-desktop-services";
version = "1.0.2";
src = fetchFromGitea {
domain = "forge.moderndesktop.dev";
owner = "BuddiesOfBudgie";
repo = "budgie-desktop-services";
tag = finalAttrs.version;
hash = "sha256-YOa2pUePp33d1xKF7HrBX2EkjEQsRmzoiJMq72fl3CE=";
};
nativeBuildInputs = [
cmake
kdePackages.extra-cmake-modules
qt6.wrapQtAppsHook
];
buildInputs = [
kdePackages.kwayland
qt6.qtbase
toml11
];
postPatch = ''
substituteInPlace cmake/ECMFindModuleHelpersStub.cmake --replace-fail \
'/usr/share/ECM/modules//ECMFindModuleHelpers.cmake' \
'${buildPackages.kdePackages.extra-cmake-modules}/share/ECM/modules/ECMFindModuleHelpers.cmake'
'';
meta = {
description = "Future central hub and orchestrator for Budgie Desktop";
mainProgram = "org.buddiesofbudgie.Services";
homepage = "https://forge.moderndesktop.dev/BuddiesOfBudgie/budgie-desktop-services";
license = lib.licenses.mpl20;
teams = [ lib.teams.budgie ];
platforms = lib.platforms.linux;
};
})
@@ -5,7 +5,9 @@
desktop-file-utils,
glib,
gtk3,
gtk-layer-shell,
intltool,
libxfce4windowing,
meson,
ninja,
nix-update-script,
@@ -16,13 +18,13 @@
stdenv.mkDerivation (finalAttrs: {
pname = "budgie-desktop-view";
version = "1.3";
version = "10.10.1";
src = fetchFromGitHub {
owner = "BuddiesOfBudgie";
repo = "budgie-desktop-view";
rev = "v${finalAttrs.version}";
hash = "sha256-k6VfAGWvUarhBFnREasOvWH3M9uuT5SFUpMFmKo1fmE=";
hash = "sha256-ro+/Aqsyr9py3SEdsRg+eiQLDkFI0wI4MMdCyH02E3U=";
};
nativeBuildInputs = [
@@ -38,6 +40,8 @@ stdenv.mkDerivation (finalAttrs: {
buildInputs = [
glib
gtk3
gtk-layer-shell
libxfce4windowing
];
mesonFlags = [ (lib.mesonBool "werror" false) ];
+37 -37
View File
@@ -4,58 +4,61 @@
fetchFromGitHub,
accountsservice,
alsa-lib,
budgie-screensaver,
budgie-desktop-services,
budgie-session,
docbook-xsl-nons,
glib,
gnome-desktop,
gnome-settings-daemon,
gobject-introspection,
graphene,
gst_all_1,
gtk-doc,
gtk3,
gtk-layer-shell,
ibus,
intltool,
libcanberra-gtk3,
libgee,
libGL,
libgudev,
libnotify,
libpeas2,
libpulseaudio,
libuuid,
libwacom,
libwnck,
magpie,
libgbm,
libxfce4windowing,
meson,
mutter,
ninja,
nix-update-script,
nixosTests,
pkg-config,
polkit,
python3,
sassc,
testers,
udev,
upower,
vala,
validatePkgConfig,
libxfce4windowing,
wrapGAppsHook3,
zenity,
}:
let
pythonEnv = python3.withPackages (
pp: with pp; [
psutil
pygobject3
systemd-python
]
);
in
stdenv.mkDerivation (finalAttrs: {
pname = "budgie-desktop";
version = "10.9.4";
version = "10.10.1";
src = fetchFromGitHub {
owner = "BuddiesOfBudgie";
repo = "budgie-desktop";
tag = "v${finalAttrs.version}";
fetchSubmodules = true;
hash = "sha256-e1kkmzSYX8TwiY0IIZYIK/FgMbZ/8PqkUn8pk3CcXHU=";
hash = "sha256-6SRnub0FMRE9AcHwsnYH4WMdG2kqEpl5dfHy56FwrGU=";
};
outputs = [
@@ -76,6 +79,7 @@ stdenv.mkDerivation (finalAttrs: {
meson
ninja
pkg-config
sassc
vala
validatePkgConfig
wrapGAppsHook3
@@ -84,54 +88,50 @@ stdenv.mkDerivation (finalAttrs: {
buildInputs = [
accountsservice
alsa-lib
budgie-screensaver
glib
gnome-desktop
gnome-settings-daemon
mutter
zenity
graphene
gst_all_1.gstreamer
gst_all_1.gst-plugins-base
gtk3
gtk-layer-shell
ibus
libcanberra-gtk3
libgee
libGL
libgudev
libnotify
libpulseaudio
libuuid
libwacom
libwnck
magpie
libgbm
polkit
sassc
udev
upower
libxfce4windowing
mutter # org.gnome.mutter.keybindings
pythonEnv
upower
];
propagatedBuildInputs = [
# budgie-1.0.pc, budgie-raven-plugin-1.0.pc
# budgie-3.0.pc, budgie-raven-plugin-3.0.pc
libpeas2
];
mesonFlags = [
# FIXME: The meson option name is confusing
# https://github.com/BuddiesOfBudgie/budgie-desktop/pull/739#discussion_r2359421711
"-Dbsd-libexecdir=${gnome-settings-daemon}/libexec"
"-Dgsd-libexecdir=${gnome-settings-daemon}/libexec"
"-Dwith-runtime-dependencies=false"
];
postPatch = ''
substituteInPlace src/session/budgie-desktop.in \
--replace-fail "@bindir@/org.buddiesofbudgie.Services" "${lib.getExe budgie-desktop-services}" \
--replace-fail "@gsd_libexecdir@/budgie-session-compositor-ready" "${budgie-session}/libexec/budgie-session-compositor-ready"
chmod +x src/bridges/labwc/labwc_bridge.py
substituteInPlace src/bridges/labwc/org.buddiesofbudgie.labwc-bridge.desktop.in \
--replace-fail "Exec=python3 @libexecdir@/labwc_bridge.py" "Exec=@libexecdir@/labwc_bridge.py"
'';
passthru = {
providedSessions = [ "budgie-desktop" ];
tests = {
inherit (nixosTests) budgie;
pkg-config = testers.hasPkgConfigModules { package = finalAttrs.finalPackage; };
};
tests.pkg-config = testers.hasPkgConfigModules { package = finalAttrs.finalPackage; };
updateScript = nix-update-script { };
};
@@ -147,8 +147,8 @@ stdenv.mkDerivation (finalAttrs: {
teams = [ lib.teams.budgie ];
platforms = lib.platforms.linux;
pkgConfigModules = [
"budgie-2.0"
"budgie-raven-plugin-2.0"
"budgie-3.0"
"budgie-raven-plugin-3.0"
"budgie-theme-1.0"
];
};
@@ -1,81 +0,0 @@
{
lib,
stdenv,
fetchFromGitHub,
dbus-glib,
glib,
gnome-desktop,
gtk3,
intltool,
libgnomekbd,
libX11,
linux-pam,
meson,
ninja,
nix-update-script,
pkg-config,
systemd,
testers,
wrapGAppsHook3,
libxxf86vm,
}:
stdenv.mkDerivation (finalAttrs: {
pname = "budgie-screensaver";
version = "5.1.0";
src = fetchFromGitHub {
owner = "BuddiesOfBudgie";
repo = "budgie-screensaver";
rev = "v${finalAttrs.version}";
hash = "sha256-N8x9hdbaMDisTbQPJedNO4UMLnCn+Q2hhm4udJZgQlc=";
};
outputs = [
"out"
"man"
];
nativeBuildInputs = [
intltool
meson
ninja
pkg-config
wrapGAppsHook3
];
buildInputs = [
dbus-glib
glib
gnome-desktop
gtk3
libgnomekbd
libX11
linux-pam
systemd
libxxf86vm
];
# Fix GCC 14 build.
# https://hydra.nixos.org/build/282164464/nixlog/3
env.NIX_CFLAGS_COMPILE = "-D_POSIX_C_SOURCE -Wno-error=implicit-function-declaration";
passthru = {
tests.version = testers.testVersion {
package = finalAttrs.finalPackage;
command = "budgie-screensaver-command --version";
};
updateScript = nix-update-script { };
};
meta = {
description = "Fork of old GNOME Screensaver for purposes of providing an authentication prompt on wake";
homepage = "https://github.com/BuddiesOfBudgie/budgie-screensaver";
changelog = "https://github.com/BuddiesOfBudgie/budgie-screensaver/releases/tag/v${finalAttrs.version}";
license = lib.licenses.gpl2Only;
teams = [ lib.teams.budgie ];
mainProgram = "budgie-screensaver";
platforms = lib.platforms.linux;
};
})
@@ -27,9 +27,9 @@ index 327c7c7f..301ec7ee 100644
@@ -219,7 +219,7 @@ require_dbus_session (int argc,
}
new_argv[i + 2] = NULL;
- if (!execvp ("dbus-launch", new_argv)) {
+ if (!execvp ("@dbusLaunch@", new_argv)) {
g_set_error (error,
g_set_error (error,
G_SPAWN_ERROR,
G_SPAWN_ERROR_FAILED,
+2 -2
View File
@@ -31,13 +31,13 @@
stdenv.mkDerivation (finalAttrs: {
pname = "budgie-session";
version = "0.9.1";
version = "1.0.0";
src = fetchFromGitHub {
owner = "BuddiesOfBudgie";
repo = "budgie-session";
rev = "v${finalAttrs.version}";
hash = "sha256-mz+Yh3NK2Tag+MWVofFFXYYXspxhmYBD6YCiuATpZSI=";
hash = "sha256-KBNX1jbQ2yv+5rymoB9/w5V3bRZhBdZIJoysp9cNgn4=";
};
outputs = [
@@ -5,6 +5,7 @@
fetchFromGitHub,
glib,
gtk3,
gtk-layer-shell,
libgee,
libgtop,
libpeas2,
@@ -43,6 +44,7 @@ stdenv.mkDerivation (finalAttrs: {
budgie-desktop
glib
gtk3
gtk-layer-shell
libgee
libgtop
libpeas2
@@ -53,7 +55,7 @@ stdenv.mkDerivation (finalAttrs: {
# https://github.com/prateekmedia/budgie-systemmonitor-applet/issues/4
substituteInPlace meson.build \
--replace-fail "dependency('libpeas-1.0', version: '>= 1.8.0')" "dependency('libpeas-2')" \
--replace-fail "dependency('budgie-1.0', version: '>= 2')" "dependency('budgie-2.0')"
--replace-fail "dependency('budgie-1.0', version: '>= 2')" "dependency('budgie-3.0')"
'';
passthru = {
@@ -5,6 +5,7 @@
accountsservice,
budgie-desktop,
gtk3,
gtk-layer-shell,
intltool,
libgee,
libpeas2,
@@ -39,11 +40,17 @@ stdenv.mkDerivation (finalAttrs: {
accountsservice
budgie-desktop
gtk3
gtk-layer-shell
libgee
libpeas2
sassc
];
postPatch = ''
substituteInPlace meson.build \
--replace-fail "dependency('budgie-2.0', version: '>= 3')" "dependency('budgie-3.0')"
'';
passthru = {
updateScript = nix-update-script { };
};
-188
View File
@@ -1,188 +0,0 @@
{
fetchFromGitHub,
runCommand,
lib,
fetchpatch,
stdenv,
pkg-config,
gnome-settings-daemon,
gettext,
gobject-introspection,
cairo,
colord,
lcms2,
pango,
json-glib,
libstartup_notification,
libcanberra,
ninja,
xvfb-run,
xkeyboard_config,
libxcvt,
libxkbfile,
libXdamage,
libxkbcommon,
libXtst,
libinput,
libdrm,
libgbm,
gsettings-desktop-schemas,
glib,
gtk3,
gnome-desktop,
pipewire,
libgudev,
libwacom,
mesa-gl-headers,
meson,
nix-update-script,
validatePkgConfig,
xorgserver,
python3,
wrapGAppsHook3,
gi-docgen,
sysprof,
testers,
libsysprof-capture,
desktop-file-utils,
libcap_ng,
graphene,
}:
stdenv.mkDerivation (finalAttrs: {
pname = "magpie";
version = "0.9.4";
outputs = [
"out"
"dev"
"devdoc"
];
src = fetchFromGitHub {
owner = "BuddiesOfBudgie";
repo = "magpie";
rev = "v${finalAttrs.version}";
hash = "sha256-a8e0uzbS0HEH/0sOOnwIiQI0/BizKbpdlVdfb3IbmcU=";
};
patches = [
# Fix build with separate sysprof.
# https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/2572
(fetchpatch {
url = "https://gitlab.gnome.org/GNOME/mutter/-/commit/285a5a4d54ca83b136b787ce5ebf1d774f9499d5.patch";
hash = "sha256-/npUE3idMSTVlFptsDpZmGWjZ/d2gqruVlJKq4eF4xU=";
})
];
mesonFlags = [
"-Degl_device=true"
"-Dprofiler=true"
"-Ddocs=true"
];
propagatedBuildInputs = [
# required for pkg-config to detect magpie-clutter
json-glib
libXtst
libcap_ng
graphene
mesa-gl-headers
];
nativeBuildInputs = [
desktop-file-utils
gettext
libxcvt
meson
ninja
xvfb-run
pkg-config
python3
validatePkgConfig
wrapGAppsHook3
gi-docgen
xorgserver
];
buildInputs = [
cairo
glib
gnome-desktop
gnome-settings-daemon
gobject-introspection
gsettings-desktop-schemas
gtk3
libcanberra
libdrm
libgbm
libgudev
libinput
libstartup_notification
libwacom
libxkbcommon
libxkbfile
libXdamage
colord
lcms2
pango
pipewire
sysprof # for D-Bus interfaces
libsysprof-capture
xkeyboard_config
];
postPatch = ''
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 = ''
# Cannot be in postInstall, otherwise _multioutDocs hook in preFixup will move right back.
# TODO: Move this into a directory devhelp can find.
moveToOutput "share/magpie-0/doc" "$devdoc"
'';
# Install udev files into our own tree.
env.PKG_CONFIG_UDEV_UDEVDIR = "${placeholder "out"}/lib/udev";
separateDebugInfo = true;
passthru = {
libdir = "${finalAttrs.finalPackage}/lib/magpie-0";
tests = {
libdirExists = runCommand "magpie-libdir-exists" { } ''
if [[ ! -d ${finalAttrs.finalPackage.libdir} ]]; then
echo "passthru.libdir should contain a directory, ${finalAttrs.finalPackage.libdir} is not one."
exit 1
fi
touch $out
'';
pkg-config = testers.hasPkgConfigModules { package = finalAttrs.finalPackage; };
};
updateScript = nix-update-script { };
};
meta = {
description = "Softish fork of Mutter 43.x";
homepage = "https://github.com/BuddiesOfBudgie/magpie";
changelog = "https://github.com/BuddiesOfBudgie/magpie/releases/tag/v${finalAttrs.version}";
license = lib.licenses.gpl2Plus;
teams = [ lib.teams.budgie ];
platforms = lib.platforms.linux;
pkgConfigModules = [
"libmagpie-0"
"magpie-clutter-0"
"magpie-cogl-0"
"magpie-cogl-pango-0"
];
};
})
+2
View File
@@ -391,6 +391,7 @@ mapAliases {
brogue = warnAlias "Use 'brogue-ce' instead of 'brogue' for updated releases" brogue-ce; # Added 2025-10-04
btanks = throw "'btanks' has been removed as it's been unmaintained since 2010 and fails to build"; # Added 2025-11-29
buck = throw "'buck' has been removed has it was deprecated and archived upstream. Consider moving to buck2"; # Added 2026-01-16
budgie-screensaver = throw "'budgie-screensaver' has been removed, no longer used by budgie-desktop."; # Added 2025-11-19
buildBowerComponents = throw "buildBowerComponents has been removed as bower was removed. It is recommended to migrate to yarn."; # Added 2025-09-17
buildGo123Module = throw "Go 1.23 is end-of-life, and 'buildGo123Module' has been removed. Please use a newer builder version."; # Added 2025-08-13
buildPlatform = warnAlias "'buildPlatform' has been renamed to/replaced by 'stdenv.buildPlatform'" stdenv.buildPlatform; # Converted to warning 2025-10-28
@@ -1165,6 +1166,7 @@ mapAliases {
MACS2 = throw "'MACS2' has been renamed to/replaced by 'macs2'"; # Converted to throw 2025-10-27
magma_2_6_2 = throw "'magma_2_6_2' has been removed, use the latest 'magma' package instead."; # Added 2025-07-20
magma_2_7_2 = throw "'magma_2_7_2' has been removed, use the latest 'magma' package instead."; # Added 2025-07-20
magpie = throw "'magpie' has been removed, no longer used by budgie-desktop."; # Added 2025-11-19
mailcore2 = throw "'mailcore2' has been removed due to lack of upstream maintenance."; # Added 2025-06-09
mailnag = throw "mailnag has been removed because it has been marked as broken since 2022."; # Added 2025-10-12
mailnagWithPlugins = throw "mailnagWithPlugins has been removed because mailnag has been marked as broken since 2022."; # Added 2025-10-12