1
0
Fork
You've already forked mill-scale
0
Flakes of rust
  • Nix 100%
Robin Appelman f5cbda29b9
All checks were successful
CI / checks (push) Successful in 1m55s
updates
2026年05月31日 14:53:06 +02:00
.forgejo/workflows update for codeberg hosting 2025年05月22日 17:49:45 +02:00
autodeps add autodeps for atk, panga and gdk 2026年02月28日 17:46:42 +01:00
pkgs/iai-callgrind-runner fix iai-callgrind-runner 2025年07月13日 22:22:07 +02:00
.gitignore init 2024年09月24日 16:54:20 +02:00
autotools.nix cargo-espflash -> espflash 2026年04月20日 15:38:01 +02:00
cargo-meta.nix automatically add cargo-insta if used 2025年02月28日 23:51:03 +01:00
crossArgs.nix fix windows-gnu build 2025年12月01日 21:07:11 +01:00
crossOpts.nix switch to alejandra for nix formatting 2024年12月23日 22:55:24 +01:00
flake.lock updates 2026年05月31日 14:53:06 +02:00
flake.nix iai-callgrind support 2025年07月13日 18:54:53 +02:00
freebsd-sysroot.nix switch to alejandra for nix formatting 2024年12月23日 22:55:24 +01:00
mill-scale.nix update toolchain for semver-checks 2026年04月03日 19:39:19 +02:00
overlay.nix iai-callgrind support 2025年07月13日 18:54:53 +02:00
README.md updates 2025年06月18日 15:43:59 +02:00

Mill Scale

An opinionated rust module for flakelight.

Features

Included checks:

  • Build project
  • Build examples (if they exist)
  • Verify MSRV (if specified in Cargo.toml)
  • Test and clippy with default features
  • Test and clippy with all features (if features are defined)
  • Test and clippy with no default features (if default features are defined)

Usage

{
 inputs = {
 nixpkgs.url = "nixpkgs/nixos-24.05";
 flakelight = {
 url = "github:nix-community/flakelight";
 inputs.nixpkgs.follows = "nixpkgs";
 };
 mill-scale = {
 url = "git+https://codeberg.org/icewind/mill-scale.git";
 inputs.flakelight.follows = "flakelight";
 };
 };
 outputs = { mill-scale, ... }: mill-scale ./. {};
}

Dependencies

(Native) build dependencies can be specified with the following

{
 # ...
 outputs = { mill-scale, ... }: mill-scale ./. {
 nativeBuildInputs = pkgs: [pkgs.libfoo];
 buildInputs = pkgs: [pkgs.libbar];
 };
}

Additionally, dependencies for the following crates should be automatically detected

  • openssl
  • udev
  • dbus
  • servo-fontconfig
  • sodium
  • x11-dl
  • glutin_glx
  • wayland
  • libsodium
  • freetype
  • alsa
  • wgpu

Development tooling

Development tools for working with the following crates are automatically added to the dev-shell when needed

  • cargo-insta
  • sqlx

Usage with GitHub Actions

Single runner

name:"CI"on:pull_request:push:jobs:checks:runs-on:ubuntu-lateststeps:- uses:actions/checkout@v4- uses:cachix/install-nix-action@v26# insert cache setup here- run:nix flake check --keep-going

Split over multiple runners

This automatically creates one job per check, allowing them to run in parallel.

This might be slower than running them all in the same runner depending on the time each check takes and the size of the intermediates that has to be downloaded from the cache.

name:"CI"on:pull_request:push:jobs:matrix:runs-on:ubuntu-latestoutputs:matrix:${{ steps.set-matrix.outputs.matrix }}steps:- uses:actions/checkout@v4- uses:cachix/install-nix-action@v27- id:set-matrixrun:echo "matrix={\"check\":$(nix eval --json '.#checks.x86_64-linux'--apply 'builtins.attrNames')}" | tee -a $GITHUB_OUTPUTchecks:runs-on:ubuntu-latestneeds:[matrix]strategy:fail-fast:falsematrix:${{fromJson(needs.matrix.outputs.matrix)}}name:${{ matrix.check }}steps:- uses:actions/checkout@v4- uses:cachix/install-nix-action@v26# insert cache setup here- run:nix build .#checks.x86_64-linux.${{ matrix.check }}

Cross-compiling

Cross-compiling can be enabled with the following

{
 # ...
 outputs = { mill-scale, ... }: mill-scale ./. {
 crossTargets = [
 "x86_64-unknown-linux-musl"
 "x86_64-pc-windows-gnu"
 ];
 };
}

This adds cross-compiled package with the same name as the target to the packages.

Cross-compiling with GitHub Action

A lib.crossMatrix flake output is provided to help with setting up cross-compiling in CI.

This contains a list of targets and the binary suffix (e.g. .exe) for each target.

on:[push, pull_request]name:CIjobs:matrix:runs-on:ubuntu-latestoutputs:cross-matrix:${{ steps.set-matrix.outputs.cross-matrix }}steps:- uses:actions/checkout@v4- uses:cachix/install-nix-action@v27- id:set-matrixrun:| echo "cross-matrix={\"include\":$(nix eval --json '.#lib.crossMatrix')}" | tee -a $GITHUB_OUTPUTbuild:runs-on:ubuntu-latestneeds:[matrix]strategy:fail-fast:falsematrix:${{fromJson(needs.matrix.outputs.cross-matrix)}}steps:- uses:actions/checkout@v4- uses:cachix/install-nix-action@v27# insert cache setup here- run:nix build .#${{ matrix.target }}- uses:actions/upload-artifact@v4with:name:crate-name-${{ matrix.target }}path:result/bin/crate-name${{ matrix.binary-suffix }}

Credits

This flake is based on flakelight-rust, credit for most ideas got to accelbread.