diff --git a/modules/system/hyprland/default.nix b/modules/system/hyprland/default.nix index 2012b4b9..60128d61 100644 --- a/modules/system/hyprland/default.nix +++ b/modules/system/hyprland/default.nix @@ -47,6 +47,38 @@ in package = pkgs.libsForQt5.sddm; }; + # Define systemd service to run on boot to load avatars for sddm + systemd.services."sddm-avatar" = { + description = "Service to copy or update users Avatars at startup."; + wantedBy = [ "multi-user.target" ]; + before = [ "sddm.service" ]; + script = '' + set -eu + mkdir -p /var/lib/AccountsService/icons + for user in /home/*; do + username=$(basename "$user") + if [ -f "$user/.face.icon" ]; then + if [ ! -f "/var/lib/AccountsService/icons/$username" ]; then + cp "$user/.face.icon" "/var/lib/AccountsService/icons/$username" + else + if [ "$user/.face.icon" -nt "/var/lib/AccountsService/icons/$username" ]; then + cp "$user/.face.icon" "/var/lib/AccountsService/icons/$username" + fi + fi + fi + done + ''; + serviceConfig = { + Type = "simple"; + User = "root"; + StandardOutput = "journal+console"; + StandardError = "journal+console"; + }; + }; + + # # Ensures SDDM starts after the service. + systemd.services.sddm = { after = [ "sddm-avatar.service" ]; }; + # xwayland services.xserver = { enable = true;