A .config/code/glenda.txt => .config/code/glenda.txt +16 -0
@@ 0,0 1,16 @@
+ __
+ \ / )
+ \ /' / __
+ _.----'-./ _-" )
+ -" "v" _-'
+ ." 'Y"
+ | |
+ | o o |
+ | .><. |
+ | "Ll" /
+ '. |
+ | |
+ \ )
+ / . /'\ *
+ '-(_/,__.--^--" * *
+ * * *
M .config/code/init.lua => .config/code/init.lua +29 -1
@@ 51,7 51,7 @@ vim.opt.clipboard = "unnamedplus"
vim.opt.mouse = "a"
vim.opt.updatetime = 250
--- snacks.nvim (explorer + project picker)
+-- snacks.nvim (explorer + project picker + dashboard)
require("snacks").setup({
explorer = { enabled = true },
picker = {
@@ 63,6 63,34 @@ require("snacks").setup({
},
},
},
+ dashboard = {
+ enabled = true,
+ preset = {
+ header = (function()
+ local f = io.open(vim.fn.stdpath("config") .. "/glenda.txt", "r")
+ if f then local s = f:read("*a"); f:close(); return s end
+ return "code"
+ end)(),
+ keys = {
+ { icon = " ", key = "f", desc = "Find File", action = ":lua Snacks.dashboard.pick('files')" },
+ { icon = " ", key = "n", desc = "New File", action = ":ene | startinsert" },
+ { icon = " ", key = "g", desc = "Find Text", action = ":lua Snacks.dashboard.pick('live_grep')" },
+ { icon = " ", key = "r", desc = "Recent Files", action = ":lua Snacks.dashboard.pick('oldfiles')" },
+ { icon = " ", key = "s", desc = "Browse src", action = ":e ~/.local/src/" },
+ { icon = " ", key = "b", desc = "Browse scripts", action = ":e ~/.local/bin/" },
+ { icon = " ", key = "i", desc = "mkshrc", action = ":e ~/.mkshrc" },
+ { icon = " ", key = "p", desc = "plan9rc", action = ":e ~/.planrc" },
+ { icon = " ", key = "a", desc = "aliases.sh", action = ":e ~/.config/mksh/aliases.sh" },
+ { icon = " ", key = "u", desc = "functions.sh", action = ":e ~/.config/mksh/functions.sh" },
+ { icon = " ", key = "e", desc = "Explorer", action = ":lua Snacks.explorer.open()" },
+ { icon = " ", key = "q", desc = "Quit", action = ":qa" },
+ },
+ },
+ sections = {
+ { section = "header" },
+ { section = "keys", gap = 1, padding = 1 },
+ },
+ },
})
-- gitsigns
A .config/mksh/aliases.sh => .config/mksh/aliases.sh +2 -0
@@ 0,0 1,2 @@
+# mksh aliases
+alias cc="$HOME/src/criterion-cli/criterion"
A .config/mksh/functions.sh => .config/mksh/functions.sh +30 -0
@@ 0,0 1,30 @@
+# mksh functions
+
+# search repo names in ~/src/
+fs() {
+ [ -z "$1" ] && { echo "usage: fs <pattern>"; return 1; }
+ pattern=$(echo "$*" | tr '[:upper:]' '[:lower:]')
+ matches=""
+ count=0
+ for d in "$HOME"/src/*/; do
+ name=${d%/}
+ name=${name##*/}
+ lower=$(echo "$name" | tr '[:upper:]' '[:lower:]')
+ case "$lower" in
+ *"$pattern"*) matches="$matches$name
+"; count=$((count + 1)) ;;
+ esac
+ done
+ if [ "$count" -eq 0 ]; then
+ printf '\n \033[2mno matches for\033[0m \033[1m%s\033[0m\n\n' "$*"
+ return 1
+ fi
+ printf '\n \033[2m%d match(es) for\033[0m \033[1m%s\033[0m\n\n' "$count" "$*"
+ echo "$matches" | while IFS= read -r m; do
+ [ -n "$m" ] && printf ' \033[36m>\033[0m %s\n' "$m"
+ done
+ printf '\n'
+}
+
+lp() { cd "$HOME/edu/craft/learn"; }
+fcc() { cd "$HOME/edu/craft/freecodecamp"; }
D .config/nvim/.gitignore => .config/nvim/.gitignore +0 -8
@@ 1,8 0,0 @@
-tt.*
-.tests
-doc/tags
-debug
-.repro
-foo.*
-*.log
-data
D .config/nvim/.neoconf.json => .config/nvim/.neoconf.json +0 -15
@@ 1,15 0,0 @@
-{
- "neodev": {
- "library": {
- "enabled": true,
- "plugins": true
- }
- },
- "neoconf": {
- "plugins": {
- "lua_ls": {
- "enabled": true
- }
- }
- }
-}
D .config/nvim/colors/acme.lua => .config/nvim/colors/acme.lua +0 -322
@@ 1,322 0,0 @@
--- Acme colorscheme for Neovim
--- Authentic Plan 9 Acme editor aesthetic: monochrome on cream
--- No syntax highlighting — true to how Acme actually works
--- Based on dookie.nvim by Jose Esparza (pebeto/dookie.nvim)
-
-local M = {}
-
-local colors = {
- fg = "#000000",
- fg_dim = "#b7b19c",
- bg = "#ffffea",
- bg_dim = "#ffffca",
- bg_dark = "#eeee9e",
- cursor = "#98ce8f",
- tagbar = "#eaffff",
- tagbar_inactive = "#bdc1bb",
-
- error = "#b85c57",
- warn = "#8f7634",
- info = "#57864e",
- hint = "#2a8dc5",
-
- git_add = "#57864e",
- git_change = "#8f7634",
- git_delete = "#b85c57",
-
- diff_add = "#d5ebd0",
- diff_delete = "#ebd0d0",
- diff_change = "#ebe8d0",
- diff_text = "#d8d5b0",
-}
-
-function M.setup()
- vim.cmd("hi clear")
- if vim.fn.exists("syntax_on") then
- vim.cmd("syntax reset")
- end
-
- vim.o.background = "light"
- vim.g.colors_name = "acme"
-
- local hi = function(group, opts)
- vim.api.nvim_set_hl(0, group, opts)
- end
-
- -- Editor
- hi("Normal", { fg = colors.fg, bg = colors.bg })
- hi("NormalFloat", { fg = colors.fg, bg = colors.bg })
- hi("FloatBorder", { fg = colors.fg, bg = colors.bg })
- hi("Cursor", { bg = colors.cursor })
- hi("CursorLine", { bg = colors.bg_dim })
- hi("CursorLineNr", { fg = colors.fg, bg = colors.bg_dim })
- hi("CursorColumn", { bg = colors.bg_dim })
- hi("LineNr", { fg = colors.fg, bg = colors.bg_dim })
- hi("SignColumn", { bg = colors.bg_dim })
- hi("ColorColumn", { bg = colors.bg_dim })
- hi("VertSplit", { fg = colors.bg_dark, bg = colors.bg })
- hi("WinSeparator", { fg = colors.bg_dark, bg = colors.bg })
- hi("Folded", { fg = colors.fg, bg = colors.bg_dim })
- hi("FoldColumn", { fg = colors.fg, bg = colors.bg_dim })
- hi("NonText", { fg = colors.fg_dim })
- hi("SpecialKey", { fg = colors.fg_dim })
- hi("EndOfBuffer", { fg = colors.bg_dim })
- hi("MatchParen", { fg = colors.fg, bg = colors.bg_dark, underline = true })
- hi("Directory", { fg = colors.fg, bold = true })
- hi("Title", { fg = colors.fg, bold = true })
- hi("Conceal", { fg = colors.fg_dim })
-
- -- Selection
- hi("Visual", { bg = colors.bg_dark })
- hi("VisualNOS", { bg = colors.bg_dark })
-
- -- Search
- hi("Search", { fg = colors.fg, bg = colors.bg_dim, bold = true })
- hi("IncSearch", { fg = colors.fg, bg = colors.bg_dark, bold = true })
- hi("CurSearch", { fg = colors.fg, bg = colors.bg_dark, bold = true })
-
- -- Spell
- hi("SpellBad", { undercurl = true, sp = colors.error })
- hi("SpellCap", { undercurl = true, sp = colors.info })
- hi("SpellRare", { undercurl = true, sp = colors.hint })
- hi("SpellLocal", { undercurl = true, sp = colors.warn })
-
- -- Statusline (Acme tag bar cyan)
- hi("StatusLine", { fg = colors.fg, bg = colors.tagbar, bold = true })
- hi("StatusLineNC", { fg = colors.fg, bg = colors.tagbar_inactive })
- hi("TabLine", { fg = colors.fg, bg = colors.bg_dim })
- hi("TabLineFill", { fg = colors.fg, bg = colors.bg_dim })
- hi("TabLineSel", { fg = colors.fg, bg = colors.bg, bold = true })
- hi("WinBar", { fg = colors.fg, bg = colors.bg })
- hi("WinBarNC", { fg = colors.fg, bg = colors.bg_dim })
-
- -- Popup menu
- hi("Pmenu", { fg = colors.fg, bg = colors.bg_dim })
- hi("PmenuSel", { fg = colors.fg, bg = colors.bg_dim, bold = true })
- hi("PmenuSbar", { bg = colors.bg_dim })
- hi("PmenuThumb", { bg = colors.fg })
-
- -- Messages
- hi("ErrorMsg", { fg = colors.error, bold = true })
- hi("WarningMsg", { fg = colors.warn, bold = true })
- hi("ModeMsg", { fg = colors.fg, bold = true })
- hi("MoreMsg", { fg = colors.fg, bold = true })
- hi("Question", { fg = colors.fg, bold = true })
-
- -- Diagnostics
- hi("DiagnosticError", { fg = colors.error })
- hi("DiagnosticWarn", { fg = colors.warn })
- hi("DiagnosticInfo", { fg = colors.info })
- hi("DiagnosticHint", { fg = colors.hint })
- hi("DiagnosticUnderlineError", { undercurl = true, sp = colors.error })
- hi("DiagnosticUnderlineWarn", { undercurl = true, sp = colors.warn })
- hi("DiagnosticUnderlineInfo", { undercurl = true, sp = colors.info })
- hi("DiagnosticUnderlineHint", { undercurl = true, sp = colors.hint })
-
- -- Diff
- hi("DiffAdd", { bg = colors.diff_add })
- hi("DiffDelete", { bg = colors.diff_delete })
- hi("DiffChange", { bg = colors.diff_change })
- hi("DiffText", { bg = colors.diff_text })
-
- -- Syntax (monochrome — the Acme way)
- hi("Comment", { fg = colors.fg, bold = true })
- hi("Constant", { fg = colors.fg })
- hi("String", { fg = colors.fg, bold = true })
- hi("Character", { fg = colors.fg, bold = true })
- hi("Number", { fg = colors.fg })
- hi("Boolean", { fg = colors.fg })
- hi("Float", { fg = colors.fg })
- hi("Identifier", { fg = colors.fg })
- hi("Function", { fg = colors.fg })
- hi("Statement", { fg = colors.fg })
- hi("Conditional", { fg = colors.fg })
- hi("Repeat", { fg = colors.fg })
- hi("Label", { fg = colors.fg })
- hi("Operator", { fg = colors.fg })
- hi("Keyword", { fg = colors.fg })
- hi("Exception", { fg = colors.fg })
- hi("PreProc", { fg = colors.fg })
- hi("Include", { fg = colors.fg })
- hi("Define", { fg = colors.fg })
- hi("Macro", { fg = colors.fg })
- hi("PreCondit", { fg = colors.fg })
- hi("Type", { fg = colors.fg })
- hi("StorageClass", { fg = colors.fg })
- hi("Structure", { fg = colors.fg })
- hi("Typedef", { fg = colors.fg })
- hi("Special", { fg = colors.fg })
- hi("SpecialChar", { fg = colors.fg })
- hi("Tag", { fg = colors.fg })
- hi("Delimiter", { fg = colors.fg })
- hi("SpecialComment", { fg = colors.fg, bold = true })
- hi("Debug", { fg = colors.fg })
- hi("Underlined", { fg = colors.fg, underline = true })
- hi("Ignore", { fg = colors.fg_dim })
- hi("Error", { fg = colors.error, bold = true })
- hi("Todo", { fg = colors.fg, bold = true, underline = true })
-
- -- Treesitter (monochrome)
- hi("@variable", { fg = colors.fg })
- hi("@variable.builtin", { fg = colors.fg })
- hi("@variable.parameter", { fg = colors.fg })
- hi("@variable.member", { fg = colors.fg })
- hi("@constant", { fg = colors.fg })
- hi("@constant.builtin", { fg = colors.fg })
- hi("@module", { fg = colors.fg })
- hi("@label", { fg = colors.fg })
- hi("@string", { fg = colors.fg, bold = true })
- hi("@string.documentation", { fg = colors.fg, bold = true })
- hi("@string.escape", { fg = colors.fg, bold = true })
- hi("@string.special", { fg = colors.fg, bold = true })
- hi("@character", { fg = colors.fg, bold = true })
- hi("@number", { fg = colors.fg })
- hi("@boolean", { fg = colors.fg })
- hi("@float", { fg = colors.fg })
- hi("@function", { fg = colors.fg })
- hi("@function.builtin", { fg = colors.fg })
- hi("@function.call", { fg = colors.fg })
- hi("@function.macro", { fg = colors.fg })
- hi("@method", { fg = colors.fg })
- hi("@method.call", { fg = colors.fg })
- hi("@constructor", { fg = colors.fg })
- hi("@parameter", { fg = colors.fg })
- hi("@keyword", { fg = colors.fg })
- hi("@keyword.function", { fg = colors.fg })
- hi("@keyword.operator", { fg = colors.fg })
- hi("@keyword.return", { fg = colors.fg })
- hi("@conditional", { fg = colors.fg })
- hi("@repeat", { fg = colors.fg })
- hi("@exception", { fg = colors.fg })
- hi("@include", { fg = colors.fg })
- hi("@type", { fg = colors.fg })
- hi("@type.builtin", { fg = colors.fg })
- hi("@type.qualifier", { fg = colors.fg })
- hi("@type.definition", { fg = colors.fg })
- hi("@storageclass", { fg = colors.fg })
- hi("@attribute", { fg = colors.fg })
- hi("@field", { fg = colors.fg })
- hi("@property", { fg = colors.fg })
- hi("@punctuation.bracket", { fg = colors.fg })
- hi("@punctuation.delimiter", { fg = colors.fg })
- hi("@punctuation.special", { fg = colors.fg })
- hi("@comment", { fg = colors.fg, bold = true })
- hi("@tag", { fg = colors.fg })
- hi("@tag.attribute", { fg = colors.fg })
- hi("@tag.delimiter", { fg = colors.fg })
- hi("@text", { fg = colors.fg })
- hi("@text.strong", { fg = colors.fg, bold = true })
- hi("@text.emphasis", { fg = colors.fg, italic = true })
- hi("@text.underline", { fg = colors.fg, underline = true })
- hi("@text.strike", { fg = colors.fg, strikethrough = true })
- hi("@text.title", { fg = colors.fg, bold = true })
- hi("@text.literal", { fg = colors.fg, bold = true })
- hi("@text.uri", { fg = colors.fg, underline = true })
- hi("@text.todo", { fg = colors.fg, bold = true, underline = true })
- hi("@text.note", { fg = colors.info, bold = true })
- hi("@text.warning", { fg = colors.warn, bold = true })
- hi("@text.danger", { fg = colors.error, bold = true })
-
- -- LSP
- hi("LspReferenceText", { bg = colors.bg_dark })
- hi("LspReferenceRead", { bg = colors.bg_dark })
- hi("LspReferenceWrite", { bg = colors.bg_dark })
- hi("LspSignatureActiveParameter", { fg = colors.fg, bold = true, underline = true })
-
- -- Git signs
- hi("GitSignsAdd", { fg = colors.git_add })
- hi("GitSignsChange", { fg = colors.git_change })
- hi("GitSignsDelete", { fg = colors.git_delete })
- hi("GitSignsCurrentLineBlame", { fg = colors.fg_dim, italic = true })
-
- -- Telescope
- hi("TelescopeBorder", { fg = colors.fg })
- hi("TelescopePromptBorder", { fg = colors.fg })
- hi("TelescopeResultsBorder", { fg = colors.fg })
- hi("TelescopePreviewBorder", { fg = colors.fg })
- hi("TelescopeSelection", { bg = colors.bg_dark })
- hi("TelescopeSelectionCaret", { fg = colors.fg, bg = colors.bg_dark })
- hi("TelescopeMatching", { fg = colors.fg, bold = true, underline = true })
-
- -- NeoTree
- hi("NeoTreeNormal", { fg = colors.fg, bg = colors.bg_dim })
- hi("NeoTreeNormalNC", { fg = colors.fg, bg = colors.bg_dim })
- hi("NeoTreeDirectoryName", { fg = colors.fg, bold = true })
- hi("NeoTreeDirectoryIcon", { fg = colors.fg })
- hi("NeoTreeRootName", { fg = colors.fg, bold = true })
- hi("NeoTreeFileName", { fg = colors.fg })
- hi("NeoTreeGitAdded", { fg = colors.git_add })
- hi("NeoTreeGitModified", { fg = colors.git_change })
- hi("NeoTreeGitDeleted", { fg = colors.git_delete })
-
- -- Which-key
- hi("WhichKey", { fg = colors.fg, bold = true })
- hi("WhichKeyGroup", { fg = colors.fg, bold = true })
- hi("WhichKeyDesc", { fg = colors.fg })
- hi("WhichKeySeparator", { fg = colors.fg_dim })
- hi("WhichKeyFloat", { bg = colors.bg_dim })
-
- -- Indent blankline
- hi("IndentBlanklineChar", { fg = colors.bg_dark })
- hi("IndentBlanklineContextChar", { fg = colors.fg_dim })
- hi("IblIndent", { fg = colors.bg_dark })
- hi("IblScope", { fg = colors.fg_dim })
-
- -- Notify
- hi("NotifyERRORBorder", { fg = colors.error })
- hi("NotifyWARNBorder", { fg = colors.warn })
- hi("NotifyINFOBorder", { fg = colors.info })
- hi("NotifyDEBUGBorder", { fg = colors.fg_dim })
- hi("NotifyTRACEBorder", { fg = colors.hint })
- hi("NotifyERRORIcon", { fg = colors.error })
- hi("NotifyWARNIcon", { fg = colors.warn })
- hi("NotifyINFOIcon", { fg = colors.info })
- hi("NotifyDEBUGIcon", { fg = colors.fg_dim })
- hi("NotifyTRACEIcon", { fg = colors.hint })
- hi("NotifyERRORTitle", { fg = colors.error })
- hi("NotifyWARNTitle", { fg = colors.warn })
- hi("NotifyINFOTitle", { fg = colors.info })
- hi("NotifyDEBUGTitle", { fg = colors.fg_dim })
- hi("NotifyTRACETitle", { fg = colors.hint })
-
- -- Dashboard
- hi("DashboardHeader", { fg = colors.fg, bold = true })
- hi("DashboardCenter", { fg = colors.fg })
- hi("DashboardFooter", { fg = colors.fg_dim })
- hi("DashboardShortCut", { fg = colors.fg, bold = true })
-
- -- Lazy
- hi("LazyButton", { fg = colors.fg, bg = colors.bg_dim })
- hi("LazyButtonActive", { fg = colors.fg, bg = colors.bg_dark, bold = true })
- hi("LazyH1", { fg = colors.fg, bold = true })
- hi("LazySpecial", { fg = colors.fg, bold = true })
-
- -- Mini
- hi("MiniStatuslineModeNormal", { fg = colors.fg, bg = colors.tagbar, bold = true })
- hi("MiniStatuslineModeInsert", { fg = colors.fg, bg = colors.tagbar_inactive, bold = true })
- hi("MiniStatuslineModeVisual", { fg = colors.fg, bg = colors.bg_dark, bold = true })
- hi("MiniStatuslineModeReplace", { fg = colors.bg, bg = colors.error, bold = true })
- hi("MiniStatuslineModeCommand", { fg = colors.fg, bg = colors.bg_dim, bold = true })
-
- -- Bufferline
- hi("BufferLineFill", { bg = colors.bg_dim })
- hi("BufferLineBackground", { fg = colors.fg_dim, bg = colors.bg_dim })
- hi("BufferLineBuffer", { fg = colors.fg_dim, bg = colors.bg_dim })
- hi("BufferLineBufferSelected", { fg = colors.fg, bg = colors.bg, bold = true })
- hi("BufferLineBufferVisible", { fg = colors.fg_dim, bg = colors.bg_dim })
- hi("BufferLineCloseButton", { fg = colors.fg_dim, bg = colors.bg_dim })
- hi("BufferLineCloseButtonSelected", { fg = colors.error, bg = colors.bg })
- hi("BufferLineCloseButtonVisible", { fg = colors.fg_dim, bg = colors.bg_dim })
- hi("BufferLineIndicatorSelected", { fg = colors.fg, bg = colors.bg })
- hi("BufferLineModified", { fg = colors.fg, bg = colors.bg_dim })
- hi("BufferLineModifiedSelected", { fg = colors.fg, bg = colors.bg })
- hi("BufferLineSeparator", { fg = colors.bg_dim, bg = colors.bg_dim })
- hi("BufferLineSeparatorSelected", { fg = colors.bg_dim, bg = colors.bg })
-
- -- Copilot
- hi("CopilotSuggestion", { fg = colors.fg_dim })
-end
-
-M.setup()
-
-return M
D .config/nvim/colors/plan9.lua => .config/nvim/colors/plan9.lua +0 -414
@@ 1,414 0,0 @@
--- Plan9 colorscheme for Neovim
--- Authentic Plan 9 / Acme colors from plan9port and 9front source
--- All colors derived from libdraw constants and acme/rio/sam source code
--- Syntax highlighting uses only the Plan 9 system palette
-
-local M = {}
-
--- Authentic Plan 9 palette (from draw.h / libdraw)
-local p9 = {
- black = "#000000", -- DBlack
- white = "#ffffff", -- DWhite
- red = "#ff0000", -- DRed
- green = "#00ff00", -- DGreen
- blue = "#0000ff", -- DBlue
- cyan = "#00ffff", -- DCyan
- magenta = "#ff00ff", -- DMagenta
- yellow = "#ffff00", -- DYellow
- paleyellow = "#ffffaa", -- DPaleyellow
- darkyellow = "#eeee9e", -- DDarkyellow
- darkgreen = "#448844", -- DDarkgreen
- palegreen = "#aaffaa", -- DPalegreen
- medgreen = "#88cc88", -- DMedgreen
- darkblue = "#000055", -- DDarkblue
- palebluegreen = "#aaffff", -- DPalebluegreen
- paleblue = "#0000bb", -- DPaleblue
- bluegreen = "#008888", -- DBluegreen
- greygreen = "#55aaaa", -- DGreygreen
- palegreygreen = "#9eeeee", -- DPalegreygreen
- yellowgreen = "#99994c", -- DYellowgreen
- medblue = "#000099", -- DMedblue
- greyblue = "#005dbb", -- DGreyblue
- palegreyblue = "#4993dd", -- DPalegreyblue
- purpleblue = "#8888cc", -- DPurpleblue
-
- -- Acme computed mixes (allocimagemix)
- acme_body = "#ffffea", -- DPaleyellow + DWhite mix (acme text bg)
- acme_tag = "#eaffff", -- DPalebluegreen + DWhite mix (acme tag bg)
-
- -- Acme UI specific
- b2_red = "#aa0000", -- Mouse button 2 (execute)
- b3_green = "#006600", -- Mouse button 3 (look/plumb)
- scroll = "#444444", -- Sam scroll indicator
- pale_text = "#666666", -- Rio inactive text
- rio_bg = "#777777", -- Rio desktop
- rio_inactive = "#999999", -- Rio inactive border
-}
-
-local colors = {
- -- Editor base (Acme body)
- bg = p9.acme_body,
- bg_dim = p9.darkyellow,
- bg_dark = p9.yellowgreen,
- fg = p9.black,
- fg_dim = p9.pale_text,
- fg_faint = p9.rio_inactive,
-
- -- Acme tag bar
- tagbar = p9.acme_tag,
- tag_sel = p9.palegreygreen,
- tag_border = p9.purpleblue,
-
- -- Selection (Acme body selection)
- selection = p9.darkyellow,
- cursor_line = "#f5f5d5",
-
- -- Borders
- border = p9.yellowgreen,
-
- -- Syntax (using only Plan 9 system colors)
- comment = p9.yellowgreen,
- string = p9.b2_red,
- keyword = p9.medblue,
- func = p9.bluegreen,
- type = p9.darkgreen,
- const = p9.darkblue,
- preproc = p9.greyblue,
- special = p9.purpleblue,
- operator = p9.scroll,
-
- -- Diagnostics / semantic (Plan 9 UI colors)
- error = p9.b2_red,
- warn = p9.yellowgreen,
- info = p9.darkgreen,
- hint = p9.bluegreen,
-
- -- Git (semantic using Plan 9 palette)
- git_add = p9.darkgreen,
- git_change = p9.yellowgreen,
- git_delete = p9.b2_red,
-
- -- Diff backgrounds (pale versions)
- diff_add = p9.palegreen,
- diff_delete = "#ffaaaa",
- diff_change = p9.darkyellow,
- diff_text = p9.yellowgreen,
-
- -- Line numbers
- line_nr = p9.rio_inactive,
-
- -- Modified indicator
- modified = p9.medblue,
-}
-
-function M.setup()
- vim.cmd("hi clear")
- if vim.fn.exists("syntax_on") then
- vim.cmd("syntax reset")
- end
-
- vim.o.background = "light"
- vim.g.colors_name = "plan9"
-
- local hi = function(group, opts)
- vim.api.nvim_set_hl(0, group, opts)
- end
-
- -- Editor
- hi("Normal", { fg = colors.fg, bg = colors.bg })
- hi("NormalFloat", { fg = colors.fg, bg = p9.acme_tag })
- hi("FloatBorder", { fg = colors.tag_border, bg = p9.acme_tag })
- hi("Cursor", { fg = colors.bg, bg = colors.fg })
- hi("CursorLine", { bg = colors.cursor_line })
- hi("CursorLineNr", { fg = colors.fg, bg = colors.cursor_line, bold = true })
- hi("CursorColumn", { bg = colors.cursor_line })
- hi("LineNr", { fg = colors.line_nr })
- hi("SignColumn", { bg = colors.bg })
- hi("ColorColumn", { bg = colors.bg_dim })
- hi("VertSplit", { fg = colors.border })
- hi("WinSeparator", { fg = colors.border })
- hi("Folded", { fg = colors.fg_dim, bg = colors.bg_dim })
- hi("FoldColumn", { fg = colors.line_nr, bg = colors.bg })
- hi("NonText", { fg = colors.border })
- hi("SpecialKey", { fg = colors.border })
- hi("EndOfBuffer", { fg = colors.bg_dim })
- hi("MatchParen", { fg = colors.fg, bg = p9.palegreygreen, bold = true })
- hi("Directory", { fg = colors.func, bold = true })
- hi("Title", { fg = colors.keyword, bold = true })
- hi("Conceal", { fg = colors.fg_dim })
-
- -- Selection
- hi("Visual", { bg = colors.selection })
- hi("VisualNOS", { bg = colors.selection })
-
- -- Search
- hi("Search", { fg = colors.fg, bg = colors.selection })
- hi("IncSearch", { fg = p9.white, bg = colors.keyword })
- hi("CurSearch", { fg = p9.white, bg = colors.keyword })
-
- -- Spell
- hi("SpellBad", { undercurl = true, sp = colors.error })
- hi("SpellCap", { undercurl = true, sp = colors.info })
- hi("SpellRare", { undercurl = true, sp = colors.hint })
- hi("SpellLocal", { undercurl = true, sp = colors.warn })
-
- -- Statusline (Acme tag bar style)
- hi("StatusLine", { fg = colors.fg, bg = colors.tagbar, bold = true })
- hi("StatusLineNC", { fg = colors.fg_dim, bg = colors.tagbar })
- hi("TabLine", { fg = colors.fg_dim, bg = colors.tagbar })
- hi("TabLineFill", { bg = colors.tagbar })
- hi("TabLineSel", { fg = colors.fg, bg = colors.bg, bold = true })
- hi("WinBar", { fg = colors.fg, bg = colors.bg })
- hi("WinBarNC", { fg = colors.fg_dim, bg = colors.bg_dim })
-
- -- Popup menu (Acme tag bar colors)
- hi("Pmenu", { fg = colors.fg, bg = colors.tagbar })
- hi("PmenuSel", { fg = colors.fg, bg = colors.tag_sel, bold = true })
- hi("PmenuSbar", { bg = colors.tagbar })
- hi("PmenuThumb", { bg = colors.tag_border })
-
- -- Messages
- hi("ErrorMsg", { fg = colors.error, bold = true })
- hi("WarningMsg", { fg = colors.warn, bold = true })
- hi("ModeMsg", { fg = colors.fg, bold = true })
- hi("MoreMsg", { fg = colors.info, bold = true })
- hi("Question", { fg = colors.info })
-
- -- Diagnostics
- hi("DiagnosticError", { fg = colors.error })
- hi("DiagnosticWarn", { fg = colors.warn })
- hi("DiagnosticInfo", { fg = colors.info })
- hi("DiagnosticHint", { fg = colors.hint })
- hi("DiagnosticUnderlineError", { undercurl = true, sp = colors.error })
- hi("DiagnosticUnderlineWarn", { undercurl = true, sp = colors.warn })
- hi("DiagnosticUnderlineInfo", { undercurl = true, sp = colors.info })
- hi("DiagnosticUnderlineHint", { undercurl = true, sp = colors.hint })
-
- -- Diff
- hi("DiffAdd", { bg = colors.diff_add })
- hi("DiffDelete", { bg = colors.diff_delete })
- hi("DiffChange", { bg = colors.diff_change })
- hi("DiffText", { bg = colors.diff_text })
-
- -- Syntax (Plan 9 palette — muted, deliberate color choices)
- hi("Comment", { fg = colors.comment, italic = true })
- hi("Constant", { fg = colors.const })
- hi("String", { fg = colors.string })
- hi("Character", { fg = colors.string })
- hi("Number", { fg = colors.const })
- hi("Boolean", { fg = colors.const })
- hi("Float", { fg = colors.const })
- hi("Identifier", { fg = colors.fg })
- hi("Function", { fg = colors.func })
- hi("Statement", { fg = colors.keyword })
- hi("Conditional", { fg = colors.keyword })
- hi("Repeat", { fg = colors.keyword })
- hi("Label", { fg = colors.keyword })
- hi("Operator", { fg = colors.operator })
- hi("Keyword", { fg = colors.keyword, bold = true })
- hi("Exception", { fg = colors.error })
- hi("PreProc", { fg = colors.preproc })
- hi("Include", { fg = colors.preproc })
- hi("Define", { fg = colors.preproc })
- hi("Macro", { fg = colors.preproc })
- hi("PreCondit", { fg = colors.preproc })
- hi("Type", { fg = colors.type })
- hi("StorageClass", { fg = colors.type })
- hi("Structure", { fg = colors.type })
- hi("Typedef", { fg = colors.type })
- hi("Special", { fg = colors.special })
- hi("SpecialChar", { fg = colors.special })
- hi("Tag", { fg = colors.func })
- hi("Delimiter", { fg = colors.operator })
- hi("SpecialComment", { fg = colors.comment, bold = true })
- hi("Debug", { fg = colors.error })
- hi("Underlined", { fg = colors.preproc, underline = true })
- hi("Ignore", { fg = colors.fg_faint })
- hi("Error", { fg = p9.white, bg = colors.error, bold = true })
- hi("Todo", { fg = colors.bg, bg = colors.modified, bold = true })
-
- -- Treesitter
- hi("@variable", { fg = colors.fg })
- hi("@variable.builtin", { fg = colors.special })
- hi("@variable.parameter", { fg = colors.fg })
- hi("@variable.member", { fg = colors.fg })
- hi("@constant", { fg = colors.const })
- hi("@constant.builtin", { fg = colors.const, bold = true })
- hi("@module", { fg = colors.type })
- hi("@label", { fg = colors.keyword })
- hi("@string", { fg = colors.string })
- hi("@string.documentation", { fg = colors.comment })
- hi("@string.escape", { fg = colors.special })
- hi("@string.special", { fg = colors.special })
- hi("@character", { fg = colors.string })
- hi("@number", { fg = colors.const })
- hi("@boolean", { fg = colors.const, bold = true })
- hi("@float", { fg = colors.const })
- hi("@function", { fg = colors.func })
- hi("@function.builtin", { fg = colors.func })
- hi("@function.call", { fg = colors.func })
- hi("@function.macro", { fg = colors.preproc })
- hi("@method", { fg = colors.func })
- hi("@method.call", { fg = colors.func })
- hi("@constructor", { fg = colors.type })
- hi("@parameter", { fg = colors.fg })
- hi("@keyword", { fg = colors.keyword, bold = true })
- hi("@keyword.function", { fg = colors.keyword, bold = true })
- hi("@keyword.operator", { fg = colors.keyword })
- hi("@keyword.return", { fg = colors.keyword, bold = true })
- hi("@conditional", { fg = colors.keyword })
- hi("@repeat", { fg = colors.keyword })
- hi("@exception", { fg = colors.error })
- hi("@include", { fg = colors.preproc })
- hi("@type", { fg = colors.type })
- hi("@type.builtin", { fg = colors.type })
- hi("@type.qualifier", { fg = colors.keyword })
- hi("@type.definition", { fg = colors.type })
- hi("@storageclass", { fg = colors.keyword })
- hi("@attribute", { fg = colors.preproc })
- hi("@field", { fg = colors.fg })
- hi("@property", { fg = colors.fg })
- hi("@punctuation.bracket", { fg = colors.operator })
- hi("@punctuation.delimiter", { fg = colors.operator })
- hi("@punctuation.special", { fg = colors.special })
- hi("@comment", { fg = colors.comment, italic = true })
- hi("@tag", { fg = colors.func })
- hi("@tag.attribute", { fg = colors.type })
- hi("@tag.delimiter", { fg = colors.operator })
- hi("@text", { fg = colors.fg })
- hi("@text.strong", { bold = true })
- hi("@text.emphasis", { italic = true })
- hi("@text.underline", { underline = true })
- hi("@text.strike", { strikethrough = true })
- hi("@text.title", { fg = colors.keyword, bold = true })
- hi("@text.literal", { fg = colors.string })
- hi("@text.uri", { fg = colors.preproc, underline = true })
- hi("@text.todo", { fg = colors.bg, bg = colors.modified, bold = true })
- hi("@text.note", { fg = colors.bg, bg = colors.info, bold = true })
- hi("@text.warning", { fg = colors.bg, bg = colors.warn, bold = true })
- hi("@text.danger", { fg = p9.white, bg = colors.error, bold = true })
-
- -- LSP
- hi("LspReferenceText", { bg = colors.selection })
- hi("LspReferenceRead", { bg = colors.selection })
- hi("LspReferenceWrite", { bg = colors.selection })
- hi("LspSignatureActiveParameter", { fg = colors.keyword, bold = true })
-
- -- Git signs
- hi("GitSignsAdd", { fg = colors.git_add })
- hi("GitSignsChange", { fg = colors.git_change })
- hi("GitSignsDelete", { fg = colors.git_delete })
- hi("GitSignsCurrentLineBlame", { fg = colors.fg_faint, italic = true })
-
- -- Telescope / Snacks picker
- hi("TelescopeBorder", { fg = colors.tag_border })
- hi("TelescopePromptBorder", { fg = colors.tag_border })
- hi("TelescopeResultsBorder", { fg = colors.tag_border })
- hi("TelescopePreviewBorder", { fg = colors.tag_border })
- hi("TelescopeSelection", { bg = colors.selection })
- hi("TelescopeSelectionCaret", { fg = colors.keyword, bg = colors.selection })
- hi("TelescopeMatching", { fg = colors.string, bold = true })
-
- -- NeoTree (sidebar like Acme tag column)
- hi("NeoTreeNormal", { fg = colors.fg, bg = colors.tagbar })
- hi("NeoTreeNormalNC", { fg = colors.fg, bg = colors.tagbar })
- hi("NeoTreeDirectoryName", { fg = colors.fg, bold = true })
- hi("NeoTreeDirectoryIcon", { fg = colors.func })
- hi("NeoTreeRootName", { fg = colors.fg, bold = true })
- hi("NeoTreeFileName", { fg = colors.fg })
- hi("NeoTreeGitAdded", { fg = colors.git_add })
- hi("NeoTreeGitModified", { fg = colors.git_change })
- hi("NeoTreeGitDeleted", { fg = colors.git_delete })
-
- -- Which-key
- hi("WhichKey", { fg = colors.keyword, bold = true })
- hi("WhichKeyGroup", { fg = colors.func })
- hi("WhichKeyDesc", { fg = colors.fg })
- hi("WhichKeySeparator", { fg = colors.fg_faint })
- hi("WhichKeyFloat", { bg = colors.tagbar })
-
- -- Indent blankline
- hi("IndentBlanklineChar", { fg = colors.bg_dim })
- hi("IndentBlanklineContextChar", { fg = colors.border })
- hi("IblIndent", { fg = colors.bg_dim })
- hi("IblScope", { fg = colors.border })
-
- -- Notify
- hi("NotifyERRORBorder", { fg = colors.error })
- hi("NotifyWARNBorder", { fg = colors.warn })
- hi("NotifyINFOBorder", { fg = colors.info })
- hi("NotifyDEBUGBorder", { fg = colors.fg_faint })
- hi("NotifyTRACEBorder", { fg = colors.hint })
- hi("NotifyERRORIcon", { fg = colors.error })
- hi("NotifyWARNIcon", { fg = colors.warn })
- hi("NotifyINFOIcon", { fg = colors.info })
- hi("NotifyDEBUGIcon", { fg = colors.fg_faint })
- hi("NotifyTRACEIcon", { fg = colors.hint })
- hi("NotifyERRORTitle", { fg = colors.error })
- hi("NotifyWARNTitle", { fg = colors.warn })
- hi("NotifyINFOTitle", { fg = colors.info })
- hi("NotifyDEBUGTitle", { fg = colors.fg_faint })
- hi("NotifyTRACETitle", { fg = colors.hint })
-
- -- Snacks (LazyVim notifications/dashboard)
- hi("SnacksNotifierBorderError", { fg = colors.error })
- hi("SnacksNotifierBorderWarn", { fg = colors.warn })
- hi("SnacksNotifierBorderInfo", { fg = colors.info })
- hi("SnacksNotifierBorderDebug", { fg = colors.fg_faint })
- hi("SnacksNotifierBorderTrace", { fg = colors.hint })
- hi("SnacksDashboardHeader", { fg = colors.keyword, bold = true })
- hi("SnacksDashboardKey", { fg = colors.keyword, bold = true })
- hi("SnacksDashboardIcon", { fg = colors.func })
- hi("SnacksDashboardDesc", { fg = colors.fg })
- hi("SnacksDashboardFooter", { fg = colors.fg_dim })
-
- -- Dashboard (legacy)
- hi("DashboardHeader", { fg = colors.keyword, bold = true })
- hi("DashboardCenter", { fg = colors.fg })
- hi("DashboardFooter", { fg = colors.fg_faint })
- hi("DashboardShortCut", { fg = colors.keyword })
-
- -- Lazy
- hi("LazyButton", { fg = colors.fg, bg = colors.bg_dim })
- hi("LazyButtonActive", { fg = colors.fg, bg = colors.tag_sel, bold = true })
- hi("LazyH1", { fg = colors.keyword, bold = true })
- hi("LazySpecial", { fg = colors.func })
-
- -- Mini statusline (Plan 9 accent colors for modes)
- hi("MiniStatuslineModeNormal", { fg = p9.white, bg = p9.bluegreen, bold = true })
- hi("MiniStatuslineModeInsert", { fg = p9.white, bg = p9.darkgreen, bold = true })
- hi("MiniStatuslineModeVisual", { fg = p9.white, bg = p9.purpleblue, bold = true })
- hi("MiniStatuslineModeReplace", { fg = p9.white, bg = p9.b2_red, bold = true })
- hi("MiniStatuslineModeCommand", { fg = colors.fg, bg = p9.darkyellow, bold = true })
-
- -- Bufferline (tag bar style)
- hi("BufferLineFill", { bg = colors.tagbar })
- hi("BufferLineBackground", { fg = colors.fg_dim, bg = colors.tagbar })
- hi("BufferLineBuffer", { fg = colors.fg_dim, bg = colors.tagbar })
- hi("BufferLineBufferSelected", { fg = colors.fg, bg = colors.bg, bold = true })
- hi("BufferLineBufferVisible", { fg = colors.fg_dim, bg = colors.tagbar })
- hi("BufferLineCloseButton", { fg = colors.fg_dim, bg = colors.tagbar })
- hi("BufferLineCloseButtonSelected", { fg = colors.error, bg = colors.bg })
- hi("BufferLineCloseButtonVisible", { fg = colors.fg_dim, bg = colors.tagbar })
- hi("BufferLineIndicatorSelected", { fg = colors.tag_border, bg = colors.bg })
- hi("BufferLineModified", { fg = colors.modified, bg = colors.tagbar })
- hi("BufferLineModifiedSelected", { fg = colors.modified, bg = colors.bg })
- hi("BufferLineSeparator", { fg = colors.tagbar, bg = colors.tagbar })
- hi("BufferLineSeparatorSelected", { fg = colors.tagbar, bg = colors.bg })
-
- -- Copilot
- hi("CopilotSuggestion", { fg = colors.fg_faint })
-
- -- Lualine (if used instead of mini)
- hi("lualine_a_normal", { fg = p9.white, bg = p9.bluegreen, bold = true })
- hi("lualine_a_insert", { fg = p9.white, bg = p9.darkgreen, bold = true })
- hi("lualine_a_visual", { fg = p9.white, bg = p9.purpleblue, bold = true })
- hi("lualine_a_replace", { fg = p9.white, bg = p9.b2_red, bold = true })
- hi("lualine_a_command", { fg = colors.fg, bg = p9.darkyellow, bold = true })
- hi("lualine_b_normal", { fg = colors.fg, bg = colors.tagbar })
- hi("lualine_c_normal", { fg = colors.fg_dim, bg = colors.bg_dim })
-end
-
-M.setup()
-
-return M
D .config/nvim/init.lua => .config/nvim/init.lua +0 -2
@@ 1,2 0,0 @@
--- bootstrap lazy.nvim, LazyVim and your plugins
-require("config.lazy")
D .config/nvim/lazy-lock.json => .config/nvim/lazy-lock.json +0 -34
@@ 1,34 0,0 @@
-{
- "LazyVim": { "branch": "main", "commit": "c64a61734fc9d45470a72603395c02137802bc6f" },
- "blink.cmp": { "branch": "main", "commit": "b19413d214068f316c78978b08264ed1c41830ec" },
- "bufferline.nvim": { "branch": "main", "commit": "655133c3b4c3e5e05ec549b9f8cc2894ac6f51b3" },
- "catppuccin": { "branch": "main", "commit": "beaf41a30c26fd7d6c386d383155cbd65dd554cd" },
- "conform.nvim": { "branch": "master", "commit": "c2526f1cde528a66e086ab1668e996d162c75f4f" },
- "flash.nvim": { "branch": "main", "commit": "fcea7ff883235d9024dc41e638f164a450c14ca2" },
- "friendly-snippets": { "branch": "main", "commit": "572f5660cf05f8cd8834e096d7b4c921ba18e175" },
- "gitsigns.nvim": { "branch": "main", "commit": "abf82a65f185bd54adc0679f74b7d6e1ada690c9" },
- "grug-far.nvim": { "branch": "main", "commit": "1f7a722a9b9f0206a345377c13e62542f484398a" },
- "lazy.nvim": { "branch": "main", "commit": "85c7ff3711b730b4030d03144f6db6375044ae82" },
- "lazydev.nvim": { "branch": "main", "commit": "5231c62aa83c2f8dc8e7ba957aa77098cda1257d" },
- "lualine.nvim": { "branch": "master", "commit": "47f91c416daef12db467145e16bed5bbfe00add8" },
- "mason-lspconfig.nvim": { "branch": "main", "commit": "4823a251e7578a835bb979c37df390fca692ba39" },
- "mason.nvim": { "branch": "main", "commit": "44d1e90e1f66e077268191e3ee9d2ac97cc18e65" },
- "mini.ai": { "branch": "main", "commit": "9eae720f2b20f6ad28cbfa0ddc524e10dc2c3201" },
- "mini.icons": { "branch": "main", "commit": "efc85e42262cd0c9e1fdbf806c25cb0be6de115c" },
- "mini.pairs": { "branch": "main", "commit": "4089aa6ea6423e02e1a8326a7a7a00159f6f5e04" },
- "noice.nvim": { "branch": "main", "commit": "7bfd942445fb63089b59f97ca487d605e715f155" },
- "nui.nvim": { "branch": "main", "commit": "de740991c12411b663994b2860f1a4fd0937c130" },
- "nvim-lint": { "branch": "master", "commit": "ca6ea12daf0a4d92dc24c5c9ae22a1f0418ade37" },
- "nvim-lspconfig": { "branch": "master", "commit": "419b082102fa813739588dd82e19a8b6b2442855" },
- "nvim-treesitter": { "branch": "main", "commit": "511e5ccf404f8a96ee31866b079fca033a8a7c4e" },
- "nvim-treesitter-textobjects": { "branch": "main", "commit": "4d55f63252e04c5212daed958e4e940915ff16ce" },
- "nvim-ts-autotag": { "branch": "main", "commit": "db15f2e0df2f5db916e511e3fffb682ef2f6354f" },
- "persistence.nvim": { "branch": "main", "commit": "b20b2a7887bd39c1a356980b45e03250f3dce49c" },
- "plenary.nvim": { "branch": "master", "commit": "b9fd5226c2f76c951fc8ed5923d85e4de065e509" },
- "snacks.nvim": { "branch": "main", "commit": "fe7cfe9800a182274d0f868a74b7263b8c0c020b" },
- "todo-comments.nvim": { "branch": "main", "commit": "31e3c38ce9b29781e4422fc0322eb0a21f4e8668" },
- "tokyonight.nvim": { "branch": "main", "commit": "5da1b76e64daf4c5d410f06bcb6b9cb640da7dfd" },
- "trouble.nvim": { "branch": "main", "commit": "bd67efe408d4816e25e8491cc5ad4088e708a69a" },
- "ts-comments.nvim": { "branch": "main", "commit": "123a9fb12e7229342f807ec9e6de478b1102b041" },
- "which-key.nvim": { "branch": "main", "commit": "3aab2147e74890957785941f0c1ad87d0a44c15a" }
-}
D .config/nvim/lazyvim.json => .config/nvim/lazyvim.json +0 -10
@@ 1,10 0,0 @@
-{
- "extras": [
-
- ],
- "install_version": 8,
- "news": {
- "NEWS.md": "11866"
- },
- "version": 8
-}>
\ No newline at end of file
D .config/nvim/lua/config/autocmds.lua => .config/nvim/lua/config/autocmds.lua +0 -8
@@ 1,8 0,0 @@
--- Autocmds are automatically loaded on the VeryLazy event
--- Default autocmds that are always set: https://github.com/LazyVim/LazyVim/blob/main/lua/lazyvim/config/autocmds.lua
---
--- Add any additional autocmds here
--- with `vim.api.nvim_create_autocmd`
---
--- Or remove existing autocmds by their group name (which is prefixed with `lazyvim_` for the defaults)
--- e.g. vim.api.nvim_del_augroup_by_name("lazyvim_wrap_spell")
D .config/nvim/lua/config/keymaps.lua => .config/nvim/lua/config/keymaps.lua +0 -3
@@ 1,3 0,0 @@
--- Keymaps are automatically loaded on the VeryLazy event
--- Default keymaps that are always set: https://github.com/LazyVim/LazyVim/blob/main/lua/lazyvim/config/keymaps.lua
--- Add any additional keymaps here
D .config/nvim/lua/config/lazy.lua => .config/nvim/lua/config/lazy.lua +0 -53
@@ 1,53 0,0 @@
-local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.nvim"
-if not (vim.uv or vim.loop).fs_stat(lazypath) then
- local lazyrepo = "https://github.com/folke/lazy.nvim.git"
- local out = vim.fn.system({ "git", "clone", "--filter=blob:none", "--branch=stable", lazyrepo, lazypath })
- if vim.v.shell_error ~= 0 then
- vim.api.nvim_echo({
- { "Failed to clone lazy.nvim:\n", "ErrorMsg" },
- { out, "WarningMsg" },
- { "\nPress any key to exit..." },
- }, true, {})
- vim.fn.getchar()
- os.exit(1)
- end
-end
-vim.opt.rtp:prepend(lazypath)
-
-require("lazy").setup({
- spec = {
- -- add LazyVim and import its plugins
- { "LazyVim/LazyVim", import = "lazyvim.plugins" },
- -- import/override with your plugins
- { import = "plugins" },
- },
- defaults = {
- -- By default, only LazyVim plugins will be lazy-loaded. Your custom plugins will load during startup.
- -- If you know what you're doing, you can set this to `true` to have all your custom plugins lazy-loaded by default.
- lazy = false,
- -- It's recommended to leave version=false for now, since a lot the plugin that support versioning,
- -- have outdated releases, which may break your Neovim install.
- version = false, -- always use the latest git commit
- -- version = "*", -- try installing the latest stable version for plugins that support semver
- },
- install = { colorscheme = { "tokyonight", "habamax" } },
- checker = {
- enabled = true, -- check for plugin updates periodically
- notify = false, -- notify on update
- }, -- automatically check for plugin updates
- performance = {
- rtp = {
- -- disable some rtp plugins
- disabled_plugins = {
- "gzip",
- -- "matchit",
- -- "matchparen",
- -- "netrwPlugin",
- "tarPlugin",
- "tohtml",
- "tutor",
- "zipPlugin",
- },
- },
- },
-})
D .config/nvim/lua/config/options.lua => .config/nvim/lua/config/options.lua +0 -3
@@ 1,3 0,0 @@
--- Options are automatically loaded before lazy.nvim startup
--- Default options that are always set: https://github.com/LazyVim/LazyVim/blob/main/lua/lazyvim/config/options.lua
--- Add any additional options here
D .config/nvim/lua/plugins/colorscheme.lua => .config/nvim/lua/plugins/colorscheme.lua +0 -74
@@ 1,74 0,0 @@
--- Colorscheme configuration
--- Default: plan9
--- Alternatives: acme, base16-grayscale-light, base16-grayscale-dark,
--- catppuccin-latte, tokyonight-night
---
--- Or use keymaps:
--- <leader>up - Plan9 (default)
--- <leader>ua - Acme (monochrome)
--- <leader>ug - Base16 Grayscale Light
--- <leader>uG - Base16 Grayscale Dark
--- <leader>uc - Catppuccin Latte (light)
--- <leader>ut - TokyoNight (dark)
-
-return {
- -- Base16 (grayscale light/dark)
- {
- "RRethy/base16-nvim",
- lazy = true,
- },
-
- -- Catppuccin (light theme option)
- {
- "catppuccin/nvim",
- name = "catppuccin",
- lazy = true,
- opts = {
- flavour = "latte",
- },
- },
-
- -- TokyoNight (dark theme option)
- {
- "folke/tokyonight.nvim",
- lazy = true,
- opts = {
- style = "day",
- transparent = false,
- terminal_colors = true,
- styles = {
- comments = { italic = true },
- keywords = { italic = true },
- functions = {},
- variables = {},
- sidebars = "dark",
- floats = "dark",
- },
- },
- },
-
- -- Set plan9 as the default colorscheme
- {
- "LazyVim/LazyVim",
- opts = {
- colorscheme = "tokyonight-day",
- },
- },
-
- -- Keymaps for switching themes
- {
- "folke/which-key.nvim",
- optional = true,
- opts = {
- spec = {
- { "<leader>up", "<cmd>colorscheme plan9<cr>", desc = "Plan9 (default)" },
- { "<leader>ua", "<cmd>colorscheme acme<cr>", desc = "Acme (monochrome)" },
- { "<leader>ug", "<cmd>colorscheme base16-grayscale-light<cr>", desc = "Grayscale Light" },
- { "<leader>uG", "<cmd>colorscheme base16-grayscale-dark<cr>", desc = "Grayscale Dark" },
- { "<leader>uc", "<cmd>colorscheme catppuccin-latte<cr>", desc = "Catppuccin Latte (light)" },
- { "<leader>ud", "<cmd>colorscheme tokyonight-day<cr>", desc = "TokyoNight Day (light)" },
- { "<leader>ut", "<cmd>colorscheme tokyonight-night<cr>", desc = "TokyoNight Night (dark)" },
- },
- },
- },
-}
D .config/nvim/lua/plugins/dashboard.lua => .config/nvim/lua/plugins/dashboard.lua +0 -34
@@ 1,34 0,0 @@
--- Custom dashboard buttons for LazyVim (using snacks.nvim)
-return {
- {
- "folke/snacks.nvim",
- opts = {
- dashboard = {
- preset = {
- keys = {
- { icon = " ", key = "f", desc = "Find File", action = ":lua Snacks.dashboard.pick('files')" },
- { icon = " ", key = "n", desc = "New File", action = ":ene | startinsert" },
- { icon = " ", key = "g", desc = "Find Text", action = ":lua Snacks.dashboard.pick('live_grep')" },
- { icon = " ", key = "r", desc = "Recent Files", action = ":lua Snacks.dashboard.pick('oldfiles')" },
- -- { icon = " ", key = "R", desc = "Restore Session", action = ":lua require('persistence').load()" },
- { icon = " ", key = "s", desc = "Browse src", action = ":e ~/.local/src/" },
- { icon = " ", key = "b", desc = "Browse scripts", action = ":e ~/.local/bin/" },
- -- { icon = " ", key = "p", desc = "Projects", action = ":e ~/dev/" },
- -- { icon = " ", key = "B", desc = "Bookmarks", action = ":e ~/.local/share/karbs/snippets" },
- { icon = " ", key = "i", desc = "Fish Config", action = ":e ~/.config/fish/config.fish" },
- { icon = " ", key = "c", desc = "Lazy Config", action = ":lua Snacks.dashboard.pick('files', {cwd = vim.fn.stdpath('config')})" },
- { icon = " ", key = "m", desc = "Lazy Mappings", action = ":e ~/.config/nvim/lua/config/keymaps.lua" },
- { icon = " ", key = "x", desc = "Lazy Extras", action = ":LazyExtras" },
- { icon = " ", key = "l", desc = "Lazy Plugins", action = ":Lazy" },
- { icon = " ", key = "q", desc = "Quit", action = ":qa" },
- },
- },
- sections = {
- { section = "header" },
- { section = "keys", gap = 1, padding = 1 },
- { section = "startup" },
- },
- },
- },
- },
-}
D .config/nvim/lua/plugins/neo-tree.lua => .config/nvim/lua/plugins/neo-tree.lua +0 -26
@@ 1,26 0,0 @@
--- Always show neo-tree sidebar
-return {
- {
- "nvim-neo-tree/neo-tree.nvim",
- opts = {
- filesystem = {
- filtered_items = {
- visible = true,
- hide_dotfiles = false,
- hide_gitignored = false,
- },
- },
- },
- init = function()
- -- Auto-open neo-tree on startup
- vim.api.nvim_create_autocmd("VimEnter", {
- callback = function()
- if vim.fn.argc() > 0 then
- -- Only open if we're opening a file/directory
- vim.cmd("Neotree show")
- end
- end,
- })
- end,
- },
-}
D .config/nvim/stylua.toml => .config/nvim/stylua.toml +0 -3
@@ 1,3 0,0 @@
-indent_type = "Spaces"
-indent_width = 2
-column_width = 120>
\ No newline at end of file
M .config/write/init.lua => .config/write/init.lua +33 -3
@@ 67,7 67,7 @@ vim.opt.undodir = vim.fn.stdpath("data") .. "/undo"
vim.opt.clipboard = "unnamedplus"
vim.opt.mouse = "a"
--- snacks.nvim (explorer + project picker)
+-- snacks.nvim (explorer + project picker + dashboard)
require("snacks").setup({
explorer = { enabled = true },
picker = {
@@ 79,6 79,34 @@ require("snacks").setup({
},
},
},
+ dashboard = {
+ enabled = true,
+ preset = {
+ header = [[
+ (\
+'\
+ '\ __________
+ / '| ()________)
+ \ '/ \ ~~~~~~~~ \
+ \ \ ~~~~~~ \
+ ==). \__________\
+ (__) ()__________)]],
+ keys = {
+ { icon = " ", key = "f", desc = "Find File", action = ":lua Snacks.dashboard.pick('files')" },
+ { icon = " ", key = "n", desc = "New File", action = ":ene | startinsert" },
+ { icon = " ", key = "g", desc = "Find Text", action = ":lua Snacks.dashboard.pick('live_grep')" },
+ { icon = " ", key = "r", desc = "Recent Files", action = ":lua Snacks.dashboard.pick('oldfiles')" },
+ { icon = " ", key = "s", desc = "Browse slipbox", action = ":e ~/dev/slipbox/" },
+ { icon = " ", key = "b", desc = "Browse content", action = ":e ~/.corpus/content/" },
+ { icon = " ", key = "e", desc = "Explorer", action = ":lua Snacks.explorer.open()" },
+ { icon = " ", key = "q", desc = "Quit", action = ":qa" },
+ },
+ },
+ sections = {
+ { section = "header" },
+ { section = "keys", gap = 1, padding = 1 },
+ },
+ },
})
-- Word count in statusline (shown in cmdline area)
@@ 226,9 254,11 @@ vim.api.nvim_create_autocmd({ "FocusLost", "CursorHold", "InsertLeave" }, {
end,
})
--- Goyo on by default
+-- Goyo on by default (but not when dashboard is showing)
vim.api.nvim_create_autocmd("VimEnter", {
callback = function()
- vim.cmd("Goyo")
+ if vim.fn.argc() > 0 then
+ vim.cmd("Goyo")
+ end
end,
})
M .local/share/fastfetch/ascii/glenda.txt => .local/share/fastfetch/ascii/glenda.txt +16 -15
@@ 1,15 1,16 @@
- __
- ( \
- __ \ '\
-( "-_ \ .-'----._
- '-_ "v" "-
- "Y' ".
- | |
- | o o |
- | .<>. |
- \ "Ll" |
- | .'
- | |
- ( /
- /'\ . \
- "--^--.__,\_)-'
+ __
+ \ / )
+ \ /' / __
+ _.----'-./ _-" )
+ -" "v" _-'
+ ." 'Y"
+ | |
+ | o o |
+ | .><. |
+ | "Ll" /
+ '. |
+ | |
+ \ )
+ / . /'\ *
+ '-(_/,__.--^--" * *
+ * * *
A .planrc => .planrc +1 -0
@@ 0,0 1,1 @@
+# Plan 9 rc shell config
M README.md => README.md +26 -0
@@ 31,3 31,29 @@ profiles/ → Per-machine overrides (moirai, khr1st, pentest)
## Related
- [sdeploy](https://github.com/krisyotam/sdeploy) — Deployment scripts that install packages and stow these dotfiles
+
+
+
+profiles/gentoo/portage/
+├── make.conf # Global: CFLAGS, USE, GPU,
+MAKEOPTS
+├── package.use/
+│ ├── browsers # surf savedconfig
+│ ├── documents # zathura backends
+│ ├── editors # neovim, emacs
+│ ├── graphics # gimp, inkscape
+│ ├── multimedia # pipewire, mpv, ffmpeg, mpd
+│ ├── security # gnupg, openvpn
+│ └── xorg # xorg-server, picom, dunst
+├── package.accept_keywords/ # empty, for unmasking ~amd64
+├── package.mask/ # empty
+├── package.unmask/ # empty
+├── package.license/ # empty
+├── repos.conf/ # empty, for overlays
+└── savedconfig/ # empty, for suckless configs
+
+ www-client/ = web browsers
+ app-editors/ = editors (neovim, emacs)
+ media-video/ = video stuff (mpv, pipewire)
+ sys-process/ = process tools (btop)
+ x11-misc/ = X utilities (picom, dunst)<
\ No newline at end of file
M profiles/README.md => profiles/README.md +1 -0
@@ 18,3 18,4 @@ cd ~/srice/profiles/moirai && stow -t ~ .
- `moirai/` — Desktop (4-monitor, AMD dGPU + Intel iGPU, Arrow Lake)
- `khr1st/` — Laptop
- `pentest/` — Kali/security-focused config
+- `gentoo/` — Gentoo musl/OpenRC system configs (portage, USE flags, make.conf)
A profiles/gentoo/portage/make.conf => profiles/gentoo/portage/make.conf +43 -0
@@ 0,0 1,43 @@
+# /etc/portage/make.conf
+# Gentoo system configuration for moirai (Arrow Lake + RX 6800 XT)
+
+# Compiler flags
+COMMON_FLAGS="-O2 -pipe -march=native"
+CFLAGS="${COMMON_FLAGS}"
+CXXFLAGS="${COMMON_FLAGS}"
+FCFLAGS="${COMMON_FLAGS}"
+FFLAGS="${COMMON_FLAGS}"
+
+# Parallel builds: Arrow Lake Core Ultra 7 265K (20 threads)
+MAKEOPTS="-j20"
+
+# Global USE flags
+USE="-systemd -elogind -consolekit -pulseaudio -bluetooth -networkmanager
+ X openrc musl pipewire alsa iwd seatd
+ unicode truetype fontconfig
+ jpeg png gif svg webp tiff
+ pdf djvu postscript
+ gpg ssl curl
+ -dbus -policykit -udisks -gvfs"
+
+# GPU
+VIDEO_CARDS="amdgpu radeonsi"
+INPUT_DEVICES="libinput"
+
+# Accepted licenses
+ACCEPT_LICENSE="*"
+
+# Locale
+LINGUAS="en"
+L10N="en"
+
+# Mirrors
+GENTOO_MIRRORS="https://distfiles.gentoo.org"
+
+# Features
+FEATURES="parallel-fetch candy"
+
+# Portage directories
+PORTDIR="/var/db/repos/gentoo"
+DISTDIR="/var/cache/distfiles"
+PKGDIR="/var/cache/binpkgs"
A profiles/gentoo/portage/package.use => profiles/gentoo/portage/package.use +203 -0
@@ 0,0 1,203 @@
+# =============================================================================
+# package.use
+# /etc/portage/package.use
+#
+# Author: Kris Yotam (khr1st)
+# Date: 2026-05-21
+# System: Gentoo musl/OpenRC — moirai (Arrow Lake + RX 6800 XT)
+# =============================================================================
+#
+# Format: category/package flag1 flag2 -flag3
+# flag = enable at compile time
+# -flag = disable at compile time
+#
+# See available flags: emerge -pv category/package
+# See active flags: equery uses category/package
+# =============================================================================
+
+
+# =============================================================================
+# Core / Init
+# =============================================================================
+sys-apps/openrc -netifrc # iwd+dhcpcd, not netifrc
+sys-auth/seatd -builtin # standalone seat manager
+sys-libs/musl -static # system libc
+sys-fs/eudev -rule-generator # device manager
+sys-process/audit -gssapi # no kerberos
+
+
+# =============================================================================
+# X11 / Display
+# =============================================================================
+x11-base/xorg-server -minimal -wayland udev
+x11-apps/xinit -twm
+x11-misc/picom config-file opengl
+x11-misc/dunst -wayland
+x11-misc/unclutter -xfixes
+x11-misc/xdotool -libnotify
+x11-misc/arandr -python_single_target_python3_12
+
+
+# =============================================================================
+# Audio
+# =============================================================================
+media-video/pipewire sound-server -bluetooth -jack
+media-video/wireplumber -system-service
+media-libs/alsa-lib -alisp -python
+
+
+# =============================================================================
+# Music
+# =============================================================================
+media-sound/mpd alsa pipewire -pulseaudio flac mp3 opus vorbis
+media-sound/ncmpcpp taglib outputs visualizer
+media-sound/mpc -doc
+
+
+# =============================================================================
+# Video
+# =============================================================================
+media-video/mpv lua alsa pipewire cli -sdl -wayland opengl vulkan
+media-video/ffmpeg x264 x265 opus vorbis vpx theora mp3 alsa flac
+
+
+# =============================================================================
+# Browsers (active)
+# =============================================================================
+www-client/nyxt -webkit2
+net-misc/helium-browser -hangouts
+www-client/torbrowser-launcher -apparmor
+
+# Browsers (archive)
+# www-client/brave-bin -keyring
+# www-client/chromium -hangouts -widevine
+# www-client/google-chrome -l10n_*
+# www-client/floorp -l10n_*
+# www-client/icecat -dbus
+# www-client/palemoon -dbus
+# www-client/qutebrowser -widevine
+# www-client/surf savedconfig
+# www-client/vivaldi -proprietary-codecs
+# www-client/lynx ssl
+# www-client/w3m imlib
+
+
+# =============================================================================
+# Editors
+# =============================================================================
+app-editors/neovim lua luajit -python -ruby
+app-editors/emacs gui X toolkit-lucid -gtk -xwidgets -imagemagick
+
+
+# =============================================================================
+# Documents / PDF
+# =============================================================================
+app-text/zathura-meta pdf djvu postscript cb
+app-text/poppler cairo -qt5 -qt6
+
+
+# =============================================================================
+# Graphics
+# =============================================================================
+media-gfx/gimp jpeg png svg tiff webp -python
+media-gfx/inkscape svg -cdr
+media-gfx/imagemagick jpeg png svg tiff webp -openmp
+
+
+# =============================================================================
+# Networking
+# =============================================================================
+net-wireless/iwd -ofono -systemd
+net-misc/dhcpcd -auth -ipv6
+net-dns/unbound -python -gost dnssec
+net-vpn/openvpn ssl lzo
+net-vpn/mullvad-vpn -appindicator
+
+
+# =============================================================================
+# Security
+# =============================================================================
+app-crypt/gnupg ssl smartcard usb
+app-admin/pass -emacs -git -dmenu
+net-misc/proxychains -dns
+
+
+# =============================================================================
+# Development
+# =============================================================================
+dev-vcs/git curl -perl -python -webdav
+dev-lang/go -pie
+dev-util/tcc -doc
+sys-devel/gcc -fortran -objc -objc++
+
+
+# =============================================================================
+# Shell
+# =============================================================================
+app-shells/mksh -arc4random
+
+
+# =============================================================================
+# Terminals / Multiplexers
+# =============================================================================
+app-misc/tmux -utempter
+app-misc/dvtm -unicode
+
+
+# =============================================================================
+# Utilities
+# =============================================================================
+sys-process/btop -gpu
+app-misc/nnn -nerd
+app-misc/calcurse -caldav
+net-irc/catgirl ssl
+media-gfx/nsxiv -exif
+app-misc/fastfetch -vulkan -opencl
+net-misc/yt-dlp -aria2
+app-misc/jq -oniguruma
+sys-apps/ripgrep -pcre
+net-p2p/rtorrent -xmlrpc
+app-text/buku -colors
+www-misc/sfeed -curses
+net-mail/neomutt -notmuch -gpgme
+app-misc/conky lua X -wayland
+
+
+# =============================================================================
+# Theming / Notifications
+# =============================================================================
+x11-libs/libnotify -introspection
+app-misc/pywal -colorthief
+
+
+# =============================================================================
+# Torrent
+# =============================================================================
+net-p2p/rtorrent -xmlrpc
+net-p2p/transmission -gtk -qt5
+
+
+# =============================================================================
+# Fonts
+# =============================================================================
+media-fonts/noto -cjk
+media-libs/fontconfig -doc
+
+
+# =============================================================================
+# Containers
+# =============================================================================
+# app-containers/docker -cli -buildx
+# app-containers/docker-compose -python
+
+
+# =============================================================================
+# Suckless (git builds from krisyotam repos, not portage)
+# Listed for reference only — these use savedconfig/ if built via portage
+# =============================================================================
+# x11-wm/dwm savedconfig
+# x11-misc/dmenu savedconfig
+# x11-terms/st savedconfig
+# www-client/surf savedconfig
+# sys-process/scron savedconfig
+# www-misc/quark savedconfig