{ nixpkgs, flake-utils, treefmt-nix, nvf, ... }: flake-utils.lib.eachDefaultSystem (system: let pkgs = nixpkgs.legacyPackages.${system}; treefmtEval = treefmt-nix.lib.evalModule pkgs ./treefmt.nix; treefmtWrapper = treefmtEval.config.build.wrapper; neovimConfigured = nvf.lib.neovimConfiguration { inherit pkgs; modules = [ { config.vim = { preventJunkFiles = true; telescope.enable = true; autopairs.nvim-autopairs.enable = true; autocomplete.nvim-cmp.enable = true; snippets.luasnip.enable = true; filetree.neo-tree.enable = true; tabline.nvimBufferline.enable = true; dashboard.alpha.enable = true; notify.nvim-notify.enable = true; projects.project-nvim.enable = true; comments.comment-nvim.enable = true; lsp = { formatOnSave = true; lightbulb.enable = true; trouble.enable = true; lspSignature.enable = true; otter-nvim.enable = true; lsplines.enable = true; }; languages = { enableLSP = true; enableFormat = true; enableTreesitter = true; enableExtraDiagnostics = true; nix.enable = true; markdown.enable = true; bash.enable = true; clang.enable = true; css.enable = true; html.enable = true; sql.enable = true; go.enable = true; python.enable = true; rust = { enable = true; crates.enable = true; }; }; visuals = { nvim-web-devicons.enable = true; cinnamon-nvim.enable = true; fidget-nvim.enable = true; highlight-undo.enable = true; indent-blankline.enable = true; cellular-automaton.enable = true; }; statusline.lualine = { enable = true; theme = "gruvbox"; }; theme = { enable = true; name = "gruvbox"; style = "dark"; transparent = false; }; binds = { whichKey.enable = true; cheatsheet.enable = true; }; git = { enable = true; gitsigns.enable = true; }; utility = { surround.enable = true; diffview-nvim.enable = true; motion = { hop.enable = true; leap.enable = true; }; }; terminal.toggleterm = { enable = true; lazygit.enable = true; }; ui = { borders.enable = true; noice.enable = true; colorizer.enable = true; smartcolumn.enable = true; fastaction.enable = true; }; }; } ]; }; in { packages = { formatter = treefmtWrapper; inherit (neovimConfigured) neovim; }; })