{ lib, runCommand, mutter, elementary-default-settings, glib, gala, gnome-settings-daemon, gtk3, elementary-dock, gsettings-desktop-schemas, extraGSettingsOverrides ? "", extraGSettingsOverridePackages ? [ ], }: let inherit (lib) concatMapStringsSep; gsettingsOverridePackages = [ elementary-dock gnome-settings-daemon gala gsettings-desktop-schemas gtk3 mutter ] ++ extraGSettingsOverridePackages; in # TODO: Having https://github.com/NixOS/nixpkgs/issues/54150 would supersede this runCommand "elementary-gsettings-desktop-schemas" { preferLocalBuild = true; } '' data_dir="$out/share/gsettings-schemas/nixos-gsettings-overrides" schema_dir="$data_dir/glib-2.0/schemas" mkdir -p "$schema_dir" cp -rf "${glib.getSchemaPath gala}"/*.gschema.override "$schema_dir" ${concatMapStringsSep "\n" ( pkg: "cp -rf \"${glib.getSchemaPath pkg}\"/*.xml \"$schema_dir\"" ) gsettingsOverridePackages} chmod -R a+w "$data_dir" cp "${glib.getSchemaPath elementary-default-settings}"/* "$schema_dir" cat - > "$schema_dir/nixos-defaults.gschema.override" <<- EOF ${extraGSettingsOverrides} EOF ${glib.dev}/bin/glib-compile-schemas $schema_dir ''