{ config, lib, ... }: let inherit (config.rose-pine) sources; cfg = config.programs.waybar.rose-pine; enable = cfg.enable && config.programs.waybar.enable; themeName = if (cfg.flavor == "main") then "rose-pine" else "rose-pine-${cfg.flavor}"; styleFile = "${sources.waybar}/${themeName}.css"; in { options.programs.waybar.rose-pine = lib.rp.mkRosePineOpt {name = "waybar";} // { mode = lib.mkOption { type = lib.types.enum [ "prependImport" "createLink" ]; default = "prependImport"; description = '' Defines how to include the Rosé Pine theme css file: - `prependImport`: Prepends the import statement, if `programs.waybar.style` is a string (with default override priority). - `createLink`: Creates a symbolic link `~/.config/waybar/rose-pine.css`, which needs to be included in the waybar stylesheet. ''; }; }; config = lib.mkIf enable ( lib.mkMerge [ (lib.mkIf (cfg.mode == "prependImport") { programs.waybar.style = lib.mkBefore '' @import "${styleFile}"; ''; }) (lib.mkIf (cfg.mode == "createLink") { xdg.configFile."waybar/rose-pine.css".source = styleFile; }) ] ); }