about summary refs log tree commit diff
path: root/nixpkgs/pkgs/desktops/pantheon/desktop/elementary-session-settings/default.nix
diff options
context:
space:
mode:
Diffstat (limited to 'nixpkgs/pkgs/desktops/pantheon/desktop/elementary-session-settings/default.nix')
-rw-r--r--nixpkgs/pkgs/desktops/pantheon/desktop/elementary-session-settings/default.nix72
1 files changed, 46 insertions, 26 deletions
diff --git a/nixpkgs/pkgs/desktops/pantheon/desktop/elementary-session-settings/default.nix b/nixpkgs/pkgs/desktops/pantheon/desktop/elementary-session-settings/default.nix
index 7b0657bcd80b..58acdd12147e 100644
--- a/nixpkgs/pkgs/desktops/pantheon/desktop/elementary-session-settings/default.nix
+++ b/nixpkgs/pkgs/desktops/pantheon/desktop/elementary-session-settings/default.nix
@@ -10,9 +10,12 @@
 , onboard
 , at-spi2-core
 , elementary-default-settings
-, writeShellScriptBin
 , elementary-settings-daemon
 , runtimeShell
+, writeText
+, meson
+, ninja
+, git
 }:
 
 let
@@ -33,26 +36,32 @@ 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 = writeShellScriptBin "pantheon" ''
-    export XDG_CONFIG_DIRS=${elementary-settings-daemon}/etc/xdg:$XDG_CONFIG_DIRS
-    export XDG_DATA_DIRS=${placeholder "out"}/share:$XDG_DATA_DIRS
+  executable = writeScript "pantheon" ''
+    export XDG_CONFIG_DIRS=${elementary-settings-daemon}/etc/xdg:${elementary-default-settings}/etc:$XDG_CONFIG_DIRS
+    export XDG_DATA_DIRS=@out@/share:$XDG_DATA_DIRS
     exec ${gnome-session}/bin/gnome-session --session=pantheon "$@"
   '';
 
@@ -71,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
 
@@ -92,16 +107,14 @@ 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/share/xsessions
-    cp -av xsessions/pantheon.desktop $out/share/xsessions
+    mkdir -p $out/libexec
+    substitute ${executable} $out/libexec/pantheon --subst-var out
+    chmod +x $out/libexec/pantheon
   '';
 
   postFixup = ''
     substituteInPlace $out/share/xsessions/pantheon.desktop \
-      --replace "gnome-session --session=pantheon" "${executable}/bin/pantheon" \
+      --replace "gnome-session --session=pantheon" "$out/libexec/pantheon" \
       --replace "wingpanel" "${wingpanel}/bin/wingpanel"
 
     for f in $out/etc/xdg/autostart/*; do mv "$f" "''${f%.desktop}-pantheon.desktop"; done
@@ -113,6 +126,13 @@ stdenv.mkDerivation rec {
     done
   '';
 
+  passthru = {
+    updateScript = pantheon.updateScript {
+      attrPath = "pantheon.${pname}";
+    };
+    providedSessions = [ "pantheon" ];
+  };
+
   meta = with stdenv.lib; {
     description = "Session settings for elementary";
     homepage = https://github.com/elementary/session-settings;