flake: add auto flake-parts module

When enabled, automatically sets up packages and/or checks for all
`nixvimConfigurations`
This commit is contained in:
Matt Sturgeon 2025-01-19 19:04:33 +00:00
parent 8fb2fe22c2
commit e793c5cdc6
No known key found for this signature in database
GPG key ID: 4F91844CED1A8299
2 changed files with 63 additions and 0 deletions

View file

@ -0,0 +1,62 @@
{ lib, config, ... }:
let
cfg = config.nixvim;
in
{
options.nixvim = {
packages = {
enable = lib.mkEnableOption "automatically installing packages for each nixvimConfigurations";
nameFunction = lib.mkOption {
type = lib.types.functionTo lib.types.str;
description = ''
A function to convert a nixvimConfiguration's name into a package name.
**Type**
```
String -> String
```
'';
default = name: "nixvim-" + name;
defaultText = lib.literalExpression ''name: "nixvim-" + name'';
example = lib.literalExpression ''name: name + "-nvim"'';
};
};
checks = {
enable = lib.mkEnableOption "automatically installing checks for each nixvimConfigurations";
nameFunction = lib.mkOption {
type = lib.types.functionTo lib.types.str;
description = ''
A function to convert a nixvimConfiguration's name into a check name.
**Type**
```
String -> String
```
'';
default = name: "nixvim-" + name;
defaultText = lib.literalExpression ''name: "nixvim-" + name'';
example = lib.literalExpression ''name: "nixvim-" + name + "-test"'';
};
};
};
config = {
perSystem =
{ config, ... }:
{
packages = lib.mkIf cfg.packages.enable (
lib.mapAttrs' (name: configuration: {
name = cfg.packages.nameFunction name;
value = configuration.config.build.package;
}) config.nixvimConfigurations
);
checks = lib.mkIf cfg.checks.enable (
lib.mapAttrs' (name: configuration: {
name = cfg.checks.nameFunction name;
value = configuration.config.build.test;
}) config.nixvimConfigurations
);
};
};
}

View file

@ -4,6 +4,7 @@ let
defaultModules = {
nixvimModules = ./nixvimModules.nix;
nixvimConfigurations = ./nixvimConfigurations.nix;
auto = ./auto.nix;
};
# Modules for the flakeModules output, but not the default module