Commit 69d04f67 authored by OPNA2608's avatar OPNA2608
Browse files

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.
parent 7d7f2608
Loading
Loading
Loading
Loading
+26 −4
Original line number Diff line number Diff line
@@ -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; [
        # 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; [
+51 −0
Original line number Diff line number Diff line
{
  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
''
+1 −0
Original line number Diff line number Diff line
@@ -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 { };