diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS
new file mode 100644
index 0000000..de6ff5e
--- /dev/null
+++ b/.github/CODEOWNERS
@@ -0,0 +1 @@
+* @NotAShelf
diff --git a/.github/workflows/cachix.yml b/.github/workflows/cachix.yml
new file mode 100644
index 0000000..47bd48f
--- /dev/null
+++ b/.github/workflows/cachix.yml
@@ -0,0 +1,46 @@
+name: build-and-cache
+
+on:
+ workflow_dispatch:
+ push:
+ paths-ignore:
+ - '**/README.md'
+ - '**/.gitignore'
+ - '**/assets'
+
+jobs:
+ nix:
+ runs-on: ubuntu-latest
+ strategy:
+ matrix:
+ package:
+ - default
+ - nix
+ - tidal
+ - maximal
+ steps:
+ - uses: easimon/maximize-build-space@v6
+ with:
+ overprovision-lvm: true
+ remove-android: true
+ remove-dotnet: true
+ remove-haskell: true
+ - uses: actions/checkout@v3
+ - uses: cachix/install-nix-action@v18
+ with:
+ extra_nix_config: |
+ access-tokens = github.com=${{ secrets.GITHUB_TOKEN }}
+ auto-optimise-store = true
+ experimental-features = nix-command flakes
+ nix_path: nixpkgs=channel:nixos-unstable
+ - uses: cachix/cachix-action@v12
+ with:
+ authToken: ${{ secrets.CACHIX_TOKEN }}
+ extraPullNames: nix-community
+ name: neovim-flake
+ - name: Set default git branch (to reduce log spam)
+ run: git config --global init.defaultBranch main
+ - name: Validate Flakes
+ run: nix flake check
+ - name: Build Hyprland with default settings
+ run: nix build .#${{ matrix.package }} --print-build-logs
diff --git a/.gitignore b/.gitignore
index 121ea04..afe60df 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,2 +1,13 @@
-result
-.config
+# Ignore nix artifacts
+result/
+.direnv
+
+# Ignore files generated by common IDEs
+.vscode/*
+.idea/*
+
+# Ignore log files generated by my debuggers
+*.log
+*.log.*
+
+#
diff --git a/LICENSE b/LICENSE
index 9f3cbc3..342db3f 100644
--- a/LICENSE
+++ b/LICENSE
@@ -1,6 +1,6 @@
MIT License
-Copyright (c) 2021 Jordan
+Copyright (c) 2023 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/README.md b/README.md
index b249b31..76e55c8 100644
--- a/README.md
+++ b/README.md
@@ -1,30 +1,144 @@
-# neovim-flake
+
-Come join the Matrix room if you have any questions or need help: [#neovim-flake:matrix.org](https://matrix.to/#/#neovim-flake:matrix.org)
+An Nix wrapped IDE layer for the superior text editor, Neovim.
+
+---
+
+
+
+**[ Install ][Install]**
+**[ Configure ][Configure]**
+**[ Documentation ][Documentation]**
+**[ Contribute ][Contribute]**
+**[ FAQ ][Faq]**
+
+
+
+[Contribute]: #contributing
+[Install]: #install
+[Configure]: #configure
+[Documentation]: #documentation
+[FAQ]: #faq
+
+---
+
+A highly configurable nix flake for Neovim, packing everything you might need to create your own neovim IDE.
+
+## Install
+
+### Using `nix`
+
+The easiest way to install is to use the `nix profile` command. To install the default configuration, run:
+
+```console
+nix run github:notashelf/neovim-flake
+```
+
+The package exposes `.#nix` as the default output. You may use `.#nix`, `.#tidal` or `.#maximal` to get different configurations.
+
+It is as simply as changing the target output to get a different configuration. For example, to get a configuration with `tidal` support, run:
+
+```console
+nix run github:notashelf/neovim-flake#tidal
+```
+
+Similar instructions will apply for `nix profile install`.
+
+### On NixOS
+
+NixOS users may add this repo to their flake inputs as such:
+
+```nix
+{
+ inputs = {
+ # point at this repository, you may pin specific revisions or branches while using `github:`
+ neovim-flake.url = "github:notashelf/neovim-flake";
+
+ # you may override our nixpkgs with your own, this will save you some cache hits and s recommended
+ nixpkgs.follows = "nixpkgs";
+ };
+}
+```
+
+Then, you can use the `neovim-flake` input in your `systemPackages` or `home.packages`.
+
+## Configure
+
+TODO (awaiting #1 to be merged, which implements a separate configuration file)
## Documentation
-See the [neovim-flake Manual](https://jordanisaacs.github.io/neovim-flake/) for documentation, available options, and release notes.
+See the [neovim-flake Manual](https://notashelf.github.io/neovim-flake/) for detailed documentation, available options, and release notes.
+If you want to dive right into trying **neovim-flake** you can get a fully featured configuration with `nix` language support by running:
-If you want to dive right into trying neovim-flake you can get a fully featured configuration with `nix` language support by running:
-
-```
-nix run github:jordanisaacs/neovim-flake
+```console
+nix run github:notashelf/neovim-flake
```
-## Screenshot
+The documentation is scarce right now as a result of the ongoing rebase and refactor, but shall be available once more soon.
-![screenshot](./screenshot.png)
+## Help
+
+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.
## Philosophy
-The philosophy behind this flake configuration is to allow for easily configurable and reproducible neovim environments. Enter a directory and have a ready to go neovim configuration that is the same on every machine. Whether you are a developer, writer, or live coder (see tidal cycles below!), quickly craft a config that suits every project's need. Think of it like a distribution of Neovim that takes advantage of pinning vim plugins and third party dependencies (such as tree-sitter grammars, language servers, and more).
+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 been abandoned here, but you can ultimately declare a configuration that follows KISS.
+For it is very easy to bring your own plugins and configurations. Whether you are a developer, writer, or live coder (see tidal cycles below!),
+quickly craft a config that suits every project's need. Think of it like a distribution of Neovim that takes advantage of pinning vim plugins and
+third party dependencies (such as tree-sitter grammars, language servers, and more).
-As a result, 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.
+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.
+## Credits
-## Credit
+This configuration is based on a few other configurations, including:
-Originally based on Wil Taylor's amazing [neovim-flake](https://github.com/wiltaylor/neovim-flake)
+- [@sioodmy's](https://github.com/sioodmy) [dotfiles](https://github.com/sioodmy/dotfiles)
+- [@wiltaylor's](https://github.com/wiltaylor) [neovim-flake](https://github.com/wiltaylor/neovim-flake)
+- [@jordanisaacs's](https://github.com/jordanisaacs) [neovim-flake](https://github.com/jordanisaacs/neovim-flake)
+- [@gvolpe's](https://github.com/gvolpe) [neovim-flake](https://github.com/gvolpe/neovim-flake)
+
+I am grateful for their work and inspiration.
+
+## FAQ
+
+**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.
+
+**Q**: Will you use a plugin manager?
+
+**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. We load plugins with raw lua.
+
+---
diff --git a/assets/alternative_prompt.png b/assets/alternative_prompt.png
new file mode 100644
index 0000000..b6537ae
Binary files /dev/null and b/assets/alternative_prompt.png differ
diff --git a/assets/dashboard.png b/assets/dashboard.png
new file mode 100644
index 0000000..59b6d93
Binary files /dev/null and b/assets/dashboard.png differ
diff --git a/assets/ide_mode.png b/assets/ide_mode.png
new file mode 100644
index 0000000..5ee47aa
Binary files /dev/null and b/assets/ide_mode.png differ
diff --git a/assets/telescope.png b/assets/telescope.png
new file mode 100644
index 0000000..fd677d5
Binary files /dev/null and b/assets/telescope.png differ
diff --git a/docs/custom-configs.adoc b/docs/custom-configs.adoc
index 17994f7..74417cb 100644
--- a/docs/custom-configs.adoc
+++ b/docs/custom-configs.adoc
@@ -18,7 +18,7 @@ The following is an example of a barebones vim configuration with the default th
[source,nix]
----
{
- inputs.neovim-flake.url = "github:jordanisaacs/neovim-flake";
+ inputs.neovim-flake.url = "github:notashelf/neovim-flake";
outputs = {nixpkgs, neovim-flake, ...}: let
system = "x86_64-linux";
diff --git a/docs/default-configs.adoc b/docs/default-configs.adoc
index 1a8f0f6..4cb0563 100644
--- a/docs/default-configs.adoc
+++ b/docs/default-configs.adoc
@@ -7,7 +7,7 @@ While you can configure neovim-flake yourself using the builder, here are a few
=== Tidal Cycles
[source,console]
-$ nix run github:jordanisaacs/neovim-flake#tidal file.tidal
+$ nix run github:notashelf/neovim-flake#tidal file.tidal
Utilizing https://github.com/tidalcycles/vim-tidal[vim-tidal] and mitchmindtree's fantastic https://github.com/mitchmindtree/tidalcycles.nix[tidalcycles.nix] start playing with tidal cycles in a single command.
@@ -18,7 +18,7 @@ In your tidal file, type a cycle e.g. `d1 $ s "drum"` and then press _ctrl+enter
=== Nix
[source,console]
-$ nix run github:jordanisaacs/neovim-flake#nix test.nix
+$ nix run github:notashelf/neovim-flake#nix test.nix
Enables all the of neovim plugins, with language support for specifically Nix. This lets you see what a fully configured neovim setup looks like without downloading a whole bunch of language servers and associated tools.
@@ -26,11 +26,12 @@ Enables all the of neovim plugins, with language support for specifically Nix. T
=== Maximal
[source,console]
-$ nix shell github:jordanisaacs/neovim-flake#maximal test.nix
+$ nix run github:notashelf/neovim-flake#maximal test.nix
It is the same fully configured neovim as with the <> config, but with every supported language enabled.
[NOTE]
====
-Running the maximal config will download *a lot* of packages as it is downloading language servers, formatters, and more.
+Running the maximal config will download *a lot* of packages, as it will be downloading language servers, formatters, and more. You are recommended to use the binary cache if
+using the default configs.
====
diff --git a/docs/default.nix b/docs/default.nix
index 3b04302..6cf73dc 100644
--- a/docs/default.nix
+++ b/docs/default.nix
@@ -22,7 +22,7 @@
}
++ [scrubbedPkgsModule];
moduleRootPaths = [./..];
- mkModuleUrl = path: "https://github.com/jordanisaacs/neovim-flake/blob/main/${path}#blob-path";
+ mkModuleUrl = path: "https://github.com/notashelf/neovim-flake/blob/main/${path}#blob-path";
channelName = "neovim-flake";
docBook.id = "neovim-flake-options";
};
diff --git a/docs/man-pages.xml b/docs/man-pages.xml
index 669652e..2526aea 100644
--- a/docs/man-pages.xml
+++ b/docs/man-pages.xml
@@ -5,7 +5,7 @@
neovim-flake contributors
- 2021–2022
+ 2023
neovim-flake contributors
diff --git a/docs/manual.xml b/docs/manual.xml
index e961e1e..2948e5c 100644
--- a/docs/manual.xml
+++ b/docs/manual.xml
@@ -9,10 +9,8 @@
Preface
- If you encounter problems or want to discuss neovim-flake then join the Matrix room
- #neovim-flake:matrix.org.
If your problem is caused by a bug in neovim-flake then it should be reported on the
- neovim-flake issue tracker.
+ neovim-flake issue tracker.
diff --git a/docs/plugins.adoc b/docs/plugins.adoc
index b3a4839..a369b4f 100644
--- a/docs/plugins.adoc
+++ b/docs/plugins.adoc
@@ -3,6 +3,42 @@
The following are the neovim plugins used within neovim-flake. Some plugins are explicitly enabled by the user, while others are enabled implicitly.
+
+[[sec-plugins-buffer]]
+=== Coding Assistants
+
+* https://github.com/zbirenbaum/copilot.lua[copilot.lua] a lua replacement for github.vim, the license nightmare AI assistant
+* https://github.com/codota/tabnine-nvim[tabnine-nvim] neovim plugin for the more ethically acceptable AI assistant TabNine
+
+[[sec-plugins-buffer]]
+=== Buffers
+
+* https://github.com/akinsho/bufferline.nvim[nvim-bufferline-lua] a buffer line with tab integration
+* https://github.com/famiu/bufdelete.nvim[bufdelete-nvim] delete buffers without losing window layout
+
+[[sec-plugins-commenting]]
+=== Commenting
+
+* https://github.com/b3nj5m1n/kommentary[kommentary] neovim plugin to comment text in and out, written in lua. Supports commenting out the current line, a visual selection and a motion
+* https://github.com/folke/todo-comments.nvim[todo-comments.nvim] plugin to highlight and search for todo comments like TODO, HACK, BUG in your codebase
+
+[[sec-plugins-completions]]
+=== Completions
+
+* https://github.com/hrsh7th/nvim-cmp[nvim-cmp] a completion engine that utilizes sources
+** https://github.com/hrsh7th/cmp-buffer[cmp-buffer] a source for buffer words
+** https://github.com/hrsh7th/cmp-nvim-lsp[cmp-nvim-lsp] a source for builtin LSP client
+** https://github.com/hrsh7th/cmp-vsnip[cmp-vsnip] a source for vim-vsnip autocomplete
+** https://github.com/hrsh7th/cmp-path[cmp-path] a source for path autocomplete
+** https://github.com/ray-x/cmp-treesitter[cmp-treesitter] treesitter nodes autcomplete
+
+[[sec-plugins-dashboard]]
+=== Dashboard
+
+* https://github.com/glepnir/dashboard-nvim[dashboard.nvim] fancy and blazing fast start screen plugin for Neovim
+* https://github.com/goolord/alpha-nvim[alpha.nvim] a fast and fully programmable greeter for neovim
+* https://github.com/mhinz/vim-startify[vim-startify] a fancy start screen for {neo,}vim
+
[[sec-plugins-server]]
=== Language Server
@@ -14,12 +50,6 @@ The following are the neovim plugins used within neovim-flake. Some plugins are
* https://github.com/ray-x/lsp_signature.nvim[lsp-signature] show function signatures as you type
* https://github.com/onsails/lspkind-nvim[lspkind-nvim] for pictograms in lsp (with support for nvim-cmp)
-[[sec-plugins-buffer]]
-=== Buffers
-
-* https://github.com/akinsho/bufferline.nvim[nvim-bufferline-lua] a buffer line with tab integration
-* https://github.com/famiu/bufdelete.nvim[bufdelete-nvim] delete buffers without losing window layout
-
[[sec-plugins-statuslines]]
=== Statuslines
@@ -44,23 +74,58 @@ The following are the neovim plugins used within neovim-flake. Some plugins are
=== Visuals
* https://github.com/lukas-reineke/indent-blankline.nvim[indent-blankline] for indentation guides
-* https://github.com/kyazdani42/nvim-web-devicons[nvim-web-devicons] Plugins and colors for icons. Requires patched font
+* https://github.com/kyazdani42/nvim-web-devicons[nvim-web-devicons] plugins and colors for icons. Requires patched font
+* https://github.com/declancm/cinnamon.nvim[cinnamon.nvim] smooth scrolling for ANY movement command
+* https://github.com/nvim-cursorline[nvim-cursorline] a plugin for neovim that highlights cursor words and lines
+* https://github.com/petertriho/nvim-scrollbar[nvim-scrollbar] a scrollbar plugin for neovim
+* https://github.com/Eandrju/cellular-automaton.nvim[cellular-automatan] a vanity to plugin to help you procrastinate more efficiently
+
+[[sec-plugins-minimap]]
+=== Minimap
+
+* https://github.com/wfxr/minimap.vim[minimap.vim] a blazing fast minimap plugin for neovim. Depends on code-minimap
+* https://github.com/gorbit99/codewindow.nvim[codewindow.nvim] a simple, configurable minimap plugin for neovim with no external dependencies
+
+[[sec-plugins-notifications]]
+=== Notifications
+
+* https://github.com/rcarriga/nvim-notify[nvim-notify] simple notification plugin that also integrates with noice.nvim
+
+[sec-plugins-notes]]
+=== Note-taking
+
+* https://github.com/obsidian.nvim[obsidian.nvim] a neovim plugin that deeply integrates with the obsidian markdown editor. Also works standalone
+* https://github.com/nvim-orgmode/orgmode[orgmode] a neovim replacement for emac orgmode
+
+[sec-plugins-session-management]]
+=== Session Management
+
+* https://github.com/Shatur/neovim-session-manager[neovim-session-manager] a simple wrapper around :mksession
+
+[sec-plugins-terminal]]
+=== Terminal
+
+* https://github.com/akinsho/toggleterm.nvim[toggleterm.nvim] a simple terminal plugin that opens a terminal buffer on demand
+
+[[sec-plugins-presence]]
+=== Rich Presence
+
+* https://github.com/andweeb/presence.nvim[presence.nvim] light and powerful discord rich presence plugin
[[sec-plugins-utilities]]
=== Utilities
* https://github.com/nvim-telescope/telescope.nvim[telescope] an extendable fuzzy finder of lists. Working ripgrep and fd
* https://github.com/folke/which-key.nvim[which-key] a popup that displays possible keybindings of command being typed
+* https://github.com/sudormrfbin/cheatsheet.nvim[cheatsheet.nvim] a searchable cheatsheet for neovim from within the editor using Telescope
+* https://github.com/ga-rosa/ccc.nvim[ccc.nvim] super powerful color picker / colorizer plugin.
+* https://github.com/ziontee113/icon-picker.nvim[icon-picker.nvim] an icon picker plugin that provides access to thousands of icons
+* https://github.com/jbyuki/venn.nvim[venn.nvim] draw venn diagrams inside neovim
-[[sec-plugins-completions]]
-=== Completions
+[[sec-plugins-utilities]]
+=== Utilities
-* https://github.com/hrsh7th/nvim-cmp[nvim-cmp] a completion engine that utilizes sources
-** https://github.com/hrsh7th/cmp-buffer[cmp-buffer] a source for buffer words
-** https://github.com/hrsh7th/cmp-nvim-lsp[cmp-nvim-lsp] a source for builtin LSP client
-** https://github.com/hrsh7th/cmp-vsnip[cmp-vsnip] a source for vim-vsnip autocomplete
-** https://github.com/hrsh7th/cmp-path[cmp-path] a source for path autocomplete
-** https://github.com/ray-x/cmp-treesitter[cmp-treesitter] treesitter nodes autcomplete
+* https://github.com/folke/noice.nvim[noice.nvim] an experimental neovim plugin that replaces some UI components of neovim
[[sec-plugins-snippets]]
=== Snippets
@@ -109,3 +174,7 @@ The following are the neovim plugins used within neovim-flake. Some plugins are
=== Dependencies
* https://github.com/nvim-lua/plenary.nvim[plenary] which is a dependency of some plugins, installed automatically if needed
+* https://github.comstevearc/dressing.nvim[dressing.nvim] which is a dependency for icon-picker.nvim
+* https://github.com/preservim/vim-markdown[vim-markdown] which is a dependency for obsidian.nvim
+* https://github.comgodlygeek/tabular[tabular] which is a dependency for vim-markdown
+* https://github.com/MunifTanjim/nui.nvim[nui.nvim] which is a dependency for nui-nvim
\ No newline at end of file
diff --git a/docs/release-notes/release-notes.adoc b/docs/release-notes/release-notes.adoc
index 0bac3ac..3a408b7 100644
--- a/docs/release-notes/release-notes.adoc
+++ b/docs/release-notes/release-notes.adoc
@@ -7,3 +7,4 @@ This section lists the release notes for tagged version of neovim-flake and curr
:leveloffset: 1
include::rl-0.1.adoc[]
+include::rl-0.2.adoc[]
diff --git a/docs/release-notes/rl-0.2.adoc b/docs/release-notes/rl-0.2.adoc
new file mode 100644
index 0000000..c1e86f2
--- /dev/null
+++ b/docs/release-notes/rl-0.2.adoc
@@ -0,0 +1,46 @@
+[[sec-release-0.2]]
+== Release 0.2
+
+Release notes for release 0.2
+
+
+[[sec-release-0.2-changelog]]
+=== Changelog
+
+https://github.com/notashelf[notashelf]:
+
+* Added two minimap plugins under `vim.minimap`. `codewindow.nvim` is enabled by default, while `minimap.vim` is available with its code-minimap dependency.
+
+* A complementary plugin, `obsidian.nvim` and the Neovim alternative for Emacs' orgmode with `orgmode.nvim` have been added. Both will be disabled by default.
+
+* Smooth scrolling for ANY movement command is now available with `cinnamon.nvim`
+
+* You will now notice a dashboard on startup. This is provided by the `alpha.nvim` plugin. You can use any of the three available dashboard plugins, or disable them entirely.
+
+* There is now a scrollbar on active buffers, which can highlight errors by hooking to your LSPs. This is on by default, but can be toggled off under `vim.visuals` if seen necessary.
+
+* Discord Rich Presence has been added through `presence.nvim` for those who want to flex that they are using the *superior* text editor.
+
+* An icon picker is now available with telescope integration. You can use `:IconPickerInsert` or `:IconPickerYank` to add icons to your code.
+
+* A general purpose cheatsheet has been added through `cheatsheet.nvim`. Forget no longer!
+
+* `ccc.nvim` has been added to the default plugins to allow picking colors with ease.
+
+* Most UI components of Neovim have been replaced through the help of `noice.nvim`. There are also notifications and custom UI elements available for Neovim messages and prompts.
+
+* A (floating by default) terminal has been added through `toggleterm.nvim`.
+
+* Harness the power of ethical (`tabnine.nvim`) and not-so-ethical (`copilot.lua`) AI by those new assistant plugins. Both are off by default, TabNine needs to be wrapped before it's working.
+
+* Experimental mouse gestures have been addede through `gesture.nvim`. See plugin page and the relevant module for more details on how to use.
+
+* Re-open last visited buffers via `nvim-session-manager`. Disabled by default as deleting buffers seems to be problematic at the moment.
+
+* Most of NvimTree's configuration options have been changed with some options being toggled to off by default.
+
+* Lualine had its configuration simplified and style toned down. Less color, more info.
+
+* Modules where multiple plugin configurations were in the same directory have been simplified. Each plugin inside a single module gets its own directory to be imported.
+
+* Separate config options with the same parent attribute have been merged into one for simplicity.
\ No newline at end of file
diff --git a/flake.lock b/flake.lock
index bbe41c0..0c74fd2 100644
--- a/flake.lock
+++ b/flake.lock
@@ -1,13 +1,29 @@
{
"nodes": {
+ "alpha-nvim": {
+ "flake": false,
+ "locked": {
+ "lastModified": 1669699262,
+ "narHash": "sha256-uKJRMbNyQtiFhkrsniK7SqxM+XS2l3qffeCqmYznPuk=",
+ "owner": "goolord",
+ "repo": "alpha-nvim",
+ "rev": "21a0f2520ad3a7c32c0822f943368dc063a569fb",
+ "type": "github"
+ },
+ "original": {
+ "owner": "goolord",
+ "repo": "alpha-nvim",
+ "type": "github"
+ }
+ },
"bufdelete-nvim": {
"flake": false,
"locked": {
- "lastModified": 1649744299,
- "narHash": "sha256-0Igk8iPt4UQQTJRBPzTASzNOqY4zlaMiE1PQiBc/KGc=",
+ "lastModified": 1670152487,
+ "narHash": "sha256-QRSGD0RJ0Jmee43ODr+d4JXEyMHo/UklpUyezGJqWyE=",
"owner": "famiu",
"repo": "bufdelete.nvim",
- "rev": "96454aedf95f52393a28cfcfc76482895de014ee",
+ "rev": "f79e9d186b42fba5f1b1362006e7c70240db97a4",
"type": "github"
},
"original": {
@@ -19,11 +35,11 @@
"catppuccin": {
"flake": false,
"locked": {
- "lastModified": 1670687538,
- "narHash": "sha256-BRQLNMYbOINJXQkKFz2SpXQoaynzcauWSwNfTChaLdc=",
+ "lastModified": 1675250216,
+ "narHash": "sha256-t7jVZoQwoLptfSo7WvA4DJe3mmqAk9R5nNcvldDSp8w=",
"owner": "catppuccin",
"repo": "nvim",
- "rev": "1d22da687d36c37133b13f2b41658c1c989e77e0",
+ "rev": "8769e767f12f5bf0b7d1250ee067088e7054809a",
"type": "github"
},
"original": {
@@ -32,14 +48,62 @@
"type": "github"
}
},
+ "cellular-automaton": {
+ "flake": false,
+ "locked": {
+ "lastModified": 1674679594,
+ "narHash": "sha256-h4KQCf8+GbxWSyZzDny07YFZm7j+aSSfm51lsaK0Ers=",
+ "owner": "Eandrju",
+ "repo": "cellular-automaton.nvim",
+ "rev": "679943b8e1e5ef79aaeeaf4b00782c52eb4e928f",
+ "type": "github"
+ },
+ "original": {
+ "owner": "Eandrju",
+ "repo": "cellular-automaton.nvim",
+ "type": "github"
+ }
+ },
+ "cheatsheet-nvim": {
+ "flake": false,
+ "locked": {
+ "lastModified": 1640255456,
+ "narHash": "sha256-TYkGB7cON2t4GwMaR9H1MDG2j3btBv2AR37ade8kqTY=",
+ "owner": "sudormrfbin",
+ "repo": "cheatsheet.nvim",
+ "rev": "9716f9aaa94dd1fd6ce59b5aae0e5f25e2a463ef",
+ "type": "github"
+ },
+ "original": {
+ "owner": "sudormrfbin",
+ "repo": "cheatsheet.nvim",
+ "type": "github"
+ }
+ },
+ "cinnamon-nvim": {
+ "flake": false,
+ "locked": {
+ "lastModified": 1670143364,
+ "narHash": "sha256-JglXQhoPgN9sQ3yuv0+VQxmKMvoQTu5lbGLSRaQkytI=",
+ "owner": "declancm",
+ "repo": "cinnamon.nvim",
+ "rev": "c406ffda3a0302f32c23b24ab756ea20467d6578",
+ "type": "github"
+ },
+ "original": {
+ "owner": "declancm",
+ "repo": "cinnamon.nvim",
+ "type": "github"
+ }
+ },
"cmp-buffer": {
"flake": false,
"locked": {
- "lastModified": 1645413199,
- "narHash": "sha256-itDEtoRvZn1mtLhT9WtqKVXoMRe5Qw0/QUf+TFzGNVk=",
+ "lastModified": 1660101488,
+ "narHash": "sha256-dG4U7MtnXThoa/PD+qFtCt76MQ14V1wX8GMYcvxEnbM=",
"owner": "hrsh7th",
"repo": "cmp-buffer",
- "rev": "d66c4c2d376e5be99db68d2362cd94d250987525",
+ "rev": "3022dbc9166796b644a841a02de8dd1cc1d311fa",
"type": "github"
},
"original": {
@@ -51,11 +115,11 @@
"cmp-nvim-lsp": {
"flake": false,
"locked": {
- "lastModified": 1665863036,
- "narHash": "sha256-4pppdlVJdn75/faaP3N+o7HgEHxyR1nvkHncnFXGDFA=",
+ "lastModified": 1668566979,
+ "narHash": "sha256-Mqkp8IH/laUx0cK7S0BjusTT+OtOOJOamZM4+93RHdU=",
"owner": "hrsh7th",
"repo": "cmp-nvim-lsp",
- "rev": "3cf38d9c957e95c397b66f91967758b31be4abe6",
+ "rev": "59224771f91b86d1de12570b4070fe4ad7cd1eeb",
"type": "github"
},
"original": {
@@ -67,11 +131,11 @@
"cmp-path": {
"flake": false,
"locked": {
- "lastModified": 1643823794,
- "narHash": "sha256-xYzTpqVKpBBnajqqRRzAXlHAC13VGK1D9mFr3bntepY=",
+ "lastModified": 1664784283,
+ "narHash": "sha256-thppiiV3wjIaZnAXmsh7j3DUc6ceSCvGzviwFUnoPaI=",
"owner": "hrsh7th",
"repo": "cmp-path",
- "rev": "466b6b8270f7ba89abd59f402c73f63c7331ff6e",
+ "rev": "91ff86cd9c29299a64f968ebb45846c485725f23",
"type": "github"
},
"original": {
@@ -83,11 +147,11 @@
"cmp-treesitter": {
"flake": false,
"locked": {
- "lastModified": 1650880862,
- "narHash": "sha256-ZQ2VSrXcUEcy+1lbdvK/pnz3Ppp1lDr38g/z7OvhH8o=",
+ "lastModified": 1666995820,
+ "narHash": "sha256-+dOqV9QqN+s1no8vfL6DNeFBc2dYyduQqAH5zVwm3Rw=",
"owner": "ray-x",
"repo": "cmp-treesitter",
- "rev": "c5187c31abd081ecef8b41e5eb476b7340442310",
+ "rev": "b40178b780d547bcf131c684bc5fd41af17d05f2",
"type": "github"
},
"original": {
@@ -99,11 +163,11 @@
"cmp-vsnip": {
"flake": false,
"locked": {
- "lastModified": 1636543683,
- "narHash": "sha256-7K3shsiGK7ISFXj9D9MPK7yRqIxeCrbj1IsggToWHO4=",
+ "lastModified": 1669100283,
+ "narHash": "sha256-2mkN03noOr5vBvRbSb35xZKorSH+8savQNZtgM9+QcM=",
"owner": "hrsh7th",
"repo": "cmp-vsnip",
- "rev": "0abfa1860f5e095a07c477da940cfcb0d273b700",
+ "rev": "989a8a73c44e926199bfd05fa7a516d51f2d2752",
"type": "github"
},
"original": {
@@ -112,14 +176,62 @@
"type": "github"
}
},
+ "codewindow-nvim": {
+ "flake": false,
+ "locked": {
+ "lastModified": 1674040274,
+ "narHash": "sha256-TBoMpFD5MQHZwv/6TxbMNrVp2m2ATw8hbD1mDzU4Nf8=",
+ "owner": "gorbit99",
+ "repo": "codewindow.nvim",
+ "rev": "94d84e1a15b94248f205b854e70cb95f0b615b38",
+ "type": "github"
+ },
+ "original": {
+ "owner": "gorbit99",
+ "repo": "codewindow.nvim",
+ "type": "github"
+ }
+ },
+ "colorizer": {
+ "flake": false,
+ "locked": {
+ "lastModified": 1674354831,
+ "narHash": "sha256-JbAjfoPUfLQ7ijRh8kank4iSZLOcxPJKt/uOTJap8/A=",
+ "owner": "uga-rosa",
+ "repo": "ccc.nvim",
+ "rev": "be0a8122fd77efb7b6a0d672bab10417e68fab8b",
+ "type": "github"
+ },
+ "original": {
+ "owner": "uga-rosa",
+ "repo": "ccc.nvim",
+ "type": "github"
+ }
+ },
+ "copilot-lua": {
+ "flake": false,
+ "locked": {
+ "lastModified": 1675346663,
+ "narHash": "sha256-+a286iUK7UijcbRLb8gXwmDFZAf1gYupS5f9EHB+dxU=",
+ "owner": "zbirenbaum",
+ "repo": "copilot.lua",
+ "rev": "a54e7b11a2c6efc9ddd3f42e56cf7d9eed1a9683",
+ "type": "github"
+ },
+ "original": {
+ "owner": "zbirenbaum",
+ "repo": "copilot.lua",
+ "type": "github"
+ }
+ },
"crates-nvim": {
"flake": false,
"locked": {
- "lastModified": 1668709750,
- "narHash": "sha256-MdmZrZu877P0l4yeJNI6muiYmwVlsvFHJCEBrrhR1Zc=",
+ "lastModified": 1675348132,
+ "narHash": "sha256-CMhqiIXoCamLh8pfmYQZsAYeoJO5SHe7jBdfOuD1W0c=",
"owner": "Saecki",
"repo": "crates.nvim",
- "rev": "e11e27864428a68b25e43b833e9081e350a38d96",
+ "rev": "1bca9122ddc4bf4c6573402bf6686fc084470a7e",
"type": "github"
},
"original": {
@@ -128,6 +240,22 @@
"type": "github"
}
},
+ "dashboard-nvim": {
+ "flake": false,
+ "locked": {
+ "lastModified": 1675564456,
+ "narHash": "sha256-KQ89wIEKIEetd6SDcNfui/hr3vRYGhh7W+XWPpB1Xc0=",
+ "owner": "glepnir",
+ "repo": "dashboard-nvim",
+ "rev": "97aaa208917f814f2e5799d5894ff791b4ab5059",
+ "type": "github"
+ },
+ "original": {
+ "owner": "glepnir",
+ "repo": "dashboard-nvim",
+ "type": "github"
+ }
+ },
"dirt-samples-src": {
"flake": false,
"locked": {
@@ -145,6 +273,38 @@
"type": "github"
}
},
+ "discord-nvim": {
+ "flake": false,
+ "locked": {
+ "lastModified": 1674984077,
+ "narHash": "sha256-ZpsunLsn//zYgUtmAm5FqKVueVd/Pa1r55ZDqxCimBk=",
+ "owner": "andweeb",
+ "repo": "presence.nvim",
+ "rev": "87c857a56b7703f976d3a5ef15967d80508df6e6",
+ "type": "github"
+ },
+ "original": {
+ "owner": "andweeb",
+ "repo": "presence.nvim",
+ "type": "github"
+ }
+ },
+ "dressing-nvim": {
+ "flake": false,
+ "locked": {
+ "lastModified": 1675626245,
+ "narHash": "sha256-tBO21/0rpil2lItFl9UzALXNJbvmSfQuW+LOGet9YgI=",
+ "owner": "stevearc",
+ "repo": "dressing.nvim",
+ "rev": "db716a0f1279f79a886c0e0b6ab3c3d5ffdb42fe",
+ "type": "github"
+ },
+ "original": {
+ "owner": "stevearc",
+ "repo": "dressing.nvim",
+ "type": "github"
+ }
+ },
"flake-utils": {
"locked": {
"lastModified": 1667395993,
@@ -160,14 +320,30 @@
"type": "github"
}
},
+ "gesture-nvim": {
+ "flake": false,
+ "locked": {
+ "lastModified": 1675384642,
+ "narHash": "sha256-HxVWZopV3wx6ANefuowrdbSQpQriYHV43r187t7UJXQ=",
+ "owner": "notomo",
+ "repo": "gesture.nvim",
+ "rev": "902a97219e126a08aea6016994c50eea485bcd79",
+ "type": "github"
+ },
+ "original": {
+ "owner": "notomo",
+ "repo": "gesture.nvim",
+ "type": "github"
+ }
+ },
"gitsigns-nvim": {
"flake": false,
"locked": {
- "lastModified": 1666700386,
- "narHash": "sha256-pSYXCENFw/z7xppenPehniX8+INkrl+l1LgKKGlfrjQ=",
+ "lastModified": 1675416322,
+ "narHash": "sha256-nxqs6nIQKyK6GzQihgBUY1/HggF/i5huz5VsUUu4fKE=",
"owner": "lewis6991",
"repo": "gitsigns.nvim",
- "rev": "851cd32caaea84f303c4fdf51d72dfa5fcd795bb",
+ "rev": "ec4742a7eebf68bec663041d359b95637242b5c3",
"type": "github"
},
"original": {
@@ -179,11 +355,11 @@
"glow-nvim": {
"flake": false,
"locked": {
- "lastModified": 1649861698,
- "narHash": "sha256-c2HrVLCyekw9b8FxxVMUkBkUitGDX1AyslmM1kZQeCQ=",
+ "lastModified": 1675023136,
+ "narHash": "sha256-80gtxODbPDxI7nlt0LpFfQBG8Q9amWm5pRqoJxMRrcQ=",
"owner": "ellisonleao",
"repo": "glow.nvim",
- "rev": "0c76518e440f2ea4dbadd87beec8eea4ce030f17",
+ "rev": "c87b1120b618577e64d910a7493a26829044a8a2",
"type": "github"
},
"original": {
@@ -192,14 +368,30 @@
"type": "github"
}
},
+ "icon-picker-nvim": {
+ "flake": false,
+ "locked": {
+ "lastModified": 1673847230,
+ "narHash": "sha256-vPFfpTrCO8AhBRm+1wEu3Uw28L39svfkAT9qgnJ9Zyg=",
+ "owner": "ziontee113",
+ "repo": "icon-picker.nvim",
+ "rev": "66d37ceae84099ca76235de44466829eb37118c2",
+ "type": "github"
+ },
+ "original": {
+ "owner": "ziontee113",
+ "repo": "icon-picker.nvim",
+ "type": "github"
+ }
+ },
"indent-blankline": {
"flake": false,
"locked": {
- "lastModified": 1649991995,
- "narHash": "sha256-pMVby6w7UTR2f1Nxp0ZPlV+KrdXNJ+jEQeQe30Pfs3M=",
+ "lastModified": 1674709281,
+ "narHash": "sha256-EZ5h4Gj942L9MaykWAprjLb/ZYr2JptQi16Ym5SyWfw=",
"owner": "lukas-reineke",
"repo": "indent-blankline.nvim",
- "rev": "045d9582094b27f5ae04d8b635c6da8e97e53f1d",
+ "rev": "8299fe7703dfff4b1752aeed271c3b95281a952d",
"type": "github"
},
"original": {
@@ -211,11 +403,11 @@
"kommentary": {
"flake": false,
"locked": {
- "lastModified": 1644888740,
- "narHash": "sha256-6YNKYMxaKi02TLa+ebt97XGREnmTjdJAA3bSHFC4yX0=",
+ "lastModified": 1672983049,
+ "narHash": "sha256-N4n5tjNB1yX/QxH+t5aG0VxNwZhUJejv0b5V62WEKDU=",
"owner": "b3nj5m1n",
"repo": "kommentary",
- "rev": "12ecde4ed3ecb39964000a5fd034ae4c1d307388",
+ "rev": "3a80117148c6798972bb69414423311ab151d368",
"type": "github"
},
"original": {
@@ -227,11 +419,11 @@
"lsp-signature": {
"flake": false,
"locked": {
- "lastModified": 1651382786,
- "narHash": "sha256-owtDWZXZZH6z0m5oHfm/QUjRoWKH4LY6UUOZq8JPckI=",
+ "lastModified": 1675379662,
+ "narHash": "sha256-g5bAumjFvA0MBPNKWqOxk5OsaR4KEe5CEsiNN5YbIQU=",
"owner": "ray-x",
"repo": "lsp_signature.nvim",
- "rev": "6d160406f948a810c40304224a1255c8bba5a415",
+ "rev": "6f6252f63b0baf0f2224c4caea33819a27f3f550",
"type": "github"
},
"original": {
@@ -243,11 +435,11 @@
"lspkind": {
"flake": false,
"locked": {
- "lastModified": 1650298271,
- "narHash": "sha256-0103K5lnzWCyuT/qwiBUo5PJ7lUX7fo+zNeEnQClI7A=",
+ "lastModified": 1663824370,
+ "narHash": "sha256-WwUQ+O2rIfD4yl0GFx70GsZc9nnhS7b2KWfNdaXCLmM=",
"owner": "onsails",
"repo": "lspkind-nvim",
- "rev": "57e5b5dfbe991151b07d272a06e365a77cc3d0e7",
+ "rev": "c68b3a003483cf382428a43035079f78474cd11e",
"type": "github"
},
"original": {
@@ -259,11 +451,11 @@
"lspsaga": {
"flake": false,
"locked": {
- "lastModified": 1647219889,
- "narHash": "sha256-utb2Rp6RdYWZzVt4W7B7RHOk4Xq1Lli4RcHxZLa8dHc=",
+ "lastModified": 1670360222,
+ "narHash": "sha256-7ENInq3LAPPTdm0Fb7klOc630j8m4LRj1kLZZFYLh68=",
"owner": "tami5",
"repo": "lspsaga.nvim",
- "rev": "5309d75bd90ce5b1708331df3af1e971fa83a2b9",
+ "rev": "5faeec9f2508d2d49a66c0ac0d191096b4e3fa81",
"type": "github"
},
"original": {
@@ -275,11 +467,11 @@
"lualine": {
"flake": false,
"locked": {
- "lastModified": 1651457787,
- "narHash": "sha256-TaRC7Pj9g0nD+kk7VrySulR20GolXtR/roUnA3FM144=",
+ "lastModified": 1673418538,
+ "narHash": "sha256-3I9og+/lVRFJSpDVFwp2AM5bMqeP1KF8XB8Nyfpwhok=",
"owner": "hoob3rt",
"repo": "lualine.nvim",
- "rev": "45d07fc026400c211337a7ce1cb90e7b7a397e31",
+ "rev": "0050b308552e45f7128f399886c86afefc3eb988",
"type": "github"
},
"original": {
@@ -288,6 +480,22 @@
"type": "github"
}
},
+ "minimap-vim": {
+ "flake": false,
+ "locked": {
+ "lastModified": 1666947112,
+ "narHash": "sha256-xKQfCh3R4MdHolRocZS0IC/OADZd8aVRQLlC0ErWSkc=",
+ "owner": "wfxr",
+ "repo": "minimap.vim",
+ "rev": "2b0151d7302f87f90c4664d119518dda73cc4633",
+ "type": "github"
+ },
+ "original": {
+ "owner": "wfxr",
+ "repo": "minimap.vim",
+ "type": "github"
+ }
+ },
"naersk": {
"inputs": {
"nixpkgs": [
@@ -320,11 +528,11 @@
"rust-overlay": "rust-overlay"
},
"locked": {
- "lastModified": 1669568240,
- "narHash": "sha256-xarHQnV7XCvioDxoAhOI+KsDzPNeWZ3F1OCPJVWS5S4=",
+ "lastModified": 1675471872,
+ "narHash": "sha256-HBW6qBF/niMbdFxTuucSnDda9H/RSbbOs48fcXXImx0=",
"owner": "oxalica",
"repo": "nil",
- "rev": "8f8a5d2cffb1a92b1b4b5001239ca9138675c3f4",
+ "rev": "1a15174958729ca578db517e735479ed5fb963db",
"type": "github"
},
"original": {
@@ -335,11 +543,11 @@
},
"nixpkgs": {
"locked": {
- "lastModified": 1669809720,
- "narHash": "sha256-RMT77f6CPOYtLLQ2esj+EJ1BPVWxf4RDidjrSvA5OhI=",
+ "lastModified": 1675584158,
+ "narHash": "sha256-SBkchaDzCHxnPNRDdtZ5ko5caHio9iS0Mbyn/xXbXxs=",
"owner": "nixos",
"repo": "nixpkgs",
- "rev": "227de2b3bbec142f912c09d5e8a1b4e778aa54fb",
+ "rev": "d840126a0890621e7b220894d749132dd4bde6a0",
"type": "github"
},
"original": {
@@ -384,11 +592,11 @@
"nmd": {
"flake": false,
"locked": {
- "lastModified": 1666190571,
- "narHash": "sha256-Z1hc7M9X6L+H83o9vOprijpzhTfOBjd0KmUTnpHAVjA=",
+ "lastModified": 1674431006,
+ "narHash": "sha256-CFKH2AiIH6vk0IQPrSa63+n2xZc2bIrEIUgnxd3Dg+w=",
"owner": "rycee",
"repo": "nmd",
- "rev": "b75d312b4f33bd3294cd8ae5c2ca8c6da2afc169",
+ "rev": "409f1310b168f96c6c8b556d24731a3e7c26c255",
"type": "gitlab"
},
"original": {
@@ -397,14 +605,46 @@
"type": "gitlab"
}
},
+ "noice-nvim": {
+ "flake": false,
+ "locked": {
+ "lastModified": 1675023568,
+ "narHash": "sha256-5C05en9c6tZW3/vNjgCfFQFRFq5U0NKg/LK5EeUHc1o=",
+ "owner": "folke",
+ "repo": "noice.nvim",
+ "rev": "34f7cf628666c6eb0c93fbe8a0490e977ac78b7b",
+ "type": "github"
+ },
+ "original": {
+ "owner": "folke",
+ "repo": "noice.nvim",
+ "type": "github"
+ }
+ },
+ "nui-nvim": {
+ "flake": false,
+ "locked": {
+ "lastModified": 1675269986,
+ "narHash": "sha256-4vf+eqT7e638VeWfmh23K8EslJXyR6ZK6arvaeVgWlw=",
+ "owner": "MunifTanjim",
+ "repo": "nui.nvim",
+ "rev": "d147222a1300901656f3ebd5b95f91732785a329",
+ "type": "github"
+ },
+ "original": {
+ "owner": "MunifTanjim",
+ "repo": "nui.nvim",
+ "type": "github"
+ }
+ },
"null-ls": {
"flake": false,
"locked": {
- "lastModified": 1669991088,
- "narHash": "sha256-DZgonVEzkgayvLY9jkEH1O/Xny6LQktyi8rTNbQlkMk=",
+ "lastModified": 1675398737,
+ "narHash": "sha256-IG66jvXizre17P2F3N9pWjmkQSP3jF+6lJeypNbSWUc=",
"owner": "jose-elias-alvarez",
"repo": "null-ls.nvim",
- "rev": "a67897283fdb0051ad5c72e840e1845e195b979b",
+ "rev": "8f5d730021497233c39d3adbf4b8043d4be163f8",
"type": "github"
},
"original": {
@@ -416,11 +656,11 @@
"nvim-autopairs": {
"flake": false,
"locked": {
- "lastModified": 1651184422,
- "narHash": "sha256-voiBJw752//W5oAGQ3wFl4XOUE5PGc/ddchXpWUfgFE=",
+ "lastModified": 1675089120,
+ "narHash": "sha256-wcNyOHhBkWVgbxIf4frKDKlMQEE9iMYWN78p+3rNJ+g=",
"owner": "windwp",
"repo": "nvim-autopairs",
- "rev": "63779ea99ed43ab22660ac6ae5b506a40bf41aeb",
+ "rev": "5a3523ddb573804752de6c021c5cb82e267b79ca",
"type": "github"
},
"original": {
@@ -449,11 +689,11 @@
"nvim-cmp": {
"flake": false,
"locked": {
- "lastModified": 1666412792,
- "narHash": "sha256-ErdM+ETpkgBtAvA/RedqN+DXvunQ4OYl58HpfZQkz/s=",
+ "lastModified": 1675440540,
+ "narHash": "sha256-BgI0dR7ss+pClGIu3EWXV7r5mMpo6Xt3QMVAxeWm++E=",
"owner": "hrsh7th",
"repo": "nvim-cmp",
- "rev": "cdb77665bbf23bd2717d424ddf4bf98057c30bb3",
+ "rev": "cfafe0a1ca8933f7b7968a287d39904156f2c57d",
"type": "github"
},
"original": {
@@ -465,11 +705,11 @@
"nvim-code-action-menu": {
"flake": false,
"locked": {
- "lastModified": 1647509555,
- "narHash": "sha256-fD9luuZe5mVkJTTtngH0jnwtqljhSZp0OFobBa4uqZI=",
+ "lastModified": 1671523188,
+ "narHash": "sha256-7szx+Me6WhrANbmfQ6C6gfSVB2owd02b3iZYhz7K6wY=",
"owner": "weilbith",
"repo": "nvim-code-action-menu",
- "rev": "a864a79c8e024d4f5d95915210188c9c3430b160",
+ "rev": "e4399dbaf6eabff998d3d5f1cbcd8d9933710027",
"type": "github"
},
"original": {
@@ -513,11 +753,11 @@
"nvim-lightbulb": {
"flake": false,
"locked": {
- "lastModified": 1645713830,
- "narHash": "sha256-LxGA2LX9CASodJnZYXGZfGPOeW38MW7z54gYQSDmhRE=",
+ "lastModified": 1661474119,
+ "narHash": "sha256-nw6H/dS4dHdrobnrfJVa8urWrMnbTWrA5bQJy9xbKXY=",
"owner": "kosayoda",
"repo": "nvim-lightbulb",
- "rev": "29ca81408119ba809d1f922edc941868af97ee86",
+ "rev": "56b9ce31ec9d09d560fe8787c0920f76bc208297",
"type": "github"
},
"original": {
@@ -529,11 +769,11 @@
"nvim-lspconfig": {
"flake": false,
"locked": {
- "lastModified": 1669809489,
- "narHash": "sha256-fMDR3sYmVu6cDSU8T75S/ppGYXo9+LPqseAd2n0HW6w=",
+ "lastModified": 1675639052,
+ "narHash": "sha256-B8IgpypxzCACZ5VcqM6KiWyClaN+KrmemtkwMznmj5Y=",
"owner": "neovim",
"repo": "nvim-lspconfig",
- "rev": "d346335af862ede0cece75739d789cfdc46c4454",
+ "rev": "255e07ce2a05627d482d2de77308bba51b90470c",
"type": "github"
},
"original": {
@@ -545,11 +785,11 @@
"nvim-neoclip": {
"flake": false,
"locked": {
- "lastModified": 1651221055,
- "narHash": "sha256-JO5tOk+Sv0YNjk1pHKfzXian7trFrEh/+iwH2ZxO0Ss=",
+ "lastModified": 1673910599,
+ "narHash": "sha256-Yi/6mODdS2Ote5/zumzcUzkhDbQ3m9jUvxT+jZ/+UqA=",
"owner": "AckslD",
"repo": "nvim-neoclip.lua",
- "rev": "f3ff1645de5d2fd46ac8ffe86e440b7f3ae1fd11",
+ "rev": "5b9286a40ea2020352280caeb713515badb03d99",
"type": "github"
},
"original": {
@@ -558,18 +798,50 @@
"type": "github"
}
},
- "nvim-tree-lua": {
+ "nvim-notify": {
"flake": false,
"locked": {
- "lastModified": 1662860472,
- "narHash": "sha256-3aB1xDU0cylHfZ5yzxMQKf07qrJ1pwHEl+QV42k0CpQ=",
- "owner": "kyazdani42",
- "repo": "nvim-tree.lua",
- "rev": "fb8735e96cecf004fbefb086ce85371d003c5129",
+ "lastModified": 1674034105,
+ "narHash": "sha256-zPSlenKjuZ8Xygu/KuU9+bSf5uUjSDK9HOTWnpUk1jo=",
+ "owner": "rcarriga",
+ "repo": "nvim-notify",
+ "rev": "bdd647f61a05c9b8a57c83b78341a0690e9c29d7",
"type": "github"
},
"original": {
- "owner": "kyazdani42",
+ "owner": "rcarriga",
+ "repo": "nvim-notify",
+ "type": "github"
+ }
+ },
+ "nvim-session-manager": {
+ "flake": false,
+ "locked": {
+ "lastModified": 1675414961,
+ "narHash": "sha256-dHFhZtBvU6sc6XR49oL3TW0sUwAOwLf4S5q+m8u76c8=",
+ "owner": "Shatur",
+ "repo": "neovim-session-manager",
+ "rev": "e7a2cbf56b5fd3a223f2774b535499fc62eca6ef",
+ "type": "github"
+ },
+ "original": {
+ "owner": "Shatur",
+ "repo": "neovim-session-manager",
+ "type": "github"
+ }
+ },
+ "nvim-tree-lua": {
+ "flake": false,
+ "locked": {
+ "lastModified": 1675639400,
+ "narHash": "sha256-d9c4T++6LnaqUsJAMmJGSLQYz+frjl7QhBJONJOvb2E=",
+ "owner": "nvim-tree",
+ "repo": "nvim-tree.lua",
+ "rev": "02fdc262eba188198a7deb2117b3b996e6763d65",
+ "type": "github"
+ },
+ "original": {
+ "owner": "nvim-tree",
"repo": "nvim-tree.lua",
"type": "github"
}
@@ -577,11 +849,11 @@
"nvim-treesitter-context": {
"flake": false,
"locked": {
- "lastModified": 1650876005,
- "narHash": "sha256-qsfPqC6wpvM/fvGBtfKY7CjdgjGa6JsyOrI7ZWC7jyM=",
+ "lastModified": 1652175020,
+ "narHash": "sha256-dYw/Y6+Eni7gTSjvCCl7E6ho8xSTxDYAwH3xGEhf54Q=",
"owner": "lewis6991",
"repo": "nvim-treesitter-context",
- "rev": "28fd8fea0d056333dcd3cd5abcb1256e3e526417",
+ "rev": "c931a3136a696c1827eda78ac678aea542115bd0",
"type": "github"
},
"original": {
@@ -593,11 +865,11 @@
"nvim-ts-autotag": {
"flake": false,
"locked": {
- "lastModified": 1650591994,
- "narHash": "sha256-YsqWrmsbp0NhCrnJQo8Df6yQr4f0shS6GdcEQaHdJDE=",
+ "lastModified": 1660219579,
+ "narHash": "sha256-ltGiYNXWpWSI5RrWTVR+k6SZjcZbsHtH5m9uHTMKnzM=",
"owner": "windwp",
"repo": "nvim-ts-autotag",
- "rev": "044a05c4c51051326900a53ba98fddacd15fea22",
+ "rev": "fdefe46c6807441460f11f11a167a2baf8e4534b",
"type": "github"
},
"original": {
@@ -609,11 +881,11 @@
"nvim-web-devicons": {
"flake": false,
"locked": {
- "lastModified": 1651408174,
- "narHash": "sha256-hYFDefTMcdtoQLhwUaamyGuid69kUo+95P1wjoS2dmo=",
+ "lastModified": 1675479859,
+ "narHash": "sha256-bbce2CpzCY8/Y6egWJWthZ9t1IkODCt+467S728vcKM=",
"owner": "kyazdani42",
"repo": "nvim-web-devicons",
- "rev": "bdd43421437f2ef037e0dafeaaaa62b31d35ef2f",
+ "rev": "2b96193abe4372e18e4f4533895a42a466d53c17",
"type": "github"
},
"original": {
@@ -622,14 +894,30 @@
"type": "github"
}
},
+ "obsidian-nvim": {
+ "flake": false,
+ "locked": {
+ "lastModified": 1675366609,
+ "narHash": "sha256-QUAic7yakCXNhYqeaxD+86dIAQzW/pJYN7Y69uDB3xk=",
+ "owner": "epwalsh",
+ "repo": "obsidian.nvim",
+ "rev": "30f45ae3ef78b67d9eae16adfbaaf86089bd8855",
+ "type": "github"
+ },
+ "original": {
+ "owner": "epwalsh",
+ "repo": "obsidian.nvim",
+ "type": "github"
+ }
+ },
"onedark": {
"flake": false,
"locked": {
- "lastModified": 1666430920,
- "narHash": "sha256-pacwQrYPRp2ZFe5ClVYQz2yFxiBmKZdqKQ/I2FdCRYM=",
+ "lastModified": 1674128456,
+ "narHash": "sha256-+0o32kO5lgvC2AIS7mPJ6eY/F7EWhdscZ/snkoy/TFc=",
"owner": "navarasu",
"repo": "onedark.nvim",
- "rev": "7aeca4713a922139b5e14c037b5faf34dc41c8d2",
+ "rev": "f0a70e0993acbb348c32a52a88058cc60c160992",
"type": "github"
},
"original": {
@@ -638,14 +926,30 @@
"type": "github"
}
},
+ "orgmode-nvim": {
+ "flake": false,
+ "locked": {
+ "lastModified": 1675278893,
+ "narHash": "sha256-augdRQCNMJe7Z4D8zjOYP/WjgLn2GHMc1QjVmuI17gY=",
+ "owner": "nvim-orgmode",
+ "repo": "orgmode",
+ "rev": "7ddbdc0741fdc90f73faa17fb332bc8700acadbf",
+ "type": "github"
+ },
+ "original": {
+ "owner": "nvim-orgmode",
+ "repo": "orgmode",
+ "type": "github"
+ }
+ },
"plenary-nvim": {
"flake": false,
"locked": {
- "lastModified": 1650205145,
- "narHash": "sha256-QKVFz95XaJrwkFaWqUHBirMFagellRn2YpNYnBeI/10=",
+ "lastModified": 1675102817,
+ "narHash": "sha256-XxyAeN+kt8Cvt8aklVXyjqS4QRaP/0RE6+tPdoGGxPc=",
"owner": "nvim-lua",
"repo": "plenary.nvim",
- "rev": "9069d14a120cadb4f6825f76821533f2babcab92",
+ "rev": "9a0d3bf7b832818c042aaf30f692b081ddd58bd9",
"type": "github"
},
"original": {
@@ -657,11 +961,11 @@
"registers": {
"flake": false,
"locked": {
- "lastModified": 1650186703,
- "narHash": "sha256-kqAcuO/tPO0GHBUwpwQYz7QJCyeTE93CbXnVFK7S8qU=",
+ "lastModified": 1671111037,
+ "narHash": "sha256-puQwsmi07lLgBDvo7lqHH+sr4ePzgrStD+4Zqya6VUg=",
"owner": "tversteeg",
"repo": "registers.nvim",
- "rev": "dfcf0962ce88b52e00dd96dfaabc9997a18f4efe",
+ "rev": "667ae447d2c7efb64461a2c58f5311d1248cdb5f",
"type": "github"
},
"original": {
@@ -692,26 +996,41 @@
},
"root": {
"inputs": {
+ "alpha-nvim": "alpha-nvim",
"bufdelete-nvim": "bufdelete-nvim",
"catppuccin": "catppuccin",
+ "cellular-automaton": "cellular-automaton",
+ "cheatsheet-nvim": "cheatsheet-nvim",
+ "cinnamon-nvim": "cinnamon-nvim",
"cmp-buffer": "cmp-buffer",
"cmp-nvim-lsp": "cmp-nvim-lsp",
"cmp-path": "cmp-path",
"cmp-treesitter": "cmp-treesitter",
"cmp-vsnip": "cmp-vsnip",
+ "codewindow-nvim": "codewindow-nvim",
+ "colorizer": "colorizer",
+ "copilot-lua": "copilot-lua",
"crates-nvim": "crates-nvim",
+ "dashboard-nvim": "dashboard-nvim",
+ "discord-nvim": "discord-nvim",
+ "dressing-nvim": "dressing-nvim",
"flake-utils": "flake-utils",
+ "gesture-nvim": "gesture-nvim",
"gitsigns-nvim": "gitsigns-nvim",
"glow-nvim": "glow-nvim",
+ "icon-picker-nvim": "icon-picker-nvim",
"indent-blankline": "indent-blankline",
"kommentary": "kommentary",
"lsp-signature": "lsp-signature",
"lspkind": "lspkind",
"lspsaga": "lspsaga",
"lualine": "lualine",
+ "minimap-vim": "minimap-vim",
"nil": "nil",
"nixpkgs": "nixpkgs",
"nmd": "nmd",
+ "noice-nvim": "noice-nvim",
+ "nui-nvim": "nui-nvim",
"null-ls": "null-ls",
"nvim-autopairs": "nvim-autopairs",
"nvim-bufferline-lua": "nvim-bufferline-lua",
@@ -722,21 +1041,32 @@
"nvim-lightbulb": "nvim-lightbulb",
"nvim-lspconfig": "nvim-lspconfig",
"nvim-neoclip": "nvim-neoclip",
+ "nvim-notify": "nvim-notify",
+ "nvim-session-manager": "nvim-session-manager",
"nvim-tree-lua": "nvim-tree-lua",
"nvim-treesitter-context": "nvim-treesitter-context",
"nvim-ts-autotag": "nvim-ts-autotag",
"nvim-web-devicons": "nvim-web-devicons",
+ "obsidian-nvim": "obsidian-nvim",
"onedark": "onedark",
+ "orgmode-nvim": "orgmode-nvim",
"plenary-nvim": "plenary-nvim",
"registers": "registers",
"rnix-lsp": "rnix-lsp",
"rust-tools": "rust-tools",
+ "scrollbar-nvim": "scrollbar-nvim",
"sqls-nvim": "sqls-nvim",
+ "tabnine-nvim": "tabnine-nvim",
+ "tabular": "tabular",
"telescope": "telescope",
"tidalcycles": "tidalcycles",
"todo-comments": "todo-comments",
+ "toggleterm-nvim": "toggleterm-nvim",
"tokyonight": "tokyonight",
"trouble": "trouble",
+ "venn-nvim": "venn-nvim",
+ "vim-markdown": "vim-markdown",
+ "vim-startify": "vim-startify",
"vim-vsnip": "vim-vsnip",
"which-key": "which-key"
}
@@ -753,11 +1083,11 @@
]
},
"locked": {
- "lastModified": 1669170936,
- "narHash": "sha256-TKPH4Pzkjw5gAPo9hejs3O4mWJW6V/RSiOj8UuSFRTs=",
+ "lastModified": 1675391458,
+ "narHash": "sha256-ukDKZw922BnK5ohL9LhwtaDAdCsJL7L6ScNEyF1lO9w=",
"owner": "oxalica",
"repo": "rust-overlay",
- "rev": "c90c223c4aef334356029b89c72bb65e26f7efe6",
+ "rev": "383a4acfd11d778d5c2efcf28376cbd845eeaedf",
"type": "github"
},
"original": {
@@ -769,11 +1099,11 @@
"rust-tools": {
"flake": false,
"locked": {
- "lastModified": 1673136837,
- "narHash": "sha256-+/kK6MU2EiSBFbfqQJwLkJICXZpf8oiShbcvsls3V8A=",
+ "lastModified": 1675562213,
+ "narHash": "sha256-SIVfaBTGil3gYa3VK1l8EXQqLILO2WbHBkOp+zQBSmo=",
"owner": "simrat39",
"repo": "rust-tools.nvim",
- "rev": "df584e84393ef255f5b8cbd709677d6a3a5bf42f",
+ "rev": "bd1aa99ffb911a1cf99b3fcf3b44c0391c57e3ef",
"type": "github"
},
"original": {
@@ -782,14 +1112,30 @@
"type": "github"
}
},
+ "scrollbar-nvim": {
+ "flake": false,
+ "locked": {
+ "lastModified": 1673562030,
+ "narHash": "sha256-OnVOmYhWMWH7a382DAIPEzJmz/J0BHniey7twyl500Q=",
+ "owner": "petertriho",
+ "repo": "nvim-scrollbar",
+ "rev": "6a2065fbcd032075a06d2ab54508b69842bc4496",
+ "type": "github"
+ },
+ "original": {
+ "owner": "petertriho",
+ "repo": "nvim-scrollbar",
+ "type": "github"
+ }
+ },
"sqls-nvim": {
"flake": false,
"locked": {
- "lastModified": 1651347942,
- "narHash": "sha256-ewCkqU5Kj1MQAjRRzOWalLcv/uOLEbtK1jFrySvZ8Y8=",
+ "lastModified": 1657291129,
+ "narHash": "sha256-tatUEAI8EVXDYQPAAZ5+38YOPWb8Ei9VHCzHp+AyRjc=",
"owner": "nanotee",
"repo": "sqls.nvim",
- "rev": "c52945aacf30247a3b82c586681c414dcd2359bd",
+ "rev": "a0048b7018c99b68456f91b4aa42ce288f0c0774",
"type": "github"
},
"original": {
@@ -815,14 +1161,46 @@
"type": "github"
}
},
+ "tabnine-nvim": {
+ "flake": false,
+ "locked": {
+ "lastModified": 1675586775,
+ "narHash": "sha256-7vd+moqQ5bA58VXlHSWXcJbI6ovp7z2Nf6Cn7cq08Ps=",
+ "owner": "codota",
+ "repo": "tabnine-nvim",
+ "rev": "85b3ad6df16ad09f8c486ec4c21defa75cebe22c",
+ "type": "github"
+ },
+ "original": {
+ "owner": "codota",
+ "repo": "tabnine-nvim",
+ "type": "github"
+ }
+ },
+ "tabular": {
+ "flake": false,
+ "locked": {
+ "lastModified": 1550598128,
+ "narHash": "sha256-irolBA/m3YIaezl+90h5G+xUOpad+3u44uJqDs4JCUs=",
+ "owner": "godlygeek",
+ "repo": "tabular",
+ "rev": "339091ac4dd1f17e225fe7d57b48aff55f99b23a",
+ "type": "github"
+ },
+ "original": {
+ "owner": "godlygeek",
+ "repo": "tabular",
+ "type": "github"
+ }
+ },
"telescope": {
"flake": false,
"locked": {
- "lastModified": 1651391210,
- "narHash": "sha256-aEY/4ra7qyaXQg3H++b0JUbF7G2nI4m5Ow9daZO/duE=",
+ "lastModified": 1675149856,
+ "narHash": "sha256-L4Kw94CUy6N7zcyy9INuR/O0fxQ7sp0IvGd/u7fHxMA=",
"owner": "nvim-telescope",
"repo": "telescope.nvim",
- "rev": "544c5ee40752ac5552595da86a62abaa39e2dfa9",
+ "rev": "203bf5609137600d73e8ed82703d6b0e320a5f36",
"type": "github"
},
"original": {
@@ -859,11 +1237,11 @@
"vowel-src": "vowel-src"
},
"locked": {
- "lastModified": 1661670241,
- "narHash": "sha256-+5C83z+Sd8ugvMshrXqpca4vv3tQ2D4tYEJ3QY6JVsg=",
+ "lastModified": 1664760044,
+ "narHash": "sha256-e5LGk/tDnphory1mYhADgPnVtShofY2w/3xY09jEE2A=",
"owner": "mitchmindtree",
"repo": "tidalcycles.nix",
- "rev": "fefe3d586511e1cfaac79bb83ec0b278bb1b6bad",
+ "rev": "3f3a820cd43709077d15a24fa6062de7d623a6bf",
"type": "github"
},
"original": {
@@ -875,11 +1253,11 @@
"todo-comments": {
"flake": false,
"locked": {
- "lastModified": 1642601933,
- "narHash": "sha256-8uj5TxO9XZlSCB4lVRbKRc1IlUEKcBf/4bDviwuxEgs=",
+ "lastModified": 1674503659,
+ "narHash": "sha256-2BV8ahB5iZmEh5N/JFqMdz4CqVXAIdmxE7rNC1+igsw=",
"owner": "folke",
"repo": "todo-comments.nvim",
- "rev": "98b1ebf198836bdc226c0562b9f906584e6c400e",
+ "rev": "74c7d28cb50b0713c881ef69bcb6cdd77d8907d1",
"type": "github"
},
"original": {
@@ -888,14 +1266,30 @@
"type": "github"
}
},
+ "toggleterm-nvim": {
+ "flake": false,
+ "locked": {
+ "lastModified": 1675358836,
+ "narHash": "sha256-9O7p/7tRStg51OFhMc88M5ewYquiYC9x9CV4s5veVP8=",
+ "owner": "akinsho",
+ "repo": "toggleterm.nvim",
+ "rev": "19aad0f41f47affbba1274f05e3c067e6d718e1e",
+ "type": "github"
+ },
+ "original": {
+ "owner": "akinsho",
+ "repo": "toggleterm.nvim",
+ "type": "github"
+ }
+ },
"tokyonight": {
"flake": false,
"locked": {
- "lastModified": 1666558747,
- "narHash": "sha256-hZufHQkI2M0I4mEqV9qs6PkL74aqScKJ3RA5QOulX+0=",
+ "lastModified": 1674503926,
+ "narHash": "sha256-sXILXqJYZW0KywQhtBqGr76VsHV+sBnBM+RCqXCjZ2A=",
"owner": "folke",
"repo": "tokyonight.nvim",
- "rev": "16a294bea92dc8f16ad205c71ce61bf05e79deb3",
+ "rev": "affb21a81e6d7de073378eb86d02864c594104d9",
"type": "github"
},
"original": {
@@ -907,11 +1301,11 @@
"trouble": {
"flake": false,
"locked": {
- "lastModified": 1647585739,
- "narHash": "sha256-oUf8YbJ9HmSLN8o2c7CXzCYPu7PwKzvVKNiM9HtHQbQ=",
+ "lastModified": 1674503479,
+ "narHash": "sha256-EdwQABmk7F7GJIB5lLcZtl1drMc0ASCXMbXoT/ywsK0=",
"owner": "folke",
"repo": "trouble.nvim",
- "rev": "691d490cc4eadc430d226fa7d77aaa84e2e0a125",
+ "rev": "490f7fe6d227f4f7a64f00be8c7dcd7a508ed271",
"type": "github"
},
"original": {
@@ -950,6 +1344,54 @@
"type": "github"
}
},
+ "venn-nvim": {
+ "flake": false,
+ "locked": {
+ "lastModified": 1669127905,
+ "narHash": "sha256-Ks5qUaI0MrhVC2AhVsReVwC/2WArXqIQ36CcCSCyzAk=",
+ "owner": "jbyuki",
+ "repo": "venn.nvim",
+ "rev": "c114563960b8fb1197695d42798d1f3e7190b798",
+ "type": "github"
+ },
+ "original": {
+ "owner": "jbyuki",
+ "repo": "venn.nvim",
+ "type": "github"
+ }
+ },
+ "vim-markdown": {
+ "flake": false,
+ "locked": {
+ "lastModified": 1669286150,
+ "narHash": "sha256-5q/s/ypZku4Iviq+eGip6hSWs0Ei3FrnX3IL3WV/FHw=",
+ "owner": "preservim",
+ "repo": "vim-markdown",
+ "rev": "df4be8626e2c5b2a42eb60e1f100fce469b81f7d",
+ "type": "github"
+ },
+ "original": {
+ "owner": "preservim",
+ "repo": "vim-markdown",
+ "type": "github"
+ }
+ },
+ "vim-startify": {
+ "flake": false,
+ "locked": {
+ "lastModified": 1620487920,
+ "narHash": "sha256-//3bzFTe1WKqvQ3uYrDbk5Zu5BKq2hXQGeBhmhKIHvk=",
+ "owner": "mhinz",
+ "repo": "vim-startify",
+ "rev": "81e36c352a8deea54df5ec1e2f4348685569bed2",
+ "type": "github"
+ },
+ "original": {
+ "owner": "mhinz",
+ "repo": "vim-startify",
+ "type": "github"
+ }
+ },
"vim-tidal-src": {
"flake": false,
"locked": {
@@ -961,8 +1403,8 @@
"type": "github"
},
"original": {
- "owner": "mitchmindtree",
- "ref": "mitchmindtree",
+ "owner": "tidalcycles",
+ "ref": "master",
"repo": "vim-tidal",
"type": "github"
}
@@ -970,11 +1412,11 @@
"vim-vsnip": {
"flake": false,
"locked": {
- "lastModified": 1650631622,
- "narHash": "sha256-USltEc6QGHwMqx7E9wo9qZmq+pm9FLj0CUcKoE7KPLU=",
+ "lastModified": 1671546474,
+ "narHash": "sha256-vFYn5fAM7AAuvTI5behiYM08sV2qQyV7zZ++jgpZfSc=",
"owner": "hrsh7th",
"repo": "vim-vsnip",
- "rev": "8f199ef690ed26dcbb8973d9a6760d1332449ac9",
+ "rev": "8dde8c0ef10bb1afdbb301e2bd7eb1c153dd558e",
"type": "github"
},
"original": {
@@ -1003,11 +1445,11 @@
"which-key": {
"flake": false,
"locked": {
- "lastModified": 1666956294,
- "narHash": "sha256-IbJP6j+M+POPhX4YbewTJiSoELvDo6y+vF0RREqqm4c=",
+ "lastModified": 1674503611,
+ "narHash": "sha256-A8fuY7HsfUOi9QNzWzCvaXQ2TvCNVcN2hpm5OWXYtU0=",
"owner": "folke",
"repo": "which-key.nvim",
- "rev": "61553aeb3d5ca8c11eea8be6eadf478062982ac9",
+ "rev": "684e96c5e8477f1ee9b3f2e9a12d802fd12c5531",
"type": "github"
},
"original": {
diff --git a/flake.nix b/flake.nix
index 1ed33b5..49fc1ec 100644
--- a/flake.nix
+++ b/flake.nix
@@ -1,232 +1,5 @@
{
- description = "Jordan's Neovim Configuration";
- inputs = {
- nixpkgs.url = "github:nixos/nixpkgs/nixpkgs-unstable";
- flake-utils.url = "github:numtide/flake-utils";
- # For generating documentation website
- nmd = {
- url = "gitlab:rycee/nmd";
- flake = false;
- };
-
- # LSP plugins
- nvim-lspconfig = {
- # url = "github:neovim/nvim-lspconfig?ref=v0.1.3";
- # Use master for nil_ls
- url = "github:neovim/nvim-lspconfig";
- flake = false;
- };
- lspsaga = {
- url = "github:tami5/lspsaga.nvim";
- flake = false;
- };
- lspkind = {
- url = "github:onsails/lspkind-nvim";
- flake = false;
- };
- trouble = {
- url = "github:folke/trouble.nvim";
- flake = false;
- };
- nvim-treesitter-context = {
- url = "github:lewis6991/nvim-treesitter-context";
- flake = false;
- };
- nvim-lightbulb = {
- url = "github:kosayoda/nvim-lightbulb";
- flake = false;
- };
-
- nvim-code-action-menu = {
- url = "github:weilbith/nvim-code-action-menu";
- flake = false;
- };
- lsp-signature = {
- url = "github:ray-x/lsp_signature.nvim";
- flake = false;
- };
- null-ls = {
- url = "github:jose-elias-alvarez/null-ls.nvim";
- flake = false;
- };
- sqls-nvim = {
- url = "github:nanotee/sqls.nvim";
- flake = false;
- };
- rust-tools = {
- url = "github:simrat39/rust-tools.nvim";
- flake = false;
- };
-
- # Copying/Registers
- registers = {
- url = "github:tversteeg/registers.nvim";
- flake = false;
- };
- nvim-neoclip = {
- url = "github:AckslD/nvim-neoclip.lua";
- flake = false;
- };
-
- # Telescope
- telescope = {
- url = "github:nvim-telescope/telescope.nvim";
- flake = false;
- };
-
- # Langauge server (use master instead of nixpkgs)
- rnix-lsp.url = "github:nix-community/rnix-lsp";
- nil = {
- url = "github:oxalica/nil";
- inputs.nixpkgs.follows = "nixpkgs";
- inputs.flake-utils.follows = "flake-utils";
- };
-
- # Filetrees
- nvim-tree-lua = {
- url = "github:kyazdani42/nvim-tree.lua";
- flake = false;
- };
-
- # Tablines
- nvim-bufferline-lua = {
- url = "github:akinsho/nvim-bufferline.lua?ref=v3.0.1";
- flake = false;
- };
-
- # Statuslines
- lualine = {
- url = "github:hoob3rt/lualine.nvim";
- flake = false;
- };
-
- # Autocompletes
- nvim-compe = {
- url = "github:hrsh7th/nvim-compe";
- flake = false;
- };
- nvim-cmp = {
- url = "github:hrsh7th/nvim-cmp";
- flake = false;
- };
- cmp-buffer = {
- url = "github:hrsh7th/cmp-buffer";
- flake = false;
- };
- cmp-nvim-lsp = {
- url = "github:hrsh7th/cmp-nvim-lsp";
- flake = false;
- };
- cmp-vsnip = {
- url = "github:hrsh7th/cmp-vsnip";
- flake = false;
- };
- cmp-path = {
- url = "github:hrsh7th/cmp-path";
- flake = false;
- };
- cmp-treesitter = {
- url = "github:ray-x/cmp-treesitter";
- flake = false;
- };
-
- # snippets
- vim-vsnip = {
- url = "github:hrsh7th/vim-vsnip";
- flake = false;
- };
-
- # Autopairs
- nvim-autopairs = {
- url = "github:windwp/nvim-autopairs";
- flake = false;
- };
- nvim-ts-autotag = {
- url = "github:windwp/nvim-ts-autotag";
- flake = false;
- };
-
- # Commenting
- kommentary = {
- url = "github:b3nj5m1n/kommentary";
- flake = false;
- };
- todo-comments = {
- url = "github:folke/todo-comments.nvim";
- flake = false;
- };
-
- # Buffer tools
- bufdelete-nvim = {
- url = "github:famiu/bufdelete.nvim";
- flake = false;
- };
-
- # Themes
- tokyonight = {
- url = "github:folke/tokyonight.nvim";
- flake = false;
- };
-
- onedark = {
- url = "github:navarasu/onedark.nvim";
- flake = false;
- };
-
- catppuccin = {
- url = "github:catppuccin/nvim";
- flake = false;
- };
-
- # Rust crates
- crates-nvim = {
- url = "github:Saecki/crates.nvim";
- flake = false;
- };
-
- # Visuals
- nvim-cursorline = {
- url = "github:yamatsum/nvim-cursorline";
- flake = false;
- };
- indent-blankline = {
- url = "github:lukas-reineke/indent-blankline.nvim";
- flake = false;
- };
- nvim-web-devicons = {
- url = "github:kyazdani42/nvim-web-devicons";
- flake = false;
- };
- gitsigns-nvim = {
- url = "github:lewis6991/gitsigns.nvim";
- flake = false;
- };
-
- # Key binding help
- which-key = {
- url = "github:folke/which-key.nvim";
- flake = false;
- };
-
- # Markdown
- glow-nvim = {
- url = "github:ellisonleao/glow.nvim";
- flake = false;
- };
-
- # Tidal cycles
- tidalcycles = {
- url = "github:mitchmindtree/tidalcycles.nix";
- inputs.vim-tidal-src.url = "github:tidalcycles/vim-tidal";
- };
-
- # Plenary (required by crates-nvim)
- plenary-nvim = {
- url = "github:nvim-lua/plenary.nvim";
- flake = false;
- };
- };
-
+ description = "A neovim flake with a modular configuration";
outputs = {
nixpkgs,
flake-utils,
@@ -264,8 +37,11 @@
mainConfig = isMaximal: {
config = {
- vim.viAlias = false;
- vim.vimAlias = true;
+ vim = {
+ viAlias = true;
+ vimAlias = true;
+ };
+
vim.lsp = {
enable = true;
formatOnSave = true;
@@ -274,10 +50,6 @@
nvimCodeActionMenu.enable = true;
trouble.enable = true;
lspSignature.enable = true;
- nix = {
- enable = true;
- formatter = "alejandra";
- };
rust.enable = isMaximal;
python = isMaximal;
clang.enable = isMaximal;
@@ -285,10 +57,18 @@
ts = isMaximal;
go = isMaximal;
zig.enable = isMaximal;
+ nix = {
+ enable = true;
+ formatter = "alejandra";
+ };
};
+
vim.visuals = {
enable = true;
nvimWebDevicons.enable = true;
+ scrollBar.enable = true;
+ smoothScroll.enable = true;
+ cellularAutomaton.enable = true;
lspkind.enable = true;
indentBlankline = {
enable = true;
@@ -301,41 +81,106 @@
lineTimeout = 0;
};
};
+
vim.statusline.lualine = {
enable = true;
theme = "catppuccin";
};
+
vim.theme = {
enable = true;
name = "catppuccin";
style = "mocha";
};
vim.autopairs.enable = true;
+
vim.autocomplete = {
enable = true;
type = "nvim-cmp";
};
- vim.filetree.nvimTreeLua.enable = true;
- vim.tabline.nvimBufferline.enable = true;
+
+ vim.filetree = {
+ nvimTreeLua = {
+ enable = true;
+ view = {
+ width = 25;
+ };
+ };
+ };
+
+ vim.tabline = {
+ nvimBufferline.enable = true;
+ };
+
vim.treesitter = {
enable = true;
context.enable = true;
};
- vim.keys = {
- enable = true;
+
+ vim.binds = {
whichKey.enable = true;
+ cheatsheet.enable = true;
};
+
vim.telescope = {
enable = true;
};
+
vim.markdown = {
enable = true;
glow.enable = true;
};
+
vim.git = {
enable = true;
gitsigns.enable = true;
};
+
+ vim.minimap = {
+ minimap-vim.enable = false;
+ codewindow.enable = true; # lighter, faster, and uses lua for configuration
+ };
+
+ vim.dashboard = {
+ dashboard-nvim.enable = false;
+ alpha.enable = true;
+ };
+
+ vim.notify = {
+ nvim-notify.enable = true;
+ };
+
+ vim.utility = {
+ colorizer.enable = true;
+ icon-picker.enable = true;
+ venn-nvim.enable = false; # FIXME throws an error when its commands are ran manually
+ };
+
+ vim.notes = {
+ obsidian.enable = false; # FIXME neovim fails to build if obsidian is enabled
+ orgmode.enable = true;
+ };
+
+ vim.terminal = {
+ toggleterm.enable = true;
+ };
+
+ vim.ui = {
+ noice.enable = true;
+ };
+
+ vim.assistant = {
+ copilot.enable = false;
+ tabnine.enable = false; # FIXME: this is not working because the plugin depends on an internal script to be ran by the package manager
+ };
+
+ vim.session = {
+ nvim-session-manager.enable = false;
+ };
+
+ vim.gestures = {
+ gesture-nvim.enable = false;
+ };
};
};
@@ -418,4 +263,377 @@
else {}
);
}));
+ inputs = {
+ nixpkgs.url = "github:nixos/nixpkgs/nixpkgs-unstable";
+ flake-utils.url = "github:numtide/flake-utils";
+
+ # For generating documentation website
+ nmd = {
+ url = "gitlab:rycee/nmd";
+ flake = false;
+ };
+
+ # LSP plugins
+ nvim-lspconfig = {
+ # url = "github:neovim/nvim-lspconfig?ref=v0.1.3";
+ # Use master for nil_ls
+ url = "github:neovim/nvim-lspconfig";
+ flake = false;
+ };
+ lspsaga = {
+ url = "github:tami5/lspsaga.nvim";
+ flake = false;
+ };
+ lspkind = {
+ url = "github:onsails/lspkind-nvim";
+ flake = false;
+ };
+ trouble = {
+ url = "github:folke/trouble.nvim";
+ flake = false;
+ };
+ nvim-treesitter-context = {
+ url = "github:lewis6991/nvim-treesitter-context";
+ flake = false;
+ };
+ nvim-lightbulb = {
+ url = "github:kosayoda/nvim-lightbulb";
+ flake = false;
+ };
+
+ nvim-code-action-menu = {
+ url = "github:weilbith/nvim-code-action-menu";
+ flake = false;
+ };
+ lsp-signature = {
+ url = "github:ray-x/lsp_signature.nvim";
+ flake = false;
+ };
+ null-ls = {
+ url = "github:jose-elias-alvarez/null-ls.nvim";
+ flake = false;
+ };
+ sqls-nvim = {
+ url = "github:nanotee/sqls.nvim";
+ flake = false;
+ };
+ rust-tools = {
+ url = "github:simrat39/rust-tools.nvim";
+ flake = false;
+ };
+
+ # Copying/Registers
+ registers = {
+ url = "github:tversteeg/registers.nvim";
+ flake = false;
+ };
+ nvim-neoclip = {
+ url = "github:AckslD/nvim-neoclip.lua";
+ flake = false;
+ };
+
+ # Telescope
+ telescope = {
+ url = "github:nvim-telescope/telescope.nvim";
+ flake = false;
+ };
+
+ # Langauge server (use master instead of nixpkgs)
+ rnix-lsp.url = "github:nix-community/rnix-lsp";
+ nil = {
+ url = "github:oxalica/nil";
+ inputs.nixpkgs.follows = "nixpkgs";
+ inputs.flake-utils.follows = "flake-utils";
+ };
+
+ # Filetrees
+ nvim-tree-lua = {
+ url = "github:nvim-tree/nvim-tree.lua";
+ flake = false;
+ };
+
+ # Tablines
+ nvim-bufferline-lua = {
+ url = "github:akinsho/nvim-bufferline.lua?ref=v3.0.1";
+ flake = false;
+ };
+
+ # Statuslines
+ lualine = {
+ url = "github:hoob3rt/lualine.nvim";
+ flake = false;
+ };
+
+ # Autocompletes
+ nvim-compe = {
+ url = "github:hrsh7th/nvim-compe";
+ flake = false;
+ };
+ nvim-cmp = {
+ url = "github:hrsh7th/nvim-cmp";
+ flake = false;
+ };
+ cmp-buffer = {
+ url = "github:hrsh7th/cmp-buffer";
+ flake = false;
+ };
+ cmp-nvim-lsp = {
+ url = "github:hrsh7th/cmp-nvim-lsp";
+ flake = false;
+ };
+ cmp-vsnip = {
+ url = "github:hrsh7th/cmp-vsnip";
+ flake = false;
+ };
+ cmp-path = {
+ url = "github:hrsh7th/cmp-path";
+ flake = false;
+ };
+ cmp-treesitter = {
+ url = "github:ray-x/cmp-treesitter";
+ flake = false;
+ };
+
+ # snippets
+ vim-vsnip = {
+ url = "github:hrsh7th/vim-vsnip";
+ flake = false;
+ };
+
+ # Presence
+ discord-nvim = {
+ url = "github:andweeb/presence.nvim";
+ flake = false;
+ };
+
+ # Autopairs
+ nvim-autopairs = {
+ url = "github:windwp/nvim-autopairs";
+ flake = false;
+ };
+ nvim-ts-autotag = {
+ url = "github:windwp/nvim-ts-autotag";
+ flake = false;
+ };
+
+ # Commenting
+ kommentary = {
+ url = "github:b3nj5m1n/kommentary";
+ flake = false;
+ };
+ todo-comments = {
+ url = "github:folke/todo-comments.nvim";
+ flake = false;
+ };
+
+ # Buffer tools
+ bufdelete-nvim = {
+ url = "github:famiu/bufdelete.nvim";
+ flake = false;
+ };
+
+ # Dashboard Utilities
+ dashboard-nvim = {
+ url = "github:glepnir/dashboard-nvim";
+ flake = false;
+ };
+
+ alpha-nvim = {
+ url = "github:goolord/alpha-nvim";
+ flake = false;
+ };
+
+ vim-startify = {
+ url = "github:mhinz/vim-startify";
+ flake = false;
+ };
+
+ # Themes
+ tokyonight = {
+ url = "github:folke/tokyonight.nvim";
+ flake = false;
+ };
+
+ onedark = {
+ url = "github:navarasu/onedark.nvim";
+ flake = false;
+ };
+
+ catppuccin = {
+ url = "github:catppuccin/nvim";
+ flake = false;
+ };
+
+ # Rust crates
+ crates-nvim = {
+ url = "github:Saecki/crates.nvim";
+ flake = false;
+ };
+
+ # Visuals
+ nvim-cursorline = {
+ url = "github:yamatsum/nvim-cursorline";
+ flake = false;
+ };
+
+ scrollbar-nvim = {
+ url = "github:petertriho/nvim-scrollbar";
+ flake = false;
+ };
+
+ cinnamon-nvim = {
+ url = "github:declancm/cinnamon.nvim";
+ flake = false;
+ };
+
+ cellular-automaton = {
+ url = "github:Eandrju/cellular-automaton.nvim";
+ flake = false;
+ };
+
+ indent-blankline = {
+ url = "github:lukas-reineke/indent-blankline.nvim";
+ flake = false;
+ };
+ nvim-web-devicons = {
+ url = "github:kyazdani42/nvim-web-devicons";
+ flake = false;
+ };
+ gitsigns-nvim = {
+ url = "github:lewis6991/gitsigns.nvim";
+ flake = false;
+ };
+
+ # Markdown
+ glow-nvim = {
+ url = "github:ellisonleao/glow.nvim";
+ flake = false;
+ };
+
+ # Tidal cycles
+ tidalcycles = {
+ url = "github:mitchmindtree/tidalcycles.nix";
+ inputs.vim-tidal-src.url = "github:tidalcycles/vim-tidal";
+ };
+
+ # Minimap
+ minimap-vim = {
+ url = "github:wfxr/minimap.vim";
+ flake = false;
+ };
+
+ codewindow-nvim = {
+ url = "github:gorbit99/codewindow.nvim";
+ flake = false;
+ };
+
+ # Notifications
+ nvim-notify = {
+ url = "github:rcarriga/nvim-notify";
+ flake = false;
+ };
+
+ # Utilities
+ colorizer = {
+ url = "github:uga-rosa/ccc.nvim";
+ flake = false;
+ };
+
+ venn-nvim = {
+ url = "github:jbyuki/venn.nvim";
+ flake = false;
+ };
+
+ icon-picker-nvim = {
+ url = "github:ziontee113/icon-picker.nvim";
+ flake = false;
+ };
+
+ which-key = {
+ url = "github:folke/which-key.nvim";
+ flake = false;
+ };
+
+ cheatsheet-nvim = {
+ url = "github:sudormrfbin/cheatsheet.nvim";
+ flake = false;
+ };
+
+ gesture-nvim = {
+ url = "github:notomo/gesture.nvim";
+ flake = false;
+ };
+
+ # Note-taking
+
+ obsidian-nvim = {
+ url = "github:epwalsh/obsidian.nvim";
+ flake = false;
+ };
+
+ orgmode-nvim = {
+ url = "github:nvim-orgmode/orgmode";
+ flake = false;
+ };
+
+ # Terminal
+ toggleterm-nvim = {
+ url = "github:akinsho/toggleterm.nvim";
+ flake = false;
+ };
+
+ # UI
+ noice-nvim = {
+ url = "github:folke/noice.nvim";
+ flake = false;
+ };
+
+ # Assistant
+ copilot-lua = {
+ url = "github:zbirenbaum/copilot.lua";
+ flake = false;
+ };
+
+ tabnine-nvim = {
+ url = "github:codota/tabnine-nvim";
+ flake = false;
+ };
+
+ # Session management
+ nvim-session-manager = {
+ url = "github:Shatur/neovim-session-manager";
+ flake = false;
+ };
+
+ # Dependencies
+ plenary-nvim = {
+ # (required by crates-nvim)
+ url = "github:nvim-lua/plenary.nvim";
+ flake = false;
+ };
+
+ dressing-nvim = {
+ # (required by icon-picker-nvim)
+ url = "github:stevearc/dressing.nvim";
+ flake = false;
+ };
+
+ vim-markdown = {
+ # (required by obsidian-nvim)
+ url = "github:preservim/vim-markdown";
+ flake = false;
+ };
+
+ tabular = {
+ # (required by vim-markdown)
+ url = "github:godlygeek/tabular";
+ flake = false;
+ };
+
+ nui-nvim = {
+ # (required by noice.nvim)
+ url = "github:MunifTanjim/nui.nvim";
+ flake = false;
+ };
+ };
}
diff --git a/modules/assistant/copilot.nix b/modules/assistant/copilot.nix
new file mode 100644
index 0000000..c6bb1ec
--- /dev/null
+++ b/modules/assistant/copilot.nix
@@ -0,0 +1,24 @@
+{
+ pkgs,
+ config,
+ lib,
+ ...
+}:
+with lib;
+with builtins; let
+ cfg = config.vim.assistant.copilot;
+in {
+ options.vim.assistant.copilot = {
+ enable = mkEnableOption "Enable GitHub Copilot";
+ };
+
+ config = mkIf cfg.enable {
+ vim.startPlugins = ["copilot-lua"];
+
+ vim.luaConfigRC.copilot = nvim.dag.entryAnywhere ''
+ require("copilot").setup({
+ -- available options: https://github.com/zbirenbaum/copilot.lua
+ })
+ '';
+ };
+}
diff --git a/modules/assistant/default.nix b/modules/assistant/default.nix
new file mode 100644
index 0000000..3ae3509
--- /dev/null
+++ b/modules/assistant/default.nix
@@ -0,0 +1,6 @@
+_: {
+ imports = [
+ ./copilot.nix
+ ./tabnine.nix
+ ];
+}
diff --git a/modules/assistant/tabnine.nix b/modules/assistant/tabnine.nix
new file mode 100644
index 0000000..bb8cecc
--- /dev/null
+++ b/modules/assistant/tabnine.nix
@@ -0,0 +1,28 @@
+{
+ pkgs,
+ config,
+ lib,
+ ...
+}:
+with lib;
+with builtins; let
+ cfg = config.vim.assistant.tabnine;
+in {
+ options.vim.assistant.tabnine = {
+ enable = mkEnableOption "Enable TabNine assistant";
+ };
+
+ config = mkIf cfg.enable {
+ vim.startPlugins = ["tabnine-nvim"];
+
+ vim.luaConfigRC.tabnine-nvim = nvim.dag.entryAnywhere ''
+ require('tabnine').setup({
+ disable_auto_comment=true,
+ accept_keymap="",
+ dismiss_keymap = "",
+ debounce_ms = 800,
+ execlude_filetypes = {"TelescopePrompt", "NvimTree", "alpha"}
+ })
+ '';
+ };
+}
diff --git a/modules/dashboard/alpha.nix b/modules/dashboard/alpha.nix
new file mode 100644
index 0000000..833ccdf
--- /dev/null
+++ b/modules/dashboard/alpha.nix
@@ -0,0 +1,222 @@
+{
+ pkgs,
+ config,
+ lib,
+ ...
+}:
+with lib;
+with builtins; let
+ cfg = config.vim.dashboard.alpha;
+in {
+ options.vim.dashboard.alpha = {
+ enable = mkEnableOption "alpha";
+ };
+
+ config = mkIf cfg.enable {
+ vim.startPlugins = [
+ "alpha-nvim"
+ ];
+
+ # the credit for this configuration goes to https://github.com/Rishabh672003
+ # good work, honestly
+ vim.luaConfigRC.alpha = nvim.dag.entryAnywhere ''
+ local alpha = require("alpha")
+ local plenary_path = require("plenary.path")
+ local dashboard = require("alpha.themes.dashboard")
+ local cdir = vim.fn.getcwd()
+ local if_nil = vim.F.if_nil
+
+ local nvim_web_devicons = {
+ enabled = true,
+ highlight = true,
+ }
+
+ local function get_extension(fn)
+ local match = fn:match("^.+(%..+)$")
+ local ext = ""
+ if match ~= nil then
+ ext = match:sub(2)
+ end
+ return ext
+ end
+
+ local function icon(fn)
+ local nwd = require("nvim-web-devicons")
+ local ext = get_extension(fn)
+ return nwd.get_icon(fn, ext, { default = true })
+ end
+
+ local function file_button(fn, sc, short_fn)
+ short_fn = short_fn or fn
+ local ico_txt
+ local fb_hl = {}
+
+ if nvim_web_devicons.enabled then
+ local ico, hl = icon(fn)
+ local hl_option_type = type(nvim_web_devicons.highlight)
+ if hl_option_type == "boolean" then
+ if hl and nvim_web_devicons.highlight then
+ table.insert(fb_hl, { hl, 0, 3 })
+ end
+ end
+ if hl_option_type == "string" then
+ table.insert(fb_hl, { nvim_web_devicons.highlight, 0, 3 })
+ end
+ ico_txt = ico .. " "
+ else
+ ico_txt = ""
+ end
+ local file_button_el = dashboard.button(sc, ico_txt .. short_fn, "e " .. fn .. " ")
+ local fn_start = short_fn:match(".*[/\\]")
+ if fn_start ~= nil then
+ table.insert(fb_hl, { "Comment", #ico_txt - 2, #fn_start + #ico_txt })
+ end
+ file_button_el.opts.hl = fb_hl
+ return file_button_el
+ end
+
+ local default_mru_ignore = { "gitcommit" }
+
+ local mru_opts = {
+ ignore = function(path, ext)
+ return (string.find(path, "COMMIT_EDITMSG")) or (vim.tbl_contains(default_mru_ignore, ext))
+ end,
+ }
+
+ --- @param start number
+ --- @param cwd string optional
+ --- @param items_number number optional number of items to generate, default = 10
+ local function mru(start, cwd, items_number, opts)
+ opts = opts or mru_opts
+ items_number = if_nil(items_number, 15)
+
+ local oldfiles = {}
+ for _, v in pairs(vim.v.oldfiles) do
+ if #oldfiles == items_number then
+ break
+ end
+ local cwd_cond
+ if not cwd then
+ cwd_cond = true
+ else
+ cwd_cond = vim.startswith(v, cwd)
+ end
+ local ignore = (opts.ignore and opts.ignore(v, get_extension(v))) or false
+ if (vim.fn.filereadable(v) == 1) and cwd_cond and not ignore then
+ oldfiles[#oldfiles + 1] = v
+ end
+ end
+ local target_width = 35
+
+ local tbl = {}
+ for i, fn in ipairs(oldfiles) do
+ local short_fn
+ if cwd then
+ short_fn = vim.fn.fnamemodify(fn, ":.")
+ else
+ short_fn = vim.fn.fnamemodify(fn, ":~")
+ end
+
+ if #short_fn > target_width then
+ short_fn = plenary_path.new(short_fn):shorten(1, { -2, -1 })
+ if #short_fn > target_width then
+ short_fn = plenary_path.new(short_fn):shorten(1, { -1 })
+ end
+ end
+
+ local shortcut = tostring(i + start - 1)
+
+ local file_button_el = file_button(fn, shortcut, short_fn)
+ tbl[i] = file_button_el
+ end
+ return {
+ type = "group",
+ val = tbl,
+ opts = {},
+ }
+ end
+
+ local default_header = {
+ type = "text",
+ val = {
+
+ [[███ ██ ███████ ██████ ██ ██ ██ ███ ███]],
+ [[████ ██ ██ ██ ██ ██ ██ ██ ████ ████]],
+ [[██ ██ ██ █████ ██ ██ ██ ██ ██ ██ ████ ██]],
+ [[██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██]],
+ [[██ ████ ███████ ██████ ████ ██ ██ ██]],
+
+ -- [[ __ ]],
+ -- [[ ___ ___ ___ __ __ /\_\ ___ ___ ]],
+ -- [[ / _ `\ / __`\ / __`\/\ \/\ \\/\ \ / __` __`\ ]],
+ -- [[/\ \/\ \/\ __//\ \_\ \ \ \_/ |\ \ \/\ \/\ \/\ \ ]],
+ -- [[\ \_\ \_\ \____\ \____/\ \___/ \ \_\ \_\ \_\ \_\]],
+ -- [[ \/_/\/_/\/____/\/___/ \/__/ \/_/\/_/\/_/\/_/]],
+ },
+ opts = {
+ position = "center",
+ hl = "Type",
+ -- wrap = "overflow";
+ },
+ }
+
+ local section_mru = {
+ type = "group",
+ val = {
+ {
+ type = "text",
+ val = "Recent files",
+ opts = {
+ hl = "SpecialComment",
+ shrink_margin = false,
+ position = "center",
+ },
+ },
+ { type = "padding", val = 1 },
+ {
+ type = "group",
+ val = function()
+ return { mru(0, cdir) }
+ end,
+ opts = { shrink_margin = false },
+ },
+ },
+ }
+
+ local buttons = {
+ type = "group",
+ val = {
+ { type = "text", val = "Quick links", opts = { hl = "SpecialComment", position = "center" } },
+ { type = "padding", val = 1 },
+ dashboard.button("e", " New file", "ene"),
+ dashboard.button("SPC F", " Find file"),
+ dashboard.button("SPC ff", " Live grep"),
+ dashboard.button("SPC p", " Projects"),
+ dashboard.button("q", " Quit", "qa"),
+ },
+ position = "center",
+ }
+
+ local config = {
+ layout = {
+ { type = "padding", val = 2 },
+ default_header,
+ { type = "padding", val = 2 },
+ section_mru,
+ { type = "padding", val = 2 },
+ buttons,
+ },
+ opts = {
+ margin = 5,
+ setup = function()
+ vim.cmd([[
+ autocmd alpha_temp DirChanged * lua require('alpha').redraw()
+ ]])
+ end,
+ },
+ }
+
+ alpha.setup(config)
+ '';
+ };
+}
diff --git a/modules/dashboard/dashboard-nvim.nix b/modules/dashboard/dashboard-nvim.nix
new file mode 100644
index 0000000..de7d2d6
--- /dev/null
+++ b/modules/dashboard/dashboard-nvim.nix
@@ -0,0 +1,25 @@
+{
+ pkgs,
+ config,
+ lib,
+ ...
+}:
+with lib;
+with builtins; let
+ cfg = config.vim.dashboard.dashboard-nvim;
+in {
+ options.vim.dashboard.dashboard-nvim = {
+ enable = mkEnableOption "dashboard-nvim";
+ };
+
+ config = mkIf cfg.enable {
+ vim.startPlugins = [
+ "dashboard-nvim"
+ ];
+
+ vim.luaConfigRC.dashboard-nvim = nvim.dag.entryAnywhere ''
+ require("dashboard").setup{
+ }
+ '';
+ };
+}
diff --git a/modules/dashboard/default.nix b/modules/dashboard/default.nix
new file mode 100644
index 0000000..bdee0db
--- /dev/null
+++ b/modules/dashboard/default.nix
@@ -0,0 +1,12 @@
+{
+ pkgs,
+ config,
+ lib,
+ ...
+}: {
+ imports = [
+ ./alpha.nix
+ ./dashboard-nvim.nix
+ ./startify.nix
+ ];
+}
diff --git a/modules/dashboard/startify.nix b/modules/dashboard/startify.nix
new file mode 100644
index 0000000..a5fb405
--- /dev/null
+++ b/modules/dashboard/startify.nix
@@ -0,0 +1,236 @@
+{
+ pkgs,
+ config,
+ lib,
+ ...
+}:
+with builtins;
+with lib; let
+ cfg = config.vim.dashboard.startify;
+
+ mkVimBool = val:
+ if val
+ then "1"
+ else "0";
+in {
+ options.vim.dashboard.startify = {
+ enable = mkEnableOption "Enable startify";
+
+ bookmarks = mkOption {
+ default = [];
+ description = ''List of book marks to disaply on start page'';
+ type = with types; listOf attrs;
+ example = {"c" = "~/.vimrc";};
+ };
+
+ changeToDir = mkOption {
+ default = true;
+ description = "Should vim change to the directory of the file you open";
+ type = types.bool;
+ };
+
+ changeToVCRoot = mkOption {
+ default = false;
+ description = "Should vim change to the version control root when opening a file";
+ type = types.bool;
+ };
+
+ changeDirCmd = mkOption {
+ default = "lcd";
+ description = "Command to change the current window with. Can be cd, lcd or tcd";
+ type = types.enum ["cd" "lcd" "tcd"];
+ };
+
+ customHeader = mkOption {
+ default = [];
+ description = "Text to place in the header";
+ type = with types; listOf str;
+ };
+
+ customFooter = mkOption {
+ default = [];
+ description = "Text to place in the footer";
+ type = with types; listOf str;
+ };
+
+ lists = mkOption {
+ default = [
+ {
+ type = "files";
+ header = ["MRU"];
+ }
+ {
+ type = "dir";
+ header = ["MRU Current Directory"];
+ }
+ {
+ type = "sessions";
+ header = ["Sessions"];
+ }
+ {
+ type = "bookmarks";
+ header = ["Bookmarks"];
+ }
+ {
+ type = "commands";
+ header = ["Commands"];
+ }
+ ];
+ description = "Specify the lists and in what order they are displayed on startify.";
+ type = with types; listOf attrs;
+ };
+
+ skipList = mkOption {
+ default = [];
+ description = "List of regex patterns to exclude from MRU lists";
+ type = with types; listOf str;
+ };
+
+ updateOldFiles = mkOption {
+ default = false;
+ description = "Set if you want startify to always update and not just when neovim closes";
+ type = types.bool;
+ };
+
+ sessionAutoload = mkOption {
+ default = false;
+ description = "Make startify auto load Session.vim files from the current directory";
+ type = types.bool;
+ };
+
+ commands = mkOption {
+ default = [];
+ description = "Commands that are presented to the user on startify page";
+ type = with types; listOf (oneOf [str attrs (listOf str)]);
+ };
+
+ filesNumber = mkOption {
+ default = 10;
+ description = "How many files to list";
+ type = types.int;
+ };
+
+ customIndices = mkOption {
+ default = [];
+ description = "Specify a list of default charecters to use instead of numbers";
+ type = with types; listOf str;
+ };
+
+ disableOnStartup = mkOption {
+ default = false;
+ description = "Prevent startify from opening on startup but can be called with :Startify";
+ type = types.bool;
+ };
+
+ unsafe = mkOption {
+ default = false;
+ description = "Turns on unsafe mode for Startify. Stops resolving links, checking files are readable and filtering bookmark list";
+ type = types.bool;
+ };
+
+ paddingLeft = mkOption {
+ default = 3;
+ description = "Number of spaces used for left padding.";
+ type = types.int;
+ };
+
+ useEnv = mkOption {
+ default = false;
+ description = "Show environment variables in path if name is shorter than value";
+ type = types.bool;
+ };
+
+ sessionBeforeSave = mkOption {
+ default = [];
+ description = "Commands to run before saving a session";
+ type = with types; listOf str;
+ };
+
+ sessionPersistence = mkOption {
+ default = false;
+ description = "Persist session before leaving vim or switching session";
+ type = types.bool;
+ };
+
+ sessionDeleteBuffers = mkOption {
+ default = true;
+ description = "Delete all buffers when loading or closing a session";
+ type = types.bool;
+ };
+
+ sessionDir = mkOption {
+ default = "~/.vim/session";
+ description = "Directory to save and load sessions from";
+ type = types.str;
+ };
+
+ skipListServer = mkOption {
+ default = [];
+ description = "List of vim servers to not load startify for";
+ type = with types; listOf str;
+ };
+
+ sessionRemoveLines = mkOption {
+ default = [];
+ description = "Patterns to remove from session files";
+ type = with types; listOf str;
+ };
+
+ sessionSavevars = mkOption {
+ default = [];
+ description = "List of variables to save into a session file.";
+ type = with types; listOf str;
+ };
+
+ sessionSavecmds = mkOption {
+ default = [];
+ description = "List of commands to run when loading a session.";
+ type = with types; listOf str;
+ };
+
+ sessionSort = mkOption {
+ default = false;
+ description = "Set if you want items sorted by date rather than alphabetically";
+ type = types.bool;
+ };
+ };
+
+ config = mkIf (cfg.enable) {
+ vim.startPlugins = with pkgs.neovimPlugins; [vim-startify];
+
+ vim.globals = {
+ "startify_custom_header" =
+ if cfg.customHeader == []
+ then null
+ else cfg.customHeader;
+ "startify_custom_footer" =
+ if cfg.customFooter == []
+ then null
+ else cfg.customFooter;
+ "startify_bookmarks" = cfg.bookmarks;
+ "startify_lists" = cfg.lists;
+ "startify_change_to_dir" = mkVimBool cfg.changeToDir;
+ "startify_change_to_vcs_root" = mkVimBool cfg.changeToVCRoot;
+ "startify_change_cmd" = cfg.changeDirCmd;
+ "startify_skiplist" = cfg.skipList;
+ "startify_update_oldfiles" = mkVimBool cfg.updateOldFiles;
+ "startify_session_autoload" = mkVimBool cfg.sessionAutoload;
+ "startify_commands" = cfg.commands;
+ "startify_files_number" = cfg.filesNumber;
+ "startify_custom_indices" = cfg.customIndices;
+ "startify_disable_at_vimenter" = mkVimBool cfg.disableOnStartup;
+ "startify_enable_unsafe" = mkVimBool cfg.unsafe;
+ "startify_padding_left" = cfg.paddingLeft;
+ "startify_use_env" = mkVimBool cfg.useEnv;
+ "startify_session_before_save" = cfg.sessionBeforeSave;
+ "startify_session_persistence" = mkVimBool cfg.sessionPersistence;
+ "startify_session_delete_buffers" = mkVimBool cfg.sessionDeleteBuffers;
+ "startify_session_dir" = cfg.sessionDir;
+ "startify_skiplist_server" = cfg.skipListServer;
+ "startify_session_remove_lines" = cfg.sessionRemoveLines;
+ "startify_session_savevars" = cfg.sessionSavevars;
+ "startify_session_savecmds" = cfg.sessionSavecmds;
+ "startify_session_sort" = mkVimBool cfg.sessionSort;
+ };
+ };
+}
diff --git a/modules/filetree/nvimtreelua.nix b/modules/filetree/nvimtreelua.nix
index cb6f9bf..2aa0792 100644
--- a/modules/filetree/nvimtreelua.nix
+++ b/modules/filetree/nvimtreelua.nix
@@ -57,18 +57,6 @@ in {
type = with types; listOf str;
};
- closeOnFileOpen = mkOption {
- default = false;
- description = "Closes the tree when a file is opened.";
- type = types.bool;
- };
-
- resizeOnFileOpen = mkOption {
- default = false;
- description = "Resizes the tree when opening a file.";
- type = types.bool;
- };
-
followBufferFile = mkOption {
default = true;
description = "Follow file that is in current buffer on tree";
@@ -128,6 +116,266 @@ in {
description = "The command used to open a file with the associated default program";
type = types.str;
};
+
+ updateCwd = mkOption {
+ # updateCwd has been deprecated in favor of syncRootWithCwd
+ # this option is kept for backwards compatibility
+ default = true;
+ description = "Updates the tree when changing nvim's directory (DirChanged event).";
+ type = types.bool;
+ };
+
+ ignore_ft_on_setup = mkOption {
+ default = [];
+ description = "Ignore file types on setup";
+ type = with types; listOf str;
+ };
+
+ hijackCursor = mkOption {
+ default = true;
+ description = "Hijack the cursor in the tree to put it at the start of the filename";
+ type = types.bool;
+ };
+
+ hijackUnnamedBufferWhenOpening = mkOption {
+ default = false;
+ description = "Open nvimtree in place of the unnamed buffer if it's empty.";
+ type = types.bool;
+ };
+
+ syncRootWithCwd = mkOption {
+ default = true;
+ description = "Changes the tree root directory on `DirChanged` and refreshes the tree";
+ type = types.bool;
+ };
+
+ updateFocusedFile = mkOption {
+ default = {
+ enable = true;
+ update_cwd = true;
+ };
+ description = "Updates the tree when changing nvim's directory (DirChanged event).";
+ type = with types; attrsOf (either bool (attrsOf bool));
+ };
+
+ view = {
+ adaptiveSize = mkOption {
+ default = true;
+ description = "Resize the tree when the window is resized";
+ type = types.bool;
+ };
+ side = mkOption {
+ default = "left";
+ description = "Side the tree will appear on left or right";
+ type = types.enum ["left" "right"];
+ };
+ width = mkOption {
+ default = 35;
+ description = "Width of the tree in charecters";
+ type = types.int;
+ };
+
+ hideRootFolder = mkOption {
+ default = false;
+ description = "Hide the root folder";
+ type = types.bool;
+ };
+ };
+
+ git = {
+ enable = mkEnableOption "Git integration";
+ ignore = mkOption {
+ default = true;
+ description = "Ignore files in git";
+ type = types.bool;
+ };
+ };
+
+ filesystemWatchers = {
+ enable = mkOption {
+ default = true;
+ description = "Enable filesystem watchers";
+ type = types.bool;
+ };
+ };
+
+ actions = {
+ openFile = {
+ resizeWindow = mkOption {
+ default = true;
+ description = "Resize the tree when opening a file";
+ type = types.bool;
+ };
+ quitOnOpen = mkOption {
+ default = false;
+ description = "Quit the tree when opening a file";
+ type = types.bool;
+ };
+ };
+ };
+
+ renderer = {
+ higlightGit = mkOption {
+ default = false;
+ description = "Highlight git related files";
+ type = types.bool;
+ };
+
+ highlightOpenedFiles = mkOption {
+ default = "none";
+ description = "Highlight opened files";
+ type = types.enum ["none" "icon" "name" "all"];
+ };
+
+ indentMarkers = mkOption {
+ default = false;
+ description = "Show indent markers";
+ type = types.bool;
+ };
+
+ showHiddenFiles = mkOption {
+ default = true;
+ description = "Show hidden files";
+ type = types.bool;
+ };
+
+ trailingSlash = mkOption {
+ default = false;
+ description = "Add a trailing slash to all folders";
+ type = types.bool;
+ };
+
+ showParentFolder = mkOption {
+ default = false;
+ description = "Show parent folder";
+ type = types.bool;
+ };
+
+ groupEmptyFolders = mkOption {
+ default = false;
+ description = "Compact empty folders trees into a single item";
+ type = types.bool;
+ };
+
+ icons = {
+ show = {
+ file = mkOption {
+ default = true;
+ description = "Show file icons";
+ type = types.bool;
+ };
+ folder = mkOption {
+ default = true;
+ description = "Show folder icons";
+ type = types.bool;
+ };
+ folderArrow = mkOption {
+ default = true;
+ description = "Show folder arrow icons";
+ type = types.bool;
+ };
+ git = mkOption {
+ default = false;
+ description = "Show git icons";
+ type = types.bool;
+ };
+ };
+
+ glyphs = {
+ default = mkOption {
+ default = "";
+ description = "Default icon";
+ type = types.str;
+ };
+ symlink = mkOption {
+ default = "";
+ description = "Symlink icon";
+ type = types.str;
+ };
+
+ folder = {
+ default = mkOption {
+ default = "";
+ description = "Default folder icon";
+ type = types.str;
+ };
+ open = mkOption {
+ default = "";
+ description = "Open folder icon";
+ type = types.str;
+ };
+ empty = mkOption {
+ default = "";
+ description = "Empty folder icon";
+ type = types.str;
+ };
+ emptyOpen = mkOption {
+ default = "";
+ description = "Empty open folder icon";
+ type = types.str;
+ };
+ symlink = mkOption {
+ default = "";
+ description = "Symlink folder icon";
+ type = types.str;
+ };
+ symlinkOpen = mkOption {
+ default = "";
+ description = "Symlink open folder icon";
+ type = types.str;
+ };
+ arrowOpen = mkOption {
+ default = "";
+ description = "Open folder arrow icon";
+ type = types.str;
+ };
+ arrowClosed = mkOption {
+ default = "";
+ description = "Closed folder arrow icon";
+ type = types.str;
+ };
+ };
+
+ git = {
+ unstaged = mkOption {
+ default = "✗";
+ description = "Unstaged git icon";
+ type = types.str;
+ };
+ staged = mkOption {
+ default = "✓";
+ description = "Staged git icon";
+ type = types.str;
+ };
+ unmerged = mkOption {
+ default = "";
+ description = "Unmerged git icon";
+ type = types.str;
+ };
+ renamed = mkOption {
+ default = "➜";
+ description = "Renamed git icon";
+ type = types.str;
+ };
+ untracked = mkOption {
+ default = "★";
+ description = "Untracked git icon";
+ type = types.str;
+ };
+ deleted = mkOption {
+ default = "";
+ description = "Deleted git icon";
+ type = types.str;
+ };
+ ignored = mkOption {
+ default = "◌";
+ description = "Ignored git icon";
+ type = types.str;
+ };
+ };
+ };
+ };
+ };
};
config = mkIf cfg.enable {
@@ -144,36 +392,57 @@ in {
require'nvim-tree'.setup({
disable_netrw = ${boolToString cfg.disableNetRW},
hijack_netrw = ${boolToString cfg.hijackNetRW},
+ hijack_cursor = ${boolToString cfg.hijackCursor},
open_on_tab = ${boolToString cfg.openTreeOnNewTab},
- open_on_setup = ${boolToString cfg.openOnSetup},
- open_on_setup_file = ${boolToString cfg.openOnSetup},
+ -- FIXME: Open on startup has been deprecated
+ -- needs an alternative, see https://github.com/nvim-tree/nvim-tree.lua/wiki/Open-At-Startup3
+ -- open_on_setup = ${boolToString cfg.openOnSetup},
+ -- open_on_setup_file = ${boolToString cfg.openOnSetup},
+ sync_root_with_cwd = ${boolToString cfg.syncRootWithCwd},
+ update_focused_file = {
+ enable = ${boolToString cfg.updateFocusedFile.enable},
+ update_cwd = ${boolToString cfg.updateFocusedFile.update_cwd},
+ },
+
+ view = {
+ width = ${toString cfg.view.width},
+ side = ${"'" + cfg.view.side + "'"},
+ adaptive_size = ${boolToString cfg.view.adaptiveSize},
+ hide_root_folder = ${boolToString cfg.view.hideRootFolder},
+ },
+ git = {
+ enable = ${boolToString cfg.git.enable},
+ ignore = ${boolToString cfg.git.ignore},
+ },
+
+ filesystem_watchers = {
+ enable = ${boolToString cfg.filesystemWatchers.enable},
+ },
+
+ actions = {
+ open_file = {
+ quit_on_open = ${boolToString cfg.actions.openFile.quitOnOpen},
+ resize_window = ${boolToString cfg.actions.openFile.resizeWindow},
+ },
+ },
+
+ renderer = {
+ highlight_git = ${boolToString cfg.renderer.higlightGit},
+ highlight_opened_files = ${"'" + cfg.renderer.highlightOpenedFiles + "'"},
+ indent_markers = {
+ enable = ${boolToString cfg.renderer.indentMarkers},
+ },
+ -- TODO: those two
+ add_trailing = ${boolToString cfg.renderer.trailingSlash},
+ group_empty = ${boolToString cfg.renderer.groupEmptyFolders},
+ },
+
system_open = {
cmd = ${"'" + cfg.systemOpenCmd + "'"},
},
diagnostics = {
enable = ${boolToString cfg.lspDiagnostics},
},
- view = {
- width = ${toString cfg.treeWidth},
- side = ${"'" + cfg.treeSide + "'"},
- },
- renderer = {
- indent_markers = {
- enable = ${boolToString cfg.indentMarkers},
- },
- add_trailing = ${boolToString cfg.trailingSlash},
- group_empty = ${boolToString cfg.groupEmptyFolders},
- },
- actions = {
- open_file = {
- quit_on_open = ${boolToString cfg.closeOnFileOpen},
- resize_window = ${boolToString cfg.resizeOnFileOpen},
- },
- },
- git = {
- enable = true,
- ignore = ${boolToString cfg.hideIgnoredGitFiles},
- },
filters = {
dotfiles = ${boolToString cfg.hideDotFiles},
custom = {
diff --git a/modules/keys/default.nix b/modules/keys/default.nix
deleted file mode 100644
index 5f5b71a..0000000
--- a/modules/keys/default.nix
+++ /dev/null
@@ -1,6 +0,0 @@
-{
- config,
- lib,
- pkgs,
- ...
-}: {imports = [./which-key.nix];}
diff --git a/modules/keys/which-key.nix b/modules/keys/which-key.nix
deleted file mode 100644
index 0a8d145..0000000
--- a/modules/keys/which-key.nix
+++ /dev/null
@@ -1,24 +0,0 @@
-{
- pkgs,
- config,
- lib,
- ...
-}:
-with lib;
-with builtins; let
- cfg = config.vim.keys;
-in {
- options.vim.keys = {
- enable = mkEnableOption "key binding plugins";
-
- whichKey = {
- enable = mkEnableOption "which-key menu";
- };
- };
-
- config = mkIf (cfg.enable && cfg.whichKey.enable) {
- vim.startPlugins = ["which-key"];
-
- vim.luaConfigRC.whichkey = nvim.dag.entryAnywhere ''local wk = require("which-key").setup {}'';
- };
-}
diff --git a/modules/lib/dag.nix b/modules/lib/dag.nix
index d6cc871..0b392f9 100644
--- a/modules/lib/dag.nix
+++ b/modules/lib/dag.nix
@@ -16,62 +16,64 @@ in {
isDag = dag:
builtins.isAttrs dag && all nvim.dag.isEntry (builtins.attrValues dag);
- # Takes an attribute set containing entries built by entryAnywhere,
- # entryAfter, and entryBefore to a topologically sorted list of
- # entries.
- #
- # Internally this function uses the `toposort` function in
- # `` and its value is accordingly.
- #
- # Specifically, the result on success is
- #
- # { result = [ { name = ?; data = ?; } … ] }
- #
- # For example
- #
- # nix-repl> topoSort {
- # a = entryAnywhere "1";
- # b = entryAfter [ "a" "c" ] "2";
- # c = entryBefore [ "d" ] "3";
- # d = entryBefore [ "e" ] "4";
- # e = entryAnywhere "5";
- # } == {
- # result = [
- # { data = "1"; name = "a"; }
- # { data = "3"; name = "c"; }
- # { data = "2"; name = "b"; }
- # { data = "4"; name = "d"; }
- # { data = "5"; name = "e"; }
- # ];
- # }
- # true
- #
- # And the result on error is
- #
- # {
- # cycle = [ { after = ?; name = ?; data = ? } … ];
- # loops = [ { after = ?; name = ?; data = ? } … ];
- # }
- #
- # For example
- #
- # nix-repl> topoSort {
- # a = entryAnywhere "1";
- # b = entryAfter [ "a" "c" ] "2";
- # c = entryAfter [ "d" ] "3";
- # d = entryAfter [ "b" ] "4";
- # e = entryAnywhere "5";
- # } == {
- # cycle = [
- # { after = [ "a" "c" ]; data = "2"; name = "b"; }
- # { after = [ "d" ]; data = "3"; name = "c"; }
- # { after = [ "b" ]; data = "4"; name = "d"; }
- # ];
- # loops = [
- # { after = [ "a" "c" ]; data = "2"; name = "b"; }
- # ];
- # }
- # true
+ /*
+ Takes an attribute set containing entries built by entryAnywhere,
+ entryAfter, and entryBefore to a topologically sorted list of
+ entries.
+
+ Internally this function uses the `toposort` function in
+ `` and its value is accordingly.
+
+ Specifically, the result on success is
+
+ { result = [ { name = ?; data = ?; } … ] }
+
+ For example
+
+ nix-repl> topoSort {
+ a = entryAnywhere "1";
+ b = entryAfter [ "a" "c" ] "2";
+ c = entryBefore [ "d" ] "3";
+ d = entryBefore [ "e" ] "4";
+ e = entryAnywhere "5";
+ } == {
+ result = [
+ { data = "1"; name = "a"; }
+ { data = "3"; name = "c"; }
+ { data = "2"; name = "b"; }
+ { data = "4"; name = "d"; }
+ { data = "5"; name = "e"; }
+ ];
+ }
+ true
+
+ And the result on error is
+
+ {
+ cycle = [ { after = ?; name = ?; data = ? } … ];
+ loops = [ { after = ?; name = ?; data = ? } … ];
+ }
+
+ For example
+
+ nix-repl> topoSort {
+ a = entryAnywhere "1";
+ b = entryAfter [ "a" "c" ] "2";
+ c = entryAfter [ "d" ] "3";
+ d = entryAfter [ "b" ] "4";
+ e = entryAnywhere "5";
+ } == {
+ cycle = [
+ { after = [ "a" "c" ]; data = "2"; name = "b"; }
+ { after = [ "d" ]; data = "3"; name = "c"; }
+ { after = [ "b" ]; data = "4"; name = "d"; }
+ ];
+ loops = [
+ { after = [ "a" "c" ]; data = "2"; name = "b"; }
+ ];
+ }
+ true
+ */
topoSort = dag: let
dagBefore = dag: name:
builtins.attrNames
diff --git a/modules/lib/types-plugin.nix b/modules/lib/types-plugin.nix
index 3cdca58..9e31823 100644
--- a/modules/lib/types-plugin.nix
+++ b/modules/lib/types-plugin.nix
@@ -1,7 +1,8 @@
{lib}:
with lib; let
- # Plugin must be same as input name
+ # Plugin must be same as input name from flake.nix
availablePlugins = [
+ # TODO: sort by category
"nvim-treesitter-context"
"gitsigns-nvim"
"plenary-nvim"
@@ -40,8 +41,33 @@ with lib; let
"rust-tools"
"onedark"
"catppuccin"
+ "minimap-vim"
+ "dashboard-nvim"
+ "alpha-nvim"
+ "scrollbar-nvim"
+ "codewindow-nvim"
+ "nvim-notify"
+ "cinnamon-nvim"
+ "cheatsheet-nvim"
+ "colorizer"
+ "venn-nvim"
+ "cellular-automaton"
+ "presence-nvim"
+ "icon-picker-nvim"
+ "dressing-nvim"
+ "orgmode-nvim"
+ "obsidian-nvim"
+ "vim-markdown"
+ "tabular"
+ "toggleterm-nvim"
+ "noice-nvim"
+ "nui-nvim"
+ "copilot-lua"
+ "tabnine-nvim"
+ "nvim-session-manager"
+ "gesture-nvim"
];
-
+ # You can either use the name of the plugin or a package.
pluginsType = with types; listOf (nullOr (either (enum availablePlugins) package));
in {
pluginsOpt = {
diff --git a/modules/markdown/default.nix b/modules/markdown/default.nix
index b039f6e..8b7e31e 100644
--- a/modules/markdown/default.nix
+++ b/modules/markdown/default.nix
@@ -5,7 +5,6 @@
...
}: {
imports = [
- ./config.nix
- ./glow.nix
+ ./glow
];
}
diff --git a/modules/markdown/config.nix b/modules/markdown/glow/config.nix
similarity index 100%
rename from modules/markdown/config.nix
rename to modules/markdown/glow/config.nix
diff --git a/modules/markdown/glow.nix b/modules/markdown/glow/default.nix
similarity index 100%
rename from modules/markdown/glow.nix
rename to modules/markdown/glow/default.nix
diff --git a/modules/minimap/codewindow.nix b/modules/minimap/codewindow.nix
new file mode 100644
index 0000000..099bc6d
--- /dev/null
+++ b/modules/minimap/codewindow.nix
@@ -0,0 +1,29 @@
+{
+ pkgs,
+ config,
+ lib,
+ ...
+}:
+with lib;
+with builtins; let
+ cfg = config.vim.minimap.codewindow;
+in {
+ options.vim.minimap.codewindow = {
+ enable = mkEnableOption "Enable minimap-vim plugin";
+ };
+
+ config = mkIf cfg.enable {
+ vim.startPlugins = [
+ "codewindow-nvim"
+ ];
+
+ vim.luaConfigRC.codewindow = nvim.dag.entryAnywhere ''
+ local codewindow = require('codewindow')
+ codewindow.setup({
+ exclude_filetypes = { 'NvimTree', 'orgagenda'},
+ }
+ )
+ codewindow.apply_default_keybinds()
+ '';
+ };
+}
diff --git a/modules/minimap/default.nix b/modules/minimap/default.nix
new file mode 100644
index 0000000..0007404
--- /dev/null
+++ b/modules/minimap/default.nix
@@ -0,0 +1,11 @@
+{
+ pkgs,
+ lib,
+ config,
+ ...
+}: {
+ imports = [
+ ./minimap-vim.nix
+ ./codewindow.nix
+ ];
+}
diff --git a/modules/minimap/minimap-vim.nix b/modules/minimap/minimap-vim.nix
new file mode 100644
index 0000000..f2f9609
--- /dev/null
+++ b/modules/minimap/minimap-vim.nix
@@ -0,0 +1,21 @@
+{
+ pkgs,
+ config,
+ lib,
+ ...
+}:
+with lib;
+with builtins; let
+ cfg = config.vim.minimap.minimap-vim;
+in {
+ options.vim.minimap.minimap-vim = {
+ enable = mkEnableOption "Enable minimap-vim plugin";
+ };
+
+ config = mkIf cfg.enable {
+ vim.startPlugins = [
+ pkgs.code-minimap
+ "minimap-vim"
+ ];
+ };
+}
diff --git a/modules/modules.nix b/modules/modules.nix
index ab682b6..fe2b19e 100644
--- a/modules/modules.nix
+++ b/modules/modules.nix
@@ -17,10 +17,18 @@
./tidal
./autopairs
./snippets
- ./keys
./markdown
- ./telescope
./git
+ ./minimap
+ ./dashboard
+ ./notifications
+ ./utility
+ ./presence
+ ./notes
+ ./terminal
+ ./ui
+ ./assistant
+ ./session
];
pkgsModule = {config, ...}: {
diff --git a/modules/notes/default.nix b/modules/notes/default.nix
new file mode 100644
index 0000000..7361a35
--- /dev/null
+++ b/modules/notes/default.nix
@@ -0,0 +1,6 @@
+_: {
+ imports = [
+ ./obsidian
+ ./orgmode
+ ];
+}
diff --git a/modules/notes/obsidian/default.nix b/modules/notes/obsidian/default.nix
new file mode 100644
index 0000000..f52ac02
--- /dev/null
+++ b/modules/notes/obsidian/default.nix
@@ -0,0 +1,51 @@
+{
+ pkgs,
+ config,
+ lib,
+ ...
+}:
+with lib;
+with builtins; let
+ cfg = config.vim.notes.obsidian;
+ auto = config.vim.autocomplete;
+in {
+ options.vim.notes = {
+ obsidian = {
+ enable = mkEnableOption "Complementary neovim plugins for Obsidian editor";
+ dir = mkOption {
+ type = types.str;
+ default = "~/my-vault";
+ description = "Obsidian vault directory";
+ };
+
+ completion = {
+ nvim_cmp = mkOption {
+ # if using nvim-cmp, otherwise set to false
+ type = types.bool;
+ description = "If using nvim-cmp, otherwise set to false";
+ };
+ };
+ };
+ };
+
+ config = mkIf (cfg.enable) {
+ vim.startPlugins = [
+ "obsidian-nvim"
+ "vim-markdown"
+ "tabular"
+ ];
+
+ vim.luaConfigRC.obsidian = nvim.dag.entryAnywhere ''
+ require("obsidian").setup({
+ dir = "${cfg.dir}",
+ completion = {
+ nvim_cmp = ${
+ if (auto.type == "nvim-cmp")
+ then "true"
+ else "false"
+ }
+ }
+ })
+ '';
+ };
+}
diff --git a/modules/notes/orgmode/default.nix b/modules/notes/orgmode/default.nix
new file mode 100644
index 0000000..f45b2ab
--- /dev/null
+++ b/modules/notes/orgmode/default.nix
@@ -0,0 +1,56 @@
+{
+ pkgs,
+ config,
+ lib,
+ ...
+}:
+with lib;
+with builtins; let
+ cfg = config.vim.notes.orgmode;
+in {
+ options.vim.notes = {
+ orgmode = {
+ enable = mkEnableOption "Neovim plugin for Emac Orgmode. Get the best of both worlds.";
+ orgAgendaFiles = mkOption {
+ type = types.str;
+ default = "{'~/Dropbox/org/*', '~/my-orgs/**/*'}";
+ description = "List of org files to be used as agenda files.";
+ };
+ orgDefaultNotesFile = mkOption {
+ type = types.str;
+ default = "~/Dropbox/org/refile.org";
+ description = "Default org file to be used for notes.";
+ };
+ };
+ };
+
+ config = mkIf (cfg.enable) {
+ vim.startPlugins = [
+ "orgmode-nvim"
+ ];
+
+ vim.luaConfigRC.orgmode = nvim.dag.entryAnywhere ''
+ -- Load custom treesitter grammar for org filetype
+ require('orgmode').setup_ts_grammar()
+
+ -- Treesitter configuration
+ require('nvim-treesitter.configs').setup {
+
+ -- If TS highlights are not enabled at all, or disabled via `disable` prop,
+ -- highlighting will fallback to default Vim syntax highlighting
+ highlight = {
+ enable = true,
+ -- Required for spellcheck, some LaTex highlights and
+ -- code block highlights that do not have ts grammar
+ additional_vim_regex_highlighting = {'org'},
+ },
+ ensure_installed = {'org'}, -- Or run :TSUpdate org
+ }
+
+ require('orgmode').setup({
+ org_agenda_files = ${cfg.orgAgendaFiles},
+ org_default_notes_file = '${cfg.orgDefaultNotesFile}',
+ })
+ '';
+ };
+}
diff --git a/modules/notifications/default.nix b/modules/notifications/default.nix
new file mode 100644
index 0000000..e978f42
--- /dev/null
+++ b/modules/notifications/default.nix
@@ -0,0 +1,5 @@
+_: {
+ imports = [
+ ./nvim-notify.nix
+ ];
+}
diff --git a/modules/notifications/nvim-notify.nix b/modules/notifications/nvim-notify.nix
new file mode 100644
index 0000000..777d507
--- /dev/null
+++ b/modules/notifications/nvim-notify.nix
@@ -0,0 +1,34 @@
+{
+ pkgs,
+ config,
+ lib,
+ ...
+}:
+with lib;
+with builtins; let
+ cfg = config.vim.notify.nvim-notify;
+in {
+ options.vim.notify.nvim-notify = {
+ enable = mkEnableOption "Enable nvim-notify plugin";
+ };
+
+ config = mkIf cfg.enable {
+ vim.startPlugins = ["nvim-notify"];
+
+ vim.luaConfigRC.nvim-notify = nvim.dag.entryAnywhere ''
+ require('notify').setup {
+ stages = 'fade_in_slide_out',
+ timeout = 1000,
+ background_colour = '#000000',
+ position = 'top_right',
+ icons = {
+ ERROR = '',
+ WARN = '',
+ INFO = '',
+ DEBUG = '',
+ TRACE = '',
+ },
+ }
+ '';
+ };
+}
diff --git a/modules/presence/default.nix b/modules/presence/default.nix
new file mode 100644
index 0000000..649fa76
--- /dev/null
+++ b/modules/presence/default.nix
@@ -0,0 +1,5 @@
+_: {
+ imports = [
+ ./discord-nvim.nix
+ ];
+}
diff --git a/modules/presence/discord-nvim.nix b/modules/presence/discord-nvim.nix
new file mode 100644
index 0000000..4d48a4c
--- /dev/null
+++ b/modules/presence/discord-nvim.nix
@@ -0,0 +1,45 @@
+{
+ pkgs,
+ config,
+ lib,
+ ...
+}:
+with lib;
+with builtins; let
+ cfg = config.vim.presence.presence-nvim;
+in {
+ options.vim.presence.presence-nvim = {
+ enable = mkEnableOption "Enable presence.nvim plugin";
+ };
+
+ config = mkIf cfg.enable {
+ vim.startPlugins = ["presence-nvim"];
+
+ vim.luaConfigRC.presence-nvim = nvim.dag.entryAnywhere ''
+ -- Description of each option can be found in https://github.com/andweeb/presence.nvim444
+ require("presence").setup({
+ -- General options
+ auto_update = true,
+ neovim_image_text = "The One True Text Editor",
+ main_image = "neovim",
+ client_id = "793271441293967371",
+ log_level = nil,
+ debounce_timeout = 10,
+ enable_line_number = false,
+ blacklist = {},
+ buttons = true,
+ file_assets = {},
+ show_time = true,
+
+ -- Rich Presence text options
+ editing_text = "Editing %s",
+ file_explorer_text = "Browsing %s",
+ git_commit_text = "Committing changes",
+ plugin_manager_text = "Managing plugins",
+ reading_text = "Reading %s",
+ workspace_text = "Working on %s",
+ line_number_text = "Line %s out of %s",
+ })
+ '';
+ };
+}
diff --git a/modules/session/default.nix b/modules/session/default.nix
new file mode 100644
index 0000000..3a2da67
--- /dev/null
+++ b/modules/session/default.nix
@@ -0,0 +1,5 @@
+_: {
+ imports = [
+ ./nvim-session-manager.nix
+ ];
+}
diff --git a/modules/session/nvim-session-manager.nix b/modules/session/nvim-session-manager.nix
new file mode 100644
index 0000000..29dd21d
--- /dev/null
+++ b/modules/session/nvim-session-manager.nix
@@ -0,0 +1,22 @@
+{
+ pkgs,
+ config,
+ lib,
+ ...
+}:
+with lib;
+with builtins; let
+ cfg = config.vim.session.nvim-session-manager;
+in {
+ options.vim.session.nvim-session-manager = {
+ enable = mkEnableOption "Enable nvim-session-manager";
+ };
+
+ config = mkIf cfg.enable {
+ vim.startPlugins = ["nvim-session-manager"];
+
+ vim.luaConfigRC.nvim-session-manager = nvim.dag.entryAnywhere ''
+ require('session_manager').setup({})
+ '';
+ };
+}
diff --git a/modules/statusline/config.nix b/modules/statusline/config.nix
deleted file mode 100644
index 6503543..0000000
--- a/modules/statusline/config.nix
+++ /dev/null
@@ -1,65 +0,0 @@
-{
- pkgs,
- config,
- lib,
- ...
-}:
-with lib; {
- config = {
- vim.statusline.lualine = {
- enable = mkDefault false;
-
- icons = mkDefault true;
- theme = mkDefault "auto";
- sectionSeparator = {
- left = mkDefault "";
- right = mkDefault "";
- };
-
- componentSeparator = {
- left = mkDefault "⏽";
- right = mkDefault "⏽";
- };
-
- activeSection = {
- a = mkDefault "{'mode'}";
- b = ''
- {
- {
- "branch",
- separator = '',
- },
- "diff",
- }
- '';
- c = mkDefault "{'filename'}";
- x = mkDefault ''
- {
- {
- "diagnostics",
- sources = {'nvim_lsp'},
- separator = '',
- symbols = {error = '', warn = '', info = '', hint = ''},
- },
- {
- "filetype",
- },
- "fileformat",
- "encoding",
- }
- '';
- y = mkDefault "{'progress'}";
- z = mkDefault "{'location'}";
- };
-
- inactiveSection = {
- a = mkDefault "{}";
- b = mkDefault "{}";
- c = mkDefault "{'filename'}";
- x = mkDefault "{'location'}";
- y = mkDefault "{}";
- z = mkDefault "{}";
- };
- };
- };
-}
diff --git a/modules/statusline/default.nix b/modules/statusline/default.nix
index 5d638c9..643832b 100644
--- a/modules/statusline/default.nix
+++ b/modules/statusline/default.nix
@@ -5,7 +5,6 @@
...
}: {
imports = [
- ./lualine.nix
- ./config.nix
+ ./lualine
];
}
diff --git a/modules/statusline/lualine/config.nix b/modules/statusline/lualine/config.nix
new file mode 100644
index 0000000..10b8bf0
--- /dev/null
+++ b/modules/statusline/lualine/config.nix
@@ -0,0 +1,94 @@
+{
+ pkgs,
+ config,
+ lib,
+ ...
+}:
+with lib; {
+ config = {
+ vim.statusline.lualine = {
+ enable = mkDefault false;
+
+ icons = mkDefault true;
+ theme = mkDefault "auto";
+ sectionSeparator = {
+ left = mkDefault "";
+ right = mkDefault "";
+ };
+
+ componentSeparator = {
+ left = mkDefault "";
+ right = mkDefault "";
+ };
+
+ activeSection = {
+ # left side of the statusline 4
+ a = mkDefault "{'mode'}";
+ b = mkDefault ''
+ {
+ {
+ "filename",
+ color = {bg='none'},
+ symbols = {modified = '', readonly = ''},
+ },
+ }
+ '';
+ c = mkDefault ''
+ {
+ {
+ "branch",
+ icon = ' •',
+ separator = { left = '(', right = ')'},
+ },
+ }
+ '';
+ # right side of the statusline (x, y, z)
+ x = mkDefault ''
+ {
+ {
+ "diagnostics",
+ sources = {'nvim_lsp', 'nvim_diagnostic'},
+ symbols = {error = '', warn = '', info = '', hint = ''}
+ },
+ }
+ '';
+ y = mkDefault ''
+ {
+ {
+ "fileformat",
+ color = {bg='none'}
+ },
+ }
+ '';
+ z = mkDefault ''
+ {
+ {
+ "progress",
+ color = {
+ bg='none',
+ fg='lavender'
+ }
+ },
+ {
+ "location",
+ color = {bg='none', fg='lavender'},
+ },
+ {
+ "filetype",
+ color = {bg='none', fg='lavender'},
+ },
+ }
+ '';
+ };
+
+ inactiveSection = {
+ a = mkDefault "{}";
+ b = mkDefault "{}";
+ c = mkDefault "{'filename'}";
+ x = mkDefault "{'location'}";
+ y = mkDefault "{}";
+ z = mkDefault "{}";
+ };
+ };
+ };
+}
diff --git a/modules/statusline/lualine/default.nix b/modules/statusline/lualine/default.nix
new file mode 100644
index 0000000..879e72f
--- /dev/null
+++ b/modules/statusline/lualine/default.nix
@@ -0,0 +1,6 @@
+_: {
+ imports = [
+ ./lualine.nix
+ ./config.nix
+ ];
+}
diff --git a/modules/statusline/lualine.nix b/modules/statusline/lualine/lualine.nix
similarity index 97%
rename from modules/statusline/lualine.nix
rename to modules/statusline/lualine/lualine.nix
index aba8466..3b8f8d2 100644
--- a/modules/statusline/lualine.nix
+++ b/modules/statusline/lualine/lualine.nix
@@ -7,7 +7,7 @@
with lib;
with builtins; let
cfg = config.vim.statusline.lualine;
- supported_themes = import ./supported_lualine_themes.nix;
+ supported_themes = import ./supported_themes.nix;
in {
options.vim.statusline.lualine = {
enable = mkOption {
@@ -175,7 +175,7 @@ in {
theme = "${cfg.theme}",
component_separators = {"${cfg.componentSeparator.left}","${cfg.componentSeparator.right}"},
section_separators = {"${cfg.sectionSeparator.left}","${cfg.sectionSeparator.right}"},
- disabled_filetypes = {},
+ disabled_filetypes = { 'packer', 'NvimTree', 'alpha' }
},
sections = {
lualine_a = ${cfg.activeSection.a},
diff --git a/modules/statusline/supported_lualine_themes.nix b/modules/statusline/lualine/supported_themes.nix
similarity index 100%
rename from modules/statusline/supported_lualine_themes.nix
rename to modules/statusline/lualine/supported_themes.nix
diff --git a/modules/terminal/default.nix b/modules/terminal/default.nix
new file mode 100644
index 0000000..228f3ff
--- /dev/null
+++ b/modules/terminal/default.nix
@@ -0,0 +1,5 @@
+_: {
+ imports = [
+ ./toggleterm.nix
+ ];
+}
diff --git a/modules/terminal/toggleterm.nix b/modules/terminal/toggleterm.nix
new file mode 100644
index 0000000..7c7f5b5
--- /dev/null
+++ b/modules/terminal/toggleterm.nix
@@ -0,0 +1,51 @@
+{
+ pkgs,
+ config,
+ lib,
+ ...
+}:
+with lib;
+with builtins; let
+ cfg = config.vim.terminal.toggleterm;
+in {
+ options.vim.terminal.toggleterm = {
+ enable = mkEnableOption "Enable toggleterm as a replacement to built-in terminal command";
+ direction = mkOption {
+ type = types.enum ["horizontal" "vertical" "tab" "float"];
+ default = "float";
+ description = "Direction of the terminal";
+ };
+ enable_winbar = mkOption {
+ type = types.bool;
+ default = false;
+ description = "Enable winbar";
+ };
+ };
+
+ config = mkIf cfg.enable {
+ vim.startPlugins = [
+ "toggleterm-nvim"
+ ];
+
+ vim.luaConfigRC.toggleterm = nvim.dag.entryAnywhere ''
+ require("toggleterm").setup({
+ open_mapping = [[]],
+ direction = '${toString cfg.direction}',
+ -- TODO: this should probably be turned into a module that uses the lua function if and only if the user has not set it
+ size = function(term)
+ if term.direction == "horizontal" then
+ return 15
+ elseif term.direction == "vertical" then
+ return vim.o.columns * 0.4
+ end
+ end,
+ winbar = {
+ enabled = '${toString cfg.enable_winbar}',
+ name_formatter = function(term) -- term: Terminal
+ return term.name
+ end
+ },
+ })
+ '';
+ };
+}
diff --git a/modules/theme/config.nix b/modules/theme/config.nix
index bbe6d28..aed77f7 100644
--- a/modules/theme/config.nix
+++ b/modules/theme/config.nix
@@ -1,4 +1,9 @@
-{ pkgs, config, lib, ... }:
+{
+ pkgs,
+ config,
+ lib,
+ ...
+}:
with lib; {
config = {
vim.theme = {
diff --git a/modules/theme/supported_themes.nix b/modules/theme/supported_themes.nix
index 31fc86f..2207146 100644
--- a/modules/theme/supported_themes.nix
+++ b/modules/theme/supported_themes.nix
@@ -1,33 +1,47 @@
{
onedark = {
- setup = { style ? "dark" }: ''
+ setup = {style ? "dark"}: ''
-- OneDark theme
require('onedark').setup {
style = "${style}"
}
require('onedark').load()
'';
- styles = [ "dark" "darker" "cool" "deep" "warm" "warmer" ];
+ styles = ["dark" "darker" "cool" "deep" "warm" "warmer"];
};
tokyonight = {
- setup = { style ? "night" }: ''
+ setup = {style ? "night"}: ''
-- need to set style before colorscheme to apply
vim.g.tokyonight_style = '${style}'
vim.cmd[[colorscheme tokyonight]]
'';
- styles = [ "day" "night" "storm" ];
+ styles = ["day" "night" "storm"];
};
catppuccin = {
- setup = { style ? "mocha" }: ''
+ setup = {style ? "mocha"}: ''
-- Catppuccin theme
require('catppuccin').setup {
- flavour = "${style}"
+ flavour = "${style}",
+ transparent_background = true,
+ integrations = {
+ nvimtree = {
+ enabled = true,
+ transparent_panel = false,
+ show_root = true,
+ },
+
+ hop = true,
+ gitsigns = true,
+ telescope = true,
+ treesitter = true,
+ ts_rainbow = true,
+ },
}
-- setup must be called before loading
vim.cmd.colorscheme "catppuccin"
'';
- styles = [ "latte" "frappe" "macchiato" "mocha" ];
+ styles = ["latte" "frappe" "macchiato" "mocha"];
};
}
diff --git a/modules/tidal/default.nix b/modules/tidal/default.nix
index bb19046..4b07c0d 100644
--- a/modules/tidal/default.nix
+++ b/modules/tidal/default.nix
@@ -3,4 +3,8 @@
lib,
pkgs,
...
-}: {imports = [./tidal.nix];}
+}: {
+ imports = [
+ ./tidal.nix
+ ];
+}
diff --git a/modules/treesitter/treesitter.nix b/modules/treesitter/treesitter.nix
index 8ed5154..d6acd2d 100644
--- a/modules/treesitter/treesitter.nix
+++ b/modules/treesitter/treesitter.nix
@@ -29,24 +29,26 @@ in {
grammars = mkOption {
type = with types; listOf package;
- default = with (pkgs.vimPlugins.nvim-treesitter.builtGrammars); [
- c
- cpp
- nix
- python
- rust
- markdown
- comment
- toml
- make
- tsx
- html
- javascript
- css
- graphql
- json
- zig
- ];
+ default = with (pkgs.vimPlugins.nvim-treesitter.builtGrammars);
+ [
+ c
+ cpp
+ nix
+ python
+ rust
+ markdown
+ comment
+ toml
+ make
+ tsx
+ html
+ javascript
+ css
+ graphql
+ json
+ zig
+ ]
+ ++ (optional config.vim.notes.orgmode.enable org); # add orgmode grammar if enabled
description = ''
List of treesitter grammars to install.
When enabling a language, its treesitter grammar is added for you.
diff --git a/modules/ui/default.nix b/modules/ui/default.nix
new file mode 100644
index 0000000..26bc186
--- /dev/null
+++ b/modules/ui/default.nix
@@ -0,0 +1,5 @@
+_: {
+ imports = [
+ ./noice.nix
+ ];
+}
diff --git a/modules/ui/noice.nix b/modules/ui/noice.nix
new file mode 100644
index 0000000..394d0e4
--- /dev/null
+++ b/modules/ui/noice.nix
@@ -0,0 +1,67 @@
+{
+ pkgs,
+ config,
+ lib,
+ ...
+}:
+with lib;
+with builtins; let
+ cfg = config.vim.ui.noice;
+in {
+ options.vim.ui.noice = {
+ enable = mkEnableOption "noice-nvim";
+ };
+
+ config = mkIf cfg.enable {
+ vim.startPlugins = [
+ "noice-nvim"
+ "nui-nvim"
+ ];
+
+ vim.luaConfigRC.noice-nvim = nvim.dag.entryAnywhere ''
+ require("noice").setup({
+ lsp = {
+ override = {
+ ["vim.lsp.util.convert_input_to_markdown_lines"] = true,
+ ["vim.lsp.util.stylize_markdown"] = true,
+ ["cmp.entry.get_documentation"] = true,
+ },
+
+ signature = {
+ enabled = false, -- FIXME: enabling this file throws an error which I couldn't figure out
+ },
+ },
+
+ presets = {
+ bottom_search = true, -- use a classic bottom cmdline for search
+ command_palette = true, -- position the cmdline and popupmenu together
+ long_message_to_split = true, -- long messages will be sent to a split
+ inc_rename = false, -- enables an input dialog for inc-rename.nvim
+ lsp_doc_border = false, -- add a border to hover docs and signature help
+ },
+
+ format = {
+ cmdline = { pattern = "^:", icon = "", lang = "vim" },
+ search_down = { kind = "search", pattern = "^/", icon = " ", lang = "regex" },
+ search_up = { kind = "search", pattern = "^%?", icon = " ", lang = "regex" },
+ filter = { pattern = "^:%s*!", icon = "", lang = "bash" },
+ lua = { pattern = "^:%s*lua%s+", icon = "", lang = "lua" },
+ help = { pattern = "^:%s*he?l?p?%s+", icon = "" },
+ input = {},
+ },
+
+ -- Hide written messages
+ routes = {
+ {
+ filter = {
+ event = "msg_show",
+ kind = "",
+ find = "written",
+ },
+ opts = { skip = true },
+ },
+ },
+ })
+ '';
+ };
+}
diff --git a/modules/utility/binds/cheatsheet.nix b/modules/utility/binds/cheatsheet.nix
new file mode 100644
index 0000000..2e18691
--- /dev/null
+++ b/modules/utility/binds/cheatsheet.nix
@@ -0,0 +1,22 @@
+{
+ pkgs,
+ config,
+ lib,
+ ...
+}:
+with lib;
+with builtins; let
+ cfg = config.vim.binds.cheatsheet;
+in {
+ options.vim.binds.cheatsheet = {
+ enable = mkEnableOption "Searchable cheatsheet for nvim using telescope";
+ };
+
+ config = mkIf (cfg.enable) {
+ vim.startPlugins = ["cheatsheet-nvim"];
+
+ vim.luaConfigRC.cheaetsheet-nvim = nvim.dag.entryAnywhere ''
+ require('cheatsheet').setup({})
+ '';
+ };
+}
diff --git a/modules/utility/binds/default.nix b/modules/utility/binds/default.nix
new file mode 100644
index 0000000..9dd64ac
--- /dev/null
+++ b/modules/utility/binds/default.nix
@@ -0,0 +1,11 @@
+{
+ config,
+ lib,
+ pkgs,
+ ...
+}: {
+ imports = [
+ ./which-key.nix
+ ./cheatsheet.nix
+ ];
+}
diff --git a/modules/utility/binds/which-key.nix b/modules/utility/binds/which-key.nix
new file mode 100644
index 0000000..ef9fdf6
--- /dev/null
+++ b/modules/utility/binds/which-key.nix
@@ -0,0 +1,20 @@
+{
+ pkgs,
+ config,
+ lib,
+ ...
+}:
+with lib;
+with builtins; let
+ cfg = config.vim.binds.whichKey;
+in {
+ options.vim.binds.whichKey = {
+ enable = mkEnableOption "which-key menu";
+ };
+
+ config = mkIf (cfg.enable) {
+ vim.startPlugins = ["which-key"];
+
+ vim.luaConfigRC.whichkey = nvim.dag.entryAnywhere ''local wk = require("which-key").setup {}'';
+ };
+}
diff --git a/modules/utility/colorizer.nix b/modules/utility/colorizer.nix
new file mode 100644
index 0000000..940ca7c
--- /dev/null
+++ b/modules/utility/colorizer.nix
@@ -0,0 +1,24 @@
+{
+ pkgs,
+ config,
+ lib,
+ ...
+}:
+with lib;
+with builtins; let
+ cfg = config.vim.utility.colorizer;
+in {
+ options.vim.utility.colorizer = {
+ enable = mkEnableOption "ccc color picker for neovim";
+ };
+
+ config = mkIf (cfg.enable) {
+ vim.startPlugins = [
+ "colorizer"
+ ];
+
+ vim.configRC.ccc =
+ nvim.dag.entryAnywhere ''
+ '';
+ };
+}
diff --git a/modules/utility/default.nix b/modules/utility/default.nix
new file mode 100644
index 0000000..0b6a21b
--- /dev/null
+++ b/modules/utility/default.nix
@@ -0,0 +1,10 @@
+_: {
+ imports = [
+ ./binds
+ ./gestures
+ ./telescope
+ ./colorizer.nix
+ ./venn.nix
+ ./icon-picker.nix
+ ];
+}
diff --git a/modules/utility/gestures/default.nix b/modules/utility/gestures/default.nix
new file mode 100644
index 0000000..4dfa40a
--- /dev/null
+++ b/modules/utility/gestures/default.nix
@@ -0,0 +1,5 @@
+_: {
+ imports = [
+ ./gesture-nvim.nix
+ ];
+}
diff --git a/modules/utility/gestures/gesture-nvim.nix b/modules/utility/gestures/gesture-nvim.nix
new file mode 100644
index 0000000..b8aa4ce
--- /dev/null
+++ b/modules/utility/gestures/gesture-nvim.nix
@@ -0,0 +1,55 @@
+{
+ pkgs,
+ config,
+ lib,
+ ...
+}:
+with lib;
+with builtins; let
+ cfg = config.vim.gestures.gesture-nvim;
+in {
+ options.vim.gestures.gesture-nvim = {
+ enable = mkEnableOption "Enable GitHub Copilot";
+ };
+
+ config = mkIf cfg.enable {
+ vim.startPlugins = ["gesture-nvim"];
+
+ vim.luaConfigRC.gesture-nvim = nvim.dag.entryAnywhere ''
+ vim.opt.mouse = "a"
+
+ vim.keymap.set("n", "", [[lua require("gesture").draw()]], { silent = true })
+ vim.keymap.set("n", "", [[lua require("gesture").finish()]], { silent = true })
+
+ -- or if you would like to use right click
+ -- vim.keymap.set("n", "", [[]])
+ -- vim.keymap.set("n", "", [[lua require("gesture").draw()]], { silent = true })
+ -- vim.keymap.set("n", "", [[lua require("gesture").finish()]], { silent = true })
+
+ local gesture = require("gesture")
+ gesture.register({
+ name = "scroll to bottom",
+ inputs = { gesture.up(), gesture.down() },
+ action = "normal! G",
+ })
+ gesture.register({
+ name = "next tab",
+ inputs = { gesture.right() },
+ action = "tabnext",
+ })
+ gesture.register({
+ name = "previous tab",
+ inputs = { gesture.left() },
+ action = function(ctx) -- also can use callable
+ vim.cmd.tabprevious()
+ end,
+ })
+ gesture.register({
+ name = "go back",
+ inputs = { gesture.right(), gesture.left() },
+ -- map to `` keycode
+ action = [[lua vim.api.nvim_feedkeys(vim.api.nvim_replace_termcodes("", true, false, true), "n", true)]],
+ })
+ '';
+ };
+}
diff --git a/modules/utility/icon-picker.nix b/modules/utility/icon-picker.nix
new file mode 100644
index 0000000..c43d2cd
--- /dev/null
+++ b/modules/utility/icon-picker.nix
@@ -0,0 +1,27 @@
+{
+ pkgs,
+ config,
+ lib,
+ ...
+}:
+with lib;
+with builtins; let
+ cfg = config.vim.utility.icon-picker;
+in {
+ options.vim.utility.icon-picker = {
+ enable = mkEnableOption "Nerdfonts icon picker for nvim";
+ };
+
+ config = mkIf (cfg.enable) {
+ vim.startPlugins = [
+ "icon-picker-nvim"
+ "dressing-nvim"
+ ];
+
+ vim.luaConfigRC.icon-picker = nvim.dag.entryAnywhere ''
+ require("icon-picker").setup({
+ disable_legacy_commands = true
+ })
+ '';
+ };
+}
diff --git a/modules/telescope/default.nix b/modules/utility/telescope/default.nix
similarity index 86%
rename from modules/telescope/default.nix
rename to modules/utility/telescope/default.nix
index 67bde16..82452fe 100644
--- a/modules/telescope/default.nix
+++ b/modules/utility/telescope/default.nix
@@ -54,7 +54,8 @@ in {
);
vim.luaConfigRC.telescope = nvim.dag.entryAnywhere ''
- require("telescope").setup {
+ local telescope = require('telescope')
+ telescope.setup {
defaults = {
vimgrep_arguments = {
"${pkgs.ripgrep}/bin/rg",
@@ -72,6 +73,18 @@ in {
},
}
}
+
+ ${
+ if config.vim.ui.noice.enable
+ then "telescope.load_extension('noice')"
+ else null
+ }
+
+ ${
+ if config.vim.notify.nvim-notify.enable
+ then "telescope.load_extension('notify')"
+ else null
+ }
'';
};
}
diff --git a/modules/utility/venn.nix b/modules/utility/venn.nix
new file mode 100644
index 0000000..b1c9ffa
--- /dev/null
+++ b/modules/utility/venn.nix
@@ -0,0 +1,47 @@
+{
+ pkgs,
+ config,
+ lib,
+ ...
+}:
+with lib;
+with builtins; let
+ cfg = config.vim.utility.venn-nvim;
+in {
+ options.vim.utility.venn-nvim = {
+ enable = mkEnableOption "draw ASCII diagrams in Neovim";
+ };
+
+ config = mkIf (cfg.enable) {
+ vim.startPlugins = [
+ "venn-nvim"
+ ];
+
+ # TODO: https://github.com/jbyuki/venn.nvim#using-toggle-command
+ # add keybindings for drawing diagrams
+ vim.luaConfigRC.venn-nvim = nvim.dag.entryAnywhere ''
+ local venn = require('venn')
+ -- venn.nvim: enable or disable keymappings
+ function _G.Toggle_venn()
+ local venn_enabled = vim.inspect(vim.b.venn_enabled)
+ if venn_enabled == "nil" then
+ vim.b.venn_enabled = true
+ vim.cmd[[setlocal ve=all]]
+ -- draw a line on HJKL keystokes
+ vim.api.nvim_buf_set_keymap(0, "n", "J", "j:VBox", {noremap = true})
+ vim.api.nvim_buf_set_keymap(0, "n", "K", "k:VBox", {noremap = true})
+ vim.api.nvim_buf_set_keymap(0, "n", "L", "l:VBox", {noremap = true})
+ vim.api.nvim_buf_set_keymap(0, "n", "H", "h:VBox", {noremap = true})
+ -- draw a box by pressing "f" with visual selection
+ vim.api.nvim_buf_set_keymap(0, "v", "f", ":VBox", {noremap = true})
+ else
+ vim.cmd[[setlocal ve=]]
+ vim.cmd[[mapclear ]]
+ vim.b.venn_enabled = nil
+ end
+ end
+ -- toggle keymappings for venn using v
+ vim.api.nvim_set_keymap('n', 'v', ":lua Toggle_venn()", { noremap = true})
+ '';
+ };
+}
diff --git a/modules/visuals/config.nix b/modules/visuals/config.nix
index 11d580d..7231c86 100644
--- a/modules/visuals/config.nix
+++ b/modules/visuals/config.nix
@@ -1,7 +1,8 @@
-{ pkgs
-, config
-, lib
-, ...
+{
+ pkgs,
+ config,
+ lib,
+ ...
}:
with lib; {
config = {
@@ -11,6 +12,10 @@ with lib; {
nvimWebDevicons.enable = mkDefault false;
lspkind.enable = mkDefault false;
+ scrollBar = {
+ enable = mkDefault false;
+ };
+
cursorWordline = {
enable = mkDefault false;
lineTimeout = mkDefault 500;
diff --git a/modules/visuals/visuals.nix b/modules/visuals/visuals.nix
index 7008c68..a186378 100644
--- a/modules/visuals/visuals.nix
+++ b/modules/visuals/visuals.nix
@@ -24,6 +24,22 @@ in {
description = "enable vscode-like pictograms for lsp [lspkind]";
};
+ scrollBar.enable = mkOption {
+ type = types.bool;
+ description = "enable scrollbar [scrollbar.nvim]";
+ };
+
+ smoothScroll.enable = mkOption {
+ type = types.bool;
+ description = "enable smooth scrolling [cinnamon-nvim]";
+ };
+
+ cellularAutomaton.enable = mkOption {
+ type = types.bool;
+ description = "enable cellular automaton [cellular-automaton]";
+ default = false;
+ };
+
cursorWordline = {
enable = mkOption {
type = types.bool;
@@ -88,6 +104,21 @@ in {
then "indent-blankline"
else null
)
+ (
+ if cfg.scrollBar.enable
+ then "scrollbar-nvim"
+ else null
+ )
+ (
+ if cfg.smoothScroll.enable
+ then "cinnamon-nvim"
+ else null
+ )
+ (
+ if cfg.cellularAutomaton.enable
+ then "cellular-automaton"
+ else null
+ )
];
vim.luaConfigRC.visuals = nvim.dag.entryAnywhere ''
@@ -130,6 +161,55 @@ in {
then "vim.g.cursorline_timeout = ${toString cfg.cursorWordline.lineTimeout}"
else ""
}
+
+ ${
+ if cfg.scrollBar.enable
+ then "require('scrollbar').setup{
+ excluded_filetypes = {
+ 'prompt',
+ 'TelescopePrompt',
+ 'noice',
+ 'NvimTree',
+ 'alpha'
+ },
+ }"
+ else ""
+ }
+ ${
+ if cfg.smoothScroll.enable
+ then "require('cinnamon').setup()"
+ else ""
+ }
+ ${
+ if cfg.cellularAutomaton.enable
+ then ''
+ local config = {
+ fps = 50,
+ name = 'slide',
+ }
+
+ -- init function is invoked only once at the start
+ -- config.init = function (grid)
+ --
+ -- end
+
+ -- update function
+ config.update = function (grid)
+ for i = 1, #grid do
+ local prev = grid[i][#(grid[i])]
+ for j = 1, #(grid[i]) do
+ grid[i][j], prev = prev, grid[i][j]
+ end
+ end
+ return true
+ end
+
+ require("cellular-automaton").register_animation(config)
+
+ vim.keymap.set("n", "fml", "CellularAutomaton make_it_rain")
+ ''
+ else ""
+ }
'';
};
}
diff --git a/screenshot.png b/screenshot.png
deleted file mode 100644
index 48ca7d2..0000000
Binary files a/screenshot.png and /dev/null differ