171 lines
		
	
	
		
			4.3 KiB
		
	
	
	
		
			Nix
		
	
	
	
	
	
			
		
		
	
	
			171 lines
		
	
	
		
			4.3 KiB
		
	
	
	
		
			Nix
		
	
	
	
	
	
{ atk
 | 
						|
, autoreconfHook
 | 
						|
, cacert
 | 
						|
, fetchpatch
 | 
						|
, dbus
 | 
						|
, cinnamon-control-center
 | 
						|
, cinnamon-desktop
 | 
						|
, cinnamon-menus
 | 
						|
, cinnamon-session
 | 
						|
, cjs
 | 
						|
, fetchFromGitHub
 | 
						|
, gdk-pixbuf
 | 
						|
, libgnomekbd
 | 
						|
, glib
 | 
						|
, gobject-introspection
 | 
						|
, gtk3
 | 
						|
, intltool
 | 
						|
, json-glib
 | 
						|
, callPackage
 | 
						|
, libsoup
 | 
						|
, libstartup_notification
 | 
						|
, libXtst
 | 
						|
, muffin
 | 
						|
, networkmanager
 | 
						|
, pkgconfig
 | 
						|
, polkit
 | 
						|
, stdenv
 | 
						|
, wrapGAppsHook
 | 
						|
, libxml2
 | 
						|
, gtk-doc
 | 
						|
, gnome3
 | 
						|
, python3
 | 
						|
, keybinder3
 | 
						|
, cairo
 | 
						|
, xapps
 | 
						|
, upower
 | 
						|
, nemo
 | 
						|
, libnotify
 | 
						|
, accountsservice
 | 
						|
, gnome-online-accounts
 | 
						|
, glib-networking
 | 
						|
, pciutils
 | 
						|
, timezonemap
 | 
						|
, libnma
 | 
						|
}:
 | 
						|
 | 
						|
let
 | 
						|
  libcroco = callPackage ./libcroco.nix { };
 | 
						|
in
 | 
						|
