43 lines
1.4 KiB
Nix
43 lines
1.4 KiB
Nix
#+begin_src nix :tangle home/desktop/wallpaper.nix :noweb tangle :mkdirp yes
|
|
{ config, pkgs, lib, flakeRoot, ... }:
|
|
let
|
|
repoWallpaperDir = flakeRoot + "/assets/conf/desktop/wallpaper";
|
|
repoWallpaperConf = flakeRoot + "/assets/conf/desktop/wallpaper/wallpaper.conf";
|
|
userRelRoot = "nixos_conf/wallpaperstuff";
|
|
userAbsRoot = "${config.home.homeDirectory}/${userRelRoot}";
|
|
userConfPath = "${userAbsRoot}/wallpaper.conf";
|
|
# Exclude wallpaper.conf so HM does NOT manage it (avoids backup collisions)
|
|
repoWallpapersOnly = lib.cleanSourceWith {
|
|
src = repoWallpaperDir;
|
|
filter = path: type:
|
|
(builtins.baseNameOf path) != "wallpaper.conf";
|
|
};
|
|
in
|
|
{
|
|
home.packages = [ pkgs.wpaperd ];
|
|
# Sync everything *except* wallpaper.conf into ~/nixos_conf/wallpaperstuff
|
|
home.file."${userRelRoot}" = {
|
|
source = repoWallpapersOnly;
|
|
recursive = true;
|
|
};
|
|
# Now safely overwrite the config every activation (no HM collision)
|
|
home.activation.wallpaperConfForce =
|
|
lib.hm.dag.entryAfter [ "writeBoundary" ] ''
|
|
set -euo pipefail
|
|
mkdir -p "${userAbsRoot}"
|
|
install -m 0644 "${repoWallpaperConf}" "${userConfPath}"
|
|
'';
|
|
systemd.user.services.wpaperd = {
|
|
Unit = {
|
|
Description = "wpaperd wallpaper daemon";
|
|
After = [ "default.target" ];
|
|
};
|
|
Service = {
|
|
Type = "simple";
|
|
ExecStart = "${pkgs.wpaperd}/bin/wpaperd --config ${userConfPath}";
|
|
Restart = "on-failure";
|
|
RestartSec = 1;
|
|
};
|
|
Install.WantedBy = [ "default.target" ];
|
|
;
|