diff options
Diffstat (limited to 'nixpkgs/pkgs/desktops/pantheon/desktop')
42 files changed, 1594 insertions, 0 deletions
diff --git a/nixpkgs/pkgs/desktops/pantheon/desktop/elementary-default-settings/correct-override.patch b/nixpkgs/pkgs/desktops/pantheon/desktop/elementary-default-settings/correct-override.patch new file mode 100644 index 000000000000..438ed79d1bb0 --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/desktop/elementary-default-settings/correct-override.patch @@ -0,0 +1,25 @@ +diff --git a/debian/elementary-default-settings.gsettings-override b/debian/elementary-default-settings.gsettings-override +index 6452c30..899972d 100644 +--- a/debian/elementary-default-settings.gsettings-override ++++ b/debian/elementary-default-settings.gsettings-override +@@ -1,5 +1,5 @@ + [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'] ++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'] + hide-delay=250 + hide-mode='window-dodge' + show-dock-item=false +@@ -8,13 +8,6 @@ theme='Gtk+' + [org.freedesktop.ibus.general.hotkey] + triggers=['<Control>space'] + +-[org.gnome.desktop.background] +-draw-background=true +-picture-options='zoom' +-picture-uri='file:///usr/share/backgrounds/elementaryos-default' +-primary-color='#000000' +-show-desktop-icons=false +- + [org.gnome.desktop.datetime] + automatic-timezone=true + 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..f133324a81ec --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/desktop/elementary-default-settings/default.nix @@ -0,0 +1,60 @@ +{ stdenv, fetchFromGitHub, fetchpatch, pantheon }: + +stdenv.mkDerivation rec { + pname = "default-settings"; + version = "5.0"; + + name = "elementary-${pname}-${version}"; + + src = fetchFromGitHub { + owner = "elementary"; + repo = pname; + rev = version; + sha256 = "0gyv835qbr90001gda2pzngzzbbk5jf9grgfl25pqkm29s45rqq0"; + }; + + passthru = { + updateScript = pantheon.updateScript { + repoName = pname; + attrPath = "elementary-${pname}"; + }; + }; + + patches = [ + # See: https://github.com/elementary/default-settings/pull/86 (didn't make 5.0 release) + (fetchpatch { + url = "https://github.com/elementary/default-settings/commit/05d0b2a4e98c28203521d599b40745b46be549fa.patch"; + sha256 = "1wk1qva3yzc28gljnkx9hb3pwhqnfrsb08wd76lsl3xnylg0wn2l"; + }) + # See: https://github.com/elementary/default-settings/pull/94 (didn't make 5.0 release) + (fetchpatch { + url = "https://github.com/elementary/default-settings/commit/a2ca00130c16e805179fb5abd7b624a873dff2da.patch"; + sha256 = "1jp1c5d8jfm0404zsylfk7h9vj81s409wgbzbsd2kxmz65icq16x"; + }) + ./correct-override.patch + ]; + + dontBuild = true; + + installPhase = '' + mkdir -p $out/etc/gtk-3.0 + cp -av settings.ini $out/etc/gtk-3.0 + + mkdir -p $out/share/glib-2.0/schemas + cp -av debian/elementary-default-settings.gsettings-override $out/share/glib-2.0/schemas/20-io.elementary.desktop.gschema.override + + mkdir $out/etc/wingpanel.d + cp -avr ${./io.elementary.greeter.whitelist} $out/etc/wingpanel.d/io.elementary.greeter.whitelist + + mkdir -p $out/share/elementary/config/plank/dock1 + cp -avr ${./launchers} $out/share/elementary/config/plank/dock1/launchers + ''; + + 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-greeter/01-sysconfdir-install.patch b/nixpkgs/pkgs/desktops/pantheon/desktop/elementary-greeter/01-sysconfdir-install.patch new file mode 100644 index 000000000000..626e56ce5960 --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/desktop/elementary-greeter/01-sysconfdir-install.patch @@ -0,0 +1,25 @@ +From 2384bee55a46eac44eb9d329be4c2a097e053ae1 Mon Sep 17 00:00:00 2001 +From: worldofpeace <worldofpeace@users.noreply.github.com> +Date: Tue, 17 Jul 2018 07:04:18 -0400 +Subject: [PATCH 1/1] '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 7621b03..7c08eaf 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') + ) + + install_data( +-- +2.17.1 + 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..303aae6882b8 --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/desktop/elementary-greeter/default.nix @@ -0,0 +1,103 @@ +{ stdenv, fetchFromGitHub, pantheon, pkgconfig, substituteAll, makeWrapper, meson +, ninja, vala, desktop-file-utils, gtk3, granite, libgee, elementary-settings-daemon +, gnome-desktop, mutter, gobject-introspection, elementary-icon-theme, wingpanel-with-indicators +, elementary-gtk-theme, nixos-artwork, elementary-default-settings, lightdm, numlockx +, clutter-gtk, libGL, dbus, wrapGAppsHook }: + +stdenv.mkDerivation rec { + pname = "greeter"; + version = "3.3.1"; + + name = "elementary-${pname}-${version}"; + + src = fetchFromGitHub { + owner = "elementary"; + repo = pname; + rev = version; + sha256 = "1vkq4z0hrmvzv4sh2qkxjajdxcycd1zj97a3pc8n4yb858pqfyzc"; + }; + + passthru = { + updateScript = pantheon.updateScript { + repoName = pname; + attrPath = "elementary-${pname}"; + }; + }; + + nativeBuildInputs = [ + desktop-file-utils + gobject-introspection + meson + ninja + pkgconfig + vala + wrapGAppsHook + ]; + + buildInputs = [ + clutter-gtk + elementary-icon-theme + elementary-gtk-theme + elementary-settings-daemon + gnome-desktop + granite + gtk3 + libgee + libGL + lightdm + mutter + wingpanel-with-indicators + ]; + + patches = [ + (substituteAll { + src = ./gsd.patch; + elementary-settings-daemon = "${elementary-settings-daemon}/libexec"; + }) + (substituteAll { + src = ./numlockx.patch; + inherit numlockx; + }) + ./01-sysconfdir-install.patch + ]; + + 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" + ]; + + preFixup = '' + gappsWrapperArgs+=( + # GTK+ reads default settings (such as icons and themes) from elementary's settings.ini here + --prefix XDG_CONFIG_DIRS : "${elementary-default-settings}/etc" + + # dbus-launch needed in path + --prefix PATH : "${dbus}/bin" + + # for `wingpanel -g` + --prefix PATH : "${wingpanel-with-indicators}/bin" + + # TODO: they should be using meson for this + # See: https://github.com/elementary/greeter/blob/19c0730fded4e9ddec5a491f0e78f83c7c04eb59/src/PantheonGreeter.vala#L451 + --prefix PATH : "$out/bin" + ) + ''; + + postFixup = '' + substituteInPlace $out/share/xgreeters/io.elementary.greeter.desktop \ + --replace "Exec=io.elementary.greeter" "Exec=$out/bin/io.elementary.greeter" + + 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" + ''; + + 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/gsd.patch b/nixpkgs/pkgs/desktops/pantheon/desktop/elementary-greeter/gsd.patch new file mode 100644 index 000000000000..1770d54aee0d --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/desktop/elementary-greeter/gsd.patch @@ -0,0 +1,13 @@ +diff --git a/src/meson.build b/src/meson.build +index 2450c1a..a908d11 100644 +--- a/src/meson.build ++++ b/src/meson.build +@@ -1,7 +1,7 @@ + conf_data = configuration_data() + conf_data.set('CONF_DIR', join_paths(get_option('sysconfdir'), 'lightdm')) + conf_data.set('GETTEXT_PACKAGE', meson.project_name()) +-conf_data.set('GSD_DIR', '/usr/lib/gnome-settings-daemon/') ++conf_data.set('GSD_DIR', '@elementary-settings-daemon@') + conf_data.set('VERSION', meson.project_version()) + config_header = configure_file ( + input: 'config.vala.in', diff --git a/nixpkgs/pkgs/desktops/pantheon/desktop/elementary-greeter/numlockx.patch b/nixpkgs/pkgs/desktops/pantheon/desktop/elementary-greeter/numlockx.patch new file mode 100644 index 000000000000..2c7766b4284c --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/desktop/elementary-greeter/numlockx.patch @@ -0,0 +1,13 @@ +diff --git a/src/PantheonGreeter.vala b/src/PantheonGreeter.vala +index 11aa4c0..ae7bf7e 100644 +--- a/src/PantheonGreeter.vala ++++ b/src/PantheonGreeter.vala +@@ -163,7 +163,7 @@ public class PantheonGreeter : Gtk.Window { + warning (e.message); + } + if (activate_numlock) { +- Granite.Services.System.execute_command ("/usr/bin/numlockx on"); ++ Granite.Services.System.execute_command ("@numlockx@/bin/numlockx on"); + } + + var screensaver_timeout = 60; 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..bd5688f941b2 --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/desktop/elementary-gsettings-schemas/default.nix @@ -0,0 +1,44 @@ +{ stdenv, runCommand, gnome3, elementary-default-settings, nixos-artwork, glib, gala, epiphany, elementary-settings-daemon, gtk3, plank +, extraGSettingsOverrides ? "" +, extraGSettingsOverridePackages ? [] +}: + +let + + gsettingsOverridePackages = [ + gala + epiphany + elementary-settings-daemon + gnome3.mutter + gtk3 + plank + ] ++ extraGSettingsOverridePackages; + +in + +with stdenv.lib; + +# TODO: Having https://github.com/NixOS/nixpkgs/issues/54150 would supersede this +runCommand "elementary-gsettings-desktop-schemas" {} + '' + mkdir -p $out/share/gsettings-schemas/nixos-gsettings-overrides/glib-2.0/schemas + cp -rf ${gnome3.gsettings-desktop-schemas}/share/gsettings-schemas/gsettings-desktop-schemas*/glib-2.0/schemas/*.xml $out/share/gsettings-schemas/nixos-gsettings-overrides/glib-2.0/schemas + + ${concatMapStrings (pkg: "cp -rf ${pkg}/share/gsettings-schemas/*/glib-2.0/schemas/*.xml $out/share/gsettings-schemas/nixos-gsettings-overrides/glib-2.0/schemas\n") gsettingsOverridePackages} + + chmod -R a+w $out/share/gsettings-schemas/nixos-gsettings-overrides + cp ${elementary-default-settings}/share/glib-2.0/schemas/20-io.elementary.desktop.gschema.override \ + $out/share/gsettings-schemas/nixos-gsettings-overrides/glib-2.0/schemas + + cat - > $out/share/gsettings-schemas/nixos-gsettings-overrides/glib-2.0/schemas/nixos-defaults.gschema.override <<- EOF + [org.gnome.desktop.background] + draw-background=true + picture-options='zoom' + picture-uri='${nixos-artwork.wallpapers.simple-dark-gray}/share/artwork/gnome/nix-wallpaper-simple-dark-gray.png' + primary-color='#000000' + + ${extraGSettingsOverrides} + EOF + + ${glib.dev}/bin/glib-compile-schemas $out/share/gsettings-schemas/nixos-gsettings-overrides/glib-2.0/schemas/ + '' 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..d8634b48570d --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/desktop/elementary-print-shim/default.nix @@ -0,0 +1,39 @@ +{ stdenv, fetchFromGitHub, pantheon, meson, ninja, pkgconfig, vala, gtk3 }: + +stdenv.mkDerivation rec { + pname = "print"; + version = "0.1.3"; + + name = "elementary-print-shim-${version}"; + + src = fetchFromGitHub { + owner = "elementary"; + repo = pname; + rev = version; + sha256 = "1w3cfap7j42x14mqpfqdm46hk5xc0v5kv8r6wxcnknr3sfxi8qlp"; + }; + + passthru = { + updateScript = pantheon.updateScript { + repoName = pname; + attrPath = "elementary-${pname}-shim"; + }; + }; + + 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-elementary-dockitems.desktop b/nixpkgs/pkgs/desktops/pantheon/desktop/elementary-session-settings/default-elementary-dockitems.desktop new file mode 100644 index 000000000000..517a9457ae10 --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/desktop/elementary-session-settings/default-elementary-dockitems.desktop @@ -0,0 +1,8 @@ +[Desktop Entry] +Type=Application +Name=Instantiate Default elementary dockitems +Exec=@script@ +StartupNotify=false +NoDisplay=true +OnlyShowIn=Pantheon; +X-GNOME-Autostart-Phase=EarlyInitialization 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..a6ec70a6b584 --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/desktop/elementary-session-settings/default.nix @@ -0,0 +1,107 @@ +{ stdenv, fetchFromGitHub, substituteAll, writeScript, pantheon, gnome-keyring, gnome-session, wingpanel, orca, at-spi2-core, elementary-default-settings, writeTextFile, writeShellScriptBin, elementary-settings-daemon, runtimeShell }: + +let + + # + # ─── ENSURES PLANK GETS ELEMENTARY'S DEFAULT DOCKITEMS ──────────────────────────── + # + + # + # Upstream relies on /etc/skel to initiate a new users home directory with planks 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/share/elementary/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 = substituteAll { + src = ./default-elementary-dockitems.desktop; + script = "${dockitems-script}"; + }; + + executable = writeShellScriptBin "pantheon" '' + export XDG_CONFIG_DIRS=${elementary-settings-daemon}/etc/xdg:$XDG_CONFIG_DIRS + export XDG_DATA_DIRS=${placeholder "out"}/share:$XDG_DATA_DIRS + exec ${gnome-session}/bin/gnome-session --session=pantheon "$@" + ''; + +in + +stdenv.mkDerivation rec { + pname = "session-settings"; + version = "5.0.3"; + + name = "elementary-${pname}-${version}"; + + src = fetchFromGitHub { + owner = "elementary"; + repo = pname; + rev = version; + sha256 = "1vrjm7bklkfv0dyafm312v4hxzy6lb7p1ny4ijkn48kr719gc71k"; + }; + + passthru = { + updateScript = pantheon.updateScript { + repoName = pname; + attrPath = "elementary-${pname}"; + }; + }; + + dontBuild = true; + + installPhase = '' + mkdir -p $out/share/applications + cp -av ${./pantheon-mimeapps.list} $out/share/applications/pantheon-mimeapps.list + + mkdir -p $out/etc/xdg/autostart + cp -av ${gnome-keyring}/etc/xdg/autostart/* $out/etc/xdg/autostart + cp -av ${orca}/etc/xdg/autostart/* $out/etc/xdg/autostart + cp -av ${at-spi2-core}/etc/xdg/autostart/* $out/etc/xdg/autostart + + cp "${dockitemAutostart}" $out/etc/xdg/autostart/default-elementary-dockitems.desktop + + mkdir -p $out/share/gnome-session/sessions + cp -av gnome-session/pantheon.session $out/share/gnome-session/sessions + + mkdir -p $out/share/xsessions + cp -av xsessions/pantheon.desktop $out/share/xsessions + ''; + + postFixup = '' + substituteInPlace $out/share/xsessions/pantheon.desktop \ + --replace "gnome-session --session=pantheon" "${executable}/bin/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 + ''; + + 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..6ceebf1980c6 --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/desktop/elementary-shortcut-overlay/default.nix @@ -0,0 +1,50 @@ +{ stdenv, fetchFromGitHub, pantheon, pkgconfig, meson, ninja, vala, libxml2, desktop-file-utils +, gtk3, glib, granite, libgee, elementary-icon-theme, gobject-introspection, wrapGAppsHook }: + +stdenv.mkDerivation rec { + pname = "shortcut-overlay"; + version = "1.0.1"; + + name = "elementary-${pname}-${version}"; + + src = fetchFromGitHub { + owner = "elementary"; + repo = pname; + rev = version; + sha256 = "1ph4rx2l5fn0zh4fjfjlgbgskmzc0lvzqgcv7v4kr5m4rij1p4y4"; + }; + + passthru = { + updateScript = pantheon.updateScript { + repoName = pname; + attrPath = "elementary-${pname}"; + }; + }; + + nativeBuildInputs = [ + desktop-file-utils + gobject-introspection + 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..4e19a65b58d4 --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/desktop/extra-elementary-contracts/default.nix @@ -0,0 +1,39 @@ +{ stdenv, substituteAll, fetchFromGitHub, file-roller, gnome-bluetooth }: + +stdenv.mkDerivation rec { + pname = "extra-elementary-contracts"; + version = "2018-08-21"; + + name = "${pname}-${version}"; + + 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; + + 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..ba14621e8bdd --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/desktop/gala/default.nix @@ -0,0 +1,66 @@ +{ 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, gobject-introspection +, elementary-icon-theme, elementary-settings-daemon, wrapGAppsHook }: + +stdenv.mkDerivation rec { + pname = "gala"; + version = "unstable-2019-02-09"; # Is tracking https://github.com/elementary/gala/commits/stable/juno + + src = fetchFromGitHub { + owner = "elementary"; + repo = pname; + rev = "1a96644c6aac405927499dacb308dea13512e919"; + sha256 = "1zi7xyzhsypf52zzfwf7dwcxgd0skxbsssv1vsxgmswszg23p7i3"; + }; + + passthru = { + updateScript = pantheon.updateScript { + repoName = pname; + versionPolicy = "master"; + }; + }; + + nativeBuildInputs = [ + desktop-file-utils + gettext + gobject-introspection + 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 ]; + + 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..e83308ea5526 --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/desktop/gala/plugins-dir.patch @@ -0,0 +1,22 @@ +diff --git a/meson.build b/meson.build +index 6b20a60..205699b 100644 +--- a/meson.build ++++ b/meson.build +@@ -38,7 +38,7 @@ conf.set_quoted('PACKAGE_VERSION', gala_version) + conf.set_quoted('DATADIR', data_dir) + conf.set_quoted('PKGDATADIR', pkgdata_dir) + conf.set_quoted('PKGLIBDIR', pkglib_dir) +-conf.set_quoted('PLUGINSDIR', plugins_dir) ++conf.set_quoted('PLUGINSDIR', '/run/current-system/sw/lib/gala/plugins') + conf.set_quoted('RELEASE_NAME', 'Window Manager.') + conf.set_quoted('VERSION', gala_version) + conf.set_quoted('VERSION_INFO', (is_release ? 'Release' : 'Development')) +@@ -83,7 +83,7 @@ add_project_arguments([ + '-DDATADIR="@0@"'.format(data_dir), + '-DPKGDATADIR="@0@"'.format(pkgdata_dir), + '-DPKGLIBDIR="@0@"'.format(pkglib_dir), +- '-DPLUGINDIR="@0@"'.format(plugins_dir), ++ '-DPLUGINDIR="@0@"'.format('/run/current-system/sw/lib/gala/plugins'), + '-DSCHEMA="org.pantheon.desktop.gala"', + '-DRESOURCEPATH="/org/pantheon/desktop/gala"', + diff --git a/nixpkgs/pkgs/desktops/pantheon/desktop/wingpanel-indicators/applications-menu/bc.patch b/nixpkgs/pkgs/desktops/pantheon/desktop/wingpanel-indicators/applications-menu/bc.patch new file mode 100644 index 000000000000..264a4a5b26da --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/desktop/wingpanel-indicators/applications-menu/bc.patch @@ -0,0 +1,24 @@ +diff --git a/lib/synapse-plugins/calculator-plugin.vala b/lib/synapse-plugins/calculator-plugin.vala +index 1b5fa06..076c0c7 100644 +--- a/lib/synapse-plugins/calculator-plugin.vala ++++ b/lib/synapse-plugins/calculator-plugin.vala +@@ -51,9 +51,7 @@ namespace Synapse { + _("Calculator"), + _("Calculate basic expressions."), + "accessories-calculator", +- register_plugin, +- Environment.find_program_in_path ("bc") != null, +- _("bc is not installed")); ++ register_plugin); + } + + static construct { +@@ -90,7 +88,7 @@ namespace Synapse { + if (matched) { + Pid pid; + int read_fd, write_fd; +- string[] argv = {"bc", "-l"}; ++ string[] argv = {"@exec@", "-l"}; + string? solution = null; + + try { 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..e4f7df107ba8 --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/desktop/wingpanel-indicators/applications-menu/default.nix @@ -0,0 +1,72 @@ +{ stdenv, fetchFromGitHub, pantheon, substituteAll, cmake, ninja +, pkgconfig, vala, granite, libgee, gettext, gtk3, appstream, gnome-menus +, json-glib, plank, bamf, switchboard, libunity, libsoup, wingpanel, libwnck3 +, zeitgeist, gobject-introspection, elementary-icon-theme, bc, wrapGAppsHook }: + +stdenv.mkDerivation rec { + pname = "applications-menu"; + version = "2.4.2"; + + name = "wingpanel-${pname}-${version}"; + + src = fetchFromGitHub { + owner = "elementary"; + repo = pname; + rev = version; + sha256 = "0y7kh50ixvm4m56v18c70s05hhpfp683c4qi3sxy50p2368d772x"; + }; + + passthru = { + updateScript = pantheon.updateScript { + repoName = pname; + attrPath = "wingpanel-${pname}"; + }; + }; + + nativeBuildInputs = [ + appstream + cmake + ninja + gettext + gobject-introspection + pkgconfig + vala + wrapGAppsHook + ]; + + buildInputs = [ + bamf + elementary-icon-theme + gnome-menus + granite + gtk3 + json-glib + libgee + libsoup + libunity + libwnck3 + plank + switchboard + wingpanel + zeitgeist + ]; + + PKG_CONFIG_WINGPANEL_2_0_INDICATORSDIR = "lib/wingpanel"; + PKG_CONFIG_SWITCHBOARD_2_0_PLUGSDIR = "lib/switchboard"; + + patches = [ + (substituteAll { + src = ./bc.patch; + exec = "${bc}/bin/bc"; + }) + ./xdg.patch + ]; + + 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/xdg.patch b/nixpkgs/pkgs/desktops/pantheon/desktop/wingpanel-indicators/applications-menu/xdg.patch new file mode 100644 index 000000000000..f17e2581e07e --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/desktop/wingpanel-indicators/applications-menu/xdg.patch @@ -0,0 +1,13 @@ +diff --git a/CMakeLists.txt b/CMakeLists.txt +index 928976a..7f0ea58 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -90,7 +90,7 @@ link_directories (${DEPS_LIBRARY_DIRS}) + + # Installation + install (TARGETS ${APPNAME} RUNTIME DESTINATION bin) +-install (FILES ${applications_menu} DESTINATION /etc/xdg/menus) ++install (FILES ${applications_menu} DESTINATION etc/xdg/menus) + file (GLOB resources "${CMAKE_CURRENT_SOURCE_DIR}/data/*") + + # Settings schema 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..16f3ae2e28e0 --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/desktop/wingpanel-indicators/bluetooth/default.nix @@ -0,0 +1,56 @@ +{ stdenv, fetchFromGitHub, pantheon, pkgconfig, meson, python3 +, ninja, vala, gtk3, granite, libnotify, wingpanel, libgee, libxml2 +, gobject-introspection, elementary-icon-theme, wrapGAppsHook }: + +stdenv.mkDerivation rec { + pname = "wingpanel-indicator-bluetooth"; + version = "2.1.2"; + + src = fetchFromGitHub { + owner = "elementary"; + repo = pname; + rev = version; + sha256 = "1gx0xglp6b3znxl4d2vpzhfkxz5z8q04hh7z2mrihj1in155bn44"; + }; + + passthru = { + updateScript = pantheon.updateScript { + repoName = pname; + }; + }; + + nativeBuildInputs = [ + gobject-introspection + libxml2 + meson + ninja + pkgconfig + python3 + vala + wrapGAppsHook + ]; + + buildInputs = [ + elementary-icon-theme + granite + gtk3 + libgee + libnotify + wingpanel + ]; + + PKG_CONFIG_WINGPANEL_2_0_INDICATORSDIR = "lib/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/calendar-exec.patch b/nixpkgs/pkgs/desktops/pantheon/desktop/wingpanel-indicators/datetime/calendar-exec.patch new file mode 100644 index 000000000000..2370fbcd3cb2 --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/desktop/wingpanel-indicators/datetime/calendar-exec.patch @@ -0,0 +1,13 @@ +diff --git a/src/Widgets/calendar/Calendar.vala b/src/Widgets/calendar/Calendar.vala +index 76443ca..d86bd44 100644 +--- a/src/Widgets/calendar/Calendar.vala ++++ b/src/Widgets/calendar/Calendar.vala +@@ -19,7 +19,7 @@ + + namespace DateTime.Widgets { + public class Calendar : Gtk.Box { +- private const string CALENDAR_EXEC = "/usr/bin/io.elementary.calendar"; ++ private const string CALENDAR_EXEC = "@elementary-calendar@"; + + ControlHeader heading; + CalendarView cal; 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..ee5cd5118186 --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/desktop/wingpanel-indicators/datetime/default.nix @@ -0,0 +1,71 @@ +{ stdenv, fetchFromGitHub, fetchpatch, pantheon, pkgconfig, meson, python3 +, ninja, substituteAll, vala, gtk3, granite, wingpanel, evolution-data-server +, libical, libgee, libxml2, libsoup, gobject-introspection +, elementary-calendar, elementary-icon-theme, wrapGAppsHook }: + +stdenv.mkDerivation rec { + pname = "wingpanel-indicator-datetime"; + version = "2.1.3"; + + src = fetchFromGitHub { + owner = "elementary"; + repo = pname; + rev = version; + sha256 = "1y7a4xjwl3bpls56ys6g3s6mh5b3qbjm2vw7b6n2i4x7a63c4cbh"; + }; + + passthru = { + updateScript = pantheon.updateScript { + repoName = pname; + }; + }; + + nativeBuildInputs = [ + gobject-introspection + libxml2 + meson + ninja + pkgconfig + python3 + vala + wrapGAppsHook + ]; + + buildInputs = [ + elementary-icon-theme + evolution-data-server + granite + gtk3 + libgee + libical + libsoup + wingpanel + ]; + + patches = [ + (substituteAll { + src = ./calendar-exec.patch; + elementary-calendar = "${elementary-calendar}/bin/io.elementary.calendar"; + }) + # Use "clock-format" GSettings key that's been moved to granite + (fetchpatch { + url = "https://src.fedoraproject.org/rpms/wingpanel-indicator-datetime/raw/c8d515b76aa812c141212d5515621a6febd781a3/f/00-move-clock-format-settings-to-granite.patch"; + sha256 = "1sq3aw9ckkm057rnrclnw9lyrxbpl37fyzfnbixi2q3ypr70n880"; + }) + ]; + + PKG_CONFIG_WINGPANEL_2_0_INDICATORSDIR = "lib/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..be5cd93eb0d6 --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/desktop/wingpanel-indicators/keyboard/default.nix @@ -0,0 +1,57 @@ +{ stdenv, fetchFromGitHub, pantheon, pkgconfig, meson, ninja +, substituteAll, vala, gtk3, granite, libxml2, wingpanel, libgee +, xorg, libgnomekbd, gobject-introspection, elementary-icon-theme, wrapGAppsHook }: + +stdenv.mkDerivation rec { + pname = "wingpanel-indicator-keyboard"; + version = "2.1.2"; + + src = fetchFromGitHub { + owner = "elementary"; + repo = pname; + rev = version; + sha256 = "0lrd474m6p8di73hqjilqnnl7qg72ky5narkgcvm4lk8dyi78mz0"; + }; + + passthru = { + updateScript = pantheon.updateScript { + repoName = pname; + }; + }; + + nativeBuildInputs = [ + gobject-introspection + meson + ninja + libxml2 + pkgconfig + vala + wrapGAppsHook + ]; + + buildInputs = [ + elementary-icon-theme + granite + gtk3 + libgee + wingpanel + ]; + + patches = [ + (substituteAll { + src = ./fix-paths.patch; + libgnomekbd_path = "${libgnomekbd}/bin/"; + config = "${xorg.xkeyboardconfig}/share/X11/xkb/rules/evdev.xml"; + }) + ]; + + PKG_CONFIG_WINGPANEL_2_0_INDICATORSDIR = "lib/wingpanel"; + + 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..58e6853e606e --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/desktop/wingpanel-indicators/keyboard/fix-paths.patch @@ -0,0 +1,26 @@ +diff --git a/src/Indicator.vala b/src/Indicator.vala +index cd7ca49..0bef9c7 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 = "@libgnomekbd_path@gkbd-keyboard-display \"--layout=" + layouts.get_current_with_variant () + "\""; + + try { + AppInfo.create_from_commandline (command, null, AppInfoCreateFlags.NONE).launch (null, null); +diff --git a/src/LayoutsManager.vala b/src/LayoutsManager.vala +index 1bac80e..67df847 100644 +--- a/src/LayoutsManager.vala ++++ b/src/LayoutsManager.vala +@@ -97,7 +97,7 @@ public class Keyboard.Widgets.LayoutManager : Gtk.ScrolledWindow { + + public string? get_name_for_xkb_layout (string language, string? variant) { + debug ("get_name_for_xkb_layout (%s, %s)", language, variant); +- Xml.Doc* doc = Xml.Parser.parse_file ("/usr/share/X11/xkb/rules/evdev.xml"); ++ Xml.Doc* doc = Xml.Parser.parse_file ("@config@"); + if (doc == null) { + critical ("'evdev.xml' not found or permissions incorrect\n"); + return 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..245e12d45919 --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/desktop/wingpanel-indicators/network/default.nix @@ -0,0 +1,50 @@ +{ stdenv, fetchFromGitHub, pantheon, pkgconfig, meson, ninja, vala +, gtk3, granite, networkmanager, networkmanagerapplet, wingpanel +, libgee, gobject-introspection, elementary-icon-theme, wrapGAppsHook }: + +stdenv.mkDerivation rec { + pname = "wingpanel-indicator-network"; + version = "2.2.2"; + + src = fetchFromGitHub { + owner = "elementary"; + repo = pname; + rev = version; + sha256 = "0fch27imk5x4nfx49cwcylkxd7m289rl9niy1vx5kjplhbhyhdq2"; + }; + + passthru = { + updateScript = pantheon.updateScript { + repoName = pname; + }; + }; + + nativeBuildInputs = [ + gobject-introspection + meson + ninja + pkgconfig + vala + wrapGAppsHook + ]; + + buildInputs = [ + elementary-icon-theme + granite + gtk3 + libgee + networkmanager + networkmanagerapplet + wingpanel + ]; + + PKG_CONFIG_WINGPANEL_2_0_INDICATORSDIR = "lib/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..08b0710977fa --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/desktop/wingpanel-indicators/nightlight/default.nix @@ -0,0 +1,49 @@ +{ stdenv, fetchFromGitHub, pantheon, pkgconfig, meson, ninja, vala +, gtk3, granite, wingpanel, libgee, libxml2, gobject-introspection +, elementary-icon-theme, wrapGAppsHook }: + +stdenv.mkDerivation rec { + pname = "wingpanel-indicator-nightlight"; + version = "2.0.2"; + + src = fetchFromGitHub { + owner = "elementary"; + repo = pname; + rev = version; + sha256 = "0kw83ws91688xg96k9034dnz15szx2kva9smh1nb7xmdbpzn3qph"; + }; + + passthru = { + updateScript = pantheon.updateScript { + repoName = pname; + }; + }; + + nativeBuildInputs = [ + gobject-introspection + libxml2 + meson + ninja + pkgconfig + vala + wrapGAppsHook + ]; + + buildInputs = [ + elementary-icon-theme + granite + gtk3 + libgee + wingpanel + ]; + + PKG_CONFIG_WINGPANEL_2_0_INDICATORSDIR = "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..aff7d9891adf --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/desktop/wingpanel-indicators/notifications/default.nix @@ -0,0 +1,48 @@ +{ stdenv, fetchFromGitHub, pantheon, pkgconfig, meson, ninja, vala, gtk3, granite +, wingpanel, libgee, libwnck3, gobject-introspection, elementary-icon-theme, wrapGAppsHook }: + +stdenv.mkDerivation rec { + pname = "wingpanel-indicator-notifications"; + version = "2.1.2"; + + src = fetchFromGitHub { + owner = "elementary"; + repo = pname; + rev = version; + sha256 = "1960s3xcsx6yjlnk0csf1m66s1z1sj5rym9b2fy7pm2nan47z3ld"; + }; + + passthru = { + updateScript = pantheon.updateScript { + repoName = pname; + }; + }; + + nativeBuildInputs = [ + gobject-introspection + meson + ninja + pkgconfig + vala + wrapGAppsHook + ]; + + buildInputs = [ + elementary-icon-theme + granite + gtk3 + libgee + libwnck3 + wingpanel + ]; + + PKG_CONFIG_WINGPANEL_2_0_INDICATORSDIR = "lib/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..d7627c511001 --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/desktop/wingpanel-indicators/power/default.nix @@ -0,0 +1,57 @@ +{ stdenv, fetchFromGitHub, pantheon, pkgconfig, meson, python3 +, ninja, vala, gtk3, granite, bamf, libgtop, udev, wingpanel +, libgee, gobject-introspection, elementary-icon-theme, wrapGAppsHook }: + +stdenv.mkDerivation rec { + pname = "wingpanel-indicator-power"; + version = "2.1.4"; + + src = fetchFromGitHub { + owner = "elementary"; + repo = pname; + rev = version; + sha256 = "02gp9m9zkmhcl43nz02kjkcim4zm25zab3il8dhwkihh731g1c6j"; + }; + + passthru = { + updateScript = pantheon.updateScript { + repoName = pname; + }; + }; + + nativeBuildInputs = [ + gobject-introspection + meson + ninja + pkgconfig + python3 + vala + wrapGAppsHook + ]; + + buildInputs = [ + bamf + elementary-icon-theme + granite + gtk3 + libgee + libgtop + udev + wingpanel + ]; + + PKG_CONFIG_WINGPANEL_2_0_INDICATORSDIR = "lib/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..8227ca6f57ef --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/desktop/wingpanel-indicators/session/default.nix @@ -0,0 +1,49 @@ +{ stdenv, fetchFromGitHub, pantheon, pkgconfig, meson +, ninja, vala, gtk3, granite, wingpanel, accountsservice +, libgee, gobject-introspection, elementary-icon-theme, wrapGAppsHook }: + +stdenv.mkDerivation rec { + pname = "wingpanel-indicator-session"; + version = "2.2.3"; + + src = fetchFromGitHub { + owner = "elementary"; + repo = pname; + rev = version; + sha256 = "1y0blff02p3w23sv17yg7fq0yq0g2k8j7vjmk92k664fx72kjjzh"; + }; + + passthru = { + updateScript = pantheon.updateScript { + repoName = pname; + }; + }; + + nativeBuildInputs = [ + gobject-introspection + meson + ninja + pkgconfig + vala + wrapGAppsHook + ]; + + buildInputs = [ + accountsservice + elementary-icon-theme + granite + gtk3 + libgee + wingpanel + ]; + + PKG_CONFIG_WINGPANEL_2_0_INDICATORSDIR = "lib/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..65a4b1abd2c2 --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/desktop/wingpanel-indicators/sound/default.nix @@ -0,0 +1,59 @@ +{ stdenv, fetchFromGitHub, pantheon, pkgconfig, meson +, python3, ninja, vala, gtk3, granite, wingpanel, libnotify +, pulseaudio, libcanberra-gtk3, libgee, libxml2, wrapGAppsHook +, gobject-introspection, elementary-icon-theme }: + +stdenv.mkDerivation rec { + pname = "wingpanel-indicator-sound"; + version = "2.1.3"; + + src = fetchFromGitHub { + owner = "elementary"; + repo = pname; + rev = version; + sha256 = "0lgjl969c7s31nszh6d4pr1vsxfdsizplsihvd8r02mm1mlxmsda"; + }; + + passthru = { + updateScript = pantheon.updateScript { + repoName = pname; + }; + }; + + nativeBuildInputs = [ + gobject-introspection + libxml2 + meson + ninja + pkgconfig + python3 + vala + wrapGAppsHook + ]; + + buildInputs = [ + elementary-icon-theme + granite + gtk3 + libcanberra-gtk3 + libgee + libnotify + pulseaudio + wingpanel + ]; + + PKG_CONFIG_WINGPANEL_2_0_INDICATORSDIR = "lib/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..c34beab7600d --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/desktop/wingpanel/default.nix @@ -0,0 +1,68 @@ +{ stdenv, fetchFromGitHub, pantheon, fetchpatch, wrapGAppsHook, pkgconfig, meson, ninja +, vala, gala, gtk3, libgee, granite, gettext, glib-networking, mutter, json-glib +, python3, gobject-introspection }: + +stdenv.mkDerivation rec { + pname = "wingpanel"; + version = "2.2.2"; + + src = fetchFromGitHub { + owner = "elementary"; + repo = pname; + rev = version; + sha256 = "1knkqh9q6yp7qf27zi6ki20fq4w0ia2hklvv84ivfmfa0irz0j6r"; + }; + + passthru = { + updateScript = pantheon.updateScript { + repoName = pname; + }; + }; + + nativeBuildInputs = [ + gettext + glib-networking + gobject-introspection + meson + ninja + pkgconfig + python3 + vala + wrapGAppsHook + ]; + + buildInputs = [ + gala + granite + gtk3 + json-glib + libgee + mutter + ]; + + patches = [ + ./indicators.patch + # Fix wingpanel potentially overlapping windows: https://github.com/elementary/wingpanel/pull/198 + (fetchpatch { + url = "https://github.com/elementary/wingpanel/commit/fc1b8ea3d6cfc5d6e4034af177eecd4542a59833.patch"; + sha256 = "0w5z56di5lxwg9vb96f9y4r2q05znwpn814m2w12l3impf5xsdqs"; + }) + ]; + + 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..cfae604d3a53 --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/desktop/wingpanel/wrapper.nix @@ -0,0 +1,23 @@ +{ lib, makeWrapper, symlinkJoin, wingpanel, wingpanelIndicators, switchboard-with-plugs, indicators ? null }: + +let + selectedIndicators = if indicators == null then wingpanelIndicators else indicators; +in +symlinkJoin { + name = "${wingpanel.name}-with-indicators"; + + paths = [ wingpanel ] ++ selectedIndicators; + + buildInputs = [ makeWrapper ]; + + # We have to set SWITCHBOARD_PLUGS_PATH because wingpanel-applications-menu + # has a plugin to search switchboard settings + postBuild = '' + wrapProgram $out/bin/wingpanel \ + --set WINGPANEL_INDICATORS_PATH "$out/lib/wingpanel" \ + --set SWITCHBOARD_PLUGS_PATH "${switchboard-with-plugs}/lib/switchboard" \ + --suffix XDG_DATA_DIRS : ${lib.concatMapStringsSep ":" (indicator: ''${indicator}/share/gsettings-schemas/${indicator.name}'') selectedIndicators} + ''; + + inherit (wingpanel) meta; +} |