From 7c6eea3d68a64346b36fb824dab17a93bf2433a1 Mon Sep 17 00:00:00 2001 From: Quentin Boyer Date: Tue, 14 Dec 2021 21:17:02 +0100 Subject: [PATCH] use nix as a nvim packet manager --- flake.lock | 544 +++++++++++++++++++++++++++++++++++++++++++ flake.nix | 327 +++++++++++++++++++++++--- flake.nix.in | 77 ++++++ home.nix | 21 +- nvim/init.lua | 3 +- nvim/lua/plugins.lua | 67 ------ plugins.py | 57 +++++ 7 files changed, 989 insertions(+), 107 deletions(-) create mode 100644 flake.nix.in delete mode 100644 nvim/lua/plugins.lua create mode 100644 plugins.py diff --git a/flake.lock b/flake.lock index 889c1e6..1e20adc 100644 --- a/flake.lock +++ b/flake.lock @@ -1,5 +1,85 @@ { "nodes": { + "cmp-buffer": { + "flake": false, + "locked": { + "lastModified": 1638920207, + "narHash": "sha256-FYAb3Wv9wbaxvv7PXi4ko4mqmsRo2V7yM42Ci+3ST0w=", + "owner": "hrsh7th", + "repo": "cmp-buffer", + "rev": "a0fe52489ff6e235d62407f8fa72aef80222040a", + "type": "github" + }, + "original": { + "owner": "hrsh7th", + "repo": "cmp-buffer", + "type": "github" + } + }, + "cmp-calc": { + "flake": false, + "locked": { + "lastModified": 1633934766, + "narHash": "sha256-XirmcUUsW+zzMh02X+sJW7ZAFkY1WesSI1eL9Yl1CC0=", + "owner": "hrsh7th", + "repo": "cmp-calc", + "rev": "eb7bd1d7382ac26d8eb7346e36405c0ae94333a2", + "type": "github" + }, + "original": { + "owner": "hrsh7th", + "repo": "cmp-calc", + "type": "github" + } + }, + "cmp-latex-symbols": { + "flake": false, + "locked": { + "lastModified": 1631255143, + "narHash": "sha256-9KHNmb0yt/AmUOf1etbj7rkDXTYYj1S89K8ycD3gEp8=", + "owner": "kdheepak", + "repo": "cmp-latex-symbols", + "rev": "29dc9e53d17cd1f26605888f85500c8ba79cebff", + "type": "github" + }, + "original": { + "owner": "kdheepak", + "repo": "cmp-latex-symbols", + "type": "github" + } + }, + "cmp-nvim-lsp": { + "flake": false, + "locked": { + "lastModified": 1636543770, + "narHash": "sha256-jLfW4xoYnEOWa7oWSmkB7vNxu9Jgttbme+nTiAC92so=", + "owner": "hrsh7th", + "repo": "cmp-nvim-lsp", + "rev": "134117299ff9e34adde30a735cd8ca9cf8f3db81", + "type": "github" + }, + "original": { + "owner": "hrsh7th", + "repo": "cmp-nvim-lsp", + "type": "github" + } + }, + "cmp-path": { + "flake": false, + "locked": { + "lastModified": 1639492848, + "narHash": "sha256-/dFsJ6er4H0jF79RvoWRh77asEKFyxoN2Yw5Gml72Pc=", + "owner": "hrsh7th", + "repo": "cmp-path", + "rev": "56a0fe5c46835ecc6323bda69f3924758b991590", + "type": "github" + }, + "original": { + "owner": "hrsh7th", + "repo": "cmp-path", + "type": "github" + } + }, "dotacat": { "flake": false, "locked": { @@ -16,6 +96,22 @@ "url": "https://gitlab.scd31.com/stephen/dotacat.git" } }, + "editorconfig-vim": { + "flake": false, + "locked": { + "lastModified": 1627199038, + "narHash": "sha256-HFHrm+V296IJh27yJW76DD09ehYc8hMxnnvR9+ddP2M=", + "owner": "editorconfig", + "repo": "editorconfig-vim", + "rev": "3078cd10b28904e57d878c0d0dab42aa0a9fdc89", + "type": "github" + }, + "original": { + "owner": "editorconfig", + "repo": "editorconfig-vim", + "type": "github" + } + }, "fast-syntax-highlighting": { "flake": false, "locked": { @@ -32,6 +128,22 @@ "type": "github" } }, + "filetype.nvim": { + "flake": false, + "locked": { + "lastModified": 1638898646, + "narHash": "sha256-79/dTRRtL37gD0ILH/d3s7Lm1ZmL3PxQZhy1994SKz8=", + "owner": "nathom", + "repo": "filetype.nvim", + "rev": "0426dc8fee6d9b49b5895206c3c02f65135d25bc", + "type": "github" + }, + "original": { + "owner": "nathom", + "repo": "filetype.nvim", + "type": "github" + } + }, "flake-compat": { "flake": false, "locked": { @@ -63,6 +175,38 @@ "type": "github" } }, + "galaxyline.nvim": { + "flake": false, + "locked": { + "lastModified": 1634656504, + "narHash": "sha256-wgk+BjMgGUZr7ZTgP45LHO4vWR5tHm8v2viYs3fM4kk=", + "owner": "NTBBloodbath", + "repo": "galaxyline.nvim", + "rev": "7b812cfddfcac7d9031e2f8e03f2b71fe8b2558d", + "type": "github" + }, + "original": { + "owner": "NTBBloodbath", + "repo": "galaxyline.nvim", + "type": "github" + } + }, + "gitsigns.nvim": { + "flake": false, + "locked": { + "lastModified": 1639400161, + "narHash": "sha256-Uzk0oapIcflO/MUpISm9MkWz091soRCV3n7BOW3MEgo=", + "owner": "lewis6991", + "repo": "gitsigns.nvim", + "rev": "a451f97117bd1ede582a6b9db61c387c48d880b6", + "type": "github" + }, + "original": { + "owner": "lewis6991", + "repo": "gitsigns.nvim", + "type": "github" + } + }, "home-manager": { "inputs": { "nixpkgs": "nixpkgs" @@ -81,6 +225,102 @@ "type": "github" } }, + "indentLine": { + "flake": false, + "locked": { + "lastModified": 1611828926, + "narHash": "sha256-GFbBINmfzPoUHKKfJoTk8MDqG5p3YjUrZJOZWjLZQ9s=", + "owner": "Yggdroot", + "repo": "indentLine", + "rev": "5617a1cf7d315e6e6f84d825c85e3b669d220bfa", + "type": "github" + }, + "original": { + "owner": "Yggdroot", + "repo": "indentLine", + "type": "github" + } + }, + "kommentary": { + "flake": false, + "locked": { + "lastModified": 1638539682, + "narHash": "sha256-Sq/117fzSdHjz8P+KDP2j1LmebMQJKPZjTG8ixRgTuc=", + "owner": "b3nj5m1n", + "repo": "kommentary", + "rev": "2e1c3be90d555cd2c1f70b1c24867cee08d352f4", + "type": "github" + }, + "original": { + "owner": "b3nj5m1n", + "repo": "kommentary", + "type": "github" + } + }, + "lsp-status.nvim": { + "flake": false, + "locked": { + "lastModified": 1638992828, + "narHash": "sha256-5K7AtqAAiuma1bHba2ijbfHKWr9r7Dxd8BfGU2zxLKo=", + "owner": "nvim-lua", + "repo": "lsp-status.nvim", + "rev": "4073f766f1303fb602802075e558fe43e382cc92", + "type": "github" + }, + "original": { + "owner": "nvim-lua", + "repo": "lsp-status.nvim", + "type": "github" + } + }, + "lsp_extensions.nvim": { + "flake": false, + "locked": { + "lastModified": 1631389468, + "narHash": "sha256-xCxagAyscEgVYOfd1gTd3PDG8TOcztxpqFVZwX5T/Vs=", + "owner": "nvim-lua", + "repo": "lsp_extensions.nvim", + "rev": "4011f4aec61ba59c734f5dbf52e91f258b99d985", + "type": "github" + }, + "original": { + "owner": "nvim-lua", + "repo": "lsp_extensions.nvim", + "type": "github" + } + }, + "lsp_signature.nvim": { + "flake": false, + "locked": { + "lastModified": 1639290715, + "narHash": "sha256-c+TrSgLSpz7fspQqF4mzCbvp8rygzbDpgxix6NRonDs=", + "owner": "ray-x", + "repo": "lsp_signature.nvim", + "rev": "8642896791c31f12ac18af661d91f990b288b4cc", + "type": "github" + }, + "original": { + "owner": "ray-x", + "repo": "lsp_signature.nvim", + "type": "github" + } + }, + "lspkind-nvim": { + "flake": false, + "locked": { + "lastModified": 1638754302, + "narHash": "sha256-qIs65OIV0m5Y3pe5ozG6sYa1yIx0vXpkNC0Gkkm9amw=", + "owner": "onsails", + "repo": "lspkind-nvim", + "rev": "f3b5efa11f0665accb7bd0258260b9d08dd4956e", + "type": "github" + }, + "original": { + "owner": "onsails", + "repo": "lspkind-nvim", + "type": "github" + } + }, "naersk": { "inputs": { "nixpkgs": "nixpkgs_2" @@ -296,6 +536,150 @@ "type": "github" } }, + "null-ls.nvim": { + "flake": false, + "locked": { + "lastModified": 1639500135, + "narHash": "sha256-AfDPx10NkiZ1yGsIAPxIQf9fmU87Xy+sZ3v+kt2LB/I=", + "owner": "jose-elias-alvarez", + "repo": "null-ls.nvim", + "rev": "18179a561f3587a7ea17310cd0bb1dc4be557f04", + "type": "github" + }, + "original": { + "owner": "jose-elias-alvarez", + "repo": "null-ls.nvim", + "type": "github" + } + }, + "nvim-cmp": { + "flake": false, + "locked": { + "lastModified": 1639489305, + "narHash": "sha256-q9n3ltwI5nEPbZNfkTrsYumLI/jtqqdAUYQrUlu2cg0=", + "owner": "hrsh7th", + "repo": "nvim-cmp", + "rev": "da4c071f6bdb1edfa1debc7e1f7842c2d620bb04", + "type": "github" + }, + "original": { + "owner": "hrsh7th", + "repo": "nvim-cmp", + "type": "github" + } + }, + "nvim-lightbulb": { + "flake": false, + "locked": { + "lastModified": 1636766265, + "narHash": "sha256-vxxYKJzX8hsky32Z+Tr3qYYCS0+3TDiQIg2U8/4U2qo=", + "owner": "kosayoda", + "repo": "nvim-lightbulb", + "rev": "cd5267d2d708e908dbd668c7de74e1325eb1e1da", + "type": "github" + }, + "original": { + "owner": "kosayoda", + "repo": "nvim-lightbulb", + "type": "github" + } + }, + "nvim-lspconfig": { + "flake": false, + "locked": { + "lastModified": 1639476445, + "narHash": "sha256-ZBLDE8+fHREiJbzKKL28Q0N/axTHMCym2ajVd4ROqDo=", + "owner": "neovim", + "repo": "nvim-lspconfig", + "rev": "dd15974986619b1f3143a9e666e36f41763ccdb4", + "type": "github" + }, + "original": { + "owner": "neovim", + "repo": "nvim-lspconfig", + "type": "github" + } + }, + "nvim-treesitter": { + "flake": false, + "locked": { + "lastModified": 1639506681, + "narHash": "sha256-xn7iae5bGoWX5tMgq4eSDKI2xz2ee2BSmauwCxaxTOU=", + "owner": "nvim-treesitter", + "repo": "nvim-treesitter", + "rev": "be741e256895c5ead5254b85366a136382c64ba8", + "type": "github" + }, + "original": { + "owner": "nvim-treesitter", + "repo": "nvim-treesitter", + "type": "github" + } + }, + "nvim-web-devicons": { + "flake": false, + "locked": { + "lastModified": 1638819655, + "narHash": "sha256-bmYkGOZCP19SDRwqjKeqRh/3uD3EySeVnJmRqNmznY4=", + "owner": "kyazdani42", + "repo": "nvim-web-devicons", + "rev": "344331467509802e1af200f08ec3da278be5cbba", + "type": "github" + }, + "original": { + "owner": "kyazdani42", + "repo": "nvim-web-devicons", + "type": "github" + } + }, + "plantuml-syntax": { + "flake": false, + "locked": { + "lastModified": 1630512037, + "narHash": "sha256-gKHfVv5zje3p8Y6YvagmpWH29HdWLME8Pz3moKnkSR8=", + "owner": "aklt", + "repo": "plantuml-syntax", + "rev": "405186847a44c16dd039bb644541b4c8fbdab095", + "type": "github" + }, + "original": { + "owner": "aklt", + "repo": "plantuml-syntax", + "type": "github" + } + }, + "plenary.nvim": { + "flake": false, + "locked": { + "lastModified": 1639507662, + "narHash": "sha256-Sd6GtgA5cfbrprOrK6jGPpVWepIBR9+IeAk/SVBG7sM=", + "owner": "nvim-lua", + "repo": "plenary.nvim", + "rev": "b5fd5cab51f8e30d669295ec361a48b13c245eb5", + "type": "github" + }, + "original": { + "owner": "nvim-lua", + "repo": "plenary.nvim", + "type": "github" + } + }, + "popup.nvim": { + "flake": false, + "locked": { + "lastModified": 1637254091, + "narHash": "sha256-dNWz/xovUg55fDZUpVs/2kLphk3lqQyvPtc9ATwbeSQ=", + "owner": "nvim-lua", + "repo": "popup.nvim", + "rev": "b7404d35d5d3548a82149238289fa71f7f6de4ac", + "type": "github" + }, + "original": { + "owner": "nvim-lua", + "repo": "popup.nvim", + "type": "github" + } + }, "powerlevel10k": { "flake": false, "locked": { @@ -334,20 +718,68 @@ }, "root": { "inputs": { + "cmp-buffer": "cmp-buffer", + "cmp-calc": "cmp-calc", + "cmp-latex-symbols": "cmp-latex-symbols", + "cmp-nvim-lsp": "cmp-nvim-lsp", + "cmp-path": "cmp-path", "dotacat": "dotacat", + "editorconfig-vim": "editorconfig-vim", "fast-syntax-highlighting": "fast-syntax-highlighting", + "filetype.nvim": "filetype.nvim", + "galaxyline.nvim": "galaxyline.nvim", + "gitsigns.nvim": "gitsigns.nvim", "home-manager": "home-manager", + "indentLine": "indentLine", + "kommentary": "kommentary", + "lsp-status.nvim": "lsp-status.nvim", + "lsp_extensions.nvim": "lsp_extensions.nvim", + "lsp_signature.nvim": "lsp_signature.nvim", + "lspkind-nvim": "lspkind-nvim", "naersk": "naersk", "neovim-nightly-overlay": "neovim-nightly-overlay", "nix-zsh-completions": "nix-zsh-completions", "nixpkgs": "nixpkgs_5", "nixpkgs-mozilla": "nixpkgs-mozilla", + "null-ls.nvim": "null-ls.nvim", + "nvim-cmp": "nvim-cmp", + "nvim-lightbulb": "nvim-lightbulb", + "nvim-lspconfig": "nvim-lspconfig", + "nvim-treesitter": "nvim-treesitter", + "nvim-web-devicons": "nvim-web-devicons", + "plantuml-syntax": "plantuml-syntax", + "plenary.nvim": "plenary.nvim", + "popup.nvim": "popup.nvim", "powerlevel10k": "powerlevel10k", "rnix-lsp": "rnix-lsp", + "startuptime.vim": "startuptime.vim", "stylua": "stylua", + "telescope.nvim": "telescope.nvim", + "vim-Grammalecte": "vim-Grammalecte", + "vim-LanguageTool": "vim-LanguageTool", + "vim-headerguard": "vim-headerguard", + "vim-matchup": "vim-matchup", + "vim-moonfly-colors": "vim-moonfly-colors", + "vim-vsnip": "vim-vsnip", "zsh-nix-shell": "zsh-nix-shell" } }, + "startuptime.vim": { + "flake": false, + "locked": { + "lastModified": 1489614997, + "narHash": "sha256-ELshiUyVaIoNJl63/0W7AiyKigPWS1K+WZJVlAC6M0Y=", + "owner": "tweekmonster", + "repo": "startuptime.vim", + "rev": "dfa57f522d6f61793fe5fea65bca7484751b8ca2", + "type": "github" + }, + "original": { + "owner": "tweekmonster", + "repo": "startuptime.vim", + "type": "github" + } + }, "stylua": { "flake": false, "locked": { @@ -364,6 +796,22 @@ "type": "github" } }, + "telescope.nvim": { + "flake": false, + "locked": { + "lastModified": 1639163304, + "narHash": "sha256-IaMmO1z02jSHuqYiMdGDOOmgi9kmw8fEHnUjQhRLyRo=", + "owner": "nvim-telescope", + "repo": "telescope.nvim", + "rev": "5f37fbfa837dfee7ecd30f388b271f4a71c0a9e0", + "type": "github" + }, + "original": { + "owner": "nvim-telescope", + "repo": "telescope.nvim", + "type": "github" + } + }, "utils": { "locked": { "lastModified": 1629481132, @@ -379,6 +827,102 @@ "type": "github" } }, + "vim-Grammalecte": { + "flake": false, + "locked": { + "lastModified": 1627412597, + "narHash": "sha256-NtvJVqVc/2Sx8v+u0bFap6hpmZEt2ERYZZv/EEeZJDU=", + "owner": "dpelle", + "repo": "vim-Grammalecte", + "rev": "a0ce51a77e56151f62ddbfd10e7dec46000f2848", + "type": "github" + }, + "original": { + "owner": "dpelle", + "repo": "vim-Grammalecte", + "type": "github" + } + }, + "vim-LanguageTool": { + "flake": false, + "locked": { + "lastModified": 1612807145, + "narHash": "sha256-+dCUjBi5UO70Mjs8wOEM8YOc9NHbrFd4DvIzmgg1hwA=", + "owner": "dpelle", + "repo": "vim-LanguageTool", + "rev": "0372ffae78aa3eac3bfa48ba3bf2f4015a86385a", + "type": "github" + }, + "original": { + "owner": "dpelle", + "repo": "vim-LanguageTool", + "type": "github" + } + }, + "vim-headerguard": { + "flake": false, + "locked": { + "lastModified": 1430175944, + "narHash": "sha256-ANMyw7uaD2T8dwQ70dYjrmhnfj7rfzDVo5xUcwsgBis=", + "owner": "drmikehenry", + "repo": "vim-headerguard", + "rev": "e53b37fa0772ffe2f30209f6109f5f2ae0fbf48f", + "type": "github" + }, + "original": { + "owner": "drmikehenry", + "repo": "vim-headerguard", + "type": "github" + } + }, + "vim-matchup": { + "flake": false, + "locked": { + "lastModified": 1638237820, + "narHash": "sha256-HhNvaiVYR8sI4UItJVZDYodZjQYmV1ZJ0NmMDiN5DqY=", + "owner": "andymass", + "repo": "vim-matchup", + "rev": "ef044ee012baa01d6f4ad79a04eeb5edb5bc7d84", + "type": "github" + }, + "original": { + "owner": "andymass", + "repo": "vim-matchup", + "type": "github" + } + }, + "vim-moonfly-colors": { + "flake": false, + "locked": { + "lastModified": 1639034380, + "narHash": "sha256-jOGJoBh7jvs4rv06lau6s5QeikBeFTCV7QNNoc1aEEw=", + "owner": "bluz71", + "repo": "vim-moonfly-colors", + "rev": "7d8badd5e1355d7a1f33033249d6a286efcd0d47", + "type": "github" + }, + "original": { + "owner": "bluz71", + "repo": "vim-moonfly-colors", + "type": "github" + } + }, + "vim-vsnip": { + "flake": false, + "locked": { + "lastModified": 1637571079, + "narHash": "sha256-rtCUfWcf7FPajQXXPRLbvU/Ks9OtwEe+hKAhXWdAGQ0=", + "owner": "hrsh7th", + "repo": "vim-vsnip", + "rev": "30449e9c19c73f64f4c87c29c426318f5519c314", + "type": "github" + }, + "original": { + "owner": "hrsh7th", + "repo": "vim-vsnip", + "type": "github" + } + }, "zsh-nix-shell": { "flake": false, "locked": { diff --git a/flake.nix b/flake.nix index 69c9efe..97178e8 100644 --- a/flake.nix +++ b/flake.nix @@ -1,41 +1,170 @@ { description = "NixOS configuration"; - inputs = { - nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable"; - home-manager.url = "github:nix-community/home-manager"; - neovim-nightly-overlay.url = "github:nix-community/neovim-nightly-overlay"; - nixpkgs-mozilla = { - url = "github:mozilla/nixpkgs-mozilla"; - flake = false; + inputs = + { + nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable"; + home-manager.url = "github:nix-community/home-manager"; + neovim-nightly-overlay.url = "github:nix-community/neovim-nightly-overlay"; + nixpkgs-mozilla = { + url = "github:mozilla/nixpkgs-mozilla"; + flake = false; + }; + dotacat = { + url = "git+https://gitlab.scd31.com/stephen/dotacat.git"; + flake = false; + }; + rnix-lsp.url = "github:nix-community/rnix-lsp"; + stylua = { + url = "github:johnnymorganz/stylua"; + flake = false; + }; + naersk.url = "github:nix-community/naersk"; + fast-syntax-highlighting = { + url = "github:z-shell/fast-syntax-highlighting"; + flake = false; + }; + zsh-nix-shell = { + url = "github:chisui/zsh-nix-shell"; + flake = false; + }; + nix-zsh-completions = { + url = "github:spwhitt/nix-zsh-completions"; + flake = false; + }; + powerlevel10k = { + url = "github:romkatv/powerlevel10k"; + flake = false; + }; + "plantuml-syntax" = { + url = "github:aklt/plantuml-syntax"; + flake = false; + }; + "nvim-web-devicons" = { + url = "github:kyazdani42/nvim-web-devicons"; + flake = false; + }; + "nvim-treesitter" = { + url = "github:nvim-treesitter/nvim-treesitter"; + flake = false; + }; + "nvim-lspconfig" = { + url = "github:neovim/nvim-lspconfig"; + flake = false; + }; + "lsp-status.nvim" = { + url = "github:nvim-lua/lsp-status.nvim"; + flake = false; + }; + "nvim-lightbulb" = { + url = "github:kosayoda/nvim-lightbulb"; + flake = false; + }; + "indentLine" = { + url = "github:Yggdroot/indentLine"; + flake = false; + }; + "gitsigns.nvim" = { + url = "github:lewis6991/gitsigns.nvim"; + flake = false; + }; + "plenary.nvim" = { + url = "github:nvim-lua/plenary.nvim"; + flake = false; + }; + "vim-moonfly-colors" = { + url = "github:bluz71/vim-moonfly-colors"; + flake = false; + }; + "vim-vsnip" = { + url = "github:hrsh7th/vim-vsnip"; + flake = false; + }; + "cmp-nvim-lsp" = { + url = "github:hrsh7th/cmp-nvim-lsp"; + flake = false; + }; + "cmp-buffer" = { + url = "github:hrsh7th/cmp-buffer"; + flake = false; + }; + "cmp-calc" = { + url = "github:hrsh7th/cmp-calc"; + flake = false; + }; + "cmp-path" = { + url = "github:hrsh7th/cmp-path"; + flake = false; + }; + "cmp-latex-symbols" = { + url = "github:kdheepak/cmp-latex-symbols"; + flake = false; + }; + "nvim-cmp" = { + url = "github:hrsh7th/nvim-cmp"; + flake = false; + }; + "vim-Grammalecte" = { + url = "github:dpelle/vim-Grammalecte"; + flake = false; + }; + "vim-LanguageTool" = { + url = "github:dpelle/vim-LanguageTool"; + flake = false; + }; + "lsp_extensions.nvim" = { + url = "github:nvim-lua/lsp_extensions.nvim"; + flake = false; + }; + "lsp_signature.nvim" = { + url = "github:ray-x/lsp_signature.nvim"; + flake = false; + }; + "telescope.nvim" = { + url = "github:nvim-telescope/telescope.nvim"; + flake = false; + }; + "popup.nvim" = { + url = "github:nvim-lua/popup.nvim"; + flake = false; + }; + "galaxyline.nvim" = { + url = "github:NTBBloodbath/galaxyline.nvim"; + flake = false; + }; + "vim-headerguard" = { + url = "github:drmikehenry/vim-headerguard"; + flake = false; + }; + "vim-matchup" = { + url = "github:andymass/vim-matchup"; + flake = false; + }; + "kommentary" = { + url = "github:b3nj5m1n/kommentary"; + flake = false; + }; + "lspkind-nvim" = { + url = "github:onsails/lspkind-nvim"; + flake = false; + }; + "editorconfig-vim" = { + url = "github:editorconfig/editorconfig-vim"; + flake = false; + }; + "null-ls.nvim" = { + url = "github:jose-elias-alvarez/null-ls.nvim"; + flake = false; + }; + "filetype.nvim" = { + url = "github:nathom/filetype.nvim"; + flake = false; + }; + "startuptime.vim" = { + url = "github:tweekmonster/startuptime.vim"; + flake = false; + }; }; - dotacat = { - url = "git+https://gitlab.scd31.com/stephen/dotacat.git"; - flake = false; - }; - rnix-lsp.url = "github:nix-community/rnix-lsp"; - stylua = { - url = "github:johnnymorganz/stylua"; - flake = false; - }; - naersk.url = "github:nix-community/naersk"; - fast-syntax-highlighting = { - url = "github:z-shell/fast-syntax-highlighting"; - flake = false; - }; - zsh-nix-shell = { - url = "github:chisui/zsh-nix-shell"; - flake = false; - }; - nix-zsh-completions = { - url = "github:spwhitt/nix-zsh-completions"; - flake = false; - }; - powerlevel10k = { - url = "github:romkatv/powerlevel10k"; - flake = false; - }; - }; outputs = { home-manager, nixpkgs, ... }@inputs: { nixosConfigurations = { @@ -63,6 +192,136 @@ zsh-nix-shell = inputs.zsh-nix-shell; nix-zsh-completions = inputs.nix-zsh-completions; powerlevel10k = inputs.powerlevel10k; + nvim-plugins = [ + { + name = "plantuml-syntax"; + path = inputs."plantuml-syntax"; + } + { + name = "nvim-web-devicons"; + path = inputs."nvim-web-devicons"; + } + { + name = "nvim-treesitter"; + path = inputs."nvim-treesitter"; + } + { + name = "nvim-lspconfig"; + path = inputs."nvim-lspconfig"; + } + { + name = "lsp-status.nvim"; + path = inputs."lsp-status.nvim"; + } + { + name = "nvim-lightbulb"; + path = inputs."nvim-lightbulb"; + } + { + name = "indentLine"; + path = inputs."indentLine"; + } + { + name = "gitsigns.nvim"; + path = inputs."gitsigns.nvim"; + } + { + name = "plenary.nvim"; + path = inputs."plenary.nvim"; + } + { + name = "vim-moonfly-colors"; + path = inputs."vim-moonfly-colors"; + } + { + name = "vim-vsnip"; + path = inputs."vim-vsnip"; + } + { + name = "cmp-nvim-lsp"; + path = inputs."cmp-nvim-lsp"; + } + { + name = "cmp-buffer"; + path = inputs."cmp-buffer"; + } + { + name = "cmp-calc"; + path = inputs."cmp-calc"; + } + { + name = "cmp-path"; + path = inputs."cmp-path"; + } + { + name = "cmp-latex-symbols"; + path = inputs."cmp-latex-symbols"; + } + { + name = "nvim-cmp"; + path = inputs."nvim-cmp"; + } + { + name = "vim-Grammalecte"; + path = inputs."vim-Grammalecte"; + } + { + name = "vim-LanguageTool"; + path = inputs."vim-LanguageTool"; + } + { + name = "lsp_extensions.nvim"; + path = inputs."lsp_extensions.nvim"; + } + { + name = "lsp_signature.nvim"; + path = inputs."lsp_signature.nvim"; + } + { + name = "telescope.nvim"; + path = inputs."telescope.nvim"; + } + { + name = "popup.nvim"; + path = inputs."popup.nvim"; + } + { + name = "galaxyline.nvim"; + path = inputs."galaxyline.nvim"; + } + { + name = "vim-headerguard"; + path = inputs."vim-headerguard"; + } + { + name = "vim-matchup"; + path = inputs."vim-matchup"; + } + { + name = "kommentary"; + path = inputs."kommentary"; + } + { + name = "lspkind-nvim"; + path = inputs."lspkind-nvim"; + } + { + name = "editorconfig-vim"; + path = inputs."editorconfig-vim"; + } + { + name = "null-ls.nvim"; + path = inputs."null-ls.nvim"; + } + { + name = "filetype.nvim"; + path = inputs."filetype.nvim"; + } + { + name = "startuptime.vim"; + path = inputs."startuptime.vim"; + } + ]; }; # Optionally, use home-manager.extraSpecialArgs to pass # arguments to home.nix diff --git a/flake.nix.in b/flake.nix.in new file mode 100644 index 0000000..7fcf682 --- /dev/null +++ b/flake.nix.in @@ -0,0 +1,77 @@ +{ + description = "NixOS configuration"; + + inputs = + { + nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable"; + home-manager.url = "github:nix-community/home-manager"; + neovim-nightly-overlay.url = "github:nix-community/neovim-nightly-overlay"; + nixpkgs-mozilla = { + url = "github:mozilla/nixpkgs-mozilla"; + flake = false; + }; + dotacat = { + url = "git+https://gitlab.scd31.com/stephen/dotacat.git"; + flake = false; + }; + rnix-lsp.url = "github:nix-community/rnix-lsp"; + stylua = { + url = "github:johnnymorganz/stylua"; + flake = false; + }; + naersk.url = "github:nix-community/naersk"; + fast-syntax-highlighting = { + url = "github:z-shell/fast-syntax-highlighting"; + flake = false; + }; + zsh-nix-shell = { + url = "github:chisui/zsh-nix-shell"; + flake = false; + }; + nix-zsh-completions = { + url = "github:spwhitt/nix-zsh-completions"; + flake = false; + }; + powerlevel10k = { + url = "github:romkatv/powerlevel10k"; + flake = false; + }; + @inputs@ + }; + + outputs = { home-manager, nixpkgs, ... }@inputs: { + nixosConfigurations = { + ZeNixLaptop = nixpkgs.lib.nixosSystem rec { + system = "x86_64-linux"; + modules = [ + ({ pkgs, ... }: { + nixpkgs.overlays = [ + inputs.neovim-nightly-overlay.overlay + (import inputs.nixpkgs-mozilla) + ]; + }) + ./nixos/configuration.nix + home-manager.nixosModules.home-manager + { + home-manager.useGlobalPkgs = true; + home-manager.useUserPackages = true; + home-manager.users.traxys = import ./home.nix; + home-manager.extraSpecialArgs = { + dotacat = inputs.dotacat; + rnix-lsp = inputs.rnix-lsp; + stylua = inputs.stylua; + naersk-lib = inputs.naersk.lib."${system}"; + fast-syntax-highlighting = inputs.fast-syntax-highlighting; + zsh-nix-shell = inputs.zsh-nix-shell; + nix-zsh-completions = inputs.nix-zsh-completions; + powerlevel10k = inputs.powerlevel10k; + @plugins@ + }; + # Optionally, use home-manager.extraSpecialArgs to pass + # arguments to home.nix + } + ]; + }; + }; + }; +} diff --git a/home.nix b/home.nix index 78a52a9..a24e51c 100644 --- a/home.nix +++ b/home.nix @@ -8,6 +8,7 @@ , zsh-nix-shell , nix-zsh-completions , powerlevel10k +, nvim-plugins , ... }: @@ -17,6 +18,16 @@ let cargo = rustVersion; rustc = rustVersion; }; + plugin_path = ".local/share/nvim/site/pack/nix/start/"; + plugin-files = builtins.listToAttrs (map + ({ name, path }: { + name = "${plugin_path}/${name}"; + value = { + source = path; + recursive = true; + }; + }) + nvim-plugins); localinfo = import ./localinfo.nix; in { @@ -65,10 +76,10 @@ in direnv codespell shellcheck - ripgrep - file - jq - wget + ripgrep + file + jq + wget ]; services = { @@ -167,7 +178,7 @@ in source = ./scripts; recursive = true; }; - }; + } // plugin-files; # This value determines the Home Manager release that your # configuration is compatible with. This helps avoid breakage diff --git a/nvim/init.lua b/nvim/init.lua index fa00ee4..d59ee22 100644 --- a/nvim/init.lua +++ b/nvim/init.lua @@ -1,12 +1,13 @@ vim.o.termguicolors = true vim.cmd("colorscheme moonfly") -require("plugins") require("tree_sitter") require("lsp") require("completion") require("statusline") +require('gitsigns').setup() + vim.o.number = true vim.o.tabstop = 4 vim.o.shiftwidth = 4 diff --git a/nvim/lua/plugins.lua b/nvim/lua/plugins.lua deleted file mode 100644 index 7e1aded..0000000 --- a/nvim/lua/plugins.lua +++ /dev/null @@ -1,67 +0,0 @@ -local execute = vim.api.nvim_command -local fn = vim.fn - -local install_path = fn.stdpath('data')..'/site/pack/packer/opt/packer.nvim' - -if fn.empty(fn.glob(install_path)) > 0 then - execute('!git clone https://github.com/wbthomason/packer.nvim '..install_path) - execute 'packadd packer.nvim' -end - -vim.cmd [[packadd packer.nvim]] - -return require('packer').startup(function() - use {'wbthomason/packer.nvim', opt = true} - - use { 'aklt/plantuml-syntax' } - - use {'kyazdani42/nvim-web-devicons'} - - use { 'nvim-treesitter/nvim-treesitter', run = ':TSUpdate' } - use { 'neovim/nvim-lspconfig' } - use { 'nvim-lua/lsp-status.nvim' } - - use { 'kosayoda/nvim-lightbulb' } - use { 'Yggdroot/indentLine'} - use { - 'lewis6991/gitsigns.nvim', - requires = { - 'nvim-lua/plenary.nvim' - }, - config = function() - require('gitsigns').setup() - end - } - - use { 'bluz71/vim-moonfly-colors' } - use { 'hrsh7th/vim-vsnip' } - use { 'hrsh7th/cmp-nvim-lsp' } - use { 'hrsh7th/cmp-buffer' } - use { 'hrsh7th/cmp-calc' } - use { 'hrsh7th/cmp-path' } - use { 'kdheepak/cmp-latex-symbols' } - use { 'hrsh7th/nvim-cmp' } - - use { 'dpelle/vim-Grammalecte' } - use { 'dpelle/vim-LanguageTool' } - - use {'nvim-lua/lsp_extensions.nvim'} - use {'ray-x/lsp_signature.nvim'} - - use { - 'nvim-telescope/telescope.nvim', - requires = {{'nvim-lua/popup.nvim'}, {'nvim-lua/plenary.nvim'}} - } - - -- use 'famiu/feline.nvim' - use 'NTBBloodbath/galaxyline.nvim' - use 'drmikehenry/vim-headerguard' - use 'andymass/vim-matchup' - use 'b3nj5m1n/kommentary' - use 'onsails/lspkind-nvim' - use 'editorconfig/editorconfig-vim' - - use 'jose-elias-alvarez/null-ls.nvim' - use 'nathom/filetype.nvim' - use 'tweekmonster/startuptime.vim' -end) diff --git a/plugins.py b/plugins.py new file mode 100644 index 0000000..7b95f61 --- /dev/null +++ b/plugins.py @@ -0,0 +1,57 @@ +plugins = [ + "aklt/plantuml-syntax", + "kyazdani42/nvim-web-devicons", + "nvim-treesitter/nvim-treesitter", + "neovim/nvim-lspconfig", + "nvim-lua/lsp-status.nvim", + "kosayoda/nvim-lightbulb", + "Yggdroot/indentLine", + "lewis6991/gitsigns.nvim", + "nvim-lua/plenary.nvim", + "bluz71/vim-moonfly-colors", + "hrsh7th/vim-vsnip", + "hrsh7th/cmp-nvim-lsp", + "hrsh7th/cmp-buffer", + "hrsh7th/cmp-calc", + "hrsh7th/cmp-path", + "kdheepak/cmp-latex-symbols", + "hrsh7th/nvim-cmp", + "dpelle/vim-Grammalecte", + "dpelle/vim-LanguageTool", + "nvim-lua/lsp_extensions.nvim", + "ray-x/lsp_signature.nvim", + "nvim-telescope/telescope.nvim", + "nvim-lua/popup.nvim", + "NTBBloodbath/galaxyline.nvim", + "drmikehenry/vim-headerguard", + "andymass/vim-matchup", + "b3nj5m1n/kommentary", + "onsails/lspkind-nvim", + "editorconfig/editorconfig-vim", + "jose-elias-alvarez/null-ls.nvim", + "nathom/filetype.nvim", + "tweekmonster/startuptime.vim", +] + +inputs = "" +nvim_plugins = "nvim-plugins = [\n"; +for plugin in plugins: + repo,plugin = plugin.split('/') + inputs += f'"{plugin}" = {{\n' + inputs += f' url = "github:{repo}/{plugin}";\n' + inputs += f' flake = false;\n' + inputs += "};\n" + + nvim_plugins += " {\n" + nvim_plugins += f' name = "{plugin}";\n' + nvim_plugins += f' path = inputs."{plugin}";\n' + nvim_plugins += " }\n" +nvim_plugins += "];\n" + +with open("flake.nix.in") as f: + flake = f.read() + flake = flake.replace("@inputs@\n", inputs) + flake = flake.replace("@plugins@\n", nvim_plugins) + out = open("flake.nix", "w") + out.write(flake) +