my neovim configuration
at main 90 lines 2.4 kB view raw
1{ 2 description = "blu's neovim config"; 3 4 inputs.nixpkgs.url = "github:nixos/nixpkgs/nixpkgs-unstable"; 5 inputs.treefmt-nix.url = "github:numtide/treefmt-nix"; 6 7 outputs = 8 { 9 self, 10 nixpkgs, 11 treefmt-nix, 12 }: 13 let 14 systems = [ 15 "x86_64-linux" 16 "aarch64-linux" 17 "aarch64-darwin" 18 ]; 19 forAllSystems = f: nixpkgs.lib.genAttrs systems (system: f nixpkgs.legacyPackages.${system}); 20 in 21 { 22 formatter = forAllSystems ( 23 pkgs: 24 (treefmt-nix.lib.evalModule pkgs { 25 projectRootFile = "flake.nix"; 26 27 programs.deadnix.enable = true; 28 programs.nixfmt.enable = true; 29 programs.statix.enable = true; 30 31 programs.stylua.enable = true; 32 settings.formatter.stylua.options = [ 33 "--indent-type" 34 "Spaces" 35 "--indent-width" 36 "4" 37 ]; 38 }).config.build.wrapper 39 ); 40 41 packages = forAllSystems ( 42 pkgs: 43 let 44 neovim = pkgs.neovim.override { 45 configure = { 46 packages.ptero = { 47 start = [ pkgs.vimPlugins.lazy-nvim ]; 48 }; 49 customRC = '' 50 lua << EOF 51 vim.g.ptero_config_path = "${self}" 52 package.path = "${self}/lua/?.lua;${self}/lua/?/init.lua;" .. package.path 53 EOF 54 set runtimepath^=${self} 55 luafile ${self}/init.lua 56 ''; 57 }; 58 }; 59 lsps = [ 60 pkgs.bash-language-server 61 pkgs.basedpyright 62 pkgs.dockerfile-language-server 63 pkgs.gopls 64 pkgs.lua-language-server 65 pkgs.rust-analyzer 66 pkgs.typescript-language-server 67 pkgs.vim-language-server 68 pkgs.vscode-langservers-extracted 69 pkgs.zls 70 ]; 71 in 72 { 73 default = pkgs.symlinkJoin { 74 name = "ptero"; 75 paths = [ neovim ] ++ lsps; 76 nativeBuildInputs = [ pkgs.makeWrapper ]; 77 postBuild = '' 78 rm $out/bin/nvim 79 makeWrapper ${neovim}/bin/nvim $out/bin/nvim \ 80 --prefix PATH : $out/bin 81 ''; 82 }; 83 } 84 ); 85 86 overlays.default = _final: prev: { 87 ptero = self.packages.${prev.system}.default; 88 }; 89 }; 90}