diff options
author | Jan Tojnar <jtojnar@gmail.com> | 2022-09-25 20:31:34 +0200 |
---|---|---|
committer | Jan Tojnar <jtojnar@gmail.com> | 2022-09-26 00:52:08 +0200 |
commit | 1d4bddaed58c23fbfb4df0bf80d5ffd6803a6a34 (patch) | |
tree | acd11b52c5ff62728e62967d4ef30d55609fd4f1 /pkgs/desktops/gnome/nixos | |
parent | f677051b8dc0b5e2a9348941c99eea8c4b0ff28f (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.nix | 55 |
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" +'' |