Skip to main content
Tascarrel is alpha software and may break. We’re looking for your feedback — share it on GitHub.
Documentation

Contribute to Tascarrel

The source repository uses Nix for its toolchain and packaging environment:

nix develop

Run Focused Checks

For a Rust change, format and check the affected package:

cargo fmt --all -- --check
cargo test -p tascarrel-host
cargo clippy -p tascarrel-host --all-targets -- -D warnings

Use full checks only for cross-cutting changes:

cargo test --workspace --all-targets
cargo clippy --workspace --all-targets -- -D warnings
nix flake check

The frontend/ package scripts provide its type checks, linting, and production build.

Develop the Frontend in a Pod

Start Vite in the Tascarrel pod and publish its port:

pnpm run dev
podctl http publish --title "Tascarrel frontend" 5174

In the packaged frontend, trust the published route as the Tascarrel frontend, then open it from the Network view. Tascarrel’s host daemon (hostd) installs a route-scoped HttpOnly cookie and exposes the same-origin API bridge below /.tascarrel/api/v1. The development frontend discovers that bridge without an API-root environment override.

Build Guest Images

nix build .#packages.x86_64-linux.vm-image
nix build .#packages.aarch64-linux.vm-image

Guest boot, device, and packaging changes require architecture-relevant checks; host-only unit tests do not exercise the VM boundary.

Build a Distribution

nix build .#tascarrel

The complete distribution embeds the immutable NixOS store image, Linux kernel, initrd, guest services, pod tools, the bundled Tasci agent, and compiled UI in the native server executable. nix build .#tascarrel-cli builds the unembedded development server and administrative client.

Build the Linux desktop launcher and its bundled server for Nix with:

nix build .#tascarrel-desktop

Build a self-contained AppImage for Debian, Ubuntu, and other Linux distributions without Nix:

nix build .#tascarrel-desktop-appimage

The AppImage embeds the Nix store closure needed by the desktop launcher and server. The target machine does not need a Nix installation or matching /nix/store paths. It does need FUSE 3, which Debian and Ubuntu provide in the fuse3 package, and enabled user namespaces.

At startup, Tascarrel verifies and extracts the payload below $TASCARREL_HOME/state/payloads/<sha256>/.

Override Guest Binaries

Replace packaged Linux guest binaries for one VM boot:

nix develop --command cargo build \
  -p tascarrel-guest \
  -p tascarrel-podd \
  -p tascarrel-podctl \
  -p tasci-exec
nix run .#host -- --local-binaries "$PWD/target/debug"

The directory is mounted read-only using virtiofs on Linux, with 9p as a Linux fallback and as the macOS transport. Replacement binaries must target Linux and the guest architecture. The directory must contain executable tascarrel-guest, tascarrel-podd, podctl, and tasci-exec files.