diff options
Diffstat (limited to 'nixpkgs/pkgs/desktops')
667 files changed, 33424 insertions, 0 deletions
diff --git a/nixpkgs/pkgs/desktops/cdesktopenv/2.3.2.patch b/nixpkgs/pkgs/desktops/cdesktopenv/2.3.2.patch new file mode 100644 index 000000000000..cfd027694d79 --- /dev/null +++ b/nixpkgs/pkgs/desktops/cdesktopenv/2.3.2.patch @@ -0,0 +1,106 @@ +From 8db8a2290683acf94f02e855af668a864d6001c2 Mon Sep 17 00:00:00 2001 +Subject: [PATCH 1/2] installCDE: don't hardcode path to whoami +--- + cde/admin/IntegTools/dbTools/installCDE.src | 11 ++--------- + cde/admin/IntegTools/dbTools/mkProd | 9 +-------- + 2 files changed, 3 insertions(+), 17 deletions(-) + +diff --git a/cde/admin/IntegTools/dbTools/installCDE.src b/cde/admin/IntegTools/dbTools/installCDE.src +index a00fefd1..233b4a96 100755 +--- a/cde/admin/IntegTools/dbTools/installCDE.src ++++ b/admin/IntegTools/dbTools/installCDE.src +@@ -52,7 +52,7 @@ LOGFILE="installCDE.$$.log" + + Log() + { +- /bin/echo "$1" | tee -a $LOGFILE ++ echo "$1" | tee -a $LOGFILE + } + + MakeTarball() +@@ -537,14 +537,7 @@ XCOMM + PLATFORM_SCRIPT_DIR=hp + fi + +- if [ "$PLATFORM" = "aix" ]; +- then +- USER=$(/bin/whoami) +- else +- USER=$(/usr/bin/whoami) +- fi +- +- if [ "$USER" != "root" ]; ++ if [ $(whoami) != "root" ]; + then + echo "" + echo "You should be root to run this script. Continuing anyway." +diff --git a/cde/admin/IntegTools/dbTools/mkProd b/cde/admin/IntegTools/dbTools/mkProd +index 44591fab..413a77e8 100755 +--- a/cde/admin/IntegTools/dbTools/mkProd ++++ b/admin/IntegTools/dbTools/mkProd +@@ -96,13 +96,6 @@ else # Build system = HP + PLATFORM=hp-ux + fi + +-if [ $PLATFORM = "aix" ]; +-then +- USER=`/bin/whoami` +-else +- USER=`/usr/bin/whoami` +-fi +- + awkit() { + awk ' + BEGIN { +@@ -504,7 +497,7 @@ doit() + } + # set permissions for non-links + if [ "${TYPE%link}" = "$TYPE" ]; then +- if [ "$USER" = "root" ]; then ++ if [ $(whoami) = "root" ]; then + chgrp $GROUP $DEST || + echo "ERROR: \"chgrp $GROUP $DEST\" failed" >&2 + chown $OWNER $DEST || +-- +2.25.0 + + +From 9221c55a5f811986eaf0e01301827c294ac2e29b Mon Sep 17 00:00:00 2001 +Subject: [PATCH 2/2] tt_type_comp: use CppCmd definition +--- + cde/lib/tt/bin/tt_type_comp/Imakefile | 4 +++- + cde/lib/tt/lib/tt_options.h | 5 +++++ + 2 files changed, 8 insertions(+), 1 deletion(-) + +diff --git a/cde/lib/tt/bin/tt_type_comp/Imakefile b/cde/lib/tt/bin/tt_type_comp/Imakefile +index 92179208..62434929 100644 +--- a/cde/lib/tt/bin/tt_type_comp/Imakefile ++++ b/lib/tt/bin/tt_type_comp/Imakefile +@@ -8,7 +8,9 @@ EXTRA_LOAD_FLAGS = ExtraLoadFlags $(UNSHARED_CXXLIB) + + #include "../../tooltalk.tmpl" + +-DEFINES = ++CPP_PROGRAM = CppCmd ++CPP_DEFINES = -DCPP_PROGRAM="\"$(CPP_PROGRAM)\"" ++DEFINES = $(CPP_DEFINES) + INCLUDES = $(TIRPCINC) -I../../lib -I../../slib + + DEPLIBS = ../../slib/libstt.a TtClientDepLibs +diff --git a/cde/lib/tt/lib/tt_options.h b/cde/lib/tt/lib/tt_options.h +index 4315daa8..e23bb9e5 100644 +--- a/cde/lib/tt/lib/tt_options.h ++++ b/lib/tt/lib/tt_options.h +@@ -529,4 +529,9 @@ + + #endif + ++#ifdef CPP_PROGRAM ++# undef OPT_CPP_PATH ++# define OPT_CPP_PATH CPP_PROGRAM ++#endif ++ + #endif /* _TT_OPTIONS_H */ +-- +2.25.0 + diff --git a/nixpkgs/pkgs/desktops/cdesktopenv/default.nix b/nixpkgs/pkgs/desktops/cdesktopenv/default.nix new file mode 100644 index 000000000000..60ea33ca6ba5 --- /dev/null +++ b/nixpkgs/pkgs/desktops/cdesktopenv/default.nix @@ -0,0 +1,78 @@ +{ stdenv, fetchurl, xorgproto, libX11, bison, ksh, perl, gnum4 +, libXinerama, libXt, libXext, libtirpc, motif, libXft, xbitmaps +, libjpeg, libXmu, libXdmcp, libXScrnSaver, symlinkJoin, bdftopcf +, ncompress, mkfontdir, tcl, libXaw, gcc, glibcLocales, gawk +, autoPatchelfHook, libredirect, makeWrapper, xset, xrdb, fakeroot }: + +let + x11ProjectRoot = symlinkJoin { + name = "x11ProjectRoot"; + paths = [ + bdftopcf mkfontdir + xset # fonts + xrdb # session load + ]; + }; +in stdenv.mkDerivation rec { + version = "2.3.2"; + name = "cde-${version}"; + + src = fetchurl { + url = "mirror://sourceforge/cdesktopenv/${name}.tar.gz"; + sha256 = "029rljhi5r483x8rzdpl8625z0wx8r7k2m0364nbw66h5pig9lbx"; + }; + + # remove with next release + patches = [ + ./2.3.2.patch + ]; + + buildInputs = [ + libX11 libXinerama libXt libXext libtirpc motif libXft xbitmaps + libjpeg libXmu libXdmcp libXScrnSaver tcl libXaw ksh + ]; + nativeBuildInputs = [ + bison ncompress gawk autoPatchelfHook makeWrapper fakeroot + ]; + + makeFlags = [ + "World" + "BOOTSTRAPCFLAGS=-I${xorgproto}/include/X11" + "IMAKECPP=cpp" + "LOCALE_ARCHIVE=${glibcLocales}/lib/locale/locale-archive" + ]; + + preBuild = '' + while IFS= read -r -d ''$'\0' i; do + substituteInPlace "$i" --replace /usr/dt $out/opt/dt + done < <(find "." -type f -exec grep -Iq /usr/dt {} \; -and -print0) + + cat >> config/cf/site.def << EOF +#define MakeFlagsToShellFlags(makeflags,shellcmd) set -e +#define KornShell ${ksh}/bin/ksh +#define PerlCmd ${perl}/bin/perl +#define M4Cmd ${gnum4}/bin/m4 +#define X11ProjectRoot ${x11ProjectRoot} +#define CppCmd ${gcc}/bin/cpp +TIRPCINC = -I${libtirpc.dev}/include/tirpc +EOF + + patchShebangs . + unset AR + ''; + + installPhase = '' + fakeroot admin/IntegTools/dbTools/installCDE -s . -DontRunScripts + + mkdir -p $out/bin + mv $out/opt/dt/bin/dtmail $out/bin + ''; + + meta = with stdenv.lib; { + description = "Common Desktop Environment"; + homepage = "https://sourceforge.net/projects/cdesktopenv/"; + license = licenses.lgpl2; + maintainers = [ maintainers.gnidorah ]; + platforms = [ "i686-linux" "x86_64-linux" ]; + }; +} diff --git a/nixpkgs/pkgs/desktops/cinnamon/cinnamon-control-center/default.nix b/nixpkgs/pkgs/desktops/cinnamon/cinnamon-control-center/default.nix new file mode 100644 index 000000000000..454d65335540 --- /dev/null +++ b/nixpkgs/pkgs/desktops/cinnamon/cinnamon-control-center/default.nix @@ -0,0 +1,125 @@ +{ stdenv +, fetchFromGitHub +, pkgconfig +, autoreconfHook +, glib +, gettext +, cinnamon-desktop +, intltool +, libxslt +, gtk3 +, libnotify +, gnome-menus +, libxml2 +, systemd +, upower +, gnome-online-accounts +, cinnamon-settings-daemon +, colord +, polkit +, ibus +, libpulseaudio +, isocodes +, kerberos +, libxkbfile +, cinnamon-menus +, dbus-glib +, libgnomekbd +, libxklavier +, networkmanager +, libwacom +, gnome3 +, libtool +, wrapGAppsHook +, tzdata +, glibc +, libnma +, modemmanager +, xorg +, gdk-pixbuf +, cups +}: + +stdenv.mkDerivation rec { + pname = "cinnamon-control-center"; + version = "4.4.0"; + + src = fetchFromGitHub { + owner = "linuxmint"; + repo = pname; + rev = version; + sha256 = "1rxm5n2prh182rxvjs7psxgjddikrjr8492j22060gmyvq55n7kc"; + }; + + configureFlags = [ "--enable-systemd" ]; + + buildInputs = [ + gtk3 + glib + cinnamon-desktop + libnotify + cinnamon-menus + libxml2 + dbus-glib + systemd + polkit + libgnomekbd + libxklavier + colord + cinnamon-settings-daemon + libwacom + gnome-online-accounts + tzdata + networkmanager + libnma + modemmanager + xorg.libXxf86misc + xorg.libxkbfile + gdk-pixbuf + cups + ]; + + /* ./panels/datetime/test-timezone.c:4:#define TZ_DIR "/usr/share/zoneinfo/" + ./panels/datetime/tz.h:32:# define TZ_DATA_FILE "/usr/share/zoneinfo/zone.tab" + ./panels/datetime/tz.h:34:# define TZ_DATA_FILE "/usr/share/lib/zoneinfo/tab/zone_sun.tab" */ + + postPatch = '' + patchShebangs ./autogen.sh + sed 's|TZ_DIR "/usr/share/zoneinfo/"|TZ_DIR "${tzdata}/share/zoneinfo/"|g' -i ./panels/datetime/test-timezone.c + sed 's|TZ_DATA_FILE "/usr/share/zoneinfo/zone.tab"|TZ_DATA_FILE "${tzdata}/share/zoneinfo/zone.tab"|g' -i ./panels/datetime/tz.h + sed 's|"/usr/share/i18n/locales/"|"${glibc}/share/i18n/locales/"|g' -i panels/datetime/test-endianess.c + ''; + + autoreconfPhase = '' + NOCONFIGURE=1 bash ./autogen.sh + ''; + + # it needs to have access to that file, otherwise we can't run tests after build + + preBuild = '' + mkdir -p $out/share/cinnamon-control-center/ + ln -s $PWD/panels/datetime $out/share/cinnamon-control-center/ + ''; + + preInstall = '' + rm -rfv $out + ''; + + nativeBuildInputs = [ + pkgconfig + autoreconfHook + wrapGAppsHook + gettext + intltool + libxslt + libtool + ]; + + meta = with stdenv.lib; { + homepage = "https://github.com/linuxmint/cinnamon-control-center"; + description = "A collection of configuration plugins used in cinnamon-settings"; + license = licenses.gpl2; + platforms = platforms.linux; + maintainers = [ maintainers.mkg20001 ]; + }; +} diff --git a/nixpkgs/pkgs/desktops/cinnamon/cinnamon-desktop/default.nix b/nixpkgs/pkgs/desktops/cinnamon/cinnamon-desktop/default.nix new file mode 100644 index 000000000000..c5beff134b3f --- /dev/null +++ b/nixpkgs/pkgs/desktops/cinnamon/cinnamon-desktop/default.nix @@ -0,0 +1,77 @@ +{ fetchFromGitHub +, gdk-pixbuf +, gobject-introspection +, gtk3 +, intltool +, meson +, ninja +, pkgconfig +, pulseaudio +, python3 +, stdenv +, xkeyboard_config +, xorg +, wrapGAppsHook +, glib +}: + +stdenv.mkDerivation rec { + pname = "cinnamon-desktop"; + version = "4.4.1"; + + src = fetchFromGitHub { + owner = "linuxmint"; + repo = pname; + rev = version; + sha256 = "10db5rai8cbbzphvcwarr3hm1bd9rxchlc0hcghg7qnmvv52fq03"; + }; + + outputs = [ "out" "dev" ]; + + propagatedBuildInputs = [ + glib + gtk3 + pulseaudio + ]; + + buildInputs = [ + gdk-pixbuf + xkeyboard_config + xorg.libxkbfile + xorg.libXext + xorg.libXrandr + gobject-introspection + ]; + + nativeBuildInputs = [ + meson + ninja + python3 + wrapGAppsHook + intltool + pkgconfig + ]; + + postPatch = '' + chmod +x install-scripts/meson_install_schemas.py # patchShebangs requires executable file + patchShebangs install-scripts/meson_install_schemas.py + sed "s|/usr/share|/run/current-system/sw/share|g" -i ./schemas/* # NOTE: unless this causes a circular dependency, we could link it to cinnamon-common/share/cinnamon + ''; + + meta = with stdenv.lib; { + homepage = "https://github.com/linuxmint/cinnamon-desktop"; + description = "Library and data for various Cinnamon modules"; + + longDescription = '' + The libcinnamon-desktop library provides API shared by several applications + on the desktop, but that cannot live in the platform for various + reasons. There is no API or ABI guarantee, although we are doing our + best to provide stability. Documentation for the API is available with + gtk-doc. + ''; + + license = [ licenses.gpl2 licenses.lgpl2 ]; + platforms = platforms.linux; + maintainers = [ maintainers.mkg20001 ]; + }; +} diff --git a/nixpkgs/pkgs/desktops/cinnamon/cinnamon-menus/default.nix b/nixpkgs/pkgs/desktops/cinnamon/cinnamon-menus/default.nix new file mode 100644 index 000000000000..47242cdf38a5 --- /dev/null +++ b/nixpkgs/pkgs/desktops/cinnamon/cinnamon-menus/default.nix @@ -0,0 +1,41 @@ +{ fetchFromGitHub +, glib +, gobject-introspection +, meson +, ninja +, pkgconfig +, stdenv +, wrapGAppsHook +}: + +stdenv.mkDerivation rec { + pname = "cinnamon-menus"; + version = "4.4.0"; + + src = fetchFromGitHub { + owner = "linuxmint"; + repo = pname; + rev = version; + sha256 = "0q4qj28swi2y93fj7pfil68l2cf9gmhbk6jmr8d70l54xf7sigsh"; + }; + + buildInputs = [ + glib + gobject-introspection + ]; + + nativeBuildInputs = [ + meson + ninja + wrapGAppsHook + pkgconfig + ]; + + meta = with stdenv.lib; { + homepage = "https://github.com/linuxmint/cinnamon-menus"; + description = "A menu system for the Cinnamon project"; + license = [ licenses.gpl2 licenses.lgpl2 ]; + platforms = platforms.linux; + maintainers = [ maintainers.mkg20001 ]; + }; +} diff --git a/nixpkgs/pkgs/desktops/cinnamon/cinnamon-session/0001-Add-dbus_glib-dependency.patch b/nixpkgs/pkgs/desktops/cinnamon/cinnamon-session/0001-Add-dbus_glib-dependency.patch new file mode 100644 index 000000000000..156573c30e9a --- /dev/null +++ b/nixpkgs/pkgs/desktops/cinnamon/cinnamon-session/0001-Add-dbus_glib-dependency.patch @@ -0,0 +1,38 @@ +From ddc2c4faeec36675654a2f8f04c3011b807fdf79 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Maciej=20Kr=C3=BCger?= <mkg20001@gmail.com> +Date: Sun, 22 Mar 2020 07:36:25 +0100 +Subject: [PATCH] Add dbus_glib dependency + +--- + cinnamon-session/meson.build | 2 +- + meson.build | 1 + + 2 files changed, 2 insertions(+), 1 deletion(-) + +diff --git a/cinnamon-session/meson.build b/cinnamon-session/meson.build +index ee8916f..9dd9283 100644 +--- a/cinnamon-session/meson.build ++++ b/cinnamon-session/meson.build +@@ -74,7 +74,7 @@ executable('cinnamon-session', + xext, + xrender, + xtest, +- # elogind, ++ dbus_glib, + ], + link_with: [ + libegg, +diff --git a/meson.build b/meson.build +index 231a448..db306dc 100644 +--- a/meson.build ++++ b/meson.build +@@ -48,6 +48,7 @@ else + gconf = dependency('', required: false) + endif + conf.set('HAVE_GCONF', gconf.found()) ++dbus_glib = dependency('dbus-glib-1') + + + gio_unix = dependency('gio-unix-2.0', required: false) +-- +2.25.1 + diff --git a/nixpkgs/pkgs/desktops/cinnamon/cinnamon-session/default.nix b/nixpkgs/pkgs/desktops/cinnamon/cinnamon-session/default.nix new file mode 100644 index 000000000000..56ff4b106e33 --- /dev/null +++ b/nixpkgs/pkgs/desktops/cinnamon/cinnamon-session/default.nix @@ -0,0 +1,105 @@ +{ fetchFromGitHub +, cinnamon-desktop +, cinnamon-settings-daemon +, dbus-glib +, docbook_xsl +, docbook_xml_dtd_412 +, glib +, gsettings-desktop-schemas +, gtk3 +, libcanberra +, libxslt +, makeWrapper +, meson +, ninja +, pkgconfig +, python3 +, stdenv +, systemd +, wrapGAppsHook +, xapps +, xmlto +, xorg +, cmake +, libexecinfo +, pango +}: + +stdenv.mkDerivation rec { + pname = "cinnamon-session"; + version = "4.4.0"; + + src = fetchFromGitHub { + owner = "linuxmint"; + repo = pname; + rev = version; + sha256 = "0hplck17rksfgqm2z58ajvz4p2m4zg6ksdpbc27ki20iv4fv620s"; + }; + + patches = [ + ./0001-Add-dbus_glib-dependency.patch + ]; + + buildInputs = [ + # meson.build + gtk3 + glib + libcanberra + pango + xorg.libX11 + xorg.libXext + xapps + xorg.libXau + xorg.libXcomposite + + systemd + + xorg.libXtst + xorg.libXrender + xorg.xtrans + + # other (not meson.build) + + cinnamon-desktop + cinnamon-settings-daemon + dbus-glib + glib + gsettings-desktop-schemas + ]; + + nativeBuildInputs = [ + meson + ninja + wrapGAppsHook + libexecinfo + docbook_xsl + docbook_xml_dtd_412 + python3 + pkgconfig + libxslt + xmlto + ]; + + # TODO: https://github.com/NixOS/nixpkgs/issues/36468 + mesonFlags = [ "-Dc_args=-I${glib.dev}/include/gio-unix-2.0" "-Dgconf=false" "-DENABLE_IPV6=true" ]; + + postPatch = '' + chmod +x data/meson_install_schemas.py # patchShebangs requires executable file + patchShebangs data/meson_install_schemas.py + ''; + + preFixup = '' + gappsWrapperArgs+=( + --prefix XDG_DATA_DIRS : "${cinnamon-desktop}/share" + --prefix XDG_CONFIG_DIRS : "${cinnamon-settings-daemon}/etc/xdg" + ) + ''; + + meta = with stdenv.lib; { + homepage = "https://github.com/linuxmint/cinnamon-session"; + description = "The Cinnamon session manager"; + license = licenses.gpl2; + platforms = platforms.linux; + maintainers = [ maintainers.mkg20001 ]; + }; +} diff --git a/nixpkgs/pkgs/desktops/cinnamon/cinnamon-settings-daemon/csd-backlight-helper-fix.patch b/nixpkgs/pkgs/desktops/cinnamon/cinnamon-settings-daemon/csd-backlight-helper-fix.patch new file mode 100644 index 000000000000..967ba98eb48f --- /dev/null +++ b/nixpkgs/pkgs/desktops/cinnamon/cinnamon-settings-daemon/csd-backlight-helper-fix.patch @@ -0,0 +1,48 @@ +From 6d71bf9764fb81d437678a603826167850bbf453 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Maciej=20Kr=C3=BCger?= <mkg20001@gmail.com> +Date: Tue, 21 Jan 2020 03:19:28 +0100 +Subject: [PATCH] fix: use an impure path to csd-backlight-helper to fix + policy-reload bug + +--- + plugins/power/csd-power-manager.c | 4 ++-- + .../org.cinnamon.settings-daemon.plugins.power.policy.in.in | 2 +- + 2 files changed, 3 insertions(+), 3 deletions(-) + +diff --git a/plugins/power/csd-power-manager.c b/plugins/power/csd-power-manager.c +index b24c456..212c47e 100755 +--- a/plugins/power/csd-power-manager.c ++++ b/plugins/power/csd-power-manager.c +@@ -2519,7 +2519,7 @@ backlight_helper_get_value (const gchar *argument, CsdPowerManager* manager, + #endif + + /* get the data */ +- command = g_strdup_printf (LIBEXECDIR "/csd-backlight-helper --%s %s", ++ command = g_strdup_printf ("/run/current-system/sw/bin/cinnamon-settings-daemon/csd-backlight-helper --%s %s", + argument, + manager->priv->backlight_helper_preference_args); + ret = g_spawn_command_line_sync (command, +@@ -2609,7 +2609,7 @@ backlight_helper_set_value (const gchar *argument, + #endif + + /* get the data */ +- command = g_strdup_printf ("pkexec " LIBEXECDIR "/csd-backlight-helper --%s %i %s", ++ command = g_strdup_printf ("pkexec " "/run/current-system/sw/bin/cinnamon-settings-daemon/csd-backlight-helper --%s %i %s", + argument, value, + manager->priv->backlight_helper_preference_args); + ret = g_spawn_command_line_sync (command, +diff --git a/plugins/power/org.cinnamon.settings-daemon.plugins.power.policy.in.in b/plugins/power/org.cinnamon.settings-daemon.plugins.power.policy.in.in +index 2c44e62..c0a2348 100755 +--- a/plugins/power/org.cinnamon.settings-daemon.plugins.power.policy.in.in ++++ b/plugins/power/org.cinnamon.settings-daemon.plugins.power.policy.in.in +@@ -25,7 +25,7 @@ + <allow_inactive>no</allow_inactive> + <allow_active>yes</allow_active> + </defaults> +- <annotate key="org.freedesktop.policykit.exec.path">@libexecdir@/csd-backlight-helper</annotate> ++ <annotate key="org.freedesktop.policykit.exec.path">/run/current-system/sw/bin/cinnamon-settings-daemon/csd-backlight-helper</annotate> + </action> + + </policyconfig> +-- +2.24.1 diff --git a/nixpkgs/pkgs/desktops/cinnamon/cinnamon-settings-daemon/default.nix b/nixpkgs/pkgs/desktops/cinnamon/cinnamon-settings-daemon/default.nix new file mode 100644 index 000000000000..1dc58e3c3b5b --- /dev/null +++ b/nixpkgs/pkgs/desktops/cinnamon/cinnamon-settings-daemon/default.nix @@ -0,0 +1,111 @@ +{ fetchFromGitHub +, autoconf-archive +, autoreconfHook +, cinnamon-desktop +, colord +, glib +, gsettings-desktop-schemas +, gtk3 +, intltool +, lcms2 +, libcanberra-gtk3 +, libgnomekbd +, libnotify +, libxklavier +, wrapGAppsHook +, pkgconfig +, pulseaudio +, stdenv +, systemd +, upower +, dconf +, cups +, polkit +, librsvg +, libwacom +, xf86_input_wacom +, xorg +, fontconfig +, tzdata +}: + +stdenv.mkDerivation rec { + pname = "cinnamon-settings-daemon"; + version = "4.4.0"; + + /* csd-power-manager.c:50:10: fatal error: csd-power-proxy.h: No such file or directory + #include "csd-power-proxy.h" + ^~~~~~~~~~~~~~~~~~~ + compilation terminated. */ + + # but this occurs only sometimes, so disabling parallel building + # also see https://github.com/linuxmint/cinnamon-settings-daemon/issues/248 + enableParallelBuilding = false; + + src = fetchFromGitHub { + owner = "linuxmint"; + repo = pname; + rev = version; + sha256 = "1h74d68a7hx85vv6ak26b85jq0wr56ps9rzfvqsnxwk81zxw2n7q"; + }; + + patches = [ + ./csd-backlight-helper-fix.patch + ]; + + NIX_CFLAGS_COMPILE = "-I${glib.dev}/include/gio-unix-2.0"; # TODO: https://github.com/NixOS/nixpkgs/issues/36468 + + buildInputs = [ + cinnamon-desktop + colord + gtk3 + glib + gsettings-desktop-schemas + lcms2 + libcanberra-gtk3 + libgnomekbd + libnotify + libxklavier + pulseaudio + systemd + upower + dconf + cups + polkit + librsvg + libwacom + xf86_input_wacom + xorg.libXext + xorg.libX11 + xorg.libXi + xorg.libXtst + xorg.libXfixes + fontconfig + ]; + + nativeBuildInputs = [ + autoconf-archive + autoreconfHook + wrapGAppsHook + intltool + pkgconfig + ]; + + postPatch = '' + sed "s|/usr/share/zoneinfo|${tzdata}/share/zoneinfo|g" -i plugins/datetime/system-timezone.h + ''; + + # So the polkit policy can reference /run/current-system/sw/bin/cinnamon-settings-daemon/csd-backlight-helper + postFixup = '' + mkdir -p $out/bin/cinnamon-settings-daemon + ln -s $out/libexec/csd-backlight-helper $out/bin/cinnamon-settings-daemon/csd-backlight-helper + ''; + + meta = with stdenv.lib; { + homepage = "https://github.com/linuxmint/cinnamon-settings-daemon"; + description = "The settings daemon for the Cinnamon desktop"; + license = licenses.gpl2; + platforms = platforms.linux; + maintainers = [ maintainers.mkg20001 ]; + }; +} diff --git a/nixpkgs/pkgs/desktops/cinnamon/cinnamon-translations/default.nix b/nixpkgs/pkgs/desktops/cinnamon/cinnamon-translations/default.nix new file mode 100644 index 000000000000..b2a3acd07229 --- /dev/null +++ b/nixpkgs/pkgs/desktops/cinnamon/cinnamon-translations/default.nix @@ -0,0 +1,32 @@ +{ stdenv +, fetchFromGitHub +, gettext +}: + +stdenv.mkDerivation rec { + pname = "cinnamon-translations"; + version = "4.4.2"; + + src = fetchFromGitHub { + owner = "linuxmint"; + repo = pname; + rev = version; + sha256 = "1n1nkapcgxmbv0l8hrx5cf588pi4ifx12xbz46lq4p1ijrlfivba"; + }; + + nativeBuildInputs = [ + gettext + ]; + + installPhase = '' + mv usr $out # files get installed like so: msgfmt -o usr/share/locale/$lang/LC_MESSAGES/$dir.mo $file + ''; + + meta = with stdenv.lib; { + homepage = "https://github.com/linuxmint/cinnamon-translations"; + description = "Translations files for the Cinnamon desktop"; + license = licenses.gpl2; + platforms = platforms.linux; + maintainers = [ maintainers.mkg20001 ]; + }; +} diff --git a/nixpkgs/pkgs/desktops/cinnamon/cjs/default.nix b/nixpkgs/pkgs/desktops/cinnamon/cjs/default.nix new file mode 100644 index 000000000000..d67a5d8386a8 --- /dev/null +++ b/nixpkgs/pkgs/desktops/cinnamon/cjs/default.nix @@ -0,0 +1,88 @@ +{ autoconf-archive +, autoreconfHook +, dbus-glib +, fetchFromGitHub +, gobject-introspection +, pkgconfig +, stdenv +, wrapGAppsHook +, python3 +, cairo +, gnome3 +, xapps +, keybinder3 +, upower +, callPackage +, glib +, libffi +, gtk3 +, readline +}: + +let + + # https://github.com/linuxmint/cjs/issues/80 + spidermonkey_52 = callPackage ./spidermonkey_52.nix {}; + +in + +stdenv.mkDerivation rec { + pname = "cjs"; + version = "4.4.0"; + + src = fetchFromGitHub { + owner = "linuxmint"; + repo = pname; + rev = version; + sha256 = "0q5h2pbwysc6hwq5js3lwi6zn7i5qjjy070ynfhfn3z69lw5iz2d"; + }; + + propagatedBuildInputs = [ + glib + + # bindings + gnome3.caribou + keybinder3 + upower + xapps + ]; + + nativeBuildInputs = [ + autoconf-archive + autoreconfHook + wrapGAppsHook + pkgconfig + ]; + + buildInputs = [ + # from .pc + gobject-introspection + libffi + spidermonkey_52 # mozjs-52 + cairo # +cairo-gobject + gtk3 + + # other + + dbus-glib + readline + ]; + + meta = with stdenv.lib; { + homepage = "https://github.com/linuxmint/cjs"; + description = "JavaScript bindings for Cinnamon"; + + longDescription = '' + This module contains JavaScript bindings based on gobject-introspection. + ''; + + license = with licenses; [ + gpl2Plus + lgpl2Plus + mit + mpl11 + ]; + platforms = platforms.linux; + maintainers = [ maintainers.mkg20001 ]; + }; +} diff --git a/nixpkgs/pkgs/desktops/cinnamon/cjs/fix-werror.patch b/nixpkgs/pkgs/desktops/cinnamon/cjs/fix-werror.patch new file mode 100644 index 000000000000..0218eba3b46e --- /dev/null +++ b/nixpkgs/pkgs/desktops/cinnamon/cjs/fix-werror.patch @@ -0,0 +1,39 @@ +From 1b802175914418f5675047c34f1ab1593dd35b18 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Maciej=20Kr=C3=BCger?= <mkg20001@gmail.com> +Date: Wed, 8 Jan 2020 11:04:27 +0100 +Subject: [PATCH] fix werror + +--- + js/src/moz.build | 2 +- + js/src/shell/moz.build | 2 +- + 2 files changed, 2 insertions(+), 2 deletions(-) + +diff --git a/js/src/moz.build b/js/src/moz.build +index 1162cb70c..595ea9842 100644 +--- a/js/src/moz.build ++++ b/js/src/moz.build +@@ -785,7 +785,7 @@ if CONFIG['JS_HAS_CTYPES']: + DEFINES['FFI_BUILDING'] = True + + if CONFIG['GNU_CXX']: +- CXXFLAGS += ['-Wno-shadow', '-Werror=format'] ++ CXXFLAGS += ['-Wno-shadow'] + + # Suppress warnings in third-party code. + if CONFIG['CLANG_CXX']: +diff --git a/js/src/shell/moz.build b/js/src/shell/moz.build +index 72ea8145c..77475b241 100644 +--- a/js/src/shell/moz.build ++++ b/js/src/shell/moz.build +@@ -51,7 +51,7 @@ shellmoduleloader.inputs = [ + ] + + if CONFIG['GNU_CXX']: +- CXXFLAGS += ['-Wno-shadow', '-Werror=format'] ++ CXXFLAGS += ['-Wno-shadow'] + + # This is intended as a temporary workaround to enable VS2015. + if CONFIG['_MSC_VER']: +-- +2.17.1 + diff --git a/nixpkgs/pkgs/desktops/cinnamon/cjs/spidermonkey_52.nix b/nixpkgs/pkgs/desktops/cinnamon/cjs/spidermonkey_52.nix new file mode 100644 index 000000000000..7fb983d6136e --- /dev/null +++ b/nixpkgs/pkgs/desktops/cinnamon/cjs/spidermonkey_52.nix @@ -0,0 +1,95 @@ +{ stdenv, fetchurl, fetchpatch, autoconf213, pkgconfig, perl, zip, which, readline, icu, zlib, nspr, buildPackages }: + +let + version = "52.9.0"; +in stdenv.mkDerivation { + pname = "spidermonkey"; + inherit version; + + src = fetchurl { + url = "mirror://mozilla/firefox/releases/${version}esr/source/firefox-${version}esr.source.tar.xz"; + sha256 = "1mlx34fgh1kaqamrkl5isf0npch3mm6s4lz3jsjb7hakiijhj7f0"; + }; + + outputs = [ "out" "dev" ]; + setOutputFlags = false; # Configure script only understands --includedir + + buildInputs = [ readline icu zlib nspr ]; + nativeBuildInputs = [ autoconf213 pkgconfig perl which buildPackages.python2 zip ]; + + # Apparently this package fails to build correctly with modern compilers, which at least + # on ARMv6 causes polkit testsuite to break with an assertion failure in spidermonkey. + # These flags were stolen from: + # https://git.archlinux.org/svntogit/packages.git/tree/trunk/PKGBUILD?h=packages/js52 + NIX_CFLAGS_COMPILE = "-fno-delete-null-pointer-checks -fno-strict-aliasing -fno-tree-vrp"; + + patches = [ + # needed to build gnome3.gjs + (fetchpatch { + name = "mozjs52-disable-mozglue.patch"; + url = "https://git.archlinux.org/svntogit/packages.git/plain/trunk/mozjs52-disable-mozglue.patch?h=packages/js52&id=4279d2e18d9a44f6375f584911f63d13de7704be"; + sha256 = "18wkss0agdyff107p5lfflk72qiz350xqw2yqc353alkx4fsfpz0"; + }) + (fetchpatch { + url = "https://git.archlinux.org/svntogit/packages.git/plain/trunk/no-error.diff?h=packages/js52"; + sha256 = "1vsw6558lxiy0r1mg6y49cgddan1mfqvqlkyv734bgxyg6n3pb9i"; + }) + ./fix-werror.patch + ]; + + configurePlatforms = [ ]; + + preConfigure = '' + export CXXFLAGS="-fpermissive" + export LIBXUL_DIST=$out + export PYTHON="${buildPackages.python2.interpreter}" + configureFlagsArray+=("--includedir=$dev/include") + + cd js/src + + autoconf + ''; + + configureFlags = [ + "--with-nspr-prefix=${nspr}" + "--with-system-zlib" + "--with-system-icu" + "--with-intl-api" + "--enable-readline" + "--enable-shared-js" + ] ++ stdenv.lib.optional stdenv.hostPlatform.isMusl "--disable-jemalloc" + ++ stdenv.lib.optionals (stdenv.hostPlatform != stdenv.buildPlatform) [ + "--host=${stdenv.buildPlatform.config}" + "--target=${stdenv.hostPlatform.config}" + ]; + + makeFlags = [ + "HOST_CC=${buildPackages.stdenv.cc}/bin/cc" + ]; + + depsBuildBuild = [ buildPackages.stdenv.cc ]; + + enableParallelBuilding = true; + + postInstall = '' + moveToOutput bin/js52-config "$dev" + # Nuke a static lib. + rm $out/lib/libjs_static.ajs + ''; + + meta = with stdenv.lib; { + description = "Mozilla's JavaScript engine written in C/C++"; + homepage = "https://developer.mozilla.org/en/SpiderMonkey"; + license = licenses.gpl2; # TODO: MPL/GPL/LGPL tri-license. + maintainers = [ maintainers.abbradar ]; + platforms = platforms.linux; + + # Commented out so hydra builds the package + # (I know what you're thinking now, but cjs won't be pulling anything from the network + # and modules are allowed to execute commands anyways, so an RCE is basically irrelevant) + # + # knownVulnerabilities = [ + # "The runtime was extracted from Firefox 52, which EOL’d on September 5, 2018." + # ]; + }; +} diff --git a/nixpkgs/pkgs/desktops/cinnamon/default.nix b/nixpkgs/pkgs/desktops/cinnamon/default.nix new file mode 100644 index 000000000000..b08c9e468f8a --- /dev/null +++ b/nixpkgs/pkgs/desktops/cinnamon/default.nix @@ -0,0 +1,16 @@ +{ pkgs, lib }: + +lib.makeScope pkgs.newScope (self: with self; { + cinnamon-control-center = callPackage ./cinnamon-control-center { }; + cinnamon-desktop = callPackage ./cinnamon-desktop { }; + cinnamon-menus = callPackage ./cinnamon-menus { }; + cinnamon-translations = callPackage ./cinnamon-translations { }; + cinnamon-session = callPackage ./cinnamon-session { }; + cinnamon-settings-daemon = callPackage ./cinnamon-settings-daemon { }; + cjs = callPackage ./cjs { }; + nemo = callPackage ./nemo { }; + mint-themes = callPackage ./mint-themes { }; + mint-y-icons = callPackage ./mint-y-icons { }; + muffin = callPackage ./muffin { }; + xapps = callPackage ./xapps { }; +}) diff --git a/nixpkgs/pkgs/desktops/cinnamon/mint-themes/default.nix b/nixpkgs/pkgs/desktops/cinnamon/mint-themes/default.nix new file mode 100644 index 000000000000..770baf77bcda --- /dev/null +++ b/nixpkgs/pkgs/desktops/cinnamon/mint-themes/default.nix @@ -0,0 +1,41 @@ +{ fetchFromGitHub +, stdenv +, python3 +, sassc +, sass +}: + +stdenv.mkDerivation rec { + pname = "mint-themes"; + version = "1.8.0"; + + src = fetchFromGitHub { + owner = "linuxmint"; + repo = pname; + rev = version; + sha256 = "0a8f2cmcl00y4607v5qr2zdcdjc0z74ixm2yakscvw6qzgsh9fac"; + }; + + nativeBuildInputs = [ + python3 + sassc + sass + ]; + + preBuild = '' + patchShebangs . + ''; + + installPhase = '' + mkdir -p $out + mv usr/share $out + ''; + + meta = with stdenv.lib; { + homepage = "https://github.com/linuxmint/mint-themes"; + description = "Mint-X and Mint-Y themes for the cinnamon desktop"; + license = licenses.gpl3; # from debian/copyright + platforms = platforms.linux; + maintainers = [ maintainers.mkg20001 ]; + }; +} diff --git a/nixpkgs/pkgs/desktops/cinnamon/mint-y-icons/default.nix b/nixpkgs/pkgs/desktops/cinnamon/mint-y-icons/default.nix new file mode 100644 index 000000000000..d4415c4bf040 --- /dev/null +++ b/nixpkgs/pkgs/desktops/cinnamon/mint-y-icons/default.nix @@ -0,0 +1,46 @@ +{ fetchFromGitHub +, stdenv +, gnome3 +, hicolor-icon-theme +, gtk3 +}: + +stdenv.mkDerivation rec { + pname = "mint-y-icons"; + version = "unstable-2020-03-21"; + + src = fetchFromGitHub { + owner = "linuxmint"; + repo = pname; + rev = "f169a617bc344cb0b480b2b72f54cdd06af05255"; + sha256 = "1c2a79ylk363i982czwwqcwc7cw6dyzlqphcypqm6nll7xlafq8s"; + }; + + propagatedUserEnvPkgs = [ + gnome3.adwaita-icon-theme + hicolor-icon-theme + ]; + + nativeBuildInputs = [ + gtk3 + ]; + + postFixup = '' + gtk-update-icon-cache $out/share/icons/* + ''; + + dontDropIconThemeCache = true; + + installPhase = '' + mkdir -p $out + mv usr/share $out + ''; + + meta = with stdenv.lib; { + homepage = "https://github.com/linuxmint/mint-y-icons"; + description = "The Mint-Y icon theme"; + license = licenses.gpl3; # from debian/copyright + platforms = platforms.linux; + maintainers = [ maintainers.mkg20001 ]; + }; +} diff --git a/nixpkgs/pkgs/desktops/cinnamon/muffin/default.nix b/nixpkgs/pkgs/desktops/cinnamon/muffin/default.nix new file mode 100644 index 000000000000..2913d4761ff8 --- /dev/null +++ b/nixpkgs/pkgs/desktops/cinnamon/muffin/default.nix @@ -0,0 +1,115 @@ +{ fetchFromGitHub +, cinnamon-desktop +, glib +, file +, gnome3 +, gnome-doc-utils +, fetchpatch +, gobject-introspection +, gtk3 +, intltool +, json-glib +, libinput +, libstartup_notification +, libXtst +, libxkbcommon +, pkgconfig +, stdenv +, udev +, xorg +, wrapGAppsHook +, pango +, cairo +, gtk-doc +, docbook_xsl +, docbook_xml_dtd_43 +, docbook_xml_dtd_42 +, docbook_xml_dtd_412 +, autoconf +, automake +, gettext +, libtool +}: + +# it's a frankensteins monster with some cinnamon sparkles added on top of it + +stdenv.mkDerivation rec { + pname = "muffin"; + version = "4.4.2"; + + src = fetchFromGitHub { + owner = "linuxmint"; + repo = pname; + rev = version; + sha256 = "1kzjw4a5p69j8x55vpbpn6gy8pkbbyii6kzw2nzbypmipgnnijw8"; + }; + + patches = [ + # backport patch that disables wayland components via build flags + # https://github.com/linuxmint/muffin/pull/548#issuecomment-578316820 + (fetchpatch { + url = "https://github.com/linuxmint/muffin/commit/f78bf5b309b3d306848f47cc241b31e9399999a7.patch"; + sha256 = "1c79aa9w2v23xlz86x3l42pavwrqx5d6nmfd9nms29hjsk8mpf4i"; + }) + # mute some warnings that caused build failures + # https://github.com/linuxmint/muffin/issues/535#issuecomment-536917143 + (fetchpatch { + url = "https://src.fedoraproject.org/rpms/muffin/raw/6b0af3a22173e374804371a1cca74e23d696dd37/f/0001-fix-warnings-when-compiling.patch"; + sha256 = "15wdbn3afn3103v7rq1icp8n0vqqwrrya03h0g2rzqlrsc7wrvzw"; + }) + ]; + + buildInputs = [ + gtk3 + glib + pango + cairo + json-glib + cinnamon-desktop + xorg.libXcomposite + xorg.libXcursor + xorg.libXdamage + xorg.libXext + xorg.libXfixes + xorg.libXi + xorg.libxkbfile + xorg.xkeyboardconfig + + libxkbcommon + gnome3.zenity + libinput + libstartup_notification + libXtst + udev + gobject-introspection + ]; + + nativeBuildInputs = [ + autoconf + automake + gettext + libtool + wrapGAppsHook + pkgconfig + intltool + + gnome-doc-utils + gtk-doc + docbook_xsl + docbook_xml_dtd_43 + docbook_xml_dtd_42 + docbook_xml_dtd_412 + ]; + + preConfigure = '' + NOCONFIGURE=1 ./autogen.sh + ''; + + meta = with stdenv.lib; { + homepage = "https://github.com/linuxmint/muffin"; + description = "The window management library for the Cinnamon desktop (libmuffin) and its sample WM binary (muffin)"; + license = licenses.gpl2; + platforms = platforms.linux; + maintainers = [ maintainers.mkg20001 ]; + }; +} diff --git a/nixpkgs/pkgs/desktops/cinnamon/nemo/default.nix b/nixpkgs/pkgs/desktops/cinnamon/nemo/default.nix new file mode 100644 index 000000000000..419aaf249f70 --- /dev/null +++ b/nixpkgs/pkgs/desktops/cinnamon/nemo/default.nix @@ -0,0 +1,76 @@ +{ fetchFromGitHub +, fetchpatch +, glib +, gobject-introspection +, meson +, ninja +, pkgconfig +, stdenv +, wrapGAppsHook +, libxml2 +, gtk3 +, libnotify +, cinnamon-desktop +, xapps +, libexif +, exempi +, intltool +, shared-mime-info +}: + +stdenv.mkDerivation rec { + pname = "nemo"; + version = "4.4.1"; + + # TODO: add plugins support (see https://github.com/NixOS/nixpkgs/issues/78327) + + src = fetchFromGitHub { + owner = "linuxmint"; + repo = pname; + rev = version; + sha256 = "0sskq0rssxvna937md446x1489hkhxys1zq03hvl8asjqa259w2q"; + }; + + patches = [ + (fetchpatch { # details see https://github.com/linuxmint/nemo/pull/2303 + url = "https://github.com/linuxmint/nemo/pull/2303/commits/9c1ec7812abe712419317df07d6b64623e8f639d.patch"; + sha256 = "09dz7lq3i47rbvycawrxwgjmd9g1mhb76ibx2vq85wck6r08arml"; + }) + ]; + + outputs = [ "out" "dev" ]; + + buildInputs = [ + glib + gtk3 + libnotify + cinnamon-desktop + libxml2 + xapps + libexif + exempi + gobject-introspection + ]; + + nativeBuildInputs = [ + meson + pkgconfig + ninja + wrapGAppsHook + intltool + shared-mime-info + ]; + + mesonFlags = [ + # TODO: https://github.com/NixOS/nixpkgs/issues/36468 + "-Dc_args=-I${glib.dev}/include/gio-unix-2.0" + ]; + + meta = with stdenv.lib; { + homepage = "https://github.com/linuxmint/nemo"; + description = "File browser for Cinnamon"; + license = [ licenses.gpl2 licenses.lgpl2 ]; + platforms = platforms.linux; + maintainers = [ maintainers.mkg20001 ]; + }; +} diff --git a/nixpkgs/pkgs/desktops/cinnamon/xapps/default.nix b/nixpkgs/pkgs/desktops/cinnamon/xapps/default.nix new file mode 100644 index 000000000000..ff02720e8021 --- /dev/null +++ b/nixpkgs/pkgs/desktops/cinnamon/xapps/default.nix @@ -0,0 +1,104 @@ +{ fetchFromGitHub +, fetchpatch +, glib +, gobject-introspection +, gtk3 +, libgnomekbd +, gdk-pixbuf +, cairo +, xorg +, meson +, ninja +, pkgconfig +, python3 +, stdenv +, vala +, wrapGAppsHook +, inxi +, mate +}: + +stdenv.mkDerivation rec { + pname = "xapps"; + version = "1.6.10"; + + outputs = [ "out" "dev" ]; + + src = fetchFromGitHub { + owner = "linuxmint"; + repo = pname; + rev = version; + sha256 = "1jkxvqv9fxf9il5qfyddn4j4nkxgbxlil8vizbx99xz0kafb81vp"; + }; + + # TODO: https://github.com/NixOS/nixpkgs/issues/36468 + NIX_CFLAGS_COMPILE = [ + "-I${glib.dev}/include/gio-unix-2.0" + ]; + + patches = [ + (fetchpatch { # details see https://github.com/linuxmint/xapps/pull/65 + url = "https://github.com/linuxmint/xapps/compare/d361d9cf357fade59b4bb68df2dcb2c0c39f90e1...2dfe82ec68981ea046345b2be349bd56293579f7.diff"; + sha256 = "0sffclamvjas8ad57kxrg0vrgrd95xsk0xdl53dc3yivpxkfxrnk"; + }) + ]; + + nativeBuildInputs = [ + meson + ninja + pkgconfig + python3 + vala + wrapGAppsHook + ]; + + buildInputs = [ + gobject-introspection + (python3.withPackages(ps: with ps; [ + pygobject3 + setproctitle # mate applet + ])) + libgnomekbd + gdk-pixbuf + xorg.libxkbfile + python3.pkgs.pygobject3 # for .pc file + mate.mate-panel # for gobject-introspection + ]; + + # Requires in xapp.pc + propagatedBuildInputs = [ + gtk3 + cairo + glib + ]; + + mesonFlags = [ + "-Dpy-overrides-dir=${placeholder "out"}/${python3.sitePackages}/gi/overrides" + ]; + + postPatch = '' + chmod +x schemas/meson_install_schemas.py # patchShebangs requires executable file + + # The fetchpatch hook removes the renames, so postPatch has to rename those files, remove once PR merged + mv files/usr/bin/pastebin scripts/pastebin + mv files/usr/bin/upload-system-info scripts/upload-system-info + mv files/usr/bin/xfce4-set-wallpaper scripts/xfce4-set-wallpaper + mv files/usr/share/icons/hicolor icons + + patchShebangs \ + libxapp/g-codegen.py \ + schemas/meson_install_schemas.py + + # Patch pastebin & inxi location + sed "s|/usr/bin/pastebin|$out/bin/pastebin|" -i scripts/upload-system-info + sed "s|'inxi'|'${inxi}/bin/inxi'|" -i scripts/upload-system-info + ''; + + meta = with stdenv.lib; { + homepage = "https://github.com/linuxmint/xapps"; + description = "Cross-desktop libraries and common resources"; + license = licenses.lgpl3; + platforms = platforms.linux; + maintainers = [ maintainers.mkg20001 ]; + }; +} diff --git a/nixpkgs/pkgs/desktops/deepin/dbus-factory/default.nix b/nixpkgs/pkgs/desktops/deepin/dbus-factory/default.nix new file mode 100644 index 000000000000..df7800091528 --- /dev/null +++ b/nixpkgs/pkgs/desktops/deepin/dbus-factory/default.nix @@ -0,0 +1,35 @@ +{ stdenv, fetchFromGitHub, jq, libxml2, go-dbus-generator, deepin }: + +stdenv.mkDerivation rec { + pname = "dbus-factory"; + version = "3.1.17"; + + src = fetchFromGitHub { + owner = "linuxdeepin"; + repo = pname; + rev = version; + sha256 = "1llq8wzgikgpzj7z36fyzk8kjych2h9nzi3x6zv53z0xc1xn4256"; + }; + + nativeBuildInputs = [ + jq + libxml2 + go-dbus-generator + ]; + + makeFlags = [ "GOPATH=${placeholder "out"}/share/go" ]; + + postPatch = '' + sed -i -e 's:/share/gocode:/share/go:' Makefile + ''; + + passthru.updateScript = deepin.updateScript { name = "${pname}-${version}"; }; + + meta = with stdenv.lib; { + description = "Generates static DBus bindings for Golang and QML at build-time"; + homepage = "https://github.com/linuxdeepin/dbus-factory"; + license = licenses.gpl3; + platforms = platforms.linux; + maintainers = with maintainers; [ romildo ]; + }; +} diff --git a/nixpkgs/pkgs/desktops/deepin/dde-api/default.nix b/nixpkgs/pkgs/desktops/deepin/dde-api/default.nix new file mode 100644 index 000000000000..9fb18d04df82 --- /dev/null +++ b/nixpkgs/pkgs/desktops/deepin/dde-api/default.nix @@ -0,0 +1,128 @@ +{ stdenv, buildGoPackage, fetchFromGitHub, pkgconfig, + alsaLib, + bc, + blur-effect, + coreutils, + dbus-factory, + deepin, + deepin-gettext-tools, + fontconfig, + go, + go-dbus-factory, + go-gir-generator, + go-lib, + grub2, + gtk3, + libcanberra, + libgudev, + librsvg, + poppler, + pulseaudio, + rfkill, + xcur2png +}: + +buildGoPackage rec { + pname = "dde-api"; + version = "5.0.0"; + + goPackagePath = "pkg.deepin.io/dde/api"; + + src = fetchFromGitHub { + owner = "linuxdeepin"; + repo = pname; + rev = version; + sha256 = "0iv4krj6dqdknwvmax7aj40k1h96259kqcfnljadrwpl7cvsvp5p"; + }; + + goDeps = ./deps.nix; + + outputs = [ "out" ]; + + nativeBuildInputs = [ + pkgconfig + deepin-gettext-tools # build + dbus-factory # build + deepin.setupHook + + # TODO: using $PATH to find run time executable does not work with cross compiling + bc # run (to adjust grub theme?) + blur-effect # run (is it really needed?) + coreutils # run (is it really needed?) + fontconfig # run (is it really needed?) + rfkill # run + xcur2png # run + grub2 # run (is it really needed?) + ]; + + buildInputs = [ + go-dbus-factory # needed + go-gir-generator # needed + go-lib # build + + alsaLib # needed + #glib # ? arch + gtk3 # build run + libcanberra # build run + libgudev # needed + librsvg # build run + poppler # build run + pulseaudio # needed + #locales # run (locale-helper needs locale-gen, which is unavailable on NixOS?) + ]; + + postPatch = '' + searchHardCodedPaths # debugging + + fixPath $out /usr/lib/deepin-api \ + lunar-calendar/main.go \ + misc/services/com.deepin.api.CursorHelper.service \ + misc/services/com.deepin.api.Graphic.service \ + misc/services/com.deepin.api.LunarCalendar.service \ + misc/services/com.deepin.api.Pinyin.service \ + misc/system-services/com.deepin.api.Device.service \ + misc/system-services/com.deepin.api.LocaleHelper.service \ + misc/system-services/com.deepin.api.SoundThemePlayer.service \ + misc/systemd/system/deepin-shutdown-sound.service \ + theme_thumb/gtk/gtk.go \ + thumbnails/gtk/gtk.go + fixPath $out /boot/grub Makefile # TODO: confirm where to install grub themes + fixPath $out /var Makefile + + # This package wants to install polkit local authority files into + # /var/lib. Nix does not allow a package to install files into /var/lib + # because it is outside of the Nix store and should contain applications + # state information (persistent data modified by programs as they + # run). Polkit looks for them in both /etc/polkit-1 and + # /var/lib/polkit-1 (with /etc having priority over /var/lib). An + # work around is to install them to $out/etc and simlnk them to + # /etc in the deepin module. + + sed -i -e "s,/var/lib/polkit-1,/etc/polkit-1," Makefile + ''; + + buildPhase = '' + export GOCACHE="$TMPDIR/go-cache"; + make -C go/src/${goPackagePath} + ''; + + installPhase = '' + make install PREFIX="$out" SYSTEMD_LIB_DIR="$out/lib" -C go/src/${goPackagePath} + mv $out/share/gocode $out/share/go + remove-references-to -t ${go} $out/bin/* $out/lib/deepin-api/* + ''; + + postFixup = '' + searchHardCodedPaths $out # debugging + ''; + + passthru.updateScript = deepin.updateScript { name = "${pname}-${version}"; }; + + meta = with stdenv.lib; { + description = "Go-lang bindings for dde-daemon"; + homepage = "https://github.com/linuxdeepin/dde-api"; + license = licenses.gpl3; + platforms = platforms.linux; + maintainers = with maintainers; [ romildo ]; + }; +} diff --git a/nixpkgs/pkgs/desktops/deepin/dde-api/deps.nix b/nixpkgs/pkgs/desktops/deepin/dde-api/deps.nix new file mode 100644 index 000000000000..5ebe1f6af952 --- /dev/null +++ b/nixpkgs/pkgs/desktops/deepin/dde-api/deps.nix @@ -0,0 +1,102 @@ +# This file was generated by https://github.com/kamilchm/go2nix v1.3.0 +[ + { + goPackagePath = "github.com/alecthomas/template"; + fetch = { + type = "git"; + url = "https://github.com/alecthomas/template"; + rev = "fb15b899a75114aa79cc930e33c46b577cc664b1"; + sha256 = "1vlasv4dgycydh5wx6jdcvz40zdv90zz1h7836z7lhsi2ymvii26"; + }; + } + { + goPackagePath = "github.com/alecthomas/units"; + fetch = { + type = "git"; + url = "https://github.com/alecthomas/units"; + rev = "f65c72e2690dc4b403c8bd637baf4611cd4c069b"; + sha256 = "04jyqm7m3m01ppfy1f9xk4qvrwvs78q9zml6llyf2b3v5k6b2bbc"; + }; + } + { + goPackagePath = "github.com/cryptix/wav"; + fetch = { + type = "git"; + url = "https://github.com/cryptix/wav"; + rev = "8bdace674401f0bd3b63c65479b6a6ff1f9d5e44"; + sha256 = "18nyqv0ic35fs9fny8sj84c00vbxs8mnric6vr6yl42624fh5id6"; + }; + } + { + goPackagePath = "github.com/disintegration/imaging"; + fetch = { + type = "git"; + url = "https://github.com/disintegration/imaging"; + rev = "9aab30e6aa535fe3337b489b76759ef97dfaf362"; + sha256 = "015amm3x989hl3r4gxnixj602fl9j8z53n0lrq804cbfbk7a31fw"; + }; + } + { + goPackagePath = "github.com/fogleman/gg"; + fetch = { + type = "git"; + url = "https://github.com/fogleman/gg"; + rev = "4dc34561c649343936bb2d29e23959bd6d98ab12"; + sha256 = "1x1finzdrr80dd3r7wvf7zb184yjf4dawz7s581p2dr64dcialww"; + }; + } + { + goPackagePath = "github.com/golang/freetype"; + fetch = { + type = "git"; + url = "https://github.com/golang/freetype"; + rev = "e2365dfdc4a05e4b8299a783240d4a7d5a65d4e4"; + sha256 = "194w3djc6fv1rgcjqds085b9fq074panc5vw582bcb8dbfzsrqxc"; + }; + } + { + goPackagePath = "github.com/linuxdeepin/go-x11-client"; + fetch = { + type = "git"; + url = "https://github.com/linuxdeepin/go-x11-client"; + rev = "b5b01565d224d5ccd5a4143d9099acceb23e182a"; + sha256 = "1lnffjp8bqy6f8caw6drg1js6hny5w7432riqchcrcd4q85d94rs"; + }; + } + { + goPackagePath = "github.com/nfnt/resize"; + fetch = { + type = "git"; + url = "https://github.com/nfnt/resize"; + rev = "83c6a9932646f83e3267f353373d47347b6036b2"; + sha256 = "005cpiwq28krbjf0zjwpfh63rp4s4is58700idn24fs3g7wdbwya"; + }; + } + { + goPackagePath = "golang.org/x/image"; + fetch = { + type = "git"; + url = "https://go.googlesource.com/image"; + rev = "e7c1f5e7dbb87d8921928a6d9fc52fb31ce73b24"; + sha256 = "0czp897aicqw1dgybj0hc2zzwb20rhqkdqm7siqci3yk7yk9cymf"; + }; + } + { + goPackagePath = "golang.org/x/net"; + fetch = { + type = "git"; + url = "https://go.googlesource.com/net"; + rev = "daa7c04131f568e31c51927b359a2d197a357058"; + sha256 = "17gbfvb5iqyayzw0zd6q218zsbf7x74rflvn18wkxvsw95n1y54h"; + }; + } + { + goPackagePath = "gopkg.in/alecthomas/kingpin.v2"; + fetch = { + type = "git"; + url = "https://gopkg.in/alecthomas/kingpin.v2"; + rev = "947dcec5ba9c011838740e680966fd7087a71d0d"; + sha256 = "0mndnv3hdngr3bxp7yxfd47cas4prv98sqw534mx7vp38gd88n5r"; + }; + } +] diff --git a/nixpkgs/pkgs/desktops/deepin/dde-calendar/default.nix b/nixpkgs/pkgs/desktops/deepin/dde-calendar/default.nix new file mode 100644 index 000000000000..e148df51a875 --- /dev/null +++ b/nixpkgs/pkgs/desktops/deepin/dde-calendar/default.nix @@ -0,0 +1,49 @@ +{ stdenv, mkDerivation, fetchFromGitHub, pkgconfig, cmake, qttools, + deepin-gettext-tools, dtkcore, dtkwidget, deepin +}: + +mkDerivation rec { + pname = "dde-calendar"; + version = "5.0.1"; + + src = fetchFromGitHub { + owner = "linuxdeepin"; + repo = pname; + rev = version; + sha256 = "1zzr3crkz4l5l135y0m53vqhv7fkrbvbspk8295swz9gsm3f7ah9"; + }; + + nativeBuildInputs = [ + cmake + pkgconfig + qttools + deepin-gettext-tools + deepin.setupHook + ]; + + buildInputs = [ + dtkcore + dtkwidget + ]; + + postPatch = '' + searchHardCodedPaths + patchShebangs translate_generation.sh + patchShebangs translate_desktop.sh + + fixPath $out /usr com.deepin.Calendar.service + + sed -i translate_desktop.sh \ + -e "s,/usr/bin/deepin-desktop-ts-convert,deepin-desktop-ts-convert," + ''; + + passthru.updateScript = deepin.updateScript { name = "${pname}-${version}"; }; + + meta = with stdenv.lib; { + description = "Calendar for Deepin Desktop Environment"; + homepage = "https://github.com/linuxdeepin/dde-calendar"; + license = licenses.gpl3; + platforms = platforms.linux; + maintainers = with maintainers; [ romildo ]; + }; +} diff --git a/nixpkgs/pkgs/desktops/deepin/dde-control-center/default.nix b/nixpkgs/pkgs/desktops/deepin/dde-control-center/default.nix new file mode 100644 index 000000000000..adc05e1ea7e1 --- /dev/null +++ b/nixpkgs/pkgs/desktops/deepin/dde-control-center/default.nix @@ -0,0 +1,119 @@ +{ stdenv, mkDerivation, fetchFromGitHub, pkgconfig, cmake, deepin, qttools, qtdeclarative, + networkmanager, qtsvg, qtx11extras, dtkcore, dtkwidget, geoip, gsettings-qt, + dde-network-utils, networkmanager-qt, xorg, mtdev, fontconfig, freetype, dde-api, + dde-daemon, qt5integration, deepin-desktop-base, deepin-desktop-schemas, dbus, + systemd, dde-qt-dbus-factory, qtmultimedia, qtbase, glib, gnome3, which, + substituteAll, tzdata, wrapGAppsHook +}: + +mkDerivation rec { + pname = "dde-control-center"; + version = "5.0.0"; + + src = fetchFromGitHub { + owner = "linuxdeepin"; + repo = pname; + rev = version; + sha256 = "10bx8bpvi3ib32a3l4nyb1j0iq3bch8jm9wfm6d5v0ym1zb92x3b"; + }; + + nativeBuildInputs = [ + cmake + deepin.setupHook + pkgconfig + wrapGAppsHook + ]; + + buildInputs = [ + dde-api + dde-daemon + dde-network-utils + dde-qt-dbus-factory + deepin-desktop-base + deepin-desktop-schemas + dtkcore + dtkwidget + fontconfig + freetype + geoip + glib + gnome3.networkmanager-l2tp + gnome3.networkmanager-openconnect + gnome3.networkmanager-openvpn + gnome3.networkmanager-vpnc + gsettings-qt + mtdev + networkmanager-qt + qt5integration + qtbase + qtdeclarative + qtmultimedia + qtsvg + qttools + qtx11extras + xorg.libX11 + xorg.libXext + xorg.libXrandr + xorg.libxcb + ]; + + cmakeFlags = [ + "-DDISABLE_SYS_UPDATE=YES" + "-DDCC_DISABLE_GRUB=YES" + ]; + + patches = [ + (substituteAll { + src = ./fix-paths.patch; + nmcli = "${networkmanager}/bin/nmcli"; + which = "${which}/bin/which"; + # not packaged + # dman = "${deepin-manual}/bin/dman"; + inherit tzdata; + # exclusive to deepin linux? + # allows to synchronize configuration files to cloud networks + # deepin_sync = "${deepin-sync}"; + }) + ]; + + postPatch = '' + searchHardCodedPaths + + patchShebangs translate_ts2desktop.sh + patchShebangs translate_generation.sh + patchShebangs translate_desktop2ts.sh + + fixPath $out /usr dde-control-center-autostart.desktop \ + com.deepin.dde.ControlCenter.service \ + src/frame/widgets/utils.h + + substituteInPlace dde-control-center.desktop \ + --replace "dbus-send" "${dbus}/bin/dbus-send" + substituteInPlace com.deepin.controlcenter.addomain.policy \ + --replace "/bin/systemctl" "${systemd}/bin/systemctl" + ''; + + dontWrapQtApps = true; + + preFixup = '' + gappsWrapperArgs+=( + "''${qtWrapperArgs[@]}" + ) + ''; + + postFixup = '' + # debuging + searchForUnresolvedDLL $out + searchHardCodedPaths $out + ''; + + passthru.updateScript = deepin.updateScript { name = "${pname}-${version}"; }; + + meta = with stdenv.lib; { + description = "Control panel of Deepin Desktop Environment"; + homepage = "https://github.com/linuxdeepin/dde-control-center"; + license = licenses.gpl3; + platforms = platforms.linux; + maintainers = with maintainers; [ romildo worldofpeace ]; + }; +} diff --git a/nixpkgs/pkgs/desktops/deepin/dde-control-center/fix-paths.patch b/nixpkgs/pkgs/desktops/deepin/dde-control-center/fix-paths.patch new file mode 100644 index 000000000000..2c6e204d3437 --- /dev/null +++ b/nixpkgs/pkgs/desktops/deepin/dde-control-center/fix-paths.patch @@ -0,0 +1,65 @@ +diff --git a/src/frame/frame.cpp b/src/frame/frame.cpp +index 90d06f8..7cdad04 100644 +--- a/src/frame/frame.cpp ++++ b/src/frame/frame.cpp +@@ -375,7 +375,7 @@ void Frame::keyPressEvent(QKeyEvent *e) + #ifdef QT_DEBUG + case Qt::Key_Escape: qApp->quit(); break; + #endif +- case Qt::Key_F1: QProcess::startDetached("dman", QStringList("dde")); break; ++ case Qt::Key_F1: QProcess::startDetached("@dman@", QStringList("dde")); break; + default:; + } + } +diff --git a/src/frame/modules/datetime/timezone_dialog/timezone.cpp b/src/frame/modules/datetime/timezone_dialog/timezone.cpp +index 3dd4aad..5f1b363 100644 +--- a/src/frame/modules/datetime/timezone_dialog/timezone.cpp ++++ b/src/frame/modules/datetime/timezone_dialog/timezone.cpp +@@ -46,7 +46,7 @@ namespace installer { + namespace { + + // Absolute path to zone.tab file. +-const char kZoneTabFile[] = "/usr/share/zoneinfo/zone.tab"; ++const char kZoneTabFile[] = "@tzdata@/share/zoneinfo/zone.tab"; + + // Absolute path to backward timezone file. + const char kTimezoneAliasFile[] = "/timezone_alias"; +diff --git a/src/frame/modules/network/connectionvpneditpage.cpp b/src/frame/modules/network/connectionvpneditpage.cpp +index e292865..95c5a2b 100644 +--- a/src/frame/modules/network/connectionvpneditpage.cpp ++++ b/src/frame/modules/network/connectionvpneditpage.cpp +@@ -215,7 +215,7 @@ void ConnectionVpnEditPage::exportConnConfig() + qDebug() << Q_FUNC_INFO << args; + + QProcess p; +- p.start("nmcli", args); ++ p.start("@nmcli@", args); + p.waitForFinished(); + qDebug() << p.readAllStandardOutput(); + qDebug() << p.readAllStandardError(); +diff --git a/src/frame/modules/network/vpnpage.cpp b/src/frame/modules/network/vpnpage.cpp +index 521a603..450d1a6 100644 +--- a/src/frame/modules/network/vpnpage.cpp ++++ b/src/frame/modules/network/vpnpage.cpp +@@ -224,7 +224,7 @@ void VpnPage::importVPN() + qDebug() << args; + + QProcess p; +- p.start("nmcli", args); ++ p.start("@nmcli@", args); + p.waitForFinished(); + const auto stat = p.exitCode(); + const QString output = p.readAllStandardOutput(); +diff --git a/src/frame/modules/sync/syncworker.cpp b/src/frame/modules/sync/syncworker.cpp +index 3f929bf..6f240d9 100644 +--- a/src/frame/modules/sync/syncworker.cpp ++++ b/src/frame/modules/sync/syncworker.cpp +@@ -24,7 +24,7 @@ SyncWorker::SyncWorker(SyncModel *model, QObject *parent) + + m_model->setSyncIsValid( + QProcess::execute( +- "which", QStringList() << "/usr/lib/deepin-sync-daemon/deepin-sync-daemon") == ++ "@which@", QStringList() << "@deepin_sync@/lib/deepin-sync-daemon/deepin-sync-daemon") == + 0 && + valueByQSettings<bool>(DCC_CONFIG_FILES, "CloudSync", "AllowCloudSync", false)); + } diff --git a/nixpkgs/pkgs/desktops/deepin/dde-daemon/default.nix b/nixpkgs/pkgs/desktops/deepin/dde-daemon/default.nix new file mode 100644 index 000000000000..fdbb7856b063 --- /dev/null +++ b/nixpkgs/pkgs/desktops/deepin/dde-daemon/default.nix @@ -0,0 +1,135 @@ +{ stdenv, buildGoPackage, fetchFromGitHub, fetchpatch, pkgconfig, + dbus-factory, go-dbus-factory, go-gir-generator, go-lib, + deepin-gettext-tools, gettext, dde-api, deepin-desktop-schemas, + deepin-wallpapers, deepin-desktop-base, alsaLib, glib, gtk3, + libgudev, libinput, libnl, librsvg, linux-pam, networkmanager, + pulseaudio, python3, hicolor-icon-theme, glibc, tzdata, go, + deepin, makeWrapper, xkeyboard_config, wrapGAppsHook }: + +buildGoPackage rec { + pname = "dde-daemon"; + version = "5.0.0"; + + goPackagePath = "pkg.deepin.io/dde/daemon"; + + src = fetchFromGitHub { + owner = "linuxdeepin"; + repo = pname; + rev = version; + sha256 = "08jri31bvzbaxaq78rpp46ndv0li2dij63hakvd9b9gs786srql1"; + }; + + patches = [ + # https://github.com/linuxdeepin/dde-daemon/issues/51 + (fetchpatch { + url = "https://github.com/jouyouyun/tap-gesture-patches/raw/master/patches/dde-daemon_3.8.0.patch"; + sha256 = "1ampdsp9zlg263flswdw9gj10n7gxh7zi6w6z9jgh29xlai05pvh"; + }) + ]; + + goDeps = ./deps.nix; + + outputs = [ "out" ]; + + nativeBuildInputs = [ + pkgconfig + dbus-factory + deepin-gettext-tools + gettext + networkmanager + networkmanager.dev + python3 + makeWrapper + wrapGAppsHook + deepin.setupHook + ]; + + buildInputs = [ + go-dbus-factory + go-gir-generator + go-lib + linux-pam + + alsaLib + dde-api + deepin-desktop-base + deepin-desktop-schemas + deepin-wallpapers + glib + libgudev + gtk3 + hicolor-icon-theme + libinput + libnl + librsvg + pulseaudio + tzdata + xkeyboard_config + ]; + + postPatch = '' + searchHardCodedPaths # debugging + patchShebangs network/nm_generator/gen_nm_consts.py + + fixPath $out /usr/share/dde/data launcher/manager.go dock/dock_manager_init.go + fixPath $out /usr/share/dde-daemon launcher/manager.go gesture/config.go + fixPath ${networkmanager.dev} /usr/share/gir-1.0/NM-1.0.gir network/nm_generator/Makefile + fixPath ${glibc.bin} /usr/bin/getconf systeminfo/utils.go + fixPath ${deepin-desktop-base} /etc/deepin-version systeminfo/version.go accounts/deepinversion.go + fixPath ${tzdata} /usr/share/zoneinfo timedate/zoneinfo/zone.go + fixPath ${dde-api} /usr/lib/deepin-api grub2/modify_manger.go accounts/image_blur.go + fixPath ${deepin-wallpapers} /usr/share/wallpapers appearance/background/list.go accounts/user.go + fixPath ${xkeyboard_config} /usr/share/X11/xkb inputdevices/layout_list.go + + # TODO: deepin-system-monitor comes from dde-extra + + sed -i -e "s|{DESTDIR}/etc|{DESTDIR}$out/etc|" Makefile + sed -i -e "s|{DESTDIR}/lib|{DESTDIR}$out/lib|" Makefile + sed -i -e "s|{DESTDIR}/var|{DESTDIR}$out/var|" Makefile + + find -type f -exec sed -i -e "s,/usr/lib/deepin-daemon,$out/lib/deepin-daemon," {} + + + # This package wants to install polkit local authority files into + # /var/lib. Nix does not allow a package to install files into /var/lib + # because it is outside of the Nix store and should contain applications + # state information (persistent data modified by programs as they + # run). Polkit looks for them in both /etc/polkit-1 and + # /var/lib/polkit-1 (with /etc having priority over /var/lib). An + # work around is to install them to $out/etc and simlnk them to + # /etc in the deepin module. + + sed -i -e "s,/var/lib/polkit-1,/etc/polkit-1," Makefile + ''; + + buildPhase = '' + export PAM_MODULE_DIR="$out/lib/security" + # compilation of the nm module is failing + #make -C go/src/${goPackagePath}/network/nm_generator gen-nm-code + make -C go/src/${goPackagePath} + ''; + + installPhase = '' + make install PREFIX="$out" -C go/src/${goPackagePath} + remove-references-to -t ${go} $out/lib/deepin-daemon/* + searchHardCodedPaths $out + ''; + + postFixup = '' + # wrapGAppsHook does not work with binaries outside of $out/bin or $out/libexec + for binary in $out/lib/deepin-daemon/*; do + wrapGApp "$binary" + done + + searchHardCodedPaths $out # debugging + ''; + + passthru.updateScript = deepin.updateScript { name = "${pname}-${version}"; }; + + meta = with stdenv.lib; { + description = "Daemon for handling Deepin Desktop Environment session settings"; + homepage = "https://github.com/linuxdeepin/dde-daemon"; + license = licenses.gpl3; + platforms = platforms.linux; + maintainers = with maintainers; [ romildo ]; + }; +} diff --git a/nixpkgs/pkgs/desktops/deepin/dde-daemon/deps.nix b/nixpkgs/pkgs/desktops/deepin/dde-daemon/deps.nix new file mode 100644 index 000000000000..bcc5ab81808f --- /dev/null +++ b/nixpkgs/pkgs/desktops/deepin/dde-daemon/deps.nix @@ -0,0 +1,111 @@ +# This file was generated by https://github.com/kamilchm/go2nix v1.3.0 +[ + { + goPackagePath = "github.com/alecthomas/template"; + fetch = { + type = "git"; + url = "https://github.com/alecthomas/template"; + rev = "fb15b899a75114aa79cc930e33c46b577cc664b1"; + sha256 = "1vlasv4dgycydh5wx6jdcvz40zdv90zz1h7836z7lhsi2ymvii26"; + }; + } + { + goPackagePath = "github.com/alecthomas/units"; + fetch = { + type = "git"; + url = "https://github.com/alecthomas/units"; + rev = "f65c72e2690dc4b403c8bd637baf4611cd4c069b"; + sha256 = "04jyqm7m3m01ppfy1f9xk4qvrwvs78q9zml6llyf2b3v5k6b2bbc"; + }; + } + { + goPackagePath = "github.com/axgle/mahonia"; + fetch = { + type = "git"; + url = "https://github.com/axgle/mahonia"; + rev = "3358181d7394e26beccfae0ffde05193ef3be33a"; + sha256 = "0b8wsrxmv8a0cqbnsg55lpf29pxy2zw8azvgh3ck664lqpcfybhq"; + }; + } + { + goPackagePath = "github.com/cryptix/wav"; + fetch = { + type = "git"; + url = "https://github.com/cryptix/wav"; + rev = "8bdace674401f0bd3b63c65479b6a6ff1f9d5e44"; + sha256 = "18nyqv0ic35fs9fny8sj84c00vbxs8mnric6vr6yl42624fh5id6"; + }; + } + { + goPackagePath = "github.com/gosexy/gettext"; + fetch = { + type = "git"; + url = "https://github.com/gosexy/gettext"; + rev = "74466a0a0c4a62fea38f44aa161d4bbfbe79dd6b"; + sha256 = "0asphx8nd7zmp88wk6aakk5292np7yw73akvfdvlvs9q5r5ahkgi"; + }; + } + { + goPackagePath = "github.com/linuxdeepin/go-x11-client"; + fetch = { + type = "git"; + url = "https://github.com/linuxdeepin/go-x11-client"; + rev = "b5b01565d224d5ccd5a4143d9099acceb23e182a"; + sha256 = "1lnffjp8bqy6f8caw6drg1js6hny5w7432riqchcrcd4q85d94rs"; + }; + } + { + goPackagePath = "github.com/msteinert/pam"; + fetch = { + type = "git"; + url = "https://github.com/msteinert/pam"; + rev = "f29b9f28d6f9a1f6c4e6fd5db731999eb946574b"; + sha256 = "1v5z51mgyz2glm7v0mg60xs1as88wx6cqhys2khc5d3khkr8q0qp"; + }; + } + { + goPackagePath = "github.com/nfnt/resize"; + fetch = { + type = "git"; + url = "https://github.com/nfnt/resize"; + rev = "83c6a9932646f83e3267f353373d47347b6036b2"; + sha256 = "005cpiwq28krbjf0zjwpfh63rp4s4is58700idn24fs3g7wdbwya"; + }; + } + { + goPackagePath = "golang.org/x/image"; + fetch = { + type = "git"; + url = "https://go.googlesource.com/image"; + rev = "e7c1f5e7dbb87d8921928a6d9fc52fb31ce73b24"; + sha256 = "0czp897aicqw1dgybj0hc2zzwb20rhqkdqm7siqci3yk7yk9cymf"; + }; + } + { + goPackagePath = "golang.org/x/net"; + fetch = { + type = "git"; + url = "https://go.googlesource.com/net"; + rev = "daa7c04131f568e31c51927b359a2d197a357058"; + sha256 = "17gbfvb5iqyayzw0zd6q218zsbf7x74rflvn18wkxvsw95n1y54h"; + }; + } + { + goPackagePath = "golang.org/x/text"; + fetch = { + type = "git"; + url = "https://go.googlesource.com/text"; + rev = "4b67af870c6ffd08258ef1202f371aebccaf7b68"; + sha256 = "01mhy1xs2dh18kp6wdk1xnb34lbzv2qkvdwj7w5ha2qgm5rrm4ik"; + }; + } + { + goPackagePath = "gopkg.in/alecthomas/kingpin.v2"; + fetch = { + type = "git"; + url = "https://gopkg.in/alecthomas/kingpin.v2"; + rev = "947dcec5ba9c011838740e680966fd7087a71d0d"; + sha256 = "0mndnv3hdngr3bxp7yxfd47cas4prv98sqw534mx7vp38gd88n5r"; + }; + } +] diff --git a/nixpkgs/pkgs/desktops/deepin/dde-dock/dde-dock.plugins-dir.patch b/nixpkgs/pkgs/desktops/deepin/dde-dock/dde-dock.plugins-dir.patch new file mode 100644 index 000000000000..87b76045b43d --- /dev/null +++ b/nixpkgs/pkgs/desktops/deepin/dde-dock/dde-dock.plugins-dir.patch @@ -0,0 +1,39 @@ +From c48867b73485b34b95f14e9b9bbb54507fc77648 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Jos=C3=A9=20Romildo=20Malaquias?= <malaquias@gmail.com> +Date: Fri, 19 Apr 2019 18:21:49 -0300 +Subject: [PATCH] Use an environment variable for the plugins directory + +--- + frame/controller/dockpluginscontroller.cpp | 2 +- + plugins/tray/system-trays/systemtrayscontroller.cpp | 2 +- + 2 files changed, 2 insertions(+), 2 deletions(-) + +diff --git a/frame/controller/dockpluginscontroller.cpp b/frame/controller/dockpluginscontroller.cpp +index 32a5885..efd53c8 100644 +--- a/frame/controller/dockpluginscontroller.cpp ++++ b/frame/controller/dockpluginscontroller.cpp +@@ -126,7 +126,7 @@ void DockPluginsController::startLoader() + { + QString pluginsDir("../plugins"); + if (!QDir(pluginsDir).exists()) { +- pluginsDir = "/usr/lib/dde-dock/plugins"; ++ pluginsDir = QProcessEnvironment::systemEnvironment().value("DDE_DOCK_PLUGINS_DIR", "@out@/lib/dde-dock/plugins"); + } + qDebug() << "using dock plugins dir:" << pluginsDir; + +diff --git a/plugins/tray/system-trays/systemtrayscontroller.cpp b/plugins/tray/system-trays/systemtrayscontroller.cpp +index 0c8ca88..7c47d25 100644 +--- a/plugins/tray/system-trays/systemtrayscontroller.cpp ++++ b/plugins/tray/system-trays/systemtrayscontroller.cpp +@@ -159,7 +159,7 @@ void SystemTraysController::startLoader() + { + QString pluginsDir("../plugins/system-trays"); + if (!QDir(pluginsDir).exists()) { +- pluginsDir = "/usr/lib/dde-dock/plugins/system-trays"; ++ pluginsDir = QProcessEnvironment::systemEnvironment().value("DDE_DOCK_PLUGINS_DIR", "@out@/lib/dde-dock/plugins") + "/system-trays"; + } + qDebug() << "using system tray plugins dir:" << pluginsDir; + +-- +2.21.0 + diff --git a/nixpkgs/pkgs/desktops/deepin/dde-dock/default.nix b/nixpkgs/pkgs/desktops/deepin/dde-dock/default.nix new file mode 100644 index 000000000000..f2edb83537d7 --- /dev/null +++ b/nixpkgs/pkgs/desktops/deepin/dde-dock/default.nix @@ -0,0 +1,94 @@ +{ stdenv, mkDerivation, fetchFromGitHub, cmake, pkgconfig, qttools, qtx11extras, + qtsvg, polkit, gsettings-qt, dtkcore, dtkwidget, + dde-qt-dbus-factory, dde-network-utils, dde-daemon, + deepin-desktop-schemas, xorg, glib, wrapGAppsHook, deepin, + plugins ? [], symlinkJoin, makeWrapper, libdbusmenu }: + +let +unwrapped = mkDerivation rec { + pname = "dde-dock"; + version = "5.0.0"; + + src = fetchFromGitHub { + owner = "linuxdeepin"; + repo = pname; + rev = version; + sha256 = "12dshsqhzajnxm7r53qg0c84b6xlj313qnssnx2m25z4jdp5i7pr"; + }; + + nativeBuildInputs = [ + cmake + pkgconfig + qttools + wrapGAppsHook + deepin.setupHook + ]; + + buildInputs = [ + dde-daemon + dde-network-utils + dde-qt-dbus-factory + deepin-desktop-schemas + dtkcore + dtkwidget + glib + gsettings-qt + libdbusmenu + polkit + qtsvg + qtx11extras + xorg.libXdmcp + xorg.libXtst + xorg.libpthreadstubs + ]; + + patches = [ + ./dde-dock.plugins-dir.patch + ]; + + postPatch = '' + searchHardCodedPaths + patchShebangs translate_generation.sh + fixPath $out /etc/dde-dock plugins/keyboard-layout/CMakeLists.txt + fixPath $out /usr cmake/DdeDock/DdeDockConfig.cmake + fixPath $out /usr dde-dock.pc + fixPath $out /usr/bin/dde-dock frame/com.deepin.dde.Dock.service + fixPath $out /usr/share/dbus-1 CMakeLists.txt + fixPath ${dde-daemon} /usr/lib/deepin-daemon frame/item/showdesktopitem.cpp + fixPath ${dde-network-utils} /usr/share/dde-network-utils frame/main.cpp + fixPath ${polkit} /usr/bin/pkexec plugins/overlay-warning/overlay-warning-plugin.cpp + + substituteInPlace frame/controller/dockpluginscontroller.cpp --subst-var-by out $out + substituteInPlace plugins/tray/system-trays/systemtrayscontroller.cpp --subst-var-by out $out + ''; + + cmakeFlags = [ "-DDOCK_TRAY_USE_NATIVE_POPUP=YES" ]; + + dontWrapQtApps = true; + + preFixup = '' + gappsWrapperArgs+=( + "''${qtWrapperArgs[@]}" + ) + ''; + + postFixup = '' + searchHardCodedPaths $out + ''; + + passthru.updateScript = deepin.updateScript { name = "${pname}-${version}"; }; + + meta = with stdenv.lib; { + description = "Dock for Deepin Desktop Environment"; + homepage = "https://github.com/linuxdeepin/dde-dock"; + license = licenses.gpl3; + platforms = platforms.linux; + maintainers = with maintainers; [ romildo ]; + }; +}; + +in if plugins == [] then unwrapped + else import ./wrapper.nix { + inherit makeWrapper symlinkJoin plugins; + dde-dock = unwrapped; + } diff --git a/nixpkgs/pkgs/desktops/deepin/dde-dock/wrapper.nix b/nixpkgs/pkgs/desktops/deepin/dde-dock/wrapper.nix new file mode 100644 index 000000000000..8f6d8a67b1a9 --- /dev/null +++ b/nixpkgs/pkgs/desktops/deepin/dde-dock/wrapper.nix @@ -0,0 +1,21 @@ +{ makeWrapper, symlinkJoin, dde-dock, plugins }: + +symlinkJoin { + name = "dde-dock-with-plugins-${dde-dock.version}"; + + paths = [ dde-dock ] ++ plugins; + + buildInputs = [ makeWrapper ]; + + postBuild = '' + wrapProgram $out/bin/dde-dock \ + --set DDE_DOCK_PLUGINS_DIR "$out/lib/dde-dock/plugins" + + rm $out/share/dbus-1/services/com.deepin.dde.Dock.service + + substitute ${dde-dock}/share/dbus-1/services/com.deepin.dde.Dock.service $out/share/dbus-1/services/com.deepin.dde.Dock.service \ + --replace ${dde-dock} $out + ''; + + inherit (dde-dock) meta; +} diff --git a/nixpkgs/pkgs/desktops/deepin/dde-file-manager/dde-file-manager.fix-mime-cache-paths.patch b/nixpkgs/pkgs/desktops/deepin/dde-file-manager/dde-file-manager.fix-mime-cache-paths.patch new file mode 100644 index 000000000000..253a67b04ec7 --- /dev/null +++ b/nixpkgs/pkgs/desktops/deepin/dde-file-manager/dde-file-manager.fix-mime-cache-paths.patch @@ -0,0 +1,323 @@ +From 29f4ad88e2294ae70b10180e7361d135c4e5c896 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Jos=C3=A9=20Romildo=20Malaquias?= <malaquias@gmail.com> +Date: Mon, 13 May 2019 00:09:42 -0300 +Subject: [PATCH 2/2] Use XDG to look for mime cache + +--- + .../shutil/mimesappsmanager.cpp | 230 ++++++++++-------- + .../shutil/mimesappsmanager.h | 6 +- + 2 files changed, 125 insertions(+), 111 deletions(-) + +diff --git a/dde-file-manager-lib/shutil/mimesappsmanager.cpp b/dde-file-manager-lib/shutil/mimesappsmanager.cpp +index c9e53630..7a21df51 100644 +--- a/dde-file-manager-lib/shutil/mimesappsmanager.cpp ++++ b/dde-file-manager-lib/shutil/mimesappsmanager.cpp +@@ -552,14 +552,20 @@ QString MimesAppsManager::getMimeAppsCacheFile() + return QString("%1/%2").arg(DFMStandardPaths::location(DFMStandardPaths::CachePath), "MimeApps.json"); + } + +-QString MimesAppsManager::getMimeInfoCacheFilePath() ++QStringList MimesAppsManager::getMimeInfoCacheFilePath() + { +- return "/usr/share/applications/mimeinfo.cache"; ++ QStringList paths; ++ for (const QString dir : getMimeInfoCacheFileRootPath() ) ++ paths.append(dir + QDir::separator() + "mimeinfo.cache"); ++ qDebug() << "getMimeInfoCacheFilePath: " << paths; ++ return paths; + } + +-QString MimesAppsManager::getMimeInfoCacheFileRootPath() ++QStringList MimesAppsManager::getMimeInfoCacheFileRootPath() + { +- return "/usr/share/applications"; ++ QStringList paths = QStandardPaths::standardLocations(QStandardPaths::ApplicationsLocation); ++ qDebug() << "getMimeInfoCacheFileRootPath: " << paths; ++ return paths; + } + + QString MimesAppsManager::getDesktopFilesCacheFile() +@@ -574,23 +580,27 @@ QString MimesAppsManager::getDesktopIconsCacheFile() + + QStringList MimesAppsManager::getDesktopFiles() + { +- QStringList desktopFiles; ++ QStringList desktopFiles; + +- foreach (QString desktopFolder, getApplicationsFolders()) { +- QDirIterator it(desktopFolder, QStringList("*.desktop"), +- QDir::Files | QDir::NoDotAndDotDot, +- QDirIterator::Subdirectories); +- while (it.hasNext()) { +- it.next(); +- desktopFiles.append(it.filePath()); +- } +- } +- return desktopFiles; ++ foreach (QString desktopFolder, getApplicationsFolders()) { ++ QDirIterator it(desktopFolder, QStringList("*.desktop"), ++ QDir::Files | QDir::NoDotAndDotDot, ++ QDirIterator::Subdirectories); ++ while (it.hasNext()) { ++ it.next(); ++ desktopFiles.append(it.filePath()); ++ } ++ } ++ return desktopFiles; + } + +-QString MimesAppsManager::getDDEMimeTypeFile() ++QStringList MimesAppsManager::getDDEMimeTypeFile() + { +- return QString("%1/%2/%3").arg(getMimeInfoCacheFileRootPath(), "deepin", "dde-mimetype.list"); ++ QStringList paths; ++ for (const QString path : getMimeInfoCacheFileRootPath()) ++ paths.append(QString("%1/%2/%3").arg(path, "deepin", "dde-mimetype.list")); ++ qDebug() << "getDDEMimeTypeFile: " << paths; ++ return paths; + } + + QMap<QString, DesktopFile> MimesAppsManager::getDesktopObjs() +@@ -663,124 +673,128 @@ void MimesAppsManager::initMimeTypeApps() + MimeApps.insert(key, orderApps); + } + +- //check mime apps from cache +- QFile f(getMimeInfoCacheFilePath()); +- if(!f.open(QIODevice::ReadOnly)){ +- qDebug () << "failed to read mime info cache file:" << f.errorString(); +- return; +- } +- + QStringList audioDesktopList; + QStringList imageDeksopList; + QStringList textDekstopList; + QStringList videoDesktopList; + +- while (!f.atEnd()) { +- QString data = f.readLine(); +- QString _desktops = data.split("=").last(); +- QString mimeType = data.split("=").first(); +- QStringList desktops = _desktops.split(";"); +- +- foreach (const QString desktop, desktops) { +- if(desktop.isEmpty() || audioDesktopList.contains(desktop)) +- continue; ++ //check mime apps from cache ++ for (const QString path : getMimeInfoCacheFilePath()) { ++ QFile f(path); ++ if(!f.open(QIODevice::ReadOnly)){ ++ qDebug () << "failed to read mime info cache file:" << f.errorString(); ++ return; ++ } + +- if(mimeType.startsWith("audio")){ +- if(!audioDesktopList.contains(desktop)) +- audioDesktopList << desktop; +- } else if(mimeType.startsWith("image")){ +- if(!imageDeksopList.contains(desktop)) +- imageDeksopList << desktop; +- } else if(mimeType.startsWith("text")){ +- if(!textDekstopList.contains(desktop)) +- textDekstopList << desktop; +- } else if(mimeType.startsWith("video")){ +- if(!videoDesktopList.contains(desktop)) +- videoDesktopList << desktop; ++ while (!f.atEnd()) { ++ QString data = f.readLine(); ++ QString _desktops = data.split("=").last(); ++ QString mimeType = data.split("=").first(); ++ QStringList desktops = _desktops.split(";"); ++ ++ foreach (const QString desktop, desktops) { ++ if(desktop.isEmpty() || audioDesktopList.contains(desktop)) ++ continue; ++ ++ if(mimeType.startsWith("audio")){ ++ if(!audioDesktopList.contains(desktop)) ++ audioDesktopList << desktop; ++ } else if(mimeType.startsWith("image")){ ++ if(!imageDeksopList.contains(desktop)) ++ imageDeksopList << desktop; ++ } else if(mimeType.startsWith("text")){ ++ if(!textDekstopList.contains(desktop)) ++ textDekstopList << desktop; ++ } else if(mimeType.startsWith("video")){ ++ if(!videoDesktopList.contains(desktop)) ++ videoDesktopList << desktop; ++ } + } + } ++ f.close(); + } +- f.close(); + +- const QString mimeInfoCacheRootPath = getMimeInfoCacheFileRootPath(); +- foreach (QString desktop, audioDesktopList) { +- const QString path = QString("%1/%2").arg(mimeInfoCacheRootPath,desktop); +- if(!QFile::exists(path)) +- continue; +- DesktopFile df(path); +- AudioMimeApps.insert(path, df); +- } ++ for (const QString mimeInfoCacheRootPath : getMimeInfoCacheFileRootPath()) { ++ foreach (QString desktop, audioDesktopList) { ++ const QString path = QString("%1/%2").arg(mimeInfoCacheRootPath,desktop); ++ if(!QFile::exists(path)) ++ continue; ++ DesktopFile df(path); ++ AudioMimeApps.insert(path, df); ++ } + +- foreach (QString desktop, imageDeksopList) { +- const QString path = QString("%1/%2").arg(mimeInfoCacheRootPath,desktop); +- if(!QFile::exists(path)) +- continue; +- DesktopFile df(path); +- ImageMimeApps.insert(path, df); +- } ++ foreach (QString desktop, imageDeksopList) { ++ const QString path = QString("%1/%2").arg(mimeInfoCacheRootPath,desktop); ++ if(!QFile::exists(path)) ++ continue; ++ DesktopFile df(path); ++ ImageMimeApps.insert(path, df); ++ } + +- foreach (QString desktop, textDekstopList) { +- const QString path = QString("%1/%2").arg(mimeInfoCacheRootPath,desktop); +- if(!QFile::exists(path)) +- continue; +- DesktopFile df(path); +- TextMimeApps.insert(path, df); +- } ++ foreach (QString desktop, textDekstopList) { ++ const QString path = QString("%1/%2").arg(mimeInfoCacheRootPath,desktop); ++ if(!QFile::exists(path)) ++ continue; ++ DesktopFile df(path); ++ TextMimeApps.insert(path, df); ++ } + +- foreach (QString desktop, videoDesktopList) { +- const QString path = QString("%1/%2").arg(mimeInfoCacheRootPath,desktop); +- if(!QFile::exists(path)) +- continue; +- DesktopFile df(path); +- VideoMimeApps.insert(path, df); ++ foreach (QString desktop, videoDesktopList) { ++ const QString path = QString("%1/%2").arg(mimeInfoCacheRootPath,desktop); ++ if(!QFile::exists(path)) ++ continue; ++ DesktopFile df(path); ++ VideoMimeApps.insert(path, df); ++ } + } +- + return; + } + + void MimesAppsManager::loadDDEMimeTypes() + { +- QSettings settings(getDDEMimeTypeFile(), QSettings::IniFormat); +- qDebug() << settings.childGroups(); ++ for (const QString path : getDDEMimeTypeFile()) { ++ QSettings settings(path, QSettings::IniFormat); ++ qDebug() << settings.childGroups(); + +- QFile file(getDDEMimeTypeFile()); +- if (!file.open(QIODevice::ReadOnly | QIODevice::Text)) { +- return; +- } ++ QFile file(path); ++ if (!file.open(QIODevice::ReadOnly | QIODevice::Text)) { ++ continue; ++ } ++ ++ // Read propeties ++ QTextStream in(&file); ++ QString desktopKey; ++ while (!in.atEnd()) { + +- // Read propeties +- QTextStream in(&file); +- QString desktopKey; +- while (!in.atEnd()) { ++ // Read new line ++ QString line = in.readLine(); + +- // Read new line +- QString line = in.readLine(); ++ // Skip empty line or line with invalid format ++ if (line.trimmed().isEmpty()) { ++ continue; ++ } + +- // Skip empty line or line with invalid format +- if (line.trimmed().isEmpty()) { +- continue; +- } ++ // Read group ++ // NOTE: symbols '[' and ']' can be found not only in group names, but ++ // only group can start with '[' + +- // Read group +- // NOTE: symbols '[' and ']' can be found not only in group names, but +- // only group can start with '[' ++ if (line.trimmed().startsWith("[") && line.trimmed().endsWith("]")) { ++ QString tmp = line.trimmed().replace("[", "").replace("]", ""); ++ desktopKey = tmp; ++ continue; ++ } + +- if (line.trimmed().startsWith("[") && line.trimmed().endsWith("]")) { +- QString tmp = line.trimmed().replace("[", "").replace("]", ""); +- desktopKey = tmp; +- continue; +- } +- +- // If we are in correct group and line contains assignment then read data +- int first_equal = line.indexOf('='); +- if (!desktopKey.isEmpty() && first_equal >= 0) { +- QString value = line.mid(first_equal + 1); +- QStringList mimetypes = value.split(";"); +- DDE_MimeTypes.insert(desktopKey, mimetypes); +- desktopKey.clear(); ++ // If we are in correct group and line contains assignment then read data ++ int first_equal = line.indexOf('='); ++ if (!desktopKey.isEmpty() && first_equal >= 0) { ++ QString value = line.mid(first_equal + 1); ++ QStringList mimetypes = value.split(";"); ++ DDE_MimeTypes.insert(desktopKey, mimetypes); ++ desktopKey.clear(); ++ } + } ++ file.close(); + } +- file.close(); + } + + bool MimesAppsManager::lessByDateTime(const QFileInfo &f1, const QFileInfo &f2) +diff --git a/dde-file-manager-lib/shutil/mimesappsmanager.h b/dde-file-manager-lib/shutil/mimesappsmanager.h +index 223c80aa..00a61302 100644 +--- a/dde-file-manager-lib/shutil/mimesappsmanager.h ++++ b/dde-file-manager-lib/shutil/mimesappsmanager.h +@@ -101,12 +101,12 @@ public: + + static QStringList getApplicationsFolders(); + static QString getMimeAppsCacheFile(); +- static QString getMimeInfoCacheFilePath(); +- static QString getMimeInfoCacheFileRootPath(); ++ static QStringList getMimeInfoCacheFilePath(); ++ static QStringList getMimeInfoCacheFileRootPath(); + static QString getDesktopFilesCacheFile(); + static QString getDesktopIconsCacheFile(); + static QStringList getDesktopFiles(); +- static QString getDDEMimeTypeFile(); ++ static QStringList getDDEMimeTypeFile(); + static QMap<QString, DesktopFile> getDesktopObjs(); + static void initMimeTypeApps(); + static void loadDDEMimeTypes(); +-- +2.21.0 + diff --git a/nixpkgs/pkgs/desktops/deepin/dde-file-manager/dde-file-manager.fix-paths.patch b/nixpkgs/pkgs/desktops/deepin/dde-file-manager/dde-file-manager.fix-paths.patch new file mode 100644 index 000000000000..3ced15e7e5a4 --- /dev/null +++ b/nixpkgs/pkgs/desktops/deepin/dde-file-manager/dde-file-manager.fix-paths.patch @@ -0,0 +1,89 @@ +From e68d983a6befd223087916cb3fe31baee77decc4 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Jos=C3=A9=20Romildo=20Malaquias?= <malaquias@gmail.com> +Date: Sun, 12 May 2019 08:50:07 -0300 +Subject: [PATCH 1/2] Use qt library to determine where to look for application + files + +--- + dde-file-manager-lib/shutil/fileutils.cpp | 34 ++++++++++++------- + .../shutil/mimesappsmanager.cpp | 11 ++---- + 2 files changed, 25 insertions(+), 20 deletions(-) + +diff --git a/dde-file-manager-lib/shutil/fileutils.cpp b/dde-file-manager-lib/shutil/fileutils.cpp +index ae8120d3..d6a0573a 100644 +--- a/dde-file-manager-lib/shutil/fileutils.cpp ++++ b/dde-file-manager-lib/shutil/fileutils.cpp +@@ -242,13 +242,19 @@ bool FileUtils::isArchive(const QString &path) + */ + QStringList FileUtils::getApplicationNames() { + QStringList appNames; +- QDirIterator it("/usr/share/applications", QStringList("*.desktop"), +- QDir::Files | QDir::NoDotAndDotDot, +- QDirIterator::Subdirectories); +- while (it.hasNext()) { +- it.next(); +- appNames.append(it.fileName()); ++ ++ const QStringList desktopDirs = QStandardPaths::standardLocations(QStandardPaths::ApplicationsLocation); ++ qDebug() << "dde-file-manager getApplicationNames desktopDirs:" << desktopDirs; ++ for (const QString &dir : desktopDirs) { ++ QDirIterator it(dir, QStringList("*.desktop"), ++ QDir::Files | QDir::NoDotAndDotDot, ++ QDirIterator::Subdirectories); ++ while (it.hasNext()) { ++ it.next(); ++ appNames.append(it.fileName()); ++ } + } ++ + return appNames; + } + //--------------------------------------------------------------------------- +@@ -259,12 +265,16 @@ QStringList FileUtils::getApplicationNames() { + */ + QList<DesktopFile> FileUtils::getApplications() { + QList<DesktopFile> apps; +- QDirIterator it("/usr/share/applications", QStringList("*.desktop"), +- QDir::Files | QDir::NoDotAndDotDot, +- QDirIterator::Subdirectories); +- while (it.hasNext()) { +- it.next(); +- apps.append(DesktopFile(it.filePath())); ++ const QStringList desktopDirs = QStandardPaths::standardLocations(QStandardPaths::ApplicationsLocation); ++ qDebug() << "dde-file-manager getApplications desktopDirs:" << desktopDirs; ++ for (const QString &dir : desktopDirs) { ++ QDirIterator it(dir, QStringList("*.desktop"), ++ QDir::Files | QDir::NoDotAndDotDot, ++ QDirIterator::Subdirectories); ++ while (it.hasNext()) { ++ it.next(); ++ apps.append(DesktopFile(it.filePath())); ++ } + } + return apps; + } +diff --git a/dde-file-manager-lib/shutil/mimesappsmanager.cpp b/dde-file-manager-lib/shutil/mimesappsmanager.cpp +index c6149702..c9e53630 100644 +--- a/dde-file-manager-lib/shutil/mimesappsmanager.cpp ++++ b/dde-file-manager-lib/shutil/mimesappsmanager.cpp +@@ -542,14 +542,9 @@ QStringList MimesAppsManager::getrecommendedAppsFromMimeWhiteList(const DUrl &ur + + QStringList MimesAppsManager::getApplicationsFolders() + { +- QStringList desktopFolders; +- desktopFolders << QString("/usr/share/applications/") +- << QString("/usr/local/share/applications/") +- << QString("/usr/share/gnome/applications/") +- << QString("/var/lib/flatpak/exports/share/applications") +- << QDir::homePath() + QString("/.local/share/flatpak/exports/share/applications") +- << QDir::homePath() + QString( "/.local/share/applications" ); +- return desktopFolders; ++ QStringList paths = QStandardPaths::standardLocations(QStandardPaths::ApplicationsLocation); ++ qDebug() << "dde-file-manager getApplicationsFolders:" << paths; ++ return paths; + } + + QString MimesAppsManager::getMimeAppsCacheFile() +-- +2.21.0 + diff --git a/nixpkgs/pkgs/desktops/deepin/dde-file-manager/dde-file-manager.pixmaps-paths.patch b/nixpkgs/pkgs/desktops/deepin/dde-file-manager/dde-file-manager.pixmaps-paths.patch new file mode 100644 index 000000000000..582760e6db2a --- /dev/null +++ b/nixpkgs/pkgs/desktops/deepin/dde-file-manager/dde-file-manager.pixmaps-paths.patch @@ -0,0 +1,38 @@ +From 084c3cfcf4995c109ca2e96f042fe341f925b0b4 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Jos=C3=A9=20Romildo=20Malaquias?= <malaquias@gmail.com> +Date: Thu, 16 May 2019 19:00:52 -0300 +Subject: [PATCH 4/4] Use xdg to look for pixmap icons + +--- + dde-file-manager-lib/shutil/fileutils.cpp | 15 ++++++++++----- + 1 file changed, 10 insertions(+), 5 deletions(-) + +diff --git a/dde-file-manager-lib/shutil/fileutils.cpp b/dde-file-manager-lib/shutil/fileutils.cpp +index d6a0573a..e912e7c2 100644 +--- a/dde-file-manager-lib/shutil/fileutils.cpp ++++ b/dde-file-manager-lib/shutil/fileutils.cpp +@@ -362,11 +362,16 @@ QIcon FileUtils::searchAppIcon(const DesktopFile &app, + } + + // Last chance +- QDir appIcons("/usr/share/pixmaps","", 0, QDir::Files | QDir::NoDotAndDotDot); +- QStringList iconFiles = appIcons.entryList(); +- QStringList searchIcons = iconFiles.filter(name); +- if (searchIcons.count() > 0) { +- return QIcon("/usr/share/pixmaps/" + searchIcons.at(0)); ++ const QStringList dirs = QStandardPaths::standardLocations(QStandardPaths::GenericDataLocation); ++ qDebug() << "searchAppIcon: last chance: look for pixmaps at: " << dirs; ++ for (const QString &dir : dirs) { ++ const QString path = dir + QDir::separator() + "pixmaps"; ++ QDir appIcons(path,"", 0, QDir::Files | QDir::NoDotAndDotDot); ++ QStringList iconFiles = appIcons.entryList(); ++ QStringList searchIcons = iconFiles.filter(name); ++ if (searchIcons.count() > 0) { ++ return QIcon(path + QDir::separator() + searchIcons.at(0)); ++ } + } + + // Default icon +-- +2.21.0 + diff --git a/nixpkgs/pkgs/desktops/deepin/dde-file-manager/default.nix b/nixpkgs/pkgs/desktops/deepin/dde-file-manager/default.nix new file mode 100644 index 000000000000..a952a82dfca0 --- /dev/null +++ b/nixpkgs/pkgs/desktops/deepin/dde-file-manager/default.nix @@ -0,0 +1,259 @@ +{ stdenv, mkDerivation, fetchFromGitHub, pkgconfig, avfs, dde-daemon, + dde-dock, dde-polkit-agent, dde-qt-dbus-factory, deepin, + deepin-anything, deepin-desktop-schemas, deepin-gettext-tools, + deepin-movie-reborn, deepin-shortcut-viewer, deepin-terminal, + disomaster, dtkcore, dtkwidget, ffmpegthumbnailer, file, glib, + gnugrep, gsettings-qt, gvfs, jemalloc, kcodecs, libX11, libsecret, + polkit, polkit-qt, poppler, procps, qmake, qt5integration, + qtmultimedia, qtsvg, qttools, qtx11extras, runtimeShell, samba, + shadow, taglib, udisks2-qt5, xdg-user-dirs, xorg, zlib, + wrapGAppsHook }: + +mkDerivation rec { + pname = "dde-file-manager"; + version = "5.0.0"; + + src = fetchFromGitHub { + owner = "linuxdeepin"; + repo = pname; + rev = version; + sha256 = "0n2nl09anqdq0n5yn688n385rn81lcpybs0sa8m311k3k9ndkkyr"; + }; + + nativeBuildInputs = [ + deepin.setupHook + qmake + qttools + pkgconfig + deepin-gettext-tools + wrapGAppsHook + ]; + + buildInputs = [ + avfs + dde-daemon + dde-dock + dde-polkit-agent + dde-qt-dbus-factory + deepin-anything + deepin-desktop-schemas + deepin-movie-reborn.dev + deepin-shortcut-viewer + deepin-terminal + disomaster + dtkcore + dtkwidget + ffmpegthumbnailer + file + glib + gnugrep + gsettings-qt + gvfs + jemalloc + kcodecs + libsecret + polkit + polkit-qt + poppler + procps + qt5integration + qtmultimedia + qtsvg + qtx11extras + samba + taglib + udisks2-qt5 + xdg-user-dirs + xorg.libX11 + xorg.libxcb + xorg.xcbutil + xorg.xcbutilwm + xorg.xorgproto + zlib + ]; + + patches = [ + ./dde-file-manager.fix-paths.patch + ./dde-file-manager.fix-mime-cache-paths.patch + ./dde-file-manager.pixmaps-paths.patch + ]; + + postPatch = '' + searchHardCodedPaths + + patchShebangs dde-desktop/translate_generation.sh + patchShebangs dde-desktop/translate_ts2desktop.sh + patchShebangs dde-file-manager-lib/generate_translations.sh + patchShebangs dde-file-manager/generate_translations.sh + patchShebangs dde-file-manager/translate_ts2desktop.sh + patchShebangs usb-device-formatter/generate_translations.sh + patchShebangs usb-device-formatter/translate_ts2desktop.sh + + # x-terminal-emulator is a virtual package in Debian systems. The + # terminal emulator is configured by Debian's alternative system. + # It is not available on NixOS. Use deepin-terminal instead + sed -i -e "s,x-terminal-emulator,deepin-terminal," \ + dde-file-manager-lib/shutil/fileutils.cpp + + sed -i -e "s,\$\$\\[QT_INSTALL_LIBS\\],$out/lib," \ + dde-file-manager-lib/dde-file-manager-lib.pro \ + dde-file-thumbnail-tool/common.pri \ + common/common.pri + + sed -i '/^QMAKE_PKGCONFIG_DESTDIR/i QMAKE_PKGCONFIG_PREFIX = $$PREFIX' \ + dde-file-manager-lib/dde-file-manager-lib.pro + + fixPath ${dde-dock} /usr/include/dde-dock \ + dde-dock-plugins/disk-mount/disk-mount.pro + + # treefrog is not available in NixOS, and I am not sure if it is really needed + #fixPath $ {treefrog-framework} /usr/include/treefrog \ + # dde-sharefiles/appbase.pri + + fixPath ${deepin-anything} /usr/share/dbus-1/interfaces \ + dde-file-manager-lib/dbusinterface/dbusinterface.pri + + sed -i -e "s,\$\$system(\$\$PKG_CONFIG --variable libdir deepin-anything-server-lib),$out/lib," \ + deepin-anything-server-plugins/dde-anythingmonitor/dde-anythingmonitor.pro + + fixPath ${dde-daemon} /usr/lib/deepin-daemon/desktop-toggle \ + dde-zone/mainwindow.h + + fixPath ${deepin-gettext-tools} /usr/bin/deepin-desktop-ts-convert \ + dde-desktop/translate_desktop2ts.sh \ + dde-desktop/translate_ts2desktop.sh \ + dde-file-manager/translate_desktop2ts.sh \ + dde-file-manager/translate_ts2desktop.sh \ + usb-device-formatter/translate_desktop2ts.sh \ + usb-device-formatter/translate_ts2desktop.sh + + fixPath ${avfs} /usr/bin/mountavfs dde-file-manager-lib/shutil/fileutils.cpp + fixPath ${avfs} /usr/bin/umountavfs dde-file-manager-lib/shutil/fileutils.cpp + + fixPath ${deepin-terminal} /usr/bin/deepin-terminal \ + dde-file-manager-lib/shutil/fileutils.cpp + + fixPath $out /usr/share/dde-file-manager \ + dde-sharefiles/appbase.pri \ + dde-sharefiles/dde-sharefiles.pro + + fixPath $out /usr/share/usb-device-formatter \ + usb-device-formatter/main.cpp + + fixPath $out /usr/share/applications \ + dde-file-manager/mips/dde-file-manager-autostart.desktop \ + dde-desktop/development.pri + + fixPath $out /usr/bin \ + dbusservices/com.deepin.dde.desktop.service \ + dde-desktop/data/com.deepin.dde.desktop.service \ + dde-desktop/dbus/filedialog/com.deepin.filemanager.filedialog.service \ + dde-desktop/dbus/filemanager1/org.freedesktop.FileManager.service \ + dde-file-manager-daemon/dbusservice/com.deepin.filemanager.daemon.service \ + dde-file-manager-daemon/dbusservice/dde-filemanager-daemon.service \ + dde-file-manager-daemon/dde-file-manager-daemon.pro \ + dde-file-manager-lib/dde-file-manager-lib.pro \ + dde-file-manager-lib/pkexec/com.deepin.pkexec.dde-file-manager.policy \ + dde-file-manager/dde-file-manager-xdg-autostart.desktop \ + dde-file-manager/dde-file-manager.desktop \ + dde-file-manager/dde-file-manager.pro \ + dde-file-manager/mips/dde-file-manager-autostart.desktop \ + dde-file-manager/mips/dde-file-manager.desktop \ + dde-file-manager/pkexec/com.deepin.pkexec.dde-file-manager.policy \ + usb-device-formatter/pkexec/com.deepin.pkexec.usb-device-formatter.policy \ + usb-device-formatter/usb-device-formatter.desktop \ + usb-device-formatter/usb-device-formatter.pro + fixPath $out /etc \ + dde-file-manager/dde-file-manager.pro \ + dde-file-manager-daemon/dde-file-manager-daemon.pro + + fixPath $out /usr \ + common/common.pri \ + dde-desktop/dbus/filedialog/filedialog.pri \ + dde-desktop/dbus/filemanager1/filemanager1.pri \ + dde-desktop/development.pri \ + dde-dock-plugins/disk-mount/disk-mount.pro \ + dde-file-manager-daemon/dde-file-manager-daemon.pro \ + usb-device-formatter/usb-device-formatter.pro + + sed -i -e "s,xdg-user-dir,${xdg-user-dirs}/bin/xdg-user-dir," \ + dde-file-manager/dde-xdg-user-dirs-update + + sed -i -e "s,Exec=dde-file-manager,Exec=$out/bin/dde-file-manager," \ + dde-file-manager/dde-file-manager.desktop + + sed -i -e "s,Exec=gio,Exec=${glib.bin}/bin/gio," \ + dde-desktop/data/applications/dde-trash.desktop \ + dde-desktop/data/applications/dde-computer.desktop + + sed -i -e "s,/usr/lib/gvfs/gvfsd,${gvfs}/libexec/gvfsd," \ + dde-file-manager-lib/gvfs/networkmanager.cpp + + sed -i -e "s,/usr/sbin/smbd,${samba}/bin/smbd," \ + -e "s,/usr/sbin/groupadd,${shadow}/bin/groupadd," \ + -e "s,/usr/sbin/adduser,${shadow}/bin/adduser," \ + dde-file-manager-daemon/usershare/usersharemanager.cpp + + sed -i -e 's,startDetached("deepin-shortcut-viewer",startDetached("${deepin-shortcut-viewer}/bin/deepin-shortcut-viewer",' \ + dde-file-manager-lib/controllers/appcontroller.cpp + + sed -i -e 's,/bin/bash,${runtimeShell},' \ + -e 's,\<ps\>,${procps}/bin/ps,' \ + -e 's,\<grep\>,${gnugrep}/bin/grep,' \ + utils/utils.cpp \ + dde-file-manager-lib/controllers/fileeventprocessor.cpp + + # The hard coded path in `QString("/etc/xdg/%1/%2")` in + # dde-file-manager-lib/interfaces/dfmsettings.cpp + # does not needed a fix because all the standard locations + # are tried before faling back to /etc/xdg. + + # I do not know yet how to deal with: + # dde-file-manager-lib/sw_label/llsdeepinlabellibrary.h: return "/usr/lib/sw_64-linux-gnu/dde-file-manager/libllsdeeplabel.so"; + # dde-file-manager-lib/sw_label/filemanagerlibrary.h: return "/usr/lib/sw_64-linux-gnu/dde-file-manager/libfilemanager.so"; + # dde-file-manager-lib/sw_label/libinstall.sh:mkdir /usr/lib/sw_64-linux-gnu/dde-file-manager + # dde-file-manager-lib/sw_label/libinstall.sh:cp libfilemanager.so libllsdeeplabel.so /usr/lib/sw_64-linux-gnu/dde-file-manager + # They are not present on my installations of Deepin Linux, Arch Linux and Ubuntu. Can they be ignored? + + # Notes: + # - As file-roller is looked in the path using QStandardPaths::findExecutable, it is not been added as a dependency. + # - deepin-qt5config is a dependency exclusive to the Deepin Linux distribution. No other distribution has it, according to repology. + ''; + + qmakeFlags = [ + "QMAKE_CFLAGS_ISYSTEM=" + + # Disable ffmpeg + "CONFIG+=DISABLE_FFMPEG" + ]; + + preBuild = '' + export LD_LIBRARY_PATH="$LD_LIBRARY_PATH''${LD_LIBRARY_PATH:+:}${zlib}/lib"; + export LD_LIBRARY_PATH="$LD_LIBRARY_PATH''${LD_LIBRARY_PATH:+:}${libX11}/lib"; + ''; + + dontWrapQtApps = true; + + preFixup = '' + gappsWrapperArgs+=( + "''${qtWrapperArgs[@]}" + ) + ''; + + postFixup = '' + # debuging + unset LD_LIBRARY_PATH + searchForUnresolvedDLL $out + searchHardCodedPaths $out + ''; + + passthru.updateScript = deepin.updateScript { name = "${pname}-${version}"; }; + + meta = with stdenv.lib; { + description = "File manager and desktop module for Deepin Desktop Environment"; + homepage = "https://github.com/linuxdeepin/dde-file-manager"; + license = licenses.gpl3; + platforms = platforms.linux; + maintainers = with maintainers; [ romildo ]; + }; +} diff --git a/nixpkgs/pkgs/desktops/deepin/dde-kwin/0001-dde-kwin.pc-make-paths-relative.patch b/nixpkgs/pkgs/desktops/deepin/dde-kwin/0001-dde-kwin.pc-make-paths-relative.patch new file mode 100644 index 000000000000..707eb2074095 --- /dev/null +++ b/nixpkgs/pkgs/desktops/deepin/dde-kwin/0001-dde-kwin.pc-make-paths-relative.patch @@ -0,0 +1,56 @@ +From c4edb65554f90a5abfc2ecbf63587b8c6ef2653d Mon Sep 17 00:00:00 2001 +From: worldofpeace <worldofpeace@protonmail.ch> +Date: Tue, 22 Oct 2019 17:20:24 -0400 +Subject: [PATCH] dde-kwin.pc: make paths relative + +Values like libdir should be relative to the literal ${prefix}. +We also use @ONLY so we don't substitute values like ${prefix} +with CMake resulting in an unintentional replacement. +--- + plugins/kwin-xcb/lib/CMakeLists.txt | 2 +- + plugins/kwin-xcb/lib/dde-kwin.pc.in | 18 +++++++++--------- + 2 files changed, 10 insertions(+), 10 deletions(-) + +diff --git a/plugins/kwin-xcb/lib/CMakeLists.txt b/plugins/kwin-xcb/lib/CMakeLists.txt +index 0189b74..62e5553 100644 +--- a/plugins/kwin-xcb/lib/CMakeLists.txt ++++ b/plugins/kwin-xcb/lib/CMakeLists.txt +@@ -61,7 +61,7 @@ install_files( + kwinutils.h + ) + +-configure_file(${PROJECT_NAME}.pc.in ${PROJECT_NAME}.pc) ++configure_file(${PROJECT_NAME}.pc.in ${PROJECT_NAME}.pc @ONLY) + if (CMAKE_INSTALL_LIBDIR) + install_files("/${CMAKE_INSTALL_LIBDIR}/pkgconfig" FILES ${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}.pc) + elseif (CMAKE_LIBRARY_OUTPUT_DIRECTORY) +diff --git a/plugins/kwin-xcb/lib/dde-kwin.pc.in b/plugins/kwin-xcb/lib/dde-kwin.pc.in +index 9b1d813..1179761 100644 +--- a/plugins/kwin-xcb/lib/dde-kwin.pc.in ++++ b/plugins/kwin-xcb/lib/dde-kwin.pc.in +@@ -1,13 +1,13 @@ +-prefix=${CMAKE_INSTALL_PREFIX} +-exec_prefix=${CMAKE_INSTALL_PREFIX} +-libdir=${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_LIBDIR} +-includedir=${INCLUDE_OUTPUT_PATH} ++prefix=@CMAKE_INSTALL_PREFIX@ ++exec_prefix=${prefix} ++libdir=${prefix}/lib ++includedir=@INCLUDE_OUTPUT_PATH@ + + +-Name: ${PROJECT_NAME} ++Name: @PROJECT_NAME@ + Description: DDE KWin plugin library +-Version: ${PROJECT_VERSION} +-Libs: -l${PROJECT_NAME} +-Libs.private: -L/usr/X11R6/lib64 -lQt5X11Extras -lKF5WindowSystem -lQt5Widgets -lQt5Gui -lKF5ConfigCore -lKF5CoreAddons -lQt5Core -lGL -lpthread +-Cflags: -I${INCLUDE_OUTPUT_PATH} ++Version: @PROJECT_VERSION@ ++Libs: -l$@PROJECT_NAME@ ++Libs.private: -L/usr/X11R6/lib64 -lQt5X11Extras -lKF5WindowSystem -lQt5Widgets -lQt5Gui -lKF5ConfigCore -lKF5CoreAddons -lQt5Core -lGL -lpthread ++Cflags: -I@INCLUDE_OUTPUT_PATH@ + +-- +2.23.0 + diff --git a/nixpkgs/pkgs/desktops/deepin/dde-kwin/default.nix b/nixpkgs/pkgs/desktops/deepin/dde-kwin/default.nix new file mode 100644 index 000000000000..850186953f63 --- /dev/null +++ b/nixpkgs/pkgs/desktops/deepin/dde-kwin/default.nix @@ -0,0 +1,140 @@ +{ stdenv +, mkDerivation +, pkgconfig +, fetchFromGitHub +, deepin +, cmake +, extra-cmake-modules +, qtbase +, libxcb +, kglobalaccel +, kwindowsystem +, kcoreaddons +, kwin +, dtkcore +, gsettings-qt +, fontconfig +, deepin-desktop-schemas +, glib +, libXrender +, mtdev +, qttools +, deepin-gettext-tools +, kwayland +, qtx11extras +, qtquickcontrols2 +, epoxy +, qt5integration +, dde-session-ui +, dbus +, wrapGAppsHook +}: + +mkDerivation rec { + pname = "dde-kwin"; + version = "5.0.0"; + + src = fetchFromGitHub { + owner = "linuxdeepin"; + repo = pname; + rev = version; + sha256 = "0bvkx9h5ygj46a0j76kfyq3gvk6zn4fx6clhrmcr40hbi2k33cbl"; + }; + + nativeBuildInputs = [ + cmake + deepin-gettext-tools + deepin.setupHook + extra-cmake-modules + pkgconfig + wrapGAppsHook + ]; + + buildInputs = [ + deepin-desktop-schemas + dtkcore + epoxy + fontconfig + glib + gsettings-qt + kcoreaddons + kglobalaccel + kwayland + kwin + kwindowsystem + libXrender + libxcb + mtdev + qtbase + qtquickcontrols2 + qttools + qtx11extras + qt5integration + ]; + + # Need to add kwayland around: + # * https://github.com/linuxdeepin/dde-kwin/blob/5226bb984c844129f9fa589da56e77decb7b39a1/plugins/kwineffects/blur/CMakeLists.txt#L14 + NIX_CFLAGS_COMPILE = "-I${kwayland.dev}/include/KF5"; + + cmakeFlags = [ + "-DKWIN_VERSION=${(builtins.parseDrvName kwin.name).version}" + ]; + + patches = [ + ./0001-dde-kwin.pc-make-paths-relative.patch + ./fix-paths.patch + ]; + + postPatch = '' + searchHardCodedPaths + + patchShebangs translate_ts2desktop.sh \ + translate_generation.sh \ + translate_desktop2ts.sh \ + plugins/kwin-xcb/plugin/translate_generation.sh + + fixPath ${deepin-gettext-tools} /usr/bin/deepin-desktop-ts-convert translate_desktop2ts.sh translate_ts2desktop.sh + + fixPath $out /etc/xdg configures/CMakeLists.txt deepin-wm-dbus/deepinwmfaker.cpp + + # TODO: Need environmental patch + fixPath /run/current-system/sw /usr/lib plugins/kwin-xcb/plugin/main.cpp + + substituteInPlace configures/kwin-wm-multitaskingview.desktop \ + --replace "dbus-send" "${dbus}/bin/dbus-send" + + fixPath ${dde-session-ui} /usr/lib/deepin-daemon/dde-warning-dialog deepin-wm-dbus/deepinwmfaker.cpp + + # Correct qt plugin installation path to be within dde-kwin prefix. + substituteInPlace CMakeLists.txt \ + --subst-var-by plugin_path "$out/$qtPluginPrefix" + ''; + + postInstall = '' + # Correct invalid path in .pc + substituteInPlace $out/lib/pkgconfig/dde-kwin.pc \ + --replace "-L/usr/X11R6/lib64" "" + + chmod +x $out/bin/kwin_no_scale + ''; + + dontWrapQtApps = true; + + preFixup = '' + gappsWrapperArgs+=( + "''${qtWrapperArgs[@]}" + ) + ''; + + enableParallelBuilding = true; + + passthru.updateScript = deepin.updateScript { name = "${pname}-${version}"; }; + + meta = with stdenv.lib; { + description = "KWin configuration for Deepin Desktop Environment"; + homepage = "https://github.com/linuxdeepin/dde-kwin"; + license = licenses.gpl3; + platforms = platforms.linux; + maintainers = with maintainers; [ romildo worldofpeace ]; + }; +} diff --git a/nixpkgs/pkgs/desktops/deepin/dde-kwin/fix-paths.patch b/nixpkgs/pkgs/desktops/deepin/dde-kwin/fix-paths.patch new file mode 100644 index 000000000000..1bf576e5c1a5 --- /dev/null +++ b/nixpkgs/pkgs/desktops/deepin/dde-kwin/fix-paths.patch @@ -0,0 +1,16 @@ +diff --git a/CMakeLists.txt b/CMakeLists.txt +index feef49d..ecb7ed2 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -26,9 +26,9 @@ macro(query_qmake args output) + endif() + endmacro() + +-query_qmake("QT_INSTALL_PLUGINS" QT_INSTALL_PLUGINS) ++set(QT_INSTALL_PLUGINS @plugin_path@) + +-set(PLUGIN_INSTALL_PATH ${QT_INSTALL_PLUGINS}/platforms) ++set(PLUGIN_INSTALL_PATH @plugin_path@/platforms) + # Find includes in corresponding build directories + set(CMAKE_INCLUDE_CURRENT_DIR ON) + # Instruct CMake to run moc automatically when needed diff --git a/nixpkgs/pkgs/desktops/deepin/dde-launcher/default.nix b/nixpkgs/pkgs/desktops/deepin/dde-launcher/default.nix new file mode 100644 index 000000000000..a1561f5c0922 --- /dev/null +++ b/nixpkgs/pkgs/desktops/deepin/dde-launcher/default.nix @@ -0,0 +1,84 @@ +{ stdenv, mkDerivation, fetchFromGitHub, pkgconfig, cmake, dde-qt-dbus-factory, + dde-session-ui, deepin, deepin-desktop-schemas, deepin-wallpapers, + dtkcore, dtkwidget, gsettings-qt, qtsvg, qttools, qtx11extras, + which, xdg_utils, wrapGAppsHook, glib }: + +mkDerivation rec { + pname = "dde-launcher"; + version = "5.0.0"; + + src = fetchFromGitHub { + owner = "linuxdeepin"; + repo = pname; + rev = version; + sha256 = "0zh6bb0r3pgjrnw9rba46ghdzza1ka1mv7r1znf8gw24wsjgjcpn"; + }; + + nativeBuildInputs = [ + cmake + pkgconfig + qttools + wrapGAppsHook + deepin.setupHook + ]; + + buildInputs = [ + dde-qt-dbus-factory + dde-session-ui + deepin-desktop-schemas + deepin-wallpapers + dtkcore + dtkwidget + glib + gsettings-qt + qtsvg + qtx11extras + which + xdg_utils + ]; + + postPatch = '' + # debugging + searchHardCodedPaths + + substituteInPlace CMakeLists.txt --replace "/usr/share" "$out/share" + + substituteInPlace src/dbusservices/com.deepin.dde.Launcher.service --replace "/usr" "$out" + + substituteInPlace src/historywidget.cpp --replace "xdg-open" "${xdg_utils}/bin/xdg-open" + substituteInPlace src/widgets/miniframebottombar.cpp --replace "dde-shutdown" "${dde-session-ui}/bin/dde-shutdown" + substituteInPlace src/widgets/miniframerightbar.cpp --replace "which" "${which}/bin/which" + + # Uncomment (and remove space after $) after packaging deepin-manual + #substituteInPlace src/sharedeventfilter.cpp --replace "dman" "$ {deepin-manual}/bin/dman" + + for f in src/boxframe/*.cpp; do + substituteInPlace $f --replace "/usr/share/backgrounds/default_background.jpg" "${deepin-wallpapers}/share/backgrounds/deepin/desktop.jpg" + done + + # note: `dbus-send` path does not need to be hard coded because it is not used for dtkcore >= 2.0.8.0 + ''; + + dontWrapQtApps = true; + + preFixup = '' + gappsWrapperArgs+=( + "''${qtWrapperArgs[@]}" + ) + ''; + + postFixup = '' + # debugging + searchHardCodedPaths $out + ''; + + passthru.updateScript = deepin.updateScript { name = "${pname}-${version}"; }; + + meta = with stdenv.lib; { + description = "Deepin Desktop Environment launcher module"; + homepage = "https://github.com/linuxdeepin/dde-launcher"; + license = licenses.gpl3; + platforms = platforms.linux; + maintainers = with maintainers; [ romildo ]; + }; +} diff --git a/nixpkgs/pkgs/desktops/deepin/dde-network-utils/default.nix b/nixpkgs/pkgs/desktops/deepin/dde-network-utils/default.nix new file mode 100644 index 000000000000..1550987cc739 --- /dev/null +++ b/nixpkgs/pkgs/desktops/deepin/dde-network-utils/default.nix @@ -0,0 +1,53 @@ +{ stdenv, mkDerivation, fetchFromGitHub, substituteAll, qmake, pkgconfig, qttools, + dde-qt-dbus-factory, proxychains, which, deepin }: + +mkDerivation rec { + pname = "dde-network-utils"; + version = "5.0.1"; + + src = fetchFromGitHub { + owner = "linuxdeepin"; + repo = pname; + rev = version; + sha256 = "0670kfnkplf7skkd1ql6y9x15kmrcbdv1005qwkg4vn8hic6s0z3"; + }; + + nativeBuildInputs = [ + qmake + pkgconfig + qttools + deepin.setupHook + ]; + + buildInputs = [ + dde-qt-dbus-factory + proxychains + which + ]; + + patches = [ + (substituteAll { + src = ./fix-paths.patch; + inherit which proxychains; + }) + ]; + + postPatch = '' + searchHardCodedPaths # for debugging + patchShebangs translate_generation.sh + ''; + + postFixup = '' + searchHardCodedPaths $out # for debugging + ''; + + passthru.updateScript = deepin.updateScript { name = "${pname}-${version}"; }; + + meta = with stdenv.lib; { + description = "Deepin network utils"; + homepage = "https://github.com/linuxdeepin/dde-network-utils"; + license = licenses.gpl3; + platforms = platforms.linux; + maintainers = with maintainers; [ romildo ]; + }; +} diff --git a/nixpkgs/pkgs/desktops/deepin/dde-network-utils/fix-paths.patch b/nixpkgs/pkgs/desktops/deepin/dde-network-utils/fix-paths.patch new file mode 100644 index 000000000000..9f7ecd423c56 --- /dev/null +++ b/nixpkgs/pkgs/desktops/deepin/dde-network-utils/fix-paths.patch @@ -0,0 +1,23 @@ +diff -ur dde-network-utils-master.orig/dde-network-utils.pro dde-network-utils-master/dde-network-utils.pro +--- dde-network-utils-master.orig/dde-network-utils.pro 2019-04-04 03:37:46.000000000 -0300 ++++ dde-network-utils-master/dde-network-utils.pro 2019-04-07 05:56:28.283195087 -0300 +@@ -52,6 +52,7 @@ + + QMAKE_PKGCONFIG_NAME = libddenetworkutils + QMAKE_PKGCONFIG_DESCRIPTION = libddenetworkutils ++QMAKE_PKGCONFIG_PREFIX = $$PREFIX + QMAKE_PKGCONFIG_INCDIR = $$includes.path + QMAKE_PKGCONFIG_LIBDIR = $$target.path + QMAKE_PKGCONFIG_DESTDIR = pkgconfig +diff -ur dde-network-utils-master.orig/networkworker.cpp dde-network-utils-master/networkworker.cpp +--- dde-network-utils-master.orig/networkworker.cpp 2019-04-04 03:37:46.000000000 -0300 ++++ dde-network-utils-master/networkworker.cpp 2019-04-07 05:54:28.656479216 -0300 +@@ -80,7 +80,7 @@ + } + } + +- const bool isAppProxyVaild = QProcess::execute("which", QStringList() << "/usr/bin/proxychains4") == 0; ++ const bool isAppProxyVaild = QProcess::execute("@which@/bin/which", QStringList() << "@proxychains@/bin/proxychains4") == 0; + m_networkModel->onAppProxyExistChanged(isAppProxyVaild); + } + diff --git a/nixpkgs/pkgs/desktops/deepin/dde-polkit-agent/dde-polkit-agent.plugins-dir.patch b/nixpkgs/pkgs/desktops/deepin/dde-polkit-agent/dde-polkit-agent.plugins-dir.patch new file mode 100644 index 000000000000..a6941e975eb4 --- /dev/null +++ b/nixpkgs/pkgs/desktops/deepin/dde-polkit-agent/dde-polkit-agent.plugins-dir.patch @@ -0,0 +1,42 @@ +From 4f457d38e9e75bc97ee7dba633bf0cdd61b8cd5b Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Jos=C3=A9=20Romildo=20Malaquias?= <malaquias@gmail.com> +Date: Fri, 19 Apr 2019 22:01:16 -0300 +Subject: [PATCH] Use an environment variable to find plugins + +--- + pluginmanager.cpp | 18 ++++++++++++------ + 1 file changed, 12 insertions(+), 6 deletions(-) + +diff --git a/pluginmanager.cpp b/pluginmanager.cpp +index 0c03237..79bdf86 100644 +--- a/pluginmanager.cpp ++++ b/pluginmanager.cpp +@@ -34,13 +34,19 @@ QList<QButtonGroup*> PluginManager::reduceGetOptions(const QString &actionID) + void PluginManager::load() + { + +- QDir dir("/usr/lib/polkit-1-dde/plugins/"); +- QFileInfoList pluginFiles = dir.entryInfoList((QStringList("*.so"))); ++ QStringList pluginsDirs = QProcessEnvironment::systemEnvironment().value("DDE_POLKIT_PLUGINS_DIRS").split(QDir::listSeparator(), QString::SkipEmptyParts); ++ pluginsDirs.append("/usr/lib/polkit-1-dde/plugins/"); + +- for (const QFileInfo &pluginFile : pluginFiles) { +- AgentExtension *plugin = loadFile(pluginFile.absoluteFilePath()); +- if (plugin) +- m_plugins << plugin; ++ for (const QString &dirName : pluginsDirs) { ++ QDir dir(dirName); ++ ++ QFileInfoList pluginFiles = dir.entryInfoList((QStringList("*.so"))); ++ ++ for (const QFileInfo &pluginFile : pluginFiles) { ++ AgentExtension *plugin = loadFile(pluginFile.absoluteFilePath()); ++ if (plugin) ++ m_plugins << plugin; ++ } + } + } + +-- +2.21.0 + diff --git a/nixpkgs/pkgs/desktops/deepin/dde-polkit-agent/default.nix b/nixpkgs/pkgs/desktops/deepin/dde-polkit-agent/default.nix new file mode 100644 index 000000000000..e00ee30ca927 --- /dev/null +++ b/nixpkgs/pkgs/desktops/deepin/dde-polkit-agent/default.nix @@ -0,0 +1,50 @@ +{ stdenv, mkDerivation, fetchFromGitHub, pkgconfig, qmake, qttools, polkit-qt, + dtkcore, dtkwidget, dde-qt-dbus-factory, deepin }: + +mkDerivation rec { + pname = "dde-polkit-agent"; + version = "5.0.0"; + + src = fetchFromGitHub { + owner = "linuxdeepin"; + repo = pname; + rev = version; + sha256 = "00p8syx6rfwhq7wdsk37hm9mvwd0kwj9h0s39hii892h1psd84q9"; + }; + + nativeBuildInputs = [ + pkgconfig + qmake + qttools + deepin.setupHook + ]; + + buildInputs = [ + dde-qt-dbus-factory + dtkcore + dtkwidget + polkit-qt + ]; + + postPatch = '' + searchHardCodedPaths + patchShebangs translate_generation.sh + + fixPath $out /usr dde-polkit-agent.pro polkit-dde-authentication-agent-1.desktop + fixPath /run/current-system/sw /usr/lib/polkit-1-dde/plugins pluginmanager.cpp + ''; + + postFixup = '' + searchHardCodedPaths $out + ''; + + passthru.updateScript = deepin.updateScript { name = "${pname}-${version}"; }; + + meta = with stdenv.lib; { + description = "PolicyKit agent for Deepin Desktop Environment"; + homepage = "https://github.com/linuxdeepin/dde-polkit-agent"; + license = licenses.gpl3; + platforms = platforms.linux; + maintainers = with maintainers; [ romildo ]; + }; +} diff --git a/nixpkgs/pkgs/desktops/deepin/dde-qt-dbus-factory/default.nix b/nixpkgs/pkgs/desktops/deepin/dde-qt-dbus-factory/default.nix new file mode 100644 index 000000000000..7e645473f027 --- /dev/null +++ b/nixpkgs/pkgs/desktops/deepin/dde-qt-dbus-factory/default.nix @@ -0,0 +1,38 @@ +{ stdenv, fetchFromGitHub, qmake, python3, deepin }: + +stdenv.mkDerivation rec { + pname = "dde-qt-dbus-factory"; + version = "5.0.1"; + + src = fetchFromGitHub { + owner = "linuxdeepin"; + repo = pname; + rev = version; + sha256 = "1wbh4jgvy3c09ivy0vvfk0azkg4d2sv37y23c9rq49jb3sakcjgm"; + }; + + nativeBuildInputs = [ + qmake + python3 + deepin.setupHook + ]; + + postPatch = '' + searchHardCodedPaths + fixPath $out /usr \ + libdframeworkdbus/DFrameworkdbusConfig.in \ + libdframeworkdbus/libdframeworkdbus.pro + ''; + + enableParallelBuilding = true; + + passthru.updateScript = deepin.updateScript { name = "${pname}-${version}"; }; + + meta = with stdenv.lib; { + description = "Qt DBus interface library for Deepin software"; + homepage = "https://github.com/linuxdeepin/dde-qt-dbus-factory"; + license = with licenses; [ gpl3Plus lgpl2Plus ]; + platforms = platforms.linux; + maintainers = with maintainers; [ romildo ]; + }; +} diff --git a/nixpkgs/pkgs/desktops/deepin/dde-session-ui/default.nix b/nixpkgs/pkgs/desktops/deepin/dde-session-ui/default.nix new file mode 100644 index 000000000000..ddb12511c275 --- /dev/null +++ b/nixpkgs/pkgs/desktops/deepin/dde-session-ui/default.nix @@ -0,0 +1,133 @@ +{ stdenv, mkDerivation, fetchFromGitHub, pkgconfig, qmake, dbus, dde-daemon, + dde-qt-dbus-factory, deepin, deepin-desktop-schemas, + deepin-gettext-tools, deepin-icon-theme, deepin-wallpapers, dtkcore, + dtkwidget, gnugrep, gsettings-qt, lightdm_qt, + onboard, qtsvg, qttools, qtx11extras, setxkbmap, utillinux, which, + xkeyboard_config, xorg, xrandr, wrapGAppsHook }: + +mkDerivation rec { + pname = "dde-session-ui"; + version = "5.0.0"; + + src = fetchFromGitHub { + owner = "linuxdeepin"; + repo = pname; + rev = version; + sha256 = "1gy9nlpkr9ayrs1z2dvd7h0dqlw6fq2m66d9cs48qyfkr6c8l9jj"; + }; + + nativeBuildInputs = [ + pkgconfig + qmake + qttools + deepin-gettext-tools + wrapGAppsHook + deepin.setupHook + ]; + + buildInputs = [ + dbus + dde-daemon + dde-qt-dbus-factory + deepin-desktop-schemas + deepin-icon-theme + deepin-wallpapers + dtkcore + dtkwidget + gnugrep + gsettings-qt + lightdm_qt + onboard + qtsvg + qtx11extras + setxkbmap + utillinux + which + xkeyboard_config + xorg.libXcursor + xorg.libXrandr + xorg.libXtst + xrandr + ]; + + postPatch = '' + searchHardCodedPaths # debugging + + patchShebangs translate_generation.sh translate_desktop.sh + + substituteInPlace translate_desktop.sh --replace "/usr/bin/deepin-desktop-ts-convert" "deepin-desktop-ts-convert" + + find -type f -exec sed -i -e "s,path = /etc,path = $out/etc," {} + + find -type f -exec sed -i -e "s,path = /usr,path = $out," {} + + find -type f -exec sed -i -e "s,/usr/share/dde-session-ui,$out/share/dde-session-ui," {} + + + substituteInPlace dde-osd/dde-osd_autostart.desktop --replace "Exec=/usr/lib/deepin-daemon/dde-osd" "Exec=$out/lib/deepin-daemon/dde-osd" + substituteInPlace dde-osd/com.deepin.dde.osd.service --replace "Exec=/usr/lib/deepin-daemon/dde-osd" "Exec=$out/lib/deepin-daemon/dde-osd" + substituteInPlace dde-lock/com.deepin.dde.lockFront.service --replace "Exec=/usr/bin/dde-lock" "Exec=$out/bin/dde-lock" + substituteInPlace dmemory-warning-dialog/com.deepin.dde.MemoryWarningDialog.service --replace "Exec=/usr/bin/dmemory-warning-dialog" "Exec=$out/bin/dmemory-warning-dialog" + substituteInPlace dde-warning-dialog/com.deepin.dde.WarningDialog.service --replace "Exec=/usr/lib/deepin-daemon/dde-warning-dialog" "Exec=$out/lib/deepin-daemon/dde-warning-dialog" + substituteInPlace dde-shutdown/com.deepin.dde.shutdownFront.service --replace "Exec=/usr/bin/dde-shutdown" "Exec=$out/bin/dde-shutdown" + substituteInPlace dde-welcome/com.deepin.dde.welcome.service --replace "Exec=/usr/lib/deepin-daemon/dde-welcome" "Exec=$out/lib/deepin-daemon/dde-welcome" + substituteInPlace session-ui-guardien/session-ui-guardien.desktop --replace "Exec=/usr/bin/session-ui-guardien" "Exec=$out/bin/session-ui-guardien" + substituteInPlace lightdm-deepin-greeter/lightdm-deepin-greeter.desktop --replace "Exec=/usr/bin/deepin-greeter" "Exec=$out/bin/deepin-greeter" + substituteInPlace misc/applications/deepin-toggle-desktop.desktop.in --replace "Exec=/usr/lib/deepin-daemon/desktop-toggle" "Exec=${dde-daemon}/lib/deepin-daemon/desktop-toggle" + + # Uncomment (and remove space after $) after packaging deepin-system-monitor + #substituteInPlace dde-shutdown/view/contentwidget.cpp --replace "/usr/bin/deepin-system-monitor" "$ {deepin-system-monitor}/bin/deepin-system-monitor" + + substituteInPlace dde-offline-upgrader/main.cpp --replace "dbus-send" "${dbus}/bin/dbus-send" + substituteInPlace dde-osd/kblayoutindicator.cpp --replace "dbus-send" "${dbus}/bin/dbus-send" + substituteInPlace dde-shutdown/view/contentwidget.cpp --replace "/usr/share/backgrounds/deepin" "${deepin-wallpapers}/share/backgrounds/deepin" + substituteInPlace dde-welcome/mainwidget.cpp --replace "dbus-send" "${dbus}/bin/dbus-send" + substituteInPlace dmemory-warning-dialog/src/buttondelegate.cpp --replace "dbus-send" "${dbus}/bin/dbus-send" + substituteInPlace dmemory-warning-dialog/src/buttondelegate.cpp --replace "kill" "${utillinux}/bin/dbus-send" + substituteInPlace global_util/xkbparser.h --replace "/usr/share/X11/xkb/rules/base.xml" "${xkeyboard_config}/share/X11/xkb/rules/base.xml" + substituteInPlace lightdm-deepin-greeter/deepin-greeter --replace "/etc/deepin/greeters.d" "$out/etc/deepin/greeters.d" + substituteInPlace lightdm-deepin-greeter/main.cpp --replace "/usr/share/icons/deepin" "${deepin-icon-theme}/share/icons/deepin" + substituteInPlace lightdm-deepin-greeter/scripts/00-xrandr --replace "egrep" "${gnugrep}/bin/egrep" + substituteInPlace lightdm-deepin-greeter/scripts/00-xrandr --replace "xrandr" "${xrandr}/bin/xrandr" + substituteInPlace lightdm-deepin-greeter/scripts/lightdm-deepin-greeter --replace "/usr/bin/lightdm-deepin-greeter" "$out/bin/lightdm-deepin-greeter" + substituteInPlace session-ui-guardien/guardien.cpp --replace "dde-lock" "$out/bin/dde-lock" + substituteInPlace session-ui-guardien/guardien.cpp --replace "dde-shutdown" "$out/bin/dde-shutdown" + substituteInPlace dde-lock/lockworker.cpp --replace "dde-switchtogreeter" "$out/bin/dde-switchtogreeter" + substituteInPlace dde-lock/lockworker.cpp --replace "which" "${which}/bin/which" + substituteInPlace session-widgets/userinfo.cpp --replace "/usr/share/wallpapers/deepin" "${deepin-wallpapers}/share/wallpapers/deepin" + substituteInPlace widgets/fullscreenbackground.cpp --replace "/usr/share/wallpapers/deepin" "${deepin-wallpapers}/share/wallpapers/deepin" + substituteInPlace widgets/kblayoutwidget.cpp --replace "setxkbmap" "${setxkbmap}/bin/setxkbmap" + substituteInPlace widgets/virtualkbinstance.cpp --replace "onboard" "${onboard}/bin/onboard" + + # fix default background url + substituteInPlace widgets/fullscreenbackground.cpp --replace "/usr/share/backgrounds/default_background.jpg" "${deepin-wallpapers}/share/backgrounds/deepin/desktop.jpg" + + # NOTES + # - on deepin linux /usr/share/icons/default/index.theme is controlled by alternatives, without an equivalent mechanism in NixOS + # - do not wrap dde-dman-portal related files: it appears it has been removed: https://github.com/linuxdeepin/dde-session-ui/commit/3bd028cf135ad22c784c0146e447ef34a69af768 + ''; + + dontWrapQtApps = true; + + preFixup = '' + gappsWrapperArgs+=( + "''${qtWrapperArgs[@]}" + ) + ''; + + postFixup = '' + # wrapGAppsHook or wrapQtAppsHook does not work with binaries outside of $out/bin or $out/libexec + for binary in $out/lib/deepin-daemon/*; do + wrapProgram $binary "''${gappsWrapperArgs[@]}" + done + + searchHardCodedPaths $out # debugging + ''; + + passthru.updateScript = deepin.updateScript { name = "${pname}-${version}"; }; + + meta = with stdenv.lib; { + description = "Deepin desktop-environment - Session UI module"; + homepage = "https://github.com/linuxdeepin/dde-session-ui"; + license = licenses.gpl3; + platforms = platforms.linux; + maintainers = with maintainers; [ romildo ]; + }; +} diff --git a/nixpkgs/pkgs/desktops/deepin/deepin-anything/default.nix b/nixpkgs/pkgs/desktops/deepin/deepin-anything/default.nix new file mode 100644 index 000000000000..7697c23ae141 --- /dev/null +++ b/nixpkgs/pkgs/desktops/deepin/deepin-anything/default.nix @@ -0,0 +1,63 @@ +{ stdenv, mkDerivation, fetchFromGitHub, pkgconfig, qtbase, udisks2-qt5, utillinux, + dtkcore, deepin }: + +mkDerivation rec { + pname = "deepin-anything"; + version = "5.0.1"; + + src = fetchFromGitHub { + owner = "linuxdeepin"; + repo = pname; + rev = version; + sha256 = "1kvyffrii4b012f6ld1ih14qrn7gg5cxbdpbkac0wxb22hnz0azm"; + }; + + outputs = [ "out" "modsrc" ]; + + nativeBuildInputs = [ + pkgconfig + deepin.setupHook + ]; + + buildInputs = [ + dtkcore + qtbase + udisks2-qt5 + utillinux + ]; + + enableParallelBuilding = true; + + makeFlags = [ + "DEB_HOST_MULTIARCH=" + "PREFIX=${placeholder "out"}" + ]; + + postPatch = '' + searchHardCodedPaths # for debugging + fixPath $modsrc /usr/src Makefile + fixPath $out /usr Makefile + fixPath $out /usr server/tool/tool.pro + fixPath $out /etc server/tool/tool.pro + fixPath $out /usr/bin \ + server/tool/deepin-anything-tool.service \ + server/tool/com.deepin.anything.service \ + server/monitor/deepin-anything-monitor.service + sed -e 's,/lib/systemd,$$PREFIX/lib/systemd,' -i server/monitor/src/src.pro server/tool/tool.pro + ''; + + postFixup = '' + searchHardCodedPaths $out # for debugging + searchHardCodedPaths $modsrc # for debugging + ''; + + passthru.updateScript = deepin.updateScript { name = "${pname}-${version}"; }; + + meta = with stdenv.lib; { + description = "Deepin file search tool"; + homepage = "https://github.com/linuxdeepin/deepin-anything"; + license = licenses.gpl3; + platforms = platforms.linux; + maintainers = with maintainers; [ romildo ]; + }; +} diff --git a/nixpkgs/pkgs/desktops/deepin/deepin-calculator/default.nix b/nixpkgs/pkgs/desktops/deepin/deepin-calculator/default.nix new file mode 100644 index 000000000000..38aed9cbe635 --- /dev/null +++ b/nixpkgs/pkgs/desktops/deepin/deepin-calculator/default.nix @@ -0,0 +1,48 @@ +{ stdenv, mkDerivation, fetchFromGitHub, pkgconfig, qmake, qttools, qtsvg, dtkcore, + dtkwidget, deepin }: + +mkDerivation rec { + pname = "deepin-calculator"; + version = "5.0.1"; + + src = fetchFromGitHub { + owner = "linuxdeepin"; + repo = pname; + rev = version; + sha256 = "0f26y7b3giybybhvlzbnwcw8kidzvhq66h0c15n9ww81gnlqf7v5"; + }; + + nativeBuildInputs = [ + qmake + pkgconfig + qttools + deepin.setupHook + ]; + + buildInputs = [ + dtkcore + dtkwidget + qtsvg + ]; + + postPatch = '' + searchHardCodedPaths # debugging + patchShebangs translate_generation.sh + fixPath $out /usr deepin-calculator.pro + substituteInPlace deepin-calculator.desktop --replace "Exec=deepin-calculator" "Exec=$out/bin/deepin-calculator" + ''; + + postFixup = '' + searchHardCodedPaths $out # debugging + ''; + + passthru.updateScript = deepin.updateScript { name = "${pname}-${version}"; }; + + meta = with stdenv.lib; { + description = "Easy to use calculator for Deepin Desktop Environment"; + homepage = "https://github.com/linuxdeepin/deepin-calculator"; + license = licenses.gpl3; + platforms = platforms.linux; + maintainers = with maintainers; [ romildo ]; + }; +} diff --git a/nixpkgs/pkgs/desktops/deepin/deepin-desktop-base/default.nix b/nixpkgs/pkgs/desktops/deepin/deepin-desktop-base/default.nix new file mode 100644 index 000000000000..335c5727e919 --- /dev/null +++ b/nixpkgs/pkgs/desktops/deepin/deepin-desktop-base/default.nix @@ -0,0 +1,60 @@ +{ stdenv, fetchFromGitHub, deepin-wallpapers, deepin }: + +stdenv.mkDerivation rec { + pname = "deepin-desktop-base"; + version = "2019.07.10"; + + src = fetchFromGitHub { + owner = "linuxdeepin"; + repo = pname; + rev = version; + sha256 = "0rs7bjy35k5gc5nbba1cijhdz16zny30lgmcf2ckx1pkdszk2vra"; + }; + + nativeBuildInputs = [ deepin.setupHook ]; + + buildInputs = [ deepin-wallpapers ]; + + # TODO: Fedora recommended dependencies: + # deepin-wallpapers + # plymouth-theme-deepin + + postPatch = '' + searchHardCodedPaths + + fixPath $out /etc Makefile + fixPath $out /usr Makefile + + # Remove Deepin distro's lsb-release + # Don't override systemd timeouts + # Remove apt-specific templates + echo ---------------------------------------------------------------- + echo grep --color=always -E 'lsb-release|systemd|python-apt|backgrounds' Makefile + grep --color=always -E 'lsb-release|systemd|python-apt|backgrounds' Makefile + echo ---------------------------------------------------------------- + sed -i -E '/lsb-release|systemd|python-apt|backgrounds/d' Makefile + ''; + + postInstall = '' + # Make a symlink for deepin-version + ln -s ../lib/deepin/desktop-version $out/etc/deepin-version + ''; + + passthru.updateScript = deepin.updateScript { name = "${pname}-${version}"; }; + + meta = with stdenv.lib; { + description = "Base assets and definitions for Deepin Desktop Environment"; + # TODO: revise + longDescription = '' + This package provides some components for Deepin desktop environment. + - deepin logo + - deepin desktop version + - login screen background image + - language information + ''; + homepage = "https://github.com/linuxdeepin/deepin-desktop-base"; + license = licenses.gpl3; + platforms = platforms.linux; + maintainers = with maintainers; [ romildo ]; + }; +} diff --git a/nixpkgs/pkgs/desktops/deepin/deepin-desktop-schemas/default.nix b/nixpkgs/pkgs/desktops/deepin/deepin-desktop-schemas/default.nix new file mode 100644 index 000000000000..2105926f6828 --- /dev/null +++ b/nixpkgs/pkgs/desktops/deepin/deepin-desktop-schemas/default.nix @@ -0,0 +1,68 @@ +{ stdenv, fetchFromGitHub, python3, dconf, glib, deepin-gtk-theme, + deepin-icon-theme, deepin-sound-theme, deepin-wallpapers, deepin }: + +stdenv.mkDerivation rec { + pname = "deepin-desktop-schemas"; + version = "3.13.9"; + + src = fetchFromGitHub { + owner = "linuxdeepin"; + repo = pname; + rev = version; + sha256 = "1c69j6s7561zb1hrd1j3ihji1nvpgfzfgnp6svsv8jd8dg8vs8l1"; + }; + + nativeBuildInputs = [ + python3 + glib.dev + deepin.setupHook + ]; + + buildInputs = [ + dconf + deepin-gtk-theme + deepin-icon-theme + deepin-sound-theme + deepin-wallpapers + ]; + + postPatch = '' + searchHardCodedPaths + + # fix default background url + sed -i -e 's,/usr/share/backgrounds/default_background.jpg,/usr/share/backgrounds/deepin/desktop.jpg,' \ + overrides/common/com.deepin.wrap.gnome.desktop.override + + fixPath ${deepin-wallpapers} /usr/share/backgrounds \ + overrides/common/com.deepin.wrap.gnome.desktop.override + + fixPath ${deepin-wallpapers} /usr/share/wallpapers/deepin \ + schemas/com.deepin.dde.appearance.gschema.xml + + # still hardcoded paths: + # /etc/gnome-settings-daemon/xrandr/monitors.xml ? gnome3.gnome-settings-daemon + # /usr/share/backgrounds/gnome/adwaita-lock.jpg ? gnome3.gnome-backgrounds + # /usr/share/backgrounds/gnome/adwaita-timed.xml gnome3.gnome-backgrounds + # /usr/share/desktop-directories + ''; + + makeFlags = [ "PREFIX=${placeholder "out"}" ]; + + doCheck = true; + checkTarget = "test"; + + postInstall = '' + glib-compile-schemas --strict $out/share/glib-2.0/schemas + searchHardCodedPaths $out + ''; + + passthru.updateScript = deepin.updateScript { name = "${pname}-${version}"; }; + + meta = with stdenv.lib; { + description = "GSettings deepin desktop-wide schemas"; + homepage = "https://github.com/linuxdeepin/deepin-desktop-schemas"; + license = licenses.gpl3; + platforms = platforms.linux; + maintainers = with maintainers; [ romildo ]; + }; +} diff --git a/nixpkgs/pkgs/desktops/deepin/deepin-editor/default.nix b/nixpkgs/pkgs/desktops/deepin/deepin-editor/default.nix new file mode 100644 index 000000000000..9bff5b88268e --- /dev/null +++ b/nixpkgs/pkgs/desktops/deepin/deepin-editor/default.nix @@ -0,0 +1,64 @@ +{ stdenv, mkDerivation, fetchFromGitHub, pkgconfig, cmake, deepin, + dtkcore, dtkwidget, kcodecs, qttools, syntax-highlighting, + wrapQtAppsHook +}: + +stdenv.mkDerivation rec { + name = "${pname}-${version}"; + pname = "deepin-editor"; + version = "1.2.9.1"; + + src = fetchFromGitHub { + owner = "linuxdeepin"; + repo = pname; + rev = version; + sha256 = "0g7c3adqwn8i4ndxdrzibahr75dddz1fiqnsh3bjj1jjr86rv4ks"; + }; + + nativeBuildInputs = [ + cmake + pkgconfig + qttools + wrapQtAppsHook + deepin.setupHook + ]; + + buildInputs = [ + dtkcore + dtkwidget + kcodecs + syntax-highlighting + ]; + + postPatch = '' + searchHardCodedPaths # debugging + + patchShebangs translate_generation.sh + + fixPath $out /usr \ + CMakeLists.txt \ + dedit/main.cpp \ + src/resources/settings.json \ + src/thememodule/themelistmodel.cpp + + substituteInPlace deepin-editor.desktop \ + --replace "Exec=deepin-editor" "Exec=$out/bin/deepin-editor" + + substituteInPlace src/editwrapper.cpp \ + --replace "appExec = \"deepin-editor\"" "appExec = \"$out/bin/deepin-editor\"" + ''; + + postFixup = '' + searchHardCodedPaths $out # debugging + ''; + + passthru.updateScript = deepin.updateScript { inherit name; }; + + meta = with stdenv.lib; { + description = "Simple editor for Deepin Desktop Environment"; + homepage = "https://github.com/linuxdeepin/deepin-editor"; + license = licenses.gpl3; + platforms = platforms.linux; + maintainers = with maintainers; [ romildo worldofpeace ]; + }; +} diff --git a/nixpkgs/pkgs/desktops/deepin/deepin-gettext-tools/default.nix b/nixpkgs/pkgs/desktops/deepin/deepin-gettext-tools/default.nix new file mode 100644 index 000000000000..c1aff5ed4dca --- /dev/null +++ b/nixpkgs/pkgs/desktops/deepin/deepin-gettext-tools/default.nix @@ -0,0 +1,47 @@ +{ stdenv, fetchFromGitHub, gettext, python3Packages, perlPackages, deepin }: + +stdenv.mkDerivation rec { + pname = "deepin-gettext-tools"; + version = "1.0.8"; + + src = fetchFromGitHub { + owner = "linuxdeepin"; + repo = pname; + rev = version; + sha256 = "03cwa82dd14a31v44jd3z0kpiri6g21ar4f48s8ph78nvjy55880"; + }; + + nativeBuildInputs = [ + python3Packages.wrapPython + ]; + + buildInputs = [ + gettext + perlPackages.perl + perlPackages.XMLLibXML + perlPackages.ConfigTiny + python3Packages.python + ]; + + makeFlags = [ "PREFIX=${placeholder "out"}" ]; + + postPatch = '' + sed -e 's/sudo cp/cp/' -i src/generate_mo.py + ''; + + postFixup = '' + wrapPythonPrograms + wrapPythonProgramsIn "$out/lib/${pname}" + wrapProgram $out/bin/deepin-desktop-ts-convert --set PERL5LIB $PERL5LIB + ''; + + passthru.updateScript = deepin.updateScript { name = "${pname}-${version}"; }; + + meta = with stdenv.lib; { + description = "Deepin Internationalization utilities"; + homepage = "https://github.com/linuxdeepin/deepin-gettext-tools"; + license = licenses.gpl3; + platforms = platforms.linux; + maintainers = with maintainers; [ romildo ]; + }; +} diff --git a/nixpkgs/pkgs/desktops/deepin/deepin-gtk-theme/default.nix b/nixpkgs/pkgs/desktops/deepin/deepin-gtk-theme/default.nix new file mode 100644 index 000000000000..537357918468 --- /dev/null +++ b/nixpkgs/pkgs/desktops/deepin/deepin-gtk-theme/default.nix @@ -0,0 +1,27 @@ +{ stdenv, fetchFromGitHub, gtk-engine-murrine, deepin }: + +stdenv.mkDerivation rec { + pname = "deepin-gtk-theme"; + version = "17.10.11"; + + src = fetchFromGitHub { + owner = "linuxdeepin"; + repo = "deepin-gtk-theme"; + rev = version; + sha256 = "0zs6mq70yd1k3d9zm3q6zxnw1md56r4imad5imdxwx58yxdx47fw"; + }; + + propagatedUserEnvPkgs = [ gtk-engine-murrine ]; + + makeFlags = [ "PREFIX=${placeholder "out"}" ]; + + passthru.updateScript = deepin.updateScript { name = "${pname}-${version}"; }; + + meta = with stdenv.lib; { + description = "Deepin GTK Theme"; + homepage = "https://github.com/linuxdeepin/deepin-gtk-theme"; + license = licenses.lgpl3; + platforms = platforms.unix; + maintainers = [ maintainers.romildo ]; + }; +} diff --git a/nixpkgs/pkgs/desktops/deepin/deepin-icon-theme/default.nix b/nixpkgs/pkgs/desktops/deepin/deepin-icon-theme/default.nix new file mode 100644 index 000000000000..5845e77f57c7 --- /dev/null +++ b/nixpkgs/pkgs/desktops/deepin/deepin-icon-theme/default.nix @@ -0,0 +1,51 @@ +{ stdenv, fetchFromGitHub, gtk3, xcursorgen, papirus-icon-theme, deepin, hicolor-icon-theme }: + +stdenv.mkDerivation rec { + pname = "deepin-icon-theme"; + version = "15.12.71"; + + src = fetchFromGitHub { + owner = "linuxdeepin"; + repo = pname; + rev = version; + sha256 = "12rzzjp906np95ckbxrd4mb345lm198wz69kxy48f8q1zg78q8iw"; + }; + + nativeBuildInputs = [ gtk3 xcursorgen ]; + + buildInputs = [ papirus-icon-theme ]; + + propagatedBuildInputs = [ + hicolor-icon-theme + ]; + + dontDropIconThemeCache = true; + + postPatch = '' + patchShebangs tools/hicolor.links + patchShebangs tools/display_unused_links.sh + patchShebangs cursors-src/cursors/bitmaps/make.sh + patchShebangs cursors-src/render-cursors.sh + + # keep icon-theme.cache + sed -i -e 's|\(-rm -f .*/icon-theme.cache\)|# \1|g' Makefile + ''; + + buildTargets = "all hicolor-links"; + installTargets = [ "install-icons" "install-cursors" ]; + installFlags = [ "PREFIX=${placeholder "out"}" ]; + + postInstall = '' + cp -a ./Sea ./usr/share/icons/hicolor "$out"/share/icons/ + ''; + + passthru.updateScript = deepin.updateScript { name = "${pname}-${version}"; }; + + meta = with stdenv.lib; { + description = "Icons for the Deepin Desktop Environment"; + homepage = "https://github.com/linuxdeepin/deepin-icon-theme"; + license = licenses.gpl3; + platforms = platforms.unix; + maintainers = with maintainers; [ romildo ]; + }; +} diff --git a/nixpkgs/pkgs/desktops/deepin/deepin-image-viewer/default.nix b/nixpkgs/pkgs/desktops/deepin/deepin-image-viewer/default.nix new file mode 100644 index 000000000000..bedc809b2f5a --- /dev/null +++ b/nixpkgs/pkgs/desktops/deepin/deepin-image-viewer/default.nix @@ -0,0 +1,54 @@ +{ stdenv, mkDerivation, fetchFromGitHub, pkgconfig, qmake, qttools, qtsvg, + qtx11extras, dtkcore, dtkwidget, qt5integration, freeimage, libraw, + libexif, deepin +}: + +mkDerivation rec { + pname = "deepin-image-viewer"; + version = "5.0.0"; + + src = fetchFromGitHub { + owner = "linuxdeepin"; + repo = pname; + rev = version; + sha256 = "01524hfdy3wvdf07n9b3qb8jdpxzg2hwjpl4gxvr68qws5nbnb3c"; + }; + + nativeBuildInputs = [ + pkgconfig + qmake + qttools + deepin.setupHook + ]; + + buildInputs = [ + qtsvg + qtx11extras + dtkcore + dtkwidget + qt5integration + freeimage + libraw + libexif + ]; + + postPatch = '' + searchHardCodedPaths + patchShebangs viewer/generate_translations.sh + fixPath $out /usr viewer/com.deepin.ImageViewer.service + sed -i qimage-plugins/freeimage/freeimage.pro \ + qimage-plugins/libraw/libraw.pro \ + -e "s,\$\$\[QT_INSTALL_PLUGINS\],$out/$qtPluginPrefix," + ''; + + passthru.updateScript = deepin.updateScript { name = "${pname}-${version}"; }; + + meta = with stdenv.lib; { + description = "Image Viewer for Deepin Desktop Environment"; + homepage = "https://github.com/linuxdeepin/deepin-image-viewer"; + license = licenses.gpl3Plus; + platforms = platforms.linux; + badPlatforms = [ "aarch64-linux" ]; # See https://github.com/NixOS/nixpkgs/pull/46463#issuecomment-420274189 + maintainers = with maintainers; [ romildo ]; + }; +} diff --git a/nixpkgs/pkgs/desktops/deepin/deepin-menu/default.nix b/nixpkgs/pkgs/desktops/deepin/deepin-menu/default.nix new file mode 100644 index 000000000000..92153b84d514 --- /dev/null +++ b/nixpkgs/pkgs/desktops/deepin/deepin-menu/default.nix @@ -0,0 +1,46 @@ +{ stdenv, mkDerivation, fetchFromGitHub, pkgconfig, qmake, dtkcore, dtkwidget, + qt5integration, deepin }: + +mkDerivation rec { + pname = "deepin-menu"; + version = "3.4.8"; + + src = fetchFromGitHub { + owner = "linuxdeepin"; + repo = pname; + rev = version; + sha256 = "09i0ybllymlj7s46pxma5py6x8nknfja4gxn5gj9kpf2c37qsqjc"; + }; + + nativeBuildInputs = [ + pkgconfig + qmake + deepin.setupHook + ]; + + buildInputs = [ + dtkcore + dtkwidget + qt5integration + ]; + + postPatch = '' + searchHardCodedPaths + fixPath $out /usr \ + data/com.deepin.menu.service \ + deepin-menu.desktop \ + deepin-menu.pro + ''; + + enableParallelBuilding = true; + + passthru.updateScript = deepin.updateScript { name = "${pname}-${version}"; }; + + meta = with stdenv.lib; { + description = "Deepin menu service"; + homepage = "https://github.com/linuxdeepin/deepin-menu"; + license = licenses.gpl3; + platforms = platforms.linux; + maintainers = with maintainers; [ romildo ]; + }; +} diff --git a/nixpkgs/pkgs/desktops/deepin/deepin-movie-reborn/default.nix b/nixpkgs/pkgs/desktops/deepin/deepin-movie-reborn/default.nix new file mode 100644 index 000000000000..b95a76a39727 --- /dev/null +++ b/nixpkgs/pkgs/desktops/deepin/deepin-movie-reborn/default.nix @@ -0,0 +1,70 @@ +{ stdenv, mkDerivation, fetchFromGitHub, fetchpatch, cmake, pkgconfig, qttools, qtx11extras, + dtkcore, dtkwidget, ffmpeg, ffmpegthumbnailer, mpv, pulseaudio, + libdvdnav, libdvdread, xorg, deepin }: + +mkDerivation rec { + pname = "deepin-movie-reborn"; + version = "5.0.0"; + + src = fetchFromGitHub { + owner = "linuxdeepin"; + repo = pname; + rev = version; + sha256 = "0cly8q0514a58s3h3wsvx9yxar7flz6i2q8xkrkfjias22b3z7b0"; + }; + + outputs = [ "out" "dev" ]; + + nativeBuildInputs = [ + cmake + pkgconfig + qttools + deepin.setupHook + ]; + + buildInputs = [ + dtkcore + dtkwidget + ffmpeg + ffmpegthumbnailer + libdvdnav + libdvdread + mpv + pulseaudio + qtx11extras + xorg.libXdmcp + xorg.libXtst + xorg.libpthreadstubs + xorg.xcbproto + ]; + + patches = [ + # fix: build failed if cannot find dtk-settings tool + (fetchpatch { + url = "https://github.com/linuxdeepin/deepin-movie-reborn/commit/fbb307b.patch"; + sha256 = "0915za0khki0729rvcfpxkh6vxhqwc47cgcmjc90kfq1004221vx"; + }) + ]; + + NIX_LDFLAGS = "-ldvdnav"; + + + postPatch = '' + searchHardCodedPaths # debugging + + sed -i src/libdmr/libdmr.pc.in -e "s,/usr,$out," -e 's,libdir=''${prefix}/,libdir=,' + + substituteInPlace src/deepin-movie.desktop \ + --replace "Exec=deepin-movie" "Exec=$out/bin/deepin-movie" + ''; + + passthru.updateScript = deepin.updateScript { name = "${pname}-${version}"; }; + + meta = with stdenv.lib; { + description = "Deepin movie player"; + homepage = "https://github.com/linuxdeepin/deepin-movie-reborn"; + license = licenses.gpl3; + platforms = platforms.linux; + maintainers = with maintainers; [ romildo ]; + }; +} diff --git a/nixpkgs/pkgs/desktops/deepin/deepin-screenshot/default.nix b/nixpkgs/pkgs/desktops/deepin/deepin-screenshot/default.nix new file mode 100644 index 000000000000..9b5d47d8542a --- /dev/null +++ b/nixpkgs/pkgs/desktops/deepin/deepin-screenshot/default.nix @@ -0,0 +1,60 @@ +{ stdenv, mkDerivation, fetchFromGitHub, fetchpatch, cmake, pkgconfig, xdg_utils, qttools, qtx11extras, + dtkcore, dtkwidget, dtkwm, deepin-turbo, deepin-shortcut-viewer, + deepin }: + +mkDerivation rec { + pname = "deepin-screenshot"; + version = "5.0.0"; + + src = fetchFromGitHub { + owner = "linuxdeepin"; + repo = pname; + rev = version; + sha256 = "0h1kcf9i8q6rz4jhym3yf84zr6svzff0hh9sl7b24sflzkxx6zwk"; + }; + + nativeBuildInputs = [ + cmake + pkgconfig + qttools + deepin.setupHook + ]; + + buildInputs = [ + deepin-shortcut-viewer + deepin-turbo + dtkcore + dtkwidget + dtkwm + qtx11extras + ]; + + patches = [ + (fetchpatch { + url = "https://github.com/linuxdeepin/deepin-screenshot/pull/52/commits/e14508b223fd9965854ed41c944cea2ea19e6e0c.patch"; + sha256 = "18zvz98z3hr8pcdyb706za6h2nwx23zsjb1hgyp21ycinhzr9j9h"; + }) + ]; + + postPatch = '' + searchHardCodedPaths + patchShebangs generate_translations.sh + fixPath ${deepin-turbo} /usr/bin/deepin-turbo-invoker src/dbusservice/com.deepin.Screenshot.service + fixPath $out /usr/bin/deepin-screenshot src/dbusservice/com.deepin.Screenshot.service + substituteInPlace src/mainwindow.cpp --replace '"xdg-open,%1"' '"${xdg_utils}/bin/xdg-open,%1"' + ''; + + postFixup = '' + searchHardCodedPaths $out + ''; + + passthru.updateScript = deepin.updateScript { name = "${pname}-${version}"; }; + + meta = with stdenv.lib; { + description = "Easy-to-use screenshot tool for Deepin Desktop Environment"; + homepage = "https://github.com/linuxdeepin/deepin-screenshot"; + license = licenses.gpl3; + platforms = platforms.linux; + maintainers = with maintainers; [ romildo flokli ]; + }; +} diff --git a/nixpkgs/pkgs/desktops/deepin/deepin-shortcut-viewer/default.nix b/nixpkgs/pkgs/desktops/deepin/deepin-shortcut-viewer/default.nix new file mode 100644 index 000000000000..479f2c86d30f --- /dev/null +++ b/nixpkgs/pkgs/desktops/deepin/deepin-shortcut-viewer/default.nix @@ -0,0 +1,37 @@ +{ stdenv, mkDerivation, fetchFromGitHub, pkgconfig, qmake, dtkcore, dtkwidget, + qt5integration, deepin }: + +mkDerivation rec { + pname = "deepin-shortcut-viewer"; + version = "5.0.0"; + + src = fetchFromGitHub { + owner = "linuxdeepin"; + repo = pname; + rev = version; + sha256 = "13vz8kjdqkrhgpvdgrvwn62vwzbyqp88hjm5m4rcqg3bh56709ma"; + }; + + nativeBuildInputs = [ + pkgconfig + qmake + ]; + + buildInputs = [ + dtkcore + dtkwidget + qt5integration + ]; + + enableParallelBuilding = true; + + passthru.updateScript = deepin.updateScript { name = "${pname}-${version}"; }; + + meta = with stdenv.lib; { + description = "Pop-up shortcut viewer for Deepin applications"; + homepage = "https://github.com/linuxdeepin/deepin-shortcut-viewer"; + license = licenses.gpl3; + platforms = platforms.linux; + maintainers = with maintainers; [ romildo ]; + }; +} diff --git a/nixpkgs/pkgs/desktops/deepin/deepin-sound-theme/default.nix b/nixpkgs/pkgs/desktops/deepin/deepin-sound-theme/default.nix new file mode 100644 index 000000000000..a868b072506b --- /dev/null +++ b/nixpkgs/pkgs/desktops/deepin/deepin-sound-theme/default.nix @@ -0,0 +1,25 @@ +{ stdenv, fetchFromGitHub, deepin }: + +stdenv.mkDerivation rec { + pname = "deepin-sound-theme"; + version = "15.10.3"; + + src = fetchFromGitHub { + owner = "linuxdeepin"; + repo = "deepin-sound-theme"; + rev = version; + sha256 = "1sw4nrn7q7wk1hpicm05apyc0mihaw42iqm52wb8ib8gm1qiylr9"; + }; + + makeFlags = [ "PREFIX=${placeholder "out"}" ]; + + passthru.updateScript = deepin.updateScript { name = "${pname}-${version}"; }; + + meta = with stdenv.lib; { + description = "Deepin sound theme"; + homepage = "https://github.com/linuxdeepin/deepin-sound-theme"; + license = licenses.gpl3; + platforms = platforms.linux; + maintainers = [ maintainers.romildo ]; + }; +} diff --git a/nixpkgs/pkgs/desktops/deepin/deepin-terminal/default.nix b/nixpkgs/pkgs/desktops/deepin/deepin-terminal/default.nix new file mode 100644 index 000000000000..e51927142eb2 --- /dev/null +++ b/nixpkgs/pkgs/desktops/deepin/deepin-terminal/default.nix @@ -0,0 +1,86 @@ +{ stdenv, fetchFromGitHub, pkgconfig, cmake, ninja, vala_0_40, fetchpatch, + gettext, at-spi2-core, dbus, epoxy, expect, gtk3, json-glib, + libXdmcp, libgee, libpthreadstubs, librsvg, libsecret, libtasn1, + libxcb, libxkbcommon, p11-kit, pcre, vte, wnck, libselinux, gnutls, pcre2, + libsepol, utillinux, deepin-menu, deepin-shortcut-viewer, deepin, wrapGAppsHook }: + +stdenv.mkDerivation rec { + pname = "deepin-terminal"; + version = "5.0.0"; + + src = fetchFromGitHub { + owner = "linuxdeepin"; + repo = "deepin-terminal"; + rev = version; + sha256 = "1929saj828b438d07caw3cjhqq60v6gni7mi3fqrg9wdjz81xwv7"; + }; + + patches = [ + # Fix build with VTE 0.60 + (fetchpatch { + url = "https://github.com/linuxdeepin/deepin-terminal/commit/542d1035b609698ee81aa7971d20ca8e5930743d.patch"; + sha256 = "1pihiy70yc25fm5fx7i7v9gmi65v4mhldvi7xwv8rgr2z6hbfj41"; + }) + ]; + + nativeBuildInputs = [ + pkgconfig + cmake + ninja + vala_0_40 # xcb.vapi:411.3-411.48: error: missing return statement at end of subroutine body + gettext + libselinux libsepol utillinux # required by gio + deepin.setupHook + wrapGAppsHook + ]; + + buildInputs = [ + at-spi2-core + dbus + deepin-menu + deepin-shortcut-viewer + epoxy + expect + gtk3 + json-glib + libXdmcp + libgee + libpthreadstubs + librsvg + libsecret + libtasn1 + libxcb + libxkbcommon + p11-kit + pcre + vte + wnck + gnutls + pcre2 + ]; + + postPatch = '' + searchHardCodedPaths + ''; + + cmakeFlags = [ + "-DTEST_BUILD=OFF" + "-DUSE_VENDOR_LIB=OFF" + "-DVERSION=${version}" + ]; + + passthru.updateScript = deepin.updateScript { name = "${pname}-${version}"; }; + + meta = with stdenv.lib; { + description = "Default terminal emulator for Deepin"; + longDescription = '' + Deepin terminal, it sharpens your focus in the world of command line! + It is an advanced terminal emulator with workspace, multiple + windows, remote management, quake mode and other features. + ''; + homepage = "https://github.com/linuxdeepin/deepin-terminal"; + license = licenses.gpl3; + platforms = platforms.linux; + maintainers = [ maintainers.romildo ]; + }; +} diff --git a/nixpkgs/pkgs/desktops/deepin/deepin-turbo/default.nix b/nixpkgs/pkgs/desktops/deepin/deepin-turbo/default.nix new file mode 100644 index 000000000000..f34997f51791 --- /dev/null +++ b/nixpkgs/pkgs/desktops/deepin/deepin-turbo/default.nix @@ -0,0 +1,43 @@ +{ stdenv, mkDerivation, fetchFromGitHub, cmake, pkgconfig, qtbase, deepin }: + +mkDerivation rec { + pname = "deepin-turbo"; + version = "0.0.3"; + + src = fetchFromGitHub { + owner = "linuxdeepin"; + repo = pname; + rev = version; + sha256 = "15l0pgszmbirlaxj04ishj43kyvigsl1yaf58kxlbdb3lkmcp5f3"; + }; + + nativeBuildInputs = [ + cmake + pkgconfig + deepin.setupHook + ]; + + buildInputs = [ + qtbase + ]; + + postPatch = '' + searchHardCodedPaths # for debugging + fixPath $out /usr/lib/systemd src/booster-dtkwidget/CMakeLists.txt + fixPath $out /usr/lib/deepin-turbo src/booster-dtkwidget/deepin-turbo-booster-dtkwidget.service + ''; + + postFixup = '' + searchHardCodedPaths $out # for debugging + ''; + + passthru.updateScript = deepin.updateScript { name = "${pname}-${version}"; }; + + meta = with stdenv.lib; { + description = "A daemon that helps to launch applications faster"; + homepage = "https://github.com/linuxdeepin/deepin-turbo"; + license = licenses.gpl3; + platforms = platforms.linux; + maintainers = with maintainers; [ romildo ]; + }; +} diff --git a/nixpkgs/pkgs/desktops/deepin/deepin-wallpapers/default.nix b/nixpkgs/pkgs/desktops/deepin/deepin-wallpapers/default.nix new file mode 100644 index 000000000000..82f7214471fb --- /dev/null +++ b/nixpkgs/pkgs/desktops/deepin/deepin-wallpapers/default.nix @@ -0,0 +1,45 @@ +{ stdenv, fetchFromGitHub, dde-api, deepin }: + +stdenv.mkDerivation rec { + pname = "deepin-wallpapers"; + version = "1.7.7"; + + src = fetchFromGitHub { + owner = "linuxdeepin"; + repo = "deepin-wallpapers"; + rev = version; + sha256 = "09cfnxbpms98ibqbi4xd51181q3az5n8rmndcdr9w12kyzniz7xv"; + }; + + nativeBuildInputs = [ dde-api deepin.setupHook ]; + + postPatch = '' + searchHardCodedPaths # debugging + + sed -i -e "s:/usr/lib/deepin-api:${dde-api}/lib/deepin-api:" Makefile + sed -i -e "s:/usr/share/wallpapers:$out/share/wallpapers:" Makefile + ''; + + installPhase = '' + mkdir -p $out/share/wallpapers/deepin + cp -a deepin/* deepin-community/* deepin-private/* $out/share/wallpapers/deepin + mkdir -p $out/var/cache + cp -a image-blur $out/var/cache + + # Suggested by upstream + mkdir -p $out/share/backgrounds/deepin + ln -s ../../wallpapers/deepin/Hummingbird_by_Shu_Le.jpg $out/share/backgrounds/deepin/desktop.jpg + ln -s $(echo -n $out/share/wallpapers/deepin/Hummingbird_by_Shu_Le.jpg | md5sum | cut -d " " -f 1).jpg \ + $out/var/cache/image-blur/$(echo -n $out/share/backgrounds/deepin/desktop.jpg | md5sum | cut -d " " -f 1).jpg + ''; + + passthru.updateScript = deepin.updateScript { name = "${pname}-${version}"; }; + + meta = with stdenv.lib; { + description = "Wallpapers for Deepin Desktop Environment"; + homepage = "https://github.com/linuxdeepin/deepin-wallpapers"; + license = licenses.gpl3; + platforms = platforms.linux; + maintainers = [ maintainers.romildo ]; + }; +} diff --git a/nixpkgs/pkgs/desktops/deepin/default.nix b/nixpkgs/pkgs/desktops/deepin/default.nix new file mode 100644 index 000000000000..64dbdbfd104c --- /dev/null +++ b/nixpkgs/pkgs/desktops/deepin/default.nix @@ -0,0 +1,59 @@ +{ pkgs, makeScope, libsForQt5 }: + +let + packages = self: with self; { + setupHook = ./setup-hook.sh; + + updateScript = callPackage ./update.nix { }; + + dbus-factory = callPackage ./dbus-factory { }; + dde-api = callPackage ./dde-api { }; + dde-calendar = callPackage ./dde-calendar { }; + dde-control-center = callPackage ./dde-control-center { }; + dde-daemon = callPackage ./dde-daemon { }; + dde-dock = callPackage ./dde-dock { }; + dde-file-manager = callPackage ./dde-file-manager { }; + dde-kwin = callPackage ./dde-kwin { }; + dde-launcher = callPackage ./dde-launcher { }; + dde-network-utils = callPackage ./dde-network-utils { }; + dde-polkit-agent = callPackage ./dde-polkit-agent { }; + dde-qt-dbus-factory = callPackage ./dde-qt-dbus-factory { }; + dde-session-ui = callPackage ./dde-session-ui { }; + deepin-anything = callPackage ./deepin-anything { }; + deepin-calculator = callPackage ./deepin-calculator { }; + deepin-desktop-base = callPackage ./deepin-desktop-base { }; + deepin-desktop-schemas = callPackage ./deepin-desktop-schemas { }; + deepin-editor = callPackage ./deepin-editor { }; + deepin-gettext-tools = callPackage ./deepin-gettext-tools { }; + deepin-gtk-theme = callPackage ./deepin-gtk-theme { }; + deepin-icon-theme = callPackage ./deepin-icon-theme { }; + deepin-image-viewer = callPackage ./deepin-image-viewer { }; + deepin-menu = callPackage ./deepin-menu { }; + deepin-movie-reborn = callPackage ./deepin-movie-reborn { }; + deepin-screenshot = callPackage ./deepin-screenshot { }; + deepin-shortcut-viewer = callPackage ./deepin-shortcut-viewer { }; + deepin-sound-theme = callPackage ./deepin-sound-theme { }; + deepin-terminal = callPackage ./deepin-terminal { + wnck = pkgs.libwnck3; + }; + deepin-turbo = callPackage ./deepin-turbo { }; + deepin-wallpapers = callPackage ./deepin-wallpapers { }; + disomaster = callPackage ./disomaster { }; + dpa-ext-gnomekeyring = callPackage ./dpa-ext-gnomekeyring { }; + dtkcore = callPackage ./dtkcore { }; + dtkwidget = callPackage ./dtkwidget { }; + dtkwm = callPackage ./dtkwm { }; + go-dbus-factory = callPackage ./go-dbus-factory { }; + go-dbus-generator = callPackage ./go-dbus-generator { }; + go-gir-generator = callPackage ./go-gir-generator { }; + go-lib = callPackage ./go-lib { }; + qcef = callPackage ./qcef { }; + qt5dxcb-plugin = callPackage ./qt5dxcb-plugin { }; + qt5integration = callPackage ./qt5integration { }; + startdde = callPackage ./startdde { }; + udisks2-qt5 = callPackage ./udisks2-qt5 { }; + + }; + +in + makeScope libsForQt5.newScope packages diff --git a/nixpkgs/pkgs/desktops/deepin/disomaster/default.nix b/nixpkgs/pkgs/desktops/deepin/disomaster/default.nix new file mode 100644 index 000000000000..a1db0673a46e --- /dev/null +++ b/nixpkgs/pkgs/desktops/deepin/disomaster/default.nix @@ -0,0 +1,41 @@ +{ stdenv, mkDerivation, fetchFromGitHub, pkgconfig, qmake, qtbase, libisoburn, deepin }: + +mkDerivation rec { + pname = "disomaster"; + version = "5.0.0"; + + src = fetchFromGitHub { + owner = "linuxdeepin"; + repo = pname; + rev = version; + sha256 = "13144gq0mpbpclzxc79fb1kirh0vvi50jvjnbpla9s8lvh59xl62"; + }; + + nativeBuildInputs = [ + deepin.setupHook + pkgconfig + qmake + ]; + + buildInputs = [ + libisoburn + qtbase + ]; + + postPatch = '' + searchHardCodedPaths # debugging + + sed -i '/^QMAKE_PKGCONFIG_DESTDIR/i QMAKE_PKGCONFIG_PREFIX = $$PREFIX' \ + libdisomaster/libdisomaster.pro + ''; + + passthru.updateScript = deepin.updateScript { name = "${pname}-${version}"; }; + + meta = with stdenv.lib; { + description = "A libisoburn wrapper for Qt"; + homepage = "https://github.com/linuxdeepin/disomaster"; + license = licenses.gpl3; + platforms = platforms.linux; + maintainers = with maintainers; [ romildo worldofpeace ]; + }; +} diff --git a/nixpkgs/pkgs/desktops/deepin/dpa-ext-gnomekeyring/default.nix b/nixpkgs/pkgs/desktops/deepin/dpa-ext-gnomekeyring/default.nix new file mode 100644 index 000000000000..970e48941d40 --- /dev/null +++ b/nixpkgs/pkgs/desktops/deepin/dpa-ext-gnomekeyring/default.nix @@ -0,0 +1,42 @@ +{ stdenv, fetchFromGitHub, pkgconfig, qmake, qttools, gnome3, + dde-polkit-agent, deepin }: + +stdenv.mkDerivation rec { + pname = "dpa-ext-gnomekeyring"; + version = "5.0.1"; + + src = fetchFromGitHub { + owner = "linuxdeepin"; + repo = pname; + rev = version; + sha256 = "168j42nwyw7vcgwc0fha2pjpwwlgir70fq1hns4ia1dkdqa1nhzw"; + }; + + nativeBuildInputs = [ + pkgconfig + qmake + qttools + deepin.setupHook + ]; + + buildInputs = [ + dde-polkit-agent + gnome3.libgnome-keyring + ]; + + postPatch = '' + searchHardCodedPaths + patchShebangs translate_generation.sh + fixPath $out /usr dpa-ext-gnomekeyring.pro gnomekeyringextention.cpp + ''; + + passthru.updateScript = deepin.updateScript { name = "${pname}-${version}"; }; + + meta = with stdenv.lib; { + description = "GNOME keyring extension for dde-polkit-agent"; + homepage = "https://github.com/linuxdeepin/dpa-ext-gnomekeyring"; + license = licenses.gpl3; + platforms = platforms.linux; + maintainers = with maintainers; [ romildo ]; + }; +} diff --git a/nixpkgs/pkgs/desktops/deepin/dtkcore/default.nix b/nixpkgs/pkgs/desktops/deepin/dtkcore/default.nix new file mode 100644 index 000000000000..90b02a6d9301 --- /dev/null +++ b/nixpkgs/pkgs/desktops/deepin/dtkcore/default.nix @@ -0,0 +1,55 @@ +{ stdenv, mkDerivation, fetchFromGitHub, pkgconfig, qmake, gsettings-qt, pythonPackages, deepin }: + +mkDerivation rec { + pname = "dtkcore"; + version = "2.1.1"; + + src = fetchFromGitHub { + owner = "linuxdeepin"; + repo = pname; + rev = version; + sha256 = "0xdh6mmrv8yr6mjmlwj0fv037parkkwfwlaibcbrskwxqp9iri1y"; + }; + + nativeBuildInputs = [ + pkgconfig + qmake + pythonPackages.wrapPython + deepin.setupHook + ]; + + buildInputs = [ + gsettings-qt + ]; + + postPatch = '' + searchHardCodedPaths # debugging + + # Fix shebang + sed -i tools/script/dtk-translate.py -e "s,#!env,#!/usr/bin/env," + ''; + + qmakeFlags = [ + "DTK_VERSION=${version}" + "LIB_INSTALL_DIR=${placeholder "out"}/lib" + "MKSPECS_INSTALL_DIR=${placeholder "out"}/mkspecs" + ]; + + postFixup = '' + chmod +x $out/lib/libdtk-${version}/DCore/bin/*.py + wrapPythonProgramsIn "$out/lib/libdtk-${version}/DCore/bin" "$out $pythonPath" + searchHardCodedPaths $out # debugging + ''; + + enableParallelBuilding = true; + + passthru.updateScript = deepin.updateScript { name = "${pname}-${version}"; }; + + meta = with stdenv.lib; { + description = "Deepin tool kit core library"; + homepage = "https://github.com/linuxdeepin/dtkcore"; + license = licenses.gpl3; + platforms = platforms.linux; + maintainers = with maintainers; [ romildo ]; + }; +} diff --git a/nixpkgs/pkgs/desktops/deepin/dtkwidget/default.nix b/nixpkgs/pkgs/desktops/deepin/dtkwidget/default.nix new file mode 100644 index 000000000000..5a3869a2db93 --- /dev/null +++ b/nixpkgs/pkgs/desktops/deepin/dtkwidget/default.nix @@ -0,0 +1,52 @@ +{ stdenv, mkDerivation, fetchFromGitHub, pkgconfig, qmake, qttools, qtmultimedia, + qtsvg, qtx11extras, librsvg, libstartup_notification, gsettings-qt, + dde-qt-dbus-factory, dtkcore, deepin }: + +mkDerivation rec { + pname = "dtkwidget"; + version = "2.1.1"; + + src = fetchFromGitHub { + owner = "linuxdeepin"; + repo = pname; + rev = version; + sha256 = "0yqrm1p0k1843ldvcd79dxl26ybyl5kljl6vwhzc58sx7pw4qmvh"; + }; + + nativeBuildInputs = [ + pkgconfig + qmake + qttools + ]; + + buildInputs = [ + qtmultimedia + qtsvg + qtx11extras + librsvg + libstartup_notification + gsettings-qt + dde-qt-dbus-factory + dtkcore + ]; + + outRef = placeholder "out"; + + qmakeFlags = [ + "INCLUDE_INSTALL_DIR=${outRef}/include" + "LIB_INSTALL_DIR=${outRef}/lib" + "QT_HOST_DATA=${outRef}" + ]; + + enableParallelBuilding = true; + + passthru.updateScript = deepin.updateScript { name = "${pname}-${version}"; }; + + meta = with stdenv.lib; { + description = "Deepin graphical user interface library"; + homepage = "https://github.com/linuxdeepin/dtkwidget"; + license = licenses.gpl3; + platforms = platforms.linux; + maintainers = with maintainers; [ romildo ]; + }; +} diff --git a/nixpkgs/pkgs/desktops/deepin/dtkwm/default.nix b/nixpkgs/pkgs/desktops/deepin/dtkwm/default.nix new file mode 100644 index 000000000000..ecc11feb7496 --- /dev/null +++ b/nixpkgs/pkgs/desktops/deepin/dtkwm/default.nix @@ -0,0 +1,49 @@ +{ stdenv, mkDerivation, fetchFromGitHub, fetchpatch, pkgconfig, qmake, qtx11extras, dtkcore, deepin }: + +mkDerivation rec { + pname = "dtkwm"; + version = "2.0.12"; + + src = fetchFromGitHub { + owner = "linuxdeepin"; + repo = pname; + rev = version; + sha256 = "0rdzzqsggqarldwb4yp5s4sf5czicgxbdmibjn0pw32129r2d1g3"; + }; + + nativeBuildInputs = [ + pkgconfig + qmake + ]; + + buildInputs = [ + dtkcore + qtx11extras + ]; + + patches = [ + # Set DTK_MODULE_NAME + (fetchpatch { + url = "https://github.com/linuxdeepin/dtkwm/commit/2490891a.patch"; + sha256 = "0krydxjpnaihkgs1n49b6mcf3rd3lkispcnkb1j5vpfs9hp9f48j"; + }) + ]; + + outRef = placeholder "out"; + + qmakeFlags = [ + "QT_HOST_DATA=${outRef}" + "INCLUDE_INSTALL_DIR=${outRef}/include" + "LIB_INSTALL_DIR=${outRef}/lib" + ]; + + passthru.updateScript = deepin.updateScript { name = "${pname}-${version}"; }; + + meta = with stdenv.lib; { + description = "Deepin graphical user interface library"; + homepage = "https://github.com/linuxdeepin/dtkwm"; + license = licenses.gpl3Plus; + platforms = platforms.linux; + maintainers = with maintainers; [ romildo ]; + }; +} diff --git a/nixpkgs/pkgs/desktops/deepin/go-dbus-factory/default.nix b/nixpkgs/pkgs/desktops/deepin/go-dbus-factory/default.nix new file mode 100644 index 000000000000..52bf8e62f1d0 --- /dev/null +++ b/nixpkgs/pkgs/desktops/deepin/go-dbus-factory/default.nix @@ -0,0 +1,29 @@ +{ stdenv, fetchFromGitHub, deepin }: + +stdenv.mkDerivation rec { + pname = "go-dbus-factory"; + version = "0.9.0"; + + src = fetchFromGitHub { + owner = "linuxdeepin"; + repo = pname; + rev = version; + sha256 = "06fqyad9f50gcjsjkh7929yyaprahdjhnd0dr4gl2797a7wysl3f"; + }; + + makeFlags = [ "PREFIX=${placeholder "out"}" ]; + + postPatch = '' + sed -i -e 's:/share/gocode:/share/go:' Makefile + ''; + + passthru.updateScript = deepin.updateScript { name = "${pname}-${version}"; }; + + meta = with stdenv.lib; { + description = "GoLang DBus factory for the Deepin Desktop Environment"; + homepage = "https://github.com/linuxdeepin/go-dbus-factory"; + license = licenses.gpl3; + platforms = platforms.linux; + maintainers = with maintainers; [ romildo ]; + }; +} diff --git a/nixpkgs/pkgs/desktops/deepin/go-dbus-generator/default.nix b/nixpkgs/pkgs/desktops/deepin/go-dbus-generator/default.nix new file mode 100644 index 000000000000..481f7eb2bc2d --- /dev/null +++ b/nixpkgs/pkgs/desktops/deepin/go-dbus-generator/default.nix @@ -0,0 +1,33 @@ +{ stdenv, fetchFromGitHub, go, go-lib, deepin }: + +stdenv.mkDerivation rec { + pname = "go-dbus-generator"; + version = "5.0.0"; + + src = fetchFromGitHub { + owner = "linuxdeepin"; + repo = pname; + rev = version; + sha256 = "17rzicqizyyrhjjf4rild7py1cyd07b2zdcd9nabvwn4gvj6lhfb"; + }; + + nativeBuildInputs = [ + go + go-lib + ]; + + makeFlags = [ + "PREFIX=${placeholder "out"}" + "GOCACHE=$(TMPDIR)/go-cache" + ]; + + passthru.updateScript = deepin.updateScript { name = "${pname}-${version}"; }; + + meta = with stdenv.lib; { + description = "Convert dbus interfaces to go-lang or qml wrapper code"; + homepage = "https://github.com/linuxdeepin/go-dbus-generator"; + license = licenses.gpl3; + platforms = platforms.linux; + maintainers = with maintainers; [ romildo ]; + }; +} diff --git a/nixpkgs/pkgs/desktops/deepin/go-gir-generator/default.nix b/nixpkgs/pkgs/desktops/deepin/go-gir-generator/default.nix new file mode 100644 index 000000000000..f57bae89711f --- /dev/null +++ b/nixpkgs/pkgs/desktops/deepin/go-gir-generator/default.nix @@ -0,0 +1,52 @@ +{ stdenv, fetchpatch, fetchFromGitHub, pkgconfig, go, gobject-introspection, + libgudev, deepin }: + +stdenv.mkDerivation rec { + pname = "go-gir-generator"; + version = "2.0.2"; + + src = fetchFromGitHub { + owner = "linuxdeepin"; + repo = pname; + rev = version; + sha256 = "1ydzll8zlk897iqcihvv6p046p0rzr4qqz2drmz2nx95njp8n03a"; + }; + + patches = [ + # Fix compatibility with glib 2.63+ + # https://github.com/linuxdeepin/go-gir-generator/pull/11 + (fetchpatch { + url = "https://github.com/linuxdeepin/go-gir-generator/commit/7dea15a1a491f28d2ac8c411068ccefeba01aae3.patch"; + sha256 = "7bn/mtruCcK+AIXMzhN2e3o7CuzuJ3mtTz0HOTEYTaA="; + }) + ]; + + nativeBuildInputs = [ + pkgconfig + go + ]; + + buildInputs = [ + gobject-introspection + libgudev + ]; + + postPatch = '' + sed -i -e 's:/share/gocode:/share/go:' Makefile + ''; + + makeFlags = [ + "PREFIX=${placeholder "out"}" + "GOCACHE=$(TMPDIR)/go-cache" + ]; + + passthru.updateScript = deepin.updateScript { name = "${pname}-${version}"; }; + + meta = with stdenv.lib; { + description = "Generate static golang bindings for GObject"; + homepage = "https://github.com/linuxdeepin/go-gir-generator"; + license = licenses.gpl3; + platforms = platforms.linux; + maintainers = with maintainers; [ romildo ]; + }; +} diff --git a/nixpkgs/pkgs/desktops/deepin/go-lib/default.nix b/nixpkgs/pkgs/desktops/deepin/go-lib/default.nix new file mode 100644 index 000000000000..43fddf78f11a --- /dev/null +++ b/nixpkgs/pkgs/desktops/deepin/go-lib/default.nix @@ -0,0 +1,39 @@ +{ stdenv, fetchFromGitHub, glib, xorg, gdk-pixbuf, pulseaudio, + mobile-broadband-provider-info, deepin }: + +stdenv.mkDerivation rec { + pname = "go-lib"; + version = "5.0.0"; + + src = fetchFromGitHub { + owner = "linuxdeepin"; + repo = pname; + rev = version; + sha256 = "0j1ik5hfrysqgync8cyv815cwyjn67k8n69x6llxdp39jli1k8q0"; + }; + + buildInputs = [ + glib + xorg.libX11 + gdk-pixbuf + pulseaudio + mobile-broadband-provider-info + ]; + + installPhase = '' + mkdir -p $out/share/go/src/pkg.deepin.io/lib + cp -a * $out/share/go/src/pkg.deepin.io/lib + + rm -r $out/share/go/src/pkg.deepin.io/lib/debian + ''; + + passthru.updateScript = deepin.updateScript { name = "${pname}-${version}"; }; + + meta = with stdenv.lib; { + description = "Go bindings for Deepin Desktop Environment development"; + homepage = "https://github.com/linuxdeepin/go-lib"; + license = licenses.gpl3; + platforms = platforms.linux; + maintainers = with maintainers; [ romildo ]; + }; +} diff --git a/nixpkgs/pkgs/desktops/deepin/qcef/default.nix b/nixpkgs/pkgs/desktops/deepin/qcef/default.nix new file mode 100644 index 000000000000..3b7207379c70 --- /dev/null +++ b/nixpkgs/pkgs/desktops/deepin/qcef/default.nix @@ -0,0 +1,103 @@ +{ stdenv, mkDerivation, fetchFromGitHub, pkgconfig, cmake, qtbase, qttools, + qtwebchannel, qtx11extras, + gnome2, nss, nspr, alsaLib, atk, cairo, cups, dbus, + expat, fontconfig, gdk-pixbuf, glib, gtk2, + libxcb, pango, pulseaudio, xorg, deepin }: + +let + rpahtLibraries = [ + stdenv.cc.cc.lib # libstdc++.so.6 + alsaLib + atk + cairo + cups + dbus + expat + fontconfig + gdk-pixbuf + glib + gnome2.GConf + gtk2 + libxcb + nspr + nss + pango + pulseaudio + xorg.libX11 + xorg.libXScrnSaver + xorg.libXcomposite + xorg.libXcursor + xorg.libXdamage + xorg.libXext + xorg.libXfixes + xorg.libXi + xorg.libXrandr + xorg.libXrender + xorg.libXtst + ]; + libPath = stdenv.lib.makeLibraryPath rpahtLibraries; +in + +mkDerivation rec { + pname = "qcef"; + version = "1.1.7"; + + srcs = [ + (fetchFromGitHub { + owner = "linuxdeepin"; + repo = pname; + rev = version; + sha256 = "1x0vb4nkfa1lq0nh6iqpxfvsqmb6qfn305pbc92bsqpgiqd7jvb1"; + name = pname; + }) + (fetchFromGitHub { + owner = "linuxdeepin"; + repo = "cef-binary"; + rev = "fecf00339545d2819224333cc506d5aa22ae8008"; + sha256 = "06i1zc7ciy7d0qhndiwpjrsii0x5i5hg9j6ddi4w5yf1nzgsrj4n"; + name = "cef-binary"; + }) + ]; + + sourceRoot = pname; + + nativeBuildInputs = [ + pkgconfig + cmake + qttools + deepin.setupHook + ]; + + buildInputs = [ + qtbase + qtwebchannel + qtx11extras + ] ++ rpahtLibraries; + + postUnpack = '' + rmdir ${pname}/cef + ln -s ../cef-binary ${pname}/cef + ''; + + postPatch = '' + searchHardCodedPaths + fixPath $out /usr src/core/qcef_global_settings.{h,cpp} + sed '/COMMAND rm -rf Release Resources/a COMMAND ldd qcef/libcef.so' -i src/CMakeLists.txt + sed '/COMMAND rm -rf Release Resources/a COMMAND patchelf --set-rpath ${libPath} qcef/libcef.so' -i src/CMakeLists.txt + ''; + + postFixup = '' + searchHardCodedPaths $out + ''; + + passthru.updateScript = deepin.updateScript { name = "${pname}-${version}"; }; + + meta = with stdenv.lib; { + description = "Qt5 binding of Chromium Embedded Framework"; + homepage = "https://github.com/linuxdeepin/qcef"; + license = licenses.lgpl3; + platforms = platforms.linux; + badPlatforms = [ "aarch64-linux" ]; # the cef-binary is not available + maintainers = with maintainers; [ romildo ]; + }; +} diff --git a/nixpkgs/pkgs/desktops/deepin/qt5dxcb-plugin/default.nix b/nixpkgs/pkgs/desktops/deepin/qt5dxcb-plugin/default.nix new file mode 100644 index 000000000000..1bf069821f58 --- /dev/null +++ b/nixpkgs/pkgs/desktops/deepin/qt5dxcb-plugin/default.nix @@ -0,0 +1,55 @@ +{ stdenv, mkDerivation, fetchFromGitHub, pkgconfig, qmake, qtx11extras, libSM, + mtdev, cairo, deepin, qtbase }: + +mkDerivation rec { + pname = "qt5dxcb-plugin"; + version = "5.0.1"; + + srcs = [ + (fetchFromGitHub { + owner = "linuxdeepin"; + repo = pname; + rev = version; + sha256 = "1pkhbx4hzjv7n4mscv7dng9ymjcc1csdc82iy62yxshhq32bcfja"; + }) + qtbase.src + ]; + + sourceRoot = "source"; + + nativeBuildInputs = [ + pkgconfig + qmake + ]; + + buildInputs = [ + qtx11extras + libSM + mtdev + cairo + qtbase + ]; + + postPatch = '' + # The Qt5 platforms plugin is vendored in the package, however what's there is not always up-to-date with what's in nixpkgs. + # We simply copy the headers from qtbase's source tarball. + mkdir -p platformplugin/libqt5xcbqpa-dev/${qtbase.version} + cp -r ../qtbase-everywhere-src-${qtbase.version}/src/plugins/platforms/xcb/*.h platformplugin/libqt5xcbqpa-dev/${qtbase.version}/ + ''; + + qmakeFlags = [ + "INSTALL_PATH=${placeholder "out"}/${qtbase.qtPluginPrefix}/platforms" + ]; + + enableParallelBuilding = true; + + passthru.updateScript = deepin.updateScript { name = "${pname}-${version}"; }; + + meta = with stdenv.lib; { + description = "Qt platform theme integration plugin for DDE"; + homepage = "https://github.com/linuxdeepin/qt5dxcb-plugin"; + license = licenses.gpl3; + platforms = platforms.linux; + maintainers = with maintainers; [ romildo ]; + }; +} diff --git a/nixpkgs/pkgs/desktops/deepin/qt5integration/default.nix b/nixpkgs/pkgs/desktops/deepin/qt5integration/default.nix new file mode 100644 index 000000000000..ad89957ef1b9 --- /dev/null +++ b/nixpkgs/pkgs/desktops/deepin/qt5integration/default.nix @@ -0,0 +1,52 @@ +{ stdenv, mkDerivation, fetchFromGitHub, pkgconfig, qmake, mtdev, + lxqt, qtx11extras, qtmultimedia, qtsvg, + qt5dxcb-plugin, qtstyleplugins, dtkcore, dtkwidget, deepin }: + +mkDerivation rec { + pname = "qt5integration"; + version = "5.0.0"; + + src = fetchFromGitHub { + owner = "linuxdeepin"; + repo = pname; + rev = version; + sha256 = "140wb3vcm2ji8jhqdxv8f4shiknia1zk8fssqlp09kzc1cmb4ncy"; + }; + + nativeBuildInputs = [ + pkgconfig + qmake + ]; + + buildInputs = [ + dtkcore + dtkwidget + qt5dxcb-plugin + mtdev + lxqt.libqtxdg + qtstyleplugins + qtx11extras + qtmultimedia + qtsvg + ]; + + postPatch = '' + sed -i dstyleplugin/dstyleplugin.pro \ + platformthemeplugin/qt5deepintheme-plugin.pro \ + iconengineplugins/svgiconengine/svgiconengine.pro \ + imageformatplugins/svg/svg.pro \ + -e "s,\$\$\[QT_INSTALL_PLUGINS\],$out/$qtPluginPrefix," + ''; + + enableParallelBuilding = true; + + passthru.updateScript = deepin.updateScript { name = "${pname}-${version}"; }; + + meta = with stdenv.lib; { + description = "Qt platform theme integration plugins for DDE"; + homepage = "https://github.com/linuxdeepin/qt5integration"; + license = with licenses; [ gpl3 lgpl2Plus bsd2 ]; + platforms = platforms.linux; + maintainers = with maintainers; [ romildo ]; + }; +} diff --git a/nixpkgs/pkgs/desktops/deepin/setup-hook.sh b/nixpkgs/pkgs/desktops/deepin/setup-hook.sh new file mode 100755 index 000000000000..ce1d7330a222 --- /dev/null +++ b/nixpkgs/pkgs/desktops/deepin/setup-hook.sh @@ -0,0 +1,64 @@ +# Helper functions for deepin packaging + +searchHardCodedPaths() { + # Usage: + # + # searchHardCodedPaths [-a] [<path>] + # + # Looks for ocurrences of FHS hard coded paths and command + # invocations in the given path (default: current directory) for + # the purpose of debugging a derivation. The option -a enables + # processing binary files as if they were text. + + local binary + if [ "$1" = "-a" ]; then + binary="-a" + shift + fi + + local path=$1 + + echo ----------- looking for command invocations in $path + grep --color=always -r -E '\<(ExecStart|Exec|startDetached|execute|exec\.(Command|LookPath))\>' $path || true + + echo ----------- looking for hard coded paths in $path + grep --color=always $binary -r -E '/(usr|bin|sbin|etc|var|opt)\>' $path || true + + echo ----------- done +} + +fixPath() { + # Usage: + # + # fixPath <parent dir> <path> <files> + # + # replaces occurences of <path> by <parent_dir><path> in <files> + # removing /usr from the start of <path> if present + + local parentdir=$1 + local path=$2 + local newpath=$parentdir$(echo $path | sed "s,^/usr,,") + local files=("${@:3}") + echo ======= grep --color=always "${path}" "${files[@]}" + grep --color=always "${path}" "${files[@]}" + echo +++++++ sed -i -e "s,$path,$newpath,g" "${files[@]}" + sed -i -e "s,$path,$newpath,g" "${files[@]}" +} + +searchForUnresolvedDLL() { + # Usage: + # + # searchForUnresolvedDLL <dir> + # + # looks in <dir> for executables with unresolved dynamic library paths + + local dir="$1" + echo ======= Looking for executables with unresolved dynamic library dependencies + echo $dir + for f in $(find -L "$dir" -type f -executable); do + if (ldd $f | grep -q "not found"); then + echo $f + ldd $f | grep --color=always "not found" + fi + done +} diff --git a/nixpkgs/pkgs/desktops/deepin/startdde/default.nix b/nixpkgs/pkgs/desktops/deepin/startdde/default.nix new file mode 100644 index 000000000000..3050e7b9e13c --- /dev/null +++ b/nixpkgs/pkgs/desktops/deepin/startdde/default.nix @@ -0,0 +1,136 @@ +{ stdenv, buildGoPackage, fetchFromGitHub, pkgconfig, alsaLib, + coreutils, dbus-factory, dde-api, dde-daemon, dde-dock, + dde-file-manager, dde-polkit-agent, dde-session-ui, deepin, + deepin-desktop-base, deepin-desktop-schemas, deepin-turbo, + dde-kwin, glib, gnome3, go, go-dbus-factory, go-gir-generator, + go-lib, gtk3, jq, kmod, libX11, libXi, libcgroup, pciutils, psmisc, + pulseaudio, systemd, xorg, wrapGAppsHook }: + +buildGoPackage rec { + name = "${pname}-${version}"; + pname = "startdde"; + version = "5.0.1"; + + goPackagePath = "pkg.deepin.io/dde/startdde"; + + src = fetchFromGitHub { + owner = "linuxdeepin"; + repo = pname; + rev = version; + sha256 = "1xydmglydksy7hjlavf5pbfy0s0lndgavh8x3kg2mg7d36mbra43"; + }; + + goDeps = ./deps.nix; + + outputs = [ "out" ]; + + nativeBuildInputs = [ + pkgconfig + dbus-factory + jq + wrapGAppsHook + deepin.setupHook + ]; + + buildInputs = [ + dde-api + go-dbus-factory + go-gir-generator + go-lib + alsaLib + dde-daemon + dde-dock + dde-file-manager + dde-kwin + dde-polkit-agent + dde-session-ui + deepin-desktop-schemas + deepin-turbo + glib + gnome3.dconf + gnome3.gnome-keyring + gnome3.libgnome-keyring + gtk3 + kmod + libX11 + libXi + libcgroup + pciutils + psmisc + pulseaudio + systemd + xorg.xdriinfo + ]; + + postPatch = '' + searchHardCodedPaths # debugging + + # Commented lines below indicates a doubt about how to fix the hard coded path + + fixPath $out /etc/X11 Makefile + #fixPath ? /etc/xdg/autostop autostop/autostop.go + fixPath ${coreutils} /bin/ls copyfile_test.go + fixPath $out /usr/share/startdde/auto_launch.json launch_group.go + #fixPath ? /usr/bin/kwin_no_scale main.go # not found on deepin linux and archlinux + fixPath $out /usr/share/startdde/memchecker.json memchecker/config.go + fixPath $out /usr/bin/startdde misc/00deepin-dde-env + fixPath ${dde-file-manager} /usr/bin/dde-file-manager misc/auto_launch/chinese.json + fixPath ${deepin-turbo} /usr/lib/deepin-turbo/booster-dtkwidget misc/auto_launch/chinese.json + fixPath ${dde-daemon} /usr/lib/deepin-daemon/dde-session-daemon misc/auto_launch/chinese.json misc/auto_launch/default.json + fixPath ${dde-dock} /usr/bin/dde-dock misc/auto_launch/chinese.json misc/auto_launch/default.json + fixPath ${dde-file-manager} /usr/bin/dde-desktop misc/auto_launch/chinese.json misc/auto_launch/default.json + fixPath $out /usr/bin/startdde misc/deepin-session + #fixPath ? /usr/lib/lightdm/config-error-dialog.sh misc/deepin-session # provided by lightdm on deepin linux + #fixPath ? /usr/sbin/lightdm-session misc/deepin-session # provided by lightdm on deepin linux + fixPath ${dde-session-ui} /usr/bin/dde-lock session.go + fixPath ${dde-session-ui} /usr/bin/dde-shutdown session.go + fixPath ${dde-session-ui} /usr/lib/deepin-daemon/dde-osd session.go + fixPath ${deepin-desktop-base} /etc/deepin-version session.go + fixPath ${gnome3.gnome-keyring} /usr/bin/gnome-keyring-daemon session.go + fixPath ${pulseaudio} /usr/bin/pulseaudio sound_effect.go + #fixPath ? /usr/lib/UIAppSched.hooks startmanager.go # not found anything about this + fixPath ${dde-session-ui} /usr/lib/deepin-daemon/dde-welcome utils.go + fixPath ${dde-polkit-agent} /usr/lib/polkit-1-dde/dde-polkit-agent watchdog/dde_polkit_agent.go + #fixPath ? /var/log/Xorg.0.log wm/driver.go + #fixPath ? /etc/deepin-wm-switcher/config.json wm/switcher_config.go # not present on nixos, deepin linux and archlinux + + substituteInPlace wm/driver.go --replace '/sbin/lsmod' "${kmod}/bin/lsmod" + + substituteInPlace session.go --replace 'LookPath("cgexec"' 'LookPath("${libcgroup}/bin/cgexec"' + substituteInPlace vm.go --replace 'Command("dde-wm-chooser"' 'Command("${dde-session-ui}/bin/dde-wm-chooser"' + substituteInPlace vm.go --replace 'Command("systemd-detect-virt"' 'Command("${systemd}/bin/systemd-detect-virt"' + substituteInPlace wm/card_info.go --replace 'Command("lspci"' 'Command("${pciutils}/bin/lspci"' + substituteInPlace wm/driver.go --replace 'Command("lspci"' 'Command("${pciutils}/bin/lspci"' + substituteInPlace wm/driver.go --replace 'Command("xdriinfo"' 'Command("${xorg.xdriinfo}/bin/xdriinfo"' + substituteInPlace wm/platform.go --replace 'Command("gsettings"' 'Command("${glib}/bin/gsettings"' + substituteInPlace wm/platform.go --replace 'Command("uname"' 'Command("${coreutils}/bin/uname"' + substituteInPlace wm/switcher.go --replace 'Command("killall"' 'Command("${psmisc}/bin/killall"' + ''; + + buildPhase = '' + make -C go/src/${goPackagePath} + ''; + + installPhase = '' + make install PREFIX="$out" -C go/src/${goPackagePath} + rm -rf $out/share/lightdm # this is uselesss for NixOS + remove-references-to -t ${go} $out/bin/* $out/sbin/* + ''; + + postFixup = '' + searchHardCodedPaths $out # debugging + ''; + + passthru = { + updateScript = deepin.updateScript { inherit name; }; + providedSessions = [ "deepin" ]; + }; + + meta = with stdenv.lib; { + description = "Starter of deepin desktop environment"; + homepage = "https://github.com/linuxdeepin/startdde"; + license = licenses.gpl3; + platforms = platforms.linux; + maintainers = with maintainers; [ romildo ]; + }; +} diff --git a/nixpkgs/pkgs/desktops/deepin/startdde/deps.nix b/nixpkgs/pkgs/desktops/deepin/startdde/deps.nix new file mode 100644 index 000000000000..8898b8c50fb7 --- /dev/null +++ b/nixpkgs/pkgs/desktops/deepin/startdde/deps.nix @@ -0,0 +1,30 @@ +# This file was generated by https://github.com/kamilchm/go2nix v1.3.0 +[ + { + goPackagePath = "github.com/cryptix/wav"; + fetch = { + type = "git"; + url = "https://github.com/cryptix/wav"; + rev = "8bdace674401f0bd3b63c65479b6a6ff1f9d5e44"; + sha256 = "18nyqv0ic35fs9fny8sj84c00vbxs8mnric6vr6yl42624fh5id6"; + }; + } + { + goPackagePath = "github.com/linuxdeepin/go-x11-client"; + fetch = { + type = "git"; + url = "https://github.com/linuxdeepin/go-x11-client"; + rev = "b5b01565d224d5ccd5a4143d9099acceb23e182a"; + sha256 = "1lnffjp8bqy6f8caw6drg1js6hny5w7432riqchcrcd4q85d94rs"; + }; + } + { + goPackagePath = "golang.org/x/net"; + fetch = { + type = "git"; + url = "https://go.googlesource.com/net"; + rev = "daa7c04131f568e31c51927b359a2d197a357058"; + sha256 = "17gbfvb5iqyayzw0zd6q218zsbf7x74rflvn18wkxvsw95n1y54h"; + }; + } +] diff --git a/nixpkgs/pkgs/desktops/deepin/udisks2-qt5/default.nix b/nixpkgs/pkgs/desktops/deepin/udisks2-qt5/default.nix new file mode 100644 index 000000000000..d13460a4bd5d --- /dev/null +++ b/nixpkgs/pkgs/desktops/deepin/udisks2-qt5/default.nix @@ -0,0 +1,40 @@ +{ stdenv, mkDerivation, fetchFromGitHub, qmake, qtbase, deepin }: + +mkDerivation rec { + pname = "udisks2-qt5"; + version = "5.0.0"; + + src = fetchFromGitHub { + owner = "linuxdeepin"; + repo = pname; + rev = version; + sha256 = "0mqxm6ixzpbg0rr6ly2kvnkpag8gjza67ya7jv4i4rihbq1d0wzi"; + }; + + nativeBuildInputs = [ + deepin.setupHook + qmake + ]; + + buildInputs = [ + qtbase + ]; + + postPatch = '' + searchHardCodedPaths + ''; + + postFixup = '' + searchHardCodedPaths $out + ''; + + passthru.updateScript = deepin.updateScript { name = "${pname}-${version}"; }; + + meta = with stdenv.lib; { + description = "UDisks2 D-Bus interfaces binding for Qt5"; + homepage = "https://github.com/linuxdeepin/udisks2-qt5"; + license = licenses.gpl3; + platforms = platforms.linux; + maintainers = with maintainers; [ romildo ]; + }; +} diff --git a/nixpkgs/pkgs/desktops/deepin/update.nix b/nixpkgs/pkgs/desktops/deepin/update.nix new file mode 100644 index 000000000000..089d9289827e --- /dev/null +++ b/nixpkgs/pkgs/desktops/deepin/update.nix @@ -0,0 +1,38 @@ +{ stdenv, lib, writeScript, coreutils, curl, gnugrep, gnused, jq, common-updater-scripts, nix }: +{ name, ignored-versions ? "^2014(\\.|rc)|^v[0-9]+" }: + +let + nameAndVersion = builtins.parseDrvName name; + packageVersion = nameAndVersion.version; + packageName = nameAndVersion.name; + attrPath = "deepin.${packageName}"; +in + +writeScript "update-${packageName}" '' + #!${stdenv.shell} + set -o errexit + set -x + + # search for the latest version of the package on github + PATH=${lib.makeBinPath [ common-updater-scripts coreutils curl gnugrep gnused jq ]} + tags=$(curl -s https://api.github.com/repos/linuxdeepin/${packageName}/tags) + tags=$(echo "$tags" | jq -r '.[] | .name') + echo "# ${name}" >> git-commits.txt + echo "# available tags:" >> git-commits.txt + echo "$tags" | ${gnused}/bin/sed -e 's/^/# /' >> git-commits.txt + if [ -n "${ignored-versions}" ]; then + tags=$(echo "$tags" | grep -vE "${ignored-versions}") + fi + latest_tag=$(echo "$tags" | sort --version-sort | tail -1) + + # generate commands to commit the changes + if [ "${packageVersion}" != "$latest_tag" ]; then + pfile=$(EDITOR=echo ${nix}/bin/nix edit -f. ${attrPath}) + echo " git add $pfile " >> git-commits.txt + echo " git commit -m \"${attrPath}: ${packageVersion} -> $latest_tag\"" >> git-commits.txt + fi + + # update the nix expression + update-source-version "${attrPath}" "$latest_tag" + echo "" >> git-commits.txt +'' diff --git a/nixpkgs/pkgs/desktops/enlightenment/default.nix b/nixpkgs/pkgs/desktops/enlightenment/default.nix new file mode 100644 index 000000000000..2739b9a2517f --- /dev/null +++ b/nixpkgs/pkgs/desktops/enlightenment/default.nix @@ -0,0 +1,16 @@ +{ callPackage, pkgs }: +{ + #### CORE EFL + efl = callPackage ./efl.nix { + openjpeg = pkgs.openjpeg_1; + }; + + #### WINDOW MANAGER + enlightenment = callPackage ./enlightenment.nix { }; + + #### APPLICATIONS + econnman = callPackage ./econnman.nix { }; + terminology = callPackage ./terminology.nix { }; + rage = callPackage ./rage.nix { }; + ephoto = callPackage ./ephoto.nix { }; +} diff --git a/nixpkgs/pkgs/desktops/enlightenment/econnman.nix b/nixpkgs/pkgs/desktops/enlightenment/econnman.nix new file mode 100644 index 000000000000..dfe294ef5c6a --- /dev/null +++ b/nixpkgs/pkgs/desktops/enlightenment/econnman.nix @@ -0,0 +1,29 @@ +{ stdenv, fetchurl, pkgconfig, efl, python2Packages, dbus, makeWrapper }: + +stdenv.mkDerivation rec { + pname = "econnman"; + version = "1.1"; + + src = fetchurl { + url = "http://download.enlightenment.org/rel/apps/econnman/${pname}-${version}.tar.gz"; + sha256 = "057pwwavlvrrq26bncqnfrf449zzaim0zq717xv86av4n940gwv0"; + }; + + nativeBuildInputs = [ makeWrapper pkgconfig python2Packages.wrapPython ]; + + buildInputs = [ efl python2Packages.python dbus ]; + + pythonPath = [ python2Packages.pythonefl python2Packages.dbus-python ]; + + postInstall = '' + wrapPythonPrograms + ''; + + meta = { + description = "A user interface for the connman network connection manager"; + homepage = "https://enlightenment.org/"; + license = stdenv.lib.licenses.lgpl3; + platforms = stdenv.lib.platforms.linux; + maintainers = with stdenv.lib.maintainers; [ matejc tstrobel ftrvxmtrx romildo ]; + }; +} diff --git a/nixpkgs/pkgs/desktops/enlightenment/efl-elua.patch b/nixpkgs/pkgs/desktops/enlightenment/efl-elua.patch new file mode 100644 index 000000000000..96c42b3ff3ca --- /dev/null +++ b/nixpkgs/pkgs/desktops/enlightenment/efl-elua.patch @@ -0,0 +1,14 @@ +--- ./src/scripts/elua/core/util.lua.old 2015-05-17 11:59:57.307743243 +0200 ++++ ./src/scripts/elua/core/util.lua 2015-05-17 12:39:11.906797377 +0200 +@@ -159,7 +159,10 @@ + local ev = os.getenv("ELUA_" .. libname:upper() .. "_LIBRARY_PATH") + local succ, v = load_lib(libname, ev) + if not succ then +- error(v, 2) ++ succ, v = load_lib(libname, "$out/lib") ++ if not succ then ++ error(v, 2) ++ end + end + lib = v + loaded_libs[libname] = lib diff --git a/nixpkgs/pkgs/desktops/enlightenment/efl.nix b/nixpkgs/pkgs/desktops/enlightenment/efl.nix new file mode 100644 index 000000000000..7bf280cb99b5 --- /dev/null +++ b/nixpkgs/pkgs/desktops/enlightenment/efl.nix @@ -0,0 +1,159 @@ +{ stdenv, fetchurl, meson, ninja, pkgconfig, SDL, SDL2, alsaLib, + avahi, bullet, check, curl, dbus, doxygen, expat, fontconfig, + freetype, fribidi, ghostscript, giflib, glib, gst_all_1, gtk3, + harfbuzz, ibus, jbig2dec, libGL, libdrm, libinput, libjpeg, libpng, + libpulseaudio, libraw, librsvg, libsndfile, libspectre, libtiff, + libwebp, libxkbcommon, luajit, lz4, mesa, openjpeg, openssl, + poppler, python27Packages, systemd, udev, utillinux, writeText, + xorg, zlib +}: + +stdenv.mkDerivation rec { + pname = "efl"; + version = "1.23.3"; + + src = fetchurl { + url = "http://download.enlightenment.org/rel/libs/${pname}/${pname}-${version}.tar.xz"; + sha256 = "00b9lp3h65254kdb1ys15fv7p3ln7qsvf15jkw4kli5ymagadkjk"; + }; + + nativeBuildInputs = [ + meson + ninja + gtk3 + pkgconfig + check + ]; + + buildInputs = [ + SDL + avahi + fontconfig + freetype + giflib + glib + gst_all_1.gst-libav + gst_all_1.gst-plugins-base + gst_all_1.gst-plugins-good + gst_all_1.gstreamer + ibus + libGL + libpng + libpulseaudio + libsndfile + libtiff + lz4 + mesa + openssl + systemd + udev + xorg.libX11 + xorg.libXcursor + xorg.xorgproto + zlib + ]; + + propagatedBuildInputs = [ + SDL2 + alsaLib + bullet + curl + dbus + dbus + doxygen + expat + fribidi + ghostscript + harfbuzz + jbig2dec + libdrm + libinput + libjpeg + libraw + librsvg + libspectre + libwebp + libxkbcommon + luajit + openjpeg + poppler + python27Packages.dbus-python + utillinux + xorg.libXScrnSaver + xorg.libXcomposite + xorg.libXdamage + xorg.libXext + xorg.libXfixes + xorg.libXi + xorg.libXinerama + xorg.libXp + xorg.libXrandr + xorg.libXrender + xorg.libXtst + xorg.libxcb + xorg.libxkbfile + xorg.xcbutilkeysyms + ]; + + mesonFlags = [ + "--buildtype=release" + "-D build-tests=false" # disable build tests, which are not working + "-D drm=true" + "-D embedded-lz4=false" + "-D evas-loaders-disabler=json" + "-D fb=true" + "-D opengl=full" + "-D sdl=true" + ]; + + patches = [ ./efl-elua.patch ]; + + postPatch = '' + patchShebangs src/lib/elementary/config_embed + + # fix destination of systemd unit and dbus service + substituteInPlace systemd-services/meson.build --replace "dep.get_pkgconfig_variable('systemduserunitdir')" "'$out/systemd/user'" + substituteInPlace dbus-services/meson.build --replace "dep.get_pkgconfig_variable('session_bus_services_dir')" "'$out/share/dbus-1/services'" + ''; + + # bin/edje_cc creates $HOME/.run, which would break build of reverse dependencies. + setupHook = writeText "setupHook.sh" '' + export HOME="$TEMPDIR" + ''; + + preConfigure = '' + # allow ecore_con to find libcurl.so, which is a runtime dependency (it is dlopened) + export LD_LIBRARY_PATH="${curl.out}/lib''${LD_LIBRARY_PATH:+:}$LD_LIBRARY_PATH" + + source "$setupHook" + ''; + + NIX_CFLAGS_COMPILE = "-DluaL_reg=luaL_Reg"; # needed since luajit-2.1.0-beta3 + + postInstall = '' + # fix use of $out variable + substituteInPlace "$out/share/elua/core/util.lua" --replace '$out' "$out" + + # add all module include dirs to the Cflags field in efl.pc + modules=$(for i in "$out/include/"*/; do printf ' -I''${includedir}/'`basename $i`; done) + substituteInPlace "$out/lib/pkgconfig/efl.pc" \ + --replace 'Cflags: -I''${includedir}/efl-1' \ + 'Cflags: -I''${includedir}/eina-1/eina'"$modules" + + # build icon cache + gtk-update-icon-cache "$out"/share/icons/Enlightenment-X + ''; + + postFixup = '' + # EFL applications depend on libcurl, which is linked at runtime by hand in code (it is dlopened) + patchelf --add-needed ${curl.out}/lib/libcurl.so $out/lib/libecore_con.so + ''; + + meta = { + description = "Enlightenment foundation libraries"; + homepage = "https://enlightenment.org/"; + license = stdenv.lib.licenses.lgpl3; + platforms = stdenv.lib.platforms.linux; + maintainers = with stdenv.lib.maintainers; [ matejc tstrobel ftrvxmtrx romildo ]; + }; +} diff --git a/nixpkgs/pkgs/desktops/enlightenment/enlightenment.nix b/nixpkgs/pkgs/desktops/enlightenment/enlightenment.nix new file mode 100644 index 000000000000..8ba0dffc8a4d --- /dev/null +++ b/nixpkgs/pkgs/desktops/enlightenment/enlightenment.nix @@ -0,0 +1,88 @@ +{ stdenv, fetchurl, meson, ninja, pkgconfig, gettext, alsaLib, bc, + bzip2, efl, gdbm, libXdmcp, libXrandr, libcap, libffi, + libpthreadstubs, libxcb, luajit, mesa, pam, pcre, xcbutilkeysyms, + xkeyboard_config, + + bluetoothSupport ? true, bluez5, + pulseSupport ? !stdenv.isDarwin, libpulseaudio, +}: + +stdenv.mkDerivation rec { + pname = "enlightenment"; + version = "0.23.1"; + + src = fetchurl { + url = "http://download.enlightenment.org/rel/apps/${pname}/${pname}-${version}.tar.xz"; + sha256 = "0d1cyl07w9pvi2pf029kablazks2q9aislzl46b6fq5m1465jc75"; + }; + + nativeBuildInputs = [ + gettext + meson + ninja + pkgconfig + ]; + + buildInputs = [ + alsaLib + bc # for the Everything module calculator mode + bzip2 + efl + gdbm + libXdmcp + libXrandr + libffi + libpthreadstubs + libxcb + luajit + mesa + pam + pcre + xcbutilkeysyms + xkeyboard_config + ] + ++ stdenv.lib.optional stdenv.isLinux libcap + ++ stdenv.lib.optional bluetoothSupport bluez5 + ++ stdenv.lib.optional pulseSupport libpulseaudio + ; + + patches = [ + # Some programs installed by enlightenment (to set the cpu frequency, + # for instance) need root ownership and setuid/setgid permissions, which + # are not allowed for files in /nix/store. Instead of allowing the + # installer to try to do this, the file $out/e-wrappers.nix is created, + # containing the needed configuration for wrapping those programs. It + # can be used in the enlightenment module. The idea is: + # + # 1) rename the original binary adding the extension .orig + # 2) wrap the renamed binary at /run/wrappers/bin/ + # 3) create a new symbolic link using the original binary name (in the + # original directory where enlightenment wants it) pointing to the + # wrapper + + ./enlightenment.suid-exes.patch + ]; + + postPatch = '' + # edge_cc is a binary provided by efl and cannot be found at the directory + # given by e_prefix_bin_get(), which is $out/bin + + substituteInPlace src/bin/e_import_config_dialog.c \ + --replace "e_prefix_bin_get()" "\"${efl}/bin\"" + + substituteInPlace src/modules/everything/evry_plug_calc.c \ + --replace "ecore_exe_pipe_run(\"bc -l\"" "ecore_exe_pipe_run(\"${bc}/bin/bc -l\"" + ''; + + mesonFlags = [ "-Dsystemdunitdir=lib/systemd/user" ]; + + enableParallelBuilding = true; + + meta = with stdenv.lib; { + description = "The Compositing Window Manager and Desktop Shell"; + homepage = "https://www.enlightenment.org"; + license = licenses.bsd2; + platforms = platforms.linux; + maintainers = with maintainers; [ matejc tstrobel ftrvxmtrx romildo ]; + }; +} diff --git a/nixpkgs/pkgs/desktops/enlightenment/enlightenment.suid-exes.patch b/nixpkgs/pkgs/desktops/enlightenment/enlightenment.suid-exes.patch new file mode 100644 index 000000000000..f53f6ffa7ca8 --- /dev/null +++ b/nixpkgs/pkgs/desktops/enlightenment/enlightenment.suid-exes.patch @@ -0,0 +1,25 @@ +--- enlightenment-0.22.0.orig/meson/meson_inst.sh 2017-09-25 10:55:43.000000000 -0300 ++++ enlightenment-0.22.0/meson/meson_inst.sh 2017-11-15 08:31:03.336844920 -0200 +@@ -1,6 +1,19 @@ +-#!/bin/sh ++#!/bin/sh -x ++ ++w="$out"/e-wrappers.nix ++ ++echo "# Wrappers for programs installed by enlightenment that should be setuid" > $w ++echo "" >> $w ++echo "{" >> $w ++echo " security.wrappers = {" >> $w + + for x in "$@" ; do +- chown root "$DESTDIR/$x" +- chmod a=rx,u+xs "$DESTDIR/$x" ++ f="$DESTDIR$x"; ++ b=$(basename "$f".orig) ++ mv -v "$f" "$f".orig ++ ln -sv /run/wrappers/bin/"$b" "$f" ++ echo " \"$b\".source = \"$f.orig\";" >> $w + done ++ ++echo " };" >> $w ++echo "}" >> $w diff --git a/nixpkgs/pkgs/desktops/enlightenment/ephoto.nix b/nixpkgs/pkgs/desktops/enlightenment/ephoto.nix new file mode 100644 index 000000000000..36719200c761 --- /dev/null +++ b/nixpkgs/pkgs/desktops/enlightenment/ephoto.nix @@ -0,0 +1,30 @@ +{ stdenv, fetchurl, pkgconfig, efl, pcre, mesa, makeWrapper }: + +stdenv.mkDerivation rec { + pname = "ephoto"; + version = "1.5"; + + src = fetchurl { + url = "http://www.smhouston.us/stuff/${pname}-${version}.tar.gz"; + sha256 = "09kraa5zz45728h2dw1ssh23b87j01bkfzf977m48y1r507sy3vb"; + }; + + nativeBuildInputs = [ + pkgconfig + mesa.dev # otherwise pkg-config does not find gbm + makeWrapper + ]; + + buildInputs = [ + efl + pcre + ]; + + meta = { + description = "Image viewer and editor written using the Enlightenment Foundation Libraries"; + homepage = "https://smhouston.us/projects/ephoto/"; + license = stdenv.lib.licenses.bsd2; + platforms = stdenv.lib.platforms.linux; + maintainers = [ stdenv.lib.maintainers.romildo ]; + }; +} diff --git a/nixpkgs/pkgs/desktops/enlightenment/rage.nix b/nixpkgs/pkgs/desktops/enlightenment/rage.nix new file mode 100644 index 000000000000..3c4de19fa919 --- /dev/null +++ b/nixpkgs/pkgs/desktops/enlightenment/rage.nix @@ -0,0 +1,37 @@ +{ stdenv, fetchurl, meson, ninja, pkgconfig, efl, gst_all_1, pcre, mesa, wrapGAppsHook }: + +stdenv.mkDerivation rec { + pname = "rage"; + version = "0.3.1"; + + src = fetchurl { + url = "http://download.enlightenment.org/rel/apps/${pname}/${pname}-${version}.tar.xz"; + sha256 = "04fdk23bbgvni212zrfy4ndg7vmshbsjgicrhckdvhay87pk9i75"; + }; + + nativeBuildInputs = [ + meson + ninja + pkgconfig + mesa.dev + wrapGAppsHook + ]; + + buildInputs = [ + efl + gst_all_1.gstreamer + gst_all_1.gst-plugins-base + gst_all_1.gst-plugins-good + gst_all_1.gst-plugins-bad + gst_all_1.gst-libav + pcre + ]; + + meta = { + description = "Video + Audio player along the lines of mplayer"; + homepage = "https://enlightenment.org/"; + maintainers = with stdenv.lib.maintainers; [ matejc ftrvxmtrx romildo ]; + platforms = stdenv.lib.platforms.linux; + license = stdenv.lib.licenses.bsd2; + }; +} diff --git a/nixpkgs/pkgs/desktops/enlightenment/terminology.nix b/nixpkgs/pkgs/desktops/enlightenment/terminology.nix new file mode 100644 index 000000000000..205d133e1d29 --- /dev/null +++ b/nixpkgs/pkgs/desktops/enlightenment/terminology.nix @@ -0,0 +1,32 @@ +{ stdenv, fetchurl, meson, ninja, pkgconfig, efl, pcre, mesa, makeWrapper }: + +stdenv.mkDerivation rec { + pname = "terminology"; + version = "1.6.0"; + + src = fetchurl { + url = "http://download.enlightenment.org/rel/apps/${pname}/${pname}-${version}.tar.xz"; + sha256 = "0xxx4xyhis6fy3frgb34ip0aj0kc4zashf60gzbxmq5gadbb0p5r"; + }; + + nativeBuildInputs = [ + meson + ninja + pkgconfig + makeWrapper + ]; + + buildInputs = [ + efl + pcre + mesa + ]; + + meta = { + description = "Powerful terminal emulator based on EFL"; + homepage = "https://www.enlightenment.org/about-terminology"; + license = stdenv.lib.licenses.bsd2; + platforms = stdenv.lib.platforms.linux; + maintainers = with stdenv.lib.maintainers; [ matejc tstrobel ftrvxmtrx romildo ]; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-2/bindings/gnome-python-desktop/default.nix b/nixpkgs/pkgs/desktops/gnome-2/bindings/gnome-python-desktop/default.nix new file mode 100644 index 000000000000..bf811961226d --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-2/bindings/gnome-python-desktop/default.nix @@ -0,0 +1,32 @@ +{ stdenv, fetchurl, gnome_python, librsvg, libwnck, libgtop, pkgconfig, python2, gtk2 }: + +let + inherit (python2.pkgs) python pygtk; +in stdenv.mkDerivation rec { + ver_maj = "2.32"; + ver_min = "0"; + version = "${ver_maj}.${ver_min}"; + pname = "gnome-python-desktop"; + + src = fetchurl { + url = "mirror://gnome/sources/gnome-python-desktop/${ver_maj}/gnome-python-desktop-${version}.tar.bz2"; + sha256 = "1s8f9rns9v7qlwjv9qh9lr8crp88dpzfm45hj47zc3ivpy0dbnq9"; + }; + + nativeBuildInputs = [ pkgconfig ]; + buildInputs = [ gtk2 librsvg libwnck libgtop python ]; + propagatedBuildInputs = [ gnome_python pygtk ]; + + # gnome-python-desktop expects that .pth file is already installed by PyGTK + # in the same directory. This is not the case for Nix. + postInstall = '' + echo "gtk-2.0" > $out/${python2.sitePackages}/${pname}-${version}.pth + ''; + + meta = with stdenv.lib; { + homepage = "http://www.pygtk.org"; + description = "Python bindings for GNOME desktop packages"; + license = licenses.lgpl21; + maintainers = [ maintainers.goibhniu ]; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-2/bindings/gnome-python/default.nix b/nixpkgs/pkgs/desktops/gnome-2/bindings/gnome-python/default.nix new file mode 100644 index 000000000000..455e3fe26732 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-2/bindings/gnome-python/default.nix @@ -0,0 +1,33 @@ +{ stdenv, fetchurl, python2, pkgconfig, libgnome, GConf, glib, gtk2, gnome_vfs }: + +with stdenv.lib; + +let + inherit (python2.pkgs) python pygobject2 pygtk dbus-python; +in stdenv.mkDerivation rec { + version = "2.28"; + name = "gnome-python-${version}.1"; + + src = fetchurl { + url = "mirror://gnome/sources/gnome-python/${version}/${name}.tar.bz2"; + sha256 = "759ce9344cbf89cf7f8449d945822a0c9f317a494f56787782a901e4119b96d8"; + }; + + nativeBuildInputs = [ pkgconfig ]; + buildInputs = [ python glib gtk2 GConf libgnome gnome_vfs ]; + propagatedBuildInputs = [ pygobject2 pygtk dbus-python ]; + + # gnome-python expects that .pth file is already installed by PyGTK in the + # same directory. This is not the case for Nix. + postInstall = '' + echo "gtk-2.0" > $out/${python2.sitePackages}/${name}.pth + ''; + + meta = with stdenv.lib; { + homepage = "http://pygtk.org/"; + description = "Python wrapper for GNOME libraries"; + platforms = platforms.linux; + license = licenses.lgpl2; + maintainers = with maintainers; [ qknight ]; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-2/bindings/libglademm/default.nix b/nixpkgs/pkgs/desktops/gnome-2/bindings/libglademm/default.nix new file mode 100644 index 000000000000..177a9f47c31e --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-2/bindings/libglademm/default.nix @@ -0,0 +1,17 @@ +{ stdenv, fetchurl, pkgconfig, intltool, gtkmm2, libglade }: + +stdenv.mkDerivation rec { + name = "libglademm-2.6.7"; + + src = fetchurl { + url = "mirror://gnome/sources/libglademm/2.6/${name}.tar.bz2"; + sha256 = "1hrbg9l5qb7w0xvr7013qamkckyj0fqc426c851l69zpmhakqm1q"; + }; + + outputs = [ "out" "devdoc" ]; + + nativeBuildInputs = [ pkgconfig ]; + buildInputs = [ intltool ]; + + propagatedBuildInputs = [ gtkmm2 libglade ]; +} diff --git a/nixpkgs/pkgs/desktops/gnome-2/default.nix b/nixpkgs/pkgs/desktops/gnome-2/default.nix new file mode 100644 index 000000000000..4212fa68bd4a --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-2/default.nix @@ -0,0 +1,92 @@ +{ config, stdenv, pkgs, lib }: + +lib.makeScope pkgs.newScope (self: with self; { + +#### PLATFORM + + libIDL = callPackage ./platform/libIDL { + gettext = if stdenv.isDarwin then pkgs.gettext else null; + }; + + ORBit2 = callPackage ./platform/ORBit2 { }; + + libart_lgpl = callPackage ./platform/libart_lgpl { }; + + libglade = callPackage ./platform/libglade { }; + + libgnomeprint = callPackage ./platform/libgnomeprint { }; + + libgnomeprintui = callPackage ./platform/libgnomeprintui { }; + + libgnomecups = callPackage ./platform/libgnomecups { }; + + libgtkhtml = callPackage ./platform/libgtkhtml { }; + + GConf = callPackage ./platform/GConf { }; + + libgnomecanvas = callPackage ./platform/libgnomecanvas { }; + + libgnomecanvasmm = callPackage ./platform/libgnomecanvasmm { }; + + # for git-head builds + gnome-common = callPackage platform/gnome-common { }; + + gnome_mime_data = callPackage ./platform/gnome-mime-data { }; + + gnome_python = callPackage ./bindings/gnome-python { }; + + gnome_python_desktop = callPackage ./bindings/gnome-python-desktop { }; + + gnome_vfs = callPackage ./platform/gnome-vfs { }; + + libgnome = callPackage ./platform/libgnome { }; + + libgnomeui = callPackage ./platform/libgnomeui { }; + + libbonobo = callPackage ./platform/libbonobo { }; + + libbonoboui = callPackage ./platform/libbonoboui { }; + + gtkhtml = callPackage ./platform/gtkhtml { enchant = pkgs.enchant1; }; + + gtkhtml4 = callPackage ./platform/gtkhtml/4.x.nix { enchant = pkgs.enchant1; }; + + gtkglext = callPackage ./platform/gtkglext { }; + +#### DESKTOP + + # Removed from recent GNOME releases, but still required + scrollkeeper = callPackage ./desktop/scrollkeeper { }; + + gtksourceview = callPackage ./desktop/gtksourceview { }; + + vte = callPackage ./desktop/vte { }; + +#### BINDINGS + + libglademm = callPackage ./bindings/libglademm { }; + +} // lib.optionalAttrs (config.allowAliases or true) { + inherit (pkgs) + # GTK Libs + glib glibmm atk atkmm cairo pango pangomm gdk_pixbuf gtkmm2 libcanberra-gtk2 + + # Included for backwards compatibility + libsoup libwnck gtk-doc gnome-doc-utils rarian + + gvfs # added 2019-09-03 + ; + + gtk = pkgs.gtk2; + gtkmm = pkgs.gtkmm2; + python_rsvg = self.gnome_python_desktop; + + gtkdoc = pkgs.gtk-doc; + startup_notification = pkgs.libstartup_notification; + startupnotification = pkgs.libstartup_notification; + gnomedocutils = pkgs.gnome-doc-utils; + gnome-icon-theme = pkgs.gnome-icon-theme; + gnome_icon_theme = self.gnome-icon-theme; + gnomeicontheme = self.gnome-icon-theme; + gnome_common = gnome-common; +}) diff --git a/nixpkgs/pkgs/desktops/gnome-2/desktop/gtksourceview/default.nix b/nixpkgs/pkgs/desktops/gnome-2/desktop/gtksourceview/default.nix new file mode 100644 index 000000000000..87d2931d2744 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-2/desktop/gtksourceview/default.nix @@ -0,0 +1,43 @@ +{stdenv, fetchpatch, fetchurl, autoreconfHook, pkgconfig, atk, cairo, glib +, gnome-common, gtk2, pango +, libxml2Python, perl, intltool, gettext, gtk-mac-integration-gtk2 }: + +with stdenv.lib; + +stdenv.mkDerivation rec { + pname = "gtksourceview"; + version = "2.10.5"; + + src = fetchurl { + url = "mirror://gnome/sources/gtksourceview/2.10/${pname}-${version}.tar.bz2"; + sha256 = "c585773743b1df8a04b1be7f7d90eecdf22681490d6810be54c81a7ae152191e"; + }; + + patches = optionals stdenv.isDarwin [ + (fetchpatch { + name = "change-igemacintegration-to-gtkosxapplication.patch"; + url = "https://gitlab.gnome.org/GNOME/gtksourceview/commit/e88357c5f210a8796104505c090fb6a04c213902.patch"; + sha256 = "0h5q79q9dqbg46zcyay71xn1pm4aji925gjd5j93v4wqn41wj5m7"; + }) + (fetchpatch { + name = "update-to-gtk-mac-integration-2.0-api.patch"; + url = "https://gitlab.gnome.org/GNOME/gtksourceview/commit/ab46e552e1d0dae73f72adac8d578e40bdadaf95.patch"; + sha256 = "0qzrbv4hpa0v8qbmpi2vp575n13lkrvp3cgllwrd2pslw1v9q3aj"; + }) + ]; + + nativeBuildInputs = [ pkgconfig ]; + buildInputs = [ + atk cairo glib gtk2 + pango libxml2Python perl intltool + gettext + ] ++ optionals stdenv.isDarwin [ + autoreconfHook gnome-common gtk-mac-integration-gtk2 + ]; + + preConfigure = optionalString stdenv.isDarwin '' + intltoolize --force + ''; + + doCheck = false; # requires X11 daemon +} diff --git a/nixpkgs/pkgs/desktops/gnome-2/desktop/mail-notification/default.nix b/nixpkgs/pkgs/desktops/gnome-2/desktop/mail-notification/default.nix new file mode 100644 index 000000000000..68c1b3b5da43 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-2/desktop/mail-notification/default.nix @@ -0,0 +1,54 @@ +{ stdenv, fetchFromGitHub, pkgconfig, glib, gnome2, dbus-glib, gmime, gnome-icon-theme, libnotify, libgnome-keyring, openssl, cyrus_sasl, gnonlin, sylpheed, gob2, gettext, intltool, libxml2, hicolor-icon-theme, tango-icon-theme }: + +stdenv.mkDerivation rec { + rev = "9ae8768"; + version = "5.4"; + pname = "mail-notification"; + + src = fetchFromGitHub { + inherit rev; + owner = "epienbroek"; + repo = "mail-notification"; + sha256 = "1slb7gajn30vdaq0hf5rikwdly1npmg1cf83hpjs82xd98knl13d"; + }; + + nativeBuildInputs = [ pkgconfig ]; + buildInputs = [ glib dbus-glib gmime libnotify libgnome-keyring openssl cyrus_sasl gnonlin sylpheed gob2 gettext intltool gnome2.GConf gnome2.libgnomeui dbus-glib gmime libnotify gnome2.scrollkeeper libxml2 gnome-icon-theme hicolor-icon-theme tango-icon-theme ]; + + prePatch = '' + sed -i -e '/jb_rule_set_install_message/d' -e '/jb_rule_add_install_command/d' jbsrc/jb.c + + # currently disable the check for missing sheme until a better solution + # is found; needed, because otherwise the application doesn't even start + # and fails saying it unable to find gconf scheme values. + sed -i -e 's/(schema_missing)/(!schema_missing)/g' src/mn-conf.c + ''; + + patches = [ + ./patches/mail-notification-dont-link-against-bsd-compat.patch + ]; + + patchFlags = [ "-p0" ]; + NIX_CFLAGS_COMPILE = "-Wno-error"; + + preConfigure = "./jb configure prefix=$out"; + + postConfigure = '' + substituteInPlace build/config \ + --replace "omf-dir|string|1|${gnome2.scrollkeeper}/share/omf" "omf-dir|string|1|$out/share/omf" \ + --replace "scrollkeeper-dir|string|1|${gnome2.scrollkeeper}/var/lib/scrollkeeper" "omf-dir|string|1|$out/var/lib/scrollkeeper" \ + ''; + + buildPhase = "./jb build"; + installPhase = "./jb install"; + + enableParallelBuilding = true; + + meta = with stdenv.lib; { + description = "Tray status icon, which notifies us when new email arrives"; + homepage = "https://www.nongnu.org/mailnotify/"; + license = with licenses; [ gpl3 ]; + platforms = platforms.unix; + maintainers = [ maintainers.eleanor ]; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-2/desktop/mail-notification/patches/mail-notification-dont-link-against-bsd-compat.patch b/nixpkgs/pkgs/desktops/gnome-2/desktop/mail-notification/patches/mail-notification-dont-link-against-bsd-compat.patch new file mode 100644 index 000000000000..e246a8cc9389 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-2/desktop/mail-notification/patches/mail-notification-dont-link-against-bsd-compat.patch @@ -0,0 +1,10 @@ +--- jbsrc/jb.c.orig 2014-01-19 20:06:48.525462981 +0100 ++++ jbsrc/jb.c 2014-01-19 20:07:36.087934897 +0100 +@@ -425,7 +425,6 @@ + */ + jb_compile_options_add_cflags(object->compile_options, "-std=c99"); + jb_compile_options_add_cppflags(object->compile_options, "-D_BSD_SOURCE -D_POSIX_C_SOURCE=199309L"); +- jb_compile_options_add_libs(object->compile_options, "-lbsd-compat"); + } + + jb_compile_options_add_string_defines(object->compile_options, diff --git a/nixpkgs/pkgs/desktops/gnome-2/desktop/scrollkeeper/default.nix b/nixpkgs/pkgs/desktops/gnome-2/desktop/scrollkeeper/default.nix new file mode 100644 index 000000000000..e5892c0659f6 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-2/desktop/scrollkeeper/default.nix @@ -0,0 +1,20 @@ +{stdenv, fetchurl, pkgconfig, perlPackages, libxml2, libxslt, docbook_xml_dtd_42, automake, gettext}: + +stdenv.mkDerivation { + name = "scrollkeeper-0.3.14"; + src = fetchurl { + url = "mirror://gnome/sources/scrollkeeper/0.3/scrollkeeper-0.3.14.tar.bz2"; + sha256 = "08n1xgj1f53zahwm0wpn3jid3rfbhi3iwby0ilaaldnid5qriqgc"; + }; + + # The fuloong2f is not supported by scrollkeeper-0.3.14 config.guess + preConfigure = " + substituteInPlace extract/dtds/Makefile.am --replace /usr/bin/xmlcatalog xmlcatalog + cp ${automake}/share/automake*/config.{sub,guess} . + "; + + nativeBuildInputs = [ pkgconfig ]; + buildInputs = [ libxml2 libxslt gettext ] + ++ (with perlPackages; [ perl XMLParser ]); + configureFlags = [ "--with-xml-catalog=${docbook_xml_dtd_42}/xml/dtd/docbook/catalog.xml" ]; +} diff --git a/nixpkgs/pkgs/desktops/gnome-2/desktop/vte/alt.patch b/nixpkgs/pkgs/desktops/gnome-2/desktop/vte/alt.patch new file mode 100644 index 000000000000..65c3ddf1fcf8 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-2/desktop/vte/alt.patch @@ -0,0 +1,50 @@ +From a9d6a34708f846952f423d078397352858f7b1a4 Mon Sep 17 00:00:00 2001 +From: Christian Persch <chpe@gnome.org> +Date: Sat, 12 May 2012 18:48:05 +0200 +Subject: [PATCH] keymap: Treat ALT as META + +https://bugzilla.gnome.org/show_bug.cgi?id=663779 +--- + src/vte.c | 23 ++++++++++++++--------- + 1 files changed, 14 insertions(+), 9 deletions(-) + +diff --git a/src/vte.c b/src/vte.c +index dd27e9a..0657921 100644 +--- a/src/vte.c ++++ b/src/vte.c +@@ -5170,19 +5170,24 @@ static void + vte_terminal_read_modifiers (VteTerminal *terminal, + GdkEvent *event) + { ++ GdkKeymap *keymap; + GdkModifierType modifiers; + + /* Read the modifiers. */ +- if (gdk_event_get_state((GdkEvent*)event, &modifiers)) { +- GdkKeymap *keymap; +-#if GTK_CHECK_VERSION (2, 90, 8) +- keymap = gdk_keymap_get_for_display(gdk_window_get_display(((GdkEventAny*)event)->window)); +-#else +- keymap = gdk_keymap_get_for_display(gdk_drawable_get_display(((GdkEventAny*)event)->window)); ++ if (!gdk_event_get_state((GdkEvent*)event, &modifiers)) ++ return; ++ ++ keymap = gdk_keymap_get_for_display(gdk_window_get_display(((GdkEventAny*)event)->window)); ++ ++ gdk_keymap_add_virtual_modifiers (keymap, &modifiers); ++ ++#if 1 ++ /* HACK! Treat ALT as META; see bug #663779. */ ++ if (modifiers & GDK_MOD1_MASK) ++ modifiers |= VTE_META_MASK; + #endif +- gdk_keymap_add_virtual_modifiers (keymap, &modifiers); +- terminal->pvt->modifiers = modifiers; +- } ++ ++ terminal->pvt->modifiers = modifiers; + } + + /* Read and handle a keypress event. */ +-- +1.7.5.1.217.g4e3aa.dirty \ No newline at end of file diff --git a/nixpkgs/pkgs/desktops/gnome-2/desktop/vte/change-scroll-region.patch b/nixpkgs/pkgs/desktops/gnome-2/desktop/vte/change-scroll-region.patch new file mode 100644 index 000000000000..9e3e83b1262a --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-2/desktop/vte/change-scroll-region.patch @@ -0,0 +1,67 @@ +Index: vte-0.26.0/src/vte.c +=================================================================== +--- vte-0.26.0.orig/src/vte.c 2010-11-30 23:04:53.000000000 -0800 ++++ vte-0.26.0/src/vte.c 2010-12-07 20:05:07.865548000 -0800 +@@ -3862,6 +3862,7 @@ vte_terminal_process_incoming(VteTermina + long wcount, start, delta; + gboolean leftovers, modified, bottom, again; + gboolean invalidated_text; ++ gboolean in_scroll_region; + GArray *unichars; + struct _vte_incoming_chunk *chunk, *next_chunk, *achunk = NULL; + +@@ -3881,6 +3882,10 @@ vte_terminal_process_incoming(VteTermina + cursor = screen->cursor_current; + cursor_visible = terminal->pvt->cursor_visible; + ++ in_scroll_region = screen->scrolling_restricted ++ && (screen->cursor_current.row >= (screen->insert_delta + screen->scrolling_region.start)) ++ && (screen->cursor_current.row <= (screen->insert_delta + screen->scrolling_region.end)); ++ + /* We should only be called when there's data to process. */ + g_assert(terminal->pvt->incoming || + (terminal->pvt->pending->len > 0)); +@@ -3979,6 +3984,8 @@ skip_chunk: + * points to the first character which isn't part of this + * sequence. */ + if ((match != NULL) && (match[0] != '\0')) { ++ gboolean new_in_scroll_region; ++ + /* Call the right sequence handler for the requested + * behavior. */ + _vte_terminal_handle_sequence(terminal, +@@ -3989,12 +3996,20 @@ skip_chunk: + start = (next - wbuf); + modified = TRUE; + +- /* if we have moved during the sequence handler, restart the bbox */ ++ new_in_scroll_region = screen->scrolling_restricted ++ && (screen->cursor_current.row >= (screen->insert_delta + screen->scrolling_region.start)) ++ && (screen->cursor_current.row <= (screen->insert_delta + screen->scrolling_region.end)); ++ ++ delta = screen->scroll_delta; /* delta may have changed from sequence. */ ++ ++ /* if we have moved greatly during the sequence handler, or moved into a scroll_region ++ * from outside it, restart the bbox */ + if (invalidated_text && +- (screen->cursor_current.col > bbox_bottomright.x + VTE_CELL_BBOX_SLACK || +- screen->cursor_current.col < bbox_topleft.x - VTE_CELL_BBOX_SLACK || +- screen->cursor_current.row > bbox_bottomright.y + VTE_CELL_BBOX_SLACK || +- screen->cursor_current.row < bbox_topleft.y - VTE_CELL_BBOX_SLACK)) { ++ ((new_in_scroll_region && !in_scroll_region) || ++ (screen->cursor_current.col > bbox_bottomright.x + VTE_CELL_BBOX_SLACK || ++ screen->cursor_current.col < bbox_topleft.x - VTE_CELL_BBOX_SLACK || ++ screen->cursor_current.row > bbox_bottomright.y + VTE_CELL_BBOX_SLACK || ++ screen->cursor_current.row < bbox_topleft.y - VTE_CELL_BBOX_SLACK))) { + /* Clip off any part of the box which isn't already on-screen. */ + bbox_topleft.x = MAX(bbox_topleft.x, 0); + bbox_topleft.y = MAX(bbox_topleft.y, delta); +@@ -4014,6 +4029,8 @@ skip_chunk: + bbox_bottomright.x = bbox_bottomright.y = -G_MAXINT; + bbox_topleft.x = bbox_topleft.y = G_MAXINT; + } ++ ++ in_scroll_region = new_in_scroll_region; + } else + /* Second, we have a NULL match, and next points to the very + * next character in the buffer. Insert the character which diff --git a/nixpkgs/pkgs/desktops/gnome-2/desktop/vte/default.nix b/nixpkgs/pkgs/desktops/gnome-2/desktop/vte/default.nix new file mode 100644 index 000000000000..81330218d49d --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-2/desktop/vte/default.nix @@ -0,0 +1,61 @@ +{ stdenv, fetchurl, fetchpatch, intltool, pkgconfig, glib, gtk2, ncurses +, pythonSupport ? false, python27Packages}: + +let + inherit (python27Packages) python pygtk; +in stdenv.mkDerivation rec { + name = "vte-0.28.2"; + + src = fetchurl { + url = "mirror://gnome/sources/vte/0.28/${name}.tar.bz2"; + sha256 = "00zrip28issgmz2cqk5k824cbqpbixi5x7k88zxksdqpnq1f414d"; + }; + + patches = [ + ./alt.patch + ./change-scroll-region.patch + # CVE-2012-2738 + # fixed in upstream version 0.32.2 + (fetchpatch{ + name = "CVE-2012-2738-1.patch"; + url = "https://gitlab.gnome.org/GNOME/vte/commit/feeee4b5832b17641e505b7083e0d299fdae318e.patch"; + sha256 = "1455i6zxcx4rj2cz639s8qdc04z2nshprwl7k00mcsw49gv3hk5n"; + }) + (fetchpatch{ + name = "CVE-2012-2738-2.patch"; + url = "https://gitlab.gnome.org/GNOME/vte/commit/98ce2f265f986fb88c38d508286bb5e3716b9e74.patch"; + sha256 = "0n24vw49h89w085ggq23iwlnnb6ajllfh2dg4vsar21d82jxc0sn"; + }) + ]; + + nativeBuildInputs = [ pkgconfig ]; + buildInputs = [ intltool glib gtk2 ncurses ] ++ + stdenv.lib.optionals pythonSupport [python pygtk]; + + configureFlags = [ + (stdenv.lib.enableFeature pythonSupport "python") + ]; + + postInstall = stdenv.lib.optionalString pythonSupport '' + cd $(toPythonPath $out)/gtk-2.0 + for n in *; do + ln -s "gtk-2.0/$n" "../$n" + done + ''; + + meta = { + homepage = "https://www.gnome.org/"; + description = "A library implementing a terminal emulator widget for GTK"; + longDescription = '' + VTE is a library (libvte) implementing a terminal emulator widget for + GTK, and a minimal sample application (vte) using that. Vte is + mainly used in gnome-terminal, but can also be used to embed a + console/terminal in games, editors, IDEs, etc. VTE supports Unicode and + character set conversion, as well as emulating any terminal known to + the system's terminfo database. + ''; + license = stdenv.lib.licenses.lgpl2; + maintainers = with stdenv.lib.maintainers; [ astsmtl ]; + platforms = with stdenv.lib.platforms; linux; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-2/platform/GConf/default.nix b/nixpkgs/pkgs/desktops/gnome-2/platform/GConf/default.nix new file mode 100644 index 000000000000..9d3e3a9be209 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-2/platform/GConf/default.nix @@ -0,0 +1,36 @@ +{ stdenv, fetchurl, pkgconfig, dbus-glib, glib, ORBit2, libxml2, polkit, python3, intltool }: + +stdenv.mkDerivation rec { + pname = "gconf"; + version = "3.2.6"; + + src = fetchurl { + url = "mirror://gnome/sources/GConf/${stdenv.lib.versions.majorMinor version}/GConf-${version}.tar.xz"; + sha256 = "0k3q9nh53yhc9qxf1zaicz4sk8p3kzq4ndjdsgpaa2db0ccbj4hr"; + }; + + outputs = [ "out" "dev" "man" ]; + + buildInputs = [ ORBit2 libxml2 python3 ] + # polkit requires pam, which requires shadow.h, which is not available on + # darwin + ++ stdenv.lib.optional (!stdenv.isDarwin) polkit; + + propagatedBuildInputs = [ glib dbus-glib ]; + + nativeBuildInputs = [ pkgconfig intltool ]; + + configureFlags = + # fixes the "libgconfbackend-oldxml.so is not portable" error on darwin + stdenv.lib.optional stdenv.isDarwin [ "--enable-static" ]; + + postPatch = '' + 2to3 --write --nobackup gsettings/gsettings-schema-convert + ''; + + meta = with stdenv.lib; { + homepage = "https://projects.gnome.org/gconf/"; + description = "Deprecated system for storing application preferences"; + platforms = platforms.unix; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-2/platform/ORBit2/default.nix b/nixpkgs/pkgs/desktops/gnome-2/platform/ORBit2/default.nix new file mode 100644 index 000000000000..f30c48b08e96 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-2/platform/ORBit2/default.nix @@ -0,0 +1,43 @@ +{ stdenv, fetchurl, pkgconfig, glib, libIDL, libintl }: + +stdenv.mkDerivation rec { + name = "ORBit2-${minVer}.19"; + minVer = "2.14"; + + src = fetchurl { + url = "mirror://gnome/sources/ORBit2/${minVer}/${name}.tar.bz2"; + sha256 = "0l3mhpyym9m5iz09fz0rgiqxl2ym6kpkwpsp1xrr4aa80nlh1jam"; + }; + + nativeBuildInputs = [ pkgconfig libintl ]; + propagatedBuildInputs = [ glib libIDL ]; + + outputs = [ "out" "dev" ]; + + preBuild = '' + sed 's/-DG_DISABLE_DEPRECATED//' -i linc2/src/Makefile + ''; + + preFixup = '' + moveToOutput "bin/orbit2-config" "$dev" + ''; + + meta = with stdenv.lib; { + homepage = "https://projects.gnome.org/ORBit2/"; + description = "A CORBA 2.4-compliant Object Request Broker"; + platforms = platforms.unix; + maintainers = with maintainers; [ lovek323 ]; + + longDescription = '' + ORBit2 is a CORBA 2.4-compliant Object Request Broker (ORB) featuring + mature C, C++ and Python bindings. Bindings (in various degrees of + completeness) are also available for Perl, Lisp, Pascal, Ruby, and TCL; + others are in-progress. It supports POA, DII, DSI, TypeCode, Any, IR and + IIOP. Optional features including INS and threading are available. ORBit2 + is engineered for the desktop workstation environment, with a focus on + performance, low resource usage, and security. The core ORB is written in + C, and runs under Linux, UNIX (BSD, Solaris, HP-UX, ...), and Windows. + ORBit2 is developed and released as open source software under GPL/LGPL. + ''; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-2/platform/gnome-common/default.nix b/nixpkgs/pkgs/desktops/gnome-2/platform/gnome-common/default.nix new file mode 100644 index 000000000000..54a2bd526a94 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-2/platform/gnome-common/default.nix @@ -0,0 +1,19 @@ +{ stdenv, fetchurl, which }: + +stdenv.mkDerivation rec { + name = "gnome-common-${minVer}.0"; + minVer = "2.34"; + + src = fetchurl { + url = "mirror://gnome/sources/gnome-common/${minVer}/${name}.tar.bz2"; + sha256 = "1pz13mpp09q5s3bikm8ml92s1g0scihsm4iipqv1ql3mp6d4z73s"; + }; + + propagatedBuildInputs = [ which ]; # autogen.sh which is using gnome-common tends to require which + + patches = [(fetchurl { + name = "gnome-common-patch"; + url = "https://bug697543.bugzilla-attachments.gnome.org/attachment.cgi?id=240935"; + sha256 = "17abp7czfzirjm7qsn2czd03hdv9kbyhk3lkjxg2xsf5fky7z7jl"; + })]; +} diff --git a/nixpkgs/pkgs/desktops/gnome-2/platform/gnome-mime-data/default.nix b/nixpkgs/pkgs/desktops/gnome-2/platform/gnome-mime-data/default.nix new file mode 100644 index 000000000000..e50ddeb94112 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-2/platform/gnome-mime-data/default.nix @@ -0,0 +1,10 @@ +{stdenv, fetchurl, intltool}: + +stdenv.mkDerivation { + name = "gnome-mime-data-2.18.0"; + src = fetchurl { + url = "mirror://gnome/sources/gnome-mime-data/2.18/gnome-mime-data-2.18.0.tar.bz2"; + sha256 = "1mvg8glb2a40yilmyabmb7fkbzlqd3i3d31kbkabqnq86xdnn69p"; + }; + buildInputs = [ intltool ]; +} diff --git a/nixpkgs/pkgs/desktops/gnome-2/platform/gnome-vfs/default.nix b/nixpkgs/pkgs/desktops/gnome-2/platform/gnome-vfs/default.nix new file mode 100644 index 000000000000..7196840978f4 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-2/platform/gnome-vfs/default.nix @@ -0,0 +1,38 @@ +{ stdenv, fetchurl, fetchpatch, pkgconfig, libxml2, bzip2, openssl, dbus-glib +, glib, gamin, cdparanoia, intltool, GConf, gnome_mime_data, avahi, acl }: + +stdenv.mkDerivation rec { + name = "gnome-vfs-${minVer}.4"; + minVer = "2.24"; + + src = fetchurl { + url = "mirror://gnome/sources/gnome-vfs/${minVer}/${name}.tar.bz2"; + sha256 = "1ajg8jb8k3snxc7rrgczlh8daxkjidmcv3zr9w809sq4p2sn9pk2"; + }; + + outputs = [ "out" "dev" ]; + + nativeBuildInputs = [ intltool pkgconfig ]; + buildInputs = + [ libxml2 bzip2 openssl dbus-glib gamin cdparanoia + gnome_mime_data avahi acl + ]; + + propagatedBuildInputs = [ GConf glib ]; + + # struct SSL is opaque in openssl-1.1; and the SSL_free() man page + # says that one should not free members of it manually (in both + # the openssl-1.0 and openssl-1.1 man pages). + # https://bugs.gentoo.org/592540 + patches = [ (fetchpatch { + name = "gnome-vfs-2.24.4-openssl-1.1.patch"; + url = "https://bugs.gentoo.org/attachment.cgi?id=535944"; + sha256 = "1q4icapvmwmd5rjah7rr0bqazzk5cg36znmjlpra20n9y27nz040"; + extraPrefix = ""; + }) + ]; + + postPatch = "find . -name Makefile.in | xargs sed 's/-DG_DISABLE_DEPRECATED//g' -i "; + + doCheck = false; # needs dbus daemon +} diff --git a/nixpkgs/pkgs/desktops/gnome-2/platform/gtkglext/default.nix b/nixpkgs/pkgs/desktops/gnome-2/platform/gtkglext/default.nix new file mode 100644 index 000000000000..193ae1f3c226 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-2/platform/gtkglext/default.nix @@ -0,0 +1,69 @@ +{ stdenv +, fetchFromGitLab +, pkgconfig +, gtk-doc +, autoconf +, automake +, which +, libtool +, gobject-introspection +, glib +, gtk2 +, libGLU +, libGL +, pango +, xorg +}: + +stdenv.mkDerivation rec { + pname = "gtkglext"; + version = "unstable-2019-12-19"; + + src = fetchFromGitLab { + domain = "gitlab.gnome.org"; + owner = "Archive"; + repo = pname; + # build fixes + # https://gitlab.gnome.org/Archive/gtkglext/merge_requests/1 + rev = "ad95fbab68398f81d7a5c895276903b0695887e2"; + sha256 = "1d1bp4635nla7d07ci40c7w4drkagdqk8wg93hywvdipmjfb4yqb"; + }; + + nativeBuildInputs = [ + pkgconfig + gtk-doc + autoconf + automake + which + libtool + gobject-introspection + ]; + + buildInputs = [ + glib + gtk2 + libGLU + libGL + pango + xorg.libX11 + xorg.libXmu + ]; + + preConfigure = '' + NOCONFIGURE=1 ./autogen.sh + ''; + + meta = with stdenv.lib; { + homepage = "https://projects.gnome.org/gtkglext/"; + description = "GtkGLExt, an OpenGL extension to GTK"; + longDescription = '' + GtkGLExt is an OpenGL extension to GTK. It provides additional GDK + objects which support OpenGL rendering in GTK and GtkWidget API + add-ons to make GTK widgets OpenGL-capable. In contrast to Janne + Löf's GtkGLArea, GtkGLExt provides a GtkWidget API that enables + OpenGL drawing for standard and custom GTK widgets. + ''; + license = licenses.lgpl2Plus; + platforms = platforms.linux; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-2/platform/gtkhtml/01_remove-disable-deprecated.patch b/nixpkgs/pkgs/desktops/gnome-2/platform/gtkhtml/01_remove-disable-deprecated.patch new file mode 100644 index 000000000000..1d9a179d236b --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-2/platform/gtkhtml/01_remove-disable-deprecated.patch @@ -0,0 +1,17 @@ +diff -Naur gtkhtml-3.32.2-orig/configure gtkhtml-3.32.2/configure +--- gtkhtml-3.32.2-orig/configure 2011-02-05 23:12:31.000000000 -0500 ++++ gtkhtml-3.32.2/configure 2011-04-22 13:03:18.228874636 -0400 +@@ -5761,12 +5761,7 @@ + + if test "x${enable_deprecated_flags}" = "xyes"; then + +- list="-DG_DISABLE_DEPRECATED +- -DPANGO_DISABLE_DEPRECATED +- -DGDK_DISABLE_DEPRECATED +- -DGDK_PIXBUF_DISABLE_DEPRECATED +- -DGTK_DISABLE_DEPRECATED +- -DGNOME_DISABLE_DEPRECATED" ++ list="" + flags_supported="" + flags_unsupported="" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for supported compiler flags" >&5 diff --git a/nixpkgs/pkgs/desktops/gnome-2/platform/gtkhtml/4.x.nix b/nixpkgs/pkgs/desktops/gnome-2/platform/gtkhtml/4.x.nix new file mode 100644 index 000000000000..f4d6cb534bc9 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-2/platform/gtkhtml/4.x.nix @@ -0,0 +1,16 @@ +{ stdenv, fetchurl, pkgconfig, gtk3, intltool +, GConf, enchant, isocodes, gnome-icon-theme, gsettings-desktop-schemas }: + +stdenv.mkDerivation rec { + version = "4.10.0"; + pname = "gtkhtml"; + + src = fetchurl { + url = "mirror://gnome/sources/gtkhtml/4.10/${pname}-${version}.tar.xz"; + sha256 = "1hq6asgb5n9q3ryx2vngr4jyi8lg65lzpnlgrgcwayiczcj68fya"; + }; + + propagatedBuildInputs = [ gsettings-desktop-schemas gtk3 gnome-icon-theme GConf ]; + nativeBuildInputs = [ pkgconfig ]; + buildInputs = [ intltool enchant isocodes ]; +} diff --git a/nixpkgs/pkgs/desktops/gnome-2/platform/gtkhtml/default.nix b/nixpkgs/pkgs/desktops/gnome-2/platform/gtkhtml/default.nix new file mode 100644 index 000000000000..57a000351cf3 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-2/platform/gtkhtml/default.nix @@ -0,0 +1,20 @@ +{ stdenv, fetchurl, pkgconfig, gtk2, intltool, +GConf, enchant, isocodes, gnome-icon-theme }: + +stdenv.mkDerivation rec { + name = "gtkhtml-3.32.2"; + + src = fetchurl { + url = "mirror://gnome/sources/gtkhtml/3.32/${name}.tar.bz2"; + sha256 = "17z3jwvpn8waz7bhwrk7a6vs9pad6sqmlxxcqwvxxq89ywy0ail7"; + }; + + #From Debian, fixes build issue described here: + #http://www.mail-archive.com/debian-bugs-rc@lists.debian.org/msg250091.html + patches = [ ./01_remove-disable-deprecated.patch ]; + + nativeBuildInputs = [ pkgconfig ]; + buildInputs = [ gtk2 intltool GConf enchant isocodes gnome-icon-theme ]; + + NIX_LDFLAGS = "-lgthread-2.0"; +} diff --git a/nixpkgs/pkgs/desktops/gnome-2/platform/libIDL/default.nix b/nixpkgs/pkgs/desktops/gnome-2/platform/libIDL/default.nix new file mode 100644 index 000000000000..1fc780026064 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-2/platform/libIDL/default.nix @@ -0,0 +1,15 @@ +{stdenv, fetchurl, flex, bison, pkgconfig, glib, gettext}: + +stdenv.mkDerivation rec { + name = "libIDL-${minVer}.14"; + minVer = "0.8"; + + src = fetchurl { + url = "mirror://gnome/sources/libIDL/${minVer}/${name}.tar.bz2"; + sha256 = "08129my8s9fbrk0vqvnmx6ph4nid744g5vbwphzkaik51664vln5"; + }; + + buildInputs = [ glib gettext ]; + + nativeBuildInputs = [ flex bison pkgconfig ]; +} diff --git a/nixpkgs/pkgs/desktops/gnome-2/platform/libart_lgpl/default.nix b/nixpkgs/pkgs/desktops/gnome-2/platform/libart_lgpl/default.nix new file mode 100644 index 000000000000..7b1ccb97dc4b --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-2/platform/libart_lgpl/default.nix @@ -0,0 +1,9 @@ +{stdenv, fetchurl}: + +stdenv.mkDerivation rec { + name = "libart_lgpl-2.3.21"; + src = fetchurl { + url = "mirror://gnome/sources/libart_lgpl/2.3/${name}.tar.bz2"; + sha256 = "1yknfkyzgz9s616is0l9gp5aray0f2ry4dw533jgzj8gq5s1xhgx"; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-2/platform/libbonobo/default.nix b/nixpkgs/pkgs/desktops/gnome-2/platform/libbonobo/default.nix new file mode 100644 index 000000000000..bf0cec8dfbe6 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-2/platform/libbonobo/default.nix @@ -0,0 +1,21 @@ +{ stdenv, fetchurl, flex, bison, pkgconfig, glib, libxml2, popt +, intltool, ORBit2, procps }: + +stdenv.mkDerivation rec { + name = "libbonobo-${minVer}.1"; + minVer = "2.32"; + + src = fetchurl { + url = "mirror://gnome/sources/libbonobo/${minVer}/${name}.tar.bz2"; + sha256 = "0swp4kk6x7hy1rvd1f9jba31lvfc6qvafkvbpg9h0r34fzrd8q4i"; + }; + + outputs = [ "out" "dev" ]; + + preConfigure = # still using stuff deprecated in new glib versions + "sed 's/-DG_DISABLE_DEPRECATED//g' -i configure activation-server/Makefile.in"; + + nativeBuildInputs = [ flex bison pkgconfig intltool procps ]; + buildInputs = [ libxml2 ]; + propagatedBuildInputs = [ popt glib ORBit2 ]; +} diff --git a/nixpkgs/pkgs/desktops/gnome-2/platform/libbonoboui/default.nix b/nixpkgs/pkgs/desktops/gnome-2/platform/libbonoboui/default.nix new file mode 100644 index 000000000000..0be9d7acb9ce --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-2/platform/libbonoboui/default.nix @@ -0,0 +1,18 @@ +{ stdenv, fetchurl, bison, pkgconfig, popt, libxml2, gtk2, libtool +, intltool, libbonobo, GConf, libgnomecanvas, libgnome, libglade }: + +stdenv.mkDerivation rec { + name = "libbonoboui-${minVer}.5"; + minVer = "2.24"; + + src = fetchurl { + url = "mirror://gnome/sources/libbonoboui/${minVer}/${name}.tar.bz2"; + sha256 = "1kbgqh7bw0fdx4f1a1aqwpff7gp5mwhbaz60c6c98bc4djng5dgs"; + }; + + outputs = [ "out" "dev" ]; + + nativeBuildInputs = [ pkgconfig intltool ]; + buildInputs = [ bison popt gtk2 libxml2 GConf libglade libtool ]; + propagatedBuildInputs = [ libbonobo libgnomecanvas libgnome ]; +} diff --git a/nixpkgs/pkgs/desktops/gnome-2/platform/libglade/default.nix b/nixpkgs/pkgs/desktops/gnome-2/platform/libglade/default.nix new file mode 100644 index 000000000000..aa7e3b938c8b --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-2/platform/libglade/default.nix @@ -0,0 +1,22 @@ +{ stdenv, fetchurl, pkgconfig, gtk2, libxml2, python2 ? null, withLibgladeConvert ? false, gettext }: + +assert withLibgladeConvert -> python2 != null; + +stdenv.mkDerivation { + name = "libglade-2.6.4"; + + src = fetchurl { + url = "mirror://gnome/sources/libglade/2.6/libglade-2.6.4.tar.bz2"; + sha256 = "1v2x2s04jry4gpabws92i0wq2ghd47yr5n9nhgnkd7c38xv1wdk4"; + }; + + outputs = [ "out" "dev" ]; + + nativeBuildInputs = [ pkgconfig ]; + buildInputs = [ gtk2 gettext ] + ++ stdenv.lib.optional withLibgladeConvert python2; + + NIX_LDFLAGS = "-lgmodule-2.0"; + + propagatedBuildInputs = [ libxml2 ]; +} diff --git a/nixpkgs/pkgs/desktops/gnome-2/platform/libgnome/default.nix b/nixpkgs/pkgs/desktops/gnome-2/platform/libgnome/default.nix new file mode 100644 index 000000000000..42f47bc5a83f --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-2/platform/libgnome/default.nix @@ -0,0 +1,23 @@ +{ stdenv, fetchurl, pkgconfig, glib, popt, zlib, libcanberra-gtk2 +, intltool, libbonobo, GConf, gnome_vfs, libtool, libogg +}: + +stdenv.mkDerivation rec { + name = "libgnome-${minVer}.1"; + minVer = "2.32"; + + src = fetchurl { + url = "mirror://gnome/sources/libgnome/${minVer}/${name}.tar.bz2"; + sha256 = "197pnq8y0knqjhm2fg4j6hbqqm3qfzfnd0irhwxpk1b4hqb3kimj"; + }; + + patches = [ ./new-glib.patch ]; + /* There's a comment containing an invalid utf-8 sequence, breaking glib-mkenums. */ + postPatch = "sed '/returns the true filename/d' -i libgnome/gnome-config.h"; + + outputs = [ "out" "dev" ]; + + nativeBuildInputs = [ pkgconfig ]; + buildInputs = [ popt zlib intltool GConf gnome_vfs libcanberra-gtk2 libtool ]; + propagatedBuildInputs = [ glib libbonobo libogg ]; +} diff --git a/nixpkgs/pkgs/desktops/gnome-2/platform/libgnome/new-glib.patch b/nixpkgs/pkgs/desktops/gnome-2/platform/libgnome/new-glib.patch new file mode 100644 index 000000000000..ceabfbdd158e --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-2/platform/libgnome/new-glib.patch @@ -0,0 +1,65 @@ +Porting libgnome to newer glib: + * remove g_thread_init and g_thread_supported, which are longer needed + https://developer.gnome.org/glib/2.36/glib-Deprecated-Thread-APIs.html#g-thread-init + * replace GStaticRecMutex by GRecMutex + https://developer.gnome.org/glib/2.36/glib-Deprecated-Thread-APIs.html#GStaticRecMutex + +diff --git a/libgnome/gnome-i18n.c b/libgnome/gnome-i18n.c +index 531c56c..f13d61e 100644 +--- a/libgnome/gnome-i18n.c ++++ b/libgnome/gnome-i18n.c +@@ -55,12 +55,14 @@ + const GList * + gnome_i18n_get_language_list (const gchar *ignored) + { +- static GStaticRecMutex lang_list_lock = G_STATIC_REC_MUTEX_INIT; ++ static GRecMutex lang_list_lock; ++ g_rec_mutex_init (&lang_list_lock); ++ + static GList *list = NULL; + const char * const* langs; + int i; + +- g_static_rec_mutex_lock (&lang_list_lock); ++ g_rec_mutex_lock (&lang_list_lock); + + if (list == NULL) { + langs = g_get_language_names (); +@@ -71,7 +73,7 @@ gnome_i18n_get_language_list (const gchar *ignored) + list = g_list_reverse (list); + } + +- g_static_rec_mutex_unlock (&lang_list_lock); ++ g_rec_mutex_unlock (&lang_list_lock); + + return list; + } +diff --git a/libgnome/gnome-init.c b/libgnome/gnome-init.c +index fe3efd4..c6619af 100644 +--- a/libgnome/gnome-init.c ++++ b/libgnome/gnome-init.c +@@ -115,9 +115,6 @@ gnome_bonobo_module_info_get (void) + static void + bonobo_activation_pre_args_parse (GnomeProgram *program, GnomeModuleInfo *mod_info) + { +- if (!g_thread_supported ()) +- g_thread_init (NULL); +- + if (!bonobo_activation_is_initialized ()) + bonobo_activation_preinit (program, mod_info); + } +diff --git a/libgnome/gnome-program.c b/libgnome/gnome-program.c +index 739765e..cd14999 100644 +--- a/libgnome/gnome-program.c ++++ b/libgnome/gnome-program.c +@@ -1878,10 +1878,6 @@ gnome_program_init (const char *app_id, const char *app_version, + GnomeProgram *program; + va_list args; + +- /* g_thread_init() has to be the first GLib function called ever */ +- if (!g_threads_got_initialized) +- g_thread_init (NULL); +- + g_type_init (); + + va_start(args, first_property_name); diff --git a/nixpkgs/pkgs/desktops/gnome-2/platform/libgnomecanvas/default.nix b/nixpkgs/pkgs/desktops/gnome-2/platform/libgnomecanvas/default.nix new file mode 100644 index 000000000000..72928d820379 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-2/platform/libgnomecanvas/default.nix @@ -0,0 +1,17 @@ +{ stdenv, fetchurl, pkgconfig, gtk2, intltool, libart_lgpl, libglade }: + +stdenv.mkDerivation rec { + name = "libgnomecanvas-${minVer}.3"; + minVer = "2.30"; + + src = fetchurl { + url = "mirror://gnome/sources/libgnomecanvas/${minVer}/${name}.tar.bz2"; + sha256 = "0h6xvswbqspdifnyh5pm2pqq55yp3kn6yrswq7ay9z49hkh7i6w5"; + }; + + outputs = [ "out" "dev" ]; + + buildInputs = [ libglade ]; + nativeBuildInputs = [ pkgconfig intltool ]; + propagatedBuildInputs = [ libart_lgpl gtk2 ]; +} diff --git a/nixpkgs/pkgs/desktops/gnome-2/platform/libgnomecanvasmm/default.nix b/nixpkgs/pkgs/desktops/gnome-2/platform/libgnomecanvasmm/default.nix new file mode 100644 index 000000000000..b3ac327f8c31 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-2/platform/libgnomecanvasmm/default.nix @@ -0,0 +1,13 @@ +{ stdenv, fetchurl, pkgconfig, libgnomecanvas, gtkmm2 }: + +stdenv.mkDerivation { + name = "libgnomecanvasmm-2.26.0"; + + src = fetchurl { + url = "mirror://gnome/sources/libgnomecanvasmm/2.26/libgnomecanvasmm-2.26.0.tar.bz2"; + sha256 = "996577f97f459a574919e15ba7fee6af8cda38a87a98289e9a4f54752d83e918"; + }; + + nativeBuildInputs = [ pkgconfig ]; + buildInputs = [ libgnomecanvas gtkmm2 ]; +} diff --git a/nixpkgs/pkgs/desktops/gnome-2/platform/libgnomecups/cups_1.6.patch b/nixpkgs/pkgs/desktops/gnome-2/platform/libgnomecups/cups_1.6.patch new file mode 100644 index 000000000000..68f379c25109 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-2/platform/libgnomecups/cups_1.6.patch @@ -0,0 +1,285 @@ +From ae783efde4fa69578651994505462f02b8639220 Mon Sep 17 00:00:00 2001 +From: Alexandre Rostovtsev <tetromino@gentoo.org> +Date: Tue, 7 Aug 2012 06:53:09 -0400 +Subject: [PATCH] Use CUPS-1.6 IPP API getter/setter functions + +CUPS 1.6 makes various structures private and introduces these ippGet +and ippSet functions for all of the fields in these structures. +http://www.cups.org/str.php?L3928 + +We define our own accessors when building against CUPS < 1.6. + +Based on work by Jiri Popelka <jpopelka@redhat.com> at +https://bugzilla.gnome.org/show_bug.cgi?id=679759 +--- + libgnomecups/gnome-cups-printer.c | 48 +++++++++++++++++++++++++++++------- + libgnomecups/gnome-cups-queue.c | 43 +++++++++++++++++++++++++++------ + libgnomecups/gnome-cups-request.c | 44 ++++++++++++++++++++++++++++----- + 3 files changed, 110 insertions(+), 25 deletions(-) + +diff --git a/libgnomecups/gnome-cups-printer.c b/libgnomecups/gnome-cups-printer.c +index c924af0..f5e1ef7 100644 +--- a/libgnomecups/gnome-cups-printer.c ++++ b/libgnomecups/gnome-cups-printer.c +@@ -37,6 +37,34 @@ + + #define UPDATE_TIMEOUT 5000 + ++#if (CUPS_VERSION_MAJOR > 1) || (CUPS_VERSION_MINOR > 5) ++#define HAVE_CUPS_1_6 1 ++#endif ++ ++#ifndef HAVE_CUPS_1_6 ++#define ippGetCount(attr) attr->num_values ++#define ippGetName(attr) attr->name ++#define ippGetInteger(attr, element) attr->values[element].integer ++#define ippGetString(attr, element, language) attr->values[element].string.text ++ ++static ipp_attribute_t * ++ippFirstAttribute(ipp_t *ipp) ++{ ++ if (!ipp) ++ return (NULL); ++ return (ipp->current = ipp->attrs); ++} ++ ++static ipp_attribute_t * ++ippNextAttribute(ipp_t *ipp) ++{ ++ if (!ipp || !ipp->current) ++ return (NULL); ++ return (ipp->current = ipp->current->next); ++} ++#endif ++ ++ + struct _GnomeCupsPPDFile { + char name[1]; + }; +@@ -173,9 +201,9 @@ map_reasons (GnomeCupsPrinter *printer, + printer->details->state_reasons = NULL; + + /* cf. RFC2911 4.4.12 */ +- for (i = 0; i < attr->num_values; i++) { ++ for (i = 0; i < ippGetCount (attr); i++) { + const char *p; +- const char *keyword = attr->values [i].string.text; ++ const char *keyword = ippGetString (attr, i, NULL); + + reason = g_new (GnomeCupsPrinterReason, 1); + +@@ -224,8 +252,8 @@ gnome_cups_printer_get_info (GnomeCupsPrinter *printer) + return printer->details->info; + } + +-#define MAP_INT(v,a) {if (!g_ascii_strcasecmp (attr->name, (a))) { if ((v) != attr->values[0].integer) { changed = TRUE; } (v) = attr->values[0].integer; }} +-#define MAP_STRING(v,a) {if (!g_ascii_strcasecmp (attr->name, (a))) { if (!v || strcmp (v, attr->values[0].string.text)) { g_free (v); changed = TRUE; (v) = g_strdup (attr->values[0].string.text); }}} ++#define MAP_INT(v,a) {if (!g_ascii_strcasecmp (ippGetName (attr), (a))) { if ((v) != ippGetInteger (attr, 0)) { changed = TRUE; } (v) = ippGetInteger (attr, 0); }} ++#define MAP_STRING(v,a) {if (!g_ascii_strcasecmp (ippGetName (attr), (a))) { if (!v || strcmp (v, ippGetString (attr, 0, NULL))) { g_free (v); changed = TRUE; (v) = g_strdup (ippGetString (attr, 0, NULL)); }}} + + static void + attributes_update_cb (guint id, +@@ -243,14 +271,14 @@ attributes_update_cb (guint id, + changed = FALSE; + + if (!error && response) { +- for (attr = response->attrs; attr != NULL; attr = attr->next) { +- if (!attr->name) { ++ for (attr = ippFirstAttribute (response); attr != NULL; attr = ippNextAttribute (response)) { ++ if (!ippGetName (attr)) { + continue; + } +- if (!g_ascii_strcasecmp (attr->name, "attributes-charset") || !strcmp (attr->name, "attributes-charset")) { ++ if (!g_ascii_strcasecmp (ippGetName (attr), "attributes-charset") || !strcmp (ippGetName (attr), "attributes-charset")) { + continue; + } +- if (!g_ascii_strcasecmp (attr->name, "printer-state-reasons")) { ++ if (!g_ascii_strcasecmp (ippGetName (attr), "printer-state-reasons")) { + map_reasons (printer, attr); + } + MAP_INT (printer->details->state, "printer-state"); +@@ -570,7 +598,7 @@ get_default (void) + + attr = ippFindAttribute (response, "printer-name", IPP_TAG_NAME); + if (attr) { +- name = g_strdup (attr->values[0].string.text); ++ name = g_strdup (ippGetString (attr, 0, NULL)); + } else { + name = NULL; + } +@@ -698,7 +726,7 @@ get_printer_names (void) + attr = ippFindAttribute (response, "printer-name", IPP_TAG_NAME); + while (attr) { + ret = g_list_prepend (ret, +- g_strdup (attr->values[0].string.text)); ++ g_strdup (ippGetString (attr, 0, NULL))); + + attr = ippFindNextAttribute (response, + "printer-name", +diff --git a/libgnomecups/gnome-cups-queue.c b/libgnomecups/gnome-cups-queue.c +index 9f98ed9..298db42 100644 +--- a/libgnomecups/gnome-cups-queue.c ++++ b/libgnomecups/gnome-cups-queue.c +@@ -15,6 +15,33 @@ + + #define UPDATE_TIMEOUT 3000 + ++#if (CUPS_VERSION_MAJOR > 1) || (CUPS_VERSION_MINOR > 5) ++#define HAVE_CUPS_1_6 1 ++#endif ++ ++#ifndef HAVE_CUPS_1_6 ++#define ippGetName(attr) attr->name ++#define ippGetInteger(attr, element) attr->values[element].integer ++#define ippGetString(attr, element, language) attr->values[element].string.text ++ ++static ipp_attribute_t * ++ippFirstAttribute(ipp_t *ipp) ++{ ++ if (!ipp) ++ return (NULL); ++ return (ipp->current = ipp->attrs); ++} ++ ++static ipp_attribute_t * ++ippNextAttribute(ipp_t *ipp) ++{ ++ if (!ipp || !ipp->current) ++ return (NULL); ++ return (ipp->current = ipp->current->next); ++} ++#endif ++ ++ + struct _GnomeCupsQueueDetails { + char *queue_name; + GList *jobs; +@@ -199,8 +226,8 @@ finish_job (GnomeCupsJob *job) + job->size = job->size * 1024; + } + +-#define MAP_STR(dest, src) { if (!g_ascii_strcasecmp (attr->name, (src))) { if ((dest) != NULL) g_free (dest); (dest) = g_strdup (attr->values[0].string.text);}} +-#define MAP_INT(dest, src) { if (!g_ascii_strcasecmp (attr->name, (src))) { (dest) = attr->values[0].integer; } } ++#define MAP_STR(dest, src) { if (!g_ascii_strcasecmp (ippGetName (attr), (src))) { if ((dest) != NULL) g_free (dest); (dest) = g_strdup (ippGetString (attr, 0, NULL));}} ++#define MAP_INT(dest, src) { if (!g_ascii_strcasecmp (ippGetName (attr), (src))) { (dest) = ippGetInteger (attr, 0); } } + + static void + get_jobs_cb (guint id, +@@ -231,8 +258,8 @@ get_jobs_cb (guint id, + + if (response) { + job = g_new0 (GnomeCupsJob, 1); +- for (attr = response->attrs; attr != NULL; attr = attr->next) { +- if (attr->name == NULL) { ++ for (attr = ippFirstAttribute (response); attr != NULL; attr = ippNextAttribute (response)) { ++ if (ippGetName (attr) == NULL) { + if (job->name) { + finish_job (job); + jobs = g_list_prepend (jobs, job); +@@ -244,7 +271,7 @@ get_jobs_cb (guint id, + continue; + } + +- if (!g_ascii_strcasecmp (attr->name, "attributes-charset") || !g_ascii_strcasecmp (attr->name, "attributes-charset")) { ++ if (!g_ascii_strcasecmp (ippGetName (attr), "attributes-charset") || !g_ascii_strcasecmp (ippGetName (attr), "attributes-charset")) { + continue; + + } +@@ -355,8 +382,8 @@ gnome_cups_queue_get_job_nocache (GnomeCupsQueue *queue, + + if (response) { + job = g_new0 (GnomeCupsJob, 1); +- for (attr = response->attrs; attr != NULL; attr = attr->next) { +- if (attr->name == NULL) { ++ for (attr = ippFirstAttribute (response); attr != NULL; attr = ippNextAttribute (response)) { ++ if (ippGetName (attr) == NULL) { + if (job->name) { + finish_job (job); + } else { +@@ -366,7 +393,7 @@ gnome_cups_queue_get_job_nocache (GnomeCupsQueue *queue, + break; + } + +- if (!g_ascii_strcasecmp (attr->name, "attributes-charset") || !g_ascii_strcasecmp (attr->name, "attributes-charset")) { ++ if (!g_ascii_strcasecmp (ippGetName (attr), "attributes-charset") || !g_ascii_strcasecmp (ippGetName (attr), "attributes-charset")) { + continue; + } + +diff --git a/libgnomecups/gnome-cups-request.c b/libgnomecups/gnome-cups-request.c +index c94f623..13f0948 100644 +--- a/libgnomecups/gnome-cups-request.c ++++ b/libgnomecups/gnome-cups-request.c +@@ -19,6 +19,36 @@ + #define STOP_UNUSED_THREADS_TIMEOUT 60 + #define CLOSE_UNUSED_CONNECTIONS_TIMEOUT 30 + ++#if (CUPS_VERSION_MAJOR > 1) || (CUPS_VERSION_MINOR > 5) ++#define HAVE_CUPS_1_6 1 ++#endif ++ ++#ifndef HAVE_CUPS_1_6 ++#define ippGetCount(attr) attr->num_values ++#define ippGetValueTag(attr) attr->value_tag ++#define ippGetName(attr) attr->name ++#define ippGetBoolean(attr, element) attr->values[element].boolean ++#define ippGetInteger(attr, element) attr->values[element].integer ++#define ippGetString(attr, element, language) attr->values[element].string.text ++ ++static ipp_attribute_t * ++ippFirstAttribute(ipp_t *ipp) ++{ ++ if (!ipp) ++ return (NULL); ++ return (ipp->current = ipp->attrs); ++} ++ ++static ipp_attribute_t * ++ippNextAttribute(ipp_t *ipp) ++{ ++ if (!ipp || !ipp->current) ++ return (NULL); ++ return (ipp->current = ipp->current->next); ++} ++#endif ++ ++ + typedef struct + { + GMutex *mutex; +@@ -276,14 +306,14 @@ dump_request (ipp_t const *req) + unsigned i; + ipp_attribute_t *attr; + +- for (attr = req->attrs; attr != NULL; attr = attr->next) { +- g_print ("%s", attr->name); +- for (i = 0 ; i < attr->num_values ; i++) { ++ for (attr = ippFirstAttribute (req); attr != NULL; attr = ippNextAttribute (req)) { ++ g_print ("%s", ippGetName (attr)); ++ for (i = 0 ; i < ippGetCount (attr) ; i++) { + g_print ("\t[%d] = ", i); +- switch (attr->value_tag & ~IPP_TAG_COPY) { ++ switch (ippGetValueTag (attr) & ~IPP_TAG_COPY) { + case IPP_TAG_INTEGER: + case IPP_TAG_ENUM: +- g_print ("%d\n", attr->values[i].integer); ++ g_print ("%d\n", ippGetInteger (attr, i)); + break; + + case IPP_TAG_STRING: +@@ -294,11 +324,11 @@ dump_request (ipp_t const *req) + case IPP_TAG_CHARSET: + case IPP_TAG_LANGUAGE: + case IPP_TAG_MIMETYPE: +- g_print ("'%s'\n", attr->values[i].string.text); ++ g_print ("'%s'\n", ippGetString (attr, i, NULL)); + break; + + case IPP_TAG_BOOLEAN: +- g_print ("%s\n", (int)attr->values[i].boolean ? "true" : "false"); ++ g_print ("%s\n", (int)ippGetBoolean (attr, i) ? "true" : "false"); + break; + + default: +-- +1.7.8.6 + diff --git a/nixpkgs/pkgs/desktops/gnome-2/platform/libgnomecups/default.nix b/nixpkgs/pkgs/desktops/gnome-2/platform/libgnomecups/default.nix new file mode 100644 index 000000000000..ee0282147de7 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-2/platform/libgnomecups/default.nix @@ -0,0 +1,19 @@ +{ stdenv, fetchurl, pkgconfig, gtk2, gettext, libxml2, intltool, libart_lgpl }: + +stdenv.mkDerivation rec { + name = "libgnomecups-0.2.3"; + + src = fetchurl { + url = "mirror://gnome/sources/libgnomecups/0.2/${name}.tar.bz2"; + sha256 = "0a8xdaxzz2wc0n1fjcav65093gixzyac3948l8cxx1mk884yhc71"; + }; + + hardeningDisable = [ "format" ]; + + patches = [ ./glib.patch ./cups_1.6.patch ]; + + nativeBuildInputs = [ pkgconfig ]; + buildInputs = [ gtk2 gettext intltool libart_lgpl ]; + + propagatedBuildInputs = [ libxml2 ]; +} diff --git a/nixpkgs/pkgs/desktops/gnome-2/platform/libgnomecups/glib.patch b/nixpkgs/pkgs/desktops/gnome-2/platform/libgnomecups/glib.patch new file mode 100644 index 000000000000..3f73af861c04 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-2/platform/libgnomecups/glib.patch @@ -0,0 +1,38 @@ +From d84eee9450b3b6f6155074915efc61bedcc8d446 Mon Sep 17 00:00:00 2001 +From: Dominique Leuenberger <dimstar@opensuse.org> +Date: Sun, 27 Nov 2011 21:36:41 +0100 +Subject: [PATCH] Fix: Only glib.h can be included + +--- + libgnomecups/gnome-cups-i18n.c | 2 +- + libgnomecups/gnome-cups-init.h | 3 +-- + 2 files changed, 2 insertions(+), 3 deletions(-) + +diff --git a/libgnomecups/gnome-cups-i18n.c b/libgnomecups/gnome-cups-i18n.c +index 8987c5c..127756d 100644 +--- a/libgnomecups/gnome-cups-i18n.c ++++ b/libgnomecups/gnome-cups-i18n.c +@@ -1,5 +1,5 @@ + #include <config.h> +-#include <glib/gmacros.h> ++#include <glib.h> + #include "gnome-cups-i18n.h" + + #ifdef ENABLE_NLS +diff --git a/libgnomecups/gnome-cups-init.h b/libgnomecups/gnome-cups-init.h +index 22b682a..c4600fc 100644 +--- a/libgnomecups/gnome-cups-init.h ++++ b/libgnomecups/gnome-cups-init.h +@@ -1,8 +1,7 @@ + #ifndef GNOME_CUPS_INIT + #define GNOME_CUPS_INIT + +-#include <glib/gtypes.h> +-#include <glib/gmacros.h> ++#include <glib.h> + + G_BEGIN_DECLS + +-- +1.7.7 + diff --git a/nixpkgs/pkgs/desktops/gnome-2/platform/libgnomeprint/bug653388.patch b/nixpkgs/pkgs/desktops/gnome-2/platform/libgnomeprint/bug653388.patch new file mode 100644 index 000000000000..468f8e287a7c --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-2/platform/libgnomeprint/bug653388.patch @@ -0,0 +1,21 @@ +From 9b82b7e75b83395e7c5692085e1934202cf7f65f Mon Sep 17 00:00:00 2001 +From: Jeremy Huddleston <jeremyhu@freedesktop.org> +Date: Wed, 12 Oct 2011 15:08:59 +0000 +Subject: Add missing include + +https://bugzilla.gnome.org/show_bug.cgi?id=653388 +--- +diff --git a/libgnomeprint/modules/cups/gnome-print-cups-transport.c b/libgnomeprint/modules/cups/gnome-print-cups-transport.c +index aeb7111..85de91b 100644 +--- a/libgnomeprint/modules/cups/gnome-print-cups-transport.c ++++ b/libgnomeprint/modules/cups/gnome-print-cups-transport.c +@@ -34,6 +34,7 @@ + #include <sys/types.h> + #include <sys/stat.h> + #include <fcntl.h> ++#include <stdio.h> + #include <unistd.h> + #include <locale.h> + +-- +cgit v0.9.0.2 diff --git a/nixpkgs/pkgs/desktops/gnome-2/platform/libgnomeprint/default.nix b/nixpkgs/pkgs/desktops/gnome-2/platform/libgnomeprint/default.nix new file mode 100644 index 000000000000..44c4469c5656 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-2/platform/libgnomeprint/default.nix @@ -0,0 +1,29 @@ +{ stdenv, fetchurl, fetchpatch, pkgconfig, gtk2, gettext, libxml2, intltool, libart_lgpl +, libgnomecups, bison, flex }: + +stdenv.mkDerivation rec { + name = "libgnomeprint-2.18.8"; + + src = fetchurl { + url = "mirror://gnome/sources/libgnomeprint/2.18/${name}.tar.bz2"; + sha256 = "1034ec8651051f84d2424e7a1da61c530422cc20ce5b2d9e107e1e46778d9691"; + }; + + patches = [ + ./bug653388.patch + # Fix compatibility with bison 3 + (fetchpatch { + url = "https://github.com/pld-linux/libgnomeprint/raw/54c0f9c3675b86c53f6d77a5bc526ce9ef0e38cd/bison3.patch"; + sha256 = "1sp04jbv34i1gcwf377hhmwdsmqzig70dd06rjz1isb6zwh4y01l"; + }) + ]; + + nativeBuildInputs = [ pkgconfig ]; + buildInputs = [ gtk2 gettext intltool libart_lgpl libgnomecups bison flex ]; + + propagatedBuildInputs = [ libxml2 ]; + + meta = with stdenv.lib; { + platforms = platforms.linux; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-2/platform/libgnomeprintui/default.nix b/nixpkgs/pkgs/desktops/gnome-2/platform/libgnomeprintui/default.nix new file mode 100644 index 000000000000..e535fe832d5a --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-2/platform/libgnomeprintui/default.nix @@ -0,0 +1,13 @@ +{stdenv, fetchurl, pkgconfig, gtk2, gettext, intltool, libgnomecanvas, libgnomeprint, gnome-icon-theme}: + +stdenv.mkDerivation { + name = "libgnomeprintui-2.18.6"; + + src = fetchurl { + url = "mirror://gnome/sources/libgnomeprintui/2.18/libgnomeprintui-2.18.6.tar.bz2"; + sha256 = "0spl8vinb5n6n1krnfnr61dwaxidg67h8j94z9p59k2xdsvfashm"; + }; + + nativeBuildInputs = [ pkgconfig ]; + buildInputs = [ gtk2 gettext intltool libgnomecanvas libgnomeprint gnome-icon-theme]; +} diff --git a/nixpkgs/pkgs/desktops/gnome-2/platform/libgnomeui/default.nix b/nixpkgs/pkgs/desktops/gnome-2/platform/libgnomeui/default.nix new file mode 100644 index 000000000000..d248ad37d02c --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-2/platform/libgnomeui/default.nix @@ -0,0 +1,29 @@ +{ stdenv, fetchurl, fetchpatch, pkgconfig, libxml2, xorg, glib, pango +, intltool, libgnome, libgnomecanvas, libbonoboui, GConf, libtool +, gnome_vfs, libgnome-keyring, libglade }: + +stdenv.mkDerivation rec { + name = "libgnomeui-${minVer}.5"; + minVer = "2.24"; + + src = fetchurl { + url = "mirror://gnome/sources/libgnomeui/${minVer}/${name}.tar.bz2"; + sha256 = "03rwbli76crkjl6gp422wrc9lqpl174k56cp9i96b7l8jlj2yddf"; + }; + + outputs = [ "out" "dev" ]; + + patches = [ + (fetchpatch { + name = "0001-gnome-scores.h-Convert-to-UTF-8.patch"; + url = "https://github.com/GNOME/libgnomeui/commit/30334c28794ef85d8973f4ed0779b5ceed6594f2.diff"; + sha256 = "1sn8j8dkam14wfkpw8nga3gk63wniff243mzv3jp0fvv52q8sqhk"; + }) + ]; + + nativeBuildInputs = [ pkgconfig intltool ]; + buildInputs = + [ xorg.xlibsWrapper libxml2 GConf pango glib libgnome-keyring libglade libtool ]; + + propagatedBuildInputs = [ libgnome libbonoboui libgnomecanvas gnome_vfs ]; +} diff --git a/nixpkgs/pkgs/desktops/gnome-2/platform/libgtkhtml/default.nix b/nixpkgs/pkgs/desktops/gnome-2/platform/libgtkhtml/default.nix new file mode 100644 index 000000000000..0d362a28519e --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-2/platform/libgtkhtml/default.nix @@ -0,0 +1,16 @@ +{stdenv, fetchurl, pkgconfig, gtk2, gettext, libxml2 }: + +stdenv.mkDerivation { + name = "libgtkhtml-2.11.1"; + + src = fetchurl { + url = "mirror://gnome/sources/libgtkhtml/2.11/libgtkhtml-2.11.1.tar.bz2"; + sha256 = "0msajafd42545dxzyr5zqka990cjrxw2yz09ajv4zs8m1w6pm9rw"; + }; + + nativeBuildInputs = [ pkgconfig ]; + buildInputs = [ gtk2 gettext ]; + propagatedBuildInputs = [ libxml2 ]; + + hardeningDisable = [ "format" ]; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/apps/accerciser/default.nix b/nixpkgs/pkgs/desktops/gnome-3/apps/accerciser/default.nix new file mode 100644 index 000000000000..f068d1994ec4 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/apps/accerciser/default.nix @@ -0,0 +1,73 @@ +{ stdenv +, fetchurl +, pkgconfig +, gnome3 +, gtk3 +, wrapGAppsHook +, gobject-introspection +, itstool +, libxml2 +, python3 +, at-spi2-core +, dbus +, gettext +, libwnck3 +, adwaita-icon-theme +}: + + python3.pkgs.buildPythonApplication rec { + name = "accerciser-${version}"; + version = "3.36.0"; + + format = "other"; + + src = fetchurl { + url = "mirror://gnome/sources/accerciser/${stdenv.lib.versions.majorMinor version}/${name}.tar.xz"; + sha256 = "1iwi7mnayw1f90s439flh0zkgmj4qx10dzgj38nd5f3wvqmhabk3"; + }; + + nativeBuildInputs = [ + gettext + gobject-introspection # For setup hook + itstool + libxml2 + pkgconfig + dbus + wrapGAppsHook + ]; + + buildInputs = [ + adwaita-icon-theme + at-spi2-core + gtk3 + libwnck3 + ]; + + propagatedBuildInputs = with python3.pkgs; [ + ipython + pyatspi + pycairo + pygobject3 + setuptools + xlib + ]; + + # Strict deps breaks accerciser + # and https://github.com/NixOS/nixpkgs/issues/56943 + strictDeps = false; + + passthru = { + updateScript = gnome3.updateScript { + packageName = "accerciser"; + attrPath = "gnome3.accerciser"; + }; + }; + + meta = with stdenv.lib; { + homepage = "https://wiki.gnome.org/Apps/Accerciser"; + description = "Interactive Python accessibility explorer"; + maintainers = teams.gnome.members; + license = licenses.bsd3; + platforms = platforms.linux; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/apps/cheese/default.nix b/nixpkgs/pkgs/desktops/gnome-3/apps/cheese/default.nix new file mode 100644 index 000000000000..05a1cdbc088e --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/apps/cheese/default.nix @@ -0,0 +1,60 @@ +{ stdenv, gettext, fetchurl, wrapGAppsHook, gnome-video-effects, libcanberra-gtk3 +, pkgconfig, gtk3, glib, clutter-gtk, clutter-gst, udev, gst_all_1, itstool +, libgudev, vala, docbook_xml_dtd_43, docbook_xsl, appstream-glib +, libxslt, yelp-tools, gnome-common, gtk-doc +, adwaita-icon-theme, librsvg, totem, gdk-pixbuf, gnome3, gnome-desktop, libxml2 +, meson, ninja, dbus, python3 }: + +stdenv.mkDerivation rec { + pname = "cheese"; + version = "3.34.0"; + + src = fetchurl { + url = "mirror://gnome/sources/cheese/${stdenv.lib.versions.majorMinor version}/${pname}-${version}.tar.xz"; + sha256 = "0wvyc9wb0avrprvm529m42y5fkv3lirdphqydc9jw0c8mh05d1ni"; + }; + + postPatch = '' + chmod +x meson_post_install.py + patchShebangs meson_post_install.py + ''; + + passthru = { + updateScript = gnome3.updateScript { packageName = "cheese"; attrPath = "gnome3.cheese"; }; + }; + + nativeBuildInputs = [ + meson ninja pkgconfig gettext itstool vala wrapGAppsHook libxml2 appstream-glib + libxslt docbook_xml_dtd_43 docbook_xsl + gtk-doc yelp-tools gnome-common python3 + ]; + buildInputs = [ gtk3 glib gnome-video-effects + gdk-pixbuf adwaita-icon-theme librsvg udev gst_all_1.gstreamer + gst_all_1.gst-plugins-base gst_all_1.gst-plugins-good gnome-desktop + gst_all_1.gst-plugins-bad clutter-gtk clutter-gst + libcanberra-gtk3 libgudev dbus ]; + + outputs = [ "out" "man" "devdoc" ]; + + preFixup = '' + gappsWrapperArgs+=( + # Effects + --prefix XDG_DATA_DIRS : "${gnome-video-effects}/share" + # vp8enc preset + --prefix GST_PRESET_PATH : "${gst_all_1.gst-plugins-good}/share/gstreamer-1.0/presets" + # Thumbnailers + --prefix XDG_DATA_DIRS : "${gdk-pixbuf}/share" + --prefix XDG_DATA_DIRS : "${totem}/share" + ) + ''; + + enableParallelBuilding = true; + + meta = with stdenv.lib; { + homepage = "https://wiki.gnome.org/Apps/Cheese"; + description = "Take photos and videos with your webcam, with fun graphical effects"; + maintainers = teams.gnome.members; + license = licenses.gpl3; + platforms = platforms.linux; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/apps/evolution/default.nix b/nixpkgs/pkgs/desktops/gnome-3/apps/evolution/default.nix new file mode 100644 index 000000000000..c1901110b585 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/apps/evolution/default.nix @@ -0,0 +1,134 @@ +{ stdenv +, cmake +, ninja +, intltool +, fetchurl +, libxml2 +, webkitgtk +, highlight +, pkgconfig +, gtk3 +, glib +, libnotify +, gspell +, evolution-data-server +, adwaita-icon-theme +, gnome-desktop +, libgdata +, libgweather +, glib-networking +, gsettings-desktop-schemas +, wrapGAppsHook +, itstool +, shared-mime-info +, libical +, db +, gcr +, sqlite +, gnome3 +, librsvg +, gdk-pixbuf +, libsecret +, nss +, nspr +, icu +, libcanberra-gtk3 +, bogofilter +, gst_all_1 +, procps +, p11-kit +, openldap +, spamassassin +}: + +stdenv.mkDerivation rec { + pname = "evolution"; + version = "3.36.1"; + + src = fetchurl { + url = "mirror://gnome/sources/evolution/${stdenv.lib.versions.majorMinor version}/${pname}-${version}.tar.xz"; + sha256 = "1f3cwc05gw75yqficcxns95r96lv7an4aih6d7hng3n3pqfwyfl7"; + }; + + nativeBuildInputs = [ + cmake + intltool + itstool + libxml2 + ninja + pkgconfig + wrapGAppsHook + ]; + + buildInputs = [ + adwaita-icon-theme + bogofilter + db + evolution-data-server + gcr + gdk-pixbuf + glib + glib-networking + gnome-desktop + gsettings-desktop-schemas + gst_all_1.gst-plugins-base + gst_all_1.gstreamer + gtk3 + gspell + highlight + icu + libcanberra-gtk3 + libgdata + libgweather + libical + libnotify + librsvg + libsecret + nspr + nss + openldap + p11-kit + procps + shared-mime-info + sqlite + webkitgtk + ]; + + propagatedUserEnvPkgs = [ + evolution-data-server + ]; + + cmakeFlags = [ + "-DENABLE_AUTOAR=OFF" + "-DENABLE_LIBCRYPTUI=OFF" + "-DENABLE_PST_IMPORT=OFF" + "-DENABLE_YTNEF=OFF" + "-DWITH_SPAMASSASSIN=${spamassassin}/bin/spamassassin" + "-DWITH_SA_LEARN=${spamassassin}/bin/sa-learn" + "-DWITH_BOGOFILTER=${bogofilter}/bin/bogofilter" + "-DWITH_OPENLDAP=${openldap}" + ]; + + requiredSystemFeatures = [ + "big-parallel" + ]; + + doCheck = true; + + passthru = { + updateScript = gnome3.updateScript { + packageName = "evolution"; + attrPath = "gnome3.evolution"; + }; + }; + + PKG_CONFIG_LIBEDATASERVERUI_1_2_UIMODULEDIR = "${placeholder "out"}/lib/evolution-data-server/ui-modules"; + + meta = with stdenv.lib; { + homepage = "https://wiki.gnome.org/Apps/Evolution"; + description = "Personal information management application that provides integrated mail, calendaring and address book functionality"; + maintainers = teams.gnome.members; + license = licenses.lgpl2Plus; + platforms = platforms.linux; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/apps/file-roller/default.nix b/nixpkgs/pkgs/desktops/gnome-3/apps/file-roller/default.nix new file mode 100644 index 000000000000..1243d5fa5cb6 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/apps/file-roller/default.nix @@ -0,0 +1,41 @@ +{ stdenv, fetchurl, glib, gtk3, meson, ninja, pkgconfig, gnome3, gettext, itstool, libxml2, libarchive +, file, json-glib, python3, wrapGAppsHook, desktop-file-utils, libnotify, nautilus, glibcLocales }: + +stdenv.mkDerivation rec { + pname = "file-roller"; + version = "3.36.1"; + + src = fetchurl { + url = "mirror://gnome/sources/file-roller/${stdenv.lib.versions.majorMinor version}/${pname}-${version}.tar.xz"; + sha256 = "0p22jxcagamvp08xfglz4cz1sp8w4p101npw0ggrkhh7vm8yb9bh"; + }; + + LANG = "en_US.UTF-8"; # postinstall.py + + nativeBuildInputs = [ meson ninja gettext itstool pkgconfig libxml2 python3 wrapGAppsHook glibcLocales desktop-file-utils ]; + + buildInputs = [ glib gtk3 json-glib libarchive file gnome3.adwaita-icon-theme libnotify nautilus ]; + + PKG_CONFIG_LIBNAUTILUS_EXTENSION_EXTENSIONDIR = "${placeholder "out"}/lib/nautilus/extensions-3.0"; + + postPatch = '' + chmod +x postinstall.py # patchShebangs requires executable file + patchShebangs postinstall.py + patchShebangs data/set-mime-type-entry.py + ''; + + passthru = { + updateScript = gnome3.updateScript { + packageName = "file-roller"; + attrPath = "gnome3.file-roller"; + }; + }; + + meta = with stdenv.lib; { + homepage = "https://wiki.gnome.org/Apps/FileRoller"; + description = "Archive manager for the GNOME desktop environment"; + license = licenses.gpl2Plus; + platforms = platforms.linux; + maintainers = teams.gnome.members; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/apps/gedit/default.nix b/nixpkgs/pkgs/desktops/gnome-3/apps/gedit/default.nix new file mode 100644 index 000000000000..c6b28e86ab83 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/apps/gedit/default.nix @@ -0,0 +1,54 @@ +{ stdenv, meson, fetchurl, python3 +, pkgconfig, gtk3, glib, adwaita-icon-theme +, libpeas, gtksourceview4, gsettings-desktop-schemas +, wrapGAppsHook, ninja, libsoup, tepl +, gnome3, gspell, perl, itstool, desktop-file-utils +}: + +stdenv.mkDerivation rec { + pname = "gedit"; + version = "3.36.1"; + + src = fetchurl { + url = "mirror://gnome/sources/gedit/${stdenv.lib.versions.majorMinor version}/${pname}-${version}.tar.xz"; + sha256 = "11z3lhc5i3z0gqw0qmprsm4rmvhbbm4gz6wy0f73c73x4bd8xhvd"; + }; + + nativeBuildInputs = [ + pkgconfig wrapGAppsHook meson ninja + python3 perl itstool desktop-file-utils + ]; + + buildInputs = [ + gtk3 glib + adwaita-icon-theme libsoup + libpeas gtksourceview4 + gsettings-desktop-schemas gspell + tepl + ]; + + postPatch = '' + chmod +x build-aux/meson/post_install.py + chmod +x plugins/externaltools/scripts/gedit-tool-merge.pl + patchShebangs build-aux/meson/post_install.py + patchShebangs plugins/externaltools/scripts/gedit-tool-merge.pl + ''; + + # Reliably fails to generate gedit-file-browser-enum-types.h in time + enableParallelBuilding = false; + + passthru = { + updateScript = gnome3.updateScript { + packageName = "gedit"; + attrPath = "gnome3.gedit"; + }; + }; + + meta = with stdenv.lib; { + homepage = "https://wiki.gnome.org/Apps/Gedit"; + description = "Official text editor of the GNOME desktop environment"; + maintainers = teams.gnome.members; + license = licenses.gpl2; + platforms = platforms.unix; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/apps/ghex/default.nix b/nixpkgs/pkgs/desktops/gnome-3/apps/ghex/default.nix new file mode 100644 index 000000000000..7de5ffc1add0 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/apps/ghex/default.nix @@ -0,0 +1,84 @@ +{ stdenv +, fetchurl +, fetchpatch +, pkgconfig +, meson +, ninja +, python3 +, gnome3 +, desktop-file-utils +, appstream-glib +, gettext +, itstool +, libxml2 +, gtk3 +, glib +, atk +, wrapGAppsHook +}: + +stdenv.mkDerivation rec { + pname = "ghex"; + version = "3.18.4"; + + outputs = [ "out" "dev" ]; + + src = fetchurl { + url = "mirror://gnome/sources/ghex/${stdenv.lib.versions.majorMinor version}/${pname}-${version}.tar.xz"; + sha256 = "1h1pjrr9wynclfykizqd78dbi785wjz6b63p31k87kjvzy8w3nf2"; + }; + + nativeBuildInputs = [ + desktop-file-utils + gettext + itstool + meson + ninja + pkgconfig + python3 + wrapGAppsHook + ]; + + buildInputs = [ + gtk3 + atk + glib + ]; + + checkInputs = [ + appstream-glib + desktop-file-utils + ]; + + patches = [ + # Fixes for darwin. Drop in next release. + (fetchpatch { + url = "https://gitlab.gnome.org/GNOME/ghex/commit/b0af26666cd990d99076c242b2abb3efc6e98671.patch"; + sha256 = "1zwdkgr2nqrn9q3ydyvrrpn5x55cdi747fhbq6mh6blp9cbrk9b5"; + }) + (fetchpatch { + url = "https://gitlab.gnome.org/GNOME/ghex/commit/cc8ef9e67b23604c402460010dc0b5dccb85391b.patch"; + sha256 = "0j2165rfhlbrlzhmcnirqd5m89ljpz0n3nz20sxbwlc8h42zv36s"; + }) + ]; + + postPatch = '' + chmod +x meson_post_install.py + patchShebangs meson_post_install.py + ''; + + passthru = { + updateScript = gnome3.updateScript { + packageName = "ghex"; + attrPath = "gnome3.${pname}"; + }; + }; + + meta = with stdenv.lib; { + homepage = "https://wiki.gnome.org/Apps/Ghex"; + description = "Hex editor for GNOME desktop environment"; + platforms = platforms.unix; + license = licenses.gpl2Plus; + maintainers = teams.gnome.members; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/apps/glade/default.nix b/nixpkgs/pkgs/desktops/gnome-3/apps/glade/default.nix new file mode 100644 index 000000000000..23f5410e1eaa --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/apps/glade/default.nix @@ -0,0 +1,37 @@ +{ stdenv, intltool, fetchurl, python3 +, pkgconfig, gtk3, glib, gobject-introspection +, wrapGAppsHook, itstool, libxml2, docbook_xsl +, gnome3, gdk-pixbuf, libxslt, gsettings-desktop-schemas }: + +stdenv.mkDerivation rec { + pname = "glade"; + version = "3.22.2"; + + src = fetchurl { + url = "mirror://gnome/sources/glade/${stdenv.lib.versions.majorMinor version}/${pname}-${version}.tar.xz"; + sha256 = "08bayb1rrpblxf6jhhbw2n3c425w170is4l94pampldl4kmsdvzd"; + }; + + passthru = { + updateScript = gnome3.updateScript { packageName = "glade"; attrPath = "gnome3.glade"; }; + }; + + nativeBuildInputs = [ + pkgconfig intltool itstool wrapGAppsHook docbook_xsl libxslt libxml2 gobject-introspection + ]; + buildInputs = [ + gtk3 glib libxml2 python3 python3.pkgs.pygobject3 + gsettings-desktop-schemas + gdk-pixbuf gnome3.adwaita-icon-theme + ]; + + enableParallelBuilding = true; + + meta = with stdenv.lib; { + homepage = "https://wiki.gnome.org/Apps/Glade"; + description = "User interface designer for GTK applications"; + maintainers = teams.gnome.members; + license = licenses.lgpl2; + platforms = platforms.linux; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/apps/gnome-books/default.nix b/nixpkgs/pkgs/desktops/gnome-3/apps/gnome-books/default.nix new file mode 100644 index 000000000000..7432e8e96ed2 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/apps/gnome-books/default.nix @@ -0,0 +1,48 @@ +{ stdenv, meson, ninja, gettext, fetchurl, evince, gjs +, pkgconfig, gtk3, glib, tracker, tracker-miners, libxslt +, webkitgtk, gnome-desktop, libgepub, gnome3, gdk-pixbuf +, gsettings-desktop-schemas, adwaita-icon-theme, docbook_xsl +, docbook_xml_dtd_42, desktop-file-utils, python3 +, gobject-introspection, wrapGAppsHook }: + +stdenv.mkDerivation rec { + pname = "gnome-books"; + version = "3.34.0"; + + src = fetchurl { + url = "mirror://gnome/sources/${pname}/${stdenv.lib.versions.majorMinor version}/${pname}-${version}.tar.xz"; + sha256 = "153vknqisjn5f105avzm933fsc3v0pjzzbwxlqxf8vjjksh1cmya"; + }; + + nativeBuildInputs = [ + meson ninja pkgconfig gettext libxslt desktop-file-utils + docbook_xsl docbook_xml_dtd_42 wrapGAppsHook python3 + ]; + + buildInputs = [ + gtk3 glib gsettings-desktop-schemas + gdk-pixbuf adwaita-icon-theme evince + webkitgtk gjs gobject-introspection tracker + tracker-miners gnome-desktop libgepub + ]; + + postPatch = '' + chmod +x meson_post_install.py # patchShebangs requires executable file + patchShebangs meson_post_install.py + ''; + + passthru = { + updateScript = gnome3.updateScript { + packageName = "gnome-books"; + attrPath = "gnome3.gnome-books"; + }; + }; + + meta = with stdenv.lib; { + homepage = "https://wiki.gnome.org/Apps/Books"; + description = "An e-book manager application for GNOME"; + maintainers = teams.gnome.members; + license = licenses.gpl2Plus; + platforms = platforms.linux; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/apps/gnome-boxes/default.nix b/nixpkgs/pkgs/desktops/gnome-3/apps/gnome-boxes/default.nix new file mode 100644 index 000000000000..3d6832316cdc --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/apps/gnome-boxes/default.nix @@ -0,0 +1,141 @@ +{ stdenv +, fetchurl +, meson +, ninja +, wrapGAppsHook +, pkgconfig +, gettext +, itstool +, libvirt-glib +, glib +, gobject-introspection +, libxml2 +, gtk3 +, gtk-vnc +, freerdp +, libvirt +, spice-gtk +, python3 +, spice-protocol +, libsoup +, libosinfo +, systemd +, tracker +, tracker-miners +, vala +, libcap +, yajl +, gmp +, gdbm +, cyrus_sasl +, gnome3 +, librsvg +, desktop-file-utils +, mtools +, cdrkit +, libcdio +, libusb1 +, libarchive +, acl +, libgudev +, libsecret +, libcap_ng +, numactl +, xen +, libapparmor +, json-glib +, webkitgtk +, vte +, glib-networking +}: + +stdenv.mkDerivation rec { + pname = "gnome-boxes"; + version = "3.36.2"; + + src = fetchurl { + url = "mirror://gnome/sources/gnome-boxes/${stdenv.lib.versions.majorMinor version}/${pname}-${version}.tar.xz"; + sha256 = "01hjlz9hljk2skrwfqxpy3934wjs6figs71sw8bm8g2vnyaqwq7a"; + }; + + doCheck = true; + + nativeBuildInputs = [ + desktop-file-utils + gettext + gobject-introspection + itstool + meson + ninja + pkgconfig + python3 + vala + wrapGAppsHook + ]; + + # Required for USB redirection PolicyKit rules file + propagatedUserEnvPkgs = [ + spice-gtk + ]; + + buildInputs = [ + acl + cyrus_sasl + freerdp + gdbm + glib + glib-networking + gmp + gnome3.adwaita-icon-theme + gtk-vnc + gtk3 + json-glib + libapparmor + libarchive + libcap + libcap_ng + libgudev + libosinfo + librsvg + libsecret + libsoup + libusb1 + libvirt + libvirt-glib + libxml2 + numactl + spice-gtk + spice-protocol + systemd + tracker + tracker-miners + vte + webkitgtk + xen + yajl + ]; + + preFixup = '' + gappsWrapperArgs+=(--prefix PATH : "${stdenv.lib.makeBinPath [ mtools cdrkit libcdio ]}") + ''; + + postPatch = '' + chmod +x build-aux/post_install.py # patchShebangs requires executable file + patchShebangs build-aux/post_install.py + ''; + + passthru = { + updateScript = gnome3.updateScript { + packageName = pname; + attrPath = "gnome3.${pname}"; + }; + }; + + meta = with stdenv.lib; { + description = "Simple GNOME 3 application to access remote or virtual systems"; + homepage = "https://wiki.gnome.org/Apps/Boxes"; + license = licenses.gpl3; + platforms = platforms.linux; + maintainers = teams.gnome.members; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/apps/gnome-calendar/default.nix b/nixpkgs/pkgs/desktops/gnome-3/apps/gnome-calendar/default.nix new file mode 100644 index 000000000000..213b4f616721 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/apps/gnome-calendar/default.nix @@ -0,0 +1,41 @@ +{ stdenv, fetchurl, meson, ninja, pkgconfig, wrapGAppsHook, libdazzle, libgweather, geoclue2, geocode-glib, python3 +, gettext, libxml2, gnome3, gtk3, evolution-data-server, libsoup +, glib, gnome-online-accounts, gsettings-desktop-schemas, libhandy }: + +let + pname = "gnome-calendar"; + version = "3.36.0"; +in stdenv.mkDerivation rec { + name = "${pname}-${version}"; + + src = fetchurl { + url = "mirror://gnome/sources/${pname}/${stdenv.lib.versions.majorMinor version}/${name}.tar.xz"; + sha256 = "1cxy4qf83s8w1ys94rcc4ksf7ywi0hkkpfs0szkkip2v8g3j6kq2"; + }; + + passthru = { + updateScript = gnome3.updateScript { + packageName = pname; + attrPath = "gnome3.${pname}"; + }; + }; + + nativeBuildInputs = [ meson ninja pkgconfig gettext libxml2 wrapGAppsHook python3 ]; + buildInputs = [ + gtk3 evolution-data-server libsoup glib gnome-online-accounts libdazzle libgweather geoclue2 geocode-glib + gsettings-desktop-schemas gnome3.adwaita-icon-theme libhandy + ]; + + postPatch = '' + chmod +x build-aux/meson/meson_post_install.py # patchShebangs requires executable file + patchShebangs build-aux/meson/meson_post_install.py + ''; + + meta = with stdenv.lib; { + homepage = "https://wiki.gnome.org/Apps/Calendar"; + description = "Simple and beautiful calendar application for GNOME"; + maintainers = teams.gnome.members; + license = licenses.gpl3; + platforms = platforms.linux; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/apps/gnome-characters/default.nix b/nixpkgs/pkgs/desktops/gnome-3/apps/gnome-characters/default.nix new file mode 100644 index 000000000000..987fa594ae52 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/apps/gnome-characters/default.nix @@ -0,0 +1,85 @@ +{ stdenv +, fetchurl +, meson +, ninja +, pkgconfig +, gettext +, gnome3 +, glib +, gtk3 +, pango +, wrapGAppsHook +, python3 +, gobject-introspection +, gjs +, libunistring +, gsettings-desktop-schemas +, adwaita-icon-theme +, gnome-desktop +}: + +stdenv.mkDerivation rec { + pname = "gnome-characters"; + version = "3.34.0"; + + src = fetchurl { + url = "mirror://gnome/sources/gnome-characters/${stdenv.lib.versions.majorMinor version}/${pname}-${version}.tar.xz"; + sha256 = "0mqaxsa7hcmvid3zbzvxpfkp7s01ghiq6kaibmd3169axrr8ahql"; + }; + + nativeBuildInputs = [ + gettext + gobject-introspection + meson + ninja + pkgconfig + python3 + wrapGAppsHook + ]; + + + buildInputs = [ + adwaita-icon-theme + gjs + glib + gnome-desktop # for typelib + gsettings-desktop-schemas + gtk3 + libunistring + pango + ]; + + postPatch = '' + chmod +x meson_post_install.py # patchShebangs requires executable file + patchShebangs meson_post_install.py + ''; + + dontWrapGApps = true; + + # Fixes https://github.com/NixOS/nixpkgs/issues/31168 + postFixup = '' + for file in $out/share/org.gnome.Characters/org.gnome.Characters \ + $out/share/org.gnome.Characters/org.gnome.Characters.BackgroundService + do + sed -e $"2iimports.package._findEffectiveEntryPointName = () => \'$(basename $file)\' " \ + -i $file + + wrapGApp "$file" + done + ''; + + passthru = { + updateScript = gnome3.updateScript { + packageName = pname; + attrPath = "gnome3.${pname}"; + }; + }; + + meta = with stdenv.lib; { + homepage = "https://wiki.gnome.org/Design/Apps/CharacterMap"; + description = "Simple utility application to find and insert unusual characters"; + maintainers = teams.gnome.members; + license = licenses.gpl2; + platforms = platforms.linux; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/apps/gnome-clocks/default.nix b/nixpkgs/pkgs/desktops/gnome-3/apps/gnome-clocks/default.nix new file mode 100644 index 000000000000..7494d66cc0d9 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/apps/gnome-clocks/default.nix @@ -0,0 +1,86 @@ +{ stdenv +, fetchurl +, meson +, ninja +, gettext +, pkgconfig +, wrapGAppsHook +, itstool +, desktop-file-utils +, vala +, gobject-introspection +, libxml2 +, gtk3 +, glib +, gsound +, sound-theme-freedesktop +, gsettings-desktop-schemas +, adwaita-icon-theme +, gnome-desktop +, geocode-glib +, gnome3 +, gdk-pixbuf +, geoclue2 +, libgweather +, libhandy +}: + +stdenv.mkDerivation rec { + pname = "gnome-clocks"; + version = "3.36.0"; + + src = fetchurl { + url = "mirror://gnome/sources/gnome-clocks/${stdenv.lib.versions.majorMinor version}/${pname}-${version}.tar.xz"; + sha256 = "1ij9xwp3c96gsnnlhkqkiw3y45a4lpw7a09d4yysx7bvgw68p5sc"; + }; + + passthru = { + updateScript = gnome3.updateScript { + packageName = "gnome-clocks"; + attrPath = "gnome3.gnome-clocks"; + }; + }; + + doCheck = true; + + nativeBuildInputs = [ + vala + meson + ninja + pkgconfig + gettext + itstool + wrapGAppsHook + desktop-file-utils + libxml2 + gobject-introspection # for finding vapi files + ]; + buildInputs = [ + gtk3 + glib + gsettings-desktop-schemas + gdk-pixbuf + adwaita-icon-theme + gnome-desktop + geocode-glib + geoclue2 + libgweather + gsound + libhandy + ]; + + preFixup = '' + gappsWrapperArgs+=( + # Fallback sound theme + --prefix XDG_DATA_DIRS : "${sound-theme-freedesktop}/share" + ) + ''; + + meta = with stdenv.lib; { + homepage = "https://wiki.gnome.org/Apps/Clocks"; + description = "Clock application designed for GNOME 3"; + maintainers = teams.gnome.members; + license = licenses.gpl2; + platforms = platforms.linux; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/apps/gnome-documents/default.nix b/nixpkgs/pkgs/desktops/gnome-3/apps/gnome-documents/default.nix new file mode 100644 index 000000000000..8d5501537a0f --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/apps/gnome-documents/default.nix @@ -0,0 +1,109 @@ +{ stdenv +, meson +, ninja +, gettext +, fetchurl +, evince +, gjs +, pkgconfig +, gtk3 +, glib +, tracker +, tracker-miners +, itstool +, libxslt +, webkitgtk +, libgdata +, gnome-desktop +, libzapojit +, libgepub +, gnome3 +, gdk-pixbuf +, libsoup +, docbook_xsl +, docbook_xml_dtd_42 +, gobject-introspection +, inkscape +, poppler_utils +, desktop-file-utils +, wrapGAppsHook +, python3 +, gsettings-desktop-schemas +}: + +stdenv.mkDerivation rec { + pname = "gnome-documents"; + version = "3.34.0"; + + src = fetchurl { + url = "mirror://gnome/sources/gnome-documents/${stdenv.lib.versions.majorMinor version}/${pname}-${version}.tar.xz"; + sha256 = "1qph567mapg3s1a26k7b8y57g9bklhj2mh8xm758z9zkms20xafq"; + }; + + nativeBuildInputs = [ + meson + ninja + pkgconfig + gettext + itstool + libxslt + desktop-file-utils + docbook_xsl + docbook_xml_dtd_42 + wrapGAppsHook + python3 + + # building getting started + inkscape + poppler_utils + ]; + + buildInputs = [ + gtk3 + glib + gsettings-desktop-schemas + gdk-pixbuf + gnome3.adwaita-icon-theme + evince + libsoup + webkitgtk + gjs + gobject-introspection + tracker + tracker-miners + libgdata + gnome-desktop + libzapojit + libgepub + ]; + + doCheck = true; + + mesonFlags = [ + "-Dgetting_started=true" + ]; + + postPatch = '' + chmod +x meson_post_install.py # patchShebangs requires executable file + patchShebangs meson_post_install.py + ''; + + preFixup = '' + substituteInPlace $out/bin/gnome-documents --replace gapplication "${glib.bin}/bin/gapplication" + ''; + + passthru = { + updateScript = gnome3.updateScript { + packageName = pname; + attrPath = "gnome3.${pname}"; + }; + }; + + meta = with stdenv.lib; { + homepage = "https://wiki.gnome.org/Apps/Documents"; + description = "Document manager application designed to work with GNOME 3"; + maintainers = teams.gnome.members; + license = licenses.gpl2; + platforms = platforms.linux; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/apps/gnome-getting-started-docs/default.nix b/nixpkgs/pkgs/desktops/gnome-3/apps/gnome-getting-started-docs/default.nix new file mode 100644 index 000000000000..5d31a42301e4 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/apps/gnome-getting-started-docs/default.nix @@ -0,0 +1,25 @@ +{ stdenv, fetchurl, gnome3, intltool, itstool, libxml2 }: + +stdenv.mkDerivation rec { + pname = "gnome-getting-started-docs"; + version = "3.36.1"; + + src = fetchurl { + url = "mirror://gnome/sources/gnome-getting-started-docs/${stdenv.lib.versions.majorMinor version}/${pname}-${version}.tar.xz"; + sha256 = "09bf9r6brmll14z87ljgivw0nr0nggcgjpbx6lg2835zq36vfmi9"; + }; + + passthru = { + updateScript = gnome3.updateScript { packageName = "gnome-getting-started-docs"; attrPath = "gnome3.gnome-getting-started-docs"; }; + }; + + buildInputs = [ intltool itstool libxml2 ]; + + meta = with stdenv.lib; { + homepage = "https://live.gnome.org/DocumentationProject"; + description = "Help a new user get started in GNOME"; + maintainers = teams.gnome.members; + license = licenses.cc-by-sa-30; + platforms = platforms.linux; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/apps/gnome-logs/default.nix b/nixpkgs/pkgs/desktops/gnome-3/apps/gnome-logs/default.nix new file mode 100644 index 000000000000..7eda4a706cab --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/apps/gnome-logs/default.nix @@ -0,0 +1,45 @@ +{ stdenv, fetchurl, meson, ninja, pkgconfig, gnome3, glib, gtk3, wrapGAppsHook +, gettext, itstool, libxml2, libxslt, docbook_xsl, docbook_xml_dtd_43, systemd, python3, gsettings-desktop-schemas }: + +stdenv.mkDerivation rec { + pname = "gnome-logs"; + version = "3.34.0"; + + src = fetchurl { + url = "mirror://gnome/sources/gnome-logs/${stdenv.lib.versions.majorMinor version}/${pname}-${version}.tar.xz"; + sha256 = "16jfwg912asirrdmipf6wh7zr5zrww3nyhf99mi230y8hmqazx0m"; + }; + + mesonFlags = [ + "-Dman=true" + ]; + + nativeBuildInputs = [ + python3 + meson ninja pkgconfig wrapGAppsHook gettext itstool + libxml2 libxslt docbook_xsl docbook_xml_dtd_43 + ]; + buildInputs = [ glib gtk3 systemd gsettings-desktop-schemas gnome3.adwaita-icon-theme ]; + + postPatch = '' + chmod +x meson_post_install.py + patchShebangs meson_post_install.py + ''; + + doCheck = true; + + passthru = { + updateScript = gnome3.updateScript { + packageName = "gnome-logs"; + attrPath = "gnome3.gnome-logs"; + }; + }; + + meta = with stdenv.lib; { + homepage = "https://wiki.gnome.org/Apps/Logs"; + description = "A log viewer for the systemd journal"; + maintainers = teams.gnome.members; + license = licenses.gpl3; + platforms = platforms.linux; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/apps/gnome-maps/default.nix b/nixpkgs/pkgs/desktops/gnome-3/apps/gnome-maps/default.nix new file mode 100644 index 000000000000..b00c6f5dd4eb --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/apps/gnome-maps/default.nix @@ -0,0 +1,57 @@ +{ stdenv, fetchurl, meson, ninja, gettext, python3, pkgconfig, gnome3, gtk3 +, gobject-introspection, gdk-pixbuf, librsvg, libgweather +, geoclue2, wrapGAppsHook, folks, libchamplain, gfbgraph, libsoup, gsettings-desktop-schemas +, webkitgtk, gjs, libgee, geocode-glib, evolution-data-server, gnome-online-accounts }: + +let + pname = "gnome-maps"; + version = "3.36.1"; +in stdenv.mkDerivation rec { + name = "${pname}-${version}"; + + src = fetchurl { + url = "mirror://gnome/sources/${pname}/${stdenv.lib.versions.majorMinor version}/${name}.tar.xz"; + sha256 = "1yajq2pxd4fbzngwhn92h55rn02psxih8bbdcdxgg66qdbcyychs"; + }; + + doCheck = true; + + nativeBuildInputs = [ meson ninja pkgconfig gettext python3 wrapGAppsHook ]; + buildInputs = [ + gobject-introspection + gtk3 geoclue2 gjs libgee folks gfbgraph + geocode-glib libchamplain libsoup + gdk-pixbuf librsvg libgweather + gsettings-desktop-schemas evolution-data-server + gnome-online-accounts gnome3.adwaita-icon-theme + webkitgtk + ]; + + postPatch = '' + chmod +x meson_post_install.py # patchShebangs requires executable file + patchShebangs meson_post_install.py + + # The .service file isn't wrapped with the correct environment + # so misses GIR files when started. By re-pointing from the gjs + # entry point to the wrapped binary we get back to a wrapped + # binary. + substituteInPlace "data/org.gnome.Maps.service.in" \ + --replace "Exec=@pkgdatadir@/org.gnome.Maps" \ + "Exec=$out/bin/gnome-maps" + ''; + + passthru = { + updateScript = gnome3.updateScript { + packageName = pname; + attrPath = "gnome3.${pname}"; + }; + }; + + meta = with stdenv.lib; { + homepage = "https://wiki.gnome.org/Apps/Maps"; + description = "A map application for GNOME 3"; + maintainers = teams.gnome.members; + license = licenses.gpl2Plus; + platforms = platforms.linux; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/apps/gnome-music/default.nix b/nixpkgs/pkgs/desktops/gnome-3/apps/gnome-music/default.nix new file mode 100644 index 000000000000..9de452404ce0 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/apps/gnome-music/default.nix @@ -0,0 +1,110 @@ +{ stdenv +, meson +, ninja +, gettext +, fetchurl +, gdk-pixbuf +, tracker +, libxml2 +, python3 +, libnotify +, wrapGAppsHook +, libmediaart +, gobject-introspection +, gnome-online-accounts +, grilo +, grilo-plugins +, pkgconfig +, gtk3 +, pango +, glib +, desktop-file-utils +, appstream-glib +, itstool +, gnome3 +, gst_all_1 +, libdazzle +, libsoup +, gsettings-desktop-schemas +}: + +python3.pkgs.buildPythonApplication rec { + pname = "gnome-music"; + version = "3.36.1"; + + format = "other"; + + src = fetchurl { + url = "mirror://gnome/sources/${pname}/${stdenv.lib.versions.majorMinor version}/${pname}-${version}.tar.xz"; + sha256 = "0cn33r9v2raizq1b8s7s0kb506y91iarc0knm0sljcsqs4qgd03v"; + }; + + nativeBuildInputs = [ + meson + ninja + gettext + itstool + pkgconfig + libxml2 + wrapGAppsHook + desktop-file-utils + appstream-glib + gobject-introspection + ]; + + buildInputs = [ + gtk3 + pango + glib + libmediaart + gnome-online-accounts + gobject-introspection + gdk-pixbuf + gnome3.adwaita-icon-theme + python3 + grilo + grilo-plugins + libnotify + libdazzle + libsoup + gsettings-desktop-schemas + tracker + ] ++ (with gst_all_1; [ + gstreamer + gst-plugins-base + gst-plugins-good + gst-plugins-bad + gst-plugins-ugly + ]); + + propagatedBuildInputs = with python3.pkgs; [ + pycairo + dbus-python + pygobject3 + ]; + + + postPatch = '' + for f in meson_post_conf.py meson_post_install.py; do + chmod +x $f + patchShebangs $f + done + ''; + + doCheck = false; + + passthru = { + updateScript = gnome3.updateScript { + packageName = pname; + attrPath = "gnome3.${pname}"; + }; + }; + + meta = with stdenv.lib; { + homepage = "https://wiki.gnome.org/Apps/Music"; + description = "Music player and management application for the GNOME desktop environment"; + maintainers = teams.gnome.members; + license = licenses.gpl2Plus; + platforms = platforms.linux; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/apps/gnome-nettool/default.nix b/nixpkgs/pkgs/desktops/gnome-3/apps/gnome-nettool/default.nix new file mode 100644 index 000000000000..88072912b663 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/apps/gnome-nettool/default.nix @@ -0,0 +1,36 @@ +{ stdenv, fetchurl, pkgconfig, gnome3, gtk3, wrapGAppsHook +, libgtop, intltool, itstool, libxml2, nmap, inetutils }: + +stdenv.mkDerivation rec { + pname = "gnome-nettool"; + version = "3.8.1"; + + src = fetchurl { + url = "mirror://gnome/sources/${pname}/${stdenv.lib.versions.majorMinor version}/${pname}-${version}.tar.xz"; + sha256 = "1c9cvzvyqgfwa5zzyvp7118pkclji62fkbb33g4y9sp5kw6m397h"; + }; + + nativeBuildInputs = [ pkgconfig ]; + buildInputs = [ + gtk3 wrapGAppsHook libgtop intltool itstool libxml2 + gnome3.adwaita-icon-theme + ]; + + propagatedUserEnvPkgs = [ nmap inetutils ]; + + passthru = { + updateScript = gnome3.updateScript { + packageName = pname; + attrPath = "gnome3.${pname}"; + versionPolicy = "none"; + }; + }; + + meta = with stdenv.lib; { + homepage = "https://gitlab.gnome.org/GNOME/gnome-nettool"; + description = "A collection of networking tools"; + maintainers = teams.gnome.members; + license = licenses.gpl2; + platforms = platforms.linux; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/apps/gnome-notes/default.nix b/nixpkgs/pkgs/desktops/gnome-3/apps/gnome-notes/default.nix new file mode 100644 index 000000000000..03edd5c9bfe9 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/apps/gnome-notes/default.nix @@ -0,0 +1,89 @@ +{ stdenv +, meson +, ninja +, gettext +, fetchurl +, pkgconfig +, wrapGAppsHook +, itstool +, desktop-file-utils +, python3 +, glib +, gtk3 +, evolution-data-server +, gnome-online-accounts +, libuuid +, libhandy +, webkitgtk +, zeitgeist +, gnome3 +, libxml2 +, gsettings-desktop-schemas +, tracker +}: + +let + version = "3.36.1"; +in +stdenv.mkDerivation { + pname = "gnome-notes"; + inherit version; + + src = fetchurl { + url = "mirror://gnome/sources/bijiben/${stdenv.lib.versions.majorMinor version}/bijiben-${version}.tar.xz"; + sha256 = "0421g9czdahk2w2kv7zg4gd9b4q8g1hl483jsfrxy5y7saincbr1"; + }; + + doCheck = true; + + postPatch = '' + chmod +x build-aux/meson_post_install.py + patchShebangs build-aux/meson_post_install.py + ''; + + nativeBuildInputs = [ + meson + ninja + pkgconfig + gettext + itstool + libxml2 + desktop-file-utils + python3 + wrapGAppsHook + ]; + + buildInputs = [ + glib + gtk3 + libuuid + libhandy + webkitgtk + tracker + gnome-online-accounts + zeitgeist + gsettings-desktop-schemas + evolution-data-server + gnome3.adwaita-icon-theme + ]; + + mesonFlags = [ + "-Dzeitgeist=true" + "-Dupdate_mimedb=false" + ]; + + passthru = { + updateScript = gnome3.updateScript { + packageName = "bijiben"; + attrPath = "gnome3.gnome-notes"; + }; + }; + + meta = with stdenv.lib; { + description = "Note editor designed to remain simple to use"; + homepage = "https://wiki.gnome.org/Apps/Notes"; + license = licenses.gpl3; + maintainers = teams.gnome.members; + platforms = platforms.linux; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/apps/gnome-power-manager/default.nix b/nixpkgs/pkgs/desktops/gnome-3/apps/gnome-power-manager/default.nix new file mode 100644 index 000000000000..4a92052763ef --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/apps/gnome-power-manager/default.nix @@ -0,0 +1,60 @@ +{ stdenv +, gettext +, fetchurl +, pkgconfig +, gtk3 +, glib +, meson +, ninja +, upower +, python3 +, desktop-file-utils +, wrapGAppsHook +, gnome3 }: + +let + pname = "gnome-power-manager"; + version = "3.32.0"; +in stdenv.mkDerivation rec { + name = "${pname}-${version}"; + + src = fetchurl { + url = "mirror://gnome/sources/${pname}/${stdenv.lib.versions.majorMinor version}/${name}.tar.xz"; + sha256 = "0drfn3wcc8l4n07qwv6p0rw2dwcd00hwzda282q62l6sasks2b2g"; + }; + + passthru = { + updateScript = gnome3.updateScript { + packageName = pname; + attrPath = "gnome3.${pname}"; + }; + }; + + nativeBuildInputs = [ + meson + ninja + pkgconfig + wrapGAppsHook + gettext + + # needed by meson_post_install.sh + python3 + glib.dev + desktop-file-utils + ]; + + buildInputs = [ + gtk3 + glib + upower + gnome3.adwaita-icon-theme + ]; + + meta = with stdenv.lib; { + homepage = "https://projects-old.gnome.org/gnome-power-manager/"; + description = "View battery and power statistics provided by UPower"; + maintainers = teams.gnome.members; + license = licenses.gpl2Plus; + platforms = platforms.linux; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/apps/gnome-sound-recorder/default.nix b/nixpkgs/pkgs/desktops/gnome-3/apps/gnome-sound-recorder/default.nix new file mode 100644 index 000000000000..f4a72fdfb482 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/apps/gnome-sound-recorder/default.nix @@ -0,0 +1,42 @@ +{ stdenv, fetchurl, pkgconfig, gettext, gobject-introspection, wrapGAppsHook, gjs, glib, gtk3, gdk-pixbuf, gst_all_1, gnome3 +, meson, ninja, python3, desktop-file-utils }: + +stdenv.mkDerivation rec { + pname = "gnome-sound-recorder"; + version = "3.34.0"; + + src = fetchurl { + url = "mirror://gnome/sources/${pname}/${stdenv.lib.versions.majorMinor version}/${pname}-${version}.tar.xz"; + sha256 = "1i442qas2dkp5d9j9j1z1jicb4cb7jkgbcl4c36bmhvaq3hddwa9"; + }; + + nativeBuildInputs = [ + pkgconfig gettext meson ninja gobject-introspection + wrapGAppsHook python3 desktop-file-utils + ]; + buildInputs = [ gjs glib gtk3 gdk-pixbuf ] ++ (with gst_all_1; [ gstreamer.dev gstreamer gst-plugins-base gst-plugins-good gst-plugins-bad ]); + + postPatch = '' + chmod +x build-aux/meson_post_install.py + patchShebangs build-aux/meson_post_install.py + ''; + + # TODO: fix this in gstreamer + # TODO: make stdenv.lib.getBin respect outputBin + PKG_CONFIG_GSTREAMER_1_0_TOOLSDIR = "${gst_all_1.gstreamer.dev}/bin"; + + passthru = { + updateScript = gnome3.updateScript { + packageName = pname; + attrPath = "gnome3.${pname}"; + }; + }; + + meta = with stdenv.lib; { + description = "A simple and modern sound recorder"; + homepage = "https://wiki.gnome.org/Apps/SoundRecorder"; + license = licenses.gpl2Plus; + maintainers = teams.gnome.members; + platforms = platforms.linux; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/apps/gnome-todo/default.nix b/nixpkgs/pkgs/desktops/gnome-3/apps/gnome-todo/default.nix new file mode 100644 index 000000000000..d837ce3968e4 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/apps/gnome-todo/default.nix @@ -0,0 +1,89 @@ +{ stdenv +, fetchurl +, fetchpatch +, meson +, ninja +, pkgconfig +, python3 +, wrapGAppsHook +, gettext +, gnome3 +, glib +, gtk3 +, libpeas +, gnome-online-accounts +, gsettings-desktop-schemas +, evolution-data-server +, libxml2 +, libsoup +, libical +, librest +, json-glib +}: + +stdenv.mkDerivation rec { + pname = "gnome-todo"; + version = "3.28.1"; + + src = fetchurl { + url = "mirror://gnome/sources/${pname}/${stdenv.lib.versions.majorMinor version}/${pname}-${version}.tar.xz"; + sha256 = "08ygqbib72jlf9y0a16k54zz51sncpq2wa18wp81v46q8301ymy7"; + }; + + patches = [ + # fix build with libecal 2.0 + (fetchpatch { + name = "gnome-todo-eds-libecal-2.0.patch"; + url = "https://src.fedoraproject.org/rpms/gnome-todo/raw/bed44b8530f3c79589982e03b430b3a125e9bceb/f/gnome-todo-eds-libecal-2.0.patch"; + sha256 = "1ghrz973skal36j90wm2z13m3panw983r6y0k7z9gpj5lxgz92mq"; + }) + ]; + postPatch = '' + chmod +x meson_post_install.py + patchShebangs meson_post_install.py + ''; + + nativeBuildInputs = [ + meson + ninja + pkgconfig + gettext + python3 + wrapGAppsHook + ]; + + buildInputs = [ + glib + gtk3 + libpeas + gnome-online-accounts + gsettings-desktop-schemas + gnome3.adwaita-icon-theme + # Plug-ins + evolution-data-server + libxml2 + libsoup + libical + librest + json-glib + ]; + + # Fix parallel building: missing dependency from src/gtd-application.c + # Probably remove for 3.30+ https://gitlab.gnome.org/GNOME/gnome-todo/issues/170 + preBuild = "ninja src/gtd-vcs-identifier.h"; + + passthru = { + updateScript = gnome3.updateScript { + packageName = pname; + attrPath = "gnome3.${pname}"; + }; + }; + + meta = with stdenv.lib; { + description = "Personal task manager for GNOME"; + homepage = "https://wiki.gnome.org/Apps/Todo"; + license = licenses.gpl3Plus; + maintainers = teams.gnome.members; + platforms = platforms.linux; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/apps/gnome-weather/default.nix b/nixpkgs/pkgs/desktops/gnome-3/apps/gnome-weather/default.nix new file mode 100644 index 000000000000..407f25165327 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/apps/gnome-weather/default.nix @@ -0,0 +1,46 @@ +{ stdenv, fetchurl, pkgconfig, gnome3, gtk3, wrapGAppsHook, gjs, gobject-introspection +, libgweather, meson, ninja, geoclue2, gnome-desktop, python3, gsettings-desktop-schemas }: + +stdenv.mkDerivation rec { + pname = "gnome-weather"; + version = "3.36.0"; + + src = fetchurl { + url = "mirror://gnome/sources/gnome-weather/${stdenv.lib.versions.majorMinor version}/${pname}-${version}.tar.xz"; + sha256 = "15ahfgqj0rz16y2bdxb7sa4b3b3larg8hn3b41pc5ddnwf9x63zi"; + }; + + nativeBuildInputs = [ pkgconfig meson ninja wrapGAppsHook python3 ]; + buildInputs = [ + gtk3 gjs gobject-introspection gnome-desktop + libgweather gnome3.adwaita-icon-theme geoclue2 gsettings-desktop-schemas + ]; + + postPatch = '' + # The .service file is not wrapped with the correct environment + # so misses GIR files when started. By re-pointing from the gjs + # entry point to the wrapped binary we get back to a wrapped + # binary. + substituteInPlace "data/org.gnome.Weather.service.in" \ + --replace "Exec=@DATA_DIR@/@APP_ID@" \ + "Exec=$out/bin/gnome-weather" + + chmod +x meson_post_install.py + patchShebangs meson_post_install.py + ''; + + passthru = { + updateScript = gnome3.updateScript { + packageName = "gnome-weather"; + attrPath = "gnome3.gnome-weather"; + }; + }; + + meta = with stdenv.lib; { + homepage = "https://wiki.gnome.org/Apps/Weather"; + description = "Access current weather conditions and forecasts"; + maintainers = teams.gnome.members; + license = licenses.gpl2; + platforms = platforms.linux; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/apps/polari/default.nix b/nixpkgs/pkgs/desktops/gnome-3/apps/polari/default.nix new file mode 100644 index 000000000000..394ee86d15a7 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/apps/polari/default.nix @@ -0,0 +1,54 @@ +{ stdenv, itstool, fetchurl, gdk-pixbuf, adwaita-icon-theme +, telepathy-glib, gjs, meson, ninja, gettext, telepathy-idle, libxml2, desktop-file-utils +, pkgconfig, gtk3, glib, libsecret, libsoup, webkitgtk, gobject-introspection, appstream-glib +, gnome3, wrapGAppsHook, telepathy-logger, gspell, gsettings-desktop-schemas }: + +let + pname = "polari"; + version = "3.36.1"; +in stdenv.mkDerivation rec { + name = "${pname}-${version}"; + + src = fetchurl { + url = "mirror://gnome/sources/${pname}/${stdenv.lib.versions.majorMinor version}/${name}.tar.xz"; + sha256 = "1rmmq74g22qrmsg0mjvpzk5403kkpfw0iznvnwxfqbi0dfkamhn4"; + }; + + patches = [ + # Upstream runs the thumbnailer by passing it to gjs. + # If we wrap it in a shell script, gjs can no longer run it. + # Let’s change the code to run the script directly by making it executable and having gjs in shebang. + ./make-thumbnailer-wrappable.patch + ]; + + propagatedUserEnvPkgs = [ telepathy-idle telepathy-logger ]; + + nativeBuildInputs = [ + meson ninja pkgconfig itstool gettext wrapGAppsHook libxml2 + desktop-file-utils gobject-introspection appstream-glib + ]; + + buildInputs = [ + gtk3 glib adwaita-icon-theme gsettings-desktop-schemas + telepathy-glib telepathy-logger gjs gspell gdk-pixbuf libsecret libsoup webkitgtk + ]; + + postFixup = '' + wrapGApp "$out/share/polari/thumbnailer.js" + ''; + + passthru = { + updateScript = gnome3.updateScript { + packageName = pname; + attrPath = "gnome3.${pname}"; + }; + }; + + meta = with stdenv.lib; { + homepage = "https://wiki.gnome.org/Apps/Polari"; + description = "IRC chat client designed to integrate with the GNOME desktop"; + maintainers = teams.gnome.members; + license = licenses.gpl2; + platforms = platforms.linux; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/apps/polari/make-thumbnailer-wrappable.patch b/nixpkgs/pkgs/desktops/gnome-3/apps/polari/make-thumbnailer-wrappable.patch new file mode 100644 index 000000000000..0fb09eb154af --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/apps/polari/make-thumbnailer-wrappable.patch @@ -0,0 +1,24 @@ +diff --git a/src/thumbnailer.js b/src/thumbnailer.js +old mode 100644 +new mode 100755 +index e2ad0a5..7ebf08a +--- a/src/thumbnailer.js ++++ b/src/thumbnailer.js +@@ -1,3 +1,4 @@ ++#!/usr/bin/env gjs + imports.gi.versions.Gdk = '3.0'; + imports.gi.versions.Gtk = '3.0'; + +diff --git a/src/urlPreview.js b/src/urlPreview.js +index f17e0be..ccffc32 100644 +--- a/src/urlPreview.js ++++ b/src/urlPreview.js +@@ -44,7 +44,7 @@ class Thumbnailer { + _generateThumbnail(data) { + let { filename, uri } = data; + this._subProc = Gio.Subprocess.new( +- ['gjs', `${pkg.pkgdatadir}/thumbnailer.js`, uri, filename], ++ [`${pkg.pkgdatadir}/thumbnailer.js`, uri, filename], + Gio.SubprocessFlags.NONE); + this._subProc.wait_async(null, (o, res) => { + try { diff --git a/nixpkgs/pkgs/desktops/gnome-3/apps/seahorse/default.nix b/nixpkgs/pkgs/desktops/gnome-3/apps/seahorse/default.nix new file mode 100644 index 000000000000..ec6791e32311 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/apps/seahorse/default.nix @@ -0,0 +1,85 @@ +{ stdenv +, fetchurl +, fetchpatch +, vala +, meson +, ninja +, libpwquality +, pkgconfig +, gtk3 +, glib +, wrapGAppsHook +, itstool +, gnupg +, libsoup +, gnome3 +, gpgme +, python3 +, openldap +, gcr +, libsecret +, avahi +, p11-kit +, openssh +, gsettings-desktop-schemas +, libhandy +}: + +stdenv.mkDerivation rec { + pname = "seahorse"; + version = "3.36"; + + src = fetchurl { + url = "mirror://gnome/sources/${pname}/${stdenv.lib.versions.majorMinor version}/${pname}-${version}.tar.xz"; + sha256 = "1nqn4a6dr4l1fpzj3mv4swhpnvhjcqlwsyhwm59sdzqgdfx4hbwr"; + }; + + doCheck = true; + + nativeBuildInputs = [ + meson + ninja + pkgconfig + vala + itstool + wrapGAppsHook + python3 + ]; + + buildInputs = [ + gtk3 + glib + gcr + gsettings-desktop-schemas + gnupg + gnome3.adwaita-icon-theme + gpgme + libsecret + avahi + libsoup + p11-kit + openssh + openldap + libpwquality + libhandy + ]; + + postPatch = '' + patchShebangs build-aux/ + ''; + + passthru = { + updateScript = gnome3.updateScript { + packageName = pname; + attrPath = "gnome3.${pname}"; + }; + }; + + meta = with stdenv.lib; { + homepage = "https://wiki.gnome.org/Apps/Seahorse"; + description = "Application for managing encryption keys and passwords in the GnomeKeyring"; + maintainers = teams.gnome.members; + license = licenses.gpl2; + platforms = platforms.linux; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/apps/vinagre/default.nix b/nixpkgs/pkgs/desktops/gnome-3/apps/vinagre/default.nix new file mode 100644 index 000000000000..e04238b4b16f --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/apps/vinagre/default.nix @@ -0,0 +1,34 @@ +{ stdenv, fetchurl, pkgconfig, gtk3, gnome3, vte, libxml2, gtk-vnc, intltool +, libsecret, itstool, wrapGAppsHook, librsvg }: + +stdenv.mkDerivation rec { + pname = "vinagre"; + version = "3.22.0"; + + src = fetchurl { + url = "mirror://gnome/sources/vinagre/${stdenv.lib.versions.majorMinor version}/${pname}-${version}.tar.xz"; + sha256 = "cd1cdbacca25c8d1debf847455155ee798c3e67a20903df8b228d4ece5505e82"; + }; + + nativeBuildInputs = [ pkgconfig intltool itstool wrapGAppsHook ]; + buildInputs = [ + gtk3 vte libxml2 gtk-vnc libsecret gnome3.adwaita-icon-theme librsvg + ]; + + NIX_CFLAGS_COMPILE = "-Wno-format-nonliteral"; + + passthru = { + updateScript = gnome3.updateScript { + packageName = "vinagre"; + attrPath = "gnome3.vinagre"; + }; + }; + + meta = with stdenv.lib; { + description = "Remote desktop viewer for GNOME"; + homepage = "https://wiki.gnome.org/Apps/Vinagre"; + license = licenses.gpl2Plus; + maintainers = teams.gnome.members; + platforms = platforms.linux; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/core/adwaita-icon-theme/default.nix b/nixpkgs/pkgs/desktops/gnome-3/core/adwaita-icon-theme/default.nix new file mode 100644 index 000000000000..6eafa874b836 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/core/adwaita-icon-theme/default.nix @@ -0,0 +1,34 @@ +{ stdenv, fetchurl, pkgconfig, intltool, gnome3 +, iconnamingutils, gtk3, gdk-pixbuf, librsvg, hicolor-icon-theme }: + +stdenv.mkDerivation rec { + pname = "adwaita-icon-theme"; + version = "3.36.0"; + + src = fetchurl { + url = "mirror://gnome/sources/adwaita-icon-theme/${stdenv.lib.versions.majorMinor version}/${pname}-${version}.tar.xz"; + sha256 = "066m3vd6k6xf3ap1ahrbw5hnx2322wf0qsnywcxjsj6snq9225qs"; + }; + + # For convenience, we can specify adwaita-icon-theme only in packages + propagatedBuildInputs = [ hicolor-icon-theme ]; + + buildInputs = [ gdk-pixbuf librsvg ]; + + nativeBuildInputs = [ pkgconfig intltool iconnamingutils gtk3 ]; + + # remove a tree of dirs with no files within + postInstall = '' rm -rf "$out/locale" ''; + + passthru = { + updateScript = gnome3.updateScript { + packageName = "adwaita-icon-theme"; + attrPath = "gnome3.adwaita-icon-theme"; + }; + }; + + meta = with stdenv.lib; { + platforms = with platforms; linux ++ darwin; + maintainers = teams.gnome.members; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/core/baobab/default.nix b/nixpkgs/pkgs/desktops/gnome-3/core/baobab/default.nix new file mode 100644 index 000000000000..af39d3a3c053 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/core/baobab/default.nix @@ -0,0 +1,34 @@ +{ stdenv, gettext, fetchurl, vala, desktop-file-utils +, meson, ninja, pkgconfig, gtk3, glib, libxml2 +, wrapGAppsHook, itstool, gnome3 }: + +let + pname = "baobab"; + version = "3.34.0"; +in stdenv.mkDerivation rec { + name = "${pname}-${version}"; + + src = fetchurl { + url = "mirror://gnome/sources/${pname}/${stdenv.lib.versions.majorMinor version}/${name}.tar.xz"; + sha256 = "01w6m5ylyqs4wslpjn1hg6n6ynwh3rghksak0qs8r9m6dm3dkss6"; + }; + + nativeBuildInputs = [ meson ninja pkgconfig vala gettext itstool libxml2 desktop-file-utils wrapGAppsHook ]; + buildInputs = [ gtk3 glib gnome3.adwaita-icon-theme ]; + + doCheck = true; + + passthru = { + updateScript = gnome3.updateScript { + packageName = pname; + }; + }; + + meta = with stdenv.lib; { + description = "Graphical application to analyse disk usage in any GNOME environment"; + homepage = "https://wiki.gnome.org/Apps/DiskUsageAnalyzer"; + license = licenses.gpl2; + maintainers = teams.gnome.members; + platforms = platforms.linux; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/core/caribou/default.nix b/nixpkgs/pkgs/desktops/gnome-3/core/caribou/default.nix new file mode 100644 index 000000000000..b9da1ab1c163 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/core/caribou/default.nix @@ -0,0 +1,54 @@ +{ fetchurl, stdenv, pkgconfig, gnome3, glib, gtk3, clutter, dbus, python3, libxml2 +, libxklavier, libXtst, gtk2, intltool, libxslt, at-spi2-core, autoreconfHook +, wrapGAppsHook, libgee }: + +let + pname = "caribou"; + version = "0.4.21"; + pythonEnv = python3.withPackages ( ps: with ps; [ pygobject3 ] ); +in stdenv.mkDerivation rec { + name = "${pname}-${version}"; + + src = fetchurl { + url = "mirror://gnome/sources/${pname}/${stdenv.lib.versions.majorMinor version}/${name}.tar.xz"; + sha256 = "0mfychh1q3dx0b96pjz9a9y112bm9yqyim40yykzxx1hppsdjhww"; + }; + + patches = [ + # Fix crash in GNOME Flashback + # https://bugzilla.gnome.org/show_bug.cgi?id=791001 + (fetchurl { + url = "https://bugzilla.gnome.org/attachment.cgi?id=364774"; + sha256 = "15k1455grf6knlrxqbjnk7sals1730b0whj30451scp46wyvykvd"; + }) + ]; + + nativeBuildInputs = [ pkgconfig intltool libxslt libxml2 autoreconfHook wrapGAppsHook ]; + + buildInputs = [ + glib gtk3 clutter at-spi2-core dbus pythonEnv python3.pkgs.pygobject3 + libXtst gtk2 + ]; + + propagatedBuildInputs = [ libgee libxklavier ]; + + postPatch = '' + patchShebangs . + substituteInPlace libcaribou/Makefile.am --replace "--shared-library=libcaribou.so.0" "--shared-library=$out/lib/libcaribou.so.0" + ''; + + passthru = { + updateScript = gnome3.updateScript { + packageName = pname; + attrPath = "gnome3.${pname}"; + }; + }; + + meta = with stdenv.lib; { + description = "An input assistive technology intended for switch and pointer users"; + homepage = "https://wiki.gnome.org/Projects/Caribou"; + license = licenses.lgpl21; + maintainers = teams.gnome.members; + platforms = platforms.linux; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/core/dconf-editor/default.nix b/nixpkgs/pkgs/desktops/gnome-3/core/dconf-editor/default.nix new file mode 100644 index 000000000000..ba8a85352fd0 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/core/dconf-editor/default.nix @@ -0,0 +1,38 @@ +{ stdenv, fetchurl, meson, ninja, vala, libxslt, pkgconfig, glib, gtk3, gnome3, python3, dconf +, libxml2, gettext, docbook_xsl, wrapGAppsHook, gobject-introspection }: + +let + pname = "dconf-editor"; + version = "3.36.0"; +in stdenv.mkDerivation rec { + name = "${pname}-${version}"; + + src = fetchurl { + url = "mirror://gnome/sources/${pname}/${stdenv.lib.versions.majorMinor version}/${name}.tar.xz"; + sha256 = "14q678bwgmhzmi7565xhhw51y8b0pv3cqh0f411qwzwif1bd1vkj"; + }; + + nativeBuildInputs = [ + meson ninja vala libxslt pkgconfig wrapGAppsHook + gettext docbook_xsl libxml2 gobject-introspection python3 + ]; + + buildInputs = [ glib gtk3 dconf ]; + + postPatch = '' + chmod +x meson_post_install.py + patchShebangs meson_post_install.py + ''; + + passthru = { + updateScript = gnome3.updateScript { + packageName = pname; + attrPath = "gnome3.${pname}"; + }; + }; + + meta = with stdenv.lib; { + platforms = platforms.linux; + maintainers = teams.gnome.members; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/core/empathy/default.nix b/nixpkgs/pkgs/desktops/gnome-3/core/empathy/default.nix new file mode 100644 index 000000000000..83c1f5d4a56f --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/core/empathy/default.nix @@ -0,0 +1,147 @@ +{ stdenv +, intltool +, fetchurl +, webkitgtk +, pkgconfig +, gtk3 +, glib +, file +, librsvg +, gnome3 +, gdk-pixbuf +, python3 +, telepathy-glib +, telepathy-farstream +, clutter-gtk +, clutter-gst +, gst_all_1 +, cogl +, gnome-online-accounts +, gcr +, libsecret +, folks +, libpulseaudio +, telepathy-mission-control +, telepathy-logger +, libnotify +, clutter +, libsoup +, gnutls +, evolution-data-server +, yelp-xsl +, libcanberra-gtk3 +, p11-kit +, farstream +, libtool +, shared-mime-info +, wrapGAppsHook +, itstool +, libxml2 +, libxslt +, icu +, libgee +, gsettings-desktop-schemas +, isocodes +, enchant +, libchamplain +, geoclue2 +, geocode-glib +, cheese +, libgudev +}: + +stdenv.mkDerivation rec { + pname = "empathy"; + version = "3.25.90"; + + src = fetchurl { + url = "mirror://gnome/sources/empathy/${stdenv.lib.versions.majorMinor version}/${pname}-${version}.tar.xz"; + sha256 = "0sn10fcymc6lyrabk7vx8lpvlaxxkqnmcwj9zdkfa8qf3388k4nc"; + }; + + propagatedBuildInputs = [ + folks + telepathy-logger + evolution-data-server + telepathy-mission-control + ]; + + nativeBuildInputs = [ + pkgconfig + libtool + intltool + itstool + file + wrapGAppsHook + libxml2 + libxslt + yelp-xsl + python3 + ]; + + buildInputs = [ + gtk3 + glib + webkitgtk + icu + gnome-online-accounts + telepathy-glib + clutter-gtk + clutter-gst + cogl + gst_all_1.gstreamer + gst_all_1.gst-plugins-base + gcr + libsecret + libpulseaudio + gdk-pixbuf + libnotify + clutter + libsoup + gnutls + libgee + p11-kit + libcanberra-gtk3 + telepathy-farstream + farstream + gnome3.adwaita-icon-theme + gsettings-desktop-schemas + librsvg + + # Spell-checking + enchant + isocodes + + # Display maps, location awareness, geocode support + libchamplain + geoclue2 + geocode-glib + + # Cheese webcam support, camera monitoring + cheese + libgudev + ]; + + enableParallelBuilding = true; + + preFixup = '' + gappsWrapperArgs+=( + --prefix XDG_DATA_DIRS : "${shared-mime-info}/share" + ) + ''; + + passthru = { + updateScript = gnome3.updateScript { + packageName = "empathy"; + versionPolicy = "none"; + }; + }; + + meta = with stdenv.lib; { + homepage = "https://wiki.gnome.org/Apps/Empathy"; + description = "Messaging program which supports text, voice, video chat, and file transfers over many different protocols"; + maintainers = teams.gnome.members; + license = [ licenses.gpl2 ]; + platforms = platforms.linux; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/core/eog/default.nix b/nixpkgs/pkgs/desktops/gnome-3/core/eog/default.nix new file mode 100644 index 000000000000..d7a4b32f785c --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/core/eog/default.nix @@ -0,0 +1,51 @@ +{ fetchurl, stdenv, meson, ninja, gettext, itstool, pkgconfig, libxml2, libjpeg, libpeas, gnome3 +, gtk3, glib, gsettings-desktop-schemas, adwaita-icon-theme, gnome-desktop, lcms2, gdk-pixbuf, exempi +, shared-mime-info, wrapGAppsHook, librsvg, libexif, gobject-introspection, python3 }: + +let + pname = "eog"; + version = "3.36.1"; +in stdenv.mkDerivation rec { + name = "${pname}-${version}"; + + src = fetchurl { + url = "mirror://gnome/sources/${pname}/${stdenv.lib.versions.majorMinor version}/${name}.tar.xz"; + sha256 = "15cwghcbx9x1xmv1dwmwcdxplnhf25w6f4dhx8hk6fjymaks2m74"; + }; + + nativeBuildInputs = [ meson ninja pkgconfig gettext itstool wrapGAppsHook libxml2 gobject-introspection python3 ]; + + buildInputs = [ + libjpeg gtk3 gdk-pixbuf glib libpeas librsvg lcms2 gnome-desktop libexif exempi + gsettings-desktop-schemas shared-mime-info adwaita-icon-theme + ]; + + postPatch = '' + chmod +x meson_post_install.py + patchShebangs meson_post_install.py + ''; + + preFixup = '' + gappsWrapperArgs+=( + # Thumbnailers + --prefix XDG_DATA_DIRS : "${gdk-pixbuf}/share" + --prefix XDG_DATA_DIRS : "${librsvg}/share" + --prefix XDG_DATA_DIRS : "${shared-mime-info}/share" + ) + ''; + + passthru = { + updateScript = gnome3.updateScript { + packageName = pname; + attrPath = "gnome3.${pname}"; + }; + }; + + meta = with stdenv.lib; { + description = "GNOME image viewer"; + homepage = "https://wiki.gnome.org/Apps/EyeOfGnome"; + license = licenses.gpl2Plus; + maintainers = teams.gnome.members; + platforms = platforms.unix; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/core/epiphany/default.nix b/nixpkgs/pkgs/desktops/gnome-3/core/epiphany/default.nix new file mode 100644 index 000000000000..5ede0184d219 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/core/epiphany/default.nix @@ -0,0 +1,110 @@ +{ stdenv +, meson +, ninja +, gettext +, fetchurl +, pkgconfig +, gtk3 +, glib +, icu +, wrapGAppsHook +, gnome3 +, libxml2 +, libxslt +, itstool +, webkitgtk +, libsoup +, glib-networking +, libsecret +, gnome-desktop +, libnotify +, p11-kit +, sqlite +, gcr +, isocodes +, desktop-file-utils +, python3 +, nettle +, gdk-pixbuf +, gst_all_1 +, json-glib +, libdazzle +, libhandy +, buildPackages +}: + +stdenv.mkDerivation rec { + pname = "epiphany"; + version = "3.36.1"; + + src = fetchurl { + url = "mirror://gnome/sources/epiphany/${stdenv.lib.versions.majorMinor version}/${pname}-${version}.tar.xz"; + sha256 = "1dpgp1fqkn6azdrkw9imbrxi5d6mznrhfisrsiv88cf68gxk7wpn"; + }; + + # Tests need an X display + mesonFlags = [ + "-Dunit_tests=disabled" + ]; + + nativeBuildInputs = [ + desktop-file-utils + gettext + itstool + libxslt + meson + ninja + pkgconfig + python3 + wrapGAppsHook + buildPackages.glib + ]; + + buildInputs = [ + gcr + gdk-pixbuf + glib + glib-networking + gnome-desktop + gnome3.adwaita-icon-theme + gst_all_1.gst-libav + gst_all_1.gst-plugins-bad + gst_all_1.gst-plugins-base + gst_all_1.gst-plugins-good + gst_all_1.gst-plugins-ugly + gst_all_1.gstreamer + gtk3 + icu + isocodes + json-glib + libdazzle + libhandy + libnotify + libsecret + libsoup + libxml2 + nettle + p11-kit + sqlite + webkitgtk + ]; + + postPatch = '' + chmod +x post_install.py # patchShebangs requires executable file + patchShebangs post_install.py + ''; + + passthru = { + updateScript = gnome3.updateScript { + packageName = pname; + }; + }; + + meta = with stdenv.lib; { + homepage = "https://wiki.gnome.org/Apps/Epiphany"; + description = "WebKit based web browser for GNOME"; + maintainers = teams.gnome.members; + license = licenses.gpl2; + platforms = platforms.linux; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/core/evince/default.nix b/nixpkgs/pkgs/desktops/gnome-3/core/evince/default.nix new file mode 100644 index 000000000000..2852c816e4b5 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/core/evince/default.nix @@ -0,0 +1,133 @@ +{ stdenv +, fetchurl +, meson +, ninja +, pkgconfig +, gettext +, libxml2 +, appstream +, glib +, gtk3 +, pango +, atk +, gdk-pixbuf +, shared-mime-info +, itstool +, gnome3 +, poppler +, ghostscriptX +, djvulibre +, libspectre +, libarchive +, libsecret +, wrapGAppsHook +, librsvg +, gobject-introspection +, yelp-tools +, gspell +, adwaita-icon-theme +, gsettings-desktop-schemas +, gnome-desktop +, dbus +, python3 +, texlive +, t1lib +, gst_all_1 +, gtk-doc +, docbook-xsl-nons +, docbook_xml_dtd_43 +, supportMultimedia ? true # PDF multimedia +, libgxps +, supportXPS ? true # Open XML Paper Specification via libgxps +}: + +stdenv.mkDerivation rec { + pname = "evince"; + version = "3.36.0"; + + outputs = [ "out" "dev" "devdoc" ]; + + src = fetchurl { + url = "mirror://gnome/sources/evince/${stdenv.lib.versions.majorMinor version}/${pname}-${version}.tar.xz"; + sha256 = "1a7v534sqbg7rlrvg9x1rffdf6p9n37blp3wix6anyfl6i99n7c5"; + }; + + postPatch = '' + chmod +x meson_post_install.py + patchShebangs meson_post_install.py + ''; + + nativeBuildInputs = [ + appstream + docbook-xsl-nons + docbook_xml_dtd_43 + gettext + gobject-introspection + gtk-doc + itstool + meson + ninja + pkgconfig + python3 + wrapGAppsHook + yelp-tools + ]; + + buildInputs = [ + adwaita-icon-theme + atk + dbus # only needed to find the service directory + djvulibre + gdk-pixbuf + ghostscriptX + glib + gnome-desktop + gsettings-desktop-schemas + gspell + gtk3 + libarchive + librsvg + libsecret + libspectre + libxml2 + pango + poppler + t1lib + texlive.bin.core # kpathsea for DVI support + ] ++ stdenv.lib.optional supportXPS libgxps + ++ stdenv.lib.optionals supportMultimedia (with gst_all_1; [ + gstreamer gst-plugins-base gst-plugins-good gst-plugins-bad gst-plugins-ugly gst-libav ]); + + mesonFlags = [ + "-Dnautilus=false" + "-Dps=enabled" + ]; + + NIX_CFLAGS_COMPILE = "-I${glib.dev}/include/gio-unix-2.0"; + + preFixup = '' + gappsWrapperArgs+=(--prefix XDG_DATA_DIRS : "${shared-mime-info}/share") + ''; + + passthru = { + updateScript = gnome3.updateScript { + packageName = pname; + }; + }; + + meta = with stdenv.lib; { + homepage = "https://wiki.gnome.org/Apps/Evince"; + description = "GNOME's document viewer"; + + longDescription = '' + Evince is a document viewer for multiple document formats. It + currently supports PDF, PostScript, DjVu, TIFF and DVI. The goal + of Evince is to replace the multiple document viewers that exist + on the GNOME Desktop with a single simple application. + ''; + + license = stdenv.lib.licenses.gpl2Plus; + platforms = platforms.linux; + maintainers = teams.gnome.members ++ [ maintainers.vcunat ]; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/core/evolution-data-server/default.nix b/nixpkgs/pkgs/desktops/gnome-3/core/evolution-data-server/default.nix new file mode 100644 index 000000000000..f5d60ee917ce --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/core/evolution-data-server/default.nix @@ -0,0 +1,64 @@ +{ fetchurl, stdenv, substituteAll, pkgconfig, gnome3, python3, gobject-introspection +, intltool, libsoup, libxml2, libsecret, icu, sqlite, tzdata, libcanberra-gtk3, gcr +, p11-kit, db, nspr, nss, libical, gperf, wrapGAppsHook, glib-networking, pcre +, vala, cmake, ninja, kerberos, openldap, webkitgtk, libaccounts-glib, json-glib +, glib, gtk3, gnome-online-accounts, libgweather, libgdata, gsettings-desktop-schemas }: + +stdenv.mkDerivation rec { + pname = "evolution-data-server"; + version = "3.36.1"; + + outputs = [ "out" "dev" ]; + + src = fetchurl { + url = "mirror://gnome/sources/evolution-data-server/${stdenv.lib.versions.majorMinor version}/${pname}-${version}.tar.xz"; + sha256 = "15k7k225jfv5a45hmjk94xq90np2r9f5v8yj0xi3166vvlp2n4hk"; + }; + + patches = [ + (substituteAll { + src = ./fix-paths.patch; + inherit tzdata; + }) + ]; + + prePatch = '' + substitute ${./hardcode-gsettings.patch} hardcode-gsettings.patch --subst-var-by ESD_GSETTINGS_PATH ${glib.makeSchemaPath "$out" "${pname}-${version}"} \ + --subst-var-by GDS_GSETTINGS_PATH ${glib.getSchemaPath gsettings-desktop-schemas} + patches="$patches $PWD/hardcode-gsettings.patch" + ''; + + nativeBuildInputs = [ + cmake ninja pkgconfig intltool python3 gperf wrapGAppsHook gobject-introspection vala + ]; + buildInputs = [ + glib libsoup libxml2 gtk3 gnome-online-accounts + gcr p11-kit libgweather libgdata libaccounts-glib json-glib + icu sqlite kerberos openldap webkitgtk glib-networking + libcanberra-gtk3 pcre + ]; + + propagatedBuildInputs = [ libsecret nss nspr libical db libsoup ]; + + cmakeFlags = [ + "-DENABLE_UOA=OFF" + "-DENABLE_VALA_BINDINGS=ON" + "-DENABLE_INTROSPECTION=ON" + "-DCMAKE_SKIP_BUILD_RPATH=OFF" + "-DINCLUDE_INSTALL_DIR=${placeholder "dev"}/include" + ]; + + passthru = { + updateScript = gnome3.updateScript { + packageName = "evolution-data-server"; + }; + }; + + meta = with stdenv.lib; { + description = "Unified backend for programs that work with contacts, tasks, and calendar information"; + homepage = "https://wiki.gnome.org/Apps/Evolution"; + license = licenses.lgpl2; + maintainers = teams.gnome.members; + platforms = platforms.linux; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/core/evolution-data-server/fix-paths.patch b/nixpkgs/pkgs/desktops/gnome-3/core/evolution-data-server/fix-paths.patch new file mode 100644 index 000000000000..334235516591 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/core/evolution-data-server/fix-paths.patch @@ -0,0 +1,11 @@ +--- a/src/calendar/libecal/e-cal-system-timezone.c ++++ b/src/calendar/libecal/e-cal-system-timezone.c +@@ -26,7 +26,7 @@ + #ifdef HAVE_SOLARIS + #define SYSTEM_ZONEINFODIR "/usr/share/lib/zoneinfo/tab" + #else +-#define SYSTEM_ZONEINFODIR "/usr/share/zoneinfo" ++#define SYSTEM_ZONEINFODIR "@tzdata@/share/zoneinfo" + #endif + + #define ETC_TIMEZONE "/etc/timezone" diff --git a/nixpkgs/pkgs/desktops/gnome-3/core/evolution-data-server/hardcode-gsettings.patch b/nixpkgs/pkgs/desktops/gnome-3/core/evolution-data-server/hardcode-gsettings.patch new file mode 100644 index 000000000000..4e345c3cb3ca --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/core/evolution-data-server/hardcode-gsettings.patch @@ -0,0 +1,526 @@ +diff --git a/src/addressbook/libebook/e-book-client.c b/src/addressbook/libebook/e-book-client.c +index 2c0557c3c..5955aa55e 100644 +--- a/src/addressbook/libebook/e-book-client.c ++++ b/src/addressbook/libebook/e-book-client.c +@@ -1989,7 +1989,20 @@ e_book_client_get_self (ESourceRegistry *registry, + + *out_client = book_client; + +- settings = g_settings_new (SELF_UID_PATH_ID); ++ { ++ GSettingsSchemaSource *schema_source; ++ GSettingsSchema *schema; ++ schema_source = g_settings_schema_source_new_from_directory("@ESD_GSETTINGS_PATH@", ++ g_settings_schema_source_get_default(), ++ TRUE, ++ NULL); ++ schema = g_settings_schema_source_lookup(schema_source, ++ SELF_UID_PATH_ID, ++ FALSE); ++ settings = g_settings_new_full(schema, NULL, NULL); ++ g_settings_schema_source_unref(schema_source); ++ g_settings_schema_unref(schema); ++ } + uid = g_settings_get_string (settings, SELF_UID_KEY); + g_object_unref (settings); + +@@ -2057,7 +2070,20 @@ e_book_client_set_self (EBookClient *client, + g_return_val_if_fail ( + e_contact_get_const (contact, E_CONTACT_UID) != NULL, FALSE); + +- settings = g_settings_new (SELF_UID_PATH_ID); ++ { ++ GSettingsSchemaSource *schema_source; ++ GSettingsSchema *schema; ++ schema_source = g_settings_schema_source_new_from_directory("@ESD_GSETTINGS_PATH@", ++ g_settings_schema_source_get_default(), ++ TRUE, ++ NULL); ++ schema = g_settings_schema_source_lookup(schema_source, ++ SELF_UID_PATH_ID, ++ FALSE); ++ settings = g_settings_new_full(schema, NULL, NULL); ++ g_settings_schema_source_unref(schema_source); ++ g_settings_schema_unref(schema); ++ } + g_settings_set_string ( + settings, SELF_UID_KEY, + e_contact_get_const (contact, E_CONTACT_UID)); +@@ -2093,8 +2119,20 @@ e_book_client_is_self (EContact *contact) + * unfortunately the API doesn't allow that. + */ + g_mutex_lock (&mutex); +- if (!settings) +- settings = g_settings_new (SELF_UID_PATH_ID); ++ if (!settings) { ++ GSettingsSchemaSource *schema_source; ++ GSettingsSchema *schema; ++ schema_source = g_settings_schema_source_new_from_directory("@ESD_GSETTINGS_PATH@", ++ g_settings_schema_source_get_default(), ++ TRUE, ++ NULL); ++ schema = g_settings_schema_source_lookup(schema_source, ++ SELF_UID_PATH_ID, ++ FALSE); ++ settings = g_settings_new_full(schema, NULL, NULL); ++ g_settings_schema_source_unref(schema_source); ++ g_settings_schema_unref(schema); ++ } + uid = g_settings_get_string (settings, SELF_UID_KEY); + g_mutex_unlock (&mutex); + +diff --git a/src/addressbook/libebook/e-book.c b/src/addressbook/libebook/e-book.c +index 3396b57c0..ac6420b2e 100644 +--- a/src/addressbook/libebook/e-book.c ++++ b/src/addressbook/libebook/e-book.c +@@ -2594,7 +2594,20 @@ e_book_get_self (ESourceRegistry *registry, + return FALSE; + } + +- settings = g_settings_new (SELF_UID_PATH_ID); ++ { ++ GSettingsSchemaSource *schema_source; ++ GSettingsSchema *schema; ++ schema_source = g_settings_schema_source_new_from_directory("@ESD_GSETTINGS_PATH@", ++ g_settings_schema_source_get_default(), ++ TRUE, ++ NULL); ++ schema = g_settings_schema_source_lookup(schema_source, ++ SELF_UID_PATH_ID, ++ FALSE); ++ settings = g_settings_new_full(schema, NULL, NULL); ++ g_settings_schema_source_unref(schema_source); ++ g_settings_schema_unref(schema); ++ } + uid = g_settings_get_string (settings, SELF_UID_KEY); + g_object_unref (settings); + +@@ -2649,7 +2662,20 @@ e_book_set_self (EBook *book, + g_return_val_if_fail (E_IS_BOOK (book), FALSE); + g_return_val_if_fail (E_IS_CONTACT (contact), FALSE); + +- settings = g_settings_new (SELF_UID_PATH_ID); ++ { ++ GSettingsSchemaSource *schema_source; ++ GSettingsSchema *schema; ++ schema_source = g_settings_schema_source_new_from_directory("@ESD_GSETTINGS_PATH@", ++ g_settings_schema_source_get_default(), ++ TRUE, ++ NULL); ++ schema = g_settings_schema_source_lookup(schema_source, ++ SELF_UID_PATH_ID, ++ FALSE); ++ settings = g_settings_new_full(schema, NULL, NULL); ++ g_settings_schema_source_unref(schema_source); ++ g_settings_schema_unref(schema); ++ } + g_settings_set_string ( + settings, SELF_UID_KEY, + e_contact_get_const (contact, E_CONTACT_UID)); +@@ -2677,7 +2703,20 @@ e_book_is_self (EContact *contact) + + g_return_val_if_fail (E_IS_CONTACT (contact), FALSE); + +- settings = g_settings_new (SELF_UID_PATH_ID); ++ { ++ GSettingsSchemaSource *schema_source; ++ GSettingsSchema *schema; ++ schema_source = g_settings_schema_source_new_from_directory("@ESD_GSETTINGS_PATH@", ++ g_settings_schema_source_get_default(), ++ TRUE, ++ NULL); ++ schema = g_settings_schema_source_lookup(schema_source, ++ SELF_UID_PATH_ID, ++ FALSE); ++ settings = g_settings_new_full(schema, NULL, NULL); ++ g_settings_schema_source_unref(schema_source); ++ g_settings_schema_unref(schema); ++ } + uid = g_settings_get_string (settings, SELF_UID_KEY); + g_object_unref (settings); + +diff --git a/src/calendar/backends/contacts/e-cal-backend-contacts.c b/src/calendar/backends/contacts/e-cal-backend-contacts.c +index de1716941..e83b104f1 100644 +--- a/src/calendar/backends/contacts/e-cal-backend-contacts.c ++++ b/src/calendar/backends/contacts/e-cal-backend-contacts.c +@@ -1397,7 +1397,20 @@ e_cal_backend_contacts_init (ECalBackendContacts *cbc) + (GDestroyNotify) g_free, + (GDestroyNotify) contact_record_free); + +- cbc->priv->settings = g_settings_new ("org.gnome.evolution-data-server.calendar"); ++ { ++ GSettingsSchemaSource *schema_source; ++ GSettingsSchema *schema; ++ schema_source = g_settings_schema_source_new_from_directory("@ESD_GSETTINGS_PATH@", ++ g_settings_schema_source_get_default(), ++ TRUE, ++ NULL); ++ schema = g_settings_schema_source_lookup(schema_source, ++ "org.gnome.evolution-data-server.calendar", ++ FALSE); ++ cbc->priv->settings = g_settings_new_full(schema, NULL, NULL); ++ g_settings_schema_source_unref(schema_source); ++ g_settings_schema_unref(schema); ++ } + cbc->priv->notifyid = 0; + cbc->priv->update_alarms_id = 0; + cbc->priv->alarm_enabled = FALSE; +diff --git a/src/calendar/libecal/e-reminder-watcher.c b/src/calendar/libecal/e-reminder-watcher.c +index b08a7f301..a49fe39c5 100644 +--- a/src/calendar/libecal/e-reminder-watcher.c ++++ b/src/calendar/libecal/e-reminder-watcher.c +@@ -2202,7 +2202,21 @@ e_reminder_watcher_init (EReminderWatcher *watcher) + + watcher->priv = G_TYPE_INSTANCE_GET_PRIVATE (watcher, E_TYPE_REMINDER_WATCHER, EReminderWatcherPrivate); + watcher->priv->cancellable = g_cancellable_new (); +- watcher->priv->settings = g_settings_new ("org.gnome.evolution-data-server.calendar"); ++ { ++ GSettingsSchemaSource *schema_source; ++ GSettingsSchema *schema; ++ schema_source = g_settings_schema_source_new_from_directory("@ESD_GSETTINGS_PATH@", ++ g_settings_schema_source_get_default(), ++ TRUE, ++ NULL); ++ schema = g_settings_schema_source_lookup(schema_source, ++ "org.gnome.evolution-data-server.calendar", ++ FALSE); ++ watcher->priv->settings = g_settings_new_full(schema, NULL, ++ NULL); ++ g_settings_schema_source_unref(schema_source); ++ g_settings_schema_unref(schema); ++ } + 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 = icaltimezone_copy (zone); + watcher->priv->timers_enabled = TRUE; +diff --git a/src/camel/camel-cipher-context.c b/src/camel/camel-cipher-context.c +index dcdc3eed0..fd2e428c2 100644 +--- a/src/camel/camel-cipher-context.c ++++ b/src/camel/camel-cipher-context.c +@@ -1635,7 +1635,20 @@ camel_cipher_can_load_photos (void) + GSettings *settings; + gboolean load_photos; + +- settings = g_settings_new ("org.gnome.evolution-data-server"); ++ { ++ GSettingsSchemaSource *schema_source; ++ GSettingsSchema *schema; ++ schema_source = g_settings_schema_source_new_from_directory("@ESD_GSETTINGS_PATH@", ++ g_settings_schema_source_get_default(), ++ TRUE, ++ NULL); ++ schema = g_settings_schema_source_lookup(schema_source, ++ "org.gnome.evolution-data-server", ++ FALSE); ++ settings = g_settings_new_full(schema, NULL, NULL); ++ g_settings_schema_source_unref(schema_source); ++ g_settings_schema_unref(schema); ++ } + load_photos = g_settings_get_boolean (settings, "camel-cipher-load-photos"); + g_clear_object (&settings); + +diff --git a/src/camel/camel-gpg-context.c b/src/camel/camel-gpg-context.c +index 1b3362886..f0811b292 100644 +--- a/src/camel/camel-gpg-context.c ++++ b/src/camel/camel-gpg-context.c +@@ -573,7 +573,20 @@ gpg_ctx_get_executable_name (void) + GSettings *settings; + gchar *path; + +- settings = g_settings_new ("org.gnome.evolution-data-server"); ++ { ++ GSettingsSchemaSource *schema_source; ++ GSettingsSchema *schema; ++ schema_source = g_settings_schema_source_new_from_directory("@ESD_GSETTINGS_PATH@", ++ g_settings_schema_source_get_default(), ++ TRUE, ++ NULL); ++ schema = g_settings_schema_source_lookup(schema_source, ++ "org.gnome.evolution-data-server", ++ FALSE); ++ settings = g_settings_new_full(schema, NULL, NULL); ++ g_settings_schema_source_unref(schema_source); ++ g_settings_schema_unref(schema); ++ } + path = g_settings_get_string (settings, "camel-gpg-binary"); + g_clear_object (&settings); + +diff --git a/src/libedataserver/e-network-monitor.c b/src/libedataserver/e-network-monitor.c +index e0d8b87d6..3a4d5a359 100644 +--- a/src/libedataserver/e-network-monitor.c ++++ b/src/libedataserver/e-network-monitor.c +@@ -255,7 +255,20 @@ e_network_monitor_constructed (GObject *object) + /* Chain up to parent's method. */ + G_OBJECT_CLASS (e_network_monitor_parent_class)->constructed (object); + +- settings = g_settings_new ("org.gnome.evolution-data-server"); ++ { ++ GSettingsSchemaSource *schema_source; ++ GSettingsSchema *schema; ++ schema_source = g_settings_schema_source_new_from_directory("@ESD_GSETTINGS_PATH@", ++ g_settings_schema_source_get_default(), ++ TRUE, ++ NULL); ++ schema = g_settings_schema_source_lookup(schema_source, ++ "org.gnome.evolution-data-server", ++ FALSE); ++ settings = g_settings_new_full(schema, NULL, NULL); ++ g_settings_schema_source_unref(schema_source); ++ g_settings_schema_unref(schema); ++ } + g_settings_bind ( + settings, "network-monitor-gio-name", + object, "gio-name", +diff --git a/src/libedataserver/e-oauth2-service-google.c b/src/libedataserver/e-oauth2-service-google.c +index f0c6f2cbf..0053e3ce6 100644 +--- a/src/libedataserver/e-oauth2-service-google.c ++++ b/src/libedataserver/e-oauth2-service-google.c +@@ -69,7 +69,20 @@ eos_google_read_settings (EOAuth2Service *service, + if (!value) { + GSettings *settings; + +- settings = g_settings_new ("org.gnome.evolution-data-server"); ++ { ++ GSettingsSchemaSource *schema_source; ++ GSettingsSchema *schema; ++ schema_source = g_settings_schema_source_new_from_directory("@ESD_GSETTINGS_PATH@", ++ g_settings_schema_source_get_default(), ++ TRUE, ++ NULL); ++ schema = g_settings_schema_source_lookup(schema_source, ++ "org.gnome.evolution-data-server", ++ FALSE); ++ settings = g_settings_new_full(schema, NULL, NULL); ++ g_settings_schema_source_unref(schema_source); ++ g_settings_schema_unref(schema); ++ } + value = g_settings_get_string (settings, key_name); + g_object_unref (settings); + +diff --git a/src/libedataserver/e-oauth2-service-outlook.c b/src/libedataserver/e-oauth2-service-outlook.c +index 687c10d3b..684583c35 100644 +--- a/src/libedataserver/e-oauth2-service-outlook.c ++++ b/src/libedataserver/e-oauth2-service-outlook.c +@@ -70,7 +70,20 @@ eos_outlook_read_settings (EOAuth2Service *service, + if (!value) { + GSettings *settings; + +- settings = g_settings_new ("org.gnome.evolution-data-server"); ++ { ++ GSettingsSchemaSource *schema_source; ++ GSettingsSchema *schema; ++ schema_source = g_settings_schema_source_new_from_directory("@ESD_GSETTINGS_PATH@", ++ g_settings_schema_source_get_default(), ++ TRUE, ++ NULL); ++ schema = g_settings_schema_source_lookup(schema_source, ++ "org.gnome.evolution-data-server", ++ FALSE); ++ settings = g_settings_new_full(schema, NULL, NULL); ++ g_settings_schema_source_unref(schema_source); ++ g_settings_schema_unref(schema); ++ } + value = g_settings_get_string (settings, key_name); + g_object_unref (settings); + +diff --git a/src/libedataserver/e-oauth2-service.c b/src/libedataserver/e-oauth2-service.c +index 682673c16..436f52d5f 100644 +--- a/src/libedataserver/e-oauth2-service.c ++++ b/src/libedataserver/e-oauth2-service.c +@@ -95,7 +95,20 @@ eos_default_guess_can_process (EOAuth2Service *service, + name_len = strlen (name); + hostname_len = strlen (hostname); + +- settings = g_settings_new ("org.gnome.evolution-data-server"); ++ { ++ GSettingsSchemaSource *schema_source; ++ GSettingsSchema *schema; ++ schema_source = g_settings_schema_source_new_from_directory("@ESD_GSETTINGS_PATH@", ++ g_settings_schema_source_get_default(), ++ TRUE, ++ NULL); ++ schema = g_settings_schema_source_lookup(schema_source, ++ "org.gnome.evolution-data-server", ++ FALSE); ++ settings = g_settings_new_full(schema, NULL, NULL); ++ g_settings_schema_source_unref(schema_source); ++ g_settings_schema_unref(schema); ++ } + values = g_settings_get_strv (settings, "oauth2-services-hint"); + g_object_unref (settings); + +diff --git a/src/libedataserver/e-proxy.c b/src/libedataserver/e-proxy.c +index 883379a60..989353494 100644 +--- a/src/libedataserver/e-proxy.c ++++ b/src/libedataserver/e-proxy.c +@@ -969,8 +969,37 @@ e_proxy_init (EProxy *proxy) + + proxy->priv->type = PROXY_TYPE_SYSTEM; + +- proxy->priv->evolution_proxy_settings = g_settings_new ("org.gnome.evolution.shell.network-config"); +- proxy->priv->proxy_settings = g_settings_new ("org.gnome.system.proxy"); ++ { ++ GSettingsSchemaSource *schema_source; ++ GSettingsSchema *schema; ++ schema_source = g_settings_schema_source_new_from_directory("@ESD_GSETTINGS_PATH@", ++ g_settings_schema_source_get_default(), ++ TRUE, ++ NULL); ++ schema = g_settings_schema_source_lookup(schema_source, ++ "org.gnome.evolution.shell.network-config", ++ FALSE); ++ proxy->priv->evolution_proxy_settings = g_settings_new_full(schema, ++ NULL, ++ NULL); ++ g_settings_schema_source_unref(schema_source); ++ g_settings_schema_unref(schema); ++ } ++ { ++ GSettingsSchemaSource *schema_source; ++ GSettingsSchema *schema; ++ schema_source = g_settings_schema_source_new_from_directory("@GDS_GSETTINGS_PATH@", ++ g_settings_schema_source_get_default(), ++ TRUE, ++ NULL); ++ schema = g_settings_schema_source_lookup(schema_source, ++ "org.gnome.system.proxy", ++ FALSE); ++ proxy->priv->proxy_settings = g_settings_new_full(schema, ++ NULL, NULL); ++ g_settings_schema_source_unref(schema_source); ++ g_settings_schema_unref(schema); ++ } + proxy->priv->proxy_http_settings = g_settings_get_child (proxy->priv->proxy_settings, "http"); + proxy->priv->proxy_https_settings = g_settings_get_child (proxy->priv->proxy_settings, "https"); + proxy->priv->proxy_socks_settings = g_settings_get_child (proxy->priv->proxy_settings, "socks"); +diff --git a/src/libedataserver/e-source-registry.c b/src/libedataserver/e-source-registry.c +index a5a30a3e1..5fbdf8190 100644 +--- a/src/libedataserver/e-source-registry.c ++++ b/src/libedataserver/e-source-registry.c +@@ -1749,7 +1749,21 @@ e_source_registry_init (ESourceRegistry *registry) + + g_mutex_init (®istry->priv->sources_lock); + +- registry->priv->settings = g_settings_new (GSETTINGS_SCHEMA); ++ { ++ GSettingsSchemaSource *schema_source; ++ GSettingsSchema *schema; ++ schema_source = g_settings_schema_source_new_from_directory("@ESD_GSETTINGS_PATH@", ++ g_settings_schema_source_get_default(), ++ TRUE, ++ NULL); ++ schema = g_settings_schema_source_lookup(schema_source, ++ GSETTINGS_SCHEMA, ++ FALSE); ++ registry->priv->settings = g_settings_new_full(schema, NULL, ++ NULL); ++ g_settings_schema_source_unref(schema_source); ++ g_settings_schema_unref(schema); ++ } + + g_signal_connect ( + registry->priv->settings, "changed", +diff --git a/src/libedataserverui/e-reminders-widget.c b/src/libedataserverui/e-reminders-widget.c +index f89cd4a5c..06cca9b5f 100644 +--- a/src/libedataserverui/e-reminders-widget.c ++++ b/src/libedataserverui/e-reminders-widget.c +@@ -1650,7 +1650,21 @@ static void + e_reminders_widget_init (ERemindersWidget *reminders) + { + reminders->priv = e_reminders_widget_get_instance_private (reminders); +- reminders->priv->settings = g_settings_new ("org.gnome.evolution-data-server.calendar"); ++ { ++ GSettingsSchemaSource *schema_source; ++ GSettingsSchema *schema; ++ schema_source = g_settings_schema_source_new_from_directory("@ESD_GSETTINGS_PATH@", ++ g_settings_schema_source_get_default(), ++ TRUE, ++ NULL); ++ schema = g_settings_schema_source_lookup(schema_source, ++ "org.gnome.evolution-data-server.calendar", ++ FALSE); ++ reminders->priv->settings = g_settings_new_full(schema, NULL, ++ NULL); ++ g_settings_schema_source_unref(schema_source); ++ g_settings_schema_unref(schema); ++ } + reminders->priv->cancellable = g_cancellable_new (); + reminders->priv->is_empty = TRUE; + reminders->priv->is_mapped = FALSE; +diff --git a/src/services/evolution-source-registry/evolution-source-registry-autoconfig.c b/src/services/evolution-source-registry/evolution-source-registry-autoconfig.c +index 6f03053d6..dffc186c7 100644 +--- a/src/services/evolution-source-registry/evolution-source-registry-autoconfig.c ++++ b/src/services/evolution-source-registry/evolution-source-registry-autoconfig.c +@@ -706,7 +706,20 @@ evolution_source_registry_merge_autoconfig_sources (ESourceRegistryServer *serve + gchar *autoconfig_directory; + gint ii; + +- settings = g_settings_new ("org.gnome.evolution-data-server"); ++ { ++ GSettingsSchemaSource *schema_source; ++ GSettingsSchema *schema; ++ schema_source = g_settings_schema_source_new_from_directory("@ESD_GSETTINGS_PATH@", ++ g_settings_schema_source_get_default(), ++ TRUE, ++ NULL); ++ schema = g_settings_schema_source_lookup(schema_source, ++ "org.gnome.evolution-data-server", ++ FALSE); ++ settings = g_settings_new_full(schema, NULL, NULL); ++ g_settings_schema_source_unref(schema_source); ++ g_settings_schema_unref(schema); ++ } + + autoconfig_sources = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, e_autoconfig_free_merge_source_data); + +diff --git a/src/services/evolution-source-registry/evolution-source-registry-migrate-proxies.c b/src/services/evolution-source-registry/evolution-source-registry-migrate-proxies.c +index d531cb9e2..c5b1c761c 100644 +--- a/src/services/evolution-source-registry/evolution-source-registry-migrate-proxies.c ++++ b/src/services/evolution-source-registry/evolution-source-registry-migrate-proxies.c +@@ -61,7 +61,20 @@ evolution_source_registry_migrate_proxies (ESourceRegistryServer *server) + extension_name = E_SOURCE_EXTENSION_PROXY; + extension = e_source_get_extension (source, extension_name); + +- settings = g_settings_new (NETWORK_CONFIG_SCHEMA_ID); ++ { ++ GSettingsSchemaSource *schema_source; ++ GSettingsSchema *schema; ++ schema_source = g_settings_schema_source_new_from_directory("@ESD_GSETTINGS_PATH@", ++ g_settings_schema_source_get_default(), ++ TRUE, ++ NULL); ++ schema = g_settings_schema_source_lookup(schema_source, ++ NETWORK_CONFIG_SCHEMA_ID, ++ FALSE); ++ settings = g_settings_new_full(schema, NULL, NULL); ++ g_settings_schema_source_unref(schema_source); ++ g_settings_schema_unref(schema); ++ } + + switch (g_settings_get_int (settings, "proxy-type")) { + case 1: +diff --git a/src/services/evolution-source-registry/evolution-source-registry.c b/src/services/evolution-source-registry/evolution-source-registry.c +index 1c0a11382..3e144845e 100644 +--- a/src/services/evolution-source-registry/evolution-source-registry.c ++++ b/src/services/evolution-source-registry/evolution-source-registry.c +@@ -181,7 +181,20 @@ main (gint argc, + + reload: + +- settings = g_settings_new ("org.gnome.evolution-data-server"); ++ { ++ GSettingsSchemaSource *schema_source; ++ GSettingsSchema *schema; ++ schema_source = g_settings_schema_source_new_from_directory("@ESD_GSETTINGS_PATH@", ++ g_settings_schema_source_get_default(), ++ TRUE, ++ NULL); ++ schema = g_settings_schema_source_lookup(schema_source, ++ "org.gnome.evolution-data-server", ++ FALSE); ++ settings = g_settings_new_full(schema, NULL, NULL); ++ g_settings_schema_source_unref(schema_source); ++ g_settings_schema_unref(schema); ++ } + + if (!opt_disable_migration && !g_settings_get_boolean (settings, "migrated")) { + g_settings_set_boolean (settings, "migrated", TRUE); diff --git a/nixpkgs/pkgs/desktops/gnome-3/core/gdm/default.nix b/nixpkgs/pkgs/desktops/gnome-3/core/gdm/default.nix new file mode 100644 index 000000000000..58c898a5f0dd --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/core/gdm/default.nix @@ -0,0 +1,103 @@ +{ stdenv, fetchurl, substituteAll, pkgconfig, glib, itstool, libxml2, xorg +, accountsservice, libX11, gnome3, systemd, autoreconfHook, dconf +, gtk3, libcanberra-gtk3, pam, libtool, gobject-introspection, plymouth +, librsvg, coreutils, xwayland, nixos-icons, fetchpatch }: + +let + + icon = fetchurl { + url = "https://raw.githubusercontent.com/NixOS/nixos-artwork/4f041870efa1a6f0799ef4b32bb7be2cafee7a74/logo/nixos.svg"; + sha256 = "0b0dj408c1wxmzy6k0pjwc4bzwq286f1334s3cqqwdwjshxskshk"; + }; + + override = substituteAll { + src = ./org.gnome.login-screen.gschema.override; + inherit icon; + }; + +in + +stdenv.mkDerivation rec { + pname = "gdm"; + version = "3.34.1"; + + src = fetchurl { + url = "mirror://gnome/sources/gdm/${stdenv.lib.versions.majorMinor version}/${pname}-${version}.tar.xz"; + sha256 = "1lyqvcwxhwxklbxn4xjswjzr6fhjix6h28mi9ypn34wdm9bzcpg8"; + }; + + # Only needed to make it build + preConfigure = '' + substituteInPlace ./configure --replace "/usr/bin/X" "${xorg.xorgserver.out}/bin/X" + ''; + + initialVT = "7"; + + configureFlags = [ + "--sysconfdir=/etc" + "--localstatedir=/var" + "--with-plymouth=yes" + "--enable-gdm-xsession" + "--with-initial-vt=${initialVT}" + "--with-systemdsystemunitdir=$(out)/etc/systemd/system" + "--with-udevdir=$(out)/lib/udev" + ]; + + nativeBuildInputs = [ pkgconfig libxml2 itstool autoreconfHook libtool dconf ]; + buildInputs = [ + glib accountsservice systemd + gobject-introspection libX11 gtk3 + libcanberra-gtk3 pam plymouth librsvg + ]; + + enableParallelBuilding = true; + + patches = [ + # Change hardcoded paths to nix store paths. + (substituteAll { + src = ./fix-paths.patch; + inherit coreutils plymouth xwayland; + }) + + # The following patches implement certain environment variables in GDM which are set by + # the gdm configuration module (nixos/modules/services/x11/display-managers/gdm.nix). + + ./gdm-x-session_extra_args.patch + + # Allow specifying a wrapper for running the session command. + ./gdm-x-session_session-wrapper.patch + + # Forwards certain environment variables to the gdm-x-session child process + # to ensure that the above two patches actually work. + ./gdm-session-worker_forward-vars.patch + + # Set up the environment properly when launching sessions + # https://github.com/NixOS/nixpkgs/issues/48255 + ./reset-environment.patch + ]; + + installFlags = [ + "sysconfdir=$(out)/etc" + "dbusconfdir=$(out)/etc/dbus-1/system.d" + ]; + + preInstall = '' + schema_dir=${glib.makeSchemaPath "$out" "${pname}-${version}"} + install -D ${override} $schema_dir/org.gnome.login-screen.gschema.override + ''; + + passthru = { + updateScript = gnome3.updateScript { + packageName = "gdm"; + attrPath = "gnome3.gdm"; + }; + }; + + meta = with stdenv.lib; { + description = "A program that manages graphical display servers and handles graphical user logins"; + homepage = "https://wiki.gnome.org/Projects/GDM"; + license = licenses.gpl2Plus; + maintainers = teams.gnome.members; + platforms = platforms.linux; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/core/gdm/fix-paths.patch b/nixpkgs/pkgs/desktops/gnome-3/core/gdm/fix-paths.patch new file mode 100644 index 000000000000..6b5bd6152bd6 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/core/gdm/fix-paths.patch @@ -0,0 +1,60 @@ +--- a/daemon/gdm-local-display-factory.c ++++ b/daemon/gdm-local-display-factory.c +@@ -201,7 +201,7 @@ + #ifdef ENABLE_WAYLAND_SUPPORT + gboolean wayland_enabled = FALSE; + if (gdm_settings_direct_get_boolean (GDM_KEY_WAYLAND_ENABLE, &wayland_enabled)) { +- if (wayland_enabled && g_file_test ("/usr/bin/Xwayland", G_FILE_TEST_IS_EXECUTABLE) ) ++ if (wayland_enabled && g_file_test ("@xwayland@/bin/Xwayland", G_FILE_TEST_IS_EXECUTABLE) ) + return TRUE; + } + #endif +--- a/daemon/gdm-manager.c ++++ b/daemon/gdm-manager.c +@@ -145,7 +145,7 @@ + GError *error; + + error = NULL; +- res = g_spawn_command_line_sync ("/bin/plymouth --ping", ++ res = g_spawn_command_line_sync ("@plymouth@/bin/plymouth --ping", + NULL, NULL, &status, &error); + if (! res) { + g_debug ("Could not ping plymouth: %s", error->message); +@@ -163,7 +163,7 @@ + GError *error; + + error = NULL; +- res = g_spawn_command_line_sync ("/bin/plymouth deactivate", ++ res = g_spawn_command_line_sync ("@plymouth@/bin/plymouth deactivate", + NULL, NULL, NULL, &error); + if (! res) { + g_warning ("Could not deactivate plymouth: %s", error->message); +@@ -178,7 +178,7 @@ + GError *error; + + error = NULL; +- res = g_spawn_command_line_async ("/bin/plymouth quit --retain-splash", &error); ++ res = g_spawn_command_line_async ("@plymouth@/bin/plymouth quit --retain-splash", &error); + if (! res) { + g_warning ("Could not quit plymouth: %s", error->message); + g_error_free (error); +@@ -194,7 +194,7 @@ + GError *error; + + error = NULL; +- res = g_spawn_command_line_async ("/bin/plymouth quit", &error); ++ res = g_spawn_command_line_async ("@plymouth@/bin/plymouth quit", &error); + if (! res) { + g_warning ("Could not quit plymouth: %s", error->message); + g_error_free (error); +--- a/data/gdm.service.in ++++ b/data/gdm.service.in +@@ -28,7 +28,7 @@ BusName=org.gnome.DisplayManager + StandardOutput=syslog + StandardError=inherit + EnvironmentFile=-@LANG_CONFIG_FILE@ +-ExecReload=/bin/kill -SIGHUP $MAINPID ++ExecReload=@coreutils@/bin/kill -SIGHUP $MAINPID + KeyringMode=shared + + [Install] diff --git a/nixpkgs/pkgs/desktops/gnome-3/core/gdm/gdm-session-worker_forward-vars.patch b/nixpkgs/pkgs/desktops/gnome-3/core/gdm/gdm-session-worker_forward-vars.patch new file mode 100644 index 000000000000..401b6aea0c28 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/core/gdm/gdm-session-worker_forward-vars.patch @@ -0,0 +1,31 @@ +diff --git a/daemon/gdm-session-worker.c b/daemon/gdm-session-worker.c +index 9ef4c5b..94da834 100644 +--- a/daemon/gdm-session-worker.c ++++ b/daemon/gdm-session-worker.c +@@ -1515,6 +1515,16 @@ gdm_session_worker_load_env_d (GdmSessionWorker *worker) + g_object_unref (dir); + } + ++static void ++gdm_session_worker_forward_var (GdmSessionWorker *worker, char const *var) ++{ ++ char const *value = g_getenv(var); ++ if (value != NULL) { ++ g_debug ("forwarding %s= %s", var, value); ++ gdm_session_worker_set_environment_variable(worker, var, value); ++ } ++} ++ + static gboolean + gdm_session_worker_accredit_user (GdmSessionWorker *worker, + GError **error) +@@ -1559,6 +1569,9 @@ gdm_session_worker_accredit_user (GdmSessionWorker *worker, + goto out; + } + ++ gdm_session_worker_forward_var(worker, "GDM_X_SERVER_EXTRA_ARGS"); ++ gdm_session_worker_forward_var(worker, "GDM_X_SESSION_WRAPPER"); ++ + gdm_session_worker_update_environment_from_passwd_info (worker, + uid, + gid, diff --git a/nixpkgs/pkgs/desktops/gnome-3/core/gdm/gdm-x-session_extra_args.patch b/nixpkgs/pkgs/desktops/gnome-3/core/gdm/gdm-x-session_extra_args.patch new file mode 100644 index 000000000000..66071aa4af80 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/core/gdm/gdm-x-session_extra_args.patch @@ -0,0 +1,38 @@ +diff --git a/daemon/gdm-x-session.c.orig b/daemon/gdm-x-session.c +index d835b34..1f4b7f1 100644 +--- a/daemon/gdm-x-session.c.orig ++++ b/daemon/gdm-x-session.c +@@ -211,6 +211,7 @@ spawn_x_server (State *state, + char *vt_string = NULL; + char *display_number; + gsize display_number_size; ++ gchar **xserver_extra_args = NULL; + + auth_file = prepare_auth_file (); + +@@ -285,6 +286,17 @@ spawn_x_server (State *state, + if (state->debug_enabled) { + g_ptr_array_add (arguments, "-core"); + } ++ ++ if (g_getenv ("GDM_X_SERVER_EXTRA_ARGS") != NULL) { ++ g_debug ("using GDM_X_SERVER_EXTRA_ARGS: %s", g_getenv("GDM_X_SERVER_EXTRA_ARGS")); ++ xserver_extra_args = g_strsplit(g_getenv("GDM_X_SERVER_EXTRA_ARGS"), " ", -1); ++ for (gchar **extra_arg = xserver_extra_args; *extra_arg; extra_arg++) { ++ if (strlen(*extra_arg) < 1) continue; ++ g_debug ("adding: %s", *extra_arg); ++ g_ptr_array_add (arguments, *extra_arg); ++ } ++ } ++ + g_ptr_array_add (arguments, NULL); + + subprocess = g_subprocess_launcher_spawnv (launcher, +@@ -332,6 +344,7 @@ spawn_x_server (State *state, + + is_running = TRUE; + out: ++ g_strfreev(xserver_extra_args); + g_clear_pointer (&auth_file, g_free); + g_clear_object (&data_stream); + g_clear_object (&subprocess); diff --git a/nixpkgs/pkgs/desktops/gnome-3/core/gdm/gdm-x-session_session-wrapper.patch b/nixpkgs/pkgs/desktops/gnome-3/core/gdm/gdm-x-session_session-wrapper.patch new file mode 100644 index 000000000000..58481f0730fa --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/core/gdm/gdm-x-session_session-wrapper.patch @@ -0,0 +1,40 @@ +diff --git a/daemon/gdm-x-session.c b/daemon/gdm-x-session.c +index 88fe96f..b1b140a 100644 +--- a/daemon/gdm-x-session.c ++++ b/daemon/gdm-x-session.c +@@ -664,18 +664,34 @@ spawn_session (State *state, + state->session_command, + NULL); + } else { ++ char const *session_wrapper; ++ char *eff_session_command; + int ret; + char **argv; + +- ret = g_shell_parse_argv (state->session_command, ++ session_wrapper = g_getenv("GDM_X_SESSION_WRAPPER"); ++ if (session_wrapper != NULL) { ++ char *quoted_wrapper = g_shell_quote(session_wrapper); ++ eff_session_command = g_strjoin(" ", quoted_wrapper, state->session_command, NULL); ++ g_free(quoted_wrapper); ++ } else { ++ eff_session_command = state->session_command; ++ } ++ ++ ret = g_shell_parse_argv (eff_session_command, + NULL, + &argv, + &error); + ++ if (session_wrapper != NULL) { ++ g_free(eff_session_command); ++ } ++ + if (!ret) { + g_debug ("could not parse session arguments: %s", error->message); + goto out; + } ++ + subprocess = g_subprocess_launcher_spawnv (launcher, + (const char * const *) argv, + &error); diff --git a/nixpkgs/pkgs/desktops/gnome-3/core/gdm/org.gnome.login-screen.gschema.override b/nixpkgs/pkgs/desktops/gnome-3/core/gdm/org.gnome.login-screen.gschema.override new file mode 100644 index 000000000000..8c17f494b0f2 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/core/gdm/org.gnome.login-screen.gschema.override @@ -0,0 +1,2 @@ +[org.gnome.login-screen] +logo='@icon@' diff --git a/nixpkgs/pkgs/desktops/gnome-3/core/gdm/reset-environment.patch b/nixpkgs/pkgs/desktops/gnome-3/core/gdm/reset-environment.patch new file mode 100644 index 000000000000..61defd9c4bc2 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/core/gdm/reset-environment.patch @@ -0,0 +1,20 @@ +--- a/daemon/gdm-wayland-session.c ++++ b/daemon/gdm-wayland-session.c +@@ -285,6 +285,7 @@ spawn_session (State *state, + "WAYLAND_DISPLAY", + "WAYLAND_SOCKET", + "GNOME_SHELL_SESSION_MODE", ++ "__NIXOS_SET_ENVIRONMENT_DONE", + NULL }; + + g_debug ("Running wayland session"); +--- a/daemon/gdm-x-session.c ++++ b/daemon/gdm-x-session.c +@@ -610,6 +610,7 @@ spawn_session (State *state, + "WAYLAND_DISPLAY", + "WAYLAND_SOCKET", + "GNOME_SHELL_SESSION_MODE", ++ "__NIXOS_SET_ENVIRONMENT_DONE", + NULL }; + + g_debug ("Running X session"); diff --git a/nixpkgs/pkgs/desktops/gnome-3/core/gnome-backgrounds/default.nix b/nixpkgs/pkgs/desktops/gnome-3/core/gnome-backgrounds/default.nix new file mode 100644 index 000000000000..e8463c5b704e --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/core/gnome-backgrounds/default.nix @@ -0,0 +1,22 @@ +{ stdenv, fetchurl, meson, ninja, pkgconfig, gnome3, gettext }: + +stdenv.mkDerivation rec { + pname = "gnome-backgrounds"; + version = "3.36.0"; + + src = fetchurl { + url = "mirror://gnome/sources/gnome-backgrounds/${stdenv.lib.versions.majorMinor version}/${pname}-${version}.tar.xz"; + sha256 = "02xvfwfi3133mjljl731z2hj9hfmjas3a1jl4fxmy24xrzj83jxq"; + }; + + passthru = { + updateScript = gnome3.updateScript { packageName = "gnome-backgrounds"; attrPath = "gnome3.gnome-backgrounds"; }; + }; + + nativeBuildInputs = [ meson ninja pkgconfig gettext ]; + + meta = with stdenv.lib; { + platforms = platforms.unix; + maintainers = teams.gnome.members; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/core/gnome-bluetooth/default.nix b/nixpkgs/pkgs/desktops/gnome-3/core/gnome-bluetooth/default.nix new file mode 100644 index 000000000000..ed647bb87d81 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/core/gnome-bluetooth/default.nix @@ -0,0 +1,52 @@ +{ stdenv, fetchurl, gnome3, meson, ninja, pkgconfig, gtk3, intltool, glib +, udev, itstool, libxml2, wrapGAppsHook, libnotify, libcanberra-gtk3, gobject-introspection +, gtk-doc, docbook_xsl, docbook_xml_dtd_43, python3, gsettings-desktop-schemas }: + +let + pname = "gnome-bluetooth"; +in stdenv.mkDerivation rec { + name = "${pname}-${version}"; + version = "3.34.1"; + + # TODO: split out "lib" + outputs = [ "out" "dev" "devdoc" "man" ]; + + src = fetchurl { + url = "mirror://gnome/sources/${pname}/${stdenv.lib.versions.majorMinor version}/${name}.tar.xz"; + sha256 = "11nk8nvz5yrbx7wp75vsiaf4rniv7ik2g3nwmgwx2b42q9v11j9y"; + }; + + nativeBuildInputs = [ + meson ninja intltool itstool pkgconfig libxml2 wrapGAppsHook gobject-introspection + gtk-doc docbook_xsl docbook_xml_dtd_43 python3 + ]; + buildInputs = [ + glib gtk3 udev libnotify libcanberra-gtk3 + gnome3.adwaita-icon-theme gsettings-desktop-schemas + ]; + + mesonFlags = [ + "-Dicon_update=false" + "-Dgtk_doc=true" + ]; + + postPatch = '' + chmod +x meson_post_install.py # patchShebangs requires executable file + patchShebangs meson_post_install.py + ''; + + passthru = { + updateScript = gnome3.updateScript { + packageName = pname; + attrPath = "gnome3.${pname}"; + }; + }; + + meta = with stdenv.lib; { + homepage = "https://help.gnome.org/users/gnome-bluetooth/stable/index.html.en"; + description = "Application that let you manage Bluetooth in the GNOME destkop"; + maintainers = teams.gnome.members; + license = licenses.gpl2; + platforms = platforms.linux; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/core/gnome-calculator/default.nix b/nixpkgs/pkgs/desktops/gnome-3/core/gnome-calculator/default.nix new file mode 100644 index 000000000000..e14d8d136cd8 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/core/gnome-calculator/default.nix @@ -0,0 +1,46 @@ +{ stdenv, meson, ninja, vala, gettext, itstool, fetchurl, pkgconfig, libxml2 +, gtk3, glib, gtksourceview4, wrapGAppsHook, gobject-introspection, python3 +, gnome3, mpfr, gmp, libsoup, libmpc, gsettings-desktop-schemas, libgee }: + +stdenv.mkDerivation rec { + pname = "gnome-calculator"; + version = "3.36.0"; + + src = fetchurl { + url = "mirror://gnome/sources/gnome-calculator/${stdenv.lib.versions.majorMinor version}/${pname}-${version}.tar.xz"; + sha256 = "1cqd4b25qp1i0p04m669jssg1l5sdapc1mniv9jssvw5r7wk1s52"; + }; + + nativeBuildInputs = [ + meson ninja pkgconfig vala gettext itstool wrapGAppsHook python3 + gobject-introspection # for finding vapi files + ]; + + buildInputs = [ + gtk3 glib libxml2 gtksourceview4 mpfr gmp + gnome3.adwaita-icon-theme libgee + gsettings-desktop-schemas libsoup libmpc + ]; + + doCheck = true; + + postPatch = '' + chmod +x meson_post_install.py # patchShebangs requires executable file + patchShebangs meson_post_install.py + ''; + + passthru = { + updateScript = gnome3.updateScript { + packageName = "gnome-calculator"; + attrPath = "gnome3.gnome-calculator"; + }; + }; + + meta = with stdenv.lib; { + homepage = "https://wiki.gnome.org/Apps/Calculator"; + description = "Application that solves mathematical equations and is suitable as a default application in a Desktop environment"; + maintainers = teams.gnome.members; + license = licenses.gpl3; + platforms = platforms.linux; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/core/gnome-color-manager/default.nix b/nixpkgs/pkgs/desktops/gnome-3/core/gnome-color-manager/default.nix new file mode 100644 index 000000000000..69655e2364d3 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/core/gnome-color-manager/default.nix @@ -0,0 +1,66 @@ +{ stdenv +, fetchurl +, meson +, ninja +, pkgconfig +, gettext +, itstool +, desktop-file-utils +, gnome3 +, glib +, gtk3 +, libexif +, libtiff +, colord +, colord-gtk +, libcanberra-gtk3 +, lcms2 +, vte +, exiv2 +}: + +stdenv.mkDerivation rec { + pname = "gnome-color-manager"; + version = "3.32.0"; + + src = fetchurl { + url = "mirror://gnome/sources/${pname}/${stdenv.lib.versions.majorMinor version}/${pname}-${version}.tar.xz"; + sha256 = "1vpxa2zjz3lkq9ldjg0fl65db9s6b4kcs8nyaqfz3jygma7ifg3w"; + }; + + nativeBuildInputs = [ + meson + ninja + pkgconfig + gettext + itstool + desktop-file-utils + ]; + + buildInputs = [ + glib + gtk3 + libexif + libtiff + colord + colord-gtk + libcanberra-gtk3 + lcms2 + vte + exiv2 + ]; + + passthru = { + updateScript = gnome3.updateScript { + packageName = pname; + attrPath = "gnome3.${pname}"; + }; + }; + + meta = with stdenv.lib; { + description = "A set of graphical utilities for color management to be used in the GNOME desktop"; + license = licenses.gpl2Plus; + maintainers = teams.gnome.members; + platforms = platforms.linux; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/core/gnome-common/default.nix b/nixpkgs/pkgs/desktops/gnome-3/core/gnome-common/default.nix new file mode 100644 index 000000000000..fb0b0f875440 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/core/gnome-common/default.nix @@ -0,0 +1,27 @@ +{ stdenv, fetchurl, which, gnome3, autoconf, automake }: + +stdenv.mkDerivation rec { + pname = "gnome-common"; + version = "3.18.0"; + + src = fetchurl { + url = "mirror://gnome/sources/gnome-common/${stdenv.lib.versions.majorMinor version}/${pname}-${version}.tar.xz"; + sha256 = "22569e370ae755e04527b76328befc4c73b62bfd4a572499fde116b8318af8cf"; + }; + + passthru = { + updateScript = gnome3.updateScript { packageName = "gnome-common"; attrPath = "gnome3.gnome-common"; }; + }; + + patches = [(fetchurl { + name = "gnome-common-patch"; + url = "https://bug697543.bugzilla-attachments.gnome.org/attachment.cgi?id=240935"; + sha256 = "17abp7czfzirjm7qsn2czd03hdv9kbyhk3lkjxg2xsf5fky7z7jl"; + })]; + + propagatedBuildInputs = [ which autoconf automake ]; # autogen.sh which is using gnome-common tends to require which + + meta = with stdenv.lib; { + maintainers = teams.gnome.members; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/core/gnome-contacts/default.nix b/nixpkgs/pkgs/desktops/gnome-3/core/gnome-contacts/default.nix new file mode 100644 index 000000000000..97abd746e1b9 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/core/gnome-contacts/default.nix @@ -0,0 +1,64 @@ +{ stdenv, gettext, fetchurl, evolution-data-server, fetchpatch +, pkgconfig, libxslt, docbook_xsl, docbook_xml_dtd_42, python3, gtk3, glib, cheese +, libchamplain, clutter-gtk, geocode-glib, gnome-desktop, gnome-online-accounts +, wrapGAppsHook, folks, libxml2, gnome3 +, vala, meson, ninja, libhandy, gsettings-desktop-schemas +# , telepathy-glib +}: + +stdenv.mkDerivation rec { + pname = "gnome-contacts"; + version = "3.36"; + + src = fetchurl { + url = "mirror://gnome/sources/gnome-contacts/${stdenv.lib.versions.majorMinor version}/${pname}-${version}.tar.xz"; + sha256 = "0yvgsfmqm8dxbhay12m20xp6qi9v31wwyv1gz4fx7j4kklhd5jzf"; + }; + + propagatedUserEnvPkgs = [ evolution-data-server ]; + + nativeBuildInputs = [ + meson ninja pkgconfig vala gettext libxslt docbook_xsl docbook_xml_dtd_42 python3 wrapGAppsHook + ]; + + buildInputs = [ + gtk3 glib evolution-data-server gsettings-desktop-schemas + folks gnome-desktop libhandy + libxml2 gnome-online-accounts cheese + gnome3.adwaita-icon-theme libchamplain clutter-gtk geocode-glib + # telepathy-glib 3.35.90 fails to build with telepathy + ]; + + mesonFlags = [ + # Upstream does not seem to maintain this properly: https://gitlab.gnome.org/GNOME/gnome-contacts/issues/103 + "-Dtelepathy=false" + ]; + + postPatch = '' + chmod +x build-aux/meson_post_install.py + patchShebangs build-aux/meson_post_install.py + ''; + + # In file included from src/gnome-contacts@exe/contacts-avatar-selector.c:30:0: + # /nix/store/*-cheese-3.28.0/include/cheese/cheese-widget.h:26:10: fatal error: clutter-gtk/clutter-gtk.h: No such file or directory + # #include <clutter-gtk/clutter-gtk.h> + # ^~~~~~~~~~~~~~~~~~~~~~~~~~~ + NIX_CFLAGS_COMPILE = "-I${stdenv.lib.getDev clutter-gtk}/include/clutter-gtk-1.0"; + + doCheck = true; + + passthru = { + updateScript = gnome3.updateScript { + packageName = "gnome-contacts"; + attrPath = "gnome3.gnome-contacts"; + }; + }; + + meta = with stdenv.lib; { + homepage = "https://wiki.gnome.org/Apps/Contacts"; + description = "GNOME’s integrated address book"; + maintainers = teams.gnome.members; + license = licenses.gpl2; + platforms = platforms.linux; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/core/gnome-control-center/default.nix b/nixpkgs/pkgs/desktops/gnome-3/core/gnome-control-center/default.nix new file mode 100644 index 000000000000..e4efcae889a4 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/core/gnome-control-center/default.nix @@ -0,0 +1,184 @@ +{ fetchurl +, stdenv +, substituteAll +, accountsservice +, adwaita-icon-theme +, cheese +, clutter +, clutter-gtk +, colord +, colord-gtk +, cups +, docbook_xsl +, fontconfig +, gdk-pixbuf +, gettext +, glib +, glib-networking +, glibc +, gnome-bluetooth +, gnome-color-manager +, gnome-desktop +, gnome-online-accounts +, gnome-session +, gnome-settings-daemon +, gnome3 +, grilo +, grilo-plugins +, gsettings-desktop-schemas +, gsound +, gtk3 +, ibus +, libcanberra-gtk3 +, libgnomekbd +, libgtop +, libgudev +, libhandy +, libkrb5 +, libpulseaudio +, libpwquality +, librsvg +, libsecret +, libsoup +, libwacom +, libxml2 +, libxslt +, meson +, modemmanager +, mutter +, networkmanager +, networkmanagerapplet +, libnma +, ninja +, pkgconfig +, polkit +, python3 +, samba +, shared-mime-info +, sound-theme-freedesktop +, tracker +, tzdata +, udisks2 +, upower +, epoxy +, gnome-user-share +, gnome-remote-desktop +, wrapGAppsHook +}: + +stdenv.mkDerivation rec { + pname = "gnome-control-center"; + version = "3.36.1"; + + src = fetchurl { + url = "mirror://gnome/sources/${pname}/${stdenv.lib.versions.majorMinor version}/${pname}-${version}.tar.xz"; + sha256 = "1466swjyw5vjym001qda94x6sisd4xhpyb6vq91grhkyzwf2vqzk"; + }; + + nativeBuildInputs = [ + docbook_xsl + gettext + libxslt + meson + ninja + pkgconfig + python3 + shared-mime-info + wrapGAppsHook + ]; + + buildInputs = [ + accountsservice + adwaita-icon-theme + cheese + clutter + clutter-gtk + colord + colord-gtk + fontconfig + gdk-pixbuf + glib + glib-networking + gnome-bluetooth + gnome-desktop + gnome-online-accounts + gnome-remote-desktop # optional, sharing panel + gnome-settings-daemon + gnome-user-share # optional, sharing panel + grilo + grilo-plugins # for setting wallpaper from Flickr + gsettings-desktop-schemas + gsound + gtk3 + ibus + libcanberra-gtk3 + libgtop + libgudev + libhandy + libkrb5 + libpulseaudio + libpwquality + librsvg + libsecret + libsoup + libwacom + libxml2 + modemmanager + mutter # schemas for the keybindings + networkmanager + libnma + polkit + samba + tracker + udisks2 + upower + epoxy + ]; + + patches = [ + (substituteAll { + src = ./paths.patch; + gcm = gnome-color-manager; + gnome_desktop = gnome-desktop; + inherit glibc libgnomekbd tzdata; + inherit cups networkmanagerapplet; + }) + ]; + + postPatch = '' + chmod +x build-aux/meson/meson_post_install.py # patchShebangs requires executable file + patchShebangs build-aux/meson/meson_post_install.py + ''; + + mesonFlags = [ + "-Dgnome_session_libexecdir=${gnome-session}/libexec" + ]; + + preFixup = '' + gappsWrapperArgs+=( + --prefix XDG_DATA_DIRS : "${sound-theme-freedesktop}/share" + # 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" + ) + for i in $out/share/applications/*; do + substituteInPlace $i --replace "Exec=gnome-control-center" "Exec=$out/bin/gnome-control-center" + done + ''; + + passthru = { + updateScript = gnome3.updateScript { + packageName = pname; + attrPath = "gnome3.${pname}"; + }; + }; + + meta = with stdenv.lib; { + description = "Utilities to configure the GNOME desktop"; + license = licenses.gpl2Plus; + maintainers = teams.gnome.members; + platforms = platforms.linux; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/core/gnome-control-center/paths.patch b/nixpkgs/pkgs/desktops/gnome-3/core/gnome-control-center/paths.patch new file mode 100644 index 000000000000..361972f2635a --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/core/gnome-control-center/paths.patch @@ -0,0 +1,192 @@ +diff --git a/panels/color/cc-color-panel.c b/panels/color/cc-color-panel.c +index 49ca35220..adefb87b9 100644 +--- a/panels/color/cc-color-panel.c ++++ b/panels/color/cc-color-panel.c +@@ -599,7 +599,7 @@ gcm_prefs_calibrate_cb (GtkWidget *widget, CcColorPanel *prefs) + + /* run with modal set */ + argv = g_ptr_array_new_with_free_func (g_free); +- g_ptr_array_add (argv, g_build_filename (BINDIR, "gcm-calibrate", NULL)); ++ 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 ("--parent-window")); +@@ -1038,7 +1038,7 @@ gcm_prefs_profile_view (CcColorPanel *prefs, CdProfile *profile) + + /* open up gcm-viewer as a info pane */ + argv = g_ptr_array_new_with_free_func (g_free); +- g_ptr_array_add (argv, g_build_filename (BINDIR, "gcm-viewer", NULL)); ++ g_ptr_array_add (argv, g_build_filename ("@gcm@", "bin", "gcm-viewer", NULL)); + 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")); +@@ -1288,15 +1288,12 @@ gcm_prefs_device_clicked (CcColorPanel *prefs, CdDevice *device) + static void + gcm_prefs_profile_clicked (CcColorPanel *prefs, CdProfile *profile, CdDevice *device) + { +- g_autofree gchar *s = NULL; +- + /* get profile */ + g_debug ("selected profile = %s", + cd_profile_get_filename (profile)); + + /* allow getting profile info */ +- 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); + else + gtk_widget_set_sensitive (prefs->toolbutton_profile_view, FALSE); +diff --git a/panels/datetime/tz.h b/panels/datetime/tz.h +index 96b25140c..1ad704d4a 100644 +--- a/panels/datetime/tz.h ++++ b/panels/datetime/tz.h +@@ -27,11 +27,7 @@ + + #include <glib.h> + +-#ifndef __sun +-# define TZ_DATA_FILE "/usr/share/zoneinfo/zone.tab" +-#else +-# define TZ_DATA_FILE "/usr/share/lib/zoneinfo/tab/zone_sun.tab" +-#endif ++#define TZ_DATA_FILE "@tzdata@/share/zoneinfo/zone.tab" + + typedef struct _TzDB TzDB; + typedef struct _TzLocation TzLocation; +diff --git a/panels/info-overview/cc-info-overview-panel.c b/panels/info-overview/cc-info-overview-panel.c +index 4541986db..da7826bfe 100644 +--- a/panels/info-overview/cc-info-overview-panel.c ++++ b/panels/info-overview/cc-info-overview-panel.c +@@ -169,7 +169,7 @@ load_gnome_version (char **version, + gsize length; + g_autoptr(VersionData) data = NULL; + +- if (!g_file_get_contents (DATADIR "/gnome/gnome-version.xml", ++ if (!g_file_get_contents ("@gnome_desktop@/share/gnome/gnome-version.xml", + &contents, + &length, + &error)) +diff --git a/panels/network/connection-editor/net-connection-editor.c b/panels/network/connection-editor/net-connection-editor.c +index 9390a3308..d30b4a68e 100644 +--- a/panels/network/connection-editor/net-connection-editor.c ++++ b/panels/network/connection-editor/net-connection-editor.c +@@ -278,9 +278,9 @@ net_connection_editor_do_fallback (NetConnectionEditor *self, const gchar *type) + g_autoptr(GError) error = NULL; + + if (self->is_new_connection) { +- cmdline = g_strdup_printf ("nm-connection-editor --type='%s' --create", type); ++ cmdline = g_strdup_printf ("@networkmanagerapplet@/bin/nm-connection-editor --type='%s' --create", type); + } else { +- cmdline = g_strdup_printf ("nm-connection-editor --edit='%s'", ++ cmdline = g_strdup_printf ("@networkmanagerapplet@/bin/nm-connection-editor --edit='%s'", + nm_connection_get_uuid (self->connection)); + } + +diff --git a/panels/network/net-device-bluetooth.c b/panels/network/net-device-bluetooth.c +--- a/panels/network/net-device-bluetooth.c ++++ b/panels/network/net-device-bluetooth.c +@@ -90,7 +90,7 @@ nm_device_bluetooth_refresh_ui (NetDeviceBluetooth *self) + update_off_switch_from_device_state (self->device_off_switch, state, self); + + /* set up the Options button */ +- path = g_find_program_in_path ("nm-connection-editor"); ++ path = g_find_program_in_path ("@networkmanagerapplet@/bin/nm-connection-editor"); + gtk_widget_set_visible (GTK_WIDGET (self->options_button), state != NM_DEVICE_STATE_UNMANAGED && path != NULL); + } + +@@ -141,7 +141,7 @@ options_button_clicked_cb (NetDeviceBluetooth *self) + + connection = net_device_get_find_connection (self->client, self->device); + uuid = nm_connection_get_uuid (connection); +- cmdline = g_strdup_printf ("nm-connection-editor --edit %s", uuid); ++ cmdline = g_strdup_printf ("@networkmanagerapplet@/bin/nm-connection-editor --edit %s", uuid); + g_debug ("Launching '%s'\n", cmdline); + if (!g_spawn_command_line_async (cmdline, &error)) + g_warning ("Failed to launch nm-connection-editor: %s", error->message); +@@ -185,7 +185,7 @@ net_device_bluetooth_init (NetDeviceBluetooth *self) + + gtk_widget_init_template (GTK_WIDGET (self)); + +- path = g_find_program_in_path ("nm-connection-editor"); ++ path = g_find_program_in_path ("@networkmanagerapplet@/bin/nm-connection-editor"); + gtk_widget_set_visible (GTK_WIDGET (self->options_button), path != NULL); + } + +diff --git a/panels/network/net-device-mobile.c b/panels/network/net-device-mobile.c +--- a/panels/network/net-device-mobile.c ++++ b/panels/network/net-device-mobile.c +@@ -484,7 +484,7 @@ options_button_clicked_cb (NetDeviceMobile *self) + + connection = net_device_get_find_connection (self->client, self->device); + uuid = nm_connection_get_uuid (connection); +- cmdline = g_strdup_printf ("nm-connection-editor --edit %s", uuid); ++ cmdline = g_strdup_printf ("@networkmanagerapplet@/bin/nm-connection-editor --edit %s", uuid); + g_debug ("Launching '%s'\n", cmdline); + if (!g_spawn_command_line_async (cmdline, &error)) + g_warning ("Failed to launch nm-connection-editor: %s", error->message); +@@ -776,7 +776,7 @@ net_device_mobile_init (NetDeviceMobile *self) + + self->cancellable = g_cancellable_new (); + +- path = g_find_program_in_path ("nm-connection-editor"); ++ path = g_find_program_in_path ("@networkmanagerapplet@/bin/nm-connection-editor"); + gtk_widget_set_visible (GTK_WIDGET (self->options_button), path != NULL); + } + +diff --git a/panels/printers/pp-host.c b/panels/printers/pp-host.c +index f53ba217e..d24bcaeb9 100644 +--- a/panels/printers/pp-host.c ++++ b/panels/printers/pp-host.c +@@ -256,7 +256,7 @@ _pp_host_get_snmp_devices_thread (GTask *task, + devices = g_new0 (PpDevicesList, 1); + + argv = g_new0 (gchar *, 3); +- argv[0] = g_strdup ("/usr/lib/cups/backend/snmp"); ++ argv[0] = g_strdup ("@cups@/lib/cups/backend/snmp"); + argv[1] = g_strdup (priv->hostname); + + /* Use SNMP to get printer's informations */ +diff --git a/panels/region/cc-region-panel.c b/panels/region/cc-region-panel.c +index 35859526d..21486c917 100644 +--- a/panels/region/cc-region-panel.c ++++ b/panels/region/cc-region-panel.c +@@ -755,10 +755,10 @@ row_layout_cb (CcRegionPanel *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/user-accounts/run-passwd.c b/panels/user-accounts/run-passwd.c +index 00239ce0f..617c98870 100644 +--- a/panels/user-accounts/run-passwd.c ++++ b/panels/user-accounts/run-passwd.c +@@ -150,7 +150,7 @@ spawn_passwd (PasswdHandler *passwd_handler, GError **error) + gchar **envp; + gint my_stdin, my_stdout, my_stderr; + +- argv[0] = "/usr/bin/passwd"; /* Is it safe to rely on a hard-coded path? */ ++ argv[0] = "/run/wrappers/bin/passwd"; /* Is it safe to rely on a hard-coded path? */ + argv[1] = NULL; + + envp = g_get_environ (); +diff --git a/tests/datetime/test-endianess.c b/tests/datetime/test-endianess.c +index 9cb92007a..84d2f0fa3 100644 +--- a/tests/datetime/test-endianess.c ++++ b/tests/datetime/test-endianess.c +@@ -26,7 +26,7 @@ test_endianess (void) + g_autoptr(GDir) dir = NULL; + const char *name; + +- dir = g_dir_open ("/usr/share/i18n/locales/", 0, NULL); ++ dir = g_dir_open ("@glibc@/share/i18n/locales/", 0, NULL); + if (dir == NULL) { + /* Try with /usr/share/locale/ + * https://bugzilla.gnome.org/show_bug.cgi?id=646780 */ diff --git a/nixpkgs/pkgs/desktops/gnome-3/core/gnome-desktop/bubblewrap-paths.patch b/nixpkgs/pkgs/desktops/gnome-3/core/gnome-desktop/bubblewrap-paths.patch new file mode 100644 index 000000000000..57eb4b3d44a9 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/core/gnome-desktop/bubblewrap-paths.patch @@ -0,0 +1,15 @@ +--- a/libgnome-desktop/gnome-desktop-thumbnail-script.c ++++ b/libgnome-desktop/gnome-desktop-thumbnail-script.c +@@ -536,9 +536,9 @@ add_bwrap (GPtrArray *array, + g_return_val_if_fail (script->s_infile != NULL, FALSE); + + add_args (array, +- "bwrap", +- "--ro-bind", "/usr", "/usr", +- "--ro-bind", "/etc/ld.so.cache", "/etc/ld.so.cache", ++ "@bubblewrap_bin@", ++ "--ro-bind", "@storeDir@", "@storeDir@", ++ "--ro-bind", "/run/current-system", "/run/current-system", + NULL); + + /* These directories might be symlinks into /usr/... */ diff --git a/nixpkgs/pkgs/desktops/gnome-3/core/gnome-desktop/default.nix b/nixpkgs/pkgs/desktops/gnome-3/core/gnome-desktop/default.nix new file mode 100644 index 000000000000..3f84d0ccd559 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/core/gnome-desktop/default.nix @@ -0,0 +1,53 @@ +{ stdenv, fetchurl, substituteAll, pkgconfig, libxslt, ninja, libX11, gnome3, gtk3, glib +, gettext, libxml2, xkeyboard_config, isocodes, meson, wayland +, libseccomp, systemd, bubblewrap, gobject-introspection, gtk-doc, docbook_xsl, gsettings-desktop-schemas }: + +stdenv.mkDerivation rec { + pname = "gnome-desktop"; + version = "3.36.1"; + + outputs = [ "out" "dev" "devdoc" ]; + + src = fetchurl { + url = "mirror://gnome/sources/gnome-desktop/${stdenv.lib.versions.majorMinor version}/${pname}-${version}.tar.xz"; + sha256 = "1058h1ndl6pmlh8rmbqq5lw15glws3anin88cm7lw4vzasgfavwc"; + }; + + nativeBuildInputs = [ + pkgconfig meson ninja gettext libxslt libxml2 gobject-introspection + gtk-doc docbook_xsl glib + ]; + buildInputs = [ + libX11 bubblewrap xkeyboard_config isocodes wayland + gtk3 glib libseccomp systemd + ]; + + propagatedBuildInputs = [ gsettings-desktop-schemas ]; + + patches = [ + (substituteAll { + src = ./bubblewrap-paths.patch; + bubblewrap_bin = "${bubblewrap}/bin/bwrap"; + inherit (builtins) storeDir; + }) + ]; + + mesonFlags = [ + "-Dgtk_doc=true" + "-Ddesktop_docs=false" + ]; + + passthru = { + updateScript = gnome3.updateScript { + packageName = "gnome-desktop"; + attrPath = "gnome3.gnome-desktop"; + }; + }; + + meta = with stdenv.lib; { + description = "Library with common API for various GNOME modules"; + license = with licenses; [ gpl2 lgpl2 ]; + platforms = platforms.linux; + maintainers = teams.gnome.members; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/core/gnome-dictionary/default.nix b/nixpkgs/pkgs/desktops/gnome-3/core/gnome-dictionary/default.nix new file mode 100644 index 000000000000..a19f0b6a276e --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/core/gnome-dictionary/default.nix @@ -0,0 +1,44 @@ +{ stdenv, fetchurl, fetchpatch, meson, ninja, pkgconfig, desktop-file-utils, appstream-glib, libxslt +, libxml2, gettext, itstool, wrapGAppsHook, docbook_xsl, docbook_xml_dtd_43 +, gnome3, gtk3, glib, gsettings-desktop-schemas }: + +stdenv.mkDerivation rec { + pname = "gnome-dictionary"; + version = "3.26.1"; + + src = fetchurl { + url = "mirror://gnome/sources/gnome-dictionary/${stdenv.lib.versions.majorMinor version}/${pname}-${version}.tar.xz"; + sha256 = "16b8bc248dcf68987826d5e39234b1bb7fd24a2607fcdbf4258fde88f012f300"; + }; + + patches = [ + # fix AppStream validation + (fetchpatch { + url = "https://gitlab.gnome.org/GNOME/gnome-dictionary/commit/1c94d612030ef87c6e26a01a490470b71c39e341.patch"; + sha256 = "sha256:0cbswmhs9mks3gsc0iy4wnidsa8sfzzf4s1kgvb80qwffgxz5m8b"; + }) + ]; + + doCheck = true; + + nativeBuildInputs = [ + meson ninja pkgconfig wrapGAppsHook libxml2 gettext itstool + desktop-file-utils appstream-glib libxslt docbook_xsl docbook_xml_dtd_43 + ]; + buildInputs = [ gtk3 glib gsettings-desktop-schemas gnome3.adwaita-icon-theme ]; + + passthru = { + updateScript = gnome3.updateScript { + packageName = "gnome-dictionary"; + attrPath = "gnome3.gnome-dictionary"; + }; + }; + + meta = with stdenv.lib; { + homepage = "https://wiki.gnome.org/Apps/Dictionary"; + description = "Dictionary is the GNOME application to look up definitions"; + maintainers = teams.gnome.members; + license = licenses.gpl2; + platforms = platforms.linux; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/core/gnome-disk-utility/default.nix b/nixpkgs/pkgs/desktops/gnome-3/core/gnome-disk-utility/default.nix new file mode 100644 index 000000000000..a7f66e68eeff --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/core/gnome-disk-utility/default.nix @@ -0,0 +1,45 @@ +{ stdenv, gettext, fetchurl, pkgconfig, udisks2, libsecret, libdvdread +, meson, ninja, gtk3, glib, wrapGAppsHook, python3, libnotify +, itstool, gnome3, libxml2, gsettings-desktop-schemas +, libcanberra-gtk3, libxslt, docbook_xsl, libpwquality, systemd }: + +stdenv.mkDerivation rec { + pname = "gnome-disk-utility"; + version = "3.36.1"; + + src = fetchurl { + url = "mirror://gnome/sources/gnome-disk-utility/${stdenv.lib.versions.majorMinor version}/${pname}-${version}.tar.xz"; + sha256 = "055l29z99f4ybgf2plz3biz1bwhlpsjpr0zk3aa6vg5w67r1h6vr"; + }; + + nativeBuildInputs = [ + meson ninja pkgconfig gettext itstool libxslt docbook_xsl + wrapGAppsHook python3 libxml2 + ]; + + buildInputs = [ + gtk3 glib libsecret libpwquality libnotify libdvdread libcanberra-gtk3 + udisks2 gnome3.adwaita-icon-theme systemd + gnome3.gnome-settings-daemon gsettings-desktop-schemas + ]; + + postPatch = '' + chmod +x meson_post_install.py # patchShebangs requires executable file + patchShebangs meson_post_install.py + ''; + + passthru = { + updateScript = gnome3.updateScript { + packageName = "gnome-disk-utility"; + attrPath = "gnome3.gnome-disk-utility"; + }; + }; + + meta = with stdenv.lib; { + homepage = "https://en.wikipedia.org/wiki/GNOME_Disks"; + description = "A udisks graphical front-end"; + maintainers = teams.gnome.members; + license = licenses.gpl2; + platforms = platforms.linux; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/core/gnome-font-viewer/default.nix b/nixpkgs/pkgs/desktops/gnome-3/core/gnome-font-viewer/default.nix new file mode 100644 index 000000000000..d0ceef61c25a --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/core/gnome-font-viewer/default.nix @@ -0,0 +1,35 @@ +{ stdenv, meson, ninja, gettext, fetchurl +, pkgconfig, gtk3, glib, libxml2, gnome-desktop, adwaita-icon-theme +, wrapGAppsHook, gnome3, harfbuzz }: + +stdenv.mkDerivation rec { + pname = "gnome-font-viewer"; + version = "3.34.0"; + + src = fetchurl { + url = "mirror://gnome/sources/gnome-font-viewer/${stdenv.lib.versions.majorMinor version}/${pname}-${version}.tar.xz"; + sha256 = "12xrsqwmvid7hksiw4zhj4jd1qwxn8w0czskbq4yqfprwn1havxa"; + }; + + doCheck = true; + + nativeBuildInputs = [ meson ninja pkgconfig gettext wrapGAppsHook libxml2 ]; + buildInputs = [ gtk3 glib gnome-desktop adwaita-icon-theme harfbuzz ]; + + # Do not run meson-postinstall.sh + preConfigure = "sed -i '2,$ d' meson-postinstall.sh"; + + passthru = { + updateScript = gnome3.updateScript { + packageName = "gnome-font-viewer"; + attrPath = "gnome3.gnome-font-viewer"; + }; + }; + + meta = with stdenv.lib; { + description = "Program that can preview fonts and create thumbnails for fonts"; + maintainers = teams.gnome.members; + license = licenses.gpl2; + platforms = platforms.linux; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/core/gnome-initial-setup/default.nix b/nixpkgs/pkgs/desktops/gnome-3/core/gnome-initial-setup/default.nix new file mode 100644 index 000000000000..e5277b07ad5c --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/core/gnome-initial-setup/default.nix @@ -0,0 +1,108 @@ +{ stdenv +, fetchurl +, substituteAll +, gettext +, meson +, ninja +, pkgconfig +, wrapGAppsHook +, gnome3 +, accountsservice +, fontconfig +, gdm +, geoclue2 +, geocode-glib +, glib +, gnome-desktop +, gnome-getting-started-docs +, gnome-online-accounts +, gtk3 +, libgweather +, json-glib +, krb5 +, libpwquality +, librest +, libsecret +, networkmanager +, pango +, polkit +, webkitgtk +, systemd +, libnma +, tzdata +, yelp +, libgnomekbd +}: + +stdenv.mkDerivation rec { + pname = "gnome-initial-setup"; + version = "3.36.1"; + + src = fetchurl { + url = "mirror://gnome/sources/${pname}/${stdenv.lib.versions.majorMinor version}/${pname}-${version}.tar.xz"; + sha256 = "1sfn6bdz8snc2qmi3nzb07vlkdhy9s1ipwxxj0v2i36a7n0gv6ci"; + }; + + nativeBuildInputs = [ + gettext + meson + ninja + pkgconfig + systemd + wrapGAppsHook + ]; + + buildInputs = [ + accountsservice + fontconfig + gdm + geoclue2 + geocode-glib + glib + gnome-desktop + gnome-getting-started-docs + gnome-online-accounts + gtk3 + json-glib + krb5 + libgweather + libpwquality + librest + libsecret + networkmanager + pango + polkit + webkitgtk + libnma + ]; + + patches = [ + (substituteAll { + src = ./fix-paths.patch; + inherit tzdata libgnomekbd; + yelp = "${yelp}/bin/yelp"; # gnome-welcome-tour + }) + ]; + + mesonFlags = [ + "-Dcheese=disabled" + "-Dibus=disabled" + "-Dparental_controls=disabled" + "-Dvendor-conf-file=${./vendor.conf}" + ]; + + passthru = { + updateScript = gnome3.updateScript { + packageName = pname; + attrPath = "gnome3.${pname}"; + }; + }; + + meta = with stdenv.lib; { + description = "Simple, easy, and safe way to prepare a new system"; + homepage = "https://gitlab.gnome.org/GNOME/gnome-initial-setup"; + license = licenses.gpl2Plus; + platforms = platforms.linux; + maintainers = teams.gnome.members; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/core/gnome-initial-setup/fix-paths.patch b/nixpkgs/pkgs/desktops/gnome-3/core/gnome-initial-setup/fix-paths.patch new file mode 100644 index 000000000000..94e14f688b3c --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/core/gnome-initial-setup/fix-paths.patch @@ -0,0 +1,67 @@ +diff --git a/data/gnome-welcome-tour b/data/gnome-welcome-tour +index c479296..3dd629c 100755 +--- a/data/gnome-welcome-tour ++++ b/data/gnome-welcome-tour +@@ -3,7 +3,7 @@ + cfgdir=${XDG_CONFIG_DIR:-$HOME/.config} + + # Don't do anything if yelp isn't installed +-yelp_path=$(which yelp 2>/dev/null) ++yelp_path=@yelp@ + if test -z "${yelp_path}"; then + rm -f $cfgdir/run-welcome-tour + exit +@@ -17,5 +17,5 @@ geometry=(1024, 709) + EOF + fi + +-yelp help:gnome-help/getting-started ++$yelp_path help:gnome-help/getting-started + rm -f $cfgdir/run-welcome-tour +diff --git a/gnome-initial-setup/pages/keyboard/cc-input-chooser.c b/gnome-initial-setup/pages/keyboard/cc-input-chooser.c +index 1c34ef7..a1e7f93 100644 +--- a/gnome-initial-setup/pages/keyboard/cc-input-chooser.c ++++ b/gnome-initial-setup/pages/keyboard/cc-input-chooser.c +@@ -177,9 +177,9 @@ preview_cb (GtkLabel *label, + 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); + else +- commandline = g_strdup_printf ("gkbd-keyboard-display -l %s", layout); ++ commandline = g_strdup_printf ("@libgnomekbd@/bin/gkbd-keyboard-display -l %s", layout); + g_spawn_command_line_async (commandline, NULL); + g_free (commandline); + +@@ -829,7 +829,7 @@ cc_input_chooser_class_init (CcInputChooserClass *klass) + g_param_spec_string ("showing-extra", "", "", "", + G_PARAM_READABLE | G_PARAM_STATIC_STRINGS); + +- signals[CHANGED] = ++ signals[CHANGED] = + g_signal_new ("changed", + G_TYPE_FROM_CLASS (object_class), + G_SIGNAL_RUN_FIRST, +diff --git a/gnome-initial-setup/pages/timezone/tz.h b/gnome-initial-setup/pages/timezone/tz.h +index 93905b3..e7ee785 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 @@ + #include <glib.h> + + #ifndef __sun +-# define TZ_DATA_FILE "/usr/share/zoneinfo/zone.tab" ++# define TZ_DATA_FILE "@tzdata@/share/zoneinfo/zone.tab" + #else + # define TZ_DATA_FILE "/usr/share/lib/zoneinfo/tab/zone_sun.tab" + #endif diff --git a/nixpkgs/pkgs/desktops/gnome-3/core/gnome-initial-setup/vendor.conf b/nixpkgs/pkgs/desktops/gnome-3/core/gnome-initial-setup/vendor.conf new file mode 100644 index 000000000000..a06b37e100ed --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/core/gnome-initial-setup/vendor.conf @@ -0,0 +1,5 @@ +# Disable pages not right for NixOS +# For example user accounts should be preconfigured +# and we can't modify system time with systemd. +[pages] +skip=account;software;password;timezone; diff --git a/nixpkgs/pkgs/desktops/gnome-3/core/gnome-keyring/default.nix b/nixpkgs/pkgs/desktops/gnome-3/core/gnome-keyring/default.nix new file mode 100644 index 000000000000..9ffd32e85f70 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/core/gnome-keyring/default.nix @@ -0,0 +1,73 @@ +{ stdenv, fetchurl, pkgconfig, dbus, libgcrypt, pam, python2, glib, libxslt +, gettext, gcr, libcap_ng, libselinux, p11-kit, openssh, wrapGAppsHook +, docbook_xsl, docbook_xml_dtd_43, gnome3 }: + +stdenv.mkDerivation rec { + pname = "gnome-keyring"; + version = "3.36.0"; + + src = fetchurl { + url = "mirror://gnome/sources/gnome-keyring/${stdenv.lib.versions.majorMinor version}/${pname}-${version}.tar.xz"; + sha256 = "11sgffrrpss5cmv3b717pqlbhgq17l1xd33fsvqgsw8simxbar52"; + }; + + outputs = [ "out" "dev" ]; + + buildInputs = [ + glib libgcrypt pam openssh libcap_ng libselinux + gcr p11-kit + ]; + + nativeBuildInputs = [ + pkgconfig gettext libxslt docbook_xsl docbook_xml_dtd_43 wrapGAppsHook + ]; + + configureFlags = [ + "--with-pkcs11-config=${placeholder "out"}/etc/pkcs11/" # installation directories + "--with-pkcs11-modules=${placeholder "out"}/lib/pkcs11/" + ]; + + postPatch = '' + patchShebangs build + ''; + + # Tends to fail non-deterministically. + # - https://github.com/NixOS/nixpkgs/issues/55293 + # - https://github.com/NixOS/nixpkgs/issues/51121 + doCheck = false; + + # In 3.20.1, tests do not support Python 3 + checkInputs = [ dbus python2 ]; + + checkPhase = '' + export HOME=$(mktemp -d) + dbus-run-session \ + --config-file=${dbus.daemon}/share/dbus-1/session.conf \ + make check + ''; + + # Use wrapped gnome-keyring-daemon with cap_ipc_lock=ep + postFixup = '' + files=($out/etc/xdg/autostart/* $out/share/dbus-1/services/*) + + for file in ''${files[*]}; do + substituteInPlace $file \ + --replace "$out/bin/gnome-keyring-daemon" "/run/wrappers/bin/gnome-keyring-daemon" + done + ''; + + passthru = { + updateScript = gnome3.updateScript { + packageName = "gnome-keyring"; + attrPath = "gnome3.gnome-keyring"; + }; + }; + + meta = with stdenv.lib; { + description = "Collection of components in GNOME that store secrets, passwords, keys, certificates and make them available to applications"; + homepage = "https://wiki.gnome.org/Projects/GnomeKeyring"; + license = licenses.gpl2; + maintainers = teams.gnome.members; + platforms = platforms.linux; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/core/gnome-online-miners/default.nix b/nixpkgs/pkgs/desktops/gnome-3/core/gnome-online-miners/default.nix new file mode 100644 index 000000000000..ede2f2792483 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/core/gnome-online-miners/default.nix @@ -0,0 +1,39 @@ +{ stdenv, fetchurl, pkgconfig, glib, gnome3, libxml2 +, libgdata, grilo, libzapojit, grilo-plugins, gnome-online-accounts, libmediaart +, tracker, gfbgraph, librest, libsoup, json-glib, gmp, openssl, dleyna-server, wrapGAppsHook }: + +stdenv.mkDerivation rec { + pname = "gnome-online-miners"; + version = "3.34.0"; + + src = fetchurl { + url = "mirror://gnome/sources/gnome-online-miners/${stdenv.lib.versions.majorMinor version}/${pname}-${version}.tar.xz"; + sha256 = "1n2jz9i8a42zwxx5h8j2gdy6q1vyydh4vl00r0al7w8jzdh24p44"; + }; + + nativeBuildInputs = [ pkgconfig wrapGAppsHook ]; + buildInputs = [ + glib libgdata libxml2 libsoup gmp openssl + grilo libzapojit grilo-plugins + gnome-online-accounts libmediaart + tracker gfbgraph json-glib librest + dleyna-server + ]; + + enableParallelBuilding = true; + + passthru = { + updateScript = gnome3.updateScript { + packageName = "gnome-online-miners"; + attrPath = "gnome3.gnome-online-miners"; + }; + }; + + meta = with stdenv.lib; { + homepage = "https://wiki.gnome.org/Projects/GnomeOnlineMiners"; + description = "A set of crawlers that go through your online content and index them locally in Tracker"; + maintainers = teams.gnome.members; + license = licenses.gpl2; + platforms = platforms.linux; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/core/gnome-remote-desktop/default.nix b/nixpkgs/pkgs/desktops/gnome-3/core/gnome-remote-desktop/default.nix new file mode 100644 index 000000000000..a77aee4b890c --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/core/gnome-remote-desktop/default.nix @@ -0,0 +1,39 @@ +{ stdenv, fetchFromGitLab, meson, ninja, pkgconfig, python3, wrapGAppsHook +, glib, pipewire, systemd, libvncserver, libsecret, libnotify, gdk-pixbuf }: + +stdenv.mkDerivation rec { + pname = "gnome-remote-desktop"; + version = "0.1.8"; + + src = fetchFromGitLab { + domain = "gitlab.gnome.org"; + owner = "jadahl"; + repo = "gnome-remote-desktop"; + rev = version; + sha256 = "1wcvk0w4p0wnqnrjkbwvqcby9dd4nj0cm9cz0fqna31qfjrvb913"; + }; + + nativeBuildInputs = [ meson ninja pkgconfig python3 wrapGAppsHook ]; + + buildInputs = [ + glib pipewire systemd libvncserver libsecret libnotify + gdk-pixbuf # For libnotify + ]; + + postPatch = '' + chmod +x meson_post_install.py # patchShebangs requires executable file + patchShebangs meson_post_install.py + ''; + + mesonFlags = [ + "-Dsystemd_user_unit_dir=${placeholder "out"}/lib/systemd/user" + ]; + + meta = with stdenv.lib; { + homepage = "https://wiki.gnome.org/Projects/Mutter/RemoteDesktop"; + description = "GNOME Remote Desktop server"; + maintainers = teams.gnome.members; + license = licenses.gpl2Plus; + platforms = platforms.linux; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/core/gnome-screenshot/default.nix b/nixpkgs/pkgs/desktops/gnome-3/core/gnome-screenshot/default.nix new file mode 100644 index 000000000000..2eacfc2de777 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/core/gnome-screenshot/default.nix @@ -0,0 +1,43 @@ +{ stdenv, gettext, libxml2, fetchurl, pkgconfig, libcanberra-gtk3 +, gtk3, glib, meson, ninja, python3, wrapGAppsHook, appstream-glib, desktop-file-utils +, gnome3, gsettings-desktop-schemas }: + +let + pname = "gnome-screenshot"; + version = "3.36.0"; +in stdenv.mkDerivation rec { + name = "${pname}-${version}"; + + src = fetchurl { + url = "mirror://gnome/sources/${pname}/${stdenv.lib.versions.majorMinor version}/${name}.tar.xz"; + sha256 = "0rhj6fkpxfm26jv3vsn7yb2ybkc2k86ggy23nxa945q74y4msj9k"; + }; + + doCheck = true; + + postPatch = '' + chmod +x build-aux/postinstall.py # patchShebangs requires executable file + patchShebangs build-aux/postinstall.py + ''; + + nativeBuildInputs = [ meson ninja pkgconfig gettext appstream-glib libxml2 desktop-file-utils python3 wrapGAppsHook ]; + buildInputs = [ + gtk3 glib libcanberra-gtk3 gnome3.adwaita-icon-theme + gsettings-desktop-schemas + ]; + + passthru = { + updateScript = gnome3.updateScript { + packageName = pname; + attrPath = "gnome3.${pname}"; + }; + }; + + meta = with stdenv.lib; { + homepage = "https://en.wikipedia.org/wiki/GNOME_Screenshot"; + description = "Utility used in the GNOME desktop environment for taking screenshots"; + maintainers = teams.gnome.members; + license = licenses.gpl2; + platforms = platforms.linux; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/core/gnome-session/default.nix b/nixpkgs/pkgs/desktops/gnome-3/core/gnome-session/default.nix new file mode 100644 index 000000000000..b25688ea5a9d --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/core/gnome-session/default.nix @@ -0,0 +1,79 @@ +{ fetchurl, stdenv, substituteAll, meson, ninja, pkgconfig, gnome3, glib, gtk3, gsettings-desktop-schemas +, gnome-desktop, dbus, json-glib, libICE, xmlto, docbook_xsl, docbook_xml_dtd_412, python3 +, libxslt, gettext, makeWrapper, systemd, xorg, epoxy, gnugrep, bash }: + +stdenv.mkDerivation rec { + pname = "gnome-session"; + version = "3.36.0"; + + outputs = ["out" "sessions"]; + + src = fetchurl { + url = "mirror://gnome/sources/gnome-session/${stdenv.lib.versions.majorMinor version}/${pname}-${version}.tar.xz"; + sha256 = "0ymvf1bap35348rpjqp63qwnwnnawdwi4snch95zc4n832w3hjym"; + }; + + patches = [ + (substituteAll { + src = ./fix-paths.patch; + gsettings = "${glib.bin}/bin/gsettings"; + dbusLaunch = "${dbus.lib}/bin/dbus-launch"; + grep = "${gnugrep}/bin/grep"; + bash = "${bash}/bin/bash"; + }) + ]; + + mesonFlags = [ "-Dsystemd=true" ]; + + nativeBuildInputs = [ + meson ninja pkgconfig gettext makeWrapper + xmlto libxslt docbook_xsl docbook_xml_dtd_412 python3 + dbus # for DTD + ]; + + buildInputs = [ + glib gtk3 libICE gnome-desktop json-glib xorg.xtrans gnome3.adwaita-icon-theme + gnome3.gnome-settings-daemon gsettings-desktop-schemas systemd epoxy + ]; + + postPatch = '' + chmod +x meson_post_install.py # patchShebangs requires executable file + patchShebangs meson_post_install.py + ''; + + # `bin/gnome-session` will reset the environment when run in wayland, we + # therefor wrap `libexec/gnome-session-binary` instead which is the actual + # binary needing wrapping + preFixup = '' + wrapProgram "$out/libexec/gnome-session-binary" \ + --prefix GI_TYPELIB_PATH : "$GI_TYPELIB_PATH" \ + --suffix XDG_DATA_DIRS : "$out/share:$GSETTINGS_SCHEMAS_PATH" \ + --suffix XDG_DATA_DIRS : "${gnome3.gnome-shell}/share"\ + --suffix XDG_CONFIG_DIRS : "${gnome3.gnome-settings-daemon}/etc/xdg" + ''; + + # We move the GNOME sessions to another output since gnome-session is a dependency of + # GDM itself. If we do not hide them, it will show broken GNOME sessions when GDM is + # enabled without proper GNOME installation. + postInstall = '' + mkdir $sessions + moveToOutput share/wayland-sessions "$sessions" + moveToOutput share/xsessions "$sessions" + ''; + + passthru = { + updateScript = gnome3.updateScript { + packageName = "gnome-session"; + attrPath = "gnome3.gnome-session"; + }; + providedSessions = [ "gnome" "gnome-xorg" ]; + }; + + meta = with stdenv.lib; { + description = "GNOME session manager"; + homepage = "https://wiki.gnome.org/Projects/SessionManagement"; + license = licenses.gpl2Plus; + maintainers = teams.gnome.members; + platforms = platforms.linux; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/core/gnome-session/fix-paths.patch b/nixpkgs/pkgs/desktops/gnome-3/core/gnome-session/fix-paths.patch new file mode 100644 index 000000000000..2399c656016a --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/core/gnome-session/fix-paths.patch @@ -0,0 +1,40 @@ +--- a/gnome-session/gnome-session.in ++++ b/gnome-session/gnome-session.in +@@ -3,11 +3,13 @@ + if [ "x$XDG_SESSION_TYPE" = "xwayland" ] && + [ "x$XDG_SESSION_CLASS" != "xgreeter" ] && + [ -n "$SHELL" ] && +- grep -q "$SHELL" /etc/shells && +- ! (echo "$SHELL" | grep -q "false") && +- ! (echo "$SHELL" | grep -q "nologin"); then ++ @grep@ -q "$SHELL" /etc/shells && ++ ! (echo "$SHELL" | @grep@ -q "false") && ++ ! (echo "$SHELL" | @grep@ -q "nologin"); then + if [ "$1" != '-l' ]; then +- exec bash -c "exec -l '$SHELL' -c '$0 -l $*'" ++ # Make sure the shell actually sets up the environment ++ unset __NIXOS_SET_ENVIRONMENT_DONE ++ exec @bash@ -c "exec -l '$SHELL' -c '$0 -l $*'" + else + shift + fi +@@ -13,7 +13,7 @@ + fi + fi + +-SETTING=$(G_MESSAGES_DEBUG= gsettings get org.gnome.system.locale region) ++SETTING=$(G_MESSAGES_DEBUG= @gsettings@ get org.gnome.system.locale region) + REGION=${SETTING#\'} + REGION=${REGION%\'} + +--- a/gnome-session/main.c ++++ b/gnome-session/main.c +@@ -203,7 +203,7 @@ + } + new_argv[i + 2] = NULL; + +- if (!execvp ("dbus-launch", new_argv)) { ++ if (!execvp ("@dbusLaunch@", new_argv)) { + g_set_error (error, + G_SPAWN_ERROR, + G_SPAWN_ERROR_FAILED, diff --git a/nixpkgs/pkgs/desktops/gnome-3/core/gnome-settings-daemon/default.nix b/nixpkgs/pkgs/desktops/gnome-3/core/gnome-settings-daemon/default.nix new file mode 100644 index 000000000000..6ff33660dc2b --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/core/gnome-settings-daemon/default.nix @@ -0,0 +1,124 @@ +{ stdenv +, substituteAll +, fetchurl +, meson +, ninja +, pkgconfig +, gnome3 +, perl +, gettext +, gtk3 +, glib +, libnotify +, libgnomekbd +, lcms2 +, libpulseaudio +, alsaLib +, libcanberra-gtk3 +, upower +, colord +, libgweather +, polkit +, gsettings-desktop-schemas +, geoclue2 +, systemd +, libgudev +, libwacom +, libxslt +, libxml2 +, modemmanager +, networkmanager +, gnome-desktop +, geocode-glib +, docbook_xsl +, wrapGAppsHook +, python3 +, tzdata +, nss +, gcr +}: + +stdenv.mkDerivation rec { + pname = "gnome-settings-daemon"; + version = "3.36.0"; + + src = fetchurl { + url = "mirror://gnome/sources/gnome-settings-daemon/${stdenv.lib.versions.majorMinor version}/${pname}-${version}.tar.xz"; + sha256 = "0jddz8f2j4ps7csgq9b694h9hjxsyhlimik6rb2f8nbcxhrg0bzs"; + }; + + patches = [ + (substituteAll { + src = ./fix-paths.patch; + inherit tzdata; + }) + ]; + + nativeBuildInputs = [ + meson + ninja + pkgconfig + perl + gettext + libxml2 + libxslt + docbook_xsl + wrapGAppsHook + python3 + ]; + + buildInputs = [ + gtk3 + glib + gsettings-desktop-schemas + modemmanager + networkmanager + libnotify + libgnomekbd # for org.gnome.libgnomekbd.keyboard schema + gnome-desktop + lcms2 + libpulseaudio + alsaLib + libcanberra-gtk3 + upower + colord + libgweather + nss + polkit + geocode-glib + geoclue2 + systemd + libgudev + libwacom + gcr + ]; + + mesonFlags = [ + "-Dudev_dir=${placeholder "out"}/lib/udev" + ]; + + # Default for release buildtype but passed manually because + # we're using plain + NIX_CFLAGS_COMPILE = "-DG_DISABLE_CAST_CHECKS"; + + + postPatch = '' + for f in gnome-settings-daemon/codegen.py plugins/power/gsd-power-constants-update.pl meson_post_install.py; do + chmod +x $f + patchShebangs $f + done + ''; + + passthru = { + updateScript = gnome3.updateScript { + packageName = pname; + attrPath = "gnome3.${pname}"; + }; + }; + + meta = with stdenv.lib; { + license = licenses.gpl2Plus; + maintainers = teams.gnome.members; + platforms = platforms.linux; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/core/gnome-settings-daemon/fix-paths.patch b/nixpkgs/pkgs/desktops/gnome-3/core/gnome-settings-daemon/fix-paths.patch new file mode 100644 index 000000000000..2229302cab7c --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/core/gnome-settings-daemon/fix-paths.patch @@ -0,0 +1,15 @@ +--- a/plugins/datetime/tz.h ++++ b/plugins/datetime/tz.h +@@ -27,11 +27,7 @@ + + #include <glib.h> + +-#ifndef __sun +-# define TZ_DATA_FILE "/usr/share/zoneinfo/zone.tab" +-#else +-# define TZ_DATA_FILE "/usr/share/lib/zoneinfo/tab/zone_sun.tab" +-#endif ++#define TZ_DATA_FILE "@tzdata@/share/zoneinfo/zone.tab" + + typedef struct _TzDB TzDB; + typedef struct _TzLocation TzLocation; diff --git a/nixpkgs/pkgs/desktops/gnome-3/core/gnome-settings-daemon/global-backlight-helper.patch b/nixpkgs/pkgs/desktops/gnome-3/core/gnome-settings-daemon/global-backlight-helper.patch new file mode 100644 index 000000000000..8f3951af2da8 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/core/gnome-settings-daemon/global-backlight-helper.patch @@ -0,0 +1,26 @@ +diff --git a/plugins/power/gsd-backlight.c b/plugins/power/gsd-backlight.c +index d7d10fd2..5619d6ad 100644 +--- a/plugins/power/gsd-backlight.c ++++ b/plugins/power/gsd-backlight.c +@@ -358,7 +358,7 @@ gsd_backlight_run_set_helper (GsdBacklight *backlight, GTask *task) + proc = g_subprocess_new (G_SUBPROCESS_FLAGS_STDOUT_SILENCE, + &error, + "pkexec", +- LIBEXECDIR "/gsd-backlight-helper", ++ "/run/current-system/sw/bin/gnome-settings-daemon/gsd-backlight-helper", + g_udev_device_get_sysfs_path (backlight->udev_device), + data->value_str, NULL); + } else { +diff --git a/plugins/power/org.gnome.settings-daemon.plugins.power.policy.in.in b/plugins/power/org.gnome.settings-daemon.plugins.power.policy.in.in +index f16300f8..79d6bd17 100644 +--- a/plugins/power/org.gnome.settings-daemon.plugins.power.policy.in.in ++++ b/plugins/power/org.gnome.settings-daemon.plugins.power.policy.in.in +@@ -25,7 +25,7 @@ + <allow_inactive>no</allow_inactive> + <allow_active>yes</allow_active> + </defaults> +- <annotate key="org.freedesktop.policykit.exec.path">@libexecdir@/gsd-backlight-helper</annotate> ++ <annotate key="org.freedesktop.policykit.exec.path">/run/current-system/sw/bin/gnome-settings-daemon/gsd-backlight-helper</annotate> + </action> + + </policyconfig> diff --git a/nixpkgs/pkgs/desktops/gnome-3/core/gnome-shell-extensions/default.nix b/nixpkgs/pkgs/desktops/gnome-3/core/gnome-shell-extensions/default.nix new file mode 100644 index 000000000000..c298d8b337fb --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/core/gnome-shell-extensions/default.nix @@ -0,0 +1,65 @@ +{ stdenv, fetchurl, meson, ninja, gettext, pkgconfig, spidermonkey_68, glib +, gnome3, gnome-menus, substituteAll }: + +stdenv.mkDerivation rec { + pname = "gnome-shell-extensions"; + version = "3.36.1"; + + src = fetchurl { + url = "mirror://gnome/sources/gnome-shell-extensions/${stdenv.lib.versions.majorMinor version}/${pname}-${version}.tar.xz"; + sha256 = "0fah7cc22g55w6w7ia3kr2wpdrc45h83xw4pimi54mhggmx9466y"; + }; + + passthru = { + updateScript = gnome3.updateScript { + packageName = pname; + attrPath = "gnome3.${pname}"; + }; + }; + + patches = [ + (substituteAll { + src = ./fix_gmenu.patch; + gmenu_path = "${gnome-menus}/lib/girepository-1.0"; + }) + ]; + + doCheck = true; + # 60 is required for tests + # https://gitlab.gnome.org/GNOME/gnome-shell-extensions/blob/3.34.0/meson.build#L23 + checkInputs = [ spidermonkey_68 ]; + + nativeBuildInputs = [ meson ninja pkgconfig gettext glib ]; + + mesonFlags = [ "-Dextension_set=all" ]; + + preFixup = '' + # The meson build doesn't compile the schemas. + # Fixup adapted from export-zips.sh in the source. + + extensiondir=$out/share/gnome-shell/extensions + schemadir=${glib.makeSchemaPath "$out" "${pname}-${version}"} + + glib-compile-schemas $schemadir + + for f in $extensiondir/*; do + name=`basename ''${f%%@*}` + uuid=$name@gnome-shell-extensions.gcampax.github.com + schema=$schemadir/org.gnome.shell.extensions.$name.gschema.xml + + if [ -f $schema ]; then + mkdir $f/schemas + ln -s $schema $f/schemas; + glib-compile-schemas $f/schemas + fi + done + ''; + + meta = with stdenv.lib; { + homepage = "https://wiki.gnome.org/Projects/GnomeShell/Extensions"; + description = "Modify and extend GNOME Shell functionality and behavior"; + maintainers = teams.gnome.members; + license = licenses.gpl2; + platforms = platforms.linux; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/core/gnome-shell-extensions/fix_gmenu.patch b/nixpkgs/pkgs/desktops/gnome-3/core/gnome-shell-extensions/fix_gmenu.patch new file mode 100644 index 000000000000..555664e8ae25 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/core/gnome-shell-extensions/fix_gmenu.patch @@ -0,0 +1,11 @@ +--- 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 */ + ++imports.gi.GIRepository.Repository.prepend_search_path('@gmenu_path@'); ++ + const { + Atk, Clutter, Gio, GLib, GMenu, GObject, Gtk, Meta, Shell, St + } = imports.gi; diff --git a/nixpkgs/pkgs/desktops/gnome-3/core/gnome-shell/default.nix b/nixpkgs/pkgs/desktops/gnome-3/core/gnome-shell/default.nix new file mode 100644 index 000000000000..864dd45aad20 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/core/gnome-shell/default.nix @@ -0,0 +1,126 @@ +{ fetchurl, fetchpatch, substituteAll, stdenv, meson, ninja, pkgconfig, gnome3, json-glib, gettext, libsecret +, python3, libsoup, polkit, clutter, networkmanager, docbook_xsl , docbook_xsl_ns, at-spi2-core +, libstartup_notification, telepathy-glib, telepathy-logger, libXtst, unzip, glibcLocales, shared-mime-info +, libgweather, libcanberra-gtk3, librsvg, geoclue2, perl, docbook_xml_dtd_42, desktop-file-utils +, libpulseaudio, libical, gobject-introspection, wrapGAppsHook, libxslt, gcr +, accountsservice, gdk-pixbuf, gdm, upower, ibus, libnma, libgnomekbd, gnome-desktop +, gsettings-desktop-schemas, gnome-keyring, glib, gjs, mutter, evolution-data-server, gtk3 +, sassc, systemd, gst_all_1, adwaita-icon-theme, gnome-bluetooth, gnome-clocks, gnome-settings-daemon +, gnome-autoar, asciidoc-full +, bash-completion +}: + +# http://sources.gentoo.org/cgi-bin/viewvc.cgi/gentoo-x86/gnome-base/gnome-shell/gnome-shell-3.10.2.1.ebuild?revision=1.3&view=markup + +let + pythonEnv = python3.withPackages ( ps: with ps; [ pygobject3 ] ); + +in stdenv.mkDerivation rec { + pname = "gnome-shell"; + version = "3.36.1"; + + src = fetchurl { + url = "mirror://gnome/sources/gnome-shell/${stdenv.lib.versions.majorMinor version}/${pname}-${version}.tar.xz"; + sha256 = "0696qw6bmbga30qlvh1k6bkiajl7877j8yis4bwmi1wxkcmkh854"; + }; + + LANG = "en_US.UTF-8"; + + nativeBuildInputs = [ + meson ninja pkgconfig gettext docbook_xsl docbook_xsl_ns docbook_xml_dtd_42 perl wrapGAppsHook glibcLocales + sassc desktop-file-utils libxslt.bin python3 asciidoc-full + ]; + buildInputs = [ + systemd + gsettings-desktop-schemas gnome-keyring glib gcr json-glib accountsservice + libsecret libsoup polkit gdk-pixbuf librsvg + networkmanager libstartup_notification telepathy-glib + libXtst gjs mutter libpulseaudio evolution-data-server + libical gtk3 gdm libcanberra-gtk3 geoclue2 + adwaita-icon-theme gnome-bluetooth + gnome-clocks # schemas needed + at-spi2-core upower ibus gnome-desktop telepathy-logger gnome-settings-daemon + gobject-introspection + gnome-autoar + + # recording + gst_all_1.gstreamer + gst_all_1.gst-plugins-base + gst_all_1.gst-plugins-good + + # not declared at build time, but typelib is needed at runtime + libgweather libnma + + # for gnome-extension tool + bash-completion + ]; + + patches = [ + # Hardcode paths to various dependencies so that they can be found at runtime. + (substituteAll { + src = ./fix-paths.patch; + inherit libgnomekbd unzip; + gsettings = "${glib.bin}/bin/gsettings"; + }) + + # Install bash-completions to correct prefix. + # https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/1194 + ./fix-bash-completion.patch + + # Use absolute path for libshew installation to make our patched gobject-introspection + # aware of the location to hardcode in the generated GIR file. + ./shew-gir-path.patch + + # Make D-Bus services wrappable. + ./wrap-services.patch + + # 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 = "9DdzjEnDiBL+JmdfgKwjYPn1O2wJ/6n1sMDT1ylUB5I="; + }) + ]; + + postPatch = '' + patchShebangs src/data-to-c.pl + chmod +x meson/postinstall.py + patchShebangs meson/postinstall.py + + substituteInPlace src/gnome-shell-extension-tool.in --replace "@PYTHON@" "${pythonEnv}/bin/python" + substituteInPlace src/gnome-shell-perf-tool.in --replace "@PYTHON@" "${pythonEnv}/bin/python" + ''; + + preFixup = '' + gappsWrapperArgs+=( + # Until glib’s xdgmime is patched + # Fixes “Failed to load resource:///org/gnome/shell/theme/noise-texture.png: Unrecognized image file format” + --prefix XDG_DATA_DIRS : "${shared-mime-info}/share" + ) + ''; + + postFixup = '' + # The services need typelibs. + for svc in org.gnome.Shell.Extensions org.gnome.Shell.Notifications; do + wrapGApp $out/share/gnome-shell/$svc + done + ''; + + passthru = { + mozillaPlugin = "/lib/mozilla/plugins"; + updateScript = gnome3.updateScript { + packageName = "gnome-shell"; + attrPath = "gnome3.gnome-shell"; + }; + }; + + meta = with stdenv.lib; { + description = "Core user interface for the GNOME 3 desktop"; + homepage = "https://wiki.gnome.org/Projects/GnomeShell"; + license = licenses.gpl2Plus; + maintainers = teams.gnome.members; + platforms = platforms.linux; + }; + +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/core/gnome-shell/fix-bash-completion.patch b/nixpkgs/pkgs/desktops/gnome-3/core/gnome-shell/fix-bash-completion.patch new file mode 100644 index 000000000000..08f674c23773 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/core/gnome-shell/fix-bash-completion.patch @@ -0,0 +1,10 @@ +--- a/subprojects/extensions-tool/meson.build ++++ a/subprojects/extensions-tool/meson.build +@@ -39,6 +39,6 @@ subdir('src') + + if bash_completion.found() + install_data('completion/bash/gnome-extensions', +- install_dir: bash_completion.get_pkgconfig_variable('completionsdir') ++ install_dir: bash_completion.get_pkgconfig_variable('completionsdir', define_variable: ['prefix', prefix]) + ) + endif diff --git a/nixpkgs/pkgs/desktops/gnome-3/core/gnome-shell/fix-paths.patch b/nixpkgs/pkgs/desktops/gnome-3/core/gnome-shell/fix-paths.patch new file mode 100644 index 000000000000..7b93475619b2 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/core/gnome-shell/fix-paths.patch @@ -0,0 +1,30 @@ +--- a/js/ui/extensionDownloader.js ++++ b/js/ui/extensionDownloader.js +@@ -86,7 +86,7 @@ + stream.output_stream.write_bytes(contents, null); + stream.close(null); + let [success, pid] = GLib.spawn_async(null, +- ['unzip', '-uod', dir.get_path(), '--', file.get_path()], ++ ['@unzip@/bin/unzip', '-uod', dir.get_path(), '--', file.get_path()], + null, + GLib.SpawnFlags.SEARCH_PATH | GLib.SpawnFlags.DO_NOT_REAP_CHILD, + null); +--- a/js/ui/status/keyboard.js ++++ b/js/ui/status/keyboard.js +@@ -1062,6 +1062,6 @@ class InputSourceIndicator extends PanelMenu.Button { + if (xkbVariant.length > 0) + description = `${description}\t${xkbVariant}`; + +- Util.spawn(['gkbd-keyboard-display', '-l', description]); ++ Util.spawn(['@libgnomekbd@/bin/gkbd-keyboard-display', '-l', description]); + } + }); +--- a/data/gnome-shell-disable-extensions.service ++++ b/data/gnome-shell-disable-extensions.service +@@ -10,5 +10,5 @@ Requisite=gnome-session-stable.timer + [Service] + Type=simple + # Disable extensions +-ExecStart=gsettings set org.gnome.shell disable-user-extensions true ++ExecStart=@gsettings@ set org.gnome.shell disable-user-extensions true + Restart=no diff --git a/nixpkgs/pkgs/desktops/gnome-3/core/gnome-shell/shew-gir-path.patch b/nixpkgs/pkgs/desktops/gnome-3/core/gnome-shell/shew-gir-path.patch new file mode 100644 index 000000000000..2d7bdf303151 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/core/gnome-shell/shew-gir-path.patch @@ -0,0 +1,11 @@ +--- a/subprojects/shew/src/meson.build ++++ b/subprojects/shew/src/meson.build +@@ -13,7 +13,7 @@ shew_sources = [ + libshew = library(full_name, + sources: shew_sources, + dependencies: [gtk_dep], +- install_dir: pkglibdir, ++ install_dir: get_option('prefix') / pkglibdir, + install: true, + ) + diff --git a/nixpkgs/pkgs/desktops/gnome-3/core/gnome-shell/wrap-services.patch b/nixpkgs/pkgs/desktops/gnome-3/core/gnome-shell/wrap-services.patch new file mode 100644 index 000000000000..bc494caea9dd --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/core/gnome-shell/wrap-services.patch @@ -0,0 +1,57 @@ +diff --git a/js/dbusServices/dbus-service.in b/js/dbusServices/dbus-service.in +old mode 100644 +new mode 100755 +index 524166102..100b81a63 +--- a/js/dbusServices/dbus-service.in ++++ b/js/dbusServices/dbus-service.in +@@ -1,3 +1,9 @@ ++#!@gjs@ ++ ++// 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@', +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 ++++ b/js/dbusServices/dbus-service.service.in +@@ -1,3 +1,3 @@ + [D-BUS Service] + Name=@service@ +-Exec=@gjs@ @pkgdatadir@/@service@ ++Exec=@pkgdatadir@/@service@ +diff --git a/js/dbusServices/meson.build b/js/dbusServices/meson.build +index c749f45dc..11bcb0c9e 100644 +--- a/js/dbusServices/meson.build ++++ b/js/dbusServices/meson.build +@@ -2,6 +2,7 @@ launcherconf = configuration_data() + launcherconf.set('PACKAGE_NAME', meson.project_name()) + launcherconf.set('prefix', prefix) + launcherconf.set('libdir', libdir) ++launcherconf.set('gjs', gjs.path()) + + dbus_services = { + 'org.gnome.Shell.Extensions': 'extensions', +@@ -11,16 +12,17 @@ dbus_services = { + config_dir = '@0@/..'.format(meson.current_build_dir()) + + foreach service, dir : dbus_services ++ svc_launcherconf = launcherconf ++ svc_launcherconf.set('service', service) + configure_file( + input: 'dbus-service.in', + output: service, +- configuration: launcherconf, ++ configuration: svc_launcherconf, + install_dir: pkgdatadir, + ) + + serviceconf = configuration_data() + serviceconf.set('service', service) +- serviceconf.set('gjs', gjs.path()) + serviceconf.set('pkgdatadir', pkgdatadir) + + configure_file( diff --git a/nixpkgs/pkgs/desktops/gnome-3/core/gnome-software/default.nix b/nixpkgs/pkgs/desktops/gnome-3/core/gnome-software/default.nix new file mode 100644 index 000000000000..46201629ce7a --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/core/gnome-software/default.nix @@ -0,0 +1,65 @@ +{ stdenv, fetchurl, substituteAll, pkgconfig, meson, ninja, gettext, gnome3, wrapGAppsHook, packagekit, ostree +, glib, appstream-glib, libsoup, polkit, isocodes, gspell, libxslt, gobject-introspection, flatpak, fwupd +, gtk3, gsettings-desktop-schemas, gnome-desktop, libxmlb, gnome-online-accounts +, json-glib, libsecret, valgrind-light, docbook_xsl, docbook_xml_dtd_42, docbook_xml_dtd_43, gtk-doc, desktop-file-utils }: + +let + + withFwupd = stdenv.isx86_64 || stdenv.isi686; + +in + +stdenv.mkDerivation rec { + pname = "gnome-software"; + version = "3.36.0"; + + src = fetchurl { + url = "mirror://gnome/sources/gnome-software/${stdenv.lib.versions.majorMinor version}/${pname}-${version}.tar.xz"; + sha256 = "0b5b1k0a531c2jyf4g59dw7lblga8xrba38mzfdl57dnknbvbafs"; + }; + + patches = [ + (substituteAll { + src = ./fix-paths.patch; + inherit isocodes; + }) + ]; + + nativeBuildInputs = [ + meson ninja pkgconfig gettext wrapGAppsHook libxslt docbook_xml_dtd_42 docbook_xml_dtd_43 + valgrind-light docbook_xsl gtk-doc desktop-file-utils gobject-introspection + ]; + + buildInputs = [ + gtk3 glib packagekit appstream-glib libsoup + gsettings-desktop-schemas gnome-desktop + gspell json-glib libsecret ostree + polkit flatpak libxmlb gnome-online-accounts + ] ++ stdenv.lib.optionals withFwupd [ + fwupd + ]; + + mesonFlags = [ + "-Dubuntu_reviews=false" + "-Dgudev=false" + # FIXME: package malcontent parental controls + "-Dmalcontent=false" + ] ++ stdenv.lib.optionals (!withFwupd) [ + "-Dfwupd=false" + ]; + + passthru = { + updateScript = gnome3.updateScript { + packageName = "gnome-software"; + attrPath = "gnome3.gnome-software"; + }; + }; + + meta = with stdenv.lib; { + description = "Software store that lets you install and update applications and system extensions"; + homepage = "https://wiki.gnome.org/Apps/Software"; + license = licenses.gpl2; + maintainers = teams.gnome.members; + platforms = platforms.linux; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/core/gnome-software/fix-paths.patch b/nixpkgs/pkgs/desktops/gnome-3/core/gnome-software/fix-paths.patch new file mode 100644 index 000000000000..6f443a8a43ed --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/core/gnome-software/fix-paths.patch @@ -0,0 +1,11 @@ +--- a/src/gs-language.c ++++ b/src/gs-language.c +@@ -95,7 +95,7 @@ + g_autoptr(GMarkupParseContext) context = NULL; + + /* find filename */ +- filename = g_build_filename (DATADIR, "xml", "iso-codes", "iso_639.xml", NULL); ++ filename = g_build_filename ("@isocodes@", "share", "xml", "iso-codes", "iso_639.xml", NULL); + if (!g_file_test (filename, G_FILE_TEST_EXISTS)) { + g_free (filename); + filename = g_build_filename ("/usr", "share", "xml", "iso-codes", "iso_639.xml", NULL); diff --git a/nixpkgs/pkgs/desktops/gnome-3/core/gnome-system-monitor/default.nix b/nixpkgs/pkgs/desktops/gnome-3/core/gnome-system-monitor/default.nix new file mode 100644 index 000000000000..82ec3c9a9d76 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/core/gnome-system-monitor/default.nix @@ -0,0 +1,44 @@ +{ stdenv, gettext, fetchurl, pkgconfig, gtkmm3, libxml2 +, bash, gtk3, glib, wrapGAppsHook, meson, ninja, python3 +, gsettings-desktop-schemas, itstool, gnome3, librsvg, gdk-pixbuf, libgtop, systemd }: + +stdenv.mkDerivation rec { + pname = "gnome-system-monitor"; + version = "3.36.0"; + + src = fetchurl { + url = "mirror://gnome/sources/gnome-system-monitor/${stdenv.lib.versions.majorMinor version}/${pname}-${version}.tar.xz"; + sha256 = "1gipjaw708lv1zj1c9g09x4h4226kawam2kzdhdd6zjkzfghp9s0"; + }; + + doCheck = true; + + nativeBuildInputs = [ + pkgconfig gettext itstool wrapGAppsHook meson ninja python3 + ]; + buildInputs = [ + bash gtk3 glib libxml2 gtkmm3 libgtop gdk-pixbuf gnome3.adwaita-icon-theme librsvg + gsettings-desktop-schemas systemd + ]; + + postPatch = '' + chmod +x meson_post_install.py # patchShebangs requires executable file + patchShebangs meson_post_install.py + sed -i '/gtk-update-icon-cache/s/^/#/' meson_post_install.py + ''; + + passthru = { + updateScript = gnome3.updateScript { + packageName = "gnome-system-monitor"; + attrPath = "gnome3.gnome-system-monitor"; + }; + }; + + meta = with stdenv.lib; { + homepage = "https://wiki.gnome.org/Apps/SystemMonitor"; + description = "System Monitor shows you what programs are running and how much processor time, memory, and disk space are being used"; + maintainers = teams.gnome.members; + license = licenses.gpl2; + platforms = platforms.linux; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/core/gnome-terminal/default.nix b/nixpkgs/pkgs/desktops/gnome-3/core/gnome-terminal/default.nix new file mode 100644 index 000000000000..6a90bb7657ac --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/core/gnome-terminal/default.nix @@ -0,0 +1,50 @@ +{ stdenv, fetchurl, pkgconfig, libxml2, gnome3, dconf, nautilus +, gtk3, gsettings-desktop-schemas, vte, gettext, which, libuuid, vala +, desktop-file-utils, itstool, wrapGAppsHook, glib, pcre2 }: + +stdenv.mkDerivation rec { + pname = "gnome-terminal"; + version = "3.36.1.1"; + + src = fetchurl { + url = "mirror://gnome/sources/gnome-terminal/${stdenv.lib.versions.majorMinor version}/${pname}-${version}.tar.xz"; + sha256 = "0xm3g3kanfhs1q3xh3x58r55v8906806wvqjbg4c2xvdwyhhimzk"; + }; + + buildInputs = [ + gtk3 gsettings-desktop-schemas vte libuuid dconf + # For extension + nautilus + ]; + + nativeBuildInputs = [ + pkgconfig gettext itstool which libxml2 + vala desktop-file-utils wrapGAppsHook pcre2 + ]; + + # Silly ./configure, it looks for dbus file from gnome-shell in the + # installation tree of the package it is configuring. + postPatch = '' + substituteInPlace configure --replace '$(eval echo $(eval echo $(eval echo ''${dbusinterfacedir})))/org.gnome.ShellSearchProvider2.xml' "${gnome3.gnome-shell}/share/dbus-1/interfaces/org.gnome.ShellSearchProvider2.xml" + substituteInPlace src/Makefile.in --replace '$(dbusinterfacedir)/org.gnome.ShellSearchProvider2.xml' "${gnome3.gnome-shell}/share/dbus-1/interfaces/org.gnome.ShellSearchProvider2.xml" + ''; + + configureFlags = [ "--disable-migration" ]; # TODO: remove this with 3.30 + + passthru = { + updateScript = gnome3.updateScript { + packageName = "gnome-terminal"; + attrPath = "gnome3.gnome-terminal"; + }; + }; + + enableParallelBuilding = true; + + meta = with stdenv.lib; { + description = "The GNOME Terminal Emulator"; + homepage = "https://wiki.gnome.org/Apps/Terminal"; + platforms = platforms.linux; + license = licenses.gpl3Plus; + maintainers = teams.gnome.members; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/core/gnome-themes-extra/default.nix b/nixpkgs/pkgs/desktops/gnome-3/core/gnome-themes-extra/default.nix new file mode 100644 index 000000000000..9cbac8c74277 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/core/gnome-themes-extra/default.nix @@ -0,0 +1,32 @@ +{ stdenv, fetchurl, intltool, gtk3, gnome3, librsvg, pkgconfig, pango, atk, gtk2 +, gdk-pixbuf }: + +let + pname = "gnome-themes-extra"; + version = "3.28"; +in stdenv.mkDerivation rec { + name = "${pname}-${version}"; + + src = fetchurl { + url = "mirror://gnome/sources/${pname}/${stdenv.lib.versions.majorMinor version}/${name}.tar.xz"; + sha256 = "06aqg9asq2vqi9wr29bs4v8z2bf4manhbhfghf4nvw01y2zs0jvw"; + }; + + passthru = { + updateScript = gnome3.updateScript { + packageName = pname; + }; + }; + + nativeBuildInputs = [ pkgconfig intltool ]; + buildInputs = [ gtk3 librsvg pango atk gtk2 gdk-pixbuf gnome3.adwaita-icon-theme ]; + + postFixup = '' + gtk-update-icon-cache "$out"/share/icons/HighContrast + ''; + + meta = with stdenv.lib; { + platforms = platforms.linux; + maintainers = teams.gnome.members; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/core/gnome-tour/default.nix b/nixpkgs/pkgs/desktops/gnome-3/core/gnome-tour/default.nix new file mode 100644 index 000000000000..719e97647f7a --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/core/gnome-tour/default.nix @@ -0,0 +1,81 @@ +{ stdenv +, rustPlatform +, gettext +, meson +, ninja +, fetchFromGitLab +, pkg-config +, gtk3 +, glib +, gdk-pixbuf +, desktop-file-utils +, appstream-glib +, wrapGAppsHook +, python3 +, gnome3 +, config +}: + +rustPlatform.buildRustPackage rec { + pname = "gnome-tour"; + version = "0.0.1"; + + # We don't use the uploaded tar.xz because it comes pre-vendored + src = fetchFromGitLab { + domain = "gitlab.gnome.org"; + owner = "GNOME"; + repo = "gnome-tour"; + rev = version; + sha256 = "0lbkspnlziq3z177071w3jpghmdwflzra1krdwchzmkfmrhy50ch"; + }; + + cargoSha256 = "0k1wp9wswr57fv2d9bysxn97fchd4vz29n5r8gfyp0gcm8rclmij"; + + mesonFlags = [ + "-Ddistro_name=NixOS" + "-Ddistro_icon_name=nix-snowflake" + "-Ddistro_version=20.09" + ]; + + nativeBuildInputs = [ + appstream-glib + desktop-file-utils + gettext + meson + ninja + pkg-config + python3 + wrapGAppsHook + ]; + + buildInputs = [ + gdk-pixbuf + glib + gtk3 + ]; + + # Don't use buildRustPackage phases, only use it for rust deps setup + configurePhase = null; + buildPhase = null; + checkPhase = null; + installPhase = null; + + postPatch = '' + chmod +x build-aux/meson_post_install.py + patchShebangs build-aux/meson_post_install.py + ''; + + # passthru = { + # updateScript = gnome3.updateScript { + # packageName = pname; + # }; + # }; + + meta = with stdenv.lib; { + homepage = "https://gitlab.gnome.org/GNOME/gnome-tour"; + description = "GNOME Greeter & Tour"; + maintainers = teams.gnome.members; + license = licenses.gpl3Plus; + platforms = platforms.linux; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/core/gnome-user-share/default.nix b/nixpkgs/pkgs/desktops/gnome-3/core/gnome-user-share/default.nix new file mode 100644 index 000000000000..90acee076a34 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/core/gnome-user-share/default.nix @@ -0,0 +1,96 @@ +{ stdenv +, gettext +, meson +, ninja +, fetchurl +, fetchpatch +, apacheHttpd +, nautilus +, pkgconfig +, gtk3 +, glib +, libxml2 +, systemd +, wrapGAppsHook +, itstool +, libnotify +, mod_dnssd +, gnome3 +, libcanberra-gtk3 +, python3 +}: + +stdenv.mkDerivation rec { + pname = "gnome-user-share"; + version = "3.34.0"; + + src = fetchurl { + url = "mirror://gnome/sources/${pname}/${stdenv.lib.versions.majorMinor version}/${pname}-${version}.tar.xz"; + sha256 = "04r9ck9v4i0d31grbli1d4slw2d6dcsfkpaybkwbzi7wnj72l30x"; + }; + + patches = [ + # fix gio-unix-2.0 lookup + (fetchpatch { + url = "https://gitlab.gnome.org/GNOME/gnome-user-share/commit/8772980d4732c15505b15dccff2ca3c97e96d49d.patch"; + sha256 = "03clzhrx72pq1cbmg2y24hvw4i1xsvrg9ip113fi5bc3w4gcji7p"; + }) + ]; + + postPatch = '' + chmod +x meson_post_install.py + patchShebangs meson_post_install.py + ''; + + preConfigure = '' + sed -e 's,^LoadModule dnssd_module.\+,LoadModule dnssd_module ${mod_dnssd}/modules/mod_dnssd.so,' \ + -e 's,''${HTTP_MODULES_PATH},${apacheHttpd}/modules,' \ + -i data/dav_user_2.4.conf + ''; + + mesonFlags = [ + "-Dhttpd=${apacheHttpd.out}/bin/httpd" + "-Dmodules_path=${apacheHttpd.dev}/modules" + "-Dsystemduserunitdir=${placeholder "out"}/etc/systemd/user" + # In 3.34.0 it defaults to false but it is silently ignored and always installed. + # Let’s add it anyway in case they decide to make build respect the option in the future. + "-Dnautilus_extension=true" + ]; + + nativeBuildInputs = [ + pkgconfig + meson + ninja + gettext + itstool + libxml2 + wrapGAppsHook + python3 + ]; + + buildInputs = [ + gtk3 + glib + nautilus + libnotify + libcanberra-gtk3 + systemd + ]; + + doCheck = true; + + passthru = { + updateScript = gnome3.updateScript { + packageName = pname; + attrPath = "gnome3.${pname}"; + }; + }; + + meta = with stdenv.lib; { + homepage = "https://help.gnome.org/users/gnome-user-share/3.8"; + description = "Service that exports the contents of the Public folder in your home directory on the local network"; + maintainers = teams.gnome.members; + license = licenses.gpl2; + platforms = platforms.linux; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/core/gucharmap/default.nix b/nixpkgs/pkgs/desktops/gnome-3/core/gucharmap/default.nix new file mode 100644 index 000000000000..927d70345e77 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/core/gucharmap/default.nix @@ -0,0 +1,108 @@ +{ stdenv +, intltool +, fetchFromGitLab +, meson +, ninja +, pkgconfig +, python3 +, gtk3 +, adwaita-icon-theme +, glib +, desktop-file-utils +, gtk-doc +, wrapGAppsHook +, gnome3 +, itstool +, libxml2 +, yelp-tools +, docbook_xsl +, docbook_xml_dtd_412 +, gsettings-desktop-schemas +, callPackage +, unzip +, unicode-character-database +, unihan-database +, runCommand +, symlinkJoin +, gobject-introspection +}: + +let + # TODO: make upstream patch allowing to use the uncompressed file, + # preferably from XDG_DATA_DIRS. + # https://gitlab.gnome.org/GNOME/gucharmap/issues/13 + unihanZip = runCommand "unihan" {} '' + mkdir -p $out/share/unicode + ln -s ${unihan-database.src} $out/share/unicode/Unihan.zip + ''; + ucd = symlinkJoin { + name = "ucd+unihan"; + paths = [ + unihanZip + unicode-character-database + ]; + }; +in stdenv.mkDerivation rec { + pname = "gucharmap"; + version = "13.0.0"; + + outputs = [ "out" "lib" "dev" "devdoc" ]; + + src = fetchFromGitLab { + domain = "gitlab.gnome.org"; + owner = "GNOME"; + repo = pname; + rev = version; + sha256 = "17arjigs1lw1h428s9g171n0idrpf9ks23sndldsik1zvvwzlldh"; + }; + + nativeBuildInputs = [ + meson + ninja + pkgconfig + python3 + wrapGAppsHook + unzip + intltool + itstool + gtk-doc + docbook_xsl + docbook_xml_dtd_412 + yelp-tools + libxml2 + desktop-file-utils + gobject-introspection + ]; + + buildInputs = [ + gtk3 + glib + gsettings-desktop-schemas + adwaita-icon-theme + ]; + + mesonFlags = [ + "-Ducd_path=${ucd}/share/unicode" + "-Dvapi=false" + ]; + + doCheck = true; + + postPatch = '' + patchShebangs data/meson_desktopfile.py gucharmap/gen-guch-unicode-tables.pl gucharmap/meson_compileschemas.py + ''; + + passthru = { + updateScript = gnome3.updateScript { + packageName = pname; + }; + }; + + meta = with stdenv.lib; { + description = "GNOME Character Map, based on the Unicode Character Database"; + homepage = "https://wiki.gnome.org/Apps/Gucharmap"; + license = licenses.gpl3; + maintainers = teams.gnome.members; + platforms = platforms.linux; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/core/libgnome-keyring/default.nix b/nixpkgs/pkgs/desktops/gnome-3/core/libgnome-keyring/default.nix new file mode 100644 index 000000000000..0b9aacf0ddfa --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/core/libgnome-keyring/default.nix @@ -0,0 +1,39 @@ +{ stdenv, fetchurl, glib, dbus, libgcrypt, pkgconfig, intltool, gobject-introspection, gnome3 }: + +let + pname = "libgnome-keyring"; + version = "3.12.0"; +in +stdenv.mkDerivation rec { + name = "${pname}-${version}"; + + src = fetchurl { + url = "mirror://gnome/sources/${pname}/${stdenv.lib.versions.majorMinor version}/${name}.tar.xz"; + sha256 = "c4c178fbb05f72acc484d22ddb0568f7532c409b0a13e06513ff54b91e947783"; + }; + + outputs = [ "out" "dev" ]; + + propagatedBuildInputs = [ glib gobject-introspection dbus libgcrypt ]; + nativeBuildInputs = [ pkgconfig intltool ]; + + passthru = { + updateScript = gnome3.updateScript { + packageName = pname; + attrPath = "gnome3.${pname}"; + }; + }; + + meta = { + description = "Framework for managing passwords and other secrets"; + homepage = "https://wiki.gnome.org/Projects/GnomeKeyring"; + license = with stdenv.lib.licenses; [ gpl2Plus lgpl2Plus ]; + inherit (glib.meta) platforms maintainers; + + longDescription = '' + gnome-keyring is a program that keeps password and other secrets for + users. The library libgnome-keyring is used by applications to integrate + with the gnome-keyring system. + ''; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/core/mutter/3.34/0001-Fix-glitches-in-gala.patch b/nixpkgs/pkgs/desktops/gnome-3/core/mutter/3.34/0001-Fix-glitches-in-gala.patch new file mode 100644 index 000000000000..7be00b33bba5 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/core/mutter/3.34/0001-Fix-glitches-in-gala.patch @@ -0,0 +1,29 @@ +From e10186284103d3ad8e425980b096eac813cae631 Mon Sep 17 00:00:00 2001 +From: worldofpeace <worldofpeace@protonmail.ch> +Date: Sun, 5 Apr 2020 23:06:03 -0400 +Subject: [PATCH] Fix glitches in gala + +This fixes issues for users of mutter like in gala[0]. + +Upstream report: https://gitlab.gnome.org/GNOME/mutter/issues/536 +[0]: https://github.com/elementary/gala/issues/605 +--- + clutter/clutter/clutter-actor.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/clutter/clutter/clutter-actor.c b/clutter/clutter/clutter-actor.c +index ecf9a597d..07b8b7155 100644 +--- a/clutter/clutter/clutter-actor.c ++++ b/clutter/clutter/clutter-actor.c +@@ -17831,7 +17831,7 @@ _clutter_actor_get_paint_volume_mutable (ClutterActor *self) + if (_clutter_actor_get_paint_volume_real (self, &priv->paint_volume)) + { + priv->paint_volume_valid = TRUE; +- priv->needs_paint_volume_update = FALSE; ++ //priv->needs_paint_volume_update = FALSE; + return &priv->paint_volume; + } + else +-- +2.25.1 + diff --git a/nixpkgs/pkgs/desktops/gnome-3/core/mutter/3.34/default.nix b/nixpkgs/pkgs/desktops/gnome-3/core/mutter/3.34/default.nix new file mode 100644 index 000000000000..51d3c4115d9c --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/core/mutter/3.34/default.nix @@ -0,0 +1,159 @@ +{ fetchurl +, fetchpatch +, substituteAll +, stdenv +, pkgconfig +, gnome3 +, pantheon +, gettext +, gobject-introspection +, upower +, cairo +, pango +, cogl +, json-glib +, libstartup_notification +, zenity +, libcanberra-gtk3 +, ninja +, xkeyboard_config +, libxkbfile +, libxkbcommon +, libXtst +, libinput +, gsettings-desktop-schemas +, glib +, gtk3 +, gnome-desktop +, geocode-glib +, pipewire_0_2 +, libgudev +, libwacom +, xwayland +, meson +, gnome-settings-daemon +, xorgserver +, python3 +, wrapGAppsHook +, sysprof +, desktop-file-utils +, libcap_ng +, egl-wayland +}: + +stdenv.mkDerivation rec { + pname = "mutter"; + version = "3.34.4"; + + outputs = [ "out" "dev" "man" ]; + + src = fetchurl { + url = "mirror://gnome/sources/mutter/${stdenv.lib.versions.majorMinor version}/${pname}-${version}.tar.xz"; + sha256 = "18hbw98p4h3d4qz57415smwmfg72s9a0nk8mb04ds1gn2lsm2d01"; + }; + + mesonFlags = [ + "-Degl_device=true" + "-Dinstalled_tests=false" # TODO: enable these + "-Dwayland_eglstream=true" + "-Dxwayland-path=${xwayland}/bin/Xwayland" + ]; + + propagatedBuildInputs = [ + # required for pkgconfig to detect mutter-clutter + json-glib + libXtst + libcap_ng + ]; + + nativeBuildInputs = [ + desktop-file-utils + gettext + meson + ninja + pkgconfig + python3 + wrapGAppsHook + xorgserver # for cvt command + ]; + + buildInputs = [ + cairo + cogl + egl-wayland + geocode-glib + glib + gnome-desktop + gnome-settings-daemon + gobject-introspection + gsettings-desktop-schemas + gtk3 + libcanberra-gtk3 + libgudev + libinput + libstartup_notification + libwacom + libxkbcommon + libxkbfile + pango + pipewire_0_2 # TODO: backport pipewire 0.3 support + sysprof + upower + xkeyboard_config + xwayland + zenity + ]; + + patches = [ + # Fix build with libglvnd provided headers + (fetchpatch { + url = "https://gitlab.gnome.org/GNOME/mutter/commit/a444a4c5f58ea516ad3cd9d6ddc0056c3ca9bc90.patch"; + sha256 = "0imy2j8af9477jliwdq4jc40yw1cifsjjf196gnmwxr9rkj0hbrd"; + }) + + # Drop inheritable cap_sys_nice, to prevent the ambient set from leaking + # from mutter/gnome-shell, see https://github.com/NixOS/nixpkgs/issues/71381 + ./drop-inheritable.patch + + # See commit message for details + ./0001-Fix-glitches-in-gala.patch + + # https://gitlab.gnome.org/GNOME/mutter/merge_requests/1094 + # https://gitlab.gnome.org/GNOME/mutter/merge_requests/957 + ./fix-sysprof.patch + + # profiler: track changes in GLib and Sysprof + # https://gitlab.gnome.org/GNOME/mutter/merge_requests/908 + (fetchpatch { + url = "https://gitlab.gnome.org/GNOME/mutter/-/commit/605171291993460f31d470a8143d6438d0c6169c.patch"; + sha256 = "10fxzj0lmic2sp57w26w3r0bv1szngjjs50p3ka22wr9pxqmzl7l"; + }) + + # Fixes https://github.com/elementary/wingpanel/issues/305 + (fetchpatch { + url = "https://gitlab.gnome.org/GNOME/mutter/-/commit/9d390ee49fb1f6300336e82ae94cc8061c6bae12.patch"; + sha256 = "12hmi07rvspwhp8h1y1vmcvmvbh8fihcrb07ja5g0qnh28ip5qfi"; + }) + + (substituteAll { + src = ./fix-paths.patch; + inherit zenity; + }) + ]; + + postPatch = '' + patchShebangs src/backends/native/gen-default-modes.py + ''; + + postInstall = '' + ${glib.dev}/bin/glib-compile-schemas "$out/share/glib-2.0/schemas" + ''; + + meta = with stdenv.lib; { + description = "A window manager for GNOME"; + homepage = "https://gitlab.gnome.org/GNOME/mutter"; + license = licenses.gpl2; + maintainers = pantheon.maintainers; + platforms = platforms.linux; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/core/mutter/3.34/drop-inheritable.patch b/nixpkgs/pkgs/desktops/gnome-3/core/mutter/3.34/drop-inheritable.patch new file mode 100644 index 000000000000..0f60be3a1217 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/core/mutter/3.34/drop-inheritable.patch @@ -0,0 +1,132 @@ +From e9c772e265b2293af031c79f4bbc99b5847dfe3c Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Tor=20Hedin=20Br=C3=B8nner?= <torhedinbronner@gmail.com> +Date: Sat, 19 Oct 2019 13:26:05 +0200 +Subject: [PATCH] drop inheritable + +Adapted from https://gitlab.gnome.org/GNOME/mutter/commit/c53c47ae123b03cc66044d2b846342123ecb3a01 + +We only want to drop inheritable though, to prevent the ambient set leaking further than gnome-shell. + +--- + config.h.meson | 3 +++ + meson.build | 5 +++++ + meson_options.txt | 6 ++++++ + src/core/main.c | 11 +++++++++++ + src/meson.build | 1 + + 5 files changed, 26 insertions(+) + +diff --git a/config.h.meson b/config.h.meson +index 0bab71848..202fb7ed1 100644 +--- a/config.h.meson ++++ b/config.h.meson +@@ -58,6 +58,9 @@ + /* Xwayland applications allowed to issue keyboard grabs */ + #mesondefine XWAYLAND_GRAB_DEFAULT_ACCESS_RULES + ++/* Defined if libcap-ng is available */ ++#mesondefine HAVE_LIBCAPNG ++ + /* XKB base prefix */ + #mesondefine XKB_BASE + +diff --git a/meson.build b/meson.build +index 3322bd3b1..01c8020fa 100644 +--- a/meson.build ++++ b/meson.build +@@ -35,6 +35,7 @@ libstartup_notification_req = '>= 0.7' + libcanberra_req = '>= 0.26' + libwacom_req = '>= 0.13' + atk_req = '>= 2.5.3' ++libcapng_req = '>= 0.7.9' + + # optional version requirements + udev_req = '>= 228' +@@ -125,6 +126,7 @@ xau_dep = dependency('xau') + ice_dep = dependency('ice') + atk_dep = dependency('atk', version: atk_req) + libcanberra_dep = dependency('libcanberra', version: libcanberra_req) ++libcapng_dep = dependency('libcap-ng', required: get_option('libcapng')) + + # For now always require X11 support + have_x11 = true +@@ -256,6 +258,7 @@ have_core_tests = false + have_cogl_tests = false + have_clutter_tests = false + have_installed_tests = false ++have_libcapng = libcapng_dep.found() + + if have_tests + have_core_tests = get_option('core_tests') +@@ -361,6 +364,7 @@ cdata.set('HAVE_LIBWACOM', have_libwacom) + cdata.set('HAVE_SM', have_sm) + cdata.set('HAVE_STARTUP_NOTIFICATION', have_startup_notification) + cdata.set('HAVE_INTROSPECTION', have_introspection) ++cdata.set('HAVE_LIBCAPNG', have_libcapng) + cdata.set('HAVE_PROFILER', have_profiler) + + xkb_base = xkeyboard_config_dep.get_pkgconfig_variable('xkb_base') +@@ -443,6 +447,7 @@ output = [ + ' Startup notification..... ' + have_startup_notification.to_string(), + ' Introspection............ ' + have_introspection.to_string(), + ' Profiler................. ' + have_profiler.to_string(), ++ ' libcap-ng................ ' + have_libcapng.to_string(), + '', + ' Tests:', + '', +diff --git a/meson_options.txt b/meson_options.txt +index 73aa7adde..8bfaacd9a 100644 +--- a/meson_options.txt ++++ b/meson_options.txt +@@ -152,3 +152,9 @@ option('xwayland_grab_default_access_rules', + value: 'gnome-boxes,remote-viewer,virt-viewer,virt-manager,vinagre,vncviewer,Xephyr', + description: 'Comma delimited list of applications ressources or class allowed to issue X11 grabs in Xwayland' + ) ++ ++option('libcapng', ++ type: 'feature', ++ value: 'auto', ++ description: 'Enable libcap-ng support' ++) +diff --git a/src/core/main.c b/src/core/main.c +index 7f4f666d2..b27968f13 100644 +--- a/src/core/main.c ++++ b/src/core/main.c +@@ -66,6 +66,10 @@ + #include <girepository.h> + #endif + ++#ifdef HAVE_LIBCAPNG ++#include <cap-ng.h> ++#endif ++ + #if defined(HAVE_NATIVE_BACKEND) && defined(HAVE_WAYLAND) + #include <systemd/sd-login.h> + #endif /* HAVE_WAYLAND && HAVE_NATIVE_BACKEND */ +@@ -673,6 +677,12 @@ meta_run (void) + if (!meta_display_open ()) + meta_exit (META_EXIT_ERROR); + ++#ifdef HAVE_LIBCAPNG ++ capng_clear(CAPNG_SELECT_BOTH); ++ capng_update(CAPNG_ADD, CAPNG_EFFECTIVE|CAPNG_PERMITTED, CAP_SYS_NICE); ++ capng_apply(CAPNG_SELECT_BOTH); ++#endif ++ + g_main_loop_run (meta_main_loop); + + meta_finalize (); +diff --git a/src/meson.build b/src/meson.build +index 90d80734f..a9fffa2c2 100644 +--- a/src/meson.build ++++ b/src/meson.build +@@ -18,6 +18,7 @@ mutter_pkg_deps = [ + glib_dep, + gsettings_desktop_schemas_dep, + gtk3_dep, ++ libcapng_dep, + pango_dep, + ] + +-- +2.23.0 + diff --git a/nixpkgs/pkgs/desktops/gnome-3/core/mutter/3.34/fix-paths.patch b/nixpkgs/pkgs/desktops/gnome-3/core/mutter/3.34/fix-paths.patch new file mode 100644 index 000000000000..1986c65e8f49 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/core/mutter/3.34/fix-paths.patch @@ -0,0 +1,13 @@ +diff --git a/src/core/util.c b/src/core/util.c +index 57b73747d..f424cc81c 100644 +--- a/src/core/util.c ++++ b/src/core/util.c +@@ -636,7 +636,7 @@ meta_show_dialog (const char *type, + + args = g_ptr_array_new (); + +- append_argument (args, "zenity"); ++ append_argument (args, "@zenity@/bin/zenity"); + append_argument (args, type); + + if (display) diff --git a/nixpkgs/pkgs/desktops/gnome-3/core/mutter/3.34/fix-sysprof.patch b/nixpkgs/pkgs/desktops/gnome-3/core/mutter/3.34/fix-sysprof.patch new file mode 100644 index 000000000000..481a0ab89cb0 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/core/mutter/3.34/fix-sysprof.patch @@ -0,0 +1,25 @@ +From 71acfd5258b4d12323fc51dda48e83830e62e696 Mon Sep 17 00:00:00 2001 +From: worldofpeace <worldofpeace@protonmail.ch> +Date: Mon, 16 Sep 2019 11:18:27 -0400 +Subject: [PATCH] build: use get_pkgconfig_variable for sysprof dbusdir + +--- + src/meson.build | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/meson.build b/src/meson.build +index 182f7f5f5..43060865b 100644 +--- a/src/meson.build ++++ b/src/meson.build +@@ -710,7 +710,7 @@ if have_profiler + 'backends/meta-profiler.h', + ] + +- dbus_interfaces_dir = join_paths(datadir, 'dbus-1', 'interfaces') ++ dbus_interfaces_dir = join_paths(sysprof_dep.get_pkgconfig_variable('prefix'), 'share', 'dbus-1', 'interfaces') + sysprof3_dbus_file = join_paths(dbus_interfaces_dir, 'org.gnome.Sysprof3.Profiler.xml') + + dbus_sysprof3_profiler_built_sources = gnome.gdbus_codegen('meta-dbus-sysprof3-profiler', +-- +2.22.1 + diff --git a/nixpkgs/pkgs/desktops/gnome-3/core/mutter/default.nix b/nixpkgs/pkgs/desktops/gnome-3/core/mutter/default.nix new file mode 100644 index 000000000000..9edb36156d19 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/core/mutter/default.nix @@ -0,0 +1,148 @@ +{ fetchurl +, fetchpatch +, substituteAll +, stdenv +, pkgconfig +, gnome3 +, gettext +, gobject-introspection +, upower +, cairo +, pango +, cogl +, json-glib +, libstartup_notification +, zenity +, libcanberra-gtk3 +, ninja +, xkeyboard_config +, libxkbfile +, libxkbcommon +, libXtst +, libinput +, gsettings-desktop-schemas +, glib +, gtk3 +, gnome-desktop +, geocode-glib +, pipewire +, libgudev +, libwacom +, xwayland +, meson +, gnome-settings-daemon +, xorgserver +, python3 +, wrapGAppsHook +, sysprof +, desktop-file-utils +, libcap_ng +, egl-wayland +, graphene +, wayland-protocols +}: + +stdenv.mkDerivation rec { + pname = "mutter"; + version = "3.36.1"; + + outputs = [ "out" "dev" "man" ]; + + src = fetchurl { + url = "mirror://gnome/sources/mutter/${stdenv.lib.versions.majorMinor version}/${pname}-${version}.tar.xz"; + sha256 = "09fqs9805d07c60a2ibskqffsb5wn72l8grwzb9fic5sl574b0im"; + }; + + mesonFlags = [ + "-Degl_device=true" + "-Dinstalled_tests=false" # TODO: enable these + "-Dwayland_eglstream=true" + "-Dprofiler=true" + "-Dxwayland_path=${xwayland}/bin/Xwayland" + # This should be auto detected, but it looks like it manages a false + # positive. + "-Dxwayland_initfd=disabled" + ]; + + propagatedBuildInputs = [ + # required for pkgconfig to detect mutter-clutter + json-glib + libXtst + libcap_ng + graphene + ]; + + nativeBuildInputs = [ + desktop-file-utils + gettext + meson + ninja + pkgconfig + python3 + wrapGAppsHook + xorgserver # for cvt command + ]; + + buildInputs = [ + cairo + cogl + egl-wayland + geocode-glib + glib + gnome-desktop + gnome-settings-daemon + gobject-introspection + gsettings-desktop-schemas + gtk3 + libcanberra-gtk3 + libgudev + libinput + libstartup_notification + libwacom + libxkbcommon + libxkbfile + pango + pipewire + sysprof + upower + xkeyboard_config + xwayland + zenity + zenity + wayland-protocols + ]; + + patches = [ + # Drop inheritable cap_sys_nice, to prevent the ambient set from leaking + # from mutter/gnome-shell, see https://github.com/NixOS/nixpkgs/issues/71381 + ./drop-inheritable.patch + + (substituteAll { + src = ./fix-paths.patch; + inherit zenity; + }) + ]; + + postPatch = '' + patchShebangs src/backends/native/gen-default-modes.py + ''; + + postInstall = '' + ${glib.dev}/bin/glib-compile-schemas "$out/share/glib-2.0/schemas" + ''; + + passthru = { + updateScript = gnome3.updateScript { + packageName = pname; + attrPath = "gnome3.${pname}"; + }; + }; + + meta = with stdenv.lib; { + description = "A window manager for GNOME"; + homepage = "https://gitlab.gnome.org/GNOME/mutter"; + license = licenses.gpl2; + maintainers = teams.gnome.members; + platforms = platforms.linux; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/core/mutter/drop-inheritable.patch b/nixpkgs/pkgs/desktops/gnome-3/core/mutter/drop-inheritable.patch new file mode 100644 index 000000000000..1600db1e705b --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/core/mutter/drop-inheritable.patch @@ -0,0 +1,132 @@ +From e9c772e265b2293af031c79f4bbc99b5847dfe3c Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Tor=20Hedin=20Br=C3=B8nner?= <torhedinbronner@gmail.com> +Date: Sat, 19 Oct 2019 13:26:05 +0200 +Subject: [PATCH] drop inheritable + +Adapted from https://gitlab.gnome.org/GNOME/mutter/commit/c53c47ae123b03cc66044d2b846342123ecb3a01 + +We only want to drop inheritable though, to prevent the ambient set leaking further than gnome-shell. + +--- + config.h.meson | 3 +++ + meson.build | 5 +++++ + meson_options.txt | 6 ++++++ + src/core/main.c | 11 +++++++++++ + src/meson.build | 1 + + 5 files changed, 26 insertions(+) + +diff --git a/config.h.meson b/config.h.meson +index 0bab71848..202fb7ed1 100644 +--- a/config.h.meson ++++ b/config.h.meson +@@ -58,6 +58,9 @@ + /* Xwayland applications allowed to issue keyboard grabs */ + #mesondefine XWAYLAND_GRAB_DEFAULT_ACCESS_RULES + ++/* Defined if libcap-ng is available */ ++#mesondefine HAVE_LIBCAPNG ++ + /* XKB base prefix */ + #mesondefine XKB_BASE + +diff --git a/meson.build b/meson.build +index 3322bd3b1..01c8020fa 100644 +--- a/meson.build ++++ b/meson.build +@@ -35,6 +35,7 @@ libstartup_notification_req = '>= 0.7' + libcanberra_req = '>= 0.26' + libwacom_req = '>= 0.13' + atk_req = '>= 2.5.3' ++libcapng_req = '>= 0.7.9' + + # optional version requirements + udev_req = '>= 228' +@@ -131,6 +131,7 @@ ice_dep = dependency('ice') + atk_dep = dependency('atk', version: atk_req) + libcanberra_dep = dependency('libcanberra', version: libcanberra_req) + dbus_dep = dependency('dbus-1') ++libcapng_dep = dependency('libcap-ng', required: get_option('libcapng')) + + # For now always require X11 support + have_x11 = true +@@ -256,6 +258,7 @@ have_core_tests = false + have_cogl_tests = false + have_clutter_tests = false + have_installed_tests = false ++have_libcapng = libcapng_dep.found() + + if have_tests + have_core_tests = get_option('core_tests') +@@ -361,6 +364,7 @@ cdata.set('HAVE_LIBWACOM', have_libwacom) + cdata.set('HAVE_SM', have_sm) + cdata.set('HAVE_STARTUP_NOTIFICATION', have_startup_notification) + cdata.set('HAVE_INTROSPECTION', have_introspection) ++cdata.set('HAVE_LIBCAPNG', have_libcapng) + cdata.set('HAVE_PROFILER', have_profiler) + + xkb_base = xkeyboard_config_dep.get_pkgconfig_variable('xkb_base') +@@ -465,6 +465,7 @@ output = [ + ' Introspection............ ' + have_introspection.to_string(), + ' Profiler................. ' + have_profiler.to_string(), + ' Xwayland initfd.......... ' + have_xwayland_initfd.to_string(), ++ ' libcap-ng................ ' + have_libcapng.to_string(), + '', + ' Tests:', + '', +diff --git a/meson_options.txt b/meson_options.txt +index 73aa7adde..8bfaacd9a 100644 +--- a/meson_options.txt ++++ b/meson_options.txt +@@ -152,3 +152,9 @@ option('xwayland_grab_default_access_rules', + value: 'gnome-boxes,remote-viewer,virt-viewer,virt-manager,vinagre,vncviewer,Xephyr', + description: 'Comma delimited list of applications ressources or class allowed to issue X11 grabs in Xwayland' + ) ++ ++option('libcapng', ++ type: 'feature', ++ value: 'auto', ++ description: 'Enable libcap-ng support' ++) +diff --git a/src/core/main.c b/src/core/main.c +index 7f4f666d2..b27968f13 100644 +--- a/src/core/main.c ++++ b/src/core/main.c +@@ -66,6 +66,10 @@ + #include <girepository.h> + #endif + ++#ifdef HAVE_LIBCAPNG ++#include <cap-ng.h> ++#endif ++ + #if defined(HAVE_NATIVE_BACKEND) && defined(HAVE_WAYLAND) + #include <systemd/sd-login.h> + #endif /* HAVE_WAYLAND && HAVE_NATIVE_BACKEND */ +@@ -673,6 +677,12 @@ meta_run (void) + if (!meta_display_open ()) + meta_exit (META_EXIT_ERROR); + ++#ifdef HAVE_LIBCAPNG ++ capng_clear(CAPNG_SELECT_BOTH); ++ capng_update(CAPNG_ADD, CAPNG_EFFECTIVE|CAPNG_PERMITTED, CAP_SYS_NICE); ++ capng_apply(CAPNG_SELECT_BOTH); ++#endif ++ + g_main_loop_run (meta_main_loop); + + meta_finalize (); +diff --git a/src/meson.build b/src/meson.build +index 90d80734f..a9fffa2c2 100644 +--- a/src/meson.build ++++ b/src/meson.build +@@ -18,6 +18,7 @@ mutter_pkg_deps = [ + glib_dep, + gsettings_desktop_schemas_dep, + gtk3_dep, ++ libcapng_dep, + pango_dep, + ] + +-- +2.23.0 + diff --git a/nixpkgs/pkgs/desktops/gnome-3/core/mutter/fix-paths.patch b/nixpkgs/pkgs/desktops/gnome-3/core/mutter/fix-paths.patch new file mode 100644 index 000000000000..6ac0a431f61f --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/core/mutter/fix-paths.patch @@ -0,0 +1,13 @@ +diff --git a/src/core/util.c b/src/core/util.c +index 57b73747d..f424cc81c 100644 +--- a/src/core/util.c ++++ b/src/core/util.c +@@ -636,7 +636,7 @@ meta_show_dialog (const char *type, + + args = g_ptr_array_new (); + +- append_argument (args, "zenity"); ++ append_argument (args, "@zenity@/bin/zenity"); + append_argument (args, type); + + if (display) diff --git a/nixpkgs/pkgs/desktops/gnome-3/core/nautilus/default.nix b/nixpkgs/pkgs/desktops/gnome-3/core/nautilus/default.nix new file mode 100644 index 000000000000..9914489ad257 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/core/nautilus/default.nix @@ -0,0 +1,107 @@ +{ stdenv +, fetchurl +, meson +, ninja +, pkgconfig +, gettext +, libxml2 +, desktop-file-utils +, python3 +, wrapGAppsHook +, gtk3 +, gnome3 +, gnome-autoar +, glib-networking +, shared-mime-info +, libnotify +, libexif +, libseccomp +, exempi +, librsvg +, tracker +, tracker-miners +, gexiv2 +, libselinux +, gdk-pixbuf +, substituteAll +, gnome-desktop +, gst_all_1 +, gsettings-desktop-schemas +, gobject-introspection +}: + +stdenv.mkDerivation rec { + pname = "nautilus"; + version = "3.36.1.1"; + + src = fetchurl { + url = "mirror://gnome/sources/${pname}/${stdenv.lib.versions.majorMinor version}/${pname}-${version}.tar.xz"; + sha256 = "1pkvxyfm2fl06fpyq2jr147hhpc91y4rgdlxlilg7n8ih982y9gr"; + }; + + nativeBuildInputs = [ + desktop-file-utils + gettext + gobject-introspection + libxml2 + meson + ninja + pkgconfig + python3 + wrapGAppsHook + ]; + + buildInputs = [ + exempi + gexiv2 + glib-networking + gnome-desktop + gnome3.adwaita-icon-theme + gsettings-desktop-schemas + gst_all_1.gst-plugins-base + gtk3 + libexif + libnotify + libseccomp + libselinux + shared-mime-info + tracker + tracker-miners + ]; + + propagatedBuildInputs = [ + gnome-autoar + ]; + + preFixup = '' + gappsWrapperArgs+=( + # Thumbnailers + --prefix XDG_DATA_DIRS : "${gdk-pixbuf}/share" + --prefix XDG_DATA_DIRS : "${librsvg}/share" + --prefix XDG_DATA_DIRS : "${shared-mime-info}/share" + ) + ''; + + postPatch = '' + patchShebangs build-aux/meson/postinstall.py + ''; + + patches = [ + ./extension_dir.patch + ]; + + passthru = { + updateScript = gnome3.updateScript { + packageName = pname; + attrPath = "gnome3.${pname}"; + }; + }; + + meta = with stdenv.lib; { + description = "The file manager for GNOME"; + homepage = "https://wiki.gnome.org/Apps/Files"; + license = licenses.gpl3Plus; + platforms = platforms.linux; + maintainers = teams.gnome.members; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/core/nautilus/extension_dir.patch b/nixpkgs/pkgs/desktops/gnome-3/core/nautilus/extension_dir.patch new file mode 100644 index 000000000000..e1313999675d --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/core/nautilus/extension_dir.patch @@ -0,0 +1,24 @@ +diff --git a/src/nautilus-module.c b/src/nautilus-module.c +index 6273a76..4adcc8a 100644 +--- a/src/nautilus-module.c ++++ b/src/nautilus-module.c +@@ -242,11 +242,17 @@ void + nautilus_module_setup (void) + { + static gboolean initialized = FALSE; ++ const gchar* extensiondir = NULL; + + if (!initialized) + { + initialized = TRUE; + +- load_module_dir (NAUTILUS_EXTENSIONDIR); ++ extensiondir = g_getenv ("NAUTILUS_EXTENSION_DIR"); ++ if (extensiondir == NULL) { ++ extensiondir = NAUTILUS_EXTENSIONDIR; ++ } ++ ++ load_module_dir (extensiondir); + + eel_debug_call_at_shutdown (free_module_objects); + } diff --git a/nixpkgs/pkgs/desktops/gnome-3/core/rygel/add-option-for-installation-sysconfdir.patch b/nixpkgs/pkgs/desktops/gnome-3/core/rygel/add-option-for-installation-sysconfdir.patch new file mode 100644 index 000000000000..4259f93eb24c --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/core/rygel/add-option-for-installation-sysconfdir.patch @@ -0,0 +1,38 @@ +diff --git a/meson.build b/meson.build +index 209d4187..58580980 100644 +--- a/meson.build ++++ b/meson.build +@@ -20,7 +20,11 @@ if not get_option('uninstalled') + rygel_datadir = join_paths(get_option('prefix'), get_option('datadir'), 'rygel') + rygel_libexecdir = join_paths(get_option('prefix'), get_option('libexecdir'), + 'rygel') +- rygel_sysconfdir = join_paths(get_option('prefix'), get_option('sysconfdir')) ++ if get_option('sysconfdir_install') != '' ++ rygel_sysconfdir = join_paths(get_option('prefix'), get_option('sysconfdir_install')) ++ else ++ rygel_sysconfdir = join_paths(get_option('prefix'), get_option('sysconfdir')) ++ endif + rygel_plugindir = join_paths(rygel_libdir, 'rygel-2.6', 'plugins') + rygel_enginedir = join_paths(rygel_libdir, 'rygel-2.6', 'engines') + rygel_presetdir = join_paths(rygel_datadir, 'rygel', 'presets') +@@ -55,7 +59,7 @@ conf.set_quoted('DATA_DIR', rygel_datadir) + conf.set_quoted('PLUGIN_DIR', rygel_plugindir) + conf.set_quoted('BIG_ICON_DIR', rygel_bigicondir) + conf.set_quoted('SMALL_ICON_DIR', rygel_smallicondir) +-conf.set_quoted('SYS_CONFIG_DIR', rygel_sysconfdir) ++conf.set_quoted('SYS_CONFIG_DIR', get_option('sysconfdir')) + conf.set_quoted('LOCALEDIR', join_paths(get_option('prefix'), get_option('localedir'))) + conf.set_quoted('MX_EXTRACT_PATH', join_paths(rygel_libexecdir, 'mx-extract')) + conf.set_quoted('DESKTOP_DIR', join_paths(get_option('prefix'), get_option('datadir'), 'applications')) +diff --git a/meson_options.txt b/meson_options.txt +index f09cac58..ff11c548 100644 +--- a/meson_options.txt ++++ b/meson_options.txt +@@ -1,6 +1,7 @@ + option('uninstalled', type: 'boolean', value: 'false', description: 'Run Rygel from build directory only') + option('api-docs', type: 'boolean', value: 'false', description: 'Build the API documentation') + option('systemd-user-units-dir', type : 'string', value : 'auto', description : 'Where to install the systemd user unit (use special values "auto" or "none", or pass a path') ++option('sysconfdir_install', type: 'string', value: '', description: 'sysconfdir to use during installation') + option('plugins', type : 'array', choices : ['external', 'gst-launch', 'lms', 'media-export', 'mpris', 'playbin', 'ruih', 'tracker']) + option('engines', type : 'array', choices : ['simple', 'gstreamer']) + option('examples', type : 'boolean', value : 'true') diff --git a/nixpkgs/pkgs/desktops/gnome-3/core/rygel/default.nix b/nixpkgs/pkgs/desktops/gnome-3/core/rygel/default.nix new file mode 100644 index 000000000000..1ace6a5f7772 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/core/rygel/default.nix @@ -0,0 +1,106 @@ +{ stdenv +, fetchurl +, meson +, ninja +, pkgconfig +, vala +, gettext +, libxml2 +, gobject-introspection +, wrapGAppsHook +, python3 +, glib +, gssdp +, gupnp +, gupnp-av +, gupnp-dlna +, gst_all_1 +, libgee +, libsoup +, gtk3 +, libmediaart +, sqlite +, systemd +, tracker +, shared-mime-info +, gnome3 +}: + +stdenv.mkDerivation rec { + pname = "rygel"; + version = "0.38.3"; + + # TODO: split out lib + outputs = [ "out" "dev" ]; + + src = fetchurl { + url = "mirror://gnome/sources/${pname}/${stdenv.lib.versions.majorMinor version}/${pname}-${version}.tar.xz"; + sha256 = "003xficqb08r1dgid20i7cn889lbfwrglpx78rjd5nkvgxbimhh8"; + }; + + nativeBuildInputs = [ + meson + ninja + pkgconfig + vala + gettext + libxml2 + gobject-introspection + wrapGAppsHook + python3 + ]; + + buildInputs = [ + glib + gssdp + gupnp + gupnp-av + gupnp-dlna + libgee + libsoup + gtk3 + libmediaart + sqlite + systemd + tracker + shared-mime-info + ] ++ (with gst_all_1; [ + gstreamer + gst-plugins-base + gst-plugins-good + gst-plugins-bad + gst-plugins-ugly + ]); + + mesonFlags = [ + "-Dsystemd-user-units-dir=${placeholder "out"}/lib/systemd/user" + "-Dapi-docs=false" + "--sysconfdir=/etc" + "-Dsysconfdir_install=${placeholder "out"}/etc" + ]; + + doCheck = true; + + patches = [ + ./add-option-for-installation-sysconfdir.patch + ]; + + postPatch = '' + patchShebangs data/xml/process-xml.py + ''; + + passthru = { + updateScript = gnome3.updateScript { + packageName = pname; + attrPath = "gnome3.${pname}"; + }; + }; + + meta = with stdenv.lib; { + description = "A home media solution (UPnP AV MediaServer) that allows you to easily share audio, video and pictures to other devices"; + homepage = "https://wiki.gnome.org/Projects/Rygel"; + license = licenses.lgpl21Plus; + maintainers = teams.gnome.members; + platforms = platforms.linux; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/core/simple-scan/default.nix b/nixpkgs/pkgs/desktops/gnome-3/core/simple-scan/default.nix new file mode 100644 index 000000000000..99e5975eb5de --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/core/simple-scan/default.nix @@ -0,0 +1,51 @@ +{ stdenv, fetchurl, meson, ninja, pkgconfig, gettext, itstool, python3, wrapGAppsHook +, cairo, gdk-pixbuf, colord, glib, gtk3, gusb, packagekit, libwebp +, libxml2, sane-backends, vala, gnome3, gobject-introspection }: + +stdenv.mkDerivation rec { + pname = "simple-scan"; + version = "3.36.1"; + + src = fetchurl { + url = "mirror://gnome/sources/simple-scan/${stdenv.lib.versions.majorMinor version}/${pname}-${version}.tar.xz"; + sha256 = "0bprm9gfnlrs0k8jvy9pqm1rjq47z5pgahqjjj1i7q2k4a8g09vl"; + }; + + buildInputs = [ + cairo gdk-pixbuf colord glib gnome3.adwaita-icon-theme gusb + gtk3 libwebp packagekit sane-backends vala + ]; + nativeBuildInputs = [ + meson ninja gettext itstool pkgconfig python3 wrapGAppsHook libxml2 + # For setup hook + gobject-introspection + ]; + + postPatch = '' + patchShebangs data/meson_compile_gschema.py + ''; + + doCheck = true; + + passthru = { + updateScript = gnome3.updateScript { + packageName = "simple-scan"; + }; + }; + + meta = with stdenv.lib; { + description = "Simple scanning utility"; + longDescription = '' + A really easy way to scan both documents and photos. You can crop out the + bad parts of a photo and rotate it if it is the wrong way round. You can + print your scans, export them to pdf, or save them in a range of image + formats. Basically a frontend for SANE - which is the same backend as + XSANE uses. This means that all existing scanners will work and the + interface is well tested. + ''; + homepage = "https://gitlab.gnome.org/GNOME/simple-scan"; + license = licenses.gpl3Plus; + maintainers = teams.gnome.members; + platforms = platforms.linux; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/core/sushi/default.nix b/nixpkgs/pkgs/desktops/gnome-3/core/sushi/default.nix new file mode 100644 index 000000000000..4bdc409d8166 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/core/sushi/default.nix @@ -0,0 +1,86 @@ +{ stdenv +, fetchurl +, pkgconfig +, meson +, gettext +, gobject-introspection +, glib +, clutter-gtk +, clutter-gst +, gnome3 +, gtksourceview4 +, gjs +, webkitgtk +, libmusicbrainz5 +, icu +, wrapGAppsHook +, gst_all_1 +, gdk-pixbuf +, librsvg +, gtk3 +, harfbuzz +, ninja +, epoxy +}: + +stdenv.mkDerivation rec { + pname = "sushi"; + version = "3.34.0"; + + src = fetchurl { + url = "mirror://gnome/sources/sushi/${stdenv.lib.versions.majorMinor version}/${pname}-${version}.tar.xz"; + sha256 = "1zcr8wi5bgvvpb5ha1v96aiaz4vqqrsn6cvvalwzah6am85k78m8"; + }; + + nativeBuildInputs = [ + pkgconfig + meson + ninja + gettext + gobject-introspection + wrapGAppsHook + ]; + buildInputs = [ + glib + gtk3 + gnome3.evince + icu + harfbuzz + clutter-gtk + clutter-gst + gjs + gtksourceview4 + gdk-pixbuf + librsvg + libmusicbrainz5 + webkitgtk + epoxy + gst_all_1.gstreamer + gst_all_1.gst-plugins-base + gst_all_1.gst-plugins-good + ]; + + # See https://github.com/NixOS/nixpkgs/issues/31168 + postInstall = '' + for file in $out/libexec/org.gnome.NautilusPreviewer + do + sed -e $"2iimports.package._findEffectiveEntryPointName = () => \'$(basename $file)\' " \ + -i $file + done + ''; + + passthru = { + updateScript = gnome3.updateScript { + packageName = "sushi"; + attrPath = "gnome3.sushi"; + }; + }; + + meta = with stdenv.lib; { + homepage = "https://en.wikipedia.org/wiki/Sushi_(software)"; + description = "A quick previewer for Nautilus"; + maintainers = teams.gnome.members; + license = licenses.gpl2Plus; + platforms = platforms.linux; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/core/totem/default.nix b/nixpkgs/pkgs/desktops/gnome-3/core/totem/default.nix new file mode 100644 index 000000000000..50ab50e58b2c --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/core/totem/default.nix @@ -0,0 +1,57 @@ +{ stdenv, fetchurl, meson, ninja, gettext, gst_all_1 +, clutter-gtk, clutter-gst, python3Packages, shared-mime-info +, pkgconfig, gtk3, glib, gobject-introspection, totem-pl-parser +, wrapGAppsHook, itstool, libxml2, vala, gnome3, grilo, grilo-plugins +, libpeas, adwaita-icon-theme, gnome-desktop, gsettings-desktop-schemas +, gdk-pixbuf, tracker, nautilus, xvfb_run }: + +stdenv.mkDerivation rec { + pname = "totem"; + version = "3.34.1"; + + src = fetchurl { + url = "mirror://gnome/sources/totem/${stdenv.lib.versions.majorMinor version}/${pname}-${version}.tar.xz"; + sha256 = "028sc6xbyi7rs884862d8f3di6zhcm0lhvlpc3r69ifzjsq9my3b"; + }; + + doCheck = true; + + nativeBuildInputs = [ meson ninja vala pkgconfig gettext python3Packages.python itstool gobject-introspection wrapGAppsHook ]; + buildInputs = [ + gtk3 glib grilo clutter-gtk clutter-gst totem-pl-parser grilo-plugins + gst_all_1.gstreamer gst_all_1.gst-plugins-base gst_all_1.gst-plugins-good gst_all_1.gst-plugins-bad + gst_all_1.gst-plugins-ugly gst_all_1.gst-libav libpeas shared-mime-info + gdk-pixbuf libxml2 adwaita-icon-theme gnome-desktop + gsettings-desktop-schemas tracker nautilus + python3Packages.pygobject3 python3Packages.dbus-python # for plug-ins + ]; + + postPatch = '' + chmod +x meson_compile_python.py meson_post_install.py # patchShebangs requires executable file + patchShebangs . + ''; + + checkInputs = [ xvfb_run ]; + + checkPhase = '' + xvfb-run -s '-screen 0 800x600x24' \ + ninja test + ''; + + wrapPrefixVariables = [ "PYTHONPATH" ]; + + passthru = { + updateScript = gnome3.updateScript { + packageName = "totem"; + attrPath = "gnome3.totem"; + }; + }; + + meta = with stdenv.lib; { + homepage = "https://wiki.gnome.org/Apps/Videos"; + description = "Movie player for the GNOME desktop based on GStreamer"; + maintainers = teams.gnome.members; + license = licenses.gpl2; + platforms = platforms.linux; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/core/yelp-xsl/default.nix b/nixpkgs/pkgs/desktops/gnome-3/core/yelp-xsl/default.nix new file mode 100644 index 000000000000..09019e6758c1 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/core/yelp-xsl/default.nix @@ -0,0 +1,44 @@ +{ stdenv +, gettext +, fetchurl +, pkgconfig +, itstool +, libxml2 +, libxslt +, gnome3 +}: + +stdenv.mkDerivation rec { + pname = "yelp-xsl"; + version = "3.36.0"; + + src = fetchurl { + url = "mirror://gnome/sources/yelp-xsl/${stdenv.lib.versions.majorMinor version}/${pname}-${version}.tar.xz"; + sha256 = "1hsfj3q3a3kca0cf9i02xlq2qd4vy12qsjb89hh4r6mp6c11rrag"; + }; + + nativeBuildInputs = [ + pkgconfig + gettext + itstool + libxml2 + libxslt + ]; + + doCheck = true; + + passthru = { + updateScript = gnome3.updateScript { + packageName = pname; + attrPath = "gnome3.${pname}"; + }; + }; + + meta = with stdenv.lib; { + homepage = "https://wiki.gnome.org/Apps/Yelp"; + description = "Yelp's universal stylesheets for Mallard and DocBook"; + maintainers = teams.gnome.members; + license = [licenses.gpl2 licenses.lgpl2]; + platforms = platforms.linux; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/core/yelp/default.nix b/nixpkgs/pkgs/desktops/gnome-3/core/yelp/default.nix new file mode 100644 index 000000000000..1235447c032a --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/core/yelp/default.nix @@ -0,0 +1,36 @@ +{ stdenv, gettext, fetchurl, webkitgtk, pkgconfig, gtk3, glib +, gnome3, sqlite +, itstool, libxml2, libxslt, gst_all_1 +, wrapGAppsHook }: + +stdenv.mkDerivation rec { + pname = "yelp"; + version = "3.36.0"; + + src = fetchurl { + url = "mirror://gnome/sources/yelp/${stdenv.lib.versions.majorMinor version}/${pname}-${version}.tar.xz"; + sha256 = "097djjyl096zmicjpxlb858yz6rd5cj813xc8azbxlhsscikwjzx"; + }; + + nativeBuildInputs = [ pkgconfig gettext itstool wrapGAppsHook ]; + buildInputs = [ + gtk3 glib webkitgtk sqlite + libxml2 libxslt gnome3.yelp-xsl + gnome3.adwaita-icon-theme + gst_all_1.gst-plugins-base gst_all_1.gst-plugins-good + ]; + + passthru = { + updateScript = gnome3.updateScript { + packageName = "yelp"; + }; + }; + + meta = with stdenv.lib; { + homepage = "https://wiki.gnome.org/Apps/Yelp"; + description = "The help viewer in Gnome"; + maintainers = teams.gnome.members; + license = licenses.gpl2; + platforms = platforms.linux; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/core/zenity/default.nix b/nixpkgs/pkgs/desktops/gnome-3/core/zenity/default.nix new file mode 100644 index 000000000000..5750fa0d001c --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/core/zenity/default.nix @@ -0,0 +1,50 @@ +{ stdenv +, fetchurl +, pkgconfig +, libxml2 +, gnome3 +, gtk3 +, yelp-tools +, gettext +, libX11 +, itstool +, wrapGAppsHook +}: + +stdenv.mkDerivation rec { + pname = "zenity"; + version = "3.32.0"; + + src = fetchurl { + url = "mirror://gnome/sources/zenity/${stdenv.lib.versions.majorMinor version}/${pname}-${version}.tar.xz"; + sha256 = "15fdh8xfdhnwcynyh4byx3mrjxbyprqnwxzi7qn3g5wwaqryg1p7"; + }; + + nativeBuildInputs = [ + pkgconfig + gettext + yelp-tools + itstool + libxml2 + wrapGAppsHook + ]; + + buildInputs = [ + gtk3 + libX11 + ]; + + passthru = { + updateScript = gnome3.updateScript { + packageName = "zenity"; + attrPath = "gnome3.zenity"; + }; + }; + + meta = with stdenv.lib; { + description = "Tool to display dialogs from the commandline and shell scripts"; + homepage = "https://wiki.gnome.org/Projects/Zenity"; + platforms = platforms.linux; + maintainers = teams.gnome.members; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/default.nix b/nixpkgs/pkgs/desktops/gnome-3/default.nix new file mode 100644 index 000000000000..9d34fc0f40c6 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/default.nix @@ -0,0 +1,362 @@ +{ config, pkgs, lib }: + +lib.makeScope pkgs.newScope (self: with self; { + updateScript = callPackage ./update.nix { }; + + /* Remove packages of packagesToRemove from packages, based on their names + + Type: + removePackagesByName :: [package] -> [package] -> [package] + + Example: + removePackagesByName [ nautilus file-roller ] [ file-roller totem ] + => [ nautilus ] + */ + removePackagesByName = packages: packagesToRemove: + let + namesToRemove = map lib.getName packagesToRemove; + in + lib.filter (x: !(builtins.elem (lib.getName x) namesToRemove)) packages; + + libsoup = pkgs.libsoup.override { gnomeSupport = true; }; + libchamplain = pkgs.libchamplain.override { libsoup = libsoup; }; + gnome3 = self // { recurseForDerivations = false; }; + +# ISO installer +# installerIso = callPackage ./installer.nix {}; + +#### Core (http://ftp.acc.umu.se/pub/GNOME/core/) + + adwaita-icon-theme = callPackage ./core/adwaita-icon-theme { }; + + baobab = callPackage ./core/baobab { }; + + caribou = callPackage ./core/caribou { }; + + dconf-editor = callPackage ./core/dconf-editor { }; + + empathy = callPackage ./core/empathy { }; + + epiphany = callPackage ./core/epiphany { }; + + evince = callPackage ./core/evince { }; # ToDo: dbus would prevent compilation, enable tests + + evolution-data-server = callPackage ./core/evolution-data-server { }; + + gdm = callPackage ./core/gdm { }; + + gnome-backgrounds = callPackage ./core/gnome-backgrounds { }; + + gnome-bluetooth = callPackage ./core/gnome-bluetooth { }; + + gnome-color-manager = callPackage ./core/gnome-color-manager { }; + + gnome-contacts = callPackage ./core/gnome-contacts { }; + + gnome-control-center = callPackage ./core/gnome-control-center { }; + + gnome-calculator = callPackage ./core/gnome-calculator { }; + + gnome-common = callPackage ./core/gnome-common { }; + + gnome-desktop = callPackage ./core/gnome-desktop { }; + + gnome-dictionary = callPackage ./core/gnome-dictionary { }; + + gnome-disk-utility = callPackage ./core/gnome-disk-utility { }; + + gnome-font-viewer = callPackage ./core/gnome-font-viewer { }; + + gnome-keyring = callPackage ./core/gnome-keyring { }; + + libgnome-keyring = callPackage ./core/libgnome-keyring { }; + + gnome-initial-setup = callPackage ./core/gnome-initial-setup { }; + + gnome-online-miners = callPackage ./core/gnome-online-miners { }; + + gnome-remote-desktop = callPackage ./core/gnome-remote-desktop { }; + + gnome-session = callPackage ./core/gnome-session { }; + + gnome-shell = callPackage ./core/gnome-shell { }; + + gnome-shell-extensions = callPackage ./core/gnome-shell-extensions { }; + + gnome-screenshot = callPackage ./core/gnome-screenshot { }; + + gnome-settings-daemon = callPackage ./core/gnome-settings-daemon { }; + + gnome-software = callPackage ./core/gnome-software { }; + + gnome-system-monitor = callPackage ./core/gnome-system-monitor { }; + + gnome-terminal = callPackage ./core/gnome-terminal { }; + + gnome-themes-extra = callPackage ./core/gnome-themes-extra { }; + + gnome-user-share = callPackage ./core/gnome-user-share { }; + + gucharmap = callPackage ./core/gucharmap { }; + + gvfs = pkgs.gvfs.override { gnomeSupport = true; }; + + eog = callPackage ./core/eog { }; + + mutter = callPackage ./core/mutter { }; + + # Needed for elementary's gala and greeter until 3.36 support has more bugfixes + # https://github.com/elementary/gala/issues/763 + mutter334 = callPackage ./core/mutter/3.34 { }; + + nautilus = callPackage ./core/nautilus { }; + + networkmanager-openvpn = pkgs.networkmanager-openvpn.override { + withGnome = true; + }; + + networkmanager-vpnc = pkgs.networkmanager-vpnc.override { + withGnome = true; + }; + + networkmanager-openconnect = pkgs.networkmanager-openconnect.override { + withGnome = true; + }; + + networkmanager-fortisslvpn = pkgs.networkmanager-fortisslvpn.override { + withGnome = true; + }; + + networkmanager-l2tp = pkgs.networkmanager-l2tp.override { + withGnome = true; + }; + + networkmanager-iodine = pkgs.networkmanager-iodine.override { + withGnome = true; + }; + + rygel = callPackage ./core/rygel { }; + + simple-scan = callPackage ./core/simple-scan { }; + + sushi = callPackage ./core/sushi { }; + + totem = callPackage ./core/totem { }; + + yelp = callPackage ./core/yelp { }; + + yelp-xsl = callPackage ./core/yelp-xsl { }; + + zenity = callPackage ./core/zenity { }; + + +#### Apps (http://ftp.acc.umu.se/pub/GNOME/apps/) + + accerciser = callPackage ./apps/accerciser { }; + + cheese = callPackage ./apps/cheese { }; + + evolution = callPackage ./apps/evolution { }; + + file-roller = callPackage ./apps/file-roller { }; + + gedit = callPackage ./apps/gedit { }; + + ghex = callPackage ./apps/ghex { }; + + glade = callPackage ./apps/glade { }; + + gnome-books = callPackage ./apps/gnome-books { }; + + gnome-boxes = callPackage ./apps/gnome-boxes { }; + + gnome-calendar = callPackage ./apps/gnome-calendar { }; + + gnome-characters = callPackage ./apps/gnome-characters { }; + + gnome-clocks = callPackage ./apps/gnome-clocks { }; + + gnome-documents = callPackage ./apps/gnome-documents { }; + + gnome-getting-started-docs = callPackage ./apps/gnome-getting-started-docs { }; + + gnome-logs = callPackage ./apps/gnome-logs { }; + + gnome-maps = callPackage ./apps/gnome-maps { }; + + gnome-music = callPackage ./apps/gnome-music { }; + + gnome-nettool = callPackage ./apps/gnome-nettool { }; + + gnome-notes = callPackage ./apps/gnome-notes { }; + + gnome-power-manager = callPackage ./apps/gnome-power-manager { }; + + gnome-sound-recorder = callPackage ./apps/gnome-sound-recorder { }; + + gnome-todo = callPackage ./apps/gnome-todo {}; + + gnome-weather = callPackage ./apps/gnome-weather { }; + + polari = callPackage ./apps/polari { }; + + seahorse = callPackage ./apps/seahorse { }; + + vinagre = callPackage ./apps/vinagre { }; + +#### Dev http://ftp.gnome.org/pub/GNOME/devtools/ + + anjuta = callPackage ./devtools/anjuta { }; + + devhelp = callPackage ./devtools/devhelp { }; + + gnome-devel-docs = callPackage ./devtools/gnome-devel-docs { }; + +#### Games + + aisleriot = callPackage ./games/aisleriot { }; + + atomix = callPackage ./games/atomix { }; + + five-or-more = callPackage ./games/five-or-more { }; + + four-in-a-row = callPackage ./games/four-in-a-row { }; + + gnome-chess = callPackage ./games/gnome-chess { }; + + gnome-klotski = callPackage ./games/gnome-klotski { }; + + gnome-mahjongg = callPackage ./games/gnome-mahjongg { }; + + gnome-mines = callPackage ./games/gnome-mines { }; + + gnome-nibbles = callPackage ./games/gnome-nibbles { }; + + gnome-robots = callPackage ./games/gnome-robots { }; + + gnome-sudoku = callPackage ./games/gnome-sudoku { }; + + gnome-taquin = callPackage ./games/gnome-taquin { }; + + gnome-tetravex = callPackage ./games/gnome-tetravex { }; + + hitori = callPackage ./games/hitori { }; + + iagno = callPackage ./games/iagno { }; + + lightsoff = callPackage ./games/lightsoff { }; + + swell-foop = callPackage ./games/swell-foop { }; + + tali = callPackage ./games/tali { }; + + quadrapassel = callPackage ./games/quadrapassel { }; + +#### Misc -- other packages on http://ftp.gnome.org/pub/GNOME/sources/ + + geary = callPackage ./misc/geary { }; + + gitg = callPackage ./misc/gitg { }; + + libgnome-games-support = callPackage ./misc/libgnome-games-support { }; + + gnome-applets = callPackage ./misc/gnome-applets { }; + + gnome-flashback = callPackage ./misc/gnome-flashback { }; + + gnome-panel = callPackage ./misc/gnome-panel { }; + + gnome-tweaks = callPackage ./misc/gnome-tweaks { }; + + gpaste = callPackage ./misc/gpaste { }; + + metacity = callPackage ./misc/metacity { }; + + nautilus-python = callPackage ./misc/nautilus-python { }; + + gtkhtml = callPackage ./misc/gtkhtml { enchant = pkgs.enchant1; }; + + pomodoro = callPackage ./misc/pomodoro { }; + + gnome-autoar = callPackage ./misc/gnome-autoar { }; + + gnome-packagekit = callPackage ./misc/gnome-packagekit { }; +} // lib.optionalAttrs (config.allowAliases or true) { +#### Legacy aliases + + bijiben = gnome-notes; # added 2018-09-26 + evolution_data_server = evolution-data-server; # added 2018-02-25 + geocode_glib = pkgs.geocode-glib; # added 2018-02-25 + glib_networking = pkgs.glib-networking; # added 2018-02-25 + gnome_common = gnome-common; # added 2018-02-25 + gnome_control_center = gnome-control-center; # added 2018-02-25 + gnome_desktop = gnome-desktop; # added 2018-02-25 + gnome_keyring = gnome-keyring; # added 2018-02-25 + gnome_online_accounts = gnome-online-accounts; # added 2018-02-25 + gnome_session = gnome-session; # added 2018-02-25 + gnome_settings_daemon = gnome-settings-daemon; # added 2018-02-25 + gnome_shell = gnome-shell; # added 2018-02-25 + gnome_terminal = gnome-terminal; # added 2018-02-25 + gnome-themes-standard = gnome-themes-extra; # added 2018-03-14 + gnome_themes_standard = gnome-themes-standard; # added 2018-02-25 + gnome-tweak-tool = gnome-tweaks; # added 2018-03-21 + gsettings_desktop_schemas = gsettings-desktop-schemas; # added 2018-02-25 + libgames-support = libgnome-games-support; # added 2018-03-14 + libgnome_keyring = libgnome-keyring; # added 2018-02-25 + inherit (pkgs) rarian; # added 2018-04-25 + networkmanager_fortisslvpn = networkmanager-fortisslvpn; # added 2018-02-25 + networkmanager_iodine = networkmanager-iodine; # added 2018-02-25 + networkmanager_l2tp = networkmanager-l2tp; # added 2018-02-25 + networkmanager_openconnect = networkmanager-openconnect; # added 2018-02-25 + networkmanager_openvpn = networkmanager-openvpn; # added 2018-02-25 + networkmanager_vpnc = networkmanager-vpnc; # added 2018-02-25 + yelp_xsl = yelp-xsl; # added 2018-02-25 + yelp_tools = yelp-tools; # added 2018-02-25 + + # added 2019-02-08 + inherit (pkgs) atk glib gobject-introspection gspell webkitgtk gtk3 gtkmm3 + libgtop libgudev libhttpseverywhere librsvg libsecret gdk_pixbuf gtksourceview gtksourceviewmm gtksourceview4 + easytag meld orca rhythmbox shotwell gnome-usage + clutter clutter-gst clutter-gtk cogl gtk-vnc libdazzle libgda libgit2-glib libgxps libgdata libgepub libpeas libgee geocode-glib libgweather librest libzapojit libmediaart gfbgraph gexiv2 folks totem-pl-parser gcr gsound libgnomekbd vte vte_290 gnome-menus gdl; + inherit (pkgs) gsettings-desktop-schemas; # added 2019-04-16 + inherit (pkgs) gnome-video-effects; # added 2019-08-19 + inherit (pkgs) gnome-online-accounts grilo grilo-plugins tracker tracker-miners gnome-photos; # added 2019-08-23 + inherit (pkgs) glib-networking; # added 2019-09-02 + inherit (pkgs) nemiver; # added 2019-09-09 + + defaultIconTheme = adwaita-icon-theme; + gtk = gtk3; + gtkmm = gtkmm3; + rest = librest; + + pidgin-im-gnome-shell-extension = pkgs.gnomeExtensions.pidgin-im-integration; # added 2019-08-01 + + # added 2019-08-25 + corePackages = throw "gnome3.corePackages is removed since 2019-08-25: please use `services.gnome3.core-shell.enable`"; + optionalPackages = throw "gnome3.optionalPackages is removed since 2019-08-25: please use `services.gnome3.core-utilities.enable`"; + gamesPackages = throw "gnome3.gamesPackages is removed since 2019-08-25: please use `services.gnome3.games.enable`"; + + nautilus-sendto = throw "nautilus-sendto is removed since 2019-09-17: abandoned upstream"; + + inherit (pkgs) vala; # added 2019-10-10 + + inherit (pkgs) gnome-user-docs; # added 2019-11-20 + + inherit (pkgs) gegl_0_4; # added 2019-10-31 + + inherit (pkgs) gjs; # added 2019-01-05 + + inherit (pkgs) yelp-tools; # added 2019-11-20 + + inherit (pkgs) dconf; # added 2019-11-30 + + inherit (pkgs) networkmanagerapplet; # added 2019-12-12 + + vino = throw "vino is deprecated, use gnome-remote-desktop instead."; # added 2020-03-13 + + gnome-screensaver = throw "gnome-screensaver is deprecated. If you are using GNOME Flashback, it now has a built-in lock screen. If you are using it elsewhere, you can try xscreenlock or other alternatives."; # added 2020-03-19 + + maintainers = lib.teams.gnome.members; + + mutter328 = throw "Removed as Pantheon is upgraded to mutter334."; +}) diff --git a/nixpkgs/pkgs/desktops/gnome-3/devtools/anjuta/default.nix b/nixpkgs/pkgs/desktops/gnome-3/devtools/anjuta/default.nix new file mode 100644 index 000000000000..efd36d4d4aff --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/devtools/anjuta/default.nix @@ -0,0 +1,44 @@ +{ stdenv, fetchurl, pkgconfig, gnome3, gtk3, gjs, flex, bison, libxml2, intltool, + gdl, libgda, gtksourceview, gsettings-desktop-schemas, + itstool, python3, ncurses, makeWrapper }: + +stdenv.mkDerivation rec { + pname = "anjuta"; + version = "3.34.0"; + + src = fetchurl { + url = "mirror://gnome/sources/anjuta/${stdenv.lib.versions.majorMinor version}/${pname}-${version}.tar.xz"; + sha256 = "13ql7axw6zz387s7pa1m7wmh7qps3x7fk53h9832vq1yxlq33aa2"; + }; + + passthru = { + updateScript = gnome3.updateScript { packageName = "anjuta"; attrPath = "gnome3.anjuta"; }; + }; + + enableParallelBuilding = true; + + nativeBuildInputs = [ + pkgconfig intltool itstool python3 makeWrapper + # Required by python3 + ncurses + ]; + buildInputs = [ + flex bison gtk3 libxml2 gjs gdl + libgda gtksourceview + gsettings-desktop-schemas + ]; + + preFixup = '' + wrapProgram $out/bin/anjuta \ + --prefix XDG_DATA_DIRS : \ + "$GSETTINGS_SCHEMAS_PATH" + ''; + + meta = with stdenv.lib; { + description = "Software development studio"; + homepage = "http://anjuta.org/"; + license = licenses.gpl2; + maintainers = with maintainers; []; + platforms = platforms.linux; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/devtools/devhelp/default.nix b/nixpkgs/pkgs/desktops/gnome-3/devtools/devhelp/default.nix new file mode 100644 index 000000000000..fa53b05c44b6 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/devtools/devhelp/default.nix @@ -0,0 +1,80 @@ +{ stdenv +, fetchurl +, meson +, ninja +, pkgconfig +, gnome3 +, gtk3 +, wrapGAppsHook +, glib +, amtk +, appstream-glib +, gobject-introspection +, python3 +, webkitgtk +, gettext +, itstool +, gsettings-desktop-schemas +, shared-mime-info +}: + +stdenv.mkDerivation rec { + pname = "devhelp"; + version = "3.36.1"; + + src = fetchurl { + url = "mirror://gnome/sources/devhelp/${stdenv.lib.versions.majorMinor version}/${pname}-${version}.tar.xz"; + sha256 = "0gcakbq2fci6cf5z8lakydqnynasp74djfy53bh7jjmw0a9yry2c"; + }; + + nativeBuildInputs = [ + meson + ninja + pkgconfig + gettext + itstool + wrapGAppsHook + appstream-glib + gobject-introspection + python3 + ]; + + buildInputs = [ + glib + gtk3 + webkitgtk + amtk + gnome3.adwaita-icon-theme + gsettings-desktop-schemas + ]; + + doCheck = true; + + postPatch = '' + chmod +x meson_post_install.py # patchShebangs requires executable file + patchShebangs meson_post_install.py + ''; + + preFixup = '' + gappsWrapperArgs+=( + # Fix pages being blank + # https://gitlab.gnome.org/GNOME/devhelp/issues/14 + --prefix XDG_DATA_DIRS : "${shared-mime-info}/share" + ) + ''; + + passthru = { + updateScript = gnome3.updateScript { + packageName = "devhelp"; + attrPath = "gnome3.devhelp"; + }; + }; + + meta = with stdenv.lib; { + description = "API documentation browser for GNOME"; + homepage = "https://wiki.gnome.org/Apps/Devhelp"; + license = licenses.gpl3Plus; + maintainers = teams.gnome.members; + platforms = platforms.linux; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/devtools/gnome-devel-docs/default.nix b/nixpkgs/pkgs/desktops/gnome-3/devtools/gnome-devel-docs/default.nix new file mode 100644 index 000000000000..3a53e592b5fc --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/devtools/gnome-devel-docs/default.nix @@ -0,0 +1,25 @@ +{ stdenv, fetchurl, gnome3, intltool, itstool, libxml2 }: + +stdenv.mkDerivation rec { + pname = "gnome-devel-docs"; + version = "3.32.1"; + + src = fetchurl { + url = "mirror://gnome/sources/gnome-devel-docs/${stdenv.lib.versions.majorMinor version}/${pname}-${version}.tar.xz"; + sha256 = "0xqpgf975rws60qxilq635pblbpgwspyykgzxnb4awd9zrs5lbx0"; + }; + + passthru = { + updateScript = gnome3.updateScript { packageName = "gnome-devel-docs"; attrPath = "gnome3.gnome-devel-docs"; }; + }; + + buildInputs = [ intltool itstool libxml2 ]; + + meta = with stdenv.lib; { + homepage = "https://github.com/GNOME/gnome-devel-docs"; + description = "Developer documentation for GNOME"; + maintainers = teams.gnome.members; + license = licenses.fdl12; + platforms = platforms.linux; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/extensions/appindicator/default.nix b/nixpkgs/pkgs/desktops/gnome-3/extensions/appindicator/default.nix new file mode 100644 index 000000000000..cf9ca9999d74 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/extensions/appindicator/default.nix @@ -0,0 +1,34 @@ +{ stdenv, fetchFromGitHub, gnome3 }: + +stdenv.mkDerivation rec { + pname = "gnome-shell-extension-appindicator"; + version = "33"; + + src = fetchFromGitHub { + owner = "Ubuntu"; + repo = "gnome-shell-extension-appindicator"; + rev = "v${version}"; + sha256 = "B039bgg5b63oaHp1Z36k9Dh5FLr8fmfxI25ZgIA+p2I="; + }; + + # This package has a Makefile, but it's used for building a zip for + # publication to extensions.gnome.org. Disable the build phase so + # installing doesn't build an unnecessary release. + dontBuild = true; + + uuid = "appindicatorsupport@rgcjonas.gmail.com"; + installPhase = '' + mkdir -p $out/share/gnome-shell/extensions/${uuid} + cp *.js $out/share/gnome-shell/extensions/${uuid} + cp -r interfaces-xml $out/share/gnome-shell/extensions/${uuid} + cp metadata.json $out/share/gnome-shell/extensions/${uuid} + ''; + + meta = with stdenv.lib; { + description = "AppIndicator/KStatusNotifierItem support for GNOME Shell"; + license = licenses.gpl2Plus; + maintainers = with maintainers; [ jonafato ]; + platforms = gnome3.gnome-shell.meta.platforms; + homepage = "https://github.com/Ubuntu/gnome-shell-extension-appindicator"; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/extensions/arc-menu/default.nix b/nixpkgs/pkgs/desktops/gnome-3/extensions/arc-menu/default.nix new file mode 100644 index 000000000000..db1741e72bb5 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/extensions/arc-menu/default.nix @@ -0,0 +1,33 @@ +{ stdenv, fetchFromGitLab, glib, gettext, substituteAll, gnome-menus }: + +stdenv.mkDerivation rec { + pname = "gnome-shell-arc-menu"; + version = "43"; + + src = fetchFromGitLab { + owner = "LinxGem33"; + repo = "Arc-Menu"; + rev = "v${version}-Stable"; + sha256 = "1rspl89bxqy0wla8cj0h1d29gp38xg1vmvhc1qg7bl46ank4yp5q"; + }; + + patches = [ + (substituteAll { + src = ./fix_gmenu.patch; + gmenu_path = "${gnome-menus}/lib/girepository-1.0"; + }) + ]; + + buildInputs = [ + glib gettext + ]; + + makeFlags = [ "INSTALLBASE=${placeholder "out"}/share/gnome-shell/extensions" ]; + + meta = with stdenv.lib; { + description = "Gnome shell extension designed to replace the standard menu found in Gnome 3"; + license = licenses.gpl2Plus; + maintainers = with maintainers; [ dkabot ]; + homepage = "https://gitlab.com/LinxGem33/Arc-Menu"; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/extensions/arc-menu/fix_gmenu.patch b/nixpkgs/pkgs/desktops/gnome-3/extensions/arc-menu/fix_gmenu.patch new file mode 100644 index 000000000000..7f6b8489ea8b --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/extensions/arc-menu/fix_gmenu.patch @@ -0,0 +1,12 @@ +--- a/extension.js ++++ b/extension.js +@@ -29,6 +29,8 @@ + * https://github.com/The-Panacea-Projects/Gnomenu + */ + ++ ++imports.gi.GIRepository.Repository.prepend_search_path('@gmenu_path@'); + + // Import Libraries + const Main = imports.ui.main; + diff --git a/nixpkgs/pkgs/desktops/gnome-3/extensions/battery-status/default.nix b/nixpkgs/pkgs/desktops/gnome-3/extensions/battery-status/default.nix new file mode 100644 index 000000000000..44b3f04f79d6 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/extensions/battery-status/default.nix @@ -0,0 +1,28 @@ +{ stdenv, fetchFromGitHub }: + +stdenv.mkDerivation rec { + pname = "gnome-shell-extension-battery-status"; + version = "6"; + + src = fetchFromGitHub { + owner = "milliburn"; + repo = "gnome-shell-extension-battery_status"; + rev = "v${version}"; + sha256 = "1w83h863mzffjnmk322xq90qf3y9dzay1w9yw5r0qnbsq1ljl8p4"; + }; + + uuid = "battery_status@milliburn.github.com"; + + installPhase = '' + mkdir -p $out/share/gnome-shell/extensions + cp -r ${uuid} $out/share/gnome-shell/extensions/ + ''; + + meta = with stdenv.lib; { + description = "Configurable lightweight battery charge indicator and autohider"; + license = licenses.gpl2; + broken = true; # not compatable with latest GNOME + maintainers = with maintainers; [ jonafato ]; + homepage = "https://github.com/milliburn/gnome-shell-extension-battery_status"; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/extensions/caffeine/default.nix b/nixpkgs/pkgs/desktops/gnome-3/extensions/caffeine/default.nix new file mode 100644 index 000000000000..608d44a2892f --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/extensions/caffeine/default.nix @@ -0,0 +1,36 @@ +{ stdenv, fetchFromGitHub, glib, gettext, bash, gnome3 }: + +stdenv.mkDerivation rec { + pname = "gnome-shell-extension-caffeine-unstable"; + version = "2020-03-13"; + + src = fetchFromGitHub { + owner = "eonpatapon"; + repo = "gnome-shell-extension-caffeine"; + rev = "f25fa5cd586271f080c2304d0ad1273b55e864f5"; + sha256 = "12a76g1ydw677pjnj00r3vw31k4xybc63ynqzx3s4g0wi6lipng7"; + }; + + uuid = "caffeine@patapon.info"; + + nativeBuildInputs = [ + glib gettext + ]; + + buildPhase = '' + ${bash}/bin/bash ./update-locale.sh + glib-compile-schemas --strict --targetdir=caffeine@patapon.info/schemas/ caffeine@patapon.info/schemas + ''; + + installPhase = '' + mkdir -p $out/share/gnome-shell/extensions + cp -r ${uuid} $out/share/gnome-shell/extensions + ''; + + meta = with stdenv.lib; { + description = "Fill the cup to inhibit auto suspend and screensaver"; + license = licenses.gpl2; + maintainers = with maintainers; [ eperuffo ]; + homepage = "https://github.com/eonpatapon/gnome-shell-extension-caffeine"; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/extensions/chrome-gnome-shell/default.nix b/nixpkgs/pkgs/desktops/gnome-3/extensions/chrome-gnome-shell/default.nix new file mode 100644 index 000000000000..1e3815705cd3 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/extensions/chrome-gnome-shell/default.nix @@ -0,0 +1,44 @@ +{stdenv, fetchurl, cmake, ninja, jq, python3, gnome3, wrapGAppsHook}: + +let + version = "10.1"; + + inherit (python3.pkgs) python pygobject3 requests; +in stdenv.mkDerivation rec { + pname = "chrome-gnome-shell"; + inherit version; + + src = fetchurl { + url = "mirror://gnome/sources/chrome-gnome-shell/${version}/${pname}-${version}.tar.xz"; + sha256 = "0f54xyamm383ypbh0ndkza0pif6ljddg2f947p265fkqj3p4zban"; + }; + + nativeBuildInputs = [ cmake ninja jq wrapGAppsHook ]; + buildInputs = [ gnome3.gnome-shell python pygobject3 requests ]; + + preConfigure = '' + substituteInPlace CMakeLists.txt --replace "/etc" "$out/etc" + ''; + # cmake setup hook changes /etc/opt into /var/empty + dontFixCmake = true; + + cmakeFlags = [ "-DBUILD_EXTENSION=OFF" ]; + wrapPrefixVariables = [ "PYTHONPATH" ]; + + passthru = { + updateScript = gnome3.updateScript { + packageName = "chrome-gnome-shell"; + }; + }; + + meta = with stdenv.lib; { + description = "GNOME Shell integration for Chrome"; + homepage = "https://wiki.gnome.org/Projects/GnomeShellIntegrationForChrome"; + longDescription = '' + To use the integration, install the <link xlink:href="https://wiki.gnome.org/Projects/GnomeShellIntegrationForChrome/Installation">browser extension</link>, and then set <option>services.gnome3.chrome-gnome-shell.enable</option> to <literal>true</literal>. + ''; + license = licenses.gpl3; + maintainers = teams.gnome.members; + platforms = platforms.linux; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/extensions/clipboard-indicator/default.nix b/nixpkgs/pkgs/desktops/gnome-3/extensions/clipboard-indicator/default.nix new file mode 100644 index 000000000000..1cc06be6ec99 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/extensions/clipboard-indicator/default.nix @@ -0,0 +1,28 @@ +{ stdenv, fetchFromGitHub }: + +stdenv.mkDerivation rec { + pname = "gnome-shell-extension-clipboard-indicator"; + version = "30"; + + src = fetchFromGitHub { + owner = "Tudmotu"; + repo = "gnome-shell-extension-clipboard-indicator"; + rev = "v${version}"; + sha256 = "1fmgmxv2y678bj0kmymkgnnglcpqk8ww053izlq46xg7s27jjdf6"; + }; + + uuid = "clipboard-indicator@tudmotu.com"; + + installPhase = '' + mkdir -p $out/share/gnome-shell/extensions/${uuid} + cp -r * $out/share/gnome-shell/extensions/${uuid} + ''; + + meta = with stdenv.lib; { + description = "Adds a clipboard indicator to the top panel and saves clipboard history"; + license = licenses.mit; + maintainers = with maintainers; [ jonafato ]; + platforms = platforms.linux; + homepage = "https://github.com/Tudmotu/gnome-shell-extension-clipboard-indicator"; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/extensions/dash-to-dock/default.nix b/nixpkgs/pkgs/desktops/gnome-3/extensions/dash-to-dock/default.nix new file mode 100644 index 000000000000..d508222188b8 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/extensions/dash-to-dock/default.nix @@ -0,0 +1,27 @@ +{ stdenv, fetchFromGitHub, glib, gettext }: + +stdenv.mkDerivation rec { + pname = "gnome-shell-dash-to-dock-unstable"; + version = "2020-03-19"; + + src = fetchFromGitHub { + owner = "micheleg"; + repo = "dash-to-dock"; + # rev = "extensions.gnome.org-v" + version; + rev = "8c94a8d6db47ebc1273e690f4e0ba5e592f7f268"; + sha256 = "7nNfxAINqOIJCgYXYaPck2EJ1IOmzt6AkfDFknZ8GaI="; + }; + + nativeBuildInputs = [ + glib gettext + ]; + + makeFlags = [ "INSTALLBASE=$(out)/share/gnome-shell/extensions" ]; + + meta = with stdenv.lib; { + description = "A dock for the Gnome Shell"; + license = licenses.gpl2; + maintainers = with maintainers; [ eperuffo ]; + homepage = "https://micheleg.github.io/dash-to-dock/"; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/extensions/dash-to-panel/default.nix b/nixpkgs/pkgs/desktops/gnome-3/extensions/dash-to-panel/default.nix new file mode 100644 index 000000000000..84662505a374 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/extensions/dash-to-panel/default.nix @@ -0,0 +1,26 @@ +{ stdenv, fetchFromGitHub, glib, gettext }: + +stdenv.mkDerivation rec { + pname = "gnome-shell-dash-to-panel"; + version = "31"; + + src = fetchFromGitHub { + owner = "home-sweet-gnome"; + repo = "dash-to-panel"; + rev = "v${version}"; + sha256 = "A8Ft+tLNv8KlTnVUzrWGavBWpP0u2rhkuG5LZls1A24="; + }; + + buildInputs = [ + glib gettext + ]; + + makeFlags = [ "INSTALLBASE=$(out)/share/gnome-shell/extensions" ]; + + meta = with stdenv.lib; { + description = "An icon taskbar for Gnome Shell"; + license = licenses.gpl2; + maintainers = with maintainers; [ mounium ]; + homepage = "https://github.com/jderose9/dash-to-panel"; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/extensions/draw-on-your-screen/default.nix b/nixpkgs/pkgs/desktops/gnome-3/extensions/draw-on-your-screen/default.nix new file mode 100644 index 000000000000..5e6f7b89e1d9 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/extensions/draw-on-your-screen/default.nix @@ -0,0 +1,29 @@ +{ stdenv, fetchgit, gettext, gnome3 }: + +stdenv.mkDerivation rec { + pname = "gnome-shell-extension-draw-on-your-screen"; + version = "6"; + + src = fetchgit { + url = "https://framagit.org/abakkk/DrawOnYourScreen/"; + rev = "v${version}"; + sha256 = "05i20ii8lv6mg56rz8lng80dx35l6g45j8wr7jgbp591hg0spj1w"; + }; + + uuid = "drawOnYourScreen@abakkk.framagit.org"; + + installPhase = '' + runHook preInstall + mkdir -p $out/share/gnome-shell/extensions/${uuid} + cp -r . $out/share/gnome-shell/extensions/${uuid} + runHook postInstall + ''; + + meta = with stdenv.lib; { + description = "A drawing extension for GNOME Shell"; + license = licenses.gpl2Plus; + maintainers = with maintainers; [ ericdallo ]; + platforms = gnome3.gnome-shell.meta.platforms; + homepage = "https://framagit.org/abakkk/DrawOnYourScreen"; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/extensions/drop-down-terminal/default.nix b/nixpkgs/pkgs/desktops/gnome-3/extensions/drop-down-terminal/default.nix new file mode 100644 index 000000000000..fb7132015944 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/extensions/drop-down-terminal/default.nix @@ -0,0 +1,34 @@ +{ stdenv, fetchFromGitHub, substituteAll, gjs, vte, gnome3 }: + +stdenv.mkDerivation rec { + pname = "gnome-shell-extension-drop-down-terminal"; + version = "unstable-2020-03-25"; + + src = fetchFromGitHub { + owner = "zzrough"; + repo = "gs-extensions-drop-down-terminal"; + rev = "a59669afdb395b3315619f62c1f740f8b2f0690d"; + sha256 = "0igfxgrjdqq6z6xg4rsawxn261pk25g5dw2pm3bhwz5sqsy4bq3i"; + }; + + uuid = "drop-down-terminal@gs-extensions.zzrough.org"; + + patches = [ + (substituteAll { + src = ./fix_vte_and_gjs.patch; + inherit gjs vte; + }) + ]; + + installPhase = '' + mkdir -p $out/share/gnome-shell/extensions + cp -r ${uuid} $out/share/gnome-shell/extensions/ + ''; + + meta = with stdenv.lib; { + description = "Configurable drop down terminal shell"; + license = licenses.gpl3; + maintainers = with maintainers; [ ericdallo ]; + homepage = "https://github.com/zzrough/gs-extensions-drop-down-terminal"; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/extensions/drop-down-terminal/fix_vte_and_gjs.patch b/nixpkgs/pkgs/desktops/gnome-3/extensions/drop-down-terminal/fix_vte_and_gjs.patch new file mode 100644 index 000000000000..3544c91ee895 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/extensions/drop-down-terminal/fix_vte_and_gjs.patch @@ -0,0 +1,32 @@ +--- a/drop-down-terminal@gs-extensions.zzrough.org/extension.js ++++ b/drop-down-terminal@gs-extensions.zzrough.org/extension.js +@@ -15,6 +15,8 @@ + + // Author: Stéphane Démurget <stephane.demurget@free.fr> + ++imports.gi.GIRepository.Repository.prepend_search_path('@vte@/lib/girepository-1.0') ++ + const Lang = imports.lang; + const Gettext = imports.gettext.domain("drop-down-terminal"); + const Mainloop = imports.mainloop; +@@ -653,7 +655,7 @@ const DropDownTerminalExtension = new Lang.Class({ + this._killingChild = false; + + // finds the forking arguments +- let args = ["gjs", GLib.build_filenamev([Me.path, "terminal.js"]), Me.path]; ++ let args = ["@gjs@/bin/gjs", GLib.build_filenamev([Me.path, "terminal.js"]), Me.path]; + + // forks the process + debug("forking '" + args.join(" ") + "'"); +--- a/drop-down-terminal@gs-extensions.zzrough.org/terminal.js ++++ b/drop-down-terminal@gs-extensions.zzrough.org/terminal.js +@@ -14,6 +14,9 @@ + // along with this program. If not, see <http://www.gnu.org/licenses/>. + + // Author: Stéphane Démurget <stephane.demurget@free.fr> ++ ++imports.gi.GIRepository.Repository.prepend_search_path('@vte@/lib/girepository-1.0') ++ + const Lang = imports.lang; + + const Pango = imports.gi.Pango; diff --git a/nixpkgs/pkgs/desktops/gnome-3/extensions/gsconnect/default.nix b/nixpkgs/pkgs/desktops/gnome-3/extensions/gsconnect/default.nix new file mode 100644 index 000000000000..baaca39a4c4f --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/extensions/gsconnect/default.nix @@ -0,0 +1,83 @@ +{ stdenv, fetchFromGitHub, substituteAll, python3, openssl, gsound +, meson, ninja, libxml2, pkgconfig, gobject-introspection, wrapGAppsHook +, glib, gtk3, at-spi2-core, upower, openssh, gnome3, gjs }: + +stdenv.mkDerivation rec { + pname = "gnome-shell-gsconnect"; + version = "35"; + + src = fetchFromGitHub { + owner = "andyholmes"; + repo = "gnome-shell-extension-gsconnect"; + rev = "v${version}"; + sha256 = "GqM2S9FIOHw+8AK2K7fpEBq34JqgKRCsW8I9Ve6c6IM="; + }; + + patches = [ + # Make typelibs available in the extension + (substituteAll { + src = ./fix-paths.patch; + gapplication = "${glib.bin}/bin/gapplication"; + }) + ]; + + nativeBuildInputs = [ + meson ninja pkgconfig + gobject-introspection # for locating typelibs + wrapGAppsHook # for wrapping daemons + libxml2 # xmllint + ]; + + buildInputs = [ + glib # libgobject + gtk3 + at-spi2-core # atspi + gnome3.nautilus # TODO: this contaminates the package with nautilus and gnome-autoar typelibs but it is only needed for the extension + gnome3.nautilus-python + gsound + upower + gnome3.caribou + gjs # for running daemon + gnome3.evolution-data-server # for libebook-contacts typelib + ]; + + mesonFlags = [ + "-Dgnome_shell_libdir=${gnome3.gnome-shell}/lib" + "-Dgsettings_schemadir=${glib.makeSchemaPath (placeholder "out") "${pname}-${version}"}" + "-Dchrome_nmhdir=${placeholder "out"}/etc/opt/chrome/native-messaging-hosts" + "-Dchromium_nmhdir=${placeholder "out"}/etc/chromium/native-messaging-hosts" + "-Dopenssl_path=${openssl}/bin/openssl" + "-Dsshadd_path=${openssh}/bin/ssh-add" + "-Dsshkeygen_path=${openssh}/bin/ssh-keygen" + "-Dsession_bus_services_dir=${placeholder "out"}/share/dbus-1/services" + "-Dpost_install=true" + ]; + + postPatch = '' + patchShebangs meson/nmh.sh + patchShebangs meson/post-install.sh + + # TODO: do not include every typelib everywhere + # for example, we definitely do not need nautilus + for file in src/extension.js src/prefs.js; do + substituteInPlace "$file" \ + --subst-var-by typelibPath "$GI_TYPELIB_PATH" + done + ''; + + postFixup = '' + # Let’s wrap the daemons + for file in $out/share/gnome-shell/extensions/gsconnect@andyholmes.github.io/service/{daemon,nativeMessagingHost}.js; do + echo "Wrapping program $file" + wrapGApp "$file" + done + ''; + + meta = with stdenv.lib; { + description = "KDE Connect implementation for Gnome Shell"; + homepage = "https://github.com/andyholmes/gnome-shell-extension-gsconnect/wiki"; + license = licenses.gpl2; + maintainers = with maintainers; [ etu ]; + platforms = platforms.linux; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/extensions/gsconnect/fix-paths.patch b/nixpkgs/pkgs/desktops/gnome-3/extensions/gsconnect/fix-paths.patch new file mode 100644 index 000000000000..629d34b6f68a --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/extensions/gsconnect/fix-paths.patch @@ -0,0 +1,31 @@ +--- a/data/org.gnome.Shell.Extensions.GSConnect.desktop ++++ b/data/org.gnome.Shell.Extensions.GSConnect.desktop +@@ -1,7 +1,7 @@ + [Desktop Entry] + Type=Application + Name=GSConnect +-Exec=gapplication launch org.gnome.Shell.Extensions.GSConnect %U ++Exec=@gapplication@ launch org.gnome.Shell.Extensions.GSConnect %U + Terminal=false + NoDisplay=true + Icon=org.gnome.Shell.Extensions.GSConnect +--- a/src/extension.js ++++ b/src/extension.js +@@ -1,5 +1,7 @@ + 'use strict'; + ++'@typelibPath@'.split(':').forEach(path => imports.gi.GIRepository.Repository.prepend_search_path(path)); ++ + const Gio = imports.gi.Gio; + const GLib = imports.gi.GLib; + const Gtk = imports.gi.Gtk; +--- a/src/prefs.js ++++ b/src/prefs.js +@@ -1,5 +1,7 @@ + 'use strict'; + ++'@typelibPath@'.split(':').forEach(path => imports.gi.GIRepository.Repository.prepend_search_path(path)); ++ + const Gio = imports.gi.Gio; + const GLib = imports.gi.GLib; + const Gtk = imports.gi.Gtk; diff --git a/nixpkgs/pkgs/desktops/gnome-3/extensions/icon-hider/default.nix b/nixpkgs/pkgs/desktops/gnome-3/extensions/icon-hider/default.nix new file mode 100644 index 000000000000..efaef03f3b11 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/extensions/icon-hider/default.nix @@ -0,0 +1,29 @@ +{ stdenv, fetchFromGitHub, gnome3 }: + +stdenv.mkDerivation rec { + pname = "gnome-shell-extension-icon-hider"; + version = "23"; + + src = fetchFromGitHub { + owner = "ikalnytskyi"; + repo = "gnome-shell-extension-icon-hider"; + rev = "v${version}"; + sha256 = "18c8zkdrmdbghqqz7b450vhgpykgz25mgigwn2nggcb2lxmvm9ks"; + }; + + uuid = "icon-hider@kalnitsky.org"; + + installPhase = '' + mkdir -p $out/share/gnome-shell/extensions + cp -r ${uuid} $out/share/gnome-shell/extensions + ''; + + meta = with stdenv.lib; { + description = "Icon Hider is a GNOME Shell extension for managing status area items"; + license = licenses.bsd3; + maintainers = with maintainers; [ jonafato ]; + platforms = gnome3.gnome-shell.meta.platforms; + homepage = "https://github.com/ikalnytskyi/gnome-shell-extension-icon-hider"; + broken = versionAtLeast gnome3.gnome-shell.version "3.32"; # Doesn't support 3.34 + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/extensions/impatience/default.nix b/nixpkgs/pkgs/desktops/gnome-3/extensions/impatience/default.nix new file mode 100644 index 000000000000..230498f5d7bc --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/extensions/impatience/default.nix @@ -0,0 +1,35 @@ +{ stdenv, fetchFromGitHub, glib }: + +stdenv.mkDerivation rec { + pname = "gnome-shell-impatience"; + version = "unstable-2019-09-23"; + + src = fetchFromGitHub { + owner = "timbertson"; + repo = "gnome-shell-impatience"; + rev = "43e4e0a1e0eeb334a2da5224ce3ab4fdddf4f1b2"; + sha256 = "0kvdhlz41fjyqdgcfw6mrr9nali6wg2qwji3dvykzfi0aypljzpx"; + }; + + buildInputs = [ + glib + ]; + + buildPhase = '' + make schemas + ''; + + installPhase = '' + mkdir -p $out/share/gnome-shell/extensions + cp -r impatience $out/share/gnome-shell/extensions/${uuid} + ''; + + uuid = "impatience@gfxmonk.net"; + + meta = with stdenv.lib; { + description = "Speed up builtin gnome-shell animations"; + license = licenses.gpl3Plus; + maintainers = with maintainers; [ timbertson tiramiseb ]; + homepage = "http://gfxmonk.net/dist/0install/gnome-shell-impatience.xml"; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/extensions/mpris-indicator-button/default.nix b/nixpkgs/pkgs/desktops/gnome-3/extensions/mpris-indicator-button/default.nix new file mode 100644 index 000000000000..c16f7bc42090 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/extensions/mpris-indicator-button/default.nix @@ -0,0 +1,32 @@ +{ stdenv +, fetchFromGitHub +, gnome3 +}: + +stdenv.mkDerivation rec { + pname = "gnome-shell-extension-mpris-indicator-button-unstable"; + version = "2020-03-21"; + + src = fetchFromGitHub { + owner = "JasonLG1979"; + repo = "gnome-shell-extension-mpris-indicator-button"; + rev = "de54160e7d905b8c48c0fe30a437f7c51efc1aa3"; + sha256 = "k/NLmDrlaOsMkwLye7YGQhaQvOMNfhCsDVh2F0qnuFg="; + }; + + uuid = "mprisindicatorbutton@JasonLG1979.github.io"; + + installPhase = '' + mkdir -p $out/share/gnome-shell/extensions + cp -r ${uuid} $out/share/gnome-shell/extensions + ''; + + meta = with stdenv.lib; { + description = "A simple MPRIS indicator button for GNOME Shell"; + license = licenses.gpl3; + maintainers = with maintainers; [ worldofpeace ]; + platforms = gnome3.gnome-shell.meta.platforms; + homepage = "https://github.com/JasonLG1979/gnome-shell-extension-mpris-indicator-button"; + broken = versionOlder gnome3.gnome-shell.version "3.34"; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/extensions/night-theme-switcher/default.nix b/nixpkgs/pkgs/desktops/gnome-3/extensions/night-theme-switcher/default.nix new file mode 100644 index 000000000000..be6c1916ab42 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/extensions/night-theme-switcher/default.nix @@ -0,0 +1,31 @@ +{ stdenv, fetchFromGitLab }: + +stdenv.mkDerivation rec { + pname = "gnome-shell-extension-night-theme-switcher"; + version = "19"; + + src = fetchFromGitLab { + owner = "rmnvgr"; + repo = "nightthemeswitcher-gnome-shell-extension"; + rev = "v${version}"; + sha256 = "1ll0yf1skf51wa10mlrajd1dy459w33kx0i3vhfcx2pdk7mw5a3c"; + }; + + # makefile tries to do install in home directory using + # `gnome-extensions install` + dontBuild = true; + + uuid = "nightthemeswitcher@romainvigier.fr"; + + installPhase = '' + mkdir -p $out/share/gnome-shell/extensions/ + cp -r src/ $out/share/gnome-shell/extensions/${uuid} + ''; + + meta = with stdenv.lib; { + description = "Automatically change the GTK theme to dark variant when Night Light activates"; + license = licenses.gpl3; + maintainers = with maintainers; [ jonafato ]; + homepage = "https://gitlab.com/rmnvgr/nightthemeswitcher-gnome-shell-extension/"; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/extensions/no-title-bar/default.nix b/nixpkgs/pkgs/desktops/gnome-3/extensions/no-title-bar/default.nix new file mode 100644 index 000000000000..c876b22c12c1 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/extensions/no-title-bar/default.nix @@ -0,0 +1,36 @@ +{ stdenv, fetchFromGitHub, substituteAll, glib, gettext, xorg }: + +stdenv.mkDerivation rec { + pname = "gnome-shell-extension-no-title-bar"; + version = "9"; + + src = fetchFromGitHub { + owner = "franglais125"; + repo = "no-title-bar"; + rev = "v${version}"; + sha256 = "02zm61fg40r005fn2rvgrbsz2hbcsmp2hkhyilqbmpilw35y0nbq"; + }; + + nativeBuildInputs = [ + glib gettext + ]; + + patches = [ + (substituteAll { + src = ./fix-paths.patch; + xprop = "${xorg.xprop}/bin/xprop"; + xwininfo = "${xorg.xwininfo}/bin/xwininfo"; + }) + ]; + + makeFlags = [ "INSTALLBASE=$(out)/share/gnome-shell/extensions" ]; + + meta = with stdenv.lib; { + description = "Integrates maximized windows with the top panel"; + homepage = "https://github.com/franglais125/no-title-bar"; + license = licenses.gpl2; + broken = true; # https://github.com/franglais125/no-title-bar/issues/114 + maintainers = with maintainers; [ jonafato svsdep ]; + platforms = platforms.linux; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/extensions/no-title-bar/fix-paths.patch b/nixpkgs/pkgs/desktops/gnome-3/extensions/no-title-bar/fix-paths.patch new file mode 100644 index 000000000000..9a53d63860da --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/extensions/no-title-bar/fix-paths.patch @@ -0,0 +1,56 @@ +--- a/decoration.js ++++ b/decoration.js +@@ -181,7 +181,7 @@ + let act = win.get_compositor_private(); + let xwindow = act && act['x-window']; + if (xwindow) { +- let xwininfo = GLib.spawn_command_line_sync('xwininfo -children -id 0x%x'.format(xwindow)); ++ let xwininfo = GLib.spawn_command_line_sync('@xwininfo@ -children -id 0x%x'.format(xwindow)); + if (xwininfo[0]) { + let str = xwininfo[1].toString(); + +@@ -207,7 +207,7 @@ + // Try enumerating all available windows and match the title. Note that this + // may be necessary if the title contains special characters and `x-window` + // is not available. +- let result = GLib.spawn_command_line_sync('xprop -root _NET_CLIENT_LIST'); ++ let result = GLib.spawn_command_line_sync('@xprop@ -root _NET_CLIENT_LIST'); + if (result[0]) { + let str = result[1].toString(); + +@@ -218,7 +218,7 @@ + + // For each window ID, check if the title matches the desired title. + for (var i = 0; i < windowList.length; ++i) { +- let cmd = 'xprop -id "' + windowList[i] + '" _NET_WM_NAME _NO_TITLE_BAR_ORIGINAL_STATE'; ++ let cmd = '@xprop@ -id "' + windowList[i] + '" _NET_WM_NAME _NO_TITLE_BAR_ORIGINAL_STATE'; + let result = GLib.spawn_command_line_sync(cmd); + + if (result[0]) { +@@ -258,7 +258,7 @@ + } + + let id = this._guessWindowXID(win); +- let cmd = 'xprop -id ' + id; ++ let cmd = '@xprop@ -id ' + id; + + let xprops = GLib.spawn_command_line_sync(cmd); + if (!xprops[0]) { +@@ -277,7 +277,7 @@ + m = str.match(/^_GTK_HIDE_TITLEBAR_WHEN_MAXIMIZED(\(CARDINAL\))? = ([0-9]+)$/m); + if (m) { + let state = !!parseInt(m[2]); +- cmd = ['xprop', '-id', id, ++ cmd = ['@xprop@', '-id', id, + '-f', '_NO_TITLE_BAR_ORIGINAL_STATE', '32c', + '-set', '_NO_TITLE_BAR_ORIGINAL_STATE', + (state ? '0x1' : '0x0')]; +@@ -358,7 +358,7 @@ + let winXID = this._guessWindowXID(win); + if (winXID == null) + return; +- let cmd = ['xprop', '-id', winXID, ++ let cmd = ['@xprop@', '-id', winXID, + '-f', '_GTK_HIDE_TITLEBAR_WHEN_MAXIMIZED', '32c', + '-set', '_GTK_HIDE_TITLEBAR_WHEN_MAXIMIZED', + (hide ? '0x1' : '0x0')]; diff --git a/nixpkgs/pkgs/desktops/gnome-3/extensions/paperwm/default.nix b/nixpkgs/pkgs/desktops/gnome-3/extensions/paperwm/default.nix new file mode 100644 index 000000000000..7a79b691a4df --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/extensions/paperwm/default.nix @@ -0,0 +1,29 @@ +{ stdenv, fetchFromGitHub }: + +stdenv.mkDerivation rec { + pname = "gnome-shell-extension-paperwm"; + version = "36.0"; + + src = fetchFromGitHub { + owner = "paperwm"; + repo = "PaperWM"; + rev = version; + sha256 = "1ssnabwxrns36c61ppspjkr9i3qifv08pf2jpwl7cjv3pvyn4kly"; + }; + + uuid = "paperwm@hedning:matrix.org"; + + dontBuild = true; + + installPhase = '' + mkdir -p $out/share/gnome-shell/extensions/${uuid} + cp -r . $out/share/gnome-shell/extensions/${uuid} + ''; + + meta = with stdenv.lib; { + description = "Tiled scrollable window management for Gnome Shell"; + homepage = "https://github.com/paperwm/PaperWM"; + license = licenses.gpl3; + maintainers = with maintainers; [ hedning zowoq ]; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/extensions/pidgin-im-integration/default.nix b/nixpkgs/pkgs/desktops/gnome-3/extensions/pidgin-im-integration/default.nix new file mode 100644 index 000000000000..dbc65044c1bc --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/extensions/pidgin-im-integration/default.nix @@ -0,0 +1,32 @@ +{ stdenv, fetchFromGitHub, glib, gnome3 }: + +stdenv.mkDerivation rec { + pname = "gnome-shell-extension-pidgin-im-integration"; + version = "32"; + + src = fetchFromGitHub { + owner = "muffinmad"; + repo = "pidgin-im-gnome-shell-extension"; + rev = "v${version}"; + sha256 = "1jyg8r0s1v83sgg6y0jbsj2v37mglh8rvd8vi27fxnjq9xmg8kpc"; + }; + + dontConfigure = true; + dontBuild = true; + + installPhase = '' + share_dir="$prefix/share" + extensions_dir="$share_dir/gnome-shell/extensions/pidgin@muffinmad" + mkdir -p "$extensions_dir" + mv *.js metadata.json dbus.xml schemas locale "$extensions_dir" + ''; + + meta = with stdenv.lib; { + homepage = "https://github.com/muffinmad/pidgin-im-gnome-shell-extension"; + description = "Make Pidgin IM conversations appear in the Gnome Shell message tray"; + license = licenses.gpl2; + platforms = platforms.linux; + maintainers = with maintainers; [ ]; + broken = versionAtLeast gnome3.gnome-shell.version "3.32"; # Doesn't support 3.34 + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/extensions/remove-dropdown-arrows/default.nix b/nixpkgs/pkgs/desktops/gnome-3/extensions/remove-dropdown-arrows/default.nix new file mode 100644 index 000000000000..acb0e3624298 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/extensions/remove-dropdown-arrows/default.nix @@ -0,0 +1,32 @@ +{ stdenv, fetchFromGitHub }: + +stdenv.mkDerivation rec { + pname = "gnome-shell-extension-remove-dropdown-arrows"; + version = "13"; + + src = fetchFromGitHub { + owner = "mpdeimos"; + repo = "gnome-shell-remove-dropdown-arrows"; + rev = "version/${version}"; + sha256 = "09b2hnfbqym20pb1sfc8xiz7gs2kbs6b1s7xl8swc8dydhsbambk"; + }; + + # This package has a Makefile, but it's used for publishing and linting, not + # for building. Disable the build phase so installing doesn't attempt to + # publish the extension. + dontBuild = true; + + uuid = "remove-dropdown-arrows@mpdeimos.com"; + installPhase = '' + mkdir -p $out/share/gnome-shell/extensions/${uuid} + cp extension.js $out/share/gnome-shell/extensions/${uuid} + cp metadata.json $out/share/gnome-shell/extensions/${uuid} + ''; + + meta = with stdenv.lib; { + description = "Remove dropdown arrows from GNOME Shell Menus"; + license = licenses.gpl3; + maintainers = with maintainers; [ jonafato ]; + homepage = "https://github.com/mpdeimos/gnome-shell-remove-dropdown-arrows"; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/extensions/sound-output-device-chooser/default.nix b/nixpkgs/pkgs/desktops/gnome-3/extensions/sound-output-device-chooser/default.nix new file mode 100644 index 000000000000..6fa1840bbb17 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/extensions/sound-output-device-chooser/default.nix @@ -0,0 +1,41 @@ +{ stdenv +, substituteAll +, fetchFromGitHub +, libpulseaudio +, python3 +}: + +stdenv.mkDerivation rec { + pname = "gnome-shell-extension-sound-output-device-chooser"; + version = "28"; + + src = fetchFromGitHub { + owner = "kgshank"; + repo = "gse-sound-output-device-chooser"; + rev = version; + sha256 = "JmDUi6xTMbkMzW+hYJuKtjQj4ERctaiHr6eLsl5Fru4="; + }; + + patches = [ + (substituteAll { + src = ./fix-paths.patch; + libpulse = "${libpulseaudio}/lib/libpulse.so"; + python = python3.interpreter; + }) + ]; + + dontBuild = true; + + uuid = "sound-output-device-chooser@kgshank.net"; + installPhase = '' + mkdir -p $out/share/gnome-shell/extensions + cp -r ${uuid} $out/share/gnome-shell/extensions + ''; + + meta = with stdenv.lib; { + description = "GNOME Shell extension adding audio device chooser to panel"; + license = licenses.gpl3; + maintainers = with maintainers; [ jtojnar ]; + homepage = "https://github.com/kgshank/gse-sound-output-device-chooser"; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/extensions/sound-output-device-chooser/fix-paths.patch b/nixpkgs/pkgs/desktops/gnome-3/extensions/sound-output-device-chooser/fix-paths.patch new file mode 100644 index 000000000000..a0a6551fcf81 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/extensions/sound-output-device-chooser/fix-paths.patch @@ -0,0 +1,22 @@ +--- a/sound-output-device-chooser@kgshank.net/convenience.js ++++ b/sound-output-device-chooser@kgshank.net/convenience.js +@@ -111,7 +111,7 @@ function refreshCards() { + log("New logic"); + let pyLocation = Me.dir.get_child('utils/pa_helper.py').get_path(); + try { +- let [result, out, err, exit_code] = GLib.spawn_command_line_sync('python ' + pyLocation); ++ let [result, out, err, exit_code] = GLib.spawn_command_line_sync('@python@ ' + pyLocation); + // log("result" + result +" out"+out + " exit_code" + exit_code + " + // err" +err); + if(result && !exit_code) { +--- a/sound-output-device-chooser@kgshank.net/utils/libpulse_introspect.py ++++ b/sound-output-device-chooser@kgshank.net/utils/libpulse_introspect.py +@@ -86,7 +86,7 @@ else: + + _libraries = {} + +-libpulse_library_name = find_library('pulse') ++libpulse_library_name = '@libpulse@' + if libpulse_library_name is None: + raise Exception('No libpulse.so library found!') + diff --git a/nixpkgs/pkgs/desktops/gnome-3/extensions/system-monitor/default.nix b/nixpkgs/pkgs/desktops/gnome-3/extensions/system-monitor/default.nix new file mode 100644 index 000000000000..489a4c5587fa --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/extensions/system-monitor/default.nix @@ -0,0 +1,48 @@ +{ stdenv, substituteAll, fetchFromGitHub, glib, glib-networking, libgtop, gnome3 }: + +stdenv.mkDerivation rec { + pname = "gnome-shell-system-monitor"; + version = "38"; + + src = fetchFromGitHub { + owner = "paradoxxxzero"; + repo = "gnome-shell-system-monitor-applet"; + rev = "v${version}"; + sha256 = "1sdj2kxb418mgq44a6lf6jic33wlfbnn3ja61igmx0jj1530iknv"; + }; + + buildInputs = [ + glib + glib-networking + libgtop + ]; + + patches = [ + (substituteAll { + src = ./paths_and_nonexisting_dirs.patch; + gtop_path = "${libgtop}/lib/girepository-1.0"; + glib_net_path = "${glib-networking}/lib/girepository-1.0"; + }) + ]; + + buildPhase = '' + glib-compile-schemas --targetdir=${uuid}/schemas ${uuid}/schemas + ''; + + installPhase = '' + mkdir -p $out/share/gnome-shell/extensions + cp -r ${uuid} $out/share/gnome-shell/extensions + ''; + + uuid = "system-monitor@paradoxxx.zero.gmail.com"; + + meta = with stdenv.lib; { + description = "Display system informations in gnome shell status bar"; + license = licenses.gpl3Plus; + maintainers = with maintainers; [ tiramiseb ]; + homepage = "https://github.com/paradoxxxzero/gnome-shell-system-monitor-applet"; + # 3.36 support not yet ready + # https://github.com/paradoxxxzero/gnome-shell-system-monitor-applet/pull/564 + broken = stdenv.lib.versionAtLeast gnome3.gnome-shell.version "3.34"; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/extensions/system-monitor/paths_and_nonexisting_dirs.patch b/nixpkgs/pkgs/desktops/gnome-3/extensions/system-monitor/paths_and_nonexisting_dirs.patch new file mode 100644 index 000000000000..82e3d7c541ba --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/extensions/system-monitor/paths_and_nonexisting_dirs.patch @@ -0,0 +1,23 @@ +diff --git a/system-monitor@paradoxxx.zero.gmail.com/extension.js b/system-monitor@paradoxxx.zero.gmail.com/extension.js +index b4b7f15..d139135 100644 +--- a/system-monitor@paradoxxx.zero.gmail.com/extension.js ++++ b/system-monitor@paradoxxx.zero.gmail.com/extension.js +@@ -18,6 +18,9 @@ + + // Author: Florian Mounier aka paradoxxxzero + ++imports.gi.GIRepository.Repository.prepend_search_path('@gtop_path@'); ++imports.gi.GIRepository.Repository.prepend_search_path('@glib_net_path@'); ++ + /* Ugly. This is here so that we don't crash old libnm-glib based shells unnecessarily + * by loading the new libnm.so. Should go away eventually */ + const libnm_glib = imports.gi.GIRepository.Repository.get_default().is_registered("NMClient", "1.0"); +@@ -386,7 +389,7 @@ const smMountsMonitor = new Lang.Class({ + connected: false, + _init: function () { + this._volumeMonitor = Gio.VolumeMonitor.get(); +- let sys_mounts = ['/home', '/tmp', '/boot', '/usr', '/usr/local']; ++ let sys_mounts = ['/home', '/tmp', '/boot']; + this.base_mounts = ['/']; + sys_mounts.forEach(Lang.bind(this, function (sMount) { + if (this.is_sys_mount(sMount + '/')) { diff --git a/nixpkgs/pkgs/desktops/gnome-3/extensions/taskwhisperer/default.nix b/nixpkgs/pkgs/desktops/gnome-3/extensions/taskwhisperer/default.nix new file mode 100644 index 000000000000..b4b690c3007c --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/extensions/taskwhisperer/default.nix @@ -0,0 +1,43 @@ +{ stdenv, substituteAll, fetchFromGitHub, taskwarrior, gettext, runtimeShell, gnome3 }: + +stdenv.mkDerivation rec { + pname = "gnome-shell-extension-taskwhisperer"; + version = "12"; + + src = fetchFromGitHub { + owner = "cinatic"; + repo = "taskwhisperer"; + rev = "v${version}"; + sha256 = "187p6p498dd258avsfqqsm322g58y75pc2wbhb4jpmm9insqm1bj"; + }; + + nativeBuildInputs = [ + gettext + ]; + + buildInputs = [ + taskwarrior + ]; + + uuid = "taskwhisperer-extension@infinicode.de"; + + makeFlags = [ + "INSTALLBASE=${placeholder "out"}/share/gnome-shell/extensions" + ]; + + patches = [ + (substituteAll { + src = ./fix-paths.patch; + task = "${taskwarrior}/bin/task"; + shell = runtimeShell; + }) + ]; + + meta = with stdenv.lib; { + description = "GNOME Shell TaskWarrior GUI"; + license = licenses.gpl3Plus; + maintainers = with maintainers; [ jonafato ]; + homepage = "https://github.com/cinatic/taskwhisperer"; + broken = versionAtLeast gnome3.gnome-shell.version "3.32"; # Doesnt't support 3.34 + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/extensions/taskwhisperer/fix-paths.patch b/nixpkgs/pkgs/desktops/gnome-3/extensions/taskwhisperer/fix-paths.patch new file mode 100644 index 000000000000..2ea54f4b0897 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/extensions/taskwhisperer/fix-paths.patch @@ -0,0 +1,99 @@ +diff --git a/taskwhisperer-extension@infinicode.de/extra/create.sh b/taskwhisperer-extension@infinicode.de/extra/create.sh +index a69e369..35d5ea1 100755 +--- a/taskwhisperer-extension@infinicode.de/extra/create.sh ++++ b/taskwhisperer-extension@infinicode.de/extra/create.sh +@@ -1 +1 @@ +-bash -c "task add $1" ++bash -c "@task@ add $1" +diff --git a/taskwhisperer-extension@infinicode.de/extra/modify.sh b/taskwhisperer-extension@infinicode.de/extra/modify.sh +index 7964a26..8edd21b 100755 +--- a/taskwhisperer-extension@infinicode.de/extra/modify.sh ++++ b/taskwhisperer-extension@infinicode.de/extra/modify.sh +@@ -1 +1 @@ +-bash -c "task $1 modify $2" ++bash -c "@task@ $1 modify $2" +diff --git a/taskwhisperer-extension@infinicode.de/taskService.js b/taskwhisperer-extension@infinicode.de/taskService.js +index ead7a12..aa36db4 100644 +--- a/taskwhisperer-extension@infinicode.de/taskService.js ++++ b/taskwhisperer-extension@infinicode.de/taskService.js +@@ -182,7 +182,7 @@ const TaskService = class TaskService { + + let project = projectName ? "project:" + projectName : ""; + +- let command = ['task', 'rc.json.array=on', status, project, 'export']; ++ let command = ['@task@', 'rc.json.array=on', status, project, 'export']; + let reader = new SpawnReader.SpawnReader(); + + let buffer = ""; +@@ -220,7 +220,7 @@ const TaskService = class TaskService { + break; + } + +- let shellProc = Gio.Subprocess.new(['task', status, 'projects'], Gio.SubprocessFlags.STDOUT_PIPE); ++ let shellProc = Gio.Subprocess.new(['@task@', status, 'projects'], Gio.SubprocessFlags.STDOUT_PIPE); + + shellProc.wait_async(null, function (obj, result) { + let shellProcExited = true; +@@ -261,7 +261,7 @@ const TaskService = class TaskService { + return; + } + +- let shellProc = Gio.Subprocess.new(['task', taskID.toString(), 'done'], Gio.SubprocessFlags.STDOUT_PIPE); ++ let shellProc = Gio.Subprocess.new(['@task@', taskID.toString(), 'done'], Gio.SubprocessFlags.STDOUT_PIPE); + + shellProc.wait_async(null, function (obj, result) { + let shellProcExited = true; +@@ -290,7 +290,7 @@ const TaskService = class TaskService { + return; + } + +- let shellProc = Gio.Subprocess.new(['task', 'modify', taskID.toString(), 'status:pending'], Gio.SubprocessFlags.STDOUT_PIPE); ++ let shellProc = Gio.Subprocess.new(['@task@', 'modify', taskID.toString(), 'status:pending'], Gio.SubprocessFlags.STDOUT_PIPE); + + shellProc.wait_async(null, function (obj, result) { + let shellProcExited = true; +@@ -318,7 +318,7 @@ const TaskService = class TaskService { + if (!taskID) { + return; + } +- let shellProc = Gio.Subprocess.new(['task', taskID.toString(), 'start'], Gio.SubprocessFlags.STDOUT_PIPE); ++ let shellProc = Gio.Subprocess.new(['@task@', taskID.toString(), 'start'], Gio.SubprocessFlags.STDOUT_PIPE); + shellProc.wait_async(null, function (obj, result) { + let shellProcExited = true; + shellProc.wait_finish(result); +@@ -344,7 +344,7 @@ const TaskService = class TaskService { + if (!taskID) { + return; + } +- let shellProc = Gio.Subprocess.new(['task', taskID.toString(), 'stop'], Gio.SubprocessFlags.STDOUT_PIPE); ++ let shellProc = Gio.Subprocess.new(['@task@', taskID.toString(), 'stop'], Gio.SubprocessFlags.STDOUT_PIPE); + shellProc.wait_async(null, function (obj, result) { + let shellProcExited = true; + shellProc.wait_finish(result); +@@ -374,7 +374,7 @@ const TaskService = class TaskService { + // FIXME: Gio.Subprocess: due to only passing string vector is allowed, it's not possible to directly pass the + // input of the user to subprocess (why & how, if you can answer then please send msg to fh@infinicode.de) + // bypassing problem with own shell script +- let shellProc = Gio.Subprocess.new(['/bin/sh', EXTENSIONDIR + '/extra/modify.sh', taskID.toString(), params], Gio.SubprocessFlags.STDOUT_PIPE + Gio.SubprocessFlags.STDERR_MERGE); ++ let shellProc = Gio.Subprocess.new(['@shell@', EXTENSIONDIR + '/extra/modify.sh', taskID.toString(), params], Gio.SubprocessFlags.STDOUT_PIPE + Gio.SubprocessFlags.STDERR_MERGE); + + shellProc.wait_async(null, function (obj, result) { + let shellProcExited = true; +@@ -403,7 +403,7 @@ const TaskService = class TaskService { + // FIXME: Gio.Subprocess: due to only passing string vector is allowed, it's not possible to directly pass the + // input of the user to subprocess (why & how, if you can answer then please send msg to fh@infinicode.de) + // bypassing problem with own shell script +- let shellProc = Gio.Subprocess.new(['/bin/sh', EXTENSIONDIR + '/extra/create.sh', params], Gio.SubprocessFlags.STDOUT_PIPE + Gio.SubprocessFlags.STDERR_MERGE); ++ let shellProc = Gio.Subprocess.new(['@shell@', EXTENSIONDIR + '/extra/create.sh', params], Gio.SubprocessFlags.STDOUT_PIPE + Gio.SubprocessFlags.STDERR_MERGE); + + shellProc.wait_async(null, function (obj, result) { + let shellProcExited = true; +@@ -432,7 +432,7 @@ const TaskService = class TaskService { + let shellProc; + + try { +- shellProc = Gio.Subprocess.new(['task', 'sync'], Gio.SubprocessFlags.STDOUT_PIPE); ++ shellProc = Gio.Subprocess.new(['@task@', 'sync'], Gio.SubprocessFlags.STDOUT_PIPE); + } catch (err) { + onError(err); + return; diff --git a/nixpkgs/pkgs/desktops/gnome-3/extensions/tilingnome/default.nix b/nixpkgs/pkgs/desktops/gnome-3/extensions/tilingnome/default.nix new file mode 100644 index 000000000000..60ca1dcbef37 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/extensions/tilingnome/default.nix @@ -0,0 +1,34 @@ +{ stdenv, lib, fetchFromGitHub, glib, gnome3 }: + +stdenv.mkDerivation rec { + pname = "gnome-shell-extension-tilingnome-unstable"; + version = "unstable-2019-09-19"; + + src = fetchFromGitHub { + owner = "rliang"; + repo = "gnome-shell-extension-tilingnome"; + rev = "f401c20c9721d85e6b3e30d1e822a200db370407"; + sha256 = "1hq9g9bxqpzqrdj9zm0irld8r6q4w1m4b00jya7wsny8rzb1s0y2"; + }; + + nativeBuildInputs = [ glib ]; + + buildPhase = '' + glib-compile-schemas . + ''; + + installPhase = '' + mkdir -p $out/share/gnome-shell/extensions/${uuid} + cp -r * $out/share/gnome-shell/extensions/${uuid}/ + ''; + + uuid = "tilingnome@rliang.github.com"; + + meta = with stdenv.lib; { + description = "Tiling window management for GNOME Shell"; + license = licenses.gpl2; + maintainers = with maintainers; [ benley ]; + homepage = "https://github.com/rliang/gnome-shell-extension-tilingnome"; + platforms = gnome3.gnome-shell.meta.platforms; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/extensions/timepp/default.nix b/nixpkgs/pkgs/desktops/gnome-3/extensions/timepp/default.nix new file mode 100644 index 000000000000..6ac9a4a0331e --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/extensions/timepp/default.nix @@ -0,0 +1,27 @@ +{ stdenv, fetchFromGitHub, gnome3 }: + +stdenv.mkDerivation rec { + pname = "gnome-shell-extension-timepp"; + version = "unstable-2019-03-30"; + + src = fetchFromGitHub { + owner = "zagortenay333"; + repo = "timepp__gnome"; + rev = "f90fb5573b37ac89fb57bf62e07d6d3bdb6a2c63"; + sha256 = "0p6rsbm6lf61vzly775qkwc2rcjjl38bkqdxnv4sccqmw2wwclnp"; + }; + + uuid = "timepp@zagortenay333"; + installPhase = '' + mkdir -p $out/share/gnome-shell/extensions/${uuid} + cp -r . $out/share/gnome-shell/extensions/${uuid} + ''; + + meta = with stdenv.lib; { + description = "A todo.txt manager, time tracker, timer, stopwatch, pomodoro, and alarms gnome-shell extension."; + homepage = "https://github.com/zagortenay333/timepp__gnome"; + license = licenses.gpl3; + maintainers = with maintainers; [ svsdep ]; + broken = versionAtLeast gnome3.gnome-shell.version "3.32"; # Dosen't support 3.34 https://github.com/zagortenay333/timepp__gnome/issues/113 + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/extensions/topicons-plus/default.nix b/nixpkgs/pkgs/desktops/gnome-3/extensions/topicons-plus/default.nix new file mode 100644 index 000000000000..6a1c87abf93d --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/extensions/topicons-plus/default.nix @@ -0,0 +1,28 @@ +{ stdenv, fetchFromGitHub, glib, gnome3, gettext }: + +stdenv.mkDerivation rec { + pname = "gnome-shell-extension-topicons-plus"; + version = "22"; + + src = fetchFromGitHub { + owner = "phocean"; + repo = "TopIcons-plus"; + rev = "v${version}"; + sha256 = "196s1gdir52gbc444pzrb5l7gn5xr5vqk5ajqaiqryqlmp3i8vil"; + }; + + buildInputs = [ glib ]; + + nativeBuildInputs = [ gettext ]; + + makeFlags = [ "INSTALL_PATH=$(out)/share/gnome-shell/extensions" ]; + + meta = with stdenv.lib; { + description = "Brings all icons back to the top panel, so that it's easier to keep track of apps running in the backround"; + license = licenses.gpl2; + maintainers = with maintainers; [ eperuffo ]; + homepage = "https://github.com/phocean/TopIcons-plus"; + # Unmaintained and no longer working with GNOME Shell 3.34+ + broken = stdenv.lib.versionAtLeast gnome3.gnome-shell.version "3.32"; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/extensions/window-corner-preview/default.nix b/nixpkgs/pkgs/desktops/gnome-3/extensions/window-corner-preview/default.nix new file mode 100644 index 000000000000..44402fc6e135 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/extensions/window-corner-preview/default.nix @@ -0,0 +1,29 @@ +{ stdenv, fetchFromGitHub, gnome3 }: + +stdenv.mkDerivation rec { + pname = "gnome-shell-extension-window-corner-preview"; + version = "unstable-2019-04-03"; + + src = fetchFromGitHub { + owner = "medenagan"; + repo = "window-corner-preview"; + rev = "a95bb1389d94474efab7509aac592fb58fff6006"; + sha256 = "03v18j9l0fb64xrg3swf1vcgl0kpgwjlp8ddn068bpvghrsvgfah"; + }; + + dontBuild = true; + + uuid = "window-corner-preview@fabiomereu.it"; + installPhase = '' + mkdir -p $out/share/gnome-shell/extensions + cp -r ${uuid} $out/share/gnome-shell/extensions + ''; + + meta = with stdenv.lib; { + description = "GNOME Shell extension showing a video preview on the corner of the screen"; + license = licenses.mit; + maintainers = with maintainers; [ jtojnar ]; + homepage = "https://github.com/medenagan/window-corner-preview"; + broken = stdenv.lib.versionAtLeast gnome3.gnome-shell.version "3.32"; # Doesn't support 3.34 + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/extensions/workspace-matrix/default.nix b/nixpkgs/pkgs/desktops/gnome-3/extensions/workspace-matrix/default.nix new file mode 100644 index 000000000000..adcaf3126f38 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/extensions/workspace-matrix/default.nix @@ -0,0 +1,34 @@ +{ stdenv, fetchFromGitHub, findutils, glib }: + +stdenv.mkDerivation rec { + pname = "gnome-shell-extension-workspace-matrix"; + version = "4.0.0"; + + src = fetchFromGitHub { + owner = "mzur"; + repo = "gnome-shell-wsmatrix"; + rev = "v${version}"; + sha256 = "LTDkKSKvReJxBzAERE+vV+uJBNZw6UyhiB7kN48BZCo="; + }; + + uuid = "wsmatrix@martin.zurowietz.de"; + + nativeBuildInputs = [ + findutils + glib + ]; + + buildFlags = "schemas"; + + installPhase = '' + mkdir -p $out/share/gnome-shell/extensions + cp -r ${uuid} $out/share/gnome-shell/extensions + ''; + + meta = with stdenv.lib; { + description = "Arrange workspaces in a two dimensional grid with workspace thumbnails"; + license = licenses.gpl3Plus; + maintainers = with maintainers; [ chkno ]; + homepage = "https://github.com/mzur/gnome-shell-wsmatrix"; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/find-latest-version.py b/nixpkgs/pkgs/desktops/gnome-3/find-latest-version.py new file mode 100644 index 000000000000..b0359f799699 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/find-latest-version.py @@ -0,0 +1,60 @@ +import argparse +import json +import requests +import sys + +def version_to_list(version): + return list(map(int, version.split('.'))) + +def odd_unstable(version_str, selected): + version = version_to_list(version_str) + if len(version) < 2: + return True + + even = version[1] % 2 == 0 + prerelease = (version[1] >= 90 and version[1] < 100) or (version[1] >= 900 and version[1] < 1000) + stable = even and not prerelease + if selected == 'stable': + return stable + else: + return True + +def no_policy(version, selected): + return True + +version_policies = { + 'odd-unstable': odd_unstable, + 'none': no_policy, +} + +def make_version_policy(version_predicate, selected): + return lambda version: version_predicate(version, selected) + +parser = argparse.ArgumentParser(description='Find latest version for a GNOME package by crawling their release server.') +parser.add_argument('package-name', help='Name of the directory in https://ftp.gnome.org/pub/GNOME/sources/ containing the package.') +parser.add_argument('version-policy', help='Policy determining which versions are considered stable. For most GNOME packages, odd minor versions are unstable but there are exceptions.', choices=version_policies.keys(), nargs='?', default='odd-unstable') +parser.add_argument('requested-release', help='Most of the time, we will want to update to stable version but sometimes it is useful to test.', choices=['stable', 'unstable'], nargs='?', default='stable') + + +if __name__ == '__main__': + args = parser.parse_args() + + package_name = getattr(args, 'package-name') + requested_release = getattr(args, 'requested-release') + version_predicate = version_policies[getattr(args, 'version-policy')] + version_policy = make_version_policy(version_predicate, requested_release) + + # The structure of cache.json: https://gitlab.gnome.org/Infrastructure/sysadmin-bin/blob/master/ftpadmin#L762 + cache = json.loads(requests.get('https://ftp.gnome.org/pub/GNOME/sources/{}/cache.json'.format(package_name)).text) + if type(cache) != list or cache[0] != 4: + print('Unknown format of cache.json file.', file=sys.stderr) + sys.exit(1) + + versions = cache[2][package_name] + versions = sorted(filter(version_policy, versions), key=version_to_list) + + if len(versions) == 0: + print('No versions matched.', file=sys.stderr) + sys.exit(1) + + print(versions[-1]) diff --git a/nixpkgs/pkgs/desktops/gnome-3/games/aisleriot/default.nix b/nixpkgs/pkgs/desktops/gnome-3/games/aisleriot/default.nix new file mode 100644 index 000000000000..e4de15c79b29 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/games/aisleriot/default.nix @@ -0,0 +1,36 @@ +{ stdenv, fetchurl, pkgconfig, gnome3, intltool, itstool, gtk3 +, wrapGAppsHook, librsvg, libxml2, desktop-file-utils +, guile_2_0, libcanberra-gtk3 }: + +stdenv.mkDerivation rec { + pname = "aisleriot"; + version = "3.22.9"; + + src = fetchurl { + url = "mirror://gnome/sources/${pname}/${stdenv.lib.versions.majorMinor version}/${pname}-${version}.tar.xz"; + sha256 = "0yzdh9cw5cjjgvfh75bihl968czlgfmpmn1z0fdk88sgvpjgzwji"; + }; + + configureFlags = [ + "--with-card-theme-formats=svg" + "--with-platform=gtk-only" # until they remove GConf + ]; + + nativeBuildInputs = [ pkgconfig intltool itstool wrapGAppsHook libxml2 desktop-file-utils ]; + buildInputs = [ gtk3 librsvg guile_2_0 libcanberra-gtk3 ]; + + passthru = { + updateScript = gnome3.updateScript { + packageName = pname; + attrPath = "gnome3.${pname}"; + }; + }; + + meta = with stdenv.lib; { + homepage = "https://wiki.gnome.org/Apps/Aisleriot"; + description = "A collection of patience games written in guile scheme"; + maintainers = teams.gnome.members; + license = licenses.gpl3Plus; + platforms = platforms.linux; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/games/atomix/default.nix b/nixpkgs/pkgs/desktops/gnome-3/games/atomix/default.nix new file mode 100644 index 000000000000..28cc020b2d80 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/games/atomix/default.nix @@ -0,0 +1,37 @@ +{ stdenv, fetchurl, meson, ninja, pkgconfig, wrapGAppsHook, python3 +, gettext, gnome3, glib, gtk3, libgnome-games-support, gdk-pixbuf }: + +let + pname = "atomix"; + version = "3.34.0"; +in stdenv.mkDerivation rec { + name = "${pname}-${version}"; + + src = fetchurl { + url = "mirror://gnome/sources/${pname}/${stdenv.lib.versions.majorMinor version}/${name}.tar.xz"; + sha256 = "0h909a4mccf160hi0aimyicqhq2b0gk1dmqp7qwf87qghfrw6m00"; + }; + + nativeBuildInputs = [ meson ninja pkgconfig gettext wrapGAppsHook python3 ]; + buildInputs = [ glib gtk3 gdk-pixbuf libgnome-games-support gnome3.adwaita-icon-theme ]; + + postPatch = '' + chmod +x meson_post_install.py + patchShebangs meson_post_install.py + ''; + + passthru = { + updateScript = gnome3.updateScript { + packageName = pname; + attrPath = "gnome3.${pname}"; + }; + }; + + meta = with stdenv.lib; { + description = "Puzzle game where you move atoms to build a molecule"; + homepage = "https://wiki.gnome.org/Apps/Atomix"; + license = licenses.gpl2Plus; + maintainers = teams.gnome.members; + platforms = platforms.linux; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/games/five-or-more/default.nix b/nixpkgs/pkgs/desktops/gnome-3/games/five-or-more/default.nix new file mode 100644 index 000000000000..ca69395eb235 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/games/five-or-more/default.nix @@ -0,0 +1,40 @@ +{ stdenv, fetchurl, meson, ninja, pkgconfig, gnome3, gtk3, wrapGAppsHook +, librsvg, libgnome-games-support, gettext, itstool, libxml2, python3, vala }: + +stdenv.mkDerivation rec { + pname = "five-or-more"; + version = "3.32.2"; + + src = fetchurl { + url = "mirror://gnome/sources/five-or-more/${stdenv.lib.versions.majorMinor version}/${pname}-${version}.tar.xz"; + sha256 = "19pf8wzbf3ciqf2k4bj9sddvyhckfd62x86pnqr6s8h4vn9jc6ii"; + }; + + nativeBuildInputs = [ + meson ninja pkgconfig gettext itstool libxml2 python3 wrapGAppsHook + vala + ]; + buildInputs = [ + gtk3 librsvg libgnome-games-support gnome3.adwaita-icon-theme + ]; + + postPatch = '' + chmod +x meson_post_install.py # patchShebangs requires executable file + patchShebangs meson_post_install.py + ''; + + passthru = { + updateScript = gnome3.updateScript { + packageName = "five-or-more"; + attrPath = "gnome3.five-or-more"; + }; + }; + + meta = with stdenv.lib; { + homepage = "https://wiki.gnome.org/Apps/Five_or_more"; + description = "Remove colored balls from the board by forming lines"; + maintainers = teams.gnome.members; + license = licenses.gpl2; + platforms = platforms.linux; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/games/four-in-a-row/default.nix b/nixpkgs/pkgs/desktops/gnome-3/games/four-in-a-row/default.nix new file mode 100644 index 000000000000..0d73e3b3744b --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/games/four-in-a-row/default.nix @@ -0,0 +1,39 @@ +{ stdenv, fetchurl, pkgconfig, gnome3, gtk3, wrapGAppsHook +, gettext, meson, gsound, librsvg, itstool, vala +, python3, ninja, desktop-file-utils }: + +stdenv.mkDerivation rec { + pname = "four-in-a-row"; + version = "3.36.0"; + + src = fetchurl { + url = "mirror://gnome/sources/four-in-a-row/${stdenv.lib.versions.majorMinor version}/${pname}-${version}.tar.xz"; + sha256 = "1bl63npcbr5ymka2y06wps612qynxa4hsqlzn7bvwpz2v53pai1z"; + }; + + nativeBuildInputs = [ + pkgconfig wrapGAppsHook gettext meson itstool vala + ninja python3 desktop-file-utils + ]; + buildInputs = [ gtk3 gsound librsvg gnome3.adwaita-icon-theme ]; + + postPatch = '' + chmod +x build-aux/meson_post_install.py + patchShebangs build-aux/meson_post_install.py + ''; + + passthru = { + updateScript = gnome3.updateScript { + packageName = "four-in-a-row"; + attrPath = "gnome3.four-in-a-row"; + }; + }; + + meta = with stdenv.lib; { + homepage = "https://wiki.gnome.org/Apps/Four-in-a-row"; + description = "Make lines of the same color to win"; + maintainers = teams.gnome.members; + license = licenses.gpl2; + platforms = platforms.linux; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/games/gnome-chess/default.nix b/nixpkgs/pkgs/desktops/gnome-3/games/gnome-chess/default.nix new file mode 100644 index 000000000000..21348370579d --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/games/gnome-chess/default.nix @@ -0,0 +1,35 @@ +{ stdenv, fetchurl, meson, ninja, vala, pkgconfig, wrapGAppsHook, gobject-introspection +, gettext, itstool, libxml2, python3, gnome3, glib, gtk3, librsvg }: + +stdenv.mkDerivation rec { + pname = "gnome-chess"; + version = "3.36.0"; + + src = fetchurl { + url = "mirror://gnome/sources/gnome-chess/${stdenv.lib.versions.majorMinor version}/${pname}-${version}.tar.xz"; + sha256 = "1a9fgi749gy1f60vbcyrqqkab9vqs42hji70q73k1xx8rv0agmg0"; + }; + + nativeBuildInputs = [ meson ninja vala pkgconfig gettext itstool libxml2 python3 wrapGAppsHook gobject-introspection ]; + buildInputs = [ glib gtk3 librsvg gnome3.adwaita-icon-theme ]; + + postPatch = '' + chmod +x meson_post_install.py + patchShebangs meson_post_install.py + ''; + + passthru = { + updateScript = gnome3.updateScript { + packageName = "gnome-chess"; + attrPath = "gnome3.gnome-chess"; + }; + }; + + meta = with stdenv.lib; { + homepage = "https://wiki.gnome.org/Apps/Chess"; + description = "Play the classic two-player boardgame of chess"; + maintainers = teams.gnome.members; + license = licenses.gpl2; + platforms = platforms.linux; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/games/gnome-klotski/default.nix b/nixpkgs/pkgs/desktops/gnome-3/games/gnome-klotski/default.nix new file mode 100644 index 000000000000..372c12022deb --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/games/gnome-klotski/default.nix @@ -0,0 +1,43 @@ +{ stdenv, fetchurl, pkgconfig, vala, gnome3, gtk3, wrapGAppsHook, appstream-glib, desktop-file-utils +, glib, librsvg, libxml2, gettext, itstool, libgee, libgnome-games-support +, meson, ninja, python3 +}: + +let + pname = "gnome-klotski"; + version = "3.36.0"; +in stdenv.mkDerivation rec { + name = "${pname}-${version}"; + + src = fetchurl { + url = "mirror://gnome/sources/${pname}/${stdenv.lib.versions.majorMinor version}/${name}.tar.xz"; + sha256 = "06gsg3s8hyhhsk11f1ld2anzv1czg1429483gbv9lr2p7fnq7pyy"; + }; + + nativeBuildInputs = [ + pkgconfig vala meson ninja python3 wrapGAppsHook + gettext itstool libxml2 appstream-glib desktop-file-utils + gnome3.adwaita-icon-theme + ]; + buildInputs = [ glib gtk3 librsvg libgee libgnome-games-support ]; + + postPatch = '' + chmod +x build-aux/meson_post_install.py + patchShebangs build-aux/meson_post_install.py + ''; + + passthru = { + updateScript = gnome3.updateScript { + packageName = pname; + attrPath = "gnome3.${pname}"; + }; + }; + + meta = with stdenv.lib; { + homepage = "https://wiki.gnome.org/Apps/Klotski"; + description = "Slide blocks to solve the puzzle"; + maintainers = teams.gnome.members; + license = licenses.gpl2; + platforms = platforms.linux; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/games/gnome-mahjongg/default.nix b/nixpkgs/pkgs/desktops/gnome-3/games/gnome-mahjongg/default.nix new file mode 100644 index 000000000000..701008f0c36d --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/games/gnome-mahjongg/default.nix @@ -0,0 +1,41 @@ +{ stdenv, fetchurl, pkgconfig, gnome3, gtk3, wrapGAppsHook +, librsvg, gettext, itstool, libxml2 +, meson, ninja, python3, vala, desktop-file-utils +}: + +stdenv.mkDerivation rec { + pname = "gnome-mahjongg"; + version = "3.36.1"; + + src = fetchurl { + url = "mirror://gnome/sources/gnome-mahjongg/${stdenv.lib.versions.majorMinor version}/${pname}-${version}.tar.xz"; + sha256 = "1a5h55amr0pab36y2iqm6ynv6mmb8al1b92rfk18wzfcfz7mhxzd"; + }; + + passthru = { + updateScript = gnome3.updateScript { packageName = "gnome-mahjongg"; attrPath = "gnome3.gnome-mahjongg"; }; + }; + + nativeBuildInputs = [ + meson ninja vala python3 desktop-file-utils + pkgconfig gnome3.adwaita-icon-theme + libxml2 itstool gettext wrapGAppsHook + ]; + buildInputs = [ + gtk3 librsvg + ]; + + postPatch = '' + chmod +x data/meson_post_install.py + patchShebangs data/meson_post_install.py + ''; + + + meta = with stdenv.lib; { + homepage = "https://wiki.gnome.org/Apps/Mahjongg"; + description = "Disassemble a pile of tiles by removing matching pairs"; + maintainers = teams.gnome.members; + license = licenses.gpl2; + platforms = platforms.linux; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/games/gnome-mines/default.nix b/nixpkgs/pkgs/desktops/gnome-3/games/gnome-mines/default.nix new file mode 100644 index 000000000000..f49634c6ada0 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/games/gnome-mines/default.nix @@ -0,0 +1,39 @@ +{ stdenv, fetchurl, meson, ninja, vala, gobject-introspection, pkgconfig, gnome3, gtk3, wrapGAppsHook +, librsvg, gettext, itstool, python3, libxml2, libgnome-games-support, libgee, desktop-file-utils }: + +stdenv.mkDerivation rec { + pname = "gnome-mines"; + version = "3.36.0"; + + src = fetchurl { + url = "mirror://gnome/sources/gnome-mines/${stdenv.lib.versions.majorMinor version}/${pname}-${version}.tar.xz"; + sha256 = "0m53ymxbgr3rb3yv13fzjwqh6shsfr51abkm47rchsy2jryqkzja"; + }; + + # gobject-introspection for finding vapi files + nativeBuildInputs = [ + meson ninja vala gobject-introspection pkgconfig gettext itstool python3 + libxml2 wrapGAppsHook desktop-file-utils + ]; + buildInputs = [ gtk3 librsvg gnome3.adwaita-icon-theme libgnome-games-support libgee ]; + + postPatch = '' + chmod +x build-aux/meson_post_install.py + patchShebangs build-aux/meson_post_install.py + ''; + + passthru = { + updateScript = gnome3.updateScript { + packageName = "gnome-mines"; + attrPath = "gnome3.gnome-mines"; + }; + }; + + meta = with stdenv.lib; { + homepage = "https://wiki.gnome.org/Apps/Mines"; + description = "Clear hidden mines from a minefield"; + maintainers = teams.gnome.members; + license = licenses.gpl3; + platforms = platforms.linux; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/games/gnome-nibbles/default.nix b/nixpkgs/pkgs/desktops/gnome-3/games/gnome-nibbles/default.nix new file mode 100644 index 000000000000..9dcc8744d2e2 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/games/gnome-nibbles/default.nix @@ -0,0 +1,39 @@ +{ stdenv, fetchurl, pkgconfig, gnome3, gtk3, wrapGAppsHook +, librsvg, gsound, clutter-gtk, gettext, itstool, vala, python3 +, libxml2, libgee, libgnome-games-support, meson, ninja +, desktop-file-utils, hicolor-icon-theme}: + +stdenv.mkDerivation rec { + pname = "gnome-nibbles"; + version = "3.36.0"; + + src = fetchurl { + url = "mirror://gnome/sources/gnome-nibbles/${stdenv.lib.versions.majorMinor version}/${pname}-${version}.tar.xz"; + sha256 = "01vzcjys2x95wnanwq25x0a7x6cc4j6g8gk69c5yc9ild48rr9c1"; + }; + + nativeBuildInputs = [ + meson ninja vala python3 + pkgconfig wrapGAppsHook gettext itstool libxml2 + desktop-file-utils hicolor-icon-theme + ]; + buildInputs = [ + gtk3 librsvg gsound clutter-gtk gnome3.adwaita-icon-theme + libgee libgnome-games-support + ]; + + passthru = { + updateScript = gnome3.updateScript { + packageName = "gnome-nibbles"; + attrPath = "gnome3.gnome-nibbles"; + }; + }; + + meta = with stdenv.lib; { + description = "Guide a worm around a maze"; + homepage = "https://wiki.gnome.org/Apps/Nibbles"; + license = licenses.gpl2; + maintainers = teams.gnome.members; + platforms = platforms.linux; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/games/gnome-robots/default.nix b/nixpkgs/pkgs/desktops/gnome-3/games/gnome-robots/default.nix new file mode 100644 index 000000000000..2ba6d4e7044c --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/games/gnome-robots/default.nix @@ -0,0 +1,38 @@ +{ stdenv, fetchurl, pkgconfig, gnome3, gtk3, wrapGAppsHook +, librsvg, gsound, gettext, itstool, libxml2, libgnome-games-support +, libgee, meson, ninja, python3, desktop-file-utils, adwaita-icon-theme }: + +stdenv.mkDerivation rec { + pname = "gnome-robots"; + version = "3.36.1"; + + src = fetchurl { + url = "mirror://gnome/sources/gnome-robots/${stdenv.lib.versions.majorMinor version}/${pname}-${version}.tar.xz"; + sha256 = "0qmdwrl70ccs3blgwmpcf3sg9k8mcvsl1dr1gds4ba3fq9ca8ipb"; + }; + + passthru = { + updateScript = gnome3.updateScript { packageName = "gnome-robots"; attrPath = "gnome3.gnome-robots"; }; + }; + + nativeBuildInputs = [ + pkgconfig meson ninja python3 + libxml2 wrapGAppsHook gettext itstool desktop-file-utils + ]; + buildInputs = [ + gtk3 librsvg gsound libgnome-games-support libgee adwaita-icon-theme + ]; + + postPatch = '' + chmod +x build-aux/meson_post_install.py + patchShebangs build-aux/meson_post_install.py + ''; + + meta = with stdenv.lib; { + homepage = "https://wiki.gnome.org/Apps/Robots"; + description = "Avoid the robots and make them crash into each other"; + maintainers = teams.gnome.members; + license = licenses.gpl2; + platforms = platforms.linux; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/games/gnome-sudoku/default.nix b/nixpkgs/pkgs/desktops/gnome-3/games/gnome-sudoku/default.nix new file mode 100644 index 000000000000..0a84e1065f3a --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/games/gnome-sudoku/default.nix @@ -0,0 +1,35 @@ +{ stdenv, fetchurl, meson, ninja, vala, pkgconfig, gobject-introspection, gettext, gtk3, gnome3, wrapGAppsHook +, libgee, json-glib, qqwing, itstool, libxml2, python3, desktop-file-utils }: + +stdenv.mkDerivation rec { + pname = "gnome-sudoku"; + version = "3.36.0"; + + src = fetchurl { + url = "mirror://gnome/sources/gnome-sudoku/${stdenv.lib.versions.majorMinor version}/${pname}-${version}.tar.xz"; + sha256 = "17a1r2jk5yygrxil1dycmamxyvyi64mr29mbyfgcx5hm2fylxxwm"; + }; + + nativeBuildInputs = [ meson ninja vala pkgconfig gobject-introspection gettext itstool libxml2 python3 desktop-file-utils wrapGAppsHook ]; + buildInputs = [ gtk3 libgee json-glib qqwing ]; + + postPatch = '' + chmod +x build-aux/post_install.py + patchShebangs build-aux/post_install.py + ''; + + passthru = { + updateScript = gnome3.updateScript { + packageName = "gnome-sudoku"; + attrPath = "gnome3.gnome-sudoku"; + }; + }; + + meta = with stdenv.lib; { + homepage = "https://wiki.gnome.org/Apps/Sudoku"; + description = "Test your logic skills in this number grid puzzle"; + maintainers = teams.gnome.members; + license = licenses.gpl2; + platforms = platforms.linux; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/games/gnome-taquin/default.nix b/nixpkgs/pkgs/desktops/gnome-3/games/gnome-taquin/default.nix new file mode 100644 index 000000000000..f50969eb52e4 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/games/gnome-taquin/default.nix @@ -0,0 +1,35 @@ +{ stdenv, fetchurl, pkgconfig, gnome3, gtk3, wrapGAppsHook +, librsvg, gsound, gettext, itstool, libxml2 +, meson, ninja, vala, python3, desktop-file-utils +}: + +stdenv.mkDerivation rec { + pname = "gnome-taquin"; + version = "3.36.0"; + + src = fetchurl { + url = "mirror://gnome/sources/gnome-taquin/${stdenv.lib.versions.majorMinor version}/${pname}-${version}.tar.xz"; + sha256 = "16ss2d8s6glb3k0wnb5ihmbqvk9i1yi18wv9hzgxfyhs1rvk496f"; + }; + + passthru = { + updateScript = gnome3.updateScript { packageName = "gnome-taquin"; attrPath = "gnome3.gnome-taquin"; }; + }; + + nativeBuildInputs = [ + pkgconfig wrapGAppsHook meson ninja python3 + gettext itstool libxml2 vala desktop-file-utils + ]; + buildInputs = [ + gtk3 librsvg gsound + gnome3.adwaita-icon-theme + ]; + + meta = with stdenv.lib; { + homepage = "https://wiki.gnome.org/Apps/Taquin"; + description = "Move tiles so that they reach their places"; + maintainers = teams.gnome.members; + license = licenses.gpl3; + platforms = platforms.linux; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/games/gnome-tetravex/default.nix b/nixpkgs/pkgs/desktops/gnome-3/games/gnome-tetravex/default.nix new file mode 100644 index 000000000000..4fe68a4f8a74 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/games/gnome-tetravex/default.nix @@ -0,0 +1,39 @@ +{ stdenv, fetchurl, pkgconfig, gnome3, gtk3, wrapGAppsHook +, libxml2, gettext, itstool, meson, ninja, python3 +, vala, desktop-file-utils +}: + +stdenv.mkDerivation rec { + pname = "gnome-tetravex"; + version = "3.36.0"; + + src = fetchurl { + url = "mirror://gnome/sources/gnome-tetravex/${stdenv.lib.versions.majorMinor version}/${pname}-${version}.tar.xz"; + sha256 = "1xbd0flh77v3x0dh4dsfspykwb6rwvga7kqwn1fq7gk421mq6n52"; + }; + + passthru = { + updateScript = gnome3.updateScript { packageName = "gnome-tetravex"; attrPath = "gnome3.gnome-tetravex"; }; + }; + + nativeBuildInputs = [ + wrapGAppsHook itstool libxml2 gnome3.adwaita-icon-theme + pkgconfig gettext meson ninja python3 vala desktop-file-utils + ]; + buildInputs = [ + gtk3 + ]; + + postPatch = '' + chmod +x build-aux/meson_post_install.py + patchShebangs build-aux/meson_post_install.py + ''; + + meta = with stdenv.lib; { + homepage = "https://wiki.gnome.org/Apps/Tetravex"; + description = "Complete the puzzle by matching numbered tiles"; + maintainers = teams.gnome.members; + license = licenses.gpl2; + platforms = platforms.linux; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/games/hitori/default.nix b/nixpkgs/pkgs/desktops/gnome-3/games/hitori/default.nix new file mode 100644 index 000000000000..8d1c9e3dd65b --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/games/hitori/default.nix @@ -0,0 +1,66 @@ +{ stdenv +, fetchurl +, meson +, ninja +, pkgconfig +, gnome3 +, glib +, gtk3 +, cairo +, wrapGAppsHook +, libxml2 +, python3 +, gettext +, itstool +, desktop-file-utils +, adwaita-icon-theme +}: + +stdenv.mkDerivation rec { + pname = "hitori"; + version = "3.36.0"; + + src = fetchurl { + url = "mirror://gnome/sources/hitori/${stdenv.lib.versions.majorMinor version}/${pname}-${version}.tar.xz"; + sha256 = "0mq1jv8rbmvksnhbm1d25kcvcfr9lq58qipcacn7wa26xpx7cvs5"; + }; + + nativeBuildInputs = [ + meson + ninja + pkgconfig + gettext + itstool + desktop-file-utils + libxml2 + python3 + wrapGAppsHook + ]; + + buildInputs = [ + glib + gtk3 + cairo + adwaita-icon-theme + ]; + + postPatch = '' + chmod +x build-aux/meson_post_install.py + patchShebangs build-aux/meson_post_install.py + ''; + + passthru = { + updateScript = gnome3.updateScript { + packageName = pname; + attrPath = "gnome3.${pname}"; + }; + }; + + meta = with stdenv.lib; { + homepage = "https://wiki.gnome.org/Apps/Hitori"; + description = "GTK application to generate and let you play games of Hitori"; + maintainers = teams.gnome.members; + license = licenses.gpl2; + platforms = platforms.linux; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/games/iagno/default.nix b/nixpkgs/pkgs/desktops/gnome-3/games/iagno/default.nix new file mode 100644 index 000000000000..5db02c8dfa41 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/games/iagno/default.nix @@ -0,0 +1,37 @@ +{ stdenv, fetchurl, pkgconfig, gtk3, gnome3, gdk-pixbuf, librsvg, wrapGAppsHook +, itstool, gsound, libxml2 +, meson, ninja, python3, vala, desktop-file-utils +}: + +stdenv.mkDerivation rec { + pname = "iagno"; + version = "3.36.0"; + + src = fetchurl { + url = "mirror://gnome/sources/iagno/${stdenv.lib.versions.majorMinor version}/${pname}-${version}.tar.xz"; + sha256 = "0ysb021mf5sy1ywicys35rn5c9v355rffjrlhxmr3z6yplrljm5b"; + }; + + nativeBuildInputs = [ + meson ninja python3 vala desktop-file-utils + pkgconfig wrapGAppsHook itstool libxml2 + ]; + buildInputs = [ gtk3 gnome3.adwaita-icon-theme gdk-pixbuf librsvg gsound ]; + + enableParallelBuilding = true; + + passthru = { + updateScript = gnome3.updateScript { + packageName = "iagno"; + attrPath = "gnome3.iagno"; + }; + }; + + meta = with stdenv.lib; { + homepage = "https://wiki.gnome.org/Apps/Iagno"; + description = "Computer version of the game Reversi, more popularly called Othello"; + maintainers = teams.gnome.members; + license = licenses.gpl2; + platforms = platforms.linux; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/games/lightsoff/default.nix b/nixpkgs/pkgs/desktops/gnome-3/games/lightsoff/default.nix new file mode 100644 index 000000000000..fd44bbece996 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/games/lightsoff/default.nix @@ -0,0 +1,39 @@ +{ stdenv, fetchurl, vala, pkgconfig, gtk3, gnome3, gdk-pixbuf, librsvg, wrapGAppsHook +, gettext, itstool, clutter, clutter-gtk, libxml2, appstream-glib +, meson, ninja, python3 }: + +stdenv.mkDerivation rec { + pname = "lightsoff"; + version = "3.36.0"; + + src = fetchurl { + url = "mirror://gnome/sources/lightsoff/${stdenv.lib.versions.majorMinor version}/${pname}-${version}.tar.xz"; + sha256 = "0qvafpciqbqmpan9i8ans3lqs29v02zblz6k0hzj4p3qq4sch3a3"; + }; + + nativeBuildInputs = [ + vala pkgconfig wrapGAppsHook itstool gettext appstream-glib libxml2 + meson ninja python3 + ]; + buildInputs = [ gtk3 gnome3.adwaita-icon-theme gdk-pixbuf librsvg clutter clutter-gtk ]; + + postPatch = '' + chmod +x build-aux/meson_post_install.py + patchShebangs build-aux/meson_post_install.py + ''; + + passthru = { + updateScript = gnome3.updateScript { + packageName = "lightsoff"; + attrPath = "gnome3.lightsoff"; + }; + }; + + meta = with stdenv.lib; { + homepage = "https://wiki.gnome.org/Apps/Lightsoff"; + description = "Puzzle game, where the objective is to turn off all of the tiles on the board"; + maintainers = teams.gnome.members; + license = licenses.gpl2; + platforms = platforms.linux; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/games/quadrapassel/default.nix b/nixpkgs/pkgs/desktops/gnome-3/games/quadrapassel/default.nix new file mode 100644 index 000000000000..474ee5823a7f --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/games/quadrapassel/default.nix @@ -0,0 +1,40 @@ +{ stdenv, fetchurl, pkgconfig, gtk3, gnome3, gdk-pixbuf +, librsvg, gsound, libmanette +, gettext, itstool, libxml2, clutter, clutter-gtk, wrapGAppsHook +, meson, ninja, python3, vala, desktop-file-utils +}: + +stdenv.mkDerivation rec { + pname = "quadrapassel"; + version = "3.36.00"; + + src = fetchurl { + url = "mirror://gnome/sources/quadrapassel/${stdenv.lib.versions.majorMinor version}/${pname}-${version}.tar.xz"; + sha256 = "1xk9x1pp71armj47vxja7fsj6gs116kcjkd8xgwf8wi4zr4kgx7g"; + }; + + nativeBuildInputs = [ + meson ninja python3 vala desktop-file-utils + pkgconfig gnome3.adwaita-icon-theme + libxml2 itstool gettext wrapGAppsHook + ]; + buildInputs = [ + gtk3 gdk-pixbuf librsvg libmanette + gsound clutter libxml2 clutter-gtk + ]; + + passthru = { + updateScript = gnome3.updateScript { + packageName = pname; + attrPath = "gnome3.${pname}"; + }; + }; + + meta = with stdenv.lib; { + description = "Classic falling-block game, Tetris"; + homepage = "https://wiki.gnome.org/Apps/Quadrapassel"; + license = licenses.gpl2; + maintainers = teams.gnome.members; + platforms = platforms.linux; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/games/swell-foop/default.nix b/nixpkgs/pkgs/desktops/gnome-3/games/swell-foop/default.nix new file mode 100644 index 000000000000..4b12609d3f3d --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/games/swell-foop/default.nix @@ -0,0 +1,37 @@ +{ stdenv, fetchurl, meson, ninja, pkgconfig, vala, glib, gtk3, gnome3, desktop-file-utils +, clutter, clutter-gtk, gettext, itstool, libxml2, wrapGAppsHook, python3 }: + +let + pname = "swell-foop"; + version = "3.34.1"; +in stdenv.mkDerivation rec { + name = "${pname}-${version}"; + + src = fetchurl { + url = "mirror://gnome/sources/${pname}/${stdenv.lib.versions.majorMinor version}/${name}.tar.xz"; + sha256 = "1032psxm59nissi268bh3j964m4a0n0ah4dy1pf0ph27j3zvdik1"; + }; + + passthru = { + updateScript = gnome3.updateScript { + packageName = pname; + attrPath = "gnome3.${pname}"; + }; + }; + + nativeBuildInputs = [ meson ninja vala pkgconfig wrapGAppsHook python3 itstool gettext libxml2 desktop-file-utils ]; + buildInputs = [ glib gtk3 gnome3.adwaita-icon-theme clutter clutter-gtk ]; + + postPatch = '' + chmod +x meson_post_install.py # patchShebangs requires executable file + patchShebangs meson_post_install.py + ''; + + meta = with stdenv.lib; { + homepage = "https://wiki.gnome.org/Apps/Swell%20Foop"; + description = "Puzzle game, previously known as Same GNOME"; + maintainers = teams.gnome.members; + license = licenses.gpl2; + platforms = platforms.linux; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/games/tali/default.nix b/nixpkgs/pkgs/desktops/gnome-3/games/tali/default.nix new file mode 100644 index 000000000000..62df1cd1e3da --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/games/tali/default.nix @@ -0,0 +1,38 @@ +{ stdenv, fetchurl, pkgconfig, gtk3, gnome3, gdk-pixbuf +, librsvg, gettext, itstool, libxml2, wrapGAppsHook +, meson, ninja, python3, desktop-file-utils +}: + +stdenv.mkDerivation rec { + pname = "tali"; + version = "3.36.1"; + + src = fetchurl { + url = "mirror://gnome/sources/tali/${stdenv.lib.versions.majorMinor version}/${pname}-${version}.tar.xz"; + sha256 = "1klnxk49rr1m2lr4zj1wvfl0iaxzdh2k8ngrcmfmcq39vlxnn94y"; + }; + + passthru = { + updateScript = gnome3.updateScript { packageName = "tali"; attrPath = "gnome3.tali"; }; + }; + + nativeBuildInputs = [ + meson ninja python3 desktop-file-utils + pkgconfig gnome3.adwaita-icon-theme + libxml2 itstool gettext wrapGAppsHook + ]; + buildInputs = [ gtk3 gdk-pixbuf librsvg ]; + + postPatch = '' + chmod +x build-aux/meson_post_install.py + patchShebangs build-aux/meson_post_install.py + ''; + + meta = with stdenv.lib; { + homepage = "https://wiki.gnome.org/Apps/Tali"; + description = "Sort of poker with dice and less money"; + maintainers = teams.gnome.members; + license = licenses.gpl2; + platforms = platforms.linux; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/installer.nix b/nixpkgs/pkgs/desktops/gnome-3/installer.nix new file mode 100644 index 000000000000..4999e1f3343c --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/installer.nix @@ -0,0 +1,15 @@ +{ isoBaseName ? "nixos-graphical-gnome", system ? builtins.currentSystem +, extraModules ? [] }: + +let + + module = ../../../../nixos/modules/installer/cd-dvd/installation-cd-graphical-gnome.nix; + + config = (import ../../../../nixos/lib/eval-config.nix { + inherit system; + modules = [ module { isoImage.isoBaseName = isoBaseName; } ] ++ extraModules; + }).config; + +in + config.system.build.isoImage + diff --git a/nixpkgs/pkgs/desktops/gnome-3/misc/geary/default.nix b/nixpkgs/pkgs/desktops/gnome-3/misc/geary/default.nix new file mode 100644 index 000000000000..bbde1fa36793 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/misc/geary/default.nix @@ -0,0 +1,87 @@ +{ stdenv, fetchurl, pkgconfig, gtk3, vala, enchant2, wrapGAppsHook, meson, ninja +, desktop-file-utils, gnome-online-accounts, gsettings-desktop-schemas, adwaita-icon-theme +, libpeas, libsecret, gmime3, isocodes, libxml2, gettext, fetchpatch +, sqlite, gcr, json-glib, itstool, libgee, gnome3, webkitgtk, python3 +, xvfb_run, dbus, shared-mime-info, libunwind, folks, glib-networking +, gobject-introspection, gspell, appstream-glib, libytnef, libhandy }: + +stdenv.mkDerivation rec { + pname = "geary"; + version = "3.36.1"; + + src = fetchurl { + url = "mirror://gnome/sources/${pname}/${stdenv.lib.versions.majorMinor version}/${pname}-${version}.tar.xz"; + sha256 = "07rhmzznfa4asx5gbmvnfpybd5czy7xmzk75xrk4r1qcnr24ml03"; + }; + + nativeBuildInputs = [ + desktop-file-utils gettext itstool libxml2 meson ninja + pkgconfig vala wrapGAppsHook python3 appstream-glib + gobject-introspection + ]; + + buildInputs = [ + adwaita-icon-theme enchant2 gcr gmime3 gnome-online-accounts + gsettings-desktop-schemas gtk3 isocodes json-glib libpeas + libgee libsecret sqlite webkitgtk glib-networking + libunwind folks gspell libytnef libhandy + ]; + + checkInputs = [ xvfb_run dbus ]; + + mesonFlags = [ + "-Dcontractor=true" # install the contractor file (Pantheon specific) + ]; + + patches = [ + # Longer timeout for client test. + (fetchpatch { + url = "https://salsa.debian.org/gnome-team/geary/raw/04be1e058a2e65075dd8cf8843d469ee45a9e09a/debian/patches/Bump-client-test-timeout-to-300s.patch"; + sha256 = "1zvnq8bgla160531bjdra8hcg15mp8r1j1n53m1xfgm0ssnj5knx"; + }) + ]; + + # NOTE: Remove `build-auxyaml_to_json.py` when no longer needed, see: + # https://gitlab.gnome.org/GNOME/geary/commit/f7f72143e0f00ca5e0e6a798691805c53976ae31#0cc1139e3347f573ae1feee5b73dbc8a8a21fcfa + postPatch = '' + chmod +x build-aux/post_install.py build-aux/git_version.py + + patchShebangs build-aux/post_install.py build-aux/git_version.py + + chmod +x build-aux/yaml_to_json.py + patchShebangs build-aux/yaml_to_json.py + + chmod +x desktop/geary-attach + ''; + + # FIXME: fix tests + doCheck = false; + + checkPhase = '' + NO_AT_BRIDGE=1 \ + XDG_DATA_DIRS=:$XDG_DATA_DIRS:${gsettings-desktop-schemas}/share/gsettings-schemas/${gsettings-desktop-schemas.name}:${shared-mime-info}/share \ + xvfb-run -s '-screen 0 800x600x24' dbus-run-session \ + --config-file=${dbus.daemon}/share/dbus-1/session.conf \ + meson test -v --no-stdsplit + ''; + + preFixup = '' + # Add geary to path for geary-attach + gappsWrapperArgs+=(--prefix PATH : "$out/bin") + ''; + + passthru = { + updateScript = gnome3.updateScript { + packageName = pname; + attrPath = "gnome3.${pname}"; + }; + }; + + meta = with stdenv.lib; { + homepage = "https://wiki.gnome.org/Apps/Geary"; + description = "Mail client for GNOME 3"; + maintainers = teams.gnome.members; + license = licenses.lgpl21Plus; + platforms = platforms.linux; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/misc/gitg/default.nix b/nixpkgs/pkgs/desktops/gnome-3/misc/gitg/default.nix new file mode 100644 index 000000000000..c4849f00d3b9 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/misc/gitg/default.nix @@ -0,0 +1,97 @@ +{ stdenv +, fetchurl +, fetchpatch +, vala +, gettext +, pkgconfig +, gtk3 +, glib +, json-glib +, wrapGAppsHook +, libpeas +, bash +, gobject-introspection +, libsoup +, gtksourceview +, gsettings-desktop-schemas +, adwaita-icon-theme +, gnome3 +, gtkspell3 +, shared-mime-info +, libgee +, libgit2-glib +, libsecret +, meson +, ninja +, python3 +, libdazzle +}: + +stdenv.mkDerivation rec { + pname = "gitg"; + version = "3.32.1"; + + src = fetchurl { + url = "mirror://gnome/sources/${pname}/${stdenv.lib.versions.majorMinor version}/${pname}-${version}.tar.xz"; + sha256 = "0npg4kqpwl992fgjd2cn3fh84aiwpdp9kd8z7rw2xaj2iazsm914"; + }; + + postPatch = '' + chmod +x meson_post_install.py + patchShebangs meson_post_install.py + + substituteInPlace tests/libgitg/test-commit.vala --replace "/bin/bash" "${bash}/bin/bash" + ''; + + doCheck = true; + + enableParallelBuilding = true; + + buildInputs = [ + adwaita-icon-theme + glib + gsettings-desktop-schemas + gtk3 + gtksourceview + gtkspell3 + json-glib + libdazzle + libgee + libgit2-glib + libpeas + libsecret + libsoup + ]; + + nativeBuildInputs = [ + gobject-introspection + gettext + meson + ninja + pkgconfig + python3 + vala + wrapGAppsHook + ]; + + preFixup = '' + gappsWrapperArgs+=( + # Thumbnailers + --prefix XDG_DATA_DIRS : "${shared-mime-info}/share" + ) + ''; + + passthru = { + updateScript = gnome3.updateScript { + packageName = pname; + }; + }; + + meta = with stdenv.lib; { + homepage = "https://wiki.gnome.org/Apps/Gitg"; + description = "GNOME GUI client to view git repositories"; + maintainers = with maintainers; [ domenkozar ]; + license = licenses.gpl2; + platforms = platforms.linux; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/misc/gnome-applets/default.nix b/nixpkgs/pkgs/desktops/gnome-3/misc/gnome-applets/default.nix new file mode 100644 index 000000000000..bc2afb519799 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/misc/gnome-applets/default.nix @@ -0,0 +1,84 @@ +{ stdenv +, fetchurl +, intltool +, itstool +, libxml2 +, libxslt +, pkgconfig +, gnome-panel +, gtk3 +, glib +, libwnck3 +, libgtop +, libnotify +, upower +, wirelesstools +, linuxPackages +, adwaita-icon-theme +, libgweather +, gucharmap +, tracker +, polkit +, gnome3 +}: + +let + pname = "gnome-applets"; + version = "3.36.2"; +in stdenv.mkDerivation rec { + name = "${pname}-${version}"; + + src = fetchurl { + url = "mirror://gnome/sources/${pname}/${stdenv.lib.versions.majorMinor version}/${name}.tar.xz"; + sha256 = "1hlblnajjkvlcd45lxfdxscx7j51nwyvri5jci6ylgpaxlwwm1s8"; + }; + + nativeBuildInputs = [ + intltool + itstool + pkgconfig + libxml2 + libxslt + ]; + + buildInputs = [ + gnome-panel + gtk3 + glib + libxml2 + libwnck3 + libgtop + libnotify + upower + adwaita-icon-theme + libgweather + gucharmap + tracker + polkit + wirelesstools + linuxPackages.cpupower + ]; + + enableParallelBuilding = true; + + doCheck = true; + + configureFlags = [ + "--with-libpanel-applet-dir=${placeholder "out"}/share/gnome-panel/applets" + ]; + + passthru = { + updateScript = gnome3.updateScript { + packageName = pname; + attrPath = "gnome3.${pname}"; + }; + }; + + meta = with stdenv.lib; { + description = "Applets for use with the GNOME panel"; + homepage = "https://wiki.gnome.org/Projects/GnomeApplets"; + license = licenses.gpl2Plus; + maintainers = teams.gnome.members; + platforms = platforms.linux; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/misc/gnome-autoar/default.nix b/nixpkgs/pkgs/desktops/gnome-3/misc/gnome-autoar/default.nix new file mode 100644 index 000000000000..baa43bdedb3e --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/misc/gnome-autoar/default.nix @@ -0,0 +1,48 @@ +{ stdenv +, fetchurl +, pkgconfig +, gnome3 +, gtk3 +, glib +, gobject-introspection +, libarchive +, vala +}: + +stdenv.mkDerivation rec { + pname = "gnome-autoar"; + version = "0.2.4"; + + outputs = [ "out" "dev" ]; + + src = fetchurl { + url = "mirror://gnome/sources/gnome-autoar/${stdenv.lib.versions.majorMinor version}/${pname}-${version}.tar.xz"; + sha256 = "0yk56ch46n3wfy633mq31kif9n7v06rlij4vqbsbn6l4z1vw6d0a"; + }; + + passthru = { + updateScript = gnome3.updateScript { packageName = "gnome-autoar"; attrPath = "gnome3.gnome-autoar"; }; + }; + + nativeBuildInputs = [ + gobject-introspection + pkgconfig + vala + ]; + + buildInputs = [ + gtk3 + ]; + + propagatedBuildInputs = [ + libarchive + glib + ]; + + meta = with stdenv.lib; { + platforms = platforms.linux; + maintainers = teams.gnome.members; + license = licenses.lgpl21; + description = "Library to integrate compressed files management with GNOME"; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/misc/gnome-flashback/default.nix b/nixpkgs/pkgs/desktops/gnome-3/misc/gnome-flashback/default.nix new file mode 100644 index 000000000000..1fea28d24de0 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/misc/gnome-flashback/default.nix @@ -0,0 +1,198 @@ +{ stdenv +, autoreconfHook +, fetchurl +, gettext +, glib +, gnome-bluetooth +, gnome-desktop +, gnome-panel +, gnome-session +, gnome3 +, gsettings-desktop-schemas +, gtk3 +, ibus +, libcanberra-gtk3 +, libpulseaudio +, libxkbfile +, libxml2 +, pkgconfig +, polkit +, gdm +, systemd +, upower +, pam +, wrapGAppsHook +, writeTextFile +, writeShellScriptBin +, xkeyboard_config +, runCommand +}: + +let + pname = "gnome-flashback"; + version = "3.36.1"; + + # From data/sessions/Makefile.am + requiredComponentsCommon = [ + "gnome-flashback" + "gnome-panel" + ]; + requiredComponentsGsd = [ + "org.gnome.SettingsDaemon.A11ySettings" + "org.gnome.SettingsDaemon.Color" + "org.gnome.SettingsDaemon.Datetime" + "org.gnome.SettingsDaemon.Housekeeping" + "org.gnome.SettingsDaemon.Keyboard" + "org.gnome.SettingsDaemon.MediaKeys" + "org.gnome.SettingsDaemon.Power" + "org.gnome.SettingsDaemon.PrintNotifications" + "org.gnome.SettingsDaemon.Rfkill" + "org.gnome.SettingsDaemon.ScreensaverProxy" + "org.gnome.SettingsDaemon.Sharing" + "org.gnome.SettingsDaemon.Smartcard" + "org.gnome.SettingsDaemon.Sound" + "org.gnome.SettingsDaemon.UsbProtection" + "org.gnome.SettingsDaemon.Wacom" + "org.gnome.SettingsDaemon.XSettings" + ]; + requiredComponents = wmName: "RequiredComponents=${stdenv.lib.concatStringsSep ";" ([wmName] ++ requiredComponentsCommon ++ requiredComponentsGsd)};"; + gnome-flashback = stdenv.mkDerivation rec { + name = "${pname}-${version}"; + + src = fetchurl { + url = "mirror://gnome/sources/${pname}/${stdenv.lib.versions.majorMinor version}/${name}.tar.xz"; + sha256 = "16gknn5mj29i8svlncarj92qi0swdlziggxpg9rryqslsy896a2x"; + }; + + # make .desktop Execs absolute + postPatch = '' + patch -p0 <<END_PATCH + +++ data/applications/gnome-flashback.desktop.in.in + @@ -4 +4 @@ + -Exec=gnome-flashback + +Exec=$out/bin/gnome-flashback + END_PATCH + ''; + + postInstall = '' + # Check that our expected RequiredComponents match the stock session files, but then don't install them. + # They can be installed using mkSessionForWm. + grep '${requiredComponents "metacity"}' $out/share/gnome-session/sessions/gnome-flashback-metacity.session || (echo "RequiredComponents have changed, please update gnome-flashback/default.nix."; false) + + rm -r $out/share/gnome-session + rm -r $out/share/xsessions + rm -r $out/libexec + ''; + + nativeBuildInputs = [ + autoreconfHook + gettext + libxml2 + pkgconfig + wrapGAppsHook + ]; + + buildInputs = [ + glib + gnome-bluetooth + gnome-desktop + gsettings-desktop-schemas + gtk3 + ibus + libcanberra-gtk3 + libpulseaudio + libxkbfile + polkit + gdm + gnome-panel + systemd + upower + pam + xkeyboard_config + ]; + + doCheck = true; + + enableParallelBuilding = true; + + PKG_CONFIG_LIBGNOME_PANEL_LAYOUTSDIR = "${placeholder "out"}/share/gnome-panel/layouts"; + PKG_CONFIG_LIBGNOME_PANEL_MODULESDIR = "${placeholder "out"}/lib/gnome-panel/modules"; + + passthru = { + updateScript = gnome3.updateScript { + packageName = pname; + attrPath = "gnome3.${pname}"; + }; + + mkSessionForWm = { wmName, wmLabel, wmCommand }: + let + wmApplication = writeTextFile { + name = "gnome-flashback-${wmName}-wm"; + destination = "/share/applications/${wmName}.desktop"; + text = '' + [Desktop Entry] + Type=Application + Encoding=UTF-8 + Name=${wmLabel} + Exec=${wmCommand} + NoDisplay=true + X-GNOME-WMName=${wmLabel} + X-GNOME-Autostart-Phase=WindowManager + X-GNOME-Provides=windowmanager + X-GNOME-Autostart-Notify=false + ''; + }; + + gnomeSession = writeTextFile { + name = "gnome-flashback-${wmName}-gnome-session"; + destination = "/share/gnome-session/sessions/gnome-flashback-${wmName}.session"; + text = '' + [GNOME Session] + Name=GNOME Flashback (${wmLabel}) + ${requiredComponents wmName} + ''; + }; + + executable = writeShellScriptBin "gnome-flashback-${wmName}" '' + if [ -z $XDG_CURRENT_DESKTOP ]; then + export XDG_CURRENT_DESKTOP="GNOME-Flashback:GNOME" + fi + + export XDG_DATA_DIRS=${wmApplication}/share:${gnomeSession}/share:${gnome-flashback}/share:${gnome-panel}/share:$XDG_DATA_DIRS + + exec ${gnome-session}/bin/gnome-session --session=gnome-flashback-${wmName} "$@" + ''; + + in writeTextFile { + name = "gnome-flashback-${wmName}-xsession"; + destination = "/share/xsessions/gnome-flashback-${wmName}.desktop"; + text = '' + [Desktop Entry] + Name=GNOME Flashback (${wmLabel}) + Comment=This session logs you into GNOME Flashback with ${wmLabel} + Exec=${executable}/bin/gnome-flashback-${wmName} + TryExec=${wmCommand} + Type=Application + DesktopNames=GNOME-Flashback;GNOME; + ''; + } // { + providedSessions = [ "gnome-flashback-${wmName}" ]; + }; + + mkSystemdTargetForWm = { wmName }: + runCommand "gnome-flashback-${wmName}.target" {} '' + mkdir -p $out/lib/systemd/user + cp "${gnome-flashback}/lib/systemd/user/gnome-session-x11@gnome-flashback-metacity.target" \ + "$out/lib/systemd/user/gnome-session-x11@gnome-flashback-${wmName}.target" + ''; + }; + + meta = with stdenv.lib; { + description = "GNOME 2.x-like session for GNOME 3"; + homepage = "https://wiki.gnome.org/Projects/GnomeFlashback"; + license = licenses.gpl2; + maintainers = teams.gnome.members; + platforms = platforms.linux; + }; + }; + in gnome-flashback diff --git a/nixpkgs/pkgs/desktops/gnome-3/misc/gnome-packagekit/default.nix b/nixpkgs/pkgs/desktops/gnome-3/misc/gnome-packagekit/default.nix new file mode 100644 index 000000000000..63a651258823 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/misc/gnome-packagekit/default.nix @@ -0,0 +1,37 @@ +{ stdenv, fetchurl, pkgconfig, meson, ninja, gettext, gnome3, packagekit, polkit +, gtk3, systemd, wrapGAppsHook, desktop-file-utils }: + +stdenv.mkDerivation rec { + pname = "gnome-packagekit"; + version = "3.32.0"; + + src = fetchurl { + url = "mirror://gnome/sources/gnome-packagekit/${stdenv.lib.versions.majorMinor version}/${pname}-${version}.tar.xz"; + sha256 = "08rhsisdvx7pnx3rrg5v7c09jbw4grglkdj979gwl4a31j24zjsd"; + }; + + nativeBuildInputs = [ + pkgconfig meson ninja gettext wrapGAppsHook desktop-file-utils + ]; + + buildInputs = [ gtk3 packagekit systemd polkit ]; + + postPatch = '' + patchShebangs meson_post_install.sh + ''; + + passthru = { + updateScript = gnome3.updateScript { + packageName = "gnome-packagekit"; + attrPath = "gnome3.gnome-packagekit"; + }; + }; + + meta = with stdenv.lib; { + homepage = "https://www.freedesktop.org/software/PackageKit/"; + platforms = platforms.linux; + maintainers = teams.gnome.members; + license = licenses.gpl2; + description = "Tools for installing software on the GNOME desktop using PackageKit"; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/misc/gnome-panel/default.nix b/nixpkgs/pkgs/desktops/gnome-3/misc/gnome-panel/default.nix new file mode 100644 index 000000000000..d390a5b27a28 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/misc/gnome-panel/default.nix @@ -0,0 +1,99 @@ +{ stdenv +, fetchurl +, autoreconfHook +, dconf +, evolution-data-server +, gdm +, gettext +, glib +, gnome-desktop +, gnome-menus +, gnome3 +, gtk3 +, itstool +, libgweather +, libsoup +, libwnck3 +, libxml2 +, pkgconfig +, polkit +, systemd +, wrapGAppsHook }: + +let + pname = "gnome-panel"; + version = "3.36.1"; +in stdenv.mkDerivation rec { + name = "${pname}-${version}"; + + outputs = [ "out" "dev" "man" ]; + + src = fetchurl { + url = "mirror://gnome/sources/${pname}/${stdenv.lib.versions.majorMinor version}/${name}.tar.xz"; + sha256 = "1lxba8syy9gb50zxdk13gr1f62dfphwbb7njg6p26x9rvlkbf88y"; + }; + + # make .desktop Exec absolute + postPatch = '' + patch -p0 <<END_PATCH + +++ gnome-panel/gnome-panel.desktop.in + @@ -7 +7 @@ + -Exec=gnome-panel + +Exec=$out/bin/gnome-panel + END_PATCH + ''; + + preFixup = '' + gappsWrapperArgs+=( + --prefix XDG_DATA_DIRS : "${gnome-menus}/share" + --prefix XDG_CONFIG_DIRS : "${gnome-menus}/etc/xdg" + ) + ''; + + nativeBuildInputs = [ + autoreconfHook + gettext + itstool + libxml2 + pkgconfig + wrapGAppsHook + ]; + + buildInputs = [ + dconf + evolution-data-server + gdm + glib + gnome-desktop + gnome-menus + gtk3 + libgweather + libsoup + libwnck3 + polkit + systemd + ]; + + configureFlags = [ + "--enable-eds" + ]; + + enableParallelBuilding = true; + + doCheck = true; + + passthru = { + updateScript = gnome3.updateScript { + packageName = pname; + attrPath = "gnome3.${pname}"; + }; + }; + + meta = with stdenv.lib; { + description = "Component of Gnome Flashback that provides panels and default applets for the desktop"; + homepage = "https://wiki.gnome.org/Projects/GnomePanel"; + license = licenses.gpl2Plus; + maintainers = teams.gnome.members; + platforms = platforms.linux; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/misc/gnome-screensaver/fix-dbus-service-dir.patch b/nixpkgs/pkgs/desktops/gnome-3/misc/gnome-screensaver/fix-dbus-service-dir.patch new file mode 100644 index 000000000000..81e037ee690d --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/misc/gnome-screensaver/fix-dbus-service-dir.patch @@ -0,0 +1,11 @@ +--- a/configure.ac 2019-01-20 20:28:01.309231507 +0100 ++++ b/configure.ac 2019-01-20 20:31:54.927978927 +0100 +@@ -137,7 +137,7 @@ + + # Find out where the session service file goes + # The sad sed hack is recomended by section 27.10 of the automake manual. +-DBUS_SESSION_SERVICE_DIR=`pkg-config --variable session_bus_services_dir dbus-1 | sed -e 's,/usr/share,${datarootdir},g'` ++DBUS_SESSION_SERVICE_DIR=`pkg-config --variable session_bus_services_dir dbus-1 --define-variable 'datadir=${datadir}'` + AC_SUBST(DBUS_SESSION_SERVICE_DIR) + + dnl --------------------------------------------------------------------------- \ No newline at end of file diff --git a/nixpkgs/pkgs/desktops/gnome-3/misc/gnome-tweaks/default.nix b/nixpkgs/pkgs/desktops/gnome-3/misc/gnome-tweaks/default.nix new file mode 100644 index 000000000000..0271992b6407 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/misc/gnome-tweaks/default.nix @@ -0,0 +1,54 @@ +{ stdenv, meson, ninja, gettext, fetchurl +, pkgconfig, gtk3, glib, libsoup, gsettings-desktop-schemas +, itstool, libxml2, python3Packages, libhandy +, gnome3, gdk-pixbuf, libnotify, gobject-introspection, wrapGAppsHook }: + +let + pname = "gnome-tweaks"; + version = "3.34.0"; +in stdenv.mkDerivation rec { + name = "${pname}-${version}"; + + src = fetchurl { + url = "mirror://gnome/sources/${pname}/${stdenv.lib.versions.majorMinor version}/${name}.tar.xz"; + sha256 = "0l2j42ba7v866iknygamnkiq7igh0fjvq92r93cslvvfnkx2ccq0"; + }; + + nativeBuildInputs = [ + meson ninja pkgconfig gettext itstool libxml2 wrapGAppsHook python3Packages.python + ]; + buildInputs = [ + gtk3 glib gsettings-desktop-schemas + gdk-pixbuf gnome3.adwaita-icon-theme + libnotify gnome3.gnome-shell python3Packages.pygobject3 + libsoup gnome3.gnome-settings-daemon gnome3.nautilus + gnome3.mutter gnome3.gnome-desktop gobject-introspection + gnome3.nautilus libhandy + # Makes it possible to select user themes through the `user-theme` extension + gnome3.gnome-shell-extensions + ]; + + postPatch = '' + patchShebangs meson-postinstall.py + ''; + + preFixup = '' + gappsWrapperArgs+=( + --prefix PYTHONPATH : "$out/${python3Packages.python.sitePackages}:$PYTHONPATH") + ''; + + passthru = { + updateScript = gnome3.updateScript { + packageName = pname; + attrPath = "gnome3.${pname}"; + }; + }; + + meta = with stdenv.lib; { + homepage = "https://wiki.gnome.org/action/show/Apps/GnomeTweakTool"; + description = "A tool to customize advanced GNOME 3 options"; + maintainers = teams.gnome.members; + license = licenses.gpl3; + platforms = platforms.linux; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/misc/gpaste/default.nix b/nixpkgs/pkgs/desktops/gnome-3/misc/gpaste/default.nix new file mode 100644 index 000000000000..b6a88e5864b4 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/misc/gpaste/default.nix @@ -0,0 +1,81 @@ +{ stdenv +, fetchFromGitHub +, fetchpatch +, appstream-glib +, clutter +, gjs +, glib +, gobject-introspection +, gtk3 +, meson +, mutter +, ninja +, pango +, pkgconfig +, vala +, wrapGAppsHook +}: + +stdenv.mkDerivation rec { + version = "3.36.3"; + pname = "gpaste"; + + src = fetchFromGitHub { + owner = "Keruspe"; + repo = "GPaste"; + rev = "v${version}"; + sha256 = "sR7/NdCaidP03xE64nqQc1M+xAIipOuKp5OWBJ4VN9w="; + }; + + patches = [ + ./fix-paths.patch + ]; + + # TODO: switch to substituteAll with placeholder + # https://github.com/NixOS/nix/issues/1846 + postPatch = '' + substituteInPlace src/gnome-shell/extension.js \ + --subst-var-by typelibPath "${placeholder "out"}/lib/girepository-1.0" + substituteInPlace src/gnome-shell/prefs.js \ + --subst-var-by typelibPath "${placeholder "out"}/lib/girepository-1.0" + substituteInPlace src/libgpaste/settings/gpaste-settings.c \ + --subst-var-by gschemasCompiled ${glib.makeSchemaPath (placeholder "out") "${pname}-${version}"} + ''; + + nativeBuildInputs = [ + appstream-glib + gobject-introspection + meson + ninja + pkgconfig + vala + wrapGAppsHook + ]; + + buildInputs = [ + clutter # required by mutter-clutter + gjs + glib + gtk3 + mutter + pango + ]; + + mesonFlags = [ + "-Dcontrol-center-keybindings-dir=${placeholder "out"}/share/gnome-control-center/keybindings" + "-Ddbus-services-dir=${placeholder "out"}/share/dbus-1/services" + "-Dsystemd-user-unit-dir=${placeholder "out"}/etc/systemd/user" + ]; + + postInstall = '' + ${glib.dev}/bin/glib-compile-schemas "$out/share/glib-2.0/schemas" + ''; + + meta = with stdenv.lib; { + homepage = "https://github.com/Keruspe/GPaste"; + description = "Clipboard management system with GNOME 3 integration"; + license = licenses.gpl3; + platforms = platforms.linux; + maintainers = teams.gnome.members; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/misc/gpaste/fix-paths.patch b/nixpkgs/pkgs/desktops/gnome-3/misc/gpaste/fix-paths.patch new file mode 100644 index 000000000000..c8a3fad2272b --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/misc/gpaste/fix-paths.patch @@ -0,0 +1,37 @@ +--- a/src/gnome-shell/extension.js ++++ b/src/gnome-shell/extension.js +@@ -6,6 +6,8 @@ + + const Config = imports.misc.config; + ++imports.gi.GIRepository.Repository.prepend_search_path('@typelibPath@'); ++ + imports.gi.versions.Clutter = Config.LIBMUTTER_API_VERSION; + imports.gi.versions.GLib = '2.0'; + imports.gi.versions.GPaste = '1.0'; +--- a/src/gnome-shell/prefs.js ++++ b/src/gnome-shell/prefs.js +@@ -6,6 +6,8 @@ + + const Gettext = imports.gettext; + ++imports.gi.GIRepository.Repository.prepend_search_path('@typelibPath@'); ++ + const { GPaste } = imports.gi; + + const ExtensionUtils = imports.misc.extensionUtils; +--- a/src/libgpaste/settings/gpaste-settings.c ++++ b/src/libgpaste/settings/gpaste-settings.c +@@ -1013,7 +1013,11 @@ + } + else + { +- return g_settings_new (G_PASTE_SETTINGS_NAME); ++ // library used by introspection requires schemas but we cannot set XDG_DATA_DIRS for the library ++ GSettingsSchemaSource *schema_source = g_settings_schema_source_new_from_directory ("@gschemasCompiled@", NULL, FALSE, NULL); ++ g_autoptr (GSettingsSchema) schema = g_settings_schema_source_lookup (schema_source, G_PASTE_SETTINGS_NAME, FALSE); ++ g_settings_schema_source_unref (schema_source); ++ return g_settings_new_full (schema, NULL, NULL); + } + } + diff --git a/nixpkgs/pkgs/desktops/gnome-3/misc/gtkhtml/default.nix b/nixpkgs/pkgs/desktops/gnome-3/misc/gtkhtml/default.nix new file mode 100644 index 000000000000..9550de32fbea --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/misc/gtkhtml/default.nix @@ -0,0 +1,27 @@ +{ stdenv, fetchurl, pkgconfig, gtk3, intltool +, gnome3, enchant, isocodes, gsettings-desktop-schemas }: + +stdenv.mkDerivation rec { + pname = "gtkhtml"; + version = "4.10.0"; + + src = fetchurl { + url = "mirror://gnome/sources/gtkhtml/${stdenv.lib.versions.majorMinor version}/${pname}-${version}.tar.xz"; + sha256 = "ca3b6424fb2c7ac5d9cb8fdafb69318fa2e825c9cf6ed17d1e38d9b29e5606c3"; + }; + + passthru = { + updateScript = gnome3.updateScript { packageName = "gtkhtml"; attrPath = "gnome3.gtkhtml"; }; + }; + + nativeBuildInputs = [ pkgconfig ]; + buildInputs = [ gtk3 intltool gnome3.adwaita-icon-theme + gsettings-desktop-schemas ]; + + propagatedBuildInputs = [ enchant isocodes ]; + + meta = with stdenv.lib; { + platforms = platforms.linux; + maintainers = teams.gnome.members; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/misc/libgnome-games-support/default.nix b/nixpkgs/pkgs/desktops/gnome-3/misc/libgnome-games-support/default.nix new file mode 100644 index 000000000000..1f9afefd2e48 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/misc/libgnome-games-support/default.nix @@ -0,0 +1,36 @@ +{ stdenv, fetchurl, pkgconfig, glib, gtk3, libgee, gettext, vala, gnome3 +, libintl, meson, ninja }: + +let + pname = "libgnome-games-support"; + version = "1.6.1"; +in stdenv.mkDerivation rec { + name = "${pname}-${version}"; + + src = fetchurl { + url = "mirror://gnome/sources/${pname}/${stdenv.lib.versions.majorMinor version}/${name}.tar.xz"; + sha256 = "1gq8p38k92lsr6dbav6pgmw0adnzzhcs06jqdkr37p145vv6ls7v"; + }; + + nativeBuildInputs = [ meson ninja pkgconfig gettext vala ]; + buildInputs = [ libintl ]; + propagatedBuildInputs = [ + # Required by libgnome-games-support-1.pc + glib gtk3 libgee + ]; + + passthru = { + updateScript = gnome3.updateScript { + packageName = pname; + attrPath = "gnome3.${pname}"; + }; + }; + + meta = with stdenv.lib; { + description = "Small library intended for internal use by GNOME Games, but it may be used by others"; + homepage = "https://wiki.gnome.org/Apps/Games"; + license = licenses.lgpl3; + maintainers = teams.gnome.members; + platforms = platforms.unix; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/misc/metacity/default.nix b/nixpkgs/pkgs/desktops/gnome-3/misc/metacity/default.nix new file mode 100644 index 000000000000..e62c6fe7fee3 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/misc/metacity/default.nix @@ -0,0 +1,70 @@ +{ stdenv +, fetchurl +, gettext +, glib +, gnome3 +, gsettings-desktop-schemas +, gtk3 +, libcanberra-gtk3 +, libgtop +, libstartup_notification +, libxml2 +, pkgconfig +, substituteAll +, wrapGAppsHook +, zenity }: + +let + pname = "metacity"; + version = "3.36.1"; +in stdenv.mkDerivation rec { + name = "${pname}-${version}"; + + src = fetchurl { + url = "mirror://gnome/sources/${pname}/${stdenv.lib.versions.majorMinor version}/${name}.tar.xz"; + sha256 = "08xkq5i6czvms0ygbj7ywzl70q1l0z44nfh6b43q8rmjwa9pdw0i"; + }; + + patches = [ + (substituteAll { + src = ./fix-paths.patch; + inherit zenity; + }) + ]; + + nativeBuildInputs = [ + gettext + libxml2 + pkgconfig + wrapGAppsHook + ]; + + buildInputs = [ + glib + gsettings-desktop-schemas + gtk3 + libcanberra-gtk3 + libgtop + libstartup_notification + zenity + ]; + + enableParallelBuilding = true; + + passthru = { + updateScript = gnome3.updateScript { + packageName = pname; + attrPath = "gnome3.${pname}"; + }; + }; + + doCheck = true; + + meta = with stdenv.lib; { + description = "Window manager used in Gnome Flashback"; + homepage = "https://wiki.gnome.org/Projects/Metacity"; + license = licenses.gpl2; + maintainers = teams.gnome.members; + platforms = platforms.linux; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/misc/metacity/fix-paths.patch b/nixpkgs/pkgs/desktops/gnome-3/misc/metacity/fix-paths.patch new file mode 100644 index 000000000000..ff3a244e67d9 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/misc/metacity/fix-paths.patch @@ -0,0 +1,11 @@ +--- a/src/core/util.c ++++ b/src/core/util.c +@@ -424,7 +424,7 @@ + g_slist_length (columns)*2 + + g_slist_length (entries))); + +- argvl[i++] = "zenity"; ++ argvl[i++] = "@zenity@/bin/zenity"; + argvl[i++] = type; + argvl[i++] = "--display"; + argvl[i++] = display; diff --git a/nixpkgs/pkgs/desktops/gnome-3/misc/nautilus-python/default.nix b/nixpkgs/pkgs/desktops/gnome-3/misc/nautilus-python/default.nix new file mode 100644 index 000000000000..e8c523277e18 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/misc/nautilus-python/default.nix @@ -0,0 +1,62 @@ +{ stdenv +, fetchurl +, pkgconfig +, which +, gtk-doc +, docbook_xsl +, docbook_xml_dtd_412 +, python3 +, ncurses +, nautilus +, gtk3 +, gnome3 +}: + +stdenv.mkDerivation rec { + pname = "nautilus-python"; + version = "1.2.3"; + + outputs = [ "out" "dev" "doc" ]; + + src = fetchurl { + url = "mirror://gnome/sources/${pname}/${stdenv.lib.versions.majorMinor version}/${pname}-${version}.tar.xz"; + sha256 = "161050sx3sdxqcpjkjcpf6wl4kx0jydihga7mcvrj9c2f8ly0g07"; + }; + + nativeBuildInputs = [ + pkgconfig + which + gtk-doc + docbook_xsl + docbook_xml_dtd_412 + ]; + + buildInputs = [ + python3 + ncurses # required by python3 + python3.pkgs.pygobject3 + nautilus + gtk3 # required by libnautilus-extension + ]; + + makeFlags = [ + "PYTHON_LIB_LOC=${python3}/lib" + ]; + + PKG_CONFIG_LIBNAUTILUS_EXTENSION_EXTENSIONDIR = "${placeholder "out"}/lib/nautilus/extensions-3.0"; + + passthru = { + updateScript = gnome3.updateScript { + packageName = pname; + attrPath = "gnome3.${pname}"; + }; + }; + + meta = with stdenv.lib; { + description = "Python bindings for the Nautilus Extension API"; + homepage = "https://wiki.gnome.org/Projects/NautilusPython"; + license = licenses.gpl2Plus; + maintainers = teams.gnome.members; + platforms = platforms.unix; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/misc/pomodoro/default.nix b/nixpkgs/pkgs/desktops/gnome-3/misc/pomodoro/default.nix new file mode 100644 index 000000000000..fce6b71c4c8e --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/misc/pomodoro/default.nix @@ -0,0 +1,73 @@ +{ stdenv +, fetchFromGitHub +, autoconf-archive +, appstream-glib +, pkgconfig +, wrapGAppsHook +, libcanberra +, gst_all_1 +, vala +, gtk3 +, gom +, sqlite +, libxml2 +, autoreconfHook +, glib +, gobject-introspection +, libpeas +, gnome-shell +, gsettings-desktop-schemas +, adwaita-icon-theme +, gettext +}: + +stdenv.mkDerivation rec { + pname = "gnome-shell-pomodoro"; + version = "0.16.0"; + + src = fetchFromGitHub { + owner = "codito"; + repo = "gnome-pomodoro"; + rev = version; + sha256 = "1bjsjkbms9irn7nkzi0hmgr5vwcgh9xzr5vw4sk2n711wj5d96bi"; + }; + + nativeBuildInputs = [ + appstream-glib + autoconf-archive + autoreconfHook + gettext + gobject-introspection + libxml2 + pkgconfig + vala + wrapGAppsHook + ]; + + buildInputs = [ + adwaita-icon-theme + glib + gnome-shell + gom + gsettings-desktop-schemas + gst_all_1.gst-plugins-base + gst_all_1.gst-plugins-good + gst_all_1.gstreamer + gtk3 + libcanberra + libpeas + sqlite + ]; + + meta = with stdenv.lib; { + homepage = "https://gnomepomodoro.org/"; + description = "Time management utility for GNOME based on the pomodoro technique"; + longDescription = '' + This GNOME utility helps to manage time according to Pomodoro Technique. + It intends to improve productivity and focus by taking short breaks. + ''; + maintainers = with maintainers; [ worldofpeace ]; + license = licenses.gpl3Plus; + platforms = platforms.linux; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/update.nix b/nixpkgs/pkgs/desktops/gnome-3/update.nix new file mode 100644 index 000000000000..f42b67239505 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/update.nix @@ -0,0 +1,16 @@ +{ stdenv, lib, writeScript, python3, common-updater-scripts }: +{ packageName, attrPath ? packageName, versionPolicy ? "odd-unstable" }: + +let + python = python3.withPackages (p: [ p.requests ]); + updateScript = writeScript "gnome-update-script" '' + #!${stdenv.shell} + set -o errexit + package_name="$1" + attr_path="$2" + version_policy="$3" + PATH=${lib.makeBinPath [ common-updater-scripts python ]} + latest_tag=$(python "${./find-latest-version.py}" "$package_name" "$version_policy" "stable") + update-source-version "$attr_path" "$latest_tag" + ''; +in [ updateScript packageName attrPath versionPolicy ] diff --git a/nixpkgs/pkgs/desktops/gnustep/back/default.nix b/nixpkgs/pkgs/desktops/gnustep/back/default.nix new file mode 100644 index 000000000000..54ea8dcf4875 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnustep/back/default.nix @@ -0,0 +1,24 @@ +{ gsmakeDerivation +, cairo +, fetchurl +, base, gui +, xlibsWrapper +, freetype +, pkgconfig +, libXmu +}: +let + version = "0.27.0"; +in +gsmakeDerivation { + name = "gnustep-back-${version}"; + src = fetchurl { + url = "ftp://ftp.gnustep.org/pub/gnustep/core/gnustep-back-${version}.tar.gz"; + sha256 = "0j400892ysxygh50i3918nn87vkxh15h892jwvphmkd34j8wdn9f"; + }; + nativeBuildInputs = [ pkgconfig ]; + buildInputs = [ cairo base gui freetype xlibsWrapper libXmu ]; + meta = { + description = "A generic backend for GNUstep"; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnustep/base/default.nix b/nixpkgs/pkgs/desktops/gnustep/base/default.nix new file mode 100644 index 000000000000..7017100565c6 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnustep/base/default.nix @@ -0,0 +1,41 @@ +{ aspell, audiofile +, gsmakeDerivation +, cups +, fetchurl +, gmp, gnutls +, libffi, binutils-unwrapped +, libjpeg, libtiff, libpng, giflib, libungif +, libxml2, libxslt, libiconv +, libobjc, libgcrypt +, icu +, pkgconfig, portaudio +, libiberty +}: +let + version = "1.26.0"; +in +gsmakeDerivation { + name = "gnustep-base-${version}"; + src = fetchurl { + url = "ftp://ftp.gnustep.org/pub/gnustep/core/gnustep-base-${version}.tar.gz"; + sha256 = "0ws16rwqx0qvqpyjsxbdylfpkgjr19nqc9i3b30wywqcqrkc12zn"; + }; + nativeBuildInputs = [ pkgconfig ]; + propagatedBuildInputs = [ + aspell audiofile + cups + gmp gnutls + libffi binutils-unwrapped + libjpeg libtiff libpng giflib libungif + libxml2 libxslt libiconv + libobjc libgcrypt + icu + portaudio + libiberty + ]; + patches = [ ./fixup-paths.patch ]; + + meta = { + description = "An implementation of AppKit and Foundation libraries of OPENSTEP and Cocoa"; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnustep/base/fixup-paths.patch b/nixpkgs/pkgs/desktops/gnustep/base/fixup-paths.patch new file mode 100644 index 000000000000..fa28412dbf62 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnustep/base/fixup-paths.patch @@ -0,0 +1,373 @@ +diff -r -u gnustep-base-1.24.7/Makefile.postamble gnustep-base-1.24.7.patched/Makefile.postamble +--- gnustep-base-1.24.7/Makefile.postamble 2011-07-15 19:53:45.000000000 +0600 ++++ gnustep-base-1.24.7.patched/Makefile.postamble 2014-11-29 22:25:07.000000000 +0600 +@@ -38,13 +38,13 @@ + # Things to do after compiling + # after-all:: + +-$(DESTDIR)$(GNUSTEP_MAKEFILES)/Additional: +- $(ECHO_CREATING)$(MKDIRS) $(DESTDIR)$(GNUSTEP_MAKEFILES)/Additional$(END_ECHO) ++$(DESTDIR_GNUSTEP_MAKEFILES)/Additional: ++ $(ECHO_CREATING)$(MKDIRS) $(DESTDIR_GNUSTEP_MAKEFILES)/Additional$(END_ECHO) + + # Things to do before installing +-before-install:: $(DESTDIR)$(GNUSTEP_MAKEFILES)/Additional ++before-install:: $(DESTDIR_GNUSTEP_MAKEFILES)/Additional + $(ECHO_NOTHING)$(INSTALL_DATA) base.make \ +- $(DESTDIR)$(GNUSTEP_MAKEFILES)/Additional/base.make$(END_ECHO) ++ $(DESTDIR_GNUSTEP_MAKEFILES)/Additional/base.make$(END_ECHO) + + # Things to do after installing + # after-install:: +@@ -54,7 +54,7 @@ + + # Things to do after uninstalling + after-uninstall:: +- $(ECHO_NOTHING)rm -f $(DESTDIR)$(GNUSTEP_MAKEFILES)/Additional/base.make$(END_ECHO) ++ $(ECHO_NOTHING)rm -f $(DESTDIR_GNUSTEP_MAKEFILES)/Additional/base.make$(END_ECHO) + + # Things to do before cleaning + # before-clean:: +diff -r -u gnustep-base-1.24.7/Source/NSPathUtilities.m gnustep-base-1.24.7.patched/Source/NSPathUtilities.m +--- gnustep-base-1.24.7/Source/NSPathUtilities.m 2014-01-14 13:21:10.000000000 +0600 ++++ gnustep-base-1.24.7.patched/Source/NSPathUtilities.m 2015-01-25 13:59:37.000000000 +0600 +@@ -153,16 +153,27 @@ + static NSString *gnustepLocalUsersDir = nil; + + static NSString *gnustepSystemApps = nil; ++static NSArray *gnustepSystemAppsNix = nil; + static NSString *gnustepSystemAdminApps = nil; ++static NSArray *gnustepSystemAdminAppsNix = nil; + static NSString *gnustepSystemWebApps = nil; ++static NSArray *gnustepSystemWebAppsNix = nil; + static NSString *gnustepSystemTools = nil; ++static NSArray *gnustepSystemToolsNix = nil; + static NSString *gnustepSystemAdminTools = nil; ++static NSArray *gnustepSystemAdminToolsNix = nil; + static NSString *gnustepSystemLibrary = nil; ++static NSArray *gnustepSystemLibraryNix = nil; + static NSString *gnustepSystemLibraries = nil; ++static NSArray *gnustepSystemLibrariesNix = nil; + static NSString *gnustepSystemHeaders = nil; ++static NSArray *gnustepSystemHeadersNix = nil; + static NSString *gnustepSystemDocumentation = nil; ++static NSArray *gnustepSystemDocumentationNix = nil; + static NSString *gnustepSystemDocumentationInfo = nil; ++static NSArray *gnustepSystemDocumentationInfoNix = nil; + static NSString *gnustepSystemDocumentationMan = nil; ++static NSArray *gnustepSystemDocumentationManNix = nil; + + static NSString *gnustepNetworkApps = nil; + static NSString *gnustepNetworkAdminApps = nil; +@@ -258,6 +269,18 @@ + }\ + }) + ++/* Like ASSIGN_PATH, but permits multiple components in a path ++ */ ++#define ASSIGN_PATH_NIX(var, dictionary, key) ({\ ++ id val = getPathConfigNix(dictionary, key);\ ++ if (val != nil)\ ++ {\ ++ RELEASE(var);\ ++ var = RETAIN(val);\ ++ [dictionary removeObjectForKey: key];\ ++ }\ ++}) ++ + /* Like ASSIGN_PATH(), but permits the result to be a relative path as that + * is what we normally use (the path is within the user's home directory). + */ +@@ -368,7 +391,7 @@ + /* Get a full path string */ + static inline NSString * + getPath(NSString *path) +-{ ++{ + if ([path hasPrefix: @"./"] == YES) + { + path = [gnustepConfigPath stringByAppendingPathComponent: +@@ -383,6 +406,33 @@ + return path; + } + ++static inline NSArray * ++getPathConfigNix(NSDictionary *dict, NSString *key) ++{ ++ NSArray *res = nil; ++ NSMutableArray *paths = nil; ++ NSString *path; ++#if defined(__MINGW_) ++ NSString *sep = @";"; ++#else ++ NSString *sep = @":"; ++#endif ++ ++ path = [dict objectForKey: key]; ++ if (path != nil) ++ { ++ if ([path rangeOfString:sep].location != NSNotFound) ++ { ++ res = [path componentsSeparatedByString:sep]; ++ } ++ else ++ { ++ res = [[NSArray alloc] initWithObjects:path, nil]; ++ } ++ } ++ return res; ++} ++ + /* Get a full path string from a dictionary */ + static inline NSString * + getPathConfig(NSDictionary *dict, NSString *key) +@@ -468,6 +518,29 @@ + ASSIGN_PATH(gnustepSystemDocumentationInfo, c, + @"GNUSTEP_SYSTEM_DOC_INFO"); + ++ ASSIGN_PATH_NIX(gnustepSystemAppsNix, c, ++ @"NIX_GNUSTEP_SYSTEM_APPS"); ++ ASSIGN_PATH_NIX(gnustepSystemAdminAppsNix, c, ++ @"NIX_GNUSTEP_SYSTEM_ADMIN_APPS"); ++ ASSIGN_PATH_NIX(gnustepSystemWebAppsNix, c, ++ @"NIX_GNUSTEP_SYSTEM_WEB_APPS"); ++ ASSIGN_PATH_NIX(gnustepSystemToolsNix, c, ++ @"NIX_GNUSTEP_SYSTEM_TOOLS"); ++ ASSIGN_PATH_NIX(gnustepSystemAdminToolsNix, c, ++ @"NIX_GNUSTEP_SYSTEM_ADMIN_TOOLS"); ++ ASSIGN_PATH_NIX(gnustepSystemLibraryNix, c, ++ @"NIX_GNUSTEP_SYSTEM_LIBRARY"); ++ ASSIGN_PATH_NIX(gnustepSystemLibrariesNix, c, ++ @"NIX_GNUSTEP_SYSTEM_LIBRARIES"); ++ ASSIGN_PATH_NIX(gnustepSystemHeadersNix, c, ++ @"NIX_GNUSTEP_SYSTEM_HEADERS"); ++ ASSIGN_PATH_NIX(gnustepSystemDocumentationNix, c, ++ @"NIX_GNUSTEP_SYSTEM_DOC"); ++ ASSIGN_PATH_NIX(gnustepSystemDocumentationManNix, c, ++ @"NIX_GNUSTEP_SYSTEM_DOC_MAN"); ++ ASSIGN_PATH_NIX(gnustepSystemDocumentationInfoNix, c, ++ @"NIX_GNUSTEP_SYSTEM_DOC_INFO"); ++ + ASSIGN_PATH(gnustepNetworkApps, c, + @"GNUSTEP_NETWORK_APPS"); + ASSIGN_PATH(gnustepNetworkAdminApps, c, +@@ -1235,6 +1308,18 @@ + DESTROY(gnustepSystemDocumentationMan); + DESTROY(gnustepSystemDocumentationInfo); + ++ DESTROY(gnustepSystemAppsNix); ++ DESTROY(gnustepSystemAdminAppsNix); ++ DESTROY(gnustepSystemWebAppsNix); ++ DESTROY(gnustepSystemToolsNix); ++ DESTROY(gnustepSystemAdminToolsNix); ++ DESTROY(gnustepSystemLibraryNix); ++ DESTROY(gnustepSystemLibrariesNix); ++ DESTROY(gnustepSystemHeadersNix); ++ DESTROY(gnustepSystemDocumentationNix); ++ DESTROY(gnustepSystemDocumentationManNix); ++ DESTROY(gnustepSystemDocumentationInfoNix); ++ + DESTROY(gnustepNetworkApps); + DESTROY(gnustepNetworkAdminApps); + DESTROY(gnustepNetworkWebApps); +@@ -2183,6 +2268,27 @@ + if ([add_dir length] > 0 && [paths containsObject: add_dir] == NO) \ + [paths addObject: add_dir]; \ + } ++#define ADD_PATH_NIX(mask, base_dirs, add_dir) \ ++if ((domainMask & mask) && (base_dirs != nil)) \ ++{ \ ++ NSEnumerator *e = [base_dirs objectEnumerator]; \ ++ NSString *dir = nil; \ ++ while (dir = [e nextObject]) { \ ++ path = [dir stringByAppendingPathComponent: add_dir]; \ ++ if ([path length] > 0 && [paths containsObject: path] == NO) \ ++ [paths addObject: path]; \ ++ } \ ++} ++#define ADD_PLATFORM_PATH_NIX(mask, add_dirs) \ ++if ((domainMask & mask) && (add_dirs != nil)) \ ++{ \ ++ NSEnumerator *e = [add_dirs objectEnumerator]; \ ++ NSString *dir = nil; \ ++ while (dir = [e nextObject]) { \ ++ if ([dir length] > 0 && [paths containsObject: dir] == NO) \ ++ [paths addObject:dir]; \ ++ } \ ++} + + switch (directoryKey) + { +@@ -2191,11 +2297,13 @@ + ADD_PLATFORM_PATH(NSUserDomainMask, gnustepUserApps); + ADD_PLATFORM_PATH(NSLocalDomainMask, gnustepLocalApps); + ADD_PLATFORM_PATH(NSNetworkDomainMask, gnustepNetworkApps); ++ ADD_PLATFORM_PATH_NIX(NSSystemDomainMask, gnustepSystemAppsNix); + ADD_PLATFORM_PATH(NSSystemDomainMask, gnustepSystemApps); + + ADD_PLATFORM_PATH(NSUserDomainMask, gnustepUserAdminApps); + ADD_PLATFORM_PATH(NSLocalDomainMask, gnustepLocalAdminApps); + ADD_PLATFORM_PATH(NSNetworkDomainMask, gnustepNetworkAdminApps); ++ ADD_PLATFORM_PATH_NIX(NSSystemDomainMask, gnustepSystemAdminAppsNix); + ADD_PLATFORM_PATH(NSSystemDomainMask, gnustepSystemAdminApps); + } + break; +@@ -2205,6 +2313,7 @@ + ADD_PLATFORM_PATH(NSUserDomainMask, gnustepUserApps); + ADD_PLATFORM_PATH(NSLocalDomainMask, gnustepLocalApps); + ADD_PLATFORM_PATH(NSNetworkDomainMask, gnustepNetworkApps); ++ ADD_PLATFORM_PATH_NIX(NSSystemDomainMask, gnustepSystemAppsNix); + ADD_PLATFORM_PATH(NSSystemDomainMask, gnustepSystemApps); + } + break; +@@ -2214,6 +2323,7 @@ + ADD_PLATFORM_PATH(NSUserDomainMask, gnustepUserApps); + ADD_PLATFORM_PATH(NSLocalDomainMask, gnustepLocalApps); + ADD_PLATFORM_PATH(NSNetworkDomainMask, gnustepNetworkApps); ++ ADD_PLATFORM_PATH_NIX(NSSystemDomainMask, gnustepSystemAppsNix); + ADD_PLATFORM_PATH(NSSystemDomainMask, gnustepSystemApps); + + /* I imagine if ever wanted a separate Demo directory, the +@@ -2231,6 +2341,7 @@ + + case NSCoreServicesDirectory: + { ++ ADD_PATH_NIX(NSSystemDomainMask, gnustepSystemLibraryNix, @"CoreServices"); + ADD_PATH(NSSystemDomainMask, gnustepSystemLibrary, @"CoreServices"); + } + break; +@@ -2248,6 +2359,7 @@ + ADD_PLATFORM_PATH(NSUserDomainMask, gnustepUserApps); + ADD_PLATFORM_PATH(NSLocalDomainMask, gnustepLocalApps); + ADD_PLATFORM_PATH(NSNetworkDomainMask, gnustepNetworkApps); ++ ADD_PLATFORM_PATH_NIX(NSSystemDomainMask, gnustepSystemAppsNix); + ADD_PLATFORM_PATH(NSSystemDomainMask, gnustepSystemApps); + } + break; +@@ -2257,6 +2369,7 @@ + ADD_PLATFORM_PATH(NSUserDomainMask, gnustepUserAdminApps); + ADD_PLATFORM_PATH(NSLocalDomainMask, gnustepLocalAdminApps); + ADD_PLATFORM_PATH(NSNetworkDomainMask, gnustepNetworkAdminApps); ++ ADD_PLATFORM_PATH_NIX(NSSystemDomainMask, gnustepSystemAdminAppsNix); + ADD_PLATFORM_PATH(NSSystemDomainMask, gnustepSystemAdminApps); + } + break; +@@ -2266,6 +2379,7 @@ + ADD_PLATFORM_PATH(NSUserDomainMask, gnustepUserLibrary); + ADD_PLATFORM_PATH(NSLocalDomainMask, gnustepLocalLibrary); + ADD_PLATFORM_PATH(NSNetworkDomainMask, gnustepNetworkLibrary); ++ ADD_PLATFORM_PATH_NIX(NSSystemDomainMask, gnustepSystemLibraryNix); + ADD_PLATFORM_PATH(NSSystemDomainMask, gnustepSystemLibrary); + } + break; +@@ -2281,6 +2395,7 @@ + ADD_PLATFORM_PATH(NSUserDomainMask, gnustepUserLibrary); + ADD_PLATFORM_PATH(NSLocalDomainMask, gnustepLocalLibrary); + ADD_PLATFORM_PATH(NSNetworkDomainMask, gnustepNetworkLibrary); ++ ADD_PLATFORM_PATH_NIX(NSSystemDomainMask, gnustepSystemLibraryNix); + ADD_PLATFORM_PATH(NSSystemDomainMask, gnustepSystemLibrary); + } + break; +@@ -2418,6 +2533,7 @@ + ADD_PLATFORM_PATH(NSUserDomainMask, gnustepUserDocumentation); + ADD_PLATFORM_PATH(NSLocalDomainMask, gnustepLocalDocumentation); + ADD_PLATFORM_PATH(NSNetworkDomainMask, gnustepNetworkDocumentation); ++ ADD_PLATFORM_PATH_NIX(NSSystemDomainMask, gnustepSystemDocumentationNix); + ADD_PLATFORM_PATH(NSSystemDomainMask, gnustepSystemDocumentation); + } + break; +@@ -2449,6 +2565,7 @@ + ADD_PATH(NSUserDomainMask, gnustepUserLibrary, @"Caches"); + ADD_PATH(NSLocalDomainMask, gnustepLocalLibrary, @"Caches"); + ADD_PATH(NSNetworkDomainMask, gnustepNetworkLibrary, @"Caches"); ++ ADD_PATH_NIX(NSSystemDomainMask, gnustepSystemLibraryNix, @"Caches"); + ADD_PATH(NSSystemDomainMask, gnustepSystemLibrary, @"Caches"); + } + break; +@@ -2460,6 +2577,8 @@ + @"ApplicationSupport"); + ADD_PATH(NSNetworkDomainMask, gnustepNetworkLibrary, + @"ApplicationSupport"); ++ ADD_PATH_NIX(NSSystemDomainMask, gnustepSystemLibraryNix, ++ @"ApplicationSupport"); + ADD_PATH(NSSystemDomainMask, gnustepSystemLibrary, + @"ApplicationSupport"); + } +@@ -2471,6 +2590,7 @@ + ADD_PATH(NSUserDomainMask, gnustepUserLibrary, @"Frameworks"); + ADD_PATH(NSLocalDomainMask, gnustepLocalLibrary, @"Frameworks"); + ADD_PATH(NSNetworkDomainMask, gnustepNetworkLibrary, @"Frameworks"); ++ ADD_PATH_NIX(NSSystemDomainMask, gnustepSystemLibraryNix, @"Frameworks"); + ADD_PATH(NSSystemDomainMask, gnustepSystemLibrary, @"Frameworks"); + } + break; +@@ -2480,6 +2600,7 @@ + ADD_PATH(NSUserDomainMask, gnustepUserLibrary, @"Fonts"); + ADD_PATH(NSLocalDomainMask, gnustepLocalLibrary, @"Fonts"); + ADD_PATH(NSNetworkDomainMask, gnustepNetworkLibrary, @"Fonts"); ++ ADD_PATH_NIX(NSSystemDomainMask, gnustepSystemLibraryNix, @"Fonts"); + ADD_PATH(NSSystemDomainMask, gnustepSystemLibrary, @"Fonts"); + } + break; +@@ -2518,6 +2639,12 @@ + if (part) + ADD_PATH(NSNetworkDomainMask, gnustepNetworkLibraries, part); + ++ ADD_PLATFORM_PATH_NIX(NSSystemDomainMask, gnustepSystemLibrariesNix); ++ if (full) ++ ADD_PATH_NIX(NSSystemDomainMask, gnustepSystemLibrariesNix, full); ++ if (part) ++ ADD_PATH_NIX(NSSystemDomainMask, gnustepSystemLibrariesNix, part); ++ + ADD_PLATFORM_PATH(NSSystemDomainMask, gnustepSystemLibraries); + if (full) + ADD_PATH(NSSystemDomainMask, gnustepSystemLibraries, full); +@@ -2560,6 +2687,12 @@ + if (part) + ADD_PATH(NSNetworkDomainMask, gnustepNetworkTools, part); + ++ ADD_PLATFORM_PATH_NIX(NSSystemDomainMask, gnustepSystemToolsNix); ++ if (full) ++ ADD_PATH_NIX(NSSystemDomainMask, gnustepSystemToolsNix, full); ++ if (part) ++ ADD_PATH_NIX(NSSystemDomainMask, gnustepSystemToolsNix, part); ++ + ADD_PLATFORM_PATH(NSSystemDomainMask, gnustepSystemTools); + if (full) + ADD_PATH(NSSystemDomainMask, gnustepSystemTools, full); +@@ -2602,6 +2735,18 @@ + if (part) + ADD_PATH(NSNetworkDomainMask, gnustepNetworkAdminTools, part); + ++ ADD_PLATFORM_PATH_NIX(NSSystemDomainMask, gnustepSystemAdminToolsNix); ++ if (full) ++ ADD_PATH_NIX(NSSystemDomainMask, gnustepSystemAdminToolsNix, full); ++ if (part) ++ ADD_PATH_NIX(NSSystemDomainMask, gnustepSystemAdminToolsNix, part); ++ ++ ADD_PLATFORM_PATH_NIX(NSSystemDomainMask, gnustepSystemAdminToolsNix); ++ if (full) ++ ADD_PATH_NIX(NSSystemDomainMask, gnustepSystemAdminToolsNix, full); ++ if (part) ++ ADD_PATH_NIX(NSSystemDomainMask, gnustepSystemAdminToolsNix, part); ++ + ADD_PLATFORM_PATH(NSSystemDomainMask, gnustepSystemAdminTools); + if (full) + ADD_PATH(NSSystemDomainMask, gnustepSystemAdminTools, full); +@@ -2615,6 +2760,7 @@ + ADD_PLATFORM_PATH(NSUserDomainMask, gnustepUserWebApps); + ADD_PLATFORM_PATH(NSLocalDomainMask, gnustepLocalWebApps); + ADD_PLATFORM_PATH(NSNetworkDomainMask, gnustepNetworkWebApps); ++ ADD_PLATFORM_PATH_NIX(NSSystemDomainMask, gnustepSystemWebAppsNix); + ADD_PLATFORM_PATH(NSSystemDomainMask, gnustepSystemWebApps); + } + break; +@@ -2622,6 +2768,8 @@ + + #undef ADD_PATH + #undef ADD_PLATFORM_PATH ++#undef ADD_PATH_NIX ++#undef ADD_PLATFORM_PATH_NIX + + count = [paths count]; + for (i = 0; i < count; i++) diff --git a/nixpkgs/pkgs/desktops/gnustep/default.nix b/nixpkgs/pkgs/desktops/gnustep/default.nix new file mode 100644 index 000000000000..4f7c13e8e4ae --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnustep/default.nix @@ -0,0 +1,23 @@ +{ pkgs, newScope, llvmPackages_6 }: + +let + callPackage = newScope self; + + self = rec { + stdenv = pkgs.clangStdenv; + + gsmakeDerivation = callPackage ./make/gsmakeDerivation.nix {}; + gorm = callPackage ./gorm {}; + projectcenter = callPackage ./projectcenter {}; + system_preferences = callPackage ./systempreferences {}; + libobjc = callPackage ./libobjc2 { + stdenv = if stdenv.cc.isClang then llvmPackages_6.stdenv else stdenv; + }; + make = callPackage ./make {}; + back = callPackage ./back {}; + base = callPackage ./base { giflib = pkgs.giflib_4_1; }; + gui = callPackage ./gui {}; + gworkspace = callPackage ./gworkspace {}; + }; + +in self diff --git a/nixpkgs/pkgs/desktops/gnustep/gorm/default.nix b/nixpkgs/pkgs/desktops/gnustep/gorm/default.nix new file mode 100644 index 000000000000..c977c61dd099 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnustep/gorm/default.nix @@ -0,0 +1,17 @@ +{ fetchurl, base, back, gsmakeDerivation, gui }: +let + version = "1.2.24"; +in +gsmakeDerivation { + name = "gorm-${version}"; + + src = fetchurl { + url = "ftp://ftp.gnustep.org/pub/gnustep/dev-apps/gorm-${version}.tar.gz"; + sha256 = "1jw7vm5ia7ias1mm5if7vvvb66q50zwiqw0ksj5g14f11v8l61rf"; + }; + buildInputs = [ base back gui ]; + + meta = { + description = "Graphical Object Relationship Modeller is an easy-to-use interface designer for GNUstep"; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnustep/gui/default.nix b/nixpkgs/pkgs/desktops/gnustep/gui/default.nix new file mode 100644 index 000000000000..72d109b69796 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnustep/gui/default.nix @@ -0,0 +1,16 @@ +{ gsmakeDerivation, fetchurl, base }: +let + version = "0.27.0"; +in +gsmakeDerivation { + name = "gnustep-gui-${version}"; + src = fetchurl { + url = "ftp://ftp.gnustep.org/pub/gnustep/core/gnustep-gui-${version}.tar.gz"; + sha256 = "1m6k3fa2ndxv0kl2fazi76mwa27gn5jyp24q0rk96f2djhsy94br"; + }; + buildInputs = [ base ]; + patches = [ ./fixup-all.patch ]; + meta = { + description = "A GUI class library of GNUstep"; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnustep/gui/fixup-all.patch b/nixpkgs/pkgs/desktops/gnustep/gui/fixup-all.patch new file mode 100644 index 000000000000..4b412db409ae --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnustep/gui/fixup-all.patch @@ -0,0 +1,56 @@ +diff -r -u gnustep-gui-0.24.0/GNUmakefile.postamble gnustep-gui-0.24.0.patched/GNUmakefile.postamble +--- gnustep-gui-0.24.0/GNUmakefile.postamble 2010-05-17 22:38:59.000000000 +0600 ++++ gnustep-gui-0.24.0.patched/GNUmakefile.postamble 2014-12-01 13:44:05.000000000 +0600 +@@ -40,20 +40,20 @@ + # The following rule is important mainly for packaging, because in that case + # you install into a fake system tree, and the directory is not there. + # +-$(DESTDIR)$(GNUSTEP_MAKEFILES)/Additional: +- $(MKDIRS) $(DESTDIR)$(GNUSTEP_MAKEFILES)/Additional ++$(DESTDIR_GNUSTEP_MAKEFILES)/Additional: ++ $(MKDIRS) $(DESTDIR_GNUSTEP_MAKEFILES)/Additional + + # Things to do before installing +-before-install:: $(DESTDIR)$(GNUSTEP_MAKEFILES)/Additional ++before-install:: $(DESTDIR_GNUSTEP_MAKEFILES)/Additional + $(INSTALL_DATA) gui.make \ +- $(DESTDIR)$(GNUSTEP_MAKEFILES)/Additional/gui.make ++ $(DESTDIR_GNUSTEP_MAKEFILES)/Additional/gui.make + + # Things to do after installing + # after-install:: + + # Things to do before uninstalling + before-uninstall:: +- rm -f $(DESTDIR)$(GNUSTEP_MAKEFILES)/Additional/gui.make ++ rm -f $(DESTDIR_GNUSTEP_MAKEFILES)/Additional/gui.make + + # Things to do after uninstalling + # after-uninstall:: +diff -r -u gnustep-gui-0.24.0/TextConverters/RTF/GNUmakefile.preamble gnustep-gui-0.24.0.patched/TextConverters/RTF/GNUmakefile.preamble +--- gnustep-gui-0.24.0/TextConverters/RTF/GNUmakefile.preamble 2008-06-10 10:01:49.000000000 +0600 ++++ gnustep-gui-0.24.0.patched/TextConverters/RTF/GNUmakefile.preamble 2014-12-01 13:02:11.000000000 +0600 +@@ -49,7 +49,7 @@ + ADDITIONAL_INCLUDE_DIRS +=-I../../Headers/Additions -I../../Headers + + # Additional LDFLAGS to pass to the linker +-#ADDITIONAL_LDFLAGS += ++ADDITIONAL_LDFLAGS += -lgnustep-gui + + # Additional library directories the linker should search + ADDITIONAL_LIB_DIRS += -L../../Source/$(GNUSTEP_OBJ_DIR) +diff -r -u gnustep-gui-0.24.0/Tools/GNUmakefile.preamble gnustep-gui-0.24.0.patched/Tools/GNUmakefile.preamble +--- gnustep-gui-0.24.0/Tools/GNUmakefile.preamble 2006-02-22 12:43:48.000000000 +0600 ++++ gnustep-gui-0.24.0.patched/Tools/GNUmakefile.preamble 2014-12-01 12:52:41.000000000 +0600 +@@ -32,9 +32,11 @@ + ADDITIONAL_LIB_DIRS += -L../Source/$(GNUSTEP_OBJ_DIR) -L../Model/$(GNUSTEP_OBJ_DIR) + + # Additional libraries when linking tools ++make_services_TOOL_LIBS += -lgnustep-base + gpbs_TOOL_LIBS += -lgnustep-gui $(SYSTEM_LIBS) + set_show_service_TOOL_LIBS += -lgnustep-gui $(SYSTEM_LIBS) + gopen_TOOL_LIBS += -lgnustep-gui $(SYSTEM_LIBS) ++gclose_TOOL_LIBS += -lgnustep-base + gcloseall_TOOL_LIBS += -lgnustep-gui $(SYSTEM_LIBS) + GSspell_TOOL_LIBS += $(ADDITIONAL_DEPENDS) + diff --git a/nixpkgs/pkgs/desktops/gnustep/gworkspace/default.nix b/nixpkgs/pkgs/desktops/gnustep/gworkspace/default.nix new file mode 100644 index 000000000000..d5018a4350f8 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnustep/gworkspace/default.nix @@ -0,0 +1,22 @@ +{ back, base, gui, gsmakeDerivation +, fetchurl +, system_preferences +}: +let + version = "0.9.4"; +in +gsmakeDerivation { + name = "gworkspace-${version}"; + src = fetchurl { + url = "ftp://ftp.gnustep.org/pub/gnustep/usr-apps/gworkspace-${version}.tar.gz"; + sha256 = "0cjn83m7qmbwdpldlyhs239nwswgip3yaz01ahls130dq5qq7hgk"; + }; + # additional dependencies: + # - PDFKit framework from http://gap.nongnu.org/ + # - TODO: to --enable-gwmetadata, need libDBKit as well as sqlite! + buildInputs = [ back base gui system_preferences ]; + configureFlags = [ "--with-inotify" ]; + meta = { + description = "A workspace manager for GNUstep"; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnustep/libobjc2/default.nix b/nixpkgs/pkgs/desktops/gnustep/libobjc2/default.nix new file mode 100644 index 000000000000..10c10c33a956 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnustep/libobjc2/default.nix @@ -0,0 +1,26 @@ +{ stdenv, lib, fetchFromGitHub, cmake }: + +stdenv.mkDerivation rec { + pname = "libobjc2"; + version = "2.0"; + + src = fetchFromGitHub { + owner = "gnustep"; + repo = "libobjc2"; + rev = "v${version}"; + sha256 = "1b4h0a4pqr8j6300qr2wmi33r7ysvp705gs0ypx69hbmifln0mlf"; + }; + + nativeBuildInputs = [ cmake ]; + + cmakeFlags = [ "-DCMAKE_INSTALL_LIBDIR=lib" ]; + + meta = with lib; { + description = "Objective-C runtime for use with GNUstep"; + homepage = "http://gnustep.org/"; + license = licenses.mit; + maintainers = with maintainers; [ ashalkhakov matthewbauer ]; + platforms = platforms.unix; + badPlatforms = [ "aarch64-linux" ]; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnustep/make/GNUstep.conf b/nixpkgs/pkgs/desktops/gnustep/make/GNUstep.conf new file mode 100644 index 000000000000..f4e0e3b81629 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnustep/make/GNUstep.conf @@ -0,0 +1,126 @@ +# These GNUSTEP_*_ROOT variables are obsolete, and will be removed. +#GNUSTEP_SYSTEM_ROOT=/nix/store/ky64z3j9l18wjcssb9pxnc792ihh3bvw-gnustep-make-2.6.6/System +#GNUSTEP_LOCAL_ROOT=/nix/store/ky64z3j9l18wjcssb9pxnc792ihh3bvw-gnustep-make-2.6.6/Local +#GNUSTEP_NETWORK_ROOT=/nix/store/ky64z3j9l18wjcssb9pxnc792ihh3bvw-gnustep-make-2.6.6/Network + +# The name of the user config file. This file can override +# some settings in this file. Usually used by users that want +# to install things into their GNUstep user domain and/or have +# many such domains. +GNUSTEP_USER_CONFIG_FILE=.GNUstep.conf + +# The name of the user directory, if any. This is obsolete, +# and will be removed. +GNUSTEP_USER_DIR=GNUstep + +# The name of the user directory where defaults (eg, preferences) are +# stored. If it does not start with a '/', it will be considered +# relative to the user home directory. +GNUSTEP_USER_DEFAULTS_DIR=GNUstep/Defaults + + +# This is where the gnustep-make Makefiles are installed. +# Traditionally, this is /usr/GNUstep/System/Library/Makefiles +GNUSTEP_MAKEFILES=@gnustepMakefiles@ + +# This is where the user home directories are. Only used to provide +# NSUserDirectory in gnustep-base. Never used anywhere else. +GNUSTEP_SYSTEM_USERS_DIR=/home +GNUSTEP_NETWORK_USERS_DIR=/home +GNUSTEP_LOCAL_USERS_DIR=/home + + +# This is where System GUI Applications get installed. +# Traditionally it is /usr/GNUstep/System/Applications. +GNUSTEP_SYSTEM_APPS=@systemApps@ + +# This is where System GUI Applications that only the +# Administrator can use get installed. +# Traditionally it is /usr/GNUstep/System/Applications/Admin. +GNUSTEP_SYSTEM_ADMIN_APPS=@systemAdminApps@ + +# This is where System Web Applications (GSWeb, SOPE) get +# installed. +# Traditionally it is /usr/GNUstep/System/Library/WebApplications. +GNUSTEP_SYSTEM_WEB_APPS=@systemWebApps@ + +# This is where System Command-Line Tools get installed. +# Traditionally it is /usr/GNUstep/System/Tools. +GNUSTEP_SYSTEM_TOOLS=@systemTools@ + +# This is where System Command-Line Tools that only the +# Administrator can use get installed. Important: this +# should not be in the PATH of normal users. +# Traditionally it is /usr/GNUstep/System/Tools/Admin. +GNUSTEP_SYSTEM_ADMIN_TOOLS=@systemAdminTools@ + +# This is where System resources get installed. This directory will +# contain a lot of executable code since *step traditionally likes to +# bundle executables and resources together. +# Traditionally it is /usr/GNUstep/System/Library. +GNUSTEP_SYSTEM_LIBRARY=@systemLibrary@ + +# This is where System headers get installed. They are the +# library .h headers. +# Traditionally it is /usr/GNUstep/System/Library/Headers. +GNUSTEP_SYSTEM_HEADERS=@systemHeaders@ + +# This is where System libraries get installed. By libraries we mean +# the shared/static object files that you can link into programs. +# Traditionally it is /usr/GNUstep/System/Library/Libraries. +GNUSTEP_SYSTEM_LIBRARIES=@systemLibraries@ + +# This is where System documentation get installed. This is known +# not to contain any executable, so we keep it separate. +# Traditionally it is /usr/GNUstep/System/Library/Documentation. +GNUSTEP_SYSTEM_DOC=@systemDoc@ + +# This is where System man pages get installed. +# Traditionally it is /usr/GNUstep/System/Library/Documentation/man. +GNUSTEP_SYSTEM_DOC_MAN=@systemDocMan@ + +# This is where System info pages get installed. +# Traditionally it is /usr/GNUstep/System/Library/Documentation/info. +GNUSTEP_SYSTEM_DOC_INFO=@systemDocInfo@ + + +GNUSTEP_NETWORK_APPS=@systemApps@ +GNUSTEP_NETWORK_ADMIN_APPS=@systemAdminApps@ +GNUSTEP_NETWORK_WEB_APPS=@systemWebApps@ +GNUSTEP_NETWORK_TOOLS=@systemTools@ +GNUSTEP_NETWORK_ADMIN_TOOLS=@systemAdminTools@ +GNUSTEP_NETWORK_LIBRARY=@systemLibrary@ +GNUSTEP_NETWORK_HEADERS=@systemHeaders@ +GNUSTEP_NETWORK_LIBRARIES=@systemLibraries@ +GNUSTEP_NETWORK_DOC=@systemDoc@ +GNUSTEP_NETWORK_DOC_MAN=@systemDocMan@ +GNUSTEP_NETWORK_DOC_INFO=@systemDocInfo@ + +GNUSTEP_LOCAL_APPS=@systemApps@ +GNUSTEP_LOCAL_ADMIN_APPS=@systemAdminApps@ +GNUSTEP_LOCAL_WEB_APPS=@systemWebApps@ +GNUSTEP_LOCAL_TOOLS=@systemTools@ +GNUSTEP_LOCAL_ADMIN_TOOLS=@systemAdminTools@ +GNUSTEP_LOCAL_LIBRARY=@systemLibrary@ +GNUSTEP_LOCAL_HEADERS=@systemHeaders@ +GNUSTEP_LOCAL_LIBRARIES=@systemLibraries@ +GNUSTEP_LOCAL_DOC=@systemDoc@ +GNUSTEP_LOCAL_DOC_MAN=@systemDocMan@ +GNUSTEP_LOCAL_DOC_INFO=@systemDocInfo@ + +# Important: settings in the User should normally be relative paths, +# and will be interpreted as relative to the user's directory. This +# allows each user to have their own domain to install things. You +# can set them to be absolute, mostly if you want to disable them +# by setting them equal to the ones in the Network domain. +GNUSTEP_USER_DIR_APPS=GNUstep/Applications +GNUSTEP_USER_DIR_ADMIN_APPS=GNUstep/Applications/Admin +GNUSTEP_USER_DIR_WEB_APPS=GNUstep/WebApplications +GNUSTEP_USER_DIR_TOOLS=GNUstep/Tools +GNUSTEP_USER_DIR_ADMIN_TOOLS=GNUstep/Tools/Admin +GNUSTEP_USER_DIR_LIBRARY=GNUstep/Library +GNUSTEP_USER_DIR_HEADERS=GNUstep/Library/Headers +GNUSTEP_USER_DIR_LIBRARIES=GNUstep/Library/Libraries +GNUSTEP_USER_DIR_DOC=GNUstep/Library/Documentation +GNUSTEP_USER_DIR_DOC_MAN=GNUstep/Library/Documentation/man +GNUSTEP_USER_DIR_DOC_INFO=GNUstep/Library/Documentation/info diff --git a/nixpkgs/pkgs/desktops/gnustep/make/builder.sh b/nixpkgs/pkgs/desktops/gnustep/make/builder.sh new file mode 100644 index 000000000000..66afe1271cae --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnustep/make/builder.sh @@ -0,0 +1,122 @@ +source $stdenv/setup + +preConfigure() { + . $GNUSTEP_MAKEFILES/GNUstep.sh +} + +wrapGSMake() { + local program="$1" + local config="$2" + local wrapped="$(dirname $program)/.$(basename $program)-wrapped" + + mv "$program" "$wrapped" + + cat > "$program"<<EOF +#! $SHELL -e + +export GNUSTEP_CONFIG_FILE="$config" + +exec "$wrapped" "\$@" +EOF + chmod +x "$program" +} + +postInstall() { + local conf="$out/share/.GNUstep.conf" + + mkdir -p "$out/share" + touch $conf + + # add the current package to the paths + local tmp="$out/lib/GNUstep/Applications" + if [ -d "$tmp" ] && case "$NIX_GNUSTEP_SYSTEM_APPS" in *"${tmp}"*) false;; *) true;; esac; then + addToSearchPath NIX_GNUSTEP_SYSTEM_APPS "$tmp" + fi + tmp="$out/lib/GNUstep/Applications" + if [ -d "$tmp" ] && case "$NIX_GNUSTEP_SYSTEM_ADMIN_APPS" in *"${tmp}"*) false;; *) true;; esac; then + addToSearchPath NIX_GNUSTEP_SYSTEM_ADMIN_APPS "$tmp" + fi + tmp="$out/lib/GNUstep/WebApplications" + if [ -d "$tmp" ] && case "$NIX_GNUSTEP_SYSTEM_WEB_APPS" in *"${tmp}"*) false;; *) true;; esac; then + addToSearchPath NIX_GNUSTEP_SYSTEM_WEB_APPS "$tmp" + fi + tmp="$out/bin" + if [ -d "$tmp" ] && case "$NIX_GNUSTEP_SYSTEM_TOOLS" in *"${tmp}"*) false;; *) true;; esac; then + addToSearchPath NIX_GNUSTEP_SYSTEM_TOOLS "$tmp" + fi + tmp="$out/sbin" + if [ -d "$tmp" ] && case "$NIX_GNUSTEP_SYSTEM_ADMIN_TOOLS" in *"${tmp}"*) false;; *) true;; esac; then + addToSearchPath NIX_GNUSTEP_SYSTEM_ADMIN_TOOLS "$tmp" + fi + tmp="$out/lib/GNUstep" + if [ -d "$tmp" ] && case "$NIX_GNUSTEP_SYSTEM_LIBRARY" in *"${tmp}"*) false;; *) true;; esac; then + addToSearchPath NIX_GNUSTEP_SYSTEM_LIBRARY "$tmp" + fi + tmp="$out/include" + if [ -d "$tmp" ] && case "$NIX_GNUSTEP_SYSTEM_HEADERS" in *"${tmp}"*) false;; *) true;; esac; then + if [ -z "$NIX_GNUSTEP_SYSTEM_HEADERS" ]; then + export NIX_GNUSTEP_SYSTEM_HEADERS="$tmp" + else + export NIX_GNUSTEP_SYSTEM_HEADERS+=" $tmp" + fi + fi + tmp="$out/lib" + if [ -d "$tmp" ] && case "$NIX_GNUSTEP_SYSTEM_LIBRARIES" in *"${tmp}"*) false;; *) true;; esac; then + addToSearchPath NIX_GNUSTEP_SYSTEM_LIBRARIES "$tmp" + fi + tmp="$out/share/GNUstep/Documentation" + if [ -d "$tmp" ] && case "$NIX_GNUSTEP_SYSTEM_DOC" in *"${tmp}"*) false;; *) true;; esac; then + addToSearchPath NIX_GNUSTEP_SYSTEM_DOC "$tmp" + fi + tmp="$out/share/man" + if [ -d "$tmp" ] && case "$NIX_GNUSTEP_SYSTEM_DOC_MAN" in *"${tmp}"*) false;; *) true;; esac; then + addToSearchPath NIX_GNUSTEP_SYSTEM_DOC_MAN "$tmp" + fi + tmp="$out/share/info" + if [ -d "$tmp" ] && case "$NIX_GNUSTEP_SYSTEM_DOC_INFO" in *"${tmp}"*) false;; *) true;; esac; then + addToSearchPath NIX_GNUSTEP_SYSTEM_DOC_INFO "$tmp" + fi + + # write the config file + echo GNUSTEP_MAKEFILES=$GNUSTEP_MAKEFILES >> $conf + if [ -n "$NIX_GNUSTEP_SYSTEM_APPS" ]; then + echo NIX_GNUSTEP_SYSTEM_APPS="$NIX_GNUSTEP_SYSTEM_APPS" + fi + if [ -n "$NIX_GNUSTEP_SYSTEM_ADMIN_APPS" ]; then + echo NIX_GNUSTEP_SYSTEM_ADMIN_APPS="$NIX_GNUSTEP_SYSTEM_ADMIN_APPS" >> $conf + fi + if [ -n "$NIX_GNUSTEP_SYSTEM_WEB_APPS" ]; then + echo NIX_GNUSTEP_SYSTEM_WEB_APPS="$NIX_GNUSTEP_SYSTEM_WEB_APPS" >> $conf + fi + if [ -n "$NIX_GNUSTEP_SYSTEM_TOOLS" ]; then + echo NIX_GNUSTEP_SYSTEM_TOOLS="$NIX_GNUSTEP_SYSTEM_TOOLS" >> $conf + fi + if [ -n "$NIX_GNUSTEP_SYSTEM_ADMIN_TOOLS" ]; then + echo NIX_GNUSTEP_SYSTEM_ADMIN_TOOLS="$NIX_GNUSTEP_SYSTEM_ADMIN_TOOLS" >> $conf + fi + if [ -n "$NIX_GNUSTEP_SYSTEM_LIBRARY" ]; then + echo NIX_GNUSTEP_SYSTEM_LIBRARY="$NIX_GNUSTEP_SYSTEM_LIBRARY" >> $conf + fi + if [ -n "$NIX_GNUSTEP_SYSTEM_HEADERS" ]; then + echo NIX_GNUSTEP_SYSTEM_HEADERS="$NIX_GNUSTEP_SYSTEM_HEADERS" >> $conf + fi + if [ -n "$NIX_GNUSTEP_SYSTEM_LIBRARIES" ]; then + echo NIX_GNUSTEP_SYSTEM_LIBRARIES="$NIX_GNUSTEP_SYSTEM_LIBRARIES" >> $conf + fi + if [ -n "$NIX_GNUSTEP_SYSTEM_DOC" ]; then + echo NIX_GNUSTEP_SYSTEM_DOC="$NIX_GNUSTEP_SYSTEM_DOC" >> $conf + fi + if [ -n "$NIX_GNUSTEP_SYSTEM_DOC_MAN" ]; then + echo NIX_GNUSTEP_SYSTEM_DOC_MAN="$NIX_GNUSTEP_SYSTEM_DOC_MAN" >> $conf + fi + if [ -n "$NIX_GNUSTEP_SYSTEM_DOC_INFO" ]; then + echo NIX_GNUSTEP_SYSTEM_DOC_INFO="$NIX_GNUSTEP_SYSTEM_DOC_INFO" >> $conf + fi + + for i in $out/bin/*; do + echo "wrapping $(basename $i)" + wrapGSMake "$i" "$out/share/.GNUstep.conf" + done +} + +genericBuild diff --git a/nixpkgs/pkgs/desktops/gnustep/make/default.nix b/nixpkgs/pkgs/desktops/gnustep/make/default.nix new file mode 100644 index 000000000000..9b8692f0da5f --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnustep/make/default.nix @@ -0,0 +1,39 @@ +{ stdenv, fetchurl, clang, which, libobjc }: + +let + version = "2.7.0"; +in + +stdenv.mkDerivation { + pname = "gnustep-make"; + inherit version; + + src = fetchurl { + url = "ftp://ftp.gnustep.org/pub/gnustep/core/gnustep-make-${version}.tar.gz"; + sha256 = "1khiygfkz0zhh9b5nybn40g0xnnjxchk24n49hff1bwanszir84h"; + }; + + configureFlags = [ + "--with-layout=fhs-system" + "--disable-install-p" + ]; + + preConfigure = '' + configureFlags="$configureFlags --with-config-file=$out/etc/GNUstep/GNUstep.conf" + ''; + + makeFlags = [ + "GNUSTEP_INSTALLATION_DOMAIN=SYSTEM" + ]; + + buildInputs = [ clang which libobjc ]; + patches = [ ./fixup-paths.patch ]; + setupHook = ./setup-hook.sh; + meta = { + description = "A build manager for GNUstep"; + homepage = "http://gnustep.org/"; + license = stdenv.lib.licenses.lgpl2Plus; + maintainers = with stdenv.lib.maintainers; [ ashalkhakov matthewbauer ]; + platforms = stdenv.lib.platforms.unix; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnustep/make/fixup-paths.patch b/nixpkgs/pkgs/desktops/gnustep/make/fixup-paths.patch new file mode 100644 index 000000000000..b5eb093ad964 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnustep/make/fixup-paths.patch @@ -0,0 +1,197 @@ +diff -r -u gnustep-make-2.6.6/common.make gnustep-make-2.6.6.patched/common.make +--- gnustep-make-2.6.6/common.make 2013-03-04 17:21:55.000000000 +0600 ++++ gnustep-make-2.6.6.patched/common.make 2015-01-18 14:36:25.000000000 +0600 +@@ -135,7 +135,9 @@ + endif + # Then include makefiles with flags/config options installed by the + # libraries themselves +--include $(GNUSTEP_MAKEFILES)/Additional/*.make ++ifneq ($(NIX_GNUSTEP_MAKEFILES_ADDITIONAL),) ++include $(NIX_GNUSTEP_MAKEFILES_ADDITIONAL) ++endif + + # + # Determine target specific settings +diff -r -u gnustep-make-2.6.6/GNUmakefile.in gnustep-make-2.6.6.patched/GNUmakefile.in +--- gnustep-make-2.6.6/GNUmakefile.in 2013-09-20 12:13:15.000000000 +0600 ++++ gnustep-make-2.6.6.patched/GNUmakefile.in 2014-12-07 20:35:27.000000000 +0600 +@@ -173,7 +173,6 @@ + "$(makedir)/$(GNUSTEP_TARGET_CPU)" \ + "$(makedir)/$(GNUSTEP_TARGET_DIR)" \ + "$(makedir)/$(GNUSTEP_TARGET_LDIR)" \ +- "$(makedir)/Additional" \ + "$(makedir)/Auxiliary" \ + "$(makedir)/Master" \ + "$(makedir)/Instance" \ +@@ -314,7 +313,6 @@ + -rmdir "$(makedir)/Instance" + -rmdir "$(makedir)/Master" + -rmdir "$(makedir)/Auxiliary" +- -rmdir "$(makedir)/Additional" + -rmdir "$(makedir)/$(GNUSTEP_TARGET_LDIR)" + -rmdir "$(makedir)/$(GNUSTEP_TARGET_DIR)" + -rmdir "$(makedir)/$(GNUSTEP_TARGET_CPU)" +diff -r -u gnustep-make-2.6.6/gnustep-config.in gnustep-make-2.6.6.patched/gnustep-config.in +--- gnustep-make-2.6.6/gnustep-config.in 2013-07-02 16:06:24.000000000 +0600 ++++ gnustep-make-2.6.6.patched/gnustep-config.in 2014-12-09 21:29:49.000000000 +0600 +@@ -66,6 +66,7 @@ + echo " --variable=OBJCXX" + echo " --variable=GNUMAKE" + echo " --variable=GNUSTEP_MAKEFILES" ++ echo " --variable=NIX_GNUSTEP_MAKEFILES_ADDITIONAL" + echo " --variable=GNUSTEP_USER_DEFAULTS_DIR" + echo " --variable=GNUSTEP_HOST" + echo " --variable=GNUSTEP_HOST_CPU" +@@ -153,6 +154,8 @@ + + export GNUSTEP_MAKEFILES + ++export NIX_GNUSTEP_MAKEFILES_ADDITIONAL ++ + # + # If all they want to know if GNUSTEP_MAKEFILES or anything that + # we can compute only using GNUSTEP_MAKEFILES, we can print it out +@@ -168,6 +171,8 @@ + exit 0;; + --variable=GNUSTEP_MAKEFILES) echo "$GNUSTEP_MAKEFILES" + exit 0;; ++ --variable=NIX_GNUSTEP_MAKEFILES_ADDITIONAL) echo "$NIX_GNUSTEP_MAKEFILES_ADDITIONAL" ++ exit 0;; + --variable=GNUMAKE) echo "@GNUMAKE@" + exit 0;; + --debug-flags) @GNUMAKE@ -s -f "$GNUSTEP_MAKEFILES/empty.make" print-gnustep-make-objc-flags quiet=yes debug=yes 2>/dev/null +Only in gnustep-make-2.6.6.patched: gnustep-config.in~ +diff -r -u gnustep-make-2.6.6/GNUstep.csh.in gnustep-make-2.6.6.patched/GNUstep.csh.in +--- gnustep-make-2.6.6/GNUstep.csh.in 2011-05-03 13:40:10.000000000 +0600 ++++ gnustep-make-2.6.6.patched/GNUstep.csh.in 2014-12-09 20:14:05.000000000 +0600 +@@ -130,6 +130,10 @@ + setenv GNUSTEP_MAKEFILES "@GNUSTEP_MAKEFILES@" + endif + ++if ( ! ${?NIX_GNUSTEP_MAKEFILES_ADDITIONAL} ) then ++ setenv NIX_GNUSTEP_MAKEFILES_ADDITIONAL "@NIX_GNUSTEP_MAKEFILES_ADDITIONAL@" ++endif ++ + if ( "${GNUSTEP_MAKE_STRICT_V2_MODE}" == "yes" ) then + unsetenv GNUSTEP_USER_DIR + unsetenv GNUSTEP_USER_ROOT +Only in gnustep-make-2.6.6.patched: GNUstep.csh.in~ +diff -r -u gnustep-make-2.6.6/GNUstep.sh.in gnustep-make-2.6.6.patched/GNUstep.sh.in +--- gnustep-make-2.6.6/GNUstep.sh.in 2012-02-21 20:21:38.000000000 +0600 ++++ gnustep-make-2.6.6.patched/GNUstep.sh.in 2015-01-18 14:48:09.000000000 +0600 +@@ -173,7 +173,6 @@ + fi + export GNUSTEP_MAKEFILES + +- + if [ "$GNUSTEP_MAKE_STRICT_V2_MODE" = "yes" ]; then + # Make sure this is never set in gnustep-make v2 strict mode; it + # might have been set in the config file. +@@ -300,7 +299,7 @@ + # for each duplicate. When there are many duplicates it's faster to + # use print_unique_pathlist.sh first to remove them and skip the + # echos+greps later. +-GNUSTEP_TOOLS_PATHLIST=`$GNUSTEP_MAKEFILES/print_unique_pathlist.sh "$GNUSTEP_USER_TOOLS" "$GNUSTEP_LOCAL_TOOLS" "$GNUSTEP_NETWORK_TOOLS" "$GNUSTEP_SYSTEM_TOOLS" $fixup_paths` ++GNUSTEP_TOOLS_PATHLIST=$NIX_GNUSTEP_SYSTEM_TOOLS + + # Now, we check the paths in GNUSTEP_*_ADMIN_TOOLS. These paths + # should only be used by Administrators -- normal users don't have +@@ -313,7 +312,7 @@ + + # So we examine GNUSTEP_*_ADMIN_TOOLS; if we find any path in that + # list that exists and that we can write to, we add it to our PATH. +-for dir in "$GNUSTEP_SYSTEM_ADMIN_TOOLS" "$GNUSTEP_NETWORK_ADMIN_TOOLS" "$GNUSTEP_LOCAL_ADMIN_TOOLS" "$GNUSTEP_USER_ADMIN_TOOLS"; do ++for dir in $(echo "$NIX_GNUSTEP_SYSTEM_ADMIN_TOOLS" | tr ":" "\n"); do + if [ -d "$dir" -a -w "$dir" ]; then + # Only add the new dir if it's not already in GNUSTEP_TOOLS_PATHLIST + if (echo ":${GNUSTEP_TOOLS_PATHLIST}:" \ +@@ -356,7 +355,7 @@ + export PATH + + # Determine the library paths +-GNUSTEP_LIBRARIES_PATHLIST=`$GNUSTEP_MAKEFILES/print_unique_pathlist.sh "$GNUSTEP_USER_LIBRARIES" "$GNUSTEP_LOCAL_LIBRARIES" "$GNUSTEP_NETWORK_LIBRARIES" "$GNUSTEP_SYSTEM_LIBRARIES" $fixup_paths` ++GNUSTEP_LIBRARIES_PATHLIST=$NIX_GNUSTEP_SYSTEM_LIBRARIES + + old_IFS="$IFS" + IFS=: +@@ -486,7 +485,7 @@ + # + # Setup Java CLASSPATH and Guile GUILE_LOAD_PATH + # +-GNUSTEP_LIBRARY_PATHLIST=`$GNUSTEP_MAKEFILES/print_unique_pathlist.sh "$GNUSTEP_USER_LIBRARY" "$GNUSTEP_LOCAL_LIBRARY" "$GNUSTEP_NETWORK_LIBRARY" "$GNUSTEP_SYSTEM_LIBRARY" $fixup_paths` ++GNUSTEP_LIBRARY_PATHLIST=$NIX_GNUSTEP_SYSTEM_LIBRARY + + old_IFS="$IFS" + IFS=: +@@ -526,7 +525,7 @@ + # xxx/Library/Documentation/info, are found by the info browsing + # programs. To get this effect, we add those paths to INFOPATH. + # +-GNUSTEP_INFO_PATHLIST=`$GNUSTEP_MAKEFILES/print_unique_pathlist.sh "$GNUSTEP_USER_DOC_INFO" "$GNUSTEP_LOCAL_DOC_INFO" "$GNUSTEP_NETWORK_DOC_INFO" "$GNUSTEP_SYSTEM_DOC_INFO" $fixup_paths` ++GNUSTEP_INFO_PATHLIST=$NIX_GNUSTEP_SYSTEM_DOC_INFO + old_IFS="$IFS" + IFS=: + for dir in $GNUSTEP_INFO_PATHLIST; do +@@ -559,6 +558,7 @@ + + unset GNUSTEP_KEEP_CONFIG_FILE GNUSTEP_KEEP_USER_CONFIG_FILE + ++ + export GNUSTEP_CONFIG_FILE GNUSTEP_USER_CONFIG_FILE + + export GNUSTEP_USER_DEFAULTS_DIR +diff -r -u gnustep-make-2.6.6/GNUstep-strict-v2.conf.in gnustep-make-2.6.6.patched/GNUstep-strict-v2.conf.in +--- gnustep-make-2.6.6/GNUstep-strict-v2.conf.in 2008-01-15 20:35:36.000000000 +0600 ++++ gnustep-make-2.6.6.patched/GNUstep-strict-v2.conf.in 2014-12-07 22:04:56.000000000 +0600 +@@ -47,7 +47,6 @@ + # Traditionally, this is /usr/GNUstep/System/Library/Makefiles + GNUSTEP_MAKEFILES=@GNUSTEP_MAKEFILES@ + +- + # This is where the user home directories are. Only used to provide + # NSUserDirectory in gnustep-base. Never used anywhere else. + GNUSTEP_SYSTEM_USERS_DIR=@GNUSTEP_SYSTEM_USERS_DIR@ +diff -r -u gnustep-make-2.6.6/library-combo.make gnustep-make-2.6.6.patched/library-combo.make +--- gnustep-make-2.6.6/library-combo.make 2012-02-21 19:53:02.000000000 +0600 ++++ gnustep-make-2.6.6.patched/library-combo.make 2014-12-09 20:15:05.000000000 +0600 +@@ -142,7 +142,7 @@ + # + # Third-party foundations not using make package + # Our own foundation will install a base.make file into +-# $GNUSTEP_MAKEFILES/Additional/ to set the needed flags ++# $NIX_GNUSTEP_MAKEFILES_ADDITIONAL to set the needed flags + # + ifeq ($(FOUNDATION_LIB), nx) + # -framework Foundation is used both to find headers, and to link +@@ -166,7 +166,7 @@ + + # + # FIXME - Ask Helge to move this inside his libFoundation, and have +-# it installed as a $(GNUSTEP_MAKEFILES)/Additional/libFoundation.make ++# it installed as a $(NIX_GNUSTEP_MAKEFILES_ADDITIONAL)/libFoundation.make + # + ifeq ($(FOUNDATION_LIB),fd) + -include $(GNUSTEP_MAKEFILES)/libFoundation.make +@@ -193,7 +193,7 @@ + GUI_LIBS = + # + # Third-party GUI libraries - our own sets its flags into +-# $(GNUSTEP_MAKEFILES)/Additional/gui.make ++# $(NIX_GNUSTEP_MAKEFILES_ADDITIONAL)/gui.make + # + ifeq ($(GUI_LIB), nx) + GUI_DEFINE = -DNeXT_GUI_LIBRARY=1 +diff -r -u gnustep-make-2.6.6/rules.make gnustep-make-2.6.6.patched/rules.make +--- gnustep-make-2.6.6/rules.make 2013-07-04 16:05:44.000000000 +0600 ++++ gnustep-make-2.6.6.patched/rules.make 2014-12-09 21:31:04.000000000 +0600 +@@ -667,7 +667,9 @@ + exit 1$(END_ECHO) + endif + +-$(GNUSTEP_MAKEFILES)/Additional/*.make: ; ++ifneq ($(NIX_GNUSTEP_MAKEFILES_ADDITIONAL),) ++$(NIX_GNUSTEP_MAKEFILES_ADDITIONAL): ; ++endif + + $(GNUSTEP_MAKEFILES)/Master/*.make: ; + diff --git a/nixpkgs/pkgs/desktops/gnustep/make/gsmakeDerivation.nix b/nixpkgs/pkgs/desktops/gnustep/make/gsmakeDerivation.nix new file mode 100644 index 000000000000..580fbdc5d884 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnustep/make/gsmakeDerivation.nix @@ -0,0 +1,19 @@ +{ stdenv, make, makeWrapper, which }: +{ buildInputs ? [], ...} @ args: +stdenv.mkDerivation (args // { + buildInputs = [ makeWrapper make which ] ++ buildInputs; + + builder = ./builder.sh; + setupHook = ./setup-hook.sh; + + GNUSTEP_MAKEFILES = "${make}/share/GNUstep/Makefiles"; + + meta = { + homepage = "http://gnustep.org/"; + + license = stdenv.lib.licenses.lgpl2Plus; + + maintainers = with stdenv.lib.maintainers; [ ashalkhakov matthewbauer ]; + platforms = stdenv.lib.platforms.linux; + } // (if builtins.hasAttr "meta" args then args.meta else {}); +}) diff --git a/nixpkgs/pkgs/desktops/gnustep/make/setup-hook.sh b/nixpkgs/pkgs/desktops/gnustep/make/setup-hook.sh new file mode 100644 index 000000000000..b2b90f1e5222 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnustep/make/setup-hook.sh @@ -0,0 +1,77 @@ +# this path is used by some packages to install additional makefiles +export DESTDIR_GNUSTEP_MAKEFILES=$out/share/GNUstep/Makefiles + +installFlagsArray=( \ + "GNUSTEP_INSTALLATION_DOMAIN=SYSTEM" \ + "GNUSTEP_SYSTEM_APPS=$out/lib/GNUstep/Applications" \ + "GNUSTEP_SYSTEM_ADMIN_APPS=$out/lib/GNUstep/Applications" \ + "GNUSTEP_SYSTEM_WEB_APPS=$out/lib/GNUstep/WebApplications" \ + "GNUSTEP_SYSTEM_TOOLS=$out/bin" \ + "GNUSTEP_SYSTEM_ADMIN_TOOLS=$out/sbin" \ + "GNUSTEP_SYSTEM_LIBRARY=$out/lib/GNUstep" \ + "GNUSTEP_SYSTEM_HEADERS=$out/include" \ + "GNUSTEP_SYSTEM_LIBRARIES=$out/lib" \ + "GNUSTEP_SYSTEM_DOC=$out/share/GNUstep/Documentation" \ + "GNUSTEP_SYSTEM_DOC_MAN=$out/share/man" \ + "GNUSTEP_SYSTEM_DOC_INFO=$out/share/info" \ +) + +addEnvVars() { + local filename + + for filename in $1/share/GNUstep/Makefiles/Additional/*.make ; do + if case "${NIX_GNUSTEP_MAKEFILES_ADDITIONAL-}" in *"{$filename}"*) false;; *) true;; esac; then + export NIX_GNUSTEP_MAKEFILES_ADDITIONAL+=" $filename" + fi + done + + local tmp="$1/lib/GNUstep/Applications" + if [ -d "$tmp" ] && case "${NIX_GNUSTEP_SYSTEM_APPS-}" in *"${tmp}"*) false;; *) true;; esac; then + addToSearchPath NIX_GNUSTEP_SYSTEM_APPS "$tmp" + fi + tmp="$1/lib/GNUstep/Applications" + if [ -d "$tmp" ] && case "${NIX_GNUSTEP_SYSTEM_ADMIN_APPS-}" in *"${tmp}"*) false;; *) true;; esac; then + addToSearchPath NIX_GNUSTEP_SYSTEM_ADMIN_APPS "$tmp" + fi + tmp="$1/lib/GNUstep/WebApplications" + if [ -d "$tmp" ] && case "${NIX_GNUSTEP_SYSTEM_WEB_APPS-}" in *"${tmp}"*) false;; *) true;; esac; then + addToSearchPath NIX_GNUSTEP_SYSTEM_WEB_APPS "$tmp" + fi + tmp="$1/bin" + if [ -d "$tmp" ] && case "${NIX_GNUSTEP_SYSTEM_TOOLS-}" in *"${tmp}"*) false;; *) true;; esac; then + addToSearchPath NIX_GNUSTEP_SYSTEM_TOOLS "$tmp" + fi + tmp="$1/sbin" + if [ -d "$tmp" ] && case "${NIX_GNUSTEP_SYSTEM_ADMIN_TOOLS-}" in *"${tmp}"*) false;; *) true;; esac; then + addToSearchPath NIX_GNUSTEP_SYSTEM_ADMIN_TOOLS "$tmp" + fi + tmp="$1/lib/GNUstep" + if [ -d "$tmp" ] && case "${NIX_GNUSTEP_SYSTEM_LIBRARY-}" in *"${tmp}"*) false;; *) true;; esac; then + addToSearchPath NIX_GNUSTEP_SYSTEM_LIBRARY "$tmp" + fi + tmp="$1/include" + if [ -d "$tmp" ] && case "${NIX_GNUSTEP_SYSTEM_HEADERS-}" in *"${tmp}"*) false;; *) true;; esac; then + if [ -z "${NIX_GNUSTEP_SYSTEM_HEADERS-}" ]; then + export NIX_GNUSTEP_SYSTEM_HEADERS="$tmp" + else + export NIX_GNUSTEP_SYSTEM_HEADERS+=" $tmp" + fi + fi + tmp="$1/lib" + if [ -d "$tmp" ] && case "${NIX_GNUSTEP_SYSTEM_LIBRARIES-}" in *"${tmp}"*) false;; *) true;; esac; then + addToSearchPath NIX_GNUSTEP_SYSTEM_LIBRARIES "$tmp" + fi + tmp="$1/share/GNUstep/Documentation" + if [ -d "$tmp" ] && case "${NIX_GNUSTEP_SYSTEM_DOC-}" in *"${tmp}"*) false;; *) true;; esac; then + addToSearchPath NIX_GNUSTEP_SYSTEM_DOC "$tmp" + fi + tmp="$1/share/man" + if [ -d "$tmp" ] && case "${NIX_GNUSTEP_SYSTEM_DOC_MAN-}" in *"${tmp}"*) false;; *) true;; esac; then + addToSearchPath NIX_GNUSTEP_SYSTEM_DOC_MAN "$tmp" + fi + tmp="$1/share/info" + if [ -d "$tmp" ] && case "${NIX_GNUSTEP_SYSTEM_DOC_INFO-}" in *"${tmp}"*) false;; *) true;; esac; then + addToSearchPath NIX_GNUSTEP_SYSTEM_DOC_INFO "$tmp" + fi +} +addEnvHooks "$targetOffset" addEnvVars diff --git a/nixpkgs/pkgs/desktops/gnustep/make/wrapper.sh b/nixpkgs/pkgs/desktops/gnustep/make/wrapper.sh new file mode 100644 index 000000000000..1bc2e130d88d --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnustep/make/wrapper.sh @@ -0,0 +1,4 @@ +#!/bin/sh + +. $GNUSTEP_MAKEFILES/GNUstep.sh +$1 diff --git a/nixpkgs/pkgs/desktops/gnustep/projectcenter/default.nix b/nixpkgs/pkgs/desktops/gnustep/projectcenter/default.nix new file mode 100644 index 000000000000..abfdac1e7afb --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnustep/projectcenter/default.nix @@ -0,0 +1,23 @@ +{ fetchurl +, base, back, gsmakeDerivation, gui, gorm +, gnumake, gdb +}: +let + version = "0.6.2"; +in +gsmakeDerivation { + name = "projectcenter-${version}"; + src = fetchurl { + url = "ftp://ftp.gnustep.org/pub/gnustep/dev-apps/ProjectCenter-${version}.tar.gz"; + sha256 = "0wwlbpqf541apw192jb633d634zkpjhcrrkd1j80y9hihphll465"; + }; + + # NOTE: need a patch for ProjectCenter to help it locate some necessary tools: + # 1. Framework/PCProjectLauncher.m, locate gdb (say among NIX_GNUSTEP_SYSTEM_TOOLS) + # 2. Framework/PCProjectBuilder.m, locate gmake (similar) + propagatedBuildInputs = [ base back gui gnumake gdb gorm ]; + + meta = { + description = "GNUstep's integrated development environment"; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnustep/systempreferences/default.nix b/nixpkgs/pkgs/desktops/gnustep/systempreferences/default.nix new file mode 100644 index 000000000000..096520f08f36 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnustep/systempreferences/default.nix @@ -0,0 +1,17 @@ +{ back, base, gui, gsmakeDerivation, fetchurl }: +let + version = "1.2.0"; +in +gsmakeDerivation { + name = "system_preferences-${version}"; + src = fetchurl { + url = "ftp://ftp.gnustep.org/pub/gnustep/usr-apps/SystemPreferences-${version}.tar.gz"; + sha256 = "1fg7c3ihfgvl6n21rd17fs9ivx3l8ps874m80vz86n1callgs339"; + }; +# GNUSTEP_MAKEFILES = "${gnustep_make}/share/GNUstep/Makefiles"; + buildInputs = [ back base gui ]; +# propagatedBuildInputs = [ gnustep_back gnustep_base gnustep_gui ]; + meta = { + description = "The settings manager for the GNUstep environment and its applications"; + }; +} diff --git a/nixpkgs/pkgs/desktops/lumina/default.nix b/nixpkgs/pkgs/desktops/lumina/default.nix new file mode 100644 index 000000000000..10e75eea38f0 --- /dev/null +++ b/nixpkgs/pkgs/desktops/lumina/default.nix @@ -0,0 +1,26 @@ +{ pkgs, libsForQt5 }: + +let + packages = self: with self; { + + lumina = callPackage ./lumina { }; + lumina-calculator = callPackage ./lumina-calculator { }; + lumina-pdf = callPackage ./lumina-pdf { }; + + preRequisitePackages = [ + pkgs.fluxbox + pkgs.libsForQt5.kwindowsystem + pkgs.numlockx + pkgs.qt5.qtsvg + pkgs.xscreensaver + ]; + + corePackages = [ + lumina + lumina-calculator + lumina-pdf + ]; + + }; + +in pkgs.lib.makeScope libsForQt5.newScope packages diff --git a/nixpkgs/pkgs/desktops/lumina/lumina-calculator/default.nix b/nixpkgs/pkgs/desktops/lumina/lumina-calculator/default.nix new file mode 100644 index 000000000000..aa74be8d5f3b --- /dev/null +++ b/nixpkgs/pkgs/desktops/lumina/lumina-calculator/default.nix @@ -0,0 +1,32 @@ +{ stdenv, fetchFromGitHub, qmake, qtbase, qttools }: + +stdenv.mkDerivation rec { + pname = "lumina-calculator"; + version = "2019-04-27"; + + src = fetchFromGitHub { + owner = "lumina-desktop"; + repo = pname; + rev = "ccb792fc713aa7163fffd37fc20c83ffe9ca7523"; + sha256 = "0cdyz94znycsc3qxg5bmg51bwms7586d4ja1bsmj8cb9pd3lv980"; + }; + + sourceRoot = "source/src-qt5"; + + nativeBuildInputs = [ qmake qttools ]; + + buildInputs = [ qtbase ]; + + qmakeFlags = [ + "CONFIG+=WITH_I18N" + "LRELEASE=${stdenv.lib.getDev qttools}/bin/lrelease" + ]; + + meta = with stdenv.lib; { + description = "Scientific calculator for the Lumina Desktop"; + homepage = "https://github.com/lumina-desktop/lumina-calculator"; + license = licenses.bsd3; + platforms = platforms.unix; + maintainers = [ maintainers.romildo ]; + }; +} diff --git a/nixpkgs/pkgs/desktops/lumina/lumina-pdf/default.nix b/nixpkgs/pkgs/desktops/lumina/lumina-pdf/default.nix new file mode 100644 index 000000000000..af9d469e1be1 --- /dev/null +++ b/nixpkgs/pkgs/desktops/lumina/lumina-pdf/default.nix @@ -0,0 +1,38 @@ +{ stdenv, fetchFromGitHub, qmake, qtbase, qttools, poppler }: + +stdenv.mkDerivation rec { + pname = "lumina-pdf"; + version = "2019-04-27"; + + src = fetchFromGitHub { + owner = "lumina-desktop"; + repo = pname; + rev = "645ed591ef91c3607d3ab87dd86f7acfd08b05c9"; + sha256 = "0gl943jb9c9rcgb5wksx3946hwlifghfd27r97skm9is8ih6k0vn"; + }; + + sourceRoot = "source/src-qt5"; + + nativeBuildInputs = [ qmake qttools ]; + + buildInputs = [ qtbase poppler ]; + + postPatch = '' + sed -i '1i\#include <memory>\' Renderer-poppler.cpp + ''; + + qmakeFlags = [ + "CONFIG+=WITH_I18N" + "LRELEASE=${stdenv.lib.getDev qttools}/bin/lrelease" + ]; + + enableParallelBuilding = false; + + meta = with stdenv.lib; { + description = "PDF viewer for the Lumina Desktop"; + homepage = "https://github.com/lumina-desktop/lumina-pdf"; + license = licenses.bsd3; + platforms = platforms.unix; + maintainers = [ maintainers.romildo ]; + }; +} diff --git a/nixpkgs/pkgs/desktops/lumina/lumina/LuminaOS-NixOS.cpp.patch b/nixpkgs/pkgs/desktops/lumina/lumina/LuminaOS-NixOS.cpp.patch new file mode 100644 index 000000000000..6ddd9c76591b --- /dev/null +++ b/nixpkgs/pkgs/desktops/lumina/lumina/LuminaOS-NixOS.cpp.patch @@ -0,0 +1,26 @@ +diff --git a/src-qt5/core/libLumina/LuminaOS-NixOS.cpp b/src-qt5/core/libLumina/LuminaOS-NixOS.cpp +index b92d1b0..441b1bf 100644 +--- a/src-qt5/core/libLumina/LuminaOS-NixOS.cpp ++++ b/src-qt5/core/libLumina/LuminaOS-NixOS.cpp +@@ -13,17 +13,17 @@ + //can't read xbrightness settings - assume invalid until set + static int screenbrightness = -1; + +-QString LOS::OSName(){ return "Gentoo Linux"; } ++QString LOS::OSName(){ return "NixOS"; } + + //OS-specific prefix(s) + // NOTE: PREFIX, L_ETCDIR, L_SHAREDIR are defined in the OS-detect.pri project file and passed in + QString LOS::LuminaShare(){ return (L_SHAREDIR+"/lumina-desktop/"); } //Install dir for Lumina share files +-QString LOS::AppPrefix(){ return "/usr/"; } //Prefix for applications +-QString LOS::SysPrefix(){ return "/"; } //Prefix for system ++QString LOS::AppPrefix(){ return PREFIX+"/usr"; } //Prefix for applications ++QString LOS::SysPrefix(){ return PREFIX; } //Prefix for system + + //OS-specific application shortcuts (*.desktop files) + QString LOS::ControlPanelShortcut(){ return ""; } //system control panel +-QString LOS::AppStoreShortcut(){ return LOS::AppPrefix() + "/share/applications/porthole.desktop"; } //graphical app/pkg manager ++QString LOS::AppStoreShortcut(){ return ""; } //graphical app/pkg manager + //OS-specific RSS feeds (Format: QStringList[ <name>::::<url> ]; ) + QStringList LOS::RSSFeeds(){ return QStringList(); } + diff --git a/nixpkgs/pkgs/desktops/lumina/lumina/avoid-absolute-path-on-sessdir.patch b/nixpkgs/pkgs/desktops/lumina/lumina/avoid-absolute-path-on-sessdir.patch new file mode 100644 index 000000000000..f5ef6cba41f6 --- /dev/null +++ b/nixpkgs/pkgs/desktops/lumina/lumina/avoid-absolute-path-on-sessdir.patch @@ -0,0 +1,11 @@ +diff -Naur lumina-1.0.0-Release-p1-OLD/src-qt5/OS-detect.pri lumina-1.0.0-Release-p1-PATCH/src-qt5/OS-detect.pri +--- lumina-1.0.0-Release-p1-OLD/src-qt5/OS-detect.pri 2016-08-09 12:04:30.000000000 -0300 ++++ lumina-1.0.0-Release-p1-PATCH/src-qt5/OS-detect.pri 2016-08-13 17:32:18.272137900 -0300 +@@ -55,7 +55,6 @@ + #Use the defaults for everything else + + }else : linux-*{ +- L_SESSDIR=/usr/share/xsessions + OS=Linux + LIBS += -L/usr/local/lib -L/usr/lib -L/lib + diff --git a/nixpkgs/pkgs/desktops/lumina/lumina/default.nix b/nixpkgs/pkgs/desktops/lumina/lumina/default.nix new file mode 100644 index 000000000000..048b559c34a0 --- /dev/null +++ b/nixpkgs/pkgs/desktops/lumina/lumina/default.nix @@ -0,0 +1,89 @@ +{ stdenv, + fetchFromGitHub, + desktop-file-utils, + fluxbox, + numlockx, + qmake, + qtbase, + qtmultimedia, + qtsvg, + qttools, + qtx11extras, + xorg, + xscreensaver, + wrapGAppsHook +}: + +stdenv.mkDerivation rec { + pname = "lumina"; + version = "1.5.0"; + + src = fetchFromGitHub { + owner = "lumina-desktop"; + repo = pname; + rev = "v${version}"; + sha256 = "0rj2gzifr98db7i82cg3hg7l5yfik810pjpawg6n54qbzq987z25"; + }; + + nativeBuildInputs = [ + qmake + qttools + wrapGAppsHook + ]; + + buildInputs = [ + xorg.libxcb + xorg.libXcursor + xorg.libXdamage + xorg.xcbutilwm + xorg.xcbutilimage + qtbase + qtsvg + qtmultimedia + qtx11extras + fluxbox + xscreensaver + desktop-file-utils + numlockx + ]; + + patches = [ + ./avoid-absolute-path-on-sessdir.patch + ./LuminaOS-NixOS.cpp.patch + ]; + + prePatch = '' + # Copy Gentoo setup as NixOS setup and then patch it + # TODO: write a complete NixOS setup? + cp -a src-qt5/core/libLumina/LuminaOS-Gentoo.cpp src-qt5/core/libLumina/LuminaOS-NixOS.cpp + ''; + + postPatch = '' + # Fix plugin dir + substituteInPlace src-qt5/core/lumina-theme-engine/lthemeengine.pri \ + --replace "\$\$[QT_INSTALL_PLUGINS]" "$out/$qtPluginPrefix" + + # Fix location of fluxbox styles + substituteInPlace src-qt5/core-utils/lumina-config/pages/page_fluxbox_settings.cpp \ + --replace 'LOS::AppPrefix()+"share/fluxbox' "\"${fluxbox}/share/fluxbox" + ''; + + qmakeFlags = [ + "LINUX_DISTRO=NixOS" + "CONFIG+=WITH_I18N" + "LRELEASE=${stdenv.lib.getDev qttools}/bin/lrelease" + ]; + + meta = with stdenv.lib; { + description = "A lightweight, portable desktop environment"; + longDescription = '' + The Lumina Desktop Environment is a lightweight system interface + that is designed for use on any Unix-like operating system. It + is based on QT5. + ''; + homepage = "https://lumina-desktop.org"; + license = licenses.bsd3; + platforms = platforms.unix; + maintainers = [ maintainers.romildo ]; + }; +} diff --git a/nixpkgs/pkgs/desktops/lxde/core/lxappearance/default.nix b/nixpkgs/pkgs/desktops/lxde/core/lxappearance/default.nix new file mode 100644 index 000000000000..ea64b75214f6 --- /dev/null +++ b/nixpkgs/pkgs/desktops/lxde/core/lxappearance/default.nix @@ -0,0 +1,26 @@ +{ stdenv, fetchurl, intltool, pkgconfig, libX11, gtk2, withGtk3 ? false, gtk3 }: + +stdenv.mkDerivation rec { + name = "lxappearance-0.6.3"; + + src = fetchurl{ + url = "mirror://sourceforge/project/lxde/LXAppearance/${name}.tar.xz"; + sha256 = "0f4bjaamfxxdr9civvy55pa6vv9dx1hjs522gjbbgx7yp1cdh8kj"; + }; + + nativeBuildInputs = [ pkgconfig intltool ]; + + buildInputs = [ libX11 (if withGtk3 then gtk3 else gtk2) ]; + + patches = [ ./lxappearance-0.6.3-xdg.system.data.dirs.patch ]; + + configureFlags = stdenv.lib.optional withGtk3 "--enable-gtk3"; + + meta = { + description = "A lightweight program for configuring the theme and fonts of gtk applications"; + homepage = "https://lxde.org/"; + maintainers = [ stdenv.lib.maintainers.hinton ]; + platforms = stdenv.lib.platforms.linux; + license = stdenv.lib.licenses.gpl2; + }; +} diff --git a/nixpkgs/pkgs/desktops/lxde/core/lxappearance/lxappearance-0.6.3-xdg.system.data.dirs.patch b/nixpkgs/pkgs/desktops/lxde/core/lxappearance/lxappearance-0.6.3-xdg.system.data.dirs.patch new file mode 100644 index 000000000000..a63882aa2a7a --- /dev/null +++ b/nixpkgs/pkgs/desktops/lxde/core/lxappearance/lxappearance-0.6.3-xdg.system.data.dirs.patch @@ -0,0 +1,27 @@ +--- lxappearance-0.6.3/src/widget-theme.c.orig 2016-02-20 20:48:38.000000000 -0200 ++++ lxappearance-0.6.3/src/widget-theme.c 2017-06-09 17:37:53.369555085 -0300 +@@ -66,6 +66,7 @@ + static void load_themes() + { + char* dir; ++ const gchar * const * dirs; + GSList* themes = NULL, *l; + GtkTreeIter sel_it = {0}; + GtkTreeSelection* tree_sel; +@@ -85,6 +86,16 @@ + themes = load_themes_in_dir(dir, themes); + g_free(dir); + ++ /* load from sharedata theme dirs */ ++ dirs = g_get_system_data_dirs(); ++ while (*dirs != NULL) ++ { ++ dir = g_build_filename(*dirs, "themes", NULL); ++ themes = load_themes_in_dir(dir, themes); ++ g_free(dir); ++ dirs++; ++ } ++ + themes = g_slist_sort(themes, (GCompareFunc)strcmp); + for(l = themes; l; l=l->next) + { diff --git a/nixpkgs/pkgs/desktops/lxde/core/lxmenu-data.nix b/nixpkgs/pkgs/desktops/lxde/core/lxmenu-data.nix new file mode 100644 index 000000000000..572d86b652ee --- /dev/null +++ b/nixpkgs/pkgs/desktops/lxde/core/lxmenu-data.nix @@ -0,0 +1,20 @@ +{ stdenv, fetchurl, intltool }: + +stdenv.mkDerivation rec { + pname = "lxmenu-data"; + version = "0.1.5"; + + src = fetchurl { + url = "mirror://sourceforge/lxde/${pname}-${version}.tar.xz"; + sha256 = "9fe3218d2ef50b91190162f4f923d6524c364849f87bcda8b4ed8eb59b80bab8"; + }; + + buildInputs = [ intltool ]; + + meta = { + homepage = "https://lxde.org/"; + license = stdenv.lib.licenses.gpl2; + description = "Freedesktop.org desktop menus for LXDE"; + platforms = stdenv.lib.platforms.linux; + }; +} diff --git a/nixpkgs/pkgs/desktops/lxde/core/lxpanel/default.nix b/nixpkgs/pkgs/desktops/lxde/core/lxpanel/default.nix new file mode 100644 index 000000000000..20b5a35fc309 --- /dev/null +++ b/nixpkgs/pkgs/desktops/lxde/core/lxpanel/default.nix @@ -0,0 +1,28 @@ +{ stdenv, fetchurl, pkgconfig, gettext, m4, intltool, libxmlxx, keybinder +, gtk2, libX11, libfm, libwnck, libXmu, libXpm, cairo, gdk-pixbuf +, menu-cache, lxmenu-data, wirelesstools +, supportAlsa ? false, alsaLib +}: + +stdenv.mkDerivation rec { + name = "lxpanel-0.9.3"; + + src = fetchurl { + url = "mirror://sourceforge/lxde/${name}.tar.xz"; + sha256 = "1ccgv7jgl3y865cpb6w7baaz7468fxncm83bqxlwyni5bwhglb1l"; + }; + + nativeBuildInputs = [ pkgconfig gettext m4 intltool libxmlxx ]; + buildInputs = [ + keybinder gtk2 libX11 libfm libwnck libXmu libXpm cairo gdk-pixbuf + menu-cache lxmenu-data m4 wirelesstools + ] ++ stdenv.lib.optional supportAlsa alsaLib; + + meta = { + description = "Lightweight X11 desktop panel for LXDE"; + homepage = "https://lxde.org/"; + license = stdenv.lib.licenses.gpl2; + maintainers = [ stdenv.lib.maintainers.ryneeverett ]; + platforms = stdenv.lib.platforms.linux; + }; +} diff --git a/nixpkgs/pkgs/desktops/lxde/core/lxrandr/default.nix b/nixpkgs/pkgs/desktops/lxde/core/lxrandr/default.nix new file mode 100644 index 000000000000..421c999ea2f9 --- /dev/null +++ b/nixpkgs/pkgs/desktops/lxde/core/lxrandr/default.nix @@ -0,0 +1,23 @@ +{ stdenv, fetchurl, pkgconfig, intltool, gtk2, libX11, xrandr, withGtk3 ? false, gtk3 }: + +stdenv.mkDerivation rec { + name = "lxrandr-0.3.2"; + + src = fetchurl { + url = "mirror://sourceforge/lxde/${name}.tar.xz"; + sha256 = "04n3vgh3ix12p8jfs4w0dyfq3anbjy33h7g53wbbqqc0f74xyplb"; + }; + + configureFlags = stdenv.lib.optional withGtk3 "--enable-gtk3"; + + nativeBuildInputs = [ pkgconfig intltool ]; + buildInputs = [ libX11 (if withGtk3 then gtk3 else gtk2) xrandr ]; + + meta = with stdenv.lib; { + description = "LXRandR is the standard screen manager of LXDE."; + homepage = "https://lxde.org/"; + license = stdenv.lib.licenses.gpl2; + maintainers = with maintainers; [ rawkode ]; + platforms = stdenv.lib.platforms.linux; + }; +} diff --git a/nixpkgs/pkgs/desktops/lxde/core/lxtask/default.nix b/nixpkgs/pkgs/desktops/lxde/core/lxtask/default.nix new file mode 100644 index 000000000000..2bb281494bd7 --- /dev/null +++ b/nixpkgs/pkgs/desktops/lxde/core/lxtask/default.nix @@ -0,0 +1,32 @@ +{ stdenv, fetchurl, pkgconfig, intltool, gtk3, libintl }: + +stdenv.mkDerivation rec { + pname = "lxtask"; + version = "0.1.9"; + + src = fetchurl { + url = "mirror://sourceforge/lxde/${pname}-${version}.tar.xz"; + sha256 = "0cv4hx5dg01hbyi5p10pl78n0a40xajpq4wx9c7886pkmpq8isj1"; + }; + + nativeBuildInputs = [ pkgconfig intltool ]; + + buildInputs = [ gtk3 libintl ]; + + configureFlags = [ "--enable-gtk3" ]; + + meta = { + description = "Lightweight and desktop independent task manager"; + longDescription = '' + LXTask is a lightweight task manager derived from xfce4 task manager + with all xfce4 dependencies removed, some bugs fixed, and some + improvement of UI. Although being part of LXDE, the Lightweight X11 + Desktop Environment, it's totally desktop independent and only + requires pure GTK. + ''; + homepage = "https://wiki.lxde.org/en/LXTask"; + license = stdenv.lib.licenses.gpl2Plus; + platforms = stdenv.lib.platforms.unix; + maintainers = [ stdenv.lib.maintainers.romildo ]; + }; +} diff --git a/nixpkgs/pkgs/desktops/lxqt/compton-conf/default.nix b/nixpkgs/pkgs/desktops/lxqt/compton-conf/default.nix new file mode 100644 index 000000000000..fe44b707f76e --- /dev/null +++ b/nixpkgs/pkgs/desktops/lxqt/compton-conf/default.nix @@ -0,0 +1,39 @@ +{ lib, mkDerivation, fetchFromGitHub, cmake, pkgconfig, qtbase, qttools, lxqt, + libconfig }: + +mkDerivation rec { + pname = "compton-conf"; + version = "0.14.1"; + + src = fetchFromGitHub { + owner = "lxqt"; + repo = pname; + rev = version; + sha256 = "0bx21r83ahmsqf7bm1h17pi4y9js1iqsv7nwnlq58rc0ddkkhcdb"; + }; + + nativeBuildInputs = [ + cmake + pkgconfig + lxqt.lxqt-build-tools + ]; + + buildInputs = [ + qtbase + qttools + libconfig + ]; + + preConfigure = '' + substituteInPlace autostart/CMakeLists.txt \ + --replace "DESTINATION \"\''${LXQT_ETC_XDG_DIR}" "DESTINATION \"etc/xdg" \ + ''; + + meta = with lib; { + description = "GUI configuration tool for compton X composite manager"; + homepage = "https://github.com/lxqt/compton-conf"; + license = licenses.lgpl21; + platforms = with platforms; unix; + maintainers = with maintainers; [ romildo ]; + }; +} diff --git a/nixpkgs/pkgs/desktops/lxqt/default.nix b/nixpkgs/pkgs/desktops/lxqt/default.nix new file mode 100644 index 000000000000..6b03c2a6c9e8 --- /dev/null +++ b/nixpkgs/pkgs/desktops/lxqt/default.nix @@ -0,0 +1,111 @@ +{ pkgs, makeScope, libsForQt5 }: + +let + packages = self: with self; { + + # For compiling information, see: + # - https://github.com/lxqt/lxqt/wiki/Building-from-source + + ### BASE + libqtxdg = callPackage ./libqtxdg { }; + lxqt-build-tools = callPackage ./lxqt-build-tools { }; + libsysstat = callPackage ./libsysstat { }; + liblxqt = callPackage ./liblxqt { }; + + ### CORE 1 + libfm-qt = callPackage ./libfm-qt { }; + lxqt-about = callPackage ./lxqt-about { }; + lxqt-admin = callPackage ./lxqt-admin { }; + lxqt-config = callPackage ./lxqt-config { }; + lxqt-globalkeys = callPackage ./lxqt-globalkeys { }; + lxqt-notificationd = callPackage ./lxqt-notificationd { }; + lxqt-openssh-askpass = callPackage ./lxqt-openssh-askpass { }; + lxqt-policykit = callPackage ./lxqt-policykit { }; + lxqt-powermanagement = callPackage ./lxqt-powermanagement { }; + lxqt-qtplugin = callPackage ./lxqt-qtplugin { }; + lxqt-session = callPackage ./lxqt-session { }; + lxqt-sudo = callPackage ./lxqt-sudo { }; + lxqt-themes = callPackage ./lxqt-themes { }; + pavucontrol-qt = libsForQt5.callPackage ./pavucontrol-qt { }; + qtermwidget = callPackage ./qtermwidget { }; + + ### CORE 2 + lxqt-panel = callPackage ./lxqt-panel { }; + lxqt-runner = callPackage ./lxqt-runner { }; + pcmanfm-qt = callPackage ./pcmanfm-qt { }; + + ### OPTIONAL + qterminal = callPackage ./qterminal { }; + compton-conf = pkgs.qt5.callPackage ./compton-conf { }; + obconf-qt = callPackage ./obconf-qt { }; + lximage-qt = callPackage ./lximage-qt { }; + qps = callPackage ./qps { }; + screengrab = callPackage ./screengrab { }; + qlipper = callPackage ./qlipper { }; + lxqt-archiver = callPackage ./lxqt-archiver { }; + + preRequisitePackages = [ + pkgs.gvfs # virtual file systems support for PCManFM-QT + pkgs.libsForQt5.kwindowsystem # provides some QT5 plugins needed by lxqt-panel + pkgs.libsForQt5.libkscreen # provides plugins for screen management software + pkgs.libfm + pkgs.libfm-extra + pkgs.lxmenu-data + pkgs.menu-cache + pkgs.openbox # default window manager + pkgs.qt5.qtsvg # provides QT5 plugins for svg icons + ]; + + corePackages = [ + ### BASE + libqtxdg + libsysstat + liblxqt + + ### CORE 1 + libfm-qt + lxqt-about + lxqt-admin + lxqt-config + lxqt-globalkeys + lxqt-notificationd + lxqt-openssh-askpass + lxqt-policykit + lxqt-powermanagement + lxqt-qtplugin + lxqt-session + lxqt-sudo + lxqt-themes + pavucontrol-qt + + ### CORE 2 + lxqt-panel + lxqt-runner + pcmanfm-qt + ]; + + optionalPackages = [ + ### LXQt project + qterminal + compton-conf + obconf-qt + lximage-qt + lxqt-archiver + + ### QtDesktop project + qps + screengrab + + ### Qlipper + qlipper + + ### Default icon theme + pkgs.oxygen-icons5 + + ### Screen saver + pkgs.xscreensaver + ]; + + }; + +in makeScope libsForQt5.newScope packages diff --git a/nixpkgs/pkgs/desktops/lxqt/libfm-qt/default.nix b/nixpkgs/pkgs/desktops/lxqt/libfm-qt/default.nix new file mode 100644 index 000000000000..d383b46a9aed --- /dev/null +++ b/nixpkgs/pkgs/desktops/lxqt/libfm-qt/default.nix @@ -0,0 +1,43 @@ +{ + lib, mkDerivation, fetchFromGitHub, cmake, pkgconfig, lxqt-build-tools, + pcre, libexif, xorg, libfm, menu-cache, + qtx11extras, qttools +}: + +mkDerivation rec { + pname = "libfm-qt-unstable"; + version = "2019-09-22"; + + src = fetchFromGitHub { + owner = "lxqt"; + repo = "libfm-qt"; + rev = "7c94e9efb996df0602f1f2b34b0216ba9b6df498"; + sha256 = "1fnli2kh7n4hxmqwcb1n06lyk67d9a2fx6z70gas5jzym7r2h5vw"; + }; + + nativeBuildInputs = [ + cmake + pkgconfig + lxqt-build-tools + ]; + + buildInputs = [ + pcre + libexif + xorg.libpthreadstubs + xorg.libxcb + xorg.libXdmcp + qtx11extras + qttools + libfm + menu-cache + ]; + + meta = with lib; { + description = "Core library of PCManFM-Qt (Qt binding for libfm)"; + homepage = "https://github.com/lxqt/libfm-qt"; + license = licenses.lgpl21; + platforms = with platforms; unix; + maintainers = with maintainers; [ romildo ]; + }; +} diff --git a/nixpkgs/pkgs/desktops/lxqt/liblxqt/default.nix b/nixpkgs/pkgs/desktops/lxqt/liblxqt/default.nix new file mode 100644 index 000000000000..ec7fe0a76652 --- /dev/null +++ b/nixpkgs/pkgs/desktops/lxqt/liblxqt/default.nix @@ -0,0 +1,41 @@ +{ lib, mkDerivation, fetchFromGitHub, cmake, lxqt-build-tools, qtx11extras, + qttools, qtsvg, libqtxdg, polkit-qt, kwindowsystem, xorg }: + +mkDerivation rec { + pname = "liblxqt"; + version = "0.14.1"; + + src = fetchFromGitHub { + owner = "lxqt"; + repo = pname; + rev = version; + sha256 = "0g2502lcws5j74p82qhfryz9n51cvi85hb50r5s227xhkv91q65k"; + }; + + nativeBuildInputs = [ + cmake + lxqt-build-tools + ]; + + buildInputs = [ + qtx11extras + qttools + qtsvg + polkit-qt + kwindowsystem + libqtxdg + xorg.libXScrnSaver + ]; + + postPatch = '' + sed -i "s|\''${POLKITQT-1_POLICY_FILES_INSTALL_DIR}|''${out}/share/polkit-1/actions|" CMakeLists.txt + ''; + + meta = with lib; { + description = "Core utility library for all LXQt components"; + homepage = "https://github.com/lxqt/liblxqt"; + license = licenses.lgpl21Plus; + platforms = platforms.linux; + maintainers = with maintainers; [ romildo ]; + }; +} diff --git a/nixpkgs/pkgs/desktops/lxqt/libqtxdg/default.nix b/nixpkgs/pkgs/desktops/lxqt/libqtxdg/default.nix new file mode 100644 index 000000000000..14bb21e14695 --- /dev/null +++ b/nixpkgs/pkgs/desktops/lxqt/libqtxdg/default.nix @@ -0,0 +1,33 @@ +{ lib, mkDerivation, fetchFromGitHub, cmake, qtbase, qtsvg, lxqt-build-tools }: + +mkDerivation rec { + pname = "libqtxdg"; + version = "3.4.0"; + + src = fetchFromGitHub { + owner = "lxqt"; + repo = pname; + rev = version; + sha256 = "16jqnpc740a6phq7vcgy85hl7253yzyw4m5h71r0vijk79ir73b5"; + }; + + nativeBuildInputs = [ cmake lxqt-build-tools ]; + + buildInputs = [ qtbase qtsvg ]; + + preConfigure = '' + cmakeFlagsArray+=( + "-DQTXDGX_ICONENGINEPLUGIN_INSTALL_PATH=$out/$qtPluginPrefix" + "-DCMAKE_INSTALL_INCLUDEDIR=include" + "-DCMAKE_INSTALL_LIBDIR=lib" + ) + ''; + + meta = with lib; { + description = "Qt implementation of freedesktop.org xdg specs"; + homepage = "https://github.com/lxqt/libqtxdg"; + license = licenses.lgpl21; + platforms = platforms.linux; + maintainers = with maintainers; [ romildo ]; + }; +} diff --git a/nixpkgs/pkgs/desktops/lxqt/libsysstat/default.nix b/nixpkgs/pkgs/desktops/lxqt/libsysstat/default.nix new file mode 100644 index 000000000000..0e63d32c746e --- /dev/null +++ b/nixpkgs/pkgs/desktops/lxqt/libsysstat/default.nix @@ -0,0 +1,25 @@ +{ lib, mkDerivation, fetchFromGitHub, cmake, qtbase, lxqt-build-tools }: + +mkDerivation rec { + pname = "libsysstat"; + version = "0.4.2"; + + src = fetchFromGitHub { + owner = "lxqt"; + repo = pname; + rev = version; + sha256 = "10h9n7km7yx8bnmzxi4nn1yqq03hizjkrx4745j0mczy7niiffsz"; + }; + + nativeBuildInputs = [ cmake lxqt-build-tools ]; + + buildInputs = [ qtbase ]; + + meta = with lib; { + description = "Library used to query system info and statistics"; + homepage = "https://github.com/lxqt/libsysstat"; + license = licenses.lgpl21Plus; + platforms = with platforms; unix; + maintainers = with maintainers; [ romildo ]; + }; +} diff --git a/nixpkgs/pkgs/desktops/lxqt/lximage-qt/default.nix b/nixpkgs/pkgs/desktops/lxqt/lximage-qt/default.nix new file mode 100644 index 000000000000..e47a9ec1b48a --- /dev/null +++ b/nixpkgs/pkgs/desktops/lxqt/lximage-qt/default.nix @@ -0,0 +1,39 @@ +{ lib, mkDerivation, fetchFromGitHub, cmake, pkgconfig, qtbase, qttools, + qtx11extras, qtsvg, xorg, lxqt-build-tools, libfm-qt, libexif }: + +mkDerivation rec { + pname = "lximage-qt"; + version = "0.14.1"; + + src = fetchFromGitHub { + owner = "lxqt"; + repo = pname; + rev = version; + sha256 = "175l2w5w6iag01v05jq90pxx0al24wpw3mgsbcgqhl4z6h860r32"; + }; + + nativeBuildInputs = [ + cmake + pkgconfig + lxqt-build-tools + ]; + + buildInputs = [ + qtbase + qttools + qtx11extras + qtsvg + libfm-qt + xorg.libpthreadstubs + xorg.libXdmcp + libexif + ]; + + meta = with lib; { + description = "The image viewer and screenshot tool for lxqt"; + homepage = "https://github.com/lxqt/lximage-qt"; + license = licenses.gpl2; + platforms = with platforms; unix; + maintainers = with maintainers; [ romildo ]; + }; +} diff --git a/nixpkgs/pkgs/desktops/lxqt/lxqt-about/default.nix b/nixpkgs/pkgs/desktops/lxqt/lxqt-about/default.nix new file mode 100644 index 000000000000..19a06925b3ed --- /dev/null +++ b/nixpkgs/pkgs/desktops/lxqt/lxqt-about/default.nix @@ -0,0 +1,35 @@ +{ lib, mkDerivation, fetchFromGitHub, cmake, lxqt-build-tools, qtx11extras, qttools, qtsvg, kwindowsystem, liblxqt, libqtxdg }: + +mkDerivation rec { + pname = "lxqt-about"; + version = "0.14.1"; + + src = fetchFromGitHub { + owner = "lxqt"; + repo = pname; + rev = version; + sha256 = "0dj2rhbhnkzmv1iqqyq0bcp03imwnvxdr7rnpqnrs9kkjacm8zvr"; + }; + + nativeBuildInputs = [ + cmake + lxqt-build-tools + ]; + + buildInputs = [ + qtx11extras + qttools + qtsvg + kwindowsystem + liblxqt + libqtxdg + ]; + + meta = with lib; { + description = "Dialogue window providing information about LXQt and the system it's running on"; + homepage = "https://github.com/lxqt/lxqt-about"; + license = licenses.lgpl21; + platforms = platforms.linux; + maintainers = with maintainers; [ romildo ]; + }; +} diff --git a/nixpkgs/pkgs/desktops/lxqt/lxqt-admin/default.nix b/nixpkgs/pkgs/desktops/lxqt/lxqt-admin/default.nix new file mode 100644 index 000000000000..0a9ef8cfb840 --- /dev/null +++ b/nixpkgs/pkgs/desktops/lxqt/lxqt-admin/default.nix @@ -0,0 +1,41 @@ +{ lib, mkDerivation, fetchFromGitHub, cmake, lxqt-build-tools, qtx11extras, qttools, qtsvg, kwindowsystem, liblxqt, libqtxdg, polkit-qt }: + +mkDerivation rec { + pname = "lxqt-admin"; + version = "0.14.1"; + + src = fetchFromGitHub { + owner = "lxqt"; + repo = pname; + rev = version; + sha256 = "121qj46app2bqdr24g5sz2mdjfd9w86wpgkwap46s0zgxm4li44i"; + }; + + nativeBuildInputs = [ + cmake + lxqt-build-tools + ]; + + buildInputs = [ + qtx11extras + qttools + qtsvg + kwindowsystem + liblxqt + libqtxdg + polkit-qt + ]; + + postPatch = '' + sed "s|\''${POLKITQT-1_POLICY_FILES_INSTALL_DIR}|''${out}/share/polkit-1/actions|" \ + -i lxqt-admin-user/CMakeLists.txt + ''; + + meta = with lib; { + description = "LXQt system administration tool"; + homepage = "https://github.com/lxqt/lxqt-admin"; + license = licenses.lgpl21; + platforms = platforms.linux; + maintainers = with maintainers; [ romildo ]; + }; +} diff --git a/nixpkgs/pkgs/desktops/lxqt/lxqt-archiver/default.nix b/nixpkgs/pkgs/desktops/lxqt/lxqt-archiver/default.nix new file mode 100644 index 000000000000..2c4d040a432b --- /dev/null +++ b/nixpkgs/pkgs/desktops/lxqt/lxqt-archiver/default.nix @@ -0,0 +1,40 @@ +{ lib, mkDerivation, fetchFromGitHub, cmake, pkgconfig, lxqt-build-tools, json-glib, libfm-qt, qtbase, qttools, qtx11extras }: + +mkDerivation rec { + # pname = "lxqt-archiver"; + pname = "lxqt-archiver-unstable"; + version = "2019-09-25"; + + src = fetchFromGitHub { + owner = "lxqt"; + repo = "lxqt-archiver"; + rev = "62501255434b2ba6a8fd043a5af13dc0df038a5b"; + sha256 = "1af58k68karmnay7xgngzlmcgkmvx6hay5m1xbl5id9hh16n20in"; + }; + + nativeBuildInputs = [ + cmake + pkgconfig + lxqt-build-tools + ]; + + buildInputs = [ + json-glib + libfm-qt + qtbase + qttools + qtx11extras + ]; + + cmakeFlags = [ "-DPULL_TRANSLATIONS=NO" ]; + + hardeningDisable = [ "format" ]; + + meta = with lib; { + description = "Archive tool for the LXQt desktop environment"; + homepage = "https://github.com/lxqt/lxqt-archiver/"; + license = licenses.gpl2; + platforms = with platforms; unix; + maintainers = with maintainers; [ jchw ]; + }; +} diff --git a/nixpkgs/pkgs/desktops/lxqt/lxqt-build-tools/LXQtConfigVars.cmake b/nixpkgs/pkgs/desktops/lxqt/lxqt-build-tools/LXQtConfigVars.cmake new file mode 100644 index 000000000000..fd7ef927f8b3 --- /dev/null +++ b/nixpkgs/pkgs/desktops/lxqt/lxqt-build-tools/LXQtConfigVars.cmake @@ -0,0 +1,7 @@ +add_definitions("-DLXQT_RELATIVE_SHARE_DIR=\"${LXQT_RELATIVE_SHARE_DIR}\"") +add_definitions("-DLXQT_SHARE_DIR=\"${LXQT_SHARE_DIR}\"") +add_definitions("-DLXQT_RELATIVE_SHARE_TRANSLATIONS_DIR=\"${LXQT_RELATIVE_TRANSLATIONS_DIR}\"") +add_definitions("-DLXQT_SHARE_TRANSLATIONS_DIR=\"${LXQT_TRANSLATIONS_DIR}\"") +add_definitions("-DLXQT_GRAPHICS_DIR=\"${LXQT_GRAPHICS_DIR}\"") +add_definitions("-DLXQT_ETC_XDG_DIR=\"${LXQT_ETC_XDG_DIR}\"") +add_definitions("-DLXQT_DATA_DIR=\"${LXQT_DATA_DIR}\"") diff --git a/nixpkgs/pkgs/desktops/lxqt/lxqt-build-tools/default.nix b/nixpkgs/pkgs/desktops/lxqt/lxqt-build-tools/default.nix new file mode 100644 index 000000000000..d06cb7be9286 --- /dev/null +++ b/nixpkgs/pkgs/desktops/lxqt/lxqt-build-tools/default.nix @@ -0,0 +1,34 @@ +{ lib, mkDerivation, fetchFromGitHub, cmake, pkgconfig, pcre, qtbase, glib }: + +mkDerivation rec { + pname = "lxqt-build-tools"; + version = "0.6.0"; + + src = fetchFromGitHub { + owner = "lxqt"; + repo = pname; + rev = version; + sha256 = "0i7m9s4g5rsw28vclc9nh0zcapx85cqfwxkx7rrw7wa12svy7pm2"; + }; + + nativeBuildInputs = [ cmake pkgconfig setupHook ]; + + buildInputs = [ qtbase glib pcre ]; + + setupHook = ./setup-hook.sh; + + # We're dependent on this macro doing add_definitions in most places + # But we have the setup-hook to set the values. + postInstall = '' + rm $out/share/cmake/lxqt-build-tools/modules/LXQtConfigVars.cmake + cp ${./LXQtConfigVars.cmake} $out/share/cmake/lxqt-build-tools/modules/LXQtConfigVars.cmake + ''; + + meta = with lib; { + description = "Various packaging tools and scripts for LXQt applications"; + homepage = "https://github.com/lxqt/lxqt-build-tools"; + license = licenses.lgpl21; + platforms = with platforms; unix; + maintainers = with maintainers; [ romildo ]; + }; +} diff --git a/nixpkgs/pkgs/desktops/lxqt/lxqt-build-tools/setup-hook.sh b/nixpkgs/pkgs/desktops/lxqt/lxqt-build-tools/setup-hook.sh new file mode 100644 index 000000000000..e40765116e9c --- /dev/null +++ b/nixpkgs/pkgs/desktops/lxqt/lxqt-build-tools/setup-hook.sh @@ -0,0 +1,15 @@ +LXQtCMakePostHook() { + cmakeFlagsArray+=( + -DLXQT_LIBRARY_NAME=lxqt + -DLXQT_SHARE_DIR=$out/share/lxqt + -DLXQT_TRANSLATIONS_DIR=$out/share/lxqt/translations + -DLXQT_GRAPHICS_DIR=$out/share/lxqt/graphics + -DLXQT_ETC_XDG_DIR=$out/etc/xdg + -DLXQT_DATA_DIR=$out/share + -DLXQT_RELATIVE_SHARE_DIR=lxqt + -DLXQT_RELATIVE_SHARE_TRANSLATIONS_DIR=lxqt/translations + ) + +} + +postHooks+=(LXQtCMakePostHook) diff --git a/nixpkgs/pkgs/desktops/lxqt/lxqt-config/default.nix b/nixpkgs/pkgs/desktops/lxqt/lxqt-config/default.nix new file mode 100644 index 000000000000..41fe965161db --- /dev/null +++ b/nixpkgs/pkgs/desktops/lxqt/lxqt-config/default.nix @@ -0,0 +1,52 @@ +{ lib, mkDerivation, fetchFromGitHub, cmake, pkgconfig, lxqt-build-tools, qtbase, + qtx11extras, qttools, qtsvg, kwindowsystem, libkscreen, liblxqt, + libqtxdg, xorg }: + +mkDerivation rec { + pname = "lxqt-config"; + version = "0.14.1"; + + src = fetchFromGitHub { + owner = "lxqt"; + repo = pname; + rev = version; + sha256 = "0x1k08587i2pakxlrj2n0l82r179sfywnzn2cphxiy89r5zpn7vi"; + }; + + nativeBuildInputs = [ + cmake + pkgconfig + lxqt-build-tools + ]; + + buildInputs = [ + qtbase + qtx11extras + qttools + qtsvg + kwindowsystem + libkscreen + liblxqt + libqtxdg + xorg.libpthreadstubs + xorg.libXdmcp + xorg.libXScrnSaver + xorg.libxcb + xorg.libXcursor + xorg.xf86inputlibinput + xorg.xf86inputlibinput.dev + ]; + + postPatch = '' + sed -i "/\''${XORG_LIBINPUT_INCLUDE_DIRS}/a ${xorg.xf86inputlibinput.dev}/include/xorg" lxqt-config-input/CMakeLists.txt + ''; + + meta = with lib; { + description = "Tools to configure LXQt and the underlying operating system"; + homepage = "https://github.com/lxqt/lxqt-config"; + license = licenses.lgpl21; + platforms = platforms.linux; + maintainers = with maintainers; [ romildo ]; + }; + +} diff --git a/nixpkgs/pkgs/desktops/lxqt/lxqt-globalkeys/default.nix b/nixpkgs/pkgs/desktops/lxqt/lxqt-globalkeys/default.nix new file mode 100644 index 000000000000..ca760d2a090c --- /dev/null +++ b/nixpkgs/pkgs/desktops/lxqt/lxqt-globalkeys/default.nix @@ -0,0 +1,36 @@ +{ lib, mkDerivation, fetchFromGitHub, cmake, lxqt-build-tools, qtbase, qttools, qtx11extras, qtsvg, kwindowsystem, liblxqt, libqtxdg }: + +mkDerivation rec { + pname = "lxqt-globalkeys"; + version = "0.14.3"; + + src = fetchFromGitHub { + owner = "lxqt"; + repo = pname; + rev = version; + sha256 = "1ij9abjnqbnkcb7qqk3x7y4amr6l7kkmwhdpc0x2qk4yikn5ijdg"; + }; + + nativeBuildInputs = [ + cmake + lxqt-build-tools + ]; + + buildInputs = [ + qtbase + qttools + qtx11extras + qtsvg + kwindowsystem + liblxqt + libqtxdg + ]; + + meta = with lib; { + description = "LXQt service for global keyboard shortcuts registration"; + homepage = "https://github.com/lxqt/lxqt-globalkeys"; + license = licenses.lgpl21; + platforms = platforms.linux; + maintainers = with maintainers; [ romildo ]; + }; +} diff --git a/nixpkgs/pkgs/desktops/lxqt/lxqt-notificationd/default.nix b/nixpkgs/pkgs/desktops/lxqt/lxqt-notificationd/default.nix new file mode 100644 index 000000000000..5790be3c77f5 --- /dev/null +++ b/nixpkgs/pkgs/desktops/lxqt/lxqt-notificationd/default.nix @@ -0,0 +1,36 @@ +{ lib, mkDerivation, fetchFromGitHub, cmake, lxqt-build-tools, qtbase, qttools, qtsvg, kwindowsystem, liblxqt, libqtxdg, qtx11extras }: + +mkDerivation rec { + pname = "lxqt-notificationd"; + version = "0.14.1"; + + src = fetchFromGitHub { + owner = "lxqt"; + repo = pname; + rev = version; + sha256 = "1ihaf2i361j2snyy6kg8ccpfnc8hppvacmxjqzb1lpyaf1ajd139"; + }; + + nativeBuildInputs = [ + cmake + lxqt-build-tools + ]; + + buildInputs = [ + qtbase + qttools + qtsvg + kwindowsystem + liblxqt + libqtxdg + qtx11extras + ]; + + meta = with lib; { + description = "The LXQt notification daemon"; + homepage = "https://github.com/lxqt/lxqt-notificationd"; + license = licenses.lgpl21; + platforms = platforms.linux; + maintainers = with maintainers; [ romildo ]; + }; +} diff --git a/nixpkgs/pkgs/desktops/lxqt/lxqt-openssh-askpass/default.nix b/nixpkgs/pkgs/desktops/lxqt/lxqt-openssh-askpass/default.nix new file mode 100644 index 000000000000..26730f57b43e --- /dev/null +++ b/nixpkgs/pkgs/desktops/lxqt/lxqt-openssh-askpass/default.nix @@ -0,0 +1,36 @@ +{ lib, mkDerivation, fetchFromGitHub, cmake, lxqt-build-tools, qtbase, qttools, qtsvg, qtx11extras, kwindowsystem, liblxqt, libqtxdg }: + +mkDerivation rec { + pname = "lxqt-openssh-askpass"; + version = "0.14.1"; + + src = fetchFromGitHub { + owner = "lxqt"; + repo = pname; + rev = version; + sha256 = "04jmvhhlhhspwzj4hfq7fnaa3h7h02z3rlq8p55hzlzkvshqqh1q"; + }; + + nativeBuildInputs = [ + cmake + lxqt-build-tools + ]; + + buildInputs = [ + qtbase + qttools + qtx11extras + qtsvg + kwindowsystem + liblxqt + libqtxdg + ]; + + meta = with lib; { + description = "GUI to query passwords on behalf of SSH agents"; + homepage = "https://github.com/lxqt/lxqt-openssh-askpass"; + license = licenses.lgpl21; + platforms = platforms.linux; + maintainers = with maintainers; [ romildo ]; + }; +} diff --git a/nixpkgs/pkgs/desktops/lxqt/lxqt-panel/default.nix b/nixpkgs/pkgs/desktops/lxqt/lxqt-panel/default.nix new file mode 100644 index 000000000000..57938a5f521f --- /dev/null +++ b/nixpkgs/pkgs/desktops/lxqt/lxqt-panel/default.nix @@ -0,0 +1,59 @@ +{ + lib, mkDerivation, fetchFromGitHub, + cmake, pkgconfig, lxqt-build-tools, + qtbase, qttools, qtx11extras, qtsvg, libdbusmenu, kwindowsystem, solid, + kguiaddons, liblxqt, libqtxdg, lxqt-globalkeys, libsysstat, + xorg, libstatgrab, lm_sensors, libpulseaudio, alsaLib, menu-cache, + lxmenu-data, pcre, libXdamage +}: + +mkDerivation rec { + pname = "lxqt-panel"; + version = "0.14.1"; + + src = fetchFromGitHub { + owner = "lxqt"; + repo = pname; + rev = version; + sha256 = "1py3i7qgm6h2iwjwqfjml1rp06s7ls1d7z5i9iizsmfshdzkaq86"; + }; + + nativeBuildInputs = [ + cmake + pkgconfig + lxqt-build-tools + ]; + + buildInputs = [ + qtbase + qttools + qtx11extras + qtsvg + libdbusmenu + kwindowsystem + solid + kguiaddons + liblxqt + libqtxdg + lxqt-globalkeys + libsysstat + xorg.libpthreadstubs + xorg.libXdmcp + libstatgrab + lm_sensors + libpulseaudio + alsaLib + menu-cache + lxmenu-data + pcre + libXdamage + ]; + + meta = with lib; { + description = "The LXQt desktop panel"; + homepage = "https://github.com/lxqt/lxqt-panel"; + license = licenses.lgpl21; + platforms = platforms.linux; + maintainers = with maintainers; [ romildo ]; + }; +} diff --git a/nixpkgs/pkgs/desktops/lxqt/lxqt-policykit/default.nix b/nixpkgs/pkgs/desktops/lxqt/lxqt-policykit/default.nix new file mode 100644 index 000000000000..33a2d517fa41 --- /dev/null +++ b/nixpkgs/pkgs/desktops/lxqt/lxqt-policykit/default.nix @@ -0,0 +1,43 @@ +{ + lib, mkDerivation, fetchFromGitHub, cmake, pkgconfig, lxqt-build-tools, + qtbase, qttools, qtx11extras, qtsvg, polkit-qt, kwindowsystem, liblxqt, + libqtxdg, pcre +}: + +mkDerivation rec { + pname = "lxqt-policykit"; + version = "0.14.1"; + + src = fetchFromGitHub { + owner = "lxqt"; + repo = pname; + rev = version; + sha256 = "0mh9jw09r0mk8xmgvmzk3yyfix0pzqya28rcx71fqjpbdv1sc44l"; + }; + + nativeBuildInputs = [ + cmake + pkgconfig + lxqt-build-tools + ]; + + buildInputs = [ + qtbase + qttools + qtx11extras + qtsvg + polkit-qt + kwindowsystem + liblxqt + libqtxdg + pcre + ]; + + meta = with lib; { + description = "The LXQt PolicyKit agent"; + homepage = "https://github.com/lxqt/lxqt-policykit"; + license = licenses.lgpl21; + platforms = platforms.linux; + maintainers = with maintainers; [ romildo ]; + }; +} diff --git a/nixpkgs/pkgs/desktops/lxqt/lxqt-powermanagement/default.nix b/nixpkgs/pkgs/desktops/lxqt/lxqt-powermanagement/default.nix new file mode 100644 index 000000000000..997a9cda3d97 --- /dev/null +++ b/nixpkgs/pkgs/desktops/lxqt/lxqt-powermanagement/default.nix @@ -0,0 +1,38 @@ +{ lib, mkDerivation, fetchFromGitHub, cmake, lxqt-build-tools, qtbase, qttools, qtx11extras, qtsvg, kwindowsystem, solid, kidletime, liblxqt, libqtxdg }: + +mkDerivation rec { + pname = "lxqt-powermanagement"; + version = "0.14.1"; + + src = fetchFromGitHub { + owner = "lxqt"; + repo = pname; + rev = version; + sha256 = "1nhp4a28bpczhwz8b8da355zsxr1qwmkrm3bwllwp39liw947clx"; + }; + + nativeBuildInputs = [ + cmake + lxqt-build-tools + ]; + + buildInputs = [ + qtbase + qttools + qtx11extras + qtsvg + kwindowsystem + solid + kidletime + liblxqt + libqtxdg + ]; + + meta = with lib; { + description = "Power management module for LXQt"; + homepage = "https://github.com/lxqt/lxqt-powermanagement"; + license = licenses.lgpl21; + platforms = platforms.linux; + maintainers = with maintainers; [ romildo ]; + }; +} diff --git a/nixpkgs/pkgs/desktops/lxqt/lxqt-qtplugin/default.nix b/nixpkgs/pkgs/desktops/lxqt/lxqt-qtplugin/default.nix new file mode 100644 index 000000000000..abb09aae838f --- /dev/null +++ b/nixpkgs/pkgs/desktops/lxqt/lxqt-qtplugin/default.nix @@ -0,0 +1,45 @@ +{ + lib, mkDerivation, fetchFromGitHub, + cmake, lxqt-build-tools, + qtbase, qtx11extras, qttools, qtsvg, libdbusmenu, libqtxdg, libfm-qt +}: + +mkDerivation rec { + pname = "lxqt-qtplugin"; + version = "0.14.0"; + + src = fetchFromGitHub { + owner = "lxqt"; + repo = pname; + rev = version; + sha256 = "16n50lxnya03zcviw65sy5dyg9dsrn64k91mrqfvraf6d90md4al"; + }; + + nativeBuildInputs = [ + cmake + lxqt-build-tools + ]; + + buildInputs = [ + qtbase + qtx11extras + qttools + qtsvg + libdbusmenu + libqtxdg + libfm-qt + ]; + + postPatch = '' + substituteInPlace src/CMakeLists.txt \ + --replace "DESTINATION \"\''${QT_PLUGINS_DIR}" "DESTINATION \"$qtPluginPrefix" + ''; + + meta = with lib; { + description = "LXQt Qt platform integration plugin"; + homepage = "https://github.com/lxqt/lxqt-qtplugin"; + license = licenses.lgpl21; + platforms = platforms.linux; + maintainers = with maintainers; [ romildo ]; + }; +} diff --git a/nixpkgs/pkgs/desktops/lxqt/lxqt-runner/default.nix b/nixpkgs/pkgs/desktops/lxqt/lxqt-runner/default.nix new file mode 100644 index 000000000000..e4f39184ffdf --- /dev/null +++ b/nixpkgs/pkgs/desktops/lxqt/lxqt-runner/default.nix @@ -0,0 +1,42 @@ +{ lib, mkDerivation, fetchFromGitHub, cmake, pkgconfig, lxqt-build-tools, qtbase, qttools, qtsvg, kwindowsystem, liblxqt, libqtxdg, lxqt-globalkeys, qtx11extras, +menu-cache, muparser, pcre }: + +mkDerivation rec { + pname = "lxqt-runner"; + version = "0.14.1"; + + src = fetchFromGitHub { + owner = "lxqt"; + repo = pname; + rev = version; + sha256 = "01a8ycpkzcbh85y4025pd3nbpnzxh98ll1xwz4ykz13yvm0l2n1w"; + }; + + nativeBuildInputs = [ + cmake + pkgconfig + lxqt-build-tools + ]; + + buildInputs = [ + qtbase + qttools + qtsvg + qtx11extras + kwindowsystem + liblxqt + libqtxdg + lxqt-globalkeys + menu-cache + muparser + pcre + ]; + + meta = with lib; { + description = "Tool used to launch programs quickly by typing their names"; + homepage = "https://github.com/lxqt/lxqt-runner"; + license = licenses.lgpl21; + platforms = platforms.linux; + maintainers = with maintainers; [ romildo ]; + }; +} diff --git a/nixpkgs/pkgs/desktops/lxqt/lxqt-session/default.nix b/nixpkgs/pkgs/desktops/lxqt/lxqt-session/default.nix new file mode 100644 index 000000000000..0493dd9fbb13 --- /dev/null +++ b/nixpkgs/pkgs/desktops/lxqt/lxqt-session/default.nix @@ -0,0 +1,40 @@ +{ lib, mkDerivation, fetchFromGitHub, cmake, pkgconfig, lxqt-build-tools, qtbase, qttools, qtsvg, qtx11extras, kwindowsystem, liblxqt, libqtxdg, xorg, xdg-user-dirs }: + +mkDerivation rec { + pname = "lxqt-session"; + version = "0.14.1"; + + src = fetchFromGitHub { + owner = "lxqt"; + repo = pname; + rev = version; + sha256 = "0s6b0lblb795zz1p7sy677c1iznhmdzc4vw3jkc2agmsrhm7if7s"; + }; + + nativeBuildInputs = [ + cmake + pkgconfig + lxqt-build-tools + ]; + + buildInputs = [ + qtbase + qttools + qtsvg + qtx11extras + kwindowsystem + liblxqt + libqtxdg + xorg.libpthreadstubs + xorg.libXdmcp + xdg-user-dirs + ]; + + meta = with lib; { + description = "An alternative session manager ported from the original razor-session"; + homepage = "https://github.com/lxqt/lxqt-session"; + license = licenses.lgpl21; + platforms = platforms.linux; + maintainers = with maintainers; [ romildo ]; + }; +} diff --git a/nixpkgs/pkgs/desktops/lxqt/lxqt-sudo/default.nix b/nixpkgs/pkgs/desktops/lxqt/lxqt-sudo/default.nix new file mode 100644 index 000000000000..9c76f0383b57 --- /dev/null +++ b/nixpkgs/pkgs/desktops/lxqt/lxqt-sudo/default.nix @@ -0,0 +1,37 @@ +{ lib, mkDerivation, fetchFromGitHub, cmake, lxqt-build-tools, qtbase, qttools, qtx11extras, qtsvg, kwindowsystem, liblxqt, libqtxdg, sudo }: + +mkDerivation rec { + pname = "lxqt-sudo"; + version = "0.14.1"; + + src = fetchFromGitHub { + owner = "lxqt"; + repo = pname; + rev = version; + sha256 = "1my0wpic20493rdlabp9ghag1g3nhwafk2yklkgczlajmarakgpc"; + }; + + nativeBuildInputs = [ + cmake + lxqt-build-tools + ]; + + buildInputs = [ + qtbase + qttools + qtx11extras + qtsvg + kwindowsystem + liblxqt + libqtxdg + sudo + ]; + + meta = with lib; { + description = "GUI frontend for sudo/su"; + homepage = "https://github.com/lxqt/lxqt-sudo"; + license = licenses.lgpl21; + platforms = platforms.linux; + maintainers = with maintainers; [ romildo ]; + }; +} diff --git a/nixpkgs/pkgs/desktops/lxqt/lxqt-themes/default.nix b/nixpkgs/pkgs/desktops/lxqt/lxqt-themes/default.nix new file mode 100644 index 000000000000..1cc56d62a06e --- /dev/null +++ b/nixpkgs/pkgs/desktops/lxqt/lxqt-themes/default.nix @@ -0,0 +1,26 @@ +{ lib, mkDerivation, fetchFromGitHub, cmake, lxqt-build-tools }: + +mkDerivation rec { + pname = "lxqt-themes"; + version = "0.14.0"; + + src = fetchFromGitHub { + owner = "lxqt"; + repo = pname; + rev = version; + sha256 = "09dkcgnf3lmfly8v90p6wjlj5rin83pbailvvpx2jr8a48a8zb9f"; + }; + + nativeBuildInputs = [ + cmake + lxqt-build-tools + ]; + + meta = with lib; { + description = "Themes, graphics and icons for LXQt"; + homepage = "https://github.com/lxqt/lxqt-themes"; + license = licenses.lgpl21; + platforms = platforms.linux; + maintainers = with maintainers; [ romildo ]; + }; +} diff --git a/nixpkgs/pkgs/desktops/lxqt/obconf-qt/default.nix b/nixpkgs/pkgs/desktops/lxqt/obconf-qt/default.nix new file mode 100644 index 000000000000..1b1e2e92b0fb --- /dev/null +++ b/nixpkgs/pkgs/desktops/lxqt/obconf-qt/default.nix @@ -0,0 +1,39 @@ +{ lib, mkDerivation, fetchFromGitHub, cmake, pkgconfig, pcre, qtbase, qttools, + qtx11extras, xorg, lxqt-build-tools, openbox }: + +mkDerivation rec { + pname = "obconf-qt"; + version = "0.14.1"; + + src = fetchFromGitHub { + owner = "lxqt"; + repo = pname; + rev = version; + sha256 = "15dizs072ylmld1lxwgqkvybqy8ms8zki5586xm305jnlmrkb4lq"; + }; + + nativeBuildInputs = [ + cmake + pkgconfig + lxqt-build-tools + ]; + + buildInputs = [ + pcre + qtbase + qttools + qtx11extras + xorg.libpthreadstubs + xorg.libXdmcp + xorg.libSM + openbox + ]; + + meta = with lib; { + description = "The Qt port of obconf, the Openbox configuration tool"; + homepage = "https://github.com/lxqt/obconf-qt"; + license = licenses.gpl2; + platforms = with platforms; unix; + maintainers = with maintainers; [ romildo ]; + }; +} diff --git a/nixpkgs/pkgs/desktops/lxqt/pavucontrol-qt/default.nix b/nixpkgs/pkgs/desktops/lxqt/pavucontrol-qt/default.nix new file mode 100644 index 000000000000..308077bc0992 --- /dev/null +++ b/nixpkgs/pkgs/desktops/lxqt/pavucontrol-qt/default.nix @@ -0,0 +1,36 @@ +{ lib, mkDerivation, fetchFromGitHub, cmake, pkgconfig, lxqt, libpulseaudio, + pcre, qtbase, qttools, qtx11extras }: + +mkDerivation rec { + pname = "pavucontrol-qt"; + version = "0.14.1"; + + src = fetchFromGitHub { + owner = "lxqt"; + repo = pname; + rev = version; + sha256 = "124dk41v8l5pv7afi1h7fgbhm8zj605yfd8b769sn7id2bqj7bis"; + }; + + nativeBuildInputs = [ + cmake + pkgconfig + lxqt.lxqt-build-tools + ]; + + buildInputs = [ + qtbase + qttools + qtx11extras + libpulseaudio + pcre + ]; + + meta = with lib; { + description = "A Pulseaudio mixer in Qt (port of pavucontrol)"; + homepage = "https://github.com/lxqt/pavucontrol-qt"; + license = licenses.gpl2; + platforms = with platforms; linux; + maintainers = with maintainers; [ romildo ]; + }; +} diff --git a/nixpkgs/pkgs/desktops/lxqt/pcmanfm-qt/default.nix b/nixpkgs/pkgs/desktops/lxqt/pcmanfm-qt/default.nix new file mode 100644 index 000000000000..b294cdf52ab0 --- /dev/null +++ b/nixpkgs/pkgs/desktops/lxqt/pcmanfm-qt/default.nix @@ -0,0 +1,38 @@ +{ lib, mkDerivation, fetchFromGitHub, cmake, pkgconfig, lxqt, qtbase, qttools, + qtx11extras, libfm-qt, menu-cache, lxmenu-data }: + +mkDerivation rec { + pname = "pcmanfm-qt"; + version = "0.14.1"; + + src = fetchFromGitHub { + owner = "lxqt"; + repo = pname; + rev = version; + sha256 = "1zchxlbyiifing94mqwh45pp7z3ihldknqiaz0kanq1cnma1jj6k"; + }; + + nativeBuildInputs = [ + cmake + pkgconfig + lxqt.lxqt-build-tools + ]; + + buildInputs = [ + qtbase + qttools + qtx11extras + libfm-qt + libfm-qt + menu-cache + lxmenu-data + ]; + + meta = with lib; { + description = "File manager and desktop icon manager (Qt port of PCManFM and libfm)"; + homepage = "https://github.com/lxqt/pcmanfm-qt"; + license = licenses.gpl2; + platforms = with platforms; unix; + maintainers = with maintainers; [ romildo ]; + }; +} diff --git a/nixpkgs/pkgs/desktops/lxqt/qlipper/default.nix b/nixpkgs/pkgs/desktops/lxqt/qlipper/default.nix new file mode 100644 index 000000000000..d5da4737f8f2 --- /dev/null +++ b/nixpkgs/pkgs/desktops/lxqt/qlipper/default.nix @@ -0,0 +1,25 @@ +{ lib, mkDerivation, fetchFromGitHub, cmake, qtbase, qttools }: + +mkDerivation rec { + pname = "qlipper"; + version = "5.1.1"; + + src = fetchFromGitHub { + owner = "pvanek"; + repo = pname; + rev = version; + sha256 = "0vlm4ab9isi7i2bimnyrk6083j2dfdrs14qj59vjcjri7mcwmf76"; + }; + + nativeBuildInputs = [ cmake ]; + + buildInputs = [ qtbase qttools ]; + + meta = with lib; { + description = "Cross-platform clipboard history applet"; + homepage = "https://github.com/pvanek/qlipper"; + license = licenses.gpl2Plus; + platforms = with platforms; unix; + maintainers = with maintainers; [ romildo ]; + }; +} diff --git a/nixpkgs/pkgs/desktops/lxqt/qps/default.nix b/nixpkgs/pkgs/desktops/lxqt/qps/default.nix new file mode 100644 index 000000000000..cba01522de01 --- /dev/null +++ b/nixpkgs/pkgs/desktops/lxqt/qps/default.nix @@ -0,0 +1,26 @@ +{ lib, mkDerivation, fetchFromGitHub, cmake, qtbase, qtx11extras, qttools, + lxqt-build-tools }: + +mkDerivation rec { + pname = "qps"; + version = "2.0.0"; + + src = fetchFromGitHub { + owner = "lxqt"; + repo = pname; + rev = version; + sha256 = "03rl59yk3b24j0y0k8dpdpb3yi4f1l642zn5pp5br3s2vwx1vzkg"; + }; + + nativeBuildInputs = [ cmake lxqt-build-tools ]; + + buildInputs = [ qtbase qtx11extras qttools ]; + + meta = with lib; { + description = "Qt based process manager"; + homepage = "https://github.com/lxqt/qps"; + license = licenses.gpl2; + platforms = with platforms; linux; # does not build on darwin + maintainers = with maintainers; [ romildo ]; + }; +} diff --git a/nixpkgs/pkgs/desktops/lxqt/qterminal/default.nix b/nixpkgs/pkgs/desktops/lxqt/qterminal/default.nix new file mode 100644 index 000000000000..2b4844654b01 --- /dev/null +++ b/nixpkgs/pkgs/desktops/lxqt/qterminal/default.nix @@ -0,0 +1,34 @@ +{ lib, mkDerivation, fetchFromGitHub, cmake, lxqt-build-tools, qtermwidget, + qtbase, qttools, qtx11extras }: + +mkDerivation rec { + pname = "qterminal"; + version = "0.14.1"; + + src = fetchFromGitHub { + owner = "lxqt"; + repo = pname; + rev = version; + sha256 = "0bq6lvns56caijdmjm05nsj9vg69v9x5vid24bfxasck6q8nw24w"; + }; + + nativeBuildInputs = [ + cmake + lxqt-build-tools + ]; + + buildInputs = [ + qtbase + qttools + qtx11extras + qtermwidget + ]; + + meta = with lib; { + description = "A lightweight Qt-based terminal emulator"; + homepage = "https://github.com/lxqt/qterminal"; + license = licenses.gpl2; + platforms = with platforms; unix; + maintainers = with maintainers; [ romildo globin ]; + }; +} diff --git a/nixpkgs/pkgs/desktops/lxqt/qtermwidget/default.nix b/nixpkgs/pkgs/desktops/lxqt/qtermwidget/default.nix new file mode 100644 index 000000000000..d20d4445c252 --- /dev/null +++ b/nixpkgs/pkgs/desktops/lxqt/qtermwidget/default.nix @@ -0,0 +1,25 @@ +{ lib, mkDerivation, fetchFromGitHub, cmake, qtbase, qttools, lxqt-build-tools }: + +mkDerivation rec { + pname = "qtermwidget"; + version = "0.14.1"; + + src = fetchFromGitHub { + owner = "lxqt"; + repo = pname; + rev = version; + sha256 = "1pz8dwb86jpga4vfyn5v9n2s6dx3zh74yfp1kjsmsmhf878zs6lv"; + }; + + nativeBuildInputs = [ cmake lxqt-build-tools ]; + + buildInputs = [ qtbase qttools ]; + + meta = with lib; { + description = "A terminal emulator widget for Qt 5"; + homepage = "https://github.com/lxqt/qtermwidget"; + license = licenses.gpl2; + platforms = with platforms; unix; + maintainers = with maintainers; [ romildo ]; + }; +} diff --git a/nixpkgs/pkgs/desktops/lxqt/screengrab/default.nix b/nixpkgs/pkgs/desktops/lxqt/screengrab/default.nix new file mode 100644 index 000000000000..7eff539091fc --- /dev/null +++ b/nixpkgs/pkgs/desktops/lxqt/screengrab/default.nix @@ -0,0 +1,38 @@ +{ lib, mkDerivation, fetchFromGitHub, cmake, pkgconfig, qtbase, qttools, qtx11extras, qtsvg, kwindowsystem, libqtxdg, xorg, autoPatchelfHook }: + +mkDerivation rec { + pname = "screengrab"; + version = "2.0.0"; + + src = fetchFromGitHub { + owner = "lxqt"; + repo = pname; + rev = version; + sha256 = "1syvdqq45dr8hwigl9ax1wxr33m8z23nh6xzzlqbflyyd93xzjmn"; + }; + + nativeBuildInputs = [ + cmake + pkgconfig + autoPatchelfHook # fix libuploader.so and libextedit.so not found + ]; + + buildInputs = [ + qtbase + qttools + qtx11extras + qtsvg + kwindowsystem + libqtxdg + xorg.libpthreadstubs + xorg.libXdmcp + ]; + + meta = with lib; { + description = "Crossplatform tool for fast making screenshots"; + homepage = "https://github.com/lxqt/screengrab"; + license = licenses.gpl2; + platforms = platforms.linux; + maintainers = with maintainers; [ romildo ]; + }; +} diff --git a/nixpkgs/pkgs/desktops/lxqt/update.sh b/nixpkgs/pkgs/desktops/lxqt/update.sh new file mode 100755 index 000000000000..47d3dfb3d5fe --- /dev/null +++ b/nixpkgs/pkgs/desktops/lxqt/update.sh @@ -0,0 +1,39 @@ +#!/usr/bin/env nix-shell +#!nix-shell -i bash -p libarchive curl common-updater-scripts + +set -eu -o pipefail + +cd "$(dirname "${BASH_SOURCE[0]}")" +root=../../.. +export NIXPKGS_ALLOW_UNFREE=1 + +lxqt_version=0.14.1 +lxqtrepo=https://downloads.lxqt.org/${lxqt_version}.html + +version() { + (cd "$root" && nix-instantiate --eval --strict -A "$1.version" 2>/dev/null | tr -d '"') +} + +update_lxqt() { + local pname + local pversion + curl -sS ${lxqtrepo} | sed -rne 's|.*<a href=.*>(.+) (.+)</a><br>|\1 \2|p' | + while read pname pversion; do + local pversionold=$(version lxqt.$pname) + if [[ "$pversion" = "$pversionold" ]]; then + echo "nothing to do, $pname $pversion is current" + else + echo "$pname: $pversionold -> $pversion" + (cd "$root" + local pfile=$(EDITOR=echo nix edit -f. lxqt.$pname 2>/dev/null) + update-source-version lxqt.$pname "$pversion" + git add $pfile + git commit -m "lxqt.$pname: $pversionold -> $pversion" + ) + fi + echo + done + echo DONE +} + +update_lxqt diff --git a/nixpkgs/pkgs/desktops/mate/atril/default.nix b/nixpkgs/pkgs/desktops/mate/atril/default.nix new file mode 100644 index 000000000000..e71ca81142a7 --- /dev/null +++ b/nixpkgs/pkgs/desktops/mate/atril/default.nix @@ -0,0 +1,44 @@ +{ stdenv, fetchurl, pkgconfig, gettext, gtk3, glib, libxml2, libsecret, poppler, itstool, hicolor-icon-theme, texlive, mate, wrapGAppsHook }: + +stdenv.mkDerivation rec { + pname = "atril"; + version = "1.24.0"; + + src = fetchurl { + url = "https://pub.mate-desktop.org/releases/${stdenv.lib.versions.majorMinor version}/${pname}-${version}.tar.xz"; + sha256 = "0967gxw7h2qh2kpwl0jgv58hicz6aa92kr12mnykbpikad25s95y"; + }; + + nativeBuildInputs = [ + pkgconfig + gettext + wrapGAppsHook + ]; + + buildInputs = [ + gtk3 + glib + itstool + libsecret + libxml2 + poppler + mate.caja + mate.mate-desktop + hicolor-icon-theme + texlive.bin.core # for synctex, used by the pdf back-end + ]; + + NIX_CFLAGS_COMPILE = "-I${glib.dev}/include/gio-unix-2.0"; + + makeFlags = [ "cajaextensiondir=$$out/lib/caja/extensions-2.0" ]; + + enableParallelBuilding = true; + + meta = with stdenv.lib; { + description = "A simple multi-page document viewer for the MATE desktop"; + homepage = "https://mate-desktop.org"; + license = licenses.gpl2; + platforms = platforms.unix; + maintainers = [ maintainers.romildo ]; + }; +} diff --git a/nixpkgs/pkgs/desktops/mate/caja-dropbox/default.nix b/nixpkgs/pkgs/desktops/mate/caja-dropbox/default.nix new file mode 100644 index 000000000000..7b2387721dca --- /dev/null +++ b/nixpkgs/pkgs/desktops/mate/caja-dropbox/default.nix @@ -0,0 +1,53 @@ +{ stdenv, fetchurl, substituteAll +, pkgconfig, gobject-introspection, gdk-pixbuf +, gtk3, mate, python3, dropbox }: + +let + dropboxd = "${dropbox}/bin/dropbox"; +in +stdenv.mkDerivation rec { + pname = "caja-dropbox"; + version = "1.24.0"; + + src = fetchurl { + url = "https://pub.mate-desktop.org/releases/${stdenv.lib.versions.majorMinor version}/${pname}-${version}.tar.xz"; + sha256 = "1rcn82q58mv9hn5xamvzay2pw1szfk6zns94362476fcp786lji2"; + }; + + patches = [ + (substituteAll { + src = ./fix-cli-paths.patch; + inherit dropboxd; + }) + ]; + + strictDeps = true; + + nativeBuildInputs = [ + pkgconfig + gobject-introspection + gdk-pixbuf + (python3.withPackages (ps: with ps; [ + docutils + pygobject3 + ])) + ]; + + buildInputs = [ + gtk3 + mate.caja + python3 + ]; + + configureFlags = [ "--with-caja-extension-dir=$$out/lib/caja/extensions-2.0" ]; + + enableParallelBuilding = true; + + meta = with stdenv.lib; { + description = "Dropbox extension for Caja file manager"; + homepage = "https://github.com/mate-desktop/caja-dropbox"; + license = with licenses; [ gpl3 cc-by-nd-30 ]; + platforms = platforms.unix; + maintainers = [ maintainers.romildo ]; + }; +} diff --git a/nixpkgs/pkgs/desktops/mate/caja-dropbox/fix-cli-paths.patch b/nixpkgs/pkgs/desktops/mate/caja-dropbox/fix-cli-paths.patch new file mode 100644 index 000000000000..de591f493f6f --- /dev/null +++ b/nixpkgs/pkgs/desktops/mate/caja-dropbox/fix-cli-paths.patch @@ -0,0 +1,11 @@ +--- a/caja-dropbox.in ++++ b/caja-dropbox.in +@@ -70,7 +70,7 @@ DOWNLOADING = "Downloading Dropbox... %d%%" + UNPACKING = "Unpacking Dropbox... %d%%" + + PARENT_DIR = os.path.expanduser("~") +-DROPBOXD_PATH = "%s/.dropbox-dist/dropboxd" % PARENT_DIR ++DROPBOXD_PATH = "@dropboxd@" + DESKTOP_FILE = "@DESKTOP_FILE_DIR@/caja-dropbox.desktop" + + enc = locale.getpreferredencoding() diff --git a/nixpkgs/pkgs/desktops/mate/caja-extensions/default.nix b/nixpkgs/pkgs/desktops/mate/caja-extensions/default.nix new file mode 100644 index 000000000000..89191dc302b1 --- /dev/null +++ b/nixpkgs/pkgs/desktops/mate/caja-extensions/default.nix @@ -0,0 +1,43 @@ +{ stdenv, fetchurl, pkgconfig, gettext, gtk3, gupnp, mate, imagemagick, wrapGAppsHook }: + +stdenv.mkDerivation rec { + pname = "caja-extensions"; + version = "1.24.0"; + + src = fetchurl { + url = "https://pub.mate-desktop.org/releases/${stdenv.lib.versions.majorMinor version}/${pname}-${version}.tar.xz"; + sha256 = "175v5c05nrdliya23rbqma49alldq67dklmvpq18nq71sfry4pp6"; + }; + + nativeBuildInputs = [ + pkgconfig + gettext + wrapGAppsHook + ]; + + buildInputs = [ + gtk3 + gupnp + mate.caja + mate.mate-desktop + imagemagick + ]; + + postPatch = '' + for f in image-converter/caja-image-{resizer,rotator}.c; do + substituteInPlace $f --replace "/usr/bin/convert" "${imagemagick}/bin/convert" + done + ''; + + configureFlags = [ "--with-cajadir=$$out/lib/caja/extensions-2.0" ]; + + enableParallelBuilding = true; + + meta = with stdenv.lib; { + description = "Set of extensions for Caja file manager"; + homepage = "https://mate-desktop.org"; + license = licenses.gpl2; + platforms = platforms.unix; + maintainers = [ maintainers.romildo ]; + }; +} diff --git a/nixpkgs/pkgs/desktops/mate/caja-with-extensions/default.nix b/nixpkgs/pkgs/desktops/mate/caja-with-extensions/default.nix new file mode 100644 index 000000000000..35e3cd198f6b --- /dev/null +++ b/nixpkgs/pkgs/desktops/mate/caja-with-extensions/default.nix @@ -0,0 +1,20 @@ +{ stdenv, lib, makeWrapper, caja-extensions, caja, extensions ? [ caja-extensions ] }: + +stdenv.mkDerivation { + pname = "${caja.pname}-with-extensions"; + version = caja.version; + + phases = [ "installPhase" ]; + + nativeBuildInputs = [ makeWrapper ]; + + inherit caja; + + installPhase = '' + mkdir -p $out/bin + makeWrapper $caja/bin/caja $out/bin/caja \ + --set CAJA_EXTENSION_DIRS ${lib.concatMapStringsSep ":" (x: "${x.outPath}/lib/caja/extensions-2.0") extensions} + ''; + + inherit (caja.meta); +} diff --git a/nixpkgs/pkgs/desktops/mate/caja/caja-extension-dirs.patch b/nixpkgs/pkgs/desktops/mate/caja/caja-extension-dirs.patch new file mode 100644 index 000000000000..0b1453bd4689 --- /dev/null +++ b/nixpkgs/pkgs/desktops/mate/caja/caja-extension-dirs.patch @@ -0,0 +1,46 @@ +From 35e9e6a6f3ba6cbe62a3957044eb67864f5d8e66 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Jos=C3=A9=20Romildo=20Malaquias?= <malaquias@gmail.com> +Date: Tue, 11 Feb 2020 17:49:13 -0300 +Subject: [PATCH] Look for caja extentions at $CAJA_EXTENTSION_DIRS + +CAJA_EXTENSION_DIRS is a list of paths where caja extensions are +looked for. It is needed for distributions like NixOS that do not +install all extensions in the same directory. In NixOS each package is +installed in a self contained directory. +--- + libcaja-private/caja-module.c | 14 ++++++++++++++ + 1 file changed, 14 insertions(+) + +diff --git a/libcaja-private/caja-module.c b/libcaja-private/caja-module.c +index d54d7cf..9794e56 100644 +--- a/libcaja-private/caja-module.c ++++ b/libcaja-private/caja-module.c +@@ -258,11 +258,25 @@ void + caja_module_setup (void) + { + static gboolean initialized = FALSE; ++ gchar *caja_extension_dirs; ++ gchar **dir_vector; + + if (!initialized) + { + initialized = TRUE; + ++ caja_extension_dirs = (gchar *) g_getenv ("CAJA_EXTENSION_DIRS"); ++ ++ if (caja_extension_dirs) ++ { ++ dir_vector = g_strsplit (caja_extension_dirs, G_SEARCHPATH_SEPARATOR_S, 0); ++ ++ for (gchar **dir = dir_vector; *dir != NULL; ++ dir) ++ load_module_dir (*dir); ++ ++ g_strfreev(dir_vector); ++ } ++ + load_module_dir (CAJA_EXTENSIONDIR); + + eel_debug_call_at_shutdown (free_module_objects); +-- +2.25.0 + diff --git a/nixpkgs/pkgs/desktops/mate/caja/default.nix b/nixpkgs/pkgs/desktops/mate/caja/default.nix new file mode 100644 index 000000000000..9f1ec9f587bc --- /dev/null +++ b/nixpkgs/pkgs/desktops/mate/caja/default.nix @@ -0,0 +1,43 @@ +{ stdenv, fetchurl, pkgconfig, gettext, gtk3, libnotify, libxml2, libexif, exempi, mate, hicolor-icon-theme, wrapGAppsHook }: + +stdenv.mkDerivation rec { + pname = "caja"; + version = "1.24.0"; + + src = fetchurl { + url = "https://pub.mate-desktop.org/releases/${stdenv.lib.versions.majorMinor version}/${pname}-${version}.tar.xz"; + sha256 = "1cnfy481hcwjv3ia3kw0d4h7ga8cng0pqm3z349v4qcmfdapmqc0"; + }; + + nativeBuildInputs = [ + pkgconfig + gettext + wrapGAppsHook + ]; + + buildInputs = [ + gtk3 + libnotify + libxml2 + libexif + exempi + mate.mate-desktop + hicolor-icon-theme + ]; + + patches = [ + ./caja-extension-dirs.patch + ]; + + configureFlags = [ "--disable-update-mimedb" ]; + + enableParallelBuilding = true; + + meta = { + description = "File manager for the MATE desktop"; + homepage = "https://mate-desktop.org"; + license = with stdenv.lib.licenses; [ gpl2 lgpl2 ]; + platforms = stdenv.lib.platforms.unix; + maintainers = [ stdenv.lib.maintainers.romildo ]; + }; +} diff --git a/nixpkgs/pkgs/desktops/mate/default.nix b/nixpkgs/pkgs/desktops/mate/default.nix new file mode 100644 index 000000000000..3970b2b2921c --- /dev/null +++ b/nixpkgs/pkgs/desktops/mate/default.nix @@ -0,0 +1,93 @@ +{ newScope }: + +let + callPackage = newScope self; + + self = rec { + + atril = callPackage ./atril { }; + caja = callPackage ./caja { }; + caja-dropbox = callPackage ./caja-dropbox { }; + caja-extensions = callPackage ./caja-extensions { }; + caja-with-extensions = callPackage ./caja-with-extensions { }; + engrampa = callPackage ./engrampa { }; + eom = callPackage ./eom { }; + libmatekbd = callPackage ./libmatekbd { }; + libmatemixer = callPackage ./libmatemixer { }; + libmateweather = callPackage ./libmateweather { }; + marco = callPackage ./marco { }; + mate-applets = callPackage ./mate-applets { }; + mate-backgrounds = callPackage ./mate-backgrounds { }; + mate-calc = callPackage ./mate-calc { }; + mate-common = callPackage ./mate-common { }; + mate-control-center = callPackage ./mate-control-center { }; + mate-desktop = callPackage ./mate-desktop { }; + mate-icon-theme = callPackage ./mate-icon-theme { }; + mate-icon-theme-faenza = callPackage ./mate-icon-theme-faenza { }; + mate-indicator-applet = callPackage ./mate-indicator-applet { }; + mate-media = callPackage ./mate-media { }; + mate-menus = callPackage ./mate-menus { }; + mate-netbook = callPackage ./mate-netbook { }; + mate-notification-daemon = callPackage ./mate-notification-daemon { }; + mate-panel = callPackage ./mate-panel { }; + mate-polkit = callPackage ./mate-polkit { }; + mate-power-manager = callPackage ./mate-power-manager { }; + mate-sensors-applet = callPackage ./mate-sensors-applet { }; + mate-session-manager = callPackage ./mate-session-manager { }; + mate-settings-daemon = callPackage ./mate-settings-daemon { }; + mate-screensaver = callPackage ./mate-screensaver { }; + mate-system-monitor = callPackage ./mate-system-monitor { }; + mate-terminal = callPackage ./mate-terminal { }; + mate-themes = callPackage ./mate-themes { }; + mate-user-guide = callPackage ./mate-user-guide { }; + mate-user-share = callPackage ./mate-user-share { }; + mate-utils = callPackage ./mate-utils { }; + mozo = callPackage ./mozo { }; + pluma = callPackage ./pluma { }; + python-caja = callPackage ./python-caja { }; + + basePackages = [ + caja + libmatekbd + libmatemixer + libmateweather + marco + mate-common + mate-control-center + mate-desktop + mate-icon-theme + mate-menus + mate-notification-daemon + mate-panel + mate-polkit + mate-session-manager + mate-settings-daemon + mate-themes + ]; + + extraPackages = [ + atril + caja-extensions + engrampa + eom + mate-applets + mate-backgrounds + mate-calc + mate-indicator-applet + mate-media + mate-netbook + mate-power-manager + mate-screensaver + mate-sensors-applet + mate-system-monitor + mate-terminal + mate-user-guide + # mate-user-share + mate-utils + mozo + pluma + ]; + + }; + +in self diff --git a/nixpkgs/pkgs/desktops/mate/engrampa/default.nix b/nixpkgs/pkgs/desktops/mate/engrampa/default.nix new file mode 100644 index 000000000000..1f1be3e28577 --- /dev/null +++ b/nixpkgs/pkgs/desktops/mate/engrampa/default.nix @@ -0,0 +1,38 @@ +{ stdenv, fetchurl, pkgconfig, gettext, itstool, libxml2, gtk3, mate, hicolor-icon-theme, wrapGAppsHook }: + +stdenv.mkDerivation rec { + pname = "engrampa"; + version = "1.24.0"; + + src = fetchurl { + url = "https://pub.mate-desktop.org/releases/${stdenv.lib.versions.majorMinor version}/${pname}-${version}.tar.xz"; + sha256 = "13cak3qgrzqj74x9jq1sf155793v2bqqz4mk4i04g9f9xn3g85fl"; + }; + + nativeBuildInputs = [ + pkgconfig + gettext + itstool + wrapGAppsHook + ]; + + buildInputs = [ + libxml2 + gtk3 + mate.caja + hicolor-icon-theme + mate.mate-desktop + ]; + + configureFlags = [ "--with-cajadir=$$out/lib/caja/extensions-2.0" ]; + + enableParallelBuilding = true; + + meta = { + description = "Archive Manager for MATE"; + homepage = "https://mate-desktop.org"; + license = stdenv.lib.licenses.gpl2; + platforms = stdenv.lib.platforms.unix; + maintainers = [ stdenv.lib.maintainers.romildo ]; + }; +} diff --git a/nixpkgs/pkgs/desktops/mate/eom/default.nix b/nixpkgs/pkgs/desktops/mate/eom/default.nix new file mode 100644 index 000000000000..d7c546040895 --- /dev/null +++ b/nixpkgs/pkgs/desktops/mate/eom/default.nix @@ -0,0 +1,42 @@ +{ stdenv, fetchurl, pkgconfig, gettext, itstool, exempi, lcms2, libexif, libjpeg, librsvg, libxml2, libpeas, shared-mime-info, gtk3, mate, hicolor-icon-theme, wrapGAppsHook }: + +stdenv.mkDerivation rec { + pname = "eom"; + version = "1.24.0"; + + src = fetchurl { + url = "https://pub.mate-desktop.org/releases/${stdenv.lib.versions.majorMinor version}/${pname}-${version}.tar.xz"; + sha256 = "0zzximp2534bky0vac219alafblw6m0lis0gncq92017s6c1mb77"; + }; + + nativeBuildInputs = [ + pkgconfig + gettext + itstool + wrapGAppsHook + ]; + + buildInputs = [ + exempi + lcms2 + libexif + libjpeg + librsvg + libxml2 + shared-mime-info + gtk3 + libpeas + mate.mate-desktop + hicolor-icon-theme + ]; + + enableParallelBuilding = true; + + meta = { + description = "An image viewing and cataloging program for the MATE desktop"; + homepage = "https://mate-desktop.org"; + license = stdenv.lib.licenses.gpl2; + platforms = stdenv.lib.platforms.unix; + maintainers = [ stdenv.lib.maintainers.romildo ]; + }; +} diff --git a/nixpkgs/pkgs/desktops/mate/libmatekbd/default.nix b/nixpkgs/pkgs/desktops/mate/libmatekbd/default.nix new file mode 100644 index 000000000000..4c70c2528066 --- /dev/null +++ b/nixpkgs/pkgs/desktops/mate/libmatekbd/default.nix @@ -0,0 +1,25 @@ +{ stdenv, fetchurl, pkgconfig, gettext, gtk3, libxklavier }: + +stdenv.mkDerivation rec { + pname = "libmatekbd"; + version = "1.24.0"; + + src = fetchurl { + url = "https://pub.mate-desktop.org/releases/${stdenv.lib.versions.majorMinor version}/${pname}-${version}.tar.xz"; + sha256 = "1sq7gwr9q3hq4q0vx32qqa68qcqf5by9mqyxnq6lwgaq8ydq16ab"; + }; + + nativeBuildInputs = [ pkgconfig gettext ]; + + buildInputs = [ gtk3 libxklavier ]; + + enableParallelBuilding = true; + + meta = with stdenv.lib; { + description = "Keyboard management library for MATE"; + homepage = "https://github.com/mate-desktop/libmatekbd"; + license = licenses.gpl2; + platforms = platforms.unix; + maintainers = [ maintainers.romildo ]; + }; +} diff --git a/nixpkgs/pkgs/desktops/mate/libmatemixer/default.nix b/nixpkgs/pkgs/desktops/mate/libmatemixer/default.nix new file mode 100644 index 000000000000..6bc9fe54ec3a --- /dev/null +++ b/nixpkgs/pkgs/desktops/mate/libmatemixer/default.nix @@ -0,0 +1,33 @@ +{ config, stdenv, fetchurl, pkgconfig, gettext, glib +, alsaSupport ? stdenv.isLinux, alsaLib +, pulseaudioSupport ? config.pulseaudio or true, libpulseaudio +, ossSupport ? false + }: + +stdenv.mkDerivation rec { + pname = "libmatemixer"; + version = "1.24.0"; + + src = fetchurl { + url = "https://pub.mate-desktop.org/releases/${stdenv.lib.versions.majorMinor version}/${pname}-${version}.tar.xz"; + sha256 = "08vkdp2kzy27xwscwp2jj5nz0yblrka2482l6cx3wl4dnk0rpznm"; + }; + + nativeBuildInputs = [ pkgconfig gettext ]; + + buildInputs = [ glib ] + ++ stdenv.lib.optional alsaSupport alsaLib + ++ stdenv.lib.optional pulseaudioSupport libpulseaudio; + + configureFlags = stdenv.lib.optional ossSupport "--enable-oss"; + + enableParallelBuilding = true; + + meta = with stdenv.lib; { + description = "Mixer library for MATE"; + homepage = "https://github.com/mate-desktop/libmatemixer"; + license = with licenses; [ gpl2 lgpl2 ]; + platforms = platforms.linux; + maintainers = [ maintainers.romildo ]; + }; +} diff --git a/nixpkgs/pkgs/desktops/mate/libmateweather/default.nix b/nixpkgs/pkgs/desktops/mate/libmateweather/default.nix new file mode 100644 index 000000000000..4774339db8b0 --- /dev/null +++ b/nixpkgs/pkgs/desktops/mate/libmateweather/default.nix @@ -0,0 +1,32 @@ +{ stdenv, fetchurl, pkgconfig, gettext, gtk3, libsoup, tzdata }: + +stdenv.mkDerivation rec { + pname = "libmateweather"; + version = "1.24.0"; + + src = fetchurl { + url = "https://pub.mate-desktop.org/releases/${stdenv.lib.versions.majorMinor version}/${pname}-${version}.tar.xz"; + sha256 = "094mnlczxq9crjj8z7dzs1zmwscdkbp54l3qjaf4a4bhd8lihv8d"; + }; + + nativeBuildInputs = [ pkgconfig gettext ]; + + buildInputs = [ gtk3 libsoup tzdata ]; + + configureFlags = [ + "--with-zoneinfo-dir=${tzdata}/share/zoneinfo" + "--enable-locations-compression" + ]; + + preFixup = "rm -f $out/share/icons/mate/icon-theme.cache"; + + enableParallelBuilding = true; + + meta = with stdenv.lib; { + description = "Library to access weather information from online services for MATE"; + homepage = "https://github.com/mate-desktop/libmateweather"; + license = licenses.gpl2; + platforms = platforms.unix; + maintainers = [ maintainers.romildo ]; + }; +} diff --git a/nixpkgs/pkgs/desktops/mate/marco/default.nix b/nixpkgs/pkgs/desktops/mate/marco/default.nix new file mode 100644 index 000000000000..3d36f51ab145 --- /dev/null +++ b/nixpkgs/pkgs/desktops/mate/marco/default.nix @@ -0,0 +1,38 @@ +{ stdenv, fetchurl, pkgconfig, gettext, itstool, libxml2, libcanberra-gtk3, libgtop, libstartup_notification, gnome3, gtk3, mate-settings-daemon, wrapGAppsHook }: + +stdenv.mkDerivation rec { + pname = "marco"; + version = "1.24.0"; + + src = fetchurl { + url = "https://pub.mate-desktop.org/releases/${stdenv.lib.versions.majorMinor version}/${pname}-${version}.tar.xz"; + sha256 = "0hcbyv8czymhwz5q9rwig7kkhlhik6y080bls736f3wsbqnnirc2"; + }; + + nativeBuildInputs = [ + pkgconfig + gettext + itstool + wrapGAppsHook + ]; + + buildInputs = [ + libxml2 + libcanberra-gtk3 + libgtop + libstartup_notification + gtk3 + gnome3.zenity + mate-settings-daemon + ]; + + enableParallelBuilding = true; + + meta = with stdenv.lib; { + description = "MATE default window manager"; + homepage = "https://github.com/mate-desktop/marco"; + license = [ licenses.gpl2 ]; + platforms = platforms.unix; + maintainers = [ maintainers.romildo ]; + }; +} diff --git a/nixpkgs/pkgs/desktops/mate/mate-applets/default.nix b/nixpkgs/pkgs/desktops/mate/mate-applets/default.nix new file mode 100644 index 000000000000..7f77a5668070 --- /dev/null +++ b/nixpkgs/pkgs/desktops/mate/mate-applets/default.nix @@ -0,0 +1,48 @@ +{ stdenv, fetchurl, pkgconfig, gettext, itstool, gnome3, glib, gtk3, gtksourceview3, libwnck3, libgtop, libxml2, libnotify, polkit, upower, wirelesstools, mate, hicolor-icon-theme, wrapGAppsHook }: + +stdenv.mkDerivation rec { + pname = "mate-applets"; + version = "1.24.0"; + + src = fetchurl { + url = "https://pub.mate-desktop.org/releases/${stdenv.lib.versions.majorMinor version}/${pname}-${version}.tar.xz"; + sha256 = "0nm3amb3v458mxv1mbz9y8f4230gldmydmkkm7vqxsrxbccynkxq"; + }; + + nativeBuildInputs = [ + pkgconfig + gettext + itstool + wrapGAppsHook + ]; + + buildInputs = [ + gtk3 + gtksourceview3 + gnome3.gucharmap + libwnck3 + libgtop + libxml2 + libnotify + polkit + upower + wirelesstools + mate.libmateweather + mate.mate-panel + hicolor-icon-theme + ]; + + configureFlags = [ "--enable-suid=no" ]; + + NIX_CFLAGS_COMPILE = "-I${glib.dev}/include/gio-unix-2.0"; + + enableParallelBuilding = true; + + meta = with stdenv.lib; { + description = "Applets for use with the MATE panel"; + homepage = "https://mate-desktop.org"; + license = with licenses; [ gpl2Plus lgpl2Plus ]; + platforms = platforms.linux; + maintainers = [ maintainers.romildo ]; + }; +} diff --git a/nixpkgs/pkgs/desktops/mate/mate-backgrounds/default.nix b/nixpkgs/pkgs/desktops/mate/mate-backgrounds/default.nix new file mode 100644 index 000000000000..e1f19ca8d695 --- /dev/null +++ b/nixpkgs/pkgs/desktops/mate/mate-backgrounds/default.nix @@ -0,0 +1,25 @@ +{ stdenv, fetchurl, meson, ninja, gettext }: + +stdenv.mkDerivation rec { + pname = "mate-backgrounds"; + version = "1.24.1"; + + src = fetchurl { + url = "https://pub.mate-desktop.org/releases/${stdenv.lib.versions.majorMinor version}/${pname}-${version}.tar.xz"; + sha256 = "0b9yx68p9l867bqsl9z2g4wrs8p396ls673jgaliys5snmk8n8dn"; + }; + + nativeBuildInputs = [ + gettext + meson + ninja + ]; + + meta = with stdenv.lib; { + description = "Background images and data for MATE"; + homepage = "https://mate-desktop.org"; + license = licenses.gpl2; + platforms = platforms.unix; + maintainers = [ maintainers.romildo ]; + }; +} diff --git a/nixpkgs/pkgs/desktops/mate/mate-calc/default.nix b/nixpkgs/pkgs/desktops/mate/mate-calc/default.nix new file mode 100644 index 000000000000..2de156d02de8 --- /dev/null +++ b/nixpkgs/pkgs/desktops/mate/mate-calc/default.nix @@ -0,0 +1,33 @@ +{ stdenv, fetchurl, pkgconfig, gettext, itstool, gtk3, libxml2, wrapGAppsHook }: + +stdenv.mkDerivation rec { + pname = "mate-calc"; + version = "1.24.0"; + + src = fetchurl { + url = "https://pub.mate-desktop.org/releases/${stdenv.lib.versions.majorMinor version}/${pname}-${version}.tar.xz"; + sha256 = "0f7hc1gg41kcwcyvsqqg79qylrp0qqymris8qizk2x3cfvvg7261"; + }; + + nativeBuildInputs = [ + pkgconfig + gettext + itstool + wrapGAppsHook + ]; + + buildInputs = [ + gtk3 + libxml2 + ]; + + enableParallelBuilding = true; + + meta = with stdenv.lib; { + description = "Calculator for the MATE desktop"; + homepage = "https://mate-desktop.org"; + license = [ licenses.gpl2Plus ]; + platforms = platforms.linux; + maintainers = [ maintainers.romildo ]; + }; +} diff --git a/nixpkgs/pkgs/desktops/mate/mate-common/default.nix b/nixpkgs/pkgs/desktops/mate/mate-common/default.nix new file mode 100644 index 000000000000..f8896ae0c2c7 --- /dev/null +++ b/nixpkgs/pkgs/desktops/mate/mate-common/default.nix @@ -0,0 +1,21 @@ +{ stdenv, fetchurl }: + +stdenv.mkDerivation rec { + pname = "mate-common"; + version = "1.24.1"; + + src = fetchurl { + url = "https://pub.mate-desktop.org/releases/${stdenv.lib.versions.majorMinor version}/${pname}-${version}.tar.xz"; + sha256 = "1dgp6k2l6dz7x2lnqk4y5xfkld376726hda3mrc777f821kk99nr"; + }; + + enableParallelBuilding = true; + + meta = { + description = "Common files for development of MATE packages"; + homepage = "https://mate-desktop.org"; + license = stdenv.lib.licenses.gpl3; + platforms = stdenv.lib.platforms.unix; + maintainers = [ stdenv.lib.maintainers.romildo ]; + }; +} diff --git a/nixpkgs/pkgs/desktops/mate/mate-control-center/default.nix b/nixpkgs/pkgs/desktops/mate/mate-control-center/default.nix new file mode 100644 index 000000000000..c8119a923d15 --- /dev/null +++ b/nixpkgs/pkgs/desktops/mate/mate-control-center/default.nix @@ -0,0 +1,59 @@ +{ stdenv, fetchurl, pkgconfig, gettext, itstool, libxml2, dbus-glib, + libxklavier, libcanberra-gtk3, librsvg, libappindicator-gtk3, + desktop-file-utils, dconf, gtk3, polkit, mate, hicolor-icon-theme, wrapGAppsHook +}: + +stdenv.mkDerivation rec { + pname = "mate-control-center"; + version = "1.24.0"; + + src = fetchurl { + url = "https://pub.mate-desktop.org/releases/${stdenv.lib.versions.majorMinor version}/${pname}-${version}.tar.xz"; + sha256 = "192plsh83m2qz7jgakns2yvhqbj53v7i54iwb0z26i2awy0j9rcd"; + }; + + nativeBuildInputs = [ + pkgconfig + gettext + itstool + desktop-file-utils + wrapGAppsHook + ]; + + buildInputs = [ + libxml2 + dbus-glib + libxklavier + libcanberra-gtk3 + librsvg + libappindicator-gtk3 + gtk3 + dconf + polkit + hicolor-icon-theme + mate.mate-desktop + mate.libmatekbd + mate.mate-menus + mate.marco + mate.mate-settings-daemon + ]; + + configureFlags = [ "--disable-update-mimedb" ]; + + preFixup = '' + gappsWrapperArgs+=( + # WM keyboard shortcuts + --prefix XDG_DATA_DIRS : "${mate.marco}/share" + ) + ''; + + enableParallelBuilding = true; + + meta = with stdenv.lib; { + description = "Utilities to configure the MATE desktop"; + homepage = "https://github.com/mate-desktop/mate-control-center"; + license = licenses.gpl2; + platforms = platforms.unix; + maintainers = [ maintainers.romildo ]; + }; +} diff --git a/nixpkgs/pkgs/desktops/mate/mate-desktop/default.nix b/nixpkgs/pkgs/desktops/mate/mate-desktop/default.nix new file mode 100644 index 000000000000..6a5f8b13bf1f --- /dev/null +++ b/nixpkgs/pkgs/desktops/mate/mate-desktop/default.nix @@ -0,0 +1,33 @@ +{ stdenv, fetchurl, pkgconfig, gettext, isocodes, gnome3, gtk3, dconf, wrapGAppsHook }: + +stdenv.mkDerivation rec { + pname = "mate-desktop"; + version = "1.24.0"; + + src = fetchurl { + url = "https://pub.mate-desktop.org/releases/${stdenv.lib.versions.majorMinor version}/${pname}-${version}.tar.xz"; + sha256 = "0l4bbj6nz315s5ndq5sw1jcgi3s1whk59bj12c4mbpsvmlb33adg"; + }; + + nativeBuildInputs = [ + pkgconfig + gettext + wrapGAppsHook + ]; + + buildInputs = [ + dconf + gtk3 + isocodes + ]; + + enableParallelBuilding = true; + + meta = with stdenv.lib; { + description = "Library with common API for various MATE modules"; + homepage = "https://mate-desktop.org"; + license = licenses.gpl2; + platforms = platforms.linux; + maintainers = [ maintainers.romildo ]; + }; +} diff --git a/nixpkgs/pkgs/desktops/mate/mate-icon-theme-faenza/default.nix b/nixpkgs/pkgs/desktops/mate/mate-icon-theme-faenza/default.nix new file mode 100644 index 000000000000..26d8f86985b9 --- /dev/null +++ b/nixpkgs/pkgs/desktops/mate/mate-icon-theme-faenza/default.nix @@ -0,0 +1,37 @@ +{ stdenv, fetchurl, autoreconfHook, gtk3, mate, hicolor-icon-theme }: + +stdenv.mkDerivation rec { + pname = "mate-icon-theme-faenza"; + version = "1.20.0"; + + src = fetchurl { + url = "https://pub.mate-desktop.org/releases/${stdenv.lib.versions.majorMinor version}/${pname}-${version}.tar.xz"; + sha256 = "000vr9cnbl2qlysf2gyg1lsjirqdzmwrnh6d3hyrsfc0r2vh4wna"; + }; + + nativeBuildInputs = [ autoreconfHook gtk3 ]; + + buildInputs = [ mate.mate-icon-theme ]; + + propagatedBuildInputs = [ + hicolor-icon-theme + ]; + + dontDropIconThemeCache = true; + + postInstall = '' + for theme in "$out"/share/icons/*; do + gtk-update-icon-cache "$theme" + done + ''; + + enableParallelBuilding = true; + + meta = { + description = "Faenza icon theme from MATE"; + homepage = "https://mate-desktop.org"; + license = stdenv.lib.licenses.gpl2; + platforms = stdenv.lib.platforms.unix; + maintainers = [ stdenv.lib.maintainers.romildo ]; + }; +} diff --git a/nixpkgs/pkgs/desktops/mate/mate-icon-theme/default.nix b/nixpkgs/pkgs/desktops/mate/mate-icon-theme/default.nix new file mode 100644 index 000000000000..4a1ea4c41fcb --- /dev/null +++ b/nixpkgs/pkgs/desktops/mate/mate-icon-theme/default.nix @@ -0,0 +1,37 @@ +{ stdenv, fetchurl, pkgconfig, gettext, iconnamingutils, librsvg, gtk3, hicolor-icon-theme }: + +stdenv.mkDerivation rec { + pname = "mate-icon-theme"; + version = "1.24.0"; + + src = fetchurl { + url = "https://pub.mate-desktop.org/releases/${stdenv.lib.versions.majorMinor version}/${pname}-${version}.tar.xz"; + sha256 = "0a2lz61ivwwcdznmwlmgjr6ipr9sdl5g2czbagnpxkwz8f3m77na"; + }; + + nativeBuildInputs = [ pkgconfig gettext iconnamingutils ]; + + buildInputs = [ librsvg ]; + + propagatedBuildInputs = [ + hicolor-icon-theme + ]; + + dontDropIconThemeCache = true; + + postInstall = '' + for theme in "$out"/share/icons/*; do + "${gtk3.out}/bin/gtk-update-icon-cache" "$theme" + done + ''; + + enableParallelBuilding = true; + + meta = { + description = "Icon themes from MATE"; + homepage = "https://mate-desktop.org"; + license = stdenv.lib.licenses.lgpl3; + platforms = stdenv.lib.platforms.linux; + maintainers = [ stdenv.lib.maintainers.romildo ]; + }; +} diff --git a/nixpkgs/pkgs/desktops/mate/mate-indicator-applet/default.nix b/nixpkgs/pkgs/desktops/mate/mate-indicator-applet/default.nix new file mode 100644 index 000000000000..235929dce0c7 --- /dev/null +++ b/nixpkgs/pkgs/desktops/mate/mate-indicator-applet/default.nix @@ -0,0 +1,45 @@ +{ stdenv, fetchurl, pkgconfig, gettext, gtk3, libindicator-gtk3, mate, hicolor-icon-theme, wrapGAppsHook }: + +stdenv.mkDerivation rec { + pname = "mate-indicator-applet"; + version = "1.24.0"; + + src = fetchurl { + url = "https://pub.mate-desktop.org/releases/${stdenv.lib.versions.majorMinor version}/${pname}-${version}.tar.xz"; + sha256 = "0m7pvbs5hhy5f400wqb8wp0dw3pyjpjnjax9qzc73j97l1k3zawf"; + }; + + nativeBuildInputs = [ + pkgconfig + gettext + wrapGAppsHook + ]; + + buildInputs = [ + gtk3 + libindicator-gtk3 + mate.mate-panel + hicolor-icon-theme + ]; + + enableParallelBuilding = true; + + meta = with stdenv.lib; { + homepage = "https://github.com/mate-desktop/mate-indicator-applet"; + description = "MATE panel indicator applet"; + longDescription = '' + A small applet to display information from various applications + consistently in the panel. + + The indicator applet exposes Ayatana Indicators in the MATE Panel. + Ayatana Indicators are an initiative by Canonical to provide crisp and + clean system and application status indication. They take the form of + an icon and associated menu, displayed (usually) in the desktop panel. + Existing indicators include the Message Menu, Battery Menu and Sound + menu. + ''; + license = with licenses; [ gpl3Plus lgpl2Plus ]; + platforms = platforms.unix; + maintainers = [ maintainers.romildo ]; + }; +} diff --git a/nixpkgs/pkgs/desktops/mate/mate-media/default.nix b/nixpkgs/pkgs/desktops/mate/mate-media/default.nix new file mode 100644 index 000000000000..c02201c855f9 --- /dev/null +++ b/nixpkgs/pkgs/desktops/mate/mate-media/default.nix @@ -0,0 +1,37 @@ +{ stdenv, fetchurl, pkgconfig, gettext, libtool, libxml2, libcanberra-gtk3, gtk3, mate, wrapGAppsHook }: + +stdenv.mkDerivation rec { + pname = "mate-media"; + version = "1.24.0"; + + src = fetchurl { + url = "https://pub.mate-desktop.org/releases/${stdenv.lib.versions.majorMinor version}/${pname}-${version}.tar.xz"; + sha256 = "1d5dx79yfqghjaxrdrdh053nfnvkbx8p3ma7j87s7rsvy5irs963"; + }; + + buildInputs = [ + libxml2 + libcanberra-gtk3 + gtk3 + mate.libmatemixer + mate.mate-panel + mate.mate-desktop + ]; + + nativeBuildInputs = [ + pkgconfig + gettext + libtool + wrapGAppsHook + ]; + + enableParallelBuilding = true; + + meta = with stdenv.lib; { + description = "Media tools for MATE"; + homepage = "https://mate-desktop.org"; + license = licenses.gpl3; + platforms = platforms.unix; + maintainers = [ maintainers.romildo maintainers.chpatrick ]; + }; +} diff --git a/nixpkgs/pkgs/desktops/mate/mate-menus/default.nix b/nixpkgs/pkgs/desktops/mate/mate-menus/default.nix new file mode 100644 index 000000000000..7d418c90b4ae --- /dev/null +++ b/nixpkgs/pkgs/desktops/mate/mate-menus/default.nix @@ -0,0 +1,30 @@ +{ stdenv, fetchurl, pkgconfig, gettext, glib, gobject-introspection, python3 }: + +stdenv.mkDerivation rec { + pname = "mate-menus"; + version = "1.24.0"; + + src = fetchurl { + url = "https://pub.mate-desktop.org/releases/${stdenv.lib.versions.majorMinor version}/${pname}-${version}.tar.xz"; + sha256 = "1vv4j38h7mrbfrsj99k25z6y7b5dg30fzd2qnhk7pl8ca8s1jhrd"; + }; + + nativeBuildInputs = [ pkgconfig gettext gobject-introspection ]; + + buildInputs = [ glib python3 ]; + + makeFlags = [ + "INTROSPECTION_GIRDIR=$(out)/share/gir-1.0/" + "INTROSPECTION_TYPELIBDIR=$(out)/lib/girepository-1.0" + ]; + + enableParallelBuilding = true; + + meta = with stdenv.lib; { + description = "Menu system for MATE"; + homepage = "https://github.com/mate-desktop/mate-menus"; + license = with licenses; [ gpl2 lgpl2 ]; + platforms = platforms.unix; + maintainers = [ maintainers.romildo ]; + }; +} diff --git a/nixpkgs/pkgs/desktops/mate/mate-netbook/default.nix b/nixpkgs/pkgs/desktops/mate/mate-netbook/default.nix new file mode 100644 index 000000000000..4c3338ef907d --- /dev/null +++ b/nixpkgs/pkgs/desktops/mate/mate-netbook/default.nix @@ -0,0 +1,42 @@ +{ stdenv, fetchurl, pkgconfig, gettext, gtk3, libwnck3, libfakekey, libXtst, mate, wrapGAppsHook }: + +stdenv.mkDerivation rec { + pname = "mate-netbook"; + version = "1.24.0"; + + src = fetchurl { + url = "https://pub.mate-desktop.org/releases/${stdenv.lib.versions.majorMinor version}/${pname}-${version}.tar.xz"; + sha256 = "1bmk9gq5gcqkvfppa7i1hqfph8sajc3xs189s4ha97g0ifwd98a8"; + }; + + nativeBuildInputs = [ + pkgconfig + gettext + wrapGAppsHook + ]; + + buildInputs = [ + gtk3 + libwnck3 + libfakekey + libXtst + mate.mate-panel + ]; + + enableParallelBuilding = true; + + meta = with stdenv.lib; { + description = "MATE utilities for netbooks"; + longDescription = '' + MATE utilities for netbooks are an applet and a daemon to maximize + windows and move their titles on the panel. + + Installing these utilities is recommended for netbooks and similar + devices with low resolution displays. + ''; + homepage = "https://mate-desktop.org"; + license = with licenses; [ gpl3 lgpl2Plus ]; + platforms = platforms.unix; + maintainers = [ maintainers.romildo ]; + }; +} diff --git a/nixpkgs/pkgs/desktops/mate/mate-notification-daemon/default.nix b/nixpkgs/pkgs/desktops/mate/mate-notification-daemon/default.nix new file mode 100644 index 000000000000..32d0cc9ed8e4 --- /dev/null +++ b/nixpkgs/pkgs/desktops/mate/mate-notification-daemon/default.nix @@ -0,0 +1,38 @@ +{ stdenv, fetchurl, pkgconfig, gettext, glib, libcanberra-gtk3, + libnotify, libwnck3, gtk3, libxml2, wrapGAppsHook }: + +stdenv.mkDerivation rec { + pname = "mate-notification-daemon"; + version = "1.24.0"; + + src = fetchurl { + url = "https://pub.mate-desktop.org/releases/${stdenv.lib.versions.majorMinor version}/${pname}-${version}.tar.xz"; + sha256 = "0y362b51lb8nq2cw254qc39x8hpficn5rxddzp0fxqxakrh7vcif"; + }; + + nativeBuildInputs = [ + pkgconfig + gettext + libxml2 # for xmllint + wrapGAppsHook + ]; + + buildInputs = [ + libcanberra-gtk3 + libnotify + libwnck3 + gtk3 + ]; + + NIX_CFLAGS_COMPILE = "-I${glib.dev}/include/gio-unix-2.0"; + + enableParallelBuilding = true; + + meta = with stdenv.lib; { + description = "Notification daemon for MATE Desktop"; + homepage = "https://github.com/mate-desktop/mate-notification-daemon"; + license = licenses.gpl2; + platforms = platforms.unix; + maintainers = [ maintainers.romildo ]; + }; +} diff --git a/nixpkgs/pkgs/desktops/mate/mate-panel/default.nix b/nixpkgs/pkgs/desktops/mate/mate-panel/default.nix new file mode 100644 index 000000000000..dce656751898 --- /dev/null +++ b/nixpkgs/pkgs/desktops/mate/mate-panel/default.nix @@ -0,0 +1,49 @@ +{ stdenv, fetchurl, pkgconfig, gettext, itstool, glib, libwnck3, librsvg, libxml2, dconf, gtk3, mate, hicolor-icon-theme, gobject-introspection, wrapGAppsHook }: + +stdenv.mkDerivation rec { + pname = "mate-panel"; + version = "1.24.0"; + + src = fetchurl { + url = "https://pub.mate-desktop.org/releases/${stdenv.lib.versions.majorMinor version}/${pname}-${version}.tar.xz"; + sha256 = "1hrh10pqk8mva1ix2nmsp3cbbn81cgqy0b9lqhsl0b5p0s40i7in"; + }; + + nativeBuildInputs = [ + gobject-introspection + gettext + itstool + pkgconfig + wrapGAppsHook + ]; + + buildInputs = [ + glib + libwnck3 + librsvg + libxml2 + gtk3 + dconf + mate.libmateweather + mate.mate-desktop + mate.mate-menus + hicolor-icon-theme + ]; + + NIX_CFLAGS_COMPILE = "-I${glib.dev}/include/gio-unix-2.0"; + + makeFlags = [ + "INTROSPECTION_GIRDIR=$(out)/share/gir-1.0/" + "INTROSPECTION_TYPELIBDIR=$(out)/lib/girepository-1.0" + ]; + + enableParallelBuilding = true; + + meta = with stdenv.lib; { + description = "The MATE panel"; + homepage = "https://github.com/mate-desktop/mate-panel"; + license = with licenses; [ gpl2 lgpl2 ]; + platforms = platforms.unix; + maintainers = [ maintainers.romildo ]; + }; +} diff --git a/nixpkgs/pkgs/desktops/mate/mate-polkit/default.nix b/nixpkgs/pkgs/desktops/mate/mate-polkit/default.nix new file mode 100644 index 000000000000..2ab526240418 --- /dev/null +++ b/nixpkgs/pkgs/desktops/mate/mate-polkit/default.nix @@ -0,0 +1,34 @@ +{ stdenv, fetchurl, pkgconfig, gettext, gtk3, gobject-introspection, libappindicator-gtk3, libindicator-gtk3, polkit }: + +stdenv.mkDerivation rec { + pname = "mate-polkit"; + version = "1.24.0"; + + src = fetchurl { + url = "https://pub.mate-desktop.org/releases/${stdenv.lib.versions.majorMinor version}/${pname}-${version}.tar.xz"; + sha256 = "1450bqzlnvwy3xa98lj102j2cf7piqbxcd1cy2zp41rdl8ri3gvn"; + }; + + nativeBuildInputs = [ + gobject-introspection + gettext + pkgconfig + ]; + + buildInputs = [ + gtk3 + libappindicator-gtk3 + libindicator-gtk3 + polkit + ]; + + enableParallelBuilding = true; + + meta = with stdenv.lib; { + description = "Integrates polkit authentication for MATE desktop"; + homepage = "https://mate-desktop.org"; + license = [ licenses.gpl2Plus ]; + platforms = platforms.unix; + maintainers = [ maintainers.romildo ]; + }; +} diff --git a/nixpkgs/pkgs/desktops/mate/mate-power-manager/default.nix b/nixpkgs/pkgs/desktops/mate/mate-power-manager/default.nix new file mode 100644 index 000000000000..30f1c48fa5f6 --- /dev/null +++ b/nixpkgs/pkgs/desktops/mate/mate-power-manager/default.nix @@ -0,0 +1,44 @@ +{ stdenv, fetchurl, pkgconfig, gettext, glib, itstool, libxml2, mate-panel, libnotify, libcanberra-gtk3, dbus-glib, upower, gnome3, gtk3, libtool, polkit, wrapGAppsHook }: + +stdenv.mkDerivation rec { + pname = "mate-power-manager"; + version = "1.24.1"; + + src = fetchurl { + url = "https://pub.mate-desktop.org/releases/${stdenv.lib.versions.majorMinor version}/${pname}-${version}.tar.xz"; + sha256 = "13ar40x5hs4d4h81q8qsy0agbx5wnarry3mbhws54zydcxd7j20a"; + }; + + nativeBuildInputs = [ + pkgconfig + gettext + libtool + wrapGAppsHook + ]; + + buildInputs = [ + glib + itstool + libxml2 + libcanberra-gtk3 + gtk3 + gnome3.libgnome-keyring + libnotify + dbus-glib + upower + polkit + mate-panel + ]; + + configureFlags = [ "--enable-applets" ]; + + enableParallelBuilding = true; + + meta = with stdenv.lib; { + description = "The MATE Power Manager"; + homepage = "https://mate-desktop.org"; + license = licenses.gpl3; + platforms = platforms.unix; + maintainers = with maintainers; [ romildo chpatrick ]; + }; +} diff --git a/nixpkgs/pkgs/desktops/mate/mate-screensaver/default.nix b/nixpkgs/pkgs/desktops/mate/mate-screensaver/default.nix new file mode 100644 index 000000000000..1c80b19aa5bb --- /dev/null +++ b/nixpkgs/pkgs/desktops/mate/mate-screensaver/default.nix @@ -0,0 +1,43 @@ +{ stdenv, fetchurl, pkgconfig, gettext, gtk3, dbus-glib, libXScrnSaver, libnotify, libxml2, pam, systemd, mate, wrapGAppsHook }: + +stdenv.mkDerivation rec { + pname = "mate-screensaver"; + version = "1.24.0"; + + src = fetchurl { + url = "https://pub.mate-desktop.org/releases/${stdenv.lib.versions.majorMinor version}/${pname}-${version}.tar.xz"; + sha256 = "0gpw6x9d0b77f14vjl7ghq5dya1mwcnvmgigg00manfwlksr5zby"; + }; + + nativeBuildInputs = [ + pkgconfig + gettext + libxml2 # provides xmllint + wrapGAppsHook + ]; + + buildInputs = [ + gtk3 + dbus-glib + libXScrnSaver + libnotify + pam + systemd + mate.mate-desktop + mate.mate-menus + ]; + + configureFlags = [ "--without-console-kit" ]; + + makeFlags = [ "DBUS_SESSION_SERVICE_DIR=$(out)/etc" ]; + + enableParallelBuilding = true; + + meta = with stdenv.lib; { + description = "Screen saver and locker for the MATE desktop"; + homepage = "https://mate-desktop.org"; + license = with licenses; [ gpl2Plus lgpl2Plus ]; + platforms = platforms.unix; + maintainers = [ maintainers.romildo ]; + }; +} diff --git a/nixpkgs/pkgs/desktops/mate/mate-sensors-applet/default.nix b/nixpkgs/pkgs/desktops/mate/mate-sensors-applet/default.nix new file mode 100644 index 000000000000..c7b7d5ba1919 --- /dev/null +++ b/nixpkgs/pkgs/desktops/mate/mate-sensors-applet/default.nix @@ -0,0 +1,40 @@ +{ stdenv, fetchurl, pkgconfig, gettext, itstool, gtk3, libxml2, libxslt, libatasmart, libnotify, lm_sensors, mate, hicolor-icon-theme, wrapGAppsHook }: + +stdenv.mkDerivation rec { + pname = "mate-sensors-applet"; + version = "1.24.0"; + + src = fetchurl { + url = "https://pub.mate-desktop.org/releases/${stdenv.lib.versions.majorMinor version}/${pname}-${version}.tar.xz"; + sha256 = "1izjgzj3xb93arim8w891x8as85phdmlhdnr2yc8ixg7xpblsq2s"; + }; + + nativeBuildInputs = [ + pkgconfig + gettext + itstool + wrapGAppsHook + ]; + + # maybe add nvidia-settings later on + buildInputs = [ + gtk3 + libxml2 + libxslt + libatasmart + libnotify + lm_sensors + mate.mate-panel + hicolor-icon-theme + ]; + + enableParallelBuilding = true; + + meta = with stdenv.lib; { + homepage = "https://github.com/mate-desktop/mate-sensors-applet"; + description = "MATE panel applet for hardware sensors"; + license = with licenses; [ gpl2Plus ]; + platforms = platforms.linux; + maintainers = [ maintainers.romildo ]; + }; +} diff --git a/nixpkgs/pkgs/desktops/mate/mate-session-manager/default.nix b/nixpkgs/pkgs/desktops/mate/mate-session-manager/default.nix new file mode 100644 index 000000000000..09973e04bc0a --- /dev/null +++ b/nixpkgs/pkgs/desktops/mate/mate-session-manager/default.nix @@ -0,0 +1,59 @@ +{ stdenv, fetchurl, pkgconfig, gettext, xtrans, dbus-glib, systemd, + libSM, libXtst, gtk3, epoxy, polkit, hicolor-icon-theme, mate, + wrapGAppsHook, fetchpatch +}: + +stdenv.mkDerivation rec { + pname = "mate-session-manager"; + version = "1.24.0"; + + src = fetchurl { + url = "https://pub.mate-desktop.org/releases/${stdenv.lib.versions.majorMinor version}/${pname}-${version}.tar.xz"; + sha256 = "01scj5d1xlri9b2id8gm9kfni9nzhdjdf7rag7fvcxwqp7baz3h3"; + }; + + patches = [ + # allow turning on debugging from environment variable + (fetchpatch { + url = "https://github.com/mate-desktop/mate-session-manager/commit/3ab6fbfc811d00100d7a2959f8bbb157b536690d.patch"; + sha256 = "0yjaklq0mp44clymyhy240kxlw95z3azmravh4f5pfm9dys33sg0"; + }) + ]; + + nativeBuildInputs = [ + pkgconfig + gettext + xtrans + wrapGAppsHook + ]; + + buildInputs = [ + dbus-glib + systemd + libSM + libXtst + gtk3 + mate.mate-desktop + hicolor-icon-theme + epoxy + polkit + ]; + + enableParallelBuilding = true; + + postFixup = '' + substituteInPlace $out/share/xsessions/mate.desktop \ + --replace "Exec=mate-session" "Exec=$out/bin/mate-session" \ + --replace "TryExec=mate-session" "TryExec=$out/bin/mate-session" + ''; + + passthru.providedSessions = [ "mate" ]; + + meta = with stdenv.lib; { + description = "MATE Desktop session manager"; + homepage = "https://github.com/mate-desktop/mate-session-manager"; + license = with licenses; [ gpl2 lgpl2 ]; + platforms = platforms.unix; + maintainers = [ maintainers.romildo ]; + }; +} diff --git a/nixpkgs/pkgs/desktops/mate/mate-settings-daemon/default.nix b/nixpkgs/pkgs/desktops/mate/mate-settings-daemon/default.nix new file mode 100644 index 000000000000..30db743c2763 --- /dev/null +++ b/nixpkgs/pkgs/desktops/mate/mate-settings-daemon/default.nix @@ -0,0 +1,48 @@ +{ stdenv, fetchurl, pkgconfig, gettext, glib, dbus-glib, libxklavier, + libcanberra-gtk3, libnotify, nss, polkit, dconf, gtk3, mate, + pulseaudioSupport ? stdenv.config.pulseaudio or true, libpulseaudio, + wrapGAppsHook }: + +stdenv.mkDerivation rec { + pname = "mate-settings-daemon"; + version = "1.24.0"; + + src = fetchurl { + url = "https://pub.mate-desktop.org/releases/${stdenv.lib.versions.majorMinor version}/${pname}-${version}.tar.xz"; + sha256 = "1hc5a36wqpjv9i2lgrn1h12s8y910xab3phx5vzbzq47kj6m3gw9"; + }; + + nativeBuildInputs = [ + gettext + pkgconfig + wrapGAppsHook + ]; + + buildInputs = [ + dbus-glib + libxklavier + libcanberra-gtk3 + libnotify + nss + polkit + gtk3 + dconf + mate.mate-desktop + mate.libmatekbd + mate.libmatemixer + ] ++ stdenv.lib.optional pulseaudioSupport libpulseaudio; + + configureFlags = stdenv.lib.optional pulseaudioSupport "--enable-pulse"; + + NIX_CFLAGS_COMPILE = "-I${glib.dev}/include/gio-unix-2.0"; + + enableParallelBuilding = true; + + meta = with stdenv.lib; { + description = "MATE settings daemon"; + homepage = "https://github.com/mate-desktop/mate-settings-daemon"; + license = with licenses; [ gpl2 lgpl21 ]; + platforms = platforms.unix; + maintainers = [ maintainers.romildo ]; + }; +} diff --git a/nixpkgs/pkgs/desktops/mate/mate-system-monitor/default.nix b/nixpkgs/pkgs/desktops/mate/mate-system-monitor/default.nix new file mode 100644 index 000000000000..480cf8de1de0 --- /dev/null +++ b/nixpkgs/pkgs/desktops/mate/mate-system-monitor/default.nix @@ -0,0 +1,40 @@ +{ stdenv, fetchurl, pkgconfig, gettext, itstool, gtkmm3, libxml2, libgtop, libwnck3, librsvg, polkit, systemd, wrapGAppsHook }: + +stdenv.mkDerivation rec { + pname = "mate-system-monitor"; + version = "1.24.0"; + + src = fetchurl { + url = "https://pub.mate-desktop.org/releases/${stdenv.lib.versions.majorMinor version}/${pname}-${version}.tar.xz"; + sha256 = "1cb36lrsn4fhsryl2kl4yq0qhp1p4r7k21w3fc2ywjga8fdxx6y5"; + }; + + nativeBuildInputs = [ + pkgconfig + gettext + itstool + wrapGAppsHook + ]; + + buildInputs = [ + gtkmm3 + libxml2 + libgtop + libwnck3 + librsvg + polkit + systemd + ]; + + configureFlags = [ "--enable-systemd" ]; + + enableParallelBuilding = true; + + meta = with stdenv.lib; { + description = "System monitor for the MATE desktop"; + homepage = "https://mate-desktop.org"; + license = [ licenses.gpl2Plus ]; + platforms = platforms.unix; + maintainers = [ maintainers.romildo ]; + }; +} diff --git a/nixpkgs/pkgs/desktops/mate/mate-terminal/default.nix b/nixpkgs/pkgs/desktops/mate/mate-terminal/default.nix new file mode 100644 index 000000000000..fc030152bcd9 --- /dev/null +++ b/nixpkgs/pkgs/desktops/mate/mate-terminal/default.nix @@ -0,0 +1,39 @@ +{ stdenv, fetchurl, pkgconfig, gettext, glib, itstool, libxml2, mate, dconf, gtk3, vte, wrapGAppsHook }: + +stdenv.mkDerivation rec { + pname = "mate-terminal"; + version = "1.24.0"; + + src = fetchurl { + url = "https://pub.mate-desktop.org/releases/${stdenv.lib.versions.majorMinor version}/${pname}-${version}.tar.xz"; + sha256 = "0nc23nmbkya2fgf7j65z85dcibwi5akkr8nscqrvk039ckirhk97"; + }; + + buildInputs = [ + glib + itstool + libxml2 + + mate.mate-desktop + + vte + gtk3 + dconf + ]; + + nativeBuildInputs = [ + pkgconfig + gettext + wrapGAppsHook + ]; + + enableParallelBuilding = true; + + meta = with stdenv.lib; { + description = "The MATE Terminal Emulator"; + homepage = "https://mate-desktop.org"; + license = licenses.gpl3; + platforms = platforms.unix; + maintainers = [ maintainers.romildo ]; + }; +} diff --git a/nixpkgs/pkgs/desktops/mate/mate-themes/default.nix b/nixpkgs/pkgs/desktops/mate/mate-themes/default.nix new file mode 100644 index 000000000000..ffa902a28916 --- /dev/null +++ b/nixpkgs/pkgs/desktops/mate/mate-themes/default.nix @@ -0,0 +1,34 @@ +{ stdenv, fetchurl, pkgconfig, gettext, mate-icon-theme, gtk2, gtk3, + gtk_engines, gtk-engine-murrine, gdk-pixbuf, librsvg }: + +stdenv.mkDerivation rec { + pname = "mate-themes"; + version = "3.22.21"; + + src = fetchurl { + url = "https://pub.mate-desktop.org/releases/themes/${stdenv.lib.versions.majorMinor version}/${pname}-${version}.tar.xz"; + sha256 = "051g2vq817g84yrqzf7hjcqr4xrghnw1rprjd6jf5mhhzmwcas6n"; + }; + + nativeBuildInputs = [ pkgconfig gettext gtk3 ]; + + buildInputs = [ mate-icon-theme gtk2 gtk_engines gdk-pixbuf librsvg ]; + + propagatedUserEnvPkgs = [ gtk-engine-murrine ]; + + dontDropIconThemeCache = true; + + postInstall = '' + gtk-update-icon-cache "$out"/share/icons/ContrastHigh + ''; + + enableParallelBuilding = true; + + meta = { + description = "A set of themes from MATE"; + homepage = "https://mate-desktop.org"; + license = stdenv.lib.licenses.lgpl21; + platforms = stdenv.lib.platforms.unix; + maintainers = [ stdenv.lib.maintainers.romildo ]; + }; +} diff --git a/nixpkgs/pkgs/desktops/mate/mate-user-guide/default.nix b/nixpkgs/pkgs/desktops/mate/mate-user-guide/default.nix new file mode 100644 index 000000000000..20ab8a9a361f --- /dev/null +++ b/nixpkgs/pkgs/desktops/mate/mate-user-guide/default.nix @@ -0,0 +1,30 @@ +{ stdenv, fetchurl, gettext, itstool, libxml2, yelp }: + +stdenv.mkDerivation rec { + pname = "mate-user-guide"; + version = "1.24.0"; + + src = fetchurl { + url = "https://pub.mate-desktop.org/releases/${stdenv.lib.versions.majorMinor version}/${pname}-${version}.tar.xz"; + sha256 = "0ddxya84iydvy85dbqls0wmz2rph87wri3rsdhv4rkbhh5g4sd7f"; + }; + + nativeBuildInputs = [ itstool gettext libxml2 ]; + + buildInputs = [ yelp ]; + + postPatch = '' + substituteInPlace mate-user-guide.desktop.in.in \ + --replace "Exec=yelp" "Exec=${yelp}/bin/yelp" + ''; + + enableParallelBuilding = true; + + meta = with stdenv.lib; { + description = "MATE User Guide"; + homepage = "https://mate-desktop.org"; + license = with licenses; [ gpl2Plus fdl12 ]; + platforms = platforms.unix; + maintainers = [ maintainers.romildo ]; + }; +} diff --git a/nixpkgs/pkgs/desktops/mate/mate-user-share/default.nix b/nixpkgs/pkgs/desktops/mate/mate-user-share/default.nix new file mode 100644 index 000000000000..ba27ae6ce102 --- /dev/null +++ b/nixpkgs/pkgs/desktops/mate/mate-user-share/default.nix @@ -0,0 +1,54 @@ +{ stdenv, fetchurl, pkgconfig, gettext, itstool, gtk3, dbus-glib, libnotify, libxml2, libcanberra-gtk3, mod_dnssd, apacheHttpd, hicolor-icon-theme, mate, wrapGAppsHook }: + +stdenv.mkDerivation rec { + pname = "mate-user-share"; + version = "1.24.0"; + + src = fetchurl { + url = "https://pub.mate-desktop.org/releases/${stdenv.lib.versions.majorMinor version}/${pname}-${version}.tar.xz"; + sha256 = "1h4aabcby96nsg557brzzb0an1qvnawhim2rinzlzg4fhkvdfnr5"; + }; + + nativeBuildInputs = [ + pkgconfig + gettext + itstool + libxml2 + wrapGAppsHook + ]; + + buildInputs = [ + gtk3 + dbus-glib + libnotify + libcanberra-gtk3 + mate.caja + hicolor-icon-theme + # Should mod_dnssd and apacheHttpd be runtime dependencies? + # In gnome-user-share they are not. + #mod_dnssd + #apacheHttpd + ]; + + preConfigure = '' + sed -e 's,^LoadModule dnssd_module.\+,LoadModule dnssd_module ${mod_dnssd}/modules/mod_dnssd.so,' \ + -e 's,''${HTTP_MODULES_PATH},${apacheHttpd}/modules,' \ + -i data/dav_user_2.4.conf + ''; + + configureFlags = [ + "--with-httpd=${apacheHttpd.out}/bin/httpd" + "--with-modules-path=${apacheHttpd.dev}/modules" + "--with-cajadir=$(out)/lib/caja/extensions-2.0" + ]; + + enableParallelBuilding = true; + + meta = with stdenv.lib; { + description = "User level public file sharing for the MATE desktop"; + homepage = "https://github.com/mate-desktop/mate-user-share"; + license = with licenses; [ gpl2Plus ]; + platforms = platforms.unix; + maintainers = [ maintainers.romildo ]; + }; +} diff --git a/nixpkgs/pkgs/desktops/mate/mate-utils/default.nix b/nixpkgs/pkgs/desktops/mate/mate-utils/default.nix new file mode 100644 index 000000000000..e36ff69a6fa7 --- /dev/null +++ b/nixpkgs/pkgs/desktops/mate/mate-utils/default.nix @@ -0,0 +1,41 @@ +{ stdenv, fetchurl, pkgconfig, gettext, itstool, glib, gtk3, libxml2, libgtop, libcanberra-gtk3, inkscape, udisks2, mate, hicolor-icon-theme, wrapGAppsHook }: + +stdenv.mkDerivation rec { + pname = "mate-utils"; + version = "1.24.0"; + + src = fetchurl { + url = "https://pub.mate-desktop.org/releases/${stdenv.lib.versions.majorMinor version}/${pname}-${version}.tar.xz"; + sha256 = "1b16n1628gcsym5mph6lr9x5xm4rgkxsa8xwr2wlx8g2gw2775i1"; + }; + + nativeBuildInputs = [ + pkgconfig + gettext + itstool + inkscape + wrapGAppsHook + ]; + + buildInputs = [ + gtk3 + libgtop + libcanberra-gtk3 + libxml2 + udisks2 + mate.mate-panel + hicolor-icon-theme + ]; + + NIX_CFLAGS_COMPILE = "-I${glib.dev}/include/gio-unix-2.0"; + + enableParallelBuilding = true; + + meta = with stdenv.lib; { + description = "Utilities for the MATE desktop"; + homepage = "https://mate-desktop.org"; + license = with licenses; [ gpl2Plus lgpl2Plus ]; + platforms = platforms.unix; + maintainers = [ maintainers.romildo ]; + }; +} diff --git a/nixpkgs/pkgs/desktops/mate/mozo/default.nix b/nixpkgs/pkgs/desktops/mate/mozo/default.nix new file mode 100644 index 000000000000..7bad399623a7 --- /dev/null +++ b/nixpkgs/pkgs/desktops/mate/mozo/default.nix @@ -0,0 +1,30 @@ +{ stdenv, python3, fetchurl, pkgconfig, gettext, mate, gtk3, glib, wrapGAppsHook, gobject-introspection }: + +python3.pkgs.buildPythonApplication rec { + pname = "mozo"; + version = "1.24.0"; + + format = "other"; + doCheck = false; + + src = fetchurl { + url = "https://pub.mate-desktop.org/releases/${stdenv.lib.versions.majorMinor version}/${pname}-${version}.tar.xz"; + sha256 = "01lyi47a04xk0by5bvnfmqgv5sysk2wdlri6a4ssmy1qhgwh9zr3"; + }; + + nativeBuildInputs = [ pkgconfig gettext gobject-introspection wrapGAppsHook ]; + + propagatedBuildInputs = [ mate.mate-menus python3.pkgs.pygobject3 ]; + + buildInputs = [ gtk3 glib ]; + + enableParallelBuilding = true; + + meta = with stdenv.lib; { + description = "MATE Desktop menu editor"; + homepage = "https://github.com/mate-desktop/mozo"; + license = with licenses; [ lgpl2Plus ]; + platforms = platforms.unix; + maintainers = [ maintainers.romildo ]; + }; +} diff --git a/nixpkgs/pkgs/desktops/mate/pluma/default.nix b/nixpkgs/pkgs/desktops/mate/pluma/default.nix new file mode 100644 index 000000000000..5a12ffc37820 --- /dev/null +++ b/nixpkgs/pkgs/desktops/mate/pluma/default.nix @@ -0,0 +1,40 @@ +{ stdenv, fetchurl, pkgconfig, gettext, perl, itstool, isocodes, enchant, libxml2, python3, gnome3, gtksourceview3, libpeas, mate, wrapGAppsHook }: + +stdenv.mkDerivation rec { + pname = "pluma"; + version = "1.24.0"; + + src = fetchurl { + url = "https://pub.mate-desktop.org/releases/${stdenv.lib.versions.majorMinor version}/${pname}-${version}.tar.xz"; + sha256 = "1vmndhlhy3qkf3xs5kkv0xhbv5ar25pqz0kp17hc4qhgjzycfr0r"; + }; + + nativeBuildInputs = [ + pkgconfig + gettext + perl + itstool + isocodes + wrapGAppsHook + ]; + + buildInputs = [ + enchant + libxml2 + python3 + gtksourceview3 + libpeas + gnome3.adwaita-icon-theme + mate.mate-desktop + ]; + + enableParallelBuilding = true; + + meta = { + description = "Powerful text editor for the MATE desktop"; + homepage = "https://mate-desktop.org"; + license = stdenv.lib.licenses.gpl2; + platforms = stdenv.lib.platforms.unix; + maintainers = [ stdenv.lib.maintainers.romildo ]; + }; +} diff --git a/nixpkgs/pkgs/desktops/mate/python-caja/default.nix b/nixpkgs/pkgs/desktops/mate/python-caja/default.nix new file mode 100644 index 000000000000..570eaefb5990 --- /dev/null +++ b/nixpkgs/pkgs/desktops/mate/python-caja/default.nix @@ -0,0 +1,36 @@ +{ stdenv, fetchurl, pkgconfig, gettext, gtk3, mate, python3Packages }: + +stdenv.mkDerivation rec { + pname = "python-caja"; + version = "1.24.0"; + + src = fetchurl { + url = "https://pub.mate-desktop.org/releases/${stdenv.lib.versions.majorMinor version}/${pname}-${version}.tar.xz"; + sha256 = "1wp61q64cgzr3syd3niclj6rjk87wlib5m86i0myf5ph704r3qgg"; + }; + + nativeBuildInputs = [ + pkgconfig + gettext + python3Packages.wrapPython + ]; + + buildInputs = [ + gtk3 + mate.caja + python3Packages.python + python3Packages.pygobject3 + ]; + + configureFlags = [ "--with-cajadir=$$out/lib/caja/extensions-2.0" ]; + + enableParallelBuilding = true; + + meta = with stdenv.lib; { + description = "Python binding for Caja components"; + homepage = "https://github.com/mate-desktop/python-caja"; + license = [ licenses.gpl2Plus ]; + platforms = platforms.unix; + maintainers = [ maintainers.romildo ]; + }; +} diff --git a/nixpkgs/pkgs/desktops/mate/update.sh b/nixpkgs/pkgs/desktops/mate/update.sh new file mode 100755 index 000000000000..d214e07f8cdd --- /dev/null +++ b/nixpkgs/pkgs/desktops/mate/update.sh @@ -0,0 +1,64 @@ +#!/usr/bin/env nix-shell +#!nix-shell -i bash -p libarchive curl common-updater-scripts + +set -eu -o pipefail + +cd "$(dirname "${BASH_SOURCE[0]}")" +root=../../.. +export NIXPKGS_ALLOW_UNFREE=1 + +mate_version=1.24 +theme_version=3.22 +materepo=https://pub.mate-desktop.org/releases/${mate_version} +themerepo=https://pub.mate-desktop.org/releases/themes/${theme_version} + +version() { + (cd "$root" && nix-instantiate --eval --strict -A "$1.version" | tr -d '"') +} + +update_package() { + local p=$1 + echo $p + echo "# $p" >> git-commits.txt + + local repo + if [ "$p" = "mate-themes" ]; then + repo=$themerepo + else + repo=$materepo + fi + + local p_version_old=$(version mate.$p) + local p_versions=$(curl -sS ${repo}/ | sed -rne "s/.*\"$p-([0-9]+\\.[0-9]+\\.[0-9]+)\\.tar\\.xz.*/\\1/p") + local p_version=$(echo $p_versions | sed -e 's/ /\n/g' | sort -t. -k 1,1n -k 2,2n -k 3,3n | tail -n1) + + if [[ -z "$p_version" ]]; then + echo "unavailable $p" + echo "# $p not found" >> git-commits.txt + echo + return + fi + + if [[ "$p_version" = "$p_version_old" ]]; then + echo "nothing to do, $p $p_version is current" + echo + return + fi + + # Download package and save hash and file path. + local url="$repo/$p-${p_version}.tar.xz" + mapfile -t prefetch < <(nix-prefetch-url --print-path "$url") + local hash=${prefetch[0]} + local path=${prefetch[1]} + echo "$p: $p_version_old -> $p_version" + (cd "$root" && update-source-version mate.$p "$p_version" "$hash") + echo " git add pkgs/desktops/mate/$p" >> git-commits.txt + echo " git commit -m \"mate.$p: $p_version_old -> $p_version\"" >> git-commits.txt + echo +} + +for d in $(ls -A --indicator-style=none); do + if [ -d $d ]; then + update_package $d + fi +done diff --git a/nixpkgs/pkgs/desktops/maxx/default.nix b/nixpkgs/pkgs/desktops/maxx/default.nix new file mode 100644 index 000000000000..fc48514ff017 --- /dev/null +++ b/nixpkgs/pkgs/desktops/maxx/default.nix @@ -0,0 +1,77 @@ +{ stdenv, fetchurl, makeWrapper, autoPatchelfHook, gnused +, gcc, bash, gtk-engine-murrine, gtk_engines, librsvg + +, libX11, libXext, libXi, libXau, libXrender, libXft, libXmu, libSM, libXcomposite, libXfixes, libXpm +, libXinerama, libXdamage, libICE, libXtst, libXaw, fontconfig, pango, cairo, glib, libxml2, atk, gtk2 +, gdk-pixbuf, libGL, ncurses5 + +, dmidecode, pciutils, usbutils +}: + +stdenv.mkDerivation rec { + pname = "MaXX"; + version = "2.0.1"; + codename = "Indigo"; + + srcs = [ + (fetchurl { + url = "http://maxxdesktop.arcadedaydream.com/${codename}-Releases/Installers/MaXX-${codename}-${version}-x86_64.tar.gz"; + sha256 = "17hd3j8773kmvvhyf657in6zmhnw4mbvyn4r6dfip5bdaz66pj01"; + }) + ]; + + nativeBuildInputs = [ makeWrapper autoPatchelfHook gnused ]; + buildInputs = [ + stdenv.cc.cc libX11 libXext libXi libXau libXrender libXft libXmu libSM libXcomposite libXfixes libXpm + libXinerama libXdamage libICE libXtst libXaw fontconfig pango cairo glib libxml2 atk gtk2 + gdk-pixbuf libGL ncurses5 + ]; + + buildPhase = '' + sed -i "s/\(LD_LIBRARY_PATH=.*\)$/\1:\$LD_LIBRARY_PATH/p" etc/system.desktopenv + + substituteInPlace bin/adminterm \ + --replace /bin/bash ${bash}/bin/bash + + substituteInPlace share/misc/HOME/initMaXX-Desktop-Home.sh \ + --replace "cp " "cp --no-preserve=mode " + ''; + + installPhase = '' + maxx=$out/opt/MaXX + mkdir -p "$maxx" $out/share $maxx/sbin + + mv -- ./* "$maxx" + ln -s $maxx/share/icons $out/share + + wrapProgram $maxx/etc/skel/Xsession.dt \ + --prefix GTK_PATH : "${gtk-engine-murrine}/lib/gtk-2.0:${gtk_engines}/lib/gtk-2.0" \ + --prefix GDK_PIXBUF_MODULE_FILE : "$(echo ${librsvg.out}/lib/gdk-pixbuf-2.0/*/loaders.cache)" + + while IFS= read -r -d ''$'\0' i; do + if isExecutable "$i"; then + wrapProgram "$i" \ + --prefix PATH : ${gcc}/bin + fi + done < <(find "$maxx" -type f -print0) + + wrapProgram $maxx/bin/hinv \ + --prefix PATH : ${stdenv.lib.makeBinPath [ dmidecode pciutils usbutils ]} + ''; + + meta = with stdenv.lib; { + description = "A replica of IRIX Interactive Desktop"; + homepage = "https://www.facebook.com/maxxdesktop/"; + license = { + fullName = "The MaXX Interactive Desktop for Linux License Agreement"; + url = "http://maxxdesktop.arcadedaydream.com/Indigo-Releases/docs/license.html"; + free = false; # redistribution is only allowed to *some* hardware, etc. + }; + maintainers = [ maintainers.gnidorah ]; + platforms = ["x86_64-linux"]; + longDescription = '' + A clone of IRIX Interactive Desktop made in agreement with SGI. + Provides simple and fast retro desktop environment. + ''; + }; +} diff --git a/nixpkgs/pkgs/desktops/pantheon/apps/appcenter/default.nix b/nixpkgs/pkgs/desktops/pantheon/apps/appcenter/default.nix new file mode 100644 index 000000000000..656428fa7f00 --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/apps/appcenter/default.nix @@ -0,0 +1,92 @@ +{ stdenv +, appstream +, appstream-glib +, dbus +, desktop-file-utils +, elementary-gtk-theme +, elementary-icon-theme +, fetchFromGitHub +, fetchpatch +, flatpak +, gettext +, glib +, granite +, gtk3 +, json-glib +, libgee +, libsoup +, libxml2 +, meson +, ninja +, packagekit +, pantheon +, pkgconfig +, python3 +, vala +, wrapGAppsHook +}: + +stdenv.mkDerivation rec { + pname = "appcenter"; + version = "3.2.4"; + + src = fetchFromGitHub { + owner = "elementary"; + repo = pname; + rev = version; + sha256 = "0nhgf5lgy74liml3kzijldan3qgrxh2721yvjdk4jf83b0g1b7yb"; + }; + + passthru = { + updateScript = pantheon.updateScript { + attrPath = "pantheon.${pname}"; + }; + }; + + nativeBuildInputs = [ + appstream-glib + dbus # for pkgconfig + desktop-file-utils + gettext + meson + ninja + pkgconfig + python3 + vala + wrapGAppsHook + ]; + + buildInputs = [ + appstream + elementary-icon-theme + elementary-gtk-theme + flatpak + glib + granite + gtk3 + json-glib + libgee + libsoup + libxml2 + packagekit + ]; + + mesonFlags = [ + "-Dhomepage=false" + "-Dpayments=false" + "-Dcurated=false" + ]; + + postPatch = '' + chmod +x meson/post_install.py + patchShebangs meson/post_install.py + ''; + + meta = with stdenv.lib; { + homepage = "https://github.com/elementary/appcenter"; + description = "An open, pay-what-you-want app store for indie developers, designed for elementary OS"; + license = licenses.gpl3Plus; + platforms = platforms.linux; + maintainers = pantheon.maintainers; + }; +} diff --git a/nixpkgs/pkgs/desktops/pantheon/apps/elementary-calculator/default.nix b/nixpkgs/pkgs/desktops/pantheon/apps/elementary-calculator/default.nix new file mode 100644 index 000000000000..f2f6faedc5ad --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/apps/elementary-calculator/default.nix @@ -0,0 +1,69 @@ +{ stdenv +, fetchFromGitHub +, pantheon +, pkgconfig +, meson +, ninja +, vala +, desktop-file-utils +, libxml2 +, gtk3 +, python3 +, granite +, libgee +, elementary-icon-theme +, appstream +, wrapGAppsHook +}: + +stdenv.mkDerivation rec { + pname = "elementary-calculator"; + version = "1.5.5"; + + repoName = "calculator"; + + src = fetchFromGitHub { + owner = "elementary"; + repo = repoName; + rev = version; + sha256 = "1csxsr2c8qvl97xz9ahwn91z095nzgr0i1mbcb1spljll2sr9lkj"; + }; + + passthru = { + updateScript = pantheon.updateScript { + attrPath = "pantheon.${pname}"; + }; + }; + + nativeBuildInputs = [ + appstream + desktop-file-utils + libxml2 + meson + ninja + pkgconfig + python3 + vala + wrapGAppsHook + ]; + + buildInputs = [ + elementary-icon-theme + granite + gtk3 + libgee + ]; + + postPatch = '' + chmod +x meson/post_install.py + patchShebangs meson/post_install.py + ''; + + meta = with stdenv.lib; { + homepage = "https://github.com/elementary/calculator"; + description = "Calculator app designed for elementary OS"; + license = licenses.gpl3Plus; + platforms = platforms.linux; + maintainers = pantheon.maintainers; + }; +} diff --git a/nixpkgs/pkgs/desktops/pantheon/apps/elementary-calendar/default.nix b/nixpkgs/pkgs/desktops/pantheon/apps/elementary-calendar/default.nix new file mode 100644 index 000000000000..ec11ae7516b2 --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/apps/elementary-calendar/default.nix @@ -0,0 +1,83 @@ +{ stdenv +, fetchFromGitHub +, pantheon +, pkgconfig +, meson +, ninja +, vala +, desktop-file-utils +, gtk3 +, granite +, libgee +, geoclue2 +, libchamplain +, clutter +, folks +, geocode-glib +, python3 +, libnotify +, libical +, evolution-data-server +, appstream-glib +, elementary-icon-theme +, wrapGAppsHook +}: + +stdenv.mkDerivation rec { + pname = "elementary-calendar"; + version = "5.0.4"; + + repoName = "calendar"; + + src = fetchFromGitHub { + owner = "elementary"; + repo = repoName; + rev = version; + sha256 = "0ywk9w6d6nw7ir3f11xc13fr08ifvzpavq1c3x48kmmf69ywprdk"; + }; + + passthru = { + updateScript = pantheon.updateScript { + attrPath = "pantheon.${pname}"; + }; + }; + + nativeBuildInputs = [ + appstream-glib + desktop-file-utils + meson + ninja + pkgconfig + python3 + vala + wrapGAppsHook + ]; + + buildInputs = [ + clutter + elementary-icon-theme + evolution-data-server + folks + geoclue2 + geocode-glib + granite + gtk3 + libchamplain + libgee + libical + libnotify + ]; + + postPatch = '' + chmod +x meson/post_install.py + patchShebangs meson/post_install.py + ''; + + meta = with stdenv.lib; { + description = "Desktop calendar app designed for elementary OS"; + homepage = "https://github.com/elementary/calendar"; + license = licenses.gpl3Plus; + platforms = platforms.linux; + maintainers = pantheon.maintainers; + }; +} diff --git a/nixpkgs/pkgs/desktops/pantheon/apps/elementary-camera/default.nix b/nixpkgs/pkgs/desktops/pantheon/apps/elementary-camera/default.nix new file mode 100644 index 000000000000..712f2bec8d5e --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/apps/elementary-camera/default.nix @@ -0,0 +1,82 @@ +{ stdenv +, fetchFromGitHub +, pantheon +, pkgconfig +, meson +, ninja +, vala +, desktop-file-utils +, python3 +, gettext +, libxml2 +, gtk3 +, granite +, libgee +, gst_all_1 +, libcanberra +, clutter-gtk +, clutter-gst +, elementary-icon-theme +, appstream +, wrapGAppsHook +}: + +stdenv.mkDerivation rec { + pname = "elementary-camera"; + version = "1.0.6"; + + repoName = "camera"; + + src = fetchFromGitHub { + owner = "elementary"; + repo = repoName; + rev = version; + sha256 = "13jg224h2436swd6kdkfs22icg0ja9lshvxwg5bqnb5fshspkjba"; + }; + + passthru = { + updateScript = pantheon.updateScript { + attrPath = "pantheon.${pname}"; + }; + }; + + nativeBuildInputs = [ + appstream + desktop-file-utils + gettext + libxml2 + meson + ninja + pkgconfig + python3 + vala + wrapGAppsHook + ]; + + buildInputs = [ + clutter-gst + clutter-gtk + elementary-icon-theme + granite + gst_all_1.gst-plugins-bad + gst_all_1.gst-plugins-base + gst_all_1.gst-plugins-good + gst_all_1.gstreamer + gtk3 + libcanberra + libgee + ]; + + postPatch = '' + chmod +x meson/post_install.py + patchShebangs meson/post_install.py + ''; + + meta = with stdenv.lib; { + description = "Camera app designed for elementary OS"; + homepage = "https://github.com/elementary/camera"; + license = licenses.gpl2Plus; + platforms = platforms.linux; + maintainers = pantheon.maintainers; + }; +} diff --git a/nixpkgs/pkgs/desktops/pantheon/apps/elementary-code/default.nix b/nixpkgs/pkgs/desktops/pantheon/apps/elementary-code/default.nix new file mode 100644 index 000000000000..82036c8b8e21 --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/apps/elementary-code/default.nix @@ -0,0 +1,97 @@ +{ stdenv +, fetchFromGitHub +, pantheon +, pkgconfig +, meson +, ninja +, vala +, python3 +, desktop-file-utils +, gtk3 +, granite +, libgee +, elementary-icon-theme +, appstream +, libpeas +, editorconfig-core-c +, gtksourceview3 +, gtkspell3 +, libsoup +, vte +, webkitgtk +, zeitgeist +, ctags +, libgit2-glib +, wrapGAppsHook +}: + +stdenv.mkDerivation rec { + pname = "elementary-code"; + version = "3.4.0"; + + repoName = "code"; + + src = fetchFromGitHub { + owner = "elementary"; + repo = repoName; + rev = version; + sha256 = "0b1vdgb1xvh5lqbral3r0qaq05zd5q5ywxw02fggpyy8nyxs3z8f"; + }; + + passthru = { + updateScript = pantheon.updateScript { + attrPath = "pantheon.${pname}"; + }; + }; + + nativeBuildInputs = [ + appstream + desktop-file-utils + meson + ninja + pkgconfig + python3 + vala + wrapGAppsHook + ]; + + buildInputs = [ + ctags + editorconfig-core-c + elementary-icon-theme + granite + gtk3 + gtksourceview3 + gtkspell3 + libgee + libgit2-glib + libpeas + libsoup + vte + webkitgtk + zeitgeist + ]; + + # install script fails with UnicodeDecodeError because of printing a fancy elipsis character + LC_ALL = "C.UTF-8"; + + # ctags needed in path by outline plugin + preFixup = '' + gappsWrapperArgs+=( + --prefix PATH : "${stdenv.lib.makeBinPath [ ctags ]}" + ) + ''; + + postPatch = '' + chmod +x meson/post_install.py + patchShebangs meson/post_install.py + ''; + + meta = with stdenv.lib; { + description = "Code editor designed for elementary OS"; + homepage = "https://github.com/elementary/code"; + license = licenses.gpl3Plus; + platforms = platforms.linux; + maintainers = pantheon.maintainers; + }; +} diff --git a/nixpkgs/pkgs/desktops/pantheon/apps/elementary-dock/default.nix b/nixpkgs/pkgs/desktops/pantheon/apps/elementary-dock/default.nix new file mode 100644 index 000000000000..ee9df9955f40 --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/apps/elementary-dock/default.nix @@ -0,0 +1,78 @@ +{ stdenv +, fetchFromGitHub +, vala +, atk +, cairo +, dconf +, glib +, gtk3 +, libwnck3 +, libX11 +, libXfixes +, libXi +, pango +, gettext +, pkgconfig +, libxml2 +, bamf +, gdk-pixbuf +, libdbusmenu-gtk3 +, gnome-menus +, libgee +, wrapGAppsHook +, pantheon +, meson +, ninja +}: + +stdenv.mkDerivation rec { + pname = "elementary-dock"; + version = "unstable-2020-02-28"; + + outputs = [ "out" "dev" ]; + + repoName = "dock"; + + src = fetchFromGitHub { + owner = "elementary"; + repo = repoName; + rev = "ac87d9063dc9c81d90f42f3002ad9c5b49460a82"; + sha256 = "0lhjzd370fza488dav8n155ss486wqv6y7ldkahwg0c3zvlsvha7"; + }; + + nativeBuildInputs = [ + gettext + meson + ninja + libxml2 # xmllint + pkgconfig + vala + wrapGAppsHook + ]; + + buildInputs = [ + atk + bamf + cairo + gdk-pixbuf + glib + gnome-menus + dconf + gtk3 + libX11 + libXfixes + libXi + libdbusmenu-gtk3 + libgee + libwnck3 + pango + ]; + + meta = with stdenv.lib; { + description = "Elegant, simple, clean dock"; + homepage = "https://github.com/elementary/dock"; + license = licenses.gpl3Plus; + platforms = platforms.linux; + maintainers = with maintainers; [ davidak ] ++ pantheon.maintainers; + }; +} diff --git a/nixpkgs/pkgs/desktops/pantheon/apps/elementary-feedback/default.nix b/nixpkgs/pkgs/desktops/pantheon/apps/elementary-feedback/default.nix new file mode 100644 index 000000000000..e54841275f6f --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/apps/elementary-feedback/default.nix @@ -0,0 +1,69 @@ +{ stdenv +, fetchFromGitHub +, pantheon +, pkgconfig +, meson +, ninja +, vala +, python3 +, gtk3 +, glib +, granite +, libgee +, elementary-icon-theme +, elementary-gtk-theme +, gettext +, wrapGAppsHook +}: + +stdenv.mkDerivation rec { + pname = "elementary-feedback"; + version = "1.0"; + + repoName = "feedback"; + + src = fetchFromGitHub { + owner = "elementary"; + repo = repoName; + rev = version; + sha256 = "0rc4ifs4hd4cj0v028bzc45v64pwx21xylwrhb20jpw61ainfi8s"; + }; + + passthru = { + updateScript = pantheon.updateScript { + attrPath = "pantheon.${pname}"; + }; + }; + + nativeBuildInputs = [ + gettext + meson + ninja + pkgconfig + python3 + vala + wrapGAppsHook + ]; + + buildInputs = [ + elementary-icon-theme + granite + gtk3 + elementary-gtk-theme + libgee + glib + ]; + + postPatch = '' + chmod +x meson/post_install.py + patchShebangs meson/post_install.py + ''; + + meta = with stdenv.lib; { + description = "GitHub Issue Reporter designed for elementary OS"; + homepage = "https://github.com/elementary/feedback"; + license = licenses.gpl3Plus; + platforms = platforms.linux; + maintainers = pantheon.maintainers; + }; +} diff --git a/nixpkgs/pkgs/desktops/pantheon/apps/elementary-files/default.nix b/nixpkgs/pkgs/desktops/pantheon/apps/elementary-files/default.nix new file mode 100644 index 000000000000..ed557da5449f --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/apps/elementary-files/default.nix @@ -0,0 +1,101 @@ +{ stdenv +, fetchFromGitHub +, pantheon +, pkgconfig +, meson +, ninja +, gettext +, vala +, python3 +, desktop-file-utils +, libcanberra +, gtk3 +, glib +, libgee +, granite +, libnotify +, libunity +, pango +, plank +, bamf +, sqlite +, libdbusmenu-gtk3 +, zeitgeist +, glib-networking +, elementary-icon-theme +, libcloudproviders +, libgit2-glib +, wrapGAppsHook +}: + +stdenv.mkDerivation rec { + pname = "elementary-files"; + version = "4.4.2"; + + repoName = "files"; + + outputs = [ "out" "dev" ]; + + src = fetchFromGitHub { + owner = "elementary"; + repo = repoName; + rev = version; + sha256 = "1n18b3m3vgvmmgpfbgnfnz0z98bkgbfrfkx25jqbwsdnwrlb4li6"; + }; + + passthru = { + updateScript = pantheon.updateScript { + attrPath = "pantheon.${pname}"; + }; + }; + + nativeBuildInputs = [ + desktop-file-utils + gettext + glib-networking + meson + ninja + pkgconfig + python3 + vala + wrapGAppsHook + ]; + + buildInputs = [ + bamf + elementary-icon-theme + granite + gtk3 + libcanberra + libcloudproviders + libdbusmenu-gtk3 + libgee + libgit2-glib + libnotify + libunity + pango + plank + sqlite + zeitgeist + ]; + + patches = [ + ./hardcode-gsettings.patch + ]; + + postPatch = '' + chmod +x meson/post_install.py + patchShebangs meson/post_install.py + + substituteInPlace filechooser-module/FileChooserDialog.vala \ + --subst-var-by ELEMENTARY_FILES_GSETTINGS_PATH ${glib.makeSchemaPath "$out" "${pname}-${version}"} + ''; + + meta = with stdenv.lib; { + description = "File browser designed for elementary OS"; + homepage = "https://github.com/elementary/files"; + license = licenses.lgpl3; + platforms = platforms.linux; + maintainers = pantheon.maintainers; + }; +} diff --git a/nixpkgs/pkgs/desktops/pantheon/apps/elementary-files/hardcode-gsettings.patch b/nixpkgs/pkgs/desktops/pantheon/apps/elementary-files/hardcode-gsettings.patch new file mode 100644 index 000000000000..3191f4e3cb2b --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/apps/elementary-files/hardcode-gsettings.patch @@ -0,0 +1,22 @@ +diff --git a/filechooser-module/FileChooserDialog.vala b/filechooser-module/FileChooserDialog.vala +index cb7c3c49..8b1899d1 100644 +--- a/filechooser-module/FileChooserDialog.vala ++++ b/filechooser-module/FileChooserDialog.vala +@@ -57,10 +57,15 @@ public class CustomFileChooserDialog : Object { + chooser_dialog.deletable = false; + chooser_dialog.local_only = false; + +- var settings = new Settings ("io.elementary.files.preferences"); ++ SettingsSchemaSource sss = new SettingsSchemaSource.from_directory ("@ELEMENTARY_FILES_GSETTINGS_PATH@", SettingsSchemaSource.get_default (), true); ++ SettingsSchema preferences_schema = sss.lookup ("io.elementary.files.preferences", false); ++ SettingsSchema chooser_schema = sss.lookup ("io.elementary.files.file-chooser", false); ++ ++ var settings = new Settings.full (preferences_schema, null, null); ++ + is_single_click = settings.get_boolean ("single-click"); + +- var chooser_settings = new Settings ("io.elementary.files.file-chooser"); ++ var chooser_settings = new Settings.full (chooser_schema, null, null); + + assign_container_box (); + remove_gtk_widgets (); diff --git a/nixpkgs/pkgs/desktops/pantheon/apps/elementary-music/default.nix b/nixpkgs/pkgs/desktops/pantheon/apps/elementary-music/default.nix new file mode 100644 index 000000000000..85739a6ec2ec --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/apps/elementary-music/default.nix @@ -0,0 +1,99 @@ +{ stdenv +, fetchFromGitHub +, pantheon +, pkgconfig +, meson +, ninja +, vala +, desktop-file-utils +, gtk3 +, granite +, python3 +, libgee +, clutter-gtk +, json-glib +, libgda +, libgpod +, libnotify +, libpeas +, libsoup +, zeitgeist +, gst_all_1 +, taglib +, libdbusmenu +, libsignon-glib +, libaccounts-glib +, elementary-icon-theme +, wrapGAppsHook +}: + +stdenv.mkDerivation rec { + pname = "elementary-music"; + version = "5.0.5"; + + repoName = "music"; + + src = fetchFromGitHub { + owner = "elementary"; + repo = repoName; + rev = version; + sha256 = "0cb0mwsp5w2bmjq8ap9mi0jvaqr9fgq00gfrkj0mzb5x5c26hrnw"; + }; + + passthru = { + updateScript = pantheon.updateScript { + attrPath = "pantheon.${pname}"; + }; + }; + + nativeBuildInputs = [ + desktop-file-utils + meson + ninja + pkgconfig + python3 + vala + wrapGAppsHook + ]; + + buildInputs = with gst_all_1; [ + clutter-gtk + elementary-icon-theme + granite + gst-plugins-bad + gst-plugins-base + gst-plugins-good + gst-plugins-ugly + gstreamer + gtk3 + json-glib + libaccounts-glib + libdbusmenu + libgda + libgee + libgpod + libnotify + libpeas + libsignon-glib + libsoup + taglib + zeitgeist + ]; + + mesonFlags = [ + "-Dplugins=lastfm,audioplayer,cdrom,ipod" + ]; + + postPatch = '' + chmod +x meson/post_install.py + patchShebangs meson/post_install.py + ''; + + meta = with stdenv.lib; { + description = "Music player and library designed for elementary OS"; + homepage = "https://github.com/elementary/music"; + license = licenses.lgpl2Plus; + platforms = platforms.linux; + maintainers = pantheon.maintainers; + }; +} diff --git a/nixpkgs/pkgs/desktops/pantheon/apps/elementary-photos/default.nix b/nixpkgs/pkgs/desktops/pantheon/apps/elementary-photos/default.nix new file mode 100644 index 000000000000..5c6d34a55a51 --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/apps/elementary-photos/default.nix @@ -0,0 +1,107 @@ +{ stdenv +, fetchFromGitHub +, pantheon +, meson +, ninja +, pkgconfig +, vala +, desktop-file-utils +, gtk3 +, libaccounts-glib +, libexif +, libgee +, geocode-glib +, gexiv2 +, libgphoto2 +, granite +, gst_all_1 +, libgudev +, json-glib +, libraw +, librest +, libsoup +, sqlite +, python3 +, scour +, webkitgtk +, libwebp +, appstream +, libunity +, wrapGAppsHook +, elementary-icon-theme +}: + +stdenv.mkDerivation rec { + pname = "elementary-photos"; + version = "2.7.0"; + + repoName = "photos"; + + src = fetchFromGitHub { + owner = "elementary"; + repo = repoName; + rev = version; + sha256 = "09jjic165rmprc2cszsgj2m3j3f5p8v9pxx5mj66a0gj3ar3hfbd"; + }; + + passthru = { + updateScript = pantheon.updateScript { + attrPath = "pantheon.${pname}"; + }; + }; + + nativeBuildInputs = [ + appstream + desktop-file-utils + meson + ninja + pkgconfig + python3 + vala + wrapGAppsHook + ]; + + buildInputs = with gst_all_1; [ + elementary-icon-theme + geocode-glib + gexiv2 + granite + gst-plugins-bad + gst-plugins-base + gst-plugins-good + gst-plugins-ugly + gstreamer + gtk3 + json-glib + libaccounts-glib + libexif + libgee + libgphoto2 + libgudev + libraw + librest + libsoup + libunity + libwebp + scour + sqlite + webkitgtk + ]; + + mesonFlags = [ + "-Dplugins=false" + ]; + + postPatch = '' + chmod +x meson/post_install.py + patchShebangs meson/post_install.py + ''; + + meta = with stdenv.lib; { + description = "Photo viewer and organizer designed for elementary OS"; + homepage = "https://github.com/elementary/photos"; + license = licenses.lgpl21Plus; + platforms = platforms.linux; + maintainers = pantheon.maintainers; + }; +} diff --git a/nixpkgs/pkgs/desktops/pantheon/apps/elementary-screenshot-tool/default.nix b/nixpkgs/pkgs/desktops/pantheon/apps/elementary-screenshot-tool/default.nix new file mode 100644 index 000000000000..078d496bf0db --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/apps/elementary-screenshot-tool/default.nix @@ -0,0 +1,67 @@ +{ stdenv +, fetchFromGitHub +, pantheon +, pkgconfig +, meson +, ninja +, vala +, python3 +, desktop-file-utils +, gtk3 +, granite +, libgee +, libcanberra +, elementary-icon-theme +, wrapGAppsHook +}: + +stdenv.mkDerivation rec { + pname = "elementary-screenshot-tool"; # This will be renamed to "screenshot" soon. See -> https://github.com/elementary/screenshot/pull/93 + version = "1.7.1"; + + repoName = "screenshot"; + + src = fetchFromGitHub { + owner = "elementary"; + repo = repoName; + rev = version; + sha256 = "179ib2ldvhdx3hks5lqyx2cvlkk3j1qccvlfwh2yd2bl79zpk3ma"; + }; + + passthru = { + updateScript = pantheon.updateScript { + attrPath = "pantheon.${pname}"; + }; + }; + + nativeBuildInputs = [ + desktop-file-utils + meson + ninja + pkgconfig + python3 + vala + wrapGAppsHook + ]; + + buildInputs = [ + elementary-icon-theme + granite + gtk3 + libcanberra + libgee + ]; + + postPatch = '' + chmod +x meson/post_install.py + patchShebangs meson/post_install.py + ''; + + meta = with stdenv.lib; { + description = "Screenshot tool designed for elementary OS"; + homepage = "https://github.com/elementary/screenshot"; + license = licenses.lgpl3; + platforms = platforms.linux; + maintainers = pantheon.maintainers; + }; +} diff --git a/nixpkgs/pkgs/desktops/pantheon/apps/elementary-terminal/default.nix b/nixpkgs/pkgs/desktops/pantheon/apps/elementary-terminal/default.nix new file mode 100644 index 000000000000..f9f81c37a4b9 --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/apps/elementary-terminal/default.nix @@ -0,0 +1,83 @@ +{ stdenv +, fetchFromGitHub +, fetchpatch +, pantheon +, pkgconfig +, meson +, ninja +, python3 +, vala +, desktop-file-utils +, gtk3 +, libxml2 +, granite +, libnotify +, vte +, libgee +, elementary-icon-theme +, appstream +, pcre2 +, wrapGAppsHook +}: + +stdenv.mkDerivation rec { + pname = "elementary-terminal"; + version = "5.5.2"; + + repoName = "terminal"; + + src = fetchFromGitHub { + owner = "elementary"; + repo = repoName; + rev = version; + sha256 = "119iwmzbpkj4nmxinqfsh73lx23g8gbl6ha6wc4mc4fq9hpnc9c2"; + }; + + passthru = { + updateScript = pantheon.updateScript { + attrPath = "pantheon.${pname}"; + }; + }; + + nativeBuildInputs = [ + appstream + desktop-file-utils + libxml2 + meson + ninja + pkgconfig + python3 + vala + wrapGAppsHook + ]; + + buildInputs = [ + elementary-icon-theme + granite + gtk3 + libgee + libnotify + pcre2 + vte + ]; + + # See https://github.com/elementary/terminal/commit/914d4b0e2d0a137f12276d748ae07072b95eff80 + mesonFlags = [ "-Dubuntu-bionic-patched-vte=false" ]; + + postPatch = '' + chmod +x meson/post_install.py + patchShebangs meson/post_install.py + ''; + + meta = with stdenv.lib; { + description = "Terminal emulator designed for elementary OS"; + longDescription = '' + A super lightweight, beautiful, and simple terminal. Comes with sane defaults, browser-class tabs, sudo paste protection, + smart copy/paste, and little to no configuration. + ''; + homepage = "https://github.com/elementary/terminal"; + license = licenses.lgpl3; + platforms = platforms.linux; + maintainers = pantheon.maintainers; + }; +} diff --git a/nixpkgs/pkgs/desktops/pantheon/apps/elementary-videos/default.nix b/nixpkgs/pkgs/desktops/pantheon/apps/elementary-videos/default.nix new file mode 100644 index 000000000000..c3da10d1cf39 --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/apps/elementary-videos/default.nix @@ -0,0 +1,76 @@ +{ stdenv +, fetchFromGitHub +, pantheon +, pkgconfig +, meson +, ninja +, vala +, python3 +, desktop-file-utils +, gtk3 +, granite +, libgee +, clutter-gst +, clutter-gtk +, gst_all_1 +, elementary-icon-theme +, wrapGAppsHook +}: + +stdenv.mkDerivation rec { + pname = "elementary-videos"; + version = "2.7.1"; + + repoName = "videos"; + + src = fetchFromGitHub { + owner = "elementary"; + repo = repoName; + rev = version; + sha256 = "00arim4i9bv9mbms1irkp44grkgrfnmqzraswyn1xiz9nvl1bsb9"; + }; + + passthru = { + updateScript = pantheon.updateScript { + attrPath = "pantheon.${pname}"; + }; + }; + + nativeBuildInputs = [ + desktop-file-utils + meson + ninja + pkgconfig + python3 + vala + wrapGAppsHook + ]; + + buildInputs = with gst_all_1; [ + clutter-gst + clutter-gtk + elementary-icon-theme + granite + gst-libav + gst-plugins-bad + gst-plugins-base + gst-plugins-good + gst-plugins-ugly + gstreamer + gtk3 + libgee + ]; + + postPatch = '' + chmod +x meson/post_install.py + patchShebangs meson/post_install.py + ''; + + meta = with stdenv.lib; { + description = "Video player and library app designed for elementary OS"; + homepage = "https://github.com/elementary/videos"; + license = licenses.gpl3Plus; + platforms = platforms.linux; + maintainers = pantheon.maintainers; + }; +} diff --git a/nixpkgs/pkgs/desktops/pantheon/apps/sideload/default.nix b/nixpkgs/pkgs/desktops/pantheon/apps/sideload/default.nix new file mode 100644 index 000000000000..01048d881d52 --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/apps/sideload/default.nix @@ -0,0 +1,73 @@ +{ stdenv +, desktop-file-utils +, elementary-gtk-theme +, elementary-icon-theme +, fetchFromGitHub +, flatpak +, gettext +, glib +, granite +, gtk3 +, libgee +, meson +, ninja +, pantheon +, pkgconfig +, python3 +, vala +, libxml2 +, wrapGAppsHook +}: + +stdenv.mkDerivation rec { + pname = "sideload"; + version = "1.1.0"; + + src = fetchFromGitHub { + owner = "elementary"; + repo = pname; + rev = version; + sha256 = "1nnaq4vc0aag6pckxhrma5qv8al7i00rrlg95ac4iqqmivja7i92"; + }; + + passthru = { + updateScript = pantheon.updateScript { + attrPath = "pantheon.${pname}"; + }; + }; + + nativeBuildInputs = [ + desktop-file-utils + gettext + meson + ninja + pkgconfig + python3 + vala + wrapGAppsHook + ]; + + buildInputs = [ + elementary-gtk-theme + elementary-icon-theme + flatpak + glib + granite + gtk3 + libgee + libxml2 + ]; + + postPatch = '' + chmod +x meson/post_install.py + patchShebangs meson/post_install.py + ''; + + meta = with stdenv.lib; { + homepage = "https://github.com/elementary/sideload"; + description = "Flatpak installer, designed for elementary OS"; + license = licenses.gpl3Plus; + platforms = platforms.linux; + maintainers = pantheon.maintainers; + }; +} diff --git a/nixpkgs/pkgs/desktops/pantheon/apps/switchboard-plugs/a11y/default.nix b/nixpkgs/pkgs/desktops/pantheon/apps/switchboard-plugs/a11y/default.nix new file mode 100644 index 000000000000..6348f7c93a30 --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/apps/switchboard-plugs/a11y/default.nix @@ -0,0 +1,61 @@ +{ stdenv +, substituteAll +, fetchFromGitHub +, pantheon +, meson +, ninja +, pkgconfig +, vala +, libgee +, granite +, gtk3 +, switchboard +, onboard +}: + +stdenv.mkDerivation rec { + pname = "switchboard-plug-a11y"; + version = "2.2.0"; + + src = fetchFromGitHub { + owner = "elementary"; + repo = pname; + rev = version; + sha256 = "0g8lhdwv9g16kjn7yxnl6x4rscjl2206ljfnghpxc4b5lwhqxxnw"; + }; + + patches = [ + (substituteAll { + src = ./fix-paths.patch; + inherit onboard; + }) + ]; + + passthru = { + updateScript = pantheon.updateScript { + attrPath = "pantheon.${pname}"; + }; + }; + + nativeBuildInputs = [ + meson + ninja + pkgconfig + vala + ]; + + buildInputs = [ + granite + gtk3 + libgee + switchboard + ]; + + meta = with stdenv.lib; { + description = "Switchboard Universal Access Plug"; + homepage = "https://github.com/elementary/switchboard-plug-a11y"; + license = licenses.lgpl3Plus; + platforms = platforms.linux; + maintainers = pantheon.maintainers; + }; +} diff --git a/nixpkgs/pkgs/desktops/pantheon/apps/switchboard-plugs/a11y/fix-paths.patch b/nixpkgs/pkgs/desktops/pantheon/apps/switchboard-plugs/a11y/fix-paths.patch new file mode 100644 index 000000000000..4d69390f39d9 --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/apps/switchboard-plugs/a11y/fix-paths.patch @@ -0,0 +1,13 @@ +diff --git a/src/Panes/Typing.vala b/src/Panes/Typing.vala +index b4ae8b0..5b8fd7e 100644 +--- a/src/Panes/Typing.vala ++++ b/src/Panes/Typing.vala +@@ -83,7 +83,7 @@ public class Accessibility.Panes.Typing : Categories.Pane { + + onboard_settings_label.clicked.connect (() => { + try { +- var appinfo = AppInfo.create_from_commandline ("onboard-settings", null, AppInfoCreateFlags.NONE); ++ var appinfo = AppInfo.create_from_commandline ("@onboard@/bin/onboard-settings", null, AppInfoCreateFlags.NONE); + appinfo.launch (null, null); + } catch (Error e) { + warning ("%s\n", e.message); diff --git a/nixpkgs/pkgs/desktops/pantheon/apps/switchboard-plugs/about/default.nix b/nixpkgs/pkgs/desktops/pantheon/apps/switchboard-plugs/about/default.nix new file mode 100644 index 000000000000..76b4eeebdf12 --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/apps/switchboard-plugs/about/default.nix @@ -0,0 +1,64 @@ +{ stdenv +, fetchFromGitHub +, pantheon +, substituteAll +, meson +, ninja +, pkgconfig +, vala +, libgee +, granite +, gtk3 +, switchboard +, pciutils +, elementary-feedback +}: + +stdenv.mkDerivation rec { + pname = "switchboard-plug-about"; + version = "2.6.2"; + + src = fetchFromGitHub { + owner = "elementary"; + repo = pname; + rev = version; + sha256 = "1cjhip0abc0y5w6cqnjcgi48bfrackp45gz7955l66hxhnm5wyw6"; + }; + + passthru = { + updateScript = pantheon.updateScript { + attrPath = "pantheon.${pname}"; + }; + }; + + nativeBuildInputs = [ + meson + ninja + pkgconfig + vala + ]; + + buildInputs = [ + granite + gtk3 + libgee + switchboard + ]; + + patches = [ + (substituteAll { + src = ./fix-paths.patch; + inherit pciutils; + elementary_feedback = elementary-feedback; + }) + ]; + + meta = with stdenv.lib; { + description = "Switchboard About Plug"; + homepage = "https://github.com/elementary/switchboard-plug-about"; + license = licenses.gpl3Plus; + platforms = platforms.linux; + maintainers = pantheon.maintainers; + }; + +} diff --git a/nixpkgs/pkgs/desktops/pantheon/apps/switchboard-plugs/about/fix-paths.patch b/nixpkgs/pkgs/desktops/pantheon/apps/switchboard-plugs/about/fix-paths.patch new file mode 100644 index 000000000000..d458689a3253 --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/apps/switchboard-plugs/about/fix-paths.patch @@ -0,0 +1,26 @@ +diff --git a/src/Plug.vala b/src/Plug.vala +index c32efcbe..0cdaeaca 100644 +--- a/src/Plug.vala ++++ b/src/Plug.vala +@@ -178,7 +178,7 @@ public class About.Plug : Switchboard.Plug { + + var bug_button = new Gtk.Button.with_label (_("Report a Problem")); + bug_button.clicked.connect (() => { +- var appinfo = new GLib.DesktopAppInfo ("io.elementary.feedback.desktop"); ++ var appinfo = new GLib.DesktopAppInfo ("@elementary_feedback@/bin/io.elementary.feedback.desktop"); + if (appinfo != null) { + try { + appinfo.launch (null, null); +diff --git a/src/Views/HardwareView.vala b/src/Views/HardwareView.vala +index f8113634..3794bad8 100644 +--- a/src/Views/HardwareView.vala ++++ b/src/Views/HardwareView.vala +@@ -179,7 +179,7 @@ public class About.HardwareView : Gtk.Grid { + + // Graphics + try { +- Process.spawn_command_line_sync ("lspci", out graphics); ++ Process.spawn_command_line_sync ("@pciutils@/bin/lspci", out graphics); + + if ("VGA" in graphics) { //VGA-keyword indicates graphics-line + string[] lines = graphics.split("\n"); diff --git a/nixpkgs/pkgs/desktops/pantheon/apps/switchboard-plugs/applications/default.nix b/nixpkgs/pkgs/desktops/pantheon/apps/switchboard-plugs/applications/default.nix new file mode 100644 index 000000000000..9cd92d0a5ed8 --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/apps/switchboard-plugs/applications/default.nix @@ -0,0 +1,52 @@ +{ stdenv +, fetchFromGitHub +, pantheon +, meson +, ninja +, pkgconfig +, vala +, libgee +, granite +, gtk3 +, switchboard +}: + +stdenv.mkDerivation rec { + pname = "switchboard-plug-applications"; + version = "2.1.7"; + + src = fetchFromGitHub { + owner = "elementary"; + repo = pname; + rev = version; + sha256 = "0wzm390g8di4ks3w637a0wl4j7g89j321xkz5msd9058gksvaaxs"; + }; + + passthru = { + updateScript = pantheon.updateScript { + attrPath = "pantheon.${pname}"; + }; + }; + + nativeBuildInputs = [ + meson + ninja + pkgconfig + vala + ]; + + buildInputs = [ + granite + gtk3 + libgee + switchboard + ]; + + meta = with stdenv.lib; { + description = "Switchboard Applications Plug"; + homepage = "https://github.com/elementary/switchboard-plug-applications"; + license = licenses.gpl2Plus; + platforms = platforms.linux; + maintainers = pantheon.maintainers; + }; +} diff --git a/nixpkgs/pkgs/desktops/pantheon/apps/switchboard-plugs/bluetooth/default.nix b/nixpkgs/pkgs/desktops/pantheon/apps/switchboard-plugs/bluetooth/default.nix new file mode 100644 index 000000000000..8ceaee93bdbf --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/apps/switchboard-plugs/bluetooth/default.nix @@ -0,0 +1,55 @@ +{ stdenv +, fetchFromGitHub +, pantheon +, meson +, ninja +, pkgconfig +, vala +, libgee +, granite +, gtk3 +, bluez +, switchboard +}: + +stdenv.mkDerivation rec { + pname = "switchboard-plug-bluetooth"; + version = "2.3.1"; + + src = fetchFromGitHub { + owner = "elementary"; + repo = pname; + rev = version; + sha256 = "06ws1swl2jg6a1b3m4b1v1rawgzs5k7rq4dcnd5v0czda110yhg0"; + }; + + passthru = { + updateScript = pantheon.updateScript { + attrPath = "pantheon.${pname}"; + }; + }; + + nativeBuildInputs = [ + meson + ninja + pkgconfig + vala + ]; + + buildInputs = [ + bluez + granite + gtk3 + libgee + switchboard + ]; + + meta = with stdenv.lib; { + description = "Switchboard Bluetooth Plug"; + homepage = "https://github.com/elementary/switchboard-plug-bluetooth"; + license = licenses.gpl3Plus; + platforms = platforms.linux; + maintainers = pantheon.maintainers; + }; + +} diff --git a/nixpkgs/pkgs/desktops/pantheon/apps/switchboard-plugs/datetime/default.nix b/nixpkgs/pkgs/desktops/pantheon/apps/switchboard-plugs/datetime/default.nix new file mode 100644 index 000000000000..adb6e187915f --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/apps/switchboard-plugs/datetime/default.nix @@ -0,0 +1,56 @@ +{ stdenv +, fetchFromGitHub +, pantheon +, meson +, ninja +, substituteAll +, pkgconfig +, vala +, libgee +, granite +, gtk3 +, libxml2 +, switchboard +, tzdata +}: + +stdenv.mkDerivation rec { + pname = "switchboard-plug-datetime"; + version = "2.1.7"; + + src = fetchFromGitHub { + owner = "elementary"; + repo = pname; + rev = version; + sha256 = "0lpmxl42r5vn6mddwppn6zwmai0yabs3n467w027vkzw4axdi6bf"; + }; + + passthru = { + updateScript = pantheon.updateScript { + attrPath = "pantheon.${pname}"; + }; + }; + + nativeBuildInputs = [ + libxml2 + meson + ninja + pkgconfig + vala + ]; + + buildInputs = [ + granite + gtk3 + libgee + switchboard + ]; + + meta = with stdenv.lib; { + description = "Switchboard Date & Time Plug"; + homepage = "https://github.com/elementary/switchboard-plug-datetime"; + license = licenses.gpl3Plus; + platforms = platforms.linux; + maintainers = pantheon.maintainers; + }; +} diff --git a/nixpkgs/pkgs/desktops/pantheon/apps/switchboard-plugs/display/default.nix b/nixpkgs/pkgs/desktops/pantheon/apps/switchboard-plugs/display/default.nix new file mode 100644 index 000000000000..aaf980a313ff --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/apps/switchboard-plugs/display/default.nix @@ -0,0 +1,52 @@ +{ stdenv +, fetchFromGitHub +, pantheon +, meson +, ninja +, pkgconfig +, vala +, libgee +, granite +, gtk3 +, switchboard +}: + +stdenv.mkDerivation rec { + pname = "switchboard-plug-display"; + version = "2.2.1"; + + src = fetchFromGitHub { + owner = "elementary"; + repo = pname; + rev = version; + sha256 = "1racp0mxiaix9afx25ryskdcyi335fz8yh8nwgdxbqbm6jpyq4zs"; + }; + + passthru = { + updateScript = pantheon.updateScript { + attrPath = "pantheon.${pname}"; + }; + }; + + nativeBuildInputs = [ + meson + ninja + pkgconfig + vala + ]; + + buildInputs = [ + granite + gtk3 + libgee + switchboard + ]; + + meta = with stdenv.lib; { + description = "Switchboard Displays Plug"; + homepage = "https://github.com/elementary/switchboard-plug-display"; + license = licenses.lgpl2Plus; + platforms = platforms.linux; + maintainers = pantheon.maintainers; + }; +} diff --git a/nixpkgs/pkgs/desktops/pantheon/apps/switchboard-plugs/keyboard/default.nix b/nixpkgs/pkgs/desktops/pantheon/apps/switchboard-plugs/keyboard/default.nix new file mode 100644 index 000000000000..10468cdc553b --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/apps/switchboard-plugs/keyboard/default.nix @@ -0,0 +1,61 @@ +{ stdenv +, fetchFromGitHub +, pantheon +, fetchpatch +, substituteAll +, meson +, ninja +, pkgconfig +, vala +, libgee +, granite +, gtk3 +, libxml2 +, libgnomekbd +, libxklavier +, xorg +, switchboard +}: + +stdenv.mkDerivation rec { + pname = "switchboard-plug-keyboard"; + version = "2.3.6"; + + src = fetchFromGitHub { + owner = "elementary"; + repo = pname; + rev = version; + sha256 = "08zpw7ygrqmwwznvxkf4xbrgwbjkbwc95sw1ikikg3143ql9qclp"; + }; + + passthru = { + updateScript = pantheon.updateScript { + attrPath = "pantheon.${pname}"; + }; + }; + + nativeBuildInputs = [ + libxml2 + meson + ninja + pkgconfig + vala + ]; + + buildInputs = [ + granite + gtk3 + libgee + libgnomekbd + libxklavier + switchboard + ]; + + meta = with stdenv.lib; { + description = "Switchboard Keyboard Plug"; + homepage = "https://github.com/elementary/switchboard-plug-keyboard"; + license = licenses.gpl2Plus; + platforms = platforms.linux; + maintainers = pantheon.maintainers; + }; +} diff --git a/nixpkgs/pkgs/desktops/pantheon/apps/switchboard-plugs/mouse-touchpad/default.nix b/nixpkgs/pkgs/desktops/pantheon/apps/switchboard-plugs/mouse-touchpad/default.nix new file mode 100644 index 000000000000..956d53d6980f --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/apps/switchboard-plugs/mouse-touchpad/default.nix @@ -0,0 +1,56 @@ +{ stdenv +, fetchFromGitHub +, pantheon +, meson +, ninja +, pkgconfig +, vala +, libgee +, granite +, gtk3 +, switchboard +, elementary-settings-daemon +, glib +}: + +stdenv.mkDerivation rec { + pname = "switchboard-plug-mouse-touchpad"; + version = "2.4.1"; + + src = fetchFromGitHub { + owner = "elementary"; + repo = pname; + rev = version; + sha256 = "19y1n05pc3j0px5pql5338vzrq6hjw209s8l2l70ha4i4r978qir"; + }; + + passthru = { + updateScript = pantheon.updateScript { + attrPath = "pantheon.${pname}"; + }; + }; + + nativeBuildInputs = [ + meson + ninja + pkgconfig + vala + ]; + + buildInputs = [ + glib + granite + gtk3 + libgee + elementary-settings-daemon + switchboard + ]; + + meta = with stdenv.lib; { + description = "Switchboard Mouse & Touchpad Plug"; + homepage = "https://github.com/elementary/switchboard-plug-mouse-touchpad"; + license = licenses.gpl2Plus; + platforms = platforms.linux; + maintainers = pantheon.maintainers; + }; +} diff --git a/nixpkgs/pkgs/desktops/pantheon/apps/switchboard-plugs/network/default.nix b/nixpkgs/pkgs/desktops/pantheon/apps/switchboard-plugs/network/default.nix new file mode 100644 index 000000000000..04763c3dc3f8 --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/apps/switchboard-plugs/network/default.nix @@ -0,0 +1,66 @@ +{ stdenv +, fetchFromGitHub +, pantheon +, meson +, ninja +, pkgconfig +, substituteAll +, vala +, libgee +, granite +, gtk3 +, networkmanager +, networkmanagerapplet +, libnma +, switchboard +}: + +stdenv.mkDerivation rec { + pname = "switchboard-plug-network"; + version = "2.3.0"; + + src = fetchFromGitHub { + owner = "elementary"; + repo = pname; + rev = version; + sha256 = "0pqkr7swjgla8klcjdcwgk2fipiwvylk8m71l1fymazvzwxrbxw6"; + }; + + passthru = { + updateScript = pantheon.updateScript { + attrPath = "pantheon.${pname}"; + }; + }; + + nativeBuildInputs = [ + meson + ninja + pkgconfig + vala + ]; + + buildInputs = [ + granite + gtk3 + libgee + networkmanager + libnma + switchboard + ]; + + patches = [ + (substituteAll { + src = ./fix-paths.patch; + inherit networkmanagerapplet; + }) + ]; + + + meta = with stdenv.lib; { + description = "Switchboard Networking Plug"; + homepage = "https://github.com/elementary/switchboard-plug-network"; + license = licenses.lgpl21Plus; + platforms = platforms.linux; + maintainers = pantheon.maintainers; + }; +} diff --git a/nixpkgs/pkgs/desktops/pantheon/apps/switchboard-plugs/network/fix-paths.patch b/nixpkgs/pkgs/desktops/pantheon/apps/switchboard-plugs/network/fix-paths.patch new file mode 100644 index 000000000000..b99f59fb2684 --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/apps/switchboard-plugs/network/fix-paths.patch @@ -0,0 +1,26 @@ +diff --git a/src/Views/VPNPage.vala b/src/Views/VPNPage.vala +index ba9dc22..a12871a 100644 +--- a/src/Views/VPNPage.vala ++++ b/src/Views/VPNPage.vala +@@ -264,7 +264,7 @@ public class Network.VPNPage : Network.Widgets.Page { + private void try_connection_editor (string args) { + try { + var appinfo = AppInfo.create_from_commandline ( +- "nm-connection-editor %s".printf (args), ++ "@networkmanagerapplet@/bin/nm-connection-editor %s".printf (args), + null, + GLib.AppInfoCreateFlags.NONE + ); +diff --git a/src/Widgets/SettingsButton.vala b/src/Widgets/SettingsButton.vala +index 5849b69..7bbd172 100644 +--- a/src/Widgets/SettingsButton.vala ++++ b/src/Widgets/SettingsButton.vala +@@ -55,7 +55,7 @@ public class Network.Widgets.SettingsButton : Gtk.Button { + clicked.connect (() => { + try { + var appinfo = AppInfo.create_from_commandline ( +- "nm-connection-editor %s".printf (args), null, AppInfoCreateFlags.NONE ++ "@networkmanagerapplet@/bin/nm-connection-editor %s".printf (args), null, AppInfoCreateFlags.NONE + ); + + appinfo.launch (null, null); diff --git a/nixpkgs/pkgs/desktops/pantheon/apps/switchboard-plugs/notifications/default.nix b/nixpkgs/pkgs/desktops/pantheon/apps/switchboard-plugs/notifications/default.nix new file mode 100644 index 000000000000..b4564abd770c --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/apps/switchboard-plugs/notifications/default.nix @@ -0,0 +1,64 @@ +{ stdenv +, fetchFromGitHub +, fetchpatch +, pantheon +, meson +, ninja +, pkgconfig +, vala +, libgee +, granite +, gtk3 +, switchboard +, elementary-notifications +}: + +stdenv.mkDerivation rec { + pname = "switchboard-plug-notifications"; + version = "2.1.6"; + + src = fetchFromGitHub { + owner = "elementary"; + repo = pname; + rev = version; + sha256 = "1ikq058svdan0whg4ks35m50apvbmzcz7h2wznxdbsimczzvj5sz"; + }; + + patches = [ + # Fix do not disturb on NixOS + # https://github.com/elementary/switchboard-plug-notifications/pull/66 + (fetchpatch { + url = "https://github.com/elementary/switchboard-plug-notifications/commit/c306366b39c3199f0b64eda73419005fcb5e29b8.patch"; + sha256 = "0m018rfw5iv582sw6qgwc8lzn0j32ix1w47fvlfmx0kw04irl2x3"; + }) + ]; + + passthru = { + updateScript = pantheon.updateScript { + attrPath = "pantheon.${pname}"; + }; + }; + + nativeBuildInputs = [ + meson + ninja + pkgconfig + vala + ]; + + buildInputs = [ + elementary-notifications + granite + gtk3 + libgee + switchboard + ]; + + meta = with stdenv.lib; { + description = "Switchboard Notifications Plug"; + homepage = "https://github.com/elementary/switchboard-plug-notifications"; + license = licenses.gpl2Plus; + platforms = platforms.linux; + maintainers = pantheon.maintainers; + }; +} diff --git a/nixpkgs/pkgs/desktops/pantheon/apps/switchboard-plugs/onlineaccounts/default.nix b/nixpkgs/pkgs/desktops/pantheon/apps/switchboard-plugs/onlineaccounts/default.nix new file mode 100644 index 000000000000..902703bc75e5 --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/apps/switchboard-plugs/onlineaccounts/default.nix @@ -0,0 +1,79 @@ +{ stdenv +, fetchFromGitHub +, fetchpatch +, pantheon +, meson +, ninja +, pkgconfig +, vala_0_46 +, libgee +, granite +, gtk3 +, libaccounts-glib +, libsignon-glib +, json-glib +, librest +, webkitgtk +, libsoup +, switchboard +}: + +stdenv.mkDerivation rec { + pname = "switchboard-plug-onlineaccounts"; + version = "2.0.1"; + + src = fetchFromGitHub { + owner = "elementary"; + repo = pname; + rev = version; + sha256 = "03h8ii8zz59fpp4fwlvyx3m3550096fn7a6w612b1rbj3dqhlmh9"; + }; + + passthru = { + updateScript = pantheon.updateScript { + attrPath = "pantheon.${pname}"; + }; + }; + + nativeBuildInputs = [ + meson + ninja + pkgconfig + vala_0_46 + ]; + + buildInputs = [ + granite + gtk3 + json-glib + libaccounts-glib + libgee + libsignon-glib + libsoup + librest + switchboard + webkitgtk + ]; + + patches = [ + # Fix build with latest vala + (fetchpatch { + url = "https://github.com/elementary/switchboard-plug-onlineaccounts/commit/5fa2882f765076d20c6ef4886198a34a05159f8a.patch"; + sha256 = "1szryyy7shdmbvx9yhpi0bhzaayg7hl6pq2c456j1qf9kfv0m4hf"; + }) + ]; + + PKG_CONFIG_LIBACCOUNTS_GLIB_PROVIDERFILESDIR = "${placeholder "out"}/share/accounts/providers"; + PKG_CONFIG_LIBACCOUNTS_GLIB_SERVICEFILESDIR = "${placeholder "out"}/share/accounts/services"; + PKG_CONFIG_SWITCHBOARD_2_0_PLUGSDIR = "${placeholder "out"}/lib/switchboard"; + + + meta = with stdenv.lib; { + description = "Switchboard Online Accounts Plug"; + homepage = "https://github.com/elementary/switchboard-plug-onlineaccounts"; + license = licenses.lgpl2Plus; + platforms = platforms.linux; + maintainers = pantheon.maintainers; + }; + +} diff --git a/nixpkgs/pkgs/desktops/pantheon/apps/switchboard-plugs/pantheon-shell/default.nix b/nixpkgs/pkgs/desktops/pantheon/apps/switchboard-plugs/pantheon-shell/default.nix new file mode 100644 index 000000000000..c44875259541 --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/apps/switchboard-plugs/pantheon-shell/default.nix @@ -0,0 +1,52 @@ +{ stdenv, fetchFromGitHub, pantheon, meson, ninja, pkgconfig, vala, glib +, libgee, granite, gexiv2, elementary-settings-daemon, gtk3, gnome-desktop +, gala, wingpanel, plank, switchboard, gettext, bamf, fetchpatch }: + +stdenv.mkDerivation rec { + pname = "switchboard-plug-pantheon-shell"; + version = "2.8.3"; + + src = fetchFromGitHub { + owner = "elementary"; + repo = pname; + rev = version; + sha256 = "0ypyppxx51l3r3fgxrvjdwnz33lpbfh1bf27fww9fx9520wixnx8"; + }; + + passthru = { + updateScript = pantheon.updateScript { + attrPath = "pantheon.${pname}"; + }; + }; + + nativeBuildInputs = [ + gettext + meson + ninja + pkgconfig + vala + ]; + + buildInputs = [ + bamf + elementary-settings-daemon + gexiv2 + glib + gnome-desktop + granite + gtk3 + libgee + gala + wingpanel + plank + switchboard + ]; + + meta = with stdenv.lib; { + description = "Switchboard Desktop Plug"; + homepage = "https://github.com/elementary/switchboard-plug-pantheon-shell"; + license = licenses.gpl3Plus; + platforms = platforms.linux; + maintainers = pantheon.maintainers; + }; +} diff --git a/nixpkgs/pkgs/desktops/pantheon/apps/switchboard-plugs/power/default.nix b/nixpkgs/pkgs/desktops/pantheon/apps/switchboard-plugs/power/default.nix new file mode 100644 index 000000000000..58c135d9c663 --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/apps/switchboard-plugs/power/default.nix @@ -0,0 +1,70 @@ +{ stdenv +, fetchFromGitHub +, pantheon +, substituteAll +, meson +, ninja +, pkgconfig +, vala +, libgee +, elementary-dpms-helper +, elementary-settings-daemon +, granite +, gtk3 +, glib +, dbus +, polkit +, switchboard +}: + +stdenv.mkDerivation rec { + pname = "switchboard-plug-power"; + version = "2.4.1"; + + src = fetchFromGitHub { + owner = "elementary"; + repo = pname; + rev = version; + sha256 = "0hmchx0sfdm2c2f9khjvlaqcxmvzarn2vmwcdb3h5ifbj32vydzw"; + }; + + passthru = { + updateScript = pantheon.updateScript { + attrPath = "pantheon.${pname}"; + }; + }; + + nativeBuildInputs = [ + meson + ninja + pkgconfig + vala + ]; + + buildInputs = [ + dbus + elementary-dpms-helper + elementary-settings-daemon + glib + granite + gtk3 + libgee + polkit + switchboard + ]; + + patches = [ + (substituteAll { + src = ./dpms-helper-exec.patch; + elementary_dpms_helper = elementary-dpms-helper; + }) + ]; + + meta = with stdenv.lib; { + description = "Switchboard Power Plug"; + homepage = "https://github.com/elementary/switchboard-plug-power"; + license = licenses.gpl2Plus; + platforms = platforms.linux; + maintainers = pantheon.maintainers; + }; +} diff --git a/nixpkgs/pkgs/desktops/pantheon/apps/switchboard-plugs/power/dpms-helper-exec.patch b/nixpkgs/pkgs/desktops/pantheon/apps/switchboard-plugs/power/dpms-helper-exec.patch new file mode 100644 index 000000000000..335d3f296262 --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/apps/switchboard-plugs/power/dpms-helper-exec.patch @@ -0,0 +1,13 @@ +diff --git a/src/MainView.vala b/src/MainView.vala +index 1654e68..175f220 100644 +--- a/src/MainView.vala ++++ b/src/MainView.vala +@@ -317,7 +317,7 @@ public class Power.MainView : Gtk.Grid { + + private static void run_dpms_helper () { + try { +- string[] argv = { "io.elementary.dpms-helper" }; ++ string[] argv = { "@elementary_dpms_helper@/bin/io.elementary.dpms-helper" }; + Process.spawn_async (null, argv, Environ.get (), + SpawnFlags.SEARCH_PATH | SpawnFlags.STDERR_TO_DEV_NULL | SpawnFlags.STDOUT_TO_DEV_NULL, + null, null); diff --git a/nixpkgs/pkgs/desktops/pantheon/apps/switchboard-plugs/printers/default.nix b/nixpkgs/pkgs/desktops/pantheon/apps/switchboard-plugs/printers/default.nix new file mode 100644 index 000000000000..1d71ae1f7cce --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/apps/switchboard-plugs/printers/default.nix @@ -0,0 +1,56 @@ +{ stdenv +, fetchFromGitHub +, fetchpatch +, pantheon +, meson +, ninja +, pkgconfig +, vala +, libgee +, granite +, gtk3 +, cups +, switchboard +}: + +stdenv.mkDerivation rec { + pname = "switchboard-plug-printers"; + version = "2.1.8"; + + src = fetchFromGitHub { + owner = "elementary"; + repo = pname; + rev = version; + sha256 = "0nnzwpfxkvgsw3g329926c3m7vci6vyb60qib7b9mpgicmsqnkvz"; + }; + + passthru = { + updateScript = pantheon.updateScript { + attrPath = "pantheon.${pname}"; + }; + }; + + nativeBuildInputs = [ + meson + ninja + pkgconfig + vala + ]; + + buildInputs = [ + cups + granite + gtk3 + libgee + switchboard + ]; + + meta = with stdenv.lib; { + description = "Switchboard Printers Plug"; + homepage = "https://github.com/elementary/switchboard-plug-printers"; + license = licenses.lgpl3Plus; + platforms = platforms.linux; + maintainers = pantheon.maintainers; + }; + +} diff --git a/nixpkgs/pkgs/desktops/pantheon/apps/switchboard-plugs/security-privacy/default.nix b/nixpkgs/pkgs/desktops/pantheon/apps/switchboard-plugs/security-privacy/default.nix new file mode 100644 index 000000000000..c07e48736d7e --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/apps/switchboard-plugs/security-privacy/default.nix @@ -0,0 +1,68 @@ +{ stdenv +, fetchFromGitHub +, pantheon +, meson +, python3 +, ninja +, pkgconfig +, vala +, libgee +, granite +, gtk3 +, glib +, polkit +, zeitgeist +, switchboard +, lightlocker +}: + +stdenv.mkDerivation rec { + pname = "switchboard-plug-security-privacy"; + version = "2.2.3"; + + src = fetchFromGitHub { + owner = "elementary"; + repo = pname; + rev = version; + sha256 = "1rgbw2kfcq7cdpvl6sy6r6d4iprm1j2n3knbnbxy8sylfc83bwri"; + }; + + passthru = { + updateScript = pantheon.updateScript { + attrPath = "pantheon.${pname}"; + }; + }; + + nativeBuildInputs = [ + meson + ninja + pkgconfig + python3 + vala + ]; + + buildInputs = [ + glib + granite + gtk3 + libgee + polkit + switchboard + lightlocker + zeitgeist + ]; + + postPatch = '' + chmod +x meson/post_install.py + patchShebangs meson/post_install.py + ''; + + meta = with stdenv.lib; { + description = "Switchboard Security & Privacy Plug"; + homepage = "https://github.com/elementary/switchboard-plug-security-privacy"; + license = licenses.lgpl3Plus; + platforms = platforms.linux; + maintainers = pantheon.maintainers; + }; + +} diff --git a/nixpkgs/pkgs/desktops/pantheon/apps/switchboard-plugs/sharing/default.nix b/nixpkgs/pkgs/desktops/pantheon/apps/switchboard-plugs/sharing/default.nix new file mode 100644 index 000000000000..55ed654f75fa --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/apps/switchboard-plugs/sharing/default.nix @@ -0,0 +1,53 @@ +{ stdenv +, fetchFromGitHub +, fetchpatch +, pantheon +, meson +, ninja +, pkgconfig +, vala +, libgee +, granite +, gtk3 +, switchboard +}: + +stdenv.mkDerivation rec { + pname = "switchboard-plug-sharing"; + version = "2.1.4"; + + src = fetchFromGitHub { + owner = "elementary"; + repo = pname; + rev = version; + sha256 = "1awkz16nydlgi8a2dd6agfnd3qwl2qsvv6wnn8bhaz1kbv1v9kpw"; + }; + + passthru = { + updateScript = pantheon.updateScript { + attrPath = "pantheon.${pname}"; + }; + }; + + nativeBuildInputs = [ + meson + ninja + pkgconfig + vala + ]; + + buildInputs = [ + granite + gtk3 + libgee + switchboard + ]; + + meta = with stdenv.lib; { + description = "Switchboard Sharing Plug"; + homepage = "https://github.com/elementary/switchboard-plug-sharing"; + license = licenses.gpl2Plus; + platforms = platforms.linux; + maintainers = pantheon.maintainers; + }; +} diff --git a/nixpkgs/pkgs/desktops/pantheon/apps/switchboard-plugs/sound/default.nix b/nixpkgs/pkgs/desktops/pantheon/apps/switchboard-plugs/sound/default.nix new file mode 100644 index 000000000000..df553a515eac --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/apps/switchboard-plugs/sound/default.nix @@ -0,0 +1,58 @@ +{ stdenv +, fetchFromGitHub +, pantheon +, meson +, ninja +, pkgconfig +, vala +, libgee +, granite +, gtk3 +, pulseaudio +, libcanberra +, libcanberra-gtk3 +, switchboard +}: + +stdenv.mkDerivation rec { + pname = "switchboard-plug-sound"; + version = "2.2.3"; + + src = fetchFromGitHub { + owner = "elementary"; + repo = pname; + rev = version; + sha256 = "1vpw06ldhy26xs5vp2gx5s8wbl42dznycp3jsnm5qp8iid8wl6l6"; + }; + + passthru = { + updateScript = pantheon.updateScript { + attrPath = "pantheon.${pname}"; + }; + }; + + nativeBuildInputs = [ + meson + ninja + pkgconfig + vala + ]; + + buildInputs = [ + granite + gtk3 + libcanberra + libcanberra-gtk3 + libgee + pulseaudio + switchboard + ]; + + meta = with stdenv.lib; { + description = "Switchboard Sound Plug"; + homepage = "https://github.com/elementary/switchboard-plug-sound"; + license = licenses.lgpl2Plus; + platforms = platforms.linux; + maintainers = pantheon.maintainers; + }; +} diff --git a/nixpkgs/pkgs/desktops/pantheon/apps/switchboard/default.nix b/nixpkgs/pkgs/desktops/pantheon/apps/switchboard/default.nix new file mode 100644 index 000000000000..6b451931a46c --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/apps/switchboard/default.nix @@ -0,0 +1,69 @@ +{ stdenv +, fetchFromGitHub +, pantheon +, pkgconfig +, meson +, python3 +, ninja +, vala +, gtk3 +, libgee +, granite +, gettext +, clutter-gtk +, elementary-icon-theme +, wrapGAppsHook +}: + +stdenv.mkDerivation rec { + pname = "switchboard"; + version = "2.3.9"; + + src = fetchFromGitHub { + owner = "elementary"; + repo = pname; + rev = version; + sha256 = "0gq2gi14ywmhhlq3vablzqjzxq2ms60l9b10splzsf3zd7k2dqz2"; + }; + + passthru = { + updateScript = pantheon.updateScript { + attrPath = "pantheon.${pname}"; + }; + }; + + nativeBuildInputs = [ + gettext + meson + ninja + pkgconfig + python3 + vala + wrapGAppsHook + ]; + + buildInputs = [ + clutter-gtk + elementary-icon-theme + granite + gtk3 + libgee + ]; + + patches = [ + ./plugs-path-env.patch + ]; + + postPatch = '' + chmod +x meson/post_install.py + patchShebangs meson/post_install.py + ''; + + meta = with stdenv.lib; { + description = "Extensible System Settings app for Pantheon"; + homepage = "https://github.com/elementary/switchboard"; + license = licenses.lgpl21Plus; + platforms = platforms.linux; + maintainers = pantheon.maintainers; + }; +} diff --git a/nixpkgs/pkgs/desktops/pantheon/apps/switchboard/plugs-path-env.patch b/nixpkgs/pkgs/desktops/pantheon/apps/switchboard/plugs-path-env.patch new file mode 100644 index 000000000000..d5931d59ec9a --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/apps/switchboard/plugs-path-env.patch @@ -0,0 +1,21 @@ +diff --git a/lib/PlugsManager.vala b/lib/PlugsManager.vala +index 8b21e7b..bc36321 100644 +--- a/lib/PlugsManager.vala ++++ b/lib/PlugsManager.vala +@@ -36,7 +36,15 @@ public class Switchboard.PlugsManager : GLib.Object { + + private PlugsManager () { + plugs = new Gee.LinkedList<Switchboard.Plug> (); +- var base_folder = File.new_for_path (Build.PLUGS_DIR); ++ ++ var plugs_path = Environment.get_variable("SWITCHBOARD_PLUGS_PATH"); ++ if (plugs_path != null) { ++ debug ("SWITCHBOARD_PLUGS_PATH set to %s", plugs_path); ++ } else { ++ critical ("SWITCHBOARD_PLUGS_PATH not set"); ++ } ++ ++ var base_folder = File.new_for_path (plugs_path); + find_plugins (base_folder); + } + diff --git a/nixpkgs/pkgs/desktops/pantheon/apps/switchboard/wrapper.nix b/nixpkgs/pkgs/desktops/pantheon/apps/switchboard/wrapper.nix new file mode 100644 index 000000000000..67f4105ff3d1 --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/apps/switchboard/wrapper.nix @@ -0,0 +1,59 @@ +{ wrapGAppsHook +, glib +, lib +, stdenv +, xorg +, switchboard +, switchboardPlugs +, plugs + # Only useful to disable for development testing. +, useDefaultPlugs ? true +}: + +let + selectedPlugs = + if plugs == null then switchboardPlugs + else plugs ++ (lib.optionals useDefaultPlugs switchboardPlugs); +in +stdenv.mkDerivation rec { + name = "${switchboard.name}-with-plugs"; + + src = null; + + paths = [ + switchboard + ] ++ selectedPlugs; + + passAsFile = [ "paths" ]; + + nativeBuildInputs = [ + glib + wrapGAppsHook + ]; + + buildInputs = lib.forEach selectedPlugs (x: x.buildInputs) + ++ selectedPlugs; + + dontUnpack = true; + dontConfigure = true; + dontBuild = true; + + preferLocalBuild = true; + allowSubstitutes = false; + + installPhase = '' + mkdir -p $out + for i in $(cat $pathsPath); do + ${xorg.lndir}/bin/lndir -silent $i $out + done + ''; + + preFixup = '' + gappsWrapperArgs+=( + --set SWITCHBOARD_PLUGS_PATH "$out/lib/switchboard" + ) + ''; + + inherit (switchboard) meta; +} + diff --git a/nixpkgs/pkgs/desktops/pantheon/artwork/elementary-gtk-theme/default.nix b/nixpkgs/pkgs/desktops/pantheon/artwork/elementary-gtk-theme/default.nix new file mode 100644 index 000000000000..9deee9c9abe1 --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/artwork/elementary-gtk-theme/default.nix @@ -0,0 +1,41 @@ +{ stdenv +, fetchFromGitHub +, pantheon +, meson +, ninja +, gettext +}: + +stdenv.mkDerivation rec { + pname = "elementary-gtk-theme"; + version = "5.4.2"; + + repoName = "stylesheet"; + + src = fetchFromGitHub { + owner = "elementary"; + repo = repoName; + rev = version; + sha256 = "0aqq0d21mqgrfiyhpfa8k51wxw2pia0qlsgp0sli79v7nwn3ykbq"; + }; + + passthru = { + updateScript = pantheon.updateScript { + attrPath = "pantheon.${pname}"; + }; + }; + + nativeBuildInputs = [ + gettext + meson + ninja + ]; + + meta = with stdenv.lib; { + description = "GTK theme designed to be smooth, attractive, fast, and usable"; + homepage = "https://github.com/elementary/stylesheet"; + license = licenses.gpl3; + platforms = platforms.linux; + maintainers = pantheon.maintainers; + }; +} diff --git a/nixpkgs/pkgs/desktops/pantheon/artwork/elementary-icon-theme/default.nix b/nixpkgs/pkgs/desktops/pantheon/artwork/elementary-icon-theme/default.nix new file mode 100644 index 000000000000..3d448954cca7 --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/artwork/elementary-icon-theme/default.nix @@ -0,0 +1,69 @@ +{ stdenv +, fetchFromGitHub +, pantheon +, meson +, python3 +, ninja +, hicolor-icon-theme +, gtk3 +, inkscape +, xorg +}: + +stdenv.mkDerivation rec { + pname = "elementary-icon-theme"; + version = "5.2.0"; + + repoName = "icons"; + + src = fetchFromGitHub { + owner = "elementary"; + repo = repoName; + rev = version; + sha256 = "1irkjj8xfpgkl5p56xhqa3w2s98b8lav7d1lxxrabdi87cjv3n33"; + }; + + passthru = { + updateScript = pantheon.updateScript { + attrPath = "pantheon.${pname}"; + }; + }; + + nativeBuildInputs = [ + gtk3 + inkscape + meson + ninja + python3 + xorg.xcursorgen + ]; + + propagatedBuildInputs = [ + hicolor-icon-theme + ]; + + dontDropIconThemeCache = true; + + mesonFlags = [ + "-Dvolume_icons=false" # Tries to install some icons to / + "-Dpalettes=false" # Don't install gimp and inkscape palette files + ]; + + postPatch = '' + chmod +x meson/symlink.py + patchShebangs meson/symlink.py + ''; + + postFixup = "gtk-update-icon-cache $out/share/icons/elementary"; + + meta = with stdenv.lib; { + description = "Named, vector icons for elementary OS"; + longDescription = '' + An original set of vector icons designed specifically for elementary OS and its desktop environment: Pantheon. + ''; + homepage = "https://github.com/elementary/icons"; + license = licenses.gpl3; + platforms = platforms.linux; + maintainers = pantheon.maintainers; + }; +} diff --git a/nixpkgs/pkgs/desktops/pantheon/artwork/elementary-redacted-script/default.nix b/nixpkgs/pkgs/desktops/pantheon/artwork/elementary-redacted-script/default.nix new file mode 100644 index 000000000000..50a455885162 --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/artwork/elementary-redacted-script/default.nix @@ -0,0 +1,31 @@ +{ stdenv +, fetchFromGitHub +, pantheon +}: + +stdenv.mkDerivation { + pname = "elementary-redacted-script"; + version = "unstable-2016-06-03"; + + src = fetchFromGitHub { + owner = "png2378"; + repo = "redacted-elementary"; + rev = "346440ff9ce19465e6d5c3d6d67a8573f992c746"; + sha256 = "1jpd13sxkarclr0mlm66wzgpjh52ghzjzn4mywhyshyyskwn7jg1"; + }; + + dontBuild = true; + + installPhase = '' + mkdir -p $out/share/fonts/truetype/redacted-elementary + cp -a truetype/*.ttf $out/share/fonts/truetype/redacted-elementary + ''; + + meta = with stdenv.lib; { + description = "Font for concealing text"; + homepage = "https://github.com/png2378/redacted-elementary"; + license = licenses.ofl; + maintainers = pantheon.maintainers; + platforms = platforms.linux; + }; +} diff --git a/nixpkgs/pkgs/desktops/pantheon/artwork/elementary-sound-theme/default.nix b/nixpkgs/pkgs/desktops/pantheon/artwork/elementary-sound-theme/default.nix new file mode 100644 index 000000000000..f95e68153058 --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/artwork/elementary-sound-theme/default.nix @@ -0,0 +1,41 @@ +{ stdenv +, fetchFromGitHub +, pantheon +, meson +, ninja +, pkgconfig +}: + +stdenv.mkDerivation rec { + pname = "elementary-sound-theme"; + version = "1.0"; + + repoName = "sound-theme"; + + src = fetchFromGitHub { + owner = "elementary"; + repo = repoName; + rev = version; + sha256 = "1dc583lq61c361arjl3s44d2k72c46bqvcqv1c3s69f2ndsnxjdz"; + }; + + nativeBuildInputs = [ + meson + ninja + pkgconfig + ]; + + passthru = { + updateScript = pantheon.updateScript { + attrPath = "pantheon.${pname}"; + }; + }; + + meta = with stdenv.lib; { + description = "A set of system sounds for elementary"; + homepage = "https://github.com/elementary/sound-theme"; + license = licenses.unlicense; + platforms = platforms.linux; + maintainers = pantheon.maintainers; + }; +} diff --git a/nixpkgs/pkgs/desktops/pantheon/artwork/elementary-wallpapers/default.nix b/nixpkgs/pkgs/desktops/pantheon/artwork/elementary-wallpapers/default.nix new file mode 100644 index 000000000000..82f45c95d611 --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/artwork/elementary-wallpapers/default.nix @@ -0,0 +1,42 @@ +{ stdenv +, fetchFromGitHub +, pantheon +, meson +, ninja +, gettext +}: + +stdenv.mkDerivation rec { + pname = "elementary-wallpapers"; + version = "5.5.0"; + + repoName = "wallpapers"; + + src = fetchFromGitHub { + owner = "elementary"; + repo = repoName; + rev = version; + sha256 = "0c63nds2ylqgcp39s13mfwhipgyw8cirn0bhybp291l5g86ii6s3"; + }; + + nativeBuildInputs = [ + gettext + meson + ninja + ]; + + passthru = { + updateScript = pantheon.updateScript { + attrPath = "pantheon.${pname}"; + }; + }; + + meta = with stdenv.lib; { + description = "Collection of wallpapers for elementary"; + homepage = "https://github.com/elementary/wallpapers"; + license = licenses.publicDomain; + platforms = platforms.linux; + maintainers = pantheon.maintainers; + }; +} + diff --git a/nixpkgs/pkgs/desktops/pantheon/default.nix b/nixpkgs/pkgs/desktops/pantheon/default.nix new file mode 100644 index 000000000000..edcda8877544 --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/default.nix @@ -0,0 +1,209 @@ +{ config, pkgs, lib, gnome3 }: + + +lib.makeScope pkgs.newScope (self: with self; { + + switchboardPlugs = [ + switchboard-plug-a11y switchboard-plug-about + switchboard-plug-applications switchboard-plug-bluetooth + switchboard-plug-datetime switchboard-plug-display + switchboard-plug-keyboard switchboard-plug-mouse-touchpad + switchboard-plug-network switchboard-plug-notifications + switchboard-plug-onlineaccounts switchboard-plug-pantheon-shell + switchboard-plug-power switchboard-plug-printers + switchboard-plug-security-privacy switchboard-plug-sharing + switchboard-plug-sound + ]; + + wingpanelIndicators = [ + wingpanel-applications-menu wingpanel-indicator-bluetooth + wingpanel-indicator-datetime wingpanel-indicator-keyboard + wingpanel-indicator-network wingpanel-indicator-nightlight + wingpanel-indicator-notifications wingpanel-indicator-power + wingpanel-indicator-session wingpanel-indicator-sound + ]; + + nixpkgs-github-update = callPackage ./nixpkgs_github_update { }; + + updateScript = callPackage ./update.nix { }; + + maintainers = with pkgs.stdenv.lib.maintainers; [ worldofpeace ]; + + mutter = pkgs.gnome3.mutter334; + + elementary-gsettings-schemas = callPackage ./desktop/elementary-gsettings-schemas { }; + + notes-up = pkgs.notes-up.override { withPantheon = true; }; + + #### APPS + + appcenter = callPackage ./apps/appcenter { }; + + elementary-calculator = callPackage ./apps/elementary-calculator { }; + + elementary-calendar = callPackage ./apps/elementary-calendar { }; + + elementary-camera = callPackage ./apps/elementary-camera { }; + + elementary-code = callPackage ./apps/elementary-code { }; + + elementary-dock = callPackage ./apps/elementary-dock { }; + + elementary-files = callPackage ./apps/elementary-files { }; + + elementary-feedback = callPackage ./apps/elementary-feedback { }; + + elementary-music = callPackage ./apps/elementary-music { }; + + elementary-photos = callPackage ./apps/elementary-photos { }; + + elementary-screenshot-tool = callPackage ./apps/elementary-screenshot-tool { }; + + elementary-terminal = callPackage ./apps/elementary-terminal { }; + + elementary-videos = callPackage ./apps/elementary-videos { }; + + sideload = callPackage ./apps/sideload { }; + + #### DESKTOP + + elementary-default-settings = callPackage ./desktop/elementary-default-settings { }; + + elementary-greeter = callPackage ./desktop/elementary-greeter { }; + + elementary-onboarding = callPackage ./desktop/elementary-onboarding { }; + + elementary-print-shim = callPackage ./desktop/elementary-print-shim { }; + + elementary-session-settings = callPackage ./desktop/elementary-session-settings { + inherit (gnome3) gnome-session gnome-keyring; + }; + + elementary-shortcut-overlay = callPackage ./desktop/elementary-shortcut-overlay { }; + + extra-elementary-contracts = callPackage ./desktop/extra-elementary-contracts { + inherit (gnome3) file-roller gnome-bluetooth; + }; + + gala = callPackage ./desktop/gala { + inherit (gnome3) gnome-desktop; + }; + + wingpanel = callPackage ./desktop/wingpanel { }; + + wingpanel-with-indicators = callPackage ./desktop/wingpanel/wrapper.nix { + indicators = null; + }; + + #### LIBRARIES + + granite = callPackage ./granite { }; + + #### SERVICES + + contractor = callPackage ./services/contractor { }; + + elementary-capnet-assist = callPackage ./services/elementary-capnet-assist { }; + + elementary-dpms-helper = callPackage ./services/elementary-dpms-helper { }; + + elementary-notifications = callPackage ./services/elementary-notifications { }; + + # We're using ubuntu and elementary's patchset due to reasons + # explained here -> https://github.com/elementary/greeter/issues/92#issuecomment-376215614 + # Take note of "I am holding off on "fixing" this bug for as long as possible." + elementary-settings-daemon = callPackage ./services/elementary-settings-daemon { + inherit (gnome3) gnome-desktop; + }; + + pantheon-agent-geoclue2 = callPackage ./services/pantheon-agent-geoclue2 { }; + + pantheon-agent-polkit = callPackage ./services/pantheon-agent-polkit { }; + + #### WINGPANEL INDICATORS + + wingpanel-applications-menu = callPackage ./desktop/wingpanel-indicators/applications-menu { }; + + wingpanel-indicator-bluetooth = callPackage ./desktop/wingpanel-indicators/bluetooth { }; + + wingpanel-indicator-datetime = callPackage ./desktop/wingpanel-indicators/datetime { }; + + wingpanel-indicator-keyboard = callPackage ./desktop/wingpanel-indicators/keyboard { }; + + wingpanel-indicator-network = callPackage ./desktop/wingpanel-indicators/network { }; + + wingpanel-indicator-nightlight = callPackage ./desktop/wingpanel-indicators/nightlight { }; + + wingpanel-indicator-notifications = callPackage ./desktop/wingpanel-indicators/notifications { }; + + wingpanel-indicator-power = callPackage ./desktop/wingpanel-indicators/power { }; + + wingpanel-indicator-session = callPackage ./desktop/wingpanel-indicators/session { }; + + wingpanel-indicator-sound = callPackage ./desktop/wingpanel-indicators/sound { }; + + #### SWITCHBOARD + + switchboard = callPackage ./apps/switchboard { }; + + switchboard-with-plugs = callPackage ./apps/switchboard/wrapper.nix { + plugs = null; + }; + + switchboard-plug-a11y = callPackage ./apps/switchboard-plugs/a11y { }; + + switchboard-plug-about = callPackage ./apps/switchboard-plugs/about { }; + + switchboard-plug-applications = callPackage ./apps/switchboard-plugs/applications { }; + + switchboard-plug-bluetooth = callPackage ./apps/switchboard-plugs/bluetooth { }; + + switchboard-plug-datetime = callPackage ./apps/switchboard-plugs/datetime { }; + + switchboard-plug-display = callPackage ./apps/switchboard-plugs/display { }; + + switchboard-plug-keyboard = callPackage ./apps/switchboard-plugs/keyboard { }; + + switchboard-plug-mouse-touchpad = callPackage ./apps/switchboard-plugs/mouse-touchpad { }; + + switchboard-plug-network = callPackage ./apps/switchboard-plugs/network { }; + + switchboard-plug-notifications = callPackage ./apps/switchboard-plugs/notifications { }; + + switchboard-plug-onlineaccounts = callPackage ./apps/switchboard-plugs/onlineaccounts { }; + + switchboard-plug-pantheon-shell = callPackage ./apps/switchboard-plugs/pantheon-shell { + inherit (gnome3) gnome-desktop; + }; + + switchboard-plug-power = callPackage ./apps/switchboard-plugs/power { }; + + switchboard-plug-printers = callPackage ./apps/switchboard-plugs/printers { }; + + switchboard-plug-security-privacy = callPackage ./apps/switchboard-plugs/security-privacy { }; + + switchboard-plug-sharing = callPackage ./apps/switchboard-plugs/sharing { }; + + switchboard-plug-sound = callPackage ./apps/switchboard-plugs/sound { }; + + ### ARTWORK + + elementary-gtk-theme = callPackage ./artwork/elementary-gtk-theme { }; + + elementary-icon-theme = callPackage ./artwork/elementary-icon-theme { }; + + elementary-redacted-script = callPackage ./artwork/elementary-redacted-script { }; + + elementary-sound-theme = callPackage ./artwork/elementary-sound-theme { }; + + elementary-wallpapers = callPackage ./artwork/elementary-wallpapers { }; + +} // lib.optionalAttrs (config.allowAliases or true) { + + ### ALIASES + + inherit (pkgs) vala; # added 2019-10-10 + + cerbere = throw "Cerbere is now obsolete https://github.com/elementary/cerbere/releases/tag/2.5.1."; + +}) diff --git a/nixpkgs/pkgs/desktops/pantheon/desktop/elementary-default-settings/0001-Build-with-Meson.patch b/nixpkgs/pkgs/desktops/pantheon/desktop/elementary-default-settings/0001-Build-with-Meson.patch new file mode 100644 index 000000000000..3a0b3812450c --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/desktop/elementary-default-settings/0001-Build-with-Meson.patch @@ -0,0 +1,309 @@ +From f728ac670d8f6bb7600a007d92034b711471fab6 Mon Sep 17 00:00:00 2001 +From: worldofpeace <worldofpeace@protonmail.ch> +Date: Sat, 13 Jul 2019 19:06:20 -0400 +Subject: [PATCH 1/2] Build with Meson + +Has the following meson build options: +* default-wallpaper +* plank-dockitems +* default-gsettings-overrides + +All default to true. + +We also split the default-settings gsettings override into another that +only sets plank's default dockitems. This is installed when plank-dockitems +is true. We need to have this because those settings are dependent on +those dockitems actually being installed and we have it optional. +--- + accountsservice/create-symlink.py | 24 ++++++ + accountsservice/meson.build | 25 ++++++ + .../appcenter.blacklist | 0 + .../default-testpage.pdf | Bin + settings.ini => gtk/settings.ini | 0 + .inputrc => inputrc/.inputrc | 0 + meson.build | 79 ++++++++++++++++++ + meson/post_install.py | 12 +++ + meson_options.txt | 14 ++++ + ...e => default-settings.gschema.override.in} | 3 +- + overrides/meson.build | 21 +++++ + overrides/plank-dockitems.gschema.override | 2 + + .../sessioninstaller.desktop | 0 + 13 files changed, 178 insertions(+), 2 deletions(-) + create mode 100644 accountsservice/create-symlink.py + create mode 100644 accountsservice/meson.build + rename appcenter.blacklist => appcenter/appcenter.blacklist (100%) + rename default-testpage.pdf => cups/default-testpage.pdf (100%) + rename settings.ini => gtk/settings.ini (100%) + rename .inputrc => inputrc/.inputrc (100%) + create mode 100644 meson.build + create mode 100755 meson/post_install.py + create mode 100644 meson_options.txt + rename overrides/{default-settings.gschema.override => default-settings.gschema.override.in} (92%) + create mode 100644 overrides/meson.build + create mode 100644 overrides/plank-dockitems.gschema.override + rename sessioninstaller.desktop => sessioninstaller/sessioninstaller.desktop (100%) + +diff --git a/accountsservice/create-symlink.py b/accountsservice/create-symlink.py +new file mode 100644 +index 0000000..e502134 +--- /dev/null ++++ b/accountsservice/create-symlink.py +@@ -0,0 +1,24 @@ ++#!/usr/bin/env python3 ++ ++import os ++import sys ++ ++if len(sys.argv) < 3: ++ print('Usage: create-symlink.py SOURCE DESTINATION') ++ sys.exit(1) ++ ++src = sys.argv[1] ++dest = sys.argv[2] ++ ++if 'MESON_INSTALL_DESTDIR_PREFIX' in os.environ: ++ src = os.path.join(os.environ['MESON_INSTALL_DESTDIR_PREFIX'], src) ++ dest = os.path.join(os.environ['MESON_INSTALL_DESTDIR_PREFIX'], dest) ++ ++if os.path.isabs(src): ++ src = os.path.relpath(src, os.path.dirname(os.path.realpath(dest))) ++ ++if not os.path.exists(dest): ++ print('Creating symbolic link: ' + dest + ' -> ' + src) ++ if not os.path.exists(os.path.dirname(dest)): ++ os.makedirs(os.path.dirname(dest)) ++ os.symlink(src, dest) +diff --git a/accountsservice/meson.build b/accountsservice/meson.build +new file mode 100644 +index 0000000..6d18459 +--- /dev/null ++++ b/accountsservice/meson.build +@@ -0,0 +1,25 @@ ++dbus_dep = dependency('dbus-1') ++dbus_interfaces_dir = dbus_dep.get_pkgconfig_variable('interfaces_dir', define_variable: ['datadir', datadir]) ++ ++install_data( ++ 'io.elementary.pantheon.AccountsService.xml', ++ install_dir: dbus_interfaces_dir ++) ++ ++ ++polkit_dep = dependency('polkit-gobject-1') ++polkit_actiondir = polkit_dep.get_pkgconfig_variable('actiondir', define_variable: ['prefix', prefix]) ++ ++install_data( ++ 'io.elementary.pantheon.AccountsService.policy', ++ install_dir: polkit_actiondir ++) ++ ++act_dep = dependency('accountsservice') ++act_interfacesdir = act_dep.get_pkgconfig_variable('interfacesdir', define_variable: ['datadir', datadir]) ++ ++meson.add_install_script( ++ 'create-symlink.py', ++ join_paths(dbus_interfaces_dir, 'io.elementary.pantheon.AccountsService.xml'), ++ join_paths(act_interfacesdir, 'io.elementary.pantheon.AccountsService.xml'), ++) +diff --git a/appcenter.blacklist b/appcenter/appcenter.blacklist +similarity index 100% +rename from appcenter.blacklist +rename to appcenter/appcenter.blacklist +diff --git a/default-testpage.pdf b/cups/default-testpage.pdf +similarity index 100% +rename from default-testpage.pdf +rename to cups/default-testpage.pdf +diff --git a/settings.ini b/gtk/settings.ini +similarity index 100% +rename from settings.ini +rename to gtk/settings.ini +diff --git a/.inputrc b/inputrc/.inputrc +similarity index 100% +rename from .inputrc +rename to inputrc/.inputrc +diff --git a/meson.build b/meson.build +new file mode 100644 +index 0000000..7740a34 +--- /dev/null ++++ b/meson.build +@@ -0,0 +1,79 @@ ++project( ++ 'elementary-default-settings', ++ version: '5.1.0', ++ default_options: 'sysconfdir=/etc', ++) ++ ++prefix = get_option('prefix') ++datadir = join_paths(prefix, get_option('datadir')) ++sysconfdir = get_option('sysconfdir') ++ ++meson.add_install_script('meson/post_install.py', datadir) ++ ++# Planks Default DockItems ++if get_option('plank-dockitems') ++ install_subdir( ++ 'plank', ++ install_dir: join_paths(sysconfdir, 'skel', '.config') ++ ) ++endif ++ ++# Setup system wide global environment for applications ++install_subdir( ++ 'profile.d', ++ install_dir: join_paths(sysconfdir, 'profile.d'), ++ strip_directory : true ++) ++ ++# elementary Plymouth Theme ++install_subdir( ++ 'plymouth/elementary', ++ install_dir: join_paths(datadir, 'plymouth', 'themes') ++) ++ ++install_data( ++ 'plymouth/ubuntu-text.plymouth', ++ install_dir: join_paths(datadir, 'plymouth', 'themes') ++) ++ ++# Sudo password feedback in terminals ++install_data( ++ 'sudoers.d/pwfeedback', ++ install_dir: join_paths(sysconfdir, 'sudoers.d') ++) ++ ++# CUPS Printing testpage ++install_data( ++ 'cups/default-testpage.pdf', ++ install_dir: join_paths(datadir, 'cups', 'data') ++) ++ ++# GTK3 Settings ++install_data( ++ 'gtk/settings.ini', ++ install_dir: join_paths(sysconfdir, 'gtk-3.0') ++) ++ ++# So SessionInstaller can have an Icon ++install_data( ++ 'sessioninstaller/sessioninstaller.desktop', ++ install_dir: join_paths(datadir, 'applications') ++) ++ ++# Default Appcenter Blacklist ++install_data( ++ 'appcenter/appcenter.blacklist', ++ install_dir: join_paths(sysconfdir, 'appcenter') ++) ++ ++# Configuration file of GNU readline ++install_data( ++ 'inputrc/.inputrc', ++ install_dir: join_paths(sysconfdir, 'skel') ++) ++ ++# Default gsettings overrides ++subdir('overrides') ++ ++# AccountsService extension for Greeter. ++subdir('accountsservice') +diff --git a/meson/post_install.py b/meson/post_install.py +new file mode 100755 +index 0000000..c6b5617 +--- /dev/null ++++ b/meson/post_install.py +@@ -0,0 +1,12 @@ ++#!/usr/bin/env python3 ++ ++import os ++import sys ++import subprocess ++ ++if 'DESTDIR' not in os.environ: ++ default_settings_datadir = sys.argv[1] ++ ++ print('Compiling GSettings schemas...') ++ subprocess.call(['glib-compile-schemas', ++ os.path.join(default_settings_datadir, 'glib-2.0', 'schemas')]) +diff --git a/meson_options.txt b/meson_options.txt +new file mode 100644 +index 0000000..8fd19ba +--- /dev/null ++++ b/meson_options.txt +@@ -0,0 +1,14 @@ ++option('default-wallpaper', ++ type: 'string', ++ value: '/usr/share/backgrounds/elementaryos-default', ++ description: 'Path to default wallpaper to use in Pantheon.') ++ ++option('plank-dockitems', ++ type: 'boolean', ++ value: true, ++ description: 'Install default Pantheon Plank dockitems') ++ ++option('default-gsettings-overrides', ++ type: 'boolean', ++ value: true, ++ description: 'Install default Pantheon GSettings Overrides') +diff --git a/overrides/default-settings.gschema.override b/overrides/default-settings.gschema.override.in +similarity index 92% +rename from overrides/default-settings.gschema.override +rename to overrides/default-settings.gschema.override.in +index 1aef29c..69d272b 100644 +--- a/overrides/default-settings.gschema.override ++++ b/overrides/default-settings.gschema.override.in +@@ -1,5 +1,4 @@ + [net.launchpad.plank.dock.settings] +-dock-items=['gala-multitaskingview.dockitem','org.gnome.Epiphany.dockitem','org.pantheon.mail.dockitem','io.elementary.calendar.dockitem','io.elementary.music.dockitem','io.elementary.videos.dockitem','io.elementary.photos.dockitem','io.elementary.switchboard.dockitem','io.elementary.appcenter.dockitem'] + hide-delay=250 + hide-mode='window-dodge' + show-dock-item=false +@@ -11,7 +10,7 @@ triggers=['<Control>space'] + [org.gnome.desktop.background] + draw-background=true + picture-options='zoom' +-picture-uri='file:///usr/share/backgrounds/elementaryos-default' ++picture-uri='file://@DEFAULT_WALLPAPER@' + primary-color='#000000' + show-desktop-icons=false + +diff --git a/overrides/meson.build b/overrides/meson.build +new file mode 100644 +index 0000000..ad80644 +--- /dev/null ++++ b/overrides/meson.build +@@ -0,0 +1,21 @@ ++if get_option('default-gsettings-overrides') ++ default_wallpaper = get_option('default-wallpaper') ++ ++ wallpaper_configuration = configuration_data() ++ wallpaper_configuration.set('DEFAULT_WALLPAPER', default_wallpaper) ++ ++ settings_override = configure_file( ++ input: 'default-settings.gschema.override.in', ++ output: '@BASENAME@', ++ configuration: wallpaper_configuration, ++ install_dir: join_paths(datadir, 'glib-2.0', 'schemas') ++ ) ++endif ++ ++# Install conditionally because it's dependent on our dockitems being installed ++if get_option('plank-dockitems') ++ install_data( ++ 'plank-dockitems.gschema.override', ++ install_dir: join_paths(datadir, 'glib-2.0', 'schemas') ++ ) ++endif +diff --git a/overrides/plank-dockitems.gschema.override b/overrides/plank-dockitems.gschema.override +new file mode 100644 +index 0000000..72b38d4 +--- /dev/null ++++ b/overrides/plank-dockitems.gschema.override +@@ -0,0 +1,2 @@ ++[net.launchpad.plank.dock.settings] ++dock-items=['gala-multitaskingview.dockitem','org.gnome.Epiphany.dockitem','org.pantheon.mail.dockitem','io.elementary.calendar.dockitem','io.elementary.music.dockitem','io.elementary.videos.dockitem','io.elementary.photos.dockitem','io.elementary.switchboard.dockitem','io.elementary.appcenter.dockitem'] +diff --git a/sessioninstaller.desktop b/sessioninstaller/sessioninstaller.desktop +similarity index 100% +rename from sessioninstaller.desktop +rename to sessioninstaller/sessioninstaller.desktop +-- +2.23.0 + diff --git a/nixpkgs/pkgs/desktops/pantheon/desktop/elementary-default-settings/default.nix b/nixpkgs/pkgs/desktops/pantheon/desktop/elementary-default-settings/default.nix new file mode 100644 index 000000000000..4e8d8bfeb150 --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/desktop/elementary-default-settings/default.nix @@ -0,0 +1,105 @@ +{ stdenv +, fetchFromGitHub +, pantheon +, meson +, ninja +, nixos-artwork +, glib +, pkgconfig +, dbus +, polkit +, accountsservice +, python3 +, fetchpatch +}: + +stdenv.mkDerivation rec { + pname = "elementary-default-settings"; + version = "5.1.2"; + + repoName = "default-settings"; + + src = fetchFromGitHub { + owner = "elementary"; + repo = repoName; + rev = version; + sha256 = "00z31alwn2skhksrhp2jk75f6jlaipzk91hclx7na4gbcyrw7ahw"; + }; + + passthru = { + updateScript = pantheon.updateScript { + attrPath = "pantheon.${pname}"; + }; + }; + + patches = [ + # Use new notifications + (fetchpatch { + url = "https://github.com/elementary/default-settings/commit/0658bb75b9f49f58b35746d05fb6c4b811f125e9.patch"; + sha256 = "0wa7iq0vfp2av5v23w94a5844ddj4g48d4wk3yrp745dyrimg739"; + }) + + # Fix media key syntax + (fetchpatch { + url = "https://github.com/elementary/default-settings/commit/332aefe1883be5dfe90920e165c39e331a53b2ea.patch"; + sha256 = "0ypcaga55pw58l30srq3ga1mhz2w6hkwanv41jjr6g3ia9jvq69n"; + }) + + # https://github.com/elementary/default-settings/pull/119 + ./0001-Build-with-Meson.patch + ]; + + nativeBuildInputs = [ + accountsservice + dbus + glib # polkit requires + meson + ninja + pkgconfig + polkit + python3 + ]; + + mesonFlags = [ + "--sysconfdir=${placeholder "out"}/etc" + "-Ddefault-wallpaper=${nixos-artwork.wallpapers.simple-dark-gray}/share/artwork/gnome/nix-wallpaper-simple-dark-gray.png" + "-Dplank-dockitems=false" + ]; + + postPatch = '' + chmod +x meson/post_install.py + patchShebangs meson/post_install.py + ''; + + preInstall = '' + # Install our override for plank dockitems. + # This is because we don't have Pantheon's mail or Appcenter. + # See: https://github.com/NixOS/nixpkgs/issues/58161 + schema_dir=$out/share/glib-2.0/schemas + install -D ${./overrides/plank-dockitems.gschema.override} $schema_dir/plank-dockitems.gschema.override + + # Our launchers that use paths at /run/current-system/sw/bin + mkdir -p $out/etc/skel/.config/plank/dock1 + cp -avr ${./launchers} $out/etc/skel/.config/plank/dock1/launchers + + # Whitelist wingpanel indicators to be used in the greeter + # TODO: is this needed or installed upstream? + install -D ${./io.elementary.greeter.whitelist} $out/etc/wingpanel.d/io.elementary.greeter.whitelist + ''; + + postFixup = '' + # https://github.com/elementary/default-settings/issues/55 + rm -rf $out/share/plymouth + rm -rf $out/share/cups + + rm -rf $out/share/applications + ''; + + meta = with stdenv.lib; { + description = "Default settings and configuration files for elementary"; + homepage = "https://github.com/elementary/default-settings"; + license = licenses.gpl2Plus; + platforms = platforms.linux; + maintainers = pantheon.maintainers; + }; +} diff --git a/nixpkgs/pkgs/desktops/pantheon/desktop/elementary-default-settings/io.elementary.greeter.whitelist b/nixpkgs/pkgs/desktops/pantheon/desktop/elementary-default-settings/io.elementary.greeter.whitelist new file mode 100644 index 000000000000..0cff31f4f777 --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/desktop/elementary-default-settings/io.elementary.greeter.whitelist @@ -0,0 +1,6 @@ +liba11y.so +libbluetooth.so +libkeyboard.so +libnetwork.so +libpower.so +libsession.so diff --git a/nixpkgs/pkgs/desktops/pantheon/desktop/elementary-default-settings/launchers/gala-multitaskingview.dockitem b/nixpkgs/pkgs/desktops/pantheon/desktop/elementary-default-settings/launchers/gala-multitaskingview.dockitem new file mode 100644 index 000000000000..b25bb8c85904 --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/desktop/elementary-default-settings/launchers/gala-multitaskingview.dockitem @@ -0,0 +1,2 @@ +[PlankDockItemPreferences] +Launcher=file:///run/current-system/sw/share/applications/gala-multitaskingview.desktop diff --git a/nixpkgs/pkgs/desktops/pantheon/desktop/elementary-default-settings/launchers/io.elementary.calendar.dockitem b/nixpkgs/pkgs/desktops/pantheon/desktop/elementary-default-settings/launchers/io.elementary.calendar.dockitem new file mode 100644 index 000000000000..3bd7d531840d --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/desktop/elementary-default-settings/launchers/io.elementary.calendar.dockitem @@ -0,0 +1,2 @@ +[PlankDockItemPreferences] +Launcher=file:///run/current-system/sw/share/applications/io.elementary.calendar.desktop diff --git a/nixpkgs/pkgs/desktops/pantheon/desktop/elementary-default-settings/launchers/io.elementary.music.dockitem b/nixpkgs/pkgs/desktops/pantheon/desktop/elementary-default-settings/launchers/io.elementary.music.dockitem new file mode 100644 index 000000000000..494edde183ca --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/desktop/elementary-default-settings/launchers/io.elementary.music.dockitem @@ -0,0 +1,2 @@ +[PlankDockItemPreferences] +Launcher=file:///run/current-system/sw/share/applications/io.elementary.music.desktop diff --git a/nixpkgs/pkgs/desktops/pantheon/desktop/elementary-default-settings/launchers/io.elementary.photos.dockitem b/nixpkgs/pkgs/desktops/pantheon/desktop/elementary-default-settings/launchers/io.elementary.photos.dockitem new file mode 100644 index 000000000000..89536754964d --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/desktop/elementary-default-settings/launchers/io.elementary.photos.dockitem @@ -0,0 +1,2 @@ +[PlankDockItemPreferences] +Launcher=file:///run/current-system/sw/share/applications/io.elementary.photos.desktop diff --git a/nixpkgs/pkgs/desktops/pantheon/desktop/elementary-default-settings/launchers/io.elementary.switchboard.dockitem b/nixpkgs/pkgs/desktops/pantheon/desktop/elementary-default-settings/launchers/io.elementary.switchboard.dockitem new file mode 100644 index 000000000000..312c35d9bf00 --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/desktop/elementary-default-settings/launchers/io.elementary.switchboard.dockitem @@ -0,0 +1,2 @@ +[PlankDockItemPreferences] +Launcher=file:///run/current-system/sw/share/applications/io.elementary.switchboard.desktop diff --git a/nixpkgs/pkgs/desktops/pantheon/desktop/elementary-default-settings/launchers/io.elementary.videos.dockitem b/nixpkgs/pkgs/desktops/pantheon/desktop/elementary-default-settings/launchers/io.elementary.videos.dockitem new file mode 100644 index 000000000000..3b0f721a5644 --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/desktop/elementary-default-settings/launchers/io.elementary.videos.dockitem @@ -0,0 +1,2 @@ +[PlankDockItemPreferences] +Launcher=file:///run/current-system/sw/share/applications/io.elementary.videos.desktop diff --git a/nixpkgs/pkgs/desktops/pantheon/desktop/elementary-default-settings/launchers/org.gnome.Epiphany.dockitem b/nixpkgs/pkgs/desktops/pantheon/desktop/elementary-default-settings/launchers/org.gnome.Epiphany.dockitem new file mode 100644 index 000000000000..b0218bac52d7 --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/desktop/elementary-default-settings/launchers/org.gnome.Epiphany.dockitem @@ -0,0 +1,2 @@ +[PlankDockItemPreferences] +Launcher=file:///run/current-system/sw/share/applications/org.gnome.Epiphany.desktop diff --git a/nixpkgs/pkgs/desktops/pantheon/desktop/elementary-default-settings/launchers/org.gnome.Geary.dockitem b/nixpkgs/pkgs/desktops/pantheon/desktop/elementary-default-settings/launchers/org.gnome.Geary.dockitem new file mode 100644 index 000000000000..8b04efe417ea --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/desktop/elementary-default-settings/launchers/org.gnome.Geary.dockitem @@ -0,0 +1,2 @@ +[PlankDockItemPreferences] +Launcher=file:///run/current-system/sw/share/applications/org.gnome.Geary.desktop diff --git a/nixpkgs/pkgs/desktops/pantheon/desktop/elementary-default-settings/overrides/plank-dockitems.gschema.override b/nixpkgs/pkgs/desktops/pantheon/desktop/elementary-default-settings/overrides/plank-dockitems.gschema.override new file mode 100644 index 000000000000..671448745c50 --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/desktop/elementary-default-settings/overrides/plank-dockitems.gschema.override @@ -0,0 +1,2 @@ +[net.launchpad.plank.dock.settings] +dock-items=['gala-multitaskingview.dockitem','org.gnome.Epiphany.dockitem','org.gnome.Geary.dockitem','io.elementary.calendar.dockitem','io.elementary.music.dockitem','io.elementary.videos.dockitem','io.elementary.photos.dockitem','io.elementary.switchboard.dockitem'] diff --git a/nixpkgs/pkgs/desktops/pantheon/desktop/elementary-greeter/default.nix b/nixpkgs/pkgs/desktops/pantheon/desktop/elementary-greeter/default.nix new file mode 100644 index 000000000000..432f7c3ac5f1 --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/desktop/elementary-greeter/default.nix @@ -0,0 +1,126 @@ +{ stdenv +, fetchFromGitHub +, linkFarm +, substituteAll +, elementary-greeter +, pantheon +, pkgconfig +, meson +, ninja +, vala +, desktop-file-utils +, gtk3 +, granite +, libgee +, elementary-settings-daemon +, mutter +, elementary-icon-theme +, wingpanel-with-indicators +, elementary-gtk-theme +, nixos-artwork +, lightdm +, gdk-pixbuf +, clutter-gtk +, dbus +, accountsservice +, wrapGAppsHook +}: + +stdenv.mkDerivation rec { + pname = "elementary-greeter"; + version = "5.0.3"; + + repoName = "greeter"; + + src = fetchFromGitHub { + owner = "elementary"; + repo = repoName; + rev = version; + sha256 = "1zbfcdgjn57r8pz01xrz6kk8rmviq133snz9f1vqhjdsznk82w5i"; + }; + + passthru = { + updateScript = pantheon.updateScript { + attrPath = "pantheon.${pname}"; + }; + + xgreeters = linkFarm "pantheon-greeter-xgreeters" [{ + path = "${elementary-greeter}/share/xgreeters/io.elementary.greeter.desktop"; + name = "io.elementary.greeter.desktop"; + }]; + }; + + nativeBuildInputs = [ + desktop-file-utils + meson + ninja + pkgconfig + vala + wrapGAppsHook + ]; + + buildInputs = [ + accountsservice + clutter-gtk # else we get could not generate cargs for mutter-clutter-2 + elementary-gtk-theme + elementary-icon-theme + elementary-settings-daemon + gdk-pixbuf + granite + gtk3 + libgee + lightdm + mutter + wingpanel-with-indicators + ]; + + mesonFlags = [ + # A hook does this but after wrapGAppsHook so the files never get wrapped. + "--sbindir=${placeholder "out"}/bin" + # baked into the program for discovery of the greeter configuration + "--sysconfdir=/etc" + # We use the patched gnome-settings-daemon + "-Dubuntu-patched-gsd=true" + "-Dgsd-dir=${elementary-settings-daemon}/libexec/" # trailing slash is needed + ]; + + patches = [ + ./sysconfdir-install.patch + # Needed until https://github.com/elementary/greeter/issues/360 is fixed + (substituteAll { + src = ./hardcode-fallback-background.patch; + default_wallpaper = "${nixos-artwork.wallpapers.simple-dark-gray}/share/artwork/gnome/nix-wallpaper-simple-dark-gray.png"; + }) + ]; + + preFixup = '' + gappsWrapperArgs+=( + # dbus-launch needed in path + --prefix PATH : "${dbus}/bin" + + # for `wingpanel -g` + --prefix PATH : "${wingpanel-with-indicators}/bin" + + # for the compositor + --prefix PATH : "$out/bin" + ) + ''; + + postFixup = '' + # Use NixOS default wallpaper + substituteInPlace $out/etc/lightdm/io.elementary.greeter.conf \ + --replace "#default-wallpaper=/usr/share/backgrounds/elementaryos-default" \ + "default-wallpaper=${nixos-artwork.wallpapers.simple-dark-gray}/share/artwork/gnome/nix-wallpaper-simple-dark-gray.png" + + substituteInPlace $out/share/xgreeters/io.elementary.greeter.desktop \ + --replace "Exec=io.elementary.greeter" "Exec=$out/bin/io.elementary.greeter" + ''; + + meta = with stdenv.lib; { + description = "LightDM Greeter for Pantheon"; + homepage = "https://github.com/elementary/greeter"; + license = licenses.gpl3Plus; + platforms = platforms.linux; + maintainers = pantheon.maintainers; + }; +} diff --git a/nixpkgs/pkgs/desktops/pantheon/desktop/elementary-greeter/hardcode-fallback-background.patch b/nixpkgs/pkgs/desktops/pantheon/desktop/elementary-greeter/hardcode-fallback-background.patch new file mode 100644 index 000000000000..7d2afe7b16c3 --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/desktop/elementary-greeter/hardcode-fallback-background.patch @@ -0,0 +1,22 @@ +diff --git a/src/Widgets/BackgroundImage.vala b/src/Widgets/BackgroundImage.vala +index ae9431c..f0f2a49 100644 +--- a/src/Widgets/BackgroundImage.vala ++++ b/src/Widgets/BackgroundImage.vala +@@ -9,7 +9,7 @@ public class Greeter.BackgroundImage : Gtk.EventBox { + + public BackgroundImage (string? path) { + if (path == null) { +- path = "/usr/share/backgrounds/elementaryos-default"; ++ path = "@default_wallpaper@"; + } + + try { +@@ -19,7 +19,7 @@ public class Greeter.BackgroundImage : Gtk.EventBox { + critical ("Fallback to default wallpaper"); + + try { +- full_pixbuf = new Gdk.Pixbuf.from_file ("/usr/share/backgrounds/elementaryos-default"); ++ full_pixbuf = new Gdk.Pixbuf.from_file ("@default_wallpaper@"); + } catch (GLib.Error e) { + critical (e.message); + } diff --git a/nixpkgs/pkgs/desktops/pantheon/desktop/elementary-greeter/sysconfdir-install.patch b/nixpkgs/pkgs/desktops/pantheon/desktop/elementary-greeter/sysconfdir-install.patch new file mode 100644 index 000000000000..9bacbcf4f98b --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/desktop/elementary-greeter/sysconfdir-install.patch @@ -0,0 +1,25 @@ +From 7bb0d507cbb0122f167127b9f6460bd53d8234de Mon Sep 17 00:00:00 2001 +From: worldofpeace <worldofpeace@users.noreply.github.com> +Date: Sat, 16 Mar 2019 16:07:24 -0400 +Subject: [PATCH] 'sysconfdir' will be etc not /etc for install + +--- + data/meson.build | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/data/meson.build b/data/meson.build +index fd54b75..b1120ae 100644 +--- a/data/meson.build ++++ b/data/meson.build +@@ -20,7 +20,7 @@ i18n.merge_file ( + + install_data( + meson.project_name() + '.conf', +- install_dir: join_paths(get_option('sysconfdir'), 'lightdm') ++ install_dir: join_paths(get_option('prefix'), 'etc', 'lightdm') + ) + + test ( +-- +2.19.2 + diff --git a/nixpkgs/pkgs/desktops/pantheon/desktop/elementary-gsettings-schemas/default.nix b/nixpkgs/pkgs/desktops/pantheon/desktop/elementary-gsettings-schemas/default.nix new file mode 100644 index 000000000000..2580907a5923 --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/desktop/elementary-gsettings-schemas/default.nix @@ -0,0 +1,52 @@ +{ stdenv +, runCommand +, mutter +, elementary-default-settings +, nixos-artwork +, glib +, gala +, epiphany +, elementary-settings-daemon +, gtk3 +, plank +, gsettings-desktop-schemas +, extraGSettingsOverrides ? "" +, extraGSettingsOverridePackages ? [] +}: + +let + + gsettingsOverridePackages = [ + elementary-settings-daemon + epiphany + gala + mutter + gsettings-desktop-schemas + gtk3 + plank + ] ++ extraGSettingsOverridePackages; + +in + +with stdenv.lib; + +# TODO: Having https://github.com/NixOS/nixpkgs/issues/54150 would supersede this +runCommand "elementary-gsettings-desktop-schemas" {} + '' + schema_dir=$out/share/gsettings-schemas/nixos-gsettings-overrides/glib-2.0/schemas + + mkdir -p $schema_dir + + cp -rf ${glib.getSchemaPath gala}/*.gschema.override $schema_dir + + ${concatMapStrings (pkg: "cp -rf ${glib.getSchemaPath pkg}/*.xml $schema_dir\n") gsettingsOverridePackages} + + chmod -R a+w $out/share/gsettings-schemas/nixos-gsettings-overrides + cp ${glib.getSchemaPath elementary-default-settings}/* $schema_dir + + cat - > $schema_dir/nixos-defaults.gschema.override <<- EOF + ${extraGSettingsOverrides} + EOF + + ${glib.dev}/bin/glib-compile-schemas $schema_dir + '' diff --git a/nixpkgs/pkgs/desktops/pantheon/desktop/elementary-onboarding/default.nix b/nixpkgs/pkgs/desktops/pantheon/desktop/elementary-onboarding/default.nix new file mode 100644 index 000000000000..02a87159aefb --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/desktop/elementary-onboarding/default.nix @@ -0,0 +1,72 @@ +{ stdenv +, fetchFromGitHub +, pantheon +, fetchpatch +, pkgconfig +, meson +, ninja +, vala +, python3 +, gtk3 +, glib +, granite +, libgee +, elementary-icon-theme +, elementary-gtk-theme +, gettext +, libhandy +, wrapGAppsHook +}: + +stdenv.mkDerivation rec { + pname = "elementary-onboarding"; + version = "1.2.0"; + + repoName = "onboarding"; + + src = fetchFromGitHub { + owner = "elementary"; + repo = repoName; + rev = version; + sha256 = "0yxafz7jlzj8gsbp6m72q4zbcvm1ch2y4fibj9cymjvz2i0izhba"; + }; + + passthru = { + updateScript = pantheon.updateScript { + attrPath = "pantheon.${pname}"; + }; + }; + + nativeBuildInputs = [ + gettext + meson + ninja + pkgconfig + python3 + vala + wrapGAppsHook + ]; + + buildInputs = [ + elementary-gtk-theme + elementary-icon-theme + glib + granite + gtk3 + libgee + libhandy + ]; + + postPatch = '' + chmod +x meson/post_install.py + patchShebangs meson/post_install.py + ''; + + meta = with stdenv.lib; { + description = "Onboarding app for new users designed for elementary OS"; + homepage = "https://github.com/elementary/onboarding"; + license = licenses.gpl3Plus; + platforms = platforms.linux; + maintainers = pantheon.maintainers; + }; +} diff --git a/nixpkgs/pkgs/desktops/pantheon/desktop/elementary-print-shim/default.nix b/nixpkgs/pkgs/desktops/pantheon/desktop/elementary-print-shim/default.nix new file mode 100644 index 000000000000..e8ea57b8bb9a --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/desktop/elementary-print-shim/default.nix @@ -0,0 +1,46 @@ +{ stdenv +, fetchFromGitHub +, pantheon +, meson +, ninja +, pkgconfig +, vala +, gtk3 +}: + +stdenv.mkDerivation rec { + pname = "elementary-print-shim"; + version = "0.1.3"; + + repoName = "print"; + + src = fetchFromGitHub { + owner = "elementary"; + repo = repoName; + rev = version; + sha256 = "1w3cfap7j42x14mqpfqdm46hk5xc0v5kv8r6wxcnknr3sfxi8qlp"; + }; + + passthru = { + updateScript = pantheon.updateScript { + attrPath = "pantheon.${pname}"; + }; + }; + + nativeBuildInputs = [ + meson + ninja + pkgconfig + vala + ]; + + buildInputs = [ gtk3 ]; + + meta = with stdenv.lib; { + description = "Simple shim for printing support via Contractor"; + homepage = "https://github.com/elementary/print"; + license = licenses.gpl3Plus; + platforms = platforms.linux; + maintainers = pantheon.maintainers; + }; +} diff --git a/nixpkgs/pkgs/desktops/pantheon/desktop/elementary-session-settings/default.nix b/nixpkgs/pkgs/desktops/pantheon/desktop/elementary-session-settings/default.nix new file mode 100644 index 000000000000..089c9188d6cd --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/desktop/elementary-session-settings/default.nix @@ -0,0 +1,154 @@ +{ stdenv +, fetchFromGitHub +, fetchpatch +, substituteAll +, writeScript +, pantheon +, gnome-keyring +, gnome-session +, wingpanel +, orca +, onboard +, at-spi2-core +, elementary-default-settings +, elementary-settings-daemon +, runtimeShell +, writeText +, meson +, ninja +, pkg-config +}: + +let + + # + # ─── ENSURES PLANK GETS ELEMENTARY'S DEFAULT DOCKITEMS ──────────────────────────── + # + + # + # Upstream relies on /etc/skel to initiate a new users home directory with plank's dockitems. + # + # That is not possible within nixos, but we can achieve this easily with a simple script that copies + # them. We then use a xdg autostart and initalize it during the "EarlyInitialization" phase of a gnome session + # which is most appropriate for installing files into $HOME. + # + + dockitems-script = writeScript "dockitems-script" '' + #!${runtimeShell} + + elementary_default_settings="${elementary-default-settings}" + dock_items="$elementary_default_settings/etc/skel/.config/plank/dock1/launchers"/* + + if [ ! -d "$HOME/.config/plank/dock1" ]; then + echo "Instantiating default Plank Dockitems..." + + mkdir -p "$HOME/.config/plank/dock1/launchers" + cp -r --no-preserve=mode,ownership $dock_items "$HOME/.config/plank/dock1/launchers/" + else + echo "Plank Dockitems already instantiated" + fi + ''; + + dockitemAutostart = writeText "default-elementary-dockitems.desktop" '' + [Desktop Entry] + Type=Application + Name=Instantiate Default elementary dockitems + Exec=${dockitems-script} + StartupNotify=false + NoDisplay=true + OnlyShowIn=Pantheon; + X-GNOME-Autostart-Phase=EarlyInitialization + ''; + + executable = writeScript "pantheon" '' + export XDG_CONFIG_DIRS=${elementary-settings-daemon}/etc/xdg:${elementary-default-settings}/etc:$XDG_CONFIG_DIRS + export XDG_DATA_DIRS=@out@/share:$XDG_DATA_DIRS + exec ${gnome-session}/bin/gnome-session --session=pantheon "$@" + ''; + +in + +stdenv.mkDerivation rec { + pname = "elementary-session-settings"; + version = "unstable-2019-11-12"; + + repoName = "session-settings"; + + src = fetchFromGitHub { + owner = "elementary"; + repo = repoName; + rev = "f9d5afed16ce447cf6ae3c2d1c1db5eece84daca"; + sha256 = "0n1m41aapr58rb1ffvfkjq6c6w3f0ynjzzhja50s4di98p4m7y0q"; + }; + + patches = [ + # Map Pantheon required components by g-s-d versions + # https://github.com/elementary/session-settings/pull/23 + (fetchpatch { + url = "https://github.com/elementary/session-settings/commit/39918f4ec64fa9ed5affa109d6a692b97ae4ff01.patch"; + sha256 = "0v2kqcsibymnslnnw4v67yh098znsrhrcycgxkw8vymvwlinc502"; + }) + ]; + + nativeBuildInputs = [ + meson + ninja + pkg-config + ]; + + buildInputs = [ + elementary-settings-daemon + ]; + + mesonFlags = [ + "-Ddefaults-list=false" + "-Dpatched-gsd-autostarts=false" + "-Dpatched-ubuntu-autostarts=false" + "-Dfallback-session=GNOME" + ]; + + postInstall = '' + mkdir -p $out/share/applications + cp -av ${./pantheon-mimeapps.list} $out/share/applications/pantheon-mimeapps.list + + mkdir -p $out/etc/xdg/autostart + for package in ${gnome-keyring} ${orca} ${onboard} ${at-spi2-core}; do + cp -av $package/etc/xdg/autostart/* $out/etc/xdg/autostart + done + + cp "${dockitemAutostart}" $out/etc/xdg/autostart/default-elementary-dockitems.desktop + + mkdir -p $out/libexec + substitute ${executable} $out/libexec/pantheon --subst-var out + chmod +x $out/libexec/pantheon + ''; + + postFixup = '' + substituteInPlace $out/share/xsessions/pantheon.desktop \ + --replace "gnome-session --session=pantheon" "$out/libexec/pantheon" \ + --replace "wingpanel" "${wingpanel}/bin/wingpanel" + + for f in $out/etc/xdg/autostart/*; do mv "$f" "''${f%.desktop}-pantheon.desktop"; done + + for autostart in $(grep -rl "OnlyShowIn=GNOME;" $out/etc/xdg/autostart) + do + echo "Patching OnlyShowIn to Pantheon in: $autostart" + sed -i "s,OnlyShowIn=GNOME;,OnlyShowIn=Pantheon;," $autostart + done + ''; + + passthru = { + updateScript = pantheon.updateScript { + attrPath = "pantheon.${pname}"; + }; + providedSessions = [ "pantheon" ]; + }; + + meta = with stdenv.lib; { + description = "Session settings for elementary"; + homepage = "https://github.com/elementary/session-settings"; + license = licenses.lgpl3; + platforms = platforms.linux; + maintainers = pantheon.maintainers; + }; +} diff --git a/nixpkgs/pkgs/desktops/pantheon/desktop/elementary-session-settings/pantheon-mimeapps.list b/nixpkgs/pkgs/desktops/pantheon/desktop/elementary-session-settings/pantheon-mimeapps.list new file mode 100644 index 000000000000..3b5e3b0e77a5 --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/desktop/elementary-session-settings/pantheon-mimeapps.list @@ -0,0 +1,168 @@ +[Default Applications] +application/ogg=io.elementary.music.desktop +application/oxps=org.gnome.Evince.desktop +application/pdf=org.gnome.Evince.desktop +application/postscript=org.gnome.Evince.desktop +application/vnd.ms-xpsdocument=org.gnome.Evince.desktop +application/vnd.rn-realmedia=io.elementary.videos.desktop +application/x-ar=org.gnome.FileRoller.desktop +application/x-arj=org.gnome.FileRoller.desktop +application/x-bzdvi=org.gnome.Evince.desktop +application/x-bzip-compressed-tar=org.gnome.FileRoller.desktop +application/x-bzip=org.gnome.FileRoller.desktop +application/x-bzpdf=org.gnome.Evince.desktop +application/x-bzpostscript=org.gnome.Evince.desktop +application/x-cbr=org.gnome.Evince.desktop +application/x-cbt=org.gnome.Evince.desktop +application/x-cbz=org.gnome.Evince.desktop +application/x-compress=org.gnome.FileRoller.desktop +application/x-compressed-tar=org.gnome.FileRoller.desktop +application/x-dvi=org.gnome.Evince.desktop +application/x-ear=org.gnome.FileRoller.desktop +application/x-extension-m4a=io.elementary.videos.desktop +application/x-extension-mp4=io.elementary.videos.desktop +application/x-flac=io.elementary.music.desktop +application/x-gtar=org.gnome.FileRoller.desktop +application/x-gzdvi=org.gnome.Evince.desktop +application/x-gzip=org.gnome.FileRoller.desktop +application/x-gzpdf=org.gnome.Evince.desktop +application/x-gzpostscript=org.gnome.Evince.desktop +application/x-lha=org.gnome.FileRoller.desktop +application/x-lhz=org.gnome.FileRoller.desktop +application/x-lzop=org.gnome.FileRoller.desktop +application/x-matroska=io.elementary.videos.desktop +application/x-ogg=io.elementary.music.desktop +application/x-perl=io.elementary.code.desktop +application/x-rar-compressed=org.gnome.FileRoller.desktop +application/x-rar=org.gnome.FileRoller.desktop +application/x-rpm=org.gnome.FileRoller.desktop +application/x-tar=org.gnome.FileRoller.desktop +application/x-war=org.gnome.FileRoller.desktop +application/x-xz-compressed-tar=org.gnome.FileRoller.desktop +application/x-xz=org.gnome.FileRoller.desktop +application/x-xzpdf=org.gnome.Evince.desktop +application/x-zip-compressed=org.gnome.FileRoller.desktop +application/x-zip=org.gnome.FileRoller.desktop +application/x-zoo=org.gnome.FileRoller.desktop +application/xhtml+xml=org.gnome.Epiphany.desktop +application/zip=org.gnome.FileRoller.desktop +audio/3gpp=io.elementary.music.desktop +audio/ac3=io.elementary.music.desktop +audio/AMR-WB=io.elementary.music.desktop +audio/AMR=io.elementary.music.desktop +audio/basic=io.elementary.music.desktop +audio/flac=io.elementary.music.desktop +audio/midi=io.elementary.music.desktop +audio/mp4=io.elementary.music.desktop +audio/mpeg=io.elementary.music.desktop +audio/mpegurl=io.elementary.music.desktop +audio/ogg=io.elementary.music.desktop +audio/prs.sid=io.elementary.music.desktop +audio/vnd.rn-realaudio=io.elementary.music.desktop +audio/x-ape=io.elementary.music.desktop +audio/x-flac=io.elementary.music.desktop +audio/x-gsm=io.elementary.music.desktop +audio/x-it=io.elementary.music.desktop +audio/x-m4a=io.elementary.music.desktop +audio/x-matroska=io.elementary.music.desktop +audio/x-mod=io.elementary.music.desktop +audio/x-mp3=io.elementary.music.desktop +audio/x-mpeg=io.elementary.music.desktop +audio/x-mpegurl=io.elementary.music.desktop +audio/x-ms-asf=io.elementary.music.desktop +audio/x-ms-asx=io.elementary.music.desktop +audio/x-ms-wax=io.elementary.music.desktop +audio/x-ms-wma=io.elementary.music.desktop +audio/x-musepack=io.elementary.music.desktop +audio/x-pn-aiff=io.elementary.music.desktop +audio/x-pn-au=io.elementary.music.desktop +audio/x-pn-realaudio-plugin=io.elementary.music.desktop +audio/x-pn-realaudio=io.elementary.music.desktop +audio/x-pn-wav=io.elementary.music.desktop +audio/x-pn-windows-acm=io.elementary.music.desktop +audio/x-real-audio=io.elementary.music.desktop +audio/x-realaudio=io.elementary.music.desktop +audio/x-sbc=io.elementary.music.desktop +audio/x-scpls=io.elementary.music.desktop +audio/x-speex=io.elementary.music.desktop +audio/x-tta=io.elementary.music.desktop +audio/x-vorbis+ogg=io.elementary.music.desktop +audio/x-vorbis=io.elementary.music.desktop +audio/x-wav=io.elementary.music.desktop +audio/x-wavpack=io.elementary.music.desktop +audio/x-xm=io.elementary.music.desktop +image/bmp=io.elementary.photos-viewer.desktop +image/gif=io.elementary.photos-viewer.desktop +image/jpeg=io.elementary.photos-viewer.desktop +image/jpg=io.elementary.photos-viewer.desktop +image/pjpeg=io.elementary.photos-viewer.desktop +image/png=io.elementary.photos-viewer.desktop +image/tiff=io.elementary.photos-viewer.desktop +image/vnd.djvu=org.gnome.Evince.desktop +image/vnd.rn-realpix=io.elementary.videos.desktop +image/webp=io.elementary.photos-viewer.desktop +image/x-bmp=io.elementary.photos-viewer.desktop +image/x-bzeps=org.gnome.Evince.desktop +image/x-eps=org.gnome.Evince.desktop +image/x-gzeps=org.gnome.Evince.desktop +image/x-png=io.elementary.photos-viewer.desktop +inode/directory=io.elementary.files.desktop +misc/ultravox=io.elementary.videos.desktop +multipart/x-zip=org.gnome.FileRoller.desktop +text/calendar=io.elementary.calendar.desktop +text/html=org.gnome.Epiphany.desktop +text/mathml=io.elementary.code.desktop +text/plain=io.elementary.code.desktop +text/x-chdr=io.elementary.code.desktop +text/x-csrc=io.elementary.code.desktop +text/x-dtd=io.elementary.code.desktop +text/x-java=io.elementary.code.desktop +text/x-python=io.elementary.code.desktop +text/x-sql=io.elementary.code.desktop +text/xml=io.elementary.code.desktop +video/3gpp=io.elementary.videos.desktop +video/dv=io.elementary.videos.desktop +video/fli=io.elementary.videos.desktop +video/flv=io.elementary.videos.desktop +video/mp2t=io.elementary.videos.desktop +video/mp4=io.elementary.videos.desktop +video/mp4v-es=io.elementary.videos.desktop +video/mpeg=io.elementary.videos.desktop +video/msvideo=io.elementary.videos.desktop +video/ogg=io.elementary.videos.desktop +video/quicktime=io.elementary.videos.desktop +video/vivo=io.elementary.videos.desktop +video/vnd.divx=io.elementary.videos.desktop +video/vnd.rn-realvideo=io.elementary.videos.desktop +video/vnd.vivo=io.elementary.videos.desktop +video/webm=io.elementary.videos.desktop +video/x-anim=io.elementary.videos.desktop +video/x-avi=io.elementary.videos.desktop +video/x-flc=io.elementary.videos.desktop +video/x-fli=io.elementary.videos.desktop +video/x-flic=io.elementary.videos.desktop +video/x-flv=io.elementary.videos.desktop +video/x-m4v=io.elementary.videos.desktop +video/x-matroska=io.elementary.videos.desktop +video/x-mpeg=io.elementary.videos.desktop +video/x-ms-asf=io.elementary.videos.desktop +video/x-ms-asx=io.elementary.videos.desktop +video/x-ms-wm=io.elementary.videos.desktop +video/x-ms-wmv=io.elementary.videos.desktop +video/x-ms-wmx=io.elementary.videos.desktop +video/x-ms-wvx=io.elementary.videos.desktop +video/x-msvideo=io.elementary.videos.desktop +video/x-nsv=io.elementary.videos.desktop +video/x-ogm+ogg=io.elementary.videos.desktop +video/x-theora+ogg=io.elementary.videos.desktop +video/x-totem-stream=io.elementary.videos.desktop +x-content/image-dcf=io.elementary.photos.desktop +x-content/image-picturecd=io.elementary.photos.desktop +x-content/video-dvd=io.elementary.videos.desktop +x-content/video-svcd=io.elementary.videos.desktop +x-content/video-vcd=io.elementary.videos.desktop +x-scheme-handler/http=org.gnome.Epiphany.desktop +x-scheme-handler/https=org.gnome.Epiphany.desktop +x-scheme-handler/mailto=org.gnome.Evolution.desktop +x-scheme-handler/trash=io.elementary.files.desktop + diff --git a/nixpkgs/pkgs/desktops/pantheon/desktop/elementary-shortcut-overlay/default.nix b/nixpkgs/pkgs/desktops/pantheon/desktop/elementary-shortcut-overlay/default.nix new file mode 100644 index 000000000000..2cdb2c235078 --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/desktop/elementary-shortcut-overlay/default.nix @@ -0,0 +1,62 @@ +{ stdenv +, fetchFromGitHub +, pantheon +, pkgconfig +, meson +, ninja +, vala +, libxml2 +, desktop-file-utils +, gtk3 +, glib +, granite +, libgee +, elementary-icon-theme +, wrapGAppsHook +}: + +stdenv.mkDerivation rec { + pname = "elementary-shortcut-overlay"; + version = "1.1.1"; + + repoName = "shortcut-overlay"; + + src = fetchFromGitHub { + owner = "elementary"; + repo = repoName; + rev = version; + sha256 = "03wnc3vfnrkm5i7h370n7h2mbcmaxnhynmjs37q63vq6vq7agldb"; + }; + + passthru = { + updateScript = pantheon.updateScript { + attrPath = "pantheon.${pname}"; + }; + }; + + nativeBuildInputs = [ + desktop-file-utils + libxml2 + meson + ninja + pkgconfig + vala + wrapGAppsHook + ]; + + buildInputs = [ + elementary-icon-theme + glib + granite + gtk3 + libgee + ]; + + meta = with stdenv.lib; { + description = "A native OS-wide shortcut overlay to be launched by Gala"; + homepage = "https://github.com/elementary/shortcut-overlay"; + license = licenses.gpl3Plus; + platforms = platforms.linux; + maintainers = pantheon.maintainers; + }; +} diff --git a/nixpkgs/pkgs/desktops/pantheon/desktop/extra-elementary-contracts/default.nix b/nixpkgs/pkgs/desktops/pantheon/desktop/extra-elementary-contracts/default.nix new file mode 100644 index 000000000000..bfeda383ea4e --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/desktop/extra-elementary-contracts/default.nix @@ -0,0 +1,43 @@ +{ stdenv +, substituteAll +, fetchFromGitHub +, file-roller +, gnome-bluetooth +}: + +stdenv.mkDerivation rec { + pname = "extra-elementary-contracts"; + version = "2018-08-21"; + + src = fetchFromGitHub { + owner = "worldofpeace"; + repo = pname; + rev = "a05dfb00695854163805b666185e3e9f31b6eb83"; + sha256 = "0fkaf2w4xg0n9faj74rgzy7gvd3yz112l058b157a3pr39vpci7g"; + }; + + patches = [ + (substituteAll { + src = ./exec-path.patch; + file_roller = file-roller; + gnome_bluetooth = gnome-bluetooth; + }) + ]; + + dontBuild = true; + dontConfigure = true; + + installPhase = '' + mkdir -p $out/share/contractor + + cp *.contract $out/share/contractor/ + ''; + + meta = with stdenv.lib; { + description = "Extra contractor files for elementary"; + homepage = "https://github.com/worldofpeace/extra-elementary-contracts"; + license = licenses.gpl2; + maintainers = with maintainers; [ worldofpeace ]; + platforms = platforms.linux; + }; +} diff --git a/nixpkgs/pkgs/desktops/pantheon/desktop/extra-elementary-contracts/exec-path.patch b/nixpkgs/pkgs/desktops/pantheon/desktop/extra-elementary-contracts/exec-path.patch new file mode 100644 index 000000000000..3b97e306119d --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/desktop/extra-elementary-contracts/exec-path.patch @@ -0,0 +1,34 @@ +diff --git a/file-roller-compress.contract b/file-roller-compress.contract +index 8de5396..de7e939 100644 +--- a/file-roller-compress.contract ++++ b/file-roller-compress.contract +@@ -3,6 +3,6 @@ Name=Compress + Icon=add-files-to-archive + Description=Create a compressed archive with the selected objects + MimeType=!archive;inode/blockdevice;inode/chardevice;inode/fifo;inode/socket; +-Exec=file-roller --add %U ++Exec=@file_roller@/bin/file-roller --add %U + Gettext-Domain=file-roller + +diff --git a/file-roller-extract-here.contract b/file-roller-extract-here.contract +index 184a6f2..345f4e7 100644 +--- a/file-roller-extract-here.contract ++++ b/file-roller-extract-here.contract +@@ -3,5 +3,5 @@ Name=Extract Here + Icon=extract-archive + Description=Extract the contents of the archives in the archive folder and quit the program + MimeType=application/x-7z-compressed;application/x-7z-compressed-tar;application/x-ace;application/x-alz;application/x-ar;application/x-arj;application/x-bzip;application/x-bzip-compressed-tar;application/x-bzip1;application/x-bzip1-compressed-tar;application/x-cabinet;application/x-cbr;application/x-cbz;application/x-cd-image;application/x-compress;application/x-compressed-tar;application/x-cpio;application/x-deb;application/x-ear;application/x-ms-dos-executable;application/x-gtar;application/x-gzip;application/x-gzpostscript;application/x-java-archive;application/x-lha;application/x-lhz;application/x-lrzip;application/x-lrzip-compressed-tar;application/x-lzip;application/x-lzip-compressed-tar;application/x-lzma;application/x-lzma-compressed-tar;application/x-lzop;application/x-lzop-compressed-tar;application/x-ms-wim;application/x-rar;application/x-rar-compressed;application/x-rpm;application/x-rzip;application/x-tar;application/x-tarz;application/x-stuffit;application/x-war;application/x-xz;application/x-xz-compressed-tar;application/x-zip;application/x-zip-compressed;application/x-zoo;application/zip; +-Exec=file-roller --extract-here %U ++Exec=@file_roller@/bin/file-roller --extract-here %U + Gettext-Domain=file-roller +diff --git a/gnome-bluetooth.contract b/gnome-bluetooth.contract +index 745dbbe..8cc0102 100644 +--- a/gnome-bluetooth.contract ++++ b/gnome-bluetooth.contract +@@ -3,5 +3,5 @@ Name=Send files via Bluetooth + Icon=bluetooth + Description=Send files to device... + MimeType=!inode; +-Exec=bluetooth-sendto %F ++Exec=@gnome_bluetooth@/bin/bluetooth-sendto %F + Gettext-Domain=gnome-bluetooth2 diff --git a/nixpkgs/pkgs/desktops/pantheon/desktop/gala/default.nix b/nixpkgs/pkgs/desktops/pantheon/desktop/gala/default.nix new file mode 100644 index 000000000000..9db8baa4e94d --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/desktop/gala/default.nix @@ -0,0 +1,88 @@ +{ stdenv +, fetchFromGitHub +, pantheon +, pkgconfig +, meson +, python3 +, ninja +, vala +, desktop-file-utils +, gettext +, libxml2 +, gtk3 +, granite +, libgee +, bamf +, libcanberra +, libcanberra-gtk3 +, gnome-desktop +, mutter +, clutter +, plank +, elementary-icon-theme +, elementary-settings-daemon +, wrapGAppsHook +}: + +stdenv.mkDerivation rec { + pname = "gala"; + version = "3.3.0"; + + src = fetchFromGitHub { + owner = "elementary"; + repo = pname; + rev = version; + sha256 = "02g6x190lylng8d07pwx2bqcc71rq48f0dxh30mgndfii6k21qgs"; + }; + + passthru = { + updateScript = pantheon.updateScript { + attrPath = "pantheon.${pname}"; + }; + }; + + nativeBuildInputs = [ + desktop-file-utils + gettext + libxml2 + meson + ninja + pkgconfig + python3 + vala + wrapGAppsHook + ]; + + buildInputs = [ + bamf + clutter + elementary-icon-theme + gnome-desktop + elementary-settings-daemon + granite + gtk3 + libcanberra + libcanberra-gtk3 + libgee + mutter + plank + ]; + + patches = [ + ./plugins-dir.patch + ./use-new-notifications-default.patch + ]; + + postPatch = '' + chmod +x build-aux/meson/post_install.py + patchShebangs build-aux/meson/post_install.py + ''; + + meta = with stdenv.lib; { + description = "A window & compositing manager based on mutter and designed by elementary for use with Pantheon"; + homepage = "https://github.com/elementary/gala"; + license = licenses.gpl3Plus; + platforms = platforms.linux; + maintainers = pantheon.maintainers; + }; +} diff --git a/nixpkgs/pkgs/desktops/pantheon/desktop/gala/plugins-dir.patch b/nixpkgs/pkgs/desktops/pantheon/desktop/gala/plugins-dir.patch new file mode 100644 index 000000000000..f08652e9f630 --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/desktop/gala/plugins-dir.patch @@ -0,0 +1,20 @@ +diff --git a/meson.build b/meson.build +index 78113d6..926596c 100644 +--- a/meson.build ++++ b/meson.build +@@ -24,13 +24,14 @@ vapi_dir = meson.current_source_dir() / 'vapi' + + data_dir = join_paths(get_option('prefix'), get_option('datadir')) + plugins_dir = join_paths(get_option('prefix'), get_option('libdir'), meson.project_name(), 'plugins') ++plugins_dir_for_build = join_paths('/run/current-system/sw/lib/', meson.project_name(), 'plugins') + pkgdata_dir = join_paths(get_option('prefix'), get_option('datadir'), meson.project_name()) + pkglib_dir = join_paths(get_option('prefix'), get_option('libdir'), meson.project_name()) + + conf = configuration_data() + conf.set_quoted('DATADIR', data_dir) + conf.set_quoted('PKGDATADIR', pkgdata_dir) +-conf.set_quoted('PLUGINDIR', plugins_dir) ++conf.set_quoted('PLUGINDIR', plugins_dir_for_build) + conf.set_quoted('RESOURCEPATH', '/org/pantheon/desktop/gala') + conf.set_quoted('VERSION', gala_version) + conf.set_quoted('SCHEMA', 'org.pantheon.desktop.gala') diff --git a/nixpkgs/pkgs/desktops/pantheon/desktop/gala/use-new-notifications-default.patch b/nixpkgs/pkgs/desktops/pantheon/desktop/gala/use-new-notifications-default.patch new file mode 100644 index 000000000000..dc256bcff3aa --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/desktop/gala/use-new-notifications-default.patch @@ -0,0 +1,13 @@ +diff --git a/data/gala.gschema.xml b/data/gala.gschema.xml +index 8032583..7f4f03c 100644 +--- a/data/gala.gschema.xml ++++ b/data/gala.gschema.xml +@@ -58,7 +58,7 @@ + <description>If enabled, dropping windows on vertical screen edges maximizes them vertically and resizes them horizontally to cover half of the available area. Dropping windows on the top screen edge maximizes them completely.</description> + </key> + <key type="b" name="use-new-notifications"> +- <default>false</default> ++ <default>true</default> + <summary>If new notifications should be used</summary> + <description>If new notifications UI should be used, requires io.elemenetary.notifications to be present and running</description> + </key> diff --git a/nixpkgs/pkgs/desktops/pantheon/desktop/wingpanel-indicators/applications-menu/default.nix b/nixpkgs/pkgs/desktops/pantheon/desktop/wingpanel-indicators/applications-menu/default.nix new file mode 100644 index 000000000000..7adcdb21d788 --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/desktop/wingpanel-indicators/applications-menu/default.nix @@ -0,0 +1,94 @@ +{ stdenv +, fetchFromGitHub +, pantheon +, substituteAll +, meson +, ninja +, python3 +, pkgconfig +, vala +, granite +, libgee +, gettext +, gtk3 +, appstream +, gnome-menus +, json-glib +, plank +, bamf +, switchboard +, libunity +, libsoup +, wingpanel +, zeitgeist +, bc +}: + +stdenv.mkDerivation rec { + pname = "wingpanel-applications-menu"; + version = "2.6.0"; + + repoName = "applications-menu"; + + src = fetchFromGitHub { + owner = "elementary"; + repo = repoName; + rev = version; + sha256 = "16ki1x6697jmfqajynx2zvwqrpjpshnd08y7vf6g7xc7zwwh38c5"; + }; + + passthru = { + updateScript = pantheon.updateScript { + attrPath = "pantheon.${pname}"; + }; + }; + + nativeBuildInputs = [ + appstream + gettext + meson + ninja + pkgconfig + python3 + vala + ]; + + buildInputs = [ + bamf + gnome-menus + granite + gtk3 + json-glib + libgee + libsoup + libunity + plank + switchboard + wingpanel + zeitgeist + ]; + + mesonFlags = [ + "--sysconfdir=${placeholder "out"}/etc" + ]; + + patches = [ + (substituteAll { + src = ./fix-paths.patch; + bc = "${bc}/bin/bc"; + }) + ]; + + postPatch = '' + chmod +x meson/post_install.py + patchShebangs meson/post_install.py + ''; + + meta = with stdenv.lib; { + description = "Lightweight and stylish app launcher for Pantheon"; + homepage = "https://github.com/elementary/applications-menu"; + license = licenses.gpl3Plus; + platforms = platforms.linux; + maintainers = pantheon.maintainers; + }; +} diff --git a/nixpkgs/pkgs/desktops/pantheon/desktop/wingpanel-indicators/applications-menu/fix-paths.patch b/nixpkgs/pkgs/desktops/pantheon/desktop/wingpanel-indicators/applications-menu/fix-paths.patch new file mode 100644 index 000000000000..25e3891a205a --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/desktop/wingpanel-indicators/applications-menu/fix-paths.patch @@ -0,0 +1,24 @@ +diff --git a/src/synapse-plugins/calculator-plugin.vala b/src/synapse-plugins/calculator-plugin.vala +index 18ca3af..f5d1076 100644 +--- a/src/synapse-plugins/calculator-plugin.vala ++++ b/src/synapse-plugins/calculator-plugin.vala +@@ -44,9 +44,7 @@ namespace Synapse { + _("Calculator"), + _("Calculate basic expressions."), + "accessories-calculator", +- register_plugin, +- Environment.find_program_in_path ("bc") != null, +- _("bc is not installed") ++ register_plugin + ); + } + +@@ -87,7 +85,7 @@ namespace Synapse { + if (matched) { + Pid pid; + int read_fd, write_fd; +- string[] argv = {"bc", "-l"}; ++ string[] argv = {"@bc@", "-l"}; + string? solution = null; + + try { diff --git a/nixpkgs/pkgs/desktops/pantheon/desktop/wingpanel-indicators/bluetooth/default.nix b/nixpkgs/pkgs/desktops/pantheon/desktop/wingpanel-indicators/bluetooth/default.nix new file mode 100644 index 000000000000..979d6af8f0cc --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/desktop/wingpanel-indicators/bluetooth/default.nix @@ -0,0 +1,66 @@ +{ stdenv +, fetchFromGitHub +, pantheon +, pkgconfig +, meson +, python3 +, ninja +, vala +, gtk3 +, glib +, granite +, libnotify +, wingpanel +, libgee +, libxml2 +}: + +stdenv.mkDerivation rec { + pname = "wingpanel-indicator-bluetooth"; + version = "2.1.5"; + + src = fetchFromGitHub { + owner = "elementary"; + repo = pname; + rev = version; + sha256 = "0ylbpai05b300h07b94xcmw9xi7qx13l1q38zlg2n95d3c5264dp"; + }; + + passthru = { + updateScript = pantheon.updateScript { + attrPath = "pantheon.${pname}"; + }; + }; + + nativeBuildInputs = [ + glib # for glib-compile-schemas + libxml2 + meson + ninja + pkgconfig + python3 + vala + ]; + + buildInputs = [ + glib + granite + gtk3 + libgee + libnotify + wingpanel + ]; + + postPatch = '' + chmod +x meson/post_install.py + patchShebangs meson/post_install.py + ''; + + meta = with stdenv.lib; { + description = "Bluetooth Indicator for Wingpanel"; + homepage = "https://github.com/elementary/wingpanel-indicator-bluetooth"; + license = licenses.lgpl21Plus; + platforms = platforms.linux; + maintainers = pantheon.maintainers; + }; +} diff --git a/nixpkgs/pkgs/desktops/pantheon/desktop/wingpanel-indicators/datetime/default.nix b/nixpkgs/pkgs/desktops/pantheon/desktop/wingpanel-indicators/datetime/default.nix new file mode 100644 index 000000000000..ed70687e0502 --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/desktop/wingpanel-indicators/datetime/default.nix @@ -0,0 +1,68 @@ +{ stdenv +, fetchFromGitHub +, pantheon +, pkgconfig +, meson +, python3 +, ninja +, vala +, gtk3 +, granite +, wingpanel +, evolution-data-server +, libical +, libgee +, libxml2 +, libsoup +, elementary-calendar +}: + +stdenv.mkDerivation rec { + pname = "wingpanel-indicator-datetime"; + version = "2.2.2"; + + src = fetchFromGitHub { + owner = "elementary"; + repo = pname; + rev = version; + sha256 = "0a0pqrpmrdd5pch30lizr9righlc7165z7krmnaxrzd0fvfkbr2h"; + }; + + passthru = { + updateScript = pantheon.updateScript { + attrPath = "pantheon.${pname}"; + }; + }; + + nativeBuildInputs = [ + libxml2 + meson + ninja + pkgconfig + python3 + vala + ]; + + buildInputs = [ + evolution-data-server + granite + gtk3 + libgee + libical + libsoup + wingpanel + ]; + + postPatch = '' + chmod +x meson/post_install.py + patchShebangs meson/post_install.py + ''; + + meta = with stdenv.lib; { + description = "Date & Time Indicator for Wingpanel"; + homepage = "https://github.com/elementary/wingpanel-indicator-datetime"; + license = licenses.gpl2Plus; + platforms = platforms.linux; + maintainers = pantheon.maintainers; + }; +} diff --git a/nixpkgs/pkgs/desktops/pantheon/desktop/wingpanel-indicators/keyboard/default.nix b/nixpkgs/pkgs/desktops/pantheon/desktop/wingpanel-indicators/keyboard/default.nix new file mode 100644 index 000000000000..120cf8260a9f --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/desktop/wingpanel-indicators/keyboard/default.nix @@ -0,0 +1,65 @@ +{ stdenv +, fetchFromGitHub +, pantheon +, pkgconfig +, meson +, ninja +, substituteAll +, vala +, gtk3 +, granite +, libxml2 +, wingpanel +, libgee +, xorg +, libgnomekbd +}: + +stdenv.mkDerivation rec { + pname = "wingpanel-indicator-keyboard"; + version = "2.2.1"; + + src = fetchFromGitHub { + owner = "elementary"; + repo = pname; + rev = version; + sha256 = "0q32qc6jh5w0i1ixkl59pys8r3hxmbig8854q7sxi07vlk9g3i7y"; + }; + + passthru = { + updateScript = pantheon.updateScript { + attrPath = "pantheon.${pname}"; + }; + }; + + nativeBuildInputs = [ + meson + ninja + libxml2 + pkgconfig + vala + ]; + + buildInputs = [ + granite + gtk3 + libgee + wingpanel + xorg.xkeyboardconfig + ]; + + patches = [ + (substituteAll { + src = ./fix-paths.patch; + gkbd_keyboard_display = "${libgnomekbd}/bin/gkbd-keyboard-display"; + }) + ]; + + meta = with stdenv.lib; { + description = "Keyboard Indicator for Wingpanel"; + homepage = "https://github.com/elementary/wingpanel-indicator-keyboard"; + license = licenses.lgpl21Plus; + platforms = platforms.linux; + maintainers = pantheon.maintainers; + }; +} diff --git a/nixpkgs/pkgs/desktops/pantheon/desktop/wingpanel-indicators/keyboard/fix-paths.patch b/nixpkgs/pkgs/desktops/pantheon/desktop/wingpanel-indicators/keyboard/fix-paths.patch new file mode 100644 index 000000000000..4fb6dfac86d9 --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/desktop/wingpanel-indicators/keyboard/fix-paths.patch @@ -0,0 +1,13 @@ +diff --git a/src/Indicator.vala b/src/Indicator.vala +index cd7ca49..7813789 100644 +--- a/src/Indicator.vala ++++ b/src/Indicator.vala +@@ -94,7 +94,7 @@ public class Keyboard.Indicator : Wingpanel.Indicator { + private void show_keyboard_map () { + close (); + +- string command = "gkbd-keyboard-display \"--layout=" + layouts.get_current_with_variant () + "\""; ++ string command = "@gkbd_keyboard_display@ \"--layout=" + layouts.get_current_with_variant () + "\""; + + try { + AppInfo.create_from_commandline (command, null, AppInfoCreateFlags.NONE).launch (null, null); diff --git a/nixpkgs/pkgs/desktops/pantheon/desktop/wingpanel-indicators/network/default.nix b/nixpkgs/pkgs/desktops/pantheon/desktop/wingpanel-indicators/network/default.nix new file mode 100644 index 000000000000..0b9d95faf0b1 --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/desktop/wingpanel-indicators/network/default.nix @@ -0,0 +1,56 @@ +{ stdenv +, fetchFromGitHub +, pantheon +, pkgconfig +, meson +, ninja +, vala +, gtk3 +, granite +, networkmanager +, libnma +, wingpanel +, libgee +}: + +stdenv.mkDerivation rec { + pname = "wingpanel-indicator-network"; + version = "2.2.3"; + + src = fetchFromGitHub { + owner = "elementary"; + repo = pname; + rev = version; + sha256 = "17s5fixhwgalgjhrhnb3wh0hdzi17waqcdfw1fx8q4zs78hapjzg"; + }; + + passthru = { + updateScript = pantheon.updateScript { + attrPath = "pantheon.${pname}"; + }; + }; + + nativeBuildInputs = [ + meson + ninja + pkgconfig + vala + ]; + + buildInputs = [ + granite + gtk3 + libgee + networkmanager + libnma + wingpanel + ]; + + meta = with stdenv.lib; { + description = "Network Indicator for Wingpanel"; + homepage = "https://github.com/elementary/wingpanel-indicator-network"; + license = licenses.lgpl21Plus; + platforms = platforms.linux; + maintainers = pantheon.maintainers; + }; +} diff --git a/nixpkgs/pkgs/desktops/pantheon/desktop/wingpanel-indicators/nightlight/default.nix b/nixpkgs/pkgs/desktops/pantheon/desktop/wingpanel-indicators/nightlight/default.nix new file mode 100644 index 000000000000..9ec593afe4a8 --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/desktop/wingpanel-indicators/nightlight/default.nix @@ -0,0 +1,56 @@ +{ stdenv +, fetchFromGitHub +, pantheon +, pkgconfig +, meson +, ninja +, vala +, gtk3 +, granite +, wingpanel +, libgee +, libxml2 +}: + +stdenv.mkDerivation rec { + pname = "wingpanel-indicator-nightlight"; + version = "2.0.3"; + + src = fetchFromGitHub { + owner = "elementary"; + repo = pname; + rev = version; + sha256 = "1ihg5iz69jgcbyzdkcc2fqmr5l34h2d1jjsx7y86ag1jvhljb82r"; + }; + + passthru = { + updateScript = pantheon.updateScript { + attrPath = "pantheon.${pname}"; + }; + }; + + nativeBuildInputs = [ + libxml2 + meson + ninja + pkgconfig + vala + ]; + + buildInputs = [ + granite + gtk3 + libgee + wingpanel + ]; + + PKG_CONFIG_WINGPANEL_2_0_INDICATORSDIR = "${placeholder "out"}/lib/wingpanel"; + + meta = with stdenv.lib; { + description = "Night Light Indicator for Wingpanel"; + homepage = "https://github.com/elementary/wingpanel-indicator-nightlight"; + license = licenses.gpl2Plus; + platforms = platforms.linux; + maintainers = pantheon.maintainers; + }; +} diff --git a/nixpkgs/pkgs/desktops/pantheon/desktop/wingpanel-indicators/notifications/default.nix b/nixpkgs/pkgs/desktops/pantheon/desktop/wingpanel-indicators/notifications/default.nix new file mode 100644 index 000000000000..d8d5f44b82bc --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/desktop/wingpanel-indicators/notifications/default.nix @@ -0,0 +1,64 @@ +{ stdenv +, fetchFromGitHub +, pantheon +, pkgconfig +, fetchpatch +, meson +, ninja +, vala +, gtk3 +, granite +, wingpanel +, libgee +, elementary-notifications +}: + +stdenv.mkDerivation rec { + pname = "wingpanel-indicator-notifications"; + version = "2.1.4"; + + src = fetchFromGitHub { + owner = "elementary"; + repo = pname; + rev = version; + sha256 = "0qp13iaf2956ss4d6w6vwnzdvb7izqmyh6xrdii7j8gxxwjd4lxm"; + }; + + patches = [ + # Fix do not disturb on NixOS + # https://github.com/elementary/wingpanel-indicator-notifications/pull/110 + (fetchpatch { + url = "https://github.com/elementary/wingpanel-indicator-notifications/commit/02b1e226c0262c1535fdf2b4f1daba6be9084f67.patch"; + sha256 = "1a5phygygndr28yx8yp0lyk0wxypc5656dpidw1z8x1yd6xysqhy"; + }) + ]; + + passthru = { + updateScript = pantheon.updateScript { + attrPath = "pantheon.${pname}"; + }; + }; + + nativeBuildInputs = [ + meson + ninja + pkgconfig + vala + ]; + + buildInputs = [ + elementary-notifications + granite + gtk3 + libgee + wingpanel + ]; + + meta = with stdenv.lib; { + description = "Notifications Indicator for Wingpanel"; + homepage = "https://github.com/elementary/wingpanel-indicator-notifications"; + license = licenses.lgpl21Plus; + platforms = platforms.linux; + maintainers = pantheon.maintainers; + }; +} diff --git a/nixpkgs/pkgs/desktops/pantheon/desktop/wingpanel-indicators/power/default.nix b/nixpkgs/pkgs/desktops/pantheon/desktop/wingpanel-indicators/power/default.nix new file mode 100644 index 000000000000..907b31d930a6 --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/desktop/wingpanel-indicators/power/default.nix @@ -0,0 +1,65 @@ +{ stdenv +, fetchFromGitHub +, pantheon +, pkgconfig +, meson +, python3 +, ninja +, vala +, gtk3 +, granite +, bamf +, libgtop +, udev +, wingpanel +, libgee +}: + +stdenv.mkDerivation rec { + pname = "wingpanel-indicator-power"; + version = "2.1.5"; + + src = fetchFromGitHub { + owner = "elementary"; + repo = pname; + rev = version; + sha256 = "19zhgzyivf3y416r5xaajx81h87zdhvrrcsagli00gp1f2169q5m"; + }; + + passthru = { + updateScript = pantheon.updateScript { + attrPath = "pantheon.${pname}"; + }; + }; + + nativeBuildInputs = [ + meson + ninja + pkgconfig + python3 + vala + ]; + + buildInputs = [ + bamf + granite + gtk3 + libgee + libgtop + udev + wingpanel + ]; + + postPatch = '' + chmod +x meson/post_install.py + patchShebangs meson/post_install.py + ''; + + meta = with stdenv.lib; { + description = "Power Indicator for Wingpanel"; + homepage = "https://github.com/elementary/wingpanel-indicator-power"; + license = licenses.gpl2Plus; + platforms = platforms.linux; + maintainers = pantheon.maintainers; + }; +} diff --git a/nixpkgs/pkgs/desktops/pantheon/desktop/wingpanel-indicators/session/default.nix b/nixpkgs/pkgs/desktops/pantheon/desktop/wingpanel-indicators/session/default.nix new file mode 100644 index 000000000000..14c87036ec8c --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/desktop/wingpanel-indicators/session/default.nix @@ -0,0 +1,54 @@ +{ stdenv +, fetchFromGitHub +, pantheon +, pkgconfig +, meson +, ninja +, vala +, gtk3 +, granite +, wingpanel +, accountsservice +, libgee +}: + +stdenv.mkDerivation rec { + pname = "wingpanel-indicator-session"; + version = "2.2.8"; + + src = fetchFromGitHub { + owner = "elementary"; + repo = pname; + rev = version; + sha256 = "02inp8xdxfx8qxjdf2nazw46ahp1gv3skd922ma6kgx5w4wxh5l8"; + }; + + passthru = { + updateScript = pantheon.updateScript { + attrPath = "pantheon.${pname}"; + }; + }; + + nativeBuildInputs = [ + meson + ninja + pkgconfig + vala + ]; + + buildInputs = [ + accountsservice + granite + gtk3 + libgee + wingpanel + ]; + + meta = with stdenv.lib; { + description = "Session Indicator for Wingpanel"; + homepage = "https://github.com/elementary/wingpanel-indicator-session"; + license = licenses.gpl2Plus; + platforms = platforms.linux; + maintainers = pantheon.maintainers; + }; +} diff --git a/nixpkgs/pkgs/desktops/pantheon/desktop/wingpanel-indicators/sound/default.nix b/nixpkgs/pkgs/desktops/pantheon/desktop/wingpanel-indicators/sound/default.nix new file mode 100644 index 000000000000..cd387a9fca48 --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/desktop/wingpanel-indicators/sound/default.nix @@ -0,0 +1,67 @@ +{ stdenv +, fetchFromGitHub +, pantheon +, pkgconfig +, meson +, python3 +, ninja +, vala +, gtk3 +, granite +, wingpanel +, libnotify +, pulseaudio +, libcanberra-gtk3 +, libgee +, libxml2 +}: + +stdenv.mkDerivation rec { + pname = "wingpanel-indicator-sound"; + version = "2.1.5"; + + src = fetchFromGitHub { + owner = "elementary"; + repo = pname; + rev = version; + sha256 = "0nla8qgn5gb1g2gn7c47m9zw42sarjd0030x3h5kckapsbaxknhp"; + }; + + passthru = { + updateScript = pantheon.updateScript { + attrPath = "pantheon.${pname}"; + }; + }; + + nativeBuildInputs = [ + libxml2 + meson + ninja + pkgconfig + python3 + vala + ]; + + buildInputs = [ + granite + gtk3 + libcanberra-gtk3 + libgee + libnotify + pulseaudio + wingpanel + ]; + + postPatch = '' + chmod +x meson/post_install.py + patchShebangs meson/post_install.py + ''; + + meta = with stdenv.lib; { + description = "Sound Indicator for Wingpanel"; + homepage = "https://github.com/elementary/wingpanel-indicator-sound"; + license = licenses.gpl2Plus; + platforms = platforms.linux; + maintainers = pantheon.maintainers; + }; +} diff --git a/nixpkgs/pkgs/desktops/pantheon/desktop/wingpanel/default.nix b/nixpkgs/pkgs/desktops/pantheon/desktop/wingpanel/default.nix new file mode 100644 index 000000000000..64ebee4f13d2 --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/desktop/wingpanel/default.nix @@ -0,0 +1,79 @@ +{ stdenv +, fetchFromGitHub +, pantheon +, wrapGAppsHook +, pkgconfig +, meson +, ninja +, vala +, gala +, gtk3 +, libgee +, granite +, gettext +, mutter +, json-glib +, python3 +, elementary-gtk-theme +, elementary-icon-theme +}: + +stdenv.mkDerivation rec { + pname = "wingpanel"; + version = "2.3.1"; + + src = fetchFromGitHub { + owner = "elementary"; + repo = pname; + rev = version; + sha256 = "0yvn1crylrdc9gq6gc7v4ynb5ii4n0c3bnswfq72p8cs3vvvvv24"; + }; + + passthru = { + updateScript = pantheon.updateScript { + attrPath = "pantheon.${pname}"; + }; + }; + + nativeBuildInputs = [ + gettext + meson + ninja + pkgconfig + python3 + vala + wrapGAppsHook + ]; + + buildInputs = [ + elementary-gtk-theme + elementary-icon-theme + gala + granite + gtk3 + json-glib + libgee + mutter + ]; + + patches = [ + ./indicators.patch + ]; + + postPatch = '' + chmod +x meson/post_install.py + patchShebangs meson/post_install.py + ''; + + meta = with stdenv.lib; { + description = "The extensible top panel for Pantheon"; + longDescription = '' + Wingpanel is an empty container that accepts indicators as extensions, + including the applications menu. + ''; + homepage = "https://github.com/elementary/wingpanel"; + license = licenses.gpl2Plus; + platforms = platforms.linux; + maintainers = pantheon.maintainers; + }; +} diff --git a/nixpkgs/pkgs/desktops/pantheon/desktop/wingpanel/indicators.patch b/nixpkgs/pkgs/desktops/pantheon/desktop/wingpanel/indicators.patch new file mode 100644 index 000000000000..68a5fd532a8d --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/desktop/wingpanel/indicators.patch @@ -0,0 +1,21 @@ +diff --git a/lib/IndicatorManager.vala b/lib/IndicatorManager.vala +index a99a1ec..0ae7799 100644 +--- a/lib/IndicatorManager.vala ++++ b/lib/IndicatorManager.vala +@@ -115,7 +115,15 @@ public class Wingpanel.IndicatorManager : GLib.Object { + } + + /* load indicators */ +- var base_folder = File.new_for_path (Build.INDICATORS_DIR); ++ ++ var indicators_path = Environment.get_variable("WINGPANEL_INDICATORS_PATH"); ++ if (indicators_path != null) { ++ debug ("WINGPANEL_INDICATORS_PATH set to %s", indicators_path); ++ } else { ++ critical ("WINGPANEL_INDICATORS_PATH not set"); ++ } ++ ++ var base_folder = File.new_for_path (indicators_path); + + try { + monitor = base_folder.monitor_directory (FileMonitorFlags.NONE, null); diff --git a/nixpkgs/pkgs/desktops/pantheon/desktop/wingpanel/wrapper.nix b/nixpkgs/pkgs/desktops/pantheon/desktop/wingpanel/wrapper.nix new file mode 100644 index 000000000000..ca887d45dc39 --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/desktop/wingpanel/wrapper.nix @@ -0,0 +1,60 @@ +{ lib +, wrapGAppsHook +, glib +, stdenv +, xorg +, wingpanel +, wingpanelIndicators +, switchboard-with-plugs +, indicators ? null + # Only useful to disable for development testing. +, useDefaultIndicators ? true +}: + +let + selectedIndicators = + if indicators == null then wingpanelIndicators + else indicators ++ (lib.optionals useDefaultIndicators wingpanelIndicators); +in +stdenv.mkDerivation rec { + name = "${wingpanel.name}-with-indicators"; + + src = null; + + paths = [ + wingpanel + ] ++ selectedIndicators; + + passAsFile = [ "paths" ]; + + nativeBuildInputs = [ + glib + wrapGAppsHook + ]; + + buildInputs = lib.forEach selectedIndicators (x: x.buildInputs) + ++ selectedIndicators; + + dontUnpack = true; + dontConfigure = true; + dontBuild = true; + + preferLocalBuild = true; + allowSubstitutes = false; + + installPhase = '' + mkdir -p $out + for i in $(cat $pathsPath); do + ${xorg.lndir}/bin/lndir -silent $i $out + done + ''; + + preFixup = '' + gappsWrapperArgs+=( + --set WINGPANEL_INDICATORS_PATH "$out/lib/wingpanel" + --set SWITCHBOARD_PLUGS_PATH "${switchboard-with-plugs}/lib/switchboard" + ) + ''; + + inherit (wingpanel) meta; +} diff --git a/nixpkgs/pkgs/desktops/pantheon/granite/default.nix b/nixpkgs/pkgs/desktops/pantheon/granite/default.nix new file mode 100644 index 000000000000..ec40e1e8f72d --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/granite/default.nix @@ -0,0 +1,67 @@ +{ stdenv +, fetchFromGitHub +, python3 +, meson +, ninja +, vala +, pkgconfig +, libgee +, pantheon +, gtk3 +, glib +, gettext +, gobject-introspection +, wrapGAppsHook +}: + +stdenv.mkDerivation rec { + pname = "granite"; + version = "5.3.1"; + + src = fetchFromGitHub { + owner = "elementary"; + repo = pname; + rev = version; + sha256 = "12f1n07cjlc7czf642ak6964wl4fsgakc39nnmiba22z5aahfpz9"; + }; + + passthru = { + updateScript = pantheon.updateScript { + attrPath = "pantheon.${pname}"; + }; + }; + + nativeBuildInputs = [ + gettext + gobject-introspection + meson + ninja + pkgconfig + python3 + vala + wrapGAppsHook + ]; + + buildInputs = [ + glib + gtk3 + libgee + ]; + + postPatch = '' + chmod +x meson/post_install.py + patchShebangs meson/post_install.py + ''; + + meta = with stdenv.lib; { + description = "An extension to GTK used by elementary OS"; + longDescription = '' + Granite is a companion library for GTK and GLib. Among other things, it provides complex widgets and convenience functions + designed for use in apps built for elementary OS. + ''; + homepage = "https://github.com/elementary/granite"; + license = licenses.lgpl3Plus; + platforms = platforms.linux; + maintainers = pantheon.maintainers; + }; +} diff --git a/nixpkgs/pkgs/desktops/pantheon/nixpkgs_github_update/.envrc b/nixpkgs/pkgs/desktops/pantheon/nixpkgs_github_update/.envrc new file mode 100644 index 000000000000..1d953f4bd735 --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/nixpkgs_github_update/.envrc @@ -0,0 +1 @@ +use nix diff --git a/nixpkgs/pkgs/desktops/pantheon/nixpkgs_github_update/.formatter.exs b/nixpkgs/pkgs/desktops/pantheon/nixpkgs_github_update/.formatter.exs new file mode 100644 index 000000000000..d2cda26eddc9 --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/nixpkgs_github_update/.formatter.exs @@ -0,0 +1,4 @@ +# Used by "mix format" +[ + inputs: ["{mix,.formatter}.exs", "{config,lib,test}/**/*.{ex,exs}"] +] diff --git a/nixpkgs/pkgs/desktops/pantheon/nixpkgs_github_update/.gitignore b/nixpkgs/pkgs/desktops/pantheon/nixpkgs_github_update/.gitignore new file mode 100644 index 000000000000..877c95f1f63b --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/nixpkgs_github_update/.gitignore @@ -0,0 +1,32 @@ +# The directory Mix will write compiled artifacts to. +_build/ + +# If you run "mix test --cover", coverage assets end up here. +cover/ + +# The directory Mix downloads your dependencies sources to. +deps/ + +# Where third-party dependencies like ExDoc output generated docs. +doc/ + +# Ignore .fetch files in case you like to edit your project deps locally. +.fetch + +# If the VM crashes, it generates a dump, let's ignore it too. +erl_crash.dump + +# Also ignore archive artifacts (built via "mix archive.build"). +*.ez + +# Ignore package tarball (built via "mix hex.build"). +nixpkgs_github_update-*.tar + +# Ignore elixir_ls +.elixir_ls + +# mix escript.build result +nixpkgs_github_update + +# lockfile. only because this is nixpkgs. +mix.lock diff --git a/nixpkgs/pkgs/desktops/pantheon/nixpkgs_github_update/default.nix b/nixpkgs/pkgs/desktops/pantheon/nixpkgs_github_update/default.nix new file mode 100644 index 000000000000..834291222cf0 --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/nixpkgs_github_update/default.nix @@ -0,0 +1,53 @@ +{ lib +, beamPackages +, makeWrapper +, common-updater-scripts +}: + +let + + poison_4 = beamPackages.buildMix { + name = "poison"; + version = "4.0.1"; + + src = beamPackages.fetchHex { + pkg = "poison"; + version = "4.0.1"; + sha256 = "098gdz7xzfmnjzgnnv80nl4h3zl8l9czqqd132vlnfabxbz3d25s"; + }; + }; + + +in + +beamPackages.buildMix { + name = "nixpkgs-github-update"; + version = "0.1.0"; + + src = lib.cleanSource ./.; + + nativeBuildInputs = [ + makeWrapper + ]; + + beamDeps = with beamPackages; [ erlang poison_4 ]; + + buildPhase = '' + export HEX_OFFLINE=1 + export HEX_HOME=`pwd` + export MIX_ENV=prod + export MIX_NO_DEPS=1 + + mix escript.build --no-deps-check + ''; + + installPhase = '' + mkdir -p $out/bin + cp nixpkgs_github_update $out/bin + ''; + + postFixup = '' + wrapProgram $out/bin/nixpkgs_github_update \ + --prefix PATH : "${lib.makeBinPath [ common-updater-scripts ]}" + ''; +} diff --git a/nixpkgs/pkgs/desktops/pantheon/nixpkgs_github_update/lib/nixpkgs_github_update/cli.ex b/nixpkgs/pkgs/desktops/pantheon/nixpkgs_github_update/lib/nixpkgs_github_update/cli.ex new file mode 100644 index 000000000000..e735c4285169 --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/nixpkgs_github_update/lib/nixpkgs_github_update/cli.ex @@ -0,0 +1,71 @@ +defmodule NixpkgsGitHubUpdate.CLI do + @moduledoc """ + Run updates on Nix Expressions that use fetchFromGitHub. + + Arguments the script accepts: + --attribute <attribute_path> + + Example usage: + ``` + ./nixpkgs_github_update --attribute "notes-up" + ``` + """ + alias NixpkgsGitHubUpdate.{Nix, GitHubLatestVersion} + + def help do + IO.puts(""" + Run updates on Nix Expressions that use fetchFromGitHub. + + Arguments the script accepts: + --attribute <attribute_path> + + Example usage: + ./nixpkgs_github_update --attribute "notes-up" + """) + end + + def main([]) do + help() + end + + def main(args) do + opts = parse_args(args) + + attribute = opts[:attribute] + + case Nix.attribute_exists?(attribute) do + true -> update(attribute) + _ -> exit("Requested attribute doesn't exist.") + end + end + + def parse_args(args) do + {options, _, _} = + args + |> OptionParser.parse(strict: [attribute: :string]) + + options + end + + def update(attribute) do + version = + Nix.get_owner_repo(attribute) + |> GitHubLatestVersion.fetch() + |> decode_response() + |> construct_version() + + Nix.update_source_version(attribute, version) + end + + def decode_response({:ok, response}), do: response + + def decode_response({:error, error}) do + IO.puts("Error getting latest release from GitHub: #{error["message"]}") + System.halt(2) + end + + def construct_version(response) do + Map.get(response, "tag_name") + |> String.trim_leading("v") + end +end diff --git a/nixpkgs/pkgs/desktops/pantheon/nixpkgs_github_update/lib/nixpkgs_github_update/github_latest_version.ex b/nixpkgs/pkgs/desktops/pantheon/nixpkgs_github_update/lib/nixpkgs_github_update/github_latest_version.ex new file mode 100644 index 000000000000..5333ad154f5b --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/nixpkgs_github_update/lib/nixpkgs_github_update/github_latest_version.ex @@ -0,0 +1,42 @@ +defmodule NixpkgsGitHubUpdate.GitHubLatestVersion do + @user_agent 'httpc' + + def fetch({owner, repo}) do + endpoint = releases_endpoint(owner, repo) + headers = construct_headers() + + :httpc.request(:get, {endpoint, headers}, [], []) + |> handle_response + end + + def releases_endpoint(owner, repo) do + 'https://api.github.com/repos/#{owner}/#{repo}/releases/latest' + end + + def construct_headers do + headers = %{'User-Agent' => @user_agent} + + put_token(headers, get_token()) + |> Map.to_list + end + + defp get_token do + System.get_env("OAUTH_TOKEN") + end + + defp put_token(headers, token) when token != nil do + Map.put_new(headers, 'Authorization', 'token #{String.to_charlist(token)}') + end + + defp put_token(headers, _), do: headers + + def handle_response({_, {{_httpv, status_code, _}, _headers, response}}) do + { + status_code |> check_for_error(), + response |> Poison.Parser.parse!(%{}) + } + end + + defp check_for_error(200), do: :ok + defp check_for_error(_), do: :error +end diff --git a/nixpkgs/pkgs/desktops/pantheon/nixpkgs_github_update/lib/nixpkgs_github_update/nix.ex b/nixpkgs/pkgs/desktops/pantheon/nixpkgs_github_update/lib/nixpkgs_github_update/nix.ex new file mode 100644 index 000000000000..d5d9af84a6ba --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/nixpkgs_github_update/lib/nixpkgs_github_update/nix.ex @@ -0,0 +1,85 @@ +defmodule NixpkgsGitHubUpdate.Nix do + def executable do + nix = System.find_executable("nix") + + if nix == nil do + raise RuntimeError, message: "missing executable for 'nix'" + end + + nix + end + + def eval!(attribute) do + System.cmd( + executable(), + [ + "eval", + "--json", + attribute + ], + stderr_to_stdout: true + ) + |> handle_eval + end + + defp handle_eval({eval_result, 0}) do + case eval_result do + "" -> eval_result + _ -> Poison.Parser.parse!(eval_result, %{}) + end + end + + defp handle_eval({eval_result, _}) do + raise RuntimeError, message: "Error running nix eval: #{eval_result}" + end + + def attribute_exists?(attribute) do + attr_exist_expression = """ + with import <nixpkgs> {}; + + let + attrSet = pkgs.lib.attrByPath (pkgs.lib.splitString "." "#{attribute}") null pkgs; + in + if attrSet == null then false + else true + """ + + eval!("(#{attr_exist_expression})") + end + + def update_source_version(attribute, version) do + System.cmd("update-source-version", [ + attribute, + version + ]) + end + + def get_url_attr(attribute) do + case attribute_exists?("#{attribute}.src.fetchSubmodules") do + true -> "url" + false -> "urls" + end + end + + def get_owner_repo(attribute) do + url_attr = get_url_attr(attribute) + + eval!("nixpkgs.#{attribute}.src.#{url_attr}") + |> case do + # It's fetchFromGitHub if we got a list + [url | _] -> + URI.parse(url).path + |> String.split("/archive", trim: true) + |> List.first() + |> String.split("/", trim: true) + + # It's fetchgit if we got a plain string + url -> + URI.parse(url).path + |> String.split(".git", trim: true) + |> List.first() + |> String.split("/", trim: true) + end + |> List.to_tuple() + end +end diff --git a/nixpkgs/pkgs/desktops/pantheon/nixpkgs_github_update/mix.exs b/nixpkgs/pkgs/desktops/pantheon/nixpkgs_github_update/mix.exs new file mode 100644 index 000000000000..3498c7066a43 --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/nixpkgs_github_update/mix.exs @@ -0,0 +1,28 @@ +defmodule NixpkgsGitHubUpdate.MixProject do + use Mix.Project + + def project do + [ + app: :nixpkgs_github_update, + version: "0.1.0", + elixir: "~> 1.9", + escript: [main_module: NixpkgsGitHubUpdate.CLI], + start_permanent: Mix.env() == :prod, + deps: deps() + ] + end + + # Run "mix help compile.app" to learn about applications. + def application do + [ + extra_applications: [:logger, :inets, :ssl] + ] + end + + # Run "mix help deps" to learn about dependencies. + defp deps do + [ + {:poison, "~> 4.0.1"} + ] + end +end diff --git a/nixpkgs/pkgs/desktops/pantheon/nixpkgs_github_update/shell.nix b/nixpkgs/pkgs/desktops/pantheon/nixpkgs_github_update/shell.nix new file mode 100644 index 000000000000..0bb4e58a6a12 --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/nixpkgs_github_update/shell.nix @@ -0,0 +1,19 @@ +with import <nixpkgs> {}; + +let + inherit (lib) optional; +in + +mkShell rec { + name = "nixpkgs-github-update-shell"; + + buildInputs = [ + elixir + erlang + common-updater-scripts + ] + ++ optional stdenv.isLinux libnotify # For ExUnit Notifier on Linux. + ++ optional stdenv.isLinux inotify-tools # For file_system on Linux. + ; + +} diff --git a/nixpkgs/pkgs/desktops/pantheon/nixpkgs_github_update/test/nix_test.exs b/nixpkgs/pkgs/desktops/pantheon/nixpkgs_github_update/test/nix_test.exs new file mode 100644 index 000000000000..c5a57698fed6 --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/nixpkgs_github_update/test/nix_test.exs @@ -0,0 +1,49 @@ +defmodule NixTest do + @fake_package "asanotehhhuh" + @fetchgit_package "polybar" + @fetchgithub_package "notes-up" + + use ExUnit.Case + + import NixpkgsGitHubUpdate.Nix + + def check_for_nix(_context) do + try do + executable() + rescue + RuntimeError -> + IO.puts("You need Nix installed to run these tests.") + System.halt(127) + end + + :ok + end + + setup_all :check_for_nix + + describe "evaluation tests" do + test "evaluation handling" do + exists_attr = "nixpkgs.#{@fetchgithub_package}" + + assert is_binary(eval!(exists_attr)) == true + catch_error(eval!(@fake_package) == 1) + end + + # This should always be true or false + test "package exists?" do + assert attribute_exists?(@fetchgithub_package) == true + assert attribute_exists?(@fake_package) == false + end + end + + test "owner repo" do + assert get_url_attr(@fetchgit_package) == "url" + assert get_url_attr(@fetchgithub_package) == "urls" + + assert get_owner_repo(@fetchgit_package) == + {@fetchgit_package, @fetchgit_package} + + assert get_owner_repo(@fetchgithub_package) == + {"Philip-Scott", String.capitalize(@fetchgithub_package)} + end +end diff --git a/nixpkgs/pkgs/desktops/pantheon/nixpkgs_github_update/test/test_helper.exs b/nixpkgs/pkgs/desktops/pantheon/nixpkgs_github_update/test/test_helper.exs new file mode 100644 index 000000000000..869559e709ea --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/nixpkgs_github_update/test/test_helper.exs @@ -0,0 +1 @@ +ExUnit.start() diff --git a/nixpkgs/pkgs/desktops/pantheon/services/contractor/default.nix b/nixpkgs/pkgs/desktops/pantheon/services/contractor/default.nix new file mode 100644 index 000000000000..68532bdd8120 --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/services/contractor/default.nix @@ -0,0 +1,58 @@ +{ stdenv +, fetchFromGitHub +, pantheon +, meson +, python3 +, ninja +, pkgconfig +, vala +, glib +, libgee +, dbus +, glib-networking +, wrapGAppsHook +}: + +stdenv.mkDerivation rec { + pname = "contractor"; + version = "0.3.4"; + + src = fetchFromGitHub { + owner = "elementary"; + repo = pname; + rev = version; + sha256 = "1jzqv7pglhhyrkj1pfk1l624zn1822wyl5dp6gvwn4sk3iqxwwhl"; + }; + + passthru = { + updateScript = pantheon.updateScript { + attrPath = "pantheon.${pname}"; + }; + }; + + nativeBuildInputs = [ + dbus + meson + ninja + pkgconfig + python3 + vala + wrapGAppsHook + ]; + + buildInputs = [ + glib + glib-networking + libgee + ]; + + PKG_CONFIG_DBUS_1_SESSION_BUS_SERVICES_DIR = "${placeholder "out"}/share/dbus-1/services"; + + meta = with stdenv.lib; { + description = "A desktop-wide extension service used by elementary OS"; + homepage = "https://github.com/elementary/contractor"; + license = licenses.gpl3Plus; + platforms = platforms.linux; + maintainers = pantheon.maintainers; + }; +} diff --git a/nixpkgs/pkgs/desktops/pantheon/services/elementary-capnet-assist/default.nix b/nixpkgs/pkgs/desktops/pantheon/services/elementary-capnet-assist/default.nix new file mode 100644 index 000000000000..7f17fb5d5a9d --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/services/elementary-capnet-assist/default.nix @@ -0,0 +1,72 @@ +{ stdenv +, fetchFromGitHub +, pantheon +, pkgconfig +, meson +, python3 +, ninja +, vala +, desktop-file-utils +, gtk3 +, granite +, libgee +, gcr +, webkitgtk +, wrapGAppsHook +}: + +stdenv.mkDerivation rec { + pname = "elementary-capnet-assist"; + version = "2.2.5"; + + repoName = "capnet-assist"; + + src = fetchFromGitHub { + owner = "elementary"; + repo = repoName; + rev = version; + sha256 = "09pl1ynrmqjj844np4ww2i18z7kgx5kmj5ggfp8lqmxgsny7g8m3"; + }; + + passthru = { + updateScript = pantheon.updateScript { + attrPath = "pantheon.${pname}"; + }; + }; + + nativeBuildInputs = [ + desktop-file-utils + meson + ninja + pkgconfig + python3 + vala + wrapGAppsHook + ]; + + buildInputs = [ + gcr + granite + gtk3 + libgee + webkitgtk + ]; + + # Not useful here or in elementary - See: https://github.com/elementary/capnet-assist/issues/3 + patches = [ + ./remove-capnet-test.patch + ]; + + postPatch = '' + chmod +x meson/post_install.py + patchShebangs meson/post_install.py + ''; + + meta = with stdenv.lib; { + description = "A small WebKit app that assists a user with login when a captive portal is detected"; + homepage = "https://github.com/elementary/capnet-assist"; + license = licenses.gpl2Plus; + platforms = platforms.linux; + maintainers = pantheon.maintainers; + }; +} diff --git a/nixpkgs/pkgs/desktops/pantheon/services/elementary-capnet-assist/remove-capnet-test.patch b/nixpkgs/pkgs/desktops/pantheon/services/elementary-capnet-assist/remove-capnet-test.patch new file mode 100644 index 000000000000..a59c74f22b3b --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/services/elementary-capnet-assist/remove-capnet-test.patch @@ -0,0 +1,13 @@ +diff --git a/meson.build b/meson.build +index 46c594b..ba0ea10 100644 +--- a/meson.build ++++ b/meson.build +@@ -33,8 +33,3 @@ meson.add_install_script('meson/post_install.py') + + subdir('data') + subdir('po') +- +-install_data( +- '90captive_portal_test', +- install_dir: join_paths(get_option('sysconfdir'), 'NetworkManager', 'dispatcher.d') +-) diff --git a/nixpkgs/pkgs/desktops/pantheon/services/elementary-dpms-helper/default.nix b/nixpkgs/pkgs/desktops/pantheon/services/elementary-dpms-helper/default.nix new file mode 100644 index 000000000000..7eeb156e0281 --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/services/elementary-dpms-helper/default.nix @@ -0,0 +1,65 @@ +{ stdenv +, fetchFromGitHub +, pantheon +, meson +, ninja +, desktop-file-utils +, glib +, coreutils +, elementary-settings-daemon +, wrapGAppsHook +}: + +stdenv.mkDerivation rec { + pname = "elementary-dpms-helper"; + version = "1.0"; + + repoName = "dpms-helper"; + + src = fetchFromGitHub { + owner = "elementary"; + repo = repoName; + rev = version; + sha256 = "0svfp0qyb6nx4mjl3jx4aqmb4x24m25jpi75mdis3yfr3c1xz9nh"; + }; + + passthru = { + updateScript = pantheon.updateScript { + attrPath = "pantheon.${pname}"; + }; + }; + + nativeBuildInputs = [ + desktop-file-utils + meson + ninja + wrapGAppsHook + ]; + + buildInputs = [ + elementary-settings-daemon + glib + ]; + + preFixup = '' + gappsWrapperArgs+=(--prefix PATH : "${stdenv.lib.makeBinPath [ glib.dev coreutils ]}") + ''; + + postFixup = '' + substituteInPlace $out/etc/xdg/autostart/io.elementary.dpms-helper.desktop \ + --replace "Exec=io.elementary.dpms-helper" "Exec=$out/bin/io.elementary.dpms-helper" + ''; + + # See: https://github.com/elementary/dpms-helper/pull/10 + postInstall = '' + ${glib.dev}/bin/glib-compile-schemas $out/share/glib-2.0/schemas + ''; + + meta = with stdenv.lib; { + description = "Sets DPMS settings found in org.pantheon.dpms"; + homepage = "https://github.com/elementary/dpms-helper"; + license = licenses.gpl2; + platforms = platforms.linux; + maintainers = pantheon.maintainers; + }; +} diff --git a/nixpkgs/pkgs/desktops/pantheon/services/elementary-notifications/default.nix b/nixpkgs/pkgs/desktops/pantheon/services/elementary-notifications/default.nix new file mode 100644 index 000000000000..b90f8c86bf1a --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/services/elementary-notifications/default.nix @@ -0,0 +1,60 @@ +{ stdenv +, fetchFromGitHub +, meson +, ninja +, pkg-config +, vala +, gtk3 +, glib +, granite +, libgee +, libcanberra-gtk3 +, pantheon +, python3 +, wrapGAppsHook +}: + +stdenv.mkDerivation rec { + pname = "elementary-notifications"; + version = "unstable-2020-03-31"; + + repoName = "notifications"; + + src = fetchFromGitHub { + owner = "elementary"; + repo = repoName; + rev = "db552b0c3466ba1099c7737c353b7225ab1896cc"; + sha256 = "1fhf4zx73qka935x5afv6zqsm2l37d1mjbhrbzzzz44dqwa2vp16"; + }; + + nativeBuildInputs = [ + glib # for glib-compile-schemas + meson + ninja + pkg-config + python3 + vala + wrapGAppsHook + ]; + + buildInputs = [ + glib + granite + gtk3 + libcanberra-gtk3 + libgee + ]; + + postPatch = '' + chmod +x meson/post_install.py + patchShebangs meson/post_install.py + ''; + + meta = with stdenv.lib; { + description = "GTK notification server for Pantheon"; + homepage = "https://github.com/elementary/notifications"; + license = licenses.gpl3Plus; + maintainers = pantheon.maintainers; + platforms = platforms.linux; + }; +} diff --git a/nixpkgs/pkgs/desktops/pantheon/services/elementary-settings-daemon/default.nix b/nixpkgs/pkgs/desktops/pantheon/services/elementary-settings-daemon/default.nix new file mode 100644 index 000000000000..e5aa31ca0fb3 --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/services/elementary-settings-daemon/default.nix @@ -0,0 +1,161 @@ +{ stdenv +, substituteAll +, fetchurl +, fetchgit +, meson +, ninja +, pkgconfig +, gnome3 +, perl +, gettext +, gtk3 +, glib +, libnotify +, libgnomekbd +, lcms2 +, libpulseaudio +, alsaLib +, libcanberra-gtk3 +, upower +, colord +, libgweather +, polkit +, gsettings-desktop-schemas +, geoclue2 +, systemd +, libgudev +, libwacom +, libxslt +, libxml2 +, modemmanager +, networkmanager +, gnome-desktop +, geocode-glib +, docbook_xsl +, accountsservice +, wrapGAppsHook +, python3 +, tzdata +, nss +, gcr +, pantheon +}: + +stdenv.mkDerivation rec { + pname = "elementary-settings-daemon"; + version = "3.34.1"; + + repoName = "gnome-settings-daemon"; + + src = fetchgit { + url = "https://git.launchpad.net/~ubuntu-desktop/ubuntu/+source/${repoName}"; + rev = "refs/tags/ubuntu/${version}-1ubuntu2"; + sha256 = "0w0dsbzif7v0gk61rs9g20ldlimbdwb5yvlfdc568yyx5z643jbv"; + }; + + # We've omitted the 53_sync_input_sources_to_accountsservice patch because it breaks the build. + # See: https://gist.github.com/worldofpeace/2f152a20b7c47895bb93239fce1c9f52 + # + # Also omit ubuntu_calculator_snap.patch as that's obviously not useful here. + patches = let patchPath = "${src}/debian/patches"; in [ + (substituteAll { + src = ./fix-paths.patch; + inherit tzdata; + }) + ./global-backlight-helper.patch + "${patchPath}/45_suppress-printer-may-not-be-connected-notification.patch" + #"${patchPath}/53_sync_input_sources_to_accountsservice.patch" + "${patchPath}/64_restore_terminal_keyboard_shortcut_schema.patch" + "${patchPath}/correct_logout_action.patch" + "${patchPath}/ubuntu-lid-close-suspend.patch" + "${patchPath}/revert-gsettings-removals.patch" + "${patchPath}/revert-mediakeys-dbus-interface-drop.patch" + #"${patchPath}/ubuntu_ibus_configs.patch" + # https://github.com/elementary/os-patches/blob/6975d1c254cb6ab913b8e2396877203aea8eaa65/debian/patches/elementary-dpms.patch + ./elementary-dpms.patch + ]; + + nativeBuildInputs = [ + meson + ninja + pkgconfig + perl + gettext + libxml2 + libxslt + docbook_xsl + wrapGAppsHook + python3 + ]; + + buildInputs = [ + accountsservice + alsaLib + colord + gcr + geoclue2 + geocode-glib + glib + gnome-desktop + gsettings-desktop-schemas + gtk3 + lcms2 + libcanberra-gtk3 + libgnomekbd # for org.gnome.libgnomekbd.keyboard schema + libgudev + libgweather + libnotify + libpulseaudio + libwacom + modemmanager + networkmanager + nss + polkit + systemd + upower + ]; + + mesonFlags = [ + "-Dudev_dir=${placeholder "out"}/lib/udev" + ]; + + # Default for release buildtype but passed manually because + # we're using plain + NIX_CFLAGS_COMPILE = "-DG_DISABLE_CAST_CHECKS"; + + postPatch = '' + for f in gnome-settings-daemon/codegen.py plugins/power/gsd-power-constants-update.pl meson_post_install.py; do + chmod +x $f + patchShebangs $f + done + ''; + + postFixup = '' + for autostart in $(grep -rl "OnlyShowIn=GNOME;" $out/etc/xdg/autostart) + do + echo "Patching OnlyShowIn to Pantheon in: $autostart" + sed -i "s,OnlyShowIn=GNOME;,OnlyShowIn=Pantheon;," $autostart + done + + # This breaks lightlocker https://github.com/elementary/session-settings/commit/b0e7a2867608c3a3916f9e4e21a68264a20e44f8 + # TODO: shouldn't be neeed for the 5.1 greeter (awaiting release) + rm $out/etc/xdg/autostart/org.gnome.SettingsDaemon.ScreensaverProxy.desktop + + # So the polkit policy can reference /run/current-system/sw/bin/elementary-settings-daemon/gsd-backlight-helper + mkdir -p $out/bin/elementary-settings-daemon + ln -s $out/libexec/gsd-backlight-helper $out/bin/elementary-settings-daemon/gsd-backlight-helper + ''; + + passthru = { + updateScript = gnome3.updateScript { + packageName = repoName; + attrPath = "pantheon.${pname}"; + }; + }; + + meta = with stdenv.lib; { + license = licenses.gpl2Plus; + maintainers = pantheon.maintainers; + platforms = platforms.linux; + }; +} diff --git a/nixpkgs/pkgs/desktops/pantheon/services/elementary-settings-daemon/elementary-dpms.patch b/nixpkgs/pkgs/desktops/pantheon/services/elementary-settings-daemon/elementary-dpms.patch new file mode 100644 index 000000000000..14d056ceca27 --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/services/elementary-settings-daemon/elementary-dpms.patch @@ -0,0 +1,84 @@ +diff --git a/data/org.gnome.settings-daemon.plugins.power.gschema.xml.in b/data/org.gnome.settings-daemon.plugins.power.gschema.xml.in +index ec805d8a..cf0d6793 100644 +--- a/data/org.gnome.settings-daemon.plugins.power.gschema.xml.in ++++ b/data/org.gnome.settings-daemon.plugins.power.gschema.xml.in +@@ -11,6 +11,11 @@ + <summary>Activation of this plugin</summary> + <description>Whether this plugin would be activated by unity-settings-daemon or not</description> + </key> ++ <key name="manage-dpms-defaults" type="b"> ++ <default>false</default> ++ <summary>Reset X DPMS values</summary> ++ <description>Whether DPMS values will be adjusted by gnome-settings-daemon</description> ++ </key> + <key name="idle-brightness" type="i"> + <default>30</default> + <summary>The brightness of the screen when idle</summary> +diff --git a/plugins/power/gpm-common.c b/plugins/power/gpm-common.c +index a7ca87fb..a56a7cdc 100644 +--- a/plugins/power/gpm-common.c ++++ b/plugins/power/gpm-common.c +@@ -280,6 +280,18 @@ disable_builtin_screensaver (gpointer unused) + return TRUE; + } + ++gboolean ++manage_dpms (void) ++{ ++ GSettings *settings; ++ gboolean manage_dpms_defaults; ++ ++ settings = g_settings_new ("org.gnome.settings-daemon.plugins.power"); ++ manage_dpms_defaults = g_settings_get_boolean (settings, "manage-dpms-defaults"); ++ g_object_unref (settings); ++ return manage_dpms_defaults; ++} ++ + guint + gsd_power_enable_screensaver_watchdog (void) + { +@@ -290,7 +302,7 @@ gsd_power_enable_screensaver_watchdog (void) + * way. The defaults are now applied in Fedora 20 from + * being "0" by default to being "600" by default */ + gdk_x11_display_error_trap_push (gdk_display_get_default ()); +- if (DPMSQueryExtension(GDK_DISPLAY_XDISPLAY (gdk_display_get_default ()), &dummy, &dummy)) ++ if (manage_dpms () && DPMSQueryExtension(GDK_DISPLAY_XDISPLAY (gdk_display_get_default ()), &dummy, &dummy)) + DPMSSetTimeouts (GDK_DISPLAY_XDISPLAY (gdk_display_get_default ()), 0, 0, 0); + gdk_x11_display_error_trap_pop_ignored (gdk_display_get_default ()); + id = g_timeout_add_seconds (XSCREENSAVER_WATCHDOG_TIMEOUT, +diff --git a/plugins/power/gpm-common.h b/plugins/power/gpm-common.h +index 88a8e00e..af106479 100644 +--- a/plugins/power/gpm-common.h ++++ b/plugins/power/gpm-common.h +@@ -34,6 +34,7 @@ gchar *gpm_get_timestring (guint time); + gboolean gsd_power_is_hardware_a_vm (void); + guint gsd_power_enable_screensaver_watchdog (void); + void reset_idletime (void); ++gboolean manage_dpms (void); + + /* Backlight helpers */ + +diff --git a/plugins/power/gsd-power-manager.c b/plugins/power/gsd-power-manager.c +index c500fa38..445496ee 100644 +--- a/plugins/power/gsd-power-manager.c ++++ b/plugins/power/gsd-power-manager.c +@@ -1033,6 +1033,9 @@ backlight_enable (GsdPowerManager *manager) + gboolean ret; + GError *error = NULL; + ++ if (!(manage_dpms ())) ++ return; ++ + iio_proxy_claim_light (manager, TRUE); + ret = gnome_rr_screen_set_dpms_mode (manager->rr_screen, + GNOME_RR_DPMS_ON, +@@ -1052,6 +1055,9 @@ backlight_disable (GsdPowerManager *manager) + gboolean ret; + GError *error = NULL; + ++ if (!(manage_dpms ())) ++ return; ++ + iio_proxy_claim_light (manager, FALSE); + ret = gnome_rr_screen_set_dpms_mode (manager->rr_screen, + GNOME_RR_DPMS_OFF, diff --git a/nixpkgs/pkgs/desktops/pantheon/services/elementary-settings-daemon/fix-paths.patch b/nixpkgs/pkgs/desktops/pantheon/services/elementary-settings-daemon/fix-paths.patch new file mode 100644 index 000000000000..2229302cab7c --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/services/elementary-settings-daemon/fix-paths.patch @@ -0,0 +1,15 @@ +--- a/plugins/datetime/tz.h ++++ b/plugins/datetime/tz.h +@@ -27,11 +27,7 @@ + + #include <glib.h> + +-#ifndef __sun +-# define TZ_DATA_FILE "/usr/share/zoneinfo/zone.tab" +-#else +-# define TZ_DATA_FILE "/usr/share/lib/zoneinfo/tab/zone_sun.tab" +-#endif ++#define TZ_DATA_FILE "@tzdata@/share/zoneinfo/zone.tab" + + typedef struct _TzDB TzDB; + typedef struct _TzLocation TzLocation; diff --git a/nixpkgs/pkgs/desktops/pantheon/services/elementary-settings-daemon/global-backlight-helper.patch b/nixpkgs/pkgs/desktops/pantheon/services/elementary-settings-daemon/global-backlight-helper.patch new file mode 100644 index 000000000000..dcdc83934ba6 --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/services/elementary-settings-daemon/global-backlight-helper.patch @@ -0,0 +1,26 @@ +diff --git a/plugins/power/gsd-backlight.c b/plugins/power/gsd-backlight.c +index d7d10fd2..5619d6ad 100644 +--- a/plugins/power/gsd-backlight.c ++++ b/plugins/power/gsd-backlight.c +@@ -358,7 +358,7 @@ gsd_backlight_run_set_helper (GsdBacklight *backlight, GTask *task) + proc = g_subprocess_new (G_SUBPROCESS_FLAGS_STDOUT_SILENCE, + &error, + "pkexec", +- LIBEXECDIR "/gsd-backlight-helper", ++ "/run/current-system/sw/bin/elementary-settings-daemon/gsd-backlight-helper", + g_udev_device_get_sysfs_path (backlight->udev_device), + data->value_str, NULL); + } else { +diff --git a/plugins/power/org.gnome.settings-daemon.plugins.power.policy.in.in b/plugins/power/org.gnome.settings-daemon.plugins.power.policy.in.in +index f16300f8..79d6bd17 100644 +--- a/plugins/power/org.gnome.settings-daemon.plugins.power.policy.in.in ++++ b/plugins/power/org.gnome.settings-daemon.plugins.power.policy.in.in +@@ -25,7 +25,7 @@ + <allow_inactive>no</allow_inactive> + <allow_active>yes</allow_active> + </defaults> +- <annotate key="org.freedesktop.policykit.exec.path">@libexecdir@/gsd-backlight-helper</annotate> ++ <annotate key="org.freedesktop.policykit.exec.path">/run/current-system/sw/bin/elementary-settings-daemon/gsd-backlight-helper</annotate> + </action> + + </policyconfig> diff --git a/nixpkgs/pkgs/desktops/pantheon/services/pantheon-agent-geoclue2/default.nix b/nixpkgs/pkgs/desktops/pantheon/services/pantheon-agent-geoclue2/default.nix new file mode 100644 index 000000000000..905e2cc9aadf --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/services/pantheon-agent-geoclue2/default.nix @@ -0,0 +1,60 @@ +{ stdenv +, fetchFromGitHub +, pantheon +, pkgconfig +, meson +, ninja +, vala +, glib +, gtk3 +, libgee +, desktop-file-utils +, geoclue2 +, wrapGAppsHook +}: + +stdenv.mkDerivation rec { + pname = "pantheon-agent-geoclue2"; + version = "1.0.4"; + + src = fetchFromGitHub { + owner = "elementary"; + repo = pname; + rev = version; + sha256 = "1lky7pw47d5mdza3bhq0ahdhgdv159ixngdsc1ys6j1kszsfxc1f"; + }; + + passthru = { + updateScript = pantheon.updateScript { + attrPath = "pantheon.${pname}"; + }; + }; + + nativeBuildInputs = [ + desktop-file-utils + meson + ninja + pkgconfig + vala + wrapGAppsHook + ]; + + buildInputs = [ + geoclue2 + gtk3 + libgee + ]; + + # This should be provided by a post_install.py script - See -> https://github.com/elementary/pantheon-agent-geoclue2/pull/21 + postInstall = '' + ${glib.dev}/bin/glib-compile-schemas $out/share/glib-2.0/schemas + ''; + + meta = with stdenv.lib; { + description = "Pantheon Geoclue2 Agent"; + homepage = "https://github.com/elementary/pantheon-agent-geoclue2"; + license = licenses.gpl3Plus; + platforms = platforms.linux; + maintainers = pantheon.maintainers; + }; +} diff --git a/nixpkgs/pkgs/desktops/pantheon/services/pantheon-agent-polkit/default.nix b/nixpkgs/pkgs/desktops/pantheon/services/pantheon-agent-polkit/default.nix new file mode 100644 index 000000000000..3663ff2640dd --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/services/pantheon-agent-polkit/default.nix @@ -0,0 +1,54 @@ +{ stdenv +, fetchFromGitHub +, pantheon +, pkgconfig +, meson +, ninja +, vala +, gtk3 +, libgee +, granite +, polkit +, wrapGAppsHook +}: + +stdenv.mkDerivation rec { + pname = "pantheon-agent-polkit"; + version = "1.0.1"; + + src = fetchFromGitHub { + owner = "elementary"; + repo = pname; + rev = version; + sha256 = "137809mplrsff1isxwbwa2v2y9ixhwzm4khiijm4mmjchi75wpvx"; + }; + + passthru = { + updateScript = pantheon.updateScript { + attrPath = "pantheon.${pname}"; + }; + }; + + nativeBuildInputs = [ + meson + ninja + pkgconfig + vala + wrapGAppsHook + ]; + + buildInputs = [ + granite + gtk3 + libgee + polkit + ]; + + meta = with stdenv.lib; { + description = "Polkit Agent for the Pantheon Desktop"; + homepage = "https://github.com/elementary/pantheon-agent-polkit"; + license = licenses.lgpl21Plus; + platforms = platforms.linux; + maintainers = pantheon.maintainers; + }; +} diff --git a/nixpkgs/pkgs/desktops/pantheon/update.nix b/nixpkgs/pkgs/desktops/pantheon/update.nix new file mode 100644 index 000000000000..1137c5330169 --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/update.nix @@ -0,0 +1,6 @@ +{ nixpkgs-github-update }: + +{ attrPath }: + + +[ "${nixpkgs-github-update}/bin/nixpkgs_github_update" "--attribute" attrPath ] diff --git a/nixpkgs/pkgs/desktops/plasma-5/bluedevil.nix b/nixpkgs/pkgs/desktops/plasma-5/bluedevil.nix new file mode 100644 index 000000000000..b5ff3f5dd05d --- /dev/null +++ b/nixpkgs/pkgs/desktops/plasma-5/bluedevil.nix @@ -0,0 +1,14 @@ +{ + mkDerivation, extra-cmake-modules, shared-mime-info, + bluez-qt, kcoreaddons, kdbusaddons, kded, ki18n, kiconthemes, kio, + knotifications, kwidgetsaddons, kwindowsystem, plasma-framework, qtdeclarative +}: + +mkDerivation { + name = "bluedevil"; + nativeBuildInputs = [ extra-cmake-modules shared-mime-info ]; + buildInputs = [ + bluez-qt ki18n kio kwindowsystem plasma-framework qtdeclarative kcoreaddons + kdbusaddons kded kiconthemes knotifications kwidgetsaddons + ]; +} diff --git a/nixpkgs/pkgs/desktops/plasma-5/breeze-grub.nix b/nixpkgs/pkgs/desktops/plasma-5/breeze-grub.nix new file mode 100644 index 000000000000..eed396b54375 --- /dev/null +++ b/nixpkgs/pkgs/desktops/plasma-5/breeze-grub.nix @@ -0,0 +1,15 @@ +{ + mkDerivation +}: + +mkDerivation { + name = "breeze-grub"; + installPhase = '' + runHook preInstall + + mkdir -p "$out/grub/themes" + mv breeze "$out/grub/themes" + + runHook postInstall + ''; +} diff --git a/nixpkgs/pkgs/desktops/plasma-5/breeze-gtk.nix b/nixpkgs/pkgs/desktops/plasma-5/breeze-gtk.nix new file mode 100644 index 000000000000..1be3fe1c3098 --- /dev/null +++ b/nixpkgs/pkgs/desktops/plasma-5/breeze-gtk.nix @@ -0,0 +1,14 @@ +{ mkDerivation, lib, extra-cmake-modules, gtk2, qtbase, sassc, python3, breeze-qt5 }: + +let inherit (lib) getLib; in + +mkDerivation { + name = "breeze-gtk"; + nativeBuildInputs = [ extra-cmake-modules sassc python3 python3.pkgs.pycairo breeze-qt5 ]; + buildInputs = [ qtbase ]; + postPatch = '' + sed -i cmake/FindGTKEngine.cmake \ + -e "s|\''${KDE_INSTALL_FULL_LIBDIR}|${getLib gtk2}/lib|" + ''; + cmakeFlags = [ "-DWITH_GTK3_VERSION=3.22" ]; +} diff --git a/nixpkgs/pkgs/desktops/plasma-5/breeze-plymouth/default.nix b/nixpkgs/pkgs/desktops/plasma-5/breeze-plymouth/default.nix new file mode 100644 index 000000000000..770e549fc2cd --- /dev/null +++ b/nixpkgs/pkgs/desktops/plasma-5/breeze-plymouth/default.nix @@ -0,0 +1,49 @@ +{ + mkDerivation, + lib, + copyPathsToStore, + extra-cmake-modules, + plymouth, + nixos-icons, + imagemagick, + netpbm, + perl, + logoName ? null, + logoFile ? null, + osName ? null, + osVersion ? null, + topColor ? "black", + bottomColor ? "black" +}: + +let + validColors = [ "black" "cardboard_grey" "charcoal_grey" "icon_blue" "paper_white" "plasma_blue" "neon_blue" "neon_green" ]; + resolvedLogoName = if (logoFile != null && logoName == null) then lib.strings.removeSuffix ".png" (baseNameOf(toString logoFile)) else logoName; +in + assert lib.asserts.assertOneOf "topColor" topColor validColors; + assert lib.asserts.assertOneOf "bottomColor" bottomColor validColors; + + +mkDerivation { + name = "breeze-plymouth"; + nativeBuildInputs = [ extra-cmake-modules ] ++ lib.optionals (logoFile != null) [ imagemagick netpbm perl ]; + buildInputs = [ plymouth ]; + patches = copyPathsToStore (lib.readPathsFromFile ./. ./series); + cmakeFlags = [] + ++ lib.optional (osName != null) "-DDISTRO_NAME=${osName}" + ++ lib.optional (osVersion != null) "-DDISTRO_VERSION=${osVersion}" + ++ lib.optional (logoName != null) "-DDISTRO_LOGO=${logoName}" + ++ lib.optional (topColor != null) "-DBACKGROUND_TOP_COLOR=${topColor}" + ++ lib.optional (bottomColor != null) "-DBACKGROUND_BOTTOM_COLOR=${bottomColor}" + ; + + postPatch = '' + substituteInPlace cmake/FindPlymouth.cmake --subst-var out + '' + lib.optionalString (logoFile != null) '' + cp ${logoFile} breeze/images/${resolvedLogoName}.logo.png + + # conversion for 16bit taken from the breeze-plymouth readme + convert ${logoFile} -alpha Background -background "#000000" -fill "#000000" -flatten tmp.png + pngtopnm tmp.png | pnmquant 16 | pnmtopng > breeze/images/16bit/${resolvedLogoName}.logo.png + ''; +} diff --git a/nixpkgs/pkgs/desktops/plasma-5/breeze-plymouth/install-paths.patch b/nixpkgs/pkgs/desktops/plasma-5/breeze-plymouth/install-paths.patch new file mode 100644 index 000000000000..5d5856d122dd --- /dev/null +++ b/nixpkgs/pkgs/desktops/plasma-5/breeze-plymouth/install-paths.patch @@ -0,0 +1,19 @@ +Index: breeze-plymouth-5.7.3/cmake/FindPlymouth.cmake +=================================================================== +--- breeze-plymouth-5.7.3.orig/cmake/FindPlymouth.cmake ++++ breeze-plymouth-5.7.3/cmake/FindPlymouth.cmake +@@ -24,12 +24,8 @@ + include(FindPkgConfig) + + pkg_check_modules(Plymouth ply-boot-client ply-splash-core) +-exec_program(${PKG_CONFIG_EXECUTABLE} +- ARGS ply-splash-core --variable=pluginsdir +- OUTPUT_VARIABLE Plymouth_PLUGINSDIR) +-exec_program(${PKG_CONFIG_EXECUTABLE} +- ARGS ply-splash-core --variable=themesdir +- OUTPUT_VARIABLE Plymouth_THEMESDIR) ++set(Plymouth_PLUGINSDIR "@out@/lib/plymouth") ++set(Plymouth_THEMESDIR "@out@/share/plymouth/themes") + + find_package_handle_standard_args(Plymouth + FOUND_VAR diff --git a/nixpkgs/pkgs/desktops/plasma-5/breeze-plymouth/series b/nixpkgs/pkgs/desktops/plasma-5/breeze-plymouth/series new file mode 100644 index 000000000000..8920e7ca5189 --- /dev/null +++ b/nixpkgs/pkgs/desktops/plasma-5/breeze-plymouth/series @@ -0,0 +1 @@ +install-paths.patch diff --git a/nixpkgs/pkgs/desktops/plasma-5/breeze-qt5.nix b/nixpkgs/pkgs/desktops/plasma-5/breeze-qt5.nix new file mode 100644 index 000000000000..3f3222e05cdb --- /dev/null +++ b/nixpkgs/pkgs/desktops/plasma-5/breeze-qt5.nix @@ -0,0 +1,20 @@ +{ + mkDerivation, + extra-cmake-modules, + frameworkintegration, kcmutils, kconfigwidgets, kcoreaddons, kdecoration, + kguiaddons, ki18n, kwayland, kwindowsystem, plasma-framework, qtdeclarative, + qtx11extras, fftw +}: + +mkDerivation { + name = "breeze-qt5"; + sname = "breeze"; + nativeBuildInputs = [ extra-cmake-modules ]; + propagatedBuildInputs = [ + frameworkintegration kcmutils kconfigwidgets kcoreaddons kdecoration + kguiaddons ki18n kwayland kwindowsystem plasma-framework qtdeclarative + qtx11extras fftw + ]; + outputs = [ "bin" "dev" "out" ]; + cmakeFlags = [ "-DUSE_Qt4=OFF" ]; +} diff --git a/nixpkgs/pkgs/desktops/plasma-5/default.nix b/nixpkgs/pkgs/desktops/plasma-5/default.nix new file mode 100644 index 000000000000..07b464258149 --- /dev/null +++ b/nixpkgs/pkgs/desktops/plasma-5/default.nix @@ -0,0 +1,143 @@ +/* + +# New packages + +READ THIS FIRST + +This module is for official packages in KDE Plasma 5. All available packages are +listed in `./srcs.nix`, although a few are not yet packaged in Nixpkgs (see +below). + +IF YOUR PACKAGE IS NOT LISTED IN `./srcs.nix`, IT DOES NOT GO HERE. + +Many of the packages released upstream are not yet built in Nixpkgs due to lack +of demand. To add a Nixpkgs build for an upstream package, copy one of the +existing packages here and modify it as necessary. + +# Updates + +1. Update the URL in `./fetch.sh`. +2. Run `./maintainers/scripts/fetch-kde-qt.sh pkgs/desktops/plasma-5` + from the top of the Nixpkgs tree. +3. Use `nox-review wip` to check that everything builds. +4. Commit the changes and open a pull request. + +*/ + +{ + libsForQt5, lib, fetchurl, + gconf, gsettings-desktop-schemas +}: + +let + srcs = import ./srcs.nix { + inherit fetchurl; + mirror = "mirror://kde"; + }; + + mkDerivation = libsForQt5.callPackage ({ mkDerivation }: mkDerivation) {}; + + packages = self: with self; + let + + propagate = out: + let setupHook = { writeScript }: + writeScript "setup-hook" '' + if [[ "''${hookName-}" != postHook ]]; then + postHooks+=("source @dev@/nix-support/setup-hook") + else + # Propagate $${out} output + propagatedUserEnvPkgs+=" @${out}@" + + if [ -z "$outputDev" ]; then + echo "error: \$outputDev is unset!" >&2 + exit 1 + fi + + # Propagate $dev so that this setup hook is propagated + # But only if there is a separate $dev output + if [ "$outputDev" != out ]; then + propagatedBuildInputs+=" @dev@" + fi + fi + ''; + in callPackage setupHook {}; + + propagateBin = propagate "bin"; + + callPackage = self.newScope { + inherit propagate propagateBin; + + mkDerivation = args: + let + inherit (args) name; + sname = args.sname or name; + inherit (srcs.${sname}) src version; + + outputs = args.outputs or [ "out" ]; + hasBin = lib.elem "bin" outputs; + hasDev = lib.elem "dev" outputs; + + defaultSetupHook = if hasBin && hasDev then propagateBin else null; + setupHook = args.setupHook or defaultSetupHook; + + meta = { + license = with lib.licenses; [ + lgpl21Plus lgpl3Plus bsd2 mit gpl2Plus gpl3Plus fdl12 + ]; + platforms = lib.platforms.linux; + maintainers = with lib.maintainers; [ ttuegel nyanloutre ]; + homepage = "http://www.kde.org"; + } // (args.meta or {}); + in + mkDerivation (args // { + name = "${name}-${version}"; + inherit meta outputs setupHook src; + }); + }; + + in { + bluedevil = callPackage ./bluedevil.nix {}; + breeze-gtk = callPackage ./breeze-gtk.nix {}; + breeze-qt5 = callPackage ./breeze-qt5.nix {}; + breeze-grub = callPackage ./breeze-grub.nix {}; + breeze-plymouth = callPackage ./breeze-plymouth {}; + discover = callPackage ./discover.nix {}; + kactivitymanagerd = callPackage ./kactivitymanagerd.nix {}; + kde-cli-tools = callPackage ./kde-cli-tools.nix {}; + kde-gtk-config = callPackage ./kde-gtk-config { inherit gsettings-desktop-schemas; }; + kdecoration = callPackage ./kdecoration.nix {}; + kdeplasma-addons = callPackage ./kdeplasma-addons.nix {}; + kgamma5 = callPackage ./kgamma5.nix {}; + khotkeys = callPackage ./khotkeys.nix {}; + kinfocenter = callPackage ./kinfocenter.nix {}; + kmenuedit = callPackage ./kmenuedit.nix {}; + kscreen = callPackage ./kscreen.nix {}; + kscreenlocker = callPackage ./kscreenlocker.nix {}; + ksshaskpass = callPackage ./ksshaskpass.nix {}; + ksysguard = callPackage ./ksysguard.nix {}; + kwallet-pam = callPackage ./kwallet-pam.nix {}; + kwayland-integration = callPackage ./kwayland-integration.nix {}; + kwin = callPackage ./kwin {}; + kwrited = callPackage ./kwrited.nix {}; + libkscreen = callPackage ./libkscreen {}; + libksysguard = callPackage ./libksysguard {}; + milou = callPackage ./milou.nix {}; + oxygen = callPackage ./oxygen.nix {}; + plasma-browser-integration = callPackage ./plasma-browser-integration.nix {}; + plasma-desktop = callPackage ./plasma-desktop {}; + plasma-integration = callPackage ./plasma-integration {}; + plasma-nm = callPackage ./plasma-nm {}; + plasma-pa = callPackage ./plasma-pa.nix { inherit gconf; }; + plasma-vault = callPackage ./plasma-vault {}; + plasma-workspace = callPackage ./plasma-workspace {}; + plasma-workspace-wallpapers = callPackage ./plasma-workspace-wallpapers.nix {}; + polkit-kde-agent = callPackage ./polkit-kde-agent.nix {}; + powerdevil = callPackage ./powerdevil.nix {}; + sddm-kcm = callPackage ./sddm-kcm.nix {}; + systemsettings = callPackage ./systemsettings.nix {}; + user-manager = callPackage ./user-manager.nix {}; + xdg-desktop-portal-kde = callPackage ./xdg-desktop-portal-kde.nix {}; + }; +in +lib.makeScope libsForQt5.newScope packages diff --git a/nixpkgs/pkgs/desktops/plasma-5/discover.nix b/nixpkgs/pkgs/desktops/plasma-5/discover.nix new file mode 100644 index 000000000000..a859285e0789 --- /dev/null +++ b/nixpkgs/pkgs/desktops/plasma-5/discover.nix @@ -0,0 +1,20 @@ +{ + mkDerivation, + extra-cmake-modules, gettext, kdoctools, python, + appstream-qt, discount, flatpak, fwupd, ostree, packagekit-qt, pcre, utillinux, + qtquickcontrols2, + karchive, kconfig, kcrash, kdbusaddons, kdeclarative, kio, kirigami2, kitemmodels, + knewstuff, kwindowsystem, kxmlgui, plasma-framework +}: + +mkDerivation { + name = "discover"; + nativeBuildInputs = [ extra-cmake-modules gettext kdoctools python ]; + buildInputs = [ + # discount is needed for libmarkdown + appstream-qt discount flatpak fwupd ostree packagekit-qt pcre utillinux + qtquickcontrols2 + karchive kconfig kcrash kdbusaddons kdeclarative kio kirigami2 kitemmodels knewstuff kwindowsystem kxmlgui + plasma-framework + ]; +} diff --git a/nixpkgs/pkgs/desktops/plasma-5/fetch.sh b/nixpkgs/pkgs/desktops/plasma-5/fetch.sh new file mode 100644 index 000000000000..d871ceb28757 --- /dev/null +++ b/nixpkgs/pkgs/desktops/plasma-5/fetch.sh @@ -0,0 +1 @@ +WGET_ARGS=( https://download.kde.org/stable/plasma/5.17.5/ ) diff --git a/nixpkgs/pkgs/desktops/plasma-5/kactivitymanagerd.nix b/nixpkgs/pkgs/desktops/plasma-5/kactivitymanagerd.nix new file mode 100644 index 000000000000..d2870c27e659 --- /dev/null +++ b/nixpkgs/pkgs/desktops/plasma-5/kactivitymanagerd.nix @@ -0,0 +1,15 @@ +{ + mkDerivation, + extra-cmake-modules, + boost, kconfig, kcoreaddons, kdbusaddons, ki18n, kio, kglobalaccel, + kwindowsystem, kxmlgui, kcrash +}: + +mkDerivation { + name = "kactivitymanagerd"; + nativeBuildInputs = [ extra-cmake-modules ]; + buildInputs = [ + boost kconfig kcoreaddons kdbusaddons kglobalaccel ki18n kio kwindowsystem + kxmlgui kcrash + ]; +} diff --git a/nixpkgs/pkgs/desktops/plasma-5/kde-cli-tools.nix b/nixpkgs/pkgs/desktops/plasma-5/kde-cli-tools.nix new file mode 100644 index 000000000000..3364ee2c0632 --- /dev/null +++ b/nixpkgs/pkgs/desktops/plasma-5/kde-cli-tools.nix @@ -0,0 +1,14 @@ +{ + mkDerivation, extra-cmake-modules, kdoctools, + kcmutils, kconfig, kdesu, ki18n, kiconthemes, kinit, kio, kwindowsystem, + qtsvg, qtx11extras, kactivities, plasma-workspace +}: + +mkDerivation { + name = "kde-cli-tools"; + nativeBuildInputs = [ extra-cmake-modules kdoctools ]; + buildInputs = [ + kcmutils kconfig kdesu ki18n kiconthemes kinit kio kwindowsystem qtsvg + qtx11extras kactivities plasma-workspace + ]; +} diff --git a/nixpkgs/pkgs/desktops/plasma-5/kde-gtk-config/default.nix b/nixpkgs/pkgs/desktops/plasma-5/kde-gtk-config/default.nix new file mode 100644 index 000000000000..8cfc947d30bd --- /dev/null +++ b/nixpkgs/pkgs/desktops/plasma-5/kde-gtk-config/default.nix @@ -0,0 +1,25 @@ +{ + mkDerivation, + extra-cmake-modules, wrapGAppsHook, + glib, gtk2, gtk3, karchive, kcmutils, kconfigwidgets, ki18n, kiconthemes, kio, + knewstuff, gsettings-desktop-schemas +}: + +mkDerivation { + name = "kde-gtk-config"; + nativeBuildInputs = [ extra-cmake-modules wrapGAppsHook ]; + dontWrapGApps = true; # There is nothing to wrap + buildInputs = [ + ki18n kio glib gtk2 gtk3 karchive kcmutils kconfigwidgets kiconthemes + knewstuff gsettings-desktop-schemas + ]; + patches = [ ./patches/follow-symlinks.patch ./patches/gsettings.patch ]; + cmakeFlags = [ + "-DGTK2_GLIBCONFIG_INCLUDE_DIR=${glib.out}/lib/glib-2.0/include" + "-DGTK2_GDKCONFIG_INCLUDE_DIR=${gtk2.out}/lib/gtk-2.0/include" + "-DGLIB_SCHEMAS_DIR=${gsettings-desktop-schemas.out}/" + ]; + preConfigure = '' + NIX_CFLAGS_COMPILE+=" -DGSETTINGS_SCHEMAS_PATH=\"$GSETTINGS_SCHEMAS_PATH\"" + ''; +} diff --git a/nixpkgs/pkgs/desktops/plasma-5/kde-gtk-config/patches/follow-symlinks.patch b/nixpkgs/pkgs/desktops/plasma-5/kde-gtk-config/patches/follow-symlinks.patch new file mode 100644 index 000000000000..f30a0a4588fa --- /dev/null +++ b/nixpkgs/pkgs/desktops/plasma-5/kde-gtk-config/patches/follow-symlinks.patch @@ -0,0 +1,49 @@ +From 33b25c2e3c7a002c7f726cd79fc4bab22b1299be Mon Sep 17 00:00:00 2001 +From: Thomas Tuegel <ttuegel@gmail.com> +Date: Tue, 27 Oct 2015 18:07:54 -0500 +Subject: [PATCH] follow symlinks + +--- + src/appearancegtk2.cpp | 2 +- + src/iconthemesmodel.cpp | 2 +- + 2 files changed, 2 insertions(+), 2 deletions(-) + +Index: kde-gtk-config-5.12.4/src/appearancegtk2.cpp +=================================================================== +--- kde-gtk-config-5.12.4.orig/src/appearancegtk2.cpp ++++ kde-gtk-config-5.12.4/src/appearancegtk2.cpp +@@ -69,7 +69,7 @@ QString AppearanceGTK2::themesGtkrcFile( + QStringList themes=installedThemes(); + themes=themes.filter(QRegExp("/"+themeName+"/?$")); + if(themes.size()==1) { +- QDirIterator it(themes.first(), QDirIterator::Subdirectories); ++ QDirIterator it(themes.first(), QDirIterator::Subdirectories | QDirIterator::FollowSymlinks); + while(it.hasNext()) { + it.next(); + if(it.fileName()=="gtkrc") { +Index: kde-gtk-config-5.12.4/src/iconthemesmodel.cpp +=================================================================== +--- kde-gtk-config-5.12.4.orig/src/iconthemesmodel.cpp ++++ kde-gtk-config-5.12.4/src/iconthemesmodel.cpp +@@ -47,7 +47,7 @@ QList<QDir> IconThemesModel::installedTh + + foreach(const QString& dir, dirs) { + QDir userIconsDir(dir); +- QDirIterator it(userIconsDir.path(), QDir::NoDotAndDotDot|QDir::AllDirs|QDir::NoSymLinks); ++ QDirIterator it(userIconsDir.path(), QDir::NoDotAndDotDot|QDir::AllDirs); + while(it.hasNext()) { + QString currentPath = it.next(); + QDir dir(currentPath); +Index: kde-gtk-config-5.12.4/src/cursorthemesmodel.cpp +=================================================================== +--- kde-gtk-config-5.12.4.orig/src/cursorthemesmodel.cpp ++++ kde-gtk-config-5.12.4/src/cursorthemesmodel.cpp +@@ -47,7 +47,7 @@ QList<QDir> CursorThemesModel::installed + + foreach(const QString& dir, dirs) { + QDir userIconsDir(dir); +- QDirIterator it(userIconsDir.path(), QDir::NoDotAndDotDot|QDir::AllDirs|QDir::NoSymLinks); ++ QDirIterator it(userIconsDir.path(), QDir::NoDotAndDotDot|QDir::AllDirs); + while(it.hasNext()) { + QString currentPath = it.next(); + QDir dir(currentPath); diff --git a/nixpkgs/pkgs/desktops/plasma-5/kde-gtk-config/patches/gsettings.patch b/nixpkgs/pkgs/desktops/plasma-5/kde-gtk-config/patches/gsettings.patch new file mode 100644 index 000000000000..69f7bc4e56a0 --- /dev/null +++ b/nixpkgs/pkgs/desktops/plasma-5/kde-gtk-config/patches/gsettings.patch @@ -0,0 +1,21 @@ +diff --git a/src/gtkconfigkcmodule.cpp b/src/gtkconfigkcmodule.cpp +index 7b82d50..96831d8 100644 +--- a/src/gtkconfigkcmodule.cpp ++++ b/src/gtkconfigkcmodule.cpp +@@ -91,6 +91,16 @@ GTKConfigKCModule::GTKConfigKCModule(QWidget* parent, const QVariantList& args ) + iconsProxyModel->sort(0); + ui->cb_icon->setModel(iconsProxyModel); + ui->cb_icon_fallback->setModel(iconsProxyModel); ++ ++ // Add GSETTINGS_SCHEMAS_PATH to the front of XDG_DATA_DIRS. ++ // Normally this would be done by wrapGAppsHook, but this plugin ++ // (shared object) cannot be wrapped. ++ QByteArray xdgdata = qgetenv("XDG_DATA_DIRS"); ++ if (!xdgdata.isEmpty()) { ++ xdgdata.push_front(":"); ++ } ++ xdgdata.push_front(QByteArray(GSETTINGS_SCHEMAS_PATH)); ++ qputenv("XDG_DATA_DIRS", xdgdata); + + m_tempGtk2Preview = QStandardPaths::writableLocation(QStandardPaths::TempLocation)+ "/gtkrc-2.0"; + m_tempGtk3Preview = QStandardPaths::writableLocation(QStandardPaths::TempLocation)+ "/.config/gtk-3.0/settings.ini"; diff --git a/nixpkgs/pkgs/desktops/plasma-5/kde-gtk-config/patches/series b/nixpkgs/pkgs/desktops/plasma-5/kde-gtk-config/patches/series new file mode 100644 index 000000000000..7aad1acf6ac4 --- /dev/null +++ b/nixpkgs/pkgs/desktops/plasma-5/kde-gtk-config/patches/series @@ -0,0 +1,2 @@ +follow-symlinks.patch +gsettings.patch diff --git a/nixpkgs/pkgs/desktops/plasma-5/kdecoration.nix b/nixpkgs/pkgs/desktops/plasma-5/kdecoration.nix new file mode 100644 index 000000000000..3f2e9be462d8 --- /dev/null +++ b/nixpkgs/pkgs/desktops/plasma-5/kdecoration.nix @@ -0,0 +1,12 @@ +{ mkDerivation, extra-cmake-modules, qtbase, ki18n }: + +mkDerivation { + name = "kdecoration"; + meta = { + broken = builtins.compareVersions qtbase.version "5.12.0" < 0; + }; + nativeBuildInputs = [ extra-cmake-modules ]; + buildInputs = [ qtbase ki18n ]; + outputs = [ "out" "dev" ]; + broken = true; +} diff --git a/nixpkgs/pkgs/desktops/plasma-5/kdeplasma-addons.nix b/nixpkgs/pkgs/desktops/plasma-5/kdeplasma-addons.nix new file mode 100644 index 000000000000..398fc356fc93 --- /dev/null +++ b/nixpkgs/pkgs/desktops/plasma-5/kdeplasma-addons.nix @@ -0,0 +1,17 @@ +{ + mkDerivation, + extra-cmake-modules, kdoctools, + kconfig, kconfigwidgets, kcoreaddons, kcmutils, kdelibs4support, kio, + knewstuff, kross, krunner, kservice, ksysguard, kunitconversion, ibus, + plasma-framework, plasma-workspace, qtdeclarative, qtx11extras, kholidays +}: + +mkDerivation { + name = "kdeplasma-addons"; + nativeBuildInputs = [ extra-cmake-modules kdoctools ]; + buildInputs = [ + kconfig kconfigwidgets kcoreaddons kcmutils kdelibs4support kio knewstuff + kross krunner kservice ksysguard kunitconversion ibus plasma-framework + plasma-workspace qtdeclarative qtx11extras kholidays + ]; +} diff --git a/nixpkgs/pkgs/desktops/plasma-5/kgamma5.nix b/nixpkgs/pkgs/desktops/plasma-5/kgamma5.nix new file mode 100644 index 000000000000..ccbf3820b908 --- /dev/null +++ b/nixpkgs/pkgs/desktops/plasma-5/kgamma5.nix @@ -0,0 +1,11 @@ +{ + mkDerivation, + extra-cmake-modules, kdoctools, + kconfig, kconfigwidgets, ki18n, qtx11extras, libXxf86vm +}: + +mkDerivation { + name = "kgamma5"; + nativeBuildInputs = [ extra-cmake-modules kdoctools ]; + buildInputs = [ kconfig kconfigwidgets ki18n qtx11extras libXxf86vm ]; +} diff --git a/nixpkgs/pkgs/desktops/plasma-5/khotkeys.nix b/nixpkgs/pkgs/desktops/plasma-5/khotkeys.nix new file mode 100644 index 000000000000..77763c5e203e --- /dev/null +++ b/nixpkgs/pkgs/desktops/plasma-5/khotkeys.nix @@ -0,0 +1,17 @@ +{ + mkDerivation, + extra-cmake-modules, kdoctools, + kcmutils, kdbusaddons, kdelibs4support, kglobalaccel, ki18n, kio, kxmlgui, + plasma-framework, plasma-workspace, qtx11extras +}: + +mkDerivation { + name = "khotkeys"; + nativeBuildInputs = [ extra-cmake-modules kdoctools ]; + buildInputs = [ + kcmutils kdbusaddons kdelibs4support kglobalaccel ki18n kio kxmlgui + plasma-framework plasma-workspace qtx11extras + ]; + outputs = [ "bin" "dev" "out" ]; + enableParallelBuilding = false; +} diff --git a/nixpkgs/pkgs/desktops/plasma-5/kinfocenter.nix b/nixpkgs/pkgs/desktops/plasma-5/kinfocenter.nix new file mode 100644 index 000000000000..b35493929ff3 --- /dev/null +++ b/nixpkgs/pkgs/desktops/plasma-5/kinfocenter.nix @@ -0,0 +1,17 @@ +{ + mkDerivation, + extra-cmake-modules, kdoctools, + kcmutils, kcompletion, kconfig, kconfigwidgets, kcoreaddons, kdbusaddons, + kdeclarative, kdelibs4support, ki18n, kiconthemes, kio, kpackage, kservice, + kwayland, kwidgetsaddons, kxmlgui, libraw1394, libGLU, pciutils, solid +}: + +mkDerivation { + name = "kinfocenter"; + nativeBuildInputs = [ extra-cmake-modules kdoctools ]; + buildInputs = [ + kcmutils kcompletion kconfig kconfigwidgets kcoreaddons kdbusaddons + kdeclarative kdelibs4support ki18n kiconthemes kio kpackage kservice + kwayland kwidgetsaddons kxmlgui libraw1394 libGLU pciutils solid + ]; +} diff --git a/nixpkgs/pkgs/desktops/plasma-5/kmenuedit.nix b/nixpkgs/pkgs/desktops/plasma-5/kmenuedit.nix new file mode 100644 index 000000000000..016ea940d99b --- /dev/null +++ b/nixpkgs/pkgs/desktops/plasma-5/kmenuedit.nix @@ -0,0 +1,14 @@ +{ + mkDerivation, + extra-cmake-modules, kdoctools, + kdbusaddons, kdelibs4support, khotkeys, ki18n, kiconthemes, kio, kxmlgui, + sonnet +}: + +mkDerivation { + name = "kmenuedit"; + nativeBuildInputs = [ extra-cmake-modules kdoctools ]; + buildInputs = [ + kdbusaddons kdelibs4support khotkeys ki18n kiconthemes kio kxmlgui sonnet + ]; +} diff --git a/nixpkgs/pkgs/desktops/plasma-5/kscreen-417316.patch b/nixpkgs/pkgs/desktops/plasma-5/kscreen-417316.patch new file mode 100644 index 000000000000..92b347e2dbfc --- /dev/null +++ b/nixpkgs/pkgs/desktops/plasma-5/kscreen-417316.patch @@ -0,0 +1,76 @@ +https://phabricator.kde.org/file/data/dyr2qr4wrhxg4eahkgd3/PHID-FILE-7d4og3zr4mk53u6lzkk2/D27442.diff +https://bugs.kde.org/show_bug.cgi?id=417316 + +diff -ru kscreen-5.17.5-orig/kcm/package/contents/ui/main.qml kscreen-5.17.5/kcm/package/contents/ui/main.qml +--- kscreen-5.17.5-orig/kcm/package/contents/ui/main.qml 2020-01-07 16:28:39.000000000 +0100 ++++ kscreen-5.17.5/kcm/package/contents/ui/main.qml 2020-04-03 17:54:26.097809557 +0200 +@@ -24,8 +24,8 @@ + KCM.SimpleKCM { + id: root + +- implicitWidth: units.gridUnit * 30 +- implicitHeight: units.gridUnit * 38 ++ implicitWidth: Kirigami.Units.gridUnit * 32 ++ implicitHeight: Kirigami.Units.gridUnit * 38 + + property int selectedOutput: 0 + +@@ -113,7 +113,7 @@ + id: screen + + Layout.alignment: Qt.AlignHCenter +- Layout.preferredWidth: Math.max(root.width * 0.8, units.gridUnit * 26) ++ Layout.preferredWidth: Math.max(root.width * 0.8, Kirigami.Units.gridUnit * 26) + Layout.topMargin: Kirigami.Units.smallSpacing + Layout.bottomMargin: Kirigami.Units.largeSpacing * 2 + +diff -ru kscreen-5.17.5-orig/kcm/package/contents/ui/Output.qml kscreen-5.17.5/kcm/package/contents/ui/Output.qml +--- kscreen-5.17.5-orig/kcm/package/contents/ui/Output.qml 2020-01-07 16:28:39.000000000 +0100 ++++ kscreen-5.17.5/kcm/package/contents/ui/Output.qml 2020-04-03 17:53:22.491686708 +0200 +@@ -19,6 +19,7 @@ + import QtQuick.Layouts 1.1 + import QtQuick.Controls 2.3 as Controls + import QtGraphicalEffects 1.0 ++import org.kde.kirigami 2.4 as Kirigami + + Rectangle { + id: output +@@ -77,7 +78,7 @@ + + Controls.Label { + Layout.fillWidth: true +- Layout.margins: units.smallSpacing ++ Layout.margins: Kirigami.Units.smallSpacing + + text: model.display + wrapMode: Text.Wrap +@@ -87,7 +88,7 @@ + + Controls.Label { + Layout.fillWidth: true +- Layout.bottomMargin: units.smallSpacing ++ Layout.bottomMargin: Kirigami.Units.smallSpacing + + text: "(" + model.size.width + "x" + model.size.height + ")" + horizontalAlignment: Text.AlignHCenter +diff -ru kscreen-5.17.5-orig/kcm/package/contents/ui/Screen.qml kscreen-5.17.5/kcm/package/contents/ui/Screen.qml +--- kscreen-5.17.5-orig/kcm/package/contents/ui/Screen.qml 2020-01-07 16:28:39.000000000 +0100 ++++ kscreen-5.17.5/kcm/package/contents/ui/Screen.qml 2020-04-03 17:53:22.491686708 +0200 +@@ -45,7 +45,7 @@ + property int xOffset: (width - totalSize.width / relativeFactor) / 2; + property int yOffset: (height - totalSize.height / relativeFactor) / 2; + +- implicitHeight: Math.max(root.height * 0.4, units.gridUnit * 13) ++ implicitHeight: Math.max(root.height * 0.4, Kirigami.Units.gridUnit * 13) + + Component.onCompleted: background.visible = true; + +@@ -54,7 +54,7 @@ + anchors { + bottom: parent.bottom + horizontalCenter: parent.horizontalCenter +- margins: units.smallSpacing ++ margins: Kirigami.Units.smallSpacing + } + spacing: units.smallSpacing + Controls.Button { diff --git a/nixpkgs/pkgs/desktops/plasma-5/kscreen.nix b/nixpkgs/pkgs/desktops/plasma-5/kscreen.nix new file mode 100644 index 000000000000..2f37c4212da4 --- /dev/null +++ b/nixpkgs/pkgs/desktops/plasma-5/kscreen.nix @@ -0,0 +1,18 @@ +{ + mkDerivation, + extra-cmake-modules, + kconfig, kcmutils, kconfigwidgets, kdbusaddons, kglobalaccel, ki18n, + kwidgetsaddons, kxmlgui, libkscreen, qtdeclarative, qtgraphicaleffects, + kwindowsystem, kdeclarative, plasma-framework +}: + +mkDerivation { + name = "kscreen"; + patches = [ ./kscreen-417316.patch ]; + nativeBuildInputs = [ extra-cmake-modules ]; + buildInputs = [ + kconfig kcmutils kconfigwidgets kdbusaddons kglobalaccel ki18n + kwidgetsaddons kxmlgui libkscreen qtdeclarative qtgraphicaleffects + kwindowsystem kdeclarative plasma-framework + ]; +} diff --git a/nixpkgs/pkgs/desktops/plasma-5/kscreenlocker.nix b/nixpkgs/pkgs/desktops/plasma-5/kscreenlocker.nix new file mode 100644 index 000000000000..e748121132c1 --- /dev/null +++ b/nixpkgs/pkgs/desktops/plasma-5/kscreenlocker.nix @@ -0,0 +1,17 @@ +{ + mkDerivation, + extra-cmake-modules, kdoctools, + kcmutils, kcrash, kdeclarative, kdelibs4support, kglobalaccel, kidletime, + kwayland, libXcursor, pam, plasma-framework, qtdeclarative, qtx11extras, + wayland, +}: + +mkDerivation { + name = "kscreenlocker"; + nativeBuildInputs = [ extra-cmake-modules kdoctools ]; + buildInputs = [ + kcmutils kcrash kdeclarative kdelibs4support kglobalaccel kidletime kwayland + libXcursor pam plasma-framework qtdeclarative qtx11extras wayland + ]; + outputs = [ "out" "dev" ]; +} diff --git a/nixpkgs/pkgs/desktops/plasma-5/ksshaskpass.nix b/nixpkgs/pkgs/desktops/plasma-5/ksshaskpass.nix new file mode 100644 index 000000000000..39e260f6c708 --- /dev/null +++ b/nixpkgs/pkgs/desktops/plasma-5/ksshaskpass.nix @@ -0,0 +1,11 @@ +{ + mkDerivation, + extra-cmake-modules, kdoctools, + kcoreaddons, ki18n, kwallet, kwidgetsaddons, qtbase, +}: + +mkDerivation { + name = "ksshaskpass"; + nativeBuildInputs = [ extra-cmake-modules kdoctools ]; + buildInputs = [ kcoreaddons ki18n kwallet kwidgetsaddons qtbase ]; +} diff --git a/nixpkgs/pkgs/desktops/plasma-5/ksysguard.nix b/nixpkgs/pkgs/desktops/plasma-5/ksysguard.nix new file mode 100644 index 000000000000..01e740f74c4b --- /dev/null +++ b/nixpkgs/pkgs/desktops/plasma-5/ksysguard.nix @@ -0,0 +1,16 @@ +{ + mkDerivation, + extra-cmake-modules, kdoctools, + lm_sensors, + kconfig, kcoreaddons, kdelibs4support, ki18n, kiconthemes, kitemviews, + knewstuff, libksysguard +}: + +mkDerivation { + name = "ksysguard"; + nativeBuildInputs = [ extra-cmake-modules kdoctools ]; + buildInputs = [ + kconfig kcoreaddons kitemviews knewstuff kiconthemes libksysguard + kdelibs4support ki18n lm_sensors + ]; +} diff --git a/nixpkgs/pkgs/desktops/plasma-5/kwallet-pam.nix b/nixpkgs/pkgs/desktops/plasma-5/kwallet-pam.nix new file mode 100644 index 000000000000..590c523e9d74 --- /dev/null +++ b/nixpkgs/pkgs/desktops/plasma-5/kwallet-pam.nix @@ -0,0 +1,21 @@ +{ mkDerivation, lib, extra-cmake-modules, pam, socat, libgcrypt, qtbase, kwallet, }: + +mkDerivation { + name = "kwallet-pam"; + nativeBuildInputs = [ extra-cmake-modules ]; + buildInputs = [ pam socat libgcrypt qtbase kwallet ]; + postPatch = '' + sed -i pam_kwallet_init -e "s|socat|${lib.getBin socat}/bin/socat|" + ''; + + # We get a crash when QT_PLUGIN_PATH is more than 1000 characters. + # pam_kwallet_init passes its environment to kwalletd5, but + # wrapQtApps gives our environment a huge QT_PLUGIN_PATH value. We + # are able to unset it here since kwalletd5 will have its own + # QT_PLUGIN_PATH. + postFixup = '' + wrapProgram $out/libexec/pam_kwallet_init --unset QT_PLUGIN_PATH + ''; + + dontWrapQtApps = true; +} diff --git a/nixpkgs/pkgs/desktops/plasma-5/kwayland-integration.nix b/nixpkgs/pkgs/desktops/plasma-5/kwayland-integration.nix new file mode 100644 index 000000000000..667d3ead1768 --- /dev/null +++ b/nixpkgs/pkgs/desktops/plasma-5/kwayland-integration.nix @@ -0,0 +1,11 @@ +{ + mkDerivation, + extra-cmake-modules, + kguiaddons, kidletime, kwayland, kwindowsystem, qtbase, +}: + +mkDerivation { + name = "kwayland-integration"; + nativeBuildInputs = [ extra-cmake-modules ]; + buildInputs = [ kguiaddons kidletime kwindowsystem kwayland qtbase ]; +} diff --git a/nixpkgs/pkgs/desktops/plasma-5/kwin/0001-follow-symlinks.patch b/nixpkgs/pkgs/desktops/plasma-5/kwin/0001-follow-symlinks.patch new file mode 100644 index 000000000000..4861df46ca63 --- /dev/null +++ b/nixpkgs/pkgs/desktops/plasma-5/kwin/0001-follow-symlinks.patch @@ -0,0 +1,25 @@ +From 449896c45b23f50c168d8d2789832024c906ec36 Mon Sep 17 00:00:00 2001 +From: Thomas Tuegel <ttuegel@mailbox.org> +Date: Mon, 27 Jan 2020 05:31:13 -0600 +Subject: [PATCH 1/2] follow symlinks + +--- + plugins/kdecorations/aurorae/src/aurorae.cpp | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/plugins/kdecorations/aurorae/src/aurorae.cpp b/plugins/kdecorations/aurorae/src/aurorae.cpp +index fd723a8..fb95633 100644 +--- a/plugins/kdecorations/aurorae/src/aurorae.cpp ++++ b/plugins/kdecorations/aurorae/src/aurorae.cpp +@@ -211,7 +211,7 @@ void Helper::init() + // so let's try to locate our plugin: + QString pluginPath; + for (const QString &path : m_engine->importPathList()) { +- QDirIterator it(path, QDirIterator::Subdirectories); ++ QDirIterator it(path, QDirIterator::Subdirectories | QDirIterator::FollowSymlinks); + while (it.hasNext()) { + it.next(); + QFileInfo fileInfo = it.fileInfo(); +-- +2.23.1 + diff --git a/nixpkgs/pkgs/desktops/plasma-5/kwin/0002-xwayland.patch b/nixpkgs/pkgs/desktops/plasma-5/kwin/0002-xwayland.patch new file mode 100644 index 000000000000..0505810abe60 --- /dev/null +++ b/nixpkgs/pkgs/desktops/plasma-5/kwin/0002-xwayland.patch @@ -0,0 +1,25 @@ +From d584b075d71c4486710c0bbed6d44038f2ff5075 Mon Sep 17 00:00:00 2001 +From: Thomas Tuegel <ttuegel@mailbox.org> +Date: Mon, 27 Jan 2020 05:31:23 -0600 +Subject: [PATCH 2/2] xwayland + +--- + xwl/xwayland.cpp | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/xwl/xwayland.cpp b/xwl/xwayland.cpp +index 5f17d39..b4b69ba 100644 +--- a/xwl/xwayland.cpp ++++ b/xwl/xwayland.cpp +@@ -145,7 +145,7 @@ void Xwayland::init() + + m_xwaylandProcess = new Process(this); + m_xwaylandProcess->setProcessChannelMode(QProcess::ForwardedErrorChannel); +- m_xwaylandProcess->setProgram(QStringLiteral("Xwayland")); ++ m_xwaylandProcess->setProgram(QLatin1String(NIXPKGS_XWAYLAND)); + QProcessEnvironment env = m_app->processStartupEnvironment(); + env.insert("WAYLAND_SOCKET", QByteArray::number(wlfd)); + env.insert("EGL_PLATFORM", QByteArrayLiteral("DRM")); +-- +2.23.1 + diff --git a/nixpkgs/pkgs/desktops/plasma-5/kwin/default.nix b/nixpkgs/pkgs/desktops/plasma-5/kwin/default.nix new file mode 100644 index 000000000000..0e1709d8245c --- /dev/null +++ b/nixpkgs/pkgs/desktops/plasma-5/kwin/default.nix @@ -0,0 +1,52 @@ +{ + mkDerivation, lib, copyPathsToStore, + extra-cmake-modules, kdoctools, + + epoxy,libICE, libSM, libinput, libxkbcommon, udev, wayland, xcb-util-cursor, + xwayland, + + qtdeclarative, qtmultimedia, qtscript, qtx11extras, + + breeze-qt5, kactivities, kcompletion, kcmutils, kconfig, kconfigwidgets, + kcoreaddons, kcrash, kdeclarative, kdecoration, kglobalaccel, ki18n, + kiconthemes, kidletime, kinit, kio, knewstuff, knotifications, kpackage, + kscreenlocker, kservice, kwayland, kwidgetsaddons, kwindowsystem, kxmlgui, + plasma-framework, qtsensors, libcap, libdrm +}: + +# TODO (ttuegel): investigate qmlplugindump failure +# TODO (ttuegel): investigate gbm dependency + +mkDerivation { + name = "kwin"; + nativeBuildInputs = [ extra-cmake-modules kdoctools ]; + buildInputs = [ + epoxy libICE libSM libinput libxkbcommon udev wayland xcb-util-cursor + xwayland + + qtdeclarative qtmultimedia qtscript qtx11extras qtsensors + + breeze-qt5 kactivities kcmutils kcompletion kconfig kconfigwidgets + kcoreaddons kcrash kdeclarative kdecoration kglobalaccel ki18n kiconthemes + kidletime kinit kio knewstuff knotifications kpackage kscreenlocker kservice + kwayland kwidgetsaddons kwindowsystem kxmlgui plasma-framework + libcap libdrm + ]; + outputs = [ "bin" "dev" "out" ]; + patches = [ + ./0001-follow-symlinks.patch + ./0002-xwayland.patch + ]; + CXXFLAGS = [ + ''-DNIXPKGS_XWAYLAND=\"${lib.getBin xwayland}/bin/Xwayland\"'' + ]; + cmakeFlags = [ "-DCMAKE_SKIP_BUILD_RPATH=OFF" ]; + postInstall = '' + # Some package(s) refer to these service types by the wrong name. + # I would prefer to patch those packages, but I cannot find them! + ln -s ''${!outputBin}/share/kservicetypes5/kwineffect.desktop \ + ''${!outputBin}/share/kservicetypes5/kwin-effect.desktop + ln -s ''${!outputBin}/share/kservicetypes5/kwinscript.desktop \ + ''${!outputBin}/share/kservicetypes5/kwin-script.desktop + ''; +} diff --git a/nixpkgs/pkgs/desktops/plasma-5/kwin/scripts/krohnkite.nix b/nixpkgs/pkgs/desktops/plasma-5/kwin/scripts/krohnkite.nix new file mode 100644 index 000000000000..abd655db3753 --- /dev/null +++ b/nixpkgs/pkgs/desktops/plasma-5/kwin/scripts/krohnkite.nix @@ -0,0 +1,39 @@ +{ lib, mkDerivation, fetchFromGitHub +, kcoreaddons, kwindowsystem, plasma-framework, systemsettings }: + +mkDerivation rec { + pname = "krohnkite"; + version = "0.7"; + + src = fetchFromGitHub { + owner = "esjeon"; + repo = "krohnkite"; + rev = "v${version}"; + sha256 = "0j3rm1w6d545qlmx02xs72b5zsigm48hp7lp7yh30z3cjqm00aap"; + }; + + buildInputs = [ + kcoreaddons kwindowsystem plasma-framework systemsettings + ]; + + dontBuild = true; + + # 1. --global still installs to $HOME/.local/share so we use --packageroot + # 2. plasmapkg2 doesn't copy metadata.desktop into place, so we do that manually + installPhase = '' + runHook preInstall + + plasmapkg2 --type kwinscript --install ${src}/res/ --packageroot $out/share/kwin/scripts + install -Dm644 ${src}/res/metadata.desktop $out/share/kservices5/krohnkite.desktop + + runHook postInstalll + ''; + + meta = with lib; { + description = "A dynamic tiling extension for KWin"; + license = licenses.mit; + maintainers = with maintainers; [ seqizz ]; + inherit (src.meta) homepage; + inherit (kwindowsystem.meta) platforms; + }; +} diff --git a/nixpkgs/pkgs/desktops/plasma-5/kwin/scripts/tiling.nix b/nixpkgs/pkgs/desktops/plasma-5/kwin/scripts/tiling.nix new file mode 100644 index 000000000000..d2c68d3cb7b2 --- /dev/null +++ b/nixpkgs/pkgs/desktops/plasma-5/kwin/scripts/tiling.nix @@ -0,0 +1,44 @@ +{ lib, mkDerivation, fetchFromGitHub +, kcoreaddons, kwindowsystem, plasma-framework, systemsettings }: + +mkDerivation rec { + pname = "kwin-tiling"; + version = "2.2"; + + src = fetchFromGitHub { + owner = "kwin-scripts"; + repo = "kwin-tiling"; + rev = "v${version}"; + sha256 = "1sx64xv7g9yh3j26zxxrbndv79xam9jq0vs00fczgfv2n0m7j7bl"; + }; + + # This is technically not needed, but we might as well clean up + postPatch = '' + rm release.sh + ''; + + buildInputs = [ + kcoreaddons kwindowsystem plasma-framework systemsettings + ]; + + dontBuild = true; + + # 1. --global still installs to $HOME/.local/share so we use --packageroot + # 2. plasmapkg2 doesn't copy metadata.desktop into place, so we do that manually + installPhase = '' + runHook preInstall + + plasmapkg2 --type kwinscript --install ${src} --packageroot $out/share/kwin/scripts + install -Dm644 ${src}/metadata.desktop $out/share/kservices5/kwin-script-tiling.desktop + + runHook postInstalll + ''; + + meta = with lib; { + description = "Tiling script for kwin"; + license = licenses.gpl2; + maintainers = with maintainers; [ peterhoeg ]; + inherit (src.meta) homepage; + inherit (kwindowsystem.meta) platforms; + }; +} diff --git a/nixpkgs/pkgs/desktops/plasma-5/kwrited.nix b/nixpkgs/pkgs/desktops/plasma-5/kwrited.nix new file mode 100644 index 000000000000..f6f6187e9462 --- /dev/null +++ b/nixpkgs/pkgs/desktops/plasma-5/kwrited.nix @@ -0,0 +1,11 @@ +{ + mkDerivation, + extra-cmake-modules, + kcoreaddons, kdbusaddons, ki18n, knotifications, kpty, qtbase, +}: + +mkDerivation { + name = "kwrited"; + nativeBuildInputs = [ extra-cmake-modules ]; + buildInputs = [ kcoreaddons kdbusaddons ki18n knotifications kpty qtbase ]; +} diff --git a/nixpkgs/pkgs/desktops/plasma-5/libkscreen/default.nix b/nixpkgs/pkgs/desktops/plasma-5/libkscreen/default.nix new file mode 100644 index 000000000000..cf9d70844014 --- /dev/null +++ b/nixpkgs/pkgs/desktops/plasma-5/libkscreen/default.nix @@ -0,0 +1,20 @@ +{ + mkDerivation, lib, copyPathsToStore, propagate, + extra-cmake-modules, + kwayland, libXrandr, qtbase, qtx11extras +}: + +mkDerivation { + name = "libkscreen"; + meta = { + broken = builtins.compareVersions qtbase.version "5.12.0" < 0; + }; + nativeBuildInputs = [ extra-cmake-modules ]; + buildInputs = [ kwayland libXrandr qtx11extras ]; + outputs = [ "out" "dev" ]; + patches = copyPathsToStore (lib.readPathsFromFile ./. ./series); + preConfigure = '' + NIX_CFLAGS_COMPILE+=" -DNIXPKGS_LIBKSCREEN_BACKENDS=\"''${!outputBin}/$qtPluginPrefix/kf5/kscreen\"" + ''; + setupHook = propagate "out"; +} diff --git a/nixpkgs/pkgs/desktops/plasma-5/libkscreen/libkscreen-backends-path.patch b/nixpkgs/pkgs/desktops/plasma-5/libkscreen/libkscreen-backends-path.patch new file mode 100644 index 000000000000..48be0d037df5 --- /dev/null +++ b/nixpkgs/pkgs/desktops/plasma-5/libkscreen/libkscreen-backends-path.patch @@ -0,0 +1,27 @@ +Index: libkscreen-5.9.4/src/backendmanager.cpp +=================================================================== +--- libkscreen-5.9.4.orig/src/backendmanager.cpp ++++ libkscreen-5.9.4/src/backendmanager.cpp +@@ -178,17 +178,11 @@ QFileInfo BackendManager::preferredBacke + QFileInfoList BackendManager::listBackends() + { + // Compile a list of installed backends first +- const QString backendFilter = QStringLiteral("KSC_*"); +- const QStringList paths = QCoreApplication::libraryPaths(); +- QFileInfoList finfos; +- for (const QString &path : paths) { +- const QDir dir(path + QLatin1String("/kf5/kscreen/"), +- backendFilter, +- QDir::SortFlags(QDir::QDir::Name), +- QDir::NoDotAndDotDot | QDir::Files); +- finfos.append(dir.entryInfoList()); +- } +- return finfos; ++ const QDir dir(QLatin1String(NIXPKGS_LIBKSCREEN_BACKENDS), ++ QStringLiteral("KSC_*"), ++ QDir::SortFlags(QDir::QDir::Name), ++ QDir::NoDotAndDotDot | QDir::Files); ++ return dir.entryInfoList(); + } + + KScreen::AbstractBackend *BackendManager::loadBackendPlugin(QPluginLoader *loader, const QString &name, diff --git a/nixpkgs/pkgs/desktops/plasma-5/libkscreen/series b/nixpkgs/pkgs/desktops/plasma-5/libkscreen/series new file mode 100644 index 000000000000..86bf4ab10602 --- /dev/null +++ b/nixpkgs/pkgs/desktops/plasma-5/libkscreen/series @@ -0,0 +1 @@ +libkscreen-backends-path.patch diff --git a/nixpkgs/pkgs/desktops/plasma-5/libksysguard/0001-qdiriterator-follow-symlinks.patch b/nixpkgs/pkgs/desktops/plasma-5/libksysguard/0001-qdiriterator-follow-symlinks.patch new file mode 100644 index 000000000000..fbbb11ae7556 --- /dev/null +++ b/nixpkgs/pkgs/desktops/plasma-5/libksysguard/0001-qdiriterator-follow-symlinks.patch @@ -0,0 +1,25 @@ +From 46164a50de4102d02ae9d1d480acdd4b12303db8 Mon Sep 17 00:00:00 2001 +From: Thomas Tuegel <ttuegel@gmail.com> +Date: Wed, 14 Oct 2015 07:07:22 -0500 +Subject: [PATCH] qdiriterator follow symlinks + +--- + processui/scripting.cpp | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/processui/scripting.cpp b/processui/scripting.cpp +index efed8ff..841761a 100644 +--- a/processui/scripting.cpp ++++ b/processui/scripting.cpp +@@ -167,7 +167,7 @@ void Scripting::loadContextMenu() { + QStringList scripts; + const QStringList dirs = QStandardPaths::locateAll(QStandardPaths::GenericDataLocation, "ksysguard/scripts/", QStandardPaths::LocateDirectory); + Q_FOREACH (const QString& dir, dirs) { +- QDirIterator it(dir, QStringList() << QStringLiteral("*.desktop"), QDir::NoFilter, QDirIterator::Subdirectories); ++ QDirIterator it(dir, QStringList() << QStringLiteral("*.desktop"), QDir::NoFilter, QDirIterator::Subdirectories | QDirIterator::FollowSymlinks); + while (it.hasNext()) { + scripts.append(it.next()); + } +-- +2.5.2 + diff --git a/nixpkgs/pkgs/desktops/plasma-5/libksysguard/default.nix b/nixpkgs/pkgs/desktops/plasma-5/libksysguard/default.nix new file mode 100644 index 000000000000..96d113e11fb6 --- /dev/null +++ b/nixpkgs/pkgs/desktops/plasma-5/libksysguard/default.nix @@ -0,0 +1,21 @@ +{ + mkDerivation, + extra-cmake-modules, + kauth, kcompletion, kconfig, kconfigwidgets, kcoreaddons, ki18n, kiconthemes, + kservice, kwidgetsaddons, kwindowsystem, plasma-framework, qtscript, qtwebengine, + qtx11extras +}: + +mkDerivation { + name = "libksysguard"; + patches = [ + ./0001-qdiriterator-follow-symlinks.patch + ]; + nativeBuildInputs = [ extra-cmake-modules ]; + buildInputs = [ + kauth kconfig ki18n kiconthemes kwindowsystem kcompletion kconfigwidgets + kcoreaddons kservice kwidgetsaddons plasma-framework qtscript qtx11extras + qtwebengine + ]; + outputs = [ "bin" "dev" "out" ]; +} diff --git a/nixpkgs/pkgs/desktops/plasma-5/milou.nix b/nixpkgs/pkgs/desktops/plasma-5/milou.nix new file mode 100644 index 000000000000..790979d664fc --- /dev/null +++ b/nixpkgs/pkgs/desktops/plasma-5/milou.nix @@ -0,0 +1,15 @@ +{ + mkDerivation, + extra-cmake-modules, + kcoreaddons, kdeclarative, ki18n, kitemmodels, krunner, kservice, + plasma-framework, qtscript, qtdeclarative +}: + +mkDerivation { + name = "milou"; + nativeBuildInputs = [ extra-cmake-modules ]; + buildInputs = [ + kcoreaddons kdeclarative ki18n kitemmodels krunner kservice plasma-framework + qtdeclarative qtscript + ]; +} diff --git a/nixpkgs/pkgs/desktops/plasma-5/oxygen.nix b/nixpkgs/pkgs/desktops/plasma-5/oxygen.nix new file mode 100644 index 000000000000..1b1f34f17b53 --- /dev/null +++ b/nixpkgs/pkgs/desktops/plasma-5/oxygen.nix @@ -0,0 +1,18 @@ +{ + mkDerivation, + extra-cmake-modules, + frameworkintegration, kcmutils, kcompletion, kconfig, kdecoration, kguiaddons, + ki18n, kwidgetsaddons, kservice, kwayland, kwindowsystem, qtdeclarative, + qtx11extras +}: + +mkDerivation { + name = "oxygen"; + nativeBuildInputs = [ extra-cmake-modules ]; + propagatedBuildInputs = [ + frameworkintegration kcmutils kcompletion kconfig kdecoration kguiaddons + ki18n kservice kwayland kwidgetsaddons kwindowsystem qtdeclarative + qtx11extras + ]; + outputs = [ "bin" "dev" "out" ]; +} diff --git a/nixpkgs/pkgs/desktops/plasma-5/plasma-browser-integration.nix b/nixpkgs/pkgs/desktops/plasma-5/plasma-browser-integration.nix new file mode 100644 index 000000000000..f6855cb34da1 --- /dev/null +++ b/nixpkgs/pkgs/desktops/plasma-5/plasma-browser-integration.nix @@ -0,0 +1,18 @@ +{ + mkDerivation, + extra-cmake-modules, + qtbase, + kfilemetadata, kio, ki18n, kconfig , kdbusaddons, knotifications, kpurpose, + krunner, kwindowsystem, kactivities, +}: + +mkDerivation { + name = "plasma-browser-integration"; + nativeBuildInputs = [ + extra-cmake-modules + ]; + buildInputs = [ + qtbase kfilemetadata kio ki18n kconfig kdbusaddons knotifications kpurpose + krunner kwindowsystem kactivities + ]; +} diff --git a/nixpkgs/pkgs/desktops/plasma-5/plasma-desktop/default.nix b/nixpkgs/pkgs/desktops/plasma-5/plasma-desktop/default.nix new file mode 100644 index 000000000000..4183b38ba493 --- /dev/null +++ b/nixpkgs/pkgs/desktops/plasma-5/plasma-desktop/default.nix @@ -0,0 +1,51 @@ +{ + mkDerivation, lib, copyPathsToStore, + extra-cmake-modules, kdoctools, + + boost, fontconfig, ibus, libXcursor, libXft, libcanberra_kde, libpulseaudio, + libxkbfile, xf86inputevdev, xf86inputsynaptics, xinput, xkeyboard_config, + xorgserver, utillinux, + + qtdeclarative, qtquickcontrols, qtquickcontrols2, qtsvg, qtx11extras, + + attica, baloo, kactivities, kactivities-stats, kauth, kcmutils, kdbusaddons, + kdeclarative, kded, kdelibs4support, kemoticons, kglobalaccel, ki18n, + kitemmodels, knewstuff, knotifications, knotifyconfig, kpeople, krunner, + kscreenlocker, ksysguard, kwallet, kwin, phonon, plasma-framework, + plasma-workspace, xf86inputlibinput +}: + +mkDerivation { + name = "plasma-desktop"; + nativeBuildInputs = [ extra-cmake-modules kdoctools ]; + buildInputs = [ + boost fontconfig ibus libcanberra_kde libpulseaudio libXcursor libXft + libxkbfile phonon xf86inputevdev xf86inputsynaptics xinput xkeyboard_config + + qtdeclarative qtquickcontrols qtquickcontrols2 qtsvg qtx11extras + + attica baloo kactivities kactivities-stats kauth kcmutils kdbusaddons + kdeclarative kded kdelibs4support kemoticons kglobalaccel ki18n kitemmodels + knewstuff knotifications knotifyconfig kpeople krunner kscreenlocker + ksysguard kwallet kwin plasma-framework plasma-workspace + ]; + + patches = copyPathsToStore (lib.readPathsFromFile ./. ./series); + postPatch = '' + sed '1i#include <cmath>' -i kcms/touchpad/src/backends/x11/synapticstouchpad.cpp + ''; + CXXFLAGS = [ + "-I${lib.getDev xorgserver}/include/xorg" + ''-DNIXPKGS_HWCLOCK=\"${lib.getBin utillinux}/sbin/hwclock\"'' + ]; + cmakeFlags = [ + "-DEvdev_INCLUDE_DIRS=${lib.getDev xf86inputevdev}/include/xorg" + "-DSynaptics_INCLUDE_DIRS=${lib.getDev xf86inputsynaptics}/include/xorg" + "-DXORGLIBINPUT_INCLUDE_DIRS=${lib.getDev xf86inputlibinput}/include/xorg" + ]; + postInstall = '' + # Display ~/Desktop contents on the desktop by default. + sed -i "''${!outputBin}/share/plasma/shells/org.kde.plasma.desktop/contents/defaults" \ + -e 's/Containment=org.kde.desktopcontainment/Containment=org.kde.plasma.folder/' + ''; +} diff --git a/nixpkgs/pkgs/desktops/plasma-5/plasma-desktop/hwclock-path.patch b/nixpkgs/pkgs/desktops/plasma-5/plasma-desktop/hwclock-path.patch new file mode 100644 index 000000000000..a46212af10fb --- /dev/null +++ b/nixpkgs/pkgs/desktops/plasma-5/plasma-desktop/hwclock-path.patch @@ -0,0 +1,24 @@ +Index: plasma-desktop-5.8.5/kcms/dateandtime/helper.cpp +=================================================================== +--- plasma-desktop-5.8.5.orig/kcms/dateandtime/helper.cpp ++++ plasma-desktop-5.8.5/kcms/dateandtime/helper.cpp +@@ -48,10 +48,6 @@ + #include <sys/stat.h> + #endif + +-// We cannot rely on the $PATH environment variable, because D-Bus activation +-// clears it. So we have to use a reasonable default. +-static const QString exePath = QStringLiteral("/usr/sbin:/usr/bin:/sbin:/bin"); +- + int ClockHelper::ntp( const QStringList& ntpServers, bool ntpEnabled ) + { + int ret = 0; +@@ -227,7 +223,7 @@ int ClockHelper::tzreset() + + void ClockHelper::toHwclock() + { +- QString hwclock = KStandardDirs::findExe(QStringLiteral("hwclock"), exePath); ++ QString hwclock = QLatin1String(NIXPKGS_HWCLOCK); + if (!hwclock.isEmpty()) { + KProcess::execute(hwclock, QStringList() << QStringLiteral("--systohc")); + } diff --git a/nixpkgs/pkgs/desktops/plasma-5/plasma-desktop/series b/nixpkgs/pkgs/desktops/plasma-5/plasma-desktop/series new file mode 100644 index 000000000000..26517ba93565 --- /dev/null +++ b/nixpkgs/pkgs/desktops/plasma-5/plasma-desktop/series @@ -0,0 +1,2 @@ +hwclock-path.patch +tzdir.patch diff --git a/nixpkgs/pkgs/desktops/plasma-5/plasma-desktop/tzdir.patch b/nixpkgs/pkgs/desktops/plasma-5/plasma-desktop/tzdir.patch new file mode 100644 index 000000000000..97504b330fed --- /dev/null +++ b/nixpkgs/pkgs/desktops/plasma-5/plasma-desktop/tzdir.patch @@ -0,0 +1,18 @@ +Index: plasma-desktop-5.8.5/kcms/dateandtime/helper.cpp +=================================================================== +--- plasma-desktop-5.8.5.orig/kcms/dateandtime/helper.cpp ++++ plasma-desktop-5.8.5/kcms/dateandtime/helper.cpp +@@ -181,7 +181,12 @@ int ClockHelper::tz( const QString& sele + + val = selectedzone; + #else +- QString tz = "/usr/share/zoneinfo/" + selectedzone; ++ QString tzdir = QString::fromLocal8Bit(qgetenv("TZDIR")); ++ QString tz = tzdir + "/" + selectedzone; ++ if (tzdir.isEmpty()) { ++ // Standard Linux path ++ tz = "/usr/share/zoneinfo/" + selectedzone; ++ } + + if (QFile::exists(tz)) { // make sure the new TZ really exists + QFile::remove(QStringLiteral("/etc/localtime")); diff --git a/nixpkgs/pkgs/desktops/plasma-5/plasma-integration/default.nix b/nixpkgs/pkgs/desktops/plasma-5/plasma-integration/default.nix new file mode 100644 index 000000000000..f69644287624 --- /dev/null +++ b/nixpkgs/pkgs/desktops/plasma-5/plasma-integration/default.nix @@ -0,0 +1,17 @@ +{ + mkDerivation, + extra-cmake-modules, + breeze-qt5, kconfig, kconfigwidgets, kiconthemes, kio, knotifications, + kwayland, libXcursor, qtquickcontrols2 +}: + +# TODO: install Noto Sans and Oxygen Mono fonts with plasma-integration + +mkDerivation { + name = "plasma-integration"; + nativeBuildInputs = [ extra-cmake-modules ]; + buildInputs = [ + breeze-qt5 kconfig kconfigwidgets kiconthemes kio knotifications kwayland + libXcursor qtquickcontrols2 + ]; +} diff --git a/nixpkgs/pkgs/desktops/plasma-5/plasma-nm/0001-mobile-broadband-provider-info-path.patch b/nixpkgs/pkgs/desktops/plasma-5/plasma-nm/0001-mobile-broadband-provider-info-path.patch new file mode 100644 index 000000000000..79b5cfb437e2 --- /dev/null +++ b/nixpkgs/pkgs/desktops/plasma-5/plasma-nm/0001-mobile-broadband-provider-info-path.patch @@ -0,0 +1,25 @@ +From faf13c97ff1192a201843b9d52f4002dbd9022af Mon Sep 17 00:00:00 2001 +From: Thomas Tuegel <ttuegel@gmail.com> +Date: Sun, 25 Oct 2015 09:09:27 -0500 +Subject: [PATCH] mobile-broadband-provider-info path + +--- + libs/editor/mobileproviders.cpp | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/libs/editor/mobileproviders.cpp b/libs/editor/mobileproviders.cpp +index 568cb34..98a5992 100644 +--- a/libs/editor/mobileproviders.cpp ++++ b/libs/editor/mobileproviders.cpp +@@ -26,7 +26,7 @@ + + #include <KLocale> + +-const QString MobileProviders::ProvidersFile = "/usr/share/mobile-broadband-provider-info/serviceproviders.xml"; ++const QString MobileProviders::ProvidersFile = "@mobile_broadband_provider_info@/share/mobile-broadband-provider-info/serviceproviders.xml"; + + bool localeAwareCompare(const QString & one, const QString & two) { + return one.localeAwareCompare(two) < 0; +-- +2.6.2 + diff --git a/nixpkgs/pkgs/desktops/plasma-5/plasma-nm/0002-openvpn-binary-path.patch b/nixpkgs/pkgs/desktops/plasma-5/plasma-nm/0002-openvpn-binary-path.patch new file mode 100644 index 000000000000..3bc871f09063 --- /dev/null +++ b/nixpkgs/pkgs/desktops/plasma-5/plasma-nm/0002-openvpn-binary-path.patch @@ -0,0 +1,13 @@ +diff --git a/vpn/openvpn/openvpnadvancedwidget.cpp b/vpn/openvpn/openvpnadvancedwidget.cpp +index 2f11ba1d..310f11b4 100644 +--- a/vpn/openvpn/openvpnadvancedwidget.cpp ++++ b/vpn/openvpn/openvpnadvancedwidget.cpp +@@ -75,7 +75,7 @@ OpenVpnAdvancedWidget::OpenVpnAdvancedWidget(const NetworkManager::VpnSetting::P + connect(m_ui->cmbProxyType, static_cast<void (QComboBox::*)(int)>(&QComboBox::currentIndexChanged), this, &OpenVpnAdvancedWidget::proxyTypeChanged); + + // start openVPN process and get its cipher list +- const QString openVpnBinary = QStandardPaths::findExecutable("openvpn", QStringList() << "/sbin" << "/usr/sbin"); ++ const QString openVpnBinary = "@openvpn@/bin/openvpn"; + const QStringList ciphersArgs(QLatin1String("--show-ciphers")); + const QStringList versionArgs(QLatin1String("--version")); + diff --git a/nixpkgs/pkgs/desktops/plasma-5/plasma-nm/default.nix b/nixpkgs/pkgs/desktops/plasma-5/plasma-nm/default.nix new file mode 100644 index 000000000000..8296d549782f --- /dev/null +++ b/nixpkgs/pkgs/desktops/plasma-5/plasma-nm/default.nix @@ -0,0 +1,31 @@ +{ + mkDerivation, substituteAll, + extra-cmake-modules, kdoctools, + kcompletion, kconfigwidgets, kcoreaddons, kdbusaddons, kdeclarative, + kdelibs4support, ki18n, kiconthemes, kinit, kio, kitemviews, knotifications, + kservice, kwallet, kwidgetsaddons, kwindowsystem, kxmlgui, + mobile-broadband-provider-info, modemmanager-qt, networkmanager-qt, + openconnect, openvpn, plasma-framework, qca-qt5, qtdeclarative, qttools, solid +}: + +mkDerivation { + name = "plasma-nm"; + nativeBuildInputs = [ extra-cmake-modules kdoctools qttools ]; + buildInputs = [ + kdeclarative kdelibs4support ki18n kio kwindowsystem plasma-framework + qtdeclarative kcompletion kconfigwidgets kcoreaddons kdbusaddons kiconthemes + kinit kitemviews knotifications kservice kwallet kwidgetsaddons kxmlgui + mobile-broadband-provider-info modemmanager-qt networkmanager-qt openconnect + qca-qt5 solid + ]; + patches = [ + (substituteAll { + src = ./0001-mobile-broadband-provider-info-path.patch; + mobile_broadband_provider_info = mobile-broadband-provider-info; + }) + (substituteAll { + src = ./0002-openvpn-binary-path.patch; + inherit openvpn; + }) + ]; +} diff --git a/nixpkgs/pkgs/desktops/plasma-5/plasma-pa.nix b/nixpkgs/pkgs/desktops/plasma-5/plasma-pa.nix new file mode 100644 index 000000000000..b60b5298d6db --- /dev/null +++ b/nixpkgs/pkgs/desktops/plasma-5/plasma-pa.nix @@ -0,0 +1,15 @@ +{ + mkDerivation, + extra-cmake-modules, kdoctools, + gconf, glib, kconfigwidgets, kcoreaddons, kdeclarative, kglobalaccel, ki18n, + libcanberra-gtk3, libpulseaudio, plasma-framework, qtdeclarative, kwindowsystem +}: + +mkDerivation { + name = "plasma-pa"; + nativeBuildInputs = [ extra-cmake-modules kdoctools ]; + buildInputs = [ + gconf glib kconfigwidgets kcoreaddons kdeclarative kglobalaccel ki18n + libcanberra-gtk3 libpulseaudio plasma-framework qtdeclarative kwindowsystem + ]; +} diff --git a/nixpkgs/pkgs/desktops/plasma-5/plasma-vault/cryfs-path.patch b/nixpkgs/pkgs/desktops/plasma-5/plasma-vault/cryfs-path.patch new file mode 100644 index 000000000000..6bab35fe4a97 --- /dev/null +++ b/nixpkgs/pkgs/desktops/plasma-5/plasma-vault/cryfs-path.patch @@ -0,0 +1,13 @@ +diff --git a/kded/engine/backends/cryfs/cryfsbackend.cpp b/kded/engine/backends/cryfs/cryfsbackend.cpp +index 58a6929..7212980 100644 +--- a/kded/engine/backends/cryfs/cryfsbackend.cpp ++++ b/kded/engine/backends/cryfs/cryfsbackend.cpp +@@ -241,7 +241,7 @@ QProcess *CryFsBackend::cryfs(const QStringList &arguments) const + auto config = KSharedConfig::openConfig(PLASMAVAULT_CONFIG_FILE); + KConfigGroup backendConfig(config, "CryfsBackend"); + +- return process("cryfs", ++ return process(NIXPKGS_CRYFS, + arguments + backendConfig.readEntry("extraMountOptions", QStringList{}), + { { "CRYFS_FRONTEND", "noninteractive" } }); + } diff --git a/nixpkgs/pkgs/desktops/plasma-5/plasma-vault/default.nix b/nixpkgs/pkgs/desktops/plasma-5/plasma-vault/default.nix new file mode 100644 index 000000000000..e016944be456 --- /dev/null +++ b/nixpkgs/pkgs/desktops/plasma-5/plasma-vault/default.nix @@ -0,0 +1,40 @@ +{ + mkDerivation, lib, + extra-cmake-modules, + + kactivities, + plasma-framework, + kwindowsystem, + networkmanager-qt, + libksysguard, + + encfs, + cryfs, + fuse +}: + +mkDerivation { + name = "plasma-vault"; + nativeBuildInputs = [ extra-cmake-modules ]; + + patches = [ + ./encfs-path.patch + ./cryfs-path.patch + ./fusermount-path.patch + ]; + + buildInputs = [ + kactivities plasma-framework kwindowsystem libksysguard + networkmanager-qt + ]; + + CXXFLAGS = [ + ''-DNIXPKGS_ENCFS=\"${lib.getBin encfs}/bin/encfs\"'' + ''-DNIXPKGS_ENCFSCTL=\"${lib.getBin encfs}/bin/encfsctl\"'' + + ''-DNIXPKGS_CRYFS=\"${lib.getBin cryfs}/bin/cryfs\"'' + + ''-DNIXPKGS_FUSERMOUNT=\"${lib.getBin fuse}/bin/fusermount\"'' + ]; + +} diff --git a/nixpkgs/pkgs/desktops/plasma-5/plasma-vault/encfs-path.patch b/nixpkgs/pkgs/desktops/plasma-5/plasma-vault/encfs-path.patch new file mode 100644 index 000000000000..e1c325e16934 --- /dev/null +++ b/nixpkgs/pkgs/desktops/plasma-5/plasma-vault/encfs-path.patch @@ -0,0 +1,22 @@ +diff --git a/kded/engine/backends/encfs/encfsbackend.cpp b/kded/engine/backends/encfs/encfsbackend.cpp +index 628af7b..6edd38e 100644 +--- a/kded/engine/backends/encfs/encfsbackend.cpp ++++ b/kded/engine/backends/encfs/encfsbackend.cpp +@@ -137,7 +137,7 @@ QProcess *EncFsBackend::encfs(const QStringList &arguments) const + auto config = KSharedConfig::openConfig(PLASMAVAULT_CONFIG_FILE); + KConfigGroup backendConfig(config, "EncfsBackend"); + +- return process("encfs", ++ return process(NIXPKGS_ENCFS, + arguments + backendConfig.readEntry("extraMountOptions", QStringList{}), + {}); + } +@@ -146,7 +146,7 @@ QProcess *EncFsBackend::encfs(const QStringList &arguments) const + + QProcess *EncFsBackend::encfsctl(const QStringList &arguments) const + { +- return process("encfsctl", arguments, {}); ++ return process(NIXPKGS_ENCFSCTL, arguments, {}); + } + + diff --git a/nixpkgs/pkgs/desktops/plasma-5/plasma-vault/fusermount-path.patch b/nixpkgs/pkgs/desktops/plasma-5/plasma-vault/fusermount-path.patch new file mode 100644 index 000000000000..b2a7866531bf --- /dev/null +++ b/nixpkgs/pkgs/desktops/plasma-5/plasma-vault/fusermount-path.patch @@ -0,0 +1,18 @@ +diff --git a/kded/engine/fusebackend_p.cpp b/kded/engine/fusebackend_p.cpp +index d07e313..ea7d81c 100644 +--- a/kded/engine/fusebackend_p.cpp ++++ b/kded/engine/fusebackend_p.cpp +@@ -106,7 +106,7 @@ QProcess *FuseBackend::process(const QString &executable, + + QProcess *FuseBackend::fusermount(const QStringList &arguments) const + { +- return process("fusermount", arguments, {}); ++ return process(NIXPKGS_FUSERMOUNT, arguments, {}); + } + + +@@ -279,4 +279,3 @@ bool FuseBackend::isOpened(const MountPoint &mountPoint) const + } + + } // namespace PlasmaVault +- diff --git a/nixpkgs/pkgs/desktops/plasma-5/plasma-workspace-wallpapers.nix b/nixpkgs/pkgs/desktops/plasma-5/plasma-workspace-wallpapers.nix new file mode 100644 index 000000000000..cb068166c1d9 --- /dev/null +++ b/nixpkgs/pkgs/desktops/plasma-5/plasma-workspace-wallpapers.nix @@ -0,0 +1,6 @@ +{ mkDerivation , extra-cmake-modules }: + +mkDerivation { + name = "plasma-workspace-wallpapers"; + nativeBuildInputs = [ extra-cmake-modules ]; +} diff --git a/nixpkgs/pkgs/desktops/plasma-5/plasma-workspace/0001-startkde.patch b/nixpkgs/pkgs/desktops/plasma-5/plasma-workspace/0001-startkde.patch new file mode 100644 index 000000000000..d230e1270bea --- /dev/null +++ b/nixpkgs/pkgs/desktops/plasma-5/plasma-workspace/0001-startkde.patch @@ -0,0 +1,129 @@ +From 1796822e4c97062b919a596ce13db68e2c46c7e8 Mon Sep 17 00:00:00 2001 +From: Thomas Tuegel <ttuegel@mailbox.org> +Date: Tue, 28 Jan 2020 05:00:53 -0600 +Subject: [PATCH 1/2] startkde + +--- + startkde/startplasma-waylandsession.cpp | 2 +- + startkde/startplasma-x11.cpp | 2 +- + startkde/startplasma.cpp | 32 ++++++++----------------- + 3 files changed, 12 insertions(+), 24 deletions(-) + +diff --git a/startkde/startplasma-waylandsession.cpp b/startkde/startplasma-waylandsession.cpp +index 87c71c6..5fc5314 100644 +--- a/startkde/startplasma-waylandsession.cpp ++++ b/startkde/startplasma-waylandsession.cpp +@@ -67,7 +67,7 @@ int main(int /*argc*/, char** /*argv*/) + waitForKonqi(); + out << "startplasma-waylandsession: Shutting down...\n"; + +- runSync(QStringLiteral("kdeinit5_shutdown"), {}); ++ runSync(QStringLiteral(NIXPKGS_KDEINIT5_SHUTDOWN), {}); + + cleanupX11(); + out << "startplasma-waylandsession: Done.\n"; +diff --git a/startkde/startplasma-x11.cpp b/startkde/startplasma-x11.cpp +index 3314b62..14cbe29 100644 +--- a/startkde/startplasma-x11.cpp ++++ b/startkde/startplasma-x11.cpp +@@ -111,7 +111,7 @@ int main(int /*argc*/, char** /*argv*/) + + out << "startkde: Shutting down...\n"; + +- runSync(QStringLiteral("kdeinit5_shutdown"), {}); ++ runSync(QStringLiteral(NIXPKGS_KDEINIT5_SHUTDOWN), {}); + + cleanupPlasmaEnvironment(); + cleanupX11(); +diff --git a/startkde/startplasma.cpp b/startkde/startplasma.cpp +index e0f7004..8ac41fd 100644 +--- a/startkde/startplasma.cpp ++++ b/startkde/startplasma.cpp +@@ -34,7 +34,7 @@ QTextStream out(stderr); + void messageBox(const QString &text) + { + out << text; +- runSync(QStringLiteral("xmessage"), {QStringLiteral("-geometry"), QStringLiteral("500x100"), text}); ++ runSync(QStringLiteral(NIXPKGS_XMESSAGE), {QStringLiteral("-geometry"), QStringLiteral("500x100"), text}); + } + + QStringList allServices(const QLatin1String& prefix) +@@ -184,14 +184,6 @@ void runEnvironmentScripts() + } + } + sourceFiles(scripts); +- +- // Make sure that the KDE prefix is first in XDG_DATA_DIRS and that it's set at all. +- // The spec allows XDG_DATA_DIRS to be not set, but X session startup scripts tend +- // to set it to a list of paths *not* including the KDE prefix if it's not /usr or +- // /usr/local. +- if (!qEnvironmentVariableIsSet("XDG_DATA_DIRS")) { +- qputenv("XDG_DATA_DIRS", KDE_INSTALL_FULL_DATAROOTDIR ":/usr/share:/usr/local/share"); +- } + } + + +@@ -240,15 +232,15 @@ void setupX11() + // If the user has overwritten fonts, the cursor font may be different now + // so don't move this up. + +- runSync(QStringLiteral("xsetroot"), {QStringLiteral("-cursor_name"), QStringLiteral("left_ptr")}); +- runSync(QStringLiteral("xprop"), {QStringLiteral("-root"), QStringLiteral("-f"), QStringLiteral("KDE_FULL_SESSION"), QStringLiteral("8t"), QStringLiteral("-set"), QStringLiteral("KDE_FULL_SESSION"), QStringLiteral("true")}); +- runSync(QStringLiteral("xprop"), {QStringLiteral("-root"), QStringLiteral("-f"), QStringLiteral("KDE_SESSION_VERSION"), QStringLiteral("32c"), QStringLiteral("-set"), QStringLiteral("KDE_SESSION_VERSION"), QStringLiteral("5")}); ++ runSync(QStringLiteral(NIXPKGS_XSETROOT), {QStringLiteral("-cursor_name"), QStringLiteral("left_ptr")}); ++ runSync(QStringLiteral(NIXPKGS_XPROP), {QStringLiteral("-root"), QStringLiteral("-f"), QStringLiteral("KDE_FULL_SESSION"), QStringLiteral("8t"), QStringLiteral("-set"), QStringLiteral("KDE_FULL_SESSION"), QStringLiteral("true")}); ++ runSync(QStringLiteral(NIXPKGS_XPROP), {QStringLiteral("-root"), QStringLiteral("-f"), QStringLiteral("KDE_SESSION_VERSION"), QStringLiteral("32c"), QStringLiteral("-set"), QStringLiteral("KDE_SESSION_VERSION"), QStringLiteral("5")}); + } + + void cleanupX11() + { +- runSync(QStringLiteral("xprop"), { QStringLiteral("-root"), QStringLiteral("-remove"), QStringLiteral("KDE_FULL_SESSION") }); +- runSync(QStringLiteral("xprop"), { QStringLiteral("-root"), QStringLiteral("-remove"), QStringLiteral("KDE_SESSION_VERSION") }); ++ runSync(QStringLiteral(NIXPKGS_XPROP), { QStringLiteral("-root"), QStringLiteral("-remove"), QStringLiteral("KDE_FULL_SESSION") }); ++ runSync(QStringLiteral(NIXPKGS_XPROP), { QStringLiteral("-root"), QStringLiteral("-remove"), QStringLiteral("KDE_SESSION_VERSION") }); + } + + // TODO: Check if Necessary +@@ -265,11 +257,7 @@ bool syncDBusEnvironment() + { + int exitCode; + // At this point all environment variables are set, let's send it to the DBus session server to update the activation environment +- if (!QStandardPaths::findExecutable(QStringLiteral("dbus-update-activation-environment")).isEmpty()) { +- exitCode = runSync(QStringLiteral("dbus-update-activation-environment"), { QStringLiteral("--systemd"), QStringLiteral("--all") }); +- } else { +- exitCode = runSync(QStringLiteral(CMAKE_INSTALL_FULL_LIBEXECDIR "/ksyncdbusenv"), {}); +- } ++ exitCode = runSync(QStringLiteral(NIXPKGS_DBUS_UPDATE_ACTIVATION_ENVIRONMENT), { QStringLiteral("--systemd"), QStringLiteral("--all") }); + return exitCode == 0; + } + +@@ -285,7 +273,7 @@ void setupFontDpi() + //TODO port to c++? + const QByteArray input = "Xft.dpi: " + QByteArray::number(fontsCfg.readEntry("forceFontDPI", 0)); + QProcess p; +- p.start(QStringLiteral("xrdb"), { QStringLiteral("-quiet"), QStringLiteral("-merge"), QStringLiteral("-nocpp") }); ++ p.start(QStringLiteral(NIXPKGS_XRDB), { QStringLiteral("-quiet"), QStringLiteral("-merge"), QStringLiteral("-nocpp") }); + p.setProcessChannelMode(QProcess::ForwardedChannels); + p.write(input); + p.closeWriteChannel(); +@@ -307,7 +295,7 @@ QProcess* setupKSplash() + KConfigGroup ksplashCfg = cfg.group("KSplash"); + if (ksplashCfg.readEntry("Engine", QStringLiteral("KSplashQML")) == QLatin1String("KSplashQML")) { + p = new QProcess; +- p->start(QStringLiteral("ksplashqml"), { ksplashCfg.readEntry("Theme", QStringLiteral("Breeze")) }); ++ p->start(QStringLiteral(CMAKE_INSTALL_FULL_BINDIR "/ksplashqml"), { ksplashCfg.readEntry("Theme", QStringLiteral("Breeze")) }); + } + } + return p; +@@ -329,7 +317,7 @@ bool startKDEInit() + { + // We set LD_BIND_NOW to increase the efficiency of kdeinit. + // kdeinit unsets this variable before loading applications. +- const int exitCode = runSync(QStringLiteral(CMAKE_INSTALL_FULL_LIBEXECDIR_KF5 "/start_kdeinit_wrapper"), { QStringLiteral("--kded"), QStringLiteral("+kcminit_startup") }, { QStringLiteral("LD_BIND_NOW=true") }); ++ const int exitCode = runSync(QStringLiteral(NIXPKGS_START_KDEINIT_WRAPPER), { QStringLiteral("--kded"), QStringLiteral("+kcminit_startup") }, { QStringLiteral("LD_BIND_NOW=true") }); + if (exitCode != 0) { + messageBox(QStringLiteral("startkde: Could not start kdeinit5. Check your installation.")); + return false; +-- +2.23.1 + diff --git a/nixpkgs/pkgs/desktops/plasma-5/plasma-workspace/0002-absolute-wallpaper-install-dir.patch b/nixpkgs/pkgs/desktops/plasma-5/plasma-workspace/0002-absolute-wallpaper-install-dir.patch new file mode 100644 index 000000000000..8fa9e1d31cff --- /dev/null +++ b/nixpkgs/pkgs/desktops/plasma-5/plasma-workspace/0002-absolute-wallpaper-install-dir.patch @@ -0,0 +1,22 @@ +From 7c6f939aea290bc3ec7629f26d02441d1d4bcb8a Mon Sep 17 00:00:00 2001 +From: Thomas Tuegel <ttuegel@mailbox.org> +Date: Wed, 5 Feb 2020 05:03:11 -0600 +Subject: [PATCH 2/2] absolute-wallpaper-install-dir + +--- + sddm-theme/theme.conf.cmake | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/sddm-theme/theme.conf.cmake b/sddm-theme/theme.conf.cmake +index ea9a943..c8458ba 100644 +--- a/sddm-theme/theme.conf.cmake ++++ b/sddm-theme/theme.conf.cmake +@@ -2,4 +2,4 @@ + type=image + color=#1d99f3 + fontSize=10 +-background=${CMAKE_INSTALL_PREFIX}/${WALLPAPER_INSTALL_DIR}/Next/contents/images/5120x2880.png ++background=${NIXPKGS_BREEZE_WALLPAPERS}/Next/contents/images/5120x2880.png +-- +2.23.1 + diff --git a/nixpkgs/pkgs/desktops/plasma-5/plasma-workspace/default.nix b/nixpkgs/pkgs/desktops/plasma-5/plasma-workspace/default.nix new file mode 100644 index 000000000000..6aa0e3b57382 --- /dev/null +++ b/nixpkgs/pkgs/desktops/plasma-5/plasma-workspace/default.nix @@ -0,0 +1,60 @@ +{ + mkDerivation, lib, + + extra-cmake-modules, kdoctools, + + coreutils, dbus, gnugrep, gnused, isocodes, libdbusmenu, libSM, libXcursor, + libXtst, pam, wayland, xmessage, xprop, xrdb, xsetroot, + + baloo, breeze-qt5, kactivities, kactivities-stats, kcmutils, kconfig, kcrash, + kdbusaddons, kdeclarative, kdelibs4support, kdesu, kglobalaccel, kidletime, + kinit, kjsembed, knewstuff, knotifyconfig, kpackage, kpeople, krunner, + kscreenlocker, ktexteditor, ktextwidgets, kwallet, kwayland, kwin, + kxmlrpcclient, libkscreen, libksysguard, libqalculate, networkmanager-qt, + phonon, plasma-framework, prison, solid, kholidays, + + qtgraphicaleffects, qtquickcontrols, qtquickcontrols2, qtscript, qttools, + qtwayland, qtx11extras, +}: + +let inherit (lib) getBin getLib; in + +mkDerivation { + name = "plasma-workspace"; + + nativeBuildInputs = [ extra-cmake-modules kdoctools ]; + buildInputs = [ + isocodes libdbusmenu libSM libXcursor libXtst pam wayland + + baloo kactivities kactivities-stats kcmutils kconfig kcrash kdbusaddons + kdeclarative kdelibs4support kdesu kglobalaccel kidletime kjsembed knewstuff + knotifyconfig kpackage kpeople krunner kscreenlocker ktexteditor + ktextwidgets kwallet kwayland kwin kxmlrpcclient libkscreen libksysguard + libqalculate networkmanager-qt phonon plasma-framework prison solid + kholidays + + qtgraphicaleffects qtquickcontrols qtquickcontrols2 qtscript qtwayland qtx11extras + ]; + propagatedUserEnvPkgs = [ qtgraphicaleffects ]; + outputs = [ "out" "dev" ]; + + cmakeFlags = [ + ''-DNIXPKGS_BREEZE_WALLPAPERS=${getBin breeze-qt5}/share/wallpapers'' + ]; + + patches = [ + ./0001-startkde.patch + ./0002-absolute-wallpaper-install-dir.patch + ]; + + + NIX_CFLAGS_COMPILE = [ + ''-DNIXPKGS_XMESSAGE="${getBin xmessage}/bin/xmessage"'' + ''-DNIXPKGS_XRDB="${getBin xrdb}/bin/xrdb"'' + ''-DNIXPKGS_XSETROOT="${getBin xsetroot}/bin/xsetroot"'' + ''-DNIXPKGS_XPROP="${getBin xprop}/bin/xprop"'' + ''-DNIXPKGS_DBUS_UPDATE_ACTIVATION_ENVIRONMENT="${getBin dbus}/bin/dbus-update-activation-environment"'' + ''-DNIXPKGS_START_KDEINIT_WRAPPER="${getLib kinit}/libexec/kf5/start_kdeinit_wrapper"'' + ''-DNIXPKGS_KDEINIT5_SHUTDOWN="${getBin kinit}/bin/kdeinit5_shutdown"'' + ]; +} diff --git a/nixpkgs/pkgs/desktops/plasma-5/polkit-kde-agent.nix b/nixpkgs/pkgs/desktops/plasma-5/polkit-kde-agent.nix new file mode 100644 index 000000000000..c25b3d2744b7 --- /dev/null +++ b/nixpkgs/pkgs/desktops/plasma-5/polkit-kde-agent.nix @@ -0,0 +1,15 @@ +{ + mkDerivation, extra-cmake-modules, + kcoreaddons, kconfig, kcrash, kdbusaddons, ki18n, kiconthemes, knotifications, + kwidgetsaddons, kwindowsystem, polkit-qt +}: + +mkDerivation { + name = "polkit-kde-agent"; + nativeBuildInputs = [ extra-cmake-modules ]; + propagatedBuildInputs = [ + kdbusaddons kwidgetsaddons kcoreaddons kcrash kconfig ki18n kiconthemes + knotifications kwindowsystem polkit-qt + ]; + outputs = [ "out" "dev" ]; +} diff --git a/nixpkgs/pkgs/desktops/plasma-5/powerdevil.nix b/nixpkgs/pkgs/desktops/plasma-5/powerdevil.nix new file mode 100644 index 000000000000..65fc5446c16e --- /dev/null +++ b/nixpkgs/pkgs/desktops/plasma-5/powerdevil.nix @@ -0,0 +1,17 @@ +{ + mkDerivation, + extra-cmake-modules, kdoctools, + bluez-qt, kactivities, kauth, kconfig, kdbusaddons, kdelibs4support, + kglobalaccel, ki18n, kidletime, kio, knotifyconfig, kwayland, libkscreen, + networkmanager-qt, plasma-workspace, qtx11extras, solid, udev +}: + +mkDerivation { + name = "powerdevil"; + nativeBuildInputs = [ extra-cmake-modules kdoctools ]; + buildInputs = [ + kconfig kdbusaddons knotifyconfig solid udev bluez-qt kactivities kauth + kdelibs4support kglobalaccel ki18n kio kidletime kwayland libkscreen + networkmanager-qt plasma-workspace qtx11extras + ]; +} diff --git a/nixpkgs/pkgs/desktops/plasma-5/sddm-kcm.nix b/nixpkgs/pkgs/desktops/plasma-5/sddm-kcm.nix new file mode 100644 index 000000000000..6becf3bf420b --- /dev/null +++ b/nixpkgs/pkgs/desktops/plasma-5/sddm-kcm.nix @@ -0,0 +1,16 @@ +{ + mkDerivation, extra-cmake-modules, shared-mime-info, + libpthreadstubs, libXcursor, libXdmcp, + qtquickcontrols2, qtx11extras, + karchive, ki18n, kio, knewstuff +}: + +mkDerivation { + name = "sddm-kcm"; + nativeBuildInputs = [ extra-cmake-modules shared-mime-info ]; + buildInputs = [ + libpthreadstubs libXcursor libXdmcp + qtquickcontrols2 qtx11extras + karchive ki18n kio knewstuff + ]; +} diff --git a/nixpkgs/pkgs/desktops/plasma-5/srcs.nix b/nixpkgs/pkgs/desktops/plasma-5/srcs.nix new file mode 100644 index 000000000000..fe78f210c17e --- /dev/null +++ b/nixpkgs/pkgs/desktops/plasma-5/srcs.nix @@ -0,0 +1,374 @@ +# DO NOT EDIT! This file is generated automatically. +# Command: ./maintainers/scripts/fetch-kde-qt.sh pkgs/desktops/plasma-5/ +{ fetchurl, mirror }: + +{ + bluedevil = { + version = "5.17.5"; + src = fetchurl { + url = "${mirror}/stable/plasma/5.17.5/bluedevil-5.17.5.tar.xz"; + sha256 = "22e9c683dfc56a559e652809ade238f8eb0ffb09d5ab042f5cd4b8216f647c09"; + name = "bluedevil-5.17.5.tar.xz"; + }; + }; + breeze = { + version = "5.17.5"; + src = fetchurl { + url = "${mirror}/stable/plasma/5.17.5/breeze-5.17.5.tar.xz"; + sha256 = "f89bf857321b18789089efc9271d7bd7b6459a173dd078dd03242775db76c8d7"; + name = "breeze-5.17.5.tar.xz"; + }; + }; + breeze-grub = { + version = "5.17.5"; + src = fetchurl { + url = "${mirror}/stable/plasma/5.17.5/breeze-grub-5.17.5.tar.xz"; + sha256 = "591a1d7a510c76a1f2729a61a4d14c0f33db4d1e8ea5dbc87b74f2e7e7e2a2ba"; + name = "breeze-grub-5.17.5.tar.xz"; + }; + }; + breeze-gtk = { + version = "5.17.5"; + src = fetchurl { + url = "${mirror}/stable/plasma/5.17.5/breeze-gtk-5.17.5.tar.xz"; + sha256 = "6dbd8e7d936840fbaf7016574d07729c9d0791711ad6d371136585ddb8f76e66"; + name = "breeze-gtk-5.17.5.tar.xz"; + }; + }; + breeze-plymouth = { + version = "5.17.5"; + src = fetchurl { + url = "${mirror}/stable/plasma/5.17.5/breeze-plymouth-5.17.5.tar.xz"; + sha256 = "e95f9eaf04e74383f5e1abe74d999787e408be7a34fd07a4f64e253e35150af0"; + name = "breeze-plymouth-5.17.5.tar.xz"; + }; + }; + discover = { + version = "5.17.5"; + src = fetchurl { + url = "${mirror}/stable/plasma/5.17.5/discover-5.17.5.tar.xz"; + sha256 = "986ef367aef59c5a956d4163f987a60cfd3674a300880376ddedc0222769789f"; + name = "discover-5.17.5.tar.xz"; + }; + }; + drkonqi = { + version = "5.17.5"; + src = fetchurl { + url = "${mirror}/stable/plasma/5.17.5/drkonqi-5.17.5.tar.xz"; + sha256 = "756c50f2458a8c564e608ea97244f6b2b3d5fb4a675a8cec29307be1d5ab5457"; + name = "drkonqi-5.17.5.tar.xz"; + }; + }; + kactivitymanagerd = { + version = "5.17.5"; + src = fetchurl { + url = "${mirror}/stable/plasma/5.17.5/kactivitymanagerd-5.17.5.tar.xz"; + sha256 = "362721c3a9712751fba29cd1f1ef440a1e74561a611f2d171692a4ddc895b3e4"; + name = "kactivitymanagerd-5.17.5.tar.xz"; + }; + }; + kde-cli-tools = { + version = "5.17.5"; + src = fetchurl { + url = "${mirror}/stable/plasma/5.17.5/kde-cli-tools-5.17.5.tar.xz"; + sha256 = "d14299ebeaf89854cb89435cfaaa4da1d84bf23a97df23ff8c7f95dae5bec55f"; + name = "kde-cli-tools-5.17.5.tar.xz"; + }; + }; + kdecoration = { + version = "5.17.5"; + src = fetchurl { + url = "${mirror}/stable/plasma/5.17.5/kdecoration-5.17.5.tar.xz"; + sha256 = "7d8f0128306d436aeba010e47a3dddbcb9fb9fd05ef9308cbad1934914875cd9"; + name = "kdecoration-5.17.5.tar.xz"; + }; + }; + kde-gtk-config = { + version = "5.17.5"; + src = fetchurl { + url = "${mirror}/stable/plasma/5.17.5/kde-gtk-config-5.17.5.tar.xz"; + sha256 = "5feff23c756f1fb0ba9ab88c2aed92c0e7c5521c757f5a0cdd057273538f0010"; + name = "kde-gtk-config-5.17.5.tar.xz"; + }; + }; + kdeplasma-addons = { + version = "5.17.5"; + src = fetchurl { + url = "${mirror}/stable/plasma/5.17.5/kdeplasma-addons-5.17.5.tar.xz"; + sha256 = "997d6a3542ab1f1fd7fb17580693dc8281ff29b03c82577dbae3fc1ec4cccdb8"; + name = "kdeplasma-addons-5.17.5.tar.xz"; + }; + }; + kgamma5 = { + version = "5.17.5"; + src = fetchurl { + url = "${mirror}/stable/plasma/5.17.5/kgamma5-5.17.5.tar.xz"; + sha256 = "3b8fd1539d035d4d39dcde6ca0dd214e6653c98778ac79b9cbf2f7009b155ca9"; + name = "kgamma5-5.17.5.tar.xz"; + }; + }; + khotkeys = { + version = "5.17.5"; + src = fetchurl { + url = "${mirror}/stable/plasma/5.17.5/khotkeys-5.17.5.tar.xz"; + sha256 = "cf78b5bfb8568fb4eea592b209bdb79aeac92bd08a580c3b6c08d45dd34a2d56"; + name = "khotkeys-5.17.5.tar.xz"; + }; + }; + kinfocenter = { + version = "5.17.5"; + src = fetchurl { + url = "${mirror}/stable/plasma/5.17.5/kinfocenter-5.17.5.tar.xz"; + sha256 = "679870f10ee6494136d87a897a57a23c2905054d7a83ff11a4e85c204eb9fd9a"; + name = "kinfocenter-5.17.5.tar.xz"; + }; + }; + kmenuedit = { + version = "5.17.5"; + src = fetchurl { + url = "${mirror}/stable/plasma/5.17.5/kmenuedit-5.17.5.tar.xz"; + sha256 = "59beed03298cd9fd6b05d67844794ed6a77be0d1b25b55d5bbcdf72e15e357de"; + name = "kmenuedit-5.17.5.tar.xz"; + }; + }; + kscreen = { + version = "5.17.5"; + src = fetchurl { + url = "${mirror}/stable/plasma/5.17.5/kscreen-5.17.5.tar.xz"; + sha256 = "de8a00b33d0254245a53a5c097347aa86709d415754b3e3c675eef8fb4fe5bc0"; + name = "kscreen-5.17.5.tar.xz"; + }; + }; + kscreenlocker = { + version = "5.17.5"; + src = fetchurl { + url = "${mirror}/stable/plasma/5.17.5/kscreenlocker-5.17.5.tar.xz"; + sha256 = "078cfaa9f117a985f5c71152bdf4a9f5cb65ef23c0090cfaaccc9539770f138f"; + name = "kscreenlocker-5.17.5.tar.xz"; + }; + }; + ksshaskpass = { + version = "5.17.5"; + src = fetchurl { + url = "${mirror}/stable/plasma/5.17.5/ksshaskpass-5.17.5.tar.xz"; + sha256 = "b09e0d780340fc5a6a65e67a30d08a3f117f31e2dbfbb35579aa4cefb15c3b27"; + name = "ksshaskpass-5.17.5.tar.xz"; + }; + }; + ksysguard = { + version = "5.17.5"; + src = fetchurl { + url = "${mirror}/stable/plasma/5.17.5/ksysguard-5.17.5.tar.xz"; + sha256 = "69bc12311dcf363b168a259139d30456ed395ec03b948bd35e992300c7e7bd82"; + name = "ksysguard-5.17.5.tar.xz"; + }; + }; + kwallet-pam = { + version = "5.17.5"; + src = fetchurl { + url = "${mirror}/stable/plasma/5.17.5/kwallet-pam-5.17.5.tar.xz"; + sha256 = "c829c7a44408e58beb87c71f5c70bccd349d285c3fcefb16df98bf2f29357fe9"; + name = "kwallet-pam-5.17.5.tar.xz"; + }; + }; + kwayland-integration = { + version = "5.17.5"; + src = fetchurl { + url = "${mirror}/stable/plasma/5.17.5/kwayland-integration-5.17.5.tar.xz"; + sha256 = "818b4e14611e26f297ef60427d399edc458a44e113bc092390fa65ecababcedb"; + name = "kwayland-integration-5.17.5.tar.xz"; + }; + }; + kwin = { + version = "5.17.5"; + src = fetchurl { + url = "${mirror}/stable/plasma/5.17.5/kwin-5.17.5.tar.xz"; + sha256 = "8517adaf8270d783aea7b3886d86b5abed6a5ec2b5c78b632479597d956baadc"; + name = "kwin-5.17.5.tar.xz"; + }; + }; + kwrited = { + version = "5.17.5"; + src = fetchurl { + url = "${mirror}/stable/plasma/5.17.5/kwrited-5.17.5.tar.xz"; + sha256 = "ca22b1fa3e657fa2e58bf0c9dc1ebff3be8c0e003750223e7a7c5932d5b90823"; + name = "kwrited-5.17.5.tar.xz"; + }; + }; + libkscreen = { + version = "5.17.5"; + src = fetchurl { + url = "${mirror}/stable/plasma/5.17.5/libkscreen-5.17.5.tar.xz"; + sha256 = "aa186e5751287701daec4d036aba776a911e4b84ca7eea44dc5fb531875afd94"; + name = "libkscreen-5.17.5.tar.xz"; + }; + }; + libksysguard = { + version = "5.17.5"; + src = fetchurl { + url = "${mirror}/stable/plasma/5.17.5/libksysguard-5.17.5.tar.xz"; + sha256 = "f5d237af554d65740a28360e6d8fa39d4912239c5f21288846b1c934897a7e14"; + name = "libksysguard-5.17.5.tar.xz"; + }; + }; + milou = { + version = "5.17.5"; + src = fetchurl { + url = "${mirror}/stable/plasma/5.17.5/milou-5.17.5.tar.xz"; + sha256 = "b89796e34cc8b6d6d4196169e814249f7b75c1c15763e0b4c1da5c97ccc2c8cf"; + name = "milou-5.17.5.tar.xz"; + }; + }; + oxygen = { + version = "5.17.5"; + src = fetchurl { + url = "${mirror}/stable/plasma/5.17.5/oxygen-5.17.5.tar.xz"; + sha256 = "58954374a4b9067365ee5d50b32b1986b2e7dd31e73cbf79fda8d978949943be"; + name = "oxygen-5.17.5.tar.xz"; + }; + }; + plasma-browser-integration = { + version = "5.17.5"; + src = fetchurl { + url = "${mirror}/stable/plasma/5.17.5/plasma-browser-integration-5.17.5.tar.xz"; + sha256 = "07bc4285991ab43830873a12b8c07f60e4faea1ec81121db783c425f18a4f87d"; + name = "plasma-browser-integration-5.17.5.tar.xz"; + }; + }; + plasma-desktop = { + version = "5.17.5"; + src = fetchurl { + url = "${mirror}/stable/plasma/5.17.5/plasma-desktop-5.17.5.tar.xz"; + sha256 = "7f741ab026989bdcc68701955fc290d5ead38bf4bc310f18a2f32c64b411ab04"; + name = "plasma-desktop-5.17.5.tar.xz"; + }; + }; + plasma-integration = { + version = "5.17.5"; + src = fetchurl { + url = "${mirror}/stable/plasma/5.17.5/plasma-integration-5.17.5.tar.xz"; + sha256 = "169206bebd790d2fee49cec621c46f6f64a8e20ee3e56bf16ee7373f61cad959"; + name = "plasma-integration-5.17.5.tar.xz"; + }; + }; + plasma-nm = { + version = "5.17.5"; + src = fetchurl { + url = "${mirror}/stable/plasma/5.17.5/plasma-nm-5.17.5.tar.xz"; + sha256 = "2165e47a0654d17735abc97aec287b46b52a2eafccc3591b667ea2755b731255"; + name = "plasma-nm-5.17.5.tar.xz"; + }; + }; + plasma-pa = { + version = "5.17.5"; + src = fetchurl { + url = "${mirror}/stable/plasma/5.17.5/plasma-pa-5.17.5.tar.xz"; + sha256 = "933c6ab1fda52b336a157a48b1ea64b81fd1d84ca08a40a52bfae276cca2bf23"; + name = "plasma-pa-5.17.5.tar.xz"; + }; + }; + plasma-sdk = { + version = "5.17.5"; + src = fetchurl { + url = "${mirror}/stable/plasma/5.17.5/plasma-sdk-5.17.5.tar.xz"; + sha256 = "ff736029b1ae5773991db06f5827d9dcbd8e7a4e9a430c9014c35ddee2c55314"; + name = "plasma-sdk-5.17.5.tar.xz"; + }; + }; + plasma-tests = { + version = "5.17.5"; + src = fetchurl { + url = "${mirror}/stable/plasma/5.17.5/plasma-tests-5.17.5.tar.xz"; + sha256 = "1b566b7118a5c8d1b25078d331a6bc77f48781010fbd3425d85b137811218982"; + name = "plasma-tests-5.17.5.tar.xz"; + }; + }; + plasma-thunderbolt = { + version = "5.17.5"; + src = fetchurl { + url = "${mirror}/stable/plasma/5.17.5/plasma-thunderbolt-5.17.5.tar.xz"; + sha256 = "3743f9841d269d51f1b1419e24d5cd1b26a0ba5a90e76b531328a8cc43184382"; + name = "plasma-thunderbolt-5.17.5.tar.xz"; + }; + }; + plasma-vault = { + version = "5.17.5"; + src = fetchurl { + url = "${mirror}/stable/plasma/5.17.5/plasma-vault-5.17.5.tar.xz"; + sha256 = "3e5c6b4dd6c1122b6a221205da506881959ab905e467b74b0536e7f5fe130d71"; + name = "plasma-vault-5.17.5.tar.xz"; + }; + }; + plasma-workspace = { + version = "5.17.5"; + src = fetchurl { + url = "${mirror}/stable/plasma/5.17.5/plasma-workspace-5.17.5.tar.xz"; + sha256 = "764488e66d52bc3017efb2c1471f57196aa50fbfa3a80637bf48f24955cfba88"; + name = "plasma-workspace-5.17.5.tar.xz"; + }; + }; + plasma-workspace-wallpapers = { + version = "5.17.5"; + src = fetchurl { + url = "${mirror}/stable/plasma/5.17.5/plasma-workspace-wallpapers-5.17.5.tar.xz"; + sha256 = "8a28ef67b65c340d40ff8f5bfc333ead68e6d8c9e410769c43af847ced9b4ca9"; + name = "plasma-workspace-wallpapers-5.17.5.tar.xz"; + }; + }; + plymouth-kcm = { + version = "5.17.5"; + src = fetchurl { + url = "${mirror}/stable/plasma/5.17.5/plymouth-kcm-5.17.5.tar.xz"; + sha256 = "bbd6994f60ed9d63b4e4dd0abe78bf1f9c14b8ecce8ba4355d16cd52a0a86528"; + name = "plymouth-kcm-5.17.5.tar.xz"; + }; + }; + polkit-kde-agent = { + version = "1-5.17.5"; + src = fetchurl { + url = "${mirror}/stable/plasma/5.17.5/polkit-kde-agent-1-5.17.5.tar.xz"; + sha256 = "a79d76a2f584f6567639228fde6f75b3960484f7a65cfc69b6acb6df1de53f5d"; + name = "polkit-kde-agent-1-5.17.5.tar.xz"; + }; + }; + powerdevil = { + version = "5.17.5"; + src = fetchurl { + url = "${mirror}/stable/plasma/5.17.5/powerdevil-5.17.5.tar.xz"; + sha256 = "27904361e85e1267d933d8f0a0d3be4dc712099ed2eb3cf90959209a4443dd82"; + name = "powerdevil-5.17.5.tar.xz"; + }; + }; + sddm-kcm = { + version = "5.17.5"; + src = fetchurl { + url = "${mirror}/stable/plasma/5.17.5/sddm-kcm-5.17.5.tar.xz"; + sha256 = "e85fb9e014439e8c0e73638112139561aff9a9f71f26c3eafedff5a98a07b33b"; + name = "sddm-kcm-5.17.5.tar.xz"; + }; + }; + systemsettings = { + version = "5.17.5"; + src = fetchurl { + url = "${mirror}/stable/plasma/5.17.5/systemsettings-5.17.5.tar.xz"; + sha256 = "50fa4d7866639995a6859446fc6a02a73ae05203e8f2ed31221e232ed3491eaf"; + name = "systemsettings-5.17.5.tar.xz"; + }; + }; + user-manager = { + version = "5.17.5"; + src = fetchurl { + url = "${mirror}/stable/plasma/5.17.5/user-manager-5.17.5.tar.xz"; + sha256 = "10ed3196063c7dfed3b3f25dd199a48ca39fa86db5d0126ec84a543b1c212f0d"; + name = "user-manager-5.17.5.tar.xz"; + }; + }; + xdg-desktop-portal-kde = { + version = "5.17.5"; + src = fetchurl { + url = "${mirror}/stable/plasma/5.17.5/xdg-desktop-portal-kde-5.17.5.tar.xz"; + sha256 = "a993bd4b86a44c8237a3f4957c2594aa2ca8916204ad866f8af32f7df34740f6"; + name = "xdg-desktop-portal-kde-5.17.5.tar.xz"; + }; + }; +} diff --git a/nixpkgs/pkgs/desktops/plasma-5/systemsettings.nix b/nixpkgs/pkgs/desktops/plasma-5/systemsettings.nix new file mode 100644 index 000000000000..9ff906f79745 --- /dev/null +++ b/nixpkgs/pkgs/desktops/plasma-5/systemsettings.nix @@ -0,0 +1,17 @@ +{ + mkDerivation, extra-cmake-modules, kdoctools, + kcmutils, kconfig, kdbusaddons, khtml, ki18n, kiconthemes, kio, kitemviews, + kservice, kwindowsystem, kxmlgui, qtquickcontrols, qtquickcontrols2, + kactivities, kactivities-stats, kirigami2, kcrash, plasma-workspace +}: + +mkDerivation { + name = "systemsettings"; + nativeBuildInputs = [ extra-cmake-modules kdoctools ]; + buildInputs = [ + kcmutils kconfig kdbusaddons khtml ki18n kiconthemes kio kitemviews kservice + kwindowsystem kxmlgui qtquickcontrols qtquickcontrols2 + kactivities kactivities-stats kirigami2 kcrash plasma-workspace + ]; + outputs = [ "bin" "dev" "out" ]; +} diff --git a/nixpkgs/pkgs/desktops/plasma-5/user-manager.nix b/nixpkgs/pkgs/desktops/plasma-5/user-manager.nix new file mode 100644 index 000000000000..f46792fc48f7 --- /dev/null +++ b/nixpkgs/pkgs/desktops/plasma-5/user-manager.nix @@ -0,0 +1,13 @@ +{ + mkDerivation, extra-cmake-modules, kdoctools, kcmutils, kconfig, khtml, + ki18n, kiconthemes, kio, kwindowsystem, libpwquality +}: + +mkDerivation { + name = "user-manager"; + nativeBuildInputs = [ extra-cmake-modules kdoctools ]; + buildInputs = [ + kcmutils kconfig khtml ki18n kiconthemes kio kwindowsystem + libpwquality + ]; +} diff --git a/nixpkgs/pkgs/desktops/plasma-5/xdg-desktop-portal-kde.nix b/nixpkgs/pkgs/desktops/plasma-5/xdg-desktop-portal-kde.nix new file mode 100644 index 000000000000..1e04eb1e2b00 --- /dev/null +++ b/nixpkgs/pkgs/desktops/plasma-5/xdg-desktop-portal-kde.nix @@ -0,0 +1,15 @@ +{ + mkDerivation, + extra-cmake-modules, gettext, kdoctools, python, + kcoreaddons, knotifications, kwayland, kwidgetsaddons, kwindowsystem, + cups, pcre, pipewire, kio +}: + +mkDerivation { + name = "xdg-desktop-portal-kde"; + nativeBuildInputs = [ extra-cmake-modules gettext kdoctools python ]; + buildInputs = [ + cups pcre pipewire kio + kcoreaddons knotifications kwayland kwidgetsaddons kwindowsystem + ]; +} diff --git a/nixpkgs/pkgs/desktops/rox/rox-filer/default.nix b/nixpkgs/pkgs/desktops/rox/rox-filer/default.nix new file mode 100644 index 000000000000..cc7de2168e48 --- /dev/null +++ b/nixpkgs/pkgs/desktops/rox/rox-filer/default.nix @@ -0,0 +1,79 @@ +{ stdenv, fetchurl, pkgconfig, libxml2, gtk, libSM, shared-mime-info }: + +let + version = "2.11"; + name = "rox-filer-${version}"; +in stdenv.mkDerivation { + inherit name; + + src = fetchurl { + url = "mirror://sourceforge/rox/rox-filer-${version}.tar.bz2"; + sha256 = "a929bd32ee18ef7a2ed48b971574574592c42e34ae09f36604bf663d7c101ba8"; + }; + + nativeBuildInputs = [ pkgconfig ]; + buildInputs = [ libxml2 gtk shared-mime-info libSM ]; + NIX_LDFLAGS = "-ldl -lm"; + + patches = [ + ./rox-filer-2.11-in-source-build.patch + ]; + + # go to the source directory after unpacking the sources + setSourceRoot = "export sourceRoot=rox-filer-${version}/ROX-Filer/"; + + # patch source with defined patches + patchFlags = [ "-p0" ]; + + # patch the main.c to disable the lookup of the APP_DIR environment variable, + # which is used to lookup the location for certain images when rox-filer + # starts; rather override the location with an absolute path to the directory + # where images are stored to prevent having to use a wrapper, which sets the + # APP_DIR environment variable prior to starting rox-filer + preConfigure = '' + sed -i -e "s:g_strdup(getenv(\"APP_DIR\")):\"$out\":" src/main.c + mkdir build + cd build + ''; + + configureScript = "../src/configure"; + + installPhase = '' + mkdir -p "$out" + cd .. + cp -av Help Messages Options.xml ROX images style.css .DirIcon "$out" + + # create the man/ directory, which will be moved from $out to share/ in the fixup phase + mkdir "$out/man/" + cp -av ../rox.1 "$out/man/" + + # the main executable + mkdir "$out/bin/" + cp -v ROX-Filer "$out/bin/rox" + + # mime types + mkdir -p "$out/ROX/MIME" + cd "$out/ROX/MIME" + ln -sv text-x-{diff,patch}.png + ln -sv application-x-font-{afm,type1}.png + ln -sv application-xml{,-dtd}.png + ln -sv application-xml{,-external-parsed-entity}.png + ln -sv application-{,rdf+}xml.png + ln -sv application-x{ml,-xbel}.png + ln -sv application-{x-shell,java}script.png + ln -sv application-x-{bzip,xz}-compressed-tar.png + ln -sv application-x-{bzip,lzma}-compressed-tar.png + ln -sv application-x-{bzip-compressed-tar,lzo}.png + ln -sv application-x-{bzip,xz}.png + ln -sv application-x-{gzip,lzma}.png + ln -sv application-{msword,rtf}.png + ''; + + meta = with stdenv.lib; { + description = "Fast, lightweight, gtk2 file manager"; + homepage = "http://rox.sourceforge.net/desktop"; + license = with licenses; [ gpl2 lgpl2 ]; + platforms = platforms.linux; + maintainers = [ maintainers.eleanor ]; + }; +} diff --git a/nixpkgs/pkgs/desktops/rox/rox-filer/rox-filer-2.11-in-source-build.patch b/nixpkgs/pkgs/desktops/rox/rox-filer/rox-filer-2.11-in-source-build.patch new file mode 100644 index 000000000000..11bd80044595 --- /dev/null +++ b/nixpkgs/pkgs/desktops/rox/rox-filer/rox-filer-2.11-in-source-build.patch @@ -0,0 +1,16 @@ +--- src/configure 2011-10-09 16:32:14.000000000 +0200 ++++ src/configure2 2016-03-20 09:26:31.640891863 +0100 +@@ -2132,13 +2132,6 @@ + + + ac_config_headers="$ac_config_headers config.h" +- +- +- if [ -f configure ]; then +- as_fn_error $? "Please run configure from the build directory (try ../AppRun --compile)" "$LINENO" 5 +- exit 1 +-fi +- + ac_ext=c + ac_cpp='$CPP $CPPFLAGS' + ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' diff --git a/nixpkgs/pkgs/desktops/surf-display/default.nix b/nixpkgs/pkgs/desktops/surf-display/default.nix new file mode 100644 index 000000000000..dd0644866478 --- /dev/null +++ b/nixpkgs/pkgs/desktops/surf-display/default.nix @@ -0,0 +1,57 @@ +{ stdenv, fetchgit, makeWrapper +, surf, wmctrl, matchbox, xdotool, unclutter +, xorg, pulseaudio, xprintidle-ng }: + +stdenv.mkDerivation rec { + pname = "surf-display"; + version = "unstable-2019-04-15"; + + src = fetchgit { + url = "https://code.it-zukunft-schule.de/cgit/surf-display"; + rev = "972d6c4b7c4503dbb63fa6c92cdc24d1e32064a4"; + sha256 = "03c68gg4kfmkri1gn5b7m1g8vh9ciawhajb29c17kkc7mn388hjm"; + }; + + nativeBuildInputs = [ makeWrapper ]; + + buildInputs = [ + surf + wmctrl + matchbox + pulseaudio + xprintidle-ng + xdotool + xorg.xmodmap + xorg.xkbutils + unclutter + ]; + + patches = [ ./pdf-makefile.patch ]; + + buildFlags = [ "man" ]; + + postFixup = '' + substituteInPlace $out/share/xsessions/surf-display.desktop \ + --replace surf-display $out/bin/surf-display + + substituteInPlace $out/bin/surf-display --replace /usr/share $out/share + + patchShebangs $out/bin/surf-display + wrapProgram $out/bin/surf-display \ + --prefix PATH ':' ${stdenv.lib.makeBinPath buildInputs} + ''; + + makeFlags = [ "PREFIX=${placeholder "out"}" ]; + + passthru = { + providedSessions = [ "surf-display" ]; + }; + + meta = with stdenv.lib; { + description = "Kiosk browser session manager based on the surf browser"; + homepage = "https://code.it-zukunft-schule.de/cgit/surf-display/"; + maintainers = with maintainers; [ etu ]; + license = licenses.gpl2; + platforms = platforms.linux; + }; +} diff --git a/nixpkgs/pkgs/desktops/surf-display/pdf-makefile.patch b/nixpkgs/pkgs/desktops/surf-display/pdf-makefile.patch new file mode 100644 index 000000000000..9c2541052c0e --- /dev/null +++ b/nixpkgs/pkgs/desktops/surf-display/pdf-makefile.patch @@ -0,0 +1,24 @@ +diff --git a/Makefile b/Makefile +index 1081d64..499160c 100644 +--- a/Makefile ++++ b/Makefile +@@ -13,19 +13,10 @@ man:: + gzip -9 -c -n data/surf-display.1 > data/surf-display.1.gz + + install: +- if [ ! -e data/surf-display.pdf.gz ]; then \ +- echo "Run 'make build' first, before running 'sudo make install'."; \ +- exit -1; \ +- fi +- + # script + mkdir -p $(DESTDIR)$(PREFIX)/bin/ + install -m 0755 bin/surf-display $(DESTDIR)$(PREFIX)/bin/ + +- # LaTeX Beamer PDF: Impressive HowTo +- mkdir -p $(DESTDIR)$(PREFIX)/share/doc/surf-display/ +- install -m 0644 data/*.pdf.gz $(DESTDIR)$(PREFIX)/share/doc/surf-display/ +- + # man page + mkdir -p $(DESTDIR)$(PREFIX)/share/man/man1 + install -m 0644 data/*.1.gz $(DESTDIR)$(PREFIX)/share/man/man1/ diff --git a/nixpkgs/pkgs/desktops/xfce/applications/catfish/default.nix b/nixpkgs/pkgs/desktops/xfce/applications/catfish/default.nix new file mode 100644 index 000000000000..7b9587b988b9 --- /dev/null +++ b/nixpkgs/pkgs/desktops/xfce/applications/catfish/default.nix @@ -0,0 +1,66 @@ +{ stdenv, fetchurl, file, which, intltool, gobject-introspection, + findutils, xdg_utils, dconf, gtk3, python3Packages, + wrapGAppsHook +}: + +python3Packages.buildPythonApplication rec { + pname = "catfish"; + version = "1.4.13"; + + src = fetchurl { + url = "https://archive.xfce.org/src/apps/${pname}/${stdenv.lib.versions.majorMinor version}/${pname}-${version}.tar.bz2"; + sha256 = "0fg89946z6n8njxn4mv29jksw8yavg8vypsljn9031pjwl3fmh2q"; + }; + + nativeBuildInputs = [ + python3Packages.distutils_extra + file + which + intltool + gobject-introspection # for setup hook populating GI_TYPELIB_PATH + wrapGAppsHook + ]; + + buildInputs = [ + gtk3 + dconf + python3Packages.pyxdg + python3Packages.ptyprocess + python3Packages.pycairo + gobject-introspection # Temporary fix, see https://github.com/NixOS/nixpkgs/issues/56943 + ]; + + propagatedBuildInputs = [ + python3Packages.dbus-python + python3Packages.pygobject3 + python3Packages.pexpect + xdg_utils + findutils + ]; + + # Explicitly set the prefix dir in "setup.py" because setuptools is + # not using "$out" as the prefix when installing catfish data. In + # particular the variable "__catfish_data_directory__" in + # "catfishconfig.py" is being set to a subdirectory in the python + # path in the store. + postPatch = '' + sed -i "/^ if self.root/i\\ self.prefix = \"$out\"" setup.py + ''; + + # Disable check because there is no test in the source distribution + doCheck = false; + + meta = with stdenv.lib; { + homepage = "https://docs.xfce.org/apps/catfish/start"; + description = "Handy file search tool"; + longDescription = '' + Catfish is a handy file searching tool. The interface is + intentionally lightweight and simple, using only GTK 3. + You can configure it to your needs by using several command line + options. + ''; + license = licenses.gpl2Plus; + platforms = platforms.linux; + maintainers = [ maintainers.romildo ]; + }; +} diff --git a/nixpkgs/pkgs/desktops/xfce/applications/gigolo/default.nix b/nixpkgs/pkgs/desktops/xfce/applications/gigolo/default.nix new file mode 100644 index 000000000000..251866528e64 --- /dev/null +++ b/nixpkgs/pkgs/desktops/xfce/applications/gigolo/default.nix @@ -0,0 +1,17 @@ +{ mkXfceDerivation, exo, gtk3, gvfs, glib }: + +mkXfceDerivation { + category = "apps"; + pname = "gigolo"; + version = "0.5.1"; + odd-unstable = false; + + sha256 = "11a35z5apr26nl6fpmbsvvv3xf5w61sgzcb505plavrchpfbdxjn"; + + nativeBuildInputs = [ exo ]; + buildInputs = [ gtk3 glib gvfs ]; + + meta = { + description = "A frontend to easily manage connections to remote filesystems"; + }; +} diff --git a/nixpkgs/pkgs/desktops/xfce/applications/mousepad/default.nix b/nixpkgs/pkgs/desktops/xfce/applications/mousepad/default.nix new file mode 100644 index 000000000000..6f841958c795 --- /dev/null +++ b/nixpkgs/pkgs/desktops/xfce/applications/mousepad/default.nix @@ -0,0 +1,19 @@ +{ mkXfceDerivation, exo, glib, gtk3, gtksourceview3, xfconf }: + +mkXfceDerivation { + category = "apps"; + pname = "mousepad"; + version = "0.4.2"; + + sha256 = "0a35vaq4l0d8vzw7hqpvbgkr3wj1sqr2zvj7bc5z4ikz2cppqj7p"; + + nativeBuildInputs = [ exo ]; + buildInputs = [ glib gtk3 gtksourceview3 xfconf ]; + + # See https://github.com/NixOS/nixpkgs/issues/36468 + NIX_CFLAGS_COMPILE = "-I${glib.dev}/include/gio-unix-2.0"; + + meta = { + description = "A simple text editor for Xfce"; + }; +} diff --git a/nixpkgs/pkgs/desktops/xfce/applications/orage/default.nix b/nixpkgs/pkgs/desktops/xfce/applications/orage/default.nix new file mode 100644 index 000000000000..08b78ec40067 --- /dev/null +++ b/nixpkgs/pkgs/desktops/xfce/applications/orage/default.nix @@ -0,0 +1,39 @@ +{ lib, fetchpatch, mkXfceDerivation, dbus-glib, gtk2, libical, libnotify, tzdata +, popt, libxfce4ui, xfce4-panel, withPanelPlugin ? true }: + +assert withPanelPlugin -> libxfce4ui != null && xfce4-panel != null; + +let + inherit (lib) optionals; +in + +mkXfceDerivation { + category = "archive"; + pname = "orage"; + version = "4.12.1"; + + sha256 = "04z6y1vfaz1im1zq1zr7cf8pjibjhj9zkyanbp7vn30q520yxa0m"; + buildInputs = [ dbus-glib gtk2 libical libnotify popt ] + ++ optionals withPanelPlugin [ libxfce4ui xfce4-panel ]; + + postPatch = '' + substituteInPlace src/parameters.c --replace "/usr/share/zoneinfo" "${tzdata}/share/zoneinfo" + substituteInPlace src/tz_zoneinfo_read.c --replace "/usr/share/zoneinfo" "${tzdata}/share/zoneinfo" + substituteInPlace tz_convert/tz_convert.c --replace "/usr/share/zoneinfo" "${tzdata}/share/zoneinfo" + ''; + + postConfigure = "rm -rf libical"; # ensure pkgs.libical is used instead of one included in the orage sources + + patches = [ + # Fix build with libical 3.0 + (fetchpatch { + name = "fix-libical3.patch"; + url = "https://git.archlinux.org/svntogit/packages.git/plain/trunk/libical3.patch?h=packages/orage&id=7b1b06c42dda034d538977b9f3550b28e370057f"; + sha256 = "1l8s106mcidmbx2p8c2pi8v9ngbv2x3fsgv36j8qk8wyd4qd1jbf"; + }) + ]; + + meta = { + description = "A simple calendar application with reminders"; + }; +} diff --git a/nixpkgs/pkgs/desktops/xfce/applications/parole/default.nix b/nixpkgs/pkgs/desktops/xfce/applications/parole/default.nix new file mode 100644 index 000000000000..bfb865184487 --- /dev/null +++ b/nixpkgs/pkgs/desktops/xfce/applications/parole/default.nix @@ -0,0 +1,37 @@ +{ mkXfceDerivation, dbus, dbus-glib +, gst_all_1, gtk3, libnotify, libxfce4ui, libxfce4util +, taglib, xfconf }: + +# Doesn't seem to find H.264 codec even though built with gst-plugins-bad. + +mkXfceDerivation { + category = "apps"; + pname = "parole"; + version = "1.0.5"; + + sha256 = "0qgis2gnkcvg7xwp76cbi0ihqdjprvvw2d66hk7klhrafp7c0v13"; + + postPatch = '' + substituteInPlace src/plugins/mpris2/Makefile.am \ + --replace GST_BASE_CFLAGS GST_VIDEO_CFLAGS + ''; + + buildInputs = with gst_all_1; [ + dbus + dbus-glib + gst-plugins-bad + gst-plugins-base + gst-plugins-good + gst-plugins-ugly + gtk3 + libnotify + libxfce4ui + libxfce4util + taglib + xfconf + ]; + + meta = { + description = "Modern simple media player"; + }; +} diff --git a/nixpkgs/pkgs/desktops/xfce/applications/ristretto/default.nix b/nixpkgs/pkgs/desktops/xfce/applications/ristretto/default.nix new file mode 100644 index 000000000000..8766bd302ab3 --- /dev/null +++ b/nixpkgs/pkgs/desktops/xfce/applications/ristretto/default.nix @@ -0,0 +1,17 @@ +{ mkXfceDerivation, automakeAddFlags, exo, gtk3, glib, libexif +, libxfce4ui, libxfce4util, xfconf }: + +mkXfceDerivation { + category = "apps"; + pname = "ristretto"; + version = "0.10.0"; + + sha256 = "07h7wbq3xh2ac6q4kp2ai1incfn0zfxxngap7hzqx47a5xw2mrm8"; + + nativeBuildInputs = [ exo ]; + buildInputs = [ glib gtk3 libexif libxfce4ui libxfce4util xfconf ]; + + meta = { + description = "A fast and lightweight picture-viewer for the Xfce desktop environment"; + }; +} diff --git a/nixpkgs/pkgs/desktops/xfce/applications/xfburn/default.nix b/nixpkgs/pkgs/desktops/xfce/applications/xfburn/default.nix new file mode 100644 index 000000000000..8aff25df4943 --- /dev/null +++ b/nixpkgs/pkgs/desktops/xfce/applications/xfburn/default.nix @@ -0,0 +1,12 @@ +{ mkXfceDerivation, docbook_xsl, exo, gtk3, libburn, libisofs, libxfce4ui, libxslt }: + +mkXfceDerivation { + category = "apps"; + pname = "xfburn"; + version = "0.6.2"; + + sha256 = "02axhsbbsvd31jb0xs1d2qxr614qb29pajv0sm2p1n1c2cv2fjh1"; + + nativeBuildInputs = [ libxslt docbook_xsl ]; + buildInputs = [ exo gtk3 libburn libisofs libxfce4ui ]; +} diff --git a/nixpkgs/pkgs/desktops/xfce/applications/xfce4-dict/configure-gio.patch b/nixpkgs/pkgs/desktops/xfce/applications/xfce4-dict/configure-gio.patch new file mode 100644 index 000000000000..787b63511a23 --- /dev/null +++ b/nixpkgs/pkgs/desktops/xfce/applications/xfce4-dict/configure-gio.patch @@ -0,0 +1,11 @@ +diff -urNZ a/configure.ac.in b/configure.ac.in +--- a/configure.ac.in 2017-12-16 19:46:13.784914017 +0000 ++++ b/configure.ac.in 2017-12-16 19:46:38.612477052 +0000 +@@ -53,6 +53,7 @@ + dnl *********************************** + dnl *** Check for required packages *** + dnl *********************************** ++XDT_CHECK_PACKAGE([GIO], [gio-unix-2.0], [2.32.0]) + XDT_CHECK_PACKAGE([GTHREAD], [gthread-2.0], [2.24.0]) + XDT_CHECK_PACKAGE([GTK], [gtk+-3.0], [3.20.0]) + XDT_CHECK_PACKAGE([LIBXFCE4UI], [libxfce4ui-2], [4.12.0]) diff --git a/nixpkgs/pkgs/desktops/xfce/applications/xfce4-dict/default.nix b/nixpkgs/pkgs/desktops/xfce/applications/xfce4-dict/default.nix new file mode 100644 index 000000000000..7e582abc05f7 --- /dev/null +++ b/nixpkgs/pkgs/desktops/xfce/applications/xfce4-dict/default.nix @@ -0,0 +1,23 @@ +{ mkXfceDerivation, automakeAddFlags, gtk3, libxfce4ui, libxfce4util, xfce4-panel }: + +mkXfceDerivation { + category = "apps"; + pname = "xfce4-dict"; + version = "0.8.3"; + + sha256 = "0p7k2ffknr23hh3j17dhh5q8adn736p2piwx0sg8f5dvvhhc5whz"; + + patches = [ ./configure-gio.patch ]; + + nativeBuildInputs = [ automakeAddFlags ]; + + postPatch = '' + automakeAddFlags lib/Makefile.am libdict_la_CFLAGS GIO_CFLAGS + ''; + + buildInputs = [ gtk3 libxfce4ui libxfce4util xfce4-panel ]; + + meta = { + description = "A Dictionary Client for the Xfce desktop environment"; + }; +} diff --git a/nixpkgs/pkgs/desktops/xfce/applications/xfce4-notifyd/default.nix b/nixpkgs/pkgs/desktops/xfce/applications/xfce4-notifyd/default.nix new file mode 100644 index 000000000000..40d9c188fa3d --- /dev/null +++ b/nixpkgs/pkgs/desktops/xfce/applications/xfce4-notifyd/default.nix @@ -0,0 +1,16 @@ +{ mkXfceDerivation, glib, exo, gtk3, libnotify, libxfce4ui, libxfce4util +, xfce4-panel, xfconf }: + +mkXfceDerivation { + category = "apps"; + pname = "xfce4-notifyd"; + version = "0.6.0"; + + sha256 = "03lw7zil6pwvx537ibqrynxjz7d6iq6in7vdskrnnn16kfg6hjg2"; + + buildInputs = [ exo gtk3 glib libnotify libxfce4ui libxfce4util xfce4-panel xfconf ]; + + meta = { + description = "Simple notification daemon for Xfce"; + }; +} diff --git a/nixpkgs/pkgs/desktops/xfce/applications/xfce4-screenshooter/default.nix b/nixpkgs/pkgs/desktops/xfce/applications/xfce4-screenshooter/default.nix new file mode 100644 index 000000000000..8c0fa3e3edb6 --- /dev/null +++ b/nixpkgs/pkgs/desktops/xfce/applications/xfce4-screenshooter/default.nix @@ -0,0 +1,16 @@ +{ mkXfceDerivation, exo, gtk3, libsoup, libxfce4ui, libxfce4util, xfce4-panel, glib-networking }: + +mkXfceDerivation { + category = "apps"; + pname = "xfce4-screenshooter"; + version = "1.9.7"; + odd-unstable = false; + + sha256 = "14vbd7iigaw57hl47rnixk873c20q5clqynzkm9zzpqc568dxixd"; + + buildInputs = [ exo gtk3 libsoup libxfce4ui libxfce4util xfce4-panel glib-networking ]; + + meta = { + description = "Screenshot utility for the Xfce desktop"; + }; +} diff --git a/nixpkgs/pkgs/desktops/xfce/applications/xfce4-taskmanager/default.nix b/nixpkgs/pkgs/desktops/xfce/applications/xfce4-taskmanager/default.nix new file mode 100644 index 000000000000..9a923025c94d --- /dev/null +++ b/nixpkgs/pkgs/desktops/xfce/applications/xfce4-taskmanager/default.nix @@ -0,0 +1,16 @@ +{ lib, mkXfceDerivation, exo, gtk3, libwnck3, libXmu }: + +mkXfceDerivation { + category = "apps"; + pname = "xfce4-taskmanager"; + version = "1.2.3"; + + sha256 = "0818chns7vkvjqakgz8z790adkygcq4jlw59dv6kyzk17hxq6cxv"; + + nativeBuildInputs = [ exo ]; + buildInputs = [ gtk3 libwnck3 libXmu ]; + + meta = { + description = "Easy to use task manager for Xfce"; + }; +} diff --git a/nixpkgs/pkgs/desktops/xfce/applications/xfce4-terminal/default.nix b/nixpkgs/pkgs/desktops/xfce/applications/xfce4-terminal/default.nix new file mode 100644 index 000000000000..56de8d3bfb83 --- /dev/null +++ b/nixpkgs/pkgs/desktops/xfce/applications/xfce4-terminal/default.nix @@ -0,0 +1,15 @@ +{ mkXfceDerivation, gtk3, libxfce4ui, vte, xfconf, pcre2 }: + +mkXfceDerivation { + category = "apps"; + pname = "xfce4-terminal"; + version = "0.8.9.2"; + + sha256 = "1vlpfsrdalqmsd86aj0kvvam5skzn6xngigjziwli6q6il6lb9fj"; + + buildInputs = [ gtk3 libxfce4ui vte xfconf pcre2 ]; + + meta = { + description = "A modern terminal emulator"; + }; +} diff --git a/nixpkgs/pkgs/desktops/xfce/applications/xfce4-volumed-pulse/default.nix b/nixpkgs/pkgs/desktops/xfce/applications/xfce4-volumed-pulse/default.nix new file mode 100644 index 000000000000..413c04a84cc1 --- /dev/null +++ b/nixpkgs/pkgs/desktops/xfce/applications/xfce4-volumed-pulse/default.nix @@ -0,0 +1,17 @@ +{ lib, mkXfceDerivation, gtk3, libnotify, libpulseaudio, keybinder3, xfconf }: + +mkXfceDerivation { + category = "apps"; + pname = "xfce4-volumed-pulse"; + version = "0.2.3"; + + sha256 = "1rsjng9qmq7vzrx5bfxq76h63y501cfl1mksrxkf1x39by9r628j"; + + buildInputs = [ gtk3 libnotify libpulseaudio keybinder3 xfconf ]; + + meta = with lib; { + description = "A volume keys control daemon for Xfce using pulseaudio"; + license = licenses.gpl3Plus; + maintainers = [ maintainers.abbradar ]; + }; +} diff --git a/nixpkgs/pkgs/desktops/xfce/applications/xfce4-volumed/default.nix b/nixpkgs/pkgs/desktops/xfce/applications/xfce4-volumed/default.nix new file mode 100644 index 000000000000..aec898161ffb --- /dev/null +++ b/nixpkgs/pkgs/desktops/xfce/applications/xfce4-volumed/default.nix @@ -0,0 +1,52 @@ +{ stdenv, fetchurl, pkgconfig, makeWrapper +, gstreamer, gtk2, gst-plugins-base, libnotify +, keybinder, xfconf, xfce +}: + +let + category = "apps"; + + # The usual Gstreamer plugins package has a zillion dependencies + # that we don't need for a simple mixer, so build a minimal package. + gst_plugins_minimal = gst-plugins-base.override { + minimalDeps = true; + }; + +in + +stdenv.mkDerivation rec { + pname = "xfce4-volumed"; + version = "0.1.13"; + + src = fetchurl { + url = "mirror://xfce/src/${category}/${pname}/${stdenv.lib.versions.majorMinor version}/${pname}-${version}.tar.bz2"; + sha256 = "1aa0a1sbf9yzi7bc78kw044m0xzg1li3y4w9kf20wqv5kfjs7v2c"; + }; + + buildInputs = + [ gstreamer gst_plugins_minimal gtk2 + keybinder xfconf libnotify + ]; + + nativeBuildInputs = [ pkgconfig makeWrapper ]; + + postInstall = + '' + wrapProgram "$out/bin/xfce4-volumed" \ + --prefix GST_PLUGIN_SYSTEM_PATH : "$GST_PLUGIN_SYSTEM_PATH" + ''; + + passthru.updateScript = xfce.updateScript { + inherit pname version; + attrPath = "xfce.${pname}"; + versionLister = xfce.archiveLister category pname; + }; + + meta = with stdenv.lib; { + homepage = "https://www.xfce.org/projects/xfce4-volumed"; # referenced but inactive + description = "A volume keys control daemon for the Xfce desktop environment"; + license = licenses.gpl3; + platforms = platforms.linux; + maintainers = [ maintainers.abbradar ]; + }; +} diff --git a/nixpkgs/pkgs/desktops/xfce/applications/xfdashboard/default.nix b/nixpkgs/pkgs/desktops/xfce/applications/xfdashboard/default.nix new file mode 100644 index 000000000000..a9610125b5b5 --- /dev/null +++ b/nixpkgs/pkgs/desktops/xfce/applications/xfdashboard/default.nix @@ -0,0 +1,45 @@ +{ mkXfceDerivation +, clutter +, libXcomposite +, libXinerama +, libXdamage +, libX11 +, libwnck3 +, libxfce4ui +, libxfce4util +, garcon +, xfconf +, gtk3 +, glib +, dbus-glib +}: + +mkXfceDerivation { + category = "apps"; + pname = "xfdashboard"; + version = "0.7.7"; + rev-prefix = ""; + odd-unstable = false; + + sha256 = "0b9pl3k8wl7svwhb9knhvr86gjg2904n788l8cbczwy046ql7pyc"; + + buildInputs = [ + clutter + dbus-glib + garcon + glib + gtk3 + libX11 + libXcomposite + libXdamage + libXinerama + libwnck3 + libxfce4ui + libxfce4util + xfconf + ]; + + meta = { + description = "Gnome shell like dashboard"; + }; +} diff --git a/nixpkgs/pkgs/desktops/xfce/art/xfce4-icon-theme.nix b/nixpkgs/pkgs/desktops/xfce/art/xfce4-icon-theme.nix new file mode 100644 index 000000000000..e614bb1db921 --- /dev/null +++ b/nixpkgs/pkgs/desktops/xfce/art/xfce4-icon-theme.nix @@ -0,0 +1,35 @@ +{ stdenv, fetchurl, pkgconfig, intltool, gtk3, xfce }: + +let + category = "art"; +in + +stdenv.mkDerivation rec { + pname = "xfce4-icon-theme"; + version = "4.4.3"; + + src = fetchurl { + url = "mirror://xfce/src/${category}/${pname}/${stdenv.lib.versions.majorMinor version}/${pname}-${version}.tar.bz2"; + sha256 = "1yk6rx3zr9grm4jwpjvqdkl13pisy7qn1wm5cqzmd2kbsn96cy6l"; + }; + + nativeBuildInputs = [ + pkgconfig + intltool + gtk3 + ]; + + passthru.updateScript = xfce.updateScript { + inherit pname version; + attrPath = "xfce.${pname}"; + versionLister = xfce.archiveLister category pname; + }; + + meta = with stdenv.lib; { + homepage = "https://www.xfce.org/"; + description = "Icons for Xfce"; + license = licenses.gpl2Plus; + platforms = platforms.linux; + maintainers = [ maintainers.eelco ]; + }; +} diff --git a/nixpkgs/pkgs/desktops/xfce/art/xfwm4-themes.nix b/nixpkgs/pkgs/desktops/xfce/art/xfwm4-themes.nix new file mode 100644 index 000000000000..db0a1779a41b --- /dev/null +++ b/nixpkgs/pkgs/desktops/xfce/art/xfwm4-themes.nix @@ -0,0 +1,29 @@ +{ stdenv, fetchurl, xfce }: + +let + category = "art"; +in + +stdenv.mkDerivation rec { + pname = "xfwm4-themes"; + version = "4.10.0"; + + src = fetchurl { + url = "mirror://xfce/src/${category}/${pname}/${stdenv.lib.versions.majorMinor version}/${pname}-${version}.tar.bz2"; + sha256 = "0xfmdykav4rf6gdxbd6fhmrfrvbdc1yjihz7r7lba0wp1vqda51j"; + }; + + passthru.updateScript = xfce.updateScript { + inherit pname version; + attrPath = "xfce.${pname}"; + versionLister = xfce.archiveLister category pname; + }; + + meta = with stdenv.lib; { + homepage = "https://www.xfce.org/"; + description = "Themes for Xfce"; + license = licenses.gpl3; + platforms = platforms.linux; + maintainers = [ maintainers.volth ]; + }; +} diff --git a/nixpkgs/pkgs/desktops/xfce/automakeAddFlags.sh b/nixpkgs/pkgs/desktops/xfce/automakeAddFlags.sh new file mode 100644 index 000000000000..92d5659d05ca --- /dev/null +++ b/nixpkgs/pkgs/desktops/xfce/automakeAddFlags.sh @@ -0,0 +1,7 @@ +automakeAddFlags() { + local file="$1" + local target="$2" + local source="$3" + + sed "/$target/a\$($source) \\\\" -i $file +} diff --git a/nixpkgs/pkgs/desktops/xfce/core/exo/default.nix b/nixpkgs/pkgs/desktops/xfce/core/exo/default.nix new file mode 100644 index 000000000000..ee58c76ea02b --- /dev/null +++ b/nixpkgs/pkgs/desktops/xfce/core/exo/default.nix @@ -0,0 +1,31 @@ +{ mkXfceDerivation, docbook_xsl, glib, libxslt, perlPackages, gtk2, gtk3 +, libxfce4ui, libxfce4util }: + +mkXfceDerivation { + category = "xfce"; + pname = "exo"; + version = "0.12.11"; + + sha256 = "1db7w6jk3i501x4qw0hs0ydrm1fjdkxmahzbv5iag859wnnlg0pd"; + + nativeBuildInputs = [ + libxslt + perlPackages.URI + docbook_xsl + ]; + + buildInputs = [ + gtk2 # some xfce plugins still uses gtk2 + gtk3 + glib + libxfce4ui + libxfce4util + ]; + + # Workaround https://bugzilla.xfce.org/show_bug.cgi?id=15825 + NIX_CFLAGS_COMPILE = "-I${glib.dev}/include/gio-unix-2.0"; + + meta = { + description = "Application library for Xfce"; + }; +} diff --git a/nixpkgs/pkgs/desktops/xfce/core/garcon/default.nix b/nixpkgs/pkgs/desktops/xfce/core/garcon/default.nix new file mode 100644 index 000000000000..69184f2afa88 --- /dev/null +++ b/nixpkgs/pkgs/desktops/xfce/core/garcon/default.nix @@ -0,0 +1,15 @@ +{ mkXfceDerivation, gtk3, libxfce4ui, libxfce4util }: + +mkXfceDerivation { + category = "xfce"; + pname = "garcon"; + version = "0.6.4"; + + sha256 = "0pamhp1wffiw638s66nws2mpzmwkhvhb6iwccfy8b0kyr57wipjv"; + + buildInputs = [ gtk3 libxfce4ui libxfce4util ]; + + meta = { + description = "Xfce menu support library"; + }; +} diff --git a/nixpkgs/pkgs/desktops/xfce/core/libxfce4ui/default.nix b/nixpkgs/pkgs/desktops/xfce/core/libxfce4ui/default.nix new file mode 100644 index 000000000000..79c8ec74b626 --- /dev/null +++ b/nixpkgs/pkgs/desktops/xfce/core/libxfce4ui/default.nix @@ -0,0 +1,23 @@ +{ lib, mkXfceDerivation, gobject-introspection, gtk2, gtk3, libICE, libSM +, libstartup_notification, libxfce4util, xfconf }: + +mkXfceDerivation { + category = "xfce"; + pname = "libxfce4ui"; + version = "4.14.1"; + + sha256 = "0fnncf30s51qhgixn57z4d021pjjhzgsg2x69w4dy68vff2347qy"; + + nativeBuildInputs = [ gobject-introspection ]; + buildInputs = [ gtk2 gtk3 libstartup_notification xfconf ]; + propagatedBuildInputs = [ libxfce4util libICE libSM ]; + + configureFlags = [ + "--with-vendor-info='NixOS'" + ]; + + meta = with lib; { + description = "Widgets library for Xfce"; + license = licenses.lgpl2Plus; + }; +} diff --git a/nixpkgs/pkgs/desktops/xfce/core/libxfce4util/default.nix b/nixpkgs/pkgs/desktops/xfce/core/libxfce4util/default.nix new file mode 100644 index 000000000000..4540d2352511 --- /dev/null +++ b/nixpkgs/pkgs/desktops/xfce/core/libxfce4util/default.nix @@ -0,0 +1,16 @@ +{ lib, mkXfceDerivation, gobject-introspection }: + +mkXfceDerivation { + category = "xfce"; + pname = "libxfce4util"; + version = "4.14.0"; + + sha256 = "0vq16bzmnykiikg4dhiaj0qbyj76nkdd54j6k6n568h3dc9ix6q4"; + + nativeBuildInputs = [ gobject-introspection ]; + + meta = with lib; { + description = "Extension library for Xfce"; + license = licenses.lgpl2Plus; + }; +} diff --git a/nixpkgs/pkgs/desktops/xfce/core/thunar-volman/default.nix b/nixpkgs/pkgs/desktops/xfce/core/thunar-volman/default.nix new file mode 100644 index 000000000000..ecc26ccb8fea --- /dev/null +++ b/nixpkgs/pkgs/desktops/xfce/core/thunar-volman/default.nix @@ -0,0 +1,17 @@ +{ mkXfceDerivation, exo, gtk3, libgudev, libxfce4ui, libxfce4util, xfconf }: + +mkXfceDerivation { + category = "xfce"; + pname = "thunar-volman"; + version = "0.9.5"; + + buildInputs = [ exo gtk3 libgudev libxfce4ui libxfce4util xfconf ]; + + sha256 = "1qrlpn0q5g9psd41l6y80r3bvbg8jaic92m6r400zzwcvivf95z0"; + + odd-unstable = false; + + meta = { + description = "Thunar extension for automatic management of removable drives and media"; + }; +} diff --git a/nixpkgs/pkgs/desktops/xfce/core/thunar/default.nix b/nixpkgs/pkgs/desktops/xfce/core/thunar/default.nix new file mode 100644 index 000000000000..24df606e2466 --- /dev/null +++ b/nixpkgs/pkgs/desktops/xfce/core/thunar/default.nix @@ -0,0 +1,70 @@ +{ mkXfceDerivation +, lib +, docbook_xsl +, exo +, gdk-pixbuf +, gtk3 +, libgudev +, libnotify +, libX11 +, libxfce4ui +, libxfce4util +, libxslt +, xfconf +, gobject-introspection +, gvfs +, makeWrapper +, symlinkJoin +, thunarPlugins ? [] +}: + +let unwrapped = mkXfceDerivation { + category = "xfce"; + pname = "thunar"; + version = "1.8.14"; + + sha256 = "1ph9bcqfm2nccliagl8zdl1dizh62qnr8m5hacri3cs2jhc0jjpy"; + + nativeBuildInputs = [ + docbook_xsl + gobject-introspection + libxslt + ]; + + buildInputs = [ + exo + gdk-pixbuf + gtk3 + gvfs + libX11 + libgudev + libnotify + libxfce4ui + libxfce4util + xfconf + ]; + + patches = [ + ./thunarx_plugins_directory.patch + ]; + + # the desktop file … is in an insecure location» + # which pops up when invoking desktop files that are + # symlinks to the /nix/store + # + # this error was added by this commit: + # https://github.com/xfce-mirror/thunar/commit/1ec8ff89ec5a3314fcd6a57f1475654ddecc9875 + postPatch = '' + sed -i -e 's|thunar_dialogs_show_insecure_program (parent, _(".*"), file, exec)|1|' thunar/thunar-file.c + ''; + + meta = { + description = "Xfce file manager"; + }; +}; + +in if thunarPlugins == [] then unwrapped + else import ./wrapper.nix { + inherit makeWrapper symlinkJoin thunarPlugins lib; + thunar = unwrapped; + } diff --git a/nixpkgs/pkgs/desktops/xfce/core/thunar/thunarx_plugins_directory.patch b/nixpkgs/pkgs/desktops/xfce/core/thunar/thunarx_plugins_directory.patch new file mode 100644 index 000000000000..594a81c829ef --- /dev/null +++ b/nixpkgs/pkgs/desktops/xfce/core/thunar/thunarx_plugins_directory.patch @@ -0,0 +1,48 @@ +diff --git a/thunarx/thunarx-provider-factory.c b/thunarx/thunarx-provider-factory.c +index 94b11545..1f66c982 100644 +--- a/thunarx/thunarx-provider-factory.c ++++ b/thunarx/thunarx-provider-factory.c +@@ -150,12 +150,19 @@ static GList* + thunarx_provider_factory_load_modules (ThunarxProviderFactory *factory) + { + ThunarxProviderModule *module; ++ const gchar *thunar_dir; + const gchar *name; + GList *modules = NULL; + GList *lp; + GDir *dp; + +- dp = g_dir_open (THUNARX_DIRECTORY, 0, NULL); ++ thunar_dir = g_getenv("THUNARX_MODULE_DIR"); ++ if (NULL == thunar_dir) ++ { ++ thunar_dir = THUNARX_DIRECTORY; ++ } ++ ++ dp = g_dir_open (thunar_dir, 0, NULL); + if (G_LIKELY (dp != NULL)) + { + /* determine the types for all existing plugins */ +diff --git a/thunarx/thunarx-provider-module.c b/thunarx/thunarx-provider-module.c +index 023ad2ae..b1d1be8f 100644 +--- a/thunarx/thunarx-provider-module.c ++++ b/thunarx/thunarx-provider-module.c +@@ -174,10 +174,17 @@ static gboolean + thunarx_provider_module_load (GTypeModule *type_module) + { + ThunarxProviderModule *module = THUNARX_PROVIDER_MODULE (type_module); ++ const gchar *thunar_dir; + gchar *path; + ++ thunar_dir = g_getenv("THUNARX_MODULE_DIR"); ++ if (NULL == thunar_dir) ++ { ++ thunar_dir = THUNARX_DIRECTORY; ++ } ++ + /* load the module using the runtime link editor */ +- path = g_build_filename (THUNARX_DIRECTORY, type_module->name, NULL); ++ path = g_build_filename (thunar_dir, type_module->name, NULL); + module->library = g_module_open (path, G_MODULE_BIND_LAZY | G_MODULE_BIND_LOCAL); + g_free (path); + diff --git a/nixpkgs/pkgs/desktops/xfce/core/thunar/wrapper.nix b/nixpkgs/pkgs/desktops/xfce/core/thunar/wrapper.nix new file mode 100644 index 000000000000..cc44e6624571 --- /dev/null +++ b/nixpkgs/pkgs/desktops/xfce/core/thunar/wrapper.nix @@ -0,0 +1,34 @@ +{ makeWrapper, symlinkJoin, thunar, thunarPlugins, lib }: + +symlinkJoin { + name = "thunar-with-plugins-${thunar.version}"; + + paths = [ thunar ] ++ thunarPlugins; + + buildInputs = [ makeWrapper ]; + + postBuild = '' + wrapProgram "$out/bin/thunar" \ + --set "THUNARX_MODULE_DIR" "$out/lib/thunarx-3" + + wrapProgram "$out/bin/thunar-settings" \ + --set "THUNARX_MODULE_DIR" "$out/lib/thunarx-3" + + for file in "lib/systemd/user/thunar.service" "share/dbus-1/services/org.xfce.FileManager.service" \ + "share/dbus-1/services/org.xfce.Thunar.FileManager1.service" \ + "share/dbus-1/services/org.xfce.Thunar.service" + do + rm -f "$out/$file" + substitute "${thunar}/$file" "$out/$file" \ + --replace "${thunar}" "$out" + done + ''; + + meta = with lib; { + inherit (thunar.meta) homepage license platforms maintainers; + + description = thunar.meta.description + optionalString + (0 != length thunarPlugins) + " (with plugins: ${concatStrings (intersperse ", " (map (x: x.name) thunarPlugins))})"; + }; +} diff --git a/nixpkgs/pkgs/desktops/xfce/core/tumbler/default.nix b/nixpkgs/pkgs/desktops/xfce/core/tumbler/default.nix new file mode 100644 index 000000000000..1a615b8f66a5 --- /dev/null +++ b/nixpkgs/pkgs/desktops/xfce/core/tumbler/default.nix @@ -0,0 +1,39 @@ +{ mkXfceDerivation +, ffmpegthumbnailer +, gdk-pixbuf +, glib +, freetype +, libgsf +, poppler +, libjpeg +, gst_all_1 +}: + +# TODO: add libopenraw + +mkXfceDerivation { + category = "xfce"; + pname = "tumbler"; + version = "0.2.8"; + + sha256 = "1y9sphaz3izal96v53lps692xxzp5pad1d09kxsmmpm7pic4n1r2"; + + buildInputs = [ + ffmpegthumbnailer + freetype + gdk-pixbuf + glib + gst_all_1.gst-plugins-base + libgsf + poppler # technically the glib binding + ]; + + # WrapGAppsHook won't touch this binary automatically, so we wrap manually. + postFixup = '' + wrapProgram $out/lib/tumbler-1/tumblerd "''${gappsWrapperArgs[@]}" + ''; + + meta = { + description = "A D-Bus thumbnailer service"; + }; +} diff --git a/nixpkgs/pkgs/desktops/xfce/core/xfce4-appfinder/default.nix b/nixpkgs/pkgs/desktops/xfce/core/xfce4-appfinder/default.nix new file mode 100644 index 000000000000..cbb444c6c764 --- /dev/null +++ b/nixpkgs/pkgs/desktops/xfce/core/xfce4-appfinder/default.nix @@ -0,0 +1,16 @@ +{ mkXfceDerivation, exo, garcon, gtk3, libxfce4util, libxfce4ui, xfconf }: + +mkXfceDerivation { + category = "xfce"; + pname = "xfce4-appfinder"; + version = "4.14.0"; + + sha256 = "04h7jxfm3wkxnxfy8149dckay7i160vvk4p9lnq6xny22r4x20h8"; + + nativeBuildInputs = [ exo ]; + buildInputs = [ garcon gtk3 libxfce4ui libxfce4util xfconf ]; + + meta = { + description = "Appfinder for the Xfce4 Desktop Environment"; + }; +} diff --git a/nixpkgs/pkgs/desktops/xfce/core/xfce4-dev-tools/default.nix b/nixpkgs/pkgs/desktops/xfce/core/xfce4-dev-tools/default.nix new file mode 100644 index 000000000000..38fe82ffb011 --- /dev/null +++ b/nixpkgs/pkgs/desktops/xfce/core/xfce4-dev-tools/default.nix @@ -0,0 +1,32 @@ +{ mkXfceDerivation, autoreconfHook, autoconf, automake +, glib, gtk-doc, intltool, libtool }: + +mkXfceDerivation { + category = "xfce"; + pname = "xfce4-dev-tools"; + version = "4.14.0"; + + sha256 = "10hcj88784faqrk08xb538355cla26vdk9ckx158hqdqv38sb42f"; + + nativeBuildInputs = [ autoreconfHook ]; + + propagatedBuildInputs = [ + autoconf + automake + glib + gtk-doc + intltool + libtool + ]; + + preAutoreconf = '' + substitute configure.ac.in configure.ac \ + --subst-var-by REVISION UNKNOWN + ''; + + setupHook = ./setup-hook.sh; + + meta = { + description = "Autoconf macros and scripts to augment app build systems"; + }; +} diff --git a/nixpkgs/pkgs/desktops/xfce/core/xfce4-dev-tools/setup-hook.sh b/nixpkgs/pkgs/desktops/xfce/core/xfce4-dev-tools/setup-hook.sh new file mode 100644 index 000000000000..600bf47fd872 --- /dev/null +++ b/nixpkgs/pkgs/desktops/xfce/core/xfce4-dev-tools/setup-hook.sh @@ -0,0 +1,12 @@ +xdtEnvHook() { + addToSearchPath ACLOCAL_PATH $1/share/xfce4/dev-tools/m4macros +} + +envHooks+=(xdtEnvHook) + +xdtAutogenPhase() { + mkdir -p m4 + NOCONFIGURE=1 xdt-autogen +} + +preConfigurePhases+=(xdtAutogenPhase) diff --git a/nixpkgs/pkgs/desktops/xfce/core/xfce4-panel/default.nix b/nixpkgs/pkgs/desktops/xfce/core/xfce4-panel/default.nix new file mode 100644 index 000000000000..ffd42e4a2c5b --- /dev/null +++ b/nixpkgs/pkgs/desktops/xfce/core/xfce4-panel/default.nix @@ -0,0 +1,29 @@ +{ mkXfceDerivation, tzdata, exo, garcon, gtk2, gtk3, glib, gettext, glib-networking, libxfce4ui, libxfce4util, libwnck3, xfconf, gobject-introspection }: + +mkXfceDerivation { + category = "xfce"; + pname = "xfce4-panel"; + version = "4.14.3"; + + sha256 = "0h8cqs2bghmyp0jihjm2wc7j14k271j178vllin271xrl7kzmvzv"; + + nativeBuildInputs = [ gobject-introspection ]; + buildInputs = [ exo garcon gtk2 gtk3 glib glib-networking libxfce4ui libxfce4util libwnck3 xfconf ]; + + patches = [ ./xfce4-panel-datadir.patch ]; + patchFlags = [ "-p1" ]; + + postPatch = '' + for f in $(find . -name \*.sh); do + substituteInPlace $f --replace gettext ${gettext}/bin/gettext + done + substituteInPlace plugins/clock/clock.c \ + --replace "/usr/share/zoneinfo" "${tzdata}/share/zoneinfo" + ''; + + configureFlags = [ "--enable-gtk3" ]; + + meta = { + description = "Xfce's panel"; + }; +} diff --git a/nixpkgs/pkgs/desktops/xfce/core/xfce4-panel/xfce4-panel-datadir.patch b/nixpkgs/pkgs/desktops/xfce/core/xfce4-panel/xfce4-panel-datadir.patch new file mode 100644 index 000000000000..ed9df9ef36f3 --- /dev/null +++ b/nixpkgs/pkgs/desktops/xfce/core/xfce4-panel/xfce4-panel-datadir.patch @@ -0,0 +1,24 @@ +diff --git a/panel/panel-module-factory.c b/panel/panel-module-factory.c +index 529fe85..8c792b7 100644 +--- a/panel/panel-module-factory.c ++++ b/panel/panel-module-factory.c +@@ -39,6 +39,7 @@ + #include <panel/panel-module.h> + #include <panel/panel-module-factory.h> + ++#define DATADIR "/run/current-system/sw/share/xfce4" + #define PANEL_PLUGINS_DATA_DIR (DATADIR G_DIR_SEPARATOR_S "panel" G_DIR_SEPARATOR_S "plugins") + #define PANEL_PLUGINS_DATA_DIR_OLD (DATADIR G_DIR_SEPARATOR_S "panel-plugins") + +diff --git a/panel/panel-module.c b/panel/panel-module.c +index ba39320..519440b 100644 +--- a/panel/panel-module.c ++++ b/panel/panel-module.c +@@ -35,6 +35,7 @@ + #include <panel/panel-plugin-external-wrapper.h> + #include <panel/panel-plugin-external-46.h> + ++#define LIBDIR "/run/current-system/sw/lib/xfce4" + #define PANEL_PLUGINS_LIB_DIR (LIBDIR G_DIR_SEPARATOR_S "panel" G_DIR_SEPARATOR_S "plugins") + #define PANEL_PLUGINS_LIB_DIR_OLD (LIBDIR G_DIR_SEPARATOR_S "panel-plugins") + diff --git a/nixpkgs/pkgs/desktops/xfce/core/xfce4-power-manager/default.nix b/nixpkgs/pkgs/desktops/xfce/core/xfce4-power-manager/default.nix new file mode 100644 index 000000000000..9f9a552b8cc6 --- /dev/null +++ b/nixpkgs/pkgs/desktops/xfce/core/xfce4-power-manager/default.nix @@ -0,0 +1,23 @@ +{ mkXfceDerivation, automakeAddFlags, exo, gtk3, libnotify +, libxfce4ui, libxfce4util, upower, xfconf }: + +mkXfceDerivation { + category = "xfce"; + pname = "xfce4-power-manager"; + version = "1.6.6"; + + sha256 = "0lyp3dp4ijbpf21vanrvgm6rmfp8v0zyqxibdj5gxnadmvcq38iy"; + + nativeBuildInputs = [ automakeAddFlags exo ]; + buildInputs = [ gtk3 libnotify libxfce4ui libxfce4util upower xfconf ]; + + postPatch = '' + substituteInPlace configure.ac.in --replace gio-2.0 gio-unix-2.0 + automakeAddFlags src/Makefile.am xfce4_power_manager_CFLAGS GIO_CFLAGS + automakeAddFlags settings/Makefile.am xfce4_power_manager_settings_CFLAGS GIO_CFLAGS + ''; + + meta = { + description = "A power manager for the Xfce Desktop Environment"; + }; +} diff --git a/nixpkgs/pkgs/desktops/xfce/core/xfce4-session/default.nix b/nixpkgs/pkgs/desktops/xfce/core/xfce4-session/default.nix new file mode 100644 index 000000000000..c7442a01957a --- /dev/null +++ b/nixpkgs/pkgs/desktops/xfce/core/xfce4-session/default.nix @@ -0,0 +1,22 @@ +{ mkXfceDerivation, polkit, exo, libxfce4util, libxfce4ui, xfconf, iceauth, gtk3, glib, libwnck3, xorg, xfce4-session }: + +mkXfceDerivation { + category = "xfce"; + pname = "xfce4-session"; + version = "4.14.2"; + + sha256 = "1gr6j96l792v33lbh7rqpbdjmy8m68hy14bsndx6bykv10zvmgx2"; + + buildInputs = [ exo gtk3 glib libxfce4ui libxfce4util libwnck3 xfconf polkit iceauth ]; + + configureFlags = [ "--with-xsession-prefix=${placeholder "out"}" ]; + + # See https://github.com/NixOS/nixpkgs/issues/36468 + NIX_CFLAGS_COMPILE = "-I${glib.dev}/include/gio-unix-2.0"; + + passthru.xinitrc = "${xfce4-session}/etc/xdg/xfce4/xinitrc"; + + meta = { + description = "Session manager for Xfce"; + }; +} diff --git a/nixpkgs/pkgs/desktops/xfce/core/xfce4-settings/default.nix b/nixpkgs/pkgs/desktops/xfce/core/xfce4-settings/default.nix new file mode 100644 index 000000000000..9b263e5ee733 --- /dev/null +++ b/nixpkgs/pkgs/desktops/xfce/core/xfce4-settings/default.nix @@ -0,0 +1,40 @@ +{ mkXfceDerivation, automakeAddFlags, exo, garcon, gtk3, glib +, libnotify, libxfce4ui, libxfce4util, libxklavier +, upower, xfconf, xf86inputlibinput }: + +mkXfceDerivation { + category = "xfce"; + pname = "xfce4-settings"; + version = "4.14.3"; + + sha256 = "1zzngdj7mp2r6rcs8gvda1218zlz5gpnc6gsp20z32l69psp3yld"; + + postPatch = '' + for f in $(find . -name \*.c); do + substituteInPlace $f --replace \"libinput-properties.h\" '<xorg/libinput-properties.h>' + done + ''; + + buildInputs = [ + exo + garcon + glib + gtk3 + libnotify + libxfce4ui + libxfce4util + libxklavier + upower + xf86inputlibinput + xfconf + ]; + + configureFlags = [ + "--enable-pluggable-dialogs" + "--enable-sound-settings" + ]; + + meta = { + description = "Settings manager for Xfce"; + }; +} diff --git a/nixpkgs/pkgs/desktops/xfce/core/xfconf/default.nix b/nixpkgs/pkgs/desktops/xfce/core/xfconf/default.nix new file mode 100644 index 000000000000..a0923f0fda1b --- /dev/null +++ b/nixpkgs/pkgs/desktops/xfce/core/xfconf/default.nix @@ -0,0 +1,15 @@ +{ mkXfceDerivation, libxfce4util }: + +mkXfceDerivation { + category = "xfce"; + pname = "xfconf"; + version = "4.14.1"; + + sha256 = "1mbqc1463xgn7gafbh2fyshshdxin33iwk96y4nw2gl48nhx4sgs"; + + buildInputs = [ libxfce4util ]; + + meta = { + description = "Simple client-server configuration storage and query system for Xfce"; + }; +} diff --git a/nixpkgs/pkgs/desktops/xfce/core/xfdesktop/default.nix b/nixpkgs/pkgs/desktops/xfce/core/xfdesktop/default.nix new file mode 100644 index 000000000000..75e9fc8cb653 --- /dev/null +++ b/nixpkgs/pkgs/desktops/xfce/core/xfdesktop/default.nix @@ -0,0 +1,25 @@ +{ mkXfceDerivation, exo, gtk3, libxfce4ui, libxfce4util, libwnck3, xfconf, libnotify, garcon, thunar }: + +mkXfceDerivation { + category = "xfce"; + pname = "xfdesktop"; + version = "4.14.2"; + + sha256 = "04fhm1pf9290sy3ymrmnfnm2x6fq5ldzvj5bjd9kz6zkx0nsq1za"; + + buildInputs = [ + exo + gtk3 + libxfce4ui + libxfce4util + libwnck3 + xfconf + libnotify + garcon + thunar + ]; + + meta = { + description = "Xfce's desktop manager"; + }; +} diff --git a/nixpkgs/pkgs/desktops/xfce/core/xfwm4/default.nix b/nixpkgs/pkgs/desktops/xfce/core/xfwm4/default.nix new file mode 100644 index 000000000000..ed77699f191e --- /dev/null +++ b/nixpkgs/pkgs/desktops/xfce/core/xfwm4/default.nix @@ -0,0 +1,30 @@ +{ mkXfceDerivation, exo, librsvg, dbus-glib, epoxy, gtk3, libXdamage +, libstartup_notification, libxfce4ui, libxfce4util, libwnck3 +, libXpresent, xfconf }: + +mkXfceDerivation { + category = "xfce"; + pname = "xfwm4"; + version = "4.14.0"; # TODO: remove xfce4-14 alias when this gets bumped + + sha256 = "1z5aqij2d8n9wnha88b0qzkvss54jvqs8w1w5m3mzjl4c9mn9n8m"; + + nativeBuildInputs = [ exo librsvg ]; + + buildInputs = [ + dbus-glib + epoxy + gtk3 + libXdamage + libstartup_notification + libxfce4ui + libxfce4util + libwnck3 + libXpresent + xfconf + ]; + + meta = { + description = "Window manager for Xfce"; + }; +} diff --git a/nixpkgs/pkgs/desktops/xfce/default.nix b/nixpkgs/pkgs/desktops/xfce/default.nix new file mode 100644 index 000000000000..579e863bf9c8 --- /dev/null +++ b/nixpkgs/pkgs/desktops/xfce/default.nix @@ -0,0 +1,229 @@ +{ config, lib, pkgs }: + +lib.makeScope pkgs.newScope (self: with self; { + #### NixOS support + + updateScript = pkgs.genericUpdater; + + gitLister = url: + "${pkgs.common-updater-scripts}/bin/list-git-tags ${url}"; + + archiveLister = category: name: + "${pkgs.common-updater-scripts}/bin/list-archive-two-level-versions https://archive.xfce.org/src/${category}/${name}"; + + mkXfceDerivation = callPackage ./mkXfceDerivation.nix { }; + + automakeAddFlags = pkgs.makeSetupHook { } ./automakeAddFlags.sh; + + # Samba is a rather heavy dependency + gvfs = pkgs.gvfs.override { samba = null; }; + + #### CORE + + exo = callPackage ./core/exo { }; + + garcon = callPackage ./core/garcon { }; + + libxfce4ui = callPackage ./core/libxfce4ui { }; + + libxfce4util = callPackage ./core/libxfce4util { }; + + thunar = callPackage ./core/thunar { + thunarPlugins = []; + }; + + thunar-volman = callPackage ./core/thunar-volman { }; + + thunar-archive-plugin = callPackage ./thunar-plugins/archive { }; + + thunar-dropbox-plugin = callPackage ./thunar-plugins/dropbox { }; + + tumbler = callPackage ./core/tumbler { }; + + xfce4-panel = callPackage ./core/xfce4-panel { }; + + xfce4-session = callPackage ./core/xfce4-session { }; + + xfce4-settings = callPackage ./core/xfce4-settings { }; + + xfce4-power-manager = callPackage ./core/xfce4-power-manager { }; + + xfconf = callPackage ./core/xfconf { }; + + xfdesktop = callPackage ./core/xfdesktop { }; + + xfwm4 = callPackage ./core/xfwm4 { }; + + xfce4-appfinder = callPackage ./core/xfce4-appfinder { }; + + xfce4-dev-tools = callPackage ./core/xfce4-dev-tools { + mkXfceDerivation = mkXfceDerivation.override { + xfce4-dev-tools = null; + }; + }; + + #### APPLICATIONS + + catfish = callPackage ./applications/catfish { }; + + gigolo = callPackage ./applications/gigolo { }; + + mousepad = callPackage ./applications/mousepad { }; + + orage = callPackage ./applications/orage { }; + + parole = callPackage ./applications/parole { }; + + ristretto = callPackage ./applications/ristretto { }; + + xfce4-taskmanager = callPackage ./applications/xfce4-taskmanager { }; + + xfce4-dict = callPackage ./applications/xfce4-dict { }; + + xfce4-terminal = callPackage ./applications/xfce4-terminal { }; + + xfce4-screenshooter = callPackage ./applications/xfce4-screenshooter { + inherit (pkgs.gnome3) libsoup; + }; + + xfdashboard = callPackage ./applications/xfdashboard {}; + + # TODO: this repo is inactive for many years. Remove? + xfce4-volumed = callPackage ./applications/xfce4-volumed { }; + + xfce4-volumed-pulse = callPackage ./applications/xfce4-volumed-pulse { }; + + xfce4-notifyd = callPackage ./applications/xfce4-notifyd { }; + + xfburn = callPackage ./applications/xfburn { }; + + #### ART + + xfce4-icon-theme = callPackage ./art/xfce4-icon-theme.nix { }; + + xfwm4-themes = callPackage ./art/xfwm4-themes.nix { }; + + #### PANEL PLUGINS + + xfce4-vala-panel-appmenu-plugin = callPackage ./panel-plugins/xfce4-vala-panel-appmenu-plugin { }; + + xfce4-battery-plugin = callPackage ./panel-plugins/xfce4-battery-plugin { }; + + xfce4-clipman-plugin = callPackage ./panel-plugins/xfce4-clipman-plugin { }; + + xfce4-cpufreq-plugin = callPackage ./panel-plugins/xfce4-cpufreq-plugin { }; + + xfce4-cpugraph-plugin = callPackage ./panel-plugins/xfce4-cpugraph-plugin.nix { }; + + xfce4-datetime-plugin = callPackage ./panel-plugins/xfce4-datetime-plugin { }; + + xfce4-dockbarx-plugin = callPackage ./panel-plugins/xfce4-dockbarx-plugin.nix { }; + + xfce4-embed-plugin = callPackage ./panel-plugins/xfce4-embed-plugin.nix { }; + + xfce4-eyes-plugin = callPackage ./panel-plugins/xfce4-eyes-plugin.nix { }; + + xfce4-fsguard-plugin = callPackage ./panel-plugins/xfce4-fsguard-plugin.nix { }; + + xfce4-genmon-plugin = callPackage ./panel-plugins/xfce4-genmon-plugin.nix { }; + + xfce4-hardware-monitor-plugin = callPackage ./panel-plugins/xfce4-hardware-monitor-plugin.nix { }; + + xfce4-namebar-plugin = callPackage ./panel-plugins/xfce4-namebar-plugin.nix { }; + + xfce4-netload-plugin = callPackage ./panel-plugins/xfce4-netload-plugin { }; + + xfce4-notes-plugin = callPackage ./panel-plugins/xfce4-notes-plugin.nix { }; + + xfce4-mailwatch-plugin = callPackage ./panel-plugins/xfce4-mailwatch-plugin.nix { }; + + xfce4-mpc-plugin = callPackage ./panel-plugins/xfce4-mpc-plugin.nix { }; + + xfce4-sensors-plugin = callPackage ./panel-plugins/xfce4-sensors-plugin.nix { }; + + xfce4-systemload-plugin = callPackage ./panel-plugins/xfce4-systemload-plugin.nix { }; + + xfce4-timer-plugin = callPackage ./panel-plugins/xfce4-timer-plugin.nix { }; + + xfce4-verve-plugin = callPackage ./panel-plugins/xfce4-verve-plugin { }; + + xfce4-xkb-plugin = callPackage ./panel-plugins/xfce4-xkb-plugin { }; + + xfce4-weather-plugin = callPackage ./panel-plugins/xfce4-weather-plugin.nix { }; + + xfce4-whiskermenu-plugin = callPackage ./panel-plugins/xfce4-whiskermenu-plugin { }; + + xfce4-windowck-plugin = callPackage ./panel-plugins/xfce4-windowck-plugin.nix { }; + + xfce4-pulseaudio-plugin = callPackage ./panel-plugins/xfce4-pulseaudio-plugin { }; + +} // lib.optionalAttrs (config.allowAliases or true) { + #### ALIASES - added 2018-01 + + terminal = xfce4-terminal; + thunar-build = thunar-bare; + thunarx-2-dev = thunar-build; + thunar_volman = thunar-volman; + xfce4panel = xfce4-panel; + xfce4session = xfce4-session; + xfce4settings = xfce4-settings; + xfce4_power_manager = xfce4-power-manager; + xfce4_appfinder = xfce4-appfinder; + xfce4_dev_tools = xfce4-dev-tools; + xfce4mixer = xfce4-mixer; + xfce4mixer_pulse = xfce4-mixer-pulse; + xfce4notifyd = xfce4-notifyd; + xfce4taskmanager = xfce4-taskmanager; + xfce4terminal = xfce4-terminal; + xfce4volumed = xfce4-volumed; + xfce4volumed_pulse = xfce4-volumed-pulse; + xfce4icontheme = xfce4-icon-theme; + xfwm4themes = xfwm4-themes; + + xfce4_battery_plugin = xfce4-battery-plugin; + xfce4_clipman_plugin = xfce4-clipman-plugin; + xfce4_cpufreq_plugin = xfce4-cpufreq-plugin; + xfce4_cpugraph_plugin = xfce4-cpugraph-plugin; + xfce4_datetime_plugin = xfce4-datetime-plugin; + xfce4_dockbarx_plugin = xfce4-dockbarx-plugin; + xfce4_embed_plugin = xfce4-embed-plugin; + xfce4_eyes_plugin = xfce4-eyes-plugin; + xfce4_fsguard_plugin = xfce4-fsguard-plugin; + xfce4_genmon_plugin = xfce4-genmon-plugin; + xfce4_hardware_monitor_plugin = xfce4-hardware-monitor-plugin; + xfce4_namebar_plugin = xfce4-namebar-plugin; + xfce4_netload_plugin = xfce4-netload-plugin; + xfce4_notes_plugin = xfce4-notes-plugin; + xfce4_mailwatch_plugin = xfce4-mailwatch-plugin; + xfce4_mpc_plugin = xfce4-mpc-plugin; + xfce4_sensors_plugin = xfce4-sensors-plugin; + xfce4_systemload_plugin = xfce4-systemload-plugin; + xfce4_timer_plugin = xfce4-timer-plugin; + xfce4_verve_plugin = xfce4-verve-plugin; + xfce4_xkb_plugin = xfce4-xkb-plugin; + xfce4_weather_plugin = xfce4-weather-plugin; + xfce4_whiskermenu_plugin = xfce4-whiskermenu-plugin; + xfce4_windowck_plugin = xfce4-windowck-plugin; + xfce4_pulseaudio_plugin = xfce4-pulseaudio-plugin; + + xfce4-mixer = throw "deprecated 2019-08-18: obsoleted by xfce4-pulseaudio-plugin"; # added 2019-08-18 + gtk-xfce-engine = throw "deprecated 2019-09-17: Xfce 4.14 deprecated gtk-xfce-engine"; # added 2019-09-17 + xfce4-dict-plugin = throw "deprecated 2020-04-19: xfce4-dict-plugin is now part of xfce4-dict."; # added 2020-04-19 + + # added 2019-11-04 + libxfce4ui_gtk3 = libxfce4ui; + xfce4panel_gtk3 = xfce4-panel; + xfce4_power_manager_gtk3 = xfce4-power-manager; + gtk = pkgs.gtk2; + libxfcegui4 = throw "libxfcegui4 is the deprecated Xfce GUI library. It has been superseded by the libxfce4ui library"; + xinitrc = xfce4-session.xinitrc; + inherit (pkgs.gnome2) libglade; + inherit (pkgs.gnome3) vte gtksourceview; + xfce4-mixer-pulse = xfce4-mixer; + thunar-bare = thunar.override { + thunarPlugins = []; + }; + + # added 2019-11-30 + inherit (pkgs) dconf; +}) diff --git a/nixpkgs/pkgs/desktops/xfce/mkXfceDerivation.nix b/nixpkgs/pkgs/desktops/xfce/mkXfceDerivation.nix new file mode 100644 index 000000000000..4c6edf99b611 --- /dev/null +++ b/nixpkgs/pkgs/desktops/xfce/mkXfceDerivation.nix @@ -0,0 +1,57 @@ +{ stdenv, fetchgit, pkgconfig, xfce4-dev-tools, hicolor-icon-theme, xfce, wrapGAppsHook }: + +{ category +, pname +, version +, attrPath ? "xfce.${pname}" +, rev-prefix ? "${pname}-" +, rev ? "${rev-prefix}${version}" +, sha256 +, odd-unstable ? true +, patchlevel-unstable ? true +, ... +} @ args: + +let + inherit (builtins) filter getAttr head isList; + inherit (stdenv.lib) attrNames concatLists recursiveUpdate zipAttrsWithNames; + + filterAttrNames = f: attrs: + filter (n: f (getAttr n attrs)) (attrNames attrs); + + concatAttrLists = attrsets: + zipAttrsWithNames (filterAttrNames isList (head attrsets)) (_: concatLists) attrsets; + + template = rec { + name = "${pname}-${version}"; + + nativeBuildInputs = [ pkgconfig xfce4-dev-tools wrapGAppsHook ]; + buildInputs = [ hicolor-icon-theme ]; + configureFlags = [ "--enable-maintainer-mode" ]; + + src = fetchgit { + url = "git://git.xfce.org/${category}/${pname}"; + inherit rev sha256; + }; + + enableParallelBuilding = true; + outputs = [ "out" "dev" ]; + + pos = builtins.unsafeGetAttrPos "pname" args; + + passthru.updateScript = xfce.updateScript { + inherit pname version attrPath rev-prefix odd-unstable patchlevel-unstable; + versionLister = xfce.gitLister src.url; + }; + + meta = with stdenv.lib; { + homepage = "https://git.xfce.org/${category}/${pname}/about"; + license = licenses.gpl2; # some libraries are under LGPLv2+ + platforms = platforms.linux; + }; + }; + + publicArgs = removeAttrs args [ "category" "pname" "sha256" ]; +in + +stdenv.mkDerivation (recursiveUpdate template publicArgs // concatAttrLists [ template args ]) diff --git a/nixpkgs/pkgs/desktops/xfce/panel-plugins/xfce4-battery-plugin/default.nix b/nixpkgs/pkgs/desktops/xfce/panel-plugins/xfce4-battery-plugin/default.nix new file mode 100644 index 000000000000..0d047447e0c2 --- /dev/null +++ b/nixpkgs/pkgs/desktops/xfce/panel-plugins/xfce4-battery-plugin/default.nix @@ -0,0 +1,16 @@ +{ mkXfceDerivation, gtk3, libxfce4ui, libxfce4util, xfce4-panel, xfconf }: + +mkXfceDerivation { + category = "panel-plugins"; + pname = "xfce4-battery-plugin"; + version = "1.1.3"; + rev-prefix = ""; + odd-unstable = false; + sha256 = "0ligdiasrfc3170kd7sif2ml6lvlpp11lbxz3xdvklqkv7p3323y"; + + buildInputs = [ gtk3 libxfce4ui libxfce4util xfce4-panel xfconf ]; + + meta = { + description = "Battery plugin for Xfce panel"; + }; +} diff --git a/nixpkgs/pkgs/desktops/xfce/panel-plugins/xfce4-clipman-plugin/default.nix b/nixpkgs/pkgs/desktops/xfce/panel-plugins/xfce4-clipman-plugin/default.nix new file mode 100644 index 000000000000..2349b4bf3e8d --- /dev/null +++ b/nixpkgs/pkgs/desktops/xfce/panel-plugins/xfce4-clipman-plugin/default.nix @@ -0,0 +1,14 @@ +{ mkXfceDerivation, gtk3, libXtst, libxfce4ui, libxfce4util, xfce4-panel, xfconf, exo }: + +mkXfceDerivation { + category = "panel-plugins"; + pname = "xfce4-clipman-plugin"; + version = "1.6.1"; + sha256 = "03akijvry1n1fkziyvxwcksl4vy4lmnpgd5izjs8jai5sndhsszl"; + + buildInputs = [ exo gtk3 libXtst libxfce4ui libxfce4util xfce4-panel xfconf ]; + + meta = { + description = "Clipboard manager for Xfce panel"; + }; +} diff --git a/nixpkgs/pkgs/desktops/xfce/panel-plugins/xfce4-cpufreq-plugin/default.nix b/nixpkgs/pkgs/desktops/xfce/panel-plugins/xfce4-cpufreq-plugin/default.nix new file mode 100644 index 000000000000..3798edbf89dc --- /dev/null +++ b/nixpkgs/pkgs/desktops/xfce/panel-plugins/xfce4-cpufreq-plugin/default.nix @@ -0,0 +1,14 @@ +{ mkXfceDerivation, gtk3, libxfce4ui, libxfce4util, xfce4-panel, xfconf }: + +mkXfceDerivation { + category = "panel-plugins"; + pname = "xfce4-cpufreq-plugin"; + version = "1.2.1"; + sha256 = "1p7c4g3yfc19ksdckxpzq1q35jvplh5g55299cvv0afhdb5l8zhv"; + + buildInputs = [ gtk3 libxfce4ui libxfce4util xfce4-panel xfconf ]; + + meta = { + description = "CPU Freq load plugin for Xfce panel"; + }; +} diff --git a/nixpkgs/pkgs/desktops/xfce/panel-plugins/xfce4-cpugraph-plugin.nix b/nixpkgs/pkgs/desktops/xfce/panel-plugins/xfce4-cpugraph-plugin.nix new file mode 100644 index 000000000000..38ad759e700c --- /dev/null +++ b/nixpkgs/pkgs/desktops/xfce/panel-plugins/xfce4-cpugraph-plugin.nix @@ -0,0 +1,47 @@ +{ stdenv, fetchurl, pkgconfig, intltool, glib, exo, libXtst, xorgproto, libxfce4util, xfce4-panel, libxfce4ui, xfconf, gtk3, hicolor-icon-theme, xfce }: + +let + category = "panel-plugins"; +in + +stdenv.mkDerivation rec { + pname = "xfce4-cpugraph-plugin"; + version = "1.1.0"; + + src = fetchurl { + url = "mirror://xfce/src/${category}/${pname}/${stdenv.lib.versions.majorMinor version}/${pname}-${version}.tar.bz2"; + sha256 = "193bj1p54l4zrvgdjj0pvjn161d6dn82jh9invcy09sqwlj0mkiy"; + }; + + nativeBuildInputs = [ + pkgconfig + intltool + ]; + + buildInputs = [ + glib + exo + libXtst + xorgproto + libxfce4util + libxfce4ui + xfce4-panel + xfconf + gtk3 + hicolor-icon-theme + ]; + + passthru.updateScript = xfce.updateScript { + inherit pname version; + attrPath = "xfce.${pname}"; + versionLister = xfce.archiveLister category pname; + }; + + meta = with stdenv.lib; { + homepage = "https://docs.xfce.org/panel-plugins/xfce4-cpugraph-plugin"; + description = "CPU graph show for Xfce panel"; + license = licenses.gpl2Plus; + platforms = platforms.linux; + maintainers = [ maintainers.AndersonTorres ]; + }; +} diff --git a/nixpkgs/pkgs/desktops/xfce/panel-plugins/xfce4-datetime-plugin/default.nix b/nixpkgs/pkgs/desktops/xfce/panel-plugins/xfce4-datetime-plugin/default.nix new file mode 100644 index 000000000000..15f528fd5fc7 --- /dev/null +++ b/nixpkgs/pkgs/desktops/xfce/panel-plugins/xfce4-datetime-plugin/default.nix @@ -0,0 +1,33 @@ +{ mkXfceDerivation +, stdenv +, intltool +, libxfce4ui +, xfce4-panel +, gtk3 +, gettext +}: + +mkXfceDerivation { + category = "panel-plugins"; + pname = "xfce4-datetime-plugin"; + version = "0.8.0"; + + rev-prefix = "datetime-"; + sha256 = "12drh7y70d70r93lpv43fkj5cbyl0vciz4a41nxrknrfbhxrvyah"; + + nativeBuildInputs = [ + gettext + intltool + ]; + + buildInputs = [ + gtk3 + libxfce4ui + xfce4-panel + ]; + + meta = with stdenv.lib; { + description = "Shows the date and time in the panel, and a calendar appears when you left-click on it"; + maintainers = [ maintainers.AndersonTorres ]; + }; +} diff --git a/nixpkgs/pkgs/desktops/xfce/panel-plugins/xfce4-dockbarx-plugin.nix b/nixpkgs/pkgs/desktops/xfce/panel-plugins/xfce4-dockbarx-plugin.nix new file mode 100644 index 000000000000..673b0a24fb61 --- /dev/null +++ b/nixpkgs/pkgs/desktops/xfce/panel-plugins/xfce4-dockbarx-plugin.nix @@ -0,0 +1,41 @@ +{ stdenv, pkgconfig, fetchFromGitHub, python2, bash, vala_0_46 +, dockbarx, gtk2, xfce, pythonPackages, wafHook }: + +stdenv.mkDerivation rec { + pname = "xfce4-dockbarx-plugin"; + version = "${ver}-${rev}"; + ver = "0.5"; + rev = "a2dcb66"; + + src = fetchFromGitHub { + owner = "TiZ-EX1"; + repo = "xfce4-dockbarx-plugin"; + rev = rev; + sha256 = "1f75iwlshnif60x0qqdqw5ffng2m4f4zp0ijkrbjz83wm73nsxfx"; + }; + + pythonPath = [ dockbarx ]; + + nativeBuildInputs = [ pkgconfig wafHook ]; + buildInputs = [ python2 vala_0_46 gtk2 pythonPackages.wrapPython ] + ++ (with xfce; [ libxfce4util xfce4-panel xfconf xfce4-dev-tools ]) + ++ pythonPath; + + postPatch = '' + substituteInPlace wscript --replace /usr/share/ "\''${PREFIX}/share/" + substituteInPlace src/dockbarx.vala --replace /usr/share/ $out/share/ + substituteInPlace src/dockbarx.vala --replace '/usr/bin/env python2' ${bash}/bin/bash + ''; + + postFixup = '' + wrapPythonProgramsIn "$out/share/xfce4/panel/plugins" "$out $pythonPath" + ''; + + meta = with stdenv.lib; { + homepage = "https://github.com/TiZ-EX1/xfce4-dockbarx-plugin"; + description = "A plugins to embed DockbarX into xfce4-panel"; + license = licenses.mit; + platforms = platforms.linux; + maintainers = [ maintainers.volth ]; + }; +} diff --git a/nixpkgs/pkgs/desktops/xfce/panel-plugins/xfce4-embed-plugin.nix b/nixpkgs/pkgs/desktops/xfce/panel-plugins/xfce4-embed-plugin.nix new file mode 100644 index 000000000000..2b2027bcf4bc --- /dev/null +++ b/nixpkgs/pkgs/desktops/xfce/panel-plugins/xfce4-embed-plugin.nix @@ -0,0 +1,42 @@ +{ stdenv, fetchurl, pkgconfig, intltool, libxfce4util, xfce4-panel, libxfce4ui, gtk2, xfce }: + +let + category = "panel-plugins"; +in + +with stdenv.lib; +stdenv.mkDerivation rec { + pname = "xfce4-embed-plugin"; + version = "1.6.0"; + + src = fetchurl { + url = "mirror://xfce/src/${category}/${pname}/${stdenv.lib.versions.majorMinor version}/${pname}-${version}.tar.bz2"; + sha256 = "0a72kqsjjh45swimqlpyrahdnplp0383v0i4phr4n6g8c1ixyry7"; + }; + + nativeBuildInputs = [ + pkgconfig + intltool + ]; + + buildInputs = [ + libxfce4util + libxfce4ui + xfce4-panel + gtk2 + ]; + + passthru.updateScript = xfce.updateScript { + inherit pname version; + attrPath = "xfce.${pname}"; + versionLister = xfce.archiveLister category pname; + }; + + meta = { + homepage = "https://docs.xfce.org/panel-plugins/xfce4-embed-plugin"; + description = "Embed arbitrary app windows on Xfce panel"; + license = licenses.gpl2Plus; + platforms = platforms.linux; + maintainers = [ maintainers.AndersonTorres ]; + }; +} diff --git a/nixpkgs/pkgs/desktops/xfce/panel-plugins/xfce4-eyes-plugin.nix b/nixpkgs/pkgs/desktops/xfce/panel-plugins/xfce4-eyes-plugin.nix new file mode 100644 index 000000000000..220e25068582 --- /dev/null +++ b/nixpkgs/pkgs/desktops/xfce/panel-plugins/xfce4-eyes-plugin.nix @@ -0,0 +1,42 @@ +{ stdenv, fetchurl, pkgconfig, intltool, libxfce4util, xfce4-panel, libxfce4ui, xfconf, gtk3, xfce }: + +let + category = "panel-plugins"; +in + +stdenv.mkDerivation rec { + pname = "xfce4-eyes-plugin"; + version = "4.5.0"; + + src = fetchurl { + url = "mirror://xfce/src/${category}/${pname}/${stdenv.lib.versions.majorMinor version}/${pname}-${version}.tar.bz2"; + sha256 = "17gj6fbvvrdzvz61czmia8hqynllsnmhk61fs4aml443cc1h1bpx"; + }; + + nativeBuildInputs = [ + pkgconfig + intltool + ]; + + buildInputs = [ + libxfce4util + libxfce4ui + xfce4-panel + xfconf + gtk3 + ]; + + passthru.updateScript = xfce.updateScript { + inherit pname version; + attrPath = "xfce.${pname}"; + versionLister = xfce.archiveLister category pname; + }; + + meta = with stdenv.lib; { + homepage = "https://docs.xfce.org/panel-plugins/xfce4-eyes-plugin"; + description = "Rolling eyes (following mouse pointer) plugin for the Xfce panel"; + license = licenses.gpl2Plus; + platforms = platforms.linux; + maintainers = [ maintainers.AndersonTorres ]; + }; +} diff --git a/nixpkgs/pkgs/desktops/xfce/panel-plugins/xfce4-fsguard-plugin.nix b/nixpkgs/pkgs/desktops/xfce/panel-plugins/xfce4-fsguard-plugin.nix new file mode 100644 index 000000000000..b67e63f5c644 --- /dev/null +++ b/nixpkgs/pkgs/desktops/xfce/panel-plugins/xfce4-fsguard-plugin.nix @@ -0,0 +1,42 @@ +{ stdenv, fetchurl, pkgconfig, intltool, libxfce4util, xfce4-panel, libxfce4ui, xfconf, gtk3, xfce }: + +let + category = "panel-plugins"; +in + +stdenv.mkDerivation rec { + pname = "xfce4-fsguard-plugin"; + version = "1.1.1"; + + src = fetchurl { + url = "mirror://xfce/src/${category}/${pname}/${stdenv.lib.versions.majorMinor version}/${pname}-${version}.tar.bz2"; + sha256 = "05nmfkrmifm76bsywqmbjd1qdvzagv5cbvnwbkb57156j055vl6n"; + }; + + nativeBuildInputs = [ + pkgconfig + intltool + ]; + + buildInputs = [ + libxfce4util + libxfce4ui + xfce4-panel + xfconf + gtk3 + ]; + + passthru.updateScript = xfce.updateScript { + inherit pname version; + attrPath = "xfce.${pname}"; + versionLister = xfce.archiveLister category pname; + }; + + meta = with stdenv.lib; { + homepage = "https://docs.xfce.org/panel-plugins/xfce4-fsguard-plugin"; + description = "Filesystem usage monitor plugin for the Xfce panel"; + license = licenses.bsd2; + platforms = platforms.linux; + maintainers = [ maintainers.AndersonTorres ]; + }; +} diff --git a/nixpkgs/pkgs/desktops/xfce/panel-plugins/xfce4-genmon-plugin.nix b/nixpkgs/pkgs/desktops/xfce/panel-plugins/xfce4-genmon-plugin.nix new file mode 100644 index 000000000000..417001fed53b --- /dev/null +++ b/nixpkgs/pkgs/desktops/xfce/panel-plugins/xfce4-genmon-plugin.nix @@ -0,0 +1,41 @@ +{ stdenv, fetchurl, pkgconfig, intltool, libxfce4util, xfce4-panel, libxfce4ui, gtk3, xfce }: + +let + category = "panel-plugins"; +in + +stdenv.mkDerivation rec { + pname = "xfce4-genmon-plugin"; + version = "4.0.2"; + + src = fetchurl { + url = "mirror://xfce/src/${category}/${pname}/${stdenv.lib.versions.majorMinor version}/${pname}-${version}.tar.bz2"; + sha256 = "1ai3pwgv61nv7i2dyrvncnc63r8kdjbkp40vp51vzak1dx924v15"; + }; + + nativeBuildInputs = [ + pkgconfig + intltool + ]; + + buildInputs = [ + libxfce4util + libxfce4ui + xfce4-panel + gtk3 + ]; + + passthru.updateScript = xfce.updateScript { + inherit pname version; + attrPath = "xfce.${pname}"; + versionLister = xfce.archiveLister category pname; + }; + + meta = with stdenv.lib; { + homepage = "https://docs.xfce.org/panel-plugins/xfce4-genmon-plugin"; + description = "Generic monitor plugin for the Xfce panel"; + license = licenses.gpl2Plus; + platforms = platforms.linux; + maintainers = [ maintainers.AndersonTorres ]; + }; +} diff --git a/nixpkgs/pkgs/desktops/xfce/panel-plugins/xfce4-hardware-monitor-plugin.nix b/nixpkgs/pkgs/desktops/xfce/panel-plugins/xfce4-hardware-monitor-plugin.nix new file mode 100644 index 000000000000..d8775c4b7045 --- /dev/null +++ b/nixpkgs/pkgs/desktops/xfce/panel-plugins/xfce4-hardware-monitor-plugin.nix @@ -0,0 +1,40 @@ +{ stdenv, fetchurl, pkgconfig, intltool, autoreconfHook, gnome2, gtkmm2, + libgtop, libxfce4ui, libxfce4util, xfce4-panel, lm_sensors, xfce +}: + +stdenv.mkDerivation rec { + pname = "xfce4-hardware-monitor-plugin"; + version = "1.6.0"; + + src = fetchurl { + url = "https://git.xfce.org/archive/${pname}/snapshot/${pname}-${version}.tar.gz"; + sha256 = "11k7m41jxkaqmpp5njkixw60q517xnw923mz34dnm1llx9ilvfk8"; + }; + + nativeBuildInputs = [ + autoreconfHook + pkgconfig + intltool + ]; + + buildInputs = [ + gtkmm2 + gnome2.libgnomecanvas + gnome2.libgnomecanvasmm + libgtop + libxfce4ui + libxfce4util + xfce4-panel + lm_sensors + ]; + + enableParallelBuilding = true; + + meta = with stdenv.lib; { + homepage = "https://goodies.xfce.org/projects/panel-plugins/xfce4-hardware-monitor-plugin"; + description = "Hardware monitor plugin for the XFCE4 panel"; + license = licenses.gpl3; + platforms = platforms.unix; + maintainers = [ maintainers.romildo ]; + }; +} diff --git a/nixpkgs/pkgs/desktops/xfce/panel-plugins/xfce4-mailwatch-plugin.nix b/nixpkgs/pkgs/desktops/xfce/panel-plugins/xfce4-mailwatch-plugin.nix new file mode 100644 index 000000000000..3d60d8b18f9a --- /dev/null +++ b/nixpkgs/pkgs/desktops/xfce/panel-plugins/xfce4-mailwatch-plugin.nix @@ -0,0 +1,45 @@ +{ stdenv, fetchurl, pkgconfig, intltool, libxfce4util, xfce4-panel, libxfce4ui, + gtk2, exo, gnutls, libgcrypt, xfce }: + +let + category = "panel-plugins"; +in + +stdenv.mkDerivation rec { + pname = "xfce4-mailwatch-plugin"; + version = "1.2.0"; + + src = fetchurl { + url = "mirror://xfce/src/${category}/${pname}/${stdenv.lib.versions.majorMinor version}/${pname}-${version}.tar.bz2"; + sha256 = "1bfw3smwivr9mzdyq768biqrl4aq94zqi3xjzq6kqnd8561cqjk2"; + }; + + nativeBuildInputs = [ + intltool + pkgconfig + ]; + + buildInputs = [ + libxfce4util + libxfce4ui + xfce4-panel + gtk2 + exo # needs exo with gtk2 support + gnutls + libgcrypt + ]; + + passthru.updateScript = xfce.updateScript { + inherit pname version; + attrPath = "xfce.${pname}"; + versionLister = xfce.archiveLister category pname; + }; + + meta = with stdenv.lib; { + homepage = "https://docs.xfce.org/panel-plugins/xfce4-mailwatch-plugin"; + description = "Mail watcher plugin for Xfce panel"; + license = licenses.gpl2; + platforms = platforms.linux; + maintainers = [ ]; + }; +} diff --git a/nixpkgs/pkgs/desktops/xfce/panel-plugins/xfce4-mpc-plugin.nix b/nixpkgs/pkgs/desktops/xfce/panel-plugins/xfce4-mpc-plugin.nix new file mode 100644 index 000000000000..bb56e875c865 --- /dev/null +++ b/nixpkgs/pkgs/desktops/xfce/panel-plugins/xfce4-mpc-plugin.nix @@ -0,0 +1,43 @@ +{ stdenv, fetchurl, pkgconfig, intltool, libxfce4util, xfce4-panel, + libxfce4ui, gtk3, exo, xfce }: + +let + category = "panel-plugins"; +in + +stdenv.mkDerivation rec { + pname = "xfce4-mpc-plugin"; + version = "0.5.2"; + + src = fetchurl { + url = "mirror://xfce/src/${category}/${pname}/${stdenv.lib.versions.majorMinor version}/${pname}-${version}.tar.bz2"; + sha256 = "0q3pysdp85b3c7g3b59y3c69g4nw6bvbf518lnri4lxrnsvpizpf"; + }; + + nativeBuildInputs = [ + pkgconfig + intltool + ]; + + buildInputs = [ + libxfce4util + libxfce4ui + xfce4-panel + gtk3 + exo + ]; + + passthru.updateScript = xfce.updateScript { + inherit pname version; + attrPath = "xfce.${pname}"; + versionLister = xfce.archiveLister category pname; + }; + + meta = with stdenv.lib; { + homepage = "https://docs.xfce.org/panel-plugins/xfce4-mpc-plugin"; + description = "MPD plugin for Xfce panel"; + platforms = platforms.linux; + license = licenses.bsd2; + maintainers = [ ]; + }; +} diff --git a/nixpkgs/pkgs/desktops/xfce/panel-plugins/xfce4-namebar-plugin.nix b/nixpkgs/pkgs/desktops/xfce/panel-plugins/xfce4-namebar-plugin.nix new file mode 100644 index 000000000000..affc957c51df --- /dev/null +++ b/nixpkgs/pkgs/desktops/xfce/panel-plugins/xfce4-namebar-plugin.nix @@ -0,0 +1,31 @@ +{ stdenv, pkgconfig, fetchFromGitHub, python2, vala_0_40 +, gtk2, libwnck, libxfce4util, xfce4-panel, wafHook }: + +stdenv.mkDerivation rec { + ver = "0.3.1"; + rev = "07a23b3"; + name = "xfce4-namebar-plugin-${ver}"; + + src = fetchFromGitHub { + owner = "TiZ-EX1"; + repo = "xfce4-namebar-plugin"; + rev = rev; + sha256 = "1sl4qmjywfvv53ch7hyfysjfd91zl38y7gdw2y3k69vkzd3h18ad"; + }; + + nativeBuildInputs = [ pkgconfig wafHook ]; + buildInputs = [ python2 vala_0_40 gtk2 libwnck libxfce4util xfce4-panel ]; + + postPatch = '' + substituteInPlace src/preferences.vala --replace 'Environment.get_system_data_dirs()' "{ \"$out/share\" }" + substituteInPlace src/namebar.vala --replace 'Environment.get_system_data_dirs()' "{ \"$out/share\" }" + ''; + + meta = with stdenv.lib; { + homepage = "https://github.com/TiZ-EX1/xfce4-namebar-plugin"; + description = "A plugins which integrates titlebar and window controls into the xfce4-panel"; + license = licenses.mit; + platforms = platforms.linux; + maintainers = [ maintainers.volth ]; + }; +} diff --git a/nixpkgs/pkgs/desktops/xfce/panel-plugins/xfce4-netload-plugin/default.nix b/nixpkgs/pkgs/desktops/xfce/panel-plugins/xfce4-netload-plugin/default.nix new file mode 100644 index 000000000000..8d258220175b --- /dev/null +++ b/nixpkgs/pkgs/desktops/xfce/panel-plugins/xfce4-netload-plugin/default.nix @@ -0,0 +1,16 @@ +{ mkXfceDerivation, gtk3, libxfce4ui, libxfce4util, xfce4-panel, xfconf }: + +mkXfceDerivation { + category = "panel-plugins"; + pname = "xfce4-netload-plugin"; + version = "1.3.2"; + rev-prefix = "version-"; + odd-unstable = false; + sha256 = "1py1l4z5ah4nlq8l2912k47ffsa5z7p1gbvlk7nw6b9r1x4ykdfl"; + + buildInputs = [ gtk3 libxfce4ui libxfce4util xfce4-panel xfconf ]; + + meta = { + description = "Battery plugin for Xfce panel"; + }; +} diff --git a/nixpkgs/pkgs/desktops/xfce/panel-plugins/xfce4-notes-plugin.nix b/nixpkgs/pkgs/desktops/xfce/panel-plugins/xfce4-notes-plugin.nix new file mode 100644 index 000000000000..d6910d367a63 --- /dev/null +++ b/nixpkgs/pkgs/desktops/xfce/panel-plugins/xfce4-notes-plugin.nix @@ -0,0 +1,45 @@ +{ stdenv, fetchurl, fetchpatch, pkgconfig, intltool, libxfce4util, xfce4-panel, libxfce4ui, xfconf, gtk2, libunique, xfce }: + +let + category = "panel-plugins"; +in + +stdenv.mkDerivation rec { + pname = "xfce4-notes-plugin"; + version = "1.8.1"; + + src = fetchurl { + url = "mirror://xfce/src/${category}/${pname}/${stdenv.lib.versions.majorMinor version}/${pname}-${version}.tar.bz2"; + sha256 = "1cjlvvcsigyh40xa26b2vc5zylgss0nlaw72sablzhii2kkw7907"; + }; + + nativeBuildInputs = [ + pkgconfig + intltool + ]; + + buildInputs = [ + libxfce4util + libxfce4ui + xfce4-panel + xfconf + gtk2 + libunique + ]; + + hardeningDisable = [ "format" ]; + + passthru.updateScript = xfce.updateScript { + inherit pname version; + attrPath = "xfce.${pname}"; + versionLister = xfce.archiveLister category pname; + }; + + meta = with stdenv.lib; { + homepage = "https://docs.xfce.org/panel-plugins/xfce4-notes-plugin"; + description = "Sticky notes plugin for Xfce panel"; + license = licenses.gpl2Plus; + platforms = platforms.linux; + maintainers = [ maintainers.AndersonTorres ]; + }; +} diff --git a/nixpkgs/pkgs/desktops/xfce/panel-plugins/xfce4-pulseaudio-plugin/default.nix b/nixpkgs/pkgs/desktops/xfce/panel-plugins/xfce4-pulseaudio-plugin/default.nix new file mode 100644 index 000000000000..10850974bb7d --- /dev/null +++ b/nixpkgs/pkgs/desktops/xfce/panel-plugins/xfce4-pulseaudio-plugin/default.nix @@ -0,0 +1,49 @@ +{ mkXfceDerivation +, automakeAddFlags +, dbus-glib +, dbus +, exo +, gtk3 +, libpulseaudio +, libnotify +, libxfce4ui +, libxfce4util +, xfce4-panel +, xfconf +, keybinder3 +, glib +}: + +mkXfceDerivation { + category = "panel-plugins"; + pname = "xfce4-pulseaudio-plugin"; + version = "0.4.3"; + sha256 = "1rfw2w8gl95iawiy57qlvz958dqjc8bmxnc3dma4rqzm6g46jkgq"; + + nativeBuildInputs = [ + automakeAddFlags + ]; + + NIX_CFLAGS_COMPILE = "-I${dbus-glib.dev}/include/dbus-1.0 -I${dbus.dev}/include/dbus-1.0"; + + postPatch = '' + substituteInPlace configure.ac.in --replace gio-2.0 gio-unix-2.0 + ''; + + buildInputs = [ + exo + glib + gtk3 + keybinder3 + libnotify + libpulseaudio + libxfce4ui + libxfce4util + xfce4-panel + xfconf + ]; + + meta = { + description = "Adjust the audio volume of the PulseAudio sound system"; + }; +} diff --git a/nixpkgs/pkgs/desktops/xfce/panel-plugins/xfce4-sensors-plugin.nix b/nixpkgs/pkgs/desktops/xfce/panel-plugins/xfce4-sensors-plugin.nix new file mode 100644 index 000000000000..8b8dbf3e022c --- /dev/null +++ b/nixpkgs/pkgs/desktops/xfce/panel-plugins/xfce4-sensors-plugin.nix @@ -0,0 +1,54 @@ +{ stdenv, fetchurl, pkgconfig, intltool, gtk3, libxfce4ui, + libxfce4util, xfce4-panel, libnotify, lm_sensors, hddtemp, netcat-gnu, xfce +}: + +let + category = "panel-plugins"; +in + +stdenv.mkDerivation rec { + pname = "xfce4-sensors-plugin"; + version = "1.3.92"; + + src = fetchurl { + url = "mirror://xfce/src/${category}/${pname}/${stdenv.lib.versions.majorMinor version}/${pname}-${version}.tar.bz2"; + sha256 = "04jibw23ibi61f19gc9xy400yhcdiya4px6zp8c7fjq65hyn9iix"; + }; + + nativeBuildInputs = [ + pkgconfig + intltool + ]; + + buildInputs = [ + gtk3 + libxfce4ui + libxfce4util + xfce4-panel + libnotify + lm_sensors + hddtemp + netcat-gnu + ]; + + enableParallelBuilding = true; + + configureFlags = [ + "--with-pathhddtemp=${hddtemp}/bin/hddtemp" + "--with-pathnetcat=${netcat-gnu}/bin/netcat" + ]; + + passthru.updateScript = xfce.updateScript { + inherit pname version; + attrPath = "xfce.${pname}"; + versionLister = xfce.archiveLister category pname; + }; + + meta = with stdenv.lib; { + homepage = "https://docs.xfce.org/panel-plugins/xfce4-sensors-plugin"; + description = "A panel plug-in for different sensors using acpi, lm_sensors and hddtemp"; + license = licenses.gpl2; + platforms = platforms.unix; + maintainers = [ maintainers.romildo ]; + }; +} diff --git a/nixpkgs/pkgs/desktops/xfce/panel-plugins/xfce4-systemload-plugin.nix b/nixpkgs/pkgs/desktops/xfce/panel-plugins/xfce4-systemload-plugin.nix new file mode 100644 index 000000000000..52da6a29ea42 --- /dev/null +++ b/nixpkgs/pkgs/desktops/xfce/panel-plugins/xfce4-systemload-plugin.nix @@ -0,0 +1,41 @@ +{ stdenv, fetchurl, pkgconfig, intltool, libxfce4util, xfce4-panel, libxfce4ui, gtk3, xfce }: + +let + category = "panel-plugins"; +in + +stdenv.mkDerivation rec { + pname = "xfce4-systemload-plugin"; + version = "1.2.3"; + + src = fetchurl { + url = "mirror://xfce/src/${category}/${pname}/${stdenv.lib.versions.majorMinor version}/${pname}-${version}.tar.bz2"; + sha256 = "0x87a8h5l3ashz1ksfaxcpn9a392jzlsbx5n5pga8g90fp2hf905"; + }; + + nativeBuildInputs = [ + pkgconfig + intltool + ]; + + buildInputs = [ + libxfce4util + libxfce4ui + xfce4-panel + gtk3 + ]; + + passthru.updateScript = xfce.updateScript { + inherit pname version; + attrPath = "xfce.${pname}"; + versionLister = xfce.archiveLister category pname; + }; + + meta = with stdenv.lib; { + homepage = "https://docs.xfce.org/panel-plugins/xfce4-systemload-plugin"; + description = "System load plugin for Xfce panel"; + license = licenses.bsd2; + platforms = platforms.linux; + maintainers = [ maintainers.AndersonTorres ]; + }; +} diff --git a/nixpkgs/pkgs/desktops/xfce/panel-plugins/xfce4-timer-plugin.nix b/nixpkgs/pkgs/desktops/xfce/panel-plugins/xfce4-timer-plugin.nix new file mode 100644 index 000000000000..00b497c918d8 --- /dev/null +++ b/nixpkgs/pkgs/desktops/xfce/panel-plugins/xfce4-timer-plugin.nix @@ -0,0 +1,44 @@ +{ stdenv, fetchurl, pkgconfig, intltool, libxfce4util, xfce4-panel, libxfce4ui, gtk3, hicolor-icon-theme, xfce }: + +let + category = "panel-plugins"; +in + +stdenv.mkDerivation rec { + pname = "xfce4-timer-plugin"; + version = "1.7.0"; + + src = fetchurl { + url = "mirror://xfce/src/${category}/${pname}/${stdenv.lib.versions.majorMinor version}/${pname}-${version}.tar.bz2"; + sha256 = "16vypwwjwfk7nn4n16rfgn0z78jqrmbgxmc1r46269lrwd1m6kif"; + }; + + nativeBuildInputs = [ + pkgconfig + intltool + ]; + + buildInputs = [ + libxfce4util + libxfce4ui + xfce4-panel + gtk3 + hicolor-icon-theme + ]; + + hardeningDisable = [ "format" ]; + + passthru.updateScript = xfce.updateScript { + inherit pname version; + attrPath = "xfce.${pname}"; + versionLister = xfce.archiveLister category pname; + }; + + meta = with stdenv.lib; { + homepage = "https://docs.xfce.org/panel-plugins/xfce4-timer-plugin"; + description = "Simple countdown and alarm plugin for the Xfce panel"; + platforms = platforms.linux; + license = licenses.gpl2; + maintainers = [ ]; + }; +} diff --git a/nixpkgs/pkgs/desktops/xfce/panel-plugins/xfce4-vala-panel-appmenu-plugin/appmenu-gtk-module.nix b/nixpkgs/pkgs/desktops/xfce/panel-plugins/xfce4-vala-panel-appmenu-plugin/appmenu-gtk-module.nix new file mode 100644 index 000000000000..39393dd39e9f --- /dev/null +++ b/nixpkgs/pkgs/desktops/xfce/panel-plugins/xfce4-vala-panel-appmenu-plugin/appmenu-gtk-module.nix @@ -0,0 +1,31 @@ +{ stdenv, fetchFromGitHub, cmake, vala, glib, gtk2, gtk3 }: +stdenv.mkDerivation rec { + pname = "vala-panel-appmenu-xfce"; + version = "0.6.94"; + + src = "${fetchFromGitHub { + owner = "rilian-la-te"; + repo = "vala-panel-appmenu"; + rev = version; + fetchSubmodules = true; + + sha256 = "0xxn3zs60a9nfix8wrdp056wviq281cm1031hznzf1l38lp3wr5p"; + }}/subprojects/appmenu-gtk-module"; + + nativeBuildInputs = [ cmake vala ]; + buildInputs = [ glib gtk2 gtk3 ]; + + configurePhase = '' + cmake . -DGTK3_INCLUDE_GDK= + ''; + installPhase = '' + make DESTDIR=output install + cp -r output/var/empty/* "$out" + ''; + + meta = with stdenv.lib; { + description = "Port of the Unity GTK Module"; + license = licenses.lgpl3; + maintainers = with maintainers; [ jD91mZM2 ]; + }; +} diff --git a/nixpkgs/pkgs/desktops/xfce/panel-plugins/xfce4-vala-panel-appmenu-plugin/default.nix b/nixpkgs/pkgs/desktops/xfce/panel-plugins/xfce4-vala-panel-appmenu-plugin/default.nix new file mode 100644 index 000000000000..525bd6e5fd7d --- /dev/null +++ b/nixpkgs/pkgs/desktops/xfce/panel-plugins/xfce4-vala-panel-appmenu-plugin/default.nix @@ -0,0 +1,56 @@ +{ stdenv, fetchFromGitHub, substituteAll, callPackage, pkgconfig, cmake, vala, libxml2, + glib, pcre, gtk2, gtk3, xorg, libxkbcommon, epoxy, at-spi2-core, dbus-glib, bamf, + xfce, libwnck3, libdbusmenu, gobject-introspection }: + +stdenv.mkDerivation rec { + pname = "xfce4-vala-panel-appmenu-plugin"; + version = "0.7.3"; + + src = fetchFromGitHub { + owner = "rilian-la-te"; + repo = "vala-panel-appmenu"; + rev = version; + fetchSubmodules = true; + + sha256 = "06rykdr2c9rnzxwinwdynd73v9wf0gjkx6qfva7sx2n94ajsdnaw"; + }; + + nativeBuildInputs = [ pkgconfig cmake vala libxml2.bin ]; + buildInputs = [ (callPackage ./appmenu-gtk-module.nix {}) + glib pcre gtk2 gtk3 xorg.libpthreadstubs xorg.libXdmcp libxkbcommon epoxy + at-spi2-core dbus-glib bamf xfce.xfce4panel_gtk3 xfce.libxfce4util xfce.xfconf + libwnck3 libdbusmenu gobject-introspection ]; + + patches = [ + (substituteAll { + src = ./fix-bamf-dependency.patch; + bamf = bamf; + }) + ]; + + cmakeFlags = [ + "-DENABLE_XFCE=ON" + "-DENABLE_BUDGIE=OFF" + "-DENABLE_VALAPANEL=OFF" + "-DENABLE_MATE=OFF" + "-DENABLE_JAYATANA=OFF" + "-DENABLE_APPMENU_GTK_MODULE=OFF" + ]; + + preConfigure = '' + mv cmake/FallbackVersion.cmake.in cmake/FallbackVersion.cmake + ''; + + passthru.updateScript = xfce.updateScript { + inherit pname version; + attrPath = "xfce.${pname}"; + versionLister = xfce.gitLister src.meta.homepage; + }; + + meta = with stdenv.lib; { + description = "Global Menu applet for XFCE4"; + license = licenses.lgpl3; + maintainers = with maintainers; [ jD91mZM2 ]; + broken = true; + }; +} diff --git a/nixpkgs/pkgs/desktops/xfce/panel-plugins/xfce4-vala-panel-appmenu-plugin/fix-bamf-dependency.patch b/nixpkgs/pkgs/desktops/xfce/panel-plugins/xfce4-vala-panel-appmenu-plugin/fix-bamf-dependency.patch new file mode 100644 index 000000000000..1ed86a67f727 --- /dev/null +++ b/nixpkgs/pkgs/desktops/xfce/panel-plugins/xfce4-vala-panel-appmenu-plugin/fix-bamf-dependency.patch @@ -0,0 +1,12 @@ ++++ source/cmake/FindBAMF.cmake 2018-05-11 17:03:44.385917811 +0200 +@@ -80,9 +80,7 @@ + + find_program(BAMF_DAEMON_EXECUTABLE + bamfdaemon +- HINTS ${CMAKE_INSTALL_FULL_LIBDIR} +- ${CMAKE_INSTALL_FULL_LIBEXECDIR} +- ${BAMF_LIBDIR} ++ HINTS "@bamf@/libexec/bamf/" + PATH_SUFFIXES bamf + ) + diff --git a/nixpkgs/pkgs/desktops/xfce/panel-plugins/xfce4-verve-plugin/default.nix b/nixpkgs/pkgs/desktops/xfce/panel-plugins/xfce4-verve-plugin/default.nix new file mode 100644 index 000000000000..5a98173ea00c --- /dev/null +++ b/nixpkgs/pkgs/desktops/xfce/panel-plugins/xfce4-verve-plugin/default.nix @@ -0,0 +1,18 @@ +{ lib, mkXfceDerivation, gtk3, libxfce4ui, pcre, libxfce4util, xfce4-panel, xfconf }: + +mkXfceDerivation { + category = "panel-plugins"; + pname = "xfce4-verve-plugin"; + version = "2.0.0"; + rev-prefix = ""; + sha256 = "09vpa6m0ah7pgmra094c16vb79xrcwva808g6zpawwrhcwz85lcz"; + + buildInputs = [ gtk3 libxfce4ui pcre libxfce4util xfce4-panel ]; + + hardeningDisable = [ "format" ]; + + meta = { + description = "A command-line plugin"; + maintainers = with lib.maintainers; [ AndersonTorres ]; + }; +} diff --git a/nixpkgs/pkgs/desktops/xfce/panel-plugins/xfce4-weather-plugin.nix b/nixpkgs/pkgs/desktops/xfce/panel-plugins/xfce4-weather-plugin.nix new file mode 100644 index 000000000000..cff2ef251ad4 --- /dev/null +++ b/nixpkgs/pkgs/desktops/xfce/panel-plugins/xfce4-weather-plugin.nix @@ -0,0 +1,48 @@ +{ stdenv, fetchurl, pkgconfig, intltool, gtk3, libxml2, libsoup, upower, + libxfce4ui, libxfce4util, xfce4-panel, hicolor-icon-theme, xfce }: + +let + category = "panel-plugins"; +in + +stdenv.mkDerivation rec { + pname = "xfce4-weather-plugin"; + version = "0.10.1"; + + src = fetchurl { + url = "mirror://xfce/src/${category}/${pname}/${stdenv.lib.versions.majorMinor version}/${pname}-${version}.tar.bz2"; + sha256 = "12bs2rfmmy021087i10vxibdbbvd5vld0vk3h5hymhpz7rgszcmg"; + }; + + nativeBuildInputs = [ + pkgconfig + intltool + ]; + + buildInputs = [ + gtk3 + libxml2 + libsoup + upower + libxfce4ui + libxfce4util + xfce4-panel + hicolor-icon-theme + ]; + + enableParallelBuilding = true; + + passthru.updateScript = xfce.updateScript { + inherit pname version; + attrPath = "xfce.${pname}"; + versionLister = xfce.archiveLister category pname; + }; + + meta = with stdenv.lib; { + homepage = "https://docs.xfce.org/panel-plugins/xfce4-weather-plugin"; + description = "Weather plugin for the Xfce desktop environment"; + license = licenses.gpl2Plus; + platforms = platforms.unix; + maintainers = [ maintainers.romildo ]; + }; +} diff --git a/nixpkgs/pkgs/desktops/xfce/panel-plugins/xfce4-whiskermenu-plugin/default.nix b/nixpkgs/pkgs/desktops/xfce/panel-plugins/xfce4-whiskermenu-plugin/default.nix new file mode 100644 index 000000000000..262093af69f1 --- /dev/null +++ b/nixpkgs/pkgs/desktops/xfce/panel-plugins/xfce4-whiskermenu-plugin/default.nix @@ -0,0 +1,22 @@ +{ mkXfceDerivation, gtk3, glib, cmake, exo, garcon, libxfce4ui, libxfce4util, xfce4-panel, xfconf }: + +mkXfceDerivation { + category = "panel-plugins"; + pname = "xfce4-whiskermenu-plugin"; + version = "2.4.3"; + rev-prefix = "v"; + sha256 = "1cs3fps1bj0dd5az7fwrvw1xl3y621qk4dma3n73p7rr19j7fpsn"; + + nativeBuildInputs = [ cmake ]; + + buildInputs = [ exo garcon gtk3 glib libxfce4ui libxfce4util xfce4-panel xfconf ]; + + postInstall = '' + substituteInPlace $out/bin/xfce4-popup-whiskermenu \ + --replace $out/bin/xfce4-panel ${xfce4-panel.out}/bin/xfce4-panel + ''; + + meta = { + description = "Alternate application launcher for Xfce"; + }; +} diff --git a/nixpkgs/pkgs/desktops/xfce/panel-plugins/xfce4-windowck-plugin.nix b/nixpkgs/pkgs/desktops/xfce/panel-plugins/xfce4-windowck-plugin.nix new file mode 100644 index 000000000000..e629a08c5537 --- /dev/null +++ b/nixpkgs/pkgs/desktops/xfce/panel-plugins/xfce4-windowck-plugin.nix @@ -0,0 +1,54 @@ +{ stdenv, fetchFromGitHub, pkgconfig, intltool, python3, imagemagick, libwnck, gtk2 +, exo, libxfce4ui, libxfce4util, xfce4-panel, xfconf, xfce4-dev-tools, xfce }: + +stdenv.mkDerivation rec { + pname = "xfce4-windowck-plugin"; + version = "0.4.6"; + + src = fetchFromGitHub { + owner = "cedl38"; + repo = pname; + rev = "v${version}"; + sha256 = "1gwrbjfv4cnlsqh05h42w41z3xs15yjj6j8y9gxvvvvlgzzp4p3g"; + }; + + nativeBuildInputs = [ + pkgconfig + intltool + ]; + + buildInputs = [ + python3 + imagemagick + libwnck + gtk2 + exo + libxfce4ui + libxfce4util + xfce4-panel + xfconf + xfce4-dev-tools + ]; + + preConfigure = '' + ./autogen.sh + patchShebangs . + ''; + + enableParallelBuilding = true; + + passthru.updateScript = xfce.updateScript { + inherit pname version; + attrPath = "xfce.${pname}"; + versionLister = xfce.gitLister src.meta.homepage; + rev-prefix = "v"; + }; + + meta = with stdenv.lib; { + homepage = "https://goodies.xfce.org/projects/panel-plugins/xfce4-windowck-plugin"; + description = "Xfce plugins which allows to put the maximized window title and buttons on the panel"; + license = licenses.gpl2Plus; + platforms = platforms.unix; + maintainers = [ maintainers.volth ]; + }; +} diff --git a/nixpkgs/pkgs/desktops/xfce/panel-plugins/xfce4-xkb-plugin/default.nix b/nixpkgs/pkgs/desktops/xfce/panel-plugins/xfce4-xkb-plugin/default.nix new file mode 100644 index 000000000000..a08621594890 --- /dev/null +++ b/nixpkgs/pkgs/desktops/xfce/panel-plugins/xfce4-xkb-plugin/default.nix @@ -0,0 +1,16 @@ +{ lib, mkXfceDerivation, gtk3, librsvg, libwnck3, libxklavier, garcon, libxfce4ui, libxfce4util, xfce4-panel, xfconf }: + +mkXfceDerivation { + category = "panel-plugins"; + pname = "xfce4-xkb-plugin"; + version = "0.8.1"; + rev-prefix = ""; + sha256 = "1gyky4raynp2ggdnq0g96c6646fjm679fzipcsmf1q0aymr8d5ky"; + + buildInputs = [ garcon gtk3 librsvg libxfce4ui libxfce4util libxklavier libwnck3 xfce4-panel xfconf ]; + + meta = with lib; { + description = "Allows you to setup and use multiple keyboard layouts"; + maintainers = [ maintainers.AndersonTorres ]; + }; +} diff --git a/nixpkgs/pkgs/desktops/xfce/thunar-plugins/archive/default.nix b/nixpkgs/pkgs/desktops/xfce/thunar-plugins/archive/default.nix new file mode 100644 index 000000000000..6b255dc72012 --- /dev/null +++ b/nixpkgs/pkgs/desktops/xfce/thunar-plugins/archive/default.nix @@ -0,0 +1,37 @@ +{ stdenv +, mkXfceDerivation +, gtk3 +, thunar +, exo +, libxfce4util +, intltool +, gettext +}: + +mkXfceDerivation { + category = "thunar-plugins"; + pname = "thunar-archive-plugin"; + version = "0.4.0"; + + sha256 = "1793zicm00fail4iknliwy2b668j239ndxhc9hy6jarvdyp08h38"; + + nativeBuildInputs = [ + intltool + gettext + ]; + + buildInputs = [ + thunar + exo + gtk3 + libxfce4util + ]; + + preConfigure = '' + ./autogen.sh + ''; + + meta = with stdenv.lib; { + description = "Thunar plugin providing file context menus for archives"; + }; +} diff --git a/nixpkgs/pkgs/desktops/xfce/thunar-plugins/dropbox/default.nix b/nixpkgs/pkgs/desktops/xfce/thunar-plugins/dropbox/default.nix new file mode 100644 index 000000000000..61e9d94acc5d --- /dev/null +++ b/nixpkgs/pkgs/desktops/xfce/thunar-plugins/dropbox/default.nix @@ -0,0 +1,47 @@ +{ stdenv +, fetchFromGitHub +, pkgconfig +, gtk3 +, thunar +, cmake +, ninja +, xfce +}: + +stdenv.mkDerivation rec { + pname = "thunar-dropbox"; + version = "0.3.1"; + + src = fetchFromGitHub { + owner = "Jeinzi"; + repo = "thunar-dropbox"; + rev = version; + sha256 = "1fshjvh542ffa8npfxv3cassgn6jclb2ix9ir997y4k0abzp1fxb"; + }; + + nativeBuildInputs = [ + pkgconfig + cmake + ninja + ]; + + buildInputs = [ + thunar + gtk3 + ]; + + enableParallelBuilding = true; + + passthru.updateScript = xfce.updateScript { + inherit pname version; + attrPath = "xfce.thunar-dropbox-plugin"; + versionLister = xfce.gitLister src.meta.homepage; + }; + + meta = with stdenv.lib; { + homepage = "https://github.com/Jeinzi/thunar-dropbox"; + description = "A plugin that adds context-menu items for Dropbox to Thunar"; + license = licenses.gpl3; + platforms = platforms.linux; + }; +} |