forked from mirrors/nixpkgs
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`.
This commit is contained in:
parent
f677051b8d
commit
1d4bddaed5
|
@ -22,42 +22,14 @@ let
|
||||||
favorite-apps=[ 'org.gnome.Epiphany.desktop', 'org.gnome.Geary.desktop', 'org.gnome.Calendar.desktop', 'org.gnome.Music.desktop', 'org.gnome.Photos.desktop', 'org.gnome.Nautilus.desktop' ]
|
favorite-apps=[ 'org.gnome.Epiphany.desktop', 'org.gnome.Geary.desktop', 'org.gnome.Calendar.desktop', 'org.gnome.Music.desktop', 'org.gnome.Photos.desktop', 'org.gnome.Nautilus.desktop' ]
|
||||||
'';
|
'';
|
||||||
|
|
||||||
nixos-background-ligtht = pkgs.nixos-artwork.wallpapers.simple-blue;
|
nixos-background-light = pkgs.nixos-artwork.wallpapers.simple-blue;
|
||||||
nixos-background-dark = pkgs.nixos-artwork.wallpapers.simple-dark-gray;
|
nixos-background-dark = pkgs.nixos-artwork.wallpapers.simple-dark-gray;
|
||||||
|
|
||||||
nixos-gsettings-desktop-schemas = let
|
# TODO: Having https://github.com/NixOS/nixpkgs/issues/54150 would supersede this
|
||||||
defaultPackages = with pkgs; [ gsettings-desktop-schemas gnome.gnome-shell ];
|
nixos-gsettings-desktop-schemas = pkgs.gnome.nixos-gsettings-overrides.override {
|
||||||
in
|
inherit (cfg) extraGSettingsOverrides extraGSettingsOverridePackages favoriteAppsOverride;
|
||||||
pkgs.runCommand "nixos-gsettings-desktop-schemas" { preferLocalBuild = true; }
|
inherit flashbackEnabled nixos-background-dark nixos-background-light;
|
||||||
''
|
};
|
||||||
mkdir -p $out/share/gsettings-schemas/nixos-gsettings-overrides/glib-2.0/schemas
|
|
||||||
|
|
||||||
${concatMapStrings
|
|
||||||
(pkg: "cp -rf ${pkg}/share/gsettings-schemas/*/glib-2.0/schemas/*.xml $out/share/gsettings-schemas/nixos-gsettings-overrides/glib-2.0/schemas\n")
|
|
||||||
(defaultPackages ++ cfg.extraGSettingsOverridePackages)}
|
|
||||||
|
|
||||||
cp -f ${pkgs.gnome.gnome-shell}/share/gsettings-schemas/*/glib-2.0/schemas/*.gschema.override $out/share/gsettings-schemas/nixos-gsettings-overrides/glib-2.0/schemas
|
|
||||||
|
|
||||||
${optionalString flashbackEnabled ''
|
|
||||||
cp -f ${pkgs.gnome.gnome-flashback}/share/gsettings-schemas/*/glib-2.0/schemas/*.gschema.override $out/share/gsettings-schemas/nixos-gsettings-overrides/glib-2.0/schemas
|
|
||||||
''}
|
|
||||||
|
|
||||||
chmod -R a+w $out/share/gsettings-schemas/nixos-gsettings-overrides
|
|
||||||
cat - > $out/share/gsettings-schemas/nixos-gsettings-overrides/glib-2.0/schemas/nixos-defaults.gschema.override <<- EOF
|
|
||||||
[org.gnome.desktop.background]
|
|
||||||
picture-uri='file://${nixos-background-ligtht.gnomeFilePath}'
|
|
||||||
picture-uri-dark='file://${nixos-background-dark.gnomeFilePath}'
|
|
||||||
|
|
||||||
[org.gnome.desktop.screensaver]
|
|
||||||
picture-uri='file://${nixos-background-dark.gnomeFilePath}'
|
|
||||||
|
|
||||||
${cfg.favoriteAppsOverride}
|
|
||||||
|
|
||||||
${cfg.extraGSettingsOverrides}
|
|
||||||
EOF
|
|
||||||
|
|
||||||
${pkgs.glib.dev}/bin/glib-compile-schemas $out/share/gsettings-schemas/nixos-gsettings-overrides/glib-2.0/schemas/
|
|
||||||
'';
|
|
||||||
|
|
||||||
nixos-background-info = pkgs.writeTextFile rec {
|
nixos-background-info = pkgs.writeTextFile rec {
|
||||||
name = "nixos-background-info";
|
name = "nixos-background-info";
|
||||||
|
@ -67,7 +39,7 @@ let
|
||||||
<wallpapers>
|
<wallpapers>
|
||||||
<wallpaper deleted="false">
|
<wallpaper deleted="false">
|
||||||
<name>Blobs</name>
|
<name>Blobs</name>
|
||||||
<filename>${nixos-background-ligtht.gnomeFilePath}</filename>
|
<filename>${nixos-background-light.gnomeFilePath}</filename>
|
||||||
<filename-dark>${nixos-background-dark.gnomeFilePath}</filename-dark>
|
<filename-dark>${nixos-background-dark.gnomeFilePath}</filename-dark>
|
||||||
<options>zoom</options>
|
<options>zoom</options>
|
||||||
<shade_type>solid</shade_type>
|
<shade_type>solid</shade_type>
|
||||||
|
|
|
@ -123,6 +123,8 @@ lib.makeScope pkgs.newScope (self: with self; {
|
||||||
withGnome = true;
|
withGnome = true;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
nixos-gsettings-overrides = callPackage ./nixos/gsettings-overrides { };
|
||||||
|
|
||||||
rygel = callPackage ./core/rygel { };
|
rygel = callPackage ./core/rygel { };
|
||||||
|
|
||||||
simple-scan = callPackage ./core/simple-scan { };
|
simple-scan = callPackage ./core/simple-scan { };
|
||||||
|
|
55
pkgs/desktops/gnome/nixos/gsettings-overrides/default.nix
Normal file
55
pkgs/desktops/gnome/nixos/gsettings-overrides/default.nix
Normal file
|
@ -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"
|
||||||
|
''
|
Loading…
Reference in a new issue