From 6e28820659df8c70a279a92da951e5180d0eaf33 Mon Sep 17 00:00:00 2001 From: Bryan Bennett Date: Thu, 11 Jan 2024 08:31:52 -0500 Subject: [PATCH 1/5] Enable testing during nix builds --- default.nix | 13 ++++++++++++- tests/spit_version.sh | 2 +- 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/default.nix b/default.nix index 0ef7fe8..22c104a 100644 --- a/default.nix +++ b/default.nix @@ -1,6 +1,9 @@ -{ buildDunePackage +{ alcotest +, bisect_ppx +, buildDunePackage , core , core_unix +, coreutils , findlib , lib , nix-filter @@ -19,21 +22,29 @@ buildDunePackage { include = [ "bin" "lib" + "tests" ./dune-project ./flake.nix ./default.nix ./flake.lock ./flake_env.opam ./direnvrc + ./LICENSE ]; }; duneVersion = "3"; + doCheck = true; postPatch = '' substituteInPlace direnvrc --replace "@flake_env@" "$out/bin/flake_env" + substituteInPlace tests/spit*.sh --replace "/usr/bin/env" "${coreutils}/bin/env" ''; postInstall = '' install -m400 -D direnvrc $out/share/flake_env/direnvrc ''; + checkInputs = [ + alcotest + bisect_ppx + ]; nativeBuildInputs = [ reason ]; diff --git a/tests/spit_version.sh b/tests/spit_version.sh index b2eee26..b8e3877 100755 --- a/tests/spit_version.sh +++ b/tests/spit_version.sh @@ -1,2 +1,2 @@ -#!/usr/bin/env sh +#!/usr/bin/env bash echo "1.1.1"; From 443a10d73851b635f3436d5d06520a80f75f7f1b Mon Sep 17 00:00:00 2001 From: Bryan Bennett Date: Sat, 13 Jan 2024 09:32:09 -0500 Subject: [PATCH 2/5] Add github workflow to proxy tests from sr.ht --- .github/workflows/repo-lockdown.yml | 16 ++++++++++++++++ .github/workflows/test.yml | 14 ++++++++++++++ 2 files changed, 30 insertions(+) create mode 100644 .github/workflows/repo-lockdown.yml create mode 100644 .github/workflows/test.yml diff --git a/.github/workflows/repo-lockdown.yml b/.github/workflows/repo-lockdown.yml new file mode 100644 index 0000000..e513c4f --- /dev/null +++ b/.github/workflows/repo-lockdown.yml @@ -0,0 +1,16 @@ +name: "Repo Lockdown" + +on: + pull_request_target: + types: 'opened' + +permissions: + pull-requests: write + +jobs: + action: + runs-on: ubuntu-latest + steps: + - uses: dessant/repo-lockdown@v4 + with: + pr-comment: "This repo does not accept pull requests as it is a mirror. Please instead submit patches to https://sr.ht/~bryan_bennett/flake_env." diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml new file mode 100644 index 0000000..3d7a1b5 --- /dev/null +++ b/.github/workflows/test.yml @@ -0,0 +1,14 @@ +name: "Test" +on: + pull_request: + push: +jobs: + tests: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - uses: cachix/install-nix-action@v25 + with: + github_access_token: ${{ secrets.GITHUB_TOKEN }} + - run: nix build + - run: nix flake check --all-systems --keep-going From 536791abfbb0ce7302e48e5bcf3305ced9b4afcc Mon Sep 17 00:00:00 2001 From: Bryan Bennett Date: Wed, 17 Jan 2024 08:22:39 -0500 Subject: [PATCH 3/5] Add pre-commit-hooks.nix integration --- .pre-commit-config.yaml | 1 + flake.lock | 127 +++++++++++++++++++++++++++++++++++++++- flake.nix | 59 +++++++++++++------ 3 files changed, 168 insertions(+), 19 deletions(-) create mode 120000 .pre-commit-config.yaml diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml new file mode 120000 index 0000000..2a19533 --- /dev/null +++ b/.pre-commit-config.yaml @@ -0,0 +1 @@ +/nix/store/y3cj5g3rd064bxpi3r2i1k2nzhk9qrdw-pre-commit-config.json \ No newline at end of file diff --git a/flake.lock b/flake.lock index a1e8315..24f924c 100644 --- a/flake.lock +++ b/flake.lock @@ -1,5 +1,21 @@ { "nodes": { + "flake-compat": { + "flake": false, + "locked": { + "lastModified": 1696426674, + "narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=", + "owner": "edolstra", + "repo": "flake-compat", + "rev": "0f9255e01c2351cc7d116c072cb317785dd33b33", + "type": "github" + }, + "original": { + "owner": "edolstra", + "repo": "flake-compat", + "type": "github" + } + }, "flake-parts": { "inputs": { "nixpkgs-lib": [ @@ -20,6 +36,45 @@ "type": "github" } }, + "flake-utils": { + "inputs": { + "systems": "systems" + }, + "locked": { + "lastModified": 1701680307, + "narHash": "sha256-kAuep2h5ajznlPMD9rnQyffWG8EM/C73lejGofXvdM8=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "4022d587cbbfd70fe950c1e2083a02621806a725", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "gitignore": { + "inputs": { + "nixpkgs": [ + "pre-commit-hooks", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1703887061, + "narHash": "sha256-gGPa9qWNc6eCXT/+Z5/zMkyYOuRZqeFZBDbopNZQkuY=", + "owner": "hercules-ci", + "repo": "gitignore.nix", + "rev": "43e1aa1308018f37118e34d3a9cb4f5e75dc11d5", + "type": "github" + }, + "original": { + "owner": "hercules-ci", + "repo": "gitignore.nix", + "type": "github" + } + }, "nix-filter": { "locked": { "lastModified": 1701697642, @@ -51,11 +106,81 @@ "type": "github" } }, + "nixpkgs-stable": { + "locked": { + "lastModified": 1704874635, + "narHash": "sha256-YWuCrtsty5vVZvu+7BchAxmcYzTMfolSPP5io8+WYCg=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "3dc440faeee9e889fe2d1b4d25ad0f430d449356", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-23.11", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_2": { + "locked": { + "lastModified": 1704842529, + "narHash": "sha256-OTeQA+F8d/Evad33JMfuXC89VMetQbsU4qcaePchGr4=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "eabe8d3eface69f5bb16c18f8662a702f50c20d5", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "pre-commit-hooks": { + "inputs": { + "flake-compat": "flake-compat", + "flake-utils": "flake-utils", + "gitignore": "gitignore", + "nixpkgs": "nixpkgs_2", + "nixpkgs-stable": "nixpkgs-stable" + }, + "locked": { + "lastModified": 1705229514, + "narHash": "sha256-itILy0zimR/iyUGq5Dgg0fiW8plRDyxF153LWGsg3Cw=", + "owner": "cachix", + "repo": "pre-commit-hooks.nix", + "rev": "ffa9a5b90b0acfaa03b1533b83eaf5dead819a05", + "type": "github" + }, + "original": { + "owner": "cachix", + "repo": "pre-commit-hooks.nix", + "type": "github" + } + }, "root": { "inputs": { "flake-parts": "flake-parts", "nix-filter": "nix-filter", - "nixpkgs": "nixpkgs" + "nixpkgs": "nixpkgs", + "pre-commit-hooks": "pre-commit-hooks" + } + }, + "systems": { + "locked": { + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default", + "type": "github" } } }, diff --git a/flake.nix b/flake.nix index 46b9ebb..4caf913 100644 --- a/flake.nix +++ b/flake.nix @@ -6,30 +6,43 @@ url = "github:hercules-ci/flake-parts"; inputs.nixpkgs-lib.follows = "nixpkgs"; }; - nix-filter = { - url = "github:numtide/nix-filter"; - }; + pre-commit-hooks = { url = "github:cachix/pre-commit-hooks.nix"; }; + nix-filter = { url = "github:numtide/nix-filter"; }; }; - outputs = inputs @ { flake-parts, nix-filter, ... }: - flake-parts.lib.mkFlake { inherit inputs; } - ({ lib, ... }: { - systems = [ - "aarch64-linux" - "x86_64-linux" + outputs = + inputs @ { flake-parts + , nix-filter + , pre-commit-hooks + , ... + }: + flake-parts.lib.mkFlake { inherit inputs; } ({ lib, ... }: { + systems = [ + "aarch64-linux" + "x86_64-linux" - "x86_64-darwin" - "aarch64-darwin" - ]; - perSystem = { config, pkgs, self', ... }: { + "x86_64-darwin" + "aarch64-darwin" + ]; + imports = [ pre-commit-hooks.flakeModule ]; + perSystem = + { config + , pkgs + , self' + , ... + }: { packages = { - flake_env = pkgs.ocamlPackages.callPackage ./default.nix { inherit nix-filter; }; + flake_env = pkgs.ocamlPackages.callPackage ./default.nix { + inherit nix-filter; + }; default = config.packages.flake_env; }; devShells.default = pkgs.mkShell { inputsFrom = [ self'.packages.default ]; packages = [ pkgs.just + pkgs.rnix-lsp + pkgs.pre-commit pkgs.ocamlPackages.alcotest pkgs.ocamlPackages.bisect_ppx pkgs.ocamlPackages.dune_3 @@ -39,12 +52,22 @@ pkgs.ocamlPackages.ocamlformat pkgs.ocamlPackages.ocamlformat-rpc-lib ]; + shellHook = config.pre-commit.installationScript; + }; + pre-commit = { + check.enable = true; + settings.hooks = { + nixpkgs-fmt.enable = true; + dune-fmt.enable = true; + }; }; }; - flake = { - overlays.default = final: _prev: { - flake_env = final.ocamlPackages.callPackage ./default.nix { inherit nix-filter; }; + flake = { + overlays.default = final: _prev: { + flake_env = final.ocamlPackages.callPackage ./default.nix { + inherit nix-filter; }; }; - }); + }; + }); } From 6c66f0271d908c30518d5a688a1fe5fc6584f8a6 Mon Sep 17 00:00:00 2001 From: Bryan Bennett Date: Wed, 17 Jan 2024 08:23:08 -0500 Subject: [PATCH 4/5] Ignore result symlink --- .gitignore | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index 00b777f..cd098b8 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,3 @@ _build/ -_coverage/ \ No newline at end of file +_coverage/ +result \ No newline at end of file From a8d2d777a9f30f3ad270ee2f0509043f330a54e1 Mon Sep 17 00:00:00 2001 From: Bryan Bennett Date: Wed, 17 Jan 2024 08:26:23 -0500 Subject: [PATCH 5/5] nixpkgs-fmt default.nix --- default.nix | 21 ++++----------------- 1 file changed, 4 insertions(+), 17 deletions(-) diff --git a/default.nix b/default.nix index 22c104a..21e15eb 100644 --- a/default.nix +++ b/default.nix @@ -13,6 +13,7 @@ , re , reason , sha +, }: buildDunePackage { pname = "flake_env"; @@ -41,23 +42,9 @@ buildDunePackage { postInstall = '' install -m400 -D direnvrc $out/share/flake_env/direnvrc ''; - checkInputs = [ - alcotest - bisect_ppx - ]; - nativeBuildInputs = [ - reason - ]; - propagatedBuildInputs = [ - core - core_unix - findlib - ocaml - ppx_yojson_conv - ppx_yojson_conv_lib - re - sha - ]; + checkInputs = [ alcotest bisect_ppx ]; + nativeBuildInputs = [ reason ]; + propagatedBuildInputs = [ core core_unix findlib ocaml ppx_yojson_conv ppx_yojson_conv_lib re sha ]; meta = with lib; { description = "Yet another flake plugin for direnv";