commit 3d604fc1db58bd0e46936c68e78f9b5b6d172ec5
parent e646fd7e94b824476ece4211611853f703065d08
Author: triesap <tyson@radroots.org>
Date: Fri, 5 Jun 2026 19:50:35 -0700
nix: add tangle development shell
Diffstat:
| A | flake.lock | | | 27 | +++++++++++++++++++++++++++ |
| A | flake.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";
+ };
+ }
+ );
+ };
+}