From 48e0caf3b213f8319be5033902665d571cb52485 Mon Sep 17 00:00:00 2001
From: kosumi
Date: Sat, 4 Jan 2025 19:35:43 -0500
Subject: [PATCH] Merge upstream
---
.editorconfig | 2 +-
.github/CONTRIBUTING.md | 35 +-
.github/FUNDING.yml | 4 +
.../pull_request_template.md | 96 +-
.github/README.md | 327 ++--
.github/assets/LICENSE | 395 ++++
.../assets/nvf-logo-work.svg | 0
.github/typos.toml | 2 +
.github/workflows/cachix.yml | 3 +-
.github/workflows/check-docs.yml | 33 +-
.github/workflows/cleanup.yml | 22 +
.github/workflows/docker.yml | 50 -
.github/workflows/editorconfig.yml | 2 +-
.github/workflows/manual.yml | 39 +-
.github/workflows/typos.yml | 30 +
LICENSE | 2 +-
configuration.nix | 463 ++---
docs/default.nix | 238 +--
docs/footer.5 | 3 -
docs/highlight-style.css | 8 -
docs/html-open-tool.nix | 23 +-
docs/man/footer.5 | 3 +
docs/{ => man}/header.5 | 7 +-
docs/{neovim-flake.1 => man/nvf.1} | 18 +-
docs/manual.nix | 167 +-
docs/manual/configuring.md | 10 +
docs/manual/configuring/custom-inputs.md | 53 +
docs/manual/configuring/custom-package.md | 22 +
docs/manual/configuring/custom-plugins.md | 26 +
.../configuring/custom-plugins/configuring.md | 74 +
.../configuring/custom-plugins/lazy-method.md | 40 +
.../custom-plugins/legacy-method.md | 38 +
.../custom-plugins/non-lazy-method.md} | 8 +-
docs/manual/configuring/dag-entries.md | 25 +
docs/manual/configuring/dags.md | 181 ++
docs/manual/{ => configuring}/languages.md | 10 +-
docs/manual/configuring/languages/lsp.md | 18 +
docs/manual/custom-configs.md | 63 -
docs/manual/custom-package.md | 12 -
docs/manual/custom-plugins.md | 10 -
docs/manual/custom-plugins/configuring.md | 23 -
docs/manual/custom-plugins/old-method.md | 18 -
docs/manual/default-configs.md | 8 +-
docs/manual/default-configs/maximal.md | 12 +-
docs/manual/default-configs/nix.md | 6 +-
docs/manual/default-configs/tidal.md | 12 -
docs/manual/hacking.md | 31 +-
docs/manual/hacking/additional-plugins.md | 179 +-
docs/manual/hacking/getting-started.md | 21 +-
docs/manual/hacking/guidelines.md | 156 +-
docs/manual/hacking/keybinds.md | 169 +-
docs/manual/hacking/testing.md | 20 +-
docs/manual/home-manager.md | 75 -
docs/manual/installation.md | 14 +
.../installation/custom-configuration.md | 69 +
docs/manual/installation/modules.md | 10 +
.../installation/modules/home-manager.md | 88 +
docs/manual/installation/modules/nixos.md | 83 +
.../installation/standalone/home-manager.md | 55 +
docs/manual/installation/standalone/nixos.md | 53 +
docs/manual/languages/lsp.md | 16 -
docs/manual/manpage-urls.json | 3 -
docs/manual/manual.md | 18 +-
docs/manual/options.md | 12 +-
docs/manual/preface.md | 24 +-
docs/manual/quirks.md | 13 +
docs/manual/quirks/nodejs.md | 24 +
docs/manual/try-it-out.md | 53 +-
docs/release-notes/release-notes.md | 4 +-
docs/release-notes/rl-0.1.md | 48 +-
docs/release-notes/rl-0.2.md | 67 +-
docs/release-notes/rl-0.3.md | 96 +-
docs/release-notes/rl-0.4.md | 44 +-
docs/release-notes/rl-0.5.md | 68 +-
docs/release-notes/rl-0.6.md | 172 +-
docs/release-notes/rl-0.7.md | 390 ++++
docs/release-notes/rl-0.8.md | 27 +
docs/static/script/anchor-min.js | 10 +
docs/static/script/anchor-use.js | 4 +
docs/static/script/search.js | 58 +
docs/static/style.css | 7 +
docs/static/style.scss | 341 ++++
docs/static/tomorrow-night.min.css | 7 +
docs/static/tomorrow.min.css | 102 +
flake.lock | 1723 ++++++++++-------
flake.nix | 473 +++--
flake/apps.nix | 28 +-
flake/develop.nix | 30 +
flake/legacyPackages.nix | 1 -
flake/modules/home-manager.nix | 97 +
flake/modules/nixos.nix | 97 +
flake/overlays.nix | 10 +-
flake/packages.nix | 106 +-
lib/attrsets.nix | 5 +
lib/binds.nix | 74 +
lib/config.nix | 65 +
lib/dag.nix | 81 +-
lib/default.nix | 16 +-
lib/languages.nix | 43 +-
lib/lists.nix | 34 +
lib/lua.nix | 68 +-
lib/module/default.nix | 49 -
lib/nmd.nix | 17 -
lib/stdlib-extended.nix | 94 +-
lib/types/custom.nix | 30 +
lib/types/dag.nix | 4 +-
lib/types/default.nix | 12 +-
lib/types/languages.nix | 22 +-
lib/types/plugins.nix | 223 +--
lib/vim.nix | 26 -
modules/assistant/copilot/config.nix | 90 -
modules/assistant/copilot/copilot.nix | 113 --
modules/assistant/default.nix | 6 -
modules/assistant/tabnine/config.nix | 54 -
modules/assistant/tabnine/tabnine.nix | 30 -
modules/autopairs/nvim-autopairs/config.nix | 26 -
.../nvim-autopairs/nvim-autopairs.nix | 35 -
modules/autosaving/nvim-autosaving/config.nix | 8 +-
modules/basic/module.nix | 189 --
modules/comments/comment-nvim/config.nix | 50 -
modules/completion/nvim-cmp/config.nix | 241 ---
modules/completion/nvim-cmp/nvim-cmp.nix | 64 -
modules/dashboard/alpha/alpha.nix | 11 -
modules/dashboard/dashboard-nvim/config.nix | 19 -
.../dashboard-nvim/dashboard-nvim.nix | 11 -
modules/default.nix | 107 +-
modules/extra/deprecations.nix | 93 +
modules/filetree/nvimtree/config.nix | 308 ---
modules/filetree/nvimtree/nvimtree.nix | 1110 -----------
modules/git/config.nix | 4 +-
modules/git/default.nix | 6 -
modules/git/git.nix | 2 +-
modules/languages/bash.nix | 101 -
modules/languages/bash/bash.nix | 116 --
modules/languages/bash/config.nix | 8 +-
modules/languages/dart/config.nix | 71 -
modules/languages/dart/dart.nix | 110 --
modules/languages/elixir/config.nix | 66 -
modules/languages/elixir/default.nix | 6 -
modules/languages/elixir/elixir-tools.nix | 11 -
modules/languages/lua.nix | 59 -
modules/languages/markdown/default.nix | 6 -
modules/languages/markdown/markdown.nix | 30 -
modules/languages/rust.nix | 4 +-
modules/languages/tidal/config.nix | 23 -
modules/languages/tidal/default.nix | 6 -
modules/languages/tidal/tidal.nix | 23 -
modules/languages/ts.nix | 8 +-
modules/languages/zig.nix | 63 -
modules/lsp/config.nix | 4 +-
modules/lsp/lightbulb/config.nix | 22 -
modules/lsp/lightbulb/lightbulb.nix | 13 -
modules/lsp/lsp-signature/config.nix | 27 -
modules/lsp/lsp-signature/lsp-signature.nix | 13 -
modules/lsp/lspconfig/config.nix | 32 -
modules/lsp/lspkind/config.nix | 20 -
modules/lsp/lspkind/lspkind.nix | 22 -
modules/lsp/lsplines/lsplines.nix | 9 -
modules/lsp/lspsaga/config.nix | 49 -
modules/lsp/none-ls/config.nix | 37 -
modules/lsp/none-ls/default.nix | 6 -
modules/lsp/none-ls/none-ls.nix | 20 -
modules/lsp/nvim-code-action-menu/default.nix | 6 -
.../nvim-code-action-menu.nix | 19 -
modules/lsp/nvim-docs-view/nvim-docs-view.nix | 46 -
modules/lsp/trouble/config.nix | 32 -
modules/minimap/codewindow/config.nix | 34 -
modules/minimap/minimap-vim/minimap-vim.nix | 11 -
modules/modules.nix | 112 +-
modules/neovim/init/basic.nix | 195 ++
modules/neovim/init/debug.nix | 50 +
modules/neovim/init/default.nix | 7 +
modules/neovim/init/spellcheck.nix | 153 ++
modules/neovim/mappings/config.nix | 77 +
.../bash => neovim/mappings}/default.nix | 4 +-
modules/neovim/mappings/options.nix | 97 +
modules/notes/mind-nvim/config.nix | 25 -
modules/notes/mind-nvim/mind-nvim.nix | 11 -
modules/notes/obsidian/config.nix | 43 -
modules/notes/obsidian/obsidian.nix | 39 -
modules/notes/orgmode/config.nix | 46 -
modules/notes/orgmode/orgmode.nix | 30 -
modules/notes/todo-comments/config.nix | 49 -
modules/notes/todo-comments/todo-comments.nix | 27 -
modules/plugins/assistant/chatgpt/chatgpt.nix | 25 +
modules/plugins/assistant/chatgpt/config.nix | 46 +
.../assistant/chatgpt}/default.nix | 4 +-
modules/plugins/assistant/copilot/config.nix | 87 +
modules/plugins/assistant/copilot/copilot.nix | 131 ++
.../assistant/copilot/default.nix | 2 +-
modules/plugins/assistant/default.nix | 6 +
modules/{ => plugins}/autopairs/default.nix | 2 +-
.../autopairs/nvim-autopairs/config.nix | 20 +
.../autopairs/nvim-autopairs/default.nix | 2 +-
.../nvim-autopairs/nvim-autopairs.nix | 14 +
.../comments/comment-nvim/comment-nvim.nix | 11 +-
.../plugins/comments/comment-nvim/config.nix | 46 +
.../comments/comment-nvim/default.nix | 2 +-
modules/{ => plugins}/comments/default.nix | 2 +-
modules/{ => plugins}/completion/default.nix | 2 +-
.../plugins/completion/nvim-cmp/config.nix | 141 ++
.../completion/nvim-cmp/default.nix | 2 +-
.../plugins/completion/nvim-cmp/nvim-cmp.nix | 117 ++
modules/plugins/dashboard/alpha/alpha.nix | 7 +
.../{ => plugins}/dashboard/alpha/config.nix | 5 +-
.../{ => plugins}/dashboard/alpha/default.nix | 2 +-
.../dashboard/dashboard-nvim/config.nix | 21 +
.../dashboard-nvim/dashboard-nvim.nix | 9 +
.../dashboard/dashboard-nvim/default.nix | 2 +-
modules/{ => plugins}/dashboard/default.nix | 2 +-
.../dashboard/startify/config.nix | 31 +-
.../dashboard/startify/default.nix | 0
.../dashboard/startify/startify.nix | 63 +-
modules/{ => plugins}/debugger/default.nix | 2 +-
modules/plugins/debugger/nvim-dap/config.nix | 86 +
.../debugger/nvim-dap/default.nix | 2 +-
.../debugger/nvim-dap/nvim-dap.nix | 14 +-
modules/{ => plugins}/filetree/default.nix | 3 +-
modules/plugins/filetree/neo-tree/config.nix | 51 +
modules/plugins/filetree/neo-tree/default.nix | 6 +
.../plugins/filetree/neo-tree/neo-tree.nix | 163 ++
modules/plugins/filetree/nvimtree/config.nix | 114 ++
.../filetree/nvimtree/default.nix | 2 +-
.../plugins/filetree/nvimtree/nvimtree.nix | 1178 +++++++++++
modules/plugins/git/default.nix | 18 +
modules/plugins/git/gitsigns/config.nix | 88 +
modules/plugins/git/gitsigns/default.nix | 6 +
modules/plugins/git/gitsigns/gitsigns.nix | 41 +
modules/plugins/git/vim-fugitive/config.nix | 13 +
.../git/vim-fugitive}/default.nix | 4 +-
.../plugins/git/vim-fugitive/vim-fugitive.nix | 14 +
modules/plugins/languages/asm.nix | 49 +
modules/plugins/languages/astro.nix | 159 ++
modules/plugins/languages/bash.nix | 145 ++
modules/{ => plugins}/languages/clang.nix | 46 +-
modules/{ => plugins}/languages/cmake.nix | 0
modules/plugins/languages/csharp.nix | 122 ++
modules/plugins/languages/css.nix | 139 ++
modules/plugins/languages/dart.nix | 167 ++
modules/{ => plugins}/languages/default.nix | 34 +-
modules/plugins/languages/elixir.nix | 138 ++
modules/plugins/languages/gleam.nix | 71 +
modules/{ => plugins}/languages/go.nix | 77 +-
modules/plugins/languages/haskell.nix | 104 +
modules/plugins/languages/hcl.nix | 117 ++
modules/plugins/languages/html.nix | 45 +
modules/{ => plugins}/languages/java.nix | 19 +-
modules/{ => plugins}/languages/json.nix | 0
modules/plugins/languages/julia.nix | 126 ++
modules/plugins/languages/kotlin.nix | 107 +
modules/plugins/languages/lua.nix | 70 +
modules/plugins/languages/markdown.nix | 151 ++
modules/{ => plugins}/languages/neodev.nix | 0
modules/plugins/languages/nim.nix | 117 ++
modules/{ => plugins}/languages/nix.nix | 98 +-
modules/plugins/languages/nu.nix | 70 +
modules/plugins/languages/ocaml.nix | 105 +
modules/plugins/languages/odin.nix | 71 +
modules/{ => plugins}/languages/php.nix | 20 +-
modules/{ => plugins}/languages/python.nix | 75 +-
modules/plugins/languages/r.nix | 130 ++
modules/plugins/languages/rust.nix | 186 ++
modules/plugins/languages/scala.nix | 149 ++
modules/{ => plugins}/languages/sql.nix | 54 +-
modules/{ => plugins}/languages/svelte.nix | 79 +-
modules/plugins/languages/tailwind.nix | 61 +
modules/{ => plugins}/languages/terraform.nix | 11 +-
modules/{ => plugins}/languages/tex.nix | 2 +-
modules/{ => plugins}/languages/toml.nix | 0
modules/plugins/languages/ts.nix | 259 +++
modules/plugins/languages/typst.nix | 196 ++
modules/plugins/languages/vala.nix | 79 +
modules/{ => plugins}/languages/vim.nix | 0
modules/{ => plugins}/languages/vue.nix | 8 +-
modules/{ => plugins}/languages/yaml.nix | 0
modules/plugins/languages/zig.nix | 81 +
modules/plugins/lsp/config.nix | 176 ++
modules/{ => plugins}/lsp/default.nix | 6 +-
modules/plugins/lsp/lightbulb/config.nix | 24 +
.../{ => plugins}/lsp/lightbulb/default.nix | 2 +-
modules/plugins/lsp/lightbulb/lightbulb.nix | 11 +
modules/plugins/lsp/lsp-signature/config.nix | 29 +
.../lsp/lsp-signature/default.nix | 2 +-
.../lsp/lsp-signature/lsp-signature.nix | 11 +
modules/plugins/lsp/lspconfig/config.nix | 36 +
.../{ => plugins}/lsp/lspconfig/default.nix | 2 +-
.../{ => plugins}/lsp/lspconfig/lspconfig.nix | 12 +-
modules/plugins/lsp/lspkind/config.nix | 34 +
modules/{ => plugins}/lsp/lspkind/default.nix | 2 +-
modules/plugins/lsp/lspkind/lspkind.nix | 22 +
modules/{ => plugins}/lsp/lsplines/config.nix | 5 +-
.../{ => plugins}/lsp/lsplines/default.nix | 2 +-
modules/plugins/lsp/lsplines/lsplines.nix | 11 +
modules/plugins/lsp/lspsaga/config.nix | 53 +
modules/{ => plugins}/lsp/lspsaga/default.nix | 2 +-
modules/{ => plugins}/lsp/lspsaga/lspsaga.nix | 3 +-
modules/{ => plugins}/lsp/module.nix | 5 +-
modules/plugins/lsp/null-ls/config.nix | 52 +
modules/plugins/lsp/null-ls/default.nix | 6 +
modules/plugins/lsp/null-ls/null-ls.nix | 34 +
.../lsp/nvim-docs-view/config.nix | 15 +-
.../lsp/nvim-docs-view/default.nix | 2 +-
.../lsp/nvim-docs-view/nvim-docs-view.nix | 64 +
modules/plugins/lsp/otter/config.nix | 39 +
modules/plugins/lsp/otter/default.nix | 6 +
modules/plugins/lsp/otter/otter.nix | 64 +
modules/plugins/lsp/trouble/config.nix | 38 +
modules/{ => plugins}/lsp/trouble/default.nix | 2 +-
modules/{ => plugins}/lsp/trouble/trouble.nix | 8 +-
.../minimap/codewindow/codewindow.nix | 3 +-
modules/plugins/minimap/codewindow/config.nix | 42 +
.../minimap/codewindow/default.nix | 2 +-
modules/{ => plugins}/minimap/default.nix | 2 +-
.../minimap/minimap-vim/config.nix | 9 +-
.../minimap/minimap-vim/default.nix | 2 +-
.../minimap/minimap-vim/minimap-vim.nix | 7 +
modules/{ => plugins}/notes/default.nix | 3 +-
modules/plugins/notes/mind-nvim/config.nix | 33 +
.../{ => plugins}/notes/mind-nvim/default.nix | 2 +-
modules/plugins/notes/mind-nvim/mind-nvim.nix | 7 +
modules/plugins/notes/neorg/config.nix | 41 +
modules/plugins/notes/neorg/default.nix | 6 +
modules/plugins/notes/neorg/neorg.nix | 50 +
modules/plugins/notes/obsidian/config.nix | 30 +
.../{ => plugins}/notes/obsidian/default.nix | 2 +-
modules/plugins/notes/obsidian/obsidian.nix | 57 +
modules/plugins/notes/orgmode/config.nix | 49 +
.../{ => plugins}/notes/orgmode/default.nix | 2 +-
modules/plugins/notes/orgmode/orgmode.nix | 39 +
.../plugins/notes/todo-comments/config.nix | 32 +
.../notes/todo-comments/default.nix | 2 +-
.../notes/todo-comments/todo-comments.nix | 61 +
modules/{ => plugins}/projects/default.nix | 2 +-
.../plugins/projects/project-nvim/config.nix | 21 +
.../projects/project-nvim/default.nix | 2 +-
.../projects/project-nvim/project-nvim.nix | 79 +
.../rich-presence}/default.nix | 4 +-
.../plugins/rich-presence/neocord/config.nix | 20 +
.../plugins/rich-presence/neocord/default.nix | 6 +
.../plugins/rich-presence/neocord/neocord.nix | 143 ++
modules/plugins/runner/default.nix | 5 +
modules/plugins/runner/run-nvim/config.nix | 32 +
modules/plugins/runner/run-nvim/default.nix | 6 +
modules/plugins/runner/run-nvim/run-nvim.nix | 18 +
modules/{ => plugins}/session/default.nix | 2 +-
.../{ => plugins}/session/neoconf/config.nix | 0
.../{ => plugins}/session/neoconf/default.nix | 0
.../{ => plugins}/session/neoconf/neoconf.nix | 0
.../session/nvim-session-manager/config.nix | 38 +
.../session/nvim-session-manager/default.nix | 2 +-
.../nvim-session-manager.nix | 118 ++
modules/plugins/snippets/default.nix | 5 +
modules/plugins/snippets/luasnip/config.nix | 26 +
modules/plugins/snippets/luasnip/default.nix | 6 +
modules/plugins/snippets/luasnip/luasnip.nix | 36 +
modules/plugins/spellcheck/default.nix | 5 +
.../spellcheck/vim-dirtytalk/config.nix | 33 +
.../spellcheck/vim-dirtytalk/default.nix | 6 +
.../vim-dirtytalk/vim-dirtytalk.nix | 7 +
modules/{ => plugins}/statusline/default.nix | 2 +-
modules/plugins/statusline/lualine/config.nix | 78 +
.../statusline/lualine/default.nix | 2 +-
.../statusline/lualine/lualine.nix | 219 ++-
.../statusline/lualine/supported_themes.nix | 1 +
modules/{ => plugins}/tabline/default.nix | 2 +-
.../tabline/nvim-bufferline/config.nix | 51 +
.../tabline/nvim-bufferline/default.nix | 2 +-
.../nvim-bufferline/nvim-bufferline.nix | 392 ++++
modules/{ => plugins}/terminal/default.nix | 2 +-
.../plugins/terminal/toggleterm/config.nix | 51 +
.../terminal/toggleterm/default.nix | 2 +-
.../terminal/toggleterm/toggleterm.nix | 87 +
modules/{ => plugins}/theme/config.nix | 8 +-
modules/{ => plugins}/theme/default.nix | 2 +-
modules/plugins/theme/supported-themes.nix | 180 ++
modules/plugins/theme/theme.nix | 75 +
modules/plugins/treesitter/config.nix | 95 +
modules/plugins/treesitter/default.nix | 9 +
modules/plugins/treesitter/treesitter.nix | 169 ++
.../plugins/treesitter/ts-context/config.nix | 24 +
.../plugins/treesitter/ts-context/context.nix | 94 +
.../treesitter/ts-context}/default.nix | 3 +-
modules/plugins/ui/borders/borders.nix | 49 +
modules/{ => plugins}/ui/borders/default.nix | 2 +-
.../plugins/ui/breadcrumbs/breadcrumbs.nix | 387 ++++
modules/plugins/ui/breadcrumbs/config.nix | 97 +
.../{ => plugins}/ui/breadcrumbs/default.nix | 2 +-
modules/plugins/ui/colorizer/colorizer.nix | 128 ++
modules/plugins/ui/colorizer/config.nix | 21 +
.../{ => plugins}/ui/colorizer/default.nix | 2 +-
modules/{ => plugins}/ui/default.nix | 3 +-
modules/plugins/ui/fastaction/config.nix | 24 +
modules/plugins/ui/fastaction/default.nix | 6 +
.../plugins/ui/fastaction/fastaction-nvim.nix | 9 +
.../{ => plugins}/ui/illuminate/config.nix | 5 +-
.../{ => plugins}/ui/illuminate/default.nix | 2 +-
modules/plugins/ui/illuminate/illuminate.nix | 7 +
modules/plugins/ui/modes/config.nix | 21 +
modules/{ => plugins}/ui/modes/default.nix | 2 +-
modules/plugins/ui/modes/modes.nix | 48 +
modules/plugins/ui/noice/config.nix | 31 +
modules/{ => plugins}/ui/noice/default.nix | 2 +-
modules/plugins/ui/noice/noice.nix | 142 ++
.../ui/notifications/default.nix | 2 +-
.../ui/notifications/nvim-notify/config.nix | 23 +
.../ui/notifications/nvim-notify/default.nix | 2 +-
.../notifications/nvim-notify/nvim-notify.nix | 67 +
modules/plugins/ui/smartcolumn/config.nix | 21 +
.../{ => plugins}/ui/smartcolumn/default.nix | 2 +-
.../plugins/ui/smartcolumn/smartcolumn.nix | 48 +
.../{ => plugins}/utility/aerial/default.nix | 31 +-
.../utility/binds/cheatsheet/cheatsheet.nix | 8 +-
.../utility/binds/cheatsheet/config.nix | 21 +
.../utility/binds/cheatsheet/default.nix | 0
.../{ => plugins}/utility/binds/default.nix | 0
.../utility/binds/which-key/config.nix | 26 +
.../utility/binds/which-key/default.nix | 2 +-
.../utility/binds/which-key/which-key.nix | 51 +
modules/{ => plugins}/utility/ccc/ccc.nix | 3 +-
modules/{ => plugins}/utility/ccc/config.nix | 11 +-
modules/{ => plugins}/utility/ccc/default.nix | 0
modules/{ => plugins}/utility/default.nix | 9 +-
modules/plugins/utility/diffview/config.nix | 21 +
.../utility/diffview/default.nix | 0
.../utility/diffview/diffview.nix | 4 +-
.../utility/gestures/default.nix | 0
.../utility/gestures/gesture-nvim/config.nix | 6 +-
.../utility/gestures/gesture-nvim/default.nix | 0
.../gestures/gesture-nvim/gesture-nvim.nix | 3 +-
.../plugins/utility/icon-picker/config.nix | 23 +
.../utility/icon-picker/default.nix | 0
.../utility/icon-picker/icon-picker.nix | 2 +-
modules/plugins/utility/images/default.nix | 5 +
.../utility/images/image-nvim/config.nix | 29 +
.../utility/images/image-nvim}/default.nix | 4 +-
.../utility/images/image-nvim/image-nvim.nix | 114 ++
.../{ => plugins}/utility/motion/default.nix | 1 +
.../utility/motion/hop/config.nix | 6 +-
.../utility/motion/hop/default.nix | 0
modules/plugins/utility/motion/hop/hop.nix | 12 +
.../plugins/utility/motion/leap/config.nix | 61 +
.../utility/motion/leap/default.nix | 0
.../utility/motion/leap/leap.nix | 21 +-
.../utility/motion/precognition/config.nix | 18 +
.../utility/motion/precognition/default.nix | 6 +
.../motion/precognition/precognition.nix | 66 +
.../utility/new-file-template/config.nix | 23 +
.../utility/new-file-template/default.nix | 6 +
.../new-file-template/new-file-template.nix | 54 +
modules/plugins/utility/preview/default.nix | 6 +
.../plugins/utility/preview/glow/config.nix | 34 +
.../plugins/utility/preview/glow/default.nix | 6 +
modules/plugins/utility/preview/glow/glow.nix | 16 +
.../preview/markdown-preview/config.nix | 25 +
.../preview/markdown-preview/default.nix | 6 +
.../markdown-preview/markdown-preview.nix | 58 +
modules/plugins/utility/surround/config.nix | 37 +
.../utility/surround/default.nix | 0
modules/plugins/utility/surround/surround.nix | 67 +
modules/plugins/utility/telescope/config.nix | 76 +
.../utility/telescope/default.nix | 0
.../plugins/utility/telescope/telescope.nix | 182 ++
modules/plugins/utility/wakatime/config.nix | 22 +
.../utility/wakatime/default.nix | 2 +-
.../plugins/utility/wakatime/vim-wakatime.nix | 24 +
.../cellular-automaton/cellular-automaton.nix | 60 +
.../visuals/cellular-automaton/config.nix | 39 +
.../visuals/cellular-automaton/default.nix | 6 +
.../visuals/cinnamon-nvim/cinnamon-nvim.nix | 35 +
.../plugins/visuals/cinnamon-nvim/config.nix | 21 +
.../plugins/visuals/cinnamon-nvim/default.nix | 6 +
modules/plugins/visuals/default.nix | 20 +
.../plugins/visuals/fidget-nvim/config.nix | 18 +
.../plugins/visuals/fidget-nvim/default.nix | 6 +
.../plugins/visuals/fidget-nvim/fidget.nix | 550 ++++++
.../plugins/visuals/highlight-undo/config.nix | 21 +
.../visuals/highlight-undo/default.nix | 6 +
.../visuals/highlight-undo/highlight-undo.nix | 32 +
.../visuals/indent-blankline/config.nix | 21 +
.../visuals/indent-blankline/default.nix | 6 +
.../indent-blankline/indent-blankline.nix | 196 ++
.../visuals/nvim-cursorline/config.nix | 21 +
.../visuals/nvim-cursorline/default.nix | 6 +
.../nvim-cursorline/nvim-cursorline.nix | 65 +
.../plugins/visuals/nvim-scrollbar/config.nix | 21 +
.../visuals/nvim-scrollbar/default.nix | 6 +
.../visuals/nvim-scrollbar/scrollbar-nvim.nix | 21 +
.../visuals/nvim-web-devicons/config.nix | 21 +
.../visuals/nvim-web-devicons/default.nix | 6 +
.../nvim-web-devicons/nvim-web-devicons.nix | 48 +
.../tiny-devicons-auto-colors/config.nix | 21 +
.../tiny-devicons-auto-colors/default.nix | 6 +
.../tiny-devicons-auto-colors.nix | 41 +
modules/projects/project-nvim/config.nix | 51 -
.../projects/project-nvim/project-nvim.nix | 62 -
modules/rich-presence/default.nix | 5 -
.../rich-presence/presence-nvim/config.nix | 40 -
.../rich-presence/presence-nvim/default.nix | 6 -
.../presence-nvim/presence-nvim.nix | 97 -
.../session/nvim-session-manager/config.nix | 53 -
.../nvim-session-manager.nix | 102 -
modules/snippets/vsnip/config.nix | 13 -
modules/snippets/vsnip/default.nix | 5 -
modules/snippets/vsnip/vsnip.nix | 7 -
.../nvim-bufferline/nvim-bufferline.nix | 19 -
modules/terminal/toggleterm/toggleterm.nix | 50 -
modules/treesitter/config.nix | 62 -
modules/treesitter/context.nix | 85 -
modules/treesitter/treesitter.nix | 29 -
modules/ui/borders/borders.nix | 44 -
modules/ui/breadcrumbs/breadcrumbs.nix | 479 -----
modules/ui/breadcrumbs/config.nix | 166 --
modules/ui/colorizer/colorizer.nix | 67 -
modules/ui/colorizer/config.nix | 32 -
modules/ui/illuminate/illuminate.nix | 11 -
modules/ui/modes/config.nix | 30 -
modules/ui/modes/modes.nix | 36 -
modules/ui/noice/noice.nix | 11 -
.../ui/notifications/nvim-notify/config.nix | 39 -
.../notifications/nvim-notify/nvim-notify.nix | 46 -
modules/ui/smartcolumn/config.nix | 26 -
modules/ui/smartcolumn/smartcolumn.nix | 37 -
modules/utility/binds/cheatsheet/config.nix | 17 -
modules/utility/binds/which-key/which-key.nix | 7 -
modules/utility/diffview/config.nix | 20 -
modules/utility/icon-picker/config.nix | 22 -
modules/utility/motion/hop/hop.nix | 11 -
modules/utility/motion/leap/config.nix | 71 -
modules/utility/surround/config.nix | 43 -
modules/utility/surround/surround.nix | 88 -
modules/utility/wakatime/config.nix | 24 -
modules/utility/wakatime/vim-wakatime.nix | 17 -
modules/visuals/config.nix | 156 --
modules/visuals/default.nix | 6 -
modules/visuals/visuals.nix | 172 --
modules/wrapper/build/config.nix | 116 ++
modules/wrapper/build/default.nix | 6 +
modules/wrapper/build/options.nix | 12 +
.../build/patches}/flutter-tools.patch | 0
modules/wrapper/environment/config.nix | 13 +
modules/wrapper/environment/default.nix | 6 +
modules/wrapper/environment/options.nix | 144 ++
modules/wrapper/lazy/config.nix | 153 ++
modules/wrapper/lazy/default.nix | 6 +
modules/wrapper/lazy/lazy.nix | 249 +++
modules/wrapper/rc/config.nix | 84 +
modules/wrapper/rc/default.nix | 6 +
modules/wrapper/rc/options.nix | 337 ++++
modules/wrapper/warnings/default.nix | 31 +
release.json | 2 +-
550 files changed, 20969 insertions(+), 9405 deletions(-)
create mode 100644 .github/FUNDING.yml
create mode 100644 .github/assets/LICENSE
rename assets/neovim-flake-logo-work.svg => .github/assets/nvf-logo-work.svg (100%)
create mode 100644 .github/typos.toml
create mode 100644 .github/workflows/cleanup.yml
delete mode 100644 .github/workflows/docker.yml
create mode 100644 .github/workflows/typos.yml
delete mode 100644 docs/footer.5
delete mode 100644 docs/highlight-style.css
create mode 100644 docs/man/footer.5
rename docs/{ => man}/header.5 (53%)
rename docs/{neovim-flake.1 => man/nvf.1} (50%)
create mode 100644 docs/manual/configuring.md
create mode 100644 docs/manual/configuring/custom-inputs.md
create mode 100644 docs/manual/configuring/custom-package.md
create mode 100644 docs/manual/configuring/custom-plugins.md
create mode 100644 docs/manual/configuring/custom-plugins/configuring.md
create mode 100644 docs/manual/configuring/custom-plugins/lazy-method.md
create mode 100644 docs/manual/configuring/custom-plugins/legacy-method.md
rename docs/manual/{custom-plugins/new-method.md => configuring/custom-plugins/non-lazy-method.md} (60%)
create mode 100644 docs/manual/configuring/dag-entries.md
create mode 100644 docs/manual/configuring/dags.md
rename docs/manual/{ => configuring}/languages.md (75%)
create mode 100644 docs/manual/configuring/languages/lsp.md
delete mode 100644 docs/manual/custom-configs.md
delete mode 100644 docs/manual/custom-package.md
delete mode 100644 docs/manual/custom-plugins.md
delete mode 100644 docs/manual/custom-plugins/configuring.md
delete mode 100644 docs/manual/custom-plugins/old-method.md
delete mode 100644 docs/manual/default-configs/tidal.md
delete mode 100644 docs/manual/home-manager.md
create mode 100644 docs/manual/installation.md
create mode 100644 docs/manual/installation/custom-configuration.md
create mode 100644 docs/manual/installation/modules.md
create mode 100644 docs/manual/installation/modules/home-manager.md
create mode 100644 docs/manual/installation/modules/nixos.md
create mode 100644 docs/manual/installation/standalone/home-manager.md
create mode 100644 docs/manual/installation/standalone/nixos.md
delete mode 100644 docs/manual/languages/lsp.md
delete mode 100644 docs/manual/manpage-urls.json
create mode 100644 docs/manual/quirks.md
create mode 100644 docs/manual/quirks/nodejs.md
create mode 100644 docs/release-notes/rl-0.7.md
create mode 100644 docs/release-notes/rl-0.8.md
create mode 100644 docs/static/script/anchor-min.js
create mode 100644 docs/static/script/anchor-use.js
create mode 100644 docs/static/script/search.js
create mode 100644 docs/static/style.css
create mode 100644 docs/static/style.scss
create mode 100644 docs/static/tomorrow-night.min.css
create mode 100644 docs/static/tomorrow.min.css
create mode 100644 flake/develop.nix
create mode 100644 flake/modules/home-manager.nix
create mode 100644 flake/modules/nixos.nix
create mode 100644 lib/attrsets.nix
create mode 100644 lib/binds.nix
create mode 100644 lib/config.nix
create mode 100644 lib/lists.nix
delete mode 100644 lib/module/default.nix
delete mode 100644 lib/nmd.nix
create mode 100644 lib/types/custom.nix
delete mode 100644 lib/vim.nix
delete mode 100644 modules/assistant/copilot/config.nix
delete mode 100644 modules/assistant/copilot/copilot.nix
delete mode 100644 modules/assistant/default.nix
delete mode 100644 modules/assistant/tabnine/config.nix
delete mode 100644 modules/assistant/tabnine/tabnine.nix
delete mode 100644 modules/autopairs/nvim-autopairs/config.nix
delete mode 100644 modules/autopairs/nvim-autopairs/nvim-autopairs.nix
delete mode 100644 modules/basic/module.nix
delete mode 100644 modules/comments/comment-nvim/config.nix
delete mode 100644 modules/completion/nvim-cmp/config.nix
delete mode 100644 modules/completion/nvim-cmp/nvim-cmp.nix
delete mode 100644 modules/dashboard/alpha/alpha.nix
delete mode 100644 modules/dashboard/dashboard-nvim/config.nix
delete mode 100644 modules/dashboard/dashboard-nvim/dashboard-nvim.nix
create mode 100644 modules/extra/deprecations.nix
delete mode 100644 modules/filetree/nvimtree/config.nix
delete mode 100644 modules/filetree/nvimtree/nvimtree.nix
delete mode 100644 modules/git/default.nix
delete mode 100644 modules/languages/bash.nix
delete mode 100644 modules/languages/bash/bash.nix
delete mode 100644 modules/languages/dart/config.nix
delete mode 100644 modules/languages/dart/dart.nix
delete mode 100644 modules/languages/elixir/config.nix
delete mode 100644 modules/languages/elixir/default.nix
delete mode 100644 modules/languages/elixir/elixir-tools.nix
delete mode 100644 modules/languages/lua.nix
delete mode 100644 modules/languages/markdown/default.nix
delete mode 100644 modules/languages/markdown/markdown.nix
delete mode 100644 modules/languages/tidal/config.nix
delete mode 100644 modules/languages/tidal/default.nix
delete mode 100644 modules/languages/tidal/tidal.nix
delete mode 100644 modules/languages/zig.nix
delete mode 100644 modules/lsp/lightbulb/config.nix
delete mode 100644 modules/lsp/lightbulb/lightbulb.nix
delete mode 100644 modules/lsp/lsp-signature/config.nix
delete mode 100644 modules/lsp/lsp-signature/lsp-signature.nix
delete mode 100644 modules/lsp/lspconfig/config.nix
delete mode 100644 modules/lsp/lspkind/config.nix
delete mode 100644 modules/lsp/lspkind/lspkind.nix
delete mode 100644 modules/lsp/lsplines/lsplines.nix
delete mode 100644 modules/lsp/lspsaga/config.nix
delete mode 100644 modules/lsp/none-ls/config.nix
delete mode 100644 modules/lsp/none-ls/default.nix
delete mode 100644 modules/lsp/none-ls/none-ls.nix
delete mode 100644 modules/lsp/nvim-code-action-menu/default.nix
delete mode 100644 modules/lsp/nvim-code-action-menu/nvim-code-action-menu.nix
delete mode 100644 modules/lsp/nvim-docs-view/nvim-docs-view.nix
delete mode 100644 modules/lsp/trouble/config.nix
delete mode 100644 modules/minimap/codewindow/config.nix
delete mode 100644 modules/minimap/minimap-vim/minimap-vim.nix
create mode 100644 modules/neovim/init/basic.nix
create mode 100644 modules/neovim/init/debug.nix
create mode 100644 modules/neovim/init/default.nix
create mode 100644 modules/neovim/init/spellcheck.nix
create mode 100644 modules/neovim/mappings/config.nix
rename modules/{languages/bash => neovim/mappings}/default.nix (65%)
create mode 100644 modules/neovim/mappings/options.nix
delete mode 100644 modules/notes/mind-nvim/config.nix
delete mode 100644 modules/notes/mind-nvim/mind-nvim.nix
delete mode 100644 modules/notes/obsidian/config.nix
delete mode 100644 modules/notes/obsidian/obsidian.nix
delete mode 100644 modules/notes/orgmode/config.nix
delete mode 100644 modules/notes/orgmode/orgmode.nix
delete mode 100644 modules/notes/todo-comments/config.nix
delete mode 100644 modules/notes/todo-comments/todo-comments.nix
create mode 100644 modules/plugins/assistant/chatgpt/chatgpt.nix
create mode 100644 modules/plugins/assistant/chatgpt/config.nix
rename modules/{languages/dart => plugins/assistant/chatgpt}/default.nix (65%)
create mode 100644 modules/plugins/assistant/copilot/config.nix
create mode 100644 modules/plugins/assistant/copilot/copilot.nix
rename modules/{ => plugins}/assistant/copilot/default.nix (91%)
create mode 100644 modules/plugins/assistant/default.nix
rename modules/{ => plugins}/autopairs/default.nix (89%)
create mode 100644 modules/plugins/autopairs/nvim-autopairs/config.nix
rename modules/{ => plugins}/autopairs/nvim-autopairs/default.nix (92%)
create mode 100644 modules/plugins/autopairs/nvim-autopairs/nvim-autopairs.nix
rename modules/{ => plugins}/comments/comment-nvim/comment-nvim.nix (66%)
create mode 100644 modules/plugins/comments/comment-nvim/config.nix
rename modules/{ => plugins}/comments/comment-nvim/default.nix (92%)
rename modules/{ => plugins}/comments/default.nix (88%)
rename modules/{ => plugins}/completion/default.nix (87%)
create mode 100644 modules/plugins/completion/nvim-cmp/config.nix
rename modules/{ => plugins}/completion/nvim-cmp/default.nix (91%)
create mode 100644 modules/plugins/completion/nvim-cmp/nvim-cmp.nix
create mode 100644 modules/plugins/dashboard/alpha/alpha.nix
rename modules/{ => plugins}/dashboard/alpha/config.nix (98%)
rename modules/{ => plugins}/dashboard/alpha/default.nix (91%)
create mode 100644 modules/plugins/dashboard/dashboard-nvim/config.nix
create mode 100644 modules/plugins/dashboard/dashboard-nvim/dashboard-nvim.nix
rename modules/{ => plugins}/dashboard/dashboard-nvim/default.nix (92%)
rename modules/{ => plugins}/dashboard/default.nix (88%)
rename modules/{ => plugins}/dashboard/startify/config.nix (56%)
rename modules/{ => plugins}/dashboard/startify/default.nix (100%)
rename modules/{ => plugins}/dashboard/startify/startify.nix (80%)
rename modules/{ => plugins}/debugger/default.nix (87%)
create mode 100644 modules/plugins/debugger/nvim-dap/config.nix
rename modules/{ => plugins}/debugger/nvim-dap/default.nix (91%)
rename modules/{ => plugins}/debugger/nvim-dap/nvim-dap.nix (80%)
rename modules/{ => plugins}/filetree/default.nix (67%)
create mode 100644 modules/plugins/filetree/neo-tree/config.nix
create mode 100644 modules/plugins/filetree/neo-tree/default.nix
create mode 100644 modules/plugins/filetree/neo-tree/neo-tree.nix
create mode 100644 modules/plugins/filetree/nvimtree/config.nix
rename modules/{ => plugins}/filetree/nvimtree/default.nix (91%)
create mode 100644 modules/plugins/filetree/nvimtree/nvimtree.nix
create mode 100644 modules/plugins/git/default.nix
create mode 100644 modules/plugins/git/gitsigns/config.nix
create mode 100644 modules/plugins/git/gitsigns/default.nix
create mode 100644 modules/plugins/git/gitsigns/gitsigns.nix
create mode 100644 modules/plugins/git/vim-fugitive/config.nix
rename modules/{basic => plugins/git/vim-fugitive}/default.nix (60%)
create mode 100644 modules/plugins/git/vim-fugitive/vim-fugitive.nix
create mode 100644 modules/plugins/languages/asm.nix
create mode 100644 modules/plugins/languages/astro.nix
create mode 100644 modules/plugins/languages/bash.nix
rename modules/{ => plugins}/languages/clang.nix (80%)
rename modules/{ => plugins}/languages/cmake.nix (100%)
create mode 100644 modules/plugins/languages/csharp.nix
create mode 100644 modules/plugins/languages/css.nix
create mode 100644 modules/plugins/languages/dart.nix
rename modules/{ => plugins}/languages/default.nix (61%)
create mode 100644 modules/plugins/languages/elixir.nix
create mode 100644 modules/plugins/languages/gleam.nix
rename modules/{ => plugins}/languages/go.nix (57%)
create mode 100644 modules/plugins/languages/haskell.nix
create mode 100644 modules/plugins/languages/hcl.nix
create mode 100644 modules/plugins/languages/html.nix
rename modules/{ => plugins}/languages/java.nix (70%)
rename modules/{ => plugins}/languages/json.nix (100%)
create mode 100644 modules/plugins/languages/julia.nix
create mode 100644 modules/plugins/languages/kotlin.nix
create mode 100644 modules/plugins/languages/lua.nix
create mode 100644 modules/plugins/languages/markdown.nix
rename modules/{ => plugins}/languages/neodev.nix (100%)
create mode 100644 modules/plugins/languages/nim.nix
rename modules/{ => plugins}/languages/nix.nix (64%)
create mode 100644 modules/plugins/languages/nu.nix
create mode 100644 modules/plugins/languages/ocaml.nix
create mode 100644 modules/plugins/languages/odin.nix
rename modules/{ => plugins}/languages/php.nix (82%)
rename modules/{ => plugins}/languages/python.nix (82%)
create mode 100644 modules/plugins/languages/r.nix
create mode 100644 modules/plugins/languages/rust.nix
create mode 100644 modules/plugins/languages/scala.nix
rename modules/{ => plugins}/languages/sql.nix (74%)
rename modules/{ => plugins}/languages/svelte.nix (64%)
create mode 100644 modules/plugins/languages/tailwind.nix
rename modules/{ => plugins}/languages/terraform.nix (82%)
rename modules/{ => plugins}/languages/tex.nix (95%)
rename modules/{ => plugins}/languages/toml.nix (100%)
create mode 100644 modules/plugins/languages/ts.nix
create mode 100644 modules/plugins/languages/typst.nix
create mode 100644 modules/plugins/languages/vala.nix
rename modules/{ => plugins}/languages/vim.nix (100%)
rename modules/{ => plugins}/languages/vue.nix (94%)
rename modules/{ => plugins}/languages/yaml.nix (100%)
create mode 100644 modules/plugins/languages/zig.nix
create mode 100644 modules/plugins/lsp/config.nix
rename modules/{ => plugins}/lsp/default.nix (83%)
create mode 100644 modules/plugins/lsp/lightbulb/config.nix
rename modules/{ => plugins}/lsp/lightbulb/default.nix (92%)
create mode 100644 modules/plugins/lsp/lightbulb/lightbulb.nix
create mode 100644 modules/plugins/lsp/lsp-signature/config.nix
rename modules/{ => plugins}/lsp/lsp-signature/default.nix (92%)
create mode 100644 modules/plugins/lsp/lsp-signature/lsp-signature.nix
create mode 100644 modules/plugins/lsp/lspconfig/config.nix
rename modules/{ => plugins}/lsp/lspconfig/default.nix (92%)
rename modules/{ => plugins}/lsp/lspconfig/lspconfig.nix (63%)
create mode 100644 modules/plugins/lsp/lspkind/config.nix
rename modules/{ => plugins}/lsp/lspkind/default.nix (91%)
create mode 100644 modules/plugins/lsp/lspkind/lspkind.nix
rename modules/{ => plugins}/lsp/lsplines/config.nix (69%)
rename modules/{ => plugins}/lsp/lsplines/default.nix (91%)
create mode 100644 modules/plugins/lsp/lsplines/lsplines.nix
create mode 100644 modules/plugins/lsp/lspsaga/config.nix
rename modules/{ => plugins}/lsp/lspsaga/default.nix (91%)
rename modules/{ => plugins}/lsp/lspsaga/lspsaga.nix (92%)
rename modules/{ => plugins}/lsp/module.nix (94%)
create mode 100644 modules/plugins/lsp/null-ls/config.nix
create mode 100644 modules/plugins/lsp/null-ls/default.nix
create mode 100644 modules/plugins/lsp/null-ls/null-ls.nix
rename modules/{ => plugins}/lsp/nvim-docs-view/config.nix (60%)
rename modules/{ => plugins}/lsp/nvim-docs-view/default.nix (92%)
create mode 100644 modules/plugins/lsp/nvim-docs-view/nvim-docs-view.nix
create mode 100644 modules/plugins/lsp/otter/config.nix
create mode 100644 modules/plugins/lsp/otter/default.nix
create mode 100644 modules/plugins/lsp/otter/otter.nix
create mode 100644 modules/plugins/lsp/trouble/config.nix
rename modules/{ => plugins}/lsp/trouble/default.nix (91%)
rename modules/{ => plugins}/lsp/trouble/trouble.nix (69%)
rename modules/{ => plugins}/minimap/codewindow/codewindow.nix (84%)
create mode 100644 modules/plugins/minimap/codewindow/config.nix
rename modules/{ => plugins}/minimap/codewindow/default.nix (92%)
rename modules/{ => plugins}/minimap/default.nix (86%)
rename modules/{ => plugins}/minimap/minimap-vim/config.nix (51%)
rename modules/{ => plugins}/minimap/minimap-vim/default.nix (92%)
create mode 100644 modules/plugins/minimap/minimap-vim/minimap-vim.nix
rename modules/{ => plugins}/notes/default.nix (86%)
create mode 100644 modules/plugins/notes/mind-nvim/config.nix
rename modules/{ => plugins}/notes/mind-nvim/default.nix (92%)
create mode 100644 modules/plugins/notes/mind-nvim/mind-nvim.nix
create mode 100644 modules/plugins/notes/neorg/config.nix
create mode 100644 modules/plugins/notes/neorg/default.nix
create mode 100644 modules/plugins/notes/neorg/neorg.nix
create mode 100644 modules/plugins/notes/obsidian/config.nix
rename modules/{ => plugins}/notes/obsidian/default.nix (91%)
create mode 100644 modules/plugins/notes/obsidian/obsidian.nix
create mode 100644 modules/plugins/notes/orgmode/config.nix
rename modules/{ => plugins}/notes/orgmode/default.nix (91%)
create mode 100644 modules/plugins/notes/orgmode/orgmode.nix
create mode 100644 modules/plugins/notes/todo-comments/config.nix
rename modules/{ => plugins}/notes/todo-comments/default.nix (92%)
create mode 100644 modules/plugins/notes/todo-comments/todo-comments.nix
rename modules/{ => plugins}/projects/default.nix (88%)
create mode 100644 modules/plugins/projects/project-nvim/config.nix
rename modules/{ => plugins}/projects/project-nvim/default.nix (92%)
create mode 100644 modules/plugins/projects/project-nvim/project-nvim.nix
rename modules/{snippets => plugins/rich-presence}/default.nix (55%)
create mode 100644 modules/plugins/rich-presence/neocord/config.nix
create mode 100644 modules/plugins/rich-presence/neocord/default.nix
create mode 100644 modules/plugins/rich-presence/neocord/neocord.nix
create mode 100644 modules/plugins/runner/default.nix
create mode 100644 modules/plugins/runner/run-nvim/config.nix
create mode 100644 modules/plugins/runner/run-nvim/default.nix
create mode 100644 modules/plugins/runner/run-nvim/run-nvim.nix
rename modules/{ => plugins}/session/default.nix (92%)
rename modules/{ => plugins}/session/neoconf/config.nix (100%)
rename modules/{ => plugins}/session/neoconf/default.nix (100%)
rename modules/{ => plugins}/session/neoconf/neoconf.nix (100%)
create mode 100644 modules/plugins/session/nvim-session-manager/config.nix
rename modules/{ => plugins}/session/nvim-session-manager/default.nix (93%)
create mode 100644 modules/plugins/session/nvim-session-manager/nvim-session-manager.nix
create mode 100644 modules/plugins/snippets/default.nix
create mode 100644 modules/plugins/snippets/luasnip/config.nix
create mode 100644 modules/plugins/snippets/luasnip/default.nix
create mode 100644 modules/plugins/snippets/luasnip/luasnip.nix
create mode 100644 modules/plugins/spellcheck/default.nix
create mode 100644 modules/plugins/spellcheck/vim-dirtytalk/config.nix
create mode 100644 modules/plugins/spellcheck/vim-dirtytalk/default.nix
create mode 100644 modules/plugins/spellcheck/vim-dirtytalk/vim-dirtytalk.nix
rename modules/{ => plugins}/statusline/default.nix (79%)
create mode 100644 modules/plugins/statusline/lualine/config.nix
rename modules/{ => plugins}/statusline/lualine/default.nix (91%)
rename modules/{ => plugins}/statusline/lualine/lualine.nix (73%)
rename modules/{ => plugins}/statusline/lualine/supported_themes.nix (83%)
rename modules/{ => plugins}/tabline/default.nix (89%)
create mode 100644 modules/plugins/tabline/nvim-bufferline/config.nix
rename modules/{ => plugins}/tabline/nvim-bufferline/default.nix (92%)
create mode 100644 modules/plugins/tabline/nvim-bufferline/nvim-bufferline.nix
rename modules/{ => plugins}/terminal/default.nix (88%)
create mode 100644 modules/plugins/terminal/toggleterm/config.nix
rename modules/{ => plugins}/terminal/toggleterm/default.nix (92%)
create mode 100644 modules/plugins/terminal/toggleterm/toggleterm.nix
rename modules/{ => plugins}/theme/config.nix (78%)
rename modules/{ => plugins}/theme/default.nix (85%)
create mode 100644 modules/plugins/theme/supported-themes.nix
create mode 100644 modules/plugins/theme/theme.nix
create mode 100644 modules/plugins/treesitter/config.nix
create mode 100644 modules/plugins/treesitter/default.nix
create mode 100644 modules/plugins/treesitter/treesitter.nix
create mode 100644 modules/plugins/treesitter/ts-context/config.nix
create mode 100644 modules/plugins/treesitter/ts-context/context.nix
rename modules/{treesitter => plugins/treesitter/ts-context}/default.nix (65%)
create mode 100644 modules/plugins/ui/borders/borders.nix
rename modules/{ => plugins}/ui/borders/default.nix (88%)
create mode 100644 modules/plugins/ui/breadcrumbs/breadcrumbs.nix
create mode 100644 modules/plugins/ui/breadcrumbs/config.nix
rename modules/{ => plugins}/ui/breadcrumbs/default.nix (92%)
create mode 100644 modules/plugins/ui/colorizer/colorizer.nix
create mode 100644 modules/plugins/ui/colorizer/config.nix
rename modules/{ => plugins}/ui/colorizer/default.nix (92%)
rename modules/{ => plugins}/ui/default.nix (88%)
create mode 100644 modules/plugins/ui/fastaction/config.nix
create mode 100644 modules/plugins/ui/fastaction/default.nix
create mode 100644 modules/plugins/ui/fastaction/fastaction-nvim.nix
rename modules/{ => plugins}/ui/illuminate/config.nix (74%)
rename modules/{ => plugins}/ui/illuminate/default.nix (92%)
create mode 100644 modules/plugins/ui/illuminate/illuminate.nix
create mode 100644 modules/plugins/ui/modes/config.nix
rename modules/{ => plugins}/ui/modes/default.nix (91%)
create mode 100644 modules/plugins/ui/modes/modes.nix
create mode 100644 modules/plugins/ui/noice/config.nix
rename modules/{ => plugins}/ui/noice/default.nix (91%)
create mode 100644 modules/plugins/ui/noice/noice.nix
rename modules/{ => plugins}/ui/notifications/default.nix (88%)
create mode 100644 modules/plugins/ui/notifications/nvim-notify/config.nix
rename modules/{ => plugins}/ui/notifications/nvim-notify/default.nix (92%)
create mode 100644 modules/plugins/ui/notifications/nvim-notify/nvim-notify.nix
create mode 100644 modules/plugins/ui/smartcolumn/config.nix
rename modules/{ => plugins}/ui/smartcolumn/default.nix (92%)
create mode 100644 modules/plugins/ui/smartcolumn/smartcolumn.nix
rename modules/{ => plugins}/utility/aerial/default.nix (56%)
rename modules/{ => plugins}/utility/binds/cheatsheet/cheatsheet.nix (68%)
create mode 100644 modules/plugins/utility/binds/cheatsheet/config.nix
rename modules/{ => plugins}/utility/binds/cheatsheet/default.nix (100%)
rename modules/{ => plugins}/utility/binds/default.nix (100%)
create mode 100644 modules/plugins/utility/binds/which-key/config.nix
rename modules/{ => plugins}/utility/binds/which-key/default.nix (92%)
create mode 100644 modules/plugins/utility/binds/which-key/which-key.nix
rename modules/{ => plugins}/utility/ccc/ccc.nix (82%)
rename modules/{ => plugins}/utility/ccc/config.nix (79%)
rename modules/{ => plugins}/utility/ccc/default.nix (100%)
rename modules/{ => plugins}/utility/default.nix (77%)
create mode 100644 modules/plugins/utility/diffview/config.nix
rename modules/{ => plugins}/utility/diffview/default.nix (100%)
rename modules/{ => plugins}/utility/diffview/diffview.nix (55%)
rename modules/{ => plugins}/utility/gestures/default.nix (100%)
rename modules/{ => plugins}/utility/gestures/gesture-nvim/config.nix (88%)
rename modules/{ => plugins}/utility/gestures/gesture-nvim/default.nix (100%)
rename modules/{ => plugins}/utility/gestures/gesture-nvim/gesture-nvim.nix (78%)
create mode 100644 modules/plugins/utility/icon-picker/config.nix
rename modules/{ => plugins}/utility/icon-picker/default.nix (100%)
rename modules/{ => plugins}/utility/icon-picker/icon-picker.nix (76%)
create mode 100644 modules/plugins/utility/images/default.nix
create mode 100644 modules/plugins/utility/images/image-nvim/config.nix
rename modules/{assistant/tabnine => plugins/utility/images/image-nvim}/default.nix (62%)
create mode 100644 modules/plugins/utility/images/image-nvim/image-nvim.nix
rename modules/{ => plugins}/utility/motion/default.nix (71%)
rename modules/{ => plugins}/utility/motion/hop/config.nix (71%)
rename modules/{ => plugins}/utility/motion/hop/default.nix (100%)
create mode 100644 modules/plugins/utility/motion/hop/hop.nix
create mode 100644 modules/plugins/utility/motion/leap/config.nix
rename modules/{ => plugins}/utility/motion/leap/default.nix (100%)
rename modules/{ => plugins}/utility/motion/leap/leap.nix (63%)
create mode 100644 modules/plugins/utility/motion/precognition/config.nix
create mode 100644 modules/plugins/utility/motion/precognition/default.nix
create mode 100644 modules/plugins/utility/motion/precognition/precognition.nix
create mode 100644 modules/plugins/utility/new-file-template/config.nix
create mode 100644 modules/plugins/utility/new-file-template/default.nix
create mode 100644 modules/plugins/utility/new-file-template/new-file-template.nix
create mode 100644 modules/plugins/utility/preview/default.nix
create mode 100644 modules/plugins/utility/preview/glow/config.nix
create mode 100644 modules/plugins/utility/preview/glow/default.nix
create mode 100644 modules/plugins/utility/preview/glow/glow.nix
create mode 100644 modules/plugins/utility/preview/markdown-preview/config.nix
create mode 100644 modules/plugins/utility/preview/markdown-preview/default.nix
create mode 100644 modules/plugins/utility/preview/markdown-preview/markdown-preview.nix
create mode 100644 modules/plugins/utility/surround/config.nix
rename modules/{ => plugins}/utility/surround/default.nix (100%)
create mode 100644 modules/plugins/utility/surround/surround.nix
create mode 100644 modules/plugins/utility/telescope/config.nix
rename modules/{ => plugins}/utility/telescope/default.nix (100%)
create mode 100644 modules/plugins/utility/telescope/telescope.nix
create mode 100644 modules/plugins/utility/wakatime/config.nix
rename modules/{ => plugins}/utility/wakatime/default.nix (92%)
create mode 100644 modules/plugins/utility/wakatime/vim-wakatime.nix
create mode 100644 modules/plugins/visuals/cellular-automaton/cellular-automaton.nix
create mode 100644 modules/plugins/visuals/cellular-automaton/config.nix
create mode 100644 modules/plugins/visuals/cellular-automaton/default.nix
create mode 100644 modules/plugins/visuals/cinnamon-nvim/cinnamon-nvim.nix
create mode 100644 modules/plugins/visuals/cinnamon-nvim/config.nix
create mode 100644 modules/plugins/visuals/cinnamon-nvim/default.nix
create mode 100644 modules/plugins/visuals/default.nix
create mode 100644 modules/plugins/visuals/fidget-nvim/config.nix
create mode 100644 modules/plugins/visuals/fidget-nvim/default.nix
create mode 100644 modules/plugins/visuals/fidget-nvim/fidget.nix
create mode 100644 modules/plugins/visuals/highlight-undo/config.nix
create mode 100644 modules/plugins/visuals/highlight-undo/default.nix
create mode 100644 modules/plugins/visuals/highlight-undo/highlight-undo.nix
create mode 100644 modules/plugins/visuals/indent-blankline/config.nix
create mode 100644 modules/plugins/visuals/indent-blankline/default.nix
create mode 100644 modules/plugins/visuals/indent-blankline/indent-blankline.nix
create mode 100644 modules/plugins/visuals/nvim-cursorline/config.nix
create mode 100644 modules/plugins/visuals/nvim-cursorline/default.nix
create mode 100644 modules/plugins/visuals/nvim-cursorline/nvim-cursorline.nix
create mode 100644 modules/plugins/visuals/nvim-scrollbar/config.nix
create mode 100644 modules/plugins/visuals/nvim-scrollbar/default.nix
create mode 100644 modules/plugins/visuals/nvim-scrollbar/scrollbar-nvim.nix
create mode 100644 modules/plugins/visuals/nvim-web-devicons/config.nix
create mode 100644 modules/plugins/visuals/nvim-web-devicons/default.nix
create mode 100644 modules/plugins/visuals/nvim-web-devicons/nvim-web-devicons.nix
create mode 100644 modules/plugins/visuals/tiny-devicons-auto-colors/config.nix
create mode 100644 modules/plugins/visuals/tiny-devicons-auto-colors/default.nix
create mode 100644 modules/plugins/visuals/tiny-devicons-auto-colors/tiny-devicons-auto-colors.nix
delete mode 100644 modules/projects/project-nvim/config.nix
delete mode 100644 modules/projects/project-nvim/project-nvim.nix
delete mode 100644 modules/rich-presence/default.nix
delete mode 100644 modules/rich-presence/presence-nvim/config.nix
delete mode 100644 modules/rich-presence/presence-nvim/default.nix
delete mode 100644 modules/rich-presence/presence-nvim/presence-nvim.nix
delete mode 100644 modules/session/nvim-session-manager/config.nix
delete mode 100644 modules/session/nvim-session-manager/nvim-session-manager.nix
delete mode 100644 modules/snippets/vsnip/config.nix
delete mode 100644 modules/snippets/vsnip/default.nix
delete mode 100644 modules/snippets/vsnip/vsnip.nix
delete mode 100644 modules/tabline/nvim-bufferline/nvim-bufferline.nix
delete mode 100644 modules/terminal/toggleterm/toggleterm.nix
delete mode 100644 modules/treesitter/config.nix
delete mode 100644 modules/treesitter/context.nix
delete mode 100644 modules/treesitter/treesitter.nix
delete mode 100644 modules/ui/borders/borders.nix
delete mode 100644 modules/ui/breadcrumbs/breadcrumbs.nix
delete mode 100644 modules/ui/breadcrumbs/config.nix
delete mode 100644 modules/ui/colorizer/colorizer.nix
delete mode 100644 modules/ui/colorizer/config.nix
delete mode 100644 modules/ui/illuminate/illuminate.nix
delete mode 100644 modules/ui/modes/config.nix
delete mode 100644 modules/ui/modes/modes.nix
delete mode 100644 modules/ui/noice/noice.nix
delete mode 100644 modules/ui/notifications/nvim-notify/config.nix
delete mode 100644 modules/ui/notifications/nvim-notify/nvim-notify.nix
delete mode 100644 modules/ui/smartcolumn/config.nix
delete mode 100644 modules/ui/smartcolumn/smartcolumn.nix
delete mode 100644 modules/utility/binds/cheatsheet/config.nix
delete mode 100644 modules/utility/binds/which-key/which-key.nix
delete mode 100644 modules/utility/diffview/config.nix
delete mode 100644 modules/utility/icon-picker/config.nix
delete mode 100644 modules/utility/motion/hop/hop.nix
delete mode 100644 modules/utility/motion/leap/config.nix
delete mode 100644 modules/utility/surround/config.nix
delete mode 100644 modules/utility/surround/surround.nix
delete mode 100644 modules/utility/wakatime/config.nix
delete mode 100644 modules/utility/wakatime/vim-wakatime.nix
delete mode 100644 modules/visuals/config.nix
delete mode 100644 modules/visuals/default.nix
delete mode 100644 modules/visuals/visuals.nix
create mode 100644 modules/wrapper/build/config.nix
create mode 100644 modules/wrapper/build/default.nix
create mode 100644 modules/wrapper/build/options.nix
rename {patches => modules/wrapper/build/patches}/flutter-tools.patch (100%)
create mode 100644 modules/wrapper/environment/config.nix
create mode 100644 modules/wrapper/environment/default.nix
create mode 100644 modules/wrapper/environment/options.nix
create mode 100644 modules/wrapper/lazy/config.nix
create mode 100644 modules/wrapper/lazy/default.nix
create mode 100644 modules/wrapper/lazy/lazy.nix
create mode 100644 modules/wrapper/rc/config.nix
create mode 100644 modules/wrapper/rc/default.nix
create mode 100644 modules/wrapper/rc/options.nix
create mode 100644 modules/wrapper/warnings/default.nix
diff --git a/.editorconfig b/.editorconfig
index 5f4be94ca..434562236 100644
--- a/.editorconfig
+++ b/.editorconfig
@@ -14,7 +14,7 @@ indent_style = space
indent_size = 2
trim_trailing_whitespace = false
-[*.{nix,yml,yaml}]
+[*.{js,nix,yml,yaml}]
indent_style = space
indent_size = 2
tab_width = 2
diff --git a/.github/CONTRIBUTING.md b/.github/CONTRIBUTING.md
index 436a68ec8..a43a94458 100644
--- a/.github/CONTRIBUTING.md
+++ b/.github/CONTRIBUTING.md
@@ -8,23 +8,42 @@
## Welcome
-I'm glad you are thinking about contributing to neovim-flake! If you're unsure about anything, just ask - or submit the issue or pull request anyway. The worst that can happen is you'll be politely asked to change something. Friendly contributions are always welcome.
+I'm glad you are thinking about contributing to nvf! If you're unsure about
+anything, just ask - or submit the issue or pull request anyway. The worst that
+can happen is you'll be politely asked to change something. Friendly
+contributions are always welcome.
-Before you contribute, I encourage you to read this project's CONTRIBUTING policy (you are here), its [LICENSE](LICENSE.md), and its [README](README.md).
+Before you contribute, I encourage you to read this project's CONTRIBUTING
+policy (you are here) and its [LICENSE](../LICENSE) to understand how your
+contributions are licensed.
-If you have any questions regarding those files, feel free to open an issue or [shoot me an email](mailto:me@notashelf.dev). Discussions tab is also available for more informal discussions.
+If you have any questions regarding those files, feel free to open an issue or
+[shoot me an email](mailto:me@notashelf.dev). Discussions tab is also available
+for more informal discussions.
## Contributing
-The contribution process is mostly documented in the [pull request template](.github/pull_request_template.md). You will find a checklist of items to complete before submitting a pull request. Please make sure you complete it before submitting a pull request. If you are unsure about any of the items, please ask.
+The contribution process is mostly documented in the
+[pull request template](PULL_REQUEST_TEMPLATE/pull_request_template.md). You
+will find a checklist of items to complete before submitting a pull request.
+Please make sure you complete it before submitting a pull request. If you are
+unsure about any of the items, please ask.
### Guidelines
-We provide instructions on a healthy contribution to neovim-flake - including styling, commit formats, how-to guides for adding new modules and options.
-You are very well recommended to read the contributing guideliner over at [the documentation](https://notashelf.github.io/neovim-flake#hacking)
+We provide instructions on a healthy contribution to neovim-flake - including
+styling, commit formats, how-to guides for adding new modules and options. You
+are very well recommended to read the contributing guidelines over at
+[the documentation](https://notashelf.github.io/nvf#hacking)
### Code of Conduct
-This project does not quite have a code of conduct yet. And to be honest, I'm not sure if I want one or if it will ever have one. I'm not expecting this project to be a hotbed of activity, but I do want to make sure that everyone who does contribute feels welcome and safe. As such, I will do my best to make sure that those who distrupt the project are dealt with swiftly and appropriately.
+This project does not quite have a code of conduct yet. And to be perfectly
+honest, I'm not sure if I want one or if it will ever have one. I'm not
+expecting this project to be a hotbed of activity, but I do want to make sure
+that everyone who does contribute feels welcome and safe. As such, I will do my
+best to make sure that those who distrupt the project are dealt with swiftly and
+appropriately.
-If you feel that you are not being treated with respect, please contact me directly.
+If you feel that you are not being treated with respect, please contact me
+directly.
diff --git a/.github/FUNDING.yml b/.github/FUNDING.yml
new file mode 100644
index 000000000..739d2d2c6
--- /dev/null
+++ b/.github/FUNDING.yml
@@ -0,0 +1,4 @@
+github: NotAShelf
+ko_fi: NotAShelf
+liberapay: NotAShelf
+
diff --git a/.github/PULL_REQUEST_TEMPLATE/pull_request_template.md b/.github/PULL_REQUEST_TEMPLATE/pull_request_template.md
index ca65c8b26..b2a269191 100644
--- a/.github/PULL_REQUEST_TEMPLATE/pull_request_template.md
+++ b/.github/PULL_REQUEST_TEMPLATE/pull_request_template.md
@@ -1,39 +1,57 @@
-# Description
-
-A clear and concise description of the aim of your Pull Request.
-
-**If your pull request aims to fix an open issue or a present bug, please link the relevant issue below. If not, please remove this section**
-Fixes #(issue)
-
-## Type of change
-
-Please delete any options that are not relevant.
-
-- Bug fix (non-breaking change which fixes an issue)
-- New feature (non-breaking change which adds functionality)
-- Breaking change (fix or feature that would cause existing functionality to not work as expected)
-- Translation/Language update
-- Docs
-- Other
-
-## Checklist
-
-Please try to check at least a majority of the checklist before opening your pull request. Exceptions to this will be reviewed on a case by case basis.
-
-- [ ] My code follows the style and contributing guidelines of this project.
-- [ ] I ran Alejandra to format my code (`nix fmt`).
-- [ ] I have performed a self-review of my own code and tested it.
-- [ ] I have commented my code, particularly in hard-to-understand areas.
-- [ ] My changes generate no new warnings.
-- [ ] This change requires a documentation update.
-- [ ] I have updated the documentation accordingly.
-
-## Screenshots & Logs
-
-You are kindly requested to attach screenshots of your changes in actions and preferably your build/run logs for all available packages. If you are not sure how to do this, you can refer to the [documentation](https://notashelf.github.io/neovim-flake/).
-
-**Please do not use any external image service. Instead, just paste in or drag and drop the image here, and it will be uploaded automatically.**
-
-```console
-# Paste your logs here
-```
+
+
+## Sanity Checking
+
+
+
+[editorconfig]: https://editorconfig.org
+[changelog]: https://github.com/NotAShelf/nvf/tree/main/docs/release-notes
+
+- [ ] I have updated the [changelog] as per my changes
+- [ ] I have tested, and self-reviewed my code
+- Style and consistency
+ - [ ] I ran **Alejandra** to format my code (`nix fmt`)
+ - [ ] My code conforms to the [editorconfig] configuration of the project
+ - [ ] My changes are consistent with the rest of the codebase
+- If new changes are particularly complex:
+ - [ ] My code includes comments in particularly complex areas
+ - [ ] I have added a section in the manual
+ - [ ] _(For breaking changes)_ I have included a migration guide
+- Package(s) built:
+ - [ ] `.#nix` (default package)
+ - [ ] `.#maximal`
+ - [ ] `.#docs-html` (manual, must build)
+- Tested on platform(s)
+ - [ ] `x86_64-linux`
+ - [ ] `aarch64-linux`
+ - [ ] `x86_64-darwin`
+ - [ ] `aarch64-darwin`
+
+
+
+---
+
+Add a :+1: [reaction] to [pull requests you find important].
+
+[reaction]: https://github.blog/2016-03-10-add-reactions-to-pull-requests-issues-and-comments/
+[pull requests you find important]: https://github.com/NixOS/nixpkgs/pulls?q=is%3Aopen+sort%3Areactions-%2B1-desc
diff --git a/.github/README.md b/.github/README.md
index b9624cee8..5d10c73f4 100644
--- a/.github/README.md
+++ b/.github/README.md
@@ -1,198 +1,271 @@
-
![neovim-flake Logo](../assets/neovim-flake-logo-work.svg)
+
![nvf Logo](assets/nvf-logo-work.svg)
+
+
nvf
-❄️ neovim-flake
+
+
+
+
-
+
-
-
---
-**[
Get Started
][Get Started]**
-**[
Documentation
][Documentation]**
-**[
Help
][Help]**
-**[
Contribute
][Contribute]**
-**[
FAQ
][Faq]**
-**[
Credits
][Credits]**
-
-
-
+[Features]: #features
[Get Started]: #get-started
[Documentation]: #documentation
[Help]: #help
[Contribute]: #contributing
-[FAQ]: #faq
+[FAQ]: #frequently-asked-questions
[Credits]: #credits
----
+**[
Features
][Features]**
+**[
Get Started
][Get Started]**
+**[
Documentation
][Documentation]**
+**[
Help
][Help]**
+**[
Contribute
][Contribute]**
+**[
FAQ
][FAQ]** **[
Credits
][Credits]**
-## Get Started
+
-### Using `nix` CLI
+---
-If you would like to try out the configuration before even thinking about installing it, you can run the following command
+## Features
+
+[standalone]: https://notashelf.github.io/nvf/index.xhtml#ch-standalone-installation
+[NixOS module]: https://notashelf.github.io/nvf/index.xhtml#ch-standalone-nixos
+[Home-Manager module]: https://notashelf.github.io/nvf/index.xhtml#ch-standalone-hm
+
+- **Simple**: One language to rule them all! Use Nix to configure everything,
+ with optional Lua support for robust configurability!
+- **Reproducible**: Your configuration will behave the same _anywhere_. No
+ surprises, promise!
+- **Portable**: nvf depends _solely_ on your Nix store, and nothing else. No
+ more global binaries! Works on all platforms, without hassle.
+ - Options to install [standalone], [NixOS module] or [Home-Manager module].
+- **Customizable**: There are _almost no defaults_ to annoy you. nvf is fully
+ customizable through the Nix module system.
+ - Not comfortable with a full-nix config or want to bring your Lua config? You
+ can do just that, no unnecessary restrictions.
+ - Lazyloading? We got it! Lazyload both internal and external plugins at will.
+- **Well-documented**: Documentation is priority. You will _never_ face
+ undocumented, obscure behaviour.
+- **Idiomatic**: nvf does things ✨ _the right way_ ✨ - the codebase is, and
+ will, remain maintainable for myself and any contributors.
-```console
-nix run github:KaminariOS/neovim-flake
-```
+## Get Started
-This will get you a feel for the base configuration and UI design. The flake exposes `#nix` as the default package, providing minimal language support and various
-utilities.You may also use `#nix`, `#tidal` or `#maximal` to get try out different configurations.
+[nvf manual]: https://notashelf.github.io/nvf/
+[issue tracker]: https://github.com/NotAShelf/nvf/issues
-It is as simple as changing the target output to get a different configuration. For example, to get a configuration with `tidal` support, run:
+If you are not sold on the concepts of **nvf**, and would like to try out the
+default configuration before even _thinking about_ installing it, you may run
+the following in order to take **nvf** out for a spin.
-```console
-nix run github:notashelf/neovim-flake#tidal
+```bash
+# Run the default package
+nix run github:notashelf/nvf
```
-Similar instructions will apply for `nix profile install`. However, you are recommended to instead use the module system as described in the manual.
+This will get you a feel for the base configuration and UI design. Though, none
+of the configuration options are final as **nvf** is designed to be modular and
+configurable.
-> [!NOTE]
-> The `maximal` configuration is _massive_ and will take a while to build. To get a feel for the configuration, use the default `nix` or `tidal` configurations.
-> Should you choose to try out the `maximal` configuration, using the binary cache as described in the manual is _strongly_ recommended.
+> [!TIP]
+> The flake exposes `#nix` as the default package, providing minimal language
+> support and various utilities. You may also use the `#nix` or `#maximal`
+> packages provided by the this flake to get try out different configurations.
-### Docker
+It is as simple as changing the target output to get a different configuration.
+For example, to get a configuration with large language coverage, run:
-As of version 0.5, an image for the `nix` output is published to Dockerhub and GitHub packages with each tagged release. If you do not have Nix installed
-on your system, you may run neovim within a container using your favorite tool.
-The following command will open the current directory in neovim with necessary tools bootstrapped.
-
-```console
-docker run -v `pwd`:/home/neovim/demo --rm -it notashelf/neovim-flake:latest
+```bash
+# Run the maximal package
+nix run github:notashelf/nvf#maximal
```
-The available registeres are `ghcr.io` and `dockerhub` for the time being. Adjust to your liking.
+Similar instructions will apply for `nix profile install`. However, you are
+recommended to instead use the module system as described in the manual.
-## Documentation
+> [!NOTE]
+> The `maximal` configuration is quite large, and might take a while to build.
+> To get a feel for the configuration, use the default `nix` configuration.
+> Should you choose to try out the `maximal` configuration, using the binary
+> cache as described in the manual is _strongly_ recommended.
-See the [neovim-flake Manual](https://notashelf.github.io/neovim-flake/) for detailed installation guides, configurations, available options, release notes
-and more.
+If you are convinced, proceed to the next section to view the installation
+instructions.
-If you want to dive right into trying **neovim-flake** you can get a fully featured configuration with `nix`
-language support by running:
+## Documentation
-```console
-nix run github:KaminariOS/neovim-flake
-```
+### Installation
-Please create an issue on the [issue tracker](../../../issues) if you find the documentation lacking or confusing.
-I also appreciate any contributions to the documentation.
+The _recommended_ way of installing nvf is using either the NixOS or the
+Home-Manager module, though it is completely possible and no less supported to
+install **nvf** as a standalone package, or a flake output.
-## Help
+See the rendered [nvf manual] for detailed and up-to-date installation guides,
+configurations, available options, release notes and more. Tips for installing
+userspace plugins is also contained in the documentation.
-You can create an issue on the [issue tracker](../../../issues) to ask questions or report bugs.
-I am not yet on spaces like matrix or IRC, so please use the issue tracker for now.
+> [!TIP]
+> While using NixOS or Home-Manager modules,
+> `programs.nvf.enableManpages = true;` will allow you to view option
+> documentation from the comfort of your terminal via `man 5 nvf`. The more you
+> know.
-## Contributing
+Please create an issue on the [issue tracker] if you find the documentation
+lacking or confusing. Any improvements to the documentation through pull
+requests are also welcome, and appreciated.
-I am always looking for new ways to help improve this flake. If you would like to contribute, please read
-the [contributing guide](CONTRIBUTING.md) before submitting a pull request. You can also create an
-issue on the [issue tracker](../../../issues) before submitting a pull request if you would like to discuss
-a feature or bug fix.
+## Getting Help
-## Philosophy
+If you are confused, stuck or would like to ask a simple question; you may
+create an issue on the [issue tracker] to ask questions or report bugs.
-The philosophy behind this flake configuration is to create an easily configurable and reproducible Neovim environment.
-While it does sacrifice in size (which I know some users will find _disagreeable_), it offers a lot of flexibility and customizability in
-exchange for the large size of the flake inputs. The "KISS" (Keep it simple, stupid) principle has mostly been abandoned here, however, you _can_
-ultimately leverage the flexibility of this flake to declare a configuration that follows KISS principles, as it is very easy to bring your
-own plugins and configurations from non-nix. What this flake is meant to be does eventually fall into your hands. Whether you are a
-developer, writer, or live coder, you can quickly craft a config that suits every project's need. Think of it like a distribution of Neovim that you have
-full control over. A distribution that takes advantage of pinning vim plugins and third party dependencies (such as tree-sitter grammars, language servers, and more).
+We are not not yet on spaces like matrix or IRC, so please use the issue tracker
+for now.
-One should never get a broken config when setting options. If setting multiple options results in a broken Neovim, file an issue!
-Each plugin knows when another plugin which allows for smart configuration of keybindings and automatic setup of things
-like completion sources and languages.
+## Contributing
-## FAQ
+I am always looking for new ways to help improve this flake. If you would like
+to contribute, please read the [contributing guide](CONTRIBUTING.md) before
+submitting a pull request. You can also create an issue on the [issue tracker]
+before submitting a pull request if you would like to discuss a feature or bug
+fix.
-**Q**: Why is this flake so big?
-
-**A**: I have sacrificed in size in order to provide a highly configurable and reproducible Neovim environment. A binary cache is provided to
-eleminate the need to build the flake from source, but it is still a large flake. If you do not need all the features, you can use the default `nix` output
-instead of the `maximal` output. This will reduce size by a lot, but you will lose some language specific features.
-
+## Frequently Asked Questions
-**Q**: Will you try to make this flake smaller?
-
-**A**: Yes. As a matter of fact, I am actively working on making this flake smaller. Unfortunately the process of providing everything
-possible by itself makes the flake large. Best I can do is to optimize the flake as much as possible by selecting plugins that
-are small and fast. And the binary cache, so at least you don't have to build it from source.
-
+[issue template]: https://github.com/NotAShelf/nvf/issues/new/choose
+[list of branches]: https://github.com/NotAShelf/nvf/branches
+[list of open pull requests]: https://github.com/NotAShelf/nvf/pulls
-**Q**: Will you use a plugin manager/language server installer?
-
-**A**: No. If you feel the need to ask that question, then you have missed the whole point of using nix and ultimately this flake.
-The whole reason we use nix is to be able to handle EVERYTHING declaratively, well including the LSP and plugin installations.
-
+**Q**: What platforms are supported?
+
**A**: nvf actively supports **Linux and Darwin** platforms using
+standalone Nix, NixOS or Home-Manager. Please take a look at the [nvf manual]
+for available installation instructions.
**Q**: Can you add _X_?
-
-**A**: Maybe. Open an issue using the appropriate template and I will consider it. I do not intend to
-add _every plugin that is in existence_, but I will consider it, should it offer something useful to the flake.
+
**A**: Maybe! It is not one of our goals to support each and every Neovim
+plugin, however, I am always open to new modules and plugin setup additions to
+**nvf**. Use the appropriate [issue template] and I will consider a module
+addition. As mentioned before, pull requests to add new features are also
+welcome.
+
+**Q**: A plugin I need is not available in **nvf**. What to do?
+
**A**: **nvf** exposes several APIs for you to be able to add your own
+plugin configurations! Please see the documentation on how you may do this.
+
+**Q**: Main branch is awfully silent, is the project dead?
+
**A**: No! Sometimes we branch out (e.g. `v0.6`) to avoid breaking
+userspace and work in a separate branch until we make sure the new additions are
+implemented in the most comfortable way possible for the end user. If you have
+not noticed any activity on the main branch, consider taking a look at the
+[list of branches] or the [list of open pull requests]. You may also consider
+_testing_ those release branches to get access to new features ahead of time and
+better prepare to breaking changes.
+
+**Q**: Will you support non-flake installations?
+
**A**: Quite possibly. **nvf** started as "neovim-flake", which does mean
+it is and will remain flakes-first but we might consider non-flakes
+compatibility. Though keep in mind that **nvf** under non-flake environments
+would lose customizability of plugin inputs, which is one of our primary
+features.
## Credits
### Contributors
-Special thanks to
-
-- [@fufexan](https://github.com/fufexan) - For the transition to flake-parts
-- [@FlafyDev](https://github.com/FlafyDev) - For getting the home-manager to work
-- [@n3oney](https://github.com/n3oney) - For making custom keybinds finally possible
-- [@horriblename](https://github.com/horriblename) - For actively implementing planned features and quality of life updates
-- [@Yavko](https://github.com/Yavko) - For the amazing neovim-flake logo
-- [@FrothyMarrow](https://github.com/FrothyMarrow) - For seeing mistakes that I could not
+[mnw]: https://github.com/gerg-l/mnw
+
+nvf would not be what it is today without the awesome people below. Special,
+heart-felt thanks to
+
+- [@fufexan](https://github.com/fufexan) - For the transition to flake-parts and
+ invaluable Nix assistance.
+- [@FlafyDev](https://github.com/FlafyDev) - For getting home-manager module to
+ work and Nix assistance.
+- [@n3oney](https://github.com/n3oney) - For making custom keybinds finally
+ possible, and other module additions.
+- [@horriblename](https://github.com/horriblename) - For actively implementing
+ planned features and quality of life updates.
+- [@Yavko](https://github.com/Yavko) - For the amazing **nvf** logo
+- [@FrothyMarrow](https://github.com/FrothyMarrow) - For seeing mistakes that I
+ could not.
+- [@Diniamo](https://github.com/Diniamo) - For actively submitting pull
+ requests, issues and assistance with maintenance of nvf.
+- [@Gerg-l](https://github.com/gerg-l) - For the modern Neovim wrapper, [mnw],
+ and occasional code improvements.
and everyone who has submitted issues or pull requests!
### Inspiration
-This configuration borrows from and is based on a few other configurations, including:
+This configuration borrows from and is based on a few other configurations,
+including:
+
+- [@jordanisaacs's](https://github.com/jordanisaacs)
+ [neovim-flake](https://github.com/jordanisaacs/neovim-flake) that this flake
+ is originally based on.
+- [@sioodmy's](https://github.com/sioodmy)
+ [dotfiles](https://github.com/sioodmy/dotfiles) that inspired the design
+ choices for UI and plugin defaults.
+- [@wiltaylor's](https://github.com/wiltaylor)
+ [neovim-flake](https://github.com/wiltaylor/neovim-flake) for plugin and
+ design ideas.
+- [@gvolpe's](https://github.com/gvolpe)
+ [neovim-flake](https://github.com/gvolpe/neovim-flake) for plugin, design and
+ nix concepts.
+
+I am grateful for their previous work and inspiration, and I wholeheartedly
+recommend checking their work out.
+
+
+## License
-- [@jordanisaacs's](https://github.com/jordanisaacs) [neovim-flake](https://github.com/jordanisaacs/neovim-flake) that this flake is originally based on.
-- [@sioodmy's](https://github.com/sioodmy) [dotfiles](https://github.com/sioodmy/dotfiles) that inspired the design choices.
-- [@wiltaylor's](https://github.com/wiltaylor) [neovim-flake](https://github.com/wiltaylor/neovim-flake) for plugin and design ideas.
-- [@gvolpe's](https://github.com/gvolpe) [neovim-flake](https://github.com/gvolpe/neovim-flake) for plugin, design and nix concepts.
+Following the license of the
+[original neovim-flake](https://github.com/jordanisaacs/neovim-flake), nvf has
+been made available under the [**MIT License**](LICENSE). However, all assets
+and documentation are published under the
+[**CC BY License**](https://github.com/NotAShelf/nvf/blob/main/.github/assets/LICENSE)
+under explicit permission by the artist.
-I am grateful for their previous work and inspiration, and I wholeheartedly recommend checking their work out.
-
+Yes, this includes the logo work too. Stop taking artwork that is not yours!
---
+
+
diff --git a/.github/assets/LICENSE b/.github/assets/LICENSE
new file mode 100644
index 000000000..10fabd901
--- /dev/null
+++ b/.github/assets/LICENSE
@@ -0,0 +1,395 @@
+Attribution 4.0 International
+
+=======================================================================
+
+Creative Commons Corporation ("Creative Commons") is not a law firm and
+does not provide legal services or legal advice. Distribution of
+Creative Commons public licenses does not create a lawyer-client or
+other relationship. Creative Commons makes its licenses and related
+information available on an "as-is" basis. Creative Commons gives no
+warranties regarding its licenses, any material licensed under their
+terms and conditions, or any related information. Creative Commons
+disclaims all liability for damages resulting from their use to the
+fullest extent possible.
+
+Using Creative Commons Public Licenses
+
+Creative Commons public licenses provide a standard set of terms and
+conditions that creators and other rights holders may use to share
+original works of authorship and other material subject to copyright
+and certain other rights specified in the public license below. The
+following considerations are for informational purposes only, are not
+exhaustive, and do not form part of our licenses.
+
+ Considerations for licensors: Our public licenses are
+ intended for use by those authorized to give the public
+ permission to use material in ways otherwise restricted by
+ copyright and certain other rights. Our licenses are
+ irrevocable. Licensors should read and understand the terms
+ and conditions of the license they choose before applying it.
+ Licensors should also secure all rights necessary before
+ applying our licenses so that the public can reuse the
+ material as expected. Licensors should clearly mark any
+ material not subject to the license. This includes other CC-
+ licensed material, or material used under an exception or
+ limitation to copyright. More considerations for licensors:
+ wiki.creativecommons.org/Considerations_for_licensors
+
+ Considerations for the public: By using one of our public
+ licenses, a licensor grants the public permission to use the
+ licensed material under specified terms and conditions. If
+ the licensor's permission is not necessary for any reason--for
+ example, because of any applicable exception or limitation to
+ copyright--then that use is not regulated by the license. Our
+ licenses grant only permissions under copyright and certain
+ other rights that a licensor has authority to grant. Use of
+ the licensed material may still be restricted for other
+ reasons, including because others have copyright or other
+ rights in the material. A licensor may make special requests,
+ such as asking that all changes be marked or described.
+ Although not required by our licenses, you are encouraged to
+ respect those requests where reasonable. More considerations
+ for the public:
+ wiki.creativecommons.org/Considerations_for_licensees
+
+=======================================================================
+
+Creative Commons Attribution 4.0 International Public License
+
+By exercising the Licensed Rights (defined below), You accept and agree
+to be bound by the terms and conditions of this Creative Commons
+Attribution 4.0 International Public License ("Public License"). To the
+extent this Public License may be interpreted as a contract, You are
+granted the Licensed Rights in consideration of Your acceptance of
+these terms and conditions, and the Licensor grants You such rights in
+consideration of benefits the Licensor receives from making the
+Licensed Material available under these terms and conditions.
+
+
+Section 1 -- Definitions.
+
+ a. Adapted Material means material subject to Copyright and Similar
+ Rights that is derived from or based upon the Licensed Material
+ and in which the Licensed Material is translated, altered,
+ arranged, transformed, or otherwise modified in a manner requiring
+ permission under the Copyright and Similar Rights held by the
+ Licensor. For purposes of this Public License, where the Licensed
+ Material is a musical work, performance, or sound recording,
+ Adapted Material is always produced where the Licensed Material is
+ synched in timed relation with a moving image.
+
+ b. Adapter's License means the license You apply to Your Copyright
+ and Similar Rights in Your contributions to Adapted Material in
+ accordance with the terms and conditions of this Public License.
+
+ c. Copyright and Similar Rights means copyright and/or similar rights
+ closely related to copyright including, without limitation,
+ performance, broadcast, sound recording, and Sui Generis Database
+ Rights, without regard to how the rights are labeled or
+ categorized. For purposes of this Public License, the rights
+ specified in Section 2(b)(1)-(2) are not Copyright and Similar
+ Rights.
+
+ d. Effective Technological Measures means those measures that, in the
+ absence of proper authority, may not be circumvented under laws
+ fulfilling obligations under Article 11 of the WIPO Copyright
+ Treaty adopted on December 20, 1996, and/or similar international
+ agreements.
+
+ e. Exceptions and Limitations means fair use, fair dealing, and/or
+ any other exception or limitation to Copyright and Similar Rights
+ that applies to Your use of the Licensed Material.
+
+ f. Licensed Material means the artistic or literary work, database,
+ or other material to which the Licensor applied this Public
+ License.
+
+ g. Licensed Rights means the rights granted to You subject to the
+ terms and conditions of this Public License, which are limited to
+ all Copyright and Similar Rights that apply to Your use of the
+ Licensed Material and that the Licensor has authority to license.
+
+ h. Licensor means the individual(s) or entity(ies) granting rights
+ under this Public License.
+
+ i. Share means to provide material to the public by any means or
+ process that requires permission under the Licensed Rights, such
+ as reproduction, public display, public performance, distribution,
+ dissemination, communication, or importation, and to make material
+ available to the public including in ways that members of the
+ public may access the material from a place and at a time
+ individually chosen by them.
+
+ j. Sui Generis Database Rights means rights other than copyright
+ resulting from Directive 96/9/EC of the European Parliament and of
+ the Council of 11 March 1996 on the legal protection of databases,
+ as amended and/or succeeded, as well as other essentially
+ equivalent rights anywhere in the world.
+
+ k. You means the individual or entity exercising the Licensed Rights
+ under this Public License. Your has a corresponding meaning.
+
+
+Section 2 -- Scope.
+
+ a. License grant.
+
+ 1. Subject to the terms and conditions of this Public License,
+ the Licensor hereby grants You a worldwide, royalty-free,
+ non-sublicensable, non-exclusive, irrevocable license to
+ exercise the Licensed Rights in the Licensed Material to:
+
+ a. reproduce and Share the Licensed Material, in whole or
+ in part; and
+
+ b. produce, reproduce, and Share Adapted Material.
+
+ 2. Exceptions and Limitations. For the avoidance of doubt, where
+ Exceptions and Limitations apply to Your use, this Public
+ License does not apply, and You do not need to comply with
+ its terms and conditions.
+
+ 3. Term. The term of this Public License is specified in Section
+ 6(a).
+
+ 4. Media and formats; technical modifications allowed. The
+ Licensor authorizes You to exercise the Licensed Rights in
+ all media and formats whether now known or hereafter created,
+ and to make technical modifications necessary to do so. The
+ Licensor waives and/or agrees not to assert any right or
+ authority to forbid You from making technical modifications
+ necessary to exercise the Licensed Rights, including
+ technical modifications necessary to circumvent Effective
+ Technological Measures. For purposes of this Public License,
+ simply making modifications authorized by this Section 2(a)
+ (4) never produces Adapted Material.
+
+ 5. Downstream recipients.
+
+ a. Offer from the Licensor -- Licensed Material. Every
+ recipient of the Licensed Material automatically
+ receives an offer from the Licensor to exercise the
+ Licensed Rights under the terms and conditions of this
+ Public License.
+
+ b. No downstream restrictions. You may not offer or impose
+ any additional or different terms or conditions on, or
+ apply any Effective Technological Measures to, the
+ Licensed Material if doing so restricts exercise of the
+ Licensed Rights by any recipient of the Licensed
+ Material.
+
+ 6. No endorsement. Nothing in this Public License constitutes or
+ may be construed as permission to assert or imply that You
+ are, or that Your use of the Licensed Material is, connected
+ with, or sponsored, endorsed, or granted official status by,
+ the Licensor or others designated to receive attribution as
+ provided in Section 3(a)(1)(A)(i).
+
+ b. Other rights.
+
+ 1. Moral rights, such as the right of integrity, are not
+ licensed under this Public License, nor are publicity,
+ privacy, and/or other similar personality rights; however, to
+ the extent possible, the Licensor waives and/or agrees not to
+ assert any such rights held by the Licensor to the limited
+ extent necessary to allow You to exercise the Licensed
+ Rights, but not otherwise.
+
+ 2. Patent and trademark rights are not licensed under this
+ Public License.
+
+ 3. To the extent possible, the Licensor waives any right to
+ collect royalties from You for the exercise of the Licensed
+ Rights, whether directly or through a collecting society
+ under any voluntary or waivable statutory or compulsory
+ licensing scheme. In all other cases the Licensor expressly
+ reserves any right to collect such royalties.
+
+
+Section 3 -- License Conditions.
+
+Your exercise of the Licensed Rights is expressly made subject to the
+following conditions.
+
+ a. Attribution.
+
+ 1. If You Share the Licensed Material (including in modified
+ form), You must:
+
+ a. retain the following if it is supplied by the Licensor
+ with the Licensed Material:
+
+ i. identification of the creator(s) of the Licensed
+ Material and any others designated to receive
+ attribution, in any reasonable manner requested by
+ the Licensor (including by pseudonym if
+ designated);
+
+ ii. a copyright notice;
+
+ iii. a notice that refers to this Public License;
+
+ iv. a notice that refers to the disclaimer of
+ warranties;
+
+ v. a URI or hyperlink to the Licensed Material to the
+ extent reasonably practicable;
+
+ b. indicate if You modified the Licensed Material and
+ retain an indication of any previous modifications; and
+
+ c. indicate the Licensed Material is licensed under this
+ Public License, and include the text of, or the URI or
+ hyperlink to, this Public License.
+
+ 2. You may satisfy the conditions in Section 3(a)(1) in any
+ reasonable manner based on the medium, means, and context in
+ which You Share the Licensed Material. For example, it may be
+ reasonable to satisfy the conditions by providing a URI or
+ hyperlink to a resource that includes the required
+ information.
+
+ 3. If requested by the Licensor, You must remove any of the
+ information required by Section 3(a)(1)(A) to the extent
+ reasonably practicable.
+
+ 4. If You Share Adapted Material You produce, the Adapter's
+ License You apply must not prevent recipients of the Adapted
+ Material from complying with this Public License.
+
+
+Section 4 -- Sui Generis Database Rights.
+
+Where the Licensed Rights include Sui Generis Database Rights that
+apply to Your use of the Licensed Material:
+
+ a. for the avoidance of doubt, Section 2(a)(1) grants You the right
+ to extract, reuse, reproduce, and Share all or a substantial
+ portion of the contents of the database;
+
+ b. if You include all or a substantial portion of the database
+ contents in a database in which You have Sui Generis Database
+ Rights, then the database in which You have Sui Generis Database
+ Rights (but not its individual contents) is Adapted Material; and
+
+ c. You must comply with the conditions in Section 3(a) if You Share
+ all or a substantial portion of the contents of the database.
+
+For the avoidance of doubt, this Section 4 supplements and does not
+replace Your obligations under this Public License where the Licensed
+Rights include other Copyright and Similar Rights.
+
+
+Section 5 -- Disclaimer of Warranties and Limitation of Liability.
+
+ a. UNLESS OTHERWISE SEPARATELY UNDERTAKEN BY THE LICENSOR, TO THE
+ EXTENT POSSIBLE, THE LICENSOR OFFERS THE LICENSED MATERIAL AS-IS
+ AND AS-AVAILABLE, AND MAKES NO REPRESENTATIONS OR WARRANTIES OF
+ ANY KIND CONCERNING THE LICENSED MATERIAL, WHETHER EXPRESS,
+ IMPLIED, STATUTORY, OR OTHER. THIS INCLUDES, WITHOUT LIMITATION,
+ WARRANTIES OF TITLE, MERCHANTABILITY, FITNESS FOR A PARTICULAR
+ PURPOSE, NON-INFRINGEMENT, ABSENCE OF LATENT OR OTHER DEFECTS,
+ ACCURACY, OR THE PRESENCE OR ABSENCE OF ERRORS, WHETHER OR NOT
+ KNOWN OR DISCOVERABLE. WHERE DISCLAIMERS OF WARRANTIES ARE NOT
+ ALLOWED IN FULL OR IN PART, THIS DISCLAIMER MAY NOT APPLY TO YOU.
+
+ b. TO THE EXTENT POSSIBLE, IN NO EVENT WILL THE LICENSOR BE LIABLE
+ TO YOU ON ANY LEGAL THEORY (INCLUDING, WITHOUT LIMITATION,
+ NEGLIGENCE) OR OTHERWISE FOR ANY DIRECT, SPECIAL, INDIRECT,
+ INCIDENTAL, CONSEQUENTIAL, PUNITIVE, EXEMPLARY, OR OTHER LOSSES,
+ COSTS, EXPENSES, OR DAMAGES ARISING OUT OF THIS PUBLIC LICENSE OR
+ USE OF THE LICENSED MATERIAL, EVEN IF THE LICENSOR HAS BEEN
+ ADVISED OF THE POSSIBILITY OF SUCH LOSSES, COSTS, EXPENSES, OR
+ DAMAGES. WHERE A LIMITATION OF LIABILITY IS NOT ALLOWED IN FULL OR
+ IN PART, THIS LIMITATION MAY NOT APPLY TO YOU.
+
+ c. The disclaimer of warranties and limitation of liability provided
+ above shall be interpreted in a manner that, to the extent
+ possible, most closely approximates an absolute disclaimer and
+ waiver of all liability.
+
+
+Section 6 -- Term and Termination.
+
+ a. This Public License applies for the term of the Copyright and
+ Similar Rights licensed here. However, if You fail to comply with
+ this Public License, then Your rights under this Public License
+ terminate automatically.
+
+ b. Where Your right to use the Licensed Material has terminated under
+ Section 6(a), it reinstates:
+
+ 1. automatically as of the date the violation is cured, provided
+ it is cured within 30 days of Your discovery of the
+ violation; or
+
+ 2. upon express reinstatement by the Licensor.
+
+ For the avoidance of doubt, this Section 6(b) does not affect any
+ right the Licensor may have to seek remedies for Your violations
+ of this Public License.
+
+ c. For the avoidance of doubt, the Licensor may also offer the
+ Licensed Material under separate terms or conditions or stop
+ distributing the Licensed Material at any time; however, doing so
+ will not terminate this Public License.
+
+ d. Sections 1, 5, 6, 7, and 8 survive termination of this Public
+ License.
+
+
+Section 7 -- Other Terms and Conditions.
+
+ a. The Licensor shall not be bound by any additional or different
+ terms or conditions communicated by You unless expressly agreed.
+
+ b. Any arrangements, understandings, or agreements regarding the
+ Licensed Material not stated herein are separate from and
+ independent of the terms and conditions of this Public License.
+
+
+Section 8 -- Interpretation.
+
+ a. For the avoidance of doubt, this Public License does not, and
+ shall not be interpreted to, reduce, limit, restrict, or impose
+ conditions on any use of the Licensed Material that could lawfully
+ be made without permission under this Public License.
+
+ b. To the extent possible, if any provision of this Public License is
+ deemed unenforceable, it shall be automatically reformed to the
+ minimum extent necessary to make it enforceable. If the provision
+ cannot be reformed, it shall be severed from this Public License
+ without affecting the enforceability of the remaining terms and
+ conditions.
+
+ c. No term or condition of this Public License will be waived and no
+ failure to comply consented to unless expressly agreed to by the
+ Licensor.
+
+ d. Nothing in this Public License constitutes or may be interpreted
+ as a limitation upon, or waiver of, any privileges and immunities
+ that apply to the Licensor or You, including from the legal
+ processes of any jurisdiction or authority.
+
+
+=======================================================================
+
+Creative Commons is not a party to its public licenses.
+Notwithstanding, Creative Commons may elect to apply one of its public
+licenses to material it publishes and in those instances will be
+considered the “Licensor.” The text of the Creative Commons public
+licenses is dedicated to the public domain under the CC0 Public Domain
+Dedication. Except for the limited purpose of indicating that material
+is shared under a Creative Commons public license or as otherwise
+permitted by the Creative Commons policies published at
+creativecommons.org/policies, Creative Commons does not authorize the
+use of the trademark "Creative Commons" or any other trademark or logo
+of Creative Commons without its prior written consent including,
+without limitation, in connection with any unauthorized modifications
+to any of its public licenses or any other arrangements,
+understandings, or agreements concerning use of licensed material. For
+the avoidance of doubt, this paragraph does not form part of the public
+licenses.
+
+Creative Commons may be contacted at creativecommons.org.
diff --git a/assets/neovim-flake-logo-work.svg b/.github/assets/nvf-logo-work.svg
similarity index 100%
rename from assets/neovim-flake-logo-work.svg
rename to .github/assets/nvf-logo-work.svg
diff --git a/.github/typos.toml b/.github/typos.toml
new file mode 100644
index 000000000..df76201cd
--- /dev/null
+++ b/.github/typos.toml
@@ -0,0 +1,2 @@
+
+default.extend-ignore-words-re = ["(?i)(noice)", "befores", "annote", "viw"]
diff --git a/.github/workflows/cachix.yml b/.github/workflows/cachix.yml
index b725f1749..bd687b061 100644
--- a/.github/workflows/cachix.yml
+++ b/.github/workflows/cachix.yml
@@ -19,7 +19,6 @@ jobs:
package:
- default
- nix
- - tidal
- maximal
steps:
- uses: easimon/maximize-build-space@v10
@@ -38,7 +37,7 @@ jobs:
uses: DeterminateSystems/nix-installer-action@main
- uses: DeterminateSystems/magic-nix-cache-action@main
- - uses: cachix/cachix-action@v14
+ - uses: cachix/cachix-action@v15
with:
authToken: ${{ secrets.CACHIX_TOKEN }}
extraPullNames: nix-community
diff --git a/.github/workflows/check-docs.yml b/.github/workflows/check-docs.yml
index 93dadc040..6c8b49a5c 100644
--- a/.github/workflows/check-docs.yml
+++ b/.github/workflows/check-docs.yml
@@ -19,19 +19,12 @@ jobs:
- docs-manpages
- docs-json
steps:
- - uses: easimon/maximize-build-space@v10
- with:
- overprovision-lvm: true
- remove-android: true
- remove-dotnet: true
- remove-haskell: true
-
- name: Install Nix
uses: DeterminateSystems/nix-installer-action@main
- uses: DeterminateSystems/magic-nix-cache-action@main
- - uses: actions/checkout@v4
- name: Checkout
+ - name: Checkout
+ uses: actions/checkout@v4
- name: Set default git branch (to reduce log spam)
run: git config --global init.defaultBranch main
@@ -39,8 +32,26 @@ jobs:
- name: Build documentation packages
run: nix build .#${{ matrix.package }} --print-build-logs
+ - name: Get current date
+ id: get-date
+ # output format: 2023-12-22-120000
+ run: echo "date=$(date +'%Y-%m-%d-%H%M%S')" >> ${GITHUB_OUTPUT}
+
- name: Upload doc artifacts
uses: actions/upload-artifact@v4
with:
- name: doc
- path: result/share/doc/neovim-flake/
+ name: "${{ matrix.package }}"
+ path: result/share/doc/nvf
+ flake-docs-linkcheck:
+ name: Validate hyperlinks in documentation sources
+ runs-on: ubuntu-latest
+ steps:
+ - name: Install Nix
+ uses: DeterminateSystems/nix-installer-action@main
+ - uses: DeterminateSystems/magic-nix-cache-action@main
+
+ - name: Checkout
+ uses: actions/checkout@v4
+
+ - name: Build documentation packages
+ run: nix build .#docs-linkcheck -Lv
diff --git a/.github/workflows/cleanup.yml b/.github/workflows/cleanup.yml
new file mode 100644
index 000000000..204dcba72
--- /dev/null
+++ b/.github/workflows/cleanup.yml
@@ -0,0 +1,22 @@
+name: Cleanup
+on:
+ workflow_dispatch:
+ schedule:
+ - cron: "0 4 1 * *" # 4AM on 1st of every month
+ - cron: "0 4 15 * *" # 4AM on the 15th of every month
+jobs:
+ branches:
+ name: Cleanup old branches
+ runs-on: ubuntu-latest
+ steps:
+ - name: "Checkout"
+ uses: actions/checkout@v4
+
+ - name: "Delete old branches"
+ uses: beatlabs/delete-old-branches-action@v0.0.10
+ with:
+ repo_token: "${{ secrets.GITHUB_TOKEN }}"
+ date: "1 months ago"
+ dry_run: false
+ delete_tags: false
+ exclude_open_pr_branches: true
diff --git a/.github/workflows/docker.yml b/.github/workflows/docker.yml
deleted file mode 100644
index 1edfb05cd..000000000
--- a/.github/workflows/docker.yml
+++ /dev/null
@@ -1,50 +0,0 @@
-name: "Publish Docker Image"
-on:
- workflow_dispatch:
- push:
- tags: ["v*"]
-
-jobs:
- build-docker-image:
- name: "Build Docker Image"
- runs-on: ubuntu-latest
-
- permissions:
- contents: read
- packages: write
-
- steps:
- - name: Checkout
- uses: actions/checkout@v4
-
- - name: Install Nix
- uses: DeterminateSystems/nix-installer-action@main
- - name: Magic Nix Cache
- uses: DeterminateSystems/magic-nix-cache-action@main
-
- - name: Build Docker Image
- run: nix build .#docker-nix --print-build-logs
-
- - name: Load & Tag Built Docker Image
- run: |
- docker load -i result &&
- docker tag neovim-flake:latest notashelf/neovim-flake:latest
-
- - name: Log into DockerHub
- uses: docker/login-action@master
- with:
- username: notashelf
- password: ${{ secrets.DOCKER_ACCESS_TOKEN }}
-
- - name: Push to DockerHub
- run: docker push notashelf/neovim-flake:latest
-
- - name: Log into ghcr
- uses: docker/login-action@master
- with:
- registry: "ghcr.io"
- username: "${{ github.actor }}"
- password: "${{ secrets.GITHUB_TOKEN }}"
-
- - name: Publish Docker Image (Github Packages)
- run: docker push notashelf/neovim-flake:latest
diff --git a/.github/workflows/editorconfig.yml b/.github/workflows/editorconfig.yml
index 68176c7f7..d411c89ff 100644
--- a/.github/workflows/editorconfig.yml
+++ b/.github/workflows/editorconfig.yml
@@ -15,7 +15,7 @@ jobs:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
gh api \
- repos/notashelf/neovim-flake/pulls/${{github.event.number}}/files --paginate \
+ repos/notashelf/nvf/pulls/${{github.event.number}}/files --paginate \
| jq '.[] | select(.status != "removed") | .filename' \
> "$HOME/changed_files"
diff --git a/.github/workflows/manual.yml b/.github/workflows/manual.yml
index 746358580..5b66c8a60 100644
--- a/.github/workflows/manual.yml
+++ b/.github/workflows/manual.yml
@@ -1,4 +1,5 @@
name: "Build and deploy documentation"
+
on:
workflow_dispatch:
push:
@@ -7,6 +8,7 @@ on:
paths:
# build the manuals only when docs directory is updated
- docs/**
+ - modules/**
# Sets permissions of the GITHUB_TOKEN to allow deployment to GitHub Pages
permissions:
@@ -20,23 +22,34 @@ concurrency:
cancel-in-progress: true
jobs:
- publish:
+ check_date:
runs-on: ubuntu-latest
+ name: Check latest commit
+ outputs:
+ should_run: ${{ steps.should_run.outputs.should_run }}
steps:
- - name: Checkout
- uses: actions/checkout@v4
-
- - name: Install Nix
- uses: DeterminateSystems/nix-installer-action@main
- - uses: DeterminateSystems/magic-nix-cache-action@main
+ - uses: actions/checkout@v4.1.7
+ - name: print latest_commit
+ run: echo ${{ github.sha }}
- - name: Build
- run: |
- nix build '.#docs'
- cp -r result/share/doc/neovim-flake public
+ - id: should_run
+ continue-on-error: true
+ name: check latest commit is less than a day
+ if: ${{ github.event_name == 'schedule' }}
+ run: test -z $(git rev-list --after="24 hours" ${{ github.sha }}) && echo "::set-output name=should_run::false"
- - name: Deploy
- uses: peaceiris/actions-gh-pages@v3
+ publish:
+ needs: check_date
+ if: ${{ needs.check_date.outputs.should_run != 'false' }}
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/checkout@v4.1.7
+ - uses: DeterminateSystems/nix-installer-action@main
+ - uses: DeterminateSystems/magic-nix-cache-action@main
+ - run: |
+ nix build .#docs -Lv
+ cp -r result/share/doc/nvf public
+ - uses: peaceiris/actions-gh-pages@v4
with:
github_token: ${{ secrets.GITHUB_TOKEN }}
publish_dir: ./public
diff --git a/.github/workflows/typos.yml b/.github/workflows/typos.yml
new file mode 100644
index 000000000..d74ee5b7d
--- /dev/null
+++ b/.github/workflows/typos.yml
@@ -0,0 +1,30 @@
+name: "Check for typos in the source tree"
+
+permissions: read-all
+
+on:
+ pull_request:
+ workflow_dispatch:
+ push:
+
+jobs:
+ check-typos:
+ runs-on: ubuntu-latest
+ if: "!contains(github.event.pull_request.title, '[skip ci]')"
+ steps:
+ - name: Checkout
+ uses: actions/checkout@v4
+
+ - name: Check for typos
+ uses: crate-ci/typos@master
+ with:
+ config: .github/typos.toml
+
+ - name: Fail Gracefully
+ if: ${{ failure() }}
+ shell: bash
+ run: |
+ echo "::error:: Current codebase contains typos that were caught by the CI!"
+ echo "If those typos were intentional, please add them to the ignored regexes in .github/typos.toml"
+ echo "[skip ci] label may be used if this is a one-time issue"
+ exit 1
diff --git a/LICENSE b/LICENSE
index 342db3f6e..0e03fa95d 100644
--- a/LICENSE
+++ b/LICENSE
@@ -1,6 +1,6 @@
MIT License
-Copyright (c) 2023 NotAShelf
+Copyright (c) 2023-2024 NotAShelf
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
diff --git a/configuration.nix b/configuration.nix
index 9f5e46bfc..c49dc4e85 100644
--- a/configuration.nix
+++ b/configuration.nix
@@ -1,160 +1,158 @@
-inputs: let
- modulesWithInputs = import ./modules inputs;
-
- neovimConfiguration = {
- modules ? [],
- pkgs,
- lib ? pkgs.lib,
- check ? true,
- extraSpecialArgs ? {},
- }:
- modulesWithInputs {
- inherit pkgs lib check extraSpecialArgs;
- configuration.imports = modules;
+# this is the sample configuration for nvf, aiming to give you a feel of the default options
+# while certain plugins are enabled. While it may act as one, this is not an overview of nvf's
+# module options. To find a complete overview of nvf's options and examples, visit the manual.
+# https://notashelf.github.io/nvf/options.html
+isMaximal: {
+ config.vim = {
+ viAlias = true;
+ vimAlias = true;
+ debugMode = {
+ enable = false;
+ level = 16;
+ logFile = "/tmp/nvim.log";
};
- tidalConfig = {
- config.vim.languages.tidal.enable = !true;
- };
+ spellcheck = {
+ enable = isMaximal;
+ };
- mainConfig = isMaximal: {
- config = {
- vim = {
- viAlias = true;
- vimAlias = true;
- debugMode = {
- enable = false;
- level = 20;
- logFile = "/tmp/nvim.log";
- };
- };
+ lsp = {
+ formatOnSave = false;
+ lspkind.enable = false;
+ lightbulb.enable = true;
+ lspsaga.enable = false;
+ trouble.enable = true;
+ lspSignature.enable = true;
+ otter-nvim.enable = isMaximal;
+ lsplines.enable = isMaximal;
+ nvim-docs-view.enable = isMaximal;
+ };
- vim.lsp = {
- formatOnSave = false;
- lspkind.enable = false;
- lightbulb.enable = true;
- lspsaga.enable = false;
- nvimCodeActionMenu.enable = true;
- trouble.enable = true;
- lspSignature.enable = true;
- lsplines.enable = isMaximal;
- nvim-docs-view.enable = isMaximal;
+ debugger = {
+ nvim-dap = {
+ enable = true;
+ ui.enable = true;
};
+ };
- vim.debugger = {
- nvim-dap = {
- enable = true;
- ui.enable = true;
- };
+ # This section does not include a comprehensive list of available language modules.
+ # To list all available language module options, please visit the nvf manual.
+ languages = {
+ enableLSP = true;
+ enableFormat = true;
+ enableTreesitter = true;
+ enableExtraDiagnostics = true;
+
+ # Languages that will be supported in default and maximal configurations.
+ nix.enable = true;
+ html = {
+ enable = true;
+ treesitter.autotagHtml = true;
};
-
- vim.languages = {
- enableLSP = true;
- enableFormat = true;
- enableTreesitter = true;
- enableExtraDiagnostics = true;
-
- nix.enable = true;
- html = {
- enable = true;
- treesitter.autotagHtml = true;
- };
- clang = {
- enable = true;
- lsp.server = "clangd";
- };
- sql.enable = isMaximal;
- bash.enable = true;
- vim.enable = isMaximal;
- tex.enable = true;
- yaml.enable = isMaximal;
- toml.enable = isMaximal;
- cmake.enable = isMaximal;
- json.enable = isMaximal;
- rust = {
- enable = true;
- crates.enable = true;
- };
- java.enable = isMaximal;
- ts.enable = isMaximal;
- svelte.enable = isMaximal;
- vue.enable = true;
- go.enable = isMaximal;
- zig.enable = isMaximal;
- python.enable = true;
- dart.enable = isMaximal;
- elixir.enable = false;
- terraform.enable = isMaximal;
- markdown.enable = true;
+ markdown.enable = true;
+
+ # Languages that are enabled in the maximal configuration.
+ bash.enable = isMaximal;
+ clang.enable = isMaximal;
+ css.enable = isMaximal;
+ sql.enable = isMaximal;
+ java.enable = isMaximal;
+ kotlin.enable = isMaximal;
+ ts.enable = isMaximal;
+ go.enable = isMaximal;
+ lua.enable = isMaximal;
+ zig.enable = isMaximal;
+ python.enable = isMaximal;
+ typst.enable = isMaximal;
+ tex.enable = true;
+ yaml.enable = isMaximal;
+ toml.enable = isMaximal;
+ cmake.enable = isMaximal;
+ json.enable = isMaximal;
+ rust = {
+ enable = true;
+ crates.enable = true;
};
- vim.visuals = {
- enable = true;
- nvimWebDevicons.enable = true;
- scrollBar.enable = true;
- smoothScroll.enable = true;
- cellularAutomaton.enable = true;
- fidget-nvim.enable = true;
- highlight-undo.enable = true;
-
- indentBlankline = {
- enable = true;
- fillChar = null;
- eolChar = null;
- scope = {
- enabled = true;
- };
- };
+ # Language modules that are not as common.
+ assembly.enable = false;
+ astro.enable = false;
+ nu.enable = false;
+ csharp.enable = false;
+ julia.enable = false;
+ vala.enable = false;
+ scala.enable = false;
+ r.enable = false;
+ gleam.enable = false;
+ dart.enable = false;
+ ocaml.enable = false;
+ elixir.enable = false;
+ haskell.enable = false;
+
+ tailwind.enable = false;
+ svelte.enable = false;
+
+ # Nim LSP is broken on Darwin and therefore
+ # should be disabled by default. Users may still enable
+ # `vim.languages.vim` to enable it, this does not restrict
+ # that.
+ # See:
+ nim.enable = false;
+ };
- cursorline = {
- enable = true;
- lineTimeout = 0;
- };
- };
+ visuals = {
+ nvim-scrollbar.enable = isMaximal;
+ nvim-web-devicons.enable = true;
+ cinnamon-nvim.enable = true;
+ fidget-nvim.enable = !true;
- vim.statusline = {
- lualine = {
- enable = true;
- theme = "catppuccin";
- };
- };
+ highlight-undo.enable = true;
+ indent-blankline.enable = true;
- vim.theme = {
+ nvim-cursorline = {
enable = true;
- name = "catppuccin";
- style = "mocha";
- transparent = true;
- };
- vim = {
- autopairs.enable = true;
- autosaving.enable = true;
+ setupOpts.lineTimeout = 0;
};
+ # Fun
+ cellular-automaton.enable = false;
+ };
- vim.autocomplete = {
+ statusline = {
+ lualine = {
enable = true;
- type = "nvim-cmp";
+ theme = "catppuccin";
};
+ };
- vim.filetree = {
- nvimTree = {
- enable = true;
+ theme = {
+ enable = true;
+ name = "catppuccin";
+ style = "mocha";
+ transparent = true;
+ };
+
+ autopairs.nvim-autopairs.enable = true;
+
+ autocomplete.nvim-cmp.enable = true;
+ snippets.luasnip.enable = true;
+
+ filetree = {
+ nvimTree = {
+ enable = true;
+ setupOpts = {
renderer = {
rootFolderLabel = true;
};
+
view = {
width = 25;
};
actions = {
- openFile = {
- quitOnOpen = true;
- };
- };
- # openTreeOnNewTab = false;
- openOnSetup = false;
- diagnostics = {
- enable = true;
- showOnDirs = true;
+ # openFile = {
+ # quitOnOpen = true;
+ # };
};
+
git = {
enable = true;
};
@@ -166,137 +164,142 @@ inputs: let
highlightModified = "all";
highlightOpenedFiles = "all";
icons = {
- gitPlacement = "after";
- modifiedPlacement = "before";
+ # gitPlacement = "after";
+ # modifiedPlacement = "before";
show = {
git = true;
modified = true;
};
};
};
+ diagnostics = {
+ enable = true;
+ # showOnDirs = true;
+ };
};
+ # openTreeOnNewTab = false;
+ openOnSetup = false;
};
+ };
- vim.tabline = {
- nvimBufferline.enable = true;
- };
+ tabline = {
+ nvimBufferline.enable = true;
+ };
- vim.treesitter.context.enable = true;
+ treesitter.context.enable = true;
- vim.binds = {
- whichKey.enable = true;
- cheatsheet.enable = true;
- };
+ binds = {
+ whichKey.enable = true;
+ cheatsheet.enable = true;
+ };
- vim.telescope.enable = true;
+ telescope.enable = true;
- vim.git = {
- enable = true;
- gitsigns.enable = true;
- gitsigns.codeActions = false; # throws an annoying debug message
- };
+ git = {
+ enable = true;
+ gitsigns.enable = true;
+ gitsigns.codeActions.enable = false; # throws an annoying debug message
+ };
- vim.minimap = {
- minimap-vim.enable = false;
- codewindow.enable = true; # lighter, faster, and uses lua for configuration
- };
+ minimap = {
+ minimap-vim.enable = false;
+ codewindow.enable = isMaximal; # lighter, faster, and uses lua for configuration
+ };
- vim.dashboard = {
- dashboard-nvim.enable = false;
- alpha.enable = true;
- };
+ dashboard = {
+ dashboard-nvim.enable = false;
+ alpha.enable = isMaximal;
+ };
- vim.notify = {
- nvim-notify.enable = true;
- };
+ notify = {
+ nvim-notify.enable = true;
+ };
- vim.projects = {
- project-nvim.enable = true;
- };
+ projects = {
+ project-nvim.enable = isMaximal;
+ };
- vim.utility = {
- ccc.enable = isMaximal;
- vim-wakatime.enable = false;
- icon-picker.enable = isMaximal;
- surround.enable = isMaximal;
- diffview-nvim.enable = true;
- motion = {
- hop.enable = true;
- leap.enable = true;
- };
+ utility = {
+ ccc.enable = false;
+ vim-wakatime.enable = false;
+ icon-picker.enable = isMaximal;
+ surround.enable = isMaximal;
+ diffview-nvim.enable = true;
+ motion = {
+ hop.enable = true;
+ leap.enable = true;
+ precognition.enable = isMaximal;
};
- vim.notes = {
- obsidian.enable = false; # FIXME neovim fails to build if obsidian is enabled
- orgmode.enable = false;
- mind-nvim.enable = true;
- todo-comments.enable = true;
+ images = {
+ image-nvim.enable = !true;
};
+ };
- vim.terminal = {
- toggleterm = {
- enable = true;
- lazygit.enable = true;
- };
- };
+ notes = {
+ obsidian.enable = false; # FIXME: neovim fails to build if obsidian is enabled
+ neorg.enable = false;
+ orgmode.enable = false;
+ mind-nvim.enable = isMaximal;
+ todo-comments.enable = true;
+ };
- vim.ui = {
- borders.enable = true;
- noice.enable = true;
- colorizer.enable = true;
- modes-nvim.enable = false; # the theme looks terrible with catppuccin
- illuminate.enable = true;
- breadcrumbs = {
- enable = isMaximal;
- navbuddy.enable = isMaximal;
- };
- smartcolumn = {
- enable = !true;
- columnAt.languages = {
- # this is a freeform module, it's `buftype = int;` for configuring column position
- nix = 110;
- ruby = 120;
- java = 130;
- go = [90 130];
- };
- };
+ terminal = {
+ toggleterm = {
+ enable = true;
+ lazygit.enable = true;
};
+ };
- vim.assistant = {
- copilot = {
- enable = isMaximal;
- cmp.enable = true;
+ ui = {
+ borders.enable = true;
+ noice = {
+ enable = true;
+ # messages.enabled = false;
+ };
+ colorizer.enable = true;
+ modes-nvim.enable = false; # the theme looks terrible with catppuccin
+ illuminate.enable = true;
+ breadcrumbs = {
+ enable = isMaximal;
+ navbuddy.enable = isMaximal;
+ };
+ smartcolumn = {
+ enable = true;
+ setupOpts.custom_colorcolumn = {
+ # this is a freeform module, it's `buftype = int;` for configuring column position
+ nix = "110";
+ ruby = "120";
+ java = "130";
+ go = ["90" "130"];
};
};
+ fastaction.enable = true;
+ };
- vim.session = {
- nvim-session-manager.enable = true;
- neoconf.enable = true;
+ assistant = {
+ chatgpt.enable = false;
+ copilot = {
+ enable = false;
+ cmp.enable = isMaximal;
};
+ };
- vim.gestures = {
- gesture-nvim.enable = false;
- };
+ session = {
+ nvim-session-manager.enable = false;
+ # neoconf.enable = true;
+ };
- vim.comments = {
- comment-nvim.enable = true;
- };
+ gestures = {
+ gesture-nvim.enable = false;
+ };
- vim.presence = {
- presence-nvim = {
- enable = true;
- auto_update = true;
- image_text = "The Superior Text Editor";
- client_id = "793271441293967371";
- main_image = "neovim";
- show_time = true;
- rich_presence = {
- editing_text = "Editing %s";
- };
- };
- };
+ comments = {
+ comment-nvim.enable = true;
+ };
+
+ presence = {
+ neocord.enable = false;
};
};
-in {
- inherit neovimConfiguration mainConfig tidalConfig;
}
diff --git a/docs/default.nix b/docs/default.nix
index a597fb24e..48cff5638 100644
--- a/docs/default.nix
+++ b/docs/default.nix
@@ -1,138 +1,142 @@
{
+ inputs,
pkgs,
- lib ? import ../lib/stdlib-extended.nix pkgs.lib,
- nmdSrc,
- ...
+ lib,
}: let
- nmd = import nmdSrc {
- inherit lib;
- # The DocBook output of `nixos-render-docs` doesn't have the change
- # `nmd` uses to work around the broken stylesheets in
- # `docbook-xsl-ns`, so we restore the patched version here.
- pkgs =
- pkgs
- // {
- docbook-xsl-ns =
- pkgs.docbook-xsl-ns.override {withManOptDedupPatch = true;};
- };
- };
+ inherit ((lib.importJSON ../release.json)) release;
- # Make sure the used package is scrubbed to avoid actually
- # instantiating derivations.
- scrubbedPkgsModule = {
- imports = [
- {
- _module.args = {
- pkgs = lib.mkForce (nmd.scrubDerivations "pkgs" pkgs);
- pkgs_i686 = lib.mkForce {};
- };
- }
- ];
- };
-
- dontCheckDefinitions = {_module.check = false;};
+ nvimModuleDocs = pkgs.nixosOptionsDoc {
+ variablelistId = "nvf-options";
+ warningsAreErrors = true;
- githubDeclaration = user: repo: subpath: let
- urlRef = "main";
- in {
- url = "https://github.com/${user}/${repo}/blob/${urlRef}/${subpath}";
- name = "<${repo}/${subpath}>";
- };
+ inherit
+ (
+ (lib.evalModules {
+ modules =
+ import ../modules/modules.nix {
+ inherit lib pkgs;
+ }
+ ++ [
+ (
+ let
+ # From nixpkgs:
+ #
+ # Recursively replace each derivation in the given attribute set
+ # with the same derivation but with the `outPath` attribute set to
+ # the string `"\${pkgs.attribute.path}"`. This allows the
+ # documentation to refer to derivations through their values without
+ # establishing an actual dependency on the derivation output.
+ #
+ # This is not perfect, but it seems to cover a vast majority of use
+ # cases.
+ #
+ # Caveat: even if the package is reached by a different means, the
+ # path above will be shown and not e.g.
+ # `${config.services.foo.package}`.
+ scrubDerivations = namePrefix: pkgSet:
+ builtins.mapAttrs (
+ name: value: let
+ wholeName = "${namePrefix}.${name}";
+ in
+ if builtins.isAttrs value
+ then
+ scrubDerivations wholeName value
+ // lib.optionalAttrs (lib.isDerivation value) {
+ inherit (value) drvPath;
+ outPath = "\${${wholeName}}";
+ }
+ else value
+ )
+ pkgSet;
+ in {
+ _module = {
+ check = false;
+ args.pkgs = lib.mkForce (scrubDerivations "pkgs" pkgs);
+ };
+ }
+ )
+ ];
+ })
+ )
+ options
+ ;
- nvimPath = toString ./..;
-
- buildOptionsDocs = args @ {
- modules,
- includeModuleSystemOptions ? true,
- ...
- }: let
- inherit ((lib.evalModules {inherit modules;})) options;
- in
- pkgs.buildPackages.nixosOptionsDoc ({
- options =
- if includeModuleSystemOptions
- then options
- else builtins.removeAttrs options ["_module"];
- transformOptions = opt:
- opt
- // {
- # Clean up declaration sites to not refer to the Home Manager
- # source tree.
- declarations = map (decl:
- if lib.hasPrefix nvimPath (toString decl)
+ transformOptions = opt:
+ opt
+ // {
+ declarations =
+ map (
+ decl:
+ if lib.hasPrefix (toString ../.) (toString decl)
then
- githubDeclaration "notashelf" "neovim-flake"
- (lib.removePrefix "/" (lib.removePrefix nvimPath (toString decl)))
+ lib.pipe decl [
+ toString
+ (lib.removePrefix (toString ../.))
+ (lib.removePrefix "/")
+ (x: {
+ url = "https://github.com/NotAShelf/nvf/blob/main/${x}";
+ name = "";
+ })
+ ]
else if decl == "lib/modules.nix"
- then
- # TODO: handle this in a better way (may require upstream
- # changes to nixpkgs)
- githubDeclaration "NixOS" "nixpkgs" decl
- else decl)
- opt.declarations;
- };
- }
- // builtins.removeAttrs args ["modules" "includeModuleSystemOptions"]);
+ then {
+ url = "https://github.com/NixOS/nixpkgs/blob/master/${decl}";
+ name = "";
+ }
+ else decl
+ )
+ opt.declarations;
+ };
+ };
- nvimModuleDocs = buildOptionsDocs {
- modules =
- import ../modules/modules.nix {
- inherit lib pkgs;
- check = false;
- }
- ++ [scrubbedPkgsModule];
- variablelistId = "neovim-flake-options";
+ # Generate the HTML manual pages
+ html = pkgs.callPackage ./manual.nix {
+ inherit release;
+ inherit (nvimModuleDocs) optionsJSON;
};
+in {
+ inherit (inputs) nmd;
+
+ # TODO: Use `hmOptionsDocs.optionsJSON` directly once upstream
+ # `nixosOptionsDoc` is more customizable.
+ options.json =
+ pkgs.runCommand "options.json" {
+ meta.description = "List of nvf options in JSON format";
+ } ''
+ mkdir -p $out/{share/doc,nix-support}
+ cp -a ${nvimModuleDocs.optionsJSON}/share/doc/nixos $out/share/doc/nvf
+ substitute \
+ ${nvimModuleDocs.optionsJSON}/nix-support/hydra-build-products \
+ $out/nix-support/hydra-build-products \
+ --replace \
+ '${nvimModuleDocs.optionsJSON}/share/doc/nixos' \
+ "$out/share/doc/nvf"
+ '';
- release-config = builtins.fromJSON (builtins.readFile ../release.json);
- revision = "release-${release-config.release}";
# Generate the `man home-configuration.nix` package
- nvf-configuration-manual =
- pkgs.runCommand "neovim-flake-reference-manpage" {
- nativeBuildInputs = [pkgs.buildPackages.installShellFiles pkgs.nixos-render-docs];
+ manPages =
+ pkgs.runCommand "nvf-reference-manpage" {
+ nativeBuildInputs = [
+ pkgs.buildPackages.installShellFiles
+ pkgs.nixos-render-docs
+ ];
allowedReferences = ["out"];
} ''
# Generate manpages.
- mkdir -p $out/share/man/man5
- mkdir -p $out/share/man/man1
+ mkdir -p $out/share/man/{man5,man1}
+
nixos-render-docs -j $NIX_BUILD_CORES options manpage \
- --revision ${revision} \
+ --revision ${release} \
+ --header ${./man/header.5} \
+ --footer ${./man/footer.5} \
${nvimModuleDocs.optionsJSON}/share/doc/nixos/options.json \
- $out/share/man/man5/neovim-flake.5
- cp ${./neovim-flake.1} $out/share/man/man1/neovim-flake.1
+ $out/share/man/man5/nvf.5
+
+ cp ${./man/nvf.1} $out/share/man/man1/nvf.1
'';
- # Generate the HTML manual pages
- neovim-flake-manual = pkgs.callPackage ./manual.nix {
- inherit revision;
- outputPath = "share/doc/neovim-flake";
- nmd = nmdSrc;
- options = {
- neovim-flake = nvimModuleDocs.optionsJSON;
- };
- };
- html = neovim-flake-manual;
- htmlOpenTool = pkgs.callPackage ./html-open-tool.nix {} {inherit html;};
-in {
- inherit nmdSrc;
- options = {
- # TODO: Use `hmOptionsDocs.optionsJSON` directly once upstream
- # `nixosOptionsDoc` is more customizable.
- json =
- pkgs.runCommand "options.json" {
- meta.description = "List of Home Manager options in JSON format";
- } ''
- mkdir -p $out/{share/doc,nix-support}
- cp -a ${nvimModuleDocs.optionsJSON}/share/doc/nixos $out/share/doc/neovim-flake
- substitute \
- ${nvimModuleDocs.optionsJSON}/nix-support/hydra-build-products \
- $out/nix-support/hydra-build-products \
- --replace \
- '${nvimModuleDocs.optionsJSON}/share/doc/nixos' \
- "$out/share/doc/neovim-flake"
- '';
+ manual = {
+ inherit html;
+ htmlOpenTool = pkgs.callPackage ./html-open-tool.nix {inherit html;};
};
-
- manPages = nvf-configuration-manual;
- manual = {inherit html htmlOpenTool;};
}
diff --git a/docs/footer.5 b/docs/footer.5
deleted file mode 100644
index f2c7cfd66..000000000
--- a/docs/footer.5
+++ /dev/null
@@ -1,3 +0,0 @@
-.SH "AUTHORS"
-.PP
-neovim-flake contributors
diff --git a/docs/highlight-style.css b/docs/highlight-style.css
deleted file mode 100644
index d5fbcef5d..000000000
--- a/docs/highlight-style.css
+++ /dev/null
@@ -1,8 +0,0 @@
-pre {
- padding: 0;
-}
-
-pre code.hljs {
- border: none;
- margin: 0;
-}
diff --git a/docs/html-open-tool.nix b/docs/html-open-tool.nix
index 0eeb9fe88..d430d24be 100644
--- a/docs/html-open-tool.nix
+++ b/docs/html-open-tool.nix
@@ -2,13 +2,9 @@
writeShellScriptBin,
makeDesktopItem,
symlinkJoin,
-}: {
html,
- pathName ? "neovim-flake",
- projectName ? pathName,
- name ? "${pathName}-help",
}: let
- helpScript = writeShellScriptBin name ''
+ helpScript = writeShellScriptBin "nvf-help" ''
set -euo pipefail
if [[ ! -v BROWSER || -z $BROWSER ]]; then
@@ -24,20 +20,23 @@
echo "$0: unable to start a web browser; please set \$BROWSER"
exit 1
else
- exec "$BROWSER" "${html}/share/doc/${pathName}/index.xhtml"
+ exec "$BROWSER" "${html}/share/doc/nvf/index.xhtml"
fi
'';
desktopItem = makeDesktopItem {
- name = "${pathName}-manual";
- desktopName = "${projectName} Manual";
- genericName = "View ${projectName} documentation in a web browser";
+ name = "nvf-manual";
+ desktopName = "nvf Manual";
+ genericName = "View nvf documentation in a web browser";
icon = "nix-snowflake";
- exec = "${helpScript}/bin/${name}";
+ exec = "${helpScript}/bin/nvf-help";
categories = ["System"];
};
in
symlinkJoin {
- inherit name;
- paths = [helpScript desktopItem];
+ name = "nvf-help";
+ paths = [
+ helpScript
+ desktopItem
+ ];
}
diff --git a/docs/man/footer.5 b/docs/man/footer.5
new file mode 100644
index 000000000..f73fbebbd
--- /dev/null
+++ b/docs/man/footer.5
@@ -0,0 +1,3 @@
+.SH "AUTHORS"
+.PP
+nvf contributors
diff --git a/docs/header.5 b/docs/man/header.5
similarity index 53%
rename from docs/header.5
rename to docs/man/header.5
index e3307ed77..a28fc3ddc 100644
--- a/docs/header.5
+++ b/docs/man/header.5
@@ -1,4 +1,4 @@
-.TH "neovim-flake" "5" "01/01/1980" "neovim-flake"
+.TH "nvf" "5" "01/01/1980" "nvf"
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
@@ -6,9 +6,8 @@
.\" enable line breaks after slashes
.cflags 4 /
.SH "NAME"
-neovim-flake configuration specification
+nvf configuration specification
.SH "OPTIONS"
.PP
-You can use the following options in
-home\-configuration\&.nix:
+You can use the following options to configure nvf:
.PP
diff --git a/docs/neovim-flake.1 b/docs/man/nvf.1
similarity index 50%
rename from docs/neovim-flake.1
rename to docs/man/nvf.1
index 54aab90ad..0f1e36dc6 100644
--- a/docs/neovim-flake.1
+++ b/docs/man/nvf.1
@@ -1,6 +1,6 @@
.Dd January 1, 1980
-.Dt neovim-flake 1
-.Os neovim-flake
+.Dt nvf 1
+.Os nvf
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
@@ -8,22 +8,26 @@
.\" enable line breaks after slashes
.cflags 4 /
.Sh NAME
-.Nm neovim-flake
-.Nd a extensible and distro-agonistic Neovim configuration wrapper in Nix
+.Nm nvf
+.Nd A highly modular, extensible and distro-agnostic Neovim configuration framework for Nix/NixOS.
.
.Sh BUGS
.Pp
-Please report any bugs on the
+Please report any bugs that you might encounter on the
\m[blue]\fBproject issue tracker\fR\m[]\&.
+.Sh SEE ALSO
+.Pp
+\fBnvf\fR(5)
+
.Sh AUTHOR
.Pp
-\fBneovim-flake contributors\fR
+\fBnvf contributors\fR
.RS 4
Author.
.RE
.Sh COPYRIGHT
.br
-Copyright \(co 2017\(en2022 neovim-flake contributors
+Copyright \(co 2023\(en2024 nvf contributors
.br
diff --git a/docs/manual.nix b/docs/manual.nix
index 6455e738d..4becdf2db 100644
--- a/docs/manual.nix
+++ b/docs/manual.nix
@@ -1,65 +1,114 @@
{
- stdenv,
lib,
- documentation-highlighter,
- nmd,
- revision,
- outputPath ? "share/doc/neovim-flake",
- options,
+ stdenvNoCC,
+ fetchzip,
+ runCommandLocal,
+ # build inputs
nixos-render-docs,
-}:
-stdenv.mkDerivation {
- name = "neovim-flake-manual";
- src = ./manual;
-
- nativeBuildInputs = [nixos-render-docs];
-
- buildPhase = ''
- mkdir -p out/media
-
- mkdir -p out/highlightjs
- cp -t out/highlightjs \
- ${documentation-highlighter}/highlight.pack.js \
- ${documentation-highlighter}/LICENSE \
- ${documentation-highlighter}/mono-blue.css \
- ${documentation-highlighter}/loader.js
-
- substituteInPlace ./options.md \
- --replace \
- '@OPTIONS_JSON@' \
- ${options.neovim-flake}/share/doc/nixos/options.json
-
- substituteInPlace ./manual.md \
- --replace \
- '@VERSION@' \
- ${revision}
-
- cp -v ${nmd}/static/style.css out/style.css
- cp -vt out/highlightjs ${nmd}/static/highlightjs/tomorrow-night.min.css
- cp -v ${./highlight-style.css} out/highlightjs/highlight-style.css
-
- cp -vr ${./release-notes} release-notes
-
- nixos-render-docs manual html \
- --manpage-urls ./manpage-urls.json \
- --revision ${lib.trivial.revisionWithDefault revision} \
- --stylesheet style.css \
- --stylesheet highlightjs/tomorrow-night.min.css \
- --stylesheet highlightjs/highlight-style.css \
- --script highlightjs/highlight.pack.js \
- --script highlightjs/loader.js \
- --toc-depth 1 \
- --section-toc-depth 1 \
- manual.md \
- out/index.xhtml
- '';
+ documentation-highlighter,
+ dart-sass,
+ path,
+ # nrd configuration
+ release,
+ optionsJSON,
+} @ args: let
+ manual-release = args.release or "unstable";
+
+ scss-reset = fetchzip {
+ url = "https://github.com/Frontend-Layers/scss-reset/archive/refs/tags/1.4.2.zip";
+ hash = "sha256-cif5Sx8Ca5vxdw/mNAgpulLH15TwmzyJFNM7JURpoaE=";
+ };
+
+ compileStylesheet = runCommandLocal "compile-nvf-stylesheet" {} ''
+ mkdir -p $out
- installPhase = ''
- dest="$out/${outputPath}"
- mkdir -p "$(dirname "$dest")"
- mv out "$dest"
+ tmpfile=$(mktemp -d)
+ trap "rm -r $tmpfile" EXIT
- mkdir -p $out/nix-support/
- echo "doc manual $dest index.html" >> $out/nix-support/hydra-build-products
+ ln -s "${scss-reset}/build" "$tmpfile/scss-reset"
+
+ ${dart-sass}/bin/sass --load-path "$tmpfile" \
+ ${./static/style.scss} "$out/style.css"
+
+ echo "Generated styles"
'';
-}
+in
+ stdenvNoCC.mkDerivation {
+ name = "nvf-manual";
+ src = builtins.path {
+ name = "nvf-manual-${manual-release}";
+ path = lib.sourceFilesBySuffices ./manual [".md" ".md.in"];
+ };
+
+ strictDependencies = true;
+ nativeBuildInputs = [nixos-render-docs];
+
+ postPatch = ''
+ ln -s ${optionsJSON}/share/doc/nixos/options.json ./config-options.json
+ '';
+
+ buildPhase = ''
+ dest="$out/share/doc/nvf"
+ mkdir -p "$(dirname "$dest")"
+ mkdir -p $dest/{highlightjs,script}
+
+ # Copy highlight scripts to /highlights in document root.
+ cp -vt $dest/highlightjs \
+ ${documentation-highlighter}/highlight.pack.js \
+ ${documentation-highlighter}/LICENSE \
+ ${documentation-highlighter}/mono-blue.css \
+ ${documentation-highlighter}/loader.js
+
+ # Copy anchor scripts to the script directory in document root.
+ cp -vt "$dest"/script \
+ ${./static/script}/anchor-min.js \
+ ${./static/script}/anchor-use.js \
+ ${./static/script}/search.js
+
+ substituteInPlace ./options.md \
+ --subst-var-by OPTIONS_JSON ./config-options.json
+
+ substituteInPlace ./manual.md \
+ --subst-var-by NVF_VERSION ${manual-release}
+
+ substituteInPlace ./hacking/additional-plugins.md \
+ --subst-var-by NVF_REPO "https://github.com/notashelf/nvf/blob/${manual-release}"
+
+ # Move compiled stylesheet
+ cp -vt $dest \
+ ${compileStylesheet}/style.css
+
+ # Move release notes
+ cp -vr ${./release-notes} release-notes
+
+ # Generate final manual from a set of parameters. Explanation of the CLI flags are
+ # as follows:
+ #
+ # 1. --manpage-urls will allow you to use manual pages as they are defined in
+ # the nixpkgs documentation.
+ # 2. --revision is the project revision as it is defined in 'release.json' in the
+ # repository root
+ # 3. --script will inject a given Javascript file into the resulting pages inside
+ # the