stdenv.mkDerivation rec {
 | 
						|
  pname = "cinnamon-common";
 | 
						|
  version = "4.6.1";
 | 
						|
 | 
						|
  src = fetchFromGitHub {
 | 
						|
    owner = "linuxmint";
 | 
						|
    repo = "cinnamon";
 | 
						|
    rev = version;
 | 
						|
    sha256 = "149lhg953fa0glm250f76z2jzyaabh97jxiqkjnqvsk6bjk1d0bw";
 | 
						|
  };
 | 
						|
 | 
						|
  patches = [
 | 
						|
    # remove dbus-glib
 | 
						|
    (fetchpatch {
 | 
						|
      url = "https://github.com/linuxmint/cinnamon/commit/ce99760fa15c3de2e095b9a5372eeaca646fbed1.patch";
 | 
						|
      sha256 = "0p2sbdi5w7sgblqbgisb6f8lcj1syzq5vlk0ilvwaqayxjylg8gz";
 | 
						|
    })
 | 
						|
    (fetchpatch {
 | 
						|
      url = "https://leigh123linux.fedorapeople.org/pub/patches/new_cjs.patch";
 | 
						|
      sha256 = "07biv3vkbn3jzijbdrxcw73p8xz2djbsax014mlkvmryrmys0rg4";
 | 
						|
    })
 | 
						|
  ];
 | 
						|
 | 
						|
  buildInputs = [
 | 
						|
    # TODO: review if we really need this all
 | 
						|
    (python3.withPackages (pp: with pp; [ dbus-python setproctitle pygobject3 pycairo xapp pillow pytz tinycss2 pam pexpect distro ]))
 | 
						|
    atk
 | 
						|
    cacert
 | 
						|
    cinnamon-control-center
 | 
						|
    cinnamon-desktop
 | 
						|
    cinnamon-menus
 | 
						|
    cjs
 | 
						|
    dbus
 | 
						|
    gdk-pixbuf
 | 
						|
    glib
 | 
						|
    gtk3
 | 
						|
    json-glib
 | 
						|
    libcroco
 | 
						|
    libsoup
 | 
						|
    libstartup_notification
 | 
						|
    libXtst
 | 
						|
    muffin
 | 
						|
    networkmanager
 | 
						|
    pkgconfig
 | 
						|
    polkit
 | 
						|
    libxml2
 | 
						|
    libgnomekbd
 | 
						|
 | 
						|
    # bindings
 | 
						|
    cairo
 | 
						|
    gnome3.caribou
 | 
						|
    keybinder3
 | 
						|
    upower
 | 
						|
    xapps
 | 
						|
    timezonemap
 | 
						|
    nemo
 | 
						|
    libnotify
 | 
						|
    accountsservice
 | 
						|
    libnma
 | 
						|
 | 
						|
    # gsi bindings
 | 
						|
    gnome-online-accounts
 | 
						|
    glib-networking # for goa
 | 
						|
  ];
 | 
						|
 | 
						|
  nativeBuildInputs = [
 | 
						|
    gobject-introspection
 | 
						|
    autoreconfHook
 | 
						|
    wrapGAppsHook
 | 
						|
    intltool
 | 
						|
    gtk-doc
 | 
						|
  ];
 | 
						|
 | 
						|
  autoreconfPhase = ''
 | 
						|
    GTK_DOC_CHECK=false NOCONFIGURE=1 bash ./autogen.sh
 | 
						|
  '';
 | 
						|
 | 
						|
  configureFlags = [ "--disable-static" "--with-ca-certificates=${cacert}/etc/ssl/certs/ca-bundle.crt" "--with-libxml=${libxml2.dev}/include/libxml2" "--enable-gtk-doc=no" ];
 | 
						|
 | 
						|
  postPatch = ''
 | 
						|
    substituteInPlace src/Makefile.am \
 | 
						|
      --replace "\$(libdir)/muffin" "${muffin}/lib/muffin"
 | 
						|
    patchShebangs autogen.sh
 | 
						|
 | 
						|
    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 \
 | 
						|
      {} +
 | 
						|
 | 
						|
    sed "s|/usr/share/sounds|/run/current-system/sw/share/sounds|g" -i ./files/usr/share/cinnamon/cinnamon-settings/bin/SettingsWidgets.py
 | 
						|
 | 
						|
    sed "s|/usr/bin/upload-system-info|${xapps}/bin/upload-system-info|g" -i ./files/usr/share/cinnamon/cinnamon-settings/modules/cs_info.py
 | 
						|
    sed "s|upload-system-info|${xapps}/bin/upload-system-info|g" -i ./files/usr/share/cinnamon/cinnamon-settings/modules/cs_info.py
 | 
						|
 | 
						|
    sed "s|/usr/bin/cinnamon-control-center|${cinnamon-control-center}/bin/cinnamon-control-center|g" -i ./files/usr/bin/cinnamon-settings
 | 
						|
    # this one really IS optional
 | 
						|
    sed "s|/usr/bin/gnome-control-center|/run/current-system/sw/bin/gnome-control-center|g" -i ./files/usr/bin/cinnamon-settings
 | 
						|
 | 
						|
    sed "s|\"/usr/lib\"|\"${cinnamon-control-center}/lib\"|g" -i ./files/usr/share/cinnamon/cinnamon-settings/bin/capi.py
 | 
						|
 | 
						|
    # another bunch of optional stuff
 | 
						|
    sed "s|/usr/bin|/run/current-system/sw/bin|g" -i ./files/usr/bin/cinnamon-launcher
 | 
						|
 | 
						|
    sed 's|"lspci"|"${pciutils}/bin/lspci"|g' -i ./files/usr/share/cinnamon/cinnamon-settings/modules/cs_info.py
 | 
						|
 | 
						|
    sed "s| cinnamon-session| ${cinnamon-session}/bin/cinnamon-session|g" -i ./files/usr/bin/cinnamon-session-cinnamon  -i ./files/usr/bin/cinnamon-session-cinnamon2d
 | 
						|
    sed "s|/usr/bin|$out/bin|g" -i ./files/usr/share/xsessions/cinnamon.desktop ./files/usr/share/xsessions/cinnamon2d.desktop
 | 
						|
  '';
 | 
						|
 | 
						|
  passthru = {
 | 
						|
    providedSessions = ["cinnamon" "cinnamon2d"];
 | 
						|
  };
 | 
						|
 | 
						|
  meta = with stdenv.lib; {
 | 
						|
    homepage = "https://github.com/linuxmint/cinnamon";
 | 
						|
    description = "The Cinnamon desktop environment";
 | 
						|
    license = [ licenses.gpl2 ];
 | 
						|
    platforms = platforms.linux;
 | 
						|
    maintainers = teams.cinnamon.members;
 | 
						|
  };
 | 
						|
}
 |