After much struggling I've figured out how to make a neovim flake which works how I want it too
With flakes enabled
nix run github:Gerg-L/nvim-flake
Legacy (may seem like it stalls)
nix-shell -p '(import (builtins.fetchTarball "https://github.com/Gerg-L/nvim-flake/archive/master.tar.gz")).packages.${builtins.currentSystem}.default' --run nvim
Add this flake as an input
#flake.nix
{
inputs = {
nvim-flake = {
url = "github:Gerg-L/nvim-flake";
inputs.nixpkgs.follows = "nixpkgs";
};
...
(Make sure you're passing inputs to your modules)
#anyModule.nix
{inputs, pkgs, ...}:
{
# add system wide
environment.systemPackages = [
inputs.nvim-flake.packages.${pkgs.system.default
];
# add per-user
users.users."<name>".packages = [
inputs.nvim-flake.packages.${pkgs.system.default
];
}
Use fetchTarball
#anyModule.nix
{pkgs, ...}:
let
nvim-flake = import (builtins.fetchTarball {
# Get the revision by choosing a version from https://github.com/Gerg-L/nvim-flake/commits/master
url = "https://github.com/Gerg-L/nvim-flake/archive/<revision>.tar.gz";
# Get the hash by running `nix-prefetch-url --unpack <url>` on the above url
sha256 = "<hash>";
});
in
{
# add system wide
environment.systemPackages = [
nvim-flake.packages.${pkgs.system.default
];
# add per-user
users.users."<name>".packages = [
nvim-flake.packages.${pkgs.system.default
];
}
Update the flake like any other nix flake update
Add/remove/update plugins via npins
Example of adding a plugin: npins add github nvim-treesitter nvim-treesitter-context -branch main
Example of updated all plugins: npins update -f
All lua configuration is done in the /lua directory, and imported and ordered through /lua/default.nix. my lua config is not very good so I reccomend bringing your own