Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
110 commits
Select commit Hold shift + click to select a range
5241122
native_module: put ~/.cargo/bin on the auto-build PATH when cargo is …
jeff-hykin Aug 30, 2026
112c9d5
Revert "native_module: put ~/.cargo/bin on the auto-build PATH when c…
jeff-hykin Aug 30, 2026
0d216be
native modules: build the rust workspace crates through the repo flake
jeff-hykin Aug 30, 2026
4cd942a
Merge remote-tracking branch 'origin/main' into _flake_work
jeff-hykin Aug 31, 2026
6ab3467
native modules: keep build_command a literal for the publish gate
jeff-hykin Aug 31, 2026
7a4f671
native modules: drop the build_command comments
jeff-hykin Aug 31, 2026
e4eb3f8
Point rust nix shells at a tiny toolchain flake
jeff-hykin Aug 31, 2026
12c5ae2
Build the rust native modules with a nix derivation
jeff-hykin Aug 31, 2026
ac844e9
Merge remote-tracking branch 'origin/main' into jeff/fix/native_build…
jeff-hykin Aug 31, 2026
6d274a2
Update the workspace cargoHash for main's Cargo.lock bump
jeff-hykin Sep 1, 2026
8a9dc1a
Let each native module declare its own build inputs
jeff-hykin Sep 1, 2026
d08156f
Find the native module deps.nix files instead of listing them
jeff-hykin Sep 1, 2026
d06824e
Vendor the rust workspace from Cargo.lock instead of an aggregate hash
jeff-hykin Sep 1, 2026
7d19b37
Revert "Vendor the rust workspace from Cargo.lock instead of an aggre…
jeff-hykin Sep 1, 2026
5def8fd
Record why cargoLock.lockFile cannot replace the aggregate hash
jeff-hykin Sep 1, 2026
7ea8f45
Merge remote-tracking branch 'origin/main' into jeff/fix/native_build…
jeff-hykin Sep 1, 2026
701453c
Re-paste cargoHash for the Cargo.lock main brought in
jeff-hykin Sep 1, 2026
8b4e3fa
Build native modules with crate2nix instead of one cargoHash
jeff-hykin Sep 1, 2026
c70d595
Build the example native modules too
jeff-hykin Sep 1, 2026
3f6653f
Stop committing crate-hashes.json
jeff-hykin Sep 1, 2026
776cb45
Pin cargo, not just crate2nix, when regenerating Cargo.nix
jeff-hykin Sep 1, 2026
0e1d204
Describe crate-config.nix as the placeholder it actually is
jeff-hykin Sep 1, 2026
b30e30b
Merge remote-tracking branch 'origin/main' into jeff/fix/native_build…
jeff-hykin Sep 14, 2026
7de0923
build(native): finish the cargo-to-nix switch, and unblock turbojpeg-sys
jeff-hykin Sep 14, 2026
56396de
Merge remote-tracking branch 'origin/main' into jeff/fix/native_build…
jeff-hykin Sep 16, 2026
410c0a2
build(nix): add a shared flake for the rust native module SDK
jeff-hykin Sep 16, 2026
f9dfb43
build(nix): expose the C++ native SDK as a flake
jeff-hykin Sep 16, 2026
c73485d
build(cargo): split the repo workspace into one workspace per module
jeff-hykin Sep 16, 2026
3049bbd
refactor(livox): copy the wire protocol into its two consumers
jeff-hykin Sep 16, 2026
0ffd1c1
refactor(nix): stop the C++ modules reaching outside their own direct…
jeff-hykin Sep 16, 2026
767cf49
build(nix): give every rust native module its own crate2nix flake
jeff-hykin Sep 16, 2026
5cfcc53
build(nix): one build-command convention, and one module-discovery me…
jeff-hykin Sep 16, 2026
ec58747
fix(nix): turbojpeg-sys needs dontUseCmakeConfigure, and no repo-root…
jeff-hykin Sep 16, 2026
ebbd9cb
test(nix): keep resolvable path literals out of flake comments
jeff-hykin Sep 16, 2026
ac1aaee
fix(virtual_mid360): do not re-import the wire module it now declares
jeff-hykin Sep 16, 2026
1eea278
Merge origin/jeff/fix/native_build_cargo_path, keeping the per-module…
jeff-hykin Sep 16, 2026
717352b
fix(native): drop the duplicate config fields the merge left behind
jeff-hykin Sep 16, 2026
eb86a4c
build(nix): lock every module onto the pushed shared flakes
jeff-hykin Sep 16, 2026
c398d88
[autofix.ci] apply automated fixes
autofix-ci[bot] Sep 16, 2026
c638153
fix(pre-commit): skip a module that declares no devShell for this pla…
jeff-hykin Sep 16, 2026
21702e4
fix(livox copy): declare the tempfile dev-dependency the copied tests…
jeff-hykin Sep 16, 2026
76796e2
fix(dim_slam): put the rust toolchain in its devShell
jeff-hykin Sep 16, 2026
9451b01
build(cargo): commit the shared crates' own lockfiles
jeff-hykin Sep 16, 2026
9f0a36c
Merge remote-tracking branch 'origin/jeff/fix/native_build_cargo_path…
jeff-hykin Sep 16, 2026
ad02ee7
ci(lint): give the clippy hook a timeout and a cache it can live with
jeff-hykin Sep 16, 2026
7fcf481
test(nix): make the bootstrap branch-pin self-disarming
jeff-hykin Sep 16, 2026
fba25e5
ci(nix): check every flake.lock is current, and drop bake's dead lock…
jeff-hykin Sep 16, 2026
c3337fb
fix(habitat): declare no auto-build instead of hiding a nix develop i…
jeff-hykin Sep 16, 2026
144ebfb
build: refuse to commit while a native-module dir holds untracked files
jeff-hykin Sep 16, 2026
b8dcf7b
fix(nix): stop a stale result symlink poisoning every C++ module's hash
jeff-hykin Sep 16, 2026
58964b2
test(nix): require every module's shared input to name main
jeff-hykin Sep 16, 2026
a428b12
Merge remote-tracking branch 'origin/main' into jeff/fix/native_build…
jeff-hykin Sep 16, 2026
2c12e12
build(nix): add the shared flakes for the native module SDKs
jeff-hykin Sep 16, 2026
775d7c0
fix(nix): give realsense's own build.rs librealsense, not just realse…
jeff-hykin Sep 16, 2026
cd2cf78
ci: skip the two workspaces a bare cargo runner cannot build
jeff-hykin Sep 16, 2026
4740964
build(nix): relock every module onto the pushed shared flakes
jeff-hykin Sep 16, 2026
762909b
test(nix): catch a module lock that pins a stale shared flake
jeff-hykin Sep 16, 2026
1da3d99
ci: keep the native SDK out of the C++ module list
jeff-hykin Sep 16, 2026
9bbebec
Merge branch 'jeff/fix/native_module_shared_flakes' into jeff/fix/nat…
jeff-hykin Sep 16, 2026
28caae4
ci: run the native e2e tests in the job that builds the binaries
jeff-hykin Sep 16, 2026
03193c4
test(nix): read the branch from the runner when the checkout is detached
jeff-hykin Sep 16, 2026
e3ee5a9
ci: give the native job portaudio, for the test group it now installs
jeff-hykin Sep 16, 2026
d01db42
fix(nix): skip a module whose flake declares no packages for this system
jeff-hykin Sep 16, 2026
d3ddd43
fix(nix): ask nix for the system lazily, so --inputs-hash still needs…
jeff-hykin Sep 16, 2026
b4176de
build(nix): let a module build its devShell from the shared toolchain
jeff-hykin Sep 16, 2026
503363b
Merge branch 'jeff/fix/native_module_shared_flakes' into jeff/fix/nat…
jeff-hykin Sep 16, 2026
821e8e9
fix(nix): give realsense a devShell that has librealsense in it
jeff-hykin Sep 16, 2026
0bed970
build(nix): relock every module onto the shared flake with devShellWith
jeff-hykin Sep 16, 2026
bbf37a1
build(nix): one nixpkgs for every module flake
jeff-hykin Sep 16, 2026
4155ef4
ci: give the cargo cache a key that exists, and say where lint's minu…
jeff-hykin Sep 16, 2026
170d0ba
build(nix): clippy as a derivation, sharing the crates the module bui…
jeff-hykin Sep 16, 2026
a67d423
build(nix): relock every module onto the rev that has clippyNativeModule
jeff-hykin Sep 16, 2026
c4ccb08
build(ci): format in one devShell, not eleven
jeff-hykin Sep 16, 2026
11c71a8
ci(autofix): relock the modules after the push, not before it
jeff-hykin Sep 16, 2026
6d96223
docs(cargo): say what breaks without the shared target dir
jeff-hykin Sep 16, 2026
02f7fbc
build(ci): lint through nix, so cargo never runs in a module directory
jeff-hykin Sep 16, 2026
359f573
docs(cargo): one line for the shared target dir
jeff-hykin Sep 16, 2026
8e626c0
ci(autofix): keep lint at one minute, relock in its own job
jeff-hykin Sep 16, 2026
1d4ff22
ci(autofix): five minutes for the relock, not fifteen
jeff-hykin Sep 16, 2026
f7e47c6
ci(autofix): fold the shared-flake check back into one job
jeff-hykin Sep 16, 2026
59b56b3
docs: drop the multi-line explanatory comments this branch added
jeff-hykin Sep 16, 2026
b29f59e
[autofix.ci] apply automated fixes
autofix-ci[bot] Sep 16, 2026
787b3de
ci(autofix): one job, two minutes
jeff-hykin Sep 16, 2026
8ac9a02
ci(autofix): relock the locks in parallel, and watch all of native/
jeff-hykin Sep 16, 2026
8378fb1
docs: put back the comments this branch did not write
jeff-hykin Sep 17, 2026
998ea86
build(nix): every rust module flake stands alone
jeff-hykin Sep 17, 2026
ab906e5
ci: keep the lock guard, the C++ modules still need it
jeff-hykin Sep 17, 2026
7220ab3
build(nix): livox-sdk2 comes from its own repo
jeff-hykin Sep 17, 2026
d4eae7c
build(nix): nix-filter instead of hand-rolled cleanSourceWith
jeff-hykin Sep 17, 2026
073f76f
build(nix): every module builds with `nix build -L path:.`
jeff-hykin Sep 17, 2026
9b53d04
build(nix): relock the C++ modules onto the nix-filter rev
jeff-hykin Sep 17, 2026
3c3920f
build(nix): livox_common lives in the livox-sdk2 repo now
jeff-hykin Sep 17, 2026
3a1fd2c
ci: lint unoptimised, and two build workers
jeff-hykin Sep 17, 2026
19258b8
Merge origin/main into jeff/fix/native_build_cargo_path
jeff-hykin Sep 17, 2026
1c89c68
[autofix.ci] apply automated fixes
autofix-ci[bot] Sep 17, 2026
aa28257
fix(nix): commit the module locks, and guard the one nixpkgs again
jeff-hykin Sep 17, 2026
95b35c5
[autofix.ci] apply automated fixes
autofix-ci[bot] Sep 17, 2026
3dc82f7
fix(nix): the unoptimised clippy build needs debuginfo off
jeff-hykin Sep 17, 2026
fcc57a6
ci: fetch harder, and relock the three C++ locks the guard caught
jeff-hykin Sep 17, 2026
436de49
ci: temporarily save the cargo cache from PR runs, to measure warm CI
jeff-hykin Sep 17, 2026
2bea666
build(ci): format in one devShell again
jeff-hykin Sep 17, 2026
bca0388
docs: drop the multi-line comments added since the last sweep
jeff-hykin Sep 17, 2026
041614d
ci: save the cargo cache from main only again, the measurement is done
jeff-hykin Sep 17, 2026
bf1fab2
ci: let a module declare the system libs it needs, instead of a list …
jeff-hykin Sep 17, 2026
bcda983
test(nix): run the rust tests as derivations, discovered from the flakes
jeff-hykin Sep 17, 2026
ded3b95
refactor(nix): the check is named lint, not clippy, so C++ can offer …
jeff-hykin Sep 17, 2026
a44ce1c
Merge remote-tracking branch 'origin/main' into jeff/fix/native_build…
jeff-hykin Sep 17, 2026
00fcb89
ci: publish the test derivations too, so the native job substitutes them
jeff-hykin Sep 17, 2026
0a3b73d
ci: build, lint and test the modules four at a time, not one
jeff-hykin Sep 17, 2026
5990feb
Merge remote-tracking branch 'origin/main' into jeff/fix/native_build…
jeff-hykin Sep 17, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions .cargo/config.toml
Original file line number Diff line number Diff line change
@@ -1,2 +1,6 @@
[registry]
global-min-publish-age = "7 days"

