{ pkgs, lib, ... }: { home.packages = with pkgs; [ swaybg ]; xdg.configFile."niri/live.kdl".text = ""; xdg.configFile."niri/scripts/preset-streaming.sh" = { source = ./niri/scripts/preset-streaming.sh; executable = true; }; xdg.configFile."niri/scripts/preset-coding.sh" = { source = ./niri/scripts/preset-coding.sh; executable = true; }; home.file."config" = let kdlfiles = lib.mapAttrsToList (filename: _value: "include \"${./niri/kdl}/${filename}\"") (lib.filterAttrs (key: value: value == "regular") (builtins.readDir ./niri/kdl)); startups = map (it: "spawn-at-startup ${it}") (map (lib.concatStringsSep " ") (map (map (word: "\"${word}\"")) [ ["eww" "open" "clock"] ["touch" ".config/niri/live.kdl"] ])); other = [ "include \"live.kdl\"" "animations { window-open { duration-ms 3000; curve \"linear\"; custom-shader r\"\n${builtins.readFile ./niri/shaders/arc.frag}\";};}" ]; in { target = ".config/niri/config.kdl"; text = lib.concatLines (startups ++ kdlfiles ++ other); }; }