{ config, lib, ... }: let c = config.theme.colors; dmsTheme = { id = "gruvbox"; name = "Gruvbox"; version = "1.0.0"; author = "ayman"; description = "Gruvbox Dark Medium from theme.nix"; dark = { primary = c.green_b; primaryContainer = c.green; secondary = c.yellow; surfaceText = c.fg; surfaceVariantText = c.fg2; backgroundText = c.fg; outline = c.gray; error = c.red_b; warning = c.orange_b; info = c.blue_b; }; light = { primary = c.green; primaryContainer = c.green_b; secondary = c.yellow_b; surfaceText = c.bg; surfaceVariantText = c.bg1; backgroundText = c.bg; outline = c.bg4; error = c.red; warning = c.orange; info = c.blue; }; variants = { default = "medium"; options = [ { id = "medium"; name = "Medium"; dark = { primaryText = c.bg0_h; surface = c.bg0_h; surfaceVariant = c.bg; surfaceTint = c.bg1; background = c.bg; surfaceContainer = c.bg0_s; surfaceContainerHigh = c.bg1; surfaceContainerHighest = c.bg2; }; light = { primaryText = c.fg; surface = c.fg; surfaceVariant = c.fg1; surfaceTint = c.fg2; background = c.fg1; surfaceContainer = c.fg2; surfaceContainerHigh = c.fg3; surfaceContainerHighest = c.fg4; }; } ]; }; }; in { home.file.".config/DankMaterialShell/themes/gruvbox/theme.json" = { text = builtins.toJSON dmsTheme; force = true; }; }