{ pkgs, lib, config, inputs, outputs, ... }: { programs.nixvim = { enable = true; globals.mapleader = " "; extraConfigLua = builtins.readFile ../config-files/nvim/init.lua; extraPlugins = with pkgs.vimPlugins; [headlines-nvim]; clipboard.providers.wl-copy.enable = true; options = { number = true; # Show line numbers relativenumber = true; # Show relative line numbers shiftwidth = 2; # Tab width should be 2 }; colorschemes.catppuccin.enable = true; plugins = { comment-nvim = { enable = true; }; indent-blankline.enable = true; lualine.enable = true; lsp-format = {enable = true;}; # copilot-lua = { # enable = true; # suggestion = { # enabled = false; # }; # panel.enabled = false; # }; # copilot-cmp.enable = true; lsp = { enable = true; servers = { pylsp.enable = true; bashls.enable = true; lua-ls.enable = true; gopls.enable = true; nushell.enable = true; clangd.enable = true; svelte.enable = true; tsserver.enable = true; eslint.enable = true; rust-analyzer = { enable = true; installCargo = false; installRustc = false; }; nil_ls.enable = true; }; }; gitsigns.enable = true; fugitive.enable = true; nix-develop.enable = true; treesitter = { enable = true; folding = true; indent = true; nixvimInjections = true; }; treesitter-refactor = { enable = true; smartRename.enable = true; highlightCurrentScope.enable = true; navigation.enable = true; }; cursorline.enable = true; cmp = { enable = true; autoEnableSources = true; settings = { snippet = { expand = "function(args) require('luasnip').lsp_expand(args.body) end"; }; sources = [ {name = "nvim_lsp";} {name = "path";} {name = "buffer";} {name = "luasnip";} # {name = "copilot";} ]; #mapping = { # __raw = '' # cmp.mapping.preset.insert({ # [''] = # }) # ''; #}; mapping = { "" = '' cmp.mapping.confirm({ select = true }) ''; "" = '' function(fallback) local luasnip = require('luasnip') if cmp.visible() then cmp.select_next_item() elseif luasnip.expandable() then luasnip.expand() elseif luasnip.expand_or_jumpable() then luasnip.expand_or_jump() else fallback() end end ''; }; }; }; telescope.enable = true; telescope.extensions = {file-browser.enable = true;}; which-key.enable = true; cmp-nvim-lsp.enable = true; cmp-nvim-lua.enable = true; noice.enable = true; notify.enable = true; luasnip.enable = true; cmp_luasnip.enable = true; neo-tree.enable = true; presence-nvim.enable = true; crates-nvim.enable = true; fidget.enable = true; alpha = { enable = true; theme = null; iconsEnabled = true; layout = [ { type = "padding"; val = 4; } { type = "text"; val = [ " ▒██ ██▒ █████ ▄▄▄█████▓ ▄████▄ " " ▒▒ █ █ ▒░▒██▓ ██▒▓ ██▒ ▓▒▒██▀ ▀█ " " ░░ █ ░▒██▒ ██░▒ ▓██░ ▒░▒▓█ ▄ " " ░ █ █ ▒ ░██ █▀ ░░ ▓██▓ ░ ▒▓▓▄ ▄██▒ " " ▒██▒ ▒██▒░▒███▒█▄ ▒██▒ ░ ▒ ▓███▀ ░ " " ▒▒ ░ ░▓ ░░░ ▒▒░ ▒ ▒ ░░ ░ ░▒ ▒ ░ " " ░░ ░▒ ░ ░ ▒░ ░ ░ ░ ▒ " " ░ ░ ░ ░ ░ ░ " " ░ ░ ░ ░ ░ " " ░ " ]; #val = [ # " ███████████████ ██████████████████" # " ███████████████ ██ " # " ███████████████ ██████████████████" # " ███████████████ ██ ██" # " ███████████████ ██████████████████" # " ███████████████ █ ██ █ " # " ███████████████ █ ██ █ " # " ███████████████ █ ██ █ " # " ███████████████ " # " ███████████████ ██████████████████" # " ███████████████ ██ ██ " # " ██████████████████████████ ██████████████████" # " ██████████████████████████ ██ ██" # " ██████████████████████████ ██████████████████" # " ██████████████████████████ ██ ██ " # " ██████████████████████████ ██████████████████" # " ██████████████████████████ " # " ██████████████████████████ ▀▀▀▀▀▀▀▀██▀▀▀▀▀▀▀▀" # " ██████████████████████████ ▀▀▀▀▀▀▀▀██▀▀▀▀▀▀▀▀" # " ██████████████████████████ ██████████████████" # " ███████████████▀▀▀▀▀▀▀▀▀▀▀ ██ ██" # " ███████████████ ██████████████████" # " ███████████████ ▄▄▄▄▄▄▄▄██▄▄▄▄▄▄▄▄" # " ████████████████ ▄▄▄▄▄▄▄▄██▄▄▄▄▄▄▄▄" # " █████████████████ " # " ██████████████████ ██████████████████" # " ███████████████████ ██ " # " ████████████████████ ██ " # " █████████████████████ ██ " # " ██████████████████████ ██ " # " ███████████████████████ ██ " # " ████████████████████████ ██████████████████" #]; opts = { position = "center"; hl = "Type"; }; } { type = "text"; # val = [ # " ███▄ █ ██▓▒██ ██▒ ██▒ █▓ ██▓ ███▄ ▄███▓" # " ██ ▀█ █ ▓██▒▒▒ █ █ ▒░▓██░ █▒▓██▒▓██▒▀█▀ ██▒" # "▓██ ▀█ ██▒▒██▒░░ █ ░ ▓██ █▒░▒██▒▓██ ▓██░" # "▓██▒ ▐▌██▒░██░ ░ █ █ ▒ ▒██ █░░░██░▒██ ▒██ " # "▒██░ ▓██░░██░▒██▒ ▒██▒ ▒▀█░ ░██░▒██▒ ░██▒" # "░ ▒░ ▒ ▒ ░▓ ▒▒ ░ ░▓ ░ ░ ▐░ ░▓ ░ ▒░ ░ ░" # "░ ░░ ░ ▒░ ▒ ░░░ ░▒ ░ ░ ░░ ▒ ░░ ░ ░" # " ░ ░ ░ ▒ ░ ░ ░ ░░ ▒ ░░ ░ " # " ░ ░ ░ ░ ░ ░ ░ " # " ░ " # ]; #val = [ # "TOHA HEAVY INDUSTRIES" #]; val = [ "git@git.sr.ht:xqtc" ]; opts = { position = "center"; hl = "Keyword"; }; } { type = "padding"; val = 8; } { type = "group"; val = [ { type = "text"; val = " To browse files press 'ff'"; opts = { position = "center"; }; } ]; opts = { position = "center"; }; } { type = "padding"; val = 2; } { type = "text"; val = "uwu"; opts = { position = "center"; hl = "Keyword"; }; } { type = "padding"; val = 4; } #{ # type = "text"; # val = [ # "      /^>》, -―‐‐<^}" # "     ./:::/,≠´::::::ヽ." # "    /::::〃::::/}::丿ハ" # "   ./:::::i{l|/ ノ/ }::}" # "   /:::::::瓜イ> ´< ,:ノ" # "  ./::::::|ノヘ.{、 (_フ_ノノイ_" # "  |:::::::|/}`ス / /" # ". |::::::|(_:::つ/ ThinkPad / neovim!" # ". ̄ ̄ ̄ ̄ ̄ ̄ ̄\/_____/ ̄ ̄ ̄ ̄ ̄" # ]; # opts = { # position = "center"; # hl = "Type"; # }; #} ]; opts = { #noautocmd = true; keymap = { press = ""; press_queue = ""; }; }; }; bufferline.enable = true; }; keymaps = [ { mode = "n"; key = "ff"; options.silent = true; action = "Telescope find_files"; } { mode = "n"; key = "fe"; options.silent = true; action = "Telescope file_browser"; } { mode = "n"; key = "hh"; options.silent = true; action = "Alpha"; } { mode = "n"; key = "bb"; options.silent = true; action = "Telescope buffers"; } { mode = "n"; key = "Gp"; action = "Git pull"; } { mode = "n"; key = "GP"; action = "Git push"; } { mode = "n"; key = "Gc"; action = "Git commit"; } { mode = "n"; key = "Ga"; action = "Git add ."; } { mode = "n"; key = "Gd"; action = "Git diff"; } { mode = "n"; key = "nt"; action = "Neotree toggle left"; } { mode = "n"; key = "P"; action = ''"+p''; } { mode = ["n" "v"]; key = "y"; action = ''[["+y]]''; } { mode = ["n"]; key = "Y"; action = ''[["+Y]]''; } { mode = ["n"]; key = "sr"; action = '' function() vim.lsp.buf.rename() end ''; lua = true; } ]; }; }