diff options
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" +'' |