diff --git a/user/home.nix b/user/home.nix index 93c692b..7fb1e3d 100644 --- a/user/home.nix +++ b/user/home.nix @@ -123,6 +123,7 @@ in { imports = [ ./waybar.nix ./helix.nix + ./kakoune.nix ]; # Home Manager needs a bit of information about you and the # paths it should manage. @@ -356,130 +357,10 @@ in { } # {%@@ endif @@%} ]; - }; }; - programs.kakoune = { - enable = true; - extraConfig = let - colors = lib.mapAttrs (_: lib.replaceStrings [ "#" ] [ "rgb:" ]) { - accent_fg = accent.fg; - accent_color = accent.color; - bg_light = color.bg_light; - bg_dark = color.bg_dark; - nontxt = color.nontxt; - orange = color.normal.orange; - brown = color.normal.brown; - }; - in with colors; - lib.concatStringsSep "\n" (map (lib.readFile) [ - ./kak/filetypes.kak - ./kak/hooks.kak - ./kak/indent.kak - ./kak/keys.kak - ./kak/plug.kak - ./kak/usermode.kak - ]) + '' - - set global scrolloff 10,20 - set global autoreload yes - set global startup_info_version 20200901 - - '' + '' - face global crosshairs_line default,${bg_dark} - face global crosshairs_column default+b - - # For Code - face global value magenta - face global type yellow - face global variable blue - face global module ${brown} - face global function ${orange} - face global string green - face global keyword ${accent_color} - face global operator yellow - face global attribute cyan - face global comment ${bg_light} - face global documentation comment - face global meta +i@function - face global builtin blue - - # For markup - face global title blue - face global header cyan - face global mono green - face global block magenta - face global link cyan - face global bullet cyan - face global list yellow - - # builtin faces - face global Default default,default - - face global PrimaryCursor ${accent_fg},${accent_color}+fg - face global PrimaryCursorEol PrimaryCursor - face global PrimarySelection default,${bg_light}+f - - face global SecondaryCursor default,default+rfg - face global SecondaryCursorEol SecondaryCursor - face global SecondarySelection PrimarySelection - - face global InactiveCursor ${accent_fg},${bg_light}+fg - - face global MenuForeground ${accent_fg},${accent_color} - face global MenuBackground default,${bg_dark} - face global MenuInfo cyan - - face global Information default,${bg_dark} - face global Error default,red+g - - face global StatusLine %sh{ - printf "rgb:" - head /dev/urandom | - base64 | - rg --text -o "${color.random_range}" | - head -n 6 | - sd '\n' "" - } - face global StatusLineMode StatusLine - face global StatusLineInfo StatusLine - face global StatusLineValue StatusLine - face global StatusCursor ${accent_fg},${accent_color} - - face global Prompt yellow,default - try %{add-highlighter global/ show-matching} - face global MatchingChar ${accent_color},default+b - - # Goodies - try %{add-highlighter global/number-lines number-lines -relative -hlcursor} - face global LineNumbers ${bg_light},default - face global LineNumberCursor default,${bg_dark} - face global LineNumbersWrapped red,default - - try %{add-highlighter global/ show-whitespaces} - face global Whitespace ${nontxt},default+f - face global BufferPadding ${nontxt},default - ## highlight trailing whitespace - # add-highlighter global/ regex '\h*$' 0:red,red+u - - face global Reference default+bu - face global InlayHint ${bg_light}+buif - - # Lsp - '' + (lib.concatStringsSep "\n" (lib.mapAttrsToList (name: color: '' - face global HighlightDiagnostic${name} ${color},default+bu - face global Diagnostic${name} ${color},default+bu - face global TextDiagnostic${name} ${color},default+b - face global InlayDiagnostic${name} ${color},default+br - '') { - Error = "red"; - Warning = "yellow"; - Hint = "blue"; - })); - }; home.sessionVariables = { - EDITOR = "kak"; VOLUME_CHANGE_SOUND = "${pkgs.sound-theme-freedesktop}/share/sounds/freedesktop/stereo/audio-volume-change.oga"; }; diff --git a/user/kakoune.nix b/user/kakoune.nix new file mode 100644 index 0000000..789c77c --- /dev/null +++ b/user/kakoune.nix @@ -0,0 +1,131 @@ +{ config, pkgs, lib, font, ... }: let + inherit (import ./variables.nix) key theme color accent font; +in { + config = { + programs.kakoune = { + enable = true; + extraConfig = let + colors = lib.mapAttrs (_: lib.replaceStrings [ "#" ] [ "rgb:" ]) { + accent_fg = accent.fg; + accent_color = accent.color; + bg_light = color.bg_light; + bg_dark = color.bg_dark; + nontxt = color.nontxt; + orange = color.normal.orange; + brown = color.normal.brown; + }; + in with colors; + lib.concatStringsSep "\n" (map (lib.readFile) [ + ./kak/filetypes.kak + ./kak/hooks.kak + ./kak/indent.kak + ./kak/keys.kak + ./kak/plug.kak + ./kak/usermode.kak + ]) + '' + + set global scrolloff 10,20 + set global autoreload yes + set global startup_info_version 20200901 + + '' + '' + face global crosshairs_line default,${bg_dark} + face global crosshairs_column default+b + + # For Code + face global value magenta + face global type yellow + face global variable blue + face global module ${brown} + face global function ${orange} + face global string green + face global keyword ${accent_color} + face global operator yellow + face global attribute cyan + face global comment ${bg_light} + face global documentation comment + face global meta +i@function + face global builtin blue + + # For markup + face global title blue + face global header cyan + face global mono green + face global block magenta + face global link cyan + face global bullet cyan + face global list yellow + + # builtin faces + face global Default default,default + + face global PrimaryCursor ${accent_fg},${accent_color}+fg + face global PrimaryCursorEol PrimaryCursor + face global PrimarySelection default,${bg_light}+f + + face global SecondaryCursor default,default+rfg + face global SecondaryCursorEol SecondaryCursor + face global SecondarySelection PrimarySelection + + face global InactiveCursor ${accent_fg},${bg_light}+fg + + face global MenuForeground ${accent_fg},${accent_color} + face global MenuBackground default,${bg_dark} + face global MenuInfo cyan + + face global Information default,${bg_dark} + face global Error default,red+g + + face global StatusLine %sh{ + printf "rgb:" + head /dev/urandom | + base64 | + rg --text -o "${color.random_range}" | + head -n 6 | + sd '\n' "" + } + face global StatusLineMode StatusLine + face global StatusLineInfo StatusLine + face global StatusLineValue StatusLine + face global StatusCursor ${accent_fg},${accent_color} + + face global Prompt yellow,default + try %{add-highlighter global/ show-matching} + face global MatchingChar ${accent_color},default+b + + # Goodies + try %{add-highlighter global/number-lines number-lines -relative -hlcursor} + face global LineNumbers ${bg_light},default + face global LineNumberCursor default,${bg_dark} + face global LineNumbersWrapped red,default + + try %{add-highlighter global/ show-whitespaces} + face global Whitespace ${nontxt},default+f + face global BufferPadding ${nontxt},default + ## highlight trailing whitespace + # add-highlighter global/ regex '\h*$' 0:red,red+u + + face global Reference default+bu + face global InlayHint ${bg_light}+buif + + # Lsp + '' + (lib.concatStringsSep "\n" (lib.mapAttrsToList (name: color: '' + face global HighlightDiagnostic${name} ${color},default+bu + face global Diagnostic${name} ${color},default+bu + face global TextDiagnostic${name} ${color},default+b + face global InlayDiagnostic${name} ${color},default+br + '') { + Error = "red"; + Warning = "yellow"; + Hint = "blue"; + })); + }; + home.packages = with pkgs; [ + pkgs.unstable.helix + ]; + home.sessionVariables = { + EDITOR = "kak"; + }; + }; +} +