diff --git a/.github/workflows/nix-build.yml b/.github/workflows/nix-build.yml new file mode 100644 index 0000000..111658d --- /dev/null +++ b/.github/workflows/nix-build.yml @@ -0,0 +1,20 @@ +name: "Build" +on: + pull_request: + push: + branches: + - master +jobs: + nix-build: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + with: + submodules: 'recursive' + - uses: cachix/install-nix-action@v27 + with: + extra_nix_config: | + extra-substituters = https://anmonteiro.nix-cache.workers.dev + extra-trusted-public-keys = ocaml.nix-cache.com-1:/xI2h2+56rwFfKyyFVbkJSeGqSIYMC/Je+7XXqGKDIY= + - name: "Run nix-build" + run: nix build -L .# diff --git a/flake.lock b/flake.lock index b07887f..d29d081 100644 --- a/flake.lock +++ b/flake.lock @@ -3,7 +3,7 @@ "flake-parts": { "inputs": { "nixpkgs-lib": [ - "nix-eval-jobs", + "nix-eval-jobs-src", "nixpkgs" ] }, @@ -39,7 +39,7 @@ "type": "github" } }, - "nix-eval-jobs": { + "nix-eval-jobs-src": { "inputs": { "flake-parts": "flake-parts", "nix-github-actions": "nix-github-actions", @@ -47,16 +47,17 @@ "treefmt-nix": "treefmt-nix" }, "locked": { - "lastModified": 1717698186, - "narHash": "sha256-e3/cvm7bAn0RsTBcPfHwuYOi2lwoO4jpTn4nmMSvHfU=", + "lastModified": 1719038577, + "narHash": "sha256-BrzrRCC6NosGgJUXa3B0M4BM+2wKsAvZk7wZ7I2IDGE=", "owner": "nix-community", "repo": "nix-eval-jobs", - "rev": "b6169e08e76e10b673d1b54f944cddb1e7cbea97", + "rev": "d0b436132958c3e272df9f08e0cbe75e86527582", "type": "github" }, "original": { "owner": "nix-community", "repo": "nix-eval-jobs", + "rev": "d0b436132958c3e272df9f08e0cbe75e86527582", "type": "github" } }, @@ -78,7 +79,7 @@ "nix-github-actions": { "inputs": { "nixpkgs": [ - "nix-eval-jobs", + "nix-eval-jobs-src", "nixpkgs" ] }, @@ -152,7 +153,7 @@ "root": { "inputs": { "flake-utils": "flake-utils", - "nix-eval-jobs": "nix-eval-jobs", + "nix-eval-jobs-src": "nix-eval-jobs-src", "nix-filter": "nix-filter", "nixpkgs": "nixpkgs_2" } @@ -175,7 +176,7 @@ "treefmt-nix": { "inputs": { "nixpkgs": [ - "nix-eval-jobs", + "nix-eval-jobs-src", "nixpkgs" ] }, diff --git a/flake.nix b/flake.nix index fe6615d..7f75caa 100644 --- a/flake.nix +++ b/flake.nix @@ -7,78 +7,62 @@ url = "github:nix-ocaml/nix-overlays"; inputs.flake-utils.follows = "flake-utils"; }; - inputs.nix-eval-jobs.url = "github:nix-community/nix-eval-jobs"; + inputs.nix-eval-jobs-src.url = "github:nix-community/nix-eval-jobs?rev=d0b436132958c3e272df9f08e0cbe75e86527582"; - outputs = - { self - , nixpkgs - , flake-utils - , nix-filter - , nix-eval-jobs - }: + outputs = { self, nixpkgs, flake-utils, nix-filter, nix-eval-jobs-src }: flake-utils.lib.eachDefaultSystem (system: - let - pkgs = nixpkgs.legacyPackages."${system}".extend (self: super: { - ocamlPackages = super.ocaml-ng.ocamlPackages_5_2; - }); - inherit (pkgs) - lib - makeWrapper - ocamlPackages - stdenv - nixVersions; - path = lib.makeBinPath [ - nix-eval-jobs.outputs.packages."${system}".default - nixVersions.nix_2_22 - ]; - # Needed for x86_64-darwin - buildDunePackage = - if stdenv.isDarwin && !stdenv.isAarch64 - then - ocamlPackages.buildDunePackage.override - { stdenv = pkgs.overrideSDK stdenv "11.0"; } - else ocamlPackages.buildDunePackage; - nix-ci-build = buildDunePackage { - pname = "nix-ci-build"; - version = "n/a"; - src = with nix-filter.lib; filter { - root = ./.; - include = [ - "bin" - "lib" - "dune-project" - "nix-ci-build.opam" - ]; + let + pkgs = nixpkgs.legacyPackages."${system}".extend (self: super: { + ocamlPackages = super.ocaml-ng.ocamlPackages_5_2; + }); + inherit (pkgs) lib makeWrapper ocamlPackages stdenv; + nix-eval-jobs = nix-eval-jobs-src.outputs.packages."${system}".default; + path = lib.makeBinPath [ nix-eval-jobs ]; + # Needed for x86_64-darwin + buildDunePackage = + if stdenv.isDarwin && !stdenv.isAarch64 then + ocamlPackages.buildDunePackage.override + { stdenv = pkgs.overrideSDK stdenv "11.0"; } + else + ocamlPackages.buildDunePackage; + in + { + packages = { + default = buildDunePackage { + pname = "nix-ci-build"; + version = "n/a"; + src = with nix-filter.lib; filter { + root = ./.; + include = [ + "bin" + "lib" + "dune-project" + "nix-ci-build.opam" + ]; + }; + nativeBuildInputs = [ makeWrapper ]; + buildInputs = [ nix-eval-jobs ]; + propagatedBuildInputs = with ocamlPackages; [ + cmdliner + eio_main + logs + fmt + ppx_yojson_conv + ]; + postInstall = '' + wrapProgram "$out/bin/nix-ci-build" --prefix PATH : ${path} + ''; + }; }; - nativeBuildInputs = [ makeWrapper ]; - buildInputs = [ pkgs.nix-eval-jobs ]; - propagatedBuildInputs = with ocamlPackages; [ - cmdliner - eio_main - logs - fmt - ppx_yojson_conv - ]; - - postInstall = '' - wrapProgram "$out/bin/nix-ci-build" \ - --prefix PATH : ${path} - ''; - }; - in - { - packages = { - default = nix-ci-build; - }; - devShells = { - default = pkgs.mkShell { - inputsFrom = [ nix-ci-build ]; - nativeBuildInputs = with pkgs.ocamlPackages; [ - merlin - ocamlformat - ]; + devShells = { + default = pkgs.mkShell { + inputsFrom = [ self.packages.${system}.default ]; + nativeBuildInputs = with pkgs.ocamlPackages; [ + merlin + ocamlformat + ]; + }; }; - }; - }); + }); }