feat(neovim)!: pull flake information from envvar
This makes so we don't have to rely on writing an extra derivation just for the parsed lsp configuration. Thus, the `programs.neovim.nixd.hostname` settings has been dropped and you can migrate your `programs.neovim.nixd.location` to `programs.neovim.flakePath` if you do not set the `FLAKE` envvar anywhere.
This commit is contained in:
parent
5090767ba2
commit
5b99eaffea
5 changed files with 34 additions and 49 deletions
|
@ -4,16 +4,14 @@ The module extends `programs.neovim`.
|
|||
|
||||
## Module options
|
||||
|
||||
### programs.neovim.nixd.hostname
|
||||
|
||||
By default [nixd] is enabled, you **need** to pass the current machine's
|
||||
hostname that is used to generate your system.
|
||||
|
||||
### programs.neovim.nixd.location
|
||||
### programs.neovim.flakePath
|
||||
|
||||
The location of your system's flake, [nixd] will execute an expression defined in the LSP's configuration that reads
|
||||
the flake's contents to evaluate [NixOS] and [Home Manager] options.
|
||||
|
||||
This setting is optional since other programs might force you to set the `FLAKE` environment variable; if this is not
|
||||
set by the time you open [neovim] it will spout an error, impeding critical plugins from starting.
|
||||
|
||||
### programs.neovim.ollama.enable
|
||||
|
||||
Whether to add an [ollama] package to be used with [ollama.nvim](https://github.com/nomnivore/ollama.nvim).
|
||||
|
|
|
@ -25,20 +25,11 @@ let
|
|||
in
|
||||
{
|
||||
options.programs.neovim = {
|
||||
nixd = {
|
||||
hostname = mkOption {
|
||||
default = "wizdesk";
|
||||
description = "Your NixOS hostname, needed for nixd lsp.";
|
||||
example = "nixos";
|
||||
type = types.str;
|
||||
};
|
||||
|
||||
location = mkOption {
|
||||
default = "git+file:///home/wizardlink/.system";
|
||||
description = "Path to your flake location, prepend 'file:///' to it and 'git+' before that if using git.";
|
||||
example = "git+file:///home/wizardlink/.system";
|
||||
type = types.str;
|
||||
};
|
||||
flakePath = mkOption {
|
||||
default = null;
|
||||
description = "The path to your flake, this will be the value of the `FLAKE` environment variable.";
|
||||
example = "~/.config/nix";
|
||||
type = types.nullOr types.str;
|
||||
};
|
||||
|
||||
ollama = {
|
||||
|
@ -57,10 +48,14 @@ in
|
|||
};
|
||||
|
||||
config = {
|
||||
home.sessionVariables = {
|
||||
EDITOR = "nvim";
|
||||
MANPAGER = "nvim +Man!";
|
||||
};
|
||||
home.sessionVariables =
|
||||
{
|
||||
EDITOR = "nvim";
|
||||
MANPAGER = "nvim +Man!";
|
||||
}
|
||||
// lib.optionalAttrs (config.programs.neovim.flakePath != null) {
|
||||
FLAKE = config.programs.neovim.flakePath;
|
||||
};
|
||||
|
||||
programs.neovim = {
|
||||
withNodeJs = true;
|
||||
|
@ -157,14 +152,6 @@ in
|
|||
source = ./ftplugin;
|
||||
};
|
||||
|
||||
xdg.configFile."nvim/lua/plugins/astrolsp.lua".source = pkgs.runCommand "astrolsp.lua" { } ''
|
||||
cp ${./lsp.lua} $out
|
||||
|
||||
substituteInPlace $out \
|
||||
--replace-fail "{hostname}" "${config.programs.neovim.nixd.hostname}" \
|
||||
--replace-fail "{location}" "${config.programs.neovim.nixd.location}"
|
||||
'';
|
||||
|
||||
xdg.dataFile."nvim/lazy/blink.cmp/target/release/libblink_cmp_fuzzy.so" = {
|
||||
recursive = true;
|
||||
source = "${blink-cmp.packages.${pkgs.system}.blink-fuzzy-lib}/lib/libblink_cmp_fuzzy.so";
|
||||
|
|
|
@ -9,6 +9,9 @@ return {
|
|||
---@param opts AstroLSPOpts
|
||||
---@return AstroLSPOpts
|
||||
opts = function(_, opts)
|
||||
local system_flake_path = vim.fn.getenv "FLAKE" or error "FLAKE environment variable must be set."
|
||||
local hostname = vim.fn.hostname()
|
||||
|
||||
---@type AstroLSPOpts
|
||||
local lsp_options = {
|
||||
-- Configuration table of features provided by AstroLSP
|
||||
|
@ -84,15 +87,23 @@ return {
|
|||
settings = {
|
||||
nixd = {
|
||||
nixpkgs = {
|
||||
expr = "import (builtins.getFlake ({location})).inputs.nixpkgs { }",
|
||||
expr = "import (builtins.getFlake (" .. system_flake_path .. ")).inputs.nixpkgs { }",
|
||||
},
|
||||
options = {
|
||||
nixos = {
|
||||
expr = '(builtins.getFlake ("{location}")).nixosConfigurations.{hostname}.options',
|
||||
expr = "(builtins.getFlake ("
|
||||
.. system_flake_path
|
||||
.. ")).nixosConfigurations."
|
||||
.. hostname
|
||||
.. ".options",
|
||||
},
|
||||
home_manager = {
|
||||
expr =
|
||||
'(builtins.getFlake ("{location}")).nixosConfigurations.{hostname}.options.home-manager.users.type.getSubOptions []',
|
||||
expr = "(builtins.getFlake ("
|
||||
.. system_flake_path
|
||||
.. ")).nixosConfigurations."
|
||||
.. hostname
|
||||
.. ".options"
|
||||
.. ".home-manager.users.type.getSubOptions []",
|
||||
},
|
||||
},
|
||||
},
|
|
@ -85,14 +85,6 @@
|
|||
# Let Home Manager install and manage itself.
|
||||
programs.home-manager.enable = true;
|
||||
|
||||
programs.neovim = {
|
||||
# Enable Neovim, pre-configured by `linuxware`.
|
||||
enable = true;
|
||||
|
||||
# Configure nixd
|
||||
nixd = {
|
||||
hostname = "your-hostname-here";
|
||||
location = "your-flake-location-here";
|
||||
};
|
||||
};
|
||||
# Enable Neovim, pre-configured by `linuxware`.
|
||||
programs.neovim.enable = true;
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue