opencode: init (#1945)

Link: https://github.com/nix-community/stylix/pull/1945

Reviewed-by: NAHO <90870942+trueNAHO@users.noreply.github.com>
This commit is contained in:
Mirza Arnaut 2025-10-21 08:40:16 +02:00 committed by GitHub
parent 8d008296a1
commit b81dc0a385
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
5 changed files with 249 additions and 3 deletions

223
modules/opencode/hm.nix Normal file
View file

@ -0,0 +1,223 @@
{ mkTarget, ... }:
mkTarget {
name = "opencode";
humanName = "OpenCode";
configElements =
{ colors }:
{
programs.opencode =
let
theme = "stylix";
in
{
settings = { inherit theme; };
themes.${theme} = {
theme = {
accent = {
dark = colors.withHashtag.base07;
light = colors.withHashtag.base07;
};
background = {
dark = colors.withHashtag.base00;
light = colors.withHashtag.base06;
};
backgroundElement = {
dark = colors.withHashtag.base01;
light = colors.withHashtag.base04;
};
backgroundPanel = {
dark = colors.withHashtag.base01;
light = colors.withHashtag.base05;
};
border = {
dark = colors.withHashtag.base02;
light = colors.withHashtag.base03;
};
borderActive = {
dark = colors.withHashtag.base03;
light = colors.withHashtag.base02;
};
borderSubtle = {
dark = colors.withHashtag.base02;
light = colors.withHashtag.base03;
};
diffAdded = {
dark = colors.withHashtag.base0B;
light = colors.withHashtag.base0B;
};
diffAddedBg = {
dark = colors.withHashtag.base01;
light = colors.withHashtag.base05;
};
diffAddedLineNumberBg = {
dark = colors.withHashtag.base01;
light = colors.withHashtag.base05;
};
diffContext = {
dark = colors.withHashtag.base03;
light = colors.withHashtag.base03;
};
diffContextBg = {
dark = colors.withHashtag.base01;
light = colors.withHashtag.base05;
};
diffHighlightAdded = {
dark = colors.withHashtag.base0B;
light = colors.withHashtag.base0B;
};
diffHighlightRemoved = {
dark = colors.withHashtag.base08;
light = colors.withHashtag.base08;
};
diffHunkHeader = {
dark = colors.withHashtag.base03;
light = colors.withHashtag.base03;
};
diffLineNumber = {
dark = colors.withHashtag.base02;
light = colors.withHashtag.base04;
};
diffRemoved = {
dark = colors.withHashtag.base08;
light = colors.withHashtag.base08;
};
diffRemovedBg = {
dark = colors.withHashtag.base01;
light = colors.withHashtag.base05;
};
diffRemovedLineNumberBg = {
dark = colors.withHashtag.base01;
light = colors.withHashtag.base05;
};
error = {
dark = colors.withHashtag.base08;
light = colors.withHashtag.base08;
};
info = {
dark = colors.withHashtag.base0C;
light = colors.withHashtag.base0F;
};
markdownBlockQuote = {
dark = colors.withHashtag.base03;
light = colors.withHashtag.base03;
};
markdownCode = {
dark = colors.withHashtag.base0B;
light = colors.withHashtag.base0B;
};
markdownCodeBlock = {
dark = colors.withHashtag.base04;
light = colors.withHashtag.base00;
};
markdownEmph = {
dark = colors.withHashtag.base09;
light = colors.withHashtag.base09;
};
markdownHeading = {
dark = colors.withHashtag.base0C;
light = colors.withHashtag.base0F;
};
markdownHorizontalRule = {
dark = colors.withHashtag.base03;
light = colors.withHashtag.base03;
};
markdownImage = {
dark = colors.withHashtag.base0D;
light = colors.withHashtag.base0D;
};
markdownImageText = {
dark = colors.withHashtag.base07;
light = colors.withHashtag.base07;
};
markdownLink = {
dark = colors.withHashtag.base0D;
light = colors.withHashtag.base0D;
};
markdownLinkText = {
dark = colors.withHashtag.base07;
light = colors.withHashtag.base07;
};
markdownListEnumeration = {
dark = colors.withHashtag.base07;
light = colors.withHashtag.base07;
};
markdownListItem = {
dark = colors.withHashtag.base0C;
light = colors.withHashtag.base0F;
};
markdownStrong = {
dark = colors.withHashtag.base0A;
light = colors.withHashtag.base0A;
};
markdownText = {
dark = colors.withHashtag.base04;
light = colors.withHashtag.base00;
};
primary = {
dark = colors.withHashtag.base0C;
light = colors.withHashtag.base0F;
};
secondary = {
dark = colors.withHashtag.base0D;
light = colors.withHashtag.base0D;
};
success = {
dark = colors.withHashtag.base0B;
light = colors.withHashtag.base0B;
};
syntaxComment = {
dark = colors.withHashtag.base03;
light = colors.withHashtag.base03;
};
syntaxFunction = {
dark = colors.withHashtag.base0C;
light = colors.withHashtag.base0C;
};
syntaxKeyword = {
dark = colors.withHashtag.base0D;
light = colors.withHashtag.base0D;
};
syntaxNumber = {
dark = colors.withHashtag.base0E;
light = colors.withHashtag.base0E;
};
syntaxOperator = {
dark = colors.withHashtag.base0D;
light = colors.withHashtag.base0D;
};
syntaxPunctuation = {
dark = colors.withHashtag.base04;
light = colors.withHashtag.base00;
};
syntaxString = {
dark = colors.withHashtag.base0B;
light = colors.withHashtag.base0B;
};
syntaxType = {
dark = colors.withHashtag.base07;
light = colors.withHashtag.base07;
};
syntaxVariable = {
dark = colors.withHashtag.base07;
light = colors.withHashtag.base07;
};
text = {
dark = colors.withHashtag.base04;
light = colors.withHashtag.base00;
};
textMuted = {
dark = colors.withHashtag.base03;
light = colors.withHashtag.base01;
};
warning = {
dark = colors.withHashtag.base09;
light = colors.withHashtag.base09;
};
};
};
};
};
}

View file

@ -0,0 +1,6 @@
{ lib, ... }:
{
name = "OpenCode";
homepage = "https://opencode.ai";
maintainers = [ lib.maintainers.arunoruto ];
}

View file

@ -0,0 +1,11 @@
{ lib, pkgs, ... }:
{
stylix.testbed.ui.command = {
text = lib.getExe pkgs.opencode;
useTerminal = true;
};
home-manager.sharedModules = lib.singleton {
programs.opencode.enable = true;
};
}