Skip to content

Commit

Permalink
templates: add evalNixvim-based template
Browse files Browse the repository at this point in the history
  • Loading branch information
MattSturgeon committed Jan 20, 2025
1 parent 17cca43 commit 5b1e9ed
Show file tree
Hide file tree
Showing 5 changed files with 104 additions and 0 deletions.
4 changes: 4 additions & 0 deletions flake/templates.nix
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,10 @@
path = ../templates/simple;
description = "A simple nix flake template for getting started with nixvim";
};
new = {
path = ../templates/new;
description = "An experimental flake template for configuring nixvim directly with evalNixvim";
};
};

# The following adds the template flake's checks to the main (current) flake's checks.
Expand Down
31 changes: 31 additions & 0 deletions templates/new/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
# New Nixvim template

This template gives you a good starting point for configuring nixvim as a standalone module configuration.

## Configuring

To start configuring, just add or modify the module files in `./config`.
If you add new modules, remember to import them in [`./config/default.nix`](./config/default.nix).

## Using your vim configuration

To use your configuration simply run the following command

```
nix run
```

## Configurations and packages

Your nixvim configuration is created using `evalNixvim`.
This is outputted as the `nixvimConfigurations.<system>.default` flake output.

You can access your configuration's package outputs `<configuration>.config.build.package`.
This is exported as the flake output `packages.<system>.default`.
This package can be run using `nix run`.

A test is also available as `<configuration>.config.build.test`.
This is exported as the flake output `checks.<system>.default`.
This test can be run using `nix flake check`.

<!-- TODO: figure out how to _wrap_ an existing configuration as a nixos/hm module -->
6 changes: 6 additions & 0 deletions templates/new/config/bufferline.nix
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
{
plugins = {
bufferline.enable = true;
web-devicons.enable = true;
};
}
4 changes: 4 additions & 0 deletions templates/new/config/default.nix
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
{
# Import all your configuration modules here
imports = [ ./bufferline.nix ];
}
59 changes: 59 additions & 0 deletions templates/new/flake.nix
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
{
description = "A nixvim configuration";

inputs = {
nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable";
nixvim.url = "github:nix-community/nixvim";
flake-parts.url = "github:hercules-ci/flake-parts";
};

outputs =
{ self, flake-parts, ... }@inputs:
flake-parts.lib.mkFlake { inherit inputs; } {
systems = [
"x86_64-linux"
"aarch64-linux"
"x86_64-darwin"
"aarch64-darwin"
];

imports = [
# Import nixvim's flake-parts module;
# Adds `flake.nixvimModules` and `perSystem.nixvimConfigurations`
inputs.nixvim.flakeModules.default
];

nixvim = {
# Automatically install `nixvim-<name>` packages for each nixvimConfiguration
# Lets you run `nix run .#nixvim-<name>`
packages.enable = true;
# Automatically install checks for each nixvimConfiguration
# Run `nix flake check .` to verify that your config is not broken
checks.enable = true;
};

# You can define your reusable Nixvim modules here
flake.nixvimModules = {
default = ./config;
};

perSystem =
{ config, system, ... }:
{
# You can define actual Nixvim configurations here
nixvimConfigurations = {
default = inputs.nixvim.lib.evalNixvim {
inherit system;
modules = [
self.nixvimModules.default
];
};
};

packages = {
# Lets you start nixvim using `nix run`
default = config.packages.nixvim-default;
};
};
};
}

0 comments on commit 5b1e9ed

Please sign in to comment.