dream2nix/docs/contributors-guide.md

1.4 KiB

dream2nix contributers guide

Contribute Translator

In general there are 3 different types of translators

  1. pure translator

    • translation logic is implemented in nix lang only
    • does not invoke build or read from any build output
  2. IFD translator

    • part of the logic is integrated as a nix build
    • nix code is used to invoke a nix build and parse its results
    • same interface as pure translator
  3. impure

    • translator can be any executable program running outside of a nix build
    • not constrained in any way (can do arbitrary network access etc.)

Add a new translator

Clone repo and execute:

nix run .#contribute

... then select translator and answer all questions. This will generate a template.

The nix file must declare the following attributes:

In case of a pure or IFD translator:

See the template generated by the contribute app

In case of an impure translator:

See the template generated by the contribute app

Ways of debugging your translator:

  • run the dream2nix flake app and use the new translator
  • temporarily expose internal functions of your translator, then use nix repl nix repl ./. and invoke a function via translators.translators.{subsystem}.{type}.{translator-name}.some_function

Contribute Builder

Add a new builder

Clone repo and execute:

nix run .#contribute

... then select builder and answer all questions. This will generate a template.