{ pkgs, config, lib, ... }: let # URL for the theme themeUrl = "https://raw.githubusercontent.com/catppuccin/cosmic-desktop/main/themes/cosmic-settings/catppuccin-macchiato-blue%2Bround.ron"; themeFile = pkgs.fetchurl { url = themeUrl; sha256 = "00hkydzjy87g18xqbg2a07hlh96akwnlbl1pdn006f3kkscyfkmr"; }; in { # Create a systemd user service to apply the theme systemd.user.services.apply-cosmic-theme = { description = "Apply Catppuccin Macchiato theme to Cosmic"; wantedBy = [ "graphical-session.target" ]; partOf = [ "graphical-session.target" ]; script = '' mkdir -p %h/.config/cosmic/com.system76.CosmicTheme.Dark.Builder # The theme file from the repo is the "entries" part of the config. # We need to wrap it in the structure Cosmic expects: ( entries: ..., version: 1 ) echo "(" > %h/.config/cosmic/com.system76.CosmicTheme.Dark.Builder/v1 echo " entries: " >> %h/.config/cosmic/com.system76.CosmicTheme.Dark.Builder/v1 cat ${themeFile} >> %h/.config/cosmic/com.system76.CosmicTheme.Dark.Builder/v1 echo "," >> %h/.config/cosmic/com.system76.CosmicTheme.Dark.Builder/v1 echo " version: 1" >> %h/.config/cosmic/com.system76.CosmicTheme.Dark.Builder/v1 echo ")" >> %h/.config/cosmic/com.system76.CosmicTheme.Dark.Builder/v1 # Ensure Dark Mode is enabled mkdir -p %h/.config/cosmic/com.system76.CosmicTheme.Mode echo '( entries: ( is_dark: true ), version: 1 )' > %h/.config/cosmic/com.system76.CosmicTheme.Mode/v1 ''; serviceConfig = { Type = "oneshot"; RemainAfterExit = true; }; }; }