Skip to content

Commit

Permalink
templates: add experimental evalNixvim template
Browse files Browse the repository at this point in the history
  • Loading branch information
MattSturgeon committed Jan 18, 2025
1 parent 83bda46 commit 50a7d65
Show file tree
Hide file tree
Showing 5 changed files with 93 additions and 0 deletions.
4 changes: 4 additions & 0 deletions flake-modules/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 ];
}
48 changes: 48 additions & 0 deletions templates/new/flake.nix
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
{
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 =
{ nixvim, 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, to enable defining `nixvimConfigurations`
nixvim.flakeModules.default
];

perSystem =
{ config, system, ... }:
{
nixvimConfigurations = {
default = nixvim.lib.evalNixvim {
inherit system;
modules = [
./config
];
};
};

checks = {
# Run `nix flake check .` to verify that your config is not broken
default = config.nixvimConfigurations.default.config.build.test;
};

packages = {
# Lets you run `nix run .` to start nixvim
default = config.nixvimConfigurations.default.config.build.package;
};
};
};
}

0 comments on commit 50a7d65

Please sign in to comment.