diff --git a/flake/templates.nix b/flake/templates.nix index 7de4151fb1..0bf17f41fa 100644 --- a/flake/templates.nix +++ b/flake/templates.nix @@ -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. diff --git a/templates/new/README.md b/templates/new/README.md new file mode 100644 index 0000000000..7f1d4650c1 --- /dev/null +++ b/templates/new/README.md @@ -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..default` flake output. + +You can access your configuration's package outputs `.config.build.package`. +This is exported as the flake output `packages..default`. +This package can be run using `nix run`. + +A test is also available as `.config.build.test`. +This is exported as the flake output `checks..default`. +This test can be run using `nix flake check`. + + diff --git a/templates/new/config/bufferline.nix b/templates/new/config/bufferline.nix new file mode 100644 index 0000000000..2dfee9eefb --- /dev/null +++ b/templates/new/config/bufferline.nix @@ -0,0 +1,6 @@ +{ + plugins = { + bufferline.enable = true; + web-devicons.enable = true; + }; +} diff --git a/templates/new/config/default.nix b/templates/new/config/default.nix new file mode 100644 index 0000000000..fb318aba7e --- /dev/null +++ b/templates/new/config/default.nix @@ -0,0 +1,4 @@ +{ + # Import all your configuration modules here + imports = [ ./bufferline.nix ]; +} diff --git a/templates/new/flake.nix b/templates/new/flake.nix new file mode 100644 index 0000000000..35ed31634d --- /dev/null +++ b/templates/new/flake.nix @@ -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-` packages for each nixvimConfiguration + # Lets you run `nix run .#nixvim-` + 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; + }; + }; + }; +}