{ options, config, osConfig, lib, pkgs, namespace, ... }: with lib; with lib.${namespace}; let cfg = config.${namespace}.desktop.components.fcitx5; oscfg = osConfig.${namespace}.hardware.keyboard.jp; desktop = config.${namespace}.desktop; impermanence = config.${namespace}.impermanence; in { options.${namespace}.desktop.components.fcitx5 = with types; { enable = mkEnableOption "fcitx5 theming"; }; config = mkIf (cfg.enable && oscfg.enable) { #TODO: investigate generating config files instead of persisting home.persistence.${impermanence.location} = { directories = [ ".config/fcitx" ".config/fcitx5" ]; }; xdg.dataFile."fcitx5/themes/nix-theme/theme.conf".source = let c = desktop.theme.colors; in (pkgs.formats.ini {}).generate "fcitx5-theme.conf" { "Metadata" = { Name = "nix-theme"; Author = "CartConnoisseur"; Description = "Theme generated by NixOS"; Version = 1; }; "InputPanel" = { NormalColor = "#${c.fg}"; HighlightColor = "#${c.fg}"; HighlightBackgroundColor = "#00000000"; HighlightCandidateColor = "#${c.bg}"; FullWidthHighlight = true; PageButtonAlignment = "Last Candidate"; }; "InputPanel/Background" = { Color = "#${c.bg}"; BorderColor = "#${c.fg1}"; BorderWidth = 2; }; # "InputPanel/Background/Margin" = { # Left = 10; # Right = 10; # Top = 10; # Bottom = 10; # }; "InputPanel/Highlight" = { Color = "#${c.fg}"; BorderWidth = 0; }; "InputPanel/Highlight/Margin" = { Left = 2; Right = 2; Top = 2; Bottom = 2; }; "InputPanel/ContentMargin" = { Left = 2; Right = 2; Top = 2; Bottom = 2; }; "InputPanel/TextMargin" = { Left = 5; Right = 5; Top = 5; Bottom = 5; }; }; }; }