tangle


git clone https://radroots.dev/git/tangle.git
Log | Files | Refs | README | LICENSE

commit 3d604fc1db58bd0e46936c68e78f9b5b6d172ec5
parent e646fd7e94b824476ece4211611853f703065d08
Author: triesap <tyson@radroots.org>
Date:   Fri,  5 Jun 2026 19:50:35 -0700

nix: add tangle development shell

Diffstat:
Aflake.lock | 27+++++++++++++++++++++++++++
Aflake.nix | 82+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
2 files changed, 109 insertions(+), 0 deletions(-)

diff --git a/flake.lock b/flake.lock @@ -0,0 +1,27 @@ +{ + "nodes": { + "nixpkgs": { + "locked": { + "lastModified": 1780243769, + "narHash": "sha256-x5UQuRsH3MqI0U9afaXSNqzTPSeZlRLvFAav2Ux1pNw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "331800de5053fcebacf6813adb5db9c9dca22a0c", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "root": { + "inputs": { + "nixpkgs": "nixpkgs" + } + } + }, + "root": "root", + "version": 7 +} diff --git a/flake.nix b/flake.nix @@ -0,0 +1,82 @@ +{ + description = "tangle development shell"; + + inputs = { + nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable"; + }; + + outputs = + { self, nixpkgs }: + let + systems = [ + "aarch64-darwin" + "aarch64-linux" + "x86_64-darwin" + "x86_64-linux" + ]; + forAllSystems = nixpkgs.lib.genAttrs systems; + mkPkgs = system: import nixpkgs { inherit system; }; + mkScript = + pkgs: name: text: + pkgs.writeShellApplication { + inherit name text; + runtimeInputs = [ + pkgs.cargo-nextest + pkgs.cargo-llvm-cov + pkgs.llvmPackages.llvm + ]; + }; + in + { + devShells = forAllSystems ( + system: + let + pkgs = mkPkgs system; + in + { + default = pkgs.mkShell { + packages = [ + pkgs.cargo-nextest + pkgs.cargo-llvm-cov + pkgs.llvmPackages.llvm + ]; + }; + } + ); + + apps = forAllSystems ( + system: + let + pkgs = mkPkgs system; + check = mkScript pkgs "tangle-check" '' + scripts/check.sh + ''; + test = mkScript pkgs "tangle-test" '' + scripts/test.sh + cargo nextest run --workspace + ''; + coverage = mkScript pkgs "tangle-coverage" '' + LLVM_COV="$(command -v llvm-cov)" + LLVM_PROFDATA="$(command -v llvm-profdata)" + export LLVM_COV + export LLVM_PROFDATA + scripts/coverage.sh + ''; + in + { + check = { + type = "app"; + program = "${check}/bin/tangle-check"; + }; + test = { + type = "app"; + program = "${test}/bin/tangle-test"; + }; + coverage = { + type = "app"; + program = "${coverage}/bin/tangle-coverage"; + }; + } + ); + }; +}