forked from Fediversity/Fediversity
The goal is to contain the “`mkFlake` hack” to a file that we can heavily document but otherwise ignore. This also will allow me to reuse it in the “flake under test” of the deployment tests. Reviewed-on: Fediversity/Fediversity#447 Reviewed-by: Valentin Gagarin <valentin.gagarin@tweag.io> Reviewed-by: kiara Grouwstra <kiara@procolix.eu> Co-authored-by: Nicolas “Niols” Jeannerod <nicolas.jeannerod@moduscreate.com> Co-committed-by: Nicolas “Niols” Jeannerod <nicolas.jeannerod@moduscreate.com>
47 lines
1.1 KiB
Nix
47 lines
1.1 KiB
Nix
## This file contains a tweak of flake-parts's `mkFlake` function to splice in
|
|
## sources taken from npins.
|
|
|
|
inputs@{ self, ... }:
|
|
|
|
let
|
|
sources = import ./npins;
|
|
inherit (import sources.flake-inputs) import-flake;
|
|
|
|
# XXX(@fricklerhandwerk): this atrocity is required to splice in a foreign Nixpkgs via flake-parts
|
|
# XXX - this is just importing a flake
|
|
nixpkgs = import-flake { src = sources.nixpkgs; };
|
|
|
|
# XXX - this overrides the inputs attached to `self`
|
|
inputs' = self.inputs // {
|
|
nixpkgs = nixpkgs;
|
|
};
|
|
self' = self // {
|
|
inputs = inputs';
|
|
};
|
|
|
|
flake-parts-lib = import "${sources.flake-parts}/lib.nix" { inherit (nixpkgs) lib; };
|
|
in
|
|
|
|
flakeModule:
|
|
|
|
flake-parts-lib.mkFlake
|
|
{
|
|
# XXX - finally we override the overall set of `inputs` -- we need both:
|
|
# `flake-parts obtains `nixpkgs` from `self.inputs` and not from `inputs`.
|
|
inputs = inputs // {
|
|
inherit nixpkgs;
|
|
};
|
|
self = self';
|
|
specialArgs = {
|
|
inherit sources;
|
|
};
|
|
}
|
|
{
|
|
systems = [
|
|
"x86_64-linux"
|
|
"aarch64-linux"
|
|
"x86_64-darwin"
|
|
"aarch64-darwin"
|
|
];
|
|
imports = [ flakeModule ];
|
|
}
|