Add neovim config
This commit is contained in:
249
config.nix
Normal file
249
config.nix
Normal file
@@ -0,0 +1,249 @@
|
||||
{ pkgs, inputs, ... }:
|
||||
{
|
||||
colorschemes.tokyonight.enable = true;
|
||||
|
||||
opts = {
|
||||
number = true;
|
||||
relativenumber = true;
|
||||
|
||||
# Show whitespace
|
||||
list = true;
|
||||
listchars.__raw = "{ tab = '» ', trail = '·', nbsp = '␣', lead = '·'}";
|
||||
|
||||
# Start scrolling when the cursor is X lines away from edge
|
||||
scrolloff = 10;
|
||||
|
||||
ignorecase = true;
|
||||
smartcase = true;
|
||||
|
||||
cindent = true;
|
||||
|
||||
signcolumn = "yes";
|
||||
};
|
||||
|
||||
clipboard.providers.wl-copy.enable = true;
|
||||
clipboard.providers.xclip.enable = true;
|
||||
|
||||
plugins = {
|
||||
dashboard = {
|
||||
enable = true;
|
||||
|
||||
settings = {
|
||||
theme = "hyper";
|
||||
|
||||
config = {
|
||||
header = [
|
||||
"███╗ ██╗██╗██╗ ██╗██╗ ██╗██╗███╗ ███╗"
|
||||
"████╗ ██║██║╚██╗██╔╝██║ ██║██║████╗ ████║"
|
||||
"██╔██╗ ██║██║ ╚███╔╝ ██║ ██║██║██╔████╔██║"
|
||||
"██║╚██╗██║██║ ██╔██╗ ╚██╗ ██╔╝██║██║╚██╔╝██║"
|
||||
"██║ ╚████║██║██╔╝ ██╗ ╚████╔╝ ██║██║ ╚═╝ ██║"
|
||||
"╚═╝ ╚═══╝╚═╝╚═╝ ╚═╝ ╚═══╝ ╚═╝╚═╝ ╚═╝"
|
||||
""
|
||||
];
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
telescope = {
|
||||
enable = true;
|
||||
|
||||
keymaps = {
|
||||
"<C-f>" = "live_grep";
|
||||
"<C-p>" = "git_files";
|
||||
"<C-o>" = "find_files";
|
||||
};
|
||||
|
||||
extensions = {
|
||||
fzf-native = {
|
||||
enable = true;
|
||||
|
||||
settings = {
|
||||
fuzzy = true;
|
||||
override_file_sorter = true;
|
||||
override_generic_sorter = true;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
# Needed for telescope
|
||||
web-devicons.enable = true;
|
||||
|
||||
lualine = {
|
||||
enable = true;
|
||||
|
||||
settings = {
|
||||
options = {
|
||||
component_separators = "|";
|
||||
section_separators = "";
|
||||
globalstatus = true;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
neo-tree = {
|
||||
enable = true;
|
||||
closeIfLastWindow = true;
|
||||
filesystem = {
|
||||
filteredItems = {
|
||||
visible = true;
|
||||
hideDotfiles = false;
|
||||
hideGitignored = false;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
neogit.enable = true;
|
||||
|
||||
tiny-inline-diagnostic = {
|
||||
enable = true;
|
||||
|
||||
settings = {
|
||||
options = {
|
||||
show_source.enabled = true;
|
||||
settings.auto_start = true;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
coq-nvim = {
|
||||
enable = true;
|
||||
installArtifacts = true;
|
||||
settings.auto_start = "shut-up";
|
||||
|
||||
luaConfig.post = ''
|
||||
vim.g.coq_settings = {
|
||||
keymap = { jump_to_mark = "" },
|
||||
}
|
||||
'';
|
||||
};
|
||||
|
||||
nvim-autopairs.enable = true;
|
||||
comment.enable = true;
|
||||
sleuth.enable = true;
|
||||
|
||||
rustaceanvim.enable = true;
|
||||
|
||||
mkdnflow = {
|
||||
enable = true;
|
||||
|
||||
mappings = {
|
||||
MkdnEnter = {
|
||||
key = "<CR>";
|
||||
modes = [ "n" "v" "i" ];
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
lsp = {
|
||||
enable = true;
|
||||
|
||||
keymaps.diagnostic = {
|
||||
"<leader>j" = "goto_next";
|
||||
"<leader>k" = "goto_prev";
|
||||
};
|
||||
|
||||
servers = {
|
||||
typos_lsp.enable = true;
|
||||
markdown_oxide.enable = true;
|
||||
|
||||
ltex.enable = true;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
extraPlugins = [
|
||||
(pkgs.vimUtils.buildVimPlugin {
|
||||
name = "hml";
|
||||
src = inputs.hml;
|
||||
})
|
||||
|
||||
(pkgs.vimUtils.buildVimPlugin {
|
||||
name = "typst-preview";
|
||||
src = inputs.typst-preview;
|
||||
})
|
||||
];
|
||||
|
||||
extraConfigLua = ''
|
||||
require("hml").setup()
|
||||
require("typst-preview").setup()
|
||||
'';
|
||||
|
||||
extraPackages = with pkgs; [
|
||||
# Telescope
|
||||
ripgrep
|
||||
# typst-preview
|
||||
typst
|
||||
poppler-utils # (pdfinfo)
|
||||
];
|
||||
|
||||
keymaps = [
|
||||
{
|
||||
action = "<Cmd>Dashboard<CR>";
|
||||
key = "<leader>d";
|
||||
}
|
||||
{
|
||||
action = "<Cmd>Neotree toggle right<CR>";
|
||||
key = "<leader>f";
|
||||
}
|
||||
{
|
||||
action = "<Cmd>sp<CR><Cmd>wincmd j<CR><Cmd>term<CR>15<C-w>-i";
|
||||
key = "<leader>t";
|
||||
}
|
||||
{
|
||||
# Exit terminal mode
|
||||
action = "<C-\\><C-n>";
|
||||
key = "<C-e>";
|
||||
mode = [ "t" ];
|
||||
}
|
||||
{
|
||||
action = "<Cmd>vsplit<CR>";
|
||||
key = "<leader>v";
|
||||
}
|
||||
{
|
||||
action = "<Cmd>split<CR>";
|
||||
key = "<leader>h";
|
||||
}
|
||||
{
|
||||
action = "<Cmd>tabnew<CR>";
|
||||
key = "<leader>n";
|
||||
}
|
||||
{
|
||||
action = "<Cmd>tabn<CR>";
|
||||
key = "<C-]>";
|
||||
}
|
||||
{
|
||||
action = "<Cmd>tabp<CR>";
|
||||
key = "<C-[>";
|
||||
}
|
||||
{
|
||||
action = "<Cmd>lua require(\"typst-preview\").start()<CR>";
|
||||
key = "<C-m>s";
|
||||
}
|
||||
{
|
||||
action = "<Cmd>lua require(\"typst-preview\").stop()<CR>";
|
||||
key = "<C-m>q";
|
||||
}
|
||||
{
|
||||
action = "<Cmd>lua require(\"typst-preview\").prev_page()<CR>";
|
||||
key = "<C-m>k";
|
||||
}
|
||||
{
|
||||
action = "<Cmd>lua require(\"typst-preview\").next_page()<CR>";
|
||||
key = "<C-m>j";
|
||||
}
|
||||
] ++ (
|
||||
builtins.concatMap (k: [
|
||||
{
|
||||
action = "<Cmd>wincmd ${k}<CR>";
|
||||
key = "<C-${k}>";
|
||||
}
|
||||
{
|
||||
action = "<C-\\><C-n><Cmd>wincmd ${k} <CR>";
|
||||
key = "<C-${k}>";
|
||||
mode = [ "t" ];
|
||||
}
|
||||
]) ["h" "j" "k" "l"]
|
||||
);
|
||||
}
|
||||
239
flake.lock
generated
Normal file
239
flake.lock
generated
Normal file
@@ -0,0 +1,239 @@
|
||||
{
|
||||
"nodes": {
|
||||
"flake-parts": {
|
||||
"inputs": {
|
||||
"nixpkgs-lib": [
|
||||
"nixvim",
|
||||
"nixpkgs"
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1754487366,
|
||||
"narHash": "sha256-pHYj8gUBapuUzKV/kN/tR3Zvqc7o6gdFB9XKXIp1SQ8=",
|
||||
"owner": "hercules-ci",
|
||||
"repo": "flake-parts",
|
||||
"rev": "af66ad14b28a127c5c0f3bbb298218fc63528a18",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "hercules-ci",
|
||||
"repo": "flake-parts",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"flake-utils": {
|
||||
"inputs": {
|
||||
"systems": "systems"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1731533236,
|
||||
"narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=",
|
||||
"owner": "numtide",
|
||||
"repo": "flake-utils",
|
||||
"rev": "11707dc2f618dd54ca8739b309ec4fc024de578b",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "numtide",
|
||||
"repo": "flake-utils",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"flake-utils_2": {
|
||||
"inputs": {
|
||||
"systems": "systems_2"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1731533236,
|
||||
"narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=",
|
||||
"owner": "numtide",
|
||||
"repo": "flake-utils",
|
||||
"rev": "11707dc2f618dd54ca8739b309ec4fc024de578b",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "numtide",
|
||||
"repo": "flake-utils",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"hml": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1732174350,
|
||||
"narHash": "sha256-IdsYy0K4Q1qTpUwhf97bS2vGDHB+MBjZILy1MyVlIiE=",
|
||||
"owner": "mawkler",
|
||||
"repo": "hml.nvim",
|
||||
"rev": "54b4d0a4d800f79310443f9a26d54023daeb9e7c",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "mawkler",
|
||||
"repo": "hml.nvim",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"ixx": {
|
||||
"inputs": {
|
||||
"flake-utils": [
|
||||
"nixvim",
|
||||
"nuschtosSearch",
|
||||
"flake-utils"
|
||||
],
|
||||
"nixpkgs": [
|
||||
"nixvim",
|
||||
"nuschtosSearch",
|
||||
"nixpkgs"
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1754860581,
|
||||
"narHash": "sha256-EM0IE63OHxXCOpDHXaTyHIOk2cNvMCGPqLt/IdtVxgk=",
|
||||
"owner": "NuschtOS",
|
||||
"repo": "ixx",
|
||||
"rev": "babfe85a876162c4acc9ab6fb4483df88fa1f281",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "NuschtOS",
|
||||
"ref": "v0.1.1",
|
||||
"repo": "ixx",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nixpkgs": {
|
||||
"locked": {
|
||||
"lastModified": 1755704039,
|
||||
"narHash": "sha256-gKlP0LbyJ3qX0KObfIWcp5nbuHSb5EHwIvU6UcNBg2A=",
|
||||
"owner": "NixOS",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "9cb344e96d5b6918e94e1bca2d9f3ea1e9615545",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "NixOS",
|
||||
"ref": "nixos-25.05",
|
||||
"repo": "nixpkgs",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nixvim": {
|
||||
"inputs": {
|
||||
"flake-parts": "flake-parts",
|
||||
"nixpkgs": [
|
||||
"nixpkgs"
|
||||
],
|
||||
"nuschtosSearch": "nuschtosSearch",
|
||||
"systems": "systems_3"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1755900473,
|
||||
"narHash": "sha256-UxpKQvD3dTT4/ueJBDccmHeHfnuUD+864Mzu8GPJZig=",
|
||||
"owner": "nix-community",
|
||||
"repo": "nixvim",
|
||||
"rev": "18a1b5126f917fbcd65397b9ee429387fdbd51a6",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "nix-community",
|
||||
"repo": "nixvim",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nuschtosSearch": {
|
||||
"inputs": {
|
||||
"flake-utils": "flake-utils_2",
|
||||
"ixx": "ixx",
|
||||
"nixpkgs": [
|
||||
"nixvim",
|
||||
"nixpkgs"
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1755555503,
|
||||
"narHash": "sha256-WiOO7GUOsJ4/DoMy2IC5InnqRDSo2U11la48vCCIjjY=",
|
||||
"owner": "NuschtOS",
|
||||
"repo": "search",
|
||||
"rev": "6f3efef888b92e6520f10eae15b86ff537e1d2ea",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "NuschtOS",
|
||||
"repo": "search",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"root": {
|
||||
"inputs": {
|
||||
"flake-utils": "flake-utils",
|
||||
"hml": "hml",
|
||||
"nixpkgs": "nixpkgs",
|
||||
"nixvim": "nixvim",
|
||||
"typst-preview": "typst-preview"
|
||||
}
|
||||
},
|
||||
"systems": {
|
||||
"locked": {
|
||||
"lastModified": 1681028828,
|
||||
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
|
||||
"owner": "nix-systems",
|
||||
"repo": "default",
|
||||
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "nix-systems",
|
||||
"repo": "default",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"systems_2": {
|
||||
"locked": {
|
||||
"lastModified": 1681028828,
|
||||
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
|
||||
"owner": "nix-systems",
|
||||
"repo": "default",
|
||||
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "nix-systems",
|
||||
"repo": "default",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"systems_3": {
|
||||
"locked": {
|
||||
"lastModified": 1681028828,
|
||||
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
|
||||
"owner": "nix-systems",
|
||||
"repo": "default",
|
||||
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "nix-systems",
|
||||
"repo": "default",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"typst-preview": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1755810917,
|
||||
"narHash": "sha256-hE5HPsuskOSqJ1KYp9/eCL5K90fRhMBe6t+skr+wyrI=",
|
||||
"owner": "al-kot",
|
||||
"repo": "typst-preview.nvim",
|
||||
"rev": "8759307163ef59698ff443e3784ad6a7af4ea484",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "al-kot",
|
||||
"repo": "typst-preview.nvim",
|
||||
"type": "github"
|
||||
}
|
||||
}
|
||||
},
|
||||
"root": "root",
|
||||
"version": 7
|
||||
}
|
||||
67
flake.nix
Normal file
67
flake.nix
Normal file
@@ -0,0 +1,67 @@
|
||||
{
|
||||
inputs = {
|
||||
nixpkgs.url = "github:NixOS/nixpkgs/nixos-25.05";
|
||||
|
||||
flake-utils.url = "github:numtide/flake-utils";
|
||||
|
||||
nixvim = {
|
||||
url = "github:nix-community/nixvim";
|
||||
inputs.nixpkgs.follows = "nixpkgs";
|
||||
};
|
||||
|
||||
hml = {
|
||||
url = "github:mawkler/hml.nvim";
|
||||
flake = false;
|
||||
};
|
||||
|
||||
typst-preview = {
|
||||
url = "github:al-kot/typst-preview.nvim";
|
||||
flake = false;
|
||||
};
|
||||
};
|
||||
|
||||
outputs = { self, nixpkgs, flake-utils, nixvim, ... }@inputs:
|
||||
flake-utils.lib.eachDefaultSystem (system:
|
||||
let
|
||||
pkgs = import nixpkgs {
|
||||
inherit system;
|
||||
};
|
||||
|
||||
nixvimLib = nixvim.lib.${system};
|
||||
|
||||
nixvimModule = import ./config.nix;
|
||||
|
||||
nvim = nixvim.legacyPackages.${system}.makeNixvimWithModule {
|
||||
module = nixvimModule;
|
||||
extraSpecialArgs = {
|
||||
inherit inputs;
|
||||
};
|
||||
};
|
||||
in
|
||||
{
|
||||
checks.default = nixvimLib.check.mkTestDerivationFromNixvimModule {
|
||||
module = nixvimModule;
|
||||
};
|
||||
|
||||
packages.default = nvim;
|
||||
|
||||
packages.neovide = pkgs.stdenv.mkDerivation {
|
||||
name = "neovide";
|
||||
|
||||
phases = [ "installPhase" ];
|
||||
|
||||
installPhase = ''
|
||||
mkdir -p $out/bin
|
||||
|
||||
cat > $out/bin/neovide <<EOF
|
||||
#!${pkgs.runtimeShell}
|
||||
${pkgs.neovide}/bin/neovide --neovim-bin ${nvim}/bin/nvim "\$@"
|
||||
EOF
|
||||
|
||||
chmod +x $out/bin/neovide
|
||||
'';
|
||||
};
|
||||
}
|
||||
);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user