git.delta.rocks / jrsonnet / refs/commits / 3ce98ca2a452

difftreelog

ci use nightly rust-analyzer for dev

vukxuwomYaroslav Bolyukin2026-05-03parent: #59f19ba.patch.diff
in: master

1 file changed

modifiedflake.nixdiffbeforeafterboth
before · flake.nix
1{2  description = "Jrsonnet";3  inputs = {4    nixpkgs.url = "github:nixos/nixpkgs/release-25.11";5    fenix = {6      url = "github:CertainLach/fenix/fix/libatomic";7      inputs.nixpkgs.follows = "nixpkgs";8    };9    flake-parts = {10      url = "github:hercules-ci/flake-parts";11      inputs.nixpkgs-lib.follows = "nixpkgs";12    };13    hercules-ci-effects = {14      url = "github:hercules-ci/hercules-ci-effects";15      inputs.flake-parts.follows = "flake-parts";16      inputs.nixpkgs.follows = "nixpkgs";17    };18    treefmt-nix = {19      url = "github:numtide/treefmt-nix";20      inputs.nixpkgs.follows = "nixpkgs";21    };22    crane.url = "github:CertainLach/crane/refactor/drop-remarshal";23    shelly.url = "github:CertainLach/shelly";24  };25  outputs =26    inputs:27    let28      inherit (inputs.nixpkgs.lib)29        mkIf30        mkForce31        optionals32        optionalAttrs33        ;34    in35    inputs.flake-parts.lib.mkFlake { inherit inputs; } {36      imports = [37        inputs.shelly.flakeModule38        inputs.hercules-ci-effects.flakeModule39      ];40      systems = [41        "x86_64-linux"42        "i686-linux"43        "aarch64-linux"44        "armv7l-linux"45        "aarch64-darwin"46      ];47      perSystem =48        {49          config,50          self',51          system,52          ...53        }:54        let55          pkgs = import inputs.nixpkgs {56            inherit system;57            overlays = [ inputs.fenix.overlays.default ];58            config.allowUnsupportedSystem = true;59            config.allowUnfreePredicate = pkg: pkg.name == "Xcode.app";60          };61          targetArch = pkgs.stdenv.hostPlatform.parsed.cpu.name;62          rustfmt = (pkgs.fenix.complete or pkgs.fenix.stable).rustfmt;63          toolchain = pkgs.fenix.combine [64            (pkgs.fenix.stable.withComponents [65              "cargo"66              "clippy"67              "rustc"68              "rust-src"69              "rust-analyzer"70            ])71            rustfmt72          ];73          craneLib = (inputs.crane.mkLib pkgs).overrideToolchain toolchain;74          treefmt =75            (inputs.treefmt-nix.lib.evalModule pkgs (import ./treefmt.nix { inherit rustfmt; })).config.build;7677          # Cross-compilation toolchains78          crossToolchain = pkgs.fenix.combine [79            (pkgs.fenix.stable.withComponents [80              "cargo"81              "rustc"82            ])83            pkgs.fenix.targets."${targetArch}-unknown-linux-musl".stable.rust-std84            pkgs.fenix.targets."${targetArch}-apple-darwin".stable.rust-std85          ];86          craneLibCross = (inputs.crane.mkLib pkgs).overrideToolchain crossToolchain;8788          # Windows cross-compilation89          pkgsWindows = import inputs.nixpkgs {90            overlays = [ inputs.fenix.overlays.default ];91            localSystem = system;92            crossSystem = {93              config = "${targetArch}-w64-mingw32";94              libc = "msvcrt";95            };96          };97          windowsToolchain = pkgs.fenix.combine [98            (pkgs.fenix.stable.withComponents [99              "cargo"100              "rustc"101            ])102            pkgs.fenix.targets."${targetArch}-pc-windows-gnu".stable.rust-std103          ];104          craneLibWindows = (inputs.crane.mkLib pkgsWindows).overrideToolchain (_: windowsToolchain);105106        in107        {108          legacyPackages = {109            release = optionalAttrs pkgs.stdenv.hostPlatform.isLinux (110              {111                jrsonnet-linux-glibc = self'.packages.jrsonnet;112                jrsonnet-experimental-linux-glibc = self'.packages.jrsonnet-experimental;113              }114              // optionalAttrs pkgs.stdenv.hostPlatform.is64bit rec {115                jrsonnet-linux-musl = pkgs.callPackage ./nix/jrsonnet-cross-musl.nix {116                  craneLib = craneLibCross;117                  targetTriple = "${targetArch}-unknown-linux-musl";118                  muslCC = pkgs.pkgsMusl.stdenv.cc;119                };120                jrsonnet-experimental-linux-musl = jrsonnet-linux-musl.override {121                  withExperimentalFeatures = true;122                };123              }124              // optionalAttrs (targetArch == "aarch64") rec {125                jrsonnet-darwin = pkgs.callPackage ./nix/jrsonnet-cross-darwin.nix {126                  craneLib = craneLibCross;127                  targetTriple = "${targetArch}-apple-darwin";128                };129                jrsonnet-experimental-darwin = jrsonnet-darwin.override {130                  withExperimentalFeatures = true;131                };132              }133              // optionalAttrs (targetArch == "x86_64") rec {134                jrsonnet-windows = pkgsWindows.callPackage ./nix/jrsonnet-cross-windows.nix {135                  craneLib = craneLibWindows;136                  targetTriple = "${targetArch}-pc-windows-gnu";137                };138                jrsonnet-experimental-windows = jrsonnet-windows.override {139                  withExperimentalFeatures = true;140                };141              }142            );143            benchmarks = optionalAttrs (system == "x86_64-linux" || system == "aarch64-linux") {144              default = pkgs.callPackage ./nix/benchmarks.nix {145                inherit (config.legacyPackages.jsonnetImpls)146                  go-jsonnet147                  sjsonnet148                  cpp-jsonnet149                  rsjsonnet150                  ;151                jrsonnetVariants = [152                  {153                    drv = self'.packages.jrsonnet.override { forBenchmarks = true; };154                    name = "";155                  }156                ];157              };158              quick = pkgs.callPackage ./nix/benchmarks.nix {159                inherit (config.legacyPackages.jsonnetImpls)160                  go-jsonnet161                  sjsonnet162                  cpp-jsonnet163                  rsjsonnet164                  ;165                quick = true;166                jrsonnetVariants = [167                  {168                    drv = self'.packages.jrsonnet.override { forBenchmarks = true; };169                    name = "";170                  }171                ];172              };173              against-release = pkgs.callPackage ./nix/benchmarks.nix {174                inherit (config.legacyPackages.jsonnetImpls)175                  go-jsonnet176                  sjsonnet177                  cpp-jsonnet178                  rsjsonnet179                  ;180                jrsonnetVariants = [181                  {182                    drv = self'.packages.jrsonnet.override { forBenchmarks = true; };183                    name = "current";184                  }185                  {186                    drv = self'.packages.jrsonnet-experimental.override { forBenchmarks = true; };187                    name = "current-experimental";188                  }189                  {190                    drv = self'.legacyPackages.jsonnetImpls.jrsonnet-release.override { forBenchmarks = true; };191                    name = "release";192                  }193                ];194              };195              quick-against-release = pkgs.callPackage ./nix/benchmarks.nix {196                inherit (config.legacyPackages.jsonnetImpls)197                  go-jsonnet198                  sjsonnet199                  cpp-jsonnet200                  rsjsonnet201                  ;202                quick = true;203                jrsonnetVariants = [204                  {205                    drv = self'.packages.jrsonnet.override { forBenchmarks = true; };206                    name = "current";207                  }208                  {209                    drv = self'.packages.jrsonnet-experimental.override { forBenchmarks = true; };210                    name = "current-experimental";211                  }212                  {213                    drv = self'.legacyPackages.jsonnetImpls.jrsonnet-release.override { forBenchmarks = true; };214                    name = "release";215                  }216                ];217              };218            };219            jsonnetImpls = {220              go-jsonnet = pkgs.callPackage ./nix/go-jsonnet.nix { };221              sjsonnet = pkgs.callPackage ./nix/sjsonnet.nix { };222              cpp-jsonnet = pkgs.callPackage ./nix/cpp-jsonnet.nix { };223              # I didn't managed to build it, and nixpkgs version is marked as broken224              # haskell-jsonnet = pkgs.callPackage ./nix/haskell-jsonnet.nix { };225              rsjsonnet = pkgs.callPackage ./nix/rsjsonnet.nix { };226              # Older released version of jrsonnet itself, for benchmarking purposes227              jrsonnet-release = pkgs.callPackage ./nix/jrsonnet-release.nix {228                rustPlatform = pkgs.makeRustPlatform {229                  rustc = toolchain;230                  cargo = toolchain;231                };232              };233            };234          };235          packages =236            let237              jrsonnet = pkgs.callPackage ./nix/jrsonnet.nix {238                inherit craneLib;239              };240              jrsonnet-experimental = pkgs.callPackage ./nix/jrsonnet.nix {241                inherit craneLib;242                withExperimentalFeatures = true;243              };244            in245            {246              default = jrsonnet;247              inherit jrsonnet jrsonnet-experimental;248            };249          checks = optionalAttrs (system != "armv7l-linux") {250            formatting = treefmt.check inputs.self;251          };252          formatter = mkIf (system != "armv7l-linux") treefmt.wrapper;253          shelly.shells.default = {254            factory = craneLib.devShell;255            packages =256              with pkgs;257              [258                cargo-edit259                cargo-outdated260                cargo-watch261                cargo-insta262                cargo-hack263                cargo-show-asm264                lld265                hyperfine266                graphviz267              ]268              ++ optionals (!stdenv.isDarwin) [269                valgrind270                kdePackages.kcachegrind271                samply272              ];273          };274        };275      hercules-ci.github-releases.files =276        let277          rel = system: inputs.self.legacyPackages.${system}.release;278          bin = drv: "${drv}/bin/jrsonnet";279          exe = drv: "${drv}/bin/jrsonnet.exe";280        in281        [282          {283            label = "jrsonnet-x86_64-linux-musl";284            path = bin (rel "x86_64-linux").jrsonnet-linux-musl;285          }286          {287            label = "jrsonnet-experimental-x86_64-linux-musl";288            path = bin (rel "x86_64-linux").jrsonnet-experimental-linux-musl;289          }290          {291            label = "jrsonnet-aarch64-darwin";292            path = bin (rel "aarch64-linux").jrsonnet-darwin;293          }294          {295            label = "jrsonnet-experimental-aarch64-darwin";296            path = bin (rel "aarch64-linux").jrsonnet-experimental-darwin;297          }298          {299            label = "jrsonnet-x86_64-windows.exe";300            path = exe (rel "x86_64-linux").jrsonnet-windows;301          }302          {303            label = "jrsonnet-experimental-x86_64-windows.exe";304            path = exe (rel "x86_64-linux").jrsonnet-experimental-windows;305          }306307          {308            label = "jrsonnet-aarch64-linux-musl";309            path = bin (rel "aarch64-linux").jrsonnet-linux-musl;310          }311          {312            label = "jrsonnet-experimental-aarch64-linux-musl";313            path = bin (rel "aarch64-linux").jrsonnet-experimental-linux-musl;314          }315316          {317            label = "jrsonnet-x86_64-linux-glibc";318            path = bin (rel "x86_64-linux").jrsonnet-linux-glibc;319          }320          {321            label = "jrsonnet-experimental-x86_64-linux-glibc";322            path = bin (rel "x86_64-linux").jrsonnet-experimental-linux-glibc;323          }324          {325            label = "jrsonnet-aarch64-linux-glibc";326            path = bin (rel "aarch64-linux").jrsonnet-linux-glibc;327          }328          {329            label = "jrsonnet-experimental-aarch64-linux-glibc";330            path = bin (rel "aarch64-linux").jrsonnet-experimental-linux-glibc;331          }332          {333            label = "jrsonnet-i686-linux-glibc";334            path = bin (rel "i686-linux").jrsonnet-linux-glibc;335          }336          {337            label = "jrsonnet-experimental-i686-linux-glibc";338            path = bin (rel "i686-linux").jrsonnet-experimental-linux-glibc;339          }340          {341            label = "jrsonnet-armv7l-linux-glibc";342            path = bin (rel "armv7l-linux").jrsonnet-linux-glibc;343          }344          {345            label = "jrsonnet-experimental-armv7l-linux-glibc";346            path = bin (rel "armv7l-linux").jrsonnet-experimental-linux-glibc;347          }348        ];349      hercules-ci.cargo-publish = {350        enable = true;351        secretName = "crates-io";352        extraPublishArgs = [ "--workspace" ];353      };354      hercules-ci.flake-update = {355        enable = true;356        baseMerge.enable = true;357        baseMerge.method = "fast-forward";358        when = {359          dayOfWeek = [ "Sat" ];360        };361      };362      herculesCI =363        { lib, config, ... }:364        {365          ciSystems = [366            "x86_64-linux"367            "i686-linux"368            "aarch64-linux"369            "armv7l-linux"370            # TODO: add workers for these platforms371            # "aarch64-darwin"372          ];373          onPush.default.outputs = {374            benchmarks.x86_64-linux = inputs.self.legacyPackages.x86_64-linux.benchmarks.default;375376            # Cross: musl/mingw/darwin-zigbuild377            release.x86_64-linux = inputs.self.legacyPackages.x86_64-linux.release;378            release.aarch64-linux = inputs.self.legacyPackages.aarch64-linux.release;379            release.armv7l-linux = inputs.self.legacyPackages.armv7l-linux.release;380            release.i686-linux = inputs.self.legacyPackages.i686-linux.release;381382            # Too much to build for CI purposes383            devShells = mkForce { };384            formatter = mkForce { };385386            # No need to run them on different arch, pretty large derivations and might try to compile GHC387            checks.i686-linux.formatting = mkForce { };388            checks.aarch64-linux.formatting = mkForce { };389          };390        };391    };392}
after · flake.nix
1{2  description = "Jrsonnet";3  inputs = {4    nixpkgs.url = "github:nixos/nixpkgs/release-25.11";5    fenix = {6      url = "github:CertainLach/fenix/fix/libatomic";7      inputs.nixpkgs.follows = "nixpkgs";8    };9    flake-parts = {10      url = "github:hercules-ci/flake-parts";11      inputs.nixpkgs-lib.follows = "nixpkgs";12    };13    hercules-ci-effects = {14      url = "github:hercules-ci/hercules-ci-effects";15      inputs.flake-parts.follows = "flake-parts";16      inputs.nixpkgs.follows = "nixpkgs";17    };18    treefmt-nix = {19      url = "github:numtide/treefmt-nix";20      inputs.nixpkgs.follows = "nixpkgs";21    };22    crane.url = "github:CertainLach/crane/refactor/drop-remarshal";23    shelly.url = "github:CertainLach/shelly";24  };25  outputs =26    inputs:27    let28      inherit (inputs.nixpkgs.lib)29        mkIf30        mkForce31        optionals32        optionalAttrs33        ;34    in35    inputs.flake-parts.lib.mkFlake { inherit inputs; } {36      imports = [37        inputs.shelly.flakeModule38        inputs.hercules-ci-effects.flakeModule39      ];40      systems = [41        "x86_64-linux"42        "i686-linux"43        "aarch64-linux"44        "armv7l-linux"45        "aarch64-darwin"46      ];47      perSystem =48        {49          config,50          self',51          system,52          ...53        }:54        let55          pkgs = import inputs.nixpkgs {56            inherit system;57            overlays = [ inputs.fenix.overlays.default ];58            config.allowUnsupportedSystem = true;59            config.allowUnfreePredicate = pkg: pkg.name == "Xcode.app";60          };61          targetArch = pkgs.stdenv.hostPlatform.parsed.cpu.name;62          rustfmt = (pkgs.fenix.complete or pkgs.fenix.stable).rustfmt;63          rust-analyzer = (pkgs.fenix.complete or pkgs.fenix.stable).rust-analyzer;64          toolchain = pkgs.fenix.combine [65            (pkgs.fenix.stable.withComponents [66              "cargo"67              "clippy"68              "rustc"69              "rust-src"70            ])71            rustfmt72            rust-analyzer73          ];74          craneLib = (inputs.crane.mkLib pkgs).overrideToolchain toolchain;75          treefmt =76            (inputs.treefmt-nix.lib.evalModule pkgs (import ./treefmt.nix { inherit rustfmt; })).config.build;7778          # Cross-compilation toolchains79          crossToolchain = pkgs.fenix.combine [80            (pkgs.fenix.stable.withComponents [81              "cargo"82              "rustc"83            ])84            pkgs.fenix.targets."${targetArch}-unknown-linux-musl".stable.rust-std85            pkgs.fenix.targets."${targetArch}-apple-darwin".stable.rust-std86          ];87          craneLibCross = (inputs.crane.mkLib pkgs).overrideToolchain crossToolchain;8889          # Windows cross-compilation90          pkgsWindows = import inputs.nixpkgs {91            overlays = [ inputs.fenix.overlays.default ];92            localSystem = system;93            crossSystem = {94              config = "${targetArch}-w64-mingw32";95              libc = "msvcrt";96            };97          };98          windowsToolchain = pkgs.fenix.combine [99            (pkgs.fenix.stable.withComponents [100              "cargo"101              "rustc"102            ])103            pkgs.fenix.targets."${targetArch}-pc-windows-gnu".stable.rust-std104          ];105          craneLibWindows = (inputs.crane.mkLib pkgsWindows).overrideToolchain (_: windowsToolchain);106107        in108        {109          legacyPackages = {110            release = optionalAttrs pkgs.stdenv.hostPlatform.isLinux (111              {112                jrsonnet-linux-glibc = self'.packages.jrsonnet;113                jrsonnet-experimental-linux-glibc = self'.packages.jrsonnet-experimental;114              }115              // optionalAttrs pkgs.stdenv.hostPlatform.is64bit rec {116                jrsonnet-linux-musl = pkgs.callPackage ./nix/jrsonnet-cross-musl.nix {117                  craneLib = craneLibCross;118                  targetTriple = "${targetArch}-unknown-linux-musl";119                  muslCC = pkgs.pkgsMusl.stdenv.cc;120                };121                jrsonnet-experimental-linux-musl = jrsonnet-linux-musl.override {122                  withExperimentalFeatures = true;123                };124              }125              // optionalAttrs (targetArch == "aarch64") rec {126                jrsonnet-darwin = pkgs.callPackage ./nix/jrsonnet-cross-darwin.nix {127                  craneLib = craneLibCross;128                  targetTriple = "${targetArch}-apple-darwin";129                };130                jrsonnet-experimental-darwin = jrsonnet-darwin.override {131                  withExperimentalFeatures = true;132                };133              }134              // optionalAttrs (targetArch == "x86_64") rec {135                jrsonnet-windows = pkgsWindows.callPackage ./nix/jrsonnet-cross-windows.nix {136                  craneLib = craneLibWindows;137                  targetTriple = "${targetArch}-pc-windows-gnu";138                };139                jrsonnet-experimental-windows = jrsonnet-windows.override {140                  withExperimentalFeatures = true;141                };142              }143            );144            benchmarks = optionalAttrs (system == "x86_64-linux" || system == "aarch64-linux") {145              default = pkgs.callPackage ./nix/benchmarks.nix {146                inherit (config.legacyPackages.jsonnetImpls)147                  go-jsonnet148                  sjsonnet149                  cpp-jsonnet150                  rsjsonnet151                  ;152                jrsonnetVariants = [153                  {154                    drv = self'.packages.jrsonnet.override { forBenchmarks = true; };155                    name = "";156                  }157                ];158              };159              quick = pkgs.callPackage ./nix/benchmarks.nix {160                inherit (config.legacyPackages.jsonnetImpls)161                  go-jsonnet162                  sjsonnet163                  cpp-jsonnet164                  rsjsonnet165                  ;166                quick = true;167                jrsonnetVariants = [168                  {169                    drv = self'.packages.jrsonnet.override { forBenchmarks = true; };170                    name = "";171                  }172                ];173              };174              against-release = pkgs.callPackage ./nix/benchmarks.nix {175                inherit (config.legacyPackages.jsonnetImpls)176                  go-jsonnet177                  sjsonnet178                  cpp-jsonnet179                  rsjsonnet180                  ;181                jrsonnetVariants = [182                  {183                    drv = self'.packages.jrsonnet.override { forBenchmarks = true; };184                    name = "current";185                  }186                  {187                    drv = self'.packages.jrsonnet-experimental.override { forBenchmarks = true; };188                    name = "current-experimental";189                  }190                  {191                    drv = self'.legacyPackages.jsonnetImpls.jrsonnet-release.override { forBenchmarks = true; };192                    name = "release";193                  }194                ];195              };196              quick-against-release = pkgs.callPackage ./nix/benchmarks.nix {197                inherit (config.legacyPackages.jsonnetImpls)198                  go-jsonnet199                  sjsonnet200                  cpp-jsonnet201                  rsjsonnet202                  ;203                quick = true;204                jrsonnetVariants = [205                  {206                    drv = self'.packages.jrsonnet.override { forBenchmarks = true; };207                    name = "current";208                  }209                  {210                    drv = self'.packages.jrsonnet-experimental.override { forBenchmarks = true; };211                    name = "current-experimental";212                  }213                  {214                    drv = self'.legacyPackages.jsonnetImpls.jrsonnet-release.override { forBenchmarks = true; };215                    name = "release";216                  }217                ];218              };219            };220            jsonnetImpls = {221              go-jsonnet = pkgs.callPackage ./nix/go-jsonnet.nix { };222              sjsonnet = pkgs.callPackage ./nix/sjsonnet.nix { };223              cpp-jsonnet = pkgs.callPackage ./nix/cpp-jsonnet.nix { };224              # I didn't managed to build it, and nixpkgs version is marked as broken225              # haskell-jsonnet = pkgs.callPackage ./nix/haskell-jsonnet.nix { };226              rsjsonnet = pkgs.callPackage ./nix/rsjsonnet.nix { };227              # Older released version of jrsonnet itself, for benchmarking purposes228              jrsonnet-release = pkgs.callPackage ./nix/jrsonnet-release.nix {229                rustPlatform = pkgs.makeRustPlatform {230                  rustc = toolchain;231                  cargo = toolchain;232                };233              };234            };235          };236          packages =237            let238              jrsonnet = pkgs.callPackage ./nix/jrsonnet.nix {239                inherit craneLib;240              };241              jrsonnet-experimental = pkgs.callPackage ./nix/jrsonnet.nix {242                inherit craneLib;243                withExperimentalFeatures = true;244              };245            in246            {247              default = jrsonnet;248              inherit jrsonnet jrsonnet-experimental;249            };250          checks = optionalAttrs (system != "armv7l-linux") {251            formatting = treefmt.check inputs.self;252          };253          formatter = mkIf (system != "armv7l-linux") treefmt.wrapper;254          shelly.shells.default = {255            factory = craneLib.devShell;256            packages =257              with pkgs;258              [259                cargo-edit260                cargo-outdated261                cargo-watch262                cargo-insta263                cargo-hack264                cargo-show-asm265                lld266                hyperfine267                graphviz268              ]269              ++ optionals (!stdenv.isDarwin) [270                valgrind271                kdePackages.kcachegrind272                samply273              ];274          };275        };276      hercules-ci.github-releases.files =277        let278          rel = system: inputs.self.legacyPackages.${system}.release;279          bin = drv: "${drv}/bin/jrsonnet";280          exe = drv: "${drv}/bin/jrsonnet.exe";281        in282        [283          {284            label = "jrsonnet-x86_64-linux-musl";285            path = bin (rel "x86_64-linux").jrsonnet-linux-musl;286          }287          {288            label = "jrsonnet-experimental-x86_64-linux-musl";289            path = bin (rel "x86_64-linux").jrsonnet-experimental-linux-musl;290          }291          {292            label = "jrsonnet-aarch64-darwin";293            path = bin (rel "aarch64-linux").jrsonnet-darwin;294          }295          {296            label = "jrsonnet-experimental-aarch64-darwin";297            path = bin (rel "aarch64-linux").jrsonnet-experimental-darwin;298          }299          {300            label = "jrsonnet-x86_64-windows.exe";301            path = exe (rel "x86_64-linux").jrsonnet-windows;302          }303          {304            label = "jrsonnet-experimental-x86_64-windows.exe";305            path = exe (rel "x86_64-linux").jrsonnet-experimental-windows;306          }307308          {309            label = "jrsonnet-aarch64-linux-musl";310            path = bin (rel "aarch64-linux").jrsonnet-linux-musl;311          }312          {313            label = "jrsonnet-experimental-aarch64-linux-musl";314            path = bin (rel "aarch64-linux").jrsonnet-experimental-linux-musl;315          }316317          {318            label = "jrsonnet-x86_64-linux-glibc";319            path = bin (rel "x86_64-linux").jrsonnet-linux-glibc;320          }321          {322            label = "jrsonnet-experimental-x86_64-linux-glibc";323            path = bin (rel "x86_64-linux").jrsonnet-experimental-linux-glibc;324          }325          {326            label = "jrsonnet-aarch64-linux-glibc";327            path = bin (rel "aarch64-linux").jrsonnet-linux-glibc;328          }329          {330            label = "jrsonnet-experimental-aarch64-linux-glibc";331            path = bin (rel "aarch64-linux").jrsonnet-experimental-linux-glibc;332          }333          {334            label = "jrsonnet-i686-linux-glibc";335            path = bin (rel "i686-linux").jrsonnet-linux-glibc;336          }337          {338            label = "jrsonnet-experimental-i686-linux-glibc";339            path = bin (rel "i686-linux").jrsonnet-experimental-linux-glibc;340          }341          {342            label = "jrsonnet-armv7l-linux-glibc";343            path = bin (rel "armv7l-linux").jrsonnet-linux-glibc;344          }345          {346            label = "jrsonnet-experimental-armv7l-linux-glibc";347            path = bin (rel "armv7l-linux").jrsonnet-experimental-linux-glibc;348          }349        ];350      hercules-ci.cargo-publish = {351        enable = true;352        secretName = "crates-io";353        extraPublishArgs = [ "--workspace" ];354      };355      hercules-ci.flake-update = {356        enable = true;357        baseMerge.enable = true;358        baseMerge.method = "fast-forward";359        when = {360          dayOfWeek = [ "Sat" ];361        };362      };363      herculesCI =364        { lib, config, ... }:365        {366          ciSystems = [367            "x86_64-linux"368            "i686-linux"369            "aarch64-linux"370            "armv7l-linux"371            # TODO: add workers for these platforms372            # "aarch64-darwin"373          ];374          onPush.default.outputs = {375            benchmarks.x86_64-linux = inputs.self.legacyPackages.x86_64-linux.benchmarks.default;376377            # Cross: musl/mingw/darwin-zigbuild378            release.x86_64-linux = inputs.self.legacyPackages.x86_64-linux.release;379            release.aarch64-linux = inputs.self.legacyPackages.aarch64-linux.release;380            release.armv7l-linux = inputs.self.legacyPackages.armv7l-linux.release;381            release.i686-linux = inputs.self.legacyPackages.i686-linux.release;382383            # Too much to build for CI purposes384            devShells = mkForce { };385            formatter = mkForce { };386387            # No need to run them on different arch, pretty large derivations and might try to compile GHC388            checks.i686-linux.formatting = mkForce { };389            checks.aarch64-linux.formatting = mkForce { };390          };391        };392    };393}