mirror of
https://github.com/hercules-ci/flake-parts.git
synced 2024-12-14 11:47:31 +00:00
introduce lib.mkFlake
This makes the most common use-case a tiny bit less verbose.
This commit is contained in:
parent
0f0b1633a6
commit
ad19f920cf
3 changed files with 29 additions and 32 deletions
13
README.md
13
README.md
|
@ -34,18 +34,15 @@ Otherwise, add the input,
|
|||
flake-modules-core.inputs.nixpkgs.follows = "nixpkgs";
|
||||
```
|
||||
|
||||
then slide `evalFlakeModule` between your outputs function head and body,
|
||||
then slide `mkFlake` between your outputs function head and body,
|
||||
|
||||
```
|
||||
outputs = { self, flake-modules-core, ... }:
|
||||
(flake-modules-core.lib.evalFlakeModule
|
||||
{ inherit self; }
|
||||
{
|
||||
flake = {
|
||||
# Put your original flake attributes here.
|
||||
}
|
||||
flake-modules-core.lib.mkFlake { inherit self; } {
|
||||
flake = {
|
||||
# Put your original flake attributes here.
|
||||
}
|
||||
).config.flake;
|
||||
};
|
||||
```
|
||||
|
||||
Now you can add the remaining module attributes like in the [the template](./template/default/flake.nix).
|
||||
|
|
3
lib.nix
3
lib.nix
|
@ -38,6 +38,9 @@ let
|
|||
modules = [ ./all-modules.nix module ];
|
||||
};
|
||||
|
||||
mkFlake = args: module:
|
||||
(flake-modules-core-lib.evalFlakeModule args module).config.flake;
|
||||
|
||||
# For extending options in an already declared submodule.
|
||||
# Workaround for https://github.com/NixOS/nixpkgs/issues/146882
|
||||
mkSubmoduleOptions =
|
||||
|
|
|
@ -8,31 +8,28 @@
|
|||
};
|
||||
|
||||
outputs = { self, flake-modules-core, ... }:
|
||||
(flake-modules-core.lib.evalFlakeModule
|
||||
{ inherit self; }
|
||||
{
|
||||
imports = [
|
||||
# To import a flake module
|
||||
# 1. Add foo to inputs
|
||||
# 2. Add foo as a parameter to the outputs function
|
||||
# 3. Add here: foo.flakeModule
|
||||
flake-modules-core.mkFlake { inherit self; } {
|
||||
imports = [
|
||||
# To import a flake module
|
||||
# 1. Add foo to inputs
|
||||
# 2. Add foo as a parameter to the outputs function
|
||||
# 3. Add here: foo.flakeModule
|
||||
|
||||
];
|
||||
systems = [ "x86_64-linux" "aarch64-darwin" ];
|
||||
perSystem = system: { config, self', inputs', pkgs, ... }: {
|
||||
# Per-system attributes can be defined here. The self' and inputs'
|
||||
# module parameters provide easy access to attributes of the same
|
||||
# system.
|
||||
];
|
||||
systems = [ "x86_64-linux" "aarch64-darwin" ];
|
||||
perSystem = system: { config, self', inputs', pkgs, ... }: {
|
||||
# Per-system attributes can be defined here. The self' and inputs'
|
||||
# module parameters provide easy access to attributes of the same
|
||||
# system.
|
||||
|
||||
# Equivalent to inputs'.nixpkgs.legacyPackages.hello;
|
||||
packages.hello = pkgs.hello;
|
||||
};
|
||||
flake = {
|
||||
# The usual flake attributes can be defined here, including system-
|
||||
# agnostic ones like nixosModule and system-enumerating ones, although
|
||||
# those are more easily expressed in perSystem.
|
||||
# Equivalent to inputs'.nixpkgs.legacyPackages.hello;
|
||||
packages.hello = pkgs.hello;
|
||||
};
|
||||
flake = {
|
||||
# The usual flake attributes can be defined here, including system-
|
||||
# agnostic ones like nixosModule and system-enumerating ones, although
|
||||
# those are more easily expressed in perSystem.
|
||||
|
||||
};
|
||||
}
|
||||
).config.flake;
|
||||
};
|
||||
};
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue