diff options
Diffstat (limited to 'nixpkgs/pkgs/desktops/pantheon/desktop')
46 files changed, 2167 insertions, 0 deletions
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..a42ae92e97af --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/desktop/elementary-default-settings/default.nix @@ -0,0 +1,78 @@ +{ lib +, stdenv +, fetchFromGitHub +, nix-update-script +, meson +, ninja +, nixos-artwork +, glib +, pkg-config +, dbus +, polkit +, accountsservice +, python3 +}: + +stdenv.mkDerivation rec { + pname = "elementary-default-settings"; + version = "6.0.2"; + + src = fetchFromGitHub { + owner = "elementary"; + repo = "default-settings"; + rev = version; + sha256 = "sha256-qaPj/Qp7RYzHgElFdM8bHV42oiPUbCMTC9Q+MUj4Q6Y="; + }; + + nativeBuildInputs = [ + accountsservice + dbus + glib # polkit requires + meson + ninja + pkg-config + polkit + python3 + ]; + + mesonFlags = [ + "--sysconfdir=${placeholder "out"}/etc" + "-Ddefault-wallpaper=${nixos-artwork.wallpapers.simple-dark-gray.gnomeFilePath}" + "-Dplank-dockitems=false" + ]; + + postPatch = '' + chmod +x meson/post_install.py + patchShebangs meson/post_install.py + ''; + + preInstall = '' + # Install our override for plank dockitems as the desktop file path is different. + schema_dir=$out/share/glib-2.0/schemas + install -D ${./overrides/plank-dockitems.gschema.override} $schema_dir/plank-dockitems.gschema.override + + # Our launchers that use paths at /run/current-system/sw/bin + mkdir -p $out/etc/skel/.config/plank/dock1 + cp -avr ${./launchers} $out/etc/skel/.config/plank/dock1/launchers + ''; + + postFixup = '' + # https://github.com/elementary/default-settings/issues/55 + rm -r $out/share/cups + rm -r $out/share/applications + ''; + + passthru = { + updateScript = nix-update-script { + attrPath = "pantheon.${pname}"; + }; + }; + + meta = with lib; { + description = "Default settings and configuration files for elementary"; + homepage = "https://github.com/elementary/default-settings"; + license = licenses.gpl2Plus; + platforms = platforms.linux; + maintainers = teams.pantheon.members; + }; +} 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.appcenter.dockitem b/nixpkgs/pkgs/desktops/pantheon/desktop/elementary-default-settings/launchers/io.elementary.appcenter.dockitem new file mode 100644 index 000000000000..586a74df2447 --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/desktop/elementary-default-settings/launchers/io.elementary.appcenter.dockitem @@ -0,0 +1,2 @@ +[PlankDockItemPreferences] +Launcher=file:///run/current-system/sw/share/applications/io.elementary.appcenter.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.mail.dockitem b/nixpkgs/pkgs/desktops/pantheon/desktop/elementary-default-settings/launchers/io.elementary.mail.dockitem new file mode 100644 index 000000000000..e07328c59473 --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/desktop/elementary-default-settings/launchers/io.elementary.mail.dockitem @@ -0,0 +1,2 @@ +[PlankDockItemPreferences] +Launcher=file:///run/current-system/sw/share/applications/io.elementary.mail.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.tasks.dockitem b/nixpkgs/pkgs/desktops/pantheon/desktop/elementary-default-settings/launchers/io.elementary.tasks.dockitem new file mode 100644 index 000000000000..a98825afcb28 --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/desktop/elementary-default-settings/launchers/io.elementary.tasks.dockitem @@ -0,0 +1,2 @@ +[PlankDockItemPreferences] +Launcher=file:///run/current-system/sw/share/applications/io.elementary.tasks.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/overrides/plank-dockitems.gschema.override b/nixpkgs/pkgs/desktops/pantheon/desktop/elementary-default-settings/overrides/plank-dockitems.gschema.override new file mode 100644 index 000000000000..0ba89fa4b40b --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/desktop/elementary-default-settings/overrides/plank-dockitems.gschema.override @@ -0,0 +1,2 @@ +[net.launchpad.plank.dock.settings] +dock-items=['gala-multitaskingview.dockitem','org.gnome.Epiphany.dockitem','io.elementary.mail.dockitem','io.elementary.tasks.dockitem','io.elementary.calendar.dockitem','io.elementary.music.dockitem','io.elementary.videos.dockitem','io.elementary.photos.dockitem','io.elementary.switchboard.dockitem','io.elementary.appcenter.dockitem'] diff --git a/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..06fbfdc078e2 --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/desktop/elementary-greeter/default.nix @@ -0,0 +1,130 @@ +{ lib +, stdenv +, fetchFromGitHub +, nix-update-script +, linkFarm +, substituteAll +, elementary-greeter +, pkg-config +, meson +, ninja +, vala +, desktop-file-utils +, gtk3 +, granite +, libgee +, libhandy +, gnome-settings-daemon +, mutter +, elementary-icon-theme +, wingpanel-with-indicators +, elementary-gtk-theme +, nixos-artwork +, lightdm +, gdk-pixbuf +, clutter-gtk +, dbus +, accountsservice +, wrapGAppsHook +}: + +stdenv.mkDerivation rec { + pname = "elementary-greeter"; + version = "6.0.2"; + + src = fetchFromGitHub { + owner = "elementary"; + repo = "greeter"; + rev = version; + sha256 = "sha256-0chBM8JuCYgZXHneiSxSICZwBVm2Vgx+bas9wUjbnyg="; + }; + + patches = [ + ./sysconfdir-install.patch + # Needed until https://github.com/elementary/greeter/issues/360 is fixed + (substituteAll { + src = ./hardcode-fallback-background.patch; + default_wallpaper = "${nixos-artwork.wallpapers.simple-dark-gray.gnomeFilePath}"; + }) + ]; + + nativeBuildInputs = [ + desktop-file-utils + meson + ninja + pkg-config + vala + wrapGAppsHook + ]; + + buildInputs = [ + accountsservice + clutter-gtk # else we get could not generate cargs for mutter-clutter-2 + elementary-icon-theme + gnome-settings-daemon + gdk-pixbuf + granite + gtk3 + libgee + libhandy + lightdm + mutter + ]; + + 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" + "-Dgsd-dir=${gnome-settings-daemon}/libexec/" # trailing slash is needed + ]; + + preFixup = '' + gappsWrapperArgs+=( + # dbus-launch needed in path + --prefix PATH : "${dbus}/bin" + + # for `io.elementary.wingpanel -g` + --prefix PATH : "${wingpanel-with-indicators}/bin" + + # for the compositor + --prefix PATH : "$out/bin" + + # the GTK theme is hardcoded + --prefix XDG_DATA_DIRS : "${elementary-gtk-theme}/share" + + # the icon theme is hardcoded + --prefix XDG_DATA_DIRS : "$XDG_ICON_DIRS" + ) + ''; + + postFixup = '' + # Use NixOS default wallpaper + substituteInPlace $out/etc/lightdm/io.elementary.greeter.conf \ + --replace "#default-wallpaper=/usr/share/backgrounds/elementaryos-default" \ + "default-wallpaper=${nixos-artwork.wallpapers.simple-dark-gray.gnomeFilePath}" + + substituteInPlace $out/share/xgreeters/io.elementary.greeter.desktop \ + --replace "Exec=io.elementary.greeter" "Exec=$out/bin/io.elementary.greeter" + ''; + + passthru = { + updateScript = nix-update-script { + attrPath = "pantheon.${pname}"; + }; + + xgreeters = linkFarm "pantheon-greeter-xgreeters" [{ + path = "${elementary-greeter}/share/xgreeters/io.elementary.greeter.desktop"; + name = "io.elementary.greeter.desktop"; + }]; + }; + + meta = with lib; { + description = "LightDM Greeter for Pantheon"; + homepage = "https://github.com/elementary/greeter"; + license = licenses.gpl3Plus; + platforms = platforms.linux; + maintainers = teams.pantheon.members; + mainProgram = "io.elementary.greeter"; + }; +} diff --git a/nixpkgs/pkgs/desktops/pantheon/desktop/elementary-greeter/hardcode-fallback-background.patch b/nixpkgs/pkgs/desktops/pantheon/desktop/elementary-greeter/hardcode-fallback-background.patch new file mode 100644 index 000000000000..7d2afe7b16c3 --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/desktop/elementary-greeter/hardcode-fallback-background.patch @@ -0,0 +1,22 @@ +diff --git a/src/Widgets/BackgroundImage.vala b/src/Widgets/BackgroundImage.vala +index ae9431c..f0f2a49 100644 +--- a/src/Widgets/BackgroundImage.vala ++++ b/src/Widgets/BackgroundImage.vala +@@ -9,7 +9,7 @@ public class Greeter.BackgroundImage : Gtk.EventBox { + + public BackgroundImage (string? path) { + if (path == null) { +- path = "/usr/share/backgrounds/elementaryos-default"; ++ path = "@default_wallpaper@"; + } + + try { +@@ -19,7 +19,7 @@ public class Greeter.BackgroundImage : Gtk.EventBox { + critical ("Fallback to default wallpaper"); + + try { +- full_pixbuf = new Gdk.Pixbuf.from_file ("/usr/share/backgrounds/elementaryos-default"); ++ full_pixbuf = new Gdk.Pixbuf.from_file ("@default_wallpaper@"); + } catch (GLib.Error e) { + critical (e.message); + } diff --git a/nixpkgs/pkgs/desktops/pantheon/desktop/elementary-greeter/sysconfdir-install.patch b/nixpkgs/pkgs/desktops/pantheon/desktop/elementary-greeter/sysconfdir-install.patch new file mode 100644 index 000000000000..9bacbcf4f98b --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/desktop/elementary-greeter/sysconfdir-install.patch @@ -0,0 +1,25 @@ +From 7bb0d507cbb0122f167127b9f6460bd53d8234de Mon Sep 17 00:00:00 2001 +From: worldofpeace <worldofpeace@users.noreply.github.com> +Date: Sat, 16 Mar 2019 16:07:24 -0400 +Subject: [PATCH] 'sysconfdir' will be etc not /etc for install + +--- + data/meson.build | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/data/meson.build b/data/meson.build +index fd54b75..b1120ae 100644 +--- a/data/meson.build ++++ b/data/meson.build +@@ -20,7 +20,7 @@ i18n.merge_file ( + + install_data( + meson.project_name() + '.conf', +- install_dir: join_paths(get_option('sysconfdir'), 'lightdm') ++ install_dir: join_paths(get_option('prefix'), 'etc', 'lightdm') + ) + + test ( +-- +2.19.2 + diff --git a/nixpkgs/pkgs/desktops/pantheon/desktop/elementary-gsettings-schemas/default.nix b/nixpkgs/pkgs/desktops/pantheon/desktop/elementary-gsettings-schemas/default.nix new file mode 100644 index 000000000000..dd6b10f5c830 --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/desktop/elementary-gsettings-schemas/default.nix @@ -0,0 +1,51 @@ +{ lib +, runCommand +, mutter +, elementary-default-settings +, glib +, gala +, epiphany +, gnome-settings-daemon +, gtk3 +, elementary-dock +, gsettings-desktop-schemas +, extraGSettingsOverrides ? "" +, extraGSettingsOverridePackages ? [] +}: + +let + + gsettingsOverridePackages = [ + elementary-dock + gnome-settings-daemon + epiphany + gala + gsettings-desktop-schemas + gtk3 + mutter + ] ++ extraGSettingsOverridePackages; + +in + +with lib; + +# TODO: Having https://github.com/NixOS/nixpkgs/issues/54150 would supersede this +runCommand "elementary-gsettings-desktop-schemas" {} + '' + schema_dir=$out/share/gsettings-schemas/nixos-gsettings-overrides/glib-2.0/schemas + + mkdir -p $schema_dir + + cp -rf ${glib.getSchemaPath gala}/*.gschema.override $schema_dir + + ${concatMapStrings (pkg: "cp -rf ${glib.getSchemaPath pkg}/*.xml $schema_dir\n") gsettingsOverridePackages} + + chmod -R a+w $out/share/gsettings-schemas/nixos-gsettings-overrides + cp ${glib.getSchemaPath elementary-default-settings}/* $schema_dir + + cat - > $schema_dir/nixos-defaults.gschema.override <<- EOF + ${extraGSettingsOverrides} + EOF + + ${glib.dev}/bin/glib-compile-schemas $schema_dir + '' diff --git a/nixpkgs/pkgs/desktops/pantheon/desktop/elementary-onboarding/default.nix b/nixpkgs/pkgs/desktops/pantheon/desktop/elementary-onboarding/default.nix new file mode 100644 index 000000000000..fa4ff7edf12e --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/desktop/elementary-onboarding/default.nix @@ -0,0 +1,85 @@ +{ lib +, stdenv +, fetchFromGitHub +, fetchpatch +, nix-update-script +, substituteAll +, pkg-config +, meson +, ninja +, vala +, python3 +, gtk3 +, glib +, granite +, libgee +, elementary-settings-daemon +, gettext +, libhandy +, wrapGAppsHook +, appcenter +}: + +stdenv.mkDerivation rec { + pname = "elementary-onboarding"; + version = "6.1.0"; + + src = fetchFromGitHub { + owner = "elementary"; + repo = "onboarding"; + rev = version; + sha256 = "sha256-9voy9eje3VlV4IMM664EyjKWTfSVogX5JoRCqhsUXTE="; + }; + + patches = [ + (substituteAll { + src = ./fix-paths.patch; + appcenter = appcenter; + }) + # Provides the directory where the locales are actually installed + # https://github.com/elementary/onboarding/pull/147 + (fetchpatch { + url = "https://github.com/elementary/onboarding/commit/af19c3dbefd1c0e0ec18eddacc1f21cb991f5513.patch"; + sha256 = "sha256-fSFfjSd33W7rXXEUHY8b3rv9B9c31XfCjxjRxBBrqjs="; + }) + ]; + + nativeBuildInputs = [ + gettext + meson + ninja + pkg-config + python3 + vala + wrapGAppsHook + ]; + + buildInputs = [ + elementary-settings-daemon # settings schema + glib + granite + gtk3 + libgee + libhandy + ]; + + postPatch = '' + chmod +x meson/post_install.py + patchShebangs meson/post_install.py + ''; + + passthru = { + updateScript = nix-update-script { + attrPath = "pantheon.${pname}"; + }; + }; + + meta = with lib; { + description = "Onboarding app for new users designed for elementary OS"; + homepage = "https://github.com/elementary/onboarding"; + license = licenses.gpl3Plus; + platforms = platforms.linux; + maintainers = teams.pantheon.members; + mainProgram = "io.elementary.onboarding"; + }; +} diff --git a/nixpkgs/pkgs/desktops/pantheon/desktop/elementary-onboarding/fix-paths.patch b/nixpkgs/pkgs/desktops/pantheon/desktop/elementary-onboarding/fix-paths.patch new file mode 100644 index 000000000000..c98d898bb488 --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/desktop/elementary-onboarding/fix-paths.patch @@ -0,0 +1,13 @@ +diff --git a/src/Views/AppCenterView.vala b/src/Views/AppCenterView.vala +index 16cd18b..5895897 100644 +--- a/src/Views/AppCenterView.vala ++++ b/src/Views/AppCenterView.vala +@@ -55,7 +55,7 @@ public class Onboarding.AppCenterView : AbstractOnboardingView { + appcenter_button.clicked.connect (() => { + try { + var appcenter = AppInfo.create_from_commandline ( +- "io.elementary.appcenter", ++ "@appcenter@/bin/io.elementary.appcenter", + "AppCenter", + AppInfoCreateFlags.SUPPORTS_STARTUP_NOTIFICATION + ); 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..cc25419f2eb4 --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/desktop/elementary-print-shim/default.nix @@ -0,0 +1,46 @@ +{ lib +, stdenv +, fetchFromGitHub +, nix-update-script +, meson +, ninja +, pkg-config +, vala +, gtk3 +}: + +stdenv.mkDerivation rec { + pname = "elementary-print-shim"; + version = "0.1.3"; + + src = fetchFromGitHub { + owner = "elementary"; + repo = "print"; + rev = version; + sha256 = "sha256-l2IUu9Mj22lZ5yajPcsGrJcJDakNu4srCV0Qea5ybPA="; + }; + + nativeBuildInputs = [ + meson + ninja + pkg-config + vala + ]; + + buildInputs = [ gtk3 ]; + + passthru = { + updateScript = nix-update-script { + attrPath = "pantheon.${pname}"; + }; + }; + + meta = with lib; { + description = "Simple shim for printing support via Contractor"; + homepage = "https://github.com/elementary/print"; + license = licenses.gpl3Plus; + platforms = platforms.linux; + maintainers = teams.pantheon.members; + mainProgram = "io.elementary.print"; + }; +} 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..bf466c4d59e1 --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/desktop/elementary-session-settings/default.nix @@ -0,0 +1,158 @@ +{ lib +, stdenv +, fetchFromGitHub +, nix-update-script +, desktop-file-utils +, pkg-config +, writeScript +, gnome-keyring +, gnome-session +, wingpanel +, orca +, onboard +, elementary-default-settings +, gnome-settings-daemon +, runtimeShell +, writeText +, meson +, ninja +}: + +let + + # + # ─── ENSURES PLANK GETS ELEMENTARY'S DEFAULT DOCKITEMS ──────────────────────────── + # + + # + # Upstream relies on /etc/skel to initiate a new users home directory with plank's dockitems. + # + # That is not possible within nixos, but we can achieve this easily with a simple script that copies + # them. We then use a xdg autostart and initalize it during the "EarlyInitialization" phase of a gnome session + # which is most appropriate for installing files into $HOME. + # + + dockitems-script = writeScript "dockitems-script" '' + #!${runtimeShell} + + elementary_default_settings="${elementary-default-settings}" + dock_items="$elementary_default_settings/etc/skel/.config/plank/dock1/launchers"/* + + if [ ! -d "$HOME/.config/plank/dock1" ]; then + echo "Instantiating default Plank Dockitems..." + + mkdir -p "$HOME/.config/plank/dock1/launchers" + cp -r --no-preserve=mode,ownership $dock_items "$HOME/.config/plank/dock1/launchers/" + else + echo "Plank Dockitems already instantiated" + fi + ''; + + dockitemAutostart = writeText "default-elementary-dockitems.desktop" '' + [Desktop Entry] + Type=Application + Name=Instantiate Default elementary dockitems + Exec=${dockitems-script} + StartupNotify=false + NoDisplay=true + OnlyShowIn=Pantheon; + X-GNOME-Autostart-Phase=EarlyInitialization + ''; + + executable = writeScript "pantheon" '' + # gnome-session can find RequiredComponents for `pantheon` session (notably pantheon's patched g-s-d autostarts) + export XDG_CONFIG_DIRS=@out@/etc/xdg:$XDG_CONFIG_DIRS + + # Make sure we use our gtk-3.0/settings.ini + export XDG_CONFIG_DIRS=${elementary-default-settings}/etc:$XDG_CONFIG_DIRS + + # * gnome-session can find the `pantheon' session + # * use pantheon-mimeapps.list + export XDG_DATA_DIRS=@out@/share:$XDG_DATA_DIRS + + # Start pantheon session. Keep in sync with upstream + exec ${gnome-session}/bin/gnome-session --builtin --session=pantheon "$@" + ''; + + # Absolute path patched version of the upstream xsession + xsession = writeText "pantheon.desktop" '' + [Desktop Entry] + Name=Pantheon + Comment=This session provides elementary experience + Exec=@out@/libexec/pantheon + TryExec=${wingpanel}/bin/io.elementary.wingpanel + Icon= + DesktopNames=Pantheon + Type=Application + ''; + +in + +stdenv.mkDerivation rec { + pname = "elementary-session-settings"; + version = "6.0.0"; + + src = fetchFromGitHub { + owner = "elementary"; + repo = "session-settings"; + rev = version; + sha256 = "1faglpa7q3a4335gnd074a3lnsdspyjdnskgy4bfnf6xmwjx7kjx"; + }; + + nativeBuildInputs = [ + desktop-file-utils + meson + ninja + pkg-config + ]; + + buildInputs = [ + gnome-keyring + gnome-settings-daemon + onboard + orca + ]; + + mesonFlags = [ + "-Dmimeapps-list=false" + "-Dfallback-session=GNOME" + "-Ddetect-program-prefixes=true" + "--sysconfdir=${placeholder "out"}/etc" + ]; + + postInstall = '' + # our mimeapps patched from upstream to exclude: + # * evince.desktop -> org.gnome.Evince.desktop + mkdir -p $out/share/applications + cp -av ${./pantheon-mimeapps.list} $out/share/applications/pantheon-mimeapps.list + + # instantiates pantheon's dockitems + cp "${dockitemAutostart}" $out/etc/xdg/autostart/default-elementary-dockitems.desktop + + # script `Exec` to start pantheon + mkdir -p $out/libexec + substitute ${executable} $out/libexec/pantheon --subst-var out + chmod +x $out/libexec/pantheon + + # absolute path patched xsession + substitute ${xsession} $out/share/xsessions/pantheon.desktop --subst-var out + ''; + + passthru = { + updateScript = nix-update-script { + attrPath = "pantheon.${pname}"; + }; + + providedSessions = [ + "pantheon" + ]; + }; + + meta = with lib; { + description = "Session settings for elementary"; + homepage = "https://github.com/elementary/session-settings"; + license = licenses.gpl2Plus; + platforms = platforms.linux; + maintainers = teams.pantheon.members; + }; +} 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..8deb6ae8c1c5 --- /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=io.elementary.mail.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..3cf7cd365f16 --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/desktop/elementary-shortcut-overlay/default.nix @@ -0,0 +1,72 @@ +{ lib +, stdenv +, fetchFromGitHub +, fetchpatch +, nix-update-script +, pkg-config +, meson +, ninja +, vala +, libxml2 +, desktop-file-utils +, gtk3 +, glib +, granite +, libgee +, libhandy +, wrapGAppsHook +}: + +stdenv.mkDerivation rec { + pname = "elementary-shortcut-overlay"; + version = "1.2.1"; + + src = fetchFromGitHub { + owner = "elementary"; + repo = "shortcut-overlay"; + rev = version; + sha256 = "sha256-qmqzGCM3cVM6y80pzjm5CCyG6BO6XlKZiODAAEnwVrM="; + }; + + patches = [ + # Fix build with meson 0.61 + # https://github.com/elementary/shortcut-overlay/pull/113 + (fetchpatch { + url = "https://github.com/elementary/shortcut-overlay/commit/130f78eb4b7770586ea98ba0a5fdbbf5bb116f3f.patch"; + sha256 = "sha256-XXWq9CEv3Z2B8ogcFQAJZCfy19XxNHs3c8NToE2m/aA="; + }) + ]; + + nativeBuildInputs = [ + desktop-file-utils + libxml2 + meson + ninja + pkg-config + vala + wrapGAppsHook + ]; + + buildInputs = [ + glib + granite + gtk3 + libgee + libhandy + ]; + + passthru = { + updateScript = nix-update-script { + attrPath = "pantheon.${pname}"; + }; + }; + + meta = with 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 = teams.pantheon.members; + mainProgram = "io.elementary.shortcut-overlay"; + }; +} diff --git a/nixpkgs/pkgs/desktops/pantheon/desktop/file-roller-contract/default.nix b/nixpkgs/pkgs/desktops/pantheon/desktop/file-roller-contract/default.nix new file mode 100644 index 000000000000..c9a24b4906c7 --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/desktop/file-roller-contract/default.nix @@ -0,0 +1,53 @@ +{ lib +, stdenv +, fetchFromGitHub +, unstableGitUpdater +, substituteAll +, file-roller +}: + +stdenv.mkDerivation rec { + pname = "file-roller-contract"; + version = "unstable-2021-02-22"; + + src = fetchFromGitHub { + owner = "elementary"; + repo = pname; + rev = "cf001d84a7e2ddcfbee2cfdb19885798a869833e"; + sha256 = "sha256-jnXq44NiQiSYsvaBF828TklLg9d6z6n+gCZKgbFiERI="; + }; + + patches = [ + (substituteAll { + src = ./exec-path.patch; + file_roller = file-roller; + }) + ]; + + dontConfigure = true; + + dontBuild = true; + + installPhase = '' + runHook preInstall + + mkdir -p $out/share/contractor + cp *.contract $out/share/contractor/ + + runHook postInstall + ''; + + passthru = { + updateScript = unstableGitUpdater { + url = "https://github.com/elementary/file-roller-contract.git"; + }; + }; + + meta = with lib; { + description = "Contractor extension for File Roller"; + homepage = "https://github.com/elementary/file-roller-contract"; + license = licenses.gpl3Plus; + maintainers = teams.pantheon.members; + platforms = platforms.linux; + }; +} diff --git a/nixpkgs/pkgs/desktops/pantheon/desktop/file-roller-contract/exec-path.patch b/nixpkgs/pkgs/desktops/pantheon/desktop/file-roller-contract/exec-path.patch new file mode 100644 index 000000000000..8349ae8088da --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/desktop/file-roller-contract/exec-path.patch @@ -0,0 +1,22 @@ +diff --git a/io.elementary.contractor.file-roller-compress.contract b/io.elementary.contractor.file-roller-compress.contract +index 11e4da3..d58549f 100644 +--- a/io.elementary.contractor.file-roller-compress.contract ++++ b/io.elementary.contractor.file-roller-compress.contract +@@ -3,5 +3,5 @@ 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/io.elementary.contractor.file-roller-extract-here.contract b/io.elementary.contractor.file-roller-extract-here.contract +index 184a6f2..345f4e7 100644 +--- a/io.elementary.contractor.file-roller-extract-here.contract ++++ b/io.elementary.contractor.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/nixpkgs/pkgs/desktops/pantheon/desktop/gala/default.nix b/nixpkgs/pkgs/desktops/pantheon/desktop/gala/default.nix new file mode 100644 index 000000000000..75447adf4a26 --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/desktop/gala/default.nix @@ -0,0 +1,104 @@ +{ lib +, stdenv +, fetchFromGitHub +, fetchpatch +, nix-update-script +, pkg-config +, meson +, python3 +, ninja +, vala +, desktop-file-utils +, gettext +, libxml2 +, gtk3 +, granite +, libgee +, bamf +, libcanberra-gtk3 +, gnome-desktop +, mutter +, clutter +, gnome-settings-daemon +, wrapGAppsHook +, gexiv2 +}: + +stdenv.mkDerivation rec { + pname = "gala"; + version = "6.3.0"; + + src = fetchFromGitHub { + owner = "elementary"; + repo = pname; + rev = version; + sha256 = "sha256-f/WDm9/+lXgplg9tGpct4f+1cOhKgdypwiDRBhewRGw="; + }; + + patches = [ + ./plugins-dir.patch + # Session crashes when switching windows with Alt+Tab + # https://github.com/elementary/gala/issues/1312 + (fetchpatch { + url = "https://github.com/elementary/gala/commit/cc83db8fe398feae9f3e4caa8352b65f0c8c96d4.patch"; + sha256 = "sha256-CPO3EHIzqHAV6ZLHngivCdsD8je8CK/NHznfxSEkhzc="; + }) + # WindowSwitcher: Clear indicator background + # https://github.com/elementary/gala/pull/1318 + (fetchpatch { + url = "https://github.com/elementary/gala/commit/cce53acffecba795b6cc48916d4621a47996d2c9.patch"; + sha256 = "sha256-5aTZE6poo4sQMTLfk9Nhw4G4BW8i9dvpWktizRIS58Q="; + }) + ]; + + nativeBuildInputs = [ + desktop-file-utils + gettext + libxml2 + meson + ninja + pkg-config + python3 + vala + wrapGAppsHook + ]; + + buildInputs = [ + bamf + clutter + gnome-settings-daemon + gexiv2 + gnome-desktop + granite + gtk3 + libcanberra-gtk3 + libgee + mutter + ]; + + mesonFlags = [ + # TODO: enable this and remove --builtin flag from session-settings + # https://github.com/NixOS/nixpkgs/pull/140429 + "-Dsystemd=false" + ]; + + postPatch = '' + chmod +x build-aux/meson/post_install.py + patchShebangs build-aux/meson/post_install.py + ''; + + passthru = { + updateScript = nix-update-script { + attrPath = "pantheon.${pname}"; + }; + }; + + meta = with 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 = teams.pantheon.members; + mainProgram = "gala"; + }; +} 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..b0e72bbe1ab7 --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/desktop/gala/plugins-dir.patch @@ -0,0 +1,21 @@ +diff --git a/meson.build b/meson.build +index d0f00e5..977d2e2 100644 +--- a/meson.build ++++ b/meson.build +@@ -25,6 +25,7 @@ vapi_dir = meson.current_source_dir() / 'vapi' + locale_dir = join_paths(get_option('prefix'), get_option('localedir')) + data_dir = join_paths(get_option('prefix'), get_option('datadir')) + plugins_dir = join_paths(get_option('prefix'), get_option('libdir'), meson.project_name(), 'plugins') ++plugins_dir_for_build = join_paths('/run/current-system/sw/lib/', meson.project_name(), 'plugins') + pkgdata_dir = join_paths(get_option('prefix'), get_option('datadir'), meson.project_name()) + pkglib_dir = join_paths(get_option('prefix'), get_option('libdir'), meson.project_name()) + +@@ -33,7 +34,7 @@ conf.set_quoted('GETTEXT_PACKAGE', meson.project_name()) + conf.set_quoted('LOCALEDIR', locale_dir) + conf.set_quoted('DATADIR', data_dir) + conf.set_quoted('PKGDATADIR', pkgdata_dir) +-conf.set_quoted('PLUGINDIR', plugins_dir) ++conf.set_quoted('PLUGINDIR', plugins_dir_for_build) + conf.set_quoted('RESOURCEPATH', '/org/pantheon/desktop/gala') + conf.set_quoted('VERSION', gala_version) + conf.set_quoted('SCHEMA', 'org.pantheon.desktop.gala') diff --git a/nixpkgs/pkgs/desktops/pantheon/desktop/gnome-bluetooth-contract/default.nix b/nixpkgs/pkgs/desktops/pantheon/desktop/gnome-bluetooth-contract/default.nix new file mode 100644 index 000000000000..190514392098 --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/desktop/gnome-bluetooth-contract/default.nix @@ -0,0 +1,56 @@ +{ lib +, stdenv +, fetchFromGitHub +, unstableGitUpdater +, substituteAll +, gnome-bluetooth +}: + +stdenv.mkDerivation rec { + pname = "gnome-bluetooth-contract"; + version = "unstable-2021-02-22"; + + src = fetchFromGitHub { + owner = "elementary"; + repo = pname; + rev = "8dcd4d03dc7a7d487980fd8bc95af985dc4fff5c"; + sha256 = "sha256-9eX6j/cvN/CoqrHrh9mZEsUJ8viDWIGxIva1xFwIK7c="; + }; + + patches = [ + (substituteAll { + src = ./exec-path.patch; + gnome_bluetooth = gnome-bluetooth; + }) + ]; + + dontConfigure = true; + + dontBuild = true; + + installPhase = '' + runHook preInstall + + mkdir -p $out/share/contractor + cp *.contract $out/share/contractor/ + + runHook postInstall + ''; + + passthru = { + updateScript = unstableGitUpdater { + url = "https://github.com/elementary/gnome-bluetooth-contract.git"; + }; + }; + + meta = with lib; { + description = "Contractor extension for GNOME Bluetooth"; + homepage = "https://github.com/elementary/gnome-bluetooth-contract"; + license = licenses.gpl3Plus; + maintainers = teams.pantheon.members; + platforms = platforms.linux; + # sendto device selection is removed in gnome-bluetooth 42 + # https://github.com/elementary/gnome-bluetooth-contract/issues/1 + broken = true; + }; +} diff --git a/nixpkgs/pkgs/desktops/pantheon/desktop/gnome-bluetooth-contract/exec-path.patch b/nixpkgs/pkgs/desktops/pantheon/desktop/gnome-bluetooth-contract/exec-path.patch new file mode 100644 index 000000000000..c0bd9e579f46 --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/desktop/gnome-bluetooth-contract/exec-path.patch @@ -0,0 +1,11 @@ +diff --git a/io.elementary.contracter.gnome-bluetooth.contract b/io.elementary.contracter.gnome-bluetooth.contract +index 3eb2334..ce0e5f5 100644 +--- a/io.elementary.contracter.gnome-bluetooth.contract ++++ b/io.elementary.contracter.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/wingpanel-indicators/a11y/default.nix b/nixpkgs/pkgs/desktops/pantheon/desktop/wingpanel-indicators/a11y/default.nix new file mode 100644 index 000000000000..eab86136c7d9 --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/desktop/wingpanel-indicators/a11y/default.nix @@ -0,0 +1,70 @@ +{ lib +, stdenv +, fetchFromGitHub +, fetchpatch +, nix-update-script +, meson +, ninja +, pkg-config +, python3 +, vala +, granite +, gtk3 +, libgee +, wingpanel +}: + +stdenv.mkDerivation rec { + pname = "wingpanel-indicator-a11y"; + version = "1.0.0"; + + src = fetchFromGitHub { + owner = "elementary"; + repo = pname; + rev = version; + sha256 = "1adx1sx9qh02hjgv5h0gwyn116shjl3paxmyaiv4cgh6vq3ndp3c"; + }; + + patches = [ + # Upstream code not respecting our localedir + # https://github.com/elementary/wingpanel-indicator-a11y/pull/48 + (fetchpatch { + url = "https://github.com/elementary/wingpanel-indicator-a11y/commit/fb8412d56bc1c42b70e8ee41b837e8024e1297f7.patch"; + sha256 = "0619npdw9wvaz1zk2lzikczyjdqba8v8c9ry9zizvvl4j1i1ad7k"; + }) + ]; + + nativeBuildInputs = [ + meson + ninja + pkg-config + python3 + vala + ]; + + buildInputs = [ + granite + gtk3 + libgee + wingpanel + ]; + + postPatch = '' + chmod +x meson/post_install.py + patchShebangs meson/post_install.py + ''; + + passthru = { + updateScript = nix-update-script { + attrPath = "pantheon.${pname}"; + }; + }; + + meta = with lib; { + description = "Universal Access Indicator for Wingpanel"; + homepage = "https://github.com/elementary/wingpanel-indicator-a11y"; + license = licenses.gpl2Plus; + platforms = platforms.linux; + maintainers = teams.pantheon.members; + }; +} 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..badfec690eb5 --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/desktop/wingpanel-indicators/applications-menu/default.nix @@ -0,0 +1,96 @@ +{ lib +, stdenv +, fetchFromGitHub +, nix-update-script +, substituteAll +, meson +, ninja +, python3 +, pkg-config +, vala +, granite +, libgee +, gettext +, gtk3 +, gnome-menus +, json-glib +, elementary-dock +, bamf +, switchboard-with-plugs +, libsoup +, wingpanel +, zeitgeist +, bc +, libhandy +}: + +stdenv.mkDerivation rec { + pname = "wingpanel-applications-menu"; + version = "2.10.2"; + + src = fetchFromGitHub { + owner = "elementary"; + repo = "applications-menu"; + rev = version; + sha256 = "sha256-xBuMJzIFOueSvNwvXc85AI9NHuMW3bOblNsyuDkIzyk="; + }; + + patches = [ + (substituteAll { + src = ./fix-paths.patch; + bc = "${bc}/bin/bc"; + }) + ]; + + nativeBuildInputs = [ + gettext + meson + ninja + pkg-config + python3 + vala + ]; + + buildInputs = [ + bamf + elementary-dock + granite + gtk3 + json-glib + libgee + libhandy + libsoup + switchboard-with-plugs + wingpanel + zeitgeist + ] ++ + # applications-menu has a plugin to search switchboard plugins + # see https://github.com/NixOS/nixpkgs/issues/100209 + # wingpanel's wrapper will need to pick up the fact that + # applications-menu needs a version of switchboard with all + # its plugins for search. + switchboard-with-plugs.buildInputs; + + mesonFlags = [ + "--sysconfdir=${placeholder "out"}/etc" + ]; + + postPatch = '' + chmod +x meson/post_install.py + patchShebangs meson/post_install.py + ''; + + passthru = { + updateScript = nix-update-script { + attrPath = "pantheon.${pname}"; + }; + }; + + meta = with lib; { + description = "Lightweight and stylish app launcher for Pantheon"; + homepage = "https://github.com/elementary/applications-menu"; + license = licenses.gpl3Plus; + platforms = platforms.linux; + maintainers = teams.pantheon.members; + }; +} diff --git a/nixpkgs/pkgs/desktops/pantheon/desktop/wingpanel-indicators/applications-menu/fix-paths.patch b/nixpkgs/pkgs/desktops/pantheon/desktop/wingpanel-indicators/applications-menu/fix-paths.patch new file mode 100644 index 000000000000..aea828b36336 --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/desktop/wingpanel-indicators/applications-menu/fix-paths.patch @@ -0,0 +1,24 @@ +diff --git a/src/synapse-plugins/calculator-plugin.vala b/src/synapse-plugins/calculator-plugin.vala +index 886a44cd..a4601da6 100644 +--- a/src/synapse-plugins/calculator-plugin.vala ++++ b/src/synapse-plugins/calculator-plugin.vala +@@ -50,9 +50,7 @@ namespace Synapse { + _("Calculator"), + _("Calculate basic expressions."), + "accessories-calculator", +- register_plugin, +- Environment.find_program_in_path ("bc") != null, +- _("bc is not installed") ++ register_plugin + ); + } + +@@ -94,7 +92,7 @@ namespace Synapse { + Pid pid; + int read_fd, write_fd; + /* Must include math library to get non-integer results and to access standard math functions */ +- string[] argv = {"bc", "-l"}; ++ string[] argv = {"@bc@", "-l"}; + string? solution = null; + + try { diff --git a/nixpkgs/pkgs/desktops/pantheon/desktop/wingpanel-indicators/bluetooth/default.nix b/nixpkgs/pkgs/desktops/pantheon/desktop/wingpanel-indicators/bluetooth/default.nix new file mode 100644 index 000000000000..605b4b7709a5 --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/desktop/wingpanel-indicators/bluetooth/default.nix @@ -0,0 +1,67 @@ +{ lib +, stdenv +, fetchFromGitHub +, nix-update-script +, pkg-config +, meson +, python3 +, ninja +, vala +, gtk3 +, glib +, granite +, libnotify +, wingpanel +, libgee +, libxml2 +}: + +stdenv.mkDerivation rec { + pname = "wingpanel-indicator-bluetooth"; + version = "2.1.8"; + + src = fetchFromGitHub { + owner = "elementary"; + repo = pname; + rev = version; + sha256 = "12rasf8wy3cqnfjlm9s2qnx4drzx0w0yviagkng3kspdzm3vzsqy"; + }; + + nativeBuildInputs = [ + glib # for glib-compile-schemas + libxml2 + meson + ninja + pkg-config + python3 + vala + ]; + + buildInputs = [ + glib + granite + gtk3 + libgee + libnotify + wingpanel + ]; + + postPatch = '' + chmod +x meson/post_install.py + patchShebangs meson/post_install.py + ''; + + passthru = { + updateScript = nix-update-script { + attrPath = "pantheon.${pname}"; + }; + }; + + meta = with lib; { + description = "Bluetooth Indicator for Wingpanel"; + homepage = "https://github.com/elementary/wingpanel-indicator-bluetooth"; + license = licenses.lgpl21Plus; + platforms = platforms.linux; + maintainers = teams.pantheon.members; + }; +} 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..3f7408d9dff3 --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/desktop/wingpanel-indicators/datetime/default.nix @@ -0,0 +1,80 @@ +{ lib +, stdenv +, fetchFromGitHub +, nix-update-script +, substituteAll +, pkg-config +, meson +, python3 +, ninja +, vala +, gtk3 +, granite +, wingpanel +, evolution-data-server +, libical +, libgee +, libhandy +, libxml2 +, libsoup +, libgdata +, elementary-calendar +}: + +stdenv.mkDerivation rec { + pname = "wingpanel-indicator-datetime"; + version = "2.4.0"; + + src = fetchFromGitHub { + owner = "elementary"; + repo = pname; + rev = version; + sha256 = "sha256-GxlnzLDrZmDDAGlUMoM4k4SkbCqra3Th6ugRAj3Wse4="; + }; + + patches = [ + (substituteAll { + src = ./fix-paths.patch; + elementary_calendar = elementary-calendar; + }) + ]; + + nativeBuildInputs = [ + libxml2 + meson + ninja + pkg-config + python3 + vala + ]; + + buildInputs = [ + evolution-data-server + granite + gtk3 + libgee + libhandy + libical + libsoup + wingpanel + ]; + + postPatch = '' + chmod +x meson/post_install.py + patchShebangs meson/post_install.py + ''; + + passthru = { + updateScript = nix-update-script { + attrPath = "pantheon.${pname}"; + }; + }; + + meta = with lib; { + description = "Date & Time Indicator for Wingpanel"; + homepage = "https://github.com/elementary/wingpanel-indicator-datetime"; + license = licenses.gpl3Plus; + platforms = platforms.linux; + maintainers = teams.pantheon.members; + }; +} diff --git a/nixpkgs/pkgs/desktops/pantheon/desktop/wingpanel-indicators/datetime/fix-paths.patch b/nixpkgs/pkgs/desktops/pantheon/desktop/wingpanel-indicators/datetime/fix-paths.patch new file mode 100644 index 000000000000..51c495362027 --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/desktop/wingpanel-indicators/datetime/fix-paths.patch @@ -0,0 +1,26 @@ +diff --git a/src/Indicator.vala b/src/Indicator.vala +index 4aba03c..6385bc9 100644 +--- a/src/Indicator.vala ++++ b/src/Indicator.vala +@@ -55,7 +55,7 @@ public class DateTime.Indicator : Wingpanel.Indicator { + + panel_label.button_press_event.connect ((e) => { + if (e.button == Gdk.BUTTON_MIDDLE) { +- var command = "io.elementary.calendar --show-day %s".printf (new GLib.DateTime.now_local ().format ("%F")); ++ var command = "@elementary_calendar@/bin/io.elementary.calendar --show-day %s".printf (new GLib.DateTime.now_local ().format ("%F")); + try { + var appinfo = AppInfo.create_from_commandline (command, null, AppInfoCreateFlags.NONE); + appinfo.launch_uris (null, null); +diff --git a/src/Widgets/calendar/CalendarView.vala b/src/Widgets/calendar/CalendarView.vala +index cb54253..7477d1a 100644 +--- a/src/Widgets/calendar/CalendarView.vala ++++ b/src/Widgets/calendar/CalendarView.vala +@@ -242,7 +242,7 @@ public class DateTime.Widgets.CalendarView : Gtk.Grid { + + // TODO: As far as maya supports it use the Dbus Activation feature to run the calendar-app. + public void show_date_in_maya (GLib.DateTime date) { +- var command = "io.elementary.calendar --show-day %s".printf (date.format ("%F")); ++ var command = "@elementary_calendar@/bin/io.elementary.calendar --show-day %s".printf (date.format ("%F")); + + try { + var appinfo = AppInfo.create_from_commandline (command, null, AppInfoCreateFlags.NONE); 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..b36a95e8b201 --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/desktop/wingpanel-indicators/keyboard/default.nix @@ -0,0 +1,75 @@ +{ lib +, stdenv +, fetchFromGitHub +, fetchpatch +, nix-update-script +, pkg-config +, meson +, ninja +, substituteAll +, vala +, gtk3 +, granite +, libxml2 +, wingpanel +, libgee +, xorg +, libgnomekbd +, ibus +}: + +stdenv.mkDerivation rec { + pname = "wingpanel-indicator-keyboard"; + version = "2.4.0"; + + src = fetchFromGitHub { + owner = "elementary"; + repo = pname; + rev = version; + sha256 = "10zzsil5l6snz47nx887r22sl2n0j6bg4dhxmgk3j3xp3jhgmrgl"; + }; + + patches = [ + (substituteAll { + src = ./fix-paths.patch; + gkbd_keyboard_display = "${libgnomekbd}/bin/gkbd-keyboard-display"; + }) + # Upstream code not respecting our localedir + # https://github.com/elementary/wingpanel-indicator-keyboard/pull/110 + (fetchpatch { + url = "https://github.com/elementary/wingpanel-indicator-keyboard/commit/ea5df2f62a99a216ee5ed137268e710490a852a4.patch"; + sha256 = "0fmdz10xgzsryj0f0dnpjrh9yygjkb91a7pxg0rwddxbprhnr7j0"; + }) + ]; + + nativeBuildInputs = [ + meson + ninja + libxml2 + pkg-config + vala + ]; + + buildInputs = [ + granite + gtk3 + ibus + libgee + wingpanel + xorg.xkeyboardconfig + ]; + + passthru = { + updateScript = nix-update-script { + attrPath = "pantheon.${pname}"; + }; + }; + + meta = with lib; { + description = "Keyboard Indicator for Wingpanel"; + homepage = "https://github.com/elementary/wingpanel-indicator-keyboard"; + license = licenses.gpl3Plus; + platforms = platforms.linux; + maintainers = teams.pantheon.members; + }; +} diff --git a/nixpkgs/pkgs/desktops/pantheon/desktop/wingpanel-indicators/keyboard/fix-paths.patch b/nixpkgs/pkgs/desktops/pantheon/desktop/wingpanel-indicators/keyboard/fix-paths.patch new file mode 100644 index 000000000000..4fb6dfac86d9 --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/desktop/wingpanel-indicators/keyboard/fix-paths.patch @@ -0,0 +1,13 @@ +diff --git a/src/Indicator.vala b/src/Indicator.vala +index cd7ca49..7813789 100644 +--- a/src/Indicator.vala ++++ b/src/Indicator.vala +@@ -94,7 +94,7 @@ public class Keyboard.Indicator : Wingpanel.Indicator { + private void show_keyboard_map () { + close (); + +- string command = "gkbd-keyboard-display \"--layout=" + layouts.get_current_with_variant () + "\""; ++ string command = "@gkbd_keyboard_display@ \"--layout=" + layouts.get_current_with_variant () + "\""; + + try { + AppInfo.create_from_commandline (command, null, AppInfoCreateFlags.NONE).launch (null, null); diff --git a/nixpkgs/pkgs/desktops/pantheon/desktop/wingpanel-indicators/network/default.nix b/nixpkgs/pkgs/desktops/pantheon/desktop/wingpanel-indicators/network/default.nix new file mode 100644 index 000000000000..fdb6481f7e7f --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/desktop/wingpanel-indicators/network/default.nix @@ -0,0 +1,58 @@ +{ lib +, stdenv +, fetchFromGitHub +, nix-update-script +, substituteAll +, pkg-config +, meson +, ninja +, vala +, gtk3 +, granite +, networkmanager +, libnma +, wingpanel +, libgee +}: + +stdenv.mkDerivation rec { + pname = "wingpanel-indicator-network"; + version = "2.3.2"; + + src = fetchFromGitHub { + owner = "elementary"; + repo = pname; + rev = version; + sha256 = "sha256-4Fg8/Gm9mUqaL3wEc8h+/pMvOfD75ILjo7LhLz6LQmo="; + }; + + nativeBuildInputs = [ + meson + ninja + pkg-config + vala + ]; + + buildInputs = [ + granite + gtk3 + libgee + networkmanager + libnma + wingpanel + ]; + + passthru = { + updateScript = nix-update-script { + attrPath = "pantheon.${pname}"; + }; + }; + + meta = with lib; { + description = "Network Indicator for Wingpanel"; + homepage = "https://github.com/elementary/wingpanel-indicator-network"; + license = licenses.lgpl21Plus; + platforms = platforms.linux; + maintainers = teams.pantheon.members; + }; +} 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..9261bccd5182 --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/desktop/wingpanel-indicators/nightlight/default.nix @@ -0,0 +1,65 @@ +{ lib +, stdenv +, fetchFromGitHub +, fetchpatch +, nix-update-script +, pkg-config +, meson +, ninja +, vala +, gtk3 +, granite +, wingpanel +, libgee +, libxml2 +}: + +stdenv.mkDerivation rec { + pname = "wingpanel-indicator-nightlight"; + version = "2.1.0"; + + src = fetchFromGitHub { + owner = "elementary"; + repo = pname; + rev = version; + sha256 = "1zxjw68byg4sjn8lzsidzmy4ipwxgnv8rm529a7wzlpgj2xq3x4j"; + }; + + patches = [ + # Upstream code not respecting our localedir + # https://github.com/elementary/wingpanel-indicator-nightlight/pull/91 + (fetchpatch { + url = "https://github.com/elementary/wingpanel-indicator-nightlight/commit/4e15f71ed958df3569b2f1e224b9fb18613281f1.patch"; + sha256 = "07awmswyy0988pm6ggyz22mllja675cbdzrjdqc1xd4knwcgy77v"; + }) + ]; + + nativeBuildInputs = [ + libxml2 + meson + ninja + pkg-config + vala + ]; + + buildInputs = [ + granite + gtk3 + libgee + wingpanel + ]; + + passthru = { + updateScript = nix-update-script { + attrPath = "pantheon.${pname}"; + }; + }; + + meta = with lib; { + description = "Night Light Indicator for Wingpanel"; + homepage = "https://github.com/elementary/wingpanel-indicator-nightlight"; + license = licenses.gpl2Plus; + platforms = platforms.linux; + maintainers = teams.pantheon.members; + }; +} 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..ceabac94a236 --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/desktop/wingpanel-indicators/notifications/default.nix @@ -0,0 +1,57 @@ +{ lib +, stdenv +, fetchFromGitHub +, nix-update-script +, pkg-config +, meson +, ninja +, vala +, gtk3 +, granite +, wingpanel +, libgee +, libhandy +, elementary-notifications +}: + +stdenv.mkDerivation rec { + pname = "wingpanel-indicator-notifications"; + version = "6.0.4"; + + src = fetchFromGitHub { + owner = "elementary"; + repo = pname; + rev = version; + sha256 = "sha256-tIpR/WIhE0Mmt2EploNNDVlAX4OUNI3VnEflTLVkfSo="; + }; + + nativeBuildInputs = [ + meson + ninja + pkg-config + vala + ]; + + buildInputs = [ + elementary-notifications + granite + gtk3 + libgee + libhandy + wingpanel + ]; + + passthru = { + updateScript = nix-update-script { + attrPath = "pantheon.${pname}"; + }; + }; + + meta = with lib; { + description = "Notifications Indicator for Wingpanel"; + homepage = "https://github.com/elementary/wingpanel-indicator-notifications"; + license = licenses.lgpl21Plus; + platforms = platforms.linux; + maintainers = teams.pantheon.members; + }; +} 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..ac9803495574 --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/desktop/wingpanel-indicators/power/default.nix @@ -0,0 +1,77 @@ +{ lib +, stdenv +, fetchFromGitHub +, substituteAll +, nix-update-script +, gnome-power-manager +, pkg-config +, meson +, python3 +, ninja +, vala +, gtk3 +, granite +, bamf +, libgtop +, libnotify +, udev +, wingpanel +, libgee +}: + +stdenv.mkDerivation rec { + pname = "wingpanel-indicator-power"; + version = "6.1.0"; + + src = fetchFromGitHub { + owner = "elementary"; + repo = pname; + rev = version; + sha256 = "1zlpnl7983jkpy2nik08ih8lwrqvm456h993ixa6armzlazdvnjk"; + }; + + patches = [ + (substituteAll { + src = ./fix-paths.patch; + gnome_power_manager = gnome-power-manager; + }) + ]; + + nativeBuildInputs = [ + meson + ninja + pkg-config + python3 + vala + ]; + + buildInputs = [ + bamf + granite + gtk3 + libgee + libgtop + libnotify + udev + wingpanel + ]; + + postPatch = '' + chmod +x meson/post_install.py + patchShebangs meson/post_install.py + ''; + + passthru = { + updateScript = nix-update-script { + attrPath = "pantheon.${pname}"; + }; + }; + + meta = with lib; { + description = "Power Indicator for Wingpanel"; + homepage = "https://github.com/elementary/wingpanel-indicator-power"; + license = licenses.gpl3Plus; + platforms = platforms.linux; + maintainers = teams.pantheon.members; + }; +} diff --git a/nixpkgs/pkgs/desktops/pantheon/desktop/wingpanel-indicators/power/fix-paths.patch b/nixpkgs/pkgs/desktops/pantheon/desktop/wingpanel-indicators/power/fix-paths.patch new file mode 100644 index 000000000000..532001eb663b --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/desktop/wingpanel-indicators/power/fix-paths.patch @@ -0,0 +1,13 @@ +diff --git a/src/Widgets/DeviceList.vala b/src/Widgets/DeviceList.vala +index 0c56f46..33d97b3 100644 +--- a/src/Widgets/DeviceList.vala ++++ b/src/Widgets/DeviceList.vala +@@ -39,7 +39,7 @@ public class Power.Widgets.DeviceList : Gtk.ListBox { + string device_path = path_entries.@get (value); + try { + AppInfo statistics_app = AppInfo.create_from_commandline ( +- "gnome-power-statistics --device " + device_path, ++ "@gnome_power_manager@/bin/gnome-power-statistics --device " + device_path, + "", + AppInfoCreateFlags.NONE + ); 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..41039ff686e9 --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/desktop/wingpanel-indicators/session/default.nix @@ -0,0 +1,67 @@ +{ lib +, stdenv +, fetchFromGitHub +, nix-update-script +, fetchpatch +, pkg-config +, meson +, ninja +, vala +, gtk3 +, granite +, wingpanel +, accountsservice +, libgee +, libhandy +}: + +stdenv.mkDerivation rec { + pname = "wingpanel-indicator-session"; + version = "2.3.0"; + + src = fetchFromGitHub { + owner = "elementary"; + repo = pname; + rev = version; + sha256 = "0hww856qjl4kjmmksd5gp8bc5vj4fhs2s9fmbnpbf88lg5ds0wv0"; + }; + + patches = [ + # Upstream code not respecting our localedir + # https://github.com/elementary/wingpanel-indicator-session/pull/162 + (fetchpatch { + url = "https://github.com/elementary/wingpanel-indicator-session/commit/e85032da8e923df4589dc75ccded10026b6c1cd7.patch"; + sha256 = "139b2zbc6qjaw41nwfjkqv4npahkzryv4p5m6v10273clv6l72ng"; + }) + ]; + + nativeBuildInputs = [ + meson + ninja + pkg-config + vala + ]; + + buildInputs = [ + accountsservice + granite + gtk3 + libgee + libhandy + wingpanel + ]; + + passthru = { + updateScript = nix-update-script { + attrPath = "pantheon.${pname}"; + }; + }; + + meta = with lib; { + description = "Session Indicator for Wingpanel"; + homepage = "https://github.com/elementary/wingpanel-indicator-session"; + license = licenses.gpl2Plus; + platforms = platforms.linux; + maintainers = teams.pantheon.members; + }; +} 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..16e04bedcb93 --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/desktop/wingpanel-indicators/sound/default.nix @@ -0,0 +1,68 @@ +{ lib +, stdenv +, fetchFromGitHub +, nix-update-script +, pkg-config +, meson +, python3 +, ninja +, vala +, gtk3 +, granite +, wingpanel +, libnotify +, pulseaudio +, libcanberra-gtk3 +, libgee +, libxml2 +}: + +stdenv.mkDerivation rec { + pname = "wingpanel-indicator-sound"; + version = "6.0.1"; + + src = fetchFromGitHub { + owner = "elementary"; + repo = pname; + rev = version; + sha256 = "sha256-FHZ4YhGLqGTz5Po2XFJvnWuAi1eHKcT9zzgJFHic02E="; + }; + + nativeBuildInputs = [ + libxml2 + meson + ninja + pkg-config + python3 + vala + ]; + + buildInputs = [ + granite + gtk3 + libcanberra-gtk3 + libgee + libnotify + pulseaudio + wingpanel + ]; + + postPatch = '' + chmod +x meson/post_install.py + patchShebangs meson/post_install.py + ''; + + passthru = { + updateScript = nix-update-script { + attrPath = "pantheon.${pname}"; + }; + }; + + meta = with lib; { + description = "Sound Indicator for Wingpanel"; + homepage = "https://github.com/elementary/wingpanel-indicator-sound"; + license = licenses.gpl3Plus; + platforms = platforms.linux; + maintainers = teams.pantheon.members; + }; +} 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..b996fdfdd6e5 --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/desktop/wingpanel/default.nix @@ -0,0 +1,92 @@ +{ lib +, stdenv +, fetchFromGitHub +, nix-update-script +, wrapGAppsHook +, pkg-config +, meson +, ninja +, vala +, gala +, gtk3 +, libgee +, granite +, gettext +, mutter +, mesa +, json-glib +, python3 +, elementary-gtk-theme +, elementary-icon-theme +}: + +stdenv.mkDerivation rec { + pname = "wingpanel"; + version = "3.0.2"; + + src = fetchFromGitHub { + owner = "elementary"; + repo = pname; + rev = version; + sha256 = "sha256-WvkQx+9YjKCINpyVg8KjCV0GAb0rJfblSFaO14/4oas="; + }; + + patches = [ + ./indicators.patch + ]; + + nativeBuildInputs = [ + gettext + meson + ninja + pkg-config + python3 + vala + wrapGAppsHook + ]; + + buildInputs = [ + elementary-icon-theme + gala + granite + gtk3 + json-glib + libgee + mutter + mesa # for libEGL + ]; + + postPatch = '' + chmod +x meson/post_install.py + patchShebangs meson/post_install.py + ''; + + preFixup = '' + gappsWrapperArgs+=( + # this GTK theme is required + --prefix XDG_DATA_DIRS : "${elementary-gtk-theme}/share" + + # the icon theme is required + --prefix XDG_DATA_DIRS : "$XDG_ICON_DIRS" + ) + ''; + + passthru = { + updateScript = nix-update-script { + attrPath = "pantheon.${pname}"; + }; + }; + + meta = with 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.gpl3Plus; + platforms = platforms.linux; + maintainers = teams.pantheon.members; + mainProgram = "io.elementary.wingpanel"; + }; +} 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..89a359a4c9d2 --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/desktop/wingpanel/wrapper.nix @@ -0,0 +1,61 @@ +{ lib +, wrapGAppsHook +, glib +, stdenv +, xorg +, wingpanel +, wingpanelIndicators +, switchboard-with-plugs +, indicators ? null + # Only useful to disable for development testing. +, useDefaultIndicators ? true +}: + +let + selectedIndicators = + if indicators == null then wingpanelIndicators + else indicators ++ (lib.optionals useDefaultIndicators wingpanelIndicators); +in +stdenv.mkDerivation rec { + pname = "${wingpanel.pname}-with-indicators"; + inherit (wingpanel) version; + + src = null; + + paths = [ + wingpanel + ] ++ selectedIndicators; + + passAsFile = [ "paths" ]; + + nativeBuildInputs = [ + glib + wrapGAppsHook + ]; + + buildInputs = lib.forEach selectedIndicators (x: x.buildInputs) + ++ selectedIndicators; + + dontUnpack = true; + dontConfigure = true; + dontBuild = true; + + preferLocalBuild = true; + allowSubstitutes = false; + + installPhase = '' + mkdir -p $out + for i in $(cat $pathsPath); do + ${xorg.lndir}/bin/lndir -silent $i $out + done + ''; + + preFixup = '' + gappsWrapperArgs+=( + --set WINGPANEL_INDICATORS_PATH "$out/lib/wingpanel" + --set SWITCHBOARD_PLUGS_PATH "${switchboard-with-plugs}/lib/switchboard" + ) + ''; + + inherit (wingpanel) meta; +} |