# store cache of all non-nix rust builds at the root level (shared)
[build]
target-dir = "target"
22 changes: 21 additions & 1 deletion .github/workflows/autofix.yml
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ permissions: {}

jobs:
lint:
timeout-minutes: 1
timeout-minutes: 1.5

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

40sec of ruff/uv and ~7sec of nix.

The .5 is effectively padding to make sure this isn't flakey

runs-on: ubuntu-latest
permissions:
contents: read # For checkout
Expand All @@ -30,5 +30,25 @@ jobs:
run: uv run ruff format
- name: uv lock
run: uv lock

- name: Did native/ change?

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

this is for bumping flake locks whenever the root (./native/rust or ./native/cpp) stuff changes

id: shared
run: |
set -euo pipefail
base=${{ github.event.pull_request.base.sha }}
git fetch --quiet --depth 1 origin "$base"
if git diff --quiet "$base"...HEAD -- native; then
echo "changed=false" >> "$GITHUB_OUTPUT"
else
echo "changed=true" >> "$GITHUB_OUTPUT"
fi
- name: Install Nix
if: steps.shared.outputs.changed == 'true'
run: bash docker/ros/install-nix.sh
- name: Relock the modules onto this revision
if: steps.shared.outputs.changed == 'true'
run: python3 bin/relock-shared-flakes

