lomiri.lomiri-gsettings-overrides: init

Override the default for the launcher icon this way. Wallpaper would be settable too, but at least the VM tests don't seem happy with changing the wallpaper in any way.
This commit is contained in:
OPNA2608 2025-06-10 15:59:14 +02:00
parent 7d7f260892
commit 69d04f6780
3 changed files with 78 additions and 4 deletions

View File

@ -7,6 +7,9 @@
let
cfg = config.services.desktopManager.lomiri;
nixos-gsettings-overrides = pkgs.lomiri.lomiri-gsettings-overrides.override {
inherit (cfg) extraGSettingsOverrides extraGSettingsOverridePackages;
};
in
{
options.services.desktopManager.lomiri = {
@ -22,6 +25,18 @@ in
type = lib.types.bool;
default = config.services.xserver.displayManager.lightdm.greeters.lomiri.enable || cfg.enable;
};
extraGSettingsOverrides = lib.mkOption {
description = "Additional GSettings overrides.";
type = lib.types.lines;
default = "";
};
extraGSettingsOverridePackages = lib.mkOption {
description = "List of packages for which GSettings are overridden.";
type = lib.types.listOf lib.types.path;
default = [ ];
};
};
config = lib.mkMerge [
@ -43,10 +58,17 @@ in
"/share/wallpapers"
];
systemPackages = with pkgs.lomiri; [
lomiri-wallpapers # default + additional wallpaper
suru-icon-theme # basic indicator icons
];
# Override GSettings defaults
sessionVariables.NIX_GSETTINGS_OVERRIDES_DIR = "${nixos-gsettings-overrides}/share/gsettings-schemas/nixos-gsettings-overrides/glib-2.0/schemas";
systemPackages =
[
nixos-gsettings-overrides # GSettings default overrides
]
++ (with pkgs.lomiri; [
lomiri-wallpapers # default + additional wallpaper
suru-icon-theme # basic indicator icons
]);
};
fonts.packages = with pkgs; [

View File

@ -0,0 +1,51 @@
{
lib,
runCommand,
glib,
lomiri-schemas,
lomiri-wallpapers,
nixos-icons,
writeText,
extraGSettingsOverrides ? "",
extraGSettingsOverridePackages ? [ ],
nixos-artwork,
}:
let
# Overriding the background picture should be possible, but breaks within the VM tests.
# It results in either a grey background (prolly indicating an error somewhere)
# or hangs the session (also happens when using LSS, which sets it via AccountsService).
#
# So we can only override the launcher button details.
# Button colour: https://github.com/NixOS/nixos-artwork/blob/51a27e4a011e95cb559e37d32c44cf89b50f5154/logo/README.md#colours
gsettingsOverrides = writeText "lomiri-gschema-overrides" ''
[com.lomiri.Shell.Launcher]
logo-picture-uri='file://${nixos-icons}/share/icons/hicolor/scalable/apps/nix-snowflake-white.svg'
home-button-background-color='#5277C3'
${extraGSettingsOverrides}
'';
gsettingsOverridePackages = [
lomiri-schemas
] ++ extraGSettingsOverridePackages;
in
runCommand "lomiri-gsettings-overrides" { preferLocalBuild = true; } ''
dataDir="$out/share/gsettings-schemas/nixos-gsettings-overrides"
schemaDir="$dataDir/glib-2.0/schemas"
mkdir -p "$schemaDir"
${lib.strings.concatMapStringsSep "\n" (
pkg:
"cp -rf \"${glib.getSchemaPath pkg}\"/*.xml \"${glib.getSchemaPath pkg}\"/*.gschema.override \"$schemaDir\""
) gsettingsOverridePackages}
chmod -R a+w "$dataDir"
cp --no-preserve=mode "${gsettingsOverrides}" "$schemaDir/zz-nixos-defaults.gschema.override"
${lib.getExe' glib.dev "glib-compile-schemas"} --strict "$schemaDir" | tee gcs.log
if grep 'No schema files found' gcs.log >/dev/null; then
exit 1
fi
''

View File

@ -31,6 +31,7 @@ let
teleports = callPackage ./applications/teleports { };
#### Data
lomiri-gsettings-overrides = callPackage ./data/lomiri-gsettings-overrides { };
lomiri-schemas = callPackage ./data/lomiri-schemas { };
lomiri-session = callPackage ./data/lomiri-session { };
lomiri-sounds = callPackage ./data/lomiri-sounds { };