diff --git a/Droidnix/README.org b/Droidnix/README.org index b916c58be..2082ea000 100644 --- a/Droidnix/README.org +++ b/Droidnix/README.org @@ -720,24 +720,40 @@ in #+END_SRC ** =generated/modules/traveldroid/desktop/wallpaper.nix= -Setting up wallpaper engine + wall[pa[per gui +Setting up wallpaper engine + wallpaper gui #+BEGIN_SRC nix :tangle generated/modules/traveldroid/desktop/wallpaper.nix :noweb tangle :mkdirp yes :eval never-html -{ lib, config, pkgs, flakeRoot, ... }: - +{ lib, config, pkgs, flakeRoot, home-manager, inputs, ... }: let username = config.defaultUser or "henrov"; homeDir = "/home/${username}"; - - wallpaperSrc = "${flakeRoot}/assets/traveldroid/Wallpapers"; wallpaperDst = "${homeDir}/Wallpapers"; - # Script to set random wallpapers per workspace - setWallpaperScript = '' +in +{ + environment.systemPackages = with pkgs; [ + swww # For setting wallpapers + waypaper # Optional, if you use it + jq # Needed by the script + ]; + + # Copy Wallpapers from flake root to user's home + systemd.user.services.copyWallpapers = { + description = "Copy Wallpapers to home"; + after = [ "network.target" ]; + serviceConfig.Type = "oneshot"; + serviceConfig.ExecStart = '' + mkdir -p ${wallpaperDst} + cp -r ${flakeRoot}/assets/traveldroid/Wallpapers/* ${wallpaperDst}/ + chown -R ${username}:${username} ${wallpaperDst} + ''; + install.wantedBy = [ "default.target" ]; + }; + + # Place the script in the user's home + home.file.".config/wallpapers/set-wallpapers-per-workspace.sh".text = '' #!/usr/bin/env bash WALLS=("${wallpaperDst}"/*) NUM_WALLS=${#WALLS[@]} - - # Get workspace IDs WS_IDS=($(hyprctl workspaces -j | jq -r '.[].id')) for i in "${!WS_IDS[@]}"; do @@ -745,93 +761,6 @@ let swww img "$WALL" --workspace "${WS_IDS[$i]}" --transition-type fade slide blend done ''; -in -{ - ############################# - # System packages - ############################# - environment.systemPackages = [ - pkgs.swww - pkgs.waypaper - pkgs.rsync - pkgs.jq - ]; - - ############################# - # Copy wallpaper folder (unchanged) - ############################# - systemd.services.copyWallpaperStuff = { - description = "Copy wallpaper assets to user home"; - wantedBy = [ "multi-user.target" ]; - after = [ "systemd-user-sessions.service" ]; - wants = [ "systemd-user-sessions.service" ]; - - serviceConfig.Type = "oneshot"; - - script = '' - for i in $(seq 1 10); do - id ${username} && break - sleep 1 - done - - mkdir -p "${wallpaperDst}" - if [ -z "$(ls -A ${wallpaperDst})" ]; then - cp -r ${wallpaperSrc}/* "${wallpaperDst}/" - fi - - chown -R ${username} "${wallpaperDst}" - chmod -R u+rwx "${wallpaperDst}" - ''; - }; - - ############################# - # Home Manager integration - ############################# - _module.args.hmUsers = { - ${username} = { - - home.packages = [ - pkgs.swww - pkgs.waypaper - pkgs.jq - ]; - - # Copy script to user home - home.file = { - ".config/wallpapers/set-wallpapers-per-workspace.sh".text = setWallpaperScript; - }; - - # swww daemon - systemd.user.services.swww-daemon = { - Unit = { - Description = "swww wallpaper daemon"; - After = [ "graphical-session.target" ]; - }; - Service = { - ExecStart = "${pkgs.swww}/bin/swww-daemon"; - Restart = "on-failure"; - }; - Install = { - WantedBy = [ "graphical-session.target" ]; - }; - }; - - # Initialize wallpapers per workspace - systemd.user.services.swww-init = { - Unit = { - Description = "Initialize wallpapers per workspace"; - After = [ "swww-daemon.service" ]; - }; - Service = { - Type = "oneshot"; - ExecStart = "${homeDir}/.config/wallpapers/set-wallpapers-per-workspace.sh"; - }; - Install = { - WantedBy = [ "graphical-session.target" ]; - }; - }; - }; - }; } #+END_SRC diff --git a/Droidnix/generated/modules/traveldroid/desktop/wallpaper.nix b/Droidnix/generated/modules/traveldroid/desktop/wallpaper.nix index 4c981fd07..93b942557 100644 --- a/Droidnix/generated/modules/traveldroid/desktop/wallpaper.nix +++ b/Droidnix/generated/modules/traveldroid/desktop/wallpaper.nix @@ -1,19 +1,35 @@ -{ lib, config, pkgs, flakeRoot, ... }: - +{ lib, config, pkgs, flakeRoot, home-manager, inputs, ... }: let username = config.defaultUser or "henrov"; homeDir = "/home/${username}"; - - wallpaperSrc = "${flakeRoot}/assets/traveldroid/Wallpapers"; wallpaperDst = "${homeDir}/Wallpapers"; - # Script to set random wallpapers per workspace - setWallpaperScript = '' +in +{ + environment.systemPackages = with pkgs; [ + swww # For setting wallpapers + waypaper # Optional, if you use it + jq # Needed by the script + ]; + + # Copy Wallpapers from flake root to user's home + systemd.user.services.copyWallpapers = { + description = "Copy Wallpapers to home"; + after = [ "network.target" ]; + serviceConfig.Type = "oneshot"; + serviceConfig.ExecStart = '' + mkdir -p ${wallpaperDst} + cp -r ${flakeRoot}/assets/traveldroid/Wallpapers/* ${wallpaperDst}/ + chown -R ${username}:${username} ${wallpaperDst} + ''; + install.wantedBy = [ "default.target" ]; + }; + + # Place the script in the user's home + home.file.".config/wallpapers/set-wallpapers-per-workspace.sh".text = '' #!/usr/bin/env bash WALLS=("${wallpaperDst}"/*) NUM_WALLS=${#WALLS[@]} - - # Get workspace IDs WS_IDS=($(hyprctl workspaces -j | jq -r '.[].id')) for i in "${!WS_IDS[@]}"; do @@ -21,91 +37,4 @@ let swww img "$WALL" --workspace "${WS_IDS[$i]}" --transition-type fade slide blend done ''; -in -{ - ############################# - # System packages - ############################# - environment.systemPackages = [ - pkgs.swww - pkgs.waypaper - pkgs.rsync - pkgs.jq - ]; - - ############################# - # Copy wallpaper folder (unchanged) - ############################# - systemd.services.copyWallpaperStuff = { - description = "Copy wallpaper assets to user home"; - wantedBy = [ "multi-user.target" ]; - after = [ "systemd-user-sessions.service" ]; - wants = [ "systemd-user-sessions.service" ]; - - serviceConfig.Type = "oneshot"; - - script = '' - for i in $(seq 1 10); do - id ${username} && break - sleep 1 - done - - mkdir -p "${wallpaperDst}" - if [ -z "$(ls -A ${wallpaperDst})" ]; then - cp -r ${wallpaperSrc}/* "${wallpaperDst}/" - fi - - chown -R ${username} "${wallpaperDst}" - chmod -R u+rwx "${wallpaperDst}" - ''; - }; - - ############################# - # Home Manager integration - ############################# - _module.args.hmUsers = { - ${username} = { - - home.packages = [ - pkgs.swww - pkgs.waypaper - pkgs.jq - ]; - - # Copy script to user home - home.file = { - ".config/wallpapers/set-wallpapers-per-workspace.sh".text = setWallpaperScript; - }; - - # swww daemon - systemd.user.services.swww-daemon = { - Unit = { - Description = "swww wallpaper daemon"; - After = [ "graphical-session.target" ]; - }; - Service = { - ExecStart = "${pkgs.swww}/bin/swww-daemon"; - Restart = "on-failure"; - }; - Install = { - WantedBy = [ "graphical-session.target" ]; - }; - }; - - # Initialize wallpapers per workspace - systemd.user.services.swww-init = { - Unit = { - Description = "Initialize wallpapers per workspace"; - After = [ "swww-daemon.service" ]; - }; - Service = { - Type = "oneshot"; - ExecStart = "${homeDir}/.config/wallpapers/set-wallpapers-per-workspace.sh"; - }; - Install = { - WantedBy = [ "graphical-session.target" ]; - }; - }; - }; - }; }