mirror of
https://github.com/nix-community/nixvim.git
synced 2025-06-21 08:35:43 +02:00
modules/misc: include assertions
and meta
modules in the repo
Based on the modules we previously imported from NixOS. This will allow us to drop the `defaultPkgs` specialArg and avoids needing the proposed `pkgsPath` specialArg.
This commit is contained in:
parent
901346e38b
commit
6da94195c2
3 changed files with 92 additions and 8 deletions
34
modules/misc/assertions.nix
Normal file
34
modules/misc/assertions.nix
Normal file
|
@ -0,0 +1,34 @@
|
||||||
|
{ lib, ... }:
|
||||||
|
# Based on https://github.com/NixOS/nixpkgs/blob/814a4e48/nixos/modules/misc/assertions.nix
|
||||||
|
{
|
||||||
|
options = {
|
||||||
|
assertions = lib.mkOption {
|
||||||
|
type = with lib.types; listOf unspecified;
|
||||||
|
internal = true;
|
||||||
|
default = [ ];
|
||||||
|
example = [
|
||||||
|
{
|
||||||
|
assertion = false;
|
||||||
|
message = "you can't enable this for that reason";
|
||||||
|
}
|
||||||
|
];
|
||||||
|
description = ''
|
||||||
|
This option allows modules to express conditions that must
|
||||||
|
hold for the evaluation of the system configuration to
|
||||||
|
succeed, along with associated error messages for the user.
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
|
warnings = lib.mkOption {
|
||||||
|
internal = true;
|
||||||
|
default = [ ];
|
||||||
|
type = with lib.types; listOf str;
|
||||||
|
example = [ "The `foo' service is deprecated and will go away soon!" ];
|
||||||
|
description = ''
|
||||||
|
This option allows modules to show warnings to users during
|
||||||
|
the evaluation of the system configuration.
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
};
|
||||||
|
# implementation of assertions is in lib/modules.nix
|
||||||
|
}
|
|
@ -1,15 +1,9 @@
|
||||||
{ defaultPkgs, ... }:
|
|
||||||
let
|
|
||||||
# We can't use config._module.args to define imports,
|
|
||||||
# so we're forced to use specialArgs.defaultPkgs's path
|
|
||||||
nixosModules = defaultPkgs.path + "/nixos/modules/";
|
|
||||||
in
|
|
||||||
{
|
{
|
||||||
imports = [
|
imports = [
|
||||||
|
./assertions.nix
|
||||||
./context.nix
|
./context.nix
|
||||||
|
./meta.nix
|
||||||
./nixpkgs.nix
|
./nixpkgs.nix
|
||||||
./nixvim-info.nix
|
./nixvim-info.nix
|
||||||
(nixosModules + "/misc/assertions.nix")
|
|
||||||
(nixosModules + "/misc/meta.nix")
|
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
56
modules/misc/meta.nix
Normal file
56
modules/misc/meta.nix
Normal file
|
@ -0,0 +1,56 @@
|
||||||
|
{ lib, ... }:
|
||||||
|
# Based on https://github.com/NixOS/nixpkgs/blob/814a4e48/nixos/modules/misc/meta.nix
|
||||||
|
let
|
||||||
|
maintainer = lib.mkOptionType {
|
||||||
|
name = "maintainer";
|
||||||
|
check = m: lib.elem m (lib.attrValues lib.maintainers);
|
||||||
|
merge =
|
||||||
|
loc: defs:
|
||||||
|
let
|
||||||
|
def = lib.last defs;
|
||||||
|
in
|
||||||
|
{
|
||||||
|
${def.file} = def.value;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
listOfMaintainers = lib.types.listOf maintainer // {
|
||||||
|
# Returns attrset of
|
||||||
|
# { "module-file" = [
|
||||||
|
# "maintainer1 <first@nixos.org>"
|
||||||
|
# "maintainer2 <second@nixos.org>" ];
|
||||||
|
# }
|
||||||
|
merge =
|
||||||
|
loc: defs:
|
||||||
|
lib.pipe defs [
|
||||||
|
(lib.imap1 (
|
||||||
|
n: def:
|
||||||
|
lib.imap1 (
|
||||||
|
m: value:
|
||||||
|
maintainer.merge (loc ++ [ "[${toString n}-${toString m}]" ]) [
|
||||||
|
{
|
||||||
|
inherit (def) file;
|
||||||
|
inherit value;
|
||||||
|
}
|
||||||
|
]
|
||||||
|
) def.value
|
||||||
|
))
|
||||||
|
lib.flatten
|
||||||
|
lib.zipAttrs
|
||||||
|
];
|
||||||
|
};
|
||||||
|
in
|
||||||
|
{
|
||||||
|
options.meta = {
|
||||||
|
maintainers = lib.mkOption {
|
||||||
|
type = listOfMaintainers;
|
||||||
|
internal = true;
|
||||||
|
default = [ ];
|
||||||
|
example = lib.literalExpression "[ lib.maintainers.all ]";
|
||||||
|
description = ''
|
||||||
|
List of maintainers of each module. This option should be defined at
|
||||||
|
most once per module.
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
Loading…
Add table
Add a link
Reference in a new issue