mirror of
				https://github.com/NotAShelf/nvf.git
				synced 2025-11-04 04:32:21 +00:00 
			
		
		
		
	Compare commits
	
		
			No commits in common. "da1fed218b2dda294190e004da4d5bec7d43ec34" and "0c9b4d0d80bb0f9b0a99cd1717344e705f7ca6b2" have entirely different histories.
		
	
	
		
			
				da1fed218b
			
			...
			
				0c9b4d0d80
			
		
	
		
					 10 changed files with 32 additions and 235 deletions
				
			
		
							
								
								
									
										15
									
								
								default.nix
									
										
									
									
									
								
							
							
						
						
									
										15
									
								
								default.nix
									
										
									
									
									
								
							| 
						 | 
					@ -1,15 +0,0 @@
 | 
				
			||||||
(import (
 | 
					 | 
				
			||||||
    let
 | 
					 | 
				
			||||||
      lock = builtins.fromJSON (builtins.readFile ./flake.lock);
 | 
					 | 
				
			||||||
      inherit (lock.nodes.flake-compat.locked) url rev narHash;
 | 
					 | 
				
			||||||
    in
 | 
					 | 
				
			||||||
      builtins.fetchTarball {
 | 
					 | 
				
			||||||
        url = "${url}/archive/${rev}.tar.gz";
 | 
					 | 
				
			||||||
        sha256 = narHash;
 | 
					 | 
				
			||||||
      }
 | 
					 | 
				
			||||||
  ) {
 | 
					 | 
				
			||||||
    src = ./.;
 | 
					 | 
				
			||||||
    copySourceTreeToStore = false;
 | 
					 | 
				
			||||||
    useBuiltinsFetchTree = true;
 | 
					 | 
				
			||||||
  })
 | 
					 | 
				
			||||||
.defaultNix
 | 
					 | 
				
			||||||
| 
						 | 
					@ -1,33 +0,0 @@
 | 
				
			||||||
### Prerequisites {#sec-flakes-prerequisites}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
To install nvf with flakes, you must make sure the following requirements are
 | 
					 | 
				
			||||||
met.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
1. Nix 2.4 or later must be installed. You may use `nix-shell` to get a later
 | 
					 | 
				
			||||||
   version of Nix from nixpkgs.
 | 
					 | 
				
			||||||
2. Flake-related experimental features must be enabled. Namely, you need
 | 
					 | 
				
			||||||
   `nix-command` and `flakes`. Some Nix vendors enable those by default, please
 | 
					 | 
				
			||||||
   consult their documentation if you are not using mainstream Nix.
 | 
					 | 
				
			||||||
   - When using NixOS, add the following to your `configuration.nix` and rebuild
 | 
					 | 
				
			||||||
     your system.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
     ```nix
 | 
					 | 
				
			||||||
     nix.settings.experimental-features = "nix-command flakes";
 | 
					 | 
				
			||||||
     ```
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
   - If you are not using NixOS, add the following to `nix.conf` (located at
 | 
					 | 
				
			||||||
     `~/.config/nix/` or `/etc/nix/nix.conf`).
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
     ```bash
 | 
					 | 
				
			||||||
     experimental-features = nix-command flakes
 | 
					 | 
				
			||||||
     ```
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
   - You may need to restart the Nix daemon with, for example,
 | 
					 | 
				
			||||||
     `sudo systemctl restart nix-daemon.service`.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
   - Alternatively, you can enable flakes on a per-command basis with the
 | 
					 | 
				
			||||||
     following additional flags to `nix` and `home-manager`:
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
     ```sh
 | 
					 | 
				
			||||||
     $ nix --extra-experimental-features "nix-command flakes" <sub-commands>
 | 
					 | 
				
			||||||
     ```
 | 
					 | 
				
			||||||
| 
						 | 
					@ -5,18 +5,9 @@ inside the home-manager configuration without having to call for the wrapper
 | 
				
			||||||
yourself. It is the recommended way to use **nvf** alongside the NixOS module
 | 
					yourself. It is the recommended way to use **nvf** alongside the NixOS module
 | 
				
			||||||
depending on your needs.
 | 
					depending on your needs.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
## With Flakes {#sec-hm-flakes}
 | 
					To use it, we first add the input flake.
 | 
				
			||||||
 | 
					 | 
				
			||||||
