{ inputs = { nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable"; nixvim.url = "github:nix-community/nixvim"; }; outputs = { nixpkgs, nixvim, self, }: let pkgs = nixpkgs.legacyPackages.x86_64-linux; npkgs = nixvim.legacyPackages.x86_64-linux; in { packages.x86_64-linux.default = npkgs.makeNixvimWithModule { module = { config = { opts = { mouse = ""; expandtab = true; tabstop = 4; }; colorschemes.kanagawa = { enable = true; settings.transparent = true; }; extraPackages = [ pkgs.nixfmt-rfc-style pkgs.shfmt ]; filetype.pattern.".*".__raw = '' function(path, bufnr) local content = vim.api.nvim_buf_get_lines(bufnr, 1, 2, false)[1] or "" if vim.regex("bash"):match_str(content) then return 'bash' elseif vim.regex("python"):match_str(content) then return 'python' end end ''; plugins = { ledger.enable = true; lsp-format.enable = true; vim-css-color.enable = true; lsp = { enable = true; servers = { cmake.enable = true; gopls.enable = true; ruff.enable = true; nixd = { enable = true; extraOptions.formatting.command = "nixfmt"; }; bashls.enable = true; }; }; luasnip.enable = true; cmp = { enable = true; cmdline = { ":" = { mapping.__raw = "cmp.mapping.preset.cmdline()"; sources = [ { name = "path"; } { name = "cmdline"; option.ignore_cmds = [ "Man" "!" ]; } ]; }; }; settings = { autoEnableSources = true; sources = [ { name = "nvim_lsp"; } { name = "path"; } { name = "buffer"; } { name = "luasnip"; } ]; mapping = { "" = "cmp.mapping.confirm({ select = true })"; "" = '' cmp.mapping(function(fallback) if cmp.visible() then cmp.select_next_item({ behavior = cmp.SelectBehavior.Select }) else fallback() end end, {"i","s","c",}) ''; }; }; }; }; }; }; }; }; }