From ea6e9d281669adcc2af03a4662a59cee420eef36 Mon Sep 17 00:00:00 2001 From: Christoph Urlacher Date: Mon, 14 Oct 2024 20:47:38 +0200 Subject: [PATCH] Neovim: Replace cmp with blink.cmp Currently commented out --- flake.lock | 800 +++++++++++++++++++++++++++++++- flake.nix | 1 + home/modules/neovim/default.nix | 293 +++++------- lib/nixos.nix | 2 +- 4 files changed, 902 insertions(+), 194 deletions(-) diff --git a/flake.lock b/flake.lock index 9a13b214..f2ae236e 100644 --- a/flake.lock +++ b/flake.lock @@ -19,9 +19,198 @@ "type": "github" } }, + "blink-cmp": { + "inputs": { + "devenv": "devenv", + "fenix": "fenix", + "flake-parts": "flake-parts_2", + "nixpkgs": "nixpkgs_5" + }, + "locked": { + "lastModified": 1728879229, + "narHash": "sha256-bvhLOM0NMx5S069uX2OecEpzYaR3hV4r8nCIPD0f0XQ=", + "owner": "saghen", + "repo": "blink.cmp", + "rev": "af68874f1b2e628e0c72ec27f5225d0c6b2d6820", + "type": "github" + }, + "original": { + "owner": "saghen", + "repo": "blink.cmp", + "type": "github" + } + }, + "cachix": { + "inputs": { + "devenv": "devenv_2", + "flake-compat": [ + "blink-cmp", + "devenv", + "flake-compat" + ], + "git-hooks": [ + "blink-cmp", + "devenv", + "pre-commit-hooks" + ], + "nixpkgs": [ + "blink-cmp", + "devenv", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1726520618, + "narHash": "sha256-jOsaBmJ/EtX5t/vbylCdS7pWYcKGmWOKg4QKUzKr6dA=", + "owner": "cachix", + "repo": "cachix", + "rev": "695525f9086542dfb09fde0871dbf4174abbf634", + "type": "github" + }, + "original": { + "owner": "cachix", + "repo": "cachix", + "type": "github" + } + }, + "cachix_2": { + "inputs": { + "devenv": "devenv_3", + "flake-compat": [ + "blink-cmp", + "devenv", + "cachix", + "devenv", + "flake-compat" + ], + "nixpkgs": [ + "blink-cmp", + "devenv", + "cachix", + "devenv", + "nixpkgs" + ], + "pre-commit-hooks": [ + "blink-cmp", + "devenv", + "cachix", + "devenv", + "pre-commit-hooks" + ] + }, + "locked": { + "lastModified": 1712055811, + "narHash": "sha256-7FcfMm5A/f02yyzuavJe06zLa9hcMHsagE28ADcmQvk=", + "owner": "cachix", + "repo": "cachix", + "rev": "02e38da89851ec7fec3356a5c04bc8349cae0e30", + "type": "github" + }, + "original": { + "owner": "cachix", + "repo": "cachix", + "type": "github" + } + }, + "devenv": { + "inputs": { + "cachix": "cachix", + "flake-compat": "flake-compat_2", + "nix": "nix_3", + "nixpkgs": "nixpkgs_4", + "pre-commit-hooks": "pre-commit-hooks_2" + }, + "locked": { + "lastModified": 1728113618, + "narHash": "sha256-oJj1d2VlFksl/45nBUtoM+lxxaWD3Z6yXBLR9vOp+2E=", + "owner": "cachix", + "repo": "devenv", + "rev": "a8495abab31ce52cd45d343caa760046c0c7ee74", + "type": "github" + }, + "original": { + "owner": "cachix", + "repo": "devenv", + "type": "github" + } + }, + "devenv_2": { + "inputs": { + "cachix": "cachix_2", + "flake-compat": [ + "blink-cmp", + "devenv", + "cachix", + "flake-compat" + ], + "nix": "nix_2", + "nixpkgs": [ + "blink-cmp", + "devenv", + "cachix", + "nixpkgs" + ], + "pre-commit-hooks": [ + "blink-cmp", + "devenv", + "cachix", + "git-hooks" + ] + }, + "locked": { + "lastModified": 1723156315, + "narHash": "sha256-0JrfahRMJ37Rf1i0iOOn+8Z4CLvbcGNwa2ChOAVrp/8=", + "owner": "cachix", + "repo": "devenv", + "rev": "ff5eb4f2accbcda963af67f1a1159e3f6c7f5f91", + "type": "github" + }, + "original": { + "owner": "cachix", + "repo": "devenv", + "type": "github" + } + }, + "devenv_3": { + "inputs": { + "flake-compat": [ + "blink-cmp", + "devenv", + "cachix", + "devenv", + "cachix", + "flake-compat" + ], + "nix": "nix", + "nixpkgs": "nixpkgs_2", + "poetry2nix": "poetry2nix", + "pre-commit-hooks": [ + "blink-cmp", + "devenv", + "cachix", + "devenv", + "cachix", + "pre-commit-hooks" + ] + }, + "locked": { + "lastModified": 1708704632, + "narHash": "sha256-w+dOIW60FKMaHI1q5714CSibk99JfYxm0CzTinYWr+Q=", + "owner": "cachix", + "repo": "devenv", + "rev": "2ee4450b0f4b95a1b90f2eb5ffea98b90e48c196", + "type": "github" + }, + "original": { + "owner": "cachix", + "ref": "python-rewrite", + "repo": "devenv", + "type": "github" + } + }, "devshell": { "inputs": { - "nixpkgs": "nixpkgs_2" + "nixpkgs": "nixpkgs_6" }, "locked": { "lastModified": 1722113426, @@ -60,9 +249,9 @@ }, "emacs-overlay": { "inputs": { - "flake-utils": "flake-utils", - "nixpkgs": "nixpkgs_3", - "nixpkgs-stable": "nixpkgs-stable" + "flake-utils": "flake-utils_3", + "nixpkgs": "nixpkgs_7", + "nixpkgs-stable": "nixpkgs-stable_2" }, "locked": { "lastModified": 1728205869, @@ -78,7 +267,46 @@ "type": "github" } }, + "fenix": { + "inputs": { + "nixpkgs": [ + "blink-cmp", + "nixpkgs" + ], + "rust-analyzer-src": "rust-analyzer-src" + }, + "locked": { + "lastModified": 1728196311, + "narHash": "sha256-JoDDlmjPj0sGo1beOo3bRh7BDppm0Kuet7I7BqTmSl4=", + "owner": "nix-community", + "repo": "fenix", + "rev": "26971356e387b5ec0578f52be1bbd82ecf6dbad4", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "fenix", + "type": "github" + } + }, "flake-compat": { + "flake": false, + "locked": { + "lastModified": 1673956053, + "narHash": "sha256-4gtG9iQuiKITOjNQQeQIpoIB6b16fm+504Ch3sNKLd8=", + "owner": "edolstra", + "repo": "flake-compat", + "rev": "35bb57c0c8d8b62bbfd284272c928ceb64ddbde9", + "type": "github" + }, + "original": { + "owner": "edolstra", + "repo": "flake-compat", + "type": "github" + } + }, + "flake-compat_2": { + "flake": false, "locked": { "lastModified": 1696426674, "narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=", @@ -93,7 +321,22 @@ "type": "github" } }, - "flake-compat_2": { + "flake-compat_3": { + "locked": { + "lastModified": 1696426674, + "narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=", + "owner": "edolstra", + "repo": "flake-compat", + "rev": "0f9255e01c2351cc7d116c072cb317785dd33b33", + "type": "github" + }, + "original": { + "owner": "edolstra", + "repo": "flake-compat", + "type": "github" + } + }, + "flake-compat_4": { "locked": { "lastModified": 1696426674, "narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=", @@ -108,6 +351,47 @@ } }, "flake-parts": { + "inputs": { + "nixpkgs-lib": [ + "blink-cmp", + "devenv", + "nix", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1712014858, + "narHash": "sha256-sB4SWl2lX95bExY2gMFG5HIzvva5AVMJd4Igm+GpZNw=", + "owner": "hercules-ci", + "repo": "flake-parts", + "rev": "9126214d0a59633752a136528f5f3b9aa8565b7d", + "type": "github" + }, + "original": { + "owner": "hercules-ci", + "repo": "flake-parts", + "type": "github" + } + }, + "flake-parts_2": { + "inputs": { + "nixpkgs-lib": "nixpkgs-lib" + }, + "locked": { + "lastModified": 1727826117, + "narHash": "sha256-K5ZLCyfO/Zj9mPFldf3iwS6oZStJcU4tSpiXTMYaaL0=", + "owner": "hercules-ci", + "repo": "flake-parts", + "rev": "3d04084d54bedc3d6b8b736c70ef449225c361b1", + "type": "github" + }, + "original": { + "owner": "hercules-ci", + "repo": "flake-parts", + "type": "github" + } + }, + "flake-parts_3": { "inputs": { "nixpkgs-lib": [ "nixvim", @@ -132,6 +416,39 @@ "inputs": { "systems": "systems_2" }, + "locked": { + "lastModified": 1689068808, + "narHash": "sha256-6ixXo3wt24N/melDWjq70UuHQLxGV8jZvooRanIHXw0=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "919d646de7be200f3bf08cb76ae1f09402b6f9b4", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_2": { + "locked": { + "lastModified": 1667395993, + "narHash": "sha256-nuEHfE/LcWyuSWnS8t12N1wc105Qtau+/OdUAjtQ0rA=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "5aed5285a952e0b949eb3ba02c12fa4fcfef535f", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_3": { + "inputs": { + "systems": "systems_3" + }, "locked": { "lastModified": 1726560853, "narHash": "sha256-X6rJYSESBVr3hBoH0WbKE5KvhPU5bloyZ2L4K60/fPQ=", @@ -146,9 +463,9 @@ "type": "github" } }, - "flake-utils_2": { + "flake-utils_4": { "inputs": { - "systems": "systems_3" + "systems": "systems_4" }, "locked": { "lastModified": 1710146030, @@ -164,9 +481,9 @@ "type": "github" } }, - "flake-utils_3": { + "flake-utils_5": { "inputs": { - "systems": "systems_4" + "systems": "systems_5" }, "locked": { "lastModified": 1726560853, @@ -188,7 +505,7 @@ "nixvim", "flake-compat" ], - "gitignore": "gitignore", + "gitignore": "gitignore_2", "nixpkgs": [ "nixvim", "nixpkgs" @@ -213,6 +530,29 @@ } }, "gitignore": { + "inputs": { + "nixpkgs": [ + "blink-cmp", + "devenv", + "pre-commit-hooks", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1709087332, + "narHash": "sha256-HG2cCnktfHsKV0s4XW83gU3F57gaTljL9KNSuG6bnQs=", + "owner": "hercules-ci", + "repo": "gitignore.nix", + "rev": "637db329424fd7e46cf4185293b9cc8c88c95394", + "type": "github" + }, + "original": { + "owner": "hercules-ci", + "repo": "gitignore.nix", + "type": "github" + } + }, + "gitignore_2": { "inputs": { "nixpkgs": [ "nixvim", @@ -290,13 +630,58 @@ "type": "github" } }, - "nix-alien": { + "libgit2": { + "flake": false, + "locked": { + "lastModified": 1697646580, + "narHash": "sha256-oX4Z3S9WtJlwvj0uH9HlYcWv+x1hqp8mhXl7HsLu2f0=", + "owner": "libgit2", + "repo": "libgit2", + "rev": "45fd9ed7ae1a9b74b957ef4f337bc3c8b3df01b5", + "type": "github" + }, + "original": { + "owner": "libgit2", + "repo": "libgit2", + "type": "github" + } + }, + "nix": { "inputs": { "flake-compat": "flake-compat", - "flake-utils": "flake-utils_2", + "nixpkgs": [ + "blink-cmp", + "devenv", + "cachix", + "devenv", + "cachix", + "devenv", + "nixpkgs" + ], + "nixpkgs-regression": "nixpkgs-regression" + }, + "locked": { + "lastModified": 1712911606, + "narHash": "sha256-BGvBhepCufsjcUkXnEEXhEVjwdJAwPglCC2+bInc794=", + "owner": "domenkozar", + "repo": "nix", + "rev": "b24a9318ea3f3600c1e24b4a00691ee912d4de12", + "type": "github" + }, + "original": { + "owner": "domenkozar", + "ref": "devenv-2.21", + "repo": "nix", + "type": "github" + } + }, + "nix-alien": { + "inputs": { + "flake-compat": "flake-compat_3", + "flake-utils": "flake-utils_4", "nix-filter": "nix-filter", "nix-index-database": "nix-index-database", - "nixpkgs": "nixpkgs_4" + "nixpkgs": "nixpkgs_8" }, "locked": { "lastModified": 1726398642, @@ -364,6 +749,33 @@ "type": "github" } }, + "nix-github-actions": { + "inputs": { + "nixpkgs": [ + "blink-cmp", + "devenv", + "cachix", + "devenv", + "cachix", + "devenv", + "poetry2nix", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1688870561, + "narHash": "sha256-4UYkifnPEw1nAzqqPOTL2MvWtm3sNGw1UTYTalkTcGY=", + "owner": "nix-community", + "repo": "nix-github-actions", + "rev": "165b1650b753316aa7f1787f3005a8d2da0f5301", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "nix-github-actions", + "type": "github" + } + }, "nix-index-database": { "inputs": { "nixpkgs": [ @@ -385,6 +797,68 @@ "type": "github" } }, + "nix_2": { + "inputs": { + "flake-compat": [ + "blink-cmp", + "devenv", + "cachix", + "devenv", + "flake-compat" + ], + "nixpkgs": [ + "blink-cmp", + "devenv", + "cachix", + "devenv", + "nixpkgs" + ], + "nixpkgs-regression": "nixpkgs-regression_2" + }, + "locked": { + "lastModified": 1712911606, + "narHash": "sha256-BGvBhepCufsjcUkXnEEXhEVjwdJAwPglCC2+bInc794=", + "owner": "domenkozar", + "repo": "nix", + "rev": "b24a9318ea3f3600c1e24b4a00691ee912d4de12", + "type": "github" + }, + "original": { + "owner": "domenkozar", + "ref": "devenv-2.21", + "repo": "nix", + "type": "github" + } + }, + "nix_3": { + "inputs": { + "flake-compat": [ + "blink-cmp", + "devenv", + "flake-compat" + ], + "flake-parts": "flake-parts", + "libgit2": "libgit2", + "nixpkgs": "nixpkgs_3", + "nixpkgs-23-11": "nixpkgs-23-11", + "nixpkgs-regression": "nixpkgs-regression_3", + "pre-commit-hooks": "pre-commit-hooks" + }, + "locked": { + "lastModified": 1727438425, + "narHash": "sha256-X8ES7I1cfNhR9oKp06F6ir4Np70WGZU5sfCOuNBEwMg=", + "owner": "domenkozar", + "repo": "nix", + "rev": "f6c5ae4c1b2e411e6b1e6a8181cc84363d6a7546", + "type": "github" + }, + "original": { + "owner": "domenkozar", + "ref": "devenv-2.24", + "repo": "nix", + "type": "github" + } + }, "nixpkgs": { "locked": { "lastModified": 1725634671, @@ -401,7 +875,99 @@ "type": "github" } }, + "nixpkgs-23-11": { + "locked": { + "lastModified": 1717159533, + "narHash": "sha256-oamiKNfr2MS6yH64rUn99mIZjc45nGJlj9eGth/3Xuw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "a62e6edd6d5e1fa0329b8653c801147986f8d446", + "type": "github" + }, + "original": { + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "a62e6edd6d5e1fa0329b8653c801147986f8d446", + "type": "github" + } + }, + "nixpkgs-lib": { + "locked": { + "lastModified": 1727825735, + "narHash": "sha256-0xHYkMkeLVQAMa7gvkddbPqpxph+hDzdu1XdGPJR+Os=", + "type": "tarball", + "url": "https://github.com/NixOS/nixpkgs/archive/fb192fec7cc7a4c26d51779e9bab07ce6fa5597a.tar.gz" + }, + "original": { + "type": "tarball", + "url": "https://github.com/NixOS/nixpkgs/archive/fb192fec7cc7a4c26d51779e9bab07ce6fa5597a.tar.gz" + } + }, + "nixpkgs-regression": { + "locked": { + "lastModified": 1643052045, + "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "github" + }, + "original": { + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "github" + } + }, + "nixpkgs-regression_2": { + "locked": { + "lastModified": 1643052045, + "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "github" + }, + "original": { + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "github" + } + }, + "nixpkgs-regression_3": { + "locked": { + "lastModified": 1643052045, + "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "github" + }, + "original": { + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "github" + } + }, "nixpkgs-stable": { + "locked": { + "lastModified": 1720386169, + "narHash": "sha256-NGKVY4PjzwAa4upkGtAMz1npHGoRzWotlSnVlqI40mo=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "194846768975b7ad2c4988bdb82572c00222c0d7", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-24.05", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-stable_2": { "locked": { "lastModified": 1728067476, "narHash": "sha256-/uJcVXuBt+VFCPQIX+4YnYrHaubJSx4HoNsJVNRgANM=", @@ -418,6 +984,70 @@ } }, "nixpkgs_2": { + "locked": { + "lastModified": 1692808169, + "narHash": "sha256-x9Opq06rIiwdwGeK2Ykj69dNc2IvUH1fY55Wm7atwrE=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "9201b5ff357e781bf014d0330d18555695df7ba8", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_3": { + "locked": { + "lastModified": 1717432640, + "narHash": "sha256-+f9c4/ZX5MWDOuB1rKoWj+lBNm0z0rs4CK47HBLxy1o=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "88269ab3044128b7c2f4c7d68448b2fb50456870", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "release-24.05", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_4": { + "locked": { + "lastModified": 1716977621, + "narHash": "sha256-Q1UQzYcMJH4RscmpTkjlgqQDX5yi1tZL0O345Ri6vXQ=", + "owner": "cachix", + "repo": "devenv-nixpkgs", + "rev": "4267e705586473d3e5c8d50299e71503f16a6fb6", + "type": "github" + }, + "original": { + "owner": "cachix", + "ref": "rolling", + "repo": "devenv-nixpkgs", + "type": "github" + } + }, + "nixpkgs_5": { + "locked": { + "lastModified": 1716977621, + "narHash": "sha256-Q1UQzYcMJH4RscmpTkjlgqQDX5yi1tZL0O345Ri6vXQ=", + "owner": "cachix", + "repo": "devenv-nixpkgs", + "rev": "4267e705586473d3e5c8d50299e71503f16a6fb6", + "type": "github" + }, + "original": { + "owner": "cachix", + "ref": "rolling", + "repo": "devenv-nixpkgs", + "type": "github" + } + }, + "nixpkgs_6": { "locked": { "lastModified": 1722073938, "narHash": "sha256-OpX0StkL8vpXyWOGUD6G+MA26wAXK6SpT94kLJXo6B4=", @@ -433,7 +1063,7 @@ "type": "github" } }, - "nixpkgs_3": { + "nixpkgs_7": { "locked": { "lastModified": 1728018373, "narHash": "sha256-NOiTvBbRLIOe5F6RbHaAh6++BNjsb149fGZd1T4+KBg=", @@ -449,7 +1079,7 @@ "type": "github" } }, - "nixpkgs_4": { + "nixpkgs_8": { "locked": { "lastModified": 1726062873, "narHash": "sha256-IiA3jfbR7K/B5+9byVi9BZGWTD4VSbWe8VLpp9B/iYk=", @@ -465,7 +1095,7 @@ "type": "github" } }, - "nixpkgs_5": { + "nixpkgs_9": { "locked": { "lastModified": 1728018373, "narHash": "sha256-NOiTvBbRLIOe5F6RbHaAh6++BNjsb149fGZd1T4+KBg=", @@ -484,8 +1114,8 @@ "nixvim": { "inputs": { "devshell": "devshell_2", - "flake-compat": "flake-compat_2", - "flake-parts": "flake-parts", + "flake-compat": "flake-compat_4", + "flake-parts": "flake-parts_3", "git-hooks": "git-hooks", "home-manager": "home-manager_2", "nix-darwin": "nix-darwin", @@ -526,7 +1156,7 @@ }, "nuschtosSearch": { "inputs": { - "flake-utils": "flake-utils_3", + "flake-utils": "flake-utils_5", "nixpkgs": [ "nixvim", "nixpkgs" @@ -546,20 +1176,135 @@ "type": "github" } }, + "poetry2nix": { + "inputs": { + "flake-utils": "flake-utils", + "nix-github-actions": "nix-github-actions", + "nixpkgs": [ + "blink-cmp", + "devenv", + "cachix", + "devenv", + "cachix", + "devenv", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1692876271, + "narHash": "sha256-IXfZEkI0Mal5y1jr6IRWMqK8GW2/f28xJenZIPQqkY0=", + "owner": "nix-community", + "repo": "poetry2nix", + "rev": "d5006be9c2c2417dafb2e2e5034d83fabd207ee3", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "poetry2nix", + "type": "github" + } + }, + "pre-commit-hooks": { + "inputs": { + "flake-compat": [ + "blink-cmp", + "devenv", + "nix" + ], + "flake-utils": "flake-utils_2", + "gitignore": [ + "blink-cmp", + "devenv", + "nix" + ], + "nixpkgs": [ + "blink-cmp", + "devenv", + "nix", + "nixpkgs" + ], + "nixpkgs-stable": [ + "blink-cmp", + "devenv", + "nix", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1712897695, + "narHash": "sha256-nMirxrGteNAl9sWiOhoN5tIHyjBbVi5e2tgZUgZlK3Y=", + "owner": "cachix", + "repo": "pre-commit-hooks.nix", + "rev": "40e6053ecb65fcbf12863338a6dcefb3f55f1bf8", + "type": "github" + }, + "original": { + "owner": "cachix", + "repo": "pre-commit-hooks.nix", + "type": "github" + } + }, + "pre-commit-hooks_2": { + "inputs": { + "flake-compat": [ + "blink-cmp", + "devenv", + "flake-compat" + ], + "gitignore": "gitignore", + "nixpkgs": [ + "blink-cmp", + "devenv", + "nixpkgs" + ], + "nixpkgs-stable": "nixpkgs-stable" + }, + "locked": { + "lastModified": 1726745158, + "narHash": "sha256-D5AegvGoEjt4rkKedmxlSEmC+nNLMBPWFxvmYnVLhjk=", + "owner": "cachix", + "repo": "pre-commit-hooks.nix", + "rev": "4e743a6920eab45e8ba0fbe49dc459f1423a4b74", + "type": "github" + }, + "original": { + "owner": "cachix", + "repo": "pre-commit-hooks.nix", + "type": "github" + } + }, "root": { "inputs": { "ags": "ags", + "blink-cmp": "blink-cmp", "devshell": "devshell", "emacs-overlay": "emacs-overlay", "hardware": "hardware", "home-manager": "home-manager", "nix-alien": "nix-alien", "nix-flatpak": "nix-flatpak", - "nixpkgs": "nixpkgs_5", + "nixpkgs": "nixpkgs_9", "nixvim": "nixvim", "nur": "nur" } }, + "rust-analyzer-src": { + "flake": false, + "locked": { + "lastModified": 1728064742, + "narHash": "sha256-tFvUGvqUZjES1yxYT2zEFiTAE0iQKYd+eWKX/6ZqeVw=", + "owner": "rust-lang", + "repo": "rust-analyzer", + "rev": "5982d9c420d0dc90739171829f0d2e9c80d98979", + "type": "github" + }, + "original": { + "owner": "rust-lang", + "ref": "nightly", + "repo": "rust-analyzer", + "type": "github" + } + }, "systems": { "locked": { "lastModified": 1689347949, @@ -620,6 +1365,21 @@ "type": "github" } }, + "systems_5": { + "locked": { + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default", + "type": "github" + } + }, "treefmt-nix": { "inputs": { "nixpkgs": [ diff --git a/flake.nix b/flake.nix index 4380fdfc..496582f2 100644 --- a/flake.nix +++ b/flake.nix @@ -16,6 +16,7 @@ # NeoVim <3 nixvim.url = "github:nix-community/nixvim"; nixvim.inputs.nixpkgs.follows = "nixpkgs"; + blink-cmp.url = "github:saghen/blink.cmp"; # Nix User Repository (e.g. Firefox addons) nur.url = "github:nix-community/NUR"; diff --git a/home/modules/neovim/default.nix b/home/modules/neovim/default.nix index 26966088..bf8e8c9d 100644 --- a/home/modules/neovim/default.nix +++ b/home/modules/neovim/default.nix @@ -1,4 +1,6 @@ { + inputs, + system, username, hostname, config, @@ -95,7 +97,7 @@ in { performance.byteCompileLua = { enable = true; configs = true; - initLua = true; # When debugging init.lua turn this off + initLua = false; # When debugging init.lua turn this off nvimRuntime = true; plugins = true; }; @@ -119,10 +121,50 @@ in { "luasnippets/tex.lua".text = builtins.readFile ./snippets_latex.lua; }; + highlight = { + # Manually define blink.cmp highlight groups until catpuccin supports it. + BlinkCmpMenu = { + bg = "#${color.hex.dark.base}"; + }; + BlinkCmpMenuBorder = { + bg = "#${color.hex.dark.base}"; + fg = "#${color.hex.dark.blue}"; + }; + BlinkCmpMenuSelection = { + bg = "#${color.hex.dark.blue}"; + fg = "#${color.hex.dark.crust}"; + bold = true; + }; + BlinkCmpLabel = { + bg = "#${color.hex.dark.base}"; + fg = "#${color.hex.dark.text}"; + bold = false; + }; + }; + # extraLuaPackages = with pkgs.lua51Packages; []; # extraPython3Packages = p: []; autoCmd = [ + # TODO: This only works if neotree has been opened before... + # { + # desc = "Refresh neotree when closing lazygit"; + # event = ["BufLeave"]; + # pattern = ["*lazygit*"]; + # callback.__raw = '' + # function() + # local manager = require("neo-tree.sources.manager") + # local renderer = require("neo-tree.ui.renderer") + # local state = manager.get_state("filesystem") + # local window_exists = renderer.window_exists(state) + + # if window_exists then + # require("neo-tree.sources.filesystem.commands").refresh(state) + # end + # end + # ''; + # } + { desc = "Lint the file if autolint is enabled"; event = ["BufWritePost"]; @@ -239,7 +281,7 @@ in { event = ["InsertEnter"]; config = mkDefaultConfig name; opts = { - # mapping = ["jk"]; # NOTE: Deprecated + # mapping = ["jk"]; # Deprecated but still the default default_mappings = true; timeout = 200; # In ms }; @@ -266,9 +308,9 @@ in { light = "latte"; dark = "mocha"; }; - default_integrations = false; + # https://github.com/catppuccin/nvim/tree/main?tab=readme-ov-file#integrations + default_integrations = true; integrations = { - cmp = true; dashboard = true; diffview = true; flash = true; @@ -335,174 +377,68 @@ in { }; }; - _cmp-async-path = { - name = "cmp-async-path"; - pkg = pkgs.vimPlugins.cmp-async-path; - lazy = true; - }; - - _cmp-buffer = { - name = "cmp-buffer"; - pkg = pkgs.vimPlugins.cmp-buffer; - lazy = true; - enabled = false; # Spams the completion window - }; - - _cmp-cmdline = { - name = "cmp-cmdline"; - pkg = pkgs.vimPlugins.cmp-cmdline; - lazy = true; - enabled = false; # Using nui as : completion backend, not cmp - }; - - _cmp-emoji = { - name = "cmp-emoji"; - pkg = pkgs.vimPlugins.cmp-emoji; - lazy = true; - }; - - _cmp-nvim-lsp = { - name = "cmp-nvim-lsp"; - pkg = pkgs.vimPlugins.cmp-nvim-lsp; - lazy = true; - }; - - # _cmp-nvim-lsp-signature-help = { - # name = "cmp-nvim-lsp-signature-help"; - # pkg = pkgs.vimPlugins.cmp-nvim-lsp-signature-help; - # lazy = true; - # }; - - _cmp-luasnip = { - name = "cmp_luasnip"; - pkg = pkgs.vimPlugins.cmp_luasnip; - lazy = true; - }; - - _lspkind = { - name = "lspkind"; - pkg = pkgs.vimPlugins.lspkind-nvim; - lazy = true; - }; - - cmp = rec { - name = "cmp"; - pkg = pkgs.vimPlugins.nvim-cmp; + # TODO: Does not work with luasnips yet :( + # TODO: Check if plugin landed in repos + blink-cmp = rec { + name = "blink.cmp"; + pkg = inputs.blink-cmp.packages.${system}.default; lazy = true; event = ["InsertEnter"]; - dependencies = [ - _cmp-async-path - _cmp-buffer - _cmp-cmdline - _cmp-emoji - _cmp-nvim-lsp - # _cmp-nvim-lsp-signature-help - _cmp-luasnip - _lspkind # Type symbols in completion - ]; config = mkDefaultConfig name; - opts.__raw = let - sources = mylib.generators.toLuaObject [ - {name = "async_path";} - {name = "emoji";} - {name = "nvim_lsp";} - {name = "luasnip";} + opts = { + sources = { + providers.__raw = '' + { + { 'blink.cmp.sources.lsp', name = 'LSP' }, + { 'blink.cmp.sources.path', name = 'Path', score_offset = 3 }, + { 'blink.cmp.sources.snippets', name = 'Snippets', score_offset = -3 }, - # {name = "nvim_lsp_signature_help";} # Already provided by something else (noice?) - # {name = "buffer";} # Too much noise - # {name = "cmdline";} # Using nui as cmdline completion backend - ]; - - mapping = mylib.generators.toLuaObject { - "".__raw = "cmp.mapping.select_next_item({ behavior = cmp.SelectBehavior.Select })"; - "".__raw = "cmp.mapping.select_prev_item({ behavior = cmp.SelectBehavior.Select })"; - "".__raw = "cmp.mapping.abort()"; - "".__raw = "cmp.mapping.abort()"; - "".__raw = "cmp.mapping.scroll_docs(-4)"; - "".__raw = "cmp.mapping.scroll_docs(4)"; - "".__raw = "cmp.mapping.complete({})"; - "".__raw = '' - cmp.mapping(function(fallback) - if cmp.visible() then - if luasnip.expandable() then - luasnip.expand() - else - cmp.confirm({select = true}) - end - else - fallback() - end - end) - ''; - "".__raw = '' - cmp.mapping(function(fallback) - if cmp.visible() then - cmp.select_next_item() - elseif luasnip.locally_jumpable(1) then - luasnip.jump(1) - else - fallback() -- This will call the intellitab binding - end - end, { "i", "s" }) - ''; - "".__raw = '' - cmp.mapping(function(fallback) - if cmp.visible() then - cmp.select_prev_item() - elseif luasnip.locally_jumpable(-1) then - luasnip.jump(-1) - else - fallback() - end - end, { "i", "s" }) + -- Disable the buffer completion because I don't like it + -- { 'blink.cmp.sources.buffer', name = 'Buffer', fallback_for = { 'LSP' } }, + } ''; }; - in '' - function() - local cmp = require("${name}") - local luasnip = require("luasnip") - local lspkind = require("lspkind") + keymap = { + show = ""; + hide = ""; + accept = ""; + select_prev = ["" ""]; + select_next = ["" ""]; - local has_words_before = function() - unpack = unpack or table.unpack - local line, col = unpack(vim.api.nvim_win_get_cursor(0)) - return col ~= 0 and vim.api.nvim_buf_get_lines(0, line - 1, line, true)[1]:sub(col, col):match("%s") == nil - end + show_documentation = ""; + hide_documentation = ""; + scroll_documentation_up = ""; + scroll_documentation_down = ""; - return { - sources = cmp.config.sources(${sources}), - - snippet = { - expand = function(args) - require("luasnip").lsp_expand(args.body) - end, - }, - - window = { - completion = cmp.config.window.bordered(), - documentation = cmp.config.window.bordered(), - -- completion.border = "rounded", - -- documentation.border = "rounded", - }, - - formatting = { - format = lspkind.cmp_format({ - mode = "symbol", -- Show only symbol annotations - maxwidth = 50, - ellipsis_char = "...", - show_labelDetails = true, -- show labelDetails in menu. Disabled by default - - -- The function below will be called before any actual modifications from lspkind - before = function (entry, vim_item) - return vim_item - end - }) - }, - - mapping = cmp.mapping.preset.insert(${mapping}), - } - end - ''; + snippet_forward = ""; + snippet_backward = ""; + }; + nerd_font_variant = "mono"; + windows = { + autocomplete = { + border = "rounded"; + draw = "reversed"; + }; + documentation = { + border = "rounded"; + auto_show = true; + auto_show_delay_ms = 250; + }; + signature_help = { + border = "rounded"; + }; + }; + accept = { + auto_brackets = { + enabled = true; + }; + }; + trigger = { + signature_help = { + enabled = true; + }; + }; + }; }; # colorizer = rec { @@ -1052,7 +988,8 @@ in { local __lspCapabilities = function() capabilities = vim.lsp.protocol.make_client_capabilities() - capabilities = vim.tbl_deep_extend("force", capabilities, require("cmp_nvim_lsp").default_capabilities()) + -- I don't remember where this came from, but without cmp it makes no sense + -- capabilities = vim.tbl_deep_extend("force", capabilities, require("cmp_nvim_lsp").default_capabilities()) return capabilities end @@ -1387,12 +1324,17 @@ in { bottom_search = false; command_palette = true; long_message_to_split = true; - inc_rename = true; + inc_rename = true; # TODO: Doesn't work as I expect (not for LSP rename) lsp_doc_border = true; }; lsp = { + progress.enabled = true; + hover.enabled = true; + signature.enabled = false; # Use blink for this + message.enabled = true; documentation = { + view = "hover"; opts = { lang = "markdown"; replace = true; @@ -1404,7 +1346,6 @@ in { conceallevel = 3; }; }; - view = "hover"; }; override = { @@ -2037,18 +1978,21 @@ in { better-escape # Escape to normal mode using "jk" catppuccin # Colortheme (also add this here to access palettes) cellular-automaton # Procrastinate better by watching animations - clangd-extensions - - # blink-cmp # Auto completion popups # TODO: Try this instead of cmp - - cmp # Auto completion popups + clangd-extensions # Improved clang LSP support + blink-cmp # Fast as fuck auto completion # colorizer # Colorize color strings # TODO: Only colorize html/css/scss/sass/js comment # Toggle line- or block-comments conform # Auto formatting on save + + # dadbod # Database interface # TODO: + # dadbod-ui # Dadbod UI # TODO: + dashboard # Dashboard when starting nvim + # dap # Debug adapter protocol # TODO: + # dap-ui # Debugger UI # TODO: diffview # Git diff # TODO: Check the keybindings direnv # Automatically load local environments @@ -2076,6 +2020,9 @@ in { noice # Modern UI overhaul, e.g. floating cmdline obsidian # Integration with Obsidian.md oil # File manager + + # overseer # Run tasks from within neovim (e.g. cargo) # TODO: + presence # Discord rich presence quickfix-reflector # Make the quickfix list editable and saveable to apply changes rainbow-delimiters # Bracket/Paren colorization @@ -2093,7 +2040,7 @@ in { ufo # Code folding vimtex # LaTeX support wakatime # Time tracking - web-devicons + web-devicons # Icons for many plugins which-key # Live keybinding help winshift # Move windows around yanky # Clipboard history diff --git a/lib/nixos.nix b/lib/nixos.nix index 39ec5b4d..55743eb8 100644 --- a/lib/nixos.nix +++ b/lib/nixos.nix @@ -35,7 +35,7 @@ { home-manager = { # Values in "extraSpecialArgs" are propagated to all HM modules. - extraSpecialArgs = {inherit inputs hostname username mylib;}; + extraSpecialArgs = {inherit inputs system hostname username mylib;}; # Use the "pkgs" from the system configuration. # This disables "nixpkgs.*" options in HM modules.