# Unguarded: it commits the ruff and uv fixes too, which every PR may need.
- name: autofix.ci
uses: autofix-ci/action@v1
167 changes: 116 additions & 51 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -130,6 +130,7 @@ jobs:
- name: Install Nix (with Cachix substituter)
env:
INPUT_EXTRA_NIX_CONFIG: |
http-connections = 50
extra-substituters = https://dimensionalos.cachix.org
extra-trusted-public-keys = dimensionalos.cachix.org-1:20ynj6TjpoD3qTxkdNoeHtgs2G2pNvgAq1EQYLTHJXI=
INPUT_SET_AS_TRUSTED_USER: "true"
Expand All @@ -155,8 +156,18 @@ jobs:
authToken: ${{ secrets.CACHIX_AUTH_TOKEN }}
- name: Build native modules
env:
BUILD_WORKERS: "1"
BUILD_WORKERS: "4"

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

free performance. No Idea why it was set to 1

run: python3 bin/build-native-modules
- name: Lint native modules

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

linting is now a nix thing

env:
BUILD_WORKERS: "4"
run: python3 bin/build-native-modules --lint
# Published so the `native` job substitutes them instead of compiling the
# test targets itself on every run.
- name: Test rust native modules
env:
BUILD_WORKERS: "4"
run: python3 bin/build-native-modules --tests
- name: Verify Cachix holds the built paths
env:
CACHIX_CACHE_NAME: dimensionalos
Expand Down Expand Up @@ -202,6 +213,7 @@ jobs:
- name: Install Nix (with Cachix substituter)
env:
INPUT_EXTRA_NIX_CONFIG: |
http-connections = 50
extra-substituters = https://dimensionalos.cachix.org
extra-trusted-public-keys = dimensionalos.cachix.org-1:20ynj6TjpoD3qTxkdNoeHtgs2G2pNvgAq1EQYLTHJXI=
INPUT_SET_AS_TRUSTED_USER: "true"
Expand All @@ -223,7 +235,7 @@ jobs:
authToken: ${{ secrets.CACHIX_AUTH_TOKEN }}
- name: Build native modules
env:
BUILD_WORKERS: "1"
BUILD_WORKERS: "4"
run: python3 bin/build-native-modules
- name: Verify Cachix holds the built paths
env:
Expand Down Expand Up @@ -293,15 +305,28 @@ jobs:
deno-version: ${{ steps.deno-version.outputs.version }}
cache: true

