Files
nixpkgs/pkgs/by-name/ci/cinnamon/package.nix
Dark Steveneq 646b892680
Some checks failed
Periodic Merges (6h) / master → staging-nixos (push) Failing after 12m50s
Periodic Merges (6h) / master → staging-next (push) Failing after 12m54s
Periodic Merges (24h) / merge-base(master,staging) → haskell-updates (push) Failing after 11m54s
Periodic Merges (6h) / staging-next → staging (push) Failing after 12m13s
Periodic Merges (24h) / staging-next-25.05 → staging-25.05 (push) Failing after 13m24s
Periodic Merges (24h) / release-25.05 → staging-next-25.05 (push) Failing after 14m28s
push sheeet
2025-10-09 14:15:47 +02:00

238 lines
5.9 KiB
Nix

{
atk,
cacert,
dbus,
cinnamon-control-center,
cinnamon-desktop,
cinnamon-menus,
cinnamon-session,
cinnamon-translations,
cjs,
evolution-data-server,
fetchFromGitHub,
fetchpatch,
gcr,
gdk-pixbuf,
gettext,
libgnomekbd,
glib,
gobject-introspection,
gsound,
gtk3,
intltool,
json-glib,
libsecret,
libstartup_notification,
libXtst,
libXdamage,
libgbm,
muffin,
networkmanager,
pkg-config,
polkit,
lib,
stdenv,
wrapGAppsHook3,
libxml2,
gtk-doc,
caribou,
python3,
keybinder3,
cairo,
xapp,
upower,
nemo,
libnotify,
accountsservice,
gnome-online-accounts,
glib-networking,
pciutils,
timezonemap,
libnma,
meson,
ninja,
gst_all_1,
perl,
}:
let
pythonEnv = python3.withPackages (
pp: with pp; [
dbus-python
setproctitle
pygobject3
pycairo
python-xapp
pillow
pyinotify # for looking-glass
pytz
tinycss2
python-pam
pexpect
distro
requests
]
);
in
stdenv.mkDerivation rec {
pname = "cinnamon";
version = "6.4.13";
src = fetchFromGitHub {
owner = "linuxmint";
repo = "cinnamon";
tag = version;
hash = "sha256-XGG5Qf6Kx1gvZITuuZWn1ggY4FNW/aEuBLbpWyxE2V8=";
};
patches = [
./use-sane-install-dir.patch
./libdir.patch
# js: Use DesktopAppInfo form GioUnix, not Gio
# https://github.com/linuxmint/cinnamon/pull/13091
(fetchpatch {
url = "https://github.com/linuxmint/cinnamon/commit/fa3aef20533af4499fb1161011e62e048bbdc396.patch";
hash = "sha256-qhgBniaUE/8q9BQ+EXcY7BF6eMJg+wC7EYgktwAMbwM=";
})
(fetchpatch {
url = "https://github.com/linuxmint/cinnamon/commit/330b9ff19f33ec1e94e36048ca46011404f796b4.patch";
hash = "sha256-YEQG6C4tx2T3wMfCLZXPFynAzEeIE1eVoadWVENZDFc=";
})
];
buildInputs = [
atk
cacert
cinnamon-control-center
cinnamon-desktop
cinnamon-menus
cjs
dbus
evolution-data-server # for calendar-server
gcr
gdk-pixbuf
glib
gsound
gtk3
json-glib
libsecret
libstartup_notification
libXtst
libXdamage
libgbm
muffin
networkmanager
polkit
pythonEnv
libxml2
libgnomekbd
gst_all_1.gstreamer
# bindings
cairo
caribou
keybinder3
upower
xapp
timezonemap
nemo
libnotify
accountsservice
libnma
# gsi bindings
gnome-online-accounts
glib-networking # for goa
];
nativeBuildInputs = [
gobject-introspection
meson
ninja
wrapGAppsHook3
intltool
gtk-doc
perl
python3.pkgs.libsass # for pysassc
python3.pkgs.wrapPython
pkg-config
];
postPatch = ''
find . -type f -exec sed -i \
-e s,/usr/share/cinnamon,$out/share/cinnamon,g \
-e s,/usr/share/locale,/run/current-system/sw/share/locale,g \
{} +
# All optional and may introduce circular dependency.
find ./files/usr/share/cinnamon/applets -type f -exec sed -i \
-e '/^#/!s,/usr/bin,/run/current-system/sw/bin,g' \
{} +
pushd ./files/usr/share/cinnamon/cinnamon-settings
substituteInPlace ./bin/capi.py --replace-fail '"/usr/lib"' '"${cinnamon-control-center}/lib"'
substituteInPlace ./bin/SettingsWidgets.py --replace-fail "/usr/share/sounds" "/run/current-system/sw/share/sounds"
substituteInPlace ./bin/Spices.py --replace-fail "subprocess.run(['/usr/bin/" "subprocess.run(['" \
--replace-fail 'subprocess.run(["/usr/bin/' 'subprocess.run(["' \
--replace-fail "msgfmt" "${gettext}/bin/msgfmt"
substituteInPlace ./modules/cs_info.py --replace-fail "lspci" "${pciutils}/bin/lspci"
substituteInPlace ./modules/cs_keyboard.py --replace-fail "/usr/bin/cinnamon-dbus-command" "$out/bin/cinnamon-dbus-command"
substituteInPlace ./modules/cs_themes.py --replace-fail "$out/share/cinnamon/styles.d" "/run/current-system/sw/share/cinnamon/styles.d"
substituteInPlace ./modules/cs_user.py --replace-fail "/usr/bin/passwd" "/run/wrappers/bin/passwd"
popd
# In preFixup we make these executable.
substituteInPlace ./files/usr/share/cinnamon/applets/printers@cinnamon.org/applet.js \
--replace-fail "Util.spawn_async(['python3'," "Util.spawn_async(["
substituteInPlace ./files/usr/bin/cinnamon-session-{cinnamon,cinnamon2d} \
--replace-fail "exec cinnamon-session" "exec ${cinnamon-session}/bin/cinnamon-session"
patchShebangs src/data-to-c.pl data/theme/parse-sass.sh
'';
postInstall = ''
# Use locales from cinnamon-translations.
ln -s ${cinnamon-translations}/share/locale $out/share/locale
'';
preFixup = ''
# https://github.com/NixOS/nixpkgs/issues/101881
gappsWrapperArgs+=(
--prefix XDG_DATA_DIRS : "${caribou}/share"
)
buildPythonPath "$out ${python3.pkgs.python-xapp}"
# https://github.com/NixOS/nixpkgs/issues/200397
patchPythonScript $out/bin/cinnamon-spice-updater
# https://github.com/NixOS/nixpkgs/issues/129946
patchPythonScript $out/share/cinnamon/cinnamon-desktop-editor/cinnamon-desktop-editor.py
# Called as `pkexec cinnamon-settings-users.py`.
wrapGApp $out/share/cinnamon/cinnamon-settings-users/cinnamon-settings-users.py
# postPatch touches both but we mainly want to wrap cancel-print-dialog.
chmod +x $out/share/cinnamon/applets/printers@cinnamon.org/{cancel-print-dialog,lpstat-a}.py
wrapGApp $out/share/cinnamon/applets/printers@cinnamon.org/cancel-print-dialog.py
'';
passthru = {
providedSessions = [
"cinnamon"
"cinnamon2d"
"cinnamon-wayland"
];
};
meta = with lib; {
homepage = "https://github.com/linuxmint/cinnamon";
description = "Cinnamon desktop environment";
license = [ licenses.gpl2 ];
platforms = platforms.linux;
teams = [ teams.cinnamon ];
};
}