aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--modules/colors/base16/onedark-dark.nix63
1 files changed, 63 insertions, 0 deletions
diff --git a/modules/colors/base16/onedark-dark.nix b/modules/colors/base16/onedark-dark.nix
new file mode 100644
index 0000000..44c8fce
--- /dev/null
+++ b/modules/colors/base16/onedark-dark.nix
@@ -0,0 +1,63 @@
+# 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);
+ };
+}