- Nix 100%
|
|
||
|---|---|---|
| .forgejo/workflows | update for codeberg hosting | |
| autodeps | add autodeps for atk, panga and gdk | |
| pkgs/iai-callgrind-runner | fix iai-callgrind-runner | |
| .gitignore | init | |
| autotools.nix | cargo-espflash -> espflash | |
| cargo-meta.nix | automatically add cargo-insta if used | |
| crossArgs.nix | fix windows-gnu build | |
| crossOpts.nix | switch to alejandra for nix formatting | |
| flake.lock | updates | |
| flake.nix | iai-callgrind support | |
| freebsd-sysroot.nix | switch to alejandra for nix formatting | |
| mill-scale.nix | update toolchain for semver-checks | |
| overlay.nix | iai-callgrind support | |
| README.md | updates | |
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-goingSplit 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.