summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJan Tojnar <jtojnar@gmail.com>2022-09-25 20:31:34 +0200
committerJan Tojnar <jtojnar@gmail.com>2022-09-26 00:52:08 +0200
commit1d4bddaed58c23fbfb4df0bf80d5ffd6803a6a34 (patch)
treeacd11b52c5ff62728e62967d4ef30d55609fd4f1
parentf677051b8dc0b5e2a9348941c99eea8c4b0ff28f (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`.
-rw-r--r--nixos/modules/services/x11/desktop-managers/gnome.nix42
-rw-r--r--pkgs/desktops/gnome/default.nix2
-rw-r--r--pkgs/desktops/gnome/nixos/gsettings-overrides/default.nix55
3 files changed, 64 insertions, 35 deletions
diff --git a/nixos/modules/services/x11/desktop-managers/gnome.nix b/nixos/modules/services/x11/desktop-managers/gnome.nix
index 7bb7ef27ed57..d3db98cb4e2a 100644
--- a/nixos/modules/services/x11/desktop-managers/gnome.nix
+++ b/nixos/modules/services/x11/desktop-managers/gnome.nix
@@ -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' ]
'';
- 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-gsettings-desktop-schemas = let
- defaultPackages = with pkgs; [ gsettings-desktop-schemas gnome.gnome-shell ];
- in
- pkgs.runCommand "nixos-gsettings-desktop-schemas" { preferLocalBuild = true; }
- ''
- 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/
- '';
+ # TODO: Having https://github.com/NixOS/nixpkgs/issues/54150 would supersede this
+ nixos-gsettings-desktop-schemas = pkgs.gnome.nixos-gsettings-overrides.override {
+ inherit (cfg) extraGSettingsOverrides extraGSettingsOverridePackages favoriteAppsOverride;
+ inherit flashbackEnabled nixos-background-dark nixos-background-light;
+ };
nixos-background-info = pkgs.writeTextFile rec {
name = "nixos-background-info";
@@ -67,7 +39,7 @@ let
<wallpapers>
<wallpaper deleted="false">
<name>Blobs</name>
- <filename>${nixos-background-ligtht.gnomeFilePath}</filename>
+ <filename>${nixos-background-light.gnomeFilePath}</filename>
<filename-dark>${nixos-background-dark.gnomeFilePath}</filename-dark>
<options>zoom</options>
<shade_type>solid</shade_type>
diff --git a/pkgs/desktops/gnome/default.nix b/pkgs/desktops/gnome/default.nix
index a0561ca00300..1169bae6d67e 100644
--- a/pkgs/desktops/gnome/default.nix
+++ b/pkgs/desktops/gnome/default.nix
@@ -123,6 +123,8 @@ lib.makeScope pkgs.newScope (self: with self; {
withGnome = true;
};
+ nixos-gsettings-overrides = callPackage ./nixos/gsettings-overrides { };
+
rygel = callPackage ./core/rygel { };
simple-scan = callPackage ./core/simple-scan { };
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 000000000000..3110fc7939bb
--- /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"
+''