nix-reuse/README.md
Tom Hubrecht 2f45f2e7e6
feat(nix-reuse): Add generatedPaths option
This allows to declared machine-generated paths, and apply the CC0-1.0
license to them
2024-12-12 10:54:12 +01:00

2.2 KiB

Integration of reuse with Nix

Features

  • Provides a shell hook to generate the REUSE.toml file
  • Provides a hook to be used with git-hooks.nix

Getting started

REUSE.toml generation

npins

  1. Add nix-reuse to your sources:
npins add git https://git.dgnum.eu/DGNum/nix-reuse
  1. Integrate workflows to shell.nix:
let
    sources = import ./npins;
    reuse = (import sources.nix-reuse { }).install {
        defaultLicense = "EUPL-1.2";
        defaultCopyright = "Jane Doe <jane.doe@example.com>";

        generatedPaths = [
            ".envrc"
            ".gitignore"
            "REUSE.toml"
        ];

        annotations = [
            { path = "default.nix"; }
            {
                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.
  • downloadLicenses: whether to download automatically the missing licenses detectd in the project.
  • generatedPaths: a list of computer-generated files, they will be declared with a copyright of NONE and the CC0-1.0 license.
  • annotations: the list of annotations for this project.

reuse git-hook

npins

  1. Add nix-reuse to your sources:
npins add git https://git.dgnum.eu/DGNum/nix-reuse
  1. Integrate reuse to git hooks:
let
    sources = import ./npins;
    git-checks = (import sources."git-hooks.nix").run {
        src = ./.;

        hooks = {
            reuse = (import sources.nix-reuse { }).hook {
                enable = true;
            };
        };
    };
in

with (import sources.nixpkgs { });

mkShell {
    packages = [ ... ];

    inherit (git-checks) shellHook;
}