{
  config,
  lib,
  inputs,
  pkgs,
  home,
  system,
  ...
}:
# system: "base16"
# name: "Gruvbox dark, hard"
# author: "Dawid Kurek (dawikur@gmail.com), morhetz (https://github.com/morhetz/gruvbox)"
# variant: "dark"
let
  hexToInt = hex: fromTOML "value = 0x${hex}";
  hexToRgb =
    hex:
    let
      red = hexToInt (builtins.substring 1 2 hex);
      green = hexToInt (builtins.substring 3 2 hex);
      blue = hexToInt (builtins.substring 5 2 hex);
    in
    {
      r = red.value;
      g = green.value;
      b = blue.value;
    };
  theme =
    let
      importYaml =
        file:
        builtins.fromJSON (
          builtins.readFile (
            pkgs.runCommandNoCC "converted-yaml.json" { } ''
              ${pkgs.yj}/bin/yj < ${file} > $out
            ''
          )
        );
      # EDIT THEME HERE
      themeFile = "${pkgs.base16-schemes}/share/themes/gruvbox-dark-hard.yaml";
    in
    importYaml themeFile;
in
{
  options.modules.base16 = {
    hex = lib.mkOption {
      type = lib.types.attrs;
      description = ''
        Hexadecimal color configuration for Gruvbox dark, hard Base16 theme.
      '';
    };
    rgb = lib.mkOption {
      type = lib.types.attrs;
      description = ''
        Hexadecimal color configuration for Gruvbox dark, hard Base16 theme.
      '';
    };
  };

  config.modules.base16.hex = theme.palette;
  config.modules.base16.rgb = builtins.mapAttrs (_name: hex: hexToRgb hex) theme.palette;
}