```{=include=}
 | 
					 | 
				
			||||||
flakes.md
 | 
					 | 
				
			||||||
```
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
### Usage {#sec-hm-flakes-usage}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
To use **nvf** with flakes, we first need to add the input to our `flake.nix`.
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
```nix
 | 
					```nix
 | 
				
			||||||
# flake.nix
 | 
					 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  inputs = {
 | 
					  inputs = {
 | 
				
			||||||
    # Optional, if you intend to follow nvf's obsidian-nvim input
 | 
					    # Optional, if you intend to follow nvf's obsidian-nvim input
 | 
				
			||||||
| 
						 | 
					@ -25,7 +16,7 @@ To use **nvf** with flakes, we first need to add the input to our `flake.nix`.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    # Required, nvf works best and only directly supports flakes
 | 
					    # Required, nvf works best and only directly supports flakes
 | 
				
			||||||
    nvf = {
 | 
					    nvf = {
 | 
				
			||||||
      url = "github:NotAShelf/nvf";
 | 
					      url = "github:notashelf/nvf";
 | 
				
			||||||
      # You can override the input nixpkgs to follow your system's
 | 
					      # You can override the input nixpkgs to follow your system's
 | 
				
			||||||
      # instance of nixpkgs. This is safe to do as nvf does not depend
 | 
					      # instance of nixpkgs. This is safe to do as nvf does not depend
 | 
				
			||||||
      # on a binary cache.
 | 
					      # on a binary cache.
 | 
				
			||||||
| 
						 | 
					@ -34,8 +25,6 @@ To use **nvf** with flakes, we first need to add the input to our `flake.nix`.
 | 
				
			||||||
      # for example:
 | 
					      # for example:
 | 
				
			||||||
      inputs.obsidian-nvim.follows = "obsidian-nvim"; # <- this will use the obsidian-nvim from your inputs
 | 
					      inputs.obsidian-nvim.follows = "obsidian-nvim"; # <- this will use the obsidian-nvim from your inputs
 | 
				
			||||||
    };
 | 
					    };
 | 
				
			||||||
 | 
					 | 
				
			||||||
    # ...
 | 
					 | 
				
			||||||
  };
 | 
					  };
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
```
 | 
					```
 | 
				
			||||||
| 
						 | 
					@ -50,7 +39,7 @@ Followed by importing the home-manager module somewhere in your configuration.
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
```
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
### Example Installation {#sec-example-installation-hm}
 | 
					## Example Installation {#sec-example-installation-hm}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
```nix
 | 
					```nix
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
| 
						 | 
					@ -77,8 +66,7 @@ Once the module is properly imported by your host, you will be able to use the
 | 
				
			||||||
`programs.nvf` module option anywhere in your configuration in order to
 | 
					`programs.nvf` module option anywhere in your configuration in order to
 | 
				
			||||||
configure **nvf**.
 | 
					configure **nvf**.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
```nix
 | 
					```nix{
 | 
				
			||||||
{
 | 
					 | 
				
			||||||
  programs.nvf = {
 | 
					  programs.nvf = {
 | 
				
			||||||
    enable = true;
 | 
					    enable = true;
 | 
				
			||||||
    # your settings need to go into the settings attribute set
 | 
					    # your settings need to go into the settings attribute set
 | 
				
			||||||
| 
						 | 
					@ -101,45 +89,3 @@ installation sections of the manual. You may find all available options in the
 | 
				
			||||||
[appendix](https://notashelf.github.io/nvf/options)
 | 
					[appendix](https://notashelf.github.io/nvf/options)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
:::
 | 
					:::
 | 
				
			||||||
 | 
					 | 
				
			||||||
## Without Flakes {#sec-hm-flakeless}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
As of v0.8, it is possible to install **nvf** on a system if you are not using
 | 
					 | 
				
			||||||
flakes. This is possible thanks to the flake-compat project.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
To get started, you must fetch the repository using `builtins.fetchTarball` or a
 | 
					 | 
				
			||||||
similar mechanism.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
```nix
 | 
					 | 
				
			||||||
# home.nix
 | 
					 | 
				
			||||||
let
 | 
					 | 
				
			||||||
  nvf = import (builtins.fetchTarball {
 | 
					 | 
				
			||||||
    url = "https://github.com/notashelf/nvf/archive/<commit or tag>.tar.gz";
 | 
					 | 
				
			||||||
    # Optionally, you can add 'sha256' for verification and caching
 | 
					 | 
				
			||||||
    # sha256 = "<sha256>";
 | 
					 | 
				
			||||||
  });
 | 
					 | 
				
			||||||
