diff --git a/Droidnix/README.org b/Droidnix/README.org index fca2f5758..a7ff14668 100644 --- a/Droidnix/README.org +++ b/Droidnix/README.org @@ -724,6 +724,8 @@ Setting up wallpaper engine + wall[pa[per gui #+BEGIN_SRC nix :tangle generated/modules/traveldroid/desktop/rotating_wallpaper.nix :noweb tangle :mkdirp yes :eval never-html { lib, config, pkgs, flakeRoot, ... }: +{ lib, config, pkgs, flakeRoot, ... }: + let username = config.defaultUser or "henrov"; homeDir = "/home/${username}"; @@ -733,7 +735,7 @@ let in { ################################# - # System packages (global) + # System packages ################################# environment.systemPackages = [ @@ -743,24 +745,38 @@ in ]; ################################# - # Copy editable wallpaper folder + # Copy wallpaper folder (FIXED) ################################# systemd.services.copyWallpaperStuff = { description = "Copy wallpaper assets to user home"; + wantedBy = [ "multi-user.target" ]; + # 🔑 CRITICAL FIX + after = [ "systemd-user-sessions.service" ]; + wants = [ "systemd-user-sessions.service" ]; + serviceConfig = { Type = "oneshot"; }; script = '' - if [ ! -d "${wallpaperDst}" ]; then - mkdir -p "${wallpaperDst}" + # Wait until user exists (robust) + for i in $(seq 1 10); do + id ${username} && break + sleep 1 + done + + mkdir -p "${wallpaperDst}" + + # Copy only if empty (prevents overwrite) + if [ -z "$(ls -A ${wallpaperDst})" ]; then cp -r ${wallpaperSrc}/* "${wallpaperDst}/" fi - chown -R ${username}:${username} "${wallpaperDst}" + # 🔑 FIX: use user only, not group + chown -R ${username} "${wallpaperDst}" chmod -R u+rwx "${wallpaperDst}" ''; }; @@ -772,10 +788,6 @@ in _module.args.hmUsers = { ${username} = { - ################################# - # User packages - ################################# - home.packages = [ pkgs.swww pkgs.waypaper @@ -802,7 +814,7 @@ in }; ################################# - # Set initial wallpaper + # Set wallpaper ################################# systemd.user.services.swww-init = { diff --git a/Droidnix/generated/modules/traveldroid/desktop/rotating_wallpaper.nix b/Droidnix/generated/modules/traveldroid/desktop/rotating_wallpaper.nix index 9d1176b23..676f903c7 100644 --- a/Droidnix/generated/modules/traveldroid/desktop/rotating_wallpaper.nix +++ b/Droidnix/generated/modules/traveldroid/desktop/rotating_wallpaper.nix @@ -1,5 +1,7 @@ { lib, config, pkgs, flakeRoot, ... }: +{ lib, config, pkgs, flakeRoot, ... }: + let username = config.defaultUser or "henrov"; homeDir = "/home/${username}"; @@ -9,7 +11,7 @@ let in { ################################# - # System packages (global) + # System packages ################################# environment.systemPackages = [ @@ -19,24 +21,38 @@ in ]; ################################# - # Copy editable wallpaper folder + # Copy wallpaper folder (FIXED) ################################# systemd.services.copyWallpaperStuff = { description = "Copy wallpaper assets to user home"; + wantedBy = [ "multi-user.target" ]; + # 🔑 CRITICAL FIX + after = [ "systemd-user-sessions.service" ]; + wants = [ "systemd-user-sessions.service" ]; + serviceConfig = { Type = "oneshot"; }; script = '' - if [ ! -d "${wallpaperDst}" ]; then - mkdir -p "${wallpaperDst}" + # Wait until user exists (robust) + for i in $(seq 1 10); do + id ${username} && break + sleep 1 + done + + mkdir -p "${wallpaperDst}" + + # Copy only if empty (prevents overwrite) + if [ -z "$(ls -A ${wallpaperDst})" ]; then cp -r ${wallpaperSrc}/* "${wallpaperDst}/" fi - chown -R ${username}:${username} "${wallpaperDst}" + # 🔑 FIX: use user only, not group + chown -R ${username} "${wallpaperDst}" chmod -R u+rwx "${wallpaperDst}" ''; }; @@ -48,10 +64,6 @@ in _module.args.hmUsers = { ${username} = { - ################################# - # User packages - ################################# - home.packages = [ pkgs.swww pkgs.waypaper @@ -78,7 +90,7 @@ in }; ################################# - # Set initial wallpaper + # Set wallpaper ################################# systemd.user.services.swww-init = {