diff options
Diffstat (limited to 'nixpkgs/pkgs/desktops/pantheon')
100 files changed, 6840 insertions, 0 deletions
diff --git a/nixpkgs/pkgs/desktops/pantheon/apps/appcenter/default.nix b/nixpkgs/pkgs/desktops/pantheon/apps/appcenter/default.nix new file mode 100644 index 000000000000..a3e75d231f19 --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/apps/appcenter/default.nix @@ -0,0 +1,106 @@ +{ lib, stdenv +, nix-update-script +, appstream +, appstream-glib +, dbus +, desktop-file-utils +, elementary-gtk-theme +, elementary-icon-theme +, fetchFromGitHub +, fetchpatch +, flatpak +, gettext +, glib +, granite +, gtk3 +, json-glib +, libgee +, libsoup +, libxml2 +, meson +, ninja +, packagekit +, pantheon +, pkg-config +, python3 +, vala +, polkit +, libhandy_0 +, wrapGAppsHook +}: + +stdenv.mkDerivation rec { + pname = "appcenter"; + version = "3.5.1"; + + src = fetchFromGitHub { + owner = "elementary"; + repo = pname; + rev = version; + sha256 = "MsaXdmL+M+NYAJrrwluleeNxqQg0soFbO/G/FqibBFI="; + }; + + patches = [ + # Allow build with appstream 0.14.x + # https://github.com/elementary/appcenter/pull/1493 + (fetchpatch { + url = "https://github.com/elementary/appcenter/commit/5807dd13fe3c715f26225aed8d7a0abdea0c2a64.patch"; + sha256 = "BvEahG9lU9ZdgooFDFhm5evRvnKVcmcHLdmZPb85gbo="; + }) + ]; + + passthru = { + updateScript = nix-update-script { + attrPath = "pantheon.${pname}"; + }; + }; + + nativeBuildInputs = [ + appstream-glib + dbus # for pkg-config + desktop-file-utils + gettext + meson + ninja + pkg-config + python3 + vala + wrapGAppsHook + ]; + + buildInputs = [ + appstream + elementary-gtk-theme + elementary-icon-theme + flatpak + glib + granite + gtk3 + json-glib + libgee + libhandy_0 # doesn't support libhandy-1 yet + libsoup + libxml2 + packagekit + polkit + ]; + + mesonFlags = [ + "-Dhomepage=false" + "-Dpayments=false" + "-Dcurated=false" + ]; + + postPatch = '' + chmod +x meson/post_install.py + patchShebangs meson/post_install.py + ''; + + meta = with lib; { + homepage = "https://github.com/elementary/appcenter"; + description = "An open, pay-what-you-want app store for indie developers, designed for elementary OS"; + license = licenses.gpl3Plus; + platforms = platforms.linux; + maintainers = pantheon.maintainers; + }; +} diff --git a/nixpkgs/pkgs/desktops/pantheon/apps/elementary-calculator/default.nix b/nixpkgs/pkgs/desktops/pantheon/apps/elementary-calculator/default.nix new file mode 100644 index 000000000000..791c2508e120 --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/apps/elementary-calculator/default.nix @@ -0,0 +1,70 @@ +{ lib, stdenv +, fetchFromGitHub +, nix-update-script +, pantheon +, pkg-config +, meson +, ninja +, vala +, desktop-file-utils +, libxml2 +, gtk3 +, python3 +, granite +, libgee +, elementary-icon-theme +, appstream +, wrapGAppsHook +}: + +stdenv.mkDerivation rec { + pname = "elementary-calculator"; + version = "1.6.1"; + + repoName = "calculator"; + + src = fetchFromGitHub { + owner = "elementary"; + repo = repoName; + rev = version; + sha256 = "sha256-LGY111wPldxuSfqhZ2E2TeJjexcGbfS25RjLw+Wi99c="; + }; + + passthru = { + updateScript = nix-update-script { + attrPath = "pantheon.${pname}"; + }; + }; + + nativeBuildInputs = [ + appstream + desktop-file-utils + libxml2 + meson + ninja + pkg-config + python3 + vala + wrapGAppsHook + ]; + + buildInputs = [ + elementary-icon-theme + granite + gtk3 + libgee + ]; + + postPatch = '' + chmod +x meson/post_install.py + patchShebangs meson/post_install.py + ''; + + meta = with lib; { + homepage = "https://github.com/elementary/calculator"; + description = "Calculator app designed for elementary OS"; + license = licenses.gpl3Plus; + platforms = platforms.linux; + maintainers = pantheon.maintainers; + }; +} diff --git a/nixpkgs/pkgs/desktops/pantheon/apps/elementary-calendar/default.nix b/nixpkgs/pkgs/desktops/pantheon/apps/elementary-calendar/default.nix new file mode 100644 index 000000000000..cf0d0d812fe1 --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/apps/elementary-calendar/default.nix @@ -0,0 +1,86 @@ +{ lib, stdenv +, fetchFromGitHub +, nix-update-script +, pantheon +, pkg-config +, meson +, ninja +, vala +, desktop-file-utils +, gtk3 +, granite +, libgee +, geoclue2 +, libchamplain +, clutter +, folks +, geocode-glib +, python3 +, libnotify +, libical +, libgdata +, evolution-data-server +, appstream-glib +, elementary-icon-theme +, wrapGAppsHook +}: + +stdenv.mkDerivation rec { + pname = "elementary-calendar"; + version = "5.1.1"; + + repoName = "calendar"; + + src = fetchFromGitHub { + owner = "elementary"; + repo = repoName; + rev = version; + sha256 = "18npf4zzf2dywr1zkr6fqzcbb70297yvdp5wxw7zyam1xwa86v07"; + }; + + passthru = { + updateScript = nix-update-script { + attrPath = "pantheon.${pname}"; + }; + }; + + nativeBuildInputs = [ + appstream-glib + desktop-file-utils + meson + ninja + pkg-config + python3 + vala + wrapGAppsHook + ]; + + buildInputs = [ + clutter + elementary-icon-theme + evolution-data-server + folks + geoclue2 + geocode-glib + granite + gtk3 + libchamplain + libgee + libical + libnotify + libgdata # required by some dependency transitively + ]; + + postPatch = '' + chmod +x meson/post_install.py + patchShebangs meson/post_install.py + ''; + + meta = with lib; { + description = "Desktop calendar app designed for elementary OS"; + homepage = "https://github.com/elementary/calendar"; + license = licenses.gpl3Plus; + platforms = platforms.linux; + maintainers = pantheon.maintainers; + }; +} diff --git a/nixpkgs/pkgs/desktops/pantheon/apps/elementary-camera/default.nix b/nixpkgs/pkgs/desktops/pantheon/apps/elementary-camera/default.nix new file mode 100644 index 000000000000..9a48d38ad8cb --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/apps/elementary-camera/default.nix @@ -0,0 +1,83 @@ +{ lib, stdenv +, fetchFromGitHub +, nix-update-script +, pantheon +, pkg-config +, meson +, ninja +, vala +, desktop-file-utils +, python3 +, gettext +, libxml2 +, gtk3 +, granite +, libgee +, gst_all_1 +, libcanberra +, clutter-gtk +, clutter-gst +, elementary-icon-theme +, appstream +, wrapGAppsHook +}: + +stdenv.mkDerivation rec { + pname = "elementary-camera"; + version = "1.0.6"; + + repoName = "camera"; + + src = fetchFromGitHub { + owner = "elementary"; + repo = repoName; + rev = version; + sha256 = "sha256-asl5NdSuLItXebxvqGlSEjwWhdButmka12YQAYkQT44="; + }; + + passthru = { + updateScript = nix-update-script { + attrPath = "pantheon.${pname}"; + }; + }; + + nativeBuildInputs = [ + appstream + desktop-file-utils + gettext + libxml2 + meson + ninja + pkg-config + python3 + vala + wrapGAppsHook + ]; + + buildInputs = [ + clutter-gst + clutter-gtk + elementary-icon-theme + granite + gst_all_1.gst-plugins-bad + gst_all_1.gst-plugins-base + gst_all_1.gst-plugins-good + gst_all_1.gstreamer + gtk3 + libcanberra + libgee + ]; + + postPatch = '' + chmod +x meson/post_install.py + patchShebangs meson/post_install.py + ''; + + meta = with lib; { + description = "Camera app designed for elementary OS"; + homepage = "https://github.com/elementary/camera"; + license = licenses.gpl2Plus; + platforms = platforms.linux; + maintainers = pantheon.maintainers; + }; +} diff --git a/nixpkgs/pkgs/desktops/pantheon/apps/elementary-code/default.nix b/nixpkgs/pkgs/desktops/pantheon/apps/elementary-code/default.nix new file mode 100644 index 000000000000..e8b10227eaa4 --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/apps/elementary-code/default.nix @@ -0,0 +1,107 @@ +{ lib, stdenv +, fetchFromGitHub +, fetchpatch +, nix-update-script +, pantheon +, pkg-config +, meson +, ninja +, vala +, python3 +, desktop-file-utils +, gtk3 +, granite +, libgee +, elementary-icon-theme +, appstream +, libpeas +, editorconfig-core-c +, gtksourceview3 +, gtkspell3 +, libsoup +, vte +, webkitgtk +, zeitgeist +, ctags +, libgit2-glib +, wrapGAppsHook +}: + +stdenv.mkDerivation rec { + pname = "elementary-code"; + version = "3.4.1"; + + repoName = "code"; + + src = fetchFromGitHub { + owner = "elementary"; + repo = repoName; + rev = version; + sha256 = "sha256-4AEayj+K/lOW6jEYmvmdan1kTqqqLL1YzwcU7/3PH5U="; + }; + + patches = [ + # Fix build with latest Vala. + (fetchpatch { + url = "https://github.com/elementary/code/commit/c50580d3336296823da9a2c50b824f21fde50286.patch"; + sha256 = "F+ZYlnZWYCU68G4oayLfbTnvSnTb4YA0zHVGD/Uf3KA="; + }) + ]; + + passthru = { + updateScript = nix-update-script { + attrPath = "pantheon.${pname}"; + }; + }; + + nativeBuildInputs = [ + appstream + desktop-file-utils + meson + ninja + pkg-config + python3 + vala + wrapGAppsHook + ]; + + buildInputs = [ + ctags + editorconfig-core-c + elementary-icon-theme + granite + gtk3 + gtksourceview3 + gtkspell3 + libgee + libgit2-glib + libpeas + libsoup + vte + webkitgtk + zeitgeist + ]; + + # install script fails with UnicodeDecodeError because of printing a fancy elipsis character + LC_ALL = "C.UTF-8"; + + # ctags needed in path by outline plugin + preFixup = '' + gappsWrapperArgs+=( + --prefix PATH : "${lib.makeBinPath [ ctags ]}" + ) + ''; + + postPatch = '' + chmod +x meson/post_install.py + patchShebangs meson/post_install.py + ''; + + meta = with lib; { + description = "Code editor designed for elementary OS"; + homepage = "https://github.com/elementary/code"; + license = licenses.gpl3Plus; + platforms = platforms.linux; + maintainers = pantheon.maintainers; + }; +} diff --git a/nixpkgs/pkgs/desktops/pantheon/apps/elementary-dock/default.nix b/nixpkgs/pkgs/desktops/pantheon/apps/elementary-dock/default.nix new file mode 100644 index 000000000000..797f62cf8e2f --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/apps/elementary-dock/default.nix @@ -0,0 +1,87 @@ +{ lib, stdenv +, fetchFromGitHub +, fetchpatch +, vala +, atk +, cairo +, dconf +, glib +, gtk3 +, libwnck +, libX11 +, libXfixes +, libXi +, pango +, gettext +, pkg-config +, libxml2 +, bamf +, gdk-pixbuf +, libdbusmenu-gtk3 +, gnome-menus +, libgee +, wrapGAppsHook +, pantheon +, meson +, ninja +}: + +stdenv.mkDerivation rec { + pname = "elementary-dock"; + version = "unstable-2020-06-11"; + + outputs = [ "out" "dev" ]; + + repoName = "dock"; + + src = fetchFromGitHub { + owner = "elementary"; + repo = repoName; + rev = "0a389ee58939d8c91c340df4e5340fc4b23d0b80"; + sha256 = "01vinik73s0vmk56samgf49zr2bl4wjv44x15sz2cmh744llckja"; + }; + + patches = [ + # Fix double includedir path in plank.pc + (fetchpatch { + url = "https://github.com/elementary/dock/commit/3bc368e2c4fafcd5b8baca2711c773b0e2441c7c.patch"; + sha256 = "0gg35phi1cg7ixljc388i0h70w323r1gqzjhanccnsbjpqsgvs3k"; + }) + ]; + + nativeBuildInputs = [ + gettext + meson + ninja + libxml2 # xmllint + pkg-config + vala + wrapGAppsHook + ]; + + buildInputs = [ + atk + bamf + cairo + gdk-pixbuf + glib + gnome-menus + dconf + gtk3 + libX11 + libXfixes + libXi + libdbusmenu-gtk3 + libgee + libwnck + pango + ]; + + meta = with lib; { + description = "Elegant, simple, clean dock"; + homepage = "https://github.com/elementary/dock"; + license = licenses.gpl3Plus; + platforms = platforms.linux; + maintainers = with maintainers; [ davidak ] ++ pantheon.maintainers; + }; +} diff --git a/nixpkgs/pkgs/desktops/pantheon/apps/elementary-feedback/default.nix b/nixpkgs/pkgs/desktops/pantheon/apps/elementary-feedback/default.nix new file mode 100644 index 000000000000..21aeb38530fd --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/apps/elementary-feedback/default.nix @@ -0,0 +1,70 @@ +{ lib, stdenv +, fetchFromGitHub +, nix-update-script +, pantheon +, pkg-config +, meson +, ninja +, vala +, python3 +, gtk3 +, glib +, granite +, libgee +, elementary-icon-theme +, elementary-gtk-theme +, gettext +, wrapGAppsHook +}: + +stdenv.mkDerivation rec { + pname = "elementary-feedback"; + version = "1.0"; + + repoName = "feedback"; + + src = fetchFromGitHub { + owner = "elementary"; + repo = repoName; + rev = version; + sha256 = "sha256-GkVnowqGXwnEgplT34Po/BKzC2F/IQE2kIw0SLSLhGU="; + }; + + passthru = { + updateScript = nix-update-script { + attrPath = "pantheon.${pname}"; + }; + }; + + nativeBuildInputs = [ + gettext + meson + ninja + pkg-config + python3 + vala + wrapGAppsHook + ]; + + buildInputs = [ + elementary-icon-theme + granite + gtk3 + elementary-gtk-theme + libgee + glib + ]; + + postPatch = '' + chmod +x meson/post_install.py + patchShebangs meson/post_install.py + ''; + + meta = with lib; { + description = "GitHub Issue Reporter designed for elementary OS"; + homepage = "https://github.com/elementary/feedback"; + license = licenses.gpl3Plus; + platforms = platforms.linux; + maintainers = pantheon.maintainers; + }; +} diff --git a/nixpkgs/pkgs/desktops/pantheon/apps/elementary-files/0001-filechooser-module-hardcode-gsettings-for-nixos.patch b/nixpkgs/pkgs/desktops/pantheon/apps/elementary-files/0001-filechooser-module-hardcode-gsettings-for-nixos.patch new file mode 100644 index 000000000000..9bcedac3f035 --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/apps/elementary-files/0001-filechooser-module-hardcode-gsettings-for-nixos.patch @@ -0,0 +1,35 @@ +From f51974c9736c3e28755245d15729578214652343 Mon Sep 17 00:00:00 2001 +Message-Id: <f51974c9736c3e28755245d15729578214652343.1599178185.git-series.worldofpeace@protonmail.ch> +From: worldofpeace <worldofpeace@protonmail.ch> +Date: Thu, 3 Sep 2020 20:08:15 -0400 +Subject: [PATCH] filechooser-module: hardcode gsettings for nixos + +--- + filechooser-module/FileChooserDialog.vala | 8 ++++++-- + 1 file changed, 6 insertions(+), 2 deletions(-) + +diff --git a/filechooser-module/FileChooserDialog.vala b/filechooser-module/FileChooserDialog.vala +index a70fe10..08fde2c 100644 +--- a/filechooser-module/FileChooserDialog.vala ++++ b/filechooser-module/FileChooserDialog.vala +@@ -60,10 +60,14 @@ public class CustomFileChooserDialog : Object { + /* If not local only during creation, strange bug occurs on fresh installs */ + chooser_dialog.local_only = true; + +- var files_preferences = new Settings ("io.elementary.files.preferences"); ++ SettingsSchemaSource sss = new SettingsSchemaSource.from_directory ("@ELEMENTARY_FILES_GSETTINGS_PATH@", SettingsSchemaSource.get_default (), true); ++ SettingsSchema preferences_schema = sss.lookup ("io.elementary.files.preferences", false); ++ SettingsSchema chooser_schema = sss.lookup ("io.elementary.files.file-chooser", false); ++ ++ var files_preferences = new Settings.full (preferences_schema, null, null); + is_single_click = files_preferences.get_boolean ("single-click"); + +- var chooser_settings = new Settings ("io.elementary.files.file-chooser"); ++ var chooser_settings = new Settings.full (chooser_schema, null, null); + + assign_container_box (); + remove_gtk_widgets (); + +base-commit: 57cb89b64fd2d5c08f4aaf23e8c74bfaa5d0384f +-- +git-series 0.9.1 diff --git a/nixpkgs/pkgs/desktops/pantheon/apps/elementary-files/default.nix b/nixpkgs/pkgs/desktops/pantheon/apps/elementary-files/default.nix new file mode 100644 index 000000000000..99fd2a6555f5 --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/apps/elementary-files/default.nix @@ -0,0 +1,102 @@ +{ lib, stdenv +, fetchFromGitHub +, nix-update-script +, pantheon +, pkg-config +, meson +, ninja +, gettext +, vala +, python3 +, desktop-file-utils +, libcanberra +, gtk3 +, glib +, libgee +, granite +, libnotify +, libunity +, pango +, elementary-dock +, bamf +, sqlite +, libdbusmenu-gtk3 +, zeitgeist +, glib-networking +, elementary-icon-theme +, libcloudproviders +, libgit2-glib +, wrapGAppsHook +}: + +stdenv.mkDerivation rec { + pname = "elementary-files"; + version = "4.5.0"; + + repoName = "files"; + + outputs = [ "out" "dev" ]; + + src = fetchFromGitHub { + owner = "elementary"; + repo = repoName; + rev = version; + sha256 = "sha256-wtQW1poX791DAlSFdVV9psnCfBDeVXI2fDZ2GcvvNn8="; + }; + + passthru = { + updateScript = nix-update-script { + attrPath = "pantheon.${pname}"; + }; + }; + + nativeBuildInputs = [ + desktop-file-utils + gettext + glib-networking + meson + ninja + pkg-config + python3 + vala + wrapGAppsHook + ]; + + buildInputs = [ + bamf + elementary-dock + elementary-icon-theme + granite + gtk3 + libcanberra + libcloudproviders + libdbusmenu-gtk3 + libgee + libgit2-glib + libnotify + libunity + pango + sqlite + zeitgeist + ]; + + patches = [ + ./0001-filechooser-module-hardcode-gsettings-for-nixos.patch + ]; + + postPatch = '' + chmod +x meson/post_install.py + patchShebangs meson/post_install.py + + substituteInPlace filechooser-module/FileChooserDialog.vala \ + --subst-var-by ELEMENTARY_FILES_GSETTINGS_PATH ${glib.makeSchemaPath "$out" "${pname}-${version}"} + ''; + + meta = with lib; { + description = "File browser designed for elementary OS"; + homepage = "https://github.com/elementary/files"; + license = licenses.lgpl3; + platforms = platforms.linux; + maintainers = pantheon.maintainers; + }; +} diff --git a/nixpkgs/pkgs/desktops/pantheon/apps/elementary-mail/default.nix b/nixpkgs/pkgs/desktops/pantheon/apps/elementary-mail/default.nix new file mode 100644 index 000000000000..b909f2472ad0 --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/apps/elementary-mail/default.nix @@ -0,0 +1,82 @@ +{ lib, stdenv +, fetchFromGitHub +, nix-update-script +, pantheon +, pkg-config +, meson +, ninja +, python3 +, vala +, desktop-file-utils +, gtk3 +, libxml2 +, libhandy +, webkitgtk +, folks +, libgdata +, sqlite +, granite +, elementary-icon-theme +, evolution-data-server +, appstream +, wrapGAppsHook +, libgee +}: + +stdenv.mkDerivation rec { + pname = "elementary-mail"; + version = "unstable-2021-06-21"; + + repoName = "mail"; + + src = fetchFromGitHub { + owner = "elementary"; + repo = repoName; + rev = "c64c87fabb31dea8dc388152d5a835401993acf4"; + sha256 = "yEUg1IbYbzOJiklnqR23X+aGVE9j4F9iH8FkmlB15x4="; + }; + + passthru = { + updateScript = nix-update-script { + attrPath = "pantheon.${pname}"; + }; + }; + + nativeBuildInputs = [ + appstream + desktop-file-utils + libxml2 + meson + ninja + pkg-config + python3 + vala + wrapGAppsHook + ]; + + buildInputs = [ + elementary-icon-theme + evolution-data-server + folks + granite + gtk3 + libgdata + libgee + libhandy + sqlite + webkitgtk + ]; + + postPatch = '' + chmod +x meson/post_install.py + patchShebangs meson/post_install.py + ''; + + meta = with lib; { + description = "Mail app designed for elementary OS"; + homepage = "https://github.com/elementary/mail"; + license = licenses.gpl3Plus; + platforms = platforms.linux; + maintainers = pantheon.maintainers ++ [ maintainers.ethancedwards8 ]; + }; +} diff --git a/nixpkgs/pkgs/desktops/pantheon/apps/elementary-music/default.nix b/nixpkgs/pkgs/desktops/pantheon/apps/elementary-music/default.nix new file mode 100644 index 000000000000..5a5c314b3e9b --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/apps/elementary-music/default.nix @@ -0,0 +1,109 @@ +{ lib, stdenv +, fetchFromGitHub +, fetchpatch +, nix-update-script +, pantheon +, pkg-config +, meson +, ninja +, vala +, desktop-file-utils +, gtk3 +, granite +, python3 +, libgee +, clutter-gtk +, json-glib +, libgda +, libgpod +, libnotify +, libpeas +, libsoup +, zeitgeist +, gst_all_1 +, taglib +, libdbusmenu +, libsignon-glib +, libaccounts-glib +, elementary-icon-theme +, wrapGAppsHook +}: + +stdenv.mkDerivation rec { + pname = "elementary-music"; + version = "5.0.5"; + + repoName = "music"; + + src = fetchFromGitHub { + owner = "elementary"; + repo = repoName; + rev = version; + sha256 = "sha256-3GZoBCu9rF+BnNk9APBzKWO1JYg1XYWwrEvwcjWvYDE="; + }; + + patches = [ + # Fix build with latest Vala. + (fetchpatch { + url = "https://github.com/elementary/music/commit/9ed3bbb3a0d68e289a772b4603f58e52a4973316.patch"; + sha256 = "fFO97SQzTc2fYFJFGfFPSUCdkCgZxfX1fjDQ7GH4BUs="; + }) + ]; + + passthru = { + updateScript = nix-update-script { + attrPath = "pantheon.${pname}"; + }; + }; + + nativeBuildInputs = [ + desktop-file-utils + meson + ninja + pkg-config + python3 + vala + wrapGAppsHook + ]; + + buildInputs = with gst_all_1; [ + clutter-gtk + elementary-icon-theme + granite + gst-plugins-bad + gst-plugins-base + gst-plugins-good + gst-plugins-ugly + gstreamer + gtk3 + json-glib + libaccounts-glib + libdbusmenu + libgda + libgee + libgpod + libnotify + libpeas + libsignon-glib + libsoup + taglib + zeitgeist + ]; + + mesonFlags = [ + "-Dplugins=lastfm,audioplayer,cdrom,ipod" + ]; + + postPatch = '' + chmod +x meson/post_install.py + patchShebangs meson/post_install.py + ''; + + meta = with lib; { + description = "Music player and library designed for elementary OS"; + homepage = "https://github.com/elementary/music"; + license = licenses.lgpl2Plus; + platforms = platforms.linux; + maintainers = pantheon.maintainers; + }; +} diff --git a/nixpkgs/pkgs/desktops/pantheon/apps/elementary-photos/default.nix b/nixpkgs/pkgs/desktops/pantheon/apps/elementary-photos/default.nix new file mode 100644 index 000000000000..7280051361a9 --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/apps/elementary-photos/default.nix @@ -0,0 +1,117 @@ +{ lib, stdenv +, fetchFromGitHub +, fetchpatch +, nix-update-script +, pantheon +, meson +, ninja +, pkg-config +, vala +, desktop-file-utils +, gtk3 +, libaccounts-glib +, libexif +, libgee +, geocode-glib +, gexiv2 +, libgphoto2 +, granite +, gst_all_1 +, libgudev +, json-glib +, libraw +, librest +, libsoup +, sqlite +, python3 +, scour +, webkitgtk +, libwebp +, appstream +, libunity +, wrapGAppsHook +, elementary-icon-theme +}: + +stdenv.mkDerivation rec { + pname = "elementary-photos"; + version = "2.7.0"; + + repoName = "photos"; + + src = fetchFromGitHub { + owner = "elementary"; + repo = repoName; + rev = version; + sha256 = "sha256-bTk4shryAWWMrKX3mza6xQ05qpBPf80Ey7fmYgKLUiY="; + }; + + patches = [ + # Fix build with latest Vala. + (fetchpatch { + url = "https://github.com/elementary/photos/commit/27e529fc96da828982563e2e19a6f0cef883a29e.patch"; + sha256 = "w39wh45VHggCs62TN6wpUEyz/hJ1y7qL1Ox+sp0Pt2s="; + }) + ]; + + passthru = { + updateScript = nix-update-script { + attrPath = "pantheon.${pname}"; + }; + }; + + nativeBuildInputs = [ + appstream + desktop-file-utils + meson + ninja + pkg-config + python3 + vala + wrapGAppsHook + ]; + + buildInputs = with gst_all_1; [ + elementary-icon-theme + geocode-glib + gexiv2 + granite + gst-plugins-bad + gst-plugins-base + gst-plugins-good + gst-plugins-ugly + gstreamer + gtk3 + json-glib + libaccounts-glib + libexif + libgee + libgphoto2 + libgudev + libraw + librest + libsoup + libunity + libwebp + scour + sqlite + webkitgtk + ]; + + mesonFlags = [ + "-Dplugins=false" + ]; + + postPatch = '' + chmod +x meson/post_install.py + patchShebangs meson/post_install.py + ''; + + meta = with lib; { + description = "Photo viewer and organizer designed for elementary OS"; + homepage = "https://github.com/elementary/photos"; + license = licenses.lgpl21Plus; + platforms = platforms.linux; + maintainers = pantheon.maintainers; + }; +} diff --git a/nixpkgs/pkgs/desktops/pantheon/apps/elementary-screenshot-tool/default.nix b/nixpkgs/pkgs/desktops/pantheon/apps/elementary-screenshot-tool/default.nix new file mode 100644 index 000000000000..048aa4ab129e --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/apps/elementary-screenshot-tool/default.nix @@ -0,0 +1,68 @@ +{ lib, stdenv +, fetchFromGitHub +, nix-update-script +, pantheon +, pkg-config +, meson +, ninja +, vala +, python3 +, desktop-file-utils +, gtk3 +, granite +, libgee +, libcanberra +, elementary-icon-theme +, wrapGAppsHook +}: + +stdenv.mkDerivation rec { + pname = "elementary-screenshot-tool"; # This will be renamed to "screenshot" soon. See -> https://github.com/elementary/screenshot/pull/93 + version = "1.7.1"; + + repoName = "screenshot"; + + src = fetchFromGitHub { + owner = "elementary"; + repo = repoName; + rev = version; + sha256 = "sha256-qo55fzp0ieYF5I5uxnCQY066mege06InHL3B3ahYMZ0="; + }; + + passthru = { + updateScript = nix-update-script { + attrPath = "pantheon.${pname}"; + }; + }; + + nativeBuildInputs = [ + desktop-file-utils + meson + ninja + pkg-config + python3 + vala + wrapGAppsHook + ]; + + buildInputs = [ + elementary-icon-theme + granite + gtk3 + libcanberra + libgee + ]; + + postPatch = '' + chmod +x meson/post_install.py + patchShebangs meson/post_install.py + ''; + + meta = with lib; { + description = "Screenshot tool designed for elementary OS"; + homepage = "https://github.com/elementary/screenshot"; + license = licenses.lgpl3; + platforms = platforms.linux; + maintainers = pantheon.maintainers; + }; +} diff --git a/nixpkgs/pkgs/desktops/pantheon/apps/elementary-terminal/default.nix b/nixpkgs/pkgs/desktops/pantheon/apps/elementary-terminal/default.nix new file mode 100644 index 000000000000..46f279dd7957 --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/apps/elementary-terminal/default.nix @@ -0,0 +1,84 @@ +{ lib, stdenv +, fetchFromGitHub +, nix-update-script +, fetchpatch +, pantheon +, pkg-config +, meson +, ninja +, python3 +, vala +, desktop-file-utils +, gtk3 +, libxml2 +, granite +, libnotify +, vte +, libgee +, elementary-icon-theme +, appstream +, pcre2 +, wrapGAppsHook +}: + +stdenv.mkDerivation rec { + pname = "elementary-terminal"; + version = "5.5.2"; + + repoName = "terminal"; + + src = fetchFromGitHub { + owner = "elementary"; + repo = repoName; + rev = version; + sha256 = "sha256-giVmL0zYEVYJ40ZBQ9dDb4hOx4HaYRt7tUTOu37lMYU="; + }; + + passthru = { + updateScript = nix-update-script { + attrPath = "pantheon.${pname}"; + }; + }; + + nativeBuildInputs = [ + appstream + desktop-file-utils + libxml2 + meson + ninja + pkg-config + python3 + vala + wrapGAppsHook + ]; + + buildInputs = [ + elementary-icon-theme + granite + gtk3 + libgee + libnotify + pcre2 + vte + ]; + + # See https://github.com/elementary/terminal/commit/914d4b0e2d0a137f12276d748ae07072b95eff80 + mesonFlags = [ "-Dubuntu-bionic-patched-vte=false" ]; + + postPatch = '' + chmod +x meson/post_install.py + patchShebangs meson/post_install.py + ''; + + meta = with lib; { + description = "Terminal emulator designed for elementary OS"; + longDescription = '' + A super lightweight, beautiful, and simple terminal. Comes with sane defaults, browser-class tabs, sudo paste protection, + smart copy/paste, and little to no configuration. + ''; + homepage = "https://github.com/elementary/terminal"; + license = licenses.lgpl3; + platforms = platforms.linux; + maintainers = pantheon.maintainers; + }; +} diff --git a/nixpkgs/pkgs/desktops/pantheon/apps/elementary-videos/default.nix b/nixpkgs/pkgs/desktops/pantheon/apps/elementary-videos/default.nix new file mode 100644 index 000000000000..e5506093719d --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/apps/elementary-videos/default.nix @@ -0,0 +1,77 @@ +{ lib, stdenv +, fetchFromGitHub +, nix-update-script +, pantheon +, pkg-config +, meson +, ninja +, vala +, python3 +, desktop-file-utils +, gtk3 +, granite +, libgee +, clutter-gst +, clutter-gtk +, gst_all_1 +, elementary-icon-theme +, wrapGAppsHook +}: + +stdenv.mkDerivation rec { + pname = "elementary-videos"; + version = "2.7.2"; + + repoName = "videos"; + + src = fetchFromGitHub { + owner = "elementary"; + repo = repoName; + rev = version; + sha256 = "sha256-MSyhCXsziQ0MD4lGp9X/9odidjT/L+2Aihwd1qCGvB0="; + }; + + passthru = { + updateScript = nix-update-script { + attrPath = "pantheon.${pname}"; + }; + }; + + nativeBuildInputs = [ + desktop-file-utils + meson + ninja + pkg-config + python3 + vala + wrapGAppsHook + ]; + + buildInputs = with gst_all_1; [ + clutter-gst + clutter-gtk + elementary-icon-theme + granite + gst-libav + gst-plugins-bad + gst-plugins-base + gst-plugins-good + gst-plugins-ugly + gstreamer + gtk3 + libgee + ]; + + postPatch = '' + chmod +x meson/post_install.py + patchShebangs meson/post_install.py + ''; + + meta = with lib; { + description = "Video player and library app designed for elementary OS"; + homepage = "https://github.com/elementary/videos"; + license = licenses.gpl3Plus; + platforms = platforms.linux; + maintainers = pantheon.maintainers; + }; +} diff --git a/nixpkgs/pkgs/desktops/pantheon/apps/sideload/default.nix b/nixpkgs/pkgs/desktops/pantheon/apps/sideload/default.nix new file mode 100644 index 000000000000..c3ba1717801d --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/apps/sideload/default.nix @@ -0,0 +1,74 @@ +{ lib, stdenv +, desktop-file-utils +, nix-update-script +, elementary-gtk-theme +, elementary-icon-theme +, fetchFromGitHub +, flatpak +, gettext +, glib +, granite +, gtk3 +, libgee +, meson +, ninja +, pantheon +, pkg-config +, python3 +, vala +, libxml2 +, wrapGAppsHook +}: + +stdenv.mkDerivation rec { + pname = "sideload"; + version = "1.1.1"; + + src = fetchFromGitHub { + owner = "elementary"; + repo = pname; + rev = version; + sha256 = "sha256-eI/j6+lok9axRHV5DCsFY1fDCV+X5zBR7X8rK6odjFY="; + }; + + passthru = { + updateScript = nix-update-script { + attrPath = "pantheon.${pname}"; + }; + }; + + nativeBuildInputs = [ + desktop-file-utils + gettext + meson + ninja + pkg-config + python3 + vala + wrapGAppsHook + ]; + + buildInputs = [ + elementary-gtk-theme + elementary-icon-theme + flatpak + glib + granite + gtk3 + libgee + libxml2 + ]; + + postPatch = '' + chmod +x meson/post_install.py + patchShebangs meson/post_install.py + ''; + + meta = with lib; { + homepage = "https://github.com/elementary/sideload"; + description = "Flatpak installer, designed for elementary OS"; + license = licenses.gpl3Plus; + platforms = platforms.linux; + maintainers = pantheon.maintainers; + }; +} diff --git a/nixpkgs/pkgs/desktops/pantheon/apps/switchboard-plugs/a11y/default.nix b/nixpkgs/pkgs/desktops/pantheon/apps/switchboard-plugs/a11y/default.nix new file mode 100644 index 000000000000..06f097e81af5 --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/apps/switchboard-plugs/a11y/default.nix @@ -0,0 +1,62 @@ +{ lib, stdenv +, substituteAll +, fetchFromGitHub +, nix-update-script +, pantheon +, meson +, ninja +, pkg-config +, vala +, libgee +, granite +, gtk3 +, switchboard +, onboard +}: + +stdenv.mkDerivation rec { + pname = "switchboard-plug-a11y"; + version = "2.2.0"; + + src = fetchFromGitHub { + owner = "elementary"; + repo = pname; + rev = version; + sha256 = "sha256-3PaOIadlEdYvfNZJaoAQVDKdSTfUdn+snCa8tHmDFD0="; + }; + + patches = [ + (substituteAll { + src = ./fix-paths.patch; + inherit onboard; + }) + ]; + + passthru = { + updateScript = nix-update-script { + attrPath = "pantheon.${pname}"; + }; + }; + + nativeBuildInputs = [ + meson + ninja + pkg-config + vala + ]; + + buildInputs = [ + granite + gtk3 + libgee + switchboard + ]; + + meta = with lib; { + description = "Switchboard Universal Access Plug"; + homepage = "https://github.com/elementary/switchboard-plug-a11y"; + license = licenses.lgpl3Plus; + platforms = platforms.linux; + maintainers = pantheon.maintainers; + }; +} diff --git a/nixpkgs/pkgs/desktops/pantheon/apps/switchboard-plugs/a11y/fix-paths.patch b/nixpkgs/pkgs/desktops/pantheon/apps/switchboard-plugs/a11y/fix-paths.patch new file mode 100644 index 000000000000..4d69390f39d9 --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/apps/switchboard-plugs/a11y/fix-paths.patch @@ -0,0 +1,13 @@ +diff --git a/src/Panes/Typing.vala b/src/Panes/Typing.vala +index b4ae8b0..5b8fd7e 100644 +--- a/src/Panes/Typing.vala ++++ b/src/Panes/Typing.vala +@@ -83,7 +83,7 @@ public class Accessibility.Panes.Typing : Categories.Pane { + + onboard_settings_label.clicked.connect (() => { + try { +- var appinfo = AppInfo.create_from_commandline ("onboard-settings", null, AppInfoCreateFlags.NONE); ++ var appinfo = AppInfo.create_from_commandline ("@onboard@/bin/onboard-settings", null, AppInfoCreateFlags.NONE); + appinfo.launch (null, null); + } catch (Error e) { + warning ("%s\n", e.message); diff --git a/nixpkgs/pkgs/desktops/pantheon/apps/switchboard-plugs/about/default.nix b/nixpkgs/pkgs/desktops/pantheon/apps/switchboard-plugs/about/default.nix new file mode 100644 index 000000000000..adba2ec08017 --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/apps/switchboard-plugs/about/default.nix @@ -0,0 +1,80 @@ +{ lib, stdenv +, fetchFromGitHub +, fetchpatch +, nix-update-script +, pantheon +, substituteAll +, meson +, ninja +, pkg-config +, vala +, libgee +, granite +, gtk3 +, switchboard +, pciutils +, elementary-feedback +}: + +stdenv.mkDerivation rec { + pname = "switchboard-plug-about"; + version = "2.6.3"; + + src = fetchFromGitHub { + owner = "elementary"; + repo = pname; + rev = version; + sha256 = "sha256-wis6wNEOOjPLUCT9vRRhMxbKHR2Y2nZArKogSF/FQv8="; + }; + + passthru = { + updateScript = nix-update-script { + attrPath = "pantheon.${pname}"; + }; + }; + + nativeBuildInputs = [ + meson + ninja + pkg-config + vala + ]; + + buildInputs = [ + granite + gtk3 + libgee + switchboard + ]; + + patches = [ + # Get OS Info from GLib.Environment + # https://github.com/elementary/switchboard-plug-about/pull/128 + (fetchpatch { + url = "https://github.com/elementary/switchboard-plug-about/commit/5ed29988e3a895b2df66e5529df0f12a94d5517c.patch"; + sha256 = "1ipDxnpDZjpSEzZdtOeNe5U+QOXiB5M+hC3yDAsl/rQ="; + }) + + # Use Pretty Name + # https://github.com/elementary/switchboard-plug-about/pull/134 + (fetchpatch { + url = "https://github.com/elementary/switchboard-plug-about/commit/653d131dc8fac10ae7523f2bf6b179ffffa9c0fd.patch"; + sha256 = "AsM49Dc9/yn2tG6fqjfedeOlDXUu+iEoyNUmNYLH+zE="; + }) + + (substituteAll { + src = ./fix-paths.patch; + inherit pciutils; + elementary_feedback = elementary-feedback; + }) + ]; + + meta = with lib; { + description = "Switchboard About Plug"; + homepage = "https://github.com/elementary/switchboard-plug-about"; + license = licenses.gpl3Plus; + platforms = platforms.linux; + maintainers = pantheon.maintainers; + }; + +} diff --git a/nixpkgs/pkgs/desktops/pantheon/apps/switchboard-plugs/about/fix-paths.patch b/nixpkgs/pkgs/desktops/pantheon/apps/switchboard-plugs/about/fix-paths.patch new file mode 100644 index 000000000000..d458689a3253 --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/apps/switchboard-plugs/about/fix-paths.patch @@ -0,0 +1,26 @@ +diff --git a/src/Plug.vala b/src/Plug.vala +index c32efcbe..0cdaeaca 100644 +--- a/src/Plug.vala ++++ b/src/Plug.vala +@@ -178,7 +178,7 @@ public class About.Plug : Switchboard.Plug { + + var bug_button = new Gtk.Button.with_label (_("Report a Problem")); + bug_button.clicked.connect (() => { +- var appinfo = new GLib.DesktopAppInfo ("io.elementary.feedback.desktop"); ++ var appinfo = new GLib.DesktopAppInfo ("@elementary_feedback@/bin/io.elementary.feedback.desktop"); + if (appinfo != null) { + try { + appinfo.launch (null, null); +diff --git a/src/Views/HardwareView.vala b/src/Views/HardwareView.vala +index f8113634..3794bad8 100644 +--- a/src/Views/HardwareView.vala ++++ b/src/Views/HardwareView.vala +@@ -179,7 +179,7 @@ public class About.HardwareView : Gtk.Grid { + + // Graphics + try { +- Process.spawn_command_line_sync ("lspci", out graphics); ++ Process.spawn_command_line_sync ("@pciutils@/bin/lspci", out graphics); + + if ("VGA" in graphics) { //VGA-keyword indicates graphics-line + string[] lines = graphics.split("\n"); diff --git a/nixpkgs/pkgs/desktops/pantheon/apps/switchboard-plugs/applications/default.nix b/nixpkgs/pkgs/desktops/pantheon/apps/switchboard-plugs/applications/default.nix new file mode 100644 index 000000000000..66596fa2ff1b --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/apps/switchboard-plugs/applications/default.nix @@ -0,0 +1,53 @@ +{ lib, stdenv +, fetchFromGitHub +, nix-update-script +, pantheon +, meson +, ninja +, pkg-config +, vala +, libgee +, granite +, gtk3 +, switchboard +}: + +stdenv.mkDerivation rec { + pname = "switchboard-plug-applications"; + version = "2.1.7"; + + src = fetchFromGitHub { + owner = "elementary"; + repo = pname; + rev = version; + sha256 = "sha256-uiu19XyogNR0LX/2IIZM6B1JKAfqDMOHniQ29EAa9XM="; + }; + + passthru = { + updateScript = nix-update-script { + attrPath = "pantheon.${pname}"; + }; + }; + + nativeBuildInputs = [ + meson + ninja + pkg-config + vala + ]; + + buildInputs = [ + granite + gtk3 + libgee + switchboard + ]; + + meta = with lib; { + description = "Switchboard Applications Plug"; + homepage = "https://github.com/elementary/switchboard-plug-applications"; + license = licenses.gpl2Plus; + platforms = platforms.linux; + maintainers = pantheon.maintainers; + }; +} diff --git a/nixpkgs/pkgs/desktops/pantheon/apps/switchboard-plugs/bluetooth/default.nix b/nixpkgs/pkgs/desktops/pantheon/apps/switchboard-plugs/bluetooth/default.nix new file mode 100644 index 000000000000..dea3c0306a32 --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/apps/switchboard-plugs/bluetooth/default.nix @@ -0,0 +1,56 @@ +{ lib, stdenv +, fetchFromGitHub +, nix-update-script +, pantheon +, meson +, ninja +, pkg-config +, vala +, libgee +, granite +, gtk3 +, bluez +, switchboard +}: + +stdenv.mkDerivation rec { + pname = "switchboard-plug-bluetooth"; + version = "2.3.2"; + + src = fetchFromGitHub { + owner = "elementary"; + repo = pname; + rev = version; + sha256 = "sha256-avu9Hya3C9g8kGl3D9bLwuZBkNPdwyvLspuBWgvpXU8="; + }; + + passthru = { + updateScript = nix-update-script { + attrPath = "pantheon.${pname}"; + }; + }; + + nativeBuildInputs = [ + meson + ninja + pkg-config + vala + ]; + + buildInputs = [ + bluez + granite + gtk3 + libgee + switchboard + ]; + + meta = with lib; { + description = "Switchboard Bluetooth Plug"; + homepage = "https://github.com/elementary/switchboard-plug-bluetooth"; + license = licenses.gpl3Plus; + platforms = platforms.linux; + maintainers = pantheon.maintainers; + }; + +} diff --git a/nixpkgs/pkgs/desktops/pantheon/apps/switchboard-plugs/datetime/default.nix b/nixpkgs/pkgs/desktops/pantheon/apps/switchboard-plugs/datetime/default.nix new file mode 100644 index 000000000000..2337ef241198 --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/apps/switchboard-plugs/datetime/default.nix @@ -0,0 +1,57 @@ +{ lib, stdenv +, fetchFromGitHub +, nix-update-script +, pantheon +, meson +, ninja +, substituteAll +, pkg-config +, vala +, libgee +, granite +, gtk3 +, libxml2 +, switchboard +, tzdata +}: + +stdenv.mkDerivation rec { + pname = "switchboard-plug-datetime"; + version = "2.1.9"; + + src = fetchFromGitHub { + owner = "elementary"; + repo = pname; + rev = version; + sha256 = "sha256-qgsU3NXqH7ryUah7rEnUrsbecV4AsOo4QfgTcWc5bc4="; + }; + + passthru = { + updateScript = nix-update-script { + attrPath = "pantheon.${pname}"; + }; + }; + + nativeBuildInputs = [ + libxml2 + meson + ninja + pkg-config + vala + ]; + + buildInputs = [ + granite + gtk3 + libgee + switchboard + ]; + + meta = with lib; { + description = "Switchboard Date & Time Plug"; + homepage = "https://github.com/elementary/switchboard-plug-datetime"; + license = licenses.gpl3Plus; + platforms = platforms.linux; + maintainers = pantheon.maintainers; + }; +} diff --git a/nixpkgs/pkgs/desktops/pantheon/apps/switchboard-plugs/display/default.nix b/nixpkgs/pkgs/desktops/pantheon/apps/switchboard-plugs/display/default.nix new file mode 100644 index 000000000000..055a40989631 --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/apps/switchboard-plugs/display/default.nix @@ -0,0 +1,53 @@ +{ lib, stdenv +, fetchFromGitHub +, nix-update-script +, pantheon +, meson +, ninja +, pkg-config +, vala +, libgee +, granite +, gtk3 +, switchboard +}: + +stdenv.mkDerivation rec { + pname = "switchboard-plug-display"; + version = "2.2.2"; + + src = fetchFromGitHub { + owner = "elementary"; + repo = pname; + rev = version; + sha256 = "sha256-mjmvuSipCRGg/HSa1n1eLyVU1gERNT2ciqgz/0KqX0Y="; + }; + + passthru = { + updateScript = nix-update-script { + attrPath = "pantheon.${pname}"; + }; + }; + + nativeBuildInputs = [ + meson + ninja + pkg-config + vala + ]; + + buildInputs = [ + granite + gtk3 + libgee + switchboard + ]; + + meta = with lib; { + description = "Switchboard Displays Plug"; + homepage = "https://github.com/elementary/switchboard-plug-display"; + license = licenses.lgpl2Plus; + platforms = platforms.linux; + maintainers = pantheon.maintainers; + }; +} diff --git a/nixpkgs/pkgs/desktops/pantheon/apps/switchboard-plugs/keyboard/0001-Remove-Install-Unlisted-Engines-function.patch b/nixpkgs/pkgs/desktops/pantheon/apps/switchboard-plugs/keyboard/0001-Remove-Install-Unlisted-Engines-function.patch new file mode 100644 index 000000000000..42900c380627 --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/apps/switchboard-plugs/keyboard/0001-Remove-Install-Unlisted-Engines-function.patch @@ -0,0 +1,700 @@ +From 4fd6da39ab33a6eef46ee2c64eb4f5595c7fe633 Mon Sep 17 00:00:00 2001 +Message-Id: <4fd6da39ab33a6eef46ee2c64eb4f5595c7fe633.1599180249.git-series.worldofpeace@protonmail.ch> +From: worldofpeace <worldofpeace@protonmail.ch> +Date: Thu, 3 Sep 2020 20:43:25 -0400 +Subject: [PATCH] Remove Install Unlisted Engines function + +https://github.com/elementary/switchboard-plug-keyboard/issues/324 +--- + src/Dialogs/InstallEngineDialog.vala | 140 +------------------ + src/Dialogs/ProgressDialog.vala | 82 +---------- + src/InputMethod/Installer/InstallList.vala | 73 +--------- + src/InputMethod/Installer/UbuntuInstaller.vala | 142 +------------------ + src/InputMethod/Installer/aptd-client.vala | 93 +------------ + src/Widgets/InputMethod/AddEnginesPopover.vala | 12 +-- + src/Widgets/InputMethod/LanguagesRow.vala | 43 +----- + src/meson.build | 6 +- + 8 files changed, 591 deletions(-) + delete mode 100644 src/Dialogs/InstallEngineDialog.vala + delete mode 100644 src/Dialogs/ProgressDialog.vala + delete mode 100644 src/InputMethod/Installer/InstallList.vala + delete mode 100644 src/InputMethod/Installer/UbuntuInstaller.vala + delete mode 100644 src/InputMethod/Installer/aptd-client.vala + delete mode 100644 src/Widgets/InputMethod/LanguagesRow.vala + +diff --git a/src/Dialogs/InstallEngineDialog.vala b/src/Dialogs/InstallEngineDialog.vala +deleted file mode 100644 +index ffba3a8..0000000 +--- a/src/Dialogs/InstallEngineDialog.vala ++++ /dev/null +@@ -1,140 +0,0 @@ +-/* +-* Copyright 2019-2020 elementary, Inc. (https://elementary.io) +-* +-* This program is free software: you can redistribute it and/or modify +-* it under the terms of the GNU General Public License as published by +-* the Free Software Foundation, either version 3 of the License, or +-* (at your option) any later version. +-* +-* This program is distributed in the hope that it will be useful, +-* but WITHOUT ANY WARRANTY; without even the implied warranty of +-* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +-* GNU General Public License for more details. +-* +-* You should have received a copy of the GNU General Public License +-* along with this program. If not, see <https://www.gnu.org/licenses/>. +-*/ +- +-public class Pantheon.Keyboard.InputMethodPage.InstallEngineDialog : Granite.MessageDialog { +- private InstallList? engines_filter; +- +- public InstallEngineDialog (Gtk.Window parent) { +- Object ( +- primary_text: _("Choose an engine to install"), +- secondary_text: _("Select an engine from the list to install and use."), +- image_icon: new ThemedIcon ("extension"), +- transient_for: parent, +- buttons: Gtk.ButtonsType.CANCEL +- ); +- } +- +- construct { +- var languages_list = new Gtk.ListBox () { +- activate_on_single_click = true, +- expand = true, +- selection_mode = Gtk.SelectionMode.NONE +- }; +- +- foreach (var language in InstallList.get_all ()) { +- var lang = new LanguagesRow (language); +- languages_list.add (lang); +- } +- +- var back_button = new Gtk.Button.with_label (_("Languages")) { +- halign = Gtk.Align.START, +- margin = 6 +- }; +- back_button.get_style_context ().add_class (Granite.STYLE_CLASS_BACK_BUTTON); +- +- var language_title = new Gtk.Label (""); +- +- var language_header = new Gtk.Box (Gtk.Orientation.HORIZONTAL, 6); +- language_header.pack_start (back_button); +- language_header.set_center_widget (language_title); +- +- var listbox = new Gtk.ListBox () { +- expand = true +- }; +- listbox.set_filter_func (filter_function); +- listbox.set_sort_func (sort_function); +- +- foreach (var language in InstallList.get_all ()) { +- foreach (var engine in language.get_components ()) { +- listbox.add (new EnginesRow (engine)); +- } +- } +- +- var scrolled = new Gtk.ScrolledWindow (null, null); +- scrolled.add (listbox); +- +- var engine_list_grid = new Gtk.Grid () { +- orientation = Gtk.Orientation.VERTICAL +- }; +- engine_list_grid.get_style_context ().add_class (Gtk.STYLE_CLASS_VIEW); +- engine_list_grid.add (language_header); +- engine_list_grid.add (new Gtk.Separator (Gtk.Orientation.HORIZONTAL)); +- engine_list_grid.add (scrolled); +- +- var stack = new Gtk.Stack () { +- height_request = 200, +- width_request = 300, +- transition_type = Gtk.StackTransitionType.SLIDE_LEFT_RIGHT +- }; +- stack.add (languages_list); +- stack.add (engine_list_grid); +- +- var frame = new Gtk.Frame (null); +- frame.add (stack); +- +- custom_bin.add (frame); +- custom_bin.show_all (); +- +- var install_button = add_button (_("Install"), Gtk.ResponseType.OK); +- install_button.sensitive = false; +- install_button.get_style_context ().add_class (Gtk.STYLE_CLASS_SUGGESTED_ACTION); +- +- languages_list.row_activated.connect ((row) => { +- stack.visible_child = engine_list_grid; +- language_title.label = ((LanguagesRow) row).language.get_name (); +- engines_filter = ((LanguagesRow) row).language; +- listbox.invalidate_filter (); +- var adjustment = scrolled.get_vadjustment (); +- adjustment.set_value (adjustment.lower); +- }); +- +- back_button.clicked.connect (() => { +- stack.visible_child = languages_list; +- install_button.sensitive = false; +- }); +- +- listbox.selected_rows_changed.connect (() => { +- foreach (var engines_row in listbox.get_children ()) { +- ((EnginesRow) engines_row).selected = false; +- } +- +- ((EnginesRow) listbox.get_selected_row ()).selected = true; +- install_button.sensitive = true; +- }); +- +- response.connect ((response_id) => { +- if (response_id == Gtk.ResponseType.OK) { +- string engine_to_install = ((EnginesRow) listbox.get_selected_row ()).engine_name; +- UbuntuInstaller.get_default ().install (engine_to_install); +- } +- }); +- } +- +- [CCode (instance_pos = -1)] +- private bool filter_function (Gtk.ListBoxRow row) { +- if (InstallList.get_language_from_engine_name (((EnginesRow) row).engine_name) == engines_filter) { +- return true; +- } +- +- return false; +- } +- +- [CCode (instance_pos = -1)] +- private int sort_function (Gtk.ListBoxRow row1, Gtk.ListBoxRow row2) { +- return ((EnginesRow) row1).engine_name.collate (((EnginesRow) row1).engine_name); +- } +-} +diff --git a/src/Dialogs/ProgressDialog.vala b/src/Dialogs/ProgressDialog.vala +deleted file mode 100644 +index f110aca..0000000 +--- a/src/Dialogs/ProgressDialog.vala ++++ /dev/null +@@ -1,82 +0,0 @@ +-/* +-* Copyright 2011-2020 elementary, Inc. (https://elementary.io) +-* +-* This program is free software: you can redistribute it +-* and/or modify it under the terms of the GNU Lesser General Public License as +-* published by the Free Software Foundation, either version 3 of the +-* License, or (at your option) any later version. +-* +-* This program is distributed in the hope that it will be +-* useful, but WITHOUT ANY WARRANTY; without even the implied warranty of +-* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General +-* Public License for more details. +-* +-* You should have received a copy of the GNU General Public License along +-* with this program. If not, see http://www.gnu.org/licenses/. +-*/ +- +-public class Pantheon.Keyboard.InputMethodPage.ProgressDialog : Gtk.Dialog { +- public int progress { +- set { +- if (value >= 100) { +- destroy (); +- } +- +- progress_bar.fraction = value / 100.0; +- } +- } +- +- private Gtk.ProgressBar progress_bar; +- +- construct { +- var image = new Gtk.Image.from_icon_name ("preferences-desktop-locale", Gtk.IconSize.DIALOG) { +- valign = Gtk.Align.START +- }; +- +- var primary_label = new Gtk.Label (null) { +- max_width_chars = 50, +- wrap = true, +- xalign = 0 +- }; +- primary_label.get_style_context ().add_class (Granite.STYLE_CLASS_PRIMARY_LABEL); +- +- unowned UbuntuInstaller installer = UbuntuInstaller.get_default (); +- switch (installer.transaction_mode) { +- case UbuntuInstaller.TransactionMode.INSTALL: +- primary_label.label = _("Installing %s").printf (installer.engine_to_address); +- break; +- case UbuntuInstaller.TransactionMode.REMOVE: +- primary_label.label = _("Removing %s").printf (installer.engine_to_address); +- break; +- } +- +- progress_bar = new Gtk.ProgressBar () { +- hexpand = true, +- valign = Gtk.Align.START, +- width_request = 300 +- }; +- +- var cancel_button = (Gtk.Button) add_button (_("Cancel"), 0); +- +- installer.bind_property ("install-cancellable", cancel_button, "sensitive"); +- +- var grid = new Gtk.Grid () { +- column_spacing = 12, +- margin = 6, +- row_spacing = 6 +- }; +- grid.attach (image, 0, 0, 1, 2); +- grid.attach (primary_label, 1, 0); +- grid.attach (progress_bar, 1, 1); +- grid.show_all (); +- +- border_width = 6; +- deletable = false; +- get_content_area ().add (grid); +- +- cancel_button.clicked.connect (() => { +- installer.cancel_install (); +- destroy (); +- }); +- } +-} +diff --git a/src/InputMethod/Installer/InstallList.vala b/src/InputMethod/Installer/InstallList.vala +deleted file mode 100644 +index 275c302..0000000 +--- a/src/InputMethod/Installer/InstallList.vala ++++ /dev/null +@@ -1,73 +0,0 @@ +-/* +-* 2019-2020 elementary, Inc. (https://elementary.io) +-* +-* This program is free software: you can redistribute it and/or modify +-* it under the terms of the GNU General Public License as published by +-* the Free Software Foundation, either version 3 of the License, or +-* (at your option) any later version. +-* +-* This program is distributed in the hope that it will be useful, +-* but WITHOUT ANY WARRANTY; without even the implied warranty of +-* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +-* GNU General Public License for more details. +-* +-* You should have received a copy of the GNU General Public License +-* along with this program. If not, see <https://www.gnu.org/licenses/>. +-*/ +- +-public enum Pantheon.Keyboard.InputMethodPage.InstallList { +- JA, +- KO, +- ZH; +- +- public string get_name () { +- switch (this) { +- case JA: +- return _("Japanese"); +- case KO: +- return _("Korean"); +- case ZH: +- return _("Chinese"); +- default: +- assert_not_reached (); +- } +- } +- +- public string[] get_components () { +- switch (this) { +- case JA: +- return { "ibus-anthy", "ibus-mozc", "ibus-skk" }; +- case KO: +- return { "ibus-hangul" }; +- case ZH: +- return { "ibus-cangjie", "ibus-chewing", "ibus-pinyin" }; +- default: +- assert_not_reached (); +- } +- } +- +- public static InstallList get_language_from_engine_name (string engine_name) { +- switch (engine_name) { +- case "ibus-anthy": +- return JA; +- case "ibus-mozc": +- return JA; +- case "ibus-skk": +- return JA; +- case "ibus-hangul": +- return KO; +- case "ibus-cangjie": +- return ZH; +- case "ibus-chewing": +- return ZH; +- case "ibus-pinyin": +- return ZH; +- default: +- assert_not_reached (); +- } +- } +- +- public static InstallList[] get_all () { +- return { JA, KO, ZH }; +- } +-} +diff --git a/src/InputMethod/Installer/UbuntuInstaller.vala b/src/InputMethod/Installer/UbuntuInstaller.vala +deleted file mode 100644 +index b65aa1f..0000000 +--- a/src/InputMethod/Installer/UbuntuInstaller.vala ++++ /dev/null +@@ -1,142 +0,0 @@ +-/* +-* Copyright 2011-2020 elementary, Inc. (https://elementary.io) +-* +-* This program is free software: you can redistribute it +-* and/or modify it under the terms of the GNU Lesser General Public License as +-* published by the Free Software Foundation, either version 3 of the +-* License, or (at your option) any later version. +-* +-* This program is distributed in the hope that it will be +-* useful, but WITHOUT ANY WARRANTY; without even the implied warranty of +-* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General +-* Public License for more details. +-* +-* You should have received a copy of the GNU General Public License along +-* with this program. If not, see http://www.gnu.org/licenses/. +-*/ +- +-public class Pantheon.Keyboard.InputMethodPage.UbuntuInstaller : Object { +- private AptdProxy aptd; +- private AptdTransactionProxy proxy; +- +- public bool install_cancellable { get; private set; } +- public TransactionMode transaction_mode { get; private set; } +- public string engine_to_address { get; private set; } +- +- public signal void install_finished (string langcode); +- public signal void install_failed (); +- public signal void remove_finished (string langcode); +- public signal void progress_changed (int progress); +- +- public enum TransactionMode { +- INSTALL, +- REMOVE, +- INSTALL_MISSING, +- } +- +- Gee.HashMap<string, string> transactions; +- +- private static GLib.Once<UbuntuInstaller> instance; +- public static unowned UbuntuInstaller get_default () { +- return instance.once (() => { +- return new UbuntuInstaller (); +- }); +- } +- +- private UbuntuInstaller () {} +- +- construct { +- transactions = new Gee.HashMap<string, string> (); +- aptd = new AptdProxy (); +- +- try { +- aptd.connect_to_aptd (); +- } catch (Error e) { +- warning ("Could not connect to APT daemon"); +- } +- } +- +- public void install (string engine_name) { +- transaction_mode = TransactionMode.INSTALL; +- engine_to_address = engine_name; +- string[] packages = {}; +- packages += engine_to_address; +- +- foreach (var packet in packages) { +- message ("Packet: %s", packet); +- } +- +- aptd.install_packages.begin (packages, (obj, res) => { +- try { +- var transaction_id = aptd.install_packages.end (res); +- transactions.@set (transaction_id, "i-" + engine_name); +- run_transaction (transaction_id); +- } catch (Error e) { +- warning ("Could not queue downloads: %s", e.message); +- } +- }); +- } +- +- public void cancel_install () { +- if (install_cancellable) { +- warning ("cancel_install"); +- try { +- proxy.cancel (); +- } catch (Error e) { +- warning ("cannot cancel installation:%s", e.message); +- } +- } +- } +- +- private void run_transaction (string transaction_id) { +- proxy = new AptdTransactionProxy (); +- proxy.finished.connect (() => { +- on_apt_finshed (transaction_id, true); +- }); +- +- proxy.property_changed.connect ((prop, val) => { +- if (prop == "Progress") { +- progress_changed ((int) val.get_int32 ()); +- } +- +- if (prop == "Cancellable") { +- install_cancellable = val.get_boolean (); +- } +- }); +- +- try { +- proxy.connect_to_aptd (transaction_id); +- proxy.simulate (); +- +- proxy.run (); +- } catch (Error e) { +- on_apt_finshed (transaction_id, false); +- warning ("Could no run transaction: %s", e.message); +- } +- } +- +- private void on_apt_finshed (string id, bool success) { +- if (!success) { +- install_failed (); +- transactions.unset (id); +- return; +- } +- +- if (!transactions.has_key (id)) { //transaction already removed +- return; +- } +- +- var action = transactions.get (id); +- var lang = action[2:action.length]; +- +- message ("ID %s -> %s", id, success ? "success" : "failed"); +- +- if (action[0:1] == "i") { // install +- install_finished (lang); +- } else { +- remove_finished (lang); +- } +- +- transactions.unset (id); +- } +-} +diff --git a/src/InputMethod/Installer/aptd-client.vala b/src/InputMethod/Installer/aptd-client.vala +deleted file mode 100644 +index ee5c3f5..0000000 +--- a/src/InputMethod/Installer/aptd-client.vala ++++ /dev/null +@@ -1,93 +0,0 @@ +-/* +- * Copyright (C) 2012 Canonical Ltd +- * +- * This program is free software: you can redistribute it and/or modify +- * it under the terms of the GNU General Public License version 3 as +- * published by the Free Software Foundation. +- * +- * This program is distributed in the hope that it will be useful, +- * but WITHOUT ANY WARRANTY; without even the implied warranty of +- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +- * GNU General Public License for more details. +- * +- * You should have received a copy of the GNU General Public License +- * along with this program. If not, see <http://www.gnu.org/licenses/>. +- * +- * Authored by Pawel Stolowski <pawel.stolowski@canonical.com> +- */ +- +-namespace Pantheon.Keyboard.InputMethodPage { +- private const string APTD_DBUS_NAME = "org.debian.apt"; +- private const string APTD_DBUS_PATH = "/org/debian/apt"; +- +- /** +- * Expose a subset of org.debian.apt interfaces -- only what's needed by applications lens. +- */ +- [DBus (name = "org.debian.apt")] +- public interface AptdService : GLib.Object { +- public abstract async string install_packages (string[] packages) throws GLib.Error; +- public abstract async string remove_packages (string[] packages) throws GLib.Error; +- public abstract async void quit () throws GLib.Error; +- } +- +- [DBus (name = "org.debian.apt.transaction")] +- public interface AptdTransactionService : GLib.Object { +- public abstract void run () throws GLib.Error; +- public abstract void simulate () throws GLib.Error; +- public abstract void cancel () throws GLib.Error; +- public signal void finished (string exit_state); +- public signal void property_changed (string property, Variant val); +- } +- +- public class AptdProxy : GLib.Object { +- private AptdService _aptd_service; +- +- public void connect_to_aptd () throws GLib.Error { +- _aptd_service = Bus.get_proxy_sync (BusType.SYSTEM, APTD_DBUS_NAME, APTD_DBUS_PATH); +- } +- +- public async string install_packages (string[] packages) throws GLib.Error { +- string res = yield _aptd_service.install_packages (packages); +- return res; +- } +- +- public async string remove_packages (string[] packages) throws GLib.Error { +- string res = yield _aptd_service.remove_packages (packages); +- return res; +- } +- +- public async void quit () throws GLib.Error { +- yield _aptd_service.quit (); +- } +- } +- +- public class AptdTransactionProxy : GLib.Object { +- public signal void finished (string transaction_id); +- public signal void property_changed (string property, Variant variant); +- +- private AptdTransactionService _aptd_service; +- +- public void connect_to_aptd (string transaction_id) throws GLib.Error { +- _aptd_service = Bus.get_proxy_sync (BusType.SYSTEM, APTD_DBUS_NAME, transaction_id); +- _aptd_service.finished.connect ((exit_state) => { +- debug ("aptd transaction finished: %s\n", exit_state); +- finished (transaction_id); +- }); +- _aptd_service.property_changed.connect ((prop, variant) => { +- property_changed (prop, variant); +- }); +- } +- +- public void simulate () throws GLib.Error { +- _aptd_service.simulate (); +- } +- +- public void run () throws GLib.Error { +- _aptd_service.run (); +- } +- +- public void cancel () throws GLib.Error { +- _aptd_service.cancel (); +- } +- } +-} +diff --git a/src/Widgets/InputMethod/AddEnginesPopover.vala b/src/Widgets/InputMethod/AddEnginesPopover.vala +index 46e005d..6b56c6b 100644 +--- a/src/Widgets/InputMethod/AddEnginesPopover.vala ++++ b/src/Widgets/InputMethod/AddEnginesPopover.vala +@@ -49,8 +49,6 @@ public class Pantheon.Keyboard.InputMethodPage.AddEnginesPopover : Gtk.Popover { + }; + scrolled.add (listbox); + +- var install_button = new Gtk.Button.with_label (_("Install Unlisted Engines…")); +- + var cancel_button = new Gtk.Button.with_label (_("Cancel")); + + var add_button = new Gtk.Button.with_label (_("Add Engine")); +@@ -61,10 +59,8 @@ public class Pantheon.Keyboard.InputMethodPage.AddEnginesPopover : Gtk.Popover { + margin = 12, + spacing = 6 + }; +- button_box.add (install_button); + button_box.add (cancel_button); + button_box.add (add_button); +- button_box.set_child_secondary (install_button, true); + + var grid = new Gtk.Grid (); + grid.attach (search_entry, 0, 0); +@@ -92,14 +88,6 @@ public class Pantheon.Keyboard.InputMethodPage.AddEnginesPopover : Gtk.Popover { + listbox.invalidate_filter (); + }); + +- install_button.clicked.connect (() => { +- popdown (); +- +- var install_dialog = new InstallEngineDialog ((Gtk.Window) get_toplevel ()); +- install_dialog.run (); +- install_dialog.destroy (); +- }); +- + cancel_button.clicked.connect (() => { + popdown (); + }); +diff --git a/src/Widgets/InputMethod/LanguagesRow.vala b/src/Widgets/InputMethod/LanguagesRow.vala +deleted file mode 100644 +index dc064ae..0000000 +--- a/src/Widgets/InputMethod/LanguagesRow.vala ++++ /dev/null +@@ -1,43 +0,0 @@ +-/* +-* 2019-2020 elementary, Inc. (https://elementary.io) +-* +-* This program is free software: you can redistribute it and/or modify +-* it under the terms of the GNU General Public License as published by +-* the Free Software Foundation, either version 3 of the License, or +-* (at your option) any later version. +-* +-* This program is distributed in the hope that it will be useful, +-* but WITHOUT ANY WARRANTY; without even the implied warranty of +-* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +-* GNU General Public License for more details. +-* +-* You should have received a copy of the GNU General Public License +-* along with this program. If not, see <https://www.gnu.org/licenses/>. +-*/ +- +-public class Pantheon.Keyboard.InputMethodPage.LanguagesRow : Gtk.ListBoxRow { +- public InstallList language { get; construct; } +- +- public LanguagesRow (InstallList language) { +- Object (language: language); +- } +- +- construct { +- var label = new Gtk.Label (language.get_name ()) { +- halign = Gtk.Align.START, +- hexpand = true +- }; +- +- var caret = new Gtk.Image.from_icon_name ("pan-end-symbolic", Gtk.IconSize.MENU); +- +- var grid = new Gtk.Grid () { +- margin = 3, +- margin_start = 6, +- margin_end = 6 +- }; +- grid.add (label); +- grid.add (caret); +- +- add (grid); +- } +-} +diff --git a/src/meson.build b/src/meson.build +index 28f07c1..a515419 100644 +--- a/src/meson.build ++++ b/src/meson.build +@@ -16,7 +16,6 @@ plug_files = files( + 'Widgets/Shortcuts/CustomTree.vala', + 'Widgets/Layout/Display.vala', + 'Widgets/Layout/AddLayoutPopover.vala', +- 'Widgets/InputMethod/LanguagesRow.vala', + 'Widgets/InputMethod/EnginesRow.vala', + 'Widgets/InputMethod/AddEnginesPopover.vala', + 'Views/Shortcuts.vala', +@@ -36,11 +35,6 @@ plug_files = files( + 'Layout/AdvancedSettingsGrid.vala', + 'InputMethod/Utils.vala', + 'InputMethod/AddEnginesList.vala', +- 'InputMethod/Installer/UbuntuInstaller.vala', +- 'InputMethod/Installer/InstallList.vala', +- 'InputMethod/Installer/aptd-client.vala', +- 'Dialogs/ProgressDialog.vala', +- 'Dialogs/InstallEngineDialog.vala', + 'Dialogs/ConflictDialog.vala', + ) + + +base-commit: 9d9eddeb7da8450a309496c25066f4f78a9d4070 +-- +git-series 0.9.1 diff --git a/nixpkgs/pkgs/desktops/pantheon/apps/switchboard-plugs/keyboard/default.nix b/nixpkgs/pkgs/desktops/pantheon/apps/switchboard-plugs/keyboard/default.nix new file mode 100644 index 000000000000..06bdce19f45c --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/apps/switchboard-plugs/keyboard/default.nix @@ -0,0 +1,68 @@ +{ lib, stdenv +, fetchFromGitHub +, nix-update-script +, pantheon +, fetchpatch +, substituteAll +, meson +, ninja +, pkg-config +, vala +, libgee +, granite +, gtk3 +, libxml2 +, libgnomekbd +, libxklavier +, xorg +, ibus +, switchboard +}: + +stdenv.mkDerivation rec { + pname = "switchboard-plug-keyboard"; + version = "2.4.1"; + + src = fetchFromGitHub { + owner = "elementary"; + repo = pname; + rev = version; + sha256 = "sha256-iuv5NZ7v+rXyFsKB/PvGa/7hm9MIV8E6JnTzEGROlhM="; + }; + + patches = [ + ./0001-Remove-Install-Unlisted-Engines-function.patch + ]; + + passthru = { + updateScript = nix-update-script { + attrPath = "pantheon.${pname}"; + }; + }; + + nativeBuildInputs = [ + libxml2 + meson + ninja + pkg-config + vala + ]; + + buildInputs = [ + granite + gtk3 + ibus + libgee + libgnomekbd + libxklavier + switchboard + ]; + + meta = with lib; { + description = "Switchboard Keyboard Plug"; + homepage = "https://github.com/elementary/switchboard-plug-keyboard"; + license = licenses.gpl2Plus; + platforms = platforms.linux; + maintainers = pantheon.maintainers; + }; +} diff --git a/nixpkgs/pkgs/desktops/pantheon/apps/switchboard-plugs/mouse-touchpad/default.nix b/nixpkgs/pkgs/desktops/pantheon/apps/switchboard-plugs/mouse-touchpad/default.nix new file mode 100644 index 000000000000..67eeee584a69 --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/apps/switchboard-plugs/mouse-touchpad/default.nix @@ -0,0 +1,57 @@ +{ lib, stdenv +, fetchFromGitHub +, nix-update-script +, pantheon +, meson +, ninja +, pkg-config +, vala +, libgee +, granite +, gtk3 +, switchboard +, elementary-settings-daemon +, glib +}: + +stdenv.mkDerivation rec { + pname = "switchboard-plug-mouse-touchpad"; + version = "2.4.2"; + + src = fetchFromGitHub { + owner = "elementary"; + repo = pname; + rev = version; + sha256 = "sha256-WJ/GRhZsSwC31HEIjHHWBy9/Skqbwor0tNVTedue3kk="; + }; + + passthru = { + updateScript = nix-update-script { + attrPath = "pantheon.${pname}"; + }; + }; + + nativeBuildInputs = [ + meson + ninja + pkg-config + vala + ]; + + buildInputs = [ + glib + granite + gtk3 + libgee + elementary-settings-daemon + switchboard + ]; + + meta = with lib; { + description = "Switchboard Mouse & Touchpad Plug"; + homepage = "https://github.com/elementary/switchboard-plug-mouse-touchpad"; + license = licenses.gpl2Plus; + platforms = platforms.linux; + maintainers = pantheon.maintainers; + }; +} diff --git a/nixpkgs/pkgs/desktops/pantheon/apps/switchboard-plugs/network/default.nix b/nixpkgs/pkgs/desktops/pantheon/apps/switchboard-plugs/network/default.nix new file mode 100644 index 000000000000..fce9402e131f --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/apps/switchboard-plugs/network/default.nix @@ -0,0 +1,67 @@ +{ lib, stdenv +, fetchFromGitHub +, nix-update-script +, pantheon +, meson +, ninja +, pkg-config +, substituteAll +, vala +, libgee +, granite +, gtk3 +, networkmanager +, networkmanagerapplet +, libnma +, switchboard +}: + +stdenv.mkDerivation rec { + pname = "switchboard-plug-network"; + version = "2.3.2"; + + src = fetchFromGitHub { + owner = "elementary"; + repo = pname; + rev = version; + sha256 = "sha256-PYgewxBblhOfOJQSeRaq8xD7qZ3083EvgUjpi92FqyI="; + }; + + passthru = { + updateScript = nix-update-script { + attrPath = "pantheon.${pname}"; + }; + }; + + nativeBuildInputs = [ + meson + ninja + pkg-config + vala + ]; + + buildInputs = [ + granite + gtk3 + libgee + networkmanager + libnma + switchboard + ]; + + patches = [ + (substituteAll { + src = ./fix-paths.patch; + inherit networkmanagerapplet; + }) + ]; + + + meta = with lib; { + description = "Switchboard Networking Plug"; + homepage = "https://github.com/elementary/switchboard-plug-network"; + license = licenses.lgpl21Plus; + platforms = platforms.linux; + maintainers = pantheon.maintainers; + }; +} diff --git a/nixpkgs/pkgs/desktops/pantheon/apps/switchboard-plugs/network/fix-paths.patch b/nixpkgs/pkgs/desktops/pantheon/apps/switchboard-plugs/network/fix-paths.patch new file mode 100644 index 000000000000..b99f59fb2684 --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/apps/switchboard-plugs/network/fix-paths.patch @@ -0,0 +1,26 @@ +diff --git a/src/Views/VPNPage.vala b/src/Views/VPNPage.vala +index ba9dc22..a12871a 100644 +--- a/src/Views/VPNPage.vala ++++ b/src/Views/VPNPage.vala +@@ -264,7 +264,7 @@ public class Network.VPNPage : Network.Widgets.Page { + private void try_connection_editor (string args) { + try { + var appinfo = AppInfo.create_from_commandline ( +- "nm-connection-editor %s".printf (args), ++ "@networkmanagerapplet@/bin/nm-connection-editor %s".printf (args), + null, + GLib.AppInfoCreateFlags.NONE + ); +diff --git a/src/Widgets/SettingsButton.vala b/src/Widgets/SettingsButton.vala +index 5849b69..7bbd172 100644 +--- a/src/Widgets/SettingsButton.vala ++++ b/src/Widgets/SettingsButton.vala +@@ -55,7 +55,7 @@ public class Network.Widgets.SettingsButton : Gtk.Button { + clicked.connect (() => { + try { + var appinfo = AppInfo.create_from_commandline ( +- "nm-connection-editor %s".printf (args), null, AppInfoCreateFlags.NONE ++ "@networkmanagerapplet@/bin/nm-connection-editor %s".printf (args), null, AppInfoCreateFlags.NONE + ); + + appinfo.launch (null, null); diff --git a/nixpkgs/pkgs/desktops/pantheon/apps/switchboard-plugs/notifications/default.nix b/nixpkgs/pkgs/desktops/pantheon/apps/switchboard-plugs/notifications/default.nix new file mode 100644 index 000000000000..8c750710aed9 --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/apps/switchboard-plugs/notifications/default.nix @@ -0,0 +1,56 @@ +{ lib, stdenv +, fetchFromGitHub +, nix-update-script +, fetchpatch +, pantheon +, meson +, ninja +, pkg-config +, vala +, libgee +, granite +, gtk3 +, switchboard +, elementary-notifications +}: + +stdenv.mkDerivation rec { + pname = "switchboard-plug-notifications"; + version = "2.1.7"; + + src = fetchFromGitHub { + owner = "elementary"; + repo = pname; + rev = version; + sha256 = "sha256-MBCSQ+4l0mpS2OTDRJ7+91qo0SWm5nJNYO7SZaSoVQk="; + }; + + passthru = { + updateScript = nix-update-script { + attrPath = "pantheon.${pname}"; + }; + }; + + nativeBuildInputs = [ + meson + ninja + pkg-config + vala + ]; + + buildInputs = [ + elementary-notifications + granite + gtk3 + libgee + switchboard + ]; + + meta = with lib; { + description = "Switchboard Notifications Plug"; + homepage = "https://github.com/elementary/switchboard-plug-notifications"; + license = licenses.gpl2Plus; + platforms = platforms.linux; + maintainers = pantheon.maintainers; + }; +} diff --git a/nixpkgs/pkgs/desktops/pantheon/apps/switchboard-plugs/onlineaccounts/default.nix b/nixpkgs/pkgs/desktops/pantheon/apps/switchboard-plugs/onlineaccounts/default.nix new file mode 100644 index 000000000000..ef12cb38e1b9 --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/apps/switchboard-plugs/onlineaccounts/default.nix @@ -0,0 +1,86 @@ +{ lib, stdenv +, fetchFromGitHub +, nix-update-script +, fetchpatch +, pantheon +, meson +, ninja +, pkg-config +, vala_0_46 +, libgee +, granite +, gtk3 +, libaccounts-glib +, libsignon-glib +, json-glib +, librest +, webkitgtk +, libsoup +, switchboard +}: + +stdenv.mkDerivation rec { + pname = "switchboard-plug-onlineaccounts"; + version = "2.0.1"; + + src = fetchFromGitHub { + owner = "elementary"; + repo = pname; + rev = version; + sha256 = "sha256-CVYKcRty5bBEMNyoY51JAJQy6uh+U+7IvS6V/1GMCA4="; + }; + + passthru = { + updateScript = nix-update-script { + attrPath = "pantheon.${pname}"; + }; + }; + + nativeBuildInputs = [ + meson + ninja + pkg-config + vala_0_46 + ]; + + buildInputs = [ + granite + gtk3 + json-glib + libaccounts-glib + libgee + libsignon-glib + libsoup + librest + switchboard + webkitgtk + ]; + + patches = [ + # Fix build with latest vala + (fetchpatch { + url = "https://github.com/elementary/switchboard-plug-onlineaccounts/commit/5fa2882f765076d20c6ef4886198a34a05159f8a.patch"; + sha256 = "1szryyy7shdmbvx9yhpi0bhzaayg7hl6pq2c456j1qf9kfv0m4hf"; + }) + + # fix build with vala 0.48.9 + (fetchpatch { + url = "https://github.com/elementary/switchboard-plug-onlineaccounts/commit/b1853b7427102b8dd94774e1e2cc455f50902263.patch"; + sha256 = "J3C71GyEHEZWSghGXlwXPHFJRhrvx6i0yvi8NIDb4WE="; + }) + ]; + + PKG_CONFIG_LIBACCOUNTS_GLIB_PROVIDERFILESDIR = "${placeholder "out"}/share/accounts/providers"; + PKG_CONFIG_LIBACCOUNTS_GLIB_SERVICEFILESDIR = "${placeholder "out"}/share/accounts/services"; + PKG_CONFIG_SWITCHBOARD_2_0_PLUGSDIR = "${placeholder "out"}/lib/switchboard"; + + + meta = with lib; { + description = "Switchboard Online Accounts Plug"; + homepage = "https://github.com/elementary/switchboard-plug-onlineaccounts"; + license = licenses.lgpl2Plus; + platforms = platforms.linux; + maintainers = pantheon.maintainers; + }; + +} diff --git a/nixpkgs/pkgs/desktops/pantheon/apps/switchboard-plugs/pantheon-shell/default.nix b/nixpkgs/pkgs/desktops/pantheon/apps/switchboard-plugs/pantheon-shell/default.nix new file mode 100644 index 000000000000..97668d35471a --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/apps/switchboard-plugs/pantheon-shell/default.nix @@ -0,0 +1,52 @@ +{ lib, stdenv, fetchFromGitHub, nix-update-script, pantheon, meson, ninja, pkg-config, vala, glib +, libgee, granite, gexiv2, elementary-settings-daemon, gtk3, gnome-desktop +, gala, wingpanel, elementary-dock, switchboard, gettext, bamf, fetchpatch }: + +stdenv.mkDerivation rec { + pname = "switchboard-plug-pantheon-shell"; + version = "2.8.4"; + + src = fetchFromGitHub { + owner = "elementary"; + repo = pname; + rev = version; + sha256 = "sha256-CHl+4mVjrDg2gusrWOCfI++DZMWKLdvHxG3ZWMjZ2to="; + }; + + passthru = { + updateScript = nix-update-script { + attrPath = "pantheon.${pname}"; + }; + }; + + nativeBuildInputs = [ + gettext + meson + ninja + pkg-config + vala + ]; + + buildInputs = [ + bamf + elementary-dock + elementary-settings-daemon + gala + gexiv2 + glib + gnome-desktop + granite + gtk3 + libgee + switchboard + wingpanel + ]; + + meta = with lib; { + description = "Switchboard Desktop Plug"; + homepage = "https://github.com/elementary/switchboard-plug-pantheon-shell"; + license = licenses.gpl3Plus; + platforms = platforms.linux; + maintainers = pantheon.maintainers; + }; +} diff --git a/nixpkgs/pkgs/desktops/pantheon/apps/switchboard-plugs/power/default.nix b/nixpkgs/pkgs/desktops/pantheon/apps/switchboard-plugs/power/default.nix new file mode 100644 index 000000000000..f0cf47cfdfea --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/apps/switchboard-plugs/power/default.nix @@ -0,0 +1,71 @@ +{ lib, stdenv +, fetchFromGitHub +, nix-update-script +, pantheon +, substituteAll +, meson +, ninja +, pkg-config +, vala +, libgee +, elementary-dpms-helper +, elementary-settings-daemon +, granite +, gtk3 +, glib +, dbus +, polkit +, switchboard +}: + +stdenv.mkDerivation rec { + pname = "switchboard-plug-power"; + version = "2.4.2"; + + src = fetchFromGitHub { + owner = "elementary"; + repo = pname; + rev = version; + sha256 = "sha256-swcbkaHHe9BZxMWvjdRutvYfXXrSCUJWuld1btfYeH0="; + }; + + passthru = { + updateScript = nix-update-script { + attrPath = "pantheon.${pname}"; + }; + }; + + nativeBuildInputs = [ + meson + ninja + pkg-config + vala + ]; + + buildInputs = [ + dbus + elementary-dpms-helper + elementary-settings-daemon + glib + granite + gtk3 + libgee + polkit + switchboard + ]; + + patches = [ + (substituteAll { + src = ./dpms-helper-exec.patch; + elementary_dpms_helper = elementary-dpms-helper; + }) + ]; + + meta = with lib; { + description = "Switchboard Power Plug"; + homepage = "https://github.com/elementary/switchboard-plug-power"; + license = licenses.gpl2Plus; + platforms = platforms.linux; + maintainers = pantheon.maintainers; + }; +} diff --git a/nixpkgs/pkgs/desktops/pantheon/apps/switchboard-plugs/power/dpms-helper-exec.patch b/nixpkgs/pkgs/desktops/pantheon/apps/switchboard-plugs/power/dpms-helper-exec.patch new file mode 100644 index 000000000000..335d3f296262 --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/apps/switchboard-plugs/power/dpms-helper-exec.patch @@ -0,0 +1,13 @@ +diff --git a/src/MainView.vala b/src/MainView.vala +index 1654e68..175f220 100644 +--- a/src/MainView.vala ++++ b/src/MainView.vala +@@ -317,7 +317,7 @@ public class Power.MainView : Gtk.Grid { + + private static void run_dpms_helper () { + try { +- string[] argv = { "io.elementary.dpms-helper" }; ++ string[] argv = { "@elementary_dpms_helper@/bin/io.elementary.dpms-helper" }; + Process.spawn_async (null, argv, Environ.get (), + SpawnFlags.SEARCH_PATH | SpawnFlags.STDERR_TO_DEV_NULL | SpawnFlags.STDOUT_TO_DEV_NULL, + null, null); diff --git a/nixpkgs/pkgs/desktops/pantheon/apps/switchboard-plugs/printers/default.nix b/nixpkgs/pkgs/desktops/pantheon/apps/switchboard-plugs/printers/default.nix new file mode 100644 index 000000000000..7387ea34e4de --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/apps/switchboard-plugs/printers/default.nix @@ -0,0 +1,65 @@ +{ lib, stdenv +, fetchFromGitHub +, nix-update-script +, fetchpatch +, pantheon +, meson +, ninja +, pkg-config +, vala +, libgee +, granite +, gtk3 +, cups +, switchboard +}: + +stdenv.mkDerivation rec { + pname = "switchboard-plug-printers"; + version = "2.1.9"; + + src = fetchFromGitHub { + owner = "elementary"; + repo = pname; + rev = version; + sha256 = "sha256-tnAJyyPN/Xy1pmlgBpgO2Eb5CeHrRltjQTHmuTPBt8s="; + }; + + patches = [ + # Fix build with latest Vala. + (fetchpatch { + url = "https://github.com/elementary/switchboard-plug-printers/commit/5eced5ddda6f229d7265ea0a713f6c1cd181a526.patch"; + sha256 = "lPTNqka6jjvv1JnAqVzVIQBIdDXlCOQ5ASvgZNuEUC8="; + }) + ]; + + passthru = { + updateScript = nix-update-script { + attrPath = "pantheon.${pname}"; + }; + }; + + nativeBuildInputs = [ + meson + ninja + pkg-config + vala + ]; + + buildInputs = [ + cups + granite + gtk3 + libgee + switchboard + ]; + + meta = with lib; { + description = "Switchboard Printers Plug"; + homepage = "https://github.com/elementary/switchboard-plug-printers"; + license = licenses.lgpl3Plus; + platforms = platforms.linux; + maintainers = pantheon.maintainers; + }; + +} diff --git a/nixpkgs/pkgs/desktops/pantheon/apps/switchboard-plugs/security-privacy/default.nix b/nixpkgs/pkgs/desktops/pantheon/apps/switchboard-plugs/security-privacy/default.nix new file mode 100644 index 000000000000..26e26de33b12 --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/apps/switchboard-plugs/security-privacy/default.nix @@ -0,0 +1,78 @@ +{ lib, stdenv +, fetchFromGitHub +, fetchpatch +, nix-update-script +, pantheon +, meson +, python3 +, ninja +, pkg-config +, vala +, libgee +, granite +, gtk3 +, glib +, polkit +, zeitgeist +, switchboard +, lightlocker +}: + +stdenv.mkDerivation rec { + pname = "switchboard-plug-security-privacy"; + version = "2.2.4"; + + src = fetchFromGitHub { + owner = "elementary"; + repo = pname; + rev = version; + sha256 = "sha256-Sws6FqUL7QAROInDrcqYAp6j1TCC4aGV0/hi5Kmm5wQ="; + }; + + patches = [ + # Fix build with latest Vala. + (fetchpatch { + url = "https://github.com/elementary/switchboard-plug-security-privacy/commit/c8e422e630bbee0badcf4df26364c9e83e06bad0.patch"; + sha256 = "5Gm+muZiCraJC5JaGVVo0HDJ7KxjOpclHRW1RKsk3bc="; + }) + ]; + + passthru = { + updateScript = nix-update-script { + attrPath = "pantheon.${pname}"; + }; + }; + + nativeBuildInputs = [ + meson + ninja + pkg-config + python3 + vala + ]; + + buildInputs = [ + glib + granite + gtk3 + libgee + polkit + switchboard + lightlocker + zeitgeist + ]; + + postPatch = '' + chmod +x meson/post_install.py + patchShebangs meson/post_install.py + ''; + + meta = with lib; { + description = "Switchboard Security & Privacy Plug"; + homepage = "https://github.com/elementary/switchboard-plug-security-privacy"; + license = licenses.lgpl3Plus; + platforms = platforms.linux; + maintainers = pantheon.maintainers; + }; + +} diff --git a/nixpkgs/pkgs/desktops/pantheon/apps/switchboard-plugs/sharing/default.nix b/nixpkgs/pkgs/desktops/pantheon/apps/switchboard-plugs/sharing/default.nix new file mode 100644 index 000000000000..6baaed293c9f --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/apps/switchboard-plugs/sharing/default.nix @@ -0,0 +1,54 @@ +{ lib, stdenv +, fetchFromGitHub +, nix-update-script +, fetchpatch +, pantheon +, meson +, ninja +, pkg-config +, vala +, libgee +, granite +, gtk3 +, switchboard +}: + +stdenv.mkDerivation rec { + pname = "switchboard-plug-sharing"; + version = "2.1.4"; + + src = fetchFromGitHub { + owner = "elementary"; + repo = pname; + rev = version; + sha256 = "sha256-/M60w14zfAUXspabvTUWlOPRrHvKtCYUio82b034k6s="; + }; + + passthru = { + updateScript = nix-update-script { + attrPath = "pantheon.${pname}"; + }; + }; + + nativeBuildInputs = [ + meson + ninja + pkg-config + vala + ]; + + buildInputs = [ + granite + gtk3 + libgee + switchboard + ]; + + meta = with lib; { + description = "Switchboard Sharing Plug"; + homepage = "https://github.com/elementary/switchboard-plug-sharing"; + license = licenses.gpl2Plus; + platforms = platforms.linux; + maintainers = pantheon.maintainers; + }; +} diff --git a/nixpkgs/pkgs/desktops/pantheon/apps/switchboard-plugs/sound/default.nix b/nixpkgs/pkgs/desktops/pantheon/apps/switchboard-plugs/sound/default.nix new file mode 100644 index 000000000000..10117dd8f957 --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/apps/switchboard-plugs/sound/default.nix @@ -0,0 +1,59 @@ +{ lib, stdenv +, fetchFromGitHub +, nix-update-script +, pantheon +, meson +, ninja +, pkg-config +, vala +, libgee +, granite +, gtk3 +, pulseaudio +, libcanberra +, libcanberra-gtk3 +, switchboard +}: + +stdenv.mkDerivation rec { + pname = "switchboard-plug-sound"; + version = "2.2.5"; + + src = fetchFromGitHub { + owner = "elementary"; + repo = pname; + rev = version; + sha256 = "sha256-ITgxLZSB4zhSaFKX7Vbf89DGI8ibIcGEQTtLjcGN2tA="; + }; + + passthru = { + updateScript = nix-update-script { + attrPath = "pantheon.${pname}"; + }; + }; + + nativeBuildInputs = [ + meson + ninja + pkg-config + vala + ]; + + buildInputs = [ + granite + gtk3 + libcanberra + libcanberra-gtk3 + libgee + pulseaudio + switchboard + ]; + + meta = with lib; { + description = "Switchboard Sound Plug"; + homepage = "https://github.com/elementary/switchboard-plug-sound"; + license = licenses.lgpl2Plus; + platforms = platforms.linux; + maintainers = pantheon.maintainers; + }; +} diff --git a/nixpkgs/pkgs/desktops/pantheon/apps/switchboard/default.nix b/nixpkgs/pkgs/desktops/pantheon/apps/switchboard/default.nix new file mode 100644 index 000000000000..d0b56d7456af --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/apps/switchboard/default.nix @@ -0,0 +1,70 @@ +{ lib, stdenv +, fetchFromGitHub +, nix-update-script +, pantheon +, pkg-config +, meson +, python3 +, ninja +, vala +, gtk3 +, libgee +, granite +, gettext +, clutter-gtk +, elementary-icon-theme +, wrapGAppsHook +}: + +stdenv.mkDerivation rec { + pname = "switchboard"; + version = "2.4.0"; + + src = fetchFromGitHub { + owner = "elementary"; + repo = pname; + rev = version; + sha256 = "sha256-N3WZysLIah40kcyIyhryZpm2FxCmlvp0EB1krZ/IsYs="; + }; + + passthru = { + updateScript = nix-update-script { + attrPath = "pantheon.${pname}"; + }; + }; + + nativeBuildInputs = [ + gettext + meson + ninja + pkg-config + python3 + vala + wrapGAppsHook + ]; + + buildInputs = [ + clutter-gtk + elementary-icon-theme + granite + gtk3 + libgee + ]; + + patches = [ + ./plugs-path-env.patch + ]; + + postPatch = '' + chmod +x meson/post_install.py + patchShebangs meson/post_install.py + ''; + + meta = with lib; { + description = "Extensible System Settings app for Pantheon"; + homepage = "https://github.com/elementary/switchboard"; + license = licenses.lgpl21Plus; + platforms = platforms.linux; + maintainers = pantheon.maintainers; + }; +} diff --git a/nixpkgs/pkgs/desktops/pantheon/apps/switchboard/plugs-path-env.patch b/nixpkgs/pkgs/desktops/pantheon/apps/switchboard/plugs-path-env.patch new file mode 100644 index 000000000000..d5931d59ec9a --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/apps/switchboard/plugs-path-env.patch @@ -0,0 +1,21 @@ +diff --git a/lib/PlugsManager.vala b/lib/PlugsManager.vala +index 8b21e7b..bc36321 100644 +--- a/lib/PlugsManager.vala ++++ b/lib/PlugsManager.vala +@@ -36,7 +36,15 @@ public class Switchboard.PlugsManager : GLib.Object { + + private PlugsManager () { + plugs = new Gee.LinkedList<Switchboard.Plug> (); +- var base_folder = File.new_for_path (Build.PLUGS_DIR); ++ ++ var plugs_path = Environment.get_variable("SWITCHBOARD_PLUGS_PATH"); ++ if (plugs_path != null) { ++ debug ("SWITCHBOARD_PLUGS_PATH set to %s", plugs_path); ++ } else { ++ critical ("SWITCHBOARD_PLUGS_PATH not set"); ++ } ++ ++ var base_folder = File.new_for_path (plugs_path); + find_plugins (base_folder); + } + diff --git a/nixpkgs/pkgs/desktops/pantheon/apps/switchboard/wrapper.nix b/nixpkgs/pkgs/desktops/pantheon/apps/switchboard/wrapper.nix new file mode 100644 index 000000000000..7953105951c6 --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/apps/switchboard/wrapper.nix @@ -0,0 +1,62 @@ +{ wrapGAppsHook +, glib +, lib +, stdenv +, xorg +, switchboard +, switchboardPlugs +, plugs + # Only useful to disable for development testing. +, useDefaultPlugs ? true +, testName ? null +}: + +let + selectedPlugs = + if plugs == null then switchboardPlugs + else plugs ++ (lib.optionals useDefaultPlugs switchboardPlugs); + + testingName = lib.optionalString (testName != null) "${testName}-"; +in +stdenv.mkDerivation rec { + name = "${testingName}${switchboard.name}-with-plugs"; + + src = null; + + paths = [ + switchboard + ] ++ selectedPlugs; + + passAsFile = [ "paths" ]; + + nativeBuildInputs = [ + glib + wrapGAppsHook + ]; + + buildInputs = lib.forEach selectedPlugs (x: x.buildInputs) + ++ selectedPlugs; + + dontUnpack = true; + dontConfigure = true; + dontBuild = true; + + preferLocalBuild = true; + allowSubstitutes = false; + + installPhase = '' + mkdir -p $out + for i in $(cat $pathsPath); do + ${xorg.lndir}/bin/lndir -silent $i $out + done + ''; + + preFixup = '' + gappsWrapperArgs+=( + --set SWITCHBOARD_PLUGS_PATH "$out/lib/switchboard" + ) + ''; + + inherit (switchboard) meta; +} + diff --git a/nixpkgs/pkgs/desktops/pantheon/artwork/elementary-gtk-theme/default.nix b/nixpkgs/pkgs/desktops/pantheon/artwork/elementary-gtk-theme/default.nix new file mode 100644 index 000000000000..437f37941220 --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/artwork/elementary-gtk-theme/default.nix @@ -0,0 +1,42 @@ +{ lib, stdenv +, fetchFromGitHub +, nix-update-script +, pantheon +, meson +, ninja +, gettext +}: + +stdenv.mkDerivation rec { + pname = "elementary-gtk-theme"; + version = "5.4.2"; + + repoName = "stylesheet"; + + src = fetchFromGitHub { + owner = "elementary"; + repo = repoName; + rev = version; + sha256 = "sha256-eE0/LLdnpxOpBvdpioGKV/DOQ5lIuQt9dPnhGkQDGCs="; + }; + + passthru = { + updateScript = nix-update-script { + attrPath = "pantheon.${pname}"; + }; + }; + + nativeBuildInputs = [ + gettext + meson + ninja + ]; + + meta = with lib; { + description = "GTK theme designed to be smooth, attractive, fast, and usable"; + homepage = "https://github.com/elementary/stylesheet"; + license = licenses.gpl3; + platforms = platforms.linux; + maintainers = pantheon.maintainers; + }; +} diff --git a/nixpkgs/pkgs/desktops/pantheon/artwork/elementary-icon-theme/default.nix b/nixpkgs/pkgs/desktops/pantheon/artwork/elementary-icon-theme/default.nix new file mode 100644 index 000000000000..55935b2ee0e0 --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/artwork/elementary-icon-theme/default.nix @@ -0,0 +1,70 @@ +{ lib, stdenv +, fetchFromGitHub +, nix-update-script +, pantheon +, meson +, python3 +, ninja +, hicolor-icon-theme +, gtk3 +, xorg +, librsvg +}: + +stdenv.mkDerivation rec { + pname = "elementary-icon-theme"; + version = "5.3.1"; + + repoName = "icons"; + + src = fetchFromGitHub { + owner = "elementary"; + repo = repoName; + rev = version; + sha256 = "sha256-6XFzjpuHpGIZ+azkPuFcSF7p66sDonwLwjvlNBZDRmc="; + }; + + passthru = { + updateScript = nix-update-script { + attrPath = "pantheon.${pname}"; + }; + }; + + nativeBuildInputs = [ + gtk3 + librsvg + meson + ninja + python3 + xorg.xcursorgen + ]; + + propagatedBuildInputs = [ + hicolor-icon-theme + ]; + + dontDropIconThemeCache = true; + + mesonFlags = [ + "-Dvolume_icons=false" # Tries to install some icons to / + "-Dpalettes=false" # Don't install gimp and inkscape palette files + ]; + + postPatch = '' + chmod +x meson/symlink.py + patchShebangs meson/symlink.py + ''; + + postFixup = "gtk-update-icon-cache $out/share/icons/elementary"; + + meta = with lib; { + description = "Named, vector icons for elementary OS"; + longDescription = '' + An original set of vector icons designed specifically for elementary OS and its desktop environment: Pantheon. + ''; + homepage = "https://github.com/elementary/icons"; + license = licenses.gpl3; + platforms = platforms.linux; + maintainers = pantheon.maintainers; + }; +} diff --git a/nixpkgs/pkgs/desktops/pantheon/artwork/elementary-redacted-script/default.nix b/nixpkgs/pkgs/desktops/pantheon/artwork/elementary-redacted-script/default.nix new file mode 100644 index 000000000000..6a9d1b0aca36 --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/artwork/elementary-redacted-script/default.nix @@ -0,0 +1,31 @@ +{ lib, stdenv +, fetchFromGitHub +, pantheon +}: + +stdenv.mkDerivation { + pname = "elementary-redacted-script"; + version = "unstable-2016-06-03"; + + src = fetchFromGitHub { + owner = "png2378"; + repo = "redacted-elementary"; + rev = "346440ff9ce19465e6d5c3d6d67a8573f992c746"; + sha256 = "1jpd13sxkarclr0mlm66wzgpjh52ghzjzn4mywhyshyyskwn7jg1"; + }; + + dontBuild = true; + + installPhase = '' + mkdir -p $out/share/fonts/truetype/redacted-elementary + cp -a truetype/*.ttf $out/share/fonts/truetype/redacted-elementary + ''; + + meta = with lib; { + description = "Font for concealing text"; + homepage = "https://github.com/png2378/redacted-elementary"; + license = licenses.ofl; + maintainers = pantheon.maintainers; + platforms = platforms.linux; + }; +} diff --git a/nixpkgs/pkgs/desktops/pantheon/artwork/elementary-sound-theme/default.nix b/nixpkgs/pkgs/desktops/pantheon/artwork/elementary-sound-theme/default.nix new file mode 100644 index 000000000000..a89ea19079ed --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/artwork/elementary-sound-theme/default.nix @@ -0,0 +1,42 @@ +{ lib, stdenv +, fetchFromGitHub +, nix-update-script +, pantheon +, meson +, ninja +, pkg-config +}: + +stdenv.mkDerivation rec { + pname = "elementary-sound-theme"; + version = "1.0"; + + repoName = "sound-theme"; + + src = fetchFromGitHub { + owner = "elementary"; + repo = repoName; + rev = version; + sha256 = "sha256-v8ludbPCJaMHCxuzjZchTJwpGiF6UJlVMIMFg+lAhbU="; + }; + + nativeBuildInputs = [ + meson + ninja + pkg-config + ]; + + passthru = { + updateScript = nix-update-script { + attrPath = "pantheon.${pname}"; + }; + }; + + meta = with lib; { + description = "A set of system sounds for elementary"; + homepage = "https://github.com/elementary/sound-theme"; + license = licenses.unlicense; + platforms = platforms.linux; + maintainers = pantheon.maintainers; + }; +} diff --git a/nixpkgs/pkgs/desktops/pantheon/artwork/elementary-wallpapers/default.nix b/nixpkgs/pkgs/desktops/pantheon/artwork/elementary-wallpapers/default.nix new file mode 100644 index 000000000000..3e4e64d73012 --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/artwork/elementary-wallpapers/default.nix @@ -0,0 +1,43 @@ +{ lib, stdenv +, fetchFromGitHub +, nix-update-script +, pantheon +, meson +, ninja +, gettext +}: + +stdenv.mkDerivation rec { + pname = "elementary-wallpapers"; + version = "5.5.0"; + + repoName = "wallpapers"; + + src = fetchFromGitHub { + owner = "elementary"; + repo = repoName; + rev = version; + sha256 = "sha256-Q5sYDXqFhiTu8nABmyND3L8bIXd1BJ3GZQ9TL3SzwzA="; + }; + + nativeBuildInputs = [ + gettext + meson + ninja + ]; + + passthru = { + updateScript = nix-update-script { + attrPath = "pantheon.${pname}"; + }; + }; + + meta = with lib; { + description = "Collection of wallpapers for elementary"; + homepage = "https://github.com/elementary/wallpapers"; + license = licenses.publicDomain; + platforms = platforms.linux; + maintainers = pantheon.maintainers; + }; +} + diff --git a/nixpkgs/pkgs/desktops/pantheon/default.nix b/nixpkgs/pkgs/desktops/pantheon/default.nix new file mode 100644 index 000000000000..5ff368a642ed --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/default.nix @@ -0,0 +1,207 @@ +{ config, pkgs, lib, gnome }: + + +lib.makeScope pkgs.newScope (self: with self; { + + switchboardPlugs = [ + switchboard-plug-a11y switchboard-plug-about + switchboard-plug-applications switchboard-plug-bluetooth + switchboard-plug-datetime switchboard-plug-display + switchboard-plug-keyboard switchboard-plug-mouse-touchpad + switchboard-plug-network switchboard-plug-notifications + switchboard-plug-onlineaccounts switchboard-plug-pantheon-shell + switchboard-plug-power switchboard-plug-printers + switchboard-plug-security-privacy switchboard-plug-sharing + switchboard-plug-sound + ]; + + wingpanelIndicators = [ + wingpanel-applications-menu wingpanel-indicator-bluetooth + wingpanel-indicator-datetime wingpanel-indicator-keyboard + wingpanel-indicator-network wingpanel-indicator-nightlight + wingpanel-indicator-notifications wingpanel-indicator-power + wingpanel-indicator-session wingpanel-indicator-sound + ]; + + maintainers = with pkgs.lib.maintainers; [ ]; + + mutter = pkgs.gnome.mutter334; + + elementary-gsettings-schemas = callPackage ./desktop/elementary-gsettings-schemas { }; + + notes-up = pkgs.notes-up.override { withPantheon = true; }; + + #### APPS + + appcenter = callPackage ./apps/appcenter { }; + + elementary-calculator = callPackage ./apps/elementary-calculator { }; + + elementary-calendar = callPackage ./apps/elementary-calendar { }; + + elementary-camera = callPackage ./apps/elementary-camera { }; + + elementary-code = callPackage ./apps/elementary-code { }; + + elementary-dock = callPackage ./apps/elementary-dock { }; + + elementary-files = callPackage ./apps/elementary-files { }; + + elementary-feedback = callPackage ./apps/elementary-feedback { }; + + elementary-mail = callPackage ./apps/elementary-mail { }; + + elementary-music = callPackage ./apps/elementary-music { }; + + elementary-photos = callPackage ./apps/elementary-photos { }; + + elementary-screenshot-tool = callPackage ./apps/elementary-screenshot-tool { }; + + elementary-terminal = callPackage ./apps/elementary-terminal { }; + + elementary-videos = callPackage ./apps/elementary-videos { }; + + sideload = callPackage ./apps/sideload { }; + + #### DESKTOP + + elementary-default-settings = callPackage ./desktop/elementary-default-settings { }; + + elementary-greeter = callPackage ./desktop/elementary-greeter { }; + + elementary-onboarding = callPackage ./desktop/elementary-onboarding { }; + + elementary-print-shim = callPackage ./desktop/elementary-print-shim { }; + + elementary-session-settings = callPackage ./desktop/elementary-session-settings { + inherit (gnome) gnome-session gnome-keyring; + }; + + elementary-shortcut-overlay = callPackage ./desktop/elementary-shortcut-overlay { }; + + extra-elementary-contracts = callPackage ./desktop/extra-elementary-contracts { + inherit (gnome) file-roller gnome-bluetooth; + }; + + gala = callPackage ./desktop/gala { + inherit (gnome) gnome-desktop; + }; + + wingpanel = callPackage ./desktop/wingpanel { }; + + wingpanel-with-indicators = callPackage ./desktop/wingpanel/wrapper.nix { + indicators = null; + }; + + #### LIBRARIES + + granite = callPackage ./granite { }; + + #### SERVICES + + contractor = callPackage ./services/contractor { }; + + elementary-capnet-assist = callPackage ./services/elementary-capnet-assist { }; + + elementary-dpms-helper = callPackage ./services/elementary-dpms-helper { }; + + elementary-notifications = callPackage ./services/elementary-notifications { }; + + # We're using ubuntu and elementary's patchset due to reasons + # explained here -> https://github.com/elementary/greeter/issues/92#issuecomment-376215614 + # Take note of "I am holding off on "fixing" this bug for as long as possible." + elementary-settings-daemon = callPackage ./services/elementary-settings-daemon { + inherit (gnome) gnome-desktop; + }; + + pantheon-agent-geoclue2 = callPackage ./services/pantheon-agent-geoclue2 { }; + + pantheon-agent-polkit = callPackage ./services/pantheon-agent-polkit { }; + + #### WINGPANEL INDICATORS + + wingpanel-applications-menu = callPackage ./desktop/wingpanel-indicators/applications-menu { }; + + wingpanel-indicator-bluetooth = callPackage ./desktop/wingpanel-indicators/bluetooth { }; + + wingpanel-indicator-datetime = callPackage ./desktop/wingpanel-indicators/datetime { }; + + wingpanel-indicator-keyboard = callPackage ./desktop/wingpanel-indicators/keyboard { }; + + wingpanel-indicator-network = callPackage ./desktop/wingpanel-indicators/network { }; + + wingpanel-indicator-nightlight = callPackage ./desktop/wingpanel-indicators/nightlight { }; + + wingpanel-indicator-notifications = callPackage ./desktop/wingpanel-indicators/notifications { }; + + wingpanel-indicator-power = callPackage ./desktop/wingpanel-indicators/power { }; + + wingpanel-indicator-session = callPackage ./desktop/wingpanel-indicators/session { }; + + wingpanel-indicator-sound = callPackage ./desktop/wingpanel-indicators/sound { }; + + #### SWITCHBOARD + + switchboard = callPackage ./apps/switchboard { }; + + switchboard-with-plugs = callPackage ./apps/switchboard/wrapper.nix { + plugs = null; + }; + + switchboard-plug-a11y = callPackage ./apps/switchboard-plugs/a11y { }; + + switchboard-plug-about = callPackage ./apps/switchboard-plugs/about { }; + + switchboard-plug-applications = callPackage ./apps/switchboard-plugs/applications { }; + + switchboard-plug-bluetooth = callPackage ./apps/switchboard-plugs/bluetooth { }; + + switchboard-plug-datetime = callPackage ./apps/switchboard-plugs/datetime { }; + + switchboard-plug-display = callPackage ./apps/switchboard-plugs/display { }; + + switchboard-plug-keyboard = callPackage ./apps/switchboard-plugs/keyboard { }; + + switchboard-plug-mouse-touchpad = callPackage ./apps/switchboard-plugs/mouse-touchpad { }; + + switchboard-plug-network = callPackage ./apps/switchboard-plugs/network { }; + + switchboard-plug-notifications = callPackage ./apps/switchboard-plugs/notifications { }; + + switchboard-plug-onlineaccounts = callPackage ./apps/switchboard-plugs/onlineaccounts { }; + + switchboard-plug-pantheon-shell = callPackage ./apps/switchboard-plugs/pantheon-shell { + inherit (gnome) gnome-desktop; + }; + + switchboard-plug-power = callPackage ./apps/switchboard-plugs/power { }; + + switchboard-plug-printers = callPackage ./apps/switchboard-plugs/printers { }; + + switchboard-plug-security-privacy = callPackage ./apps/switchboard-plugs/security-privacy { }; + + switchboard-plug-sharing = callPackage ./apps/switchboard-plugs/sharing { }; + + switchboard-plug-sound = callPackage ./apps/switchboard-plugs/sound { }; + + ### ARTWORK + + elementary-gtk-theme = callPackage ./artwork/elementary-gtk-theme { }; + + elementary-icon-theme = callPackage ./artwork/elementary-icon-theme { }; + + elementary-redacted-script = callPackage ./artwork/elementary-redacted-script { }; + + elementary-sound-theme = callPackage ./artwork/elementary-sound-theme { }; + + elementary-wallpapers = callPackage ./artwork/elementary-wallpapers { }; + +} // lib.optionalAttrs (config.allowAliases or true) { + + ### ALIASES + + inherit (pkgs) vala; # added 2019-10-10 + + cerbere = throw "Cerbere is now obsolete https://github.com/elementary/cerbere/releases/tag/2.5.1."; + +}) diff --git a/nixpkgs/pkgs/desktops/pantheon/desktop/elementary-default-settings/0001-Build-with-Meson.patch b/nixpkgs/pkgs/desktops/pantheon/desktop/elementary-default-settings/0001-Build-with-Meson.patch new file mode 100644 index 000000000000..3a0b3812450c --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/desktop/elementary-default-settings/0001-Build-with-Meson.patch @@ -0,0 +1,309 @@ +From f728ac670d8f6bb7600a007d92034b711471fab6 Mon Sep 17 00:00:00 2001 +From: worldofpeace <worldofpeace@protonmail.ch> +Date: Sat, 13 Jul 2019 19:06:20 -0400 +Subject: [PATCH 1/2] Build with Meson + +Has the following meson build options: +* default-wallpaper +* plank-dockitems +* default-gsettings-overrides + +All default to true. + +We also split the default-settings gsettings override into another that +only sets plank's default dockitems. This is installed when plank-dockitems +is true. We need to have this because those settings are dependent on +those dockitems actually being installed and we have it optional. +--- + accountsservice/create-symlink.py | 24 ++++++ + accountsservice/meson.build | 25 ++++++ + .../appcenter.blacklist | 0 + .../default-testpage.pdf | Bin + settings.ini => gtk/settings.ini | 0 + .inputrc => inputrc/.inputrc | 0 + meson.build | 79 ++++++++++++++++++ + meson/post_install.py | 12 +++ + meson_options.txt | 14 ++++ + ...e => default-settings.gschema.override.in} | 3 +- + overrides/meson.build | 21 +++++ + overrides/plank-dockitems.gschema.override | 2 + + .../sessioninstaller.desktop | 0 + 13 files changed, 178 insertions(+), 2 deletions(-) + create mode 100644 accountsservice/create-symlink.py + create mode 100644 accountsservice/meson.build + rename appcenter.blacklist => appcenter/appcenter.blacklist (100%) + rename default-testpage.pdf => cups/default-testpage.pdf (100%) + rename settings.ini => gtk/settings.ini (100%) + rename .inputrc => inputrc/.inputrc (100%) + create mode 100644 meson.build + create mode 100755 meson/post_install.py + create mode 100644 meson_options.txt + rename overrides/{default-settings.gschema.override => default-settings.gschema.override.in} (92%) + create mode 100644 overrides/meson.build + create mode 100644 overrides/plank-dockitems.gschema.override + rename sessioninstaller.desktop => sessioninstaller/sessioninstaller.desktop (100%) + +diff --git a/accountsservice/create-symlink.py b/accountsservice/create-symlink.py +new file mode 100644 +index 0000000..e502134 +--- /dev/null ++++ b/accountsservice/create-symlink.py +@@ -0,0 +1,24 @@ ++#!/usr/bin/env python3 ++ ++import os ++import sys ++ ++if len(sys.argv) < 3: ++ print('Usage: create-symlink.py SOURCE DESTINATION') ++ sys.exit(1) ++ ++src = sys.argv[1] ++dest = sys.argv[2] ++ ++if 'MESON_INSTALL_DESTDIR_PREFIX' in os.environ: ++ src = os.path.join(os.environ['MESON_INSTALL_DESTDIR_PREFIX'], src) ++ dest = os.path.join(os.environ['MESON_INSTALL_DESTDIR_PREFIX'], dest) ++ ++if os.path.isabs(src): ++ src = os.path.relpath(src, os.path.dirname(os.path.realpath(dest))) ++ ++if not os.path.exists(dest): ++ print('Creating symbolic link: ' + dest + ' -> ' + src) ++ if not os.path.exists(os.path.dirname(dest)): ++ os.makedirs(os.path.dirname(dest)) ++ os.symlink(src, dest) +diff --git a/accountsservice/meson.build b/accountsservice/meson.build +new file mode 100644 +index 0000000..6d18459 +--- /dev/null ++++ b/accountsservice/meson.build +@@ -0,0 +1,25 @@ ++dbus_dep = dependency('dbus-1') ++dbus_interfaces_dir = dbus_dep.get_pkgconfig_variable('interfaces_dir', define_variable: ['datadir', datadir]) ++ ++install_data( ++ 'io.elementary.pantheon.AccountsService.xml', ++ install_dir: dbus_interfaces_dir ++) ++ ++ ++polkit_dep = dependency('polkit-gobject-1') ++polkit_actiondir = polkit_dep.get_pkgconfig_variable('actiondir', define_variable: ['prefix', prefix]) ++ ++install_data( ++ 'io.elementary.pantheon.AccountsService.policy', ++ install_dir: polkit_actiondir ++) ++ ++act_dep = dependency('accountsservice') ++act_interfacesdir = act_dep.get_pkgconfig_variable('interfacesdir', define_variable: ['datadir', datadir]) ++ ++meson.add_install_script( ++ 'create-symlink.py', ++ join_paths(dbus_interfaces_dir, 'io.elementary.pantheon.AccountsService.xml'), ++ join_paths(act_interfacesdir, 'io.elementary.pantheon.AccountsService.xml'), ++) +diff --git a/appcenter.blacklist b/appcenter/appcenter.blacklist +similarity index 100% +rename from appcenter.blacklist +rename to appcenter/appcenter.blacklist +diff --git a/default-testpage.pdf b/cups/default-testpage.pdf +similarity index 100% +rename from default-testpage.pdf +rename to cups/default-testpage.pdf +diff --git a/settings.ini b/gtk/settings.ini +similarity index 100% +rename from settings.ini +rename to gtk/settings.ini +diff --git a/.inputrc b/inputrc/.inputrc +similarity index 100% +rename from .inputrc +rename to inputrc/.inputrc +diff --git a/meson.build b/meson.build +new file mode 100644 +index 0000000..7740a34 +--- /dev/null ++++ b/meson.build +@@ -0,0 +1,79 @@ ++project( ++ 'elementary-default-settings', ++ version: '5.1.0', ++ default_options: 'sysconfdir=/etc', ++) ++ ++prefix = get_option('prefix') ++datadir = join_paths(prefix, get_option('datadir')) ++sysconfdir = get_option('sysconfdir') ++ ++meson.add_install_script('meson/post_install.py', datadir) ++ ++# Planks Default DockItems ++if get_option('plank-dockitems') ++ install_subdir( ++ 'plank', ++ install_dir: join_paths(sysconfdir, 'skel', '.config') ++ ) ++endif ++ ++# Setup system wide global environment for applications ++install_subdir( ++ 'profile.d', ++ install_dir: join_paths(sysconfdir, 'profile.d'), ++ strip_directory : true ++) ++ ++# elementary Plymouth Theme ++install_subdir( ++ 'plymouth/elementary', ++ install_dir: join_paths(datadir, 'plymouth', 'themes') ++) ++ ++install_data( ++ 'plymouth/ubuntu-text.plymouth', ++ install_dir: join_paths(datadir, 'plymouth', 'themes') ++) ++ ++# Sudo password feedback in terminals ++install_data( ++ 'sudoers.d/pwfeedback', ++ install_dir: join_paths(sysconfdir, 'sudoers.d') ++) ++ ++# CUPS Printing testpage ++install_data( ++ 'cups/default-testpage.pdf', ++ install_dir: join_paths(datadir, 'cups', 'data') ++) ++ ++# GTK3 Settings ++install_data( ++ 'gtk/settings.ini', ++ install_dir: join_paths(sysconfdir, 'gtk-3.0') ++) ++ ++# So SessionInstaller can have an Icon ++install_data( ++ 'sessioninstaller/sessioninstaller.desktop', ++ install_dir: join_paths(datadir, 'applications') ++) ++ ++# Default Appcenter Blacklist ++install_data( ++ 'appcenter/appcenter.blacklist', ++ install_dir: join_paths(sysconfdir, 'appcenter') ++) ++ ++# Configuration file of GNU readline ++install_data( ++ 'inputrc/.inputrc', ++ install_dir: join_paths(sysconfdir, 'skel') ++) ++ ++# Default gsettings overrides ++subdir('overrides') ++ ++# AccountsService extension for Greeter. ++subdir('accountsservice') +diff --git a/meson/post_install.py b/meson/post_install.py +new file mode 100755 +index 0000000..c6b5617 +--- /dev/null ++++ b/meson/post_install.py +@@ -0,0 +1,12 @@ ++#!/usr/bin/env python3 ++ ++import os ++import sys ++import subprocess ++ ++if 'DESTDIR' not in os.environ: ++ default_settings_datadir = sys.argv[1] ++ ++ print('Compiling GSettings schemas...') ++ subprocess.call(['glib-compile-schemas', ++ os.path.join(default_settings_datadir, 'glib-2.0', 'schemas')]) +diff --git a/meson_options.txt b/meson_options.txt +new file mode 100644 +index 0000000..8fd19ba +--- /dev/null ++++ b/meson_options.txt +@@ -0,0 +1,14 @@ ++option('default-wallpaper', ++ type: 'string', ++ value: '/usr/share/backgrounds/elementaryos-default', ++ description: 'Path to default wallpaper to use in Pantheon.') ++ ++option('plank-dockitems', ++ type: 'boolean', ++ value: true, ++ description: 'Install default Pantheon Plank dockitems') ++ ++option('default-gsettings-overrides', ++ type: 'boolean', ++ value: true, ++ description: 'Install default Pantheon GSettings Overrides') +diff --git a/overrides/default-settings.gschema.override b/overrides/default-settings.gschema.override.in +similarity index 92% +rename from overrides/default-settings.gschema.override +rename to overrides/default-settings.gschema.override.in +index 1aef29c..69d272b 100644 +--- a/overrides/default-settings.gschema.override ++++ b/overrides/default-settings.gschema.override.in +@@ -1,5 +1,4 @@ + [net.launchpad.plank.dock.settings] +-dock-items=['gala-multitaskingview.dockitem','org.gnome.Epiphany.dockitem','org.pantheon.mail.dockitem','io.elementary.calendar.dockitem','io.elementary.music.dockitem','io.elementary.videos.dockitem','io.elementary.photos.dockitem','io.elementary.switchboard.dockitem','io.elementary.appcenter.dockitem'] + hide-delay=250 + hide-mode='window-dodge' + show-dock-item=false +@@ -11,7 +10,7 @@ triggers=['<Control>space'] + [org.gnome.desktop.background] + draw-background=true + picture-options='zoom' +-picture-uri='file:///usr/share/backgrounds/elementaryos-default' ++picture-uri='file://@DEFAULT_WALLPAPER@' + primary-color='#000000' + show-desktop-icons=false + +diff --git a/overrides/meson.build b/overrides/meson.build +new file mode 100644 +index 0000000..ad80644 +--- /dev/null ++++ b/overrides/meson.build +@@ -0,0 +1,21 @@ ++if get_option('default-gsettings-overrides') ++ default_wallpaper = get_option('default-wallpaper') ++ ++ wallpaper_configuration = configuration_data() ++ wallpaper_configuration.set('DEFAULT_WALLPAPER', default_wallpaper) ++ ++ settings_override = configure_file( ++ input: 'default-settings.gschema.override.in', ++ output: '@BASENAME@', ++ configuration: wallpaper_configuration, ++ install_dir: join_paths(datadir, 'glib-2.0', 'schemas') ++ ) ++endif ++ ++# Install conditionally because it's dependent on our dockitems being installed ++if get_option('plank-dockitems') ++ install_data( ++ 'plank-dockitems.gschema.override', ++ install_dir: join_paths(datadir, 'glib-2.0', 'schemas') ++ ) ++endif +diff --git a/overrides/plank-dockitems.gschema.override b/overrides/plank-dockitems.gschema.override +new file mode 100644 +index 0000000..72b38d4 +--- /dev/null ++++ b/overrides/plank-dockitems.gschema.override +@@ -0,0 +1,2 @@ ++[net.launchpad.plank.dock.settings] ++dock-items=['gala-multitaskingview.dockitem','org.gnome.Epiphany.dockitem','org.pantheon.mail.dockitem','io.elementary.calendar.dockitem','io.elementary.music.dockitem','io.elementary.videos.dockitem','io.elementary.photos.dockitem','io.elementary.switchboard.dockitem','io.elementary.appcenter.dockitem'] +diff --git a/sessioninstaller.desktop b/sessioninstaller/sessioninstaller.desktop +similarity index 100% +rename from sessioninstaller.desktop +rename to sessioninstaller/sessioninstaller.desktop +-- +2.23.0 + diff --git a/nixpkgs/pkgs/desktops/pantheon/desktop/elementary-default-settings/default.nix b/nixpkgs/pkgs/desktops/pantheon/desktop/elementary-default-settings/default.nix new file mode 100644 index 000000000000..982502f51612 --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/desktop/elementary-default-settings/default.nix @@ -0,0 +1,108 @@ +{ lib, stdenv +, fetchFromGitHub +, nix-update-script +, pantheon +, meson +, ninja +, nixos-artwork +, glib +, pkg-config +, dbus +, polkit +, accountsservice +, python3 +, fetchpatch +}: + +stdenv.mkDerivation rec { + pname = "elementary-default-settings"; + version = "5.1.2"; + + repoName = "default-settings"; + + src = fetchFromGitHub { + owner = "elementary"; + repo = repoName; + rev = version; + sha256 = "sha256-HKrDs2frEWVPpwyGNP+NikrjyplSXJj1hFMLy6kK4wM="; + }; + + passthru = { + updateScript = nix-update-script { + attrPath = "pantheon.${pname}"; + }; + }; + + patches = [ + # Use new notifications + (fetchpatch { + url = "https://github.com/elementary/default-settings/commit/0658bb75b9f49f58b35746d05fb6c4b811f125e9.patch"; + sha256 = "0wa7iq0vfp2av5v23w94a5844ddj4g48d4wk3yrp745dyrimg739"; + }) + + # Fix media key syntax + (fetchpatch { + url = "https://github.com/elementary/default-settings/commit/332aefe1883be5dfe90920e165c39e331a53b2ea.patch"; + sha256 = "0ypcaga55pw58l30srq3ga1mhz2w6hkwanv41jjr6g3ia9jvq69n"; + }) + + # https://github.com/elementary/default-settings/pull/119 + ./0001-Build-with-Meson.patch + ]; + + nativeBuildInputs = [ + accountsservice + dbus + glib # polkit requires + meson + ninja + 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. + # This is because we don't have Pantheon's mail or Appcenter. + # See: https://github.com/NixOS/nixpkgs/issues/58161 + schema_dir=$out/share/glib-2.0/schemas + install -D ${./overrides/plank-dockitems.gschema.override} $schema_dir/plank-dockitems.gschema.override + + # Our launchers that use paths at /run/current-system/sw/bin + mkdir -p $out/etc/skel/.config/plank/dock1 + cp -avr ${./launchers} $out/etc/skel/.config/plank/dock1/launchers + + # Whitelist wingpanel indicators to be used in the greeter + # hhttps://github.com/elementary/greeter/blob/fc19752f147c62767cd2097c0c0c0fcce41e5873/debian/io.elementary.greeter.whitelist + # wingpanel 2.3.2 renamed this to .allowed to .forbidden + # https://github.com/elementary/wingpanel/pull/326 + install -D ${./io.elementary.greeter.allowed} $out/etc/wingpanel.d/io.elementary.greeter.allowed + ''; + + postFixup = '' + # https://github.com/elementary/default-settings/issues/55 + rm -rf $out/share/plymouth + rm -rf $out/share/cups + + rm -rf $out/share/applications + ''; + + meta = with lib; { + description = "Default settings and configuration files for elementary"; + homepage = "https://github.com/elementary/default-settings"; + license = licenses.gpl2Plus; + platforms = platforms.linux; + maintainers = pantheon.maintainers; + }; +} diff --git a/nixpkgs/pkgs/desktops/pantheon/desktop/elementary-default-settings/io.elementary.greeter.allowed b/nixpkgs/pkgs/desktops/pantheon/desktop/elementary-default-settings/io.elementary.greeter.allowed new file mode 100644 index 000000000000..0cff31f4f777 --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/desktop/elementary-default-settings/io.elementary.greeter.allowed @@ -0,0 +1,6 @@ +liba11y.so +libbluetooth.so +libkeyboard.so +libnetwork.so +libpower.so +libsession.so diff --git a/nixpkgs/pkgs/desktops/pantheon/desktop/elementary-default-settings/launchers/gala-multitaskingview.dockitem b/nixpkgs/pkgs/desktops/pantheon/desktop/elementary-default-settings/launchers/gala-multitaskingview.dockitem new file mode 100644 index 000000000000..b25bb8c85904 --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/desktop/elementary-default-settings/launchers/gala-multitaskingview.dockitem @@ -0,0 +1,2 @@ +[PlankDockItemPreferences] +Launcher=file:///run/current-system/sw/share/applications/gala-multitaskingview.desktop diff --git a/nixpkgs/pkgs/desktops/pantheon/desktop/elementary-default-settings/launchers/io.elementary.calendar.dockitem b/nixpkgs/pkgs/desktops/pantheon/desktop/elementary-default-settings/launchers/io.elementary.calendar.dockitem new file mode 100644 index 000000000000..3bd7d531840d --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/desktop/elementary-default-settings/launchers/io.elementary.calendar.dockitem @@ -0,0 +1,2 @@ +[PlankDockItemPreferences] +Launcher=file:///run/current-system/sw/share/applications/io.elementary.calendar.desktop diff --git a/nixpkgs/pkgs/desktops/pantheon/desktop/elementary-default-settings/launchers/io.elementary.music.dockitem b/nixpkgs/pkgs/desktops/pantheon/desktop/elementary-default-settings/launchers/io.elementary.music.dockitem new file mode 100644 index 000000000000..494edde183ca --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/desktop/elementary-default-settings/launchers/io.elementary.music.dockitem @@ -0,0 +1,2 @@ +[PlankDockItemPreferences] +Launcher=file:///run/current-system/sw/share/applications/io.elementary.music.desktop diff --git a/nixpkgs/pkgs/desktops/pantheon/desktop/elementary-default-settings/launchers/io.elementary.photos.dockitem b/nixpkgs/pkgs/desktops/pantheon/desktop/elementary-default-settings/launchers/io.elementary.photos.dockitem new file mode 100644 index 000000000000..89536754964d --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/desktop/elementary-default-settings/launchers/io.elementary.photos.dockitem @@ -0,0 +1,2 @@ +[PlankDockItemPreferences] +Launcher=file:///run/current-system/sw/share/applications/io.elementary.photos.desktop diff --git a/nixpkgs/pkgs/desktops/pantheon/desktop/elementary-default-settings/launchers/io.elementary.switchboard.dockitem b/nixpkgs/pkgs/desktops/pantheon/desktop/elementary-default-settings/launchers/io.elementary.switchboard.dockitem new file mode 100644 index 000000000000..312c35d9bf00 --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/desktop/elementary-default-settings/launchers/io.elementary.switchboard.dockitem @@ -0,0 +1,2 @@ +[PlankDockItemPreferences] +Launcher=file:///run/current-system/sw/share/applications/io.elementary.switchboard.desktop diff --git a/nixpkgs/pkgs/desktops/pantheon/desktop/elementary-default-settings/launchers/io.elementary.videos.dockitem b/nixpkgs/pkgs/desktops/pantheon/desktop/elementary-default-settings/launchers/io.elementary.videos.dockitem new file mode 100644 index 000000000000..3b0f721a5644 --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/desktop/elementary-default-settings/launchers/io.elementary.videos.dockitem @@ -0,0 +1,2 @@ +[PlankDockItemPreferences] +Launcher=file:///run/current-system/sw/share/applications/io.elementary.videos.desktop diff --git a/nixpkgs/pkgs/desktops/pantheon/desktop/elementary-default-settings/launchers/org.gnome.Epiphany.dockitem b/nixpkgs/pkgs/desktops/pantheon/desktop/elementary-default-settings/launchers/org.gnome.Epiphany.dockitem new file mode 100644 index 000000000000..b0218bac52d7 --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/desktop/elementary-default-settings/launchers/org.gnome.Epiphany.dockitem @@ -0,0 +1,2 @@ +[PlankDockItemPreferences] +Launcher=file:///run/current-system/sw/share/applications/org.gnome.Epiphany.desktop diff --git a/nixpkgs/pkgs/desktops/pantheon/desktop/elementary-default-settings/launchers/org.gnome.Geary.dockitem b/nixpkgs/pkgs/desktops/pantheon/desktop/elementary-default-settings/launchers/org.gnome.Geary.dockitem new file mode 100644 index 000000000000..8b04efe417ea --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/desktop/elementary-default-settings/launchers/org.gnome.Geary.dockitem @@ -0,0 +1,2 @@ +[PlankDockItemPreferences] +Launcher=file:///run/current-system/sw/share/applications/org.gnome.Geary.desktop diff --git a/nixpkgs/pkgs/desktops/pantheon/desktop/elementary-default-settings/overrides/plank-dockitems.gschema.override b/nixpkgs/pkgs/desktops/pantheon/desktop/elementary-default-settings/overrides/plank-dockitems.gschema.override new file mode 100644 index 000000000000..671448745c50 --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/desktop/elementary-default-settings/overrides/plank-dockitems.gschema.override @@ -0,0 +1,2 @@ +[net.launchpad.plank.dock.settings] +dock-items=['gala-multitaskingview.dockitem','org.gnome.Epiphany.dockitem','org.gnome.Geary.dockitem','io.elementary.calendar.dockitem','io.elementary.music.dockitem','io.elementary.videos.dockitem','io.elementary.photos.dockitem','io.elementary.switchboard.dockitem'] diff --git a/nixpkgs/pkgs/desktops/pantheon/desktop/elementary-greeter/default.nix b/nixpkgs/pkgs/desktops/pantheon/desktop/elementary-greeter/default.nix new file mode 100644 index 000000000000..e80e7d951cd4 --- /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 +, pantheon +, pkg-config +, meson +, ninja +, vala +, desktop-file-utils +, gtk3 +, granite +, libgee +, elementary-settings-daemon +, mutter +, elementary-icon-theme +, wingpanel-with-indicators +, elementary-gtk-theme +, nixos-artwork +, lightdm +, gdk-pixbuf +, clutter-gtk +, dbus +, accountsservice +, wrapGAppsHook +}: + +stdenv.mkDerivation rec { + pname = "elementary-greeter"; + version = "5.0.4"; + + repoName = "greeter"; + + src = fetchFromGitHub { + owner = "elementary"; + repo = repoName; + rev = version; + sha256 = "sha256-Enn+ekALWbk7FVJJuea/rNiwEZDIyb3kyMcZNNraOv8="; + }; + + 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"; + }]; + }; + + 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-gtk-theme + elementary-icon-theme + elementary-settings-daemon + gdk-pixbuf + granite + gtk3 + libgee + lightdm + mutter + wingpanel-with-indicators + ]; + + mesonFlags = [ + # A hook does this but after wrapGAppsHook so the files never get wrapped. + "--sbindir=${placeholder "out"}/bin" + # baked into the program for discovery of the greeter configuration + "--sysconfdir=/etc" + # We use the patched gnome-settings-daemon + "-Dubuntu-patched-gsd=true" + "-Dgsd-dir=${elementary-settings-daemon}/libexec/" # trailing slash is needed + ]; + + patches = [ + ./sysconfdir-install.patch + # Needed until https://github.com/elementary/greeter/issues/360 is fixed + (substituteAll { + src = ./hardcode-fallback-background.patch; + default_wallpaper = "${nixos-artwork.wallpapers.simple-dark-gray.gnomeFilePath}"; + }) + ]; + + preFixup = '' + gappsWrapperArgs+=( + # dbus-launch needed in path + --prefix PATH : "${dbus}/bin" + + # for `wingpanel -g` + --prefix PATH : "${wingpanel-with-indicators}/bin" + + # for the compositor + --prefix PATH : "$out/bin" + + # the theme is hardcoded + --prefix XDG_DATA_DIRS : "${elementary-gtk-theme}/share" + ) + ''; + + 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" + ''; + + meta = with lib; { + description = "LightDM Greeter for Pantheon"; + homepage = "https://github.com/elementary/greeter"; + license = licenses.gpl3Plus; + platforms = platforms.linux; + maintainers = pantheon.maintainers; + }; +} diff --git a/nixpkgs/pkgs/desktops/pantheon/desktop/elementary-greeter/hardcode-fallback-background.patch b/nixpkgs/pkgs/desktops/pantheon/desktop/elementary-greeter/hardcode-fallback-background.patch new file mode 100644 index 000000000000..7d2afe7b16c3 --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/desktop/elementary-greeter/hardcode-fallback-background.patch @@ -0,0 +1,22 @@ +diff --git a/src/Widgets/BackgroundImage.vala b/src/Widgets/BackgroundImage.vala +index ae9431c..f0f2a49 100644 +--- a/src/Widgets/BackgroundImage.vala ++++ b/src/Widgets/BackgroundImage.vala +@@ -9,7 +9,7 @@ public class Greeter.BackgroundImage : Gtk.EventBox { + + public BackgroundImage (string? path) { + if (path == null) { +- path = "/usr/share/backgrounds/elementaryos-default"; ++ path = "@default_wallpaper@"; + } + + try { +@@ -19,7 +19,7 @@ public class Greeter.BackgroundImage : Gtk.EventBox { + critical ("Fallback to default wallpaper"); + + try { +- full_pixbuf = new Gdk.Pixbuf.from_file ("/usr/share/backgrounds/elementaryos-default"); ++ full_pixbuf = new Gdk.Pixbuf.from_file ("@default_wallpaper@"); + } catch (GLib.Error e) { + critical (e.message); + } diff --git a/nixpkgs/pkgs/desktops/pantheon/desktop/elementary-greeter/sysconfdir-install.patch b/nixpkgs/pkgs/desktops/pantheon/desktop/elementary-greeter/sysconfdir-install.patch new file mode 100644 index 000000000000..9bacbcf4f98b --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/desktop/elementary-greeter/sysconfdir-install.patch @@ -0,0 +1,25 @@ +From 7bb0d507cbb0122f167127b9f6460bd53d8234de Mon Sep 17 00:00:00 2001 +From: worldofpeace <worldofpeace@users.noreply.github.com> +Date: Sat, 16 Mar 2019 16:07:24 -0400 +Subject: [PATCH] 'sysconfdir' will be etc not /etc for install + +--- + data/meson.build | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/data/meson.build b/data/meson.build +index fd54b75..b1120ae 100644 +--- a/data/meson.build ++++ b/data/meson.build +@@ -20,7 +20,7 @@ i18n.merge_file ( + + install_data( + meson.project_name() + '.conf', +- install_dir: join_paths(get_option('sysconfdir'), 'lightdm') ++ install_dir: join_paths(get_option('prefix'), 'etc', 'lightdm') + ) + + test ( +-- +2.19.2 + diff --git a/nixpkgs/pkgs/desktops/pantheon/desktop/elementary-gsettings-schemas/default.nix b/nixpkgs/pkgs/desktops/pantheon/desktop/elementary-gsettings-schemas/default.nix new file mode 100644 index 000000000000..bfe95e0be46d --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/desktop/elementary-gsettings-schemas/default.nix @@ -0,0 +1,52 @@ +{ lib +, runCommand +, mutter +, elementary-default-settings +, nixos-artwork +, glib +, gala +, epiphany +, elementary-settings-daemon +, gtk3 +, elementary-dock +, gsettings-desktop-schemas +, extraGSettingsOverrides ? "" +, extraGSettingsOverridePackages ? [] +}: + +let + + gsettingsOverridePackages = [ + elementary-dock + elementary-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..70da883392a8 --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/desktop/elementary-onboarding/default.nix @@ -0,0 +1,84 @@ +{ lib, stdenv +, fetchFromGitHub +, nix-update-script +, pantheon +, fetchpatch +, pkg-config +, meson +, ninja +, vala +, python3 +, gtk3 +, glib +, granite +, libgee +, elementary-icon-theme +, elementary-gtk-theme +, gettext +, libhandy +, wrapGAppsHook +}: + +stdenv.mkDerivation rec { + pname = "elementary-onboarding"; + version = "1.2.1"; + + repoName = "onboarding"; + + src = fetchFromGitHub { + owner = "elementary"; + repo = repoName; + rev = version; + sha256 = "sha256-tLTwXA2miHqYqCUbIiBjb2nQB+uN/WzuE4F9m3fVCbM="; + }; + + patches = [ + # Port to Libhandy-1 + (fetchpatch { + url = "https://github.com/elementary/onboarding/commit/8af6b7d9216f8cbf725f708b36ef4d4f6c400c78.patch"; + sha256 = "cnSCSSFEQlNd9Ncw5VCJ32stZ8D4vhl3f+derAk/Cas="; + excludes = [ + ".github/workflows/main.yml" + ]; + }) + ]; + + passthru = { + updateScript = nix-update-script { + attrPath = "pantheon.${pname}"; + }; + }; + + nativeBuildInputs = [ + gettext + meson + ninja + pkg-config + python3 + vala + wrapGAppsHook + ]; + + buildInputs = [ + elementary-gtk-theme + elementary-icon-theme + glib + granite + gtk3 + libgee + libhandy + ]; + + postPatch = '' + chmod +x meson/post_install.py + patchShebangs meson/post_install.py + ''; + + meta = with lib; { + description = "Onboarding app for new users designed for elementary OS"; + homepage = "https://github.com/elementary/onboarding"; + license = licenses.gpl3Plus; + platforms = platforms.linux; + maintainers = pantheon.maintainers; + }; +} diff --git a/nixpkgs/pkgs/desktops/pantheon/desktop/elementary-print-shim/default.nix b/nixpkgs/pkgs/desktops/pantheon/desktop/elementary-print-shim/default.nix new file mode 100644 index 000000000000..7b821f883ce9 --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/desktop/elementary-print-shim/default.nix @@ -0,0 +1,47 @@ +{ lib, stdenv +, fetchFromGitHub +, nix-update-script +, pantheon +, meson +, ninja +, pkg-config +, vala +, gtk3 +}: + +stdenv.mkDerivation rec { + pname = "elementary-print-shim"; + version = "0.1.3"; + + repoName = "print"; + + src = fetchFromGitHub { + owner = "elementary"; + repo = repoName; + rev = version; + sha256 = "sha256-l2IUu9Mj22lZ5yajPcsGrJcJDakNu4srCV0Qea5ybPA="; + }; + + passthru = { + updateScript = nix-update-script { + attrPath = "pantheon.${pname}"; + }; + }; + + nativeBuildInputs = [ + meson + ninja + pkg-config + vala + ]; + + buildInputs = [ gtk3 ]; + + meta = with lib; { + description = "Simple shim for printing support via Contractor"; + homepage = "https://github.com/elementary/print"; + license = licenses.gpl3Plus; + platforms = platforms.linux; + maintainers = pantheon.maintainers; + }; +} diff --git a/nixpkgs/pkgs/desktops/pantheon/desktop/elementary-session-settings/default.nix b/nixpkgs/pkgs/desktops/pantheon/desktop/elementary-session-settings/default.nix new file mode 100644 index 000000000000..38fcb8d40b41 --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/desktop/elementary-session-settings/default.nix @@ -0,0 +1,161 @@ +{ lib, stdenv +, fetchFromGitHub +, nix-update-script +, desktop-file-utils +, pkg-config +, writeScript +, pantheon +, gnome-keyring +, gnome-session +, wingpanel +, orca +, onboard +, elementary-default-settings +, elementary-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/wingpanel + Icon= + DesktopNames=Pantheon + Type=Application + ''; + +in + +stdenv.mkDerivation rec { + pname = "elementary-session-settings-unstable"; + version = "2020-07-06"; + + repoName = "session-settings"; + + src = fetchFromGitHub { + owner = "elementary"; + repo = repoName; + rev = "fa15cbd83fba0ba30e9a302db880350bff5ace52"; + hash = "sha256-26H791c7OAjFYtjVChIatICSocMt0uTej1TKBOvw+6w="; + }; + + nativeBuildInputs = [ + desktop-file-utils + meson + ninja + pkg-config + ]; + + buildInputs = [ + pantheon.elementary-settings-daemon + gnome-keyring + 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: + # * pantheon-mail -> geary + # * 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.lgpl3; + platforms = platforms.linux; + maintainers = pantheon.maintainers; + }; +} diff --git a/nixpkgs/pkgs/desktops/pantheon/desktop/elementary-session-settings/pantheon-mimeapps.list b/nixpkgs/pkgs/desktops/pantheon/desktop/elementary-session-settings/pantheon-mimeapps.list new file mode 100644 index 000000000000..3b5e3b0e77a5 --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/desktop/elementary-session-settings/pantheon-mimeapps.list @@ -0,0 +1,168 @@ +[Default Applications] +application/ogg=io.elementary.music.desktop +application/oxps=org.gnome.Evince.desktop +application/pdf=org.gnome.Evince.desktop +application/postscript=org.gnome.Evince.desktop +application/vnd.ms-xpsdocument=org.gnome.Evince.desktop +application/vnd.rn-realmedia=io.elementary.videos.desktop +application/x-ar=org.gnome.FileRoller.desktop +application/x-arj=org.gnome.FileRoller.desktop +application/x-bzdvi=org.gnome.Evince.desktop +application/x-bzip-compressed-tar=org.gnome.FileRoller.desktop +application/x-bzip=org.gnome.FileRoller.desktop +application/x-bzpdf=org.gnome.Evince.desktop +application/x-bzpostscript=org.gnome.Evince.desktop +application/x-cbr=org.gnome.Evince.desktop +application/x-cbt=org.gnome.Evince.desktop +application/x-cbz=org.gnome.Evince.desktop +application/x-compress=org.gnome.FileRoller.desktop +application/x-compressed-tar=org.gnome.FileRoller.desktop +application/x-dvi=org.gnome.Evince.desktop +application/x-ear=org.gnome.FileRoller.desktop +application/x-extension-m4a=io.elementary.videos.desktop +application/x-extension-mp4=io.elementary.videos.desktop +application/x-flac=io.elementary.music.desktop +application/x-gtar=org.gnome.FileRoller.desktop +application/x-gzdvi=org.gnome.Evince.desktop +application/x-gzip=org.gnome.FileRoller.desktop +application/x-gzpdf=org.gnome.Evince.desktop +application/x-gzpostscript=org.gnome.Evince.desktop +application/x-lha=org.gnome.FileRoller.desktop +application/x-lhz=org.gnome.FileRoller.desktop +application/x-lzop=org.gnome.FileRoller.desktop +application/x-matroska=io.elementary.videos.desktop +application/x-ogg=io.elementary.music.desktop +application/x-perl=io.elementary.code.desktop +application/x-rar-compressed=org.gnome.FileRoller.desktop +application/x-rar=org.gnome.FileRoller.desktop +application/x-rpm=org.gnome.FileRoller.desktop +application/x-tar=org.gnome.FileRoller.desktop +application/x-war=org.gnome.FileRoller.desktop +application/x-xz-compressed-tar=org.gnome.FileRoller.desktop +application/x-xz=org.gnome.FileRoller.desktop +application/x-xzpdf=org.gnome.Evince.desktop +application/x-zip-compressed=org.gnome.FileRoller.desktop +application/x-zip=org.gnome.FileRoller.desktop +application/x-zoo=org.gnome.FileRoller.desktop +application/xhtml+xml=org.gnome.Epiphany.desktop +application/zip=org.gnome.FileRoller.desktop +audio/3gpp=io.elementary.music.desktop +audio/ac3=io.elementary.music.desktop +audio/AMR-WB=io.elementary.music.desktop +audio/AMR=io.elementary.music.desktop +audio/basic=io.elementary.music.desktop +audio/flac=io.elementary.music.desktop +audio/midi=io.elementary.music.desktop +audio/mp4=io.elementary.music.desktop +audio/mpeg=io.elementary.music.desktop +audio/mpegurl=io.elementary.music.desktop +audio/ogg=io.elementary.music.desktop +audio/prs.sid=io.elementary.music.desktop +audio/vnd.rn-realaudio=io.elementary.music.desktop +audio/x-ape=io.elementary.music.desktop +audio/x-flac=io.elementary.music.desktop +audio/x-gsm=io.elementary.music.desktop +audio/x-it=io.elementary.music.desktop +audio/x-m4a=io.elementary.music.desktop +audio/x-matroska=io.elementary.music.desktop +audio/x-mod=io.elementary.music.desktop +audio/x-mp3=io.elementary.music.desktop +audio/x-mpeg=io.elementary.music.desktop +audio/x-mpegurl=io.elementary.music.desktop +audio/x-ms-asf=io.elementary.music.desktop +audio/x-ms-asx=io.elementary.music.desktop +audio/x-ms-wax=io.elementary.music.desktop +audio/x-ms-wma=io.elementary.music.desktop +audio/x-musepack=io.elementary.music.desktop +audio/x-pn-aiff=io.elementary.music.desktop +audio/x-pn-au=io.elementary.music.desktop +audio/x-pn-realaudio-plugin=io.elementary.music.desktop +audio/x-pn-realaudio=io.elementary.music.desktop +audio/x-pn-wav=io.elementary.music.desktop +audio/x-pn-windows-acm=io.elementary.music.desktop +audio/x-real-audio=io.elementary.music.desktop +audio/x-realaudio=io.elementary.music.desktop +audio/x-sbc=io.elementary.music.desktop +audio/x-scpls=io.elementary.music.desktop +audio/x-speex=io.elementary.music.desktop +audio/x-tta=io.elementary.music.desktop +audio/x-vorbis+ogg=io.elementary.music.desktop +audio/x-vorbis=io.elementary.music.desktop +audio/x-wav=io.elementary.music.desktop +audio/x-wavpack=io.elementary.music.desktop +audio/x-xm=io.elementary.music.desktop +image/bmp=io.elementary.photos-viewer.desktop +image/gif=io.elementary.photos-viewer.desktop +image/jpeg=io.elementary.photos-viewer.desktop +image/jpg=io.elementary.photos-viewer.desktop +image/pjpeg=io.elementary.photos-viewer.desktop +image/png=io.elementary.photos-viewer.desktop +image/tiff=io.elementary.photos-viewer.desktop +image/vnd.djvu=org.gnome.Evince.desktop +image/vnd.rn-realpix=io.elementary.videos.desktop +image/webp=io.elementary.photos-viewer.desktop +image/x-bmp=io.elementary.photos-viewer.desktop +image/x-bzeps=org.gnome.Evince.desktop +image/x-eps=org.gnome.Evince.desktop +image/x-gzeps=org.gnome.Evince.desktop +image/x-png=io.elementary.photos-viewer.desktop +inode/directory=io.elementary.files.desktop +misc/ultravox=io.elementary.videos.desktop +multipart/x-zip=org.gnome.FileRoller.desktop +text/calendar=io.elementary.calendar.desktop +text/html=org.gnome.Epiphany.desktop +text/mathml=io.elementary.code.desktop +text/plain=io.elementary.code.desktop +text/x-chdr=io.elementary.code.desktop +text/x-csrc=io.elementary.code.desktop +text/x-dtd=io.elementary.code.desktop +text/x-java=io.elementary.code.desktop +text/x-python=io.elementary.code.desktop +text/x-sql=io.elementary.code.desktop +text/xml=io.elementary.code.desktop +video/3gpp=io.elementary.videos.desktop +video/dv=io.elementary.videos.desktop +video/fli=io.elementary.videos.desktop +video/flv=io.elementary.videos.desktop +video/mp2t=io.elementary.videos.desktop +video/mp4=io.elementary.videos.desktop +video/mp4v-es=io.elementary.videos.desktop +video/mpeg=io.elementary.videos.desktop +video/msvideo=io.elementary.videos.desktop +video/ogg=io.elementary.videos.desktop +video/quicktime=io.elementary.videos.desktop +video/vivo=io.elementary.videos.desktop +video/vnd.divx=io.elementary.videos.desktop +video/vnd.rn-realvideo=io.elementary.videos.desktop +video/vnd.vivo=io.elementary.videos.desktop +video/webm=io.elementary.videos.desktop +video/x-anim=io.elementary.videos.desktop +video/x-avi=io.elementary.videos.desktop +video/x-flc=io.elementary.videos.desktop +video/x-fli=io.elementary.videos.desktop +video/x-flic=io.elementary.videos.desktop +video/x-flv=io.elementary.videos.desktop +video/x-m4v=io.elementary.videos.desktop +video/x-matroska=io.elementary.videos.desktop +video/x-mpeg=io.elementary.videos.desktop +video/x-ms-asf=io.elementary.videos.desktop +video/x-ms-asx=io.elementary.videos.desktop +video/x-ms-wm=io.elementary.videos.desktop +video/x-ms-wmv=io.elementary.videos.desktop +video/x-ms-wmx=io.elementary.videos.desktop +video/x-ms-wvx=io.elementary.videos.desktop +video/x-msvideo=io.elementary.videos.desktop +video/x-nsv=io.elementary.videos.desktop +video/x-ogm+ogg=io.elementary.videos.desktop +video/x-theora+ogg=io.elementary.videos.desktop +video/x-totem-stream=io.elementary.videos.desktop +x-content/image-dcf=io.elementary.photos.desktop +x-content/image-picturecd=io.elementary.photos.desktop +x-content/video-dvd=io.elementary.videos.desktop +x-content/video-svcd=io.elementary.videos.desktop +x-content/video-vcd=io.elementary.videos.desktop +x-scheme-handler/http=org.gnome.Epiphany.desktop +x-scheme-handler/https=org.gnome.Epiphany.desktop +x-scheme-handler/mailto=org.gnome.Evolution.desktop +x-scheme-handler/trash=io.elementary.files.desktop + diff --git a/nixpkgs/pkgs/desktops/pantheon/desktop/elementary-shortcut-overlay/default.nix b/nixpkgs/pkgs/desktops/pantheon/desktop/elementary-shortcut-overlay/default.nix new file mode 100644 index 000000000000..314267d86122 --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/desktop/elementary-shortcut-overlay/default.nix @@ -0,0 +1,63 @@ +{ lib, stdenv +, fetchFromGitHub +, nix-update-script +, pantheon +, pkg-config +, meson +, ninja +, vala +, libxml2 +, desktop-file-utils +, gtk3 +, glib +, granite +, libgee +, elementary-icon-theme +, wrapGAppsHook +}: + +stdenv.mkDerivation rec { + pname = "elementary-shortcut-overlay"; + version = "1.1.2"; + + repoName = "shortcut-overlay"; + + src = fetchFromGitHub { + owner = "elementary"; + repo = repoName; + rev = version; + sha256 = "sha256-TFS29vwDkTtoFcIVAbKskyLemqW9fxE7fQkM61DpDm0="; + }; + + passthru = { + updateScript = nix-update-script { + attrPath = "pantheon.${pname}"; + }; + }; + + nativeBuildInputs = [ + desktop-file-utils + libxml2 + meson + ninja + pkg-config + vala + wrapGAppsHook + ]; + + buildInputs = [ + elementary-icon-theme + glib + granite + gtk3 + libgee + ]; + + 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 = pantheon.maintainers; + }; +} diff --git a/nixpkgs/pkgs/desktops/pantheon/desktop/extra-elementary-contracts/default.nix b/nixpkgs/pkgs/desktops/pantheon/desktop/extra-elementary-contracts/default.nix new file mode 100644 index 000000000000..2db483cb5c7e --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/desktop/extra-elementary-contracts/default.nix @@ -0,0 +1,43 @@ +{ lib, stdenv +, substituteAll +, fetchFromGitHub +, file-roller +, gnome-bluetooth +}: + +stdenv.mkDerivation rec { + pname = "extra-elementary-contracts"; + version = "2018-08-21"; + + src = fetchFromGitHub { + owner = "worldofpeace"; + repo = pname; + rev = "a05dfb00695854163805b666185e3e9f31b6eb83"; + sha256 = "0fkaf2w4xg0n9faj74rgzy7gvd3yz112l058b157a3pr39vpci7g"; + }; + + patches = [ + (substituteAll { + src = ./exec-path.patch; + file_roller = file-roller; + gnome_bluetooth = gnome-bluetooth; + }) + ]; + + dontBuild = true; + dontConfigure = true; + + installPhase = '' + mkdir -p $out/share/contractor + + cp *.contract $out/share/contractor/ + ''; + + meta = with lib; { + description = "Extra contractor files for elementary"; + homepage = "https://github.com/worldofpeace/extra-elementary-contracts"; + license = licenses.gpl2; + maintainers = with maintainers; [ worldofpeace ]; + platforms = platforms.linux; + }; +} diff --git a/nixpkgs/pkgs/desktops/pantheon/desktop/extra-elementary-contracts/exec-path.patch b/nixpkgs/pkgs/desktops/pantheon/desktop/extra-elementary-contracts/exec-path.patch new file mode 100644 index 000000000000..3b97e306119d --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/desktop/extra-elementary-contracts/exec-path.patch @@ -0,0 +1,34 @@ +diff --git a/file-roller-compress.contract b/file-roller-compress.contract +index 8de5396..de7e939 100644 +--- a/file-roller-compress.contract ++++ b/file-roller-compress.contract +@@ -3,6 +3,6 @@ Name=Compress + Icon=add-files-to-archive + Description=Create a compressed archive with the selected objects + MimeType=!archive;inode/blockdevice;inode/chardevice;inode/fifo;inode/socket; +-Exec=file-roller --add %U ++Exec=@file_roller@/bin/file-roller --add %U + Gettext-Domain=file-roller + +diff --git a/file-roller-extract-here.contract b/file-roller-extract-here.contract +index 184a6f2..345f4e7 100644 +--- a/file-roller-extract-here.contract ++++ b/file-roller-extract-here.contract +@@ -3,5 +3,5 @@ Name=Extract Here + Icon=extract-archive + Description=Extract the contents of the archives in the archive folder and quit the program + MimeType=application/x-7z-compressed;application/x-7z-compressed-tar;application/x-ace;application/x-alz;application/x-ar;application/x-arj;application/x-bzip;application/x-bzip-compressed-tar;application/x-bzip1;application/x-bzip1-compressed-tar;application/x-cabinet;application/x-cbr;application/x-cbz;application/x-cd-image;application/x-compress;application/x-compressed-tar;application/x-cpio;application/x-deb;application/x-ear;application/x-ms-dos-executable;application/x-gtar;application/x-gzip;application/x-gzpostscript;application/x-java-archive;application/x-lha;application/x-lhz;application/x-lrzip;application/x-lrzip-compressed-tar;application/x-lzip;application/x-lzip-compressed-tar;application/x-lzma;application/x-lzma-compressed-tar;application/x-lzop;application/x-lzop-compressed-tar;application/x-ms-wim;application/x-rar;application/x-rar-compressed;application/x-rpm;application/x-rzip;application/x-tar;application/x-tarz;application/x-stuffit;application/x-war;application/x-xz;application/x-xz-compressed-tar;application/x-zip;application/x-zip-compressed;application/x-zoo;application/zip; +-Exec=file-roller --extract-here %U ++Exec=@file_roller@/bin/file-roller --extract-here %U + Gettext-Domain=file-roller +diff --git a/gnome-bluetooth.contract b/gnome-bluetooth.contract +index 745dbbe..8cc0102 100644 +--- a/gnome-bluetooth.contract ++++ b/gnome-bluetooth.contract +@@ -3,5 +3,5 @@ Name=Send files via Bluetooth + Icon=bluetooth + Description=Send files to device... + MimeType=!inode; +-Exec=bluetooth-sendto %F ++Exec=@gnome_bluetooth@/bin/bluetooth-sendto %F + Gettext-Domain=gnome-bluetooth2 diff --git a/nixpkgs/pkgs/desktops/pantheon/desktop/gala/default.nix b/nixpkgs/pkgs/desktops/pantheon/desktop/gala/default.nix new file mode 100644 index 000000000000..c4467c53a2bf --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/desktop/gala/default.nix @@ -0,0 +1,97 @@ +{ lib, stdenv +, fetchFromGitHub +, nix-update-script +, fetchpatch +, pantheon +, pkg-config +, meson +, python3 +, ninja +, vala +, desktop-file-utils +, gettext +, libxml2 +, gtk3 +, granite +, libgee +, bamf +, libcanberra +, libcanberra-gtk3 +, gnome-desktop +, mutter +, clutter +, elementary-dock +, elementary-icon-theme +, elementary-settings-daemon +, wrapGAppsHook +}: + +stdenv.mkDerivation rec { + pname = "gala"; + version = "3.3.2"; + + src = fetchFromGitHub { + owner = "elementary"; + repo = pname; + rev = version; + sha256 = "sha256-BOarHUEgWqQM6jmVMauJi0JnsM+jE45MnPNnAqz1qOE="; + }; + + passthru = { + updateScript = nix-update-script { + attrPath = "pantheon.${pname}"; + }; + }; + + nativeBuildInputs = [ + desktop-file-utils + gettext + libxml2 + meson + ninja + pkg-config + python3 + vala + wrapGAppsHook + ]; + + buildInputs = [ + bamf + clutter + elementary-dock + elementary-icon-theme + elementary-settings-daemon + gnome-desktop + granite + gtk3 + libcanberra + libcanberra-gtk3 + libgee + mutter + ]; + + patches = [ + # https://github.com/elementary/gala/pull/869 + # build failure in vala 0.48.7 + # https://github.com/elementary/gala/pull/869#issuecomment-657147695 + (fetchpatch { + url = "https://github.com/elementary/gala/commit/85d290c75eaa147b704ad34e6c67498071707ee8.patch"; + sha256 = "19jkvmxidf453qfrxkvi35igxzfz2cm8srwkabvyn9wyd1yhiw0l"; + }) + ./plugins-dir.patch + ./use-new-notifications-default.patch + ]; + + postPatch = '' + chmod +x build-aux/meson/post_install.py + patchShebangs build-aux/meson/post_install.py + ''; + + meta = with lib; { + description = "A window & compositing manager based on mutter and designed by elementary for use with Pantheon"; + homepage = "https://github.com/elementary/gala"; + license = licenses.gpl3Plus; + platforms = platforms.linux; + maintainers = pantheon.maintainers; + }; +} diff --git a/nixpkgs/pkgs/desktops/pantheon/desktop/gala/plugins-dir.patch b/nixpkgs/pkgs/desktops/pantheon/desktop/gala/plugins-dir.patch new file mode 100644 index 000000000000..f08652e9f630 --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/desktop/gala/plugins-dir.patch @@ -0,0 +1,20 @@ +diff --git a/meson.build b/meson.build +index 78113d6..926596c 100644 +--- a/meson.build ++++ b/meson.build +@@ -24,13 +24,14 @@ vapi_dir = meson.current_source_dir() / 'vapi' + + data_dir = join_paths(get_option('prefix'), get_option('datadir')) + plugins_dir = join_paths(get_option('prefix'), get_option('libdir'), meson.project_name(), 'plugins') ++plugins_dir_for_build = join_paths('/run/current-system/sw/lib/', meson.project_name(), 'plugins') + pkgdata_dir = join_paths(get_option('prefix'), get_option('datadir'), meson.project_name()) + pkglib_dir = join_paths(get_option('prefix'), get_option('libdir'), meson.project_name()) + + conf = configuration_data() + conf.set_quoted('DATADIR', data_dir) + conf.set_quoted('PKGDATADIR', pkgdata_dir) +-conf.set_quoted('PLUGINDIR', plugins_dir) ++conf.set_quoted('PLUGINDIR', plugins_dir_for_build) + conf.set_quoted('RESOURCEPATH', '/org/pantheon/desktop/gala') + conf.set_quoted('VERSION', gala_version) + conf.set_quoted('SCHEMA', 'org.pantheon.desktop.gala') diff --git a/nixpkgs/pkgs/desktops/pantheon/desktop/gala/use-new-notifications-default.patch b/nixpkgs/pkgs/desktops/pantheon/desktop/gala/use-new-notifications-default.patch new file mode 100644 index 000000000000..dc256bcff3aa --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/desktop/gala/use-new-notifications-default.patch @@ -0,0 +1,13 @@ +diff --git a/data/gala.gschema.xml b/data/gala.gschema.xml +index 8032583..7f4f03c 100644 +--- a/data/gala.gschema.xml ++++ b/data/gala.gschema.xml +@@ -58,7 +58,7 @@ + <description>If enabled, dropping windows on vertical screen edges maximizes them vertically and resizes them horizontally to cover half of the available area. Dropping windows on the top screen edge maximizes them completely.</description> + </key> + <key type="b" name="use-new-notifications"> +- <default>false</default> ++ <default>true</default> + <summary>If new notifications should be used</summary> + <description>If new notifications UI should be used, requires io.elemenetary.notifications to be present and running</description> + </key> diff --git a/nixpkgs/pkgs/desktops/pantheon/desktop/wingpanel-indicators/applications-menu/default.nix b/nixpkgs/pkgs/desktops/pantheon/desktop/wingpanel-indicators/applications-menu/default.nix new file mode 100644 index 000000000000..230ae29ffa05 --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/desktop/wingpanel-indicators/applications-menu/default.nix @@ -0,0 +1,110 @@ +{ lib, stdenv +, fetchFromGitHub +, fetchpatch +, nix-update-script +, pantheon +, substituteAll +, meson +, ninja +, python3 +, pkg-config +, vala +, granite +, libgee +, gettext +, gtk3 +, appstream +, gnome-menus +, json-glib +, elementary-dock +, bamf +, switchboard-with-plugs +, libunity +, libsoup +, wingpanel +, zeitgeist +, bc +, libhandy +}: + +stdenv.mkDerivation rec { + pname = "wingpanel-applications-menu"; + version = "2.7.1"; + + repoName = "applications-menu"; + + src = fetchFromGitHub { + owner = "elementary"; + repo = repoName; + rev = version; + sha256 = "sha256-NeazBzkbdQTC6OzPxxyED4OstMkNkUGtCIaZD67fTnM="; + }; + + passthru = { + updateScript = nix-update-script { + attrPath = "pantheon.${pname}"; + }; + }; + + nativeBuildInputs = [ + appstream + gettext + meson + ninja + pkg-config + python3 + vala + ]; + + buildInputs = [ + bamf + elementary-dock + gnome-menus + granite + gtk3 + json-glib + libgee + libhandy + libsoup + libunity + 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" + ]; + + patches = [ + # Port to Libhandy-1 + (fetchpatch { + url = "https://github.com/elementary/applications-menu/commit/8eb2430e8513e9d37f875c5c9b8b15a968c27127.patch"; + sha256 = "8Uw9mUw7U5nrAwUDGVpAwoRqb9ah503wQCr9kPbBJIo="; + }) + + (substituteAll { + src = ./fix-paths.patch; + bc = "${bc}/bin/bc"; + }) + ]; + + postPatch = '' + chmod +x meson/post_install.py + patchShebangs meson/post_install.py + ''; + + 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 = pantheon.maintainers; + }; +} diff --git a/nixpkgs/pkgs/desktops/pantheon/desktop/wingpanel-indicators/applications-menu/fix-paths.patch b/nixpkgs/pkgs/desktops/pantheon/desktop/wingpanel-indicators/applications-menu/fix-paths.patch new file mode 100644 index 000000000000..25e3891a205a --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/desktop/wingpanel-indicators/applications-menu/fix-paths.patch @@ -0,0 +1,24 @@ +diff --git a/src/synapse-plugins/calculator-plugin.vala b/src/synapse-plugins/calculator-plugin.vala +index 18ca3af..f5d1076 100644 +--- a/src/synapse-plugins/calculator-plugin.vala ++++ b/src/synapse-plugins/calculator-plugin.vala +@@ -44,9 +44,7 @@ namespace Synapse { + _("Calculator"), + _("Calculate basic expressions."), + "accessories-calculator", +- register_plugin, +- Environment.find_program_in_path ("bc") != null, +- _("bc is not installed") ++ register_plugin + ); + } + +@@ -87,7 +85,7 @@ namespace Synapse { + if (matched) { + Pid pid; + int read_fd, write_fd; +- string[] argv = {"bc", "-l"}; ++ string[] argv = {"@bc@", "-l"}; + string? solution = null; + + try { diff --git a/nixpkgs/pkgs/desktops/pantheon/desktop/wingpanel-indicators/bluetooth/default.nix b/nixpkgs/pkgs/desktops/pantheon/desktop/wingpanel-indicators/bluetooth/default.nix new file mode 100644 index 000000000000..03500abd6237 --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/desktop/wingpanel-indicators/bluetooth/default.nix @@ -0,0 +1,67 @@ +{ lib, stdenv +, fetchFromGitHub +, nix-update-script +, pantheon +, pkg-config +, meson +, python3 +, ninja +, vala +, gtk3 +, glib +, granite +, libnotify +, wingpanel +, libgee +, libxml2 +}: + +stdenv.mkDerivation rec { + pname = "wingpanel-indicator-bluetooth"; + version = "unstable-2020-10-01"; + + src = fetchFromGitHub { + owner = "elementary"; + repo = pname; + rev = "2b59d646ea0d66ae45dafc851374f24dcd98c064"; + sha256 = "sha256-selp70P+7RhbdHF6iiNmcNbMf/c+B9zZ6nlxwRSZGn4="; + }; + + passthru = { + updateScript = nix-update-script { + attrPath = "pantheon.${pname}"; + }; + }; + + 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 + ''; + + meta = with lib; { + description = "Bluetooth Indicator for Wingpanel"; + homepage = "https://github.com/elementary/wingpanel-indicator-bluetooth"; + license = licenses.lgpl21Plus; + platforms = platforms.linux; + maintainers = pantheon.maintainers; + }; +} diff --git a/nixpkgs/pkgs/desktops/pantheon/desktop/wingpanel-indicators/datetime/default.nix b/nixpkgs/pkgs/desktops/pantheon/desktop/wingpanel-indicators/datetime/default.nix new file mode 100644 index 000000000000..03954fac6448 --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/desktop/wingpanel-indicators/datetime/default.nix @@ -0,0 +1,71 @@ +{ lib, stdenv +, fetchFromGitHub +, nix-update-script +, pantheon +, pkg-config +, meson +, python3 +, ninja +, vala +, gtk3 +, granite +, wingpanel +, evolution-data-server +, libical +, libgee +, libxml2 +, libsoup +, libgdata +, elementary-calendar +}: + +stdenv.mkDerivation rec { + pname = "wingpanel-indicator-datetime"; + version = "2.2.5"; + + src = fetchFromGitHub { + owner = "elementary"; + repo = pname; + rev = version; + sha256 = "sha256-rZzZIh4bwZfwQFDbfPDKQtfLMJQ2IdykH1yiV6ckqnw="; + }; + + passthru = { + updateScript = nix-update-script { + attrPath = "pantheon.${pname}"; + }; + }; + + nativeBuildInputs = [ + libxml2 + meson + ninja + pkg-config + python3 + vala + ]; + + buildInputs = [ + evolution-data-server + granite + gtk3 + libgee + libical + libsoup + wingpanel + libgdata # required by some dependency transitively + ]; + + postPatch = '' + chmod +x meson/post_install.py + patchShebangs meson/post_install.py + ''; + + meta = with lib; { + description = "Date & Time Indicator for Wingpanel"; + homepage = "https://github.com/elementary/wingpanel-indicator-datetime"; + license = licenses.gpl2Plus; + platforms = platforms.linux; + maintainers = pantheon.maintainers; + }; +} diff --git a/nixpkgs/pkgs/desktops/pantheon/desktop/wingpanel-indicators/keyboard/default.nix b/nixpkgs/pkgs/desktops/pantheon/desktop/wingpanel-indicators/keyboard/default.nix new file mode 100644 index 000000000000..4e2f9455073c --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/desktop/wingpanel-indicators/keyboard/default.nix @@ -0,0 +1,66 @@ +{ lib, stdenv +, fetchFromGitHub +, nix-update-script +, pantheon +, pkg-config +, meson +, ninja +, substituteAll +, vala +, gtk3 +, granite +, libxml2 +, wingpanel +, libgee +, xorg +, libgnomekbd +}: + +stdenv.mkDerivation rec { + pname = "wingpanel-indicator-keyboard"; + version = "2.2.1"; + + src = fetchFromGitHub { + owner = "elementary"; + repo = pname; + rev = version; + sha256 = "sha256-/sTx0qT7gNj1waQg9OKqHY6MtL+p0NljiIAXKA3DYmA="; + }; + + passthru = { + updateScript = nix-update-script { + attrPath = "pantheon.${pname}"; + }; + }; + + nativeBuildInputs = [ + meson + ninja + libxml2 + pkg-config + vala + ]; + + buildInputs = [ + granite + gtk3 + libgee + wingpanel + xorg.xkeyboardconfig + ]; + + patches = [ + (substituteAll { + src = ./fix-paths.patch; + gkbd_keyboard_display = "${libgnomekbd}/bin/gkbd-keyboard-display"; + }) + ]; + + meta = with lib; { + description = "Keyboard Indicator for Wingpanel"; + homepage = "https://github.com/elementary/wingpanel-indicator-keyboard"; + license = licenses.lgpl21Plus; + platforms = platforms.linux; + maintainers = pantheon.maintainers; + }; +} diff --git a/nixpkgs/pkgs/desktops/pantheon/desktop/wingpanel-indicators/keyboard/fix-paths.patch b/nixpkgs/pkgs/desktops/pantheon/desktop/wingpanel-indicators/keyboard/fix-paths.patch new file mode 100644 index 000000000000..4fb6dfac86d9 --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/desktop/wingpanel-indicators/keyboard/fix-paths.patch @@ -0,0 +1,13 @@ +diff --git a/src/Indicator.vala b/src/Indicator.vala +index cd7ca49..7813789 100644 +--- a/src/Indicator.vala ++++ b/src/Indicator.vala +@@ -94,7 +94,7 @@ public class Keyboard.Indicator : Wingpanel.Indicator { + private void show_keyboard_map () { + close (); + +- string command = "gkbd-keyboard-display \"--layout=" + layouts.get_current_with_variant () + "\""; ++ string command = "@gkbd_keyboard_display@ \"--layout=" + layouts.get_current_with_variant () + "\""; + + try { + AppInfo.create_from_commandline (command, null, AppInfoCreateFlags.NONE).launch (null, null); diff --git a/nixpkgs/pkgs/desktops/pantheon/desktop/wingpanel-indicators/network/default.nix b/nixpkgs/pkgs/desktops/pantheon/desktop/wingpanel-indicators/network/default.nix new file mode 100644 index 000000000000..ab898084c087 --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/desktop/wingpanel-indicators/network/default.nix @@ -0,0 +1,57 @@ +{ lib, stdenv +, fetchFromGitHub +, nix-update-script +, pantheon +, pkg-config +, meson +, ninja +, vala +, gtk3 +, granite +, networkmanager +, libnma +, wingpanel +, libgee +}: + +stdenv.mkDerivation rec { + pname = "wingpanel-indicator-network"; + version = "2.2.4"; + + src = fetchFromGitHub { + owner = "elementary"; + repo = pname; + rev = version; + sha256 = "sha256-wVHvHduUT55rIWRfRWg3Z3jL3FdzUJfiqFONRmpCR8k="; + }; + + passthru = { + updateScript = nix-update-script { + attrPath = "pantheon.${pname}"; + }; + }; + + nativeBuildInputs = [ + meson + ninja + pkg-config + vala + ]; + + buildInputs = [ + granite + gtk3 + libgee + networkmanager + libnma + wingpanel + ]; + + meta = with lib; { + description = "Network Indicator for Wingpanel"; + homepage = "https://github.com/elementary/wingpanel-indicator-network"; + license = licenses.lgpl21Plus; + platforms = platforms.linux; + maintainers = pantheon.maintainers; + }; +} diff --git a/nixpkgs/pkgs/desktops/pantheon/desktop/wingpanel-indicators/nightlight/default.nix b/nixpkgs/pkgs/desktops/pantheon/desktop/wingpanel-indicators/nightlight/default.nix new file mode 100644 index 000000000000..4481c181f53d --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/desktop/wingpanel-indicators/nightlight/default.nix @@ -0,0 +1,57 @@ +{ lib, stdenv +, fetchFromGitHub +, nix-update-script +, pantheon +, pkg-config +, meson +, ninja +, vala +, gtk3 +, granite +, wingpanel +, libgee +, libxml2 +}: + +stdenv.mkDerivation rec { + pname = "wingpanel-indicator-nightlight"; + version = "2.0.4"; + + src = fetchFromGitHub { + owner = "elementary"; + repo = pname; + rev = version; + sha256 = "sha256-0f03XO74ezzS/Uy0mXT4raoazETL/SOVh58sAo9bEIA="; + }; + + passthru = { + updateScript = nix-update-script { + attrPath = "pantheon.${pname}"; + }; + }; + + nativeBuildInputs = [ + libxml2 + meson + ninja + pkg-config + vala + ]; + + buildInputs = [ + granite + gtk3 + libgee + wingpanel + ]; + + PKG_CONFIG_WINGPANEL_2_0_INDICATORSDIR = "${placeholder "out"}/lib/wingpanel"; + + meta = with lib; { + description = "Night Light Indicator for Wingpanel"; + homepage = "https://github.com/elementary/wingpanel-indicator-nightlight"; + license = licenses.gpl2Plus; + platforms = platforms.linux; + maintainers = pantheon.maintainers; + }; +} diff --git a/nixpkgs/pkgs/desktops/pantheon/desktop/wingpanel-indicators/notifications/default.nix b/nixpkgs/pkgs/desktops/pantheon/desktop/wingpanel-indicators/notifications/default.nix new file mode 100644 index 000000000000..97ab0cb80ed3 --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/desktop/wingpanel-indicators/notifications/default.nix @@ -0,0 +1,65 @@ +{ lib, stdenv +, fetchFromGitHub +, nix-update-script +, pantheon +, pkg-config +, fetchpatch +, meson +, ninja +, vala +, gtk3 +, granite +, wingpanel +, libgee +, elementary-notifications +}: + +stdenv.mkDerivation rec { + pname = "wingpanel-indicator-notifications"; + version = "2.1.4"; + + src = fetchFromGitHub { + owner = "elementary"; + repo = pname; + rev = version; + sha256 = "sha256-tVPSJO/9IXlibLkb6Cv+8azdvuXbcNOI1qYk4VQc4WI="; + }; + + patches = [ + # Fix do not disturb on NixOS + # https://github.com/elementary/wingpanel-indicator-notifications/pull/110 + (fetchpatch { + url = "https://github.com/elementary/wingpanel-indicator-notifications/commit/02b1e226c0262c1535fdf2b4f1daba6be9084f67.patch"; + sha256 = "1a5phygygndr28yx8yp0lyk0wxypc5656dpidw1z8x1yd6xysqhy"; + }) + ]; + + passthru = { + updateScript = nix-update-script { + attrPath = "pantheon.${pname}"; + }; + }; + + nativeBuildInputs = [ + meson + ninja + pkg-config + vala + ]; + + buildInputs = [ + elementary-notifications + granite + gtk3 + libgee + wingpanel + ]; + + meta = with lib; { + description = "Notifications Indicator for Wingpanel"; + homepage = "https://github.com/elementary/wingpanel-indicator-notifications"; + license = licenses.lgpl21Plus; + platforms = platforms.linux; + maintainers = pantheon.maintainers; + }; +} diff --git a/nixpkgs/pkgs/desktops/pantheon/desktop/wingpanel-indicators/power/default.nix b/nixpkgs/pkgs/desktops/pantheon/desktop/wingpanel-indicators/power/default.nix new file mode 100644 index 000000000000..69a17b9dd30a --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/desktop/wingpanel-indicators/power/default.nix @@ -0,0 +1,66 @@ +{ lib, stdenv +, fetchFromGitHub +, nix-update-script +, pantheon +, pkg-config +, meson +, python3 +, ninja +, vala +, gtk3 +, granite +, bamf +, libgtop +, udev +, wingpanel +, libgee +}: + +stdenv.mkDerivation rec { + pname = "wingpanel-indicator-power"; + version = "2.2.0"; + + src = fetchFromGitHub { + owner = "elementary"; + repo = pname; + rev = version; + sha256 = "sha256-wjYZXFnzvPSukzh1BNvyaFxKpYm+kNNFm5AsthLXGVE="; + }; + + passthru = { + updateScript = nix-update-script { + attrPath = "pantheon.${pname}"; + }; + }; + + nativeBuildInputs = [ + meson + ninja + pkg-config + python3 + vala + ]; + + buildInputs = [ + bamf + granite + gtk3 + libgee + libgtop + udev + wingpanel + ]; + + postPatch = '' + chmod +x meson/post_install.py + patchShebangs meson/post_install.py + ''; + + meta = with lib; { + description = "Power Indicator for Wingpanel"; + homepage = "https://github.com/elementary/wingpanel-indicator-power"; + license = licenses.gpl2Plus; + platforms = platforms.linux; + maintainers = pantheon.maintainers; + }; +} diff --git a/nixpkgs/pkgs/desktops/pantheon/desktop/wingpanel-indicators/session/default.nix b/nixpkgs/pkgs/desktops/pantheon/desktop/wingpanel-indicators/session/default.nix new file mode 100644 index 000000000000..a6c08b613bbd --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/desktop/wingpanel-indicators/session/default.nix @@ -0,0 +1,56 @@ +{ lib, stdenv +, fetchFromGitHub +, nix-update-script +, fetchpatch +, pantheon +, pkg-config +, meson +, ninja +, vala +, gtk3 +, granite +, wingpanel +, accountsservice +, libgee +}: + +stdenv.mkDerivation rec { + pname = "wingpanel-indicator-session"; + version = "unstable-2020-09-13"; + + src = fetchFromGitHub { + owner = "elementary"; + repo = pname; + rev = "e65c95f46adbfd598ad61933394d7bc3c5998278"; + sha256 = "sha256-QKOfgAc6pDQYpETrFunZB6+rF1P8XIf0pjft/t9aWW0="; + }; + + passthru = { + updateScript = nix-update-script { + attrPath = "pantheon.${pname}"; + }; + }; + + nativeBuildInputs = [ + meson + ninja + pkg-config + vala + ]; + + buildInputs = [ + accountsservice + granite + gtk3 + libgee + wingpanel + ]; + + meta = with lib; { + description = "Session Indicator for Wingpanel"; + homepage = "https://github.com/elementary/wingpanel-indicator-session"; + license = licenses.gpl2Plus; + platforms = platforms.linux; + maintainers = pantheon.maintainers; + }; +} diff --git a/nixpkgs/pkgs/desktops/pantheon/desktop/wingpanel-indicators/sound/default.nix b/nixpkgs/pkgs/desktops/pantheon/desktop/wingpanel-indicators/sound/default.nix new file mode 100644 index 000000000000..25707f39e46b --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/desktop/wingpanel-indicators/sound/default.nix @@ -0,0 +1,68 @@ +{ lib, stdenv +, fetchFromGitHub +, nix-update-script +, pantheon +, pkg-config +, meson +, python3 +, ninja +, vala +, gtk3 +, granite +, wingpanel +, libnotify +, pulseaudio +, libcanberra-gtk3 +, libgee +, libxml2 +}: + +stdenv.mkDerivation rec { + pname = "wingpanel-indicator-sound"; + version = "2.1.6"; + + src = fetchFromGitHub { + owner = "elementary"; + repo = pname; + rev = version; + sha256 = "sha256-WGkxLsbdJ7Z7kolymYpggsVy4cN4CicNKdfCbunklSI="; + }; + + passthru = { + updateScript = nix-update-script { + attrPath = "pantheon.${pname}"; + }; + }; + + 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 + ''; + + meta = with lib; { + description = "Sound Indicator for Wingpanel"; + homepage = "https://github.com/elementary/wingpanel-indicator-sound"; + license = licenses.gpl2Plus; + platforms = platforms.linux; + maintainers = pantheon.maintainers; + }; +} diff --git a/nixpkgs/pkgs/desktops/pantheon/desktop/wingpanel/default.nix b/nixpkgs/pkgs/desktops/pantheon/desktop/wingpanel/default.nix new file mode 100644 index 000000000000..97c2d0c8845a --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/desktop/wingpanel/default.nix @@ -0,0 +1,89 @@ +{ lib, stdenv +, fetchFromGitHub +, nix-update-script +, pantheon +, 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 = "2.3.2"; + + src = fetchFromGitHub { + owner = "elementary"; + repo = pname; + rev = version; + sha256 = "sha256-mXi600gufUK81Uks9p4+al0tCI7H9KpizZGyoomp42s="; + }; + + passthru = { + updateScript = nix-update-script { + attrPath = "pantheon.${pname}"; + }; + }; + + nativeBuildInputs = [ + gettext + meson + ninja + pkg-config + python3 + vala + wrapGAppsHook + ]; + + buildInputs = [ + elementary-gtk-theme + elementary-icon-theme + gala + granite + gtk3 + json-glib + libgee + mutter + mesa # for libEGL + ]; + + patches = [ + ./indicators.patch + ]; + + postPatch = '' + chmod +x meson/post_install.py + patchShebangs meson/post_install.py + ''; + + preFixup = '' + gappsWrapperArgs+=( + # this theme is required + --prefix XDG_DATA_DIRS : "${elementary-gtk-theme}/share" + ) + ''; + + 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.gpl2Plus; + platforms = platforms.linux; + maintainers = pantheon.maintainers; + }; +} diff --git a/nixpkgs/pkgs/desktops/pantheon/desktop/wingpanel/indicators.patch b/nixpkgs/pkgs/desktops/pantheon/desktop/wingpanel/indicators.patch new file mode 100644 index 000000000000..68a5fd532a8d --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/desktop/wingpanel/indicators.patch @@ -0,0 +1,21 @@ +diff --git a/lib/IndicatorManager.vala b/lib/IndicatorManager.vala +index a99a1ec..0ae7799 100644 +--- a/lib/IndicatorManager.vala ++++ b/lib/IndicatorManager.vala +@@ -115,7 +115,15 @@ public class Wingpanel.IndicatorManager : GLib.Object { + } + + /* load indicators */ +- var base_folder = File.new_for_path (Build.INDICATORS_DIR); ++ ++ var indicators_path = Environment.get_variable("WINGPANEL_INDICATORS_PATH"); ++ if (indicators_path != null) { ++ debug ("WINGPANEL_INDICATORS_PATH set to %s", indicators_path); ++ } else { ++ critical ("WINGPANEL_INDICATORS_PATH not set"); ++ } ++ ++ var base_folder = File.new_for_path (indicators_path); + + try { + monitor = base_folder.monitor_directory (FileMonitorFlags.NONE, null); diff --git a/nixpkgs/pkgs/desktops/pantheon/desktop/wingpanel/wrapper.nix b/nixpkgs/pkgs/desktops/pantheon/desktop/wingpanel/wrapper.nix new file mode 100644 index 000000000000..ca887d45dc39 --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/desktop/wingpanel/wrapper.nix @@ -0,0 +1,60 @@ +{ lib +, wrapGAppsHook +, glib +, stdenv +, xorg +, wingpanel +, wingpanelIndicators +, switchboard-with-plugs +, indicators ? null + # Only useful to disable for development testing. +, useDefaultIndicators ? true +}: + +let + selectedIndicators = + if indicators == null then wingpanelIndicators + else indicators ++ (lib.optionals useDefaultIndicators wingpanelIndicators); +in +stdenv.mkDerivation rec { + name = "${wingpanel.name}-with-indicators"; + + src = null; + + paths = [ + wingpanel + ] ++ selectedIndicators; + + passAsFile = [ "paths" ]; + + nativeBuildInputs = [ + glib + wrapGAppsHook + ]; + + buildInputs = lib.forEach selectedIndicators (x: x.buildInputs) + ++ selectedIndicators; + + dontUnpack = true; + dontConfigure = true; + dontBuild = true; + + preferLocalBuild = true; + allowSubstitutes = false; + + installPhase = '' + mkdir -p $out + for i in $(cat $pathsPath); do + ${xorg.lndir}/bin/lndir -silent $i $out + done + ''; + + preFixup = '' + gappsWrapperArgs+=( + --set WINGPANEL_INDICATORS_PATH "$out/lib/wingpanel" + --set SWITCHBOARD_PLUGS_PATH "${switchboard-with-plugs}/lib/switchboard" + ) + ''; + + inherit (wingpanel) meta; +} diff --git a/nixpkgs/pkgs/desktops/pantheon/granite/default.nix b/nixpkgs/pkgs/desktops/pantheon/granite/default.nix new file mode 100644 index 000000000000..3d4dc6bd84ab --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/granite/default.nix @@ -0,0 +1,75 @@ +{ lib, stdenv +, fetchFromGitHub +, nix-update-script +, python3 +, meson +, ninja +, vala +, pkg-config +, libgee +, pantheon +, gtk3 +, glib +, gettext +, gsettings-desktop-schemas +, gobject-introspection +, wrapGAppsHook +}: + +stdenv.mkDerivation rec { + pname = "granite"; + version = "6.0.0"; + + outputs = [ "out" "dev" ]; + + src = fetchFromGitHub { + owner = "elementary"; + repo = pname; + rev = version; + sha256 = "sha256-RGukXeFmtnyCfK8pKdvTHL0t8yhEYwAiiPelTy1Xcf0="; + }; + + passthru = { + updateScript = nix-update-script { + attrPath = "pantheon.${pname}"; + }; + }; + + nativeBuildInputs = [ + gettext + gobject-introspection + meson + ninja + pkg-config + python3 + vala + wrapGAppsHook + ]; + + buildInputs = [ + glib + gtk3 + libgee + ]; + + propagatedBuildInputs = [ + gsettings-desktop-schemas # is_clock_format_12h uses "org.gnome.desktop.interface clock-format" + ]; + + postPatch = '' + chmod +x meson/post_install.py + patchShebangs meson/post_install.py + ''; + + meta = with lib; { + description = "An extension to GTK used by elementary OS"; + longDescription = '' + Granite is a companion library for GTK and GLib. Among other things, it provides complex widgets and convenience functions + designed for use in apps built for elementary OS. + ''; + homepage = "https://github.com/elementary/granite"; + license = licenses.lgpl3Plus; + platforms = platforms.linux; + maintainers = pantheon.maintainers; + }; +} diff --git a/nixpkgs/pkgs/desktops/pantheon/services/contractor/default.nix b/nixpkgs/pkgs/desktops/pantheon/services/contractor/default.nix new file mode 100644 index 000000000000..e15480c8cc88 --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/services/contractor/default.nix @@ -0,0 +1,59 @@ +{ lib, stdenv +, fetchFromGitHub +, nix-update-script +, pantheon +, meson +, python3 +, ninja +, pkg-config +, vala +, glib +, libgee +, dbus +, glib-networking +, wrapGAppsHook +}: + +stdenv.mkDerivation rec { + pname = "contractor"; + version = "0.3.4"; + + src = fetchFromGitHub { + owner = "elementary"; + repo = pname; + rev = version; + sha256 = "sha256-FHLecRxTE8v3M7cV6rkQKNhPhKFhuhvkzB5C+u7Z+Ms="; + }; + + passthru = { + updateScript = nix-update-script { + attrPath = "pantheon.${pname}"; + }; + }; + + nativeBuildInputs = [ + dbus + meson + ninja + pkg-config + python3 + vala + wrapGAppsHook + ]; + + buildInputs = [ + glib + glib-networking + libgee + ]; + + PKG_CONFIG_DBUS_1_SESSION_BUS_SERVICES_DIR = "${placeholder "out"}/share/dbus-1/services"; + + meta = with lib; { + description = "A desktop-wide extension service used by elementary OS"; + homepage = "https://github.com/elementary/contractor"; + license = licenses.gpl3Plus; + platforms = platforms.linux; + maintainers = pantheon.maintainers; + }; +} diff --git a/nixpkgs/pkgs/desktops/pantheon/services/elementary-capnet-assist/default.nix b/nixpkgs/pkgs/desktops/pantheon/services/elementary-capnet-assist/default.nix new file mode 100644 index 000000000000..d9f224ce45d8 --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/services/elementary-capnet-assist/default.nix @@ -0,0 +1,73 @@ +{ lib, stdenv +, fetchFromGitHub +, nix-update-script +, pantheon +, pkg-config +, meson +, python3 +, ninja +, vala +, desktop-file-utils +, gtk3 +, granite +, libgee +, gcr +, webkitgtk +, wrapGAppsHook +}: + +stdenv.mkDerivation rec { + pname = "elementary-capnet-assist"; + version = "2.2.5"; + + repoName = "capnet-assist"; + + src = fetchFromGitHub { + owner = "elementary"; + repo = repoName; + rev = version; + sha256 = "sha256-o6J3vNWvV0zRde8VWWfpb56PQhSck2sJQVLimq0P9CY="; + }; + + passthru = { + updateScript = nix-update-script { + attrPath = "pantheon.${pname}"; + }; + }; + + nativeBuildInputs = [ + desktop-file-utils + meson + ninja + pkg-config + python3 + vala + wrapGAppsHook + ]; + + buildInputs = [ + gcr + granite + gtk3 + libgee + webkitgtk + ]; + + # Not useful here or in elementary - See: https://github.com/elementary/capnet-assist/issues/3 + patches = [ + ./remove-capnet-test.patch + ]; + + postPatch = '' + chmod +x meson/post_install.py + patchShebangs meson/post_install.py + ''; + + meta = with lib; { + description = "A small WebKit app that assists a user with login when a captive portal is detected"; + homepage = "https://github.com/elementary/capnet-assist"; + license = licenses.gpl2Plus; + platforms = platforms.linux; + maintainers = pantheon.maintainers; + }; +} diff --git a/nixpkgs/pkgs/desktops/pantheon/services/elementary-capnet-assist/remove-capnet-test.patch b/nixpkgs/pkgs/desktops/pantheon/services/elementary-capnet-assist/remove-capnet-test.patch new file mode 100644 index 000000000000..a59c74f22b3b --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/services/elementary-capnet-assist/remove-capnet-test.patch @@ -0,0 +1,13 @@ +diff --git a/meson.build b/meson.build +index 46c594b..ba0ea10 100644 +--- a/meson.build ++++ b/meson.build +@@ -33,8 +33,3 @@ meson.add_install_script('meson/post_install.py') + + subdir('data') + subdir('po') +- +-install_data( +- '90captive_portal_test', +- install_dir: join_paths(get_option('sysconfdir'), 'NetworkManager', 'dispatcher.d') +-) diff --git a/nixpkgs/pkgs/desktops/pantheon/services/elementary-dpms-helper/default.nix b/nixpkgs/pkgs/desktops/pantheon/services/elementary-dpms-helper/default.nix new file mode 100644 index 000000000000..65995c456599 --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/services/elementary-dpms-helper/default.nix @@ -0,0 +1,66 @@ +{ lib, stdenv +, fetchFromGitHub +, nix-update-script +, pantheon +, meson +, ninja +, desktop-file-utils +, glib +, coreutils +, elementary-settings-daemon +, wrapGAppsHook +}: + +stdenv.mkDerivation rec { + pname = "elementary-dpms-helper"; + version = "1.0"; + + repoName = "dpms-helper"; + + src = fetchFromGitHub { + owner = "elementary"; + repo = repoName; + rev = version; + sha256 = "sha256-0KbfAxvZ+aFjq+XEK4uoRHSyKlaky0FlJd2a5TG4bms="; + }; + + passthru = { + updateScript = nix-update-script { + attrPath = "pantheon.${pname}"; + }; + }; + + nativeBuildInputs = [ + desktop-file-utils + meson + ninja + wrapGAppsHook + ]; + + buildInputs = [ + elementary-settings-daemon + glib + ]; + + preFixup = '' + gappsWrapperArgs+=(--prefix PATH : "${lib.makeBinPath [ glib.dev coreutils ]}") + ''; + + postFixup = '' + substituteInPlace $out/etc/xdg/autostart/io.elementary.dpms-helper.desktop \ + --replace "Exec=io.elementary.dpms-helper" "Exec=$out/bin/io.elementary.dpms-helper" + ''; + + # See: https://github.com/elementary/dpms-helper/pull/10 + postInstall = '' + ${glib.dev}/bin/glib-compile-schemas $out/share/glib-2.0/schemas + ''; + + meta = with lib; { + description = "Sets DPMS settings found in org.pantheon.dpms"; + homepage = "https://github.com/elementary/dpms-helper"; + license = licenses.gpl2; + platforms = platforms.linux; + maintainers = pantheon.maintainers; + }; +} diff --git a/nixpkgs/pkgs/desktops/pantheon/services/elementary-notifications/default.nix b/nixpkgs/pkgs/desktops/pantheon/services/elementary-notifications/default.nix new file mode 100644 index 000000000000..73cace23cca9 --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/services/elementary-notifications/default.nix @@ -0,0 +1,60 @@ +{ lib, stdenv +, fetchFromGitHub +, meson +, ninja +, pkg-config +, vala +, gtk3 +, glib +, granite +, libgee +, libcanberra-gtk3 +, pantheon +, python3 +, wrapGAppsHook +}: + +stdenv.mkDerivation rec { + pname = "elementary-notifications"; + version = "unstable-2020-03-31"; + + repoName = "notifications"; + + src = fetchFromGitHub { + owner = "elementary"; + repo = repoName; + rev = "db552b0c3466ba1099c7737c353b7225ab1896cc"; + sha256 = "1fhf4zx73qka935x5afv6zqsm2l37d1mjbhrbzzzz44dqwa2vp16"; + }; + + nativeBuildInputs = [ + glib # for glib-compile-schemas + meson + ninja + pkg-config + python3 + vala + wrapGAppsHook + ]; + + buildInputs = [ + glib + granite + gtk3 + libcanberra-gtk3 + libgee + ]; + + postPatch = '' + chmod +x meson/post_install.py + patchShebangs meson/post_install.py + ''; + + meta = with lib; { + description = "GTK notification server for Pantheon"; + homepage = "https://github.com/elementary/notifications"; + license = licenses.gpl3Plus; + maintainers = pantheon.maintainers; + platforms = platforms.linux; + }; +} diff --git a/nixpkgs/pkgs/desktops/pantheon/services/elementary-settings-daemon/default.nix b/nixpkgs/pkgs/desktops/pantheon/services/elementary-settings-daemon/default.nix new file mode 100644 index 000000000000..568414aab35c --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/services/elementary-settings-daemon/default.nix @@ -0,0 +1,166 @@ +{ lib, stdenv +, substituteAll +, fetchurl +, fetchgit +, fetchpatch +, meson +, ninja +, pkg-config +, gnome +, perl +, gettext +, gtk3 +, glib +, libnotify +, libgnomekbd +, lcms2 +, libpulseaudio +, alsa-lib +, libcanberra-gtk3 +, upower +, colord +, libgweather +, polkit +, gsettings-desktop-schemas +, geoclue2 +, systemd +, libgudev +, libwacom +, libxslt +, libxml2 +, modemmanager +, networkmanager +, gnome-desktop +, geocode-glib +, docbook_xsl +, accountsservice +, wrapGAppsHook +, python3 +, tzdata +, nss +, gcr +, pantheon +}: + +stdenv.mkDerivation rec { + pname = "elementary-settings-daemon"; + version = "3.34.1"; + + repoName = "gnome-settings-daemon"; + + src = fetchgit { + url = "https://git.launchpad.net/~ubuntu-desktop/ubuntu/+source/${repoName}"; + rev = "refs/tags/ubuntu/${version}-1ubuntu2"; + sha256 = "0w0dsbzif7v0gk61rs9g20ldlimbdwb5yvlfdc568yyx5z643jbv"; + }; + + # We've omitted the 53_sync_input_sources_to_accountsservice patch because it breaks the build. + # See: https://gist.github.com/worldofpeace/2f152a20b7c47895bb93239fce1c9f52 + # + # Also omit ubuntu_calculator_snap.patch as that's obviously not useful here. + patches = let patchPath = "${src}/debian/patches"; in [ + (substituteAll { + src = ./fix-paths.patch; + inherit tzdata; + }) + ./global-backlight-helper.patch + "${patchPath}/45_suppress-printer-may-not-be-connected-notification.patch" + #"${patchPath}/53_sync_input_sources_to_accountsservice.patch" + "${patchPath}/64_restore_terminal_keyboard_shortcut_schema.patch" + "${patchPath}/correct_logout_action.patch" + "${patchPath}/ubuntu-lid-close-suspend.patch" + "${patchPath}/revert-gsettings-removals.patch" + "${patchPath}/revert-mediakeys-dbus-interface-drop.patch" + #"${patchPath}/ubuntu_ibus_configs.patch" + # https://github.com/elementary/os-patches/blob/6975d1c254cb6ab913b8e2396877203aea8eaa65/debian/patches/elementary-dpms.patch + ./elementary-dpms.patch + + # Query GWeather DB on the fly instead of caching. + # Needed for the next patch to apply. + # https://gitlab.gnome.org/GNOME/gnome-settings-daemon/merge_requests/175 + (fetchpatch { + url = "https://gitlab.gnome.org/GNOME/gnome-settings-daemon/commit/df6c69f028d27b53ac86829e11df103b25ed5a74.patch"; + sha256 = "bKZkPzN64DXMgitjn0vUzUvKl7ldhN/mNVtPKVmHd0Q="; + }) + # Adjust to libgweather changes. + # https://gitlab.gnome.org/GNOME/gnome-settings-daemon/-/merge_requests/217 + (fetchpatch { + url = "https://gitlab.gnome.org/GNOME/gnome-settings-daemon/commit/82d88014dfca2df7e081712870e1fb017c16b808.patch"; + sha256 = "H5k/v+M2bRaswt5nrDJFNn4gS4BdB0UfzdjUCT4yLKg="; + }) + ]; + + nativeBuildInputs = [ + meson + ninja + pkg-config + perl + gettext + libxml2 + libxslt + docbook_xsl + wrapGAppsHook + python3 + ]; + + buildInputs = [ + accountsservice + alsa-lib + colord + gcr + geoclue2 + geocode-glib + glib + gnome-desktop + gsettings-desktop-schemas + gtk3 + lcms2 + libcanberra-gtk3 + libgnomekbd # for org.gnome.libgnomekbd.keyboard schema + libgudev + libgweather + libnotify + libpulseaudio + libwacom + modemmanager + networkmanager + nss + polkit + systemd + upower + ]; + + mesonFlags = [ + "-Dudev_dir=${placeholder "out"}/lib/udev" + ]; + + # Default for release buildtype but passed manually because + # we're using plain + NIX_CFLAGS_COMPILE = "-DG_DISABLE_CAST_CHECKS"; + + postPatch = '' + for f in gnome-settings-daemon/codegen.py plugins/power/gsd-power-constants-update.pl meson_post_install.py; do + chmod +x $f + patchShebangs $f + done + ''; + + postFixup = '' + # So the polkit policy can reference /run/current-system/sw/bin/elementary-settings-daemon/gsd-backlight-helper + mkdir -p $out/bin/elementary-settings-daemon + ln -s $out/libexec/gsd-backlight-helper $out/bin/elementary-settings-daemon/gsd-backlight-helper + ''; + + passthru = { + updateScript = gnome.updateScript { + packageName = repoName; + attrPath = "pantheon.${pname}"; + }; + }; + + meta = with lib; { + license = licenses.gpl2Plus; + maintainers = pantheon.maintainers; + platforms = platforms.linux; + }; +} diff --git a/nixpkgs/pkgs/desktops/pantheon/services/elementary-settings-daemon/elementary-dpms.patch b/nixpkgs/pkgs/desktops/pantheon/services/elementary-settings-daemon/elementary-dpms.patch new file mode 100644 index 000000000000..14d056ceca27 --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/services/elementary-settings-daemon/elementary-dpms.patch @@ -0,0 +1,84 @@ +diff --git a/data/org.gnome.settings-daemon.plugins.power.gschema.xml.in b/data/org.gnome.settings-daemon.plugins.power.gschema.xml.in +index ec805d8a..cf0d6793 100644 +--- a/data/org.gnome.settings-daemon.plugins.power.gschema.xml.in ++++ b/data/org.gnome.settings-daemon.plugins.power.gschema.xml.in +@@ -11,6 +11,11 @@ + <summary>Activation of this plugin</summary> + <description>Whether this plugin would be activated by unity-settings-daemon or not</description> + </key> ++ <key name="manage-dpms-defaults" type="b"> ++ <default>false</default> ++ <summary>Reset X DPMS values</summary> ++ <description>Whether DPMS values will be adjusted by gnome-settings-daemon</description> ++ </key> + <key name="idle-brightness" type="i"> + <default>30</default> + <summary>The brightness of the screen when idle</summary> +diff --git a/plugins/power/gpm-common.c b/plugins/power/gpm-common.c +index a7ca87fb..a56a7cdc 100644 +--- a/plugins/power/gpm-common.c ++++ b/plugins/power/gpm-common.c +@@ -280,6 +280,18 @@ disable_builtin_screensaver (gpointer unused) + return TRUE; + } + ++gboolean ++manage_dpms (void) ++{ ++ GSettings *settings; ++ gboolean manage_dpms_defaults; ++ ++ settings = g_settings_new ("org.gnome.settings-daemon.plugins.power"); ++ manage_dpms_defaults = g_settings_get_boolean (settings, "manage-dpms-defaults"); ++ g_object_unref (settings); ++ return manage_dpms_defaults; ++} ++ + guint + gsd_power_enable_screensaver_watchdog (void) + { +@@ -290,7 +302,7 @@ gsd_power_enable_screensaver_watchdog (void) + * way. The defaults are now applied in Fedora 20 from + * being "0" by default to being "600" by default */ + gdk_x11_display_error_trap_push (gdk_display_get_default ()); +- if (DPMSQueryExtension(GDK_DISPLAY_XDISPLAY (gdk_display_get_default ()), &dummy, &dummy)) ++ if (manage_dpms () && DPMSQueryExtension(GDK_DISPLAY_XDISPLAY (gdk_display_get_default ()), &dummy, &dummy)) + DPMSSetTimeouts (GDK_DISPLAY_XDISPLAY (gdk_display_get_default ()), 0, 0, 0); + gdk_x11_display_error_trap_pop_ignored (gdk_display_get_default ()); + id = g_timeout_add_seconds (XSCREENSAVER_WATCHDOG_TIMEOUT, +diff --git a/plugins/power/gpm-common.h b/plugins/power/gpm-common.h +index 88a8e00e..af106479 100644 +--- a/plugins/power/gpm-common.h ++++ b/plugins/power/gpm-common.h +@@ -34,6 +34,7 @@ gchar *gpm_get_timestring (guint time); + gboolean gsd_power_is_hardware_a_vm (void); + guint gsd_power_enable_screensaver_watchdog (void); + void reset_idletime (void); ++gboolean manage_dpms (void); + + /* Backlight helpers */ + +diff --git a/plugins/power/gsd-power-manager.c b/plugins/power/gsd-power-manager.c +index c500fa38..445496ee 100644 +--- a/plugins/power/gsd-power-manager.c ++++ b/plugins/power/gsd-power-manager.c +@@ -1033,6 +1033,9 @@ backlight_enable (GsdPowerManager *manager) + gboolean ret; + GError *error = NULL; + ++ if (!(manage_dpms ())) ++ return; ++ + iio_proxy_claim_light (manager, TRUE); + ret = gnome_rr_screen_set_dpms_mode (manager->rr_screen, + GNOME_RR_DPMS_ON, +@@ -1052,6 +1055,9 @@ backlight_disable (GsdPowerManager *manager) + gboolean ret; + GError *error = NULL; + ++ if (!(manage_dpms ())) ++ return; ++ + iio_proxy_claim_light (manager, FALSE); + ret = gnome_rr_screen_set_dpms_mode (manager->rr_screen, + GNOME_RR_DPMS_OFF, diff --git a/nixpkgs/pkgs/desktops/pantheon/services/elementary-settings-daemon/fix-paths.patch b/nixpkgs/pkgs/desktops/pantheon/services/elementary-settings-daemon/fix-paths.patch new file mode 100644 index 000000000000..2229302cab7c --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/services/elementary-settings-daemon/fix-paths.patch @@ -0,0 +1,15 @@ +--- a/plugins/datetime/tz.h ++++ b/plugins/datetime/tz.h +@@ -27,11 +27,7 @@ + + #include <glib.h> + +-#ifndef __sun +-# define TZ_DATA_FILE "/usr/share/zoneinfo/zone.tab" +-#else +-# define TZ_DATA_FILE "/usr/share/lib/zoneinfo/tab/zone_sun.tab" +-#endif ++#define TZ_DATA_FILE "@tzdata@/share/zoneinfo/zone.tab" + + typedef struct _TzDB TzDB; + typedef struct _TzLocation TzLocation; diff --git a/nixpkgs/pkgs/desktops/pantheon/services/elementary-settings-daemon/global-backlight-helper.patch b/nixpkgs/pkgs/desktops/pantheon/services/elementary-settings-daemon/global-backlight-helper.patch new file mode 100644 index 000000000000..dcdc83934ba6 --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/services/elementary-settings-daemon/global-backlight-helper.patch @@ -0,0 +1,26 @@ +diff --git a/plugins/power/gsd-backlight.c b/plugins/power/gsd-backlight.c +index d7d10fd2..5619d6ad 100644 +--- a/plugins/power/gsd-backlight.c ++++ b/plugins/power/gsd-backlight.c +@@ -358,7 +358,7 @@ gsd_backlight_run_set_helper (GsdBacklight *backlight, GTask *task) + proc = g_subprocess_new (G_SUBPROCESS_FLAGS_STDOUT_SILENCE, + &error, + "pkexec", +- LIBEXECDIR "/gsd-backlight-helper", ++ "/run/current-system/sw/bin/elementary-settings-daemon/gsd-backlight-helper", + g_udev_device_get_sysfs_path (backlight->udev_device), + data->value_str, NULL); + } else { +diff --git a/plugins/power/org.gnome.settings-daemon.plugins.power.policy.in.in b/plugins/power/org.gnome.settings-daemon.plugins.power.policy.in.in +index f16300f8..79d6bd17 100644 +--- a/plugins/power/org.gnome.settings-daemon.plugins.power.policy.in.in ++++ b/plugins/power/org.gnome.settings-daemon.plugins.power.policy.in.in +@@ -25,7 +25,7 @@ + <allow_inactive>no</allow_inactive> + <allow_active>yes</allow_active> + </defaults> +- <annotate key="org.freedesktop.policykit.exec.path">@libexecdir@/gsd-backlight-helper</annotate> ++ <annotate key="org.freedesktop.policykit.exec.path">/run/current-system/sw/bin/elementary-settings-daemon/gsd-backlight-helper</annotate> + </action> + + </policyconfig> diff --git a/nixpkgs/pkgs/desktops/pantheon/services/pantheon-agent-geoclue2/default.nix b/nixpkgs/pkgs/desktops/pantheon/services/pantheon-agent-geoclue2/default.nix new file mode 100644 index 000000000000..70b62e2b9a07 --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/services/pantheon-agent-geoclue2/default.nix @@ -0,0 +1,61 @@ +{ lib, stdenv +, fetchFromGitHub +, nix-update-script +, pantheon +, pkg-config +, meson +, ninja +, vala +, glib +, gtk3 +, libgee +, desktop-file-utils +, geoclue2 +, wrapGAppsHook +}: + +stdenv.mkDerivation rec { + pname = "pantheon-agent-geoclue2"; + version = "1.0.4"; + + src = fetchFromGitHub { + owner = "elementary"; + repo = pname; + rev = version; + sha256 = "sha256-LrDu9NczSKN9YLo922MqYbcHG1QAwzXUb7W0Q/g9ftI="; + }; + + passthru = { + updateScript = nix-update-script { + attrPath = "pantheon.${pname}"; + }; + }; + + nativeBuildInputs = [ + desktop-file-utils + meson + ninja + pkg-config + vala + wrapGAppsHook + ]; + + buildInputs = [ + geoclue2 + gtk3 + libgee + ]; + + # This should be provided by a post_install.py script - See -> https://github.com/elementary/pantheon-agent-geoclue2/pull/21 + postInstall = '' + ${glib.dev}/bin/glib-compile-schemas $out/share/glib-2.0/schemas + ''; + + meta = with lib; { + description = "Pantheon Geoclue2 Agent"; + homepage = "https://github.com/elementary/pantheon-agent-geoclue2"; + license = licenses.gpl3Plus; + platforms = platforms.linux; + maintainers = pantheon.maintainers; + }; +} diff --git a/nixpkgs/pkgs/desktops/pantheon/services/pantheon-agent-polkit/default.nix b/nixpkgs/pkgs/desktops/pantheon/services/pantheon-agent-polkit/default.nix new file mode 100644 index 000000000000..61bbb6ef9a4b --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/services/pantheon-agent-polkit/default.nix @@ -0,0 +1,55 @@ +{ lib, stdenv +, fetchFromGitHub +, nix-update-script +, pantheon +, pkg-config +, meson +, ninja +, vala +, gtk3 +, libgee +, granite +, polkit +, wrapGAppsHook +}: + +stdenv.mkDerivation rec { + pname = "pantheon-agent-polkit"; + version = "1.0.3"; + + src = fetchFromGitHub { + owner = "elementary"; + repo = pname; + rev = version; + sha256 = "sha256-YL1LHnPH7pP0EW9IkjdSEX+VuaAF9uNyFbl47vjVps0="; + }; + + passthru = { + updateScript = nix-update-script { + attrPath = "pantheon.${pname}"; + }; + }; + + nativeBuildInputs = [ + meson + ninja + pkg-config + vala + wrapGAppsHook + ]; + + buildInputs = [ + granite + gtk3 + libgee + polkit + ]; + + meta = with lib; { + description = "Polkit Agent for the Pantheon Desktop"; + homepage = "https://github.com/elementary/pantheon-agent-polkit"; + license = licenses.lgpl21Plus; + platforms = platforms.linux; + maintainers = pantheon.maintainers; + }; +} |