in {
 | 
					 | 
				
			||||||
  imports = [
 | 
					 | 
				
			||||||
    # Import the NixOS module from your fetched input
 | 
					 | 
				
			||||||
    nvf.homeManagerModules.nvf
 | 
					 | 
				
			||||||
  ];
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  # Once the module is imported, you may use `programs.nvf` as exposed by the
 | 
					 | 
				
			||||||
  # NixOS module.
 | 
					 | 
				
			||||||
  programs.nvf.enable = true;
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
```
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
[npins]: https://github.com/andir/npins
 | 
					 | 
				
			||||||
[niv]: https://github.com/nmattia/niv
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
::: {.tip}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
Nix2 does not have a builtin lockfile mechanism like flakes. As such you must
 | 
					 | 
				
			||||||
manually update the URL and hash for your input. This is annoying to deal with,
 | 
					 | 
				
			||||||
and most users choose to defer this task to projects such as [npins] or [niv].
 | 
					 | 
				
			||||||
If you are new to NixOS, I encourage you to look into Flakes and see if they fit
 | 
					 | 
				
			||||||
your use case. Alternatively, look into the aforementioned projects for more
 | 
					 | 
				
			||||||
convenient dependency management mechanisms.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
:::
 | 
					 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -5,18 +5,9 @@ the NixOS configuration without having to call for the wrapper yourself. It is
 | 
				
			||||||
the recommended way to use **nvf** alongside the home-manager module depending
 | 
					the recommended way to use **nvf** alongside the home-manager module depending
 | 
				
			||||||
on your needs.
 | 
					on your needs.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
## With Flakes {#sec-nixos-flakes}
 | 
					To use it, we first add the input flake.
 | 
				
			||||||
 | 
					 | 
				
			||||||
```{=include=}
 | 
					 | 
				
			||||||
flakes.md
 | 
					 | 
				
			||||||
```
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
### Usage {#sec-nixos-flakes-usage}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
To use **nvf** with flakes, we first need to add the input to our `flake.nix`.
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
```nix
 | 
					```nix
 | 
				
			||||||
# flake.nix
 | 
					 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  inputs = {
 | 
					  inputs = {
 | 
				
			||||||
    # Optional, if you intend to follow nvf's obsidian-nvim input
 | 
					    # Optional, if you intend to follow nvf's obsidian-nvim input
 | 
				
			||||||
| 
						 | 
					@ -25,7 +16,7 @@ To use **nvf** with flakes, we first need to add the input to our `flake.nix`.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    # Required, nvf works best and only directly supports flakes
 | 
					    # Required, nvf works best and only directly supports flakes
 | 
				
			||||||
    nvf = {
 | 
					    nvf = {
 | 
				
			||||||
      url = "github:NotAShelf/nvf";
 | 
					      url = "github:notashelf/nvf";
 | 
				
			||||||
      # You can override the input nixpkgs to follow your system's
 | 
					      # You can override the input nixpkgs to follow your system's
 | 
				
			||||||
      # instance of nixpkgs. This is safe to do as nvf does not depend
 | 
					      # instance of nixpkgs. This is safe to do as nvf does not depend
 | 
				
			||||||
      # on a binary cache.
 | 
					      # on a binary cache.
 | 
				
			||||||
| 
						 | 
					@ -34,8 +25,6 @@ To use **nvf** with flakes, we first need to add the input to our `flake.nix`.
 | 
				
			||||||
      # for example:
 | 
					      # for example:
 | 
				
			||||||
      inputs.obsidian-nvim.follows = "obsidian-nvim"; # <- this will use the obsidian-nvim from your inputs
 | 
					      inputs.obsidian-nvim.follows = "obsidian-nvim"; # <- this will use the obsidian-nvim from your inputs
 | 
				
			||||||
    };
 | 
					    };
 | 
				
			||||||
 | 
					 | 
				
			||||||
    # ...
 | 
					 | 
				
			||||||
  };
 | 
					  };
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
```
 | 
					```
 | 
				
			||||||
| 
						 | 
					@ -50,7 +39,7 @@ Followed by importing the NixOS module somewhere in your configuration.
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
```
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
### Example Installation {#sec-example-installation-nixos}
 | 
					## Example Installation {#sec-example-installation-nixos}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
```nix
 | 
					```nix
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
| 
						 | 
					@ -75,12 +64,10 @@ Once the module is properly imported by your host, you will be able to use the
 | 
				
			||||||
`programs.nvf` module option anywhere in your configuration in order to
 | 
					`programs.nvf` module option anywhere in your configuration in order to
 | 
				
			||||||
configure **nvf**.
 | 
					configure **nvf**.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
```nix
 | 
					```nix{
 | 
				
			||||||
{
 | 
					 | 
				
			||||||
  programs.nvf = {
 | 
					  programs.nvf = {
 | 
				
			||||||
    enable = true;
 | 
					    enable = true;
 | 
				
			||||||
    
 | 
					    # your settings need to go into the settings attribute set
 | 
				
			||||||
    # Your settings need to go into the settings attribute set
 | 
					 | 
				
			||||||
    # most settings are documented in the appendix
 | 
					    # most settings are documented in the appendix
 | 
				
			||||||
    settings = {
 | 
					    settings = {
 | 
				
			||||||
      vim.viAlias = false;
 | 
					      vim.viAlias = false;
 | 
				
			||||||
| 
						 | 
					@ -100,45 +87,3 @@ installation sections of the manual. You may find all available options in the
 | 
				
			||||||
[appendix](https://notashelf.github.io/nvf/options)
 | 
					[appendix](https://notashelf.github.io/nvf/options)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
:::
 | 
					:::
 | 
				
			||||||
 | 
					 | 
				
			||||||
## Without Flakes {#sec-nixos-flakeless}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
As of v0.8, it is possible to install **nvf** on a system if you are not using
 | 
					 | 
				
			||||||
flakes. This is possible thanks to the flake-compat project.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
To get started, you must fetch the repository using `builtins.fetchTarball` or a
 | 
					 | 
				
			||||||
similar mechanism.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
```nix
 | 
					 | 
				
			||||||
# configuration.nix
 | 
					 | 
				
			||||||
let
 | 
					 | 
				
			||||||
  nvf = import (builtins.fetchTarball {
 | 
					 | 
				
			||||||
    url = "https://github.com/notashelf/nvf/archive/<commit or tag>.tar.gz";
 | 
					 | 
				
			||||||
    # Optionally, you can add 'sha256' for verification and caching
 | 
					 | 
				
			||||||
    # sha256 = "<sha256>";
 | 
					 | 
				
			||||||
  });
 | 
					 | 
				
			||||||
in {
 | 
					 | 
				
			||||||
  imports = [
 | 
					 | 
				
			||||||
    # Import the NixOS module from your fetched input
 | 
					 | 
				
			||||||
    nvf.nixosModules.nvf
 | 
					 | 
				
			||||||
  ];
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  # Once the module is imported, you may use `programs.nvf` as exposed by the
 | 
					 | 
				
			||||||
  # NixOS module.
 | 
					 | 
				
			||||||
  programs.nvf.enable = true;
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
```
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
[npins]: https://github.com/andir/npins
 | 
					 | 
				
			||||||
[niv]: https://github.com/nmattia/niv
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
::: {.tip}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
Nix2 does not have a builtin lockfile mechanism like flakes. As such you must
 | 
					 | 
				
			||||||
manually update the URL and hash for your input. This is annoying to deal with,
 | 
					 | 
				
			||||||
and most users choose to defer this task to projects such as [npins] or [niv].
 | 
					 | 
				
			||||||
If you are new to NixOS, I encourage you to look into Flakes and see if they fit
 | 
					 | 
				
			||||||
your use case. Alternatively, look into the aforementioned projects for more
 | 
					 | 
				
			||||||
convenient dependency management mechanisms.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
:::
 | 
					 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -5,20 +5,19 @@ installing it to your machine. Below are the commands you may run to try out
 | 
				
			||||||
different configurations provided by this flake. As of v0.5, two specialized
 | 
					different configurations provided by this flake. As of v0.5, two specialized
 | 
				
			||||||
configurations are provided:
 | 
					configurations are provided:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
- **Nix** (`packages.nix`) - Nix language server + simple utility plugins
 | 
					- **Nix** - Nix language server + simple utility plugins
 | 
				
			||||||
- **Maximal** (`packages.maximal`) - Variable language servers + utility and
 | 
					- **Maximal** - Variable language servers + utility and decorative plugins
 | 
				
			||||||
  decorative plugins
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
You may try out any of the provided configurations using the `nix run` command
 | 
					You may try out any of the provided configurations using the `nix run` command
 | 
				
			||||||
on a system where Nix is installed.
 | 
					on a system where Nix is installed.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
```sh
 | 
					```bash
 | 
				
			||||||
$ cachix use nvf                   # Optional: it'll save you CPU resources and time
 | 
					$ cachix use nvf                   # Optional: it'll save you CPU resources and time
 | 
				
			||||||
$ nix run github:notashelf/nvf#nix # Will run the default minimal configuration
 | 
					$ nix run github:notashelf/nvf#nix # will run the default minimal configuration
 | 
				
			||||||
```
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Do keep in mind that this is **susceptible to garbage collection** meaning that
 | 
					Do keep in mind that this is **susceptible to garbage collection** meaning it
 | 
				
			||||||
the built outputs will be removed from your Nix store once you garbage collect.
 | 
					will be removed from your Nix store once you garbage collect.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
## Using Prebuilt Configs {#sec-using-prebuilt-configs}
 | 
					## Using Prebuilt Configs {#sec-using-prebuilt-configs}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -66,7 +65,6 @@ companion or fun plugins.
 | 
				
			||||||
::: {.warning}
 | 
					::: {.warning}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Running the maximal config will download _a lot_ of packages as it is
 | 
					Running the maximal config will download _a lot_ of packages as it is
 | 
				
			||||||
downloading language servers, formatters, and more. If CPU time and bandwidth
 | 
					downloading language servers, formatters, and more.
 | 
				
			||||||
are concerns, please use the default package instead.
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
:::
 | 
					:::
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										17
									
								
								flake.lock
									
										
									
										generated
									
									
									
								
							
							
						
						
									
										17
									
								
								flake.lock
									
										
									
										generated
									
									
									
								
							| 
						 | 
					@ -1,21 +1,5 @@
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  "nodes": {
 | 
					  "nodes": {
 | 
				
			||||||
    "flake-compat": {
 | 
					 | 
				
			||||||
      "flake": false,
 | 
					 | 
				
			||||||
      "locked": {
 | 
					 | 
				
			||||||
        "lastModified": 1751685974,
 | 
					 | 
				
			||||||
        "narHash": "sha256-NKw96t+BgHIYzHUjkTK95FqYRVKB8DHpVhefWSz/kTw=",
 | 
					 | 
				
			||||||
        "ref": "refs/heads/main",
 | 
					 | 
				
			||||||
        "rev": "549f2762aebeff29a2e5ece7a7dc0f955281a1d1",
 | 
					 | 
				
			||||||
        "revCount": 92,
 | 
					 | 
				
			||||||
        "type": "git",
 | 
					 | 
				
			||||||
        "url": "https://git.lix.systems/lix-project/flake-compat.git"
 | 
					 | 
				
			||||||
      },
 | 
					 | 
				
			||||||
      "original": {
 | 
					 | 
				
			||||||
        "type": "git",
 | 
					 | 
				
			||||||
        "url": "https://git.lix.systems/lix-project/flake-compat.git"
 | 
					 | 
				
			||||||
      }
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "flake-parts": {
 | 
					    "flake-parts": {
 | 
				
			||||||
      "inputs": {
 | 
					      "inputs": {
 | 
				
			||||||
        "nixpkgs-lib": [
 | 
					        "nixpkgs-lib": [
 | 
				
			||||||
| 
						 | 
					@ -89,7 +73,6 @@
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    "root": {
 | 
					    "root": {
 | 
				
			||||||
      "inputs": {
 | 
					      "inputs": {
 | 
				
			||||||
        "flake-compat": "flake-compat",
 | 
					 | 
				
			||||||
        "flake-parts": "flake-parts",
 | 
					        "flake-parts": "flake-parts",
 | 
				
			||||||
        "flake-utils": "flake-utils",
 | 
					        "flake-utils": "flake-utils",
 | 
				
			||||||
        "mnw": "mnw",
 | 
					        "mnw": "mnw",
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										43
									
								
								flake.nix
									
										
									
									
									
								
							
							
						
						
									
										43
									
								
								flake.nix
									
										
									
									
									
								
							| 
						 | 
					@ -5,9 +5,8 @@
 | 
				
			||||||
    self,
 | 
					    self,
 | 
				
			||||||
    ...
 | 
					    ...
 | 
				
			||||||
  } @ inputs: let
 | 
					  } @ inputs: let
 | 
				
			||||||
    # Call the extended library with `inputs`.
 | 
					    # call the extended library with `inputs`
 | 
				
			||||||
    # inputs is used to get the original standard library, and to pass inputs
 | 
					    # inputs is used to get the original standard library, and to pass inputs to the plugin autodiscovery function
 | 
				
			||||||
    # to the plugin autodiscovery function
 | 
					 | 
				
			||||||
    lib = import ./lib/stdlib-extended.nix {inherit inputs self;};
 | 
					    lib = import ./lib/stdlib-extended.nix {inherit inputs self;};
 | 
				
			||||||
  in
 | 
					  in
 | 
				
			||||||
    flake-parts.lib.mkFlake {
 | 
					    flake-parts.lib.mkFlake {
 | 
				
			||||||
| 
						 | 
					@ -30,8 +29,6 @@
 | 
				
			||||||
          inherit (lib.nvim) neovimConfiguration;
 | 
					          inherit (lib.nvim) neovimConfiguration;
 | 
				
			||||||
        };
 | 
					        };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        inherit (lib.importJSON ./npins/sources.json) pins;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        homeManagerModules = {
 | 
					        homeManagerModules = {
 | 
				
			||||||
          nvf = import ./flake/modules/home-manager.nix {inherit lib inputs;};
 | 
					          nvf = import ./flake/modules/home-manager.nix {inherit lib inputs;};
 | 
				
			||||||
          default = self.homeManagerModules.nvf;
 | 
					          default = self.homeManagerModules.nvf;
 | 
				
			||||||
| 
						 | 
					@ -53,33 +50,21 @@
 | 
				
			||||||
            ''
 | 
					            ''
 | 
				
			||||||
            self.nixosModules.nvf;
 | 
					            self.nixosModules.nvf;
 | 
				
			||||||
        };
 | 
					        };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        inherit (lib.importJSON ./npins/sources.json) pins;
 | 
				
			||||||
      };
 | 
					      };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      perSystem = {pkgs, ...}: {
 | 
					      perSystem = {pkgs, ...}: {
 | 
				
			||||||
        # Provides the default formatter for 'nix fmt', which will format the
 | 
					        # Provide the default formatter. `nix fmt` in project root
 | 
				
			||||||
        # entire tree with Alejandra. The wrapper script is necessary due to
 | 
					        # will format available files with the correct formatter.
 | 
				
			||||||
        # changes to the behaviour of Nix, which now encourages wrappers for
 | 
					        # P.S: Please do not format with nixfmt! It messes with many
 | 
				
			||||||
        # tree-wide formatting.
 | 
					        # syntax elements and results in unreadable code.
 | 
				
			||||||
        formatter = pkgs.writeShellApplication {
 | 
					        formatter = pkgs.alejandra;
 | 
				
			||||||
          name = "nix3-fmt-wrapper";
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
          runtimeInputs = [
 | 
					 | 
				
			||||||
            pkgs.alejandra
 | 
					 | 
				
			||||||
            pkgs.fd
 | 
					 | 
				
			||||||
          ];
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
          text = ''
 | 
					 | 
				
			||||||
            # Find Nix files in the tree and format them with Alejandra
 | 
					 | 
				
			||||||
            fd "$@" -t f -e nix -x alejandra -q '{}'
 | 
					 | 
				
			||||||
          '';
 | 
					 | 
				
			||||||
        };
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        # Provides checks to be built an ran on 'nix flake check'. They can also
 | 
					 | 
				
			||||||
        # be built individually with 'nix build' as described below.
 | 
					 | 
				
			||||||
        checks = {
 | 
					 | 
				
			||||||
        # Check if codebase is properly formatted.
 | 
					        # Check if codebase is properly formatted.
 | 
				
			||||||
        # This can be initiated with `nix build .#checks.<system>.nix-fmt`
 | 
					        # This can be initiated with `nix build .#checks.<system>.nix-fmt`
 | 
				
			||||||
        # or with `nix flake check`
 | 
					        # or with `nix flake check`
 | 
				
			||||||
 | 
					        checks = {
 | 
				
			||||||
          nix-fmt = pkgs.runCommand "nix-fmt-check" {nativeBuildInputs = [pkgs.alejandra];} ''
 | 
					          nix-fmt = pkgs.runCommand "nix-fmt-check" {nativeBuildInputs = [pkgs.alejandra];} ''
 | 
				
			||||||
            alejandra --check ${self} < /dev/null | tee $out
 | 
					            alejandra --check ${self} < /dev/null | tee $out
 | 
				
			||||||
          '';
 | 
					          '';
 | 
				
			||||||
| 
						 | 
					@ -87,9 +72,8 @@
 | 
				
			||||||
      };
 | 
					      };
 | 
				
			||||||
    };
 | 
					    };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  # Flake inputs
 | 
				
			||||||
  inputs = {
 | 
					  inputs = {
 | 
				
			||||||
    systems.url = "github:nix-systems/default";
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    ## Basic Inputs
 | 
					    ## Basic Inputs
 | 
				
			||||||
    nixpkgs.url = "github:nixos/nixpkgs/nixpkgs-unstable";
 | 
					    nixpkgs.url = "github:nixos/nixpkgs/nixpkgs-unstable";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -103,10 +87,7 @@
 | 
				
			||||||
      inputs.systems.follows = "systems";
 | 
					      inputs.systems.follows = "systems";
 | 
				
			||||||
    };
 | 
					    };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    flake-compat = {
 | 
					    systems.url = "github:nix-systems/default";
 | 
				
			||||||
      url = "git+https://git.lix.systems/lix-project/flake-compat.git";
 | 
					 | 
				
			||||||
      flake = false;
 | 
					 | 
				
			||||||
    };
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
    # Alternate neovim-wrapper
 | 
					    # Alternate neovim-wrapper
 | 
				
			||||||
    mnw.url = "github:Gerg-L/mnw";
 | 
					    mnw.url = "github:Gerg-L/mnw";
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -26,7 +26,7 @@
 | 
				
			||||||
          cmd = ${
 | 
					          cmd = ${
 | 
				
			||||||
          if isList cfg.lsp.package
 | 
					          if isList cfg.lsp.package
 | 
				
			||||||
          then expToLua cfg.lsp.package
 | 
					          then expToLua cfg.lsp.package
 | 
				
			||||||
          else "{'${cfg.lsp.package}/bin/wgsl-analyzer'}"
 | 
					          else "{'${cfg.lsp.package}/bin/wgsl_analyzer'}"
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
      '';
 | 
					      '';
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -25,7 +25,7 @@ in {
 | 
				
			||||||
      type = listOf package;
 | 
					      type = listOf package;
 | 
				
			||||||
      default = [];
 | 
					      default = [];
 | 
				
			||||||
      example = literalExpression ''
 | 
					      example = literalExpression ''
 | 
				
			||||||
        with pkgs.vimPlugins.nvim-treesitter.builtGrammars; [
 | 
					        pkgs.vimPlugins.nvim-treesitter.builtGrammars; [
 | 
				
			||||||
          regex
 | 
					          regex
 | 
				
			||||||
          kdl
 | 
					          kdl
 | 
				
			||||||
        ];
 | 
					        ];
 | 
				
			||||||
| 
						 | 
					@ -33,7 +33,6 @@ in {
 | 
				
			||||||
      description = ''
 | 
					      description = ''
 | 
				
			||||||
        List of treesitter grammars to install. For grammars to be installed properly,
 | 
					        List of treesitter grammars to install. For grammars to be installed properly,
 | 
				
			||||||
        you must use grammars from `pkgs.vimPlugins.nvim-treesitter.builtGrammars`.
 | 
					        you must use grammars from `pkgs.vimPlugins.nvim-treesitter.builtGrammars`.
 | 
				
			||||||
        You can use `pkgs.vimPlugins.nvim-treesitter.allGrammars` to install all grammars.
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
        For languages already supported by nvf, you may use
 | 
					        For languages already supported by nvf, you may use
 | 
				
			||||||
        {option}`vim.language.<lang>.treesitter` options, which will automatically add
 | 
					        {option}`vim.language.<lang>.treesitter` options, which will automatically add
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,7 +0,0 @@
 | 
				
			||||||
# Make the behaviour of `nix-shell` consistent with the one of `nix develop`
 | 
					 | 
				
			||||||
# by returning the default devShell output from the flake. This is useful when
 | 
					 | 
				
			||||||
# I do not want to work with direnv, or simply need backwards compatibility.
 | 
					 | 
				
			||||||
{system ? builtins.currentSystem}: let
 | 
					 | 
				
			||||||
  nvf = import ./.;
 | 
					 | 
				
			||||||
in
 | 
					 | 
				
			||||||
  nvf.devShells.${system}.default
 | 
					 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue