From 53eac37422f77750adbc801f71b85ab04cf2b7f9 Mon Sep 17 00:00:00 2001 From: Arpit Chakladar Date: Fri, 18 Sep 2026 06:17:21 +0530 Subject: chore(colors/base16): refactoring --- modules/colors/base16/default.nix | 57 +++++++++++++++++++++++++ modules/colors/base16/onedark-dark.nix | 77 ++++++++-------------------------- modules/colors/default.nix | 7 ++++ 3 files changed, 81 insertions(+), 60 deletions(-) create mode 100644 modules/colors/base16/default.nix create mode 100644 modules/colors/default.nix (limited to 'modules/colors') diff --git a/modules/colors/base16/default.nix b/modules/colors/base16/default.nix new file mode 100644 index 0000000..1262b53 --- /dev/null +++ b/modules/colors/base16/default.nix @@ -0,0 +1,57 @@ +# Provide options/configurations for other modules to use base16 colorschemes +{ + config, + lib, + pkgs, + ... +}: +let + schemeFiles = { + "onedark-dark" = ./onedark-dark.nix; + }; + + schemeFile = + schemeFiles.${config.colors.base16} or (throw "Unknown color scheme: ${config.colors.base16}"); + + colors = import schemeFile { }; + + withHashtag = lib.mapAttrs (_: v: "#${v}") colors; + colorNames = builtins.attrNames colors; + + processTemplate = + template: + let + content = if builtins.typeOf template == "path" then builtins.readFile template else template; + replaced = builtins.replaceStrings (map (name: "@@${name}@@") colorNames) (map ( + name: colors.${name} + ) colorNames) content; + in + replaced; +in +{ + options = { + colors.base16 = lib.mkOption { + type = lib.types.str; + default = "onedark-dark"; + description = "Base16 color scheme to use"; + }; + + scheme = lib.mkOption { + type = lib.types.unspecified; + description = "Color scheme providing withHashtag and template function"; + }; + }; + + config = { + scheme = { + inherit withHashtag; + __functor = + self: + { + template, + extension ? "", + }: + pkgs.writeText "themed${extension}" (processTemplate template); + }; + }; +} diff --git a/modules/colors/base16/onedark-dark.nix b/modules/colors/base16/onedark-dark.nix index 44c8fce..f0ff329 100644 --- a/modules/colors/base16/onedark-dark.nix +++ b/modules/colors/base16/onedark-dark.nix @@ -1,63 +1,20 @@ # OneDark Dark color scheme -# Replaces base16.nix with direct string replacement +{ }: { - config, - lib, - pkgs, - ... -}: -let - colors = { - base00 = "000000"; - base01 = "1c1f24"; - base02 = "2c313a"; - base03 = "434852"; - base04 = "565c64"; - base05 = "abb2bf"; - base06 = "b6bdca"; - base07 = "c8ccd4"; - base08 = "ef596f"; - base09 = "d19a66"; - base0A = "e5c07b"; - base0B = "89ca78"; - base0C = "2bbac5"; - base0D = "61afef"; - base0E = "d55fde"; - base0F = "be5046"; - }; - - withHashtag = lib.mapAttrs (_: v: "#${v}") colors; - - colorNames = builtins.attrNames colors; - - processTemplate = - template: - let - content = if builtins.typeOf template == "path" then builtins.readFile template else template; - replaced = builtins.replaceStrings (map (name: "@@${name}@@") colorNames) (map ( - name: colors.${name} - ) colorNames) content; - in - replaced; -in -{ - options.colors.onedark-dark = { - enable = lib.mkEnableOption "Enables the OneDark Dark color scheme."; - }; - - options.scheme = lib.mkOption { - type = lib.types.unspecified; - description = "Color scheme providing withHashtag and template function"; - }; - - config.scheme = lib.mkIf config.colors.onedark-dark.enable { - inherit withHashtag; - __functor = - self: - { - template, - extension ? "", - }: - pkgs.writeText "themed${extension}" (processTemplate template); - }; + base00 = "000000"; + base01 = "1c1f24"; + base02 = "2c313a"; + base03 = "434852"; + base04 = "565c64"; + base05 = "abb2bf"; + base06 = "b6bdca"; + base07 = "c8ccd4"; + base08 = "ef596f"; + base09 = "d19a66"; + base0A = "e5c07b"; + base0B = "89ca78"; + base0C = "2bbac5"; + base0D = "61afef"; + base0E = "d55fde"; + base0F = "be5046"; } diff --git a/modules/colors/default.nix b/modules/colors/default.nix new file mode 100644 index 0000000..1bf48b5 --- /dev/null +++ b/modules/colors/default.nix @@ -0,0 +1,7 @@ +# Configuration wide colorscheme configurations +{ ... }: +{ + imports = [ + ./base16 + ]; +} -- cgit v1.2.3