- name: Install Nix
env:
INPUT_EXTRA_NIX_CONFIG: |
http-connections = 50

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

make cache loading faster

extra-substituters = https://dimensionalos.cachix.org
extra-trusted-public-keys = dimensionalos.cachix.org-1:20ynj6TjpoD3qTxkdNoeHtgs2G2pNvgAq1EQYLTHJXI=
INPUT_SET_AS_TRUSTED_USER: "true"
run: bash docker/ros/install-nix.sh

- name: Run pre-commit
uses: pre-commit/action@v3.0.1
env:
# clippy and fmt are checked in the rust job, so we can skip them here
SKIP: cargo-fmt,cargo-clippy
SKIP: native-module-lint
uses: pre-commit/action@v3.0.1
with:
extra_args: --all-files --verbose


rust:
timeout-minutes: 30
runs-on: ubuntu-latest
env:
CARGO_INCREMENTAL: "0"

@jeff-hykin jeff-hykin Sep 17, 2026

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

time save: prevents creating an always-gets-busted cache

permissions:
contents: read # For checkout

Expand All @@ -312,18 +337,18 @@ jobs:
uses: dtolnay/rust-toolchain@stable
with:
components: rustfmt, clippy
- name: Cache cargo build
uses: Swatinem/rust-cache@v2
- name: Restore cargo build cache
uses: actions/cache/restore@v4
with:
# Only main writes the cache, so a PR run cannot evict main's entry
# from the repo's 10GB budget. PR runs still restore from it.
save-if: ${{ github.ref == 'refs/heads/main' }}
- name: cargo fmt
run: cargo fmt --all -- --check
- name: cargo clippy
run: cargo clippy --workspace --all-targets --all-features --locked -- -D warnings
- name: cargo test
run: cargo test --workspace --all-features --locked
path: |
~/.cargo/registry/index
~/.cargo/registry/cache
~/.cargo/git/db
target
!target/debug/incremental
key: cargo-test-${{ runner.os }}-${{ runner.arch }}-${{ hashFiles('**/Cargo.lock') }}
restore-keys: |
cargo-test-${{ runner.os }}-${{ runner.arch }}-
- name: Install uv
uses: astral-sh/setup-uv@v10.0.1
with:
Expand All @@ -334,25 +359,62 @@ jobs:
sudo apt-get update
sudo apt-get install -y portaudio19-dev
- name: Build and test PyO3 bindings
# PyO3 extension modules (cdylib + `extension-module`) are the one case
# that still needs a plain build: pytest imports the compiled .so.
# The one rust artefact nix does not build: pytest imports the compiled
# .so, which has to match uv's interpreter rather than nixpkgs'.
run: |
uv sync --group tests --frozen
source .venv/bin/activate
maturin develop -m dimos/mapping/ray_tracing/rust/py/Cargo.toml
maturin develop -m dimos/navigation/nav_3d/mls_planner/rust/py/Cargo.toml
python -c "import dimos_voxel_ray_tracing, dimos_mls_planner"
python -m pytest -c /dev/null --rootdir . --noconftest --import-mode=importlib -p no:cacheprovider -v \
dimos/mapping/ray_tracing/test_voxel_map.py \
dimos/mapping/ray_tracing/test_transformer.py \
dimos/navigation/nav_3d/mls_planner/test_mls_planner.py \
dimos/navigation/nav_3d/mls_planner/test_transformer.py
python bin/pyo3-extensions --build
python bin/pyo3-extensions --test
- name: Bake e2e tests
run: uv run pytest -m bake_e2e dimos/cli/bake/test_bake_e2e.py --no-cov
- name: Native module e2e tests

