about summary refs log tree commit diff
path: root/pkgs/desktops/gnome/nixos
diff options
context:
space:
mode:
authorJan Tojnar <jtojnar@gmail.com>2022-09-25 20:31:34 +0200
committerJan Tojnar <jtojnar@gmail.com>2022-09-26 00:52:08 +0200
commit1d4bddaed58c23fbfb4df0bf80d5ffd6803a6a34 (patch)
treeacd11b52c5ff62728e62967d4ef30d55609fd4f1 /pkgs/desktops/gnome/nixos
parentf677051b8dc0b5e2a9348941c99eea8c4b0ff28f (diff)
gnome.nixos-gsettings-override: extract from NixOS module
This will clean up the module slightly and bring it more in line with Pantheon & Cinnamon.
While at it do some other refactoring inspired by those modules:

- Correct a typo in light background attribute name.
- Rename the attribute name.
- Quote arguments.
- Extract the overridden package list and override text into variables.
- Avoid having separate copy commands for overrides from packages.
- Avoid `with` statements.
- Use `concatMapStringsSep`.
Diffstat (limited to 'pkgs/desktops/gnome/nixos')
-rw-r--r--pkgs/desktops/gnome/nixos/gsettings-overrides/default.nix55
1 files changed, 55 insertions, 0 deletions
diff --git a/pkgs/desktops/gnome/nixos/gsettings-overrides/default.nix b/pkgs/desktops/gnome/nixos/gsettings-overrides/default.nix
new file mode 100644
index 0000000000000..3110fc7939bbb
--- /dev/null
+++ b/pkgs/desktops/gnome/nixos/gsettings-overrides/default.nix
@@ -0,0 +1,55 @@
+{ lib
+, runCommand
+, gsettings-desktop-schemas
+, gnome-shell
+, glib
+, gnome-flashback
+, nixos-artwork
+, nixos-background-light ? nixos-artwork.wallpapers.simple-blue
+, nixos-background-dark ? nixos-artwork.wallpapers.simple-dark-gray
+, extraGSettingsOverrides ? ""
+, extraGSettingsOverridePackages ? [ ]
+, favoriteAppsOverride ? ""
+, flashbackEnabled ? false
+}:
+
+let
+
+  inherit (lib) concatMapStringsSep;
+
+  gsettingsOverridePackages = [
+    gsettings-desktop-schemas
+    gnome-shell
+  ] ++ lib.optionals flashbackEnabled [
+    gnome-flashback
+  ] ++ extraGSettingsOverridePackages;
+
+  gsettingsOverrides = ''
+    [org.gnome.desktop.background]
+    picture-uri='file://${nixos-background-light.gnomeFilePath}'
+    picture-uri-dark='file://${nixos-background-dark.gnomeFilePath}'
+
+    [org.gnome.desktop.screensaver]
+    picture-uri='file://${nixos-background-dark.gnomeFilePath}'
+
+    ${favoriteAppsOverride}
+
+    ${extraGSettingsOverrides}
+  '';
+
+in
+
+runCommand "gnome-gsettings-overrides" { preferLocalBuild = true; } ''
+  data_dir="$out/share/gsettings-schemas/nixos-gsettings-overrides"
+  schema_dir="$data_dir/glib-2.0/schemas"
+  mkdir -p "$schema_dir"
+
+  ${concatMapStringsSep "\n" (pkg: "cp -rf \"${glib.getSchemaPath pkg}\"/*.xml \"${glib.getSchemaPath pkg}\"/*.gschema.override \"$schema_dir\"") gsettingsOverridePackages}
+
+  chmod -R a+w "$data_dir"
+  cat - > "$schema_dir/nixos-defaults.gschema.override" <<- EOF
+  ${gsettingsOverrides}
+  EOF
+
+  ${glib.dev}/bin/glib-compile-schemas "$schema_dir"
+''