diff --git a/pkgs/desktops/pantheon/desktop/elementary-session-settings/default.nix b/pkgs/desktops/pantheon/desktop/elementary-session-settings/default.nix index a264af51c569..ab7333212a05 100644 --- a/pkgs/desktops/pantheon/desktop/elementary-session-settings/default.nix +++ b/pkgs/desktops/pantheon/desktop/elementary-session-settings/default.nix @@ -13,6 +13,9 @@ , elementary-settings-daemon , runtimeShell , writeText +, meson +, ninja +, git }: let @@ -77,17 +80,23 @@ stdenv.mkDerivation rec { sha256 = "1vrjm7bklkfv0dyafm312v4hxzy6lb7p1ny4ijkn48kr719gc71k"; }; - passthru = { - updateScript = pantheon.updateScript { - inherit repoName; - attrPath = pname; - }; - }; + postPatch = '' + ${git}/bin/git apply --verbose ${./meson.patch} + ''; - dontBuild = true; - dontConfigure = true; + nativeBuildInputs = [ + meson + ninja + ]; - installPhase = '' + mesonFlags = [ + "-Ddefaults-list=false" + "-Dpatched-gsd-autostarts=false" + "-Dpatched-ubuntu-autostarts=false" + "-Dfallback-session=GNOME" + ]; + + postInstall = '' mkdir -p $out/share/applications cp -av ${./pantheon-mimeapps.list} $out/share/applications/pantheon-mimeapps.list @@ -98,15 +107,9 @@ stdenv.mkDerivation rec { cp "${dockitemAutostart}" $out/etc/xdg/autostart/default-elementary-dockitems.desktop - mkdir -p $out/share/gnome-session/sessions - cp -av gnome-session/pantheon.session $out/share/gnome-session/sessions - mkdir -p $out/libexec substitute ${executable} $out/libexec/pantheon --subst-var out chmod +x $out/libexec/pantheon - - mkdir -p $out/share/xsessions - cp -av xsessions/pantheon.desktop $out/share/xsessions ''; postFixup = '' @@ -123,6 +126,13 @@ stdenv.mkDerivation rec { done ''; + passthru = { + updateScript = pantheon.updateScript { + inherit repoName; + attrPath = pname; + }; + }; + meta = with stdenv.lib; { description = "Session settings for elementary"; homepage = https://github.com/elementary/session-settings; diff --git a/pkgs/desktops/pantheon/desktop/elementary-session-settings/meson.patch b/pkgs/desktops/pantheon/desktop/elementary-session-settings/meson.patch new file mode 100644 index 000000000000..39d155656612 --- /dev/null +++ b/pkgs/desktops/pantheon/desktop/elementary-session-settings/meson.patch @@ -0,0 +1,272 @@ +From 0a20ad6a31c74f4f96e9ed3613ec6c16a94ede39 Mon Sep 17 00:00:00 2001 +From: worldofpeace +Date: Thu, 8 Aug 2019 11:25:37 -0400 +Subject: [PATCH] Build with Meson (#13) + +--- + applications/meson.build | 4 ++++ + ...ettingsDaemon.A11ySettings-pantheon.desktop | 0 + ...e.SettingsDaemon.Clipboard-pantheon.desktop | 0 + ...gnome.SettingsDaemon.Color-pantheon.desktop | 0 + ...me.SettingsDaemon.Datetime-pantheon.desktop | 0 + ...ettingsDaemon.Housekeeping-pantheon.desktop | 0 + ...me.SettingsDaemon.Keyboard-pantheon.desktop | 0 + ...e.SettingsDaemon.MediaKeys-pantheon.desktop | 0 + ...gnome.SettingsDaemon.Mouse-pantheon.desktop | 0 + ...gnome.SettingsDaemon.Power-pantheon.desktop | 0 + ...sDaemon.PrintNotifications-pantheon.desktop | 0 + ...nome.SettingsDaemon.Rfkill-pantheon.desktop | 0 + ...ome.SettingsDaemon.Sharing-pantheon.desktop | 0 + ...e.SettingsDaemon.Smartcard-pantheon.desktop | 0 + ...gnome.SettingsDaemon.Sound-pantheon.desktop | 0 + ...gnome.SettingsDaemon.Wacom-pantheon.desktop | 0 + ...e.SettingsDaemon.XSettings-pantheon.desktop | 0 + autostart/meson.build | 18 ++++++++++++++++++ + .../gnome-keyring-gpg-pantheon.desktop | 0 + .../gnome-keyring-pkcs11-pantheon.desktop | 0 + .../gnome-keyring-secrets-pantheon.desktop | 0 + .../gnome-keyring-ssh-pantheon.desktop | 0 + .../onboard-autostart-pantheon.desktop | 0 + .../orca-autostart-pantheon.desktop | 0 + .../user-dirs-update-gtk-pantheon.desktop | 0 + gnome-session/meson.build | 11 +++++++++++ + .../{pantheon.session => pantheon.session.in} | 2 +- + meson.build | 14 ++++++++++++++ + meson_options.txt | 11 +++++++++++ + xsessions/meson.build | 4 ++++ + 30 files changed, 63 insertions(+), 1 deletion(-) + create mode 100644 applications/meson.build + rename autostart/{ => gsd}/org.gnome.SettingsDaemon.A11ySettings-pantheon.desktop (100%) + rename autostart/{ => gsd}/org.gnome.SettingsDaemon.Clipboard-pantheon.desktop (100%) + rename autostart/{ => gsd}/org.gnome.SettingsDaemon.Color-pantheon.desktop (100%) + rename autostart/{ => gsd}/org.gnome.SettingsDaemon.Datetime-pantheon.desktop (100%) + rename autostart/{ => gsd}/org.gnome.SettingsDaemon.Housekeeping-pantheon.desktop (100%) + rename autostart/{ => gsd}/org.gnome.SettingsDaemon.Keyboard-pantheon.desktop (100%) + rename autostart/{ => gsd}/org.gnome.SettingsDaemon.MediaKeys-pantheon.desktop (100%) + rename autostart/{ => gsd}/org.gnome.SettingsDaemon.Mouse-pantheon.desktop (100%) + rename autostart/{ => gsd}/org.gnome.SettingsDaemon.Power-pantheon.desktop (100%) + rename autostart/{ => gsd}/org.gnome.SettingsDaemon.PrintNotifications-pantheon.desktop (100%) + rename autostart/{ => gsd}/org.gnome.SettingsDaemon.Rfkill-pantheon.desktop (100%) + rename autostart/{ => gsd}/org.gnome.SettingsDaemon.Sharing-pantheon.desktop (100%) + rename autostart/{ => gsd}/org.gnome.SettingsDaemon.Smartcard-pantheon.desktop (100%) + rename autostart/{ => gsd}/org.gnome.SettingsDaemon.Sound-pantheon.desktop (100%) + rename autostart/{ => gsd}/org.gnome.SettingsDaemon.Wacom-pantheon.desktop (100%) + rename autostart/{ => gsd}/org.gnome.SettingsDaemon.XSettings-pantheon.desktop (100%) + create mode 100644 autostart/meson.build + rename autostart/{ => ubuntu}/gnome-keyring-gpg-pantheon.desktop (100%) + rename autostart/{ => ubuntu}/gnome-keyring-pkcs11-pantheon.desktop (100%) + rename autostart/{ => ubuntu}/gnome-keyring-secrets-pantheon.desktop (100%) + rename autostart/{ => ubuntu}/gnome-keyring-ssh-pantheon.desktop (100%) + rename autostart/{ => ubuntu}/onboard-autostart-pantheon.desktop (100%) + rename autostart/{ => ubuntu}/orca-autostart-pantheon.desktop (100%) + rename autostart/{ => ubuntu}/user-dirs-update-gtk-pantheon.desktop (100%) + create mode 100644 gnome-session/meson.build + rename gnome-session/{pantheon.session => pantheon.session.in} (94%) + create mode 100644 meson.build + create mode 100644 meson_options.txt + create mode 100644 xsessions/meson.build + +diff --git a/applications/meson.build b/applications/meson.build +new file mode 100644 +index 0000000..d03b92b +--- /dev/null ++++ b/applications/meson.build +@@ -0,0 +1,4 @@ ++install_data( ++ 'defaults.list', ++ install_dir: join_paths(datadir, 'applications') ++) +diff --git a/autostart/org.gnome.SettingsDaemon.A11ySettings-pantheon.desktop b/autostart/gsd/org.gnome.SettingsDaemon.A11ySettings-pantheon.desktop +similarity index 100% +rename from autostart/org.gnome.SettingsDaemon.A11ySettings-pantheon.desktop +rename to autostart/gsd/org.gnome.SettingsDaemon.A11ySettings-pantheon.desktop +diff --git a/autostart/org.gnome.SettingsDaemon.Clipboard-pantheon.desktop b/autostart/gsd/org.gnome.SettingsDaemon.Clipboard-pantheon.desktop +similarity index 100% +rename from autostart/org.gnome.SettingsDaemon.Clipboard-pantheon.desktop +rename to autostart/gsd/org.gnome.SettingsDaemon.Clipboard-pantheon.desktop +diff --git a/autostart/org.gnome.SettingsDaemon.Color-pantheon.desktop b/autostart/gsd/org.gnome.SettingsDaemon.Color-pantheon.desktop +similarity index 100% +rename from autostart/org.gnome.SettingsDaemon.Color-pantheon.desktop +rename to autostart/gsd/org.gnome.SettingsDaemon.Color-pantheon.desktop +diff --git a/autostart/org.gnome.SettingsDaemon.Datetime-pantheon.desktop b/autostart/gsd/org.gnome.SettingsDaemon.Datetime-pantheon.desktop +similarity index 100% +rename from autostart/org.gnome.SettingsDaemon.Datetime-pantheon.desktop +rename to autostart/gsd/org.gnome.SettingsDaemon.Datetime-pantheon.desktop +diff --git a/autostart/org.gnome.SettingsDaemon.Housekeeping-pantheon.desktop b/autostart/gsd/org.gnome.SettingsDaemon.Housekeeping-pantheon.desktop +similarity index 100% +rename from autostart/org.gnome.SettingsDaemon.Housekeeping-pantheon.desktop +rename to autostart/gsd/org.gnome.SettingsDaemon.Housekeeping-pantheon.desktop +diff --git a/autostart/org.gnome.SettingsDaemon.Keyboard-pantheon.desktop b/autostart/gsd/org.gnome.SettingsDaemon.Keyboard-pantheon.desktop +similarity index 100% +rename from autostart/org.gnome.SettingsDaemon.Keyboard-pantheon.desktop +rename to autostart/gsd/org.gnome.SettingsDaemon.Keyboard-pantheon.desktop +diff --git a/autostart/org.gnome.SettingsDaemon.MediaKeys-pantheon.desktop b/autostart/gsd/org.gnome.SettingsDaemon.MediaKeys-pantheon.desktop +similarity index 100% +rename from autostart/org.gnome.SettingsDaemon.MediaKeys-pantheon.desktop +rename to autostart/gsd/org.gnome.SettingsDaemon.MediaKeys-pantheon.desktop +diff --git a/autostart/org.gnome.SettingsDaemon.Mouse-pantheon.desktop b/autostart/gsd/org.gnome.SettingsDaemon.Mouse-pantheon.desktop +similarity index 100% +rename from autostart/org.gnome.SettingsDaemon.Mouse-pantheon.desktop +rename to autostart/gsd/org.gnome.SettingsDaemon.Mouse-pantheon.desktop +diff --git a/autostart/org.gnome.SettingsDaemon.Power-pantheon.desktop b/autostart/gsd/org.gnome.SettingsDaemon.Power-pantheon.desktop +similarity index 100% +rename from autostart/org.gnome.SettingsDaemon.Power-pantheon.desktop +rename to autostart/gsd/org.gnome.SettingsDaemon.Power-pantheon.desktop +diff --git a/autostart/org.gnome.SettingsDaemon.PrintNotifications-pantheon.desktop b/autostart/gsd/org.gnome.SettingsDaemon.PrintNotifications-pantheon.desktop +similarity index 100% +rename from autostart/org.gnome.SettingsDaemon.PrintNotifications-pantheon.desktop +rename to autostart/gsd/org.gnome.SettingsDaemon.PrintNotifications-pantheon.desktop +diff --git a/autostart/org.gnome.SettingsDaemon.Rfkill-pantheon.desktop b/autostart/gsd/org.gnome.SettingsDaemon.Rfkill-pantheon.desktop +similarity index 100% +rename from autostart/org.gnome.SettingsDaemon.Rfkill-pantheon.desktop +rename to autostart/gsd/org.gnome.SettingsDaemon.Rfkill-pantheon.desktop +diff --git a/autostart/org.gnome.SettingsDaemon.Sharing-pantheon.desktop b/autostart/gsd/org.gnome.SettingsDaemon.Sharing-pantheon.desktop +similarity index 100% +rename from autostart/org.gnome.SettingsDaemon.Sharing-pantheon.desktop +rename to autostart/gsd/org.gnome.SettingsDaemon.Sharing-pantheon.desktop +diff --git a/autostart/org.gnome.SettingsDaemon.Smartcard-pantheon.desktop b/autostart/gsd/org.gnome.SettingsDaemon.Smartcard-pantheon.desktop +similarity index 100% +rename from autostart/org.gnome.SettingsDaemon.Smartcard-pantheon.desktop +rename to autostart/gsd/org.gnome.SettingsDaemon.Smartcard-pantheon.desktop +diff --git a/autostart/org.gnome.SettingsDaemon.Sound-pantheon.desktop b/autostart/gsd/org.gnome.SettingsDaemon.Sound-pantheon.desktop +similarity index 100% +rename from autostart/org.gnome.SettingsDaemon.Sound-pantheon.desktop +rename to autostart/gsd/org.gnome.SettingsDaemon.Sound-pantheon.desktop +diff --git a/autostart/org.gnome.SettingsDaemon.Wacom-pantheon.desktop b/autostart/gsd/org.gnome.SettingsDaemon.Wacom-pantheon.desktop +similarity index 100% +rename from autostart/org.gnome.SettingsDaemon.Wacom-pantheon.desktop +rename to autostart/gsd/org.gnome.SettingsDaemon.Wacom-pantheon.desktop +diff --git a/autostart/org.gnome.SettingsDaemon.XSettings-pantheon.desktop b/autostart/gsd/org.gnome.SettingsDaemon.XSettings-pantheon.desktop +similarity index 100% +rename from autostart/org.gnome.SettingsDaemon.XSettings-pantheon.desktop +rename to autostart/gsd/org.gnome.SettingsDaemon.XSettings-pantheon.desktop +diff --git a/autostart/meson.build b/autostart/meson.build +new file mode 100644 +index 0000000..265088b +--- /dev/null ++++ b/autostart/meson.build +@@ -0,0 +1,18 @@ ++autostartdir = join_paths(get_option('sysconfdir'), 'xdg', 'autostart') ++ ++if get_option('patched-gsd-autostarts') ++ install_subdir( ++ 'gsd', ++ install_dir: autostartdir, ++ strip_directory: true ++ ) ++endif ++ ++ ++if get_option('patched-ubuntu-autostarts') ++ install_subdir( ++ 'ubuntu', ++ install_dir: autostartdir, ++ strip_directory: true ++ ) ++endif +diff --git a/autostart/gnome-keyring-gpg-pantheon.desktop b/autostart/ubuntu/gnome-keyring-gpg-pantheon.desktop +similarity index 100% +rename from autostart/gnome-keyring-gpg-pantheon.desktop +rename to autostart/ubuntu/gnome-keyring-gpg-pantheon.desktop +diff --git a/autostart/gnome-keyring-pkcs11-pantheon.desktop b/autostart/ubuntu/gnome-keyring-pkcs11-pantheon.desktop +similarity index 100% +rename from autostart/gnome-keyring-pkcs11-pantheon.desktop +rename to autostart/ubuntu/gnome-keyring-pkcs11-pantheon.desktop +diff --git a/autostart/gnome-keyring-secrets-pantheon.desktop b/autostart/ubuntu/gnome-keyring-secrets-pantheon.desktop +similarity index 100% +rename from autostart/gnome-keyring-secrets-pantheon.desktop +rename to autostart/ubuntu/gnome-keyring-secrets-pantheon.desktop +diff --git a/autostart/gnome-keyring-ssh-pantheon.desktop b/autostart/ubuntu/gnome-keyring-ssh-pantheon.desktop +similarity index 100% +rename from autostart/gnome-keyring-ssh-pantheon.desktop +rename to autostart/ubuntu/gnome-keyring-ssh-pantheon.desktop +diff --git a/autostart/onboard-autostart-pantheon.desktop b/autostart/ubuntu/onboard-autostart-pantheon.desktop +similarity index 100% +rename from autostart/onboard-autostart-pantheon.desktop +rename to autostart/ubuntu/onboard-autostart-pantheon.desktop +diff --git a/autostart/orca-autostart-pantheon.desktop b/autostart/ubuntu/orca-autostart-pantheon.desktop +similarity index 100% +rename from autostart/orca-autostart-pantheon.desktop +rename to autostart/ubuntu/orca-autostart-pantheon.desktop +diff --git a/autostart/user-dirs-update-gtk-pantheon.desktop b/autostart/ubuntu/user-dirs-update-gtk-pantheon.desktop +similarity index 100% +rename from autostart/user-dirs-update-gtk-pantheon.desktop +rename to autostart/ubuntu/user-dirs-update-gtk-pantheon.desktop +diff --git a/gnome-session/meson.build b/gnome-session/meson.build +new file mode 100644 +index 0000000..b9245a1 +--- /dev/null ++++ b/gnome-session/meson.build +@@ -0,0 +1,11 @@ ++fallback_session = get_option('fallback-session') ++ ++session_configuration = configuration_data() ++session_configuration.set('FALLBACK_SESSION', fallback_session) ++ ++pantheon_session = configure_file( ++ input: 'pantheon.session.in', ++ output: '@BASENAME@', ++ configuration: session_configuration, ++ install_dir: join_paths(datadir, 'gnome-session', 'sessions') ++) +diff --git a/gnome-session/pantheon.session b/gnome-session/pantheon.session.in +similarity index 94% +rename from gnome-session/pantheon.session +rename to gnome-session/pantheon.session.in +index 1626393..7bc1814 100644 +--- a/gnome-session/pantheon.session ++++ b/gnome-session/pantheon.session.in +@@ -1,5 +1,5 @@ + [GNOME Session] + Name=Pantheon + RequiredComponents=gala;gala-daemon;org.gnome.SettingsDaemon.A11ySettings;org.gnome.SettingsDaemon.Clipboard;org.gnome.SettingsDaemon.Color;org.gnome.SettingsDaemon.Datetime;org.gnome.SettingsDaemon.Housekeeping;org.gnome.SettingsDaemon.Keyboard;org.gnome.SettingsDaemon.MediaKeys;org.gnome.SettingsDaemon.Mouse;org.gnome.SettingsDaemon.Power;org.gnome.SettingsDaemon.PrintNotifications;org.gnome.SettingsDaemon.Rfkill;org.gnome.SettingsDaemon.Sharing;org.gnome.SettingsDaemon.Smartcard;org.gnome.SettingsDaemon.Sound;org.gnome.SettingsDaemon.Wacom;org.gnome.SettingsDaemon.XSettings; +-FallbackSession=ubuntu ++FallbackSession=@FALLBACK_SESSION@ + DesktopName=Pantheon +diff --git a/meson.build b/meson.build +new file mode 100644 +index 0000000..a7d3195 +--- /dev/null ++++ b/meson.build +@@ -0,0 +1,14 @@ ++project('elementary-session-settings', ++ version: '5.0.3', ++ default_options: 'sysconfdir=/etc') ++ ++prefix = get_option('prefix') ++datadir = join_paths(prefix, get_option('datadir')) ++ ++if get_option('defaults-list') ++ subdir('applications') ++endif ++ ++subdir('autostart') ++subdir('gnome-session') ++subdir('xsessions') +diff --git a/meson_options.txt b/meson_options.txt +new file mode 100644 +index 0000000..4c5ac2d +--- /dev/null ++++ b/meson_options.txt +@@ -0,0 +1,11 @@ ++option('defaults-list', type : 'boolean', value: true, ++ description : 'Install defaults.list') ++ ++option('patched-gsd-autostarts', type : 'boolean', value: true, ++ description : 'Install patched GNOME Settings Daemon autostarts') ++ ++option('patched-ubuntu-autostarts', type : 'boolean', value: true, ++ description : 'Install patched Ubuntu autostarts') ++ ++option('fallback-session', type : 'string', value: 'ubuntu', ++ description : 'Fallback session to use for Pantheon') +diff --git a/xsessions/meson.build b/xsessions/meson.build +new file mode 100644 +index 0000000..d144291 +--- /dev/null ++++ b/xsessions/meson.build +@@ -0,0 +1,4 @@ ++install_data( ++ 'pantheon.desktop', ++ install_dir: join_paths(datadir, 'xsessions') ++)