{ pkgs, ... }@all: with all; { programs.opencode = { enable = true; package = pkgs.opencode; themes.theme = with rice.color; let dl = color: { dark = color; light = color; }; in { accent = dl accent.base; background = dl background; backgroundElement = dl subtle.dark; backgroundPanel = dl subtle.darker; border = dl subtle.base; borderActive = dl border; borderSubtle = dl subtle.dark; diffAdded = dl positive.base; diffAddedBg = dl positive.darker; diffAddedLineNumberBg = dl positive.dark; diffContext = dl foreground; diffContextBg = dl subtle.dark; diffHighlightAdded = dl positive.bright; diffHighlightRemoved = dl negative.bright; diffHunkHeader = dl foreground; diffLineNumber = dl subtle.base; diffRemoved = dl negative.base; diffRemovedBg = dl negative.darker; diffRemovedLineNumberBg = dl negative.dark; error = dl negative.dark; info = dl special.base; markdownBlockQuote = dl accent.base; markdownCode = dl secondary.base; markdownCodeBlock = dl secondary.base; markdownEmph = dl accent.base; markdownHeading = dl accent.base; markdownHorizontalRule = dl border; markdownImage = dl accent.base; markdownImageText = dl accent.bright; markdownLink = dl accent.base; markdownLinkText = dl accent.bright; markdownListEnumeration = dl foreground; markdownListItem = dl foreground; markdownStrong = dl accent.base; markdownText = dl foreground; primary = dl accent.base; secondary = dl secondary.base; success = dl positive.base; syntaxComment = dl subtle.base; syntaxFunction = dl accent.base; syntaxKeyword = dl special.base; syntaxNumber = dl tertiary.base; syntaxOperator = dl accent.base; syntaxPunctuation = dl foreground; syntaxString = dl accent.base; syntaxType = dl tertiary.base; syntaxVariable = dl accent.base; text = dl foreground; textMuted = dl subtle.bright; warning = dl weird.base; }; }; }