aboutsummaryrefslogtreecommitdiff
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 7b0657bcd80..ab7333212a0 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 {
+ inherit repoName;
+ attrPath = pname;
+ };
+ };
+
meta = with stdenv.lib; {
description = "Session settings for elementary";
homepage = https://github.com/elementary/session-settings;