Skip to content

Instantly share code, notes, and snippets.

@worldofpeace
Created January 24, 2019 03:24
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save worldofpeace/35928f34bf9ec980da93e636c9e1a9c1 to your computer and use it in GitHub Desktop.
Save worldofpeace/35928f34bf9ec980da93e636c9e1a9c1 to your computer and use it in GitHub Desktop.
diff --git a/nixos/modules/services/x11/desktop-managers/elementary.nix b/nixos/modules/services/x11/desktop-managers/elementary.nix
index 4fa3bd1edfd..1f6938da56d 100644
--- a/nixos/modules/services/x11/desktop-managers/elementary.nix
+++ b/nixos/modules/services/x11/desktop-managers/elementary.nix
@@ -34,8 +34,6 @@ in
'';
apply = list: list ++
[
- pkgs.elementary.elementary-dpms-helper
- pkgs.elementary.elementary-settings-daemon # TODO: I shouldn't need to do this
pkgs.elementary.pantheon-agent-geoclue2
];
};
@@ -139,9 +137,6 @@ in
# Override GSettings schemas
environment.variables.NIX_GSETTINGS_OVERRIDES_DIR = "${nixos-gsettings-desktop-schemas}/share/gsettings-schemas/nixos-gsettings-overrides/glib-2.0/schemas";
- # So gnome-session can find the pantheon session, this also sets the default mimeapps
- environment.variables.XDG_DATA_DIRS = [ "${pkgs.elementary.elementary-session-settings}/share" ];
-
environment.variables.GNOME_SESSION_DEBUG = optionalString cfg.debug "1";
environment.variables.GIO_EXTRA_MODULES = [
diff --git a/pkgs/desktops/elementary/apps/switchboard-plugs/power/default.nix b/pkgs/desktops/elementary/apps/switchboard-plugs/power/default.nix
index f8aa942573f..b0791769659 100644
--- a/pkgs/desktops/elementary/apps/switchboard-plugs/power/default.nix
+++ b/pkgs/desktops/elementary/apps/switchboard-plugs/power/default.nix
@@ -1,5 +1,5 @@
{ stdenv, fetchFromGitHub, elementary, substituteAll, meson, ninja, pkgconfig, vala, libgee
-, elementary-dpms-helper, makeWrapper, granite, gtk3, dbus, polkit, switchboard, gobject-introspection }:
+, elementary-dpms-helper, elementary-settings-daemon, makeWrapper, granite, gtk3, dbus, polkit, switchboard, gobject-introspection }:
stdenv.mkDerivation rec {
pname = "switchboard-plug-power";
@@ -38,10 +38,16 @@ stdenv.mkDerivation rec {
patches = [
(substituteAll {
src = ./dpms-helper-exec.patch;
- inherit elementary-dpms-helper;
+ elementary_dpms_helper = "${elementary-dpms-helper}";
})
+ ./hardcode-gsettings.patch
];
+ postPatch = ''
+ substituteInPlace src/MainView.vala --subst-var-by DPMS_HELPER_GSETTINGS_PATH ${elementary-dpms-helper}/share/gsettings-schemas/${elementary-dpms-helper.name}/glib-2.0/schemas
+ substituteInPlace src/MainView.vala --subst-var-by GSD_GSETTINGS_PATH ${elementary-settings-daemon}/share/gsettings-schemas/${elementary-settings-daemon.name}/glib-2.0/schemas
+ '';
+
PKG_CONFIG_SWITCHBOARD_2_0_PLUGSDIR = "lib/switchboard";
PKG_CONFIG_DBUS_1_SYSTEM_BUS_SERVICES_DIR = "share/dbus-1/system-services";
PKG_CONFIG_DBUS_1_SYSCONFDIR = "etc";
diff --git a/pkgs/desktops/elementary/apps/switchboard-plugs/power/dpms-helper-exec.patch b/pkgs/desktops/elementary/apps/switchboard-plugs/power/dpms-helper-exec.patch
index 67c327f81f4..335d3f29626 100644
--- a/pkgs/desktops/elementary/apps/switchboard-plugs/power/dpms-helper-exec.patch
+++ b/pkgs/desktops/elementary/apps/switchboard-plugs/power/dpms-helper-exec.patch
@@ -7,7 +7,7 @@ index 1654e68..175f220 100644
private static void run_dpms_helper () {
try {
- string[] argv = { "io.elementary.dpms-helper" };
-+ string[] argv = { "@elementary-dpms-helper@/bin/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/pkgs/desktops/elementary/apps/switchboard-plugs/power/hardcode-gsettings.patch b/pkgs/desktops/elementary/apps/switchboard-plugs/power/hardcode-gsettings.patch
new file mode 100644
index 00000000000..caacdad6eda
--- /dev/null
+++ b/pkgs/desktops/elementary/apps/switchboard-plugs/power/hardcode-gsettings.patch
@@ -0,0 +1,20 @@
+diff --git a/src/MainView.vala b/src/MainView.vala
+index 1654e68..ad8fed9 100644
+--- a/src/MainView.vala
++++ b/src/MainView.vala
+@@ -46,8 +46,13 @@ public class Power.MainView : Gtk.Grid {
+
+ var label_size = new Gtk.SizeGroup (Gtk.SizeGroupMode.HORIZONTAL);
+
+- settings = new GLib.Settings ("org.gnome.settings-daemon.plugins.power");
+- elementary_dpms_settings = new GLib.Settings ("io.elementary.dpms");
++ SettingsSchemaSource gsd_sss = new SettingsSchemaSource.from_directory ("@GSD_GSETTINGS_PATH@", null, true);
++ SettingsSchema gsd_schema = gsd_sss.lookup ("org.gnome.settings-daemon.plugins.power", false);
++ settings = new GLib.Settings.full (gsd_schema, null, null);
++
++ SettingsSchemaSource dpms_sss = new SettingsSchemaSource.from_directory ("@DPMS_HELPER_GSETTINGS_PATH@", null, true);
++ SettingsSchema elementary_dpms_schema = dpms_sss.lookup ("io.elementary.dpms", false);
++ elementary_dpms_settings = new GLib.Settings.full (elementary_dpms_schema, null, null);
+
+ battery = new Battery ();
+ power_supply = new PowerSupply ();
diff --git a/pkgs/desktops/elementary/desktop/elementary-session-settings/default.nix b/pkgs/desktops/elementary/desktop/elementary-session-settings/default.nix
index d3bc4a60a23..b1a531dbeb1 100644
--- a/pkgs/desktops/elementary/desktop/elementary-session-settings/default.nix
+++ b/pkgs/desktops/elementary/desktop/elementary-session-settings/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchFromGitHub, substituteAll, writeScript, elementary, gnome-keyring, gnome-session, wingpanel, orca, at-spi2-core, elementary-default-settings }:
+{ stdenv, fetchFromGitHub, substituteAll, writeScript, elementary, gnome-keyring, gnome-session, wingpanel, orca, at-spi2-core, elementary-default-settings, writeTextFile, writeShellScriptBin, elementary-settings-daemon }:
let
@@ -35,6 +35,12 @@ let
script = "${dockitems-script}";
};
+ 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
+ exec ${gnome-session}/bin/gnome-session --session=pantheon "$@"
+ '';
+
in
stdenv.mkDerivation rec {
@@ -79,7 +85,7 @@ stdenv.mkDerivation rec {
postFixup = ''
substituteInPlace $out/share/xsessions/pantheon.desktop \
- --replace "gnome-session" "${gnome-session}/bin/gnome-session" \
+ --replace "gnome-session --session=pantheon" "${executable}/bin/pantheon" \
--replace "wingpanel" "${wingpanel}/bin/wingpanel"
for f in $out/etc/xdg/autostart/*; do mv "$f" "''${f%.desktop}-pantheon.desktop"; done
diff --git a/pkgs/desktops/elementary/services/elementary-dpms-helper/default.nix b/pkgs/desktops/elementary/services/elementary-dpms-helper/default.nix
index cc8b888a0b8..7d871000358 100644
--- a/pkgs/desktops/elementary/services/elementary-dpms-helper/default.nix
+++ b/pkgs/desktops/elementary/services/elementary-dpms-helper/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchFromGitHub, elementary, makeWrapper, lib, meson, ninja, desktop-file-utils, glib, coreutils }:
+{ stdenv, fetchFromGitHub, elementary, makeWrapper, lib, meson, ninja, desktop-file-utils, glib, coreutils, elementary-settings-daemon, wrapGAppsHook }:
stdenv.mkDerivation rec {
pname = "dpms-helper";
@@ -22,18 +22,24 @@ stdenv.mkDerivation rec {
nativeBuildInputs = [
desktop-file-utils
- glib
makeWrapper
meson
ninja
+ wrapGAppsHook
+ ];
+
+ buildInputs = [
+ elementary-settings-daemon
+ glib
];
+ preFixup = ''
+ gappsWrapperArgs+=(--prefix PATH : "${stdenv.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"
-
- wrapProgram $out/bin/io.elementary.dpms-helper \
- --prefix PATH ":" "${lib.makeBinPath [ glib.dev coreutils ]}"
'';
# See: https://github.com/elementary/dpms-helper/pull/10
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment