A standalone configuration is one that exists in its own project/repository.
This means that you can externalize your entire neovim configuration, including
flake inputs, nixpkgs version, etc...
This decoupling of neovim and NixOS configurations has multiple advantages
including mixing stable/unstable nixpkgs and the ability to run your neovim
configuration outside of your NixOS configuration. You can even run it
outside of NixOS all together.
To get started you can generate a flake in a new project from the provided template:
nix flake init --template github:nix-community/nixvimThe template starts with a basic structure and the bufferline plugin enabled.
.
├── config
│ ├── bufferline.nix
│ └── default.nix
├── flake.nix
└── README.mdThe initial layout encourages you to configure each plugin in its own file but
you're free to organize it however you wish. From here you can configure
nixvim like you would with the other methods.
Running this from the project folder is as simple as:
nix runIf you have pushed this to a public git repository you can run it remotely from
any machine with nix installed. This is one of the stronger advantages in my
opinion because your configuration is now portable anywhere you need it.
You can try running mine with:
nix run 'github:siph/nixvim-flake'
# You can also provide multiple configs as different package outputs.
nix run 'github:siph/nixvim-flake#lite'Your nixvim flake will output a derivation that you can easily include in
either home.packages for home-manager, or environment.systemPackages for
NixOS. Or whatever happens with darwin?
You can add your nixvim configuration as an input to your NixOS configuration like:
{
inputs = {
nixvim-flake.url = "github:<USER>/<REPOSITORY>";
};
}With the input added you can reference it directly.
{ inputs, system, ... }:
{
# NixOS
environment.systemPackages = [ inputs.nixvim-flake.packages.${system}.default ];
# home-manager
home.packages = [ inputs.nixvim-flake.packages.${system}.default ];
}The binary built by nixvim is already named as nvim so you can call it just
like you normally would.
Another method is to overlay your custom build over neovim from nixpkgs.
This method is less straight-forward but allows you to install neovim like
you normally would. With this method you would just install neovim in your
configuration (home.packges = with pkgs; [ neovim ]), but you replace
neovim in pkgs with your derivation from nixvim-flake.
{
pkgs = import inputs.nixpkgs {
inherit system;
overlays = [
(final: prev: {
neovim = inputs.nixvim-flake.packages.${system}.default;
})
];
}
}You can just straight up alias something like nix run 'github:siph/nixvim-flake' to nvim.
Hi. Thank for this gist. Found it on google.
I followed the gist, specifally this part:
environment.systemPackages = [ inputs.nixvim-flake.packages.${system}.default ];.But when I do
sudo nixos-rebuild switch --flake ~/repos/dotfiles/#myNixosI get the following error: