Hello,
I have developed a home-manager module for my neovim
{ config, lib, pkgs, ...}:
let
cfg = config.dotfiles.home-manager.nvim;
in
{
options.dotfiles.home-manager.nvim= {
enable = lib.mkEnableOption "Enable nvim module";
};
};
config = lib.mkIf cfg.enable {
programs.neovim = {
enable = true;
defaultEditor = true;
viAlias = true;
vimAlias = true;
extraLuaConfig = (builtins.concatStringsSep "\n" [
(builtins.readFile ./settings.lua)
]);
extraPackages = with pkgs; [
#some language servers
ccls
lua-language-server
nil
];
plugins = with pkgs.vimPlugins; [
rainbow
kanagawa-nvim
palenight-vim
tokyonight-nvim
onehalf
nvim-web-devicons
{
plugin = lualine-nvim;
type = "lua";
config = builtins.readFile ./lualine.lua;
}
{
plugin = nvim-lspconfig;
type = "lua";
config = builtins.readFile ./lsp.lua;
}
vim-gitgutter
vim-css-color
{
plugin = (nvim-treesitter.withPlugins (p: [
p.tree-sitter-nix
p.tree-sitter-c
p.tree-sitter-cpp
p.tree-sitter-lua
p.tree-sitter-vim
p.tree-sitter-python
p.tree-sitter-bash
p.tree-sitter-markdown
]));
type = "lua";
config = builtins.readFile ./treesitter.lua;
}
];
};
};
}
now, what i want to do is add an option like lspconfig
that adds lsp configs like this one
require('lspconfig').ccls.setup {
on_attach = on_attach,
capabilities = capabilities,
}
And I want to use this option in other flake.nix files like this one:
{
description = "";
inputs = {
nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable";
dotfiles.url = "github:Azeved00/.files";
};
outputs = { self, ... } @ inputs:
let
pkgs = import inputs.nixpkgs { inherit system; };
name = "";
system = "x86_64-linux";
in {
imports = [ inputs.dotfiles.homeManagerModules.neovim ];
dotfiles.home-manager.nvim = {
enable = false;
lsps = "
require('lspconfig').rust_analyzer.setup {
on_attach = on_attach,
capabilities = capabilities,
}";
};
devShells."${system}".default = pkgs.mkShell {
inherit name;
buildInputs = with pkgs; [
cargo
rustc
rust-analyzer
];
shellHook = ''
export NIX_SHELL_NAME="${name}"
echo -ne "\033]0;${name}\007"
alias build='cargo build'
alias run='cargo run'
alias test='cargo test'
alias dtest='cargo test -- --show-output'
alias doc='cargo doc'
alias odoc='cargo doc --open'
echo 'rustc is @ version ${pkgs.rustc}'
echo 'cargo is @ version ${pkgs.cargo}'
reload
'';
};
};
}
Is this possible? if yes how?
Thank you for any and all help!!