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";
|
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, ... }:
|
outputs = { self, flake-modules-core, ... }:
|
||||||
(flake-modules-core.lib.evalFlakeModule
|
flake-modules-core.lib.mkFlake { inherit self; } {
|
||||||
{ inherit self; }
|
flake = {
|
||||||
{
|
# Put your original flake attributes here.
|
||||||
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).
|
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 ];
|
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.
|
# For extending options in an already declared submodule.
|
||||||
# Workaround for https://github.com/NixOS/nixpkgs/issues/146882
|
# Workaround for https://github.com/NixOS/nixpkgs/issues/146882
|
||||||
mkSubmoduleOptions =
|
mkSubmoduleOptions =
|
||||||
|
|
|
@ -8,31 +8,28 @@
|
||||||
};
|
};
|
||||||
|
|
||||||
outputs = { self, flake-modules-core, ... }:
|
outputs = { self, flake-modules-core, ... }:
|
||||||
(flake-modules-core.lib.evalFlakeModule
|
flake-modules-core.mkFlake { inherit self; } {
|
||||||
{ inherit self; }
|
imports = [
|
||||||
{
|
# To import a flake module
|
||||||
imports = [
|
# 1. Add foo to inputs
|
||||||
# To import a flake module
|
# 2. Add foo as a parameter to the outputs function
|
||||||
# 1. Add foo to inputs
|
# 3. Add here: foo.flakeModule
|
||||||
# 2. Add foo as a parameter to the outputs function
|
|
||||||
# 3. Add here: foo.flakeModule
|
|
||||||
|
|
||||||
];
|
];
|
||||||
systems = [ "x86_64-linux" "aarch64-darwin" ];
|
systems = [ "x86_64-linux" "aarch64-darwin" ];
|
||||||
perSystem = system: { config, self', inputs', pkgs, ... }: {
|
perSystem = system: { config, self', inputs', pkgs, ... }: {
|
||||||
# Per-system attributes can be defined here. The self' and inputs'
|
# Per-system attributes can be defined here. The self' and inputs'
|
||||||
# module parameters provide easy access to attributes of the same
|
# module parameters provide easy access to attributes of the same
|
||||||
# system.
|
# system.
|
||||||
|
|
||||||
# Equivalent to inputs'.nixpkgs.legacyPackages.hello;
|
# Equivalent to inputs'.nixpkgs.legacyPackages.hello;
|
||||||
packages.hello = pkgs.hello;
|
packages.hello = pkgs.hello;
|
||||||
};
|
};
|
||||||
flake = {
|
flake = {
|
||||||
# The usual flake attributes can be defined here, including system-
|
# The usual flake attributes can be defined here, including system-
|
||||||
# agnostic ones like nixosModule and system-enumerating ones, although
|
# agnostic ones like nixosModule and system-enumerating ones, although
|
||||||
# those are more easily expressed in perSystem.
|
# those are more easily expressed in perSystem.
|
||||||
|
|
||||||
};
|
};
|
||||||
}
|
};
|
||||||
).config.flake;
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue