Mika (not to be confused with Maika) is my Neovim config using Nixvim. It includes AI integration, offline spell & grammar checking, code completion, and all the usual stuff like debugging etc.
To start configuring, just add or modify the nix files in ./config
.
If you add a new configuration file, remember to add it to the
config/default.nix file
-
- treesitter-context: Shows code context.
- treesitter-textobject: Allow cool text manipulation thanks to TS.
- treesitter: Parser generator tool to build a syntax tree of the current buffer.
-
- alpha: Dashboard.
- bufferline: VSCode-like line for buffers.
- catppuccin: Based color scheme.
- lualine: Status line.
- neoscroll: Smooth scrolling.
- noice: Better Neovim UI.
- nvim-notify: Notification manager.
- telescope: Find, filter, preview and pick files.
-
- comment: Commenting.
- dap: Debug in Neovim.
- flash: Navigate in file with a few keystrokes.
- harpoon: Getting you where you want with the fewest keystrokes.
- hardtime: Learn Vim motions, the hard way.
- harpoon: Quickly switch between buffers.
- illuminate: Highlight word under the cursor.
- nvim-autopairs: Autopairs plugin that supports multiple characters.
- oil: Navigate in your working folder with a buffer.
- search.nvim: Adds useful tabs to Telescope.
- ufo: Folding plugin.
- undotree: Undo history visualizer.
- whichkey: Popup to display keybindings.
To test your configuration simply run the following command
nix run .
If you have nix installed, you can directly run my config from anywhere
You can try running mine with:
nix run 'github:0fie/Mika'
This nixvim
flake will output a derivation that you can easily include
in either home.packages
for home-manager
, or
environment.systemPackages
for NixOS
. Or whatever happens with darwin?
You can add my nixvim
configuration as an input to your NixOS
configuration like:
{
inputs = {
nixvim.url = "github:0fie/Mika";
};
}
With the input added you can reference it directly.
{ inputs, ... }:
{
# NixOS
environment.systemPackages = [ inputs.nixvim.packages.${pkgs.system}.default ];
# home-manager
home.packages = [ inputs.nixvim.packages.${pkgs.system}.default ];
}
The binary built by nixvim
is already named as nvim
, so you can call it just like you normally would.
Another method is to overlay your custom build over neovim
from nixpkgs
.
This method is less straight-forward but allows you to install neovim
like
you normally would. With this method you would just install neovim
in your
configuration (home.packges = with pkgs; [ neovim ]
), but you replace
neovim
in pkgs
with your derivation from nixvim
.
{
pkgs = import inputs.nixpkgs {
inherit system;
overlays = [
(final: prev: {
neovim = inputs.nixvim.packages.${pkgs.system}.default;
})
];
}
}
You can just straight up alias something like nix run "github:0fie/Mika"
to nvim
.
- This is a fork of elythh/nixvim. Most of the files were directly copied from there.
- yavko for the logo