Getting Started
New flake
If your project does not have a flake yet:
nix flake init -t github:hercules-ci/flake-parts
Existing flake
Otherwise, add the input,
flake-parts.url = "github:hercules-ci/flake-parts";
then slide mkFlake
between your outputs function head and body,
outputs = inputs@{ flake-parts, ... }:
# https://flake.parts/module-arguments.html
flake-parts.lib.mkFlake { inherit inputs; } (top@{ config, withSystem, moduleWithSystem, ... }: {
imports = [
# Optional: use external flake logic, e.g.
# inputs.foo.flakeModules.default
];
flake = {
# Put your original flake attributes here.
};
systems = [
# systems for which you want to build the `perSystem` attributes
"x86_64-linux"
# ...
];
perSystem = { config, pkgs, ... }: {
# Recommended: move all package definitions here.
# e.g. (assuming you have a nixpkgs input)
# packages.foo = pkgs.callPackage ./foo/package.nix { };
# packages.bar = pkgs.callPackage ./bar/package.nix {
# foo = config.packages.foo;
# };
};
});
Now you can start using the flake-parts options.