2EFJUR2TVLHO4R4YRZFLOJKC742HPFI5MOA7II3Y3Z3KOHDNE5JAC
QNEDMAXXZFJJNFS2QHPEJZC6OHQEDC4GJBN5GM6G5INR2ME3WSZQC
H3GYCX27WTONFBIJN7UIV26LJSCENQJC4XXIOEYINXJLEDGKYJJQC
BYZGRIFZY253OFK442SR6X743U4LAX4NLFBQ4XPKXEDPPXNNUM4AC
532JIID6XB4NFSIFUA64VEBKWSEJB4AY5OUBIEFUDMWXO7UAZW2QC
ZGEGHEOD2S77CSNWOOFVB7Q3RGOU3WOWDOXJ4S2LKAS2JMS3UAZAC
NNUJU4U7H6QBAKSVR2N5NGQDODJFAJ6UWFU6N656WU2ORRG7RQRQC
JOK7DA5XBOK2MIVR7ORTSAEMQ6U5642I537IGUYBX67DPFF5QJ3QC
F26DJCZ7RLGRDZSYACB6MGMNTW7L5FE332EBYEIJTBRK7QJ6ZIYAC
TXA66OLAOYNGEDRBC4SKWDZPLBZXUU7WHDIAYN4TXGEJR6WIJOIQC
EVVP46IQ4U6JEDWVJ4D6KT77ABOMY7XKIO2ITX4DHJDRTGTYCUTQC
palette: {
palette =
palette
// {
cursorline = "#2a2b3c";
secondary_cursor = "#b5a6a8";
};
"type" = "yellow";
"constructor" = "sapphire";
"constant" = "peach";
"constant.builtin" = "peach";
"constant.character" = "teal";
"constant.character.escape" = "pink";
"string" = "green";
"string.regexp" = "peach";
"string.special" = "blue";
"comment" = {
fg = "surface2";
modifiers = ["italic"];
};
"variable" = "text";
"variable.parameter" = {
fg = "maroon";
modifiers = ["italic"];
};
"variable.builtin" = "red";
"variable.other.member" = "teal";
"label" = "sapphire";
"punctuation" = "overlay2";
"punctuation.special" = "sky";
"keyword" = "mauve";
"keyword.control.conditional" = {
fg = "mauve";
modifiers = ["italic"];
};
"operator" = "sky";
"function" = "blue";
"function.builtin" = "peach";
"function.macro" = "mauve";
"tag" = "mauve";
"namespace" = {
fg = "blue";
modifiers = ["italic"];
};
"special" = "blue";
"markup.heading.marker" = {
fg = "peach";
modifiers = ["bold"];
};
"markup.heading.1" = "lavender";
"markup.heading.2" = "mauve";
"markup.heading.3" = "green";
"markup.heading.4" = "yellow";
"markup.heading.5" = "pink";
"markup.heading.6" = "teal";
"markup.list" = "mauve";
"markup.bold" = {modifiers = ["bold"];};
"markup.italic" = {modifiers = ["italic"];};
"markup.link.url" = {
fg = "rosewater";
modifiers = ["italic" "underlined"];
};
"markup.link.text" = "blue";
"markup.raw" = "flamingo";
"diff.plus" = "green";
"diff.minus" = "red";
"diff.delta" = "blue";
"ui.background" = {
fg = "text";
bg = "base";
};
"ui.linenr" = {fg = "surface1";};
"ui.linenr.selected" = {fg = "lavender";};
"ui.statusline" = {
fg = "text";
bg = "mantle";
};
"ui.statusline.inactive" = {
fg = "surface2";
bg = "mantle";
};
"ui.statusline.normal" = {
fg = "base";
bg = "lavender";
modifiers = ["bold"];
};
"ui.statusline.insert" = {
fg = "base";
bg = "green";
modifiers = ["bold"];
};
"ui.statusline.select" = {
fg = "base";
bg = "flamingo";
modifiers = ["bold"];
};
"ui.popup" = {
fg = "text";
bg = "surface0";
};
"ui.window" = {fg = "crust";};
"ui.help" = {
fg = "overlay2";
bg = "surface0";
};
"ui.bufferline" = {
fg = "surface1";
bg = "mantle";
};
"ui.bufferline.active" = {
fg = "text";
bg = "base";
modifiers = ["bold" "italic"];
};
"ui.bufferline.background" = {bg = "surface0";};
"ui.text" = "text";
"ui.text.focus" = {
fg = "text";
bg = "surface0";
modifiers = ["bold"];
};
"ui.virtual" = "overlay0";
"ui.virtual.ruler" = {bg = "surface0";};
"ui.virtual.indent-guide" = "surface0";
"ui.selection" = {bg = "surface1";};
"ui.cursor" = {
fg = "base";
bg = "secondary_cursor";
};
"ui.cursor.primary" = {
fg = "base";
bg = "rosewater";
};
"ui.cursor.match" = {
fg = "peach";
modifiers = ["bold"];
};
"ui.cursorline.primary" = {bg = "cursorline";};
"ui.highlight" = {
bg = "surface1";
modifiers = ["bold"];
};
"ui.menu" = {
fg = "overlay2";
bg = "surface0";
};
"ui.menu.selected" = {
fg = "text";
bg = "surface1";
modifiers = ["bold"];
};
"diagnostic.error" = {
fg = "red";
underline = {
color = "red";
style = "curl";
};
};
"diagnostic.warning" = {
fg = "yellow";
underline = {
color = "yellow";
style = "curl";
};
};
"diagnostic.info" = {
fg = "sky";
underline = {
color = "sky";
style = "curl";
};
};
"diagnostic.hint" = {
fg = "teal";
underline = {
color = "teal";
style = "curl";
};
};
error = "red";
warning = "yellow";
info = "sky";
hint = "teal";
}
# Theme based on https://github.com/catppuccin/catppuccin
let
p = {
rosewater = "#f5e0dc";
flamingo = "#f2cdcd";
pink = "#f5c2e7";
mauve = "#cba6f7";
red = "#f38ba8";
maroon = "#eba0ac";
peach = "#fab387";
yellow = "#f9e2af";
green = "#a6e3a1";
teal = "#94e2d5";
sky = "#89dceb";
sapphire = "#74c7ec";
blue = "#89b4fa";
lavender = "#b4befe";
text = "#cdd6f4";
subtext1 = "#bac2de";
subtext0 = "#a6adc8";
overlay2 = "#9399b2";
overlay1 = "#7f849c";
overlay0 = "#6c7086";
surface2 = "#585b70";
surface1 = "#45475a";
surface0 = "#313244";
base = "#1e1e2e";
mantle = "#181825";
crust = "#11111b";
};
in {
primary = {
background = p.base;
foreground = p.text;
};
secondary = {
background = p.rosewater;
foreground = p.base;
};
dark = {
black = p.surface1;
red = p.red;
green = p.green;
yellow = p.yellow;
blue = p.blue;
magenta = p.pink;
cyan = p.teal;
white = p.subtext1;
orange = p.peach;
};
bright = {
black = p.surface2;
red = p.red;
green = p.green;
yellow = p.yellow;
blue = p.blue;
magenta = p.pink;
cyan = p.teal;
white = p.subtext0;
orange = p.peach;
};
extra = {
idx16 = p.peach;
idx17 = p.rosewater;
};
apps = {
helix = (import ./helix.nix) p;
};
}
helixBase64 = {
# TODO: Cleaner, more idiomatic solution
palette = {
base00 = theme.primary.background;
base01 = theme.dark.gray;
base02 = theme.bright.gray;
base03 = theme.bright.black;
base04 = theme.bright.white;
base05 = theme.primary.foreground;
base06 = theme.bright.white;
base07 = theme.bright.white;
base08 = theme.bright.red;
base09 = theme.bright.yellow;
base0A = theme.bright.yellow;
base0B = theme.bright.green;
base0C = theme.bright.cyan;
base0D = theme.bright.blue;
base0E = theme.bright.magenta;
base0F = theme.bright.white;
};
"ui.background" = {bg = "base00";};
"ui.virtual" = "base03";
"ui.menu" = {
fg = "base05";
bg = "base01";
};
"ui.menu.selected" = {
fg = "base01";
bg = "base04";
};
"ui.linenr" = {
fg = "base03";
bg = "base01";
};
"ui.popup" = {bg = "base01";};
"ui.window" = {bg = "base01";};
"ui.linenr.selected" = {
fg = "base04";
bg = "base01";
modifiers = ["bold"];
};
"ui.selection" = {bg = "base02";};
"comment" = {
fg = "base03";
modifiers = ["italic"];
};
"ui.statusline" = {
fg = "base04";
bg = "base01";
};
"ui.cursor" = {
fg = "base04";
modifiers = ["reversed"];
};
"ui.cursor.primary" = {
fg = "base05";
modifiers = ["reversed"];
};
"ui.text" = "base05";
"operator" = "base05";
"ui.text.focus" = "base05";
"variable" = "base08";
"constant.numeric" = "base09";
"constant" = "base09";
"attributes" = "base09";
"type" = "base0A";
"ui.cursor.match" = {
fg = "base0A";
modifiers = ["underlined"];
};
"string" = "base0B";
"variable.other.member" = "base0B";
"constant.character.escape" = "base0C";
"function" = "base0D";
"constructor" = "base0D";
"special" = "base0D";
"keyword" = "base0E";
"label" = "base0E";
"namespace" = "base0E";
"ui.help" = {
fg = "base06";
bg = "base01";
};
"markup.heading" = "base0D";
"markup.list" = "base08";
"markup.bold" = {
fg = "base0A";
modifiers = ["bold"];
};
"markup.italic" = {
fg = "base0E";
modifiers = ["italic"];
};
"markup.link.url" = {
fg = "base09";
modifiers = ["underlined"];
};
"markup.link.text" = "base08";
"markup.quote" = "base0C";
"markup.raw" = "base0B";
"diff.plus" = "base0B";
"diff.delta" = "base09";
"diff.minus" = "base08";
"diagnostic" = {modifiers = ["underlined"];};
"ui.gutter" = {bg = "base01";};
"info" = "base0D";
"hint" = "base03";
"debug" = "base03";
"warning" = "base09";
"error" = "base08";
};
{
lib,
inputs,
...
}:
inputs.flake-parts.lib.mkTransposedPerSystemModule {
name = "lib";
option = with lib;
mkOption {
type = types.lazyAttrsOf types.unspecified;
default = {};
description = "Utility nix functions";
{inputs, ...}: {
perSystem = {
pkgs,
self',
...
}: {
lib = rec {
mkTheme = pkgs.callPackage ./mktheme.nix {};
mkHome = pkgs.callPackage ./mkhome.nix {
inherit inputs;
flake-lib = self'.lib;
theme = mkTheme (import ../theme.nix);
};
const = pkgs.callPackage ./const.nix {};
paradise_dark = {
# TODO: Cleaner, more idiomatic solution
palette = {
base00 = theme.primary.background;
base01 = theme.dark.gray;
base02 = theme.bright.gray;
base03 = theme.bright.black;
base04 = theme.bright.white;
base05 = theme.primary.foreground;
base06 = theme.bright.white;
base07 = theme.bright.white;
base08 = theme.bright.red;
base09 = theme.bright.yellow;
base0A = theme.bright.yellow;
base0B = theme.bright.green;
base0C = theme.bright.cyan;
base0D = theme.bright.blue;
base0E = theme.bright.magenta;
base0F = theme.bright.white;
};
"ui.background" = {bg = "base00";};
"ui.virtual" = "base03";
"ui.menu" = {
fg = "base05";
bg = "base01";
};
"ui.menu.selected" = {
fg = "base01";
bg = "base04";
};
"ui.linenr" = {
fg = "base03";
bg = "base01";
};
"ui.popup" = {bg = "base01";};
"ui.window" = {bg = "base01";};
"ui.linenr.selected" = {
fg = "base04";
bg = "base01";
modifiers = ["bold"];
};
"ui.selection" = {bg = "base02";};
"comment" = {
fg = "base03";
modifiers = ["italic"];
};
"ui.statusline" = {
fg = "base04";
bg = "base01";
};
"ui.cursor" = {
fg = "base04";
modifiers = ["reversed"];
};
"ui.cursor.primary" = {
fg = "base05";
modifiers = ["reversed"];
};
"ui.text" = "base05";
"operator" = "base05";
"ui.text.focus" = "base05";
"variable" = "base08";
"constant.numeric" = "base09";
"constant" = "base09";
"attributes" = "base09";
"type" = "base0A";
"ui.cursor.match" = {
fg = "base0A";
modifiers = ["underlined"];
};
"string" = "base0B";
"variable.other.member" = "base0B";
"constant.character.escape" = "base0C";
"function" = "base0D";
"constructor" = "base0D";
"special" = "base0D";
"keyword" = "base0E";
"label" = "base0E";
"namespace" = "base0E";
"ui.help" = {
fg = "base06";
bg = "base01";
};
"markup.heading" = "base0D";
"markup.list" = "base08";
"markup.bold" = {
fg = "base0A";
modifiers = ["bold"];
};
"markup.italic" = {
fg = "base0E";
modifiers = ["italic"];
};
"markup.link.url" = {
fg = "base09";
modifiers = ["underlined"];
};
"markup.link.text" = "base08";
"markup.quote" = "base0C";
"markup.raw" = "base0B";
"diff.plus" = "base0B";
"diff.delta" = "base09";
"diff.minus" = "base08";
"diagnostic" = {modifiers = ["underlined"];};
"ui.gutter" = {bg = "base01";};
"info" = "base0D";
"hint" = "base03";
"debug" = "base03";
"warning" = "base09";
"error" = "base08";
};
nix_custom = theme.apps.helix;
lib = rec {
mkTheme = pkgs.callPackage ./lib/mktheme.nix {};
mkHome = pkgs.callPackage ./lib/mkhome.nix {
inherit inputs;
flake-lib = self'.lib;
theme = mkTheme (import ./theme.nix);
};
const = pkgs.callPackage ./lib/const.nix {};
};
{
lib,
flake-parts-lib,
...
}:
flake-parts-lib.mkTransposedPerSystemModule {
name = "lib";
option = with lib;
mkOption {
type = types.lazyAttrsOf types.unspecified;
default = {};
description = "Utility nix functions";
};
file = ./lib.nix;
}
{...}: {
imports = [
./lib.nix
];
}