- name: Save cargo build cache
if: github.ref == 'refs/heads/main'
uses: actions/cache/save@v4
with:
path: |
~/.cargo/registry/index
~/.cargo/registry/cache
~/.cargo/git/db
target
!target/debug/incremental
key: cargo-test-${{ runner.os }}-${{ runner.arch }}-${{ hashFiles('**/Cargo.lock') }}

flake-locks-current:
timeout-minutes: 30
runs-on: ubuntu-latest
permissions:
contents: read # For checkout

steps:
- name: Checkout
uses: actions/checkout@v7
- name: Install Nix
env:
INPUT_EXTRA_NIX_CONFIG: |
http-connections = 50
extra-substituters = https://dimensionalos.cachix.org
extra-trusted-public-keys = dimensionalos.cachix.org-1:20ynj6TjpoD3qTxkdNoeHtgs2G2pNvgAq1EQYLTHJXI=
INPUT_SET_AS_TRUSTED_USER: "true"
run: bash docker/ros/install-nix.sh
- name: Every flake.lock is current
run: |
cargo build --release --locked -p dimos-livox -p dimos-virtual-mid360
uv run pytest -m native_e2e dimos/hardware/sensors/lidar/livox/test_e2e.py --no-cov
set -u
git ls-files '*flake.nix' | sed 's|/flake.nix$||;s|^flake.nix$|.|' | sort -u > /tmp/flakes
: > /tmp/stale
while read -r dir; do
echo "::group::$dir"
nix flake lock --no-update-lock-file "path:$dir" || echo "$dir" >> /tmp/stale
echo "::endgroup::"
done < /tmp/flakes
if [ -s /tmp/stale ]; then
while read -r dir; do
echo "::error::flake.lock is stale or incomplete in $dir -- run 'nix flake lock' there and commit it"
done < /tmp/stale
exit 1
fi
echo "$(wc -l < /tmp/flakes) flake locks are current"

