{ pkgs, pkgs-unstable, rice, ... }: { home = { packages = with pkgs; [ nixfmt # nix formater nil # nix language server python311Packages.python-lsp-server lldb # debugger for llvm stuff ] ++ (with pkgs-unstable; [ helix ]); sessionVariables = { EDITOR = "hx"; VISUAL = "hx"; }; }; programs.helix = { enable = true; defaultEditor = true; package = pkgs-unstable.helix; settings = { # theme = "base16_terminal"; theme = "base16"; editor = { cursor-shape = { normal = "block"; insert = "bar"; select = "underline"; }; soft-wrap = { enable = true; }; line-number = "relative"; color-modes = true; bufferline = "always"; popup-border = "all"; completion-trigger-len = 1; completion-timeout = 5; file-picker.hidden = false; middle-click-paste = false; cursorline = true; indent-guides = { render = true; character = "╎"; }; lsp.display-inlay-hints = true; statusline.center = [ "position-percentage" ]; true-color = true; whitespace.characters = { newline = "↴"; tab = "⇥"; skip-levels = 1; }; }; }; languages.language = [{ name = "nix"; }]; themes = { base16 = with rice.color; { "attributes" = foreground; "comment" = { "fg" = white.dark; "modifiers" = [ "italic" ]; }; "constant" = accent.bright; "constant.character.escape" = foreground; "constant.numeric" = foreground; "constructor" = foreground; "debug" = yellow.base; "diagnostic.modifiers" = [ "underlined" ]; "diff.delta" = blue.bright; "diff.minus" = red.bright; "diff.plus" = green.bright; "error" = red.base; "function" = foreground; "hint" = foreground; "info" = foreground; "keyword" = foreground; "label" = foreground; "namespace" = foreground; "operator" = foreground; "special" = foreground; "string" = secondary.bright; "type" = foreground; "variable" = accent.base; "variableother.member" = foreground; "warning" = red.base; "markup.bold" = { "fg" = foreground; "modifiers" = [ "bold" ]; }; "markup.heading" = foreground; "italic" = { "fg" = foreground; "modifiers" = [ "italic" ]; }; "markup.linktext" = foreground; "markup.linkurl" = { "fg" = foreground; "modifiers" = [ "underlined" ]; }; "markup.list" = foreground; "markup.quote" = foreground; "markup.raw" = foreground; "markup.strikethrough" = { "modifiers" = [ "crossed_out" ]; }; "diagnostic.hint" = { "underline" = { style = "curl"; }; }; "diagnostic.info" = { "underline" = { style = "curl"; }; }; "diagnostic.warning" = { "underline" = { style = "curl"; }; }; "diagnostic.error" = { "underline" = { style = "curl"; }; }; "ui.background" = { # general background of the editor window "bg" = background; }; "ui.bufferline" = { # the top line ("tab"-line) "fg" = accent.base; "bg" = black.base; }; "ui.bufferline.active" = { # the active "tab" "fg" = background; "bg" = accent.base; "modifiers" = [ "bold" ]; }; "ui.cursor" = { # the cursor in Normal mode "fg" = foreground; "modifiers" = [ "reversed" ]; }; "ui.cursorline.primary" = { # the line on which the cursor is on "bg" = black.base; }; "ui.cursor.match" = { # Matching bracket etc. "bg" = green.dark; "modifiers" = [ "reversed" ]; }; "ui.gutter" = { "bg" = black.base; }; "ui.help" = { "fg" = green.base; "bg" = black.base; }; "ui.linenr" = { "fg" = white.dark; "bg" = black.base; }; "ui.linenr.selected" = { "fg" = accent.bright; "modifiers" = [ "bold" ]; }; "ui.menu" = { "fg" = accent.base; "bg" = black.base; }; "ui.menu.scroll" = { "fg" = yellow.dark; "bg" = background; }; "ui.menu.selected" = { "fg" = red.base; "bg" = blue.dark; }; "ui.popup" = { "bg" = black.base; }; "ui.selection" = { "bg" = white.dark; }; "ui.selection.primary" = { "bg" = black.bright; }; "ui.statusline" = { "fg" = blue.bright; "bg" = black.base; }; "ui.statusline.inactive" = { "fg" = red.bright; "bg" = red.dark; }; "ui.statusline.insert" = { "fg" = green.bright; "bg" = green.dark; }; "ui.statusline.normal" = { "fg" = yellow.bright; "bg" = yellow.dark; }; "ui.statusline.select" = { "fg" = cyan.bright; "bg" = cyan.dark; }; "ui.text" = foreground; "ui.text.focus" = accent.base; "ui.virtual.indent-guide" = { "fg" = black.bright; }; "ui.virtual.inlay-hint" = { "fg" = black.bright; }; "ui.virtual.ruler" = { "bg" = background; }; "ui.window" = { "bg" = black.base; }; }; }; }; }