1
0
Fork 0
mirror of https://github.com/hercules-ci/flake-parts.git synced 2024-12-14 11:47:31 +00:00
flake-parts/README.md

57 lines
1.7 KiB
Markdown
Raw Normal View History

2021-10-27 09:05:52 +00:00
# Flake Module Core
_Foundational flake attributes represented using the module system._
`flake-modules-core` provides common options for an ecosystem of modules to extend.
2021-10-27 13:03:34 +00:00
This allows anyone to bundle up tooling into reusable modules.
For users, this makes Flakes easier to wire up.
_Non-goals_:
- Replace general Nix expressions, which are needed for advanced and/or ad-hoc use cases.
- Accumulate everything into a single repository. As the name might suggest, it focuses only on options that have to do with well-known Nix Flakes attributes.
# Example Flake
```nix
{
description = "A very basic flake";
inputs = {
nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
flake-modules-core.url = "github:hercules-ci/flake-modules-core";
flake-modules-core.inputs.nixpkgs.follows = "nixpkgs";
devshell.url = "github:hercules-ci/devshell/flake-modules"; # credit to numtide
};
outputs = { self, nixpkgs, flake-modules-core, devshell, ... }:
(flake-modules-core.lib.evalFlakeModule
{ inherit self; }
{
systems = [ "x86_64-linux" ];
imports = [
devshell.flakeModule
];
flake = {
nixosConfigurations.foo = lib.nixosSystem { /* ... */ };
};
perSystem = system: { config, pkgs, self', inputs', ... }: {
_module.args.pkgs = inputs'.nixpkgs.legacyPackages;
devshell.settings.commands = [
{
help = "format nix code";
package = pkgs.nixpkgs-fmt;
}
];
packages.hello = pkgs.hello;
packages.hello2 = self'.packages.hello;
checks.hello = self'.packages.hello;
};
}).config.flake;
}
```