From baee35eed8aa46fae3153a3fda8589856adb304a Mon Sep 17 00:00:00 2001 From: Torben Ewert Date: Sun, 19 Jul 2026 10:25:52 +0200 Subject: [PATCH] ci: run tests in nix dev shell --- .tangled/workflows/test.yml | 23 +-- flake.lock | 274 ++++++++++++++++++++++++++++++++++++ flake.nix | 36 +++++ 3 files changed, 314 insertions(+), 19 deletions(-) create mode 100644 flake.lock create mode 100644 flake.nix diff --git a/.tangled/workflows/test.yml b/.tangled/workflows/test.yml index 7a5dd94..2329088 100644 --- a/.tangled/workflows/test.yml +++ b/.tangled/workflows/test.yml @@ -5,25 +5,10 @@ when: engine: microvm image: nixos -dependencies: - - gcc - - git - - opam - steps: - - name: 'install opam' - command: | - set -euo pipefail - opam init --yes --auto-setup --disable-sandboxing - opam update - - - name: 'install dependencies' - command: | - set -euo pipefail - opam install . --deps-only --with-test --yes - eval $(opam env) - - name: 'run tests' command: | - set -euo pipefail - opam exec -- dune runtest + nix develop --command bash -c ' + set -euo pipefail + dune runtest + ' diff --git a/flake.lock b/flake.lock new file mode 100644 index 0000000..e4b81f0 --- /dev/null +++ b/flake.lock @@ -0,0 +1,274 @@ +{ + "nodes": { + "flake-compat": { + "flake": false, + "locked": { + "lastModified": 1747046372, + "narHash": "sha256-CIVLLkVgvHYbgI2UpXvIIBJ12HWgX+fjA8Xf8PUmqCY=", + "owner": "edolstra", + "repo": "flake-compat", + "rev": "9100a0f413b0c601e0533d1d94ffd501ce2e7885", + "type": "github" + }, + "original": { + "owner": "edolstra", + "repo": "flake-compat", + "type": "github" + } + }, + "flake-utils": { + "inputs": { + "systems": "systems" + }, + "locked": { + "lastModified": 1731533236, + "narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "11707dc2f618dd54ca8739b309ec4fc024de578b", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_2": { + "inputs": { + "systems": "systems_2" + }, + "locked": { + "lastModified": 1731533236, + "narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "11707dc2f618dd54ca8739b309ec4fc024de578b", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "mirage-opam-overlays": { + "flake": false, + "locked": { + "lastModified": 1710922379, + "narHash": "sha256-j4QREQDUf8oHOX7qg6wAOupgsNQoYlufxoPrgagD+pY=", + "owner": "dune-universe", + "repo": "mirage-opam-overlays", + "rev": "797cb363df3ff763c43c8fbec5cd44de2878757e", + "type": "github" + }, + "original": { + "owner": "dune-universe", + "repo": "mirage-opam-overlays", + "type": "github" + } + }, + "nixpkgs": { + "locked": { + "lastModified": 1751792365, + "narHash": "sha256-J1kI6oAj25IG4EdVlg2hQz8NZTBNYvIS0l4wpr9KcUo=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "1fd8bada0b6117e6c7eb54aad5813023eed37ccb", + "type": "github" + }, + "original": { + "owner": "nixos", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-llvm17": { + "locked": { + "lastModified": 1723734425, + "narHash": "sha256-GwSfzmTMpM+gAJHURHNRle6AX9nhhdZnC41tC4AkvO8=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "35e0ed8d1875d2303fab9930c6eb205654a2f6a3", + "type": "github" + }, + "original": { + "owner": "nixos", + "repo": "nixpkgs", + "rev": "35e0ed8d1875d2303fab9930c6eb205654a2f6a3", + "type": "github" + } + }, + "nixpkgs-python38": { + "locked": { + "lastModified": 1708815994, + "narHash": "sha256-hL7N/ut2Xu0NaDxDMsw2HagAjgDskToGiyZOWriiLYM=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "9a9dae8f6319600fa9aebde37f340975cab4b8c0", + "type": "github" + }, + "original": { + "owner": "nixos", + "repo": "nixpkgs", + "rev": "9a9dae8f6319600fa9aebde37f340975cab4b8c0", + "type": "github" + } + }, + "nixpkgs-python39": { + "locked": { + "lastModified": 1743938762, + "narHash": "sha256-UgFYn8sGv9B8PoFpUfCa43CjMZBl1x/ShQhRDHBFQdI=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "74a40410369a1c35ee09b8a1abee6f4acbedc059", + "type": "github" + }, + "original": { + "owner": "nixos", + "repo": "nixpkgs", + "rev": "74a40410369a1c35ee09b8a1abee6f4acbedc059", + "type": "github" + } + }, + "opam-nix": { + "inputs": { + "flake-compat": "flake-compat", + "flake-utils": "flake-utils_2", + "mirage-opam-overlays": "mirage-opam-overlays", + "nixpkgs": "nixpkgs", + "nixpkgs-llvm17": "nixpkgs-llvm17", + "nixpkgs-python38": "nixpkgs-python38", + "nixpkgs-python39": "nixpkgs-python39", + "opam-overlays": "opam-overlays", + "opam-repository": "opam-repository", + "opam2json": "opam2json" + }, + "locked": { + "lastModified": 1782476416, + "narHash": "sha256-oFdLuHny6fe6kSOrOTN5Bfls+GisFiM8ytYrBQpGRog=", + "owner": "tweag", + "repo": "opam-nix", + "rev": "583fb2ed4db44fcda4f6222c554949503d50a352", + "type": "github" + }, + "original": { + "owner": "tweag", + "repo": "opam-nix", + "type": "github" + } + }, + "opam-overlays": { + "flake": false, + "locked": { + "lastModified": 1741116009, + "narHash": "sha256-Z0PIW82fHJFvAv/JYpAffnp2DaOjLhsPutqyIrORZd0=", + "owner": "dune-universe", + "repo": "opam-overlays", + "rev": "e031bb64e33bf93be963e9a38b28962e6e14381f", + "type": "github" + }, + "original": { + "owner": "dune-universe", + "repo": "opam-overlays", + "type": "github" + } + }, + "opam-repository": { + "flake": false, + "locked": { + "lastModified": 1774793755, + "narHash": "sha256-NVrUApdEFQWDTKX+tnOxMpZH6W79d8CHMHhXy6h44Ug=", + "owner": "ocaml", + "repo": "opam-repository", + "rev": "747f3dca281b5ae6275dfa41069f059ae517126f", + "type": "github" + }, + "original": { + "owner": "ocaml", + "repo": "opam-repository", + "type": "github" + } + }, + "opam2json": { + "inputs": { + "nixpkgs": [ + "opam-nix", + "nixpkgs" + ], + "systems": "systems_3" + }, + "locked": { + "lastModified": 1782276984, + "narHash": "sha256-rBGN9TERADPXiehNe1/9emO6QqYPrTwSoMdB+BVEWpM=", + "owner": "tweag", + "repo": "opam2json", + "rev": "88b2a71f6e2df38d3304d3900ee129f4e83048f8", + "type": "github" + }, + "original": { + "owner": "tweag", + "repo": "opam2json", + "type": "github" + } + }, + "root": { + "inputs": { + "flake-utils": "flake-utils", + "nixpkgs": [ + "opam-nix", + "nixpkgs" + ], + "opam-nix": "opam-nix" + } + }, + "systems": { + "locked": { + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default", + "type": "github" + } + }, + "systems_2": { + "locked": { + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default", + "type": "github" + } + }, + "systems_3": { + "locked": { + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default", + "type": "github" + } + } + }, + "root": "root", + "version": 7 +} diff --git a/flake.nix b/flake.nix new file mode 100644 index 0000000..572bbad --- /dev/null +++ b/flake.nix @@ -0,0 +1,36 @@ +{ + inputs = { + opam-nix.url = "github:tweag/opam-nix"; + flake-utils.url = "github:numtide/flake-utils"; + nixpkgs.follows = "opam-nix/nixpkgs"; + }; + + outputs = + { + self, + flake-utils, + opam-nix, + nixpkgs, + }@inputs: + + let + package = "pinc-lang"; + in + + flake-utils.lib.eachDefaultSystem ( + system: + let + pkgs = nixpkgs.legacyPackages.${system}; + on = opam-nix.lib.${system}; + scope = on.buildOpamProject { } package ./. { + ocaml-base-compiler = "*"; + }; + overlay = final: prev: { + }; + in + { + legacyPackages = scope.overrideScope overlay; + packages.default = self.legacyPackages.${system}.${package}; + } + ); +} -- 2.51.2