From 91a92dd1a7353c3d19b80d831a3a5569fe195241 Mon Sep 17 00:00:00 2001 From: Daniel Firth <dan.firth@homotopic.tech> Date: Mon, 13 Mar 2023 06:53:58 +0000 Subject: [PATCH] add cachix CI step --- .cachix.dhall | 40 ++++++++++++++++++++++++++++++++++++++++ .gitlab-ci.yml | 9 +++++++++ flake.nix | 5 +++++ 3 files changed, 54 insertions(+) create mode 100644 .cachix.dhall diff --git a/.cachix.dhall b/.cachix.dhall new file mode 100644 index 00000000..29ecf474 --- /dev/null +++ b/.cachix.dhall @@ -0,0 +1,40 @@ +let Prelude = + env:DHALL_PRELUDE + ? https://raw.githubusercontent.com/dhall-lang/dhall-lang/v20.1.0/Prelude/package.dhall + sha256:26b0ef498663d269e4dc6a82b0ee289ec565d683ef4c00d0ebdd25333a5a3c98 + +let H = + https://gitlab.horizon-haskell.net/dhall/horizon-spec/-/raw/0.6/dhall/package.dhall + sha256:9a80164572526dc5350f105c8db0790fdf36634629b4cf03402ba14fd173d121 + +let toStep + : Text → Text + = λ(x : Text) → + "nix build --accept-flake-config --json .#${x} | jq -r '.[].outputs | to_entries[].value' | cachix push horizon" + +let toEchoStep + : Text → Text + = λ(x : Text) → "echo \"${toStep x}\"" + +let input = + Prelude.Map.keys + Text + H.HaskellPackage.Type + ( merge + { MakePackageSet = + λ(x : H.PackageSetExportSettings) → x.packageSet.packages + , MakeOverlay = λ(x : H.OverlayExportSettings) → x.overlay.packages + } + ./horizon.dhall + ) + +let packages = Prelude.List.map Text Text toEchoStep (input : List Text) + +in "(" + ++ Prelude.List.fold + Text + packages + Text + (λ(x : Text) → λ(y : Text) → x ++ ";" ++ y) + "" + ++ ") | parallel -j 16" diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 926dac62..5cb6ab10 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -1,6 +1,7 @@ stages: - generate - check +- cache generate-flake-ci: stage: generate @@ -16,3 +17,11 @@ flake-ci: - artifact: flake-ci.yml job: generate-flake-ci strategy: depend + +cachix: + stage: cache + only: + refs: + - master + - cachix + script: nix-shell -p jq cachix parallel --command 'dhall --file .cachix.dhall | dhall text | bash' diff --git a/flake.nix b/flake.nix index c9718001..463cdc4b 100644 --- a/flake.nix +++ b/flake.nix @@ -2,6 +2,11 @@ description = "Horizon Haskell Platform"; + nixConfig = { + extra-substituters = "https://horizon.cachix.org"; + extra-trusted-public-keys = "horizon.cachix.org-1:MeEEDRhRZTgv/FFGCv3479/dmJDfJ82G6kfUDxMSAw0="; + }; + inputs = { get-flake.url = "github:ursi/get-flake"; flake-parts.url = "github:hercules-ci/flake-parts"; -- GitLab