native:
name: Native builds (C++ and Rust)
Expand All @@ -374,7 +436,8 @@ jobs:
sudo apt-get update
# lcm.pc carries `Requires: glib-2.0`, so pkg-config cannot resolve
# lcm at all without glib's own .pc file
sudo apt-get install -y liblcm-dev libglib2.0-dev nlohmann-json3-dev
sudo apt-get install -y liblcm-dev libglib2.0-dev nlohmann-json3-dev \
portaudio19-dev
base=https://github.com/eclipse-zenoh
curl -fsSL -o /tmp/zenoh-c.zip \
"$base/zenoh-c/releases/download/$ZENOH_VERSION/zenoh-c-$ZENOH_VERSION-x86_64-unknown-linux-gnu-standalone.zip"
Expand All @@ -397,16 +460,14 @@ jobs:
- name: Test
run: ctest --test-dir build/native-cpp --output-on-failure

- name: Find C++ native modules
- name: List C++ native modules
id: find-modules
run: |
modules=$(find . -name flake.nix \
-not -path './.git/*' \
-not -path '*/build/*' \
-not -path '*/result/*' \
-printf '%h\n' \
modules=$(git ls-files '*/flake.nix' \
| sed 's|/flake.nix$||' \

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

native/cpp now has a flake.nix, need this find to not find that one

| grep -v '^native/' \
| while read -r dir; do
[ -f "$dir/CMakeLists.txt" ] && echo "${dir#./}"
[ -f "$dir/CMakeLists.txt" ] && echo "$dir"
done \
| sort)
if [ -z "$modules" ]; then
Expand All @@ -427,25 +488,18 @@ jobs:
# and this stays safe on fork PRs.
env:
INPUT_EXTRA_NIX_CONFIG: |
http-connections = 50
extra-substituters = https://dimensionalos.cachix.org
extra-trusted-public-keys = dimensionalos.cachix.org-1:20ynj6TjpoD3qTxkdNoeHtgs2G2pNvgAq1EQYLTHJXI=
INPUT_SET_AS_TRUSTED_USER: "true"
run: bash docker/ros/install-nix.sh
- name: Build Rust memory recorder Nix package
run: |
cd dimos/experimental/memory/rust
nix build .#dimos-memory-recorder --no-write-lock-file --print-build-logs
test -x result/bin/dimos-memory-recorder
# PCL, GTSAM and the SLAM cores come from each module's flake, not apt.
- name: Build C++ native modules
- name: Build native modules
run: python3 bin/build-native-modules
- name: Test rust native modules
env:
MODULES: ${{ steps.find-modules.outputs.modules }}
run: |
for module in $MODULES; do
echo "::group::$module"
(cd "$module" && nix build --no-write-lock-file --print-build-logs)
echo "::endgroup::"
done
BUILD_WORKERS: "4"
run: python3 bin/build-native-modules --tests
- name: Test C++ native modules
env:
MODULES: ${{ steps.find-modules.outputs.modules }}
Expand All @@ -457,6 +511,15 @@ jobs:
echo "::endgroup::"
fi
done
- name: Install uv
uses: astral-sh/setup-uv@v10.0.1
with:
enable-cache: true
prune-cache: true
- name: Native module e2e tests
run: |
uv sync --group tests --frozen
uv run pytest -m native_e2e dimos/hardware/sensors/lidar/livox/test_e2e.py --no-cov

md-babel:
timeout-minutes: 15
Expand Down Expand Up @@ -702,6 +765,7 @@ jobs:
if: steps.native-marker.outputs.cache-hit == 'true'
env:
INPUT_EXTRA_NIX_CONFIG: |
http-connections = 50
extra-substituters = https://dimensionalos.cachix.org
extra-trusted-public-keys = dimensionalos.cachix.org-1:20ynj6TjpoD3qTxkdNoeHtgs2G2pNvgAq1EQYLTHJXI=
INPUT_SET_AS_TRUSTED_USER: "true"
Expand Down Expand Up @@ -946,7 +1010,7 @@ jobs:
uses: dtolnay/rust-toolchain@stable
- name: Build rust native modules
if: contains(matrix.markers, 'self_hosted')
run: cargo build --release --locked -p dimos-livox -p dimos-virtual-mid360
run: python3 bin/build-native-modules
- name: Run tests
run: uv run pytest --cov=dimos/ --junitxml=junit.xml -m '(${{ matrix.markers }}) and not mujoco'
- name: Re-run the failing tests with maximum verbosity
Expand Down Expand Up @@ -1176,6 +1240,7 @@ jobs:
- lint
- rust
- native
- flake-locks-current
- md-babel
- web
- tests
Expand Down
2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,8 @@ build/
result
result-*

crate-hashes.json

# Editor and OS files
.vscode/
.DS_Store
Expand Down
Loading
Loading