{ lib, stdenv , fetchFromGitHub , pkg-config , meson , ninja , glib , dbus , gettext , cinnamon-desktop , cinnamon-common , intltool , libxslt , gtk3 , libgnomekbd , gnome , libtool , wrapGAppsHook , gobject-introspection , python3 , pam , accountsservice , cairo , xapps , xorg , iso-flags-png-320x420 }: stdenv.mkDerivation rec { pname = "cinnamon-screensaver"; version = "4.8.1"; src = fetchFromGitHub { owner = "linuxmint"; repo = pname; rev = version; hash = "sha256-gvSGxSYKnRqJhj2unRYRHp6qGw/O9SxKPzhw5xjCSSQ="; }; nativeBuildInputs = [ pkg-config wrapGAppsHook gettext intltool dbus # for meson.build libxslt libtool meson ninja ]; buildInputs = [ # from meson.build gobject-introspection gtk3 glib xorg.libXext xorg.libXinerama xorg.libX11 xorg.libXrandr (python3.withPackages (pp: with pp; [ pygobject3 setproctitle xapp pycairo ])) xapps pam accountsservice cairo cinnamon-desktop cinnamon-common libgnomekbd gnome.caribou # things iso-flags-png-320x420 ]; mesonFlags = [ # TODO: https://github.com/NixOS/nixpkgs/issues/36468 "-Dc_args=-I${glib.dev}/include/gio-unix-2.0" ]; postPatch = '' # cscreensaver hardcodes absolute paths everywhere. Nuke from orbit. find . -type f -exec sed -i \ -e s,/usr/share/locale,/run/current-system/sw/share/locale,g \ -e s,/usr/lib/cinnamon-screensaver,$out/lib,g \ -e s,/usr/share/cinnamon-screensaver,$out/share,g \ -e s,/usr/share/iso-flag-png,${iso-flags-png-320x420}/share/iso-flags-png,g \ {} + sed "s|/usr/share/locale|/run/current-system/sw/share/locale|g" -i ./src/cinnamon-screensaver-main.py ''; meta = with lib; { homepage = "https://github.com/linuxmint/cinnamon-screensaver"; description = "The Cinnamon screen locker and screensaver program"; license = [ licenses.gpl2 licenses.lgpl2 ]; platforms = platforms.linux; maintainers = teams.cinnamon.members; }; }