fix(README): This is not nix-actions

This commit is contained in:
Tom Hubrecht 2024-12-12 10:34:37 +01:00
parent ec7344e339
commit 6fb00a6f15
Signed by: thubrecht
SSH key fingerprint: SHA256:CYNvFo44Ar9qCNnWNnvJVhs0QXO9AZjOLlPeWcSij3Q

115
README.md
View file

@ -4,21 +4,23 @@ SPDX-FileCopyrightText: 2024 Tom Hubrecht <tom.hubrecht@dgnum.eu>
SPDX-License-Identifier: EUPL-1.2 SPDX-License-Identifier: EUPL-1.2
--> -->
# Integration of [Forgejo](https://forgejo.org/docs/latest/user/actions/)/[Gitea](https://docs.gitea.com/usage/actions/overview)/[GitHub](https://docs.github.com/en/actions/writing-workflows) workflows with [Nix](https://lix.systems/) # Integration of [reuse](https://reuse.software) with [Nix](https://lix.systems/)
## Features ## Features
- Provides checked workflow files thanks to [action-validator](https://github.com/mpalmer/action-validator) - Provides a shell hook to generate the `REUSE.toml` file
- You can use all the power of Nix to declare workflows: `genAttrs`, `readDir`, ... - Provides a hook to be used with [git-hooks.nix](https://github.com/cachix/git-hooks.nix)
## Getting started ## Getting started
### npins ### `REUSE.toml` generation
1. Add `nix-actions` to your sources: #### npins
1. Add `nix-reuse` to your sources:
```bash ```bash
npins add git https://git.dgnum.eu/DGNum/nix-actions npins add git https://git.dgnum.eu/DGNum/nix-reuse
``` ```
2. Integrate workflows to `shell.nix`: 2. Integrate workflows to `shell.nix`:
@ -26,13 +28,64 @@ npins add git https://git.dgnum.eu/DGNum/nix-actions
```nix ```nix
let let
sources = import ./npins; sources = import ./npins;
workflows = (import sources.nix-actions { }).install { reuse = (import sources.nix-reuse { }).install {
defaultLicense = "EUPL-1.2";
defaultCopyright = "Jane Doe <jane.doe@example.com>";
annotations = [
{
path = [
".envrc"
".gitignore"
"REUSE.toml"
];
}
{
path = "npins/*";
license = "EUPL-1.2";
copyright = "The [npins](https://github.com/andir/npins) contributors";
}
];
};
in
with (import sources.nixpkgs { });
mkShell {
packages = [ ... ];
inherit (reuse) shellHook;
}
```
#### Options
- `defaultLicense`: the default license SPDX identifier used accross the project.
- `defaultCopyright`: the default copyright text used accross the project.
- `annotations`: The list of [annotations](https://reuse.software/spec-3.3/#reusetoml) for this project
### reuse git-hook
#### npins
1. Add `nix-reuse` to your sources:
```bash
npins add git https://git.dgnum.eu/DGNum/nix-reuse
```
2. Integrate reuse to git hooks:
```nix
let
sources = import ./npins;
git-checks = (import sources."git-hooks.nix").run {
src = ./.; src = ./.;
workflows.build = { hooks = {
name = "Build something"; reuse = (import sources.nix-reuse { }).hook {
on = [ "push" ]; enable = true;
... };
}; };
}; };
in in
@ -42,44 +95,6 @@ with (import sources.nixpkgs { });
mkShell { mkShell {
packages = [ ... ]; packages = [ ... ];
inherit (workflows) shellHook; inherit (git-checks) shellHook;
} }
``` ```
### Options
- `src`: the root of the project, required for the workflows checks
- `platform`: one of `forgejo`, `gitea`, or `github`, this will impact the location of the installed workflow files. Defaults to `forgejo`.
- `removeUnknown`: whether to remove workflow files not created by `nix-actions`. Defaults to `true`.
### Ensuring all workflows are up to date
Simply add a new workflow for this !
```nix
{
name = "Check workflows";
on = [
"pull_request"
"push"
];
jobs = {
check_workflows = {
runs-on = "nix";
steps = [
{ uses = "actions/checkout@v3"; }
{
name = "Check that the workflows are up to date";
run = "nix-shell --run '[ $(git status --porcelain | wc -l) -eq 0 ]'";
}
];
};
};
}
```
## Examples
The main example is used by the DGNum infrastructure, workflows are defined in https://git.dgnum.eu/DGNum/infrastructure/src/branch/main/workflows .
Be aware that the runners used there are a bit funky and already come with Lix installed (c.f. https://git.hubrecht.ovh/hubrecht/nix-modules/src/branch/main/services/forgejo-nix-runners/default.nix ).