about summary refs log tree commit diff
path: root/pkgs/desktops
diff options
context:
space:
mode:
Diffstat (limited to 'pkgs/desktops')
-rw-r--r--pkgs/desktops/deepin/deepin-terminal/default.nix4
-rw-r--r--pkgs/desktops/enlightenment/enlightenment.nix4
-rw-r--r--pkgs/desktops/gnome-3/apps/seahorse/default.nix72
-rw-r--r--pkgs/desktops/gnome-3/core/gnome-session/fix-paths.patch4
-rw-r--r--pkgs/desktops/gnome-3/extensions/mpris-indicator-button/default.nix32
-rw-r--r--pkgs/desktops/lxqt/libfm-qt/default.nix10
-rw-r--r--pkgs/desktops/lxqt/lxqt-archiver/default.nix8
-rw-r--r--pkgs/desktops/mate/mate-common/default.nix4
-rw-r--r--pkgs/desktops/mate/mate-utils/default.nix4
-rw-r--r--pkgs/desktops/mate/mozo/default.nix4
-rw-r--r--pkgs/desktops/mate/pluma/default.nix4
-rw-r--r--pkgs/desktops/mate/python-caja/default.nix4
-rw-r--r--pkgs/desktops/pantheon/default.nix1
-rw-r--r--pkgs/desktops/pantheon/desktop/elementary-default-settings/0001-Build-with-Meson.patch309
-rw-r--r--pkgs/desktops/pantheon/desktop/elementary-default-settings/correct-override.patch25
-rw-r--r--pkgs/desktops/pantheon/desktop/elementary-default-settings/default.nix67
-rw-r--r--pkgs/desktops/pantheon/desktop/elementary-default-settings/overrides/plank-dockitems.gschema.override2
-rw-r--r--pkgs/desktops/pantheon/desktop/elementary-gsettings-schemas/default.nix6
-rw-r--r--pkgs/desktops/pantheon/desktop/elementary-session-settings/default-elementary-dockitems.desktop8
-rw-r--r--pkgs/desktops/pantheon/desktop/elementary-session-settings/default.nix61
-rw-r--r--pkgs/desktops/pantheon/desktop/elementary-session-settings/meson.patch272
21 files changed, 784 insertions, 121 deletions
diff --git a/pkgs/desktops/deepin/deepin-terminal/default.nix b/pkgs/desktops/deepin/deepin-terminal/default.nix
index 11032fba0e79..bb2ab7bc8a16 100644
--- a/pkgs/desktops/deepin/deepin-terminal/default.nix
+++ b/pkgs/desktops/deepin/deepin-terminal/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchFromGitHub, pkgconfig, cmake, ninja, vala,
+{ stdenv, fetchFromGitHub, pkgconfig, cmake, ninja, vala_0_44,
   gettext, at-spi2-core, dbus, epoxy, expect, gtk3, json-glib,
   libXdmcp, libgee, libpthreadstubs, librsvg, libsecret, libtasn1,
   libxcb, libxkbcommon, p11-kit, pcre, vte, wnck, libselinux, gnutls, pcre2,
@@ -19,7 +19,7 @@ stdenv.mkDerivation rec {
     pkgconfig
     cmake
     ninja
-    vala
+    vala_0_44 # xcb.vapi:411.3-411.48: error: missing return statement at end of subroutine body
     gettext
     libselinux libsepol utillinux # required by gio
     deepin.setupHook
diff --git a/pkgs/desktops/enlightenment/enlightenment.nix b/pkgs/desktops/enlightenment/enlightenment.nix
index a5724385e41b..99d1236ea881 100644
--- a/pkgs/desktops/enlightenment/enlightenment.nix
+++ b/pkgs/desktops/enlightenment/enlightenment.nix
@@ -9,11 +9,11 @@
 
 stdenv.mkDerivation rec {
   pname = "enlightenment";
-  version = "0.23.0";
+  version = "0.23.1";
 
   src = fetchurl {
     url = "http://download.enlightenment.org/rel/apps/${pname}/${pname}-${version}.tar.xz";
-    sha256 = "1y7x594gvyvl5zbb1rnf3clj2pm6j97n8wl5mp9x6xjmhx0d1idq";
+    sha256 = "0d1cyl07w9pvi2pf029kablazks2q9aislzl46b6fq5m1465jc75";
   };
 
   nativeBuildInputs = [
diff --git a/pkgs/desktops/gnome-3/apps/seahorse/default.nix b/pkgs/desktops/gnome-3/apps/seahorse/default.nix
index 670cbabf3623..c6d5b22f9348 100644
--- a/pkgs/desktops/gnome-3/apps/seahorse/default.nix
+++ b/pkgs/desktops/gnome-3/apps/seahorse/default.nix
@@ -1,39 +1,65 @@
-{ stdenv, fetchurl, fetchpatch, vala, meson, ninja, libpwquality
-, pkgconfig, gtk3, glib, gobject-introspection
-, wrapGAppsHook, itstool, gnupg, libsoup
-, gnome3, gpgme, python3, openldap, gcr
-, libsecret, avahi, p11-kit, openssh, gsettings-desktop-schemas }:
+{ stdenv
+, fetchurl
+, fetchpatch
+, vala
+, meson
+, ninja
+, libpwquality
+, pkgconfig
+, gtk3
+, glib
+, wrapGAppsHook
+, itstool
+, gnupg
+, libsoup
+, gnome3
+, gpgme
+, python3
+, openldap
+, gcr
+, libsecret
+, avahi
+, p11-kit
+, openssh
+, gsettings-desktop-schemas
+}:
 
 stdenv.mkDerivation rec {
   pname = "seahorse";
-  version = "3.32.2";
+  version = "3.34";
 
   src = fetchurl {
     url = "mirror://gnome/sources/${pname}/${stdenv.lib.versions.majorMinor version}/${pname}-${version}.tar.xz";
-    sha256 = "0d8zdzmlz7fjv9xl20zl4ckidf465mvdjnbpxy3k08y9iw423q4x";
+    sha256 = "16sfnqrdlr5xx6kixx2ln1mva7nngjlw1k3f5n454vyaigffjh2v";
   };
 
-  patches = [
-    # fix build with recent libsecret
-    # https://gitlab.gnome.org/GNOME/seahorse/merge_requests/83
-    (fetchpatch {
-      url = https://gitlab.gnome.org/GNOME/seahorse/commit/d9db29db567012b7c72e85e1be1fbf55fcc9b667.patch;
-      sha256 = "004zgs0n0hfc4yfmiy9lj37d67m7wxdf42sf7bzn2c3hcvpl0rcj";
-    })
-  ];
-
   doCheck = true;
 
   nativeBuildInputs = [
-    meson ninja pkgconfig vala itstool wrapGAppsHook
-    python3 gobject-introspection
+    meson
+    ninja
+    pkgconfig
+    vala
+    itstool
+    wrapGAppsHook
+    python3
   ];
+
   buildInputs = [
-    gtk3 glib gcr
-    gsettings-desktop-schemas gnupg
-    gnome3.adwaita-icon-theme gpgme
-    libsecret avahi libsoup p11-kit
-    openssh openldap libpwquality
+    gtk3
+    glib
+    gcr
+    gsettings-desktop-schemas
+    gnupg
+    gnome3.adwaita-icon-theme
+    gpgme
+    libsecret
+    avahi
+    libsoup
+    p11-kit
+    openssh
+    openldap
+    libpwquality
   ];
 
   postPatch = ''
diff --git a/pkgs/desktops/gnome-3/core/gnome-session/fix-paths.patch b/pkgs/desktops/gnome-3/core/gnome-session/fix-paths.patch
index fe4feaf70857..2399c656016a 100644
--- a/pkgs/desktops/gnome-3/core/gnome-session/fix-paths.patch
+++ b/pkgs/desktops/gnome-3/core/gnome-session/fix-paths.patch
@@ -1,6 +1,6 @@
 --- a/gnome-session/gnome-session.in
 +++ b/gnome-session/gnome-session.in
-@@ -3,11 +3,11 @@
+@@ -3,11 +3,13 @@
  if [ "x$XDG_SESSION_TYPE" = "xwayland" ] &&
     [ "x$XDG_SESSION_CLASS" != "xgreeter" ] &&
     [  -n "$SHELL" ] &&
@@ -12,6 +12,8 @@
 +   ! (echo "$SHELL" | @grep@ -q "nologin"); then
    if [ "$1" != '-l' ]; then
 -    exec bash -c "exec -l '$SHELL' -c '$0 -l $*'"
++    # Make sure the shell actually sets up the environment
++    unset __NIXOS_SET_ENVIRONMENT_DONE
 +    exec @bash@ -c "exec -l '$SHELL' -c '$0 -l $*'"
    else
      shift
diff --git a/pkgs/desktops/gnome-3/extensions/mpris-indicator-button/default.nix b/pkgs/desktops/gnome-3/extensions/mpris-indicator-button/default.nix
new file mode 100644
index 000000000000..dca346c6cce4
--- /dev/null
+++ b/pkgs/desktops/gnome-3/extensions/mpris-indicator-button/default.nix
@@ -0,0 +1,32 @@
+{ stdenv
+, fetchFromGitHub
+, gnome3
+}:
+
+stdenv.mkDerivation rec {
+  pname = "gnome-shell-extension-mpris-indicator-button-unstable";
+  version = "2019-09-29";
+
+  src = fetchFromGitHub {
+    owner = "JasonLG1979";
+    repo = "gnome-shell-extension-mpris-indicator-button";
+    rev = "6cdc28a8bde98f25618b27ee48280996e2b4a0f8";
+    sha256 = "1n3sh3phpa75y3vpc09wnzhis0m92zli1m46amzsdbvmk6gkifif";
+  };
+
+  uuid = "mprisindicatorbutton@JasonLG1979.github.io";
+
+  installPhase = ''
+    mkdir -p $out/share/gnome-shell/extensions
+    cp -r ${uuid} $out/share/gnome-shell/extensions
+  '';
+
+  meta = with stdenv.lib; {
+    description = "A simple MPRIS indicator button for GNOME Shell";
+    license = licenses.gpl3;
+    maintainers = with maintainers; [ worldofpeace ];
+    platforms = gnome3.gnome-shell.meta.platforms;
+    homepage = "https://github.com/JasonLG1979/gnome-shell-extension-mpris-indicator-button";
+    broken = versionOlder gnome3.gnome-shell.version "3.34";
+  };
+}
diff --git a/pkgs/desktops/lxqt/libfm-qt/default.nix b/pkgs/desktops/lxqt/libfm-qt/default.nix
index c214f0b3dcd4..39cece7724eb 100644
--- a/pkgs/desktops/lxqt/libfm-qt/default.nix
+++ b/pkgs/desktops/lxqt/libfm-qt/default.nix
@@ -5,14 +5,14 @@
 }:
 
 mkDerivation rec {
-  pname = "libfm-qt";
-  version = "0.14.1";
+  pname = "libfm-qt-unstable";
+  version = "2019-09-22";
 
   src = fetchFromGitHub {
     owner = "lxqt";
-    repo = pname;
-    rev = version;
-    sha256 = "00rn5i16h659zyp1dx213nc3jz7rx9phiw71zf6nspxzxsb8w2sc";
+    repo = "libfm-qt";
+    rev = "7c94e9efb996df0602f1f2b34b0216ba9b6df498";
+    sha256 = "1fnli2kh7n4hxmqwcb1n06lyk67d9a2fx6z70gas5jzym7r2h5vw";
   };
 
   nativeBuildInputs = [
diff --git a/pkgs/desktops/lxqt/lxqt-archiver/default.nix b/pkgs/desktops/lxqt/lxqt-archiver/default.nix
index 07a603364d78..205ea2fd2016 100644
--- a/pkgs/desktops/lxqt/lxqt-archiver/default.nix
+++ b/pkgs/desktops/lxqt/lxqt-archiver/default.nix
@@ -3,13 +3,13 @@
 mkDerivation rec {
   # pname = "lxqt-archiver";
   pname = "lxqt-archiver-unstable";
-  version = "2019-09-15";
+  version = "2019-09-25";
 
   src = fetchFromGitHub {
     owner = "lxqt";
-    repo = pname;
-    rev = "1e657b6a3e68c32f042d583872eca39a5d4b820f";
-    sha256 = "1vc9pzxrhznp65gdkzj3fzzivfqy712mwcxp3r25ar59d54alfpj";
+    repo = "lxqt-archiver";
+    rev = "62501255434b2ba6a8fd043a5af13dc0df038a5b";
+    sha256 = "1af58k68karmnay7xgngzlmcgkmvx6hay5m1xbl5id9hh16n20in";
   };
 
   nativeBuildInputs = [
diff --git a/pkgs/desktops/mate/mate-common/default.nix b/pkgs/desktops/mate/mate-common/default.nix
index f85dd632bd16..5eacbd081460 100644
--- a/pkgs/desktops/mate/mate-common/default.nix
+++ b/pkgs/desktops/mate/mate-common/default.nix
@@ -2,11 +2,11 @@
 
 stdenv.mkDerivation rec {
   pname = "mate-common";
-  version = "1.22.0";
+  version = "1.22.2";
 
   src = fetchurl {
     url = "http://pub.mate-desktop.org/releases/${stdenv.lib.versions.majorMinor version}/${pname}-${version}.tar.xz";
-    sha256 = "11lwckndizawbq993ws8lqp59vsc873zri0m8s1i5zyc4qx9f69z";
+    sha256 = "1xx7qrw8kc6355r1a1nybncf8s2rxjb2nqzw0gv2r5j5sqx8fzgf";
   };
 
   meta = {
diff --git a/pkgs/desktops/mate/mate-utils/default.nix b/pkgs/desktops/mate/mate-utils/default.nix
index 7775173611e2..adb8fef27f59 100644
--- a/pkgs/desktops/mate/mate-utils/default.nix
+++ b/pkgs/desktops/mate/mate-utils/default.nix
@@ -2,11 +2,11 @@
 
 stdenv.mkDerivation rec {
   pname = "mate-utils";
-  version = "1.22.1";
+  version = "1.22.2";
 
   src = fetchurl {
     url = "http://pub.mate-desktop.org/releases/${stdenv.lib.versions.majorMinor version}/${pname}-${version}.tar.xz";
-    sha256 = "0768y6x33ljc9dxjlfmvplsn4lrxj5xhjddbyab9h6pqav8527rg";
+    sha256 = "1i6fnm3y1hj8r57x4jpc4ixqs77zln8f7477d0haypflxm3s4kjr";
   };
 
   nativeBuildInputs = [
diff --git a/pkgs/desktops/mate/mozo/default.nix b/pkgs/desktops/mate/mozo/default.nix
index 36f8fecb1925..9d61f45e18ea 100644
--- a/pkgs/desktops/mate/mozo/default.nix
+++ b/pkgs/desktops/mate/mozo/default.nix
@@ -2,14 +2,14 @@
 
 python3.pkgs.buildPythonApplication rec {
   pname = "mozo";
-  version = "1.22.1";
+  version = "1.22.2";
 
   format = "other";
   doCheck = false;
 
   src = fetchurl {
     url = "http://pub.mate-desktop.org/releases/${stdenv.lib.versions.majorMinor version}/${pname}-${version}.tar.xz";
-    sha256 = "0yffp7p3b6ynpf7ck21klym7h09l35amnyahm71dxbv2kzj6hlqh";
+    sha256 = "1lzcwsz940v218frwzhpywp1an9x3cgfvqr7r8dplpdapvd0khrs";
   };
 
   nativeBuildInputs = [ pkgconfig intltool gobject-introspection wrapGAppsHook ];
diff --git a/pkgs/desktops/mate/pluma/default.nix b/pkgs/desktops/mate/pluma/default.nix
index cfbe33dd380d..e0b61fd35cbe 100644
--- a/pkgs/desktops/mate/pluma/default.nix
+++ b/pkgs/desktops/mate/pluma/default.nix
@@ -2,11 +2,11 @@
 
 stdenv.mkDerivation rec {
   pname = "pluma";
-  version = "1.22.1";
+  version = "1.22.2";
 
   src = fetchurl {
     url = "http://pub.mate-desktop.org/releases/${stdenv.lib.versions.majorMinor version}/${pname}-${version}.tar.xz";
-    sha256 = "14d5c5fg31d7br9h1y3gdcr53j4sxlgybf326jvdcw8mgy91k3dg";
+    sha256 = "1gsj8grdhzb1jvl5zwd8zjc9cj9ys2ndny04gy4bbh80sjaj6xva";
   };
 
   nativeBuildInputs = [
diff --git a/pkgs/desktops/mate/python-caja/default.nix b/pkgs/desktops/mate/python-caja/default.nix
index 42a8e328a161..d861ddbf4d7e 100644
--- a/pkgs/desktops/mate/python-caja/default.nix
+++ b/pkgs/desktops/mate/python-caja/default.nix
@@ -2,11 +2,11 @@
 
 stdenv.mkDerivation rec {
   pname = "python-caja";
-  version = "1.22.0";
+  version = "1.22.1";
 
   src = fetchurl {
     url = "http://pub.mate-desktop.org/releases/${stdenv.lib.versions.majorMinor version}/${pname}-${version}.tar.xz";
-    sha256 = "1zwdjvxci72j0181nlfq6912lw3aq8j3746brlp7wlzn22qp7b0k";
+    sha256 = "07hkvs4a6anrvh28zjsrj8anbcz32p19hslhq66yhcvh0hh4kvqk";
   };
 
   nativeBuildInputs = [
diff --git a/pkgs/desktops/pantheon/default.nix b/pkgs/desktops/pantheon/default.nix
index aed08c35a801..57c2c30c9d20 100644
--- a/pkgs/desktops/pantheon/default.nix
+++ b/pkgs/desktops/pantheon/default.nix
@@ -18,6 +18,7 @@ lib.makeScope pkgs.newScope (self: with self; {
   ];
 
   desktop = [
+    elementary-default-settings
     elementary-session-settings
     elementary-shortcut-overlay
     gala
diff --git a/pkgs/desktops/pantheon/desktop/elementary-default-settings/0001-Build-with-Meson.patch b/pkgs/desktops/pantheon/desktop/elementary-default-settings/0001-Build-with-Meson.patch
new file mode 100644
index 000000000000..3a0b3812450c
--- /dev/null
+++ b/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/pkgs/desktops/pantheon/desktop/elementary-default-settings/correct-override.patch b/pkgs/desktops/pantheon/desktop/elementary-default-settings/correct-override.patch
deleted file mode 100644
index 1b2dc835706d..000000000000
--- a/pkgs/desktops/pantheon/desktop/elementary-default-settings/correct-override.patch
+++ /dev/null
@@ -1,25 +0,0 @@
-diff --git a/overrides/default-settings.gschema.override b/overrides/default-settings.gschema.override
-index 1aef29c..08de164 100644
---- a/overrides/default-settings.gschema.override
-+++ b/overrides/default-settings.gschema.override
-@@ -1,5 +1,5 @@
- [net.launchpad.plank.dock.settings]
--dock-items=['gala-multitaskingview.dockitem','org.gnome.Epiphany.dockitem','org.pantheon.mail.dockitem','io.elementary.calendar.dockitem','io.elementary.music.dockitem','io.elementary.videos.dockitem','io.elementary.photos.dockitem','io.elementary.switchboard.dockitem','io.elementary.appcenter.dockitem']
-+dock-items=['gala-multitaskingview.dockitem','org.gnome.Epiphany.dockitem','org.gnome.Geary.dockitem','io.elementary.calendar.dockitem','io.elementary.music.dockitem','io.elementary.videos.dockitem','io.elementary.photos.dockitem','io.elementary.switchboard.dockitem']
- hide-delay=250
- hide-mode='window-dodge'
- show-dock-item=false
-@@ -8,13 +8,6 @@ theme='Gtk+'
- [org.freedesktop.ibus.general.hotkey]
- triggers=['<Control>space']
- 
--[org.gnome.desktop.background]
--draw-background=true
--picture-options='zoom'
--picture-uri='file:///usr/share/backgrounds/elementaryos-default'
--primary-color='#000000'
--show-desktop-icons=false
--
- [org.gnome.desktop.datetime]
- automatic-timezone=true
- 
diff --git a/pkgs/desktops/pantheon/desktop/elementary-default-settings/default.nix b/pkgs/desktops/pantheon/desktop/elementary-default-settings/default.nix
index a1a69ee303fe..f20f11974993 100644
--- a/pkgs/desktops/pantheon/desktop/elementary-default-settings/default.nix
+++ b/pkgs/desktops/pantheon/desktop/elementary-default-settings/default.nix
@@ -1,11 +1,20 @@
 { stdenv
 , fetchFromGitHub
 , pantheon
+, meson
+, ninja
+, nixos-artwork
+, glib
+, pkgconfig
+, dbus
+, polkit
+, accountsservice
+, python3
 }:
 
 stdenv.mkDerivation rec {
   pname = "elementary-default-settings";
-  version = "5.1.0";
+  version = "5.1.1";
 
   repoName = "default-settings";
 
@@ -13,7 +22,7 @@ stdenv.mkDerivation rec {
     owner = "elementary";
     repo = repoName;
     rev = version;
-    sha256 = "0l73py4rr56i4dalb2wh1c6qiwmcjkm0l1j75jp5agcnxldh5wym";
+    sha256 = "10sdy8v34y6bgb3mabwy7k3b5dbqrnab504dvhashpfxr9n9xncy";
   };
 
   passthru = {
@@ -24,24 +33,54 @@ stdenv.mkDerivation rec {
   };
 
   patches = [
-    ./correct-override.patch
+    # https://github.com/elementary/default-settings/pull/119
+    ./0001-Build-with-Meson.patch
   ];
 
-  dontBuild = true;
-  dontConfigure = true;
+  nativeBuildInputs = [
+    accountsservice
+    dbus
+    glib # polkit requires
+    meson
+    ninja
+    pkgconfig
+    polkit
+    python3
+  ];
+
+  mesonFlags = [
+    "--sysconfdir=${placeholder "out"}/etc"
+    "-Ddefault-wallpaper=${nixos-artwork.wallpapers.simple-dark-gray}/share/artwork/gnome/nix-wallpaper-simple-dark-gray.png"
+    "-Dplank-dockitems=false"
+  ];
 
-  installPhase = ''
-    mkdir -p $out/etc/gtk-3.0
-    cp -av settings.ini $out/etc/gtk-3.0
+  postPatch = ''
+    chmod +x meson/post_install.py
+    patchShebangs meson/post_install.py
+  '';
 
-    mkdir -p $out/share/glib-2.0/schemas
-    cp -av overrides/default-settings.gschema.override $out/share/glib-2.0/schemas/20-io.elementary.desktop.gschema.override
+  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
+    # TODO: is this needed or installed upstream?
+    install -D ${./io.elementary.greeter.whitelist} $out/etc/wingpanel.d/io.elementary.greeter.whitelist
+  '';
 
-    mkdir $out/etc/wingpanel.d
-    cp -avr ${./io.elementary.greeter.whitelist} $out/etc/wingpanel.d/io.elementary.greeter.whitelist
+  postFixup = ''
+    # https://github.com/elementary/default-settings/issues/55
+    rm -rf $out/share/plymouth
+    rm -rf $out/share/cups
 
-    mkdir -p $out/share/elementary/config/plank/dock1
-    cp -avr ${./launchers} $out/share/elementary/config/plank/dock1/launchers
+    rm -rf $out/share/applications
   '';
 
   meta = with stdenv.lib; {
diff --git a/pkgs/desktops/pantheon/desktop/elementary-default-settings/overrides/plank-dockitems.gschema.override b/pkgs/desktops/pantheon/desktop/elementary-default-settings/overrides/plank-dockitems.gschema.override
new file mode 100644
index 000000000000..671448745c50
--- /dev/null
+++ b/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/pkgs/desktops/pantheon/desktop/elementary-gsettings-schemas/default.nix b/pkgs/desktops/pantheon/desktop/elementary-gsettings-schemas/default.nix
index 9fc4418e7ca1..38e57539de42 100644
--- a/pkgs/desktops/pantheon/desktop/elementary-gsettings-schemas/default.nix
+++ b/pkgs/desktops/pantheon/desktop/elementary-gsettings-schemas/default.nix
@@ -41,13 +41,9 @@ runCommand "elementary-gsettings-desktop-schemas" {}
      ${concatMapStrings (pkg: "cp -rf ${glib.getSchemaPath pkg}/*.xml $schema_dir\n") gsettingsOverridePackages}
 
      chmod -R a+w $out/share/gsettings-schemas/nixos-gsettings-overrides
-     cp ${elementary-default-settings}/share/glib-2.0/schemas/20-io.elementary.desktop.gschema.override $schema_dir
+     cp ${glib.getSchemaPath elementary-default-settings}/* $schema_dir
 
      cat - > $schema_dir/nixos-defaults.gschema.override <<- EOF
-     [org.gnome.desktop.background]
-     picture-uri='file://${nixos-artwork.wallpapers.simple-dark-gray}/share/artwork/gnome/nix-wallpaper-simple-dark-gray.png'
-     primary-color='#000000'
-
      ${extraGSettingsOverrides}
      EOF
 
diff --git a/pkgs/desktops/pantheon/desktop/elementary-session-settings/default-elementary-dockitems.desktop b/pkgs/desktops/pantheon/desktop/elementary-session-settings/default-elementary-dockitems.desktop
deleted file mode 100644
index 517a9457ae10..000000000000
--- a/pkgs/desktops/pantheon/desktop/elementary-session-settings/default-elementary-dockitems.desktop
+++ /dev/null
@@ -1,8 +0,0 @@
-[Desktop Entry]
-Type=Application
-Name=Instantiate Default elementary dockitems
-Exec=@script@
-StartupNotify=false
-NoDisplay=true
-OnlyShowIn=Pantheon;
-X-GNOME-Autostart-Phase=EarlyInitialization
diff --git a/pkgs/desktops/pantheon/desktop/elementary-session-settings/default.nix b/pkgs/desktops/pantheon/desktop/elementary-session-settings/default.nix
index 69a1efa3e9e9..ab7333212a05 100644
--- a/pkgs/desktops/pantheon/desktop/elementary-session-settings/default.nix
+++ b/pkgs/desktops/pantheon/desktop/elementary-session-settings/default.nix
@@ -12,6 +12,10 @@
 , elementary-default-settings
 , elementary-settings-daemon
 , runtimeShell
+, writeText
+, meson
+, ninja
+, git
 }:
 
 let
@@ -32,22 +36,28 @@ let
     #!${runtimeShell}
 
     elementary_default_settings="${elementary-default-settings}"
-    dock_items="$elementary_default_settings/share/elementary/config/plank/dock1/launchers"/*
+    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/
+        mkdir -p "$HOME/.config/plank/dock1/launchers"
+        cp -r --no-preserve=mode,ownership $dock_items "$HOME/.config/plank/dock1/launchers/"
     else
         echo "Plank Dockitems already instantiated"
     fi
   '';
 
-  dockitemAutostart = substituteAll {
-    src = ./default-elementary-dockitems.desktop;
-    script = dockitems-script;
-  };
+  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" ''
     export XDG_CONFIG_DIRS=${elementary-settings-daemon}/etc/xdg:${elementary-default-settings}/etc:$XDG_CONFIG_DIRS
@@ -70,17 +80,23 @@ stdenv.mkDerivation rec {
     sha256 = "1vrjm7bklkfv0dyafm312v4hxzy6lb7p1ny4ijkn48kr719gc71k";
   };
 
-  passthru = {
-    updateScript = pantheon.updateScript {
-      inherit repoName;
-      attrPath = pname;
-    };
-  };
+  postPatch = ''
+    ${git}/bin/git apply --verbose ${./meson.patch}
+  '';
+
+  nativeBuildInputs = [
+    meson
+    ninja
+  ];
 
-  dontBuild = true;
-  dontConfigure = true;
+  mesonFlags = [
+    "-Ddefaults-list=false"
+    "-Dpatched-gsd-autostarts=false"
+    "-Dpatched-ubuntu-autostarts=false"
+    "-Dfallback-session=GNOME"
+  ];
 
-  installPhase = ''
+  postInstall = ''
     mkdir -p $out/share/applications
     cp -av ${./pantheon-mimeapps.list} $out/share/applications/pantheon-mimeapps.list
 
@@ -91,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 = ''
@@ -116,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 <worldofpeace@protonmail.ch>
+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')
++)