Files
komorebi/CONTRIBUTING.md
T
LGUG2Z 76bae0630e build(nix): build and check for macOS and Windows
A flake that builds the recorder for macOS and cross-compiles it for Windows
from a Mac (xwin for the SDK, LLVM for the toolchain), with a dev shell for
each, and `nix flake check` running clippy for both targets, rustfmt, taplo,
cargo-deny and the tests.

The sources of komorebi for Mac and komorebi for Windows are flake inputs,
pinned in `flake.lock`: the recorder indexes them so that a line of komorebi's
log can be traced to the statement that wrote it, and the dev shells and every
derivation export where they are.
2026-10-27 22:22:56 -07:00

3.2 KiB

Contributing to komorebi-recorder

The project is a collection of contributions from both the project leaders and community members. There are many ways to contribute, this can include content in the project repositories, as well as contributing in public and private conversation, assisting users, writing blog posts, and many other ways.

How contributions are made

Contributions to the project primarily happen in the project source repositories, but may also occur in other places, such as discussion forums and public and private discourse.

Contributing content to the Project

In order for the project leaders to manage sustained progress toward the project goals and maintain project velocity, focus and quality, the project may adjust the license terms over time.

Content contributed to the project must therefore be provided under sufficiently liberal terms to allow these operations to proceed unimpeded. As such contributions are accepted with the following understanding:

  • Contributed content is licensed under the terms of the 0-BSD license
  • Contributors accept the terms of the project license at the time of contribution

By making a contribution, you accept both the current project license terms, and that all contributions that you have made are provided under the terms of the 0-BSD license.

Zero-Clause BSD

Permission to use, copy, modify, and/or distribute this software for  
any purpose with or without fee is hereby granted.

THE SOFTWARE IS PROVIDED “AS IS” AND THE AUTHOR DISCLAIMS ALL  
WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES  
OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE  
FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY  
DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN  
AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT  
OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.

Development environment

The project is built with Nix. nix develop (or direnv, whose .envrc is use flake) provides the Rust toolchain with nightly rustfmt, cargo-deny, cargo-nextest, ffmpeg, jq, just and ripgrep, and sets KOMOREBI_MAC_SRC and KOMOREBI_WINDOWS_SRC (with _COMMIT) to the komorebi sources pinned in flake.lock. The tests that read komorebi's source need them, so run cargo inside the shell.

The Windows code is type-checked from a Mac with nix develop .#windows, whose target is x86_64-pc-windows-msvc. Nothing there runs it: a change to a cfg(windows) line is first run by the windows job in CI.

Checks

Before pushing, run

just check

which runs formatting, clippy and the tests for macOS, clippy for Windows, rustdoc with its warnings as errors for both hosts, and cargo deny. just --list shows the other recipes.

Commits

Commit messages follow Conventional Commits, as the pull request template asks: the release notes are generated from them.

A change that alters what the documentation says (the rustdoc, the README, docs/) updates the documentation in the same commit, so that the documentation never describes code that is not there.