diff options
Diffstat (limited to 'pkgs/desktops/pantheon/desktop')
41 files changed, 1419 insertions, 0 deletions
diff --git a/pkgs/desktops/pantheon/desktop/elementary-default-settings/correct-override.patch b/pkgs/desktops/pantheon/desktop/elementary-default-settings/correct-override.patch new file mode 100644 index 00000000000..438ed79d1bb --- /dev/null +++ b/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/pkgs/desktops/pantheon/desktop/elementary-default-settings/default.nix b/pkgs/desktops/pantheon/desktop/elementary-default-settings/default.nix new file mode 100644 index 00000000000..f133324a81e --- /dev/null +++ b/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/pkgs/desktops/pantheon/desktop/elementary-default-settings/io.elementary.greeter.whitelist b/pkgs/desktops/pantheon/desktop/elementary-default-settings/io.elementary.greeter.whitelist new file mode 100644 index 00000000000..0cff31f4f77 --- /dev/null +++ b/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/pkgs/desktops/pantheon/desktop/elementary-default-settings/launchers/gala-multitaskingview.dockitem b/pkgs/desktops/pantheon/desktop/elementary-default-settings/launchers/gala-multitaskingview.dockitem new file mode 100644 index 00000000000..b25bb8c8590 --- /dev/null +++ b/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/pkgs/desktops/pantheon/desktop/elementary-default-settings/launchers/io.elementary.calendar.dockitem b/pkgs/desktops/pantheon/desktop/elementary-default-settings/launchers/io.elementary.calendar.dockitem new file mode 100644 index 00000000000..3bd7d531840 --- /dev/null +++ b/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/pkgs/desktops/pantheon/desktop/elementary-default-settings/launchers/io.elementary.music.dockitem b/pkgs/desktops/pantheon/desktop/elementary-default-settings/launchers/io.elementary.music.dockitem new file mode 100644 index 00000000000..494edde183c --- /dev/null +++ b/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/pkgs/desktops/pantheon/desktop/elementary-default-settings/launchers/io.elementary.photos.dockitem b/pkgs/desktops/pantheon/desktop/elementary-default-settings/launchers/io.elementary.photos.dockitem new file mode 100644 index 00000000000..89536754964 --- /dev/null +++ b/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/pkgs/desktops/pantheon/desktop/elementary-default-settings/launchers/io.elementary.switchboard.dockitem b/pkgs/desktops/pantheon/desktop/elementary-default-settings/launchers/io.elementary.switchboard.dockitem new file mode 100644 index 00000000000..312c35d9bf0 --- /dev/null +++ b/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/pkgs/desktops/pantheon/desktop/elementary-default-settings/launchers/io.elementary.videos.dockitem b/pkgs/desktops/pantheon/desktop/elementary-default-settings/launchers/io.elementary.videos.dockitem new file mode 100644 index 00000000000..3b0f721a564 --- /dev/null +++ b/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/pkgs/desktops/pantheon/desktop/elementary-default-settings/launchers/org.gnome.Epiphany.dockitem b/pkgs/desktops/pantheon/desktop/elementary-default-settings/launchers/org.gnome.Epiphany.dockitem new file mode 100644 index 00000000000..b0218bac52d --- /dev/null +++ b/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/pkgs/desktops/pantheon/desktop/elementary-default-settings/launchers/org.gnome.Geary.dockitem b/pkgs/desktops/pantheon/desktop/elementary-default-settings/launchers/org.gnome.Geary.dockitem new file mode 100644 index 00000000000..8b04efe417e --- /dev/null +++ b/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/pkgs/desktops/pantheon/desktop/elementary-greeter/01-sysconfdir-install.patch b/pkgs/desktops/pantheon/desktop/elementary-greeter/01-sysconfdir-install.patch new file mode 100644 index 00000000000..626e56ce596 --- /dev/null +++ b/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/pkgs/desktops/pantheon/desktop/elementary-greeter/default.nix b/pkgs/desktops/pantheon/desktop/elementary-greeter/default.nix new file mode 100644 index 00000000000..303aae6882b --- /dev/null +++ b/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/pkgs/desktops/pantheon/desktop/elementary-greeter/gsd.patch b/pkgs/desktops/pantheon/desktop/elementary-greeter/gsd.patch new file mode 100644 index 00000000000..1770d54aee0 --- /dev/null +++ b/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/pkgs/desktops/pantheon/desktop/elementary-greeter/numlockx.patch b/pkgs/desktops/pantheon/desktop/elementary-greeter/numlockx.patch new file mode 100644 index 00000000000..2c7766b4284 --- /dev/null +++ b/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/pkgs/desktops/pantheon/desktop/elementary-gsettings-schemas/default.nix b/pkgs/desktops/pantheon/desktop/elementary-gsettings-schemas/default.nix new file mode 100644 index 00000000000..bd5688f941b --- /dev/null +++ b/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/pkgs/desktops/pantheon/desktop/elementary-print-shim/default.nix b/pkgs/desktops/pantheon/desktop/elementary-print-shim/default.nix new file mode 100644 index 00000000000..d8634b48570 --- /dev/null +++ b/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/pkgs/desktops/pantheon/desktop/elementary-session-settings/default-elementary-dockitems.desktop b/pkgs/desktops/pantheon/desktop/elementary-session-settings/default-elementary-dockitems.desktop new file mode 100644 index 00000000000..517a9457ae1 --- /dev/null +++ b/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/pkgs/desktops/pantheon/desktop/elementary-session-settings/default.nix b/pkgs/desktops/pantheon/desktop/elementary-session-settings/default.nix new file mode 100644 index 00000000000..fddd4143616 --- /dev/null +++ b/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 }: + +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" '' + #!${stdenv.shell} + + 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 + cp -avr applications $out/share/ + + 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/pkgs/desktops/pantheon/desktop/elementary-shortcut-overlay/default.nix b/pkgs/desktops/pantheon/desktop/elementary-shortcut-overlay/default.nix new file mode 100644 index 00000000000..6ceebf1980c --- /dev/null +++ b/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/pkgs/desktops/pantheon/desktop/extra-elementary-contracts/default.nix b/pkgs/desktops/pantheon/desktop/extra-elementary-contracts/default.nix new file mode 100644 index 00000000000..4e19a65b58d --- /dev/null +++ b/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/pkgs/desktops/pantheon/desktop/extra-elementary-contracts/exec-path.patch b/pkgs/desktops/pantheon/desktop/extra-elementary-contracts/exec-path.patch new file mode 100644 index 00000000000..3b97e306119 --- /dev/null +++ b/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/pkgs/desktops/pantheon/desktop/gala/default.nix b/pkgs/desktops/pantheon/desktop/gala/default.nix new file mode 100644 index 00000000000..97acc2c791b --- /dev/null +++ b/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-2018-12-16"; + + src = fetchFromGitHub { + owner = "elementary"; + repo = pname; + rev = "7f1e392e03000df0bd47e7832bb3adab81f39ae5"; + sha256 = "1syqq0xfyg5nbnnmy0wp5d66k1bvq9qn27lvr37abxxqig9acpc8"; + }; + + 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/pkgs/desktops/pantheon/desktop/gala/plugins-dir.patch b/pkgs/desktops/pantheon/desktop/gala/plugins-dir.patch new file mode 100644 index 00000000000..e83308ea552 --- /dev/null +++ b/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/pkgs/desktops/pantheon/desktop/wingpanel-indicators/applications-menu/bc.patch b/pkgs/desktops/pantheon/desktop/wingpanel-indicators/applications-menu/bc.patch new file mode 100644 index 00000000000..264a4a5b26d --- /dev/null +++ b/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/pkgs/desktops/pantheon/desktop/wingpanel-indicators/applications-menu/default.nix b/pkgs/desktops/pantheon/desktop/wingpanel-indicators/applications-menu/default.nix new file mode 100644 index 00000000000..e4f7df107ba --- /dev/null +++ b/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/pkgs/desktops/pantheon/desktop/wingpanel-indicators/applications-menu/xdg.patch b/pkgs/desktops/pantheon/desktop/wingpanel-indicators/applications-menu/xdg.patch new file mode 100644 index 00000000000..f17e2581e07 --- /dev/null +++ b/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/pkgs/desktops/pantheon/desktop/wingpanel-indicators/bluetooth/default.nix b/pkgs/desktops/pantheon/desktop/wingpanel-indicators/bluetooth/default.nix new file mode 100644 index 00000000000..16f3ae2e28e --- /dev/null +++ b/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/pkgs/desktops/pantheon/desktop/wingpanel-indicators/datetime/calendar-exec.patch b/pkgs/desktops/pantheon/desktop/wingpanel-indicators/datetime/calendar-exec.patch new file mode 100644 index 00000000000..2370fbcd3cb --- /dev/null +++ b/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/pkgs/desktops/pantheon/desktop/wingpanel-indicators/datetime/default.nix b/pkgs/desktops/pantheon/desktop/wingpanel-indicators/datetime/default.nix new file mode 100644 index 00000000000..ee5cd511818 --- /dev/null +++ b/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/pkgs/desktops/pantheon/desktop/wingpanel-indicators/keyboard/default.nix b/pkgs/desktops/pantheon/desktop/wingpanel-indicators/keyboard/default.nix new file mode 100644 index 00000000000..e2faccedbb7 --- /dev/null +++ b/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.1"; + + src = fetchFromGitHub { + owner = "elementary"; + repo = pname; + rev = version; + sha256 = "0x0bdd9svw4sffx8pa0pqlh6mrj3fqp4mgrb4n7ys26k2w20ngnb"; + }; + + 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/pkgs/desktops/pantheon/desktop/wingpanel-indicators/keyboard/fix-paths.patch b/pkgs/desktops/pantheon/desktop/wingpanel-indicators/keyboard/fix-paths.patch new file mode 100644 index 00000000000..58e6853e606 --- /dev/null +++ b/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/pkgs/desktops/pantheon/desktop/wingpanel-indicators/network/default.nix b/pkgs/desktops/pantheon/desktop/wingpanel-indicators/network/default.nix new file mode 100644 index 00000000000..245e12d4591 --- /dev/null +++ b/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/pkgs/desktops/pantheon/desktop/wingpanel-indicators/nightlight/default.nix b/pkgs/desktops/pantheon/desktop/wingpanel-indicators/nightlight/default.nix new file mode 100644 index 00000000000..53754c31d87 --- /dev/null +++ b/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.1"; + + src = fetchFromGitHub { + owner = "elementary"; + repo = pname; + rev = version; + sha256 = "17pa048asbkhzz5945hjp96dnghdl72nqp1zq0b999nawnfrb339"; + }; + + 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/pkgs/desktops/pantheon/desktop/wingpanel-indicators/notifications/default.nix b/pkgs/desktops/pantheon/desktop/wingpanel-indicators/notifications/default.nix new file mode 100644 index 00000000000..aff7d9891ad --- /dev/null +++ b/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/pkgs/desktops/pantheon/desktop/wingpanel-indicators/power/default.nix b/pkgs/desktops/pantheon/desktop/wingpanel-indicators/power/default.nix new file mode 100644 index 00000000000..d7627c51100 --- /dev/null +++ b/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/pkgs/desktops/pantheon/desktop/wingpanel-indicators/session/default.nix b/pkgs/desktops/pantheon/desktop/wingpanel-indicators/session/default.nix new file mode 100644 index 00000000000..b910f6a7180 --- /dev/null +++ b/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.2"; + + src = fetchFromGitHub { + owner = "elementary"; + repo = pname; + rev = version; + sha256 = "15ghhiabk74m7fm5pzr2qmdwpc330jczvvkwbf5pf7qczfyipjln"; + }; + + 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/pkgs/desktops/pantheon/desktop/wingpanel-indicators/sound/default.nix b/pkgs/desktops/pantheon/desktop/wingpanel-indicators/sound/default.nix new file mode 100644 index 00000000000..003e431bcf7 --- /dev/null +++ b/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.2"; + + src = fetchFromGitHub { + owner = "elementary"; + repo = pname; + rev = version; + sha256 = "0hxbr5dp8d1czq8ffw339r41c7srqb72vr48hxph8g091d3mcgcl"; + }; + + 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/pkgs/desktops/pantheon/desktop/wingpanel/default.nix b/pkgs/desktops/pantheon/desktop/wingpanel/default.nix new file mode 100644 index 00000000000..a5ca227bbc2 --- /dev/null +++ b/pkgs/desktops/pantheon/desktop/wingpanel/default.nix @@ -0,0 +1,61 @@ +{ stdenv, fetchFromGitHub, pantheon, 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 ]; + + 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/pkgs/desktops/pantheon/desktop/wingpanel/indicators.patch b/pkgs/desktops/pantheon/desktop/wingpanel/indicators.patch new file mode 100644 index 00000000000..68a5fd532a8 --- /dev/null +++ b/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/pkgs/desktops/pantheon/desktop/wingpanel/wrapper.nix b/pkgs/desktops/pantheon/desktop/wingpanel/wrapper.nix new file mode 100644 index 00000000000..cfae604d3a5 --- /dev/null +++ b/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; +} |