From 1d4bddaed58c23fbfb4df0bf80d5ffd6803a6a34 Mon Sep 17 00:00:00 2001 From: Jan Tojnar Date: Sun, 25 Sep 2022 20:31:34 +0200 Subject: 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`. --- .../gnome/nixos/gsettings-overrides/default.nix | 55 ++++++++++++++++++++++ 1 file changed, 55 insertions(+) create mode 100644 pkgs/desktops/gnome/nixos/gsettings-overrides/default.nix (limited to 'pkgs/desktops/gnome/nixos') 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" +'' -- cgit 1.4.1