/ modules / common / theme.nix
theme.nix
 1  # modules/common/theme.nix
 2  {
 3    lib,
 4    pkgs,
 5    themes,
 6    ...
 7  }:
 8  let
 9    inherit (lib) mkValue;
10  in
11  {
12    options.theme = mkValue (
13      themes.custom {
14        # Required fields for ThemeNix templates
15        name = "Arabia Dark";
16        author = "ay";
17  
18        # Arabia theme colors (base16 scheme)
19        base00 = "0a0a0a"; # Default background
20        base01 = "1a1a1a"; # Lighter background (status bars)
21        base02 = "2a2a2a"; # Selection background
22        base03 = "4a3c2e"; # Comments, invisibles, line highlighting
23        base04 = "6a5c4e"; # Dark foreground (status bars)
24        base05 = "e6d7c3"; # Default foreground, caret, delimiters, operators
25        base06 = "f0e5d7"; # Light foreground (not often used)
26        base07 = "faf5ef"; # Light background (not often used)
27        base08 = "e5524f"; # Variables, XML tags, markup link text, markup lists, diff deleted
28        base09 = "ff7300"; # Integers, boolean, constants, XML attributes, markup link url
29        base0A = "ffc799"; # Classes, markup bold, search text background
30        base0B = "d4b483"; # Strings, inherited class, markup code, diff inserted
31        base0C = "99ffe4"; # Support, regular expressions, escape characters, markup quotes
32        base0D = "7c89cd"; # Functions, methods, attribute IDs, headings
33        base0E = "ff8080"; # Keywords, storage, selector, markup italic, diff changed
34        base0F = "d9956c"; # Deprecated, opening/closing embedded language tags
35  
36        # Theme properties
37        cornerRadius = 4;
38        borderWidth = 2;
39        margin = 0;
40        padding = 8;
41  
42        # Font configuration
43        font.size.normal = 16;
44        font.size.big = 20;
45  
46        font.sans.name = "Lexend";
47        font.sans.package = pkgs.lexend;
48  
49        font.mono.name = "JetBrainsMono Nerd Font";
50        font.mono.package = pkgs.nerd-fonts.jetbrains-mono;
51  
52        # Icon theme
53        icons.name = "Gruvbox-Plus-Dark";
54        icons.package = pkgs.gruvbox-plus-icons;
55      }
56    );
57  }