neovim-flake/docs/manual/home-manager.md

76 lines
2.2 KiB
Markdown
Raw Normal View History

2023-12-09 20:03:58 +01:00
# Home Manager {#ch-hm-module}
2023-06-06 02:01:44 +02:00
The Home Manager module allows us to customize the different `vim` options from inside the home-manager configuration
and it is the preferred way of configuring neovim-flake, both on NixOS and non-NixOS systems.
To use it, we first add the input flake.
2023-06-06 02:01:44 +02:00
2023-12-09 20:03:58 +01:00
```nix
2023-06-06 02:01:44 +02:00
{
neovim-flake = {
url = github:notashelf/neovim-flake;
# you can override input nixpkgs
inputs.nixpkgs.follows = "nixpkgs";
# you can also override individual plugins
# i.e inputs.obsidian-nvim.follows = "obsidian-nvim"; # <- obsidian nvim needs to be in your inputs
2023-06-06 02:01:44 +02:00
};
}
2023-12-09 20:03:58 +01:00
```
2023-06-06 02:01:44 +02:00
Followed by importing the home-manager module somewhere in your configuration.
2023-12-09 20:03:58 +01:00
```nix
{
# assuming neovim-flake is in your inputs and inputs is in the argset
imports = [ inputs.neovim-flake.homeManagerModules.default ];
}
2023-12-09 20:03:58 +01:00
```
An example installation for standalone home-manager would look like this:
2023-06-06 02:01:44 +02:00
2023-12-09 20:03:58 +01:00
```nix
2023-06-06 02:01:44 +02:00
{
inputs = {
nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
home-manager.url = "github:nix-community/home-manager";
stylix.url = "github:notashelf/neovim-flake";
};
outputs = { nixpkgs, home-manager, neovim-flake ... }: let
system = "x86_64-linux"; in {
# ↓ this is the home-manager output in the flake schema
homeConfigurations."yourUsername»" = home-manager.lib.homeManagerConfiguration {
pkgs = nixpkgs.legacyPackages.x86_64-linux;
modules = [
neovim-flake.homeManagerModules.default # <- this imports the home-manager module that provides the options
./home.nix # your home-manager configuration, probably where you will want to add programs.neovim-flake options
];
};
};
2023-06-06 02:01:44 +02:00
}
2023-12-09 20:03:58 +01:00
```
2023-06-06 02:01:44 +02:00
Once the module is imported, we will be able to define the following options (and much more) from inside the
home-manager configuration.
2023-06-06 02:01:44 +02:00
2023-12-09 20:03:58 +01:00
```nix{
2023-06-06 02:01:44 +02:00
programs.neovim-flake = {
enable = true;
# your settings need to go into the settings attribute set
# most settings are documented in the appendix
2023-06-06 02:01:44 +02:00
settings = {
vim.viAlias = false;
vim.vimAlias = true;
vim.lsp = {
enable = true;
};
};
};
}
2023-12-09 20:03:58 +01:00
```
2023-06-06 02:01:44 +02:00
2023-12-09 20:03:58 +01:00
:::{.note}
You may find all avaliable options in the [appendix](https://notashelf.github.io/neovim-flake/options)
:::