git.delta.rocks / jrsonnet / refs/commits / f78972ccc432

difftreelog

ci fallback to stable fenix if not available

mmykuvttYaroslav Bolyukin2026-05-06parent: #5f11fd7.patch.diff
in: master
It is only used for better clippy and rustfmt anyway

3 files 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:ipetkov/crane";23    shelly.url = "github:CertainLach/shelly";2425    cpp-jsonnet-for-tests = {26      url = "github:google/jsonnet";27      flake = false;28    };29    go-jsonnet-for-tests = {30      url = "github:google/go-jsonnet";31      flake = false;32    };33  };34  outputs =35    inputs:36    let37      inherit (inputs.nixpkgs.lib)38        mkIf39        mkForce40        optionals41        optionalAttrs42        ;43    in44    inputs.flake-parts.lib.mkFlake { inherit inputs; } {45      imports = [46        inputs.shelly.flakeModule47        inputs.hercules-ci-effects.flakeModule48      ];49      systems = [50        "x86_64-linux"51        "i686-linux"52        "aarch64-linux"53        "armv7l-linux"54        "aarch64-darwin"55      ];56      perSystem =57        {58          config,59          self',60          system,61          ...62        }:63        let64          pkgs = import inputs.nixpkgs {65            inherit system;66            overlays = [ inputs.fenix.overlays.default ];67            config.allowUnsupportedSystem = true;68            config.allowUnfreePredicate = pkg: pkg.name == "Xcode.app";69          };70          targetArch = pkgs.stdenv.hostPlatform.parsed.cpu.name;71          rustfmt = (pkgs.fenix.complete or pkgs.fenix.stable).rustfmt;72          toolchain = pkgs.fenix.combine [73            (pkgs.fenix.complete.withComponents [74              "cargo"75              "clippy"76              "rustc"77              "rust-src"78              "rustfmt"79              "rust-analyzer"80            ])81            pkgs.fenix.targets.wasm32-unknown-unknown.latest.rust-std82          ];83          craneLib = (inputs.crane.mkLib pkgs).overrideToolchain toolchain;84          treefmt =85            (inputs.treefmt-nix.lib.evalModule pkgs (import ./treefmt.nix { inherit rustfmt; })).config.build;8687          # Cross-compilation toolchains88          crossToolchain = pkgs.fenix.combine [89            (pkgs.fenix.stable.withComponents [90              "cargo"91              "rustc"92            ])93            pkgs.fenix.targets."${targetArch}-unknown-linux-musl".stable.rust-std94            pkgs.fenix.targets."${targetArch}-apple-darwin".stable.rust-std95          ];96          craneLibCross = (inputs.crane.mkLib pkgs).overrideToolchain crossToolchain;9798          # Windows cross-compilation99          pkgsWindows = import inputs.nixpkgs {100            overlays = [ inputs.fenix.overlays.default ];101            localSystem = system;102            crossSystem = {103              config = "${targetArch}-w64-mingw32";104              libc = "msvcrt";105            };106          };107          windowsToolchain = pkgs.fenix.combine [108            (pkgs.fenix.stable.withComponents [109              "cargo"110              "rustc"111            ])112            pkgs.fenix.targets."${targetArch}-pc-windows-gnu".stable.rust-std113          ];114          craneLibWindows = (inputs.crane.mkLib pkgsWindows).overrideToolchain (_: windowsToolchain);115116        in117        {118          legacyPackages = {119            release = optionalAttrs pkgs.stdenv.hostPlatform.isLinux (120              {121                jrsonnet-linux-glibc = self'.packages.jrsonnet;122                jrsonnet-experimental-linux-glibc = self'.packages.jrsonnet-experimental;123              }124              // optionalAttrs pkgs.stdenv.hostPlatform.is64bit rec {125                jrsonnet-linux-musl = pkgs.callPackage ./nix/jrsonnet-cross-musl.nix {126                  craneLib = craneLibCross;127                  targetTriple = "${targetArch}-unknown-linux-musl";128                  muslCC = pkgs.pkgsMusl.stdenv.cc;129                };130                jrsonnet-experimental-linux-musl = jrsonnet-linux-musl.override {131                  withExperimentalFeatures = true;132                };133              }134              // optionalAttrs (targetArch == "aarch64") rec {135                jrsonnet-darwin = pkgs.callPackage ./nix/jrsonnet-cross-darwin.nix {136                  craneLib = craneLibCross;137                  targetTriple = "${targetArch}-apple-darwin";138                };139                jrsonnet-experimental-darwin = jrsonnet-darwin.override {140                  withExperimentalFeatures = true;141                };142              }143              // optionalAttrs (targetArch == "x86_64") rec {144                jrsonnet-windows = pkgsWindows.callPackage ./nix/jrsonnet-cross-windows.nix {145                  craneLib = craneLibWindows;146                  targetTriple = "${targetArch}-pc-windows-gnu";147                };148                jrsonnet-experimental-windows = jrsonnet-windows.override {149                  withExperimentalFeatures = true;150                };151              }152            );153            benchmarks = optionalAttrs (system == "x86_64-linux" || system == "aarch64-linux") {154              default = pkgs.callPackage ./nix/benchmarks.nix {155                inherit (config.legacyPackages.jsonnetImpls)156                  go-jsonnet157                  sjsonnet158                  cpp-jsonnet159                  rsjsonnet160                  ;161                jrsonnetVariants = [162                  {163                    drv = self'.packages.jrsonnet.override { forBenchmarks = true; };164                    name = "";165                  }166                ];167              };168              quick = pkgs.callPackage ./nix/benchmarks.nix {169                inherit (config.legacyPackages.jsonnetImpls)170                  go-jsonnet171                  sjsonnet172                  cpp-jsonnet173                  rsjsonnet174                  ;175                quick = true;176                jrsonnetVariants = [177                  {178                    drv = self'.packages.jrsonnet.override { forBenchmarks = true; };179                    name = "";180                  }181                ];182              };183              against-release = pkgs.callPackage ./nix/benchmarks.nix {184                inherit (config.legacyPackages.jsonnetImpls)185                  go-jsonnet186                  sjsonnet187                  cpp-jsonnet188                  rsjsonnet189                  ;190                jrsonnetVariants = [191                  {192                    drv = self'.packages.jrsonnet.override { forBenchmarks = true; };193                    name = "current";194                  }195                  {196                    drv = self'.packages.jrsonnet-experimental.override { forBenchmarks = true; };197                    name = "current-experimental";198                  }199                  {200                    drv = self'.legacyPackages.jsonnetImpls.jrsonnet-release.override { forBenchmarks = true; };201                    name = "release";202                  }203                ];204              };205              quick-against-release = pkgs.callPackage ./nix/benchmarks.nix {206                inherit (config.legacyPackages.jsonnetImpls)207                  go-jsonnet208                  sjsonnet209                  cpp-jsonnet210                  rsjsonnet211                  ;212                quick = true;213                jrsonnetVariants = [214                  {215                    drv = self'.packages.jrsonnet.override { forBenchmarks = true; };216                    name = "current";217                  }218                  {219                    drv = self'.packages.jrsonnet-experimental.override { forBenchmarks = true; };220                    name = "current-experimental";221                  }222                  {223                    drv = self'.legacyPackages.jsonnetImpls.jrsonnet-release.override { forBenchmarks = true; };224                    name = "release";225                  }226                ];227              };228            };229            jsonnetImpls = {230              go-jsonnet = pkgs.callPackage ./nix/go-jsonnet.nix { };231              sjsonnet = pkgs.callPackage ./nix/sjsonnet.nix { };232              cpp-jsonnet = pkgs.callPackage ./nix/cpp-jsonnet.nix { };233              # I didn't managed to build it, and nixpkgs version is marked as broken234              # haskell-jsonnet = pkgs.callPackage ./nix/haskell-jsonnet.nix { };235              rsjsonnet = pkgs.callPackage ./nix/rsjsonnet.nix { };236              # Older released version of jrsonnet itself, for benchmarking purposes237              jrsonnet-release = pkgs.callPackage ./nix/jrsonnet-release.nix {238                rustPlatform = pkgs.makeRustPlatform {239                  rustc = toolchain;240                  cargo = toolchain;241                };242              };243            };244          };245          packages =246            let247              jrsonnet = pkgs.callPackage ./nix/jrsonnet.nix {248                inherit craneLib;249                inherit (inputs) cpp-jsonnet-for-tests go-jsonnet-for-tests;250              };251              jrsonnet-experimental = pkgs.callPackage ./nix/jrsonnet.nix {252                inherit craneLib;253                inherit (inputs) cpp-jsonnet-for-tests go-jsonnet-for-tests;254                withExperimentalFeatures = true;255              };256            in257            {258              default = jrsonnet;259              inherit jrsonnet jrsonnet-experimental;260            };261          checks = optionalAttrs (system != "armv7l-linux") {262            formatting = treefmt.check inputs.self;263          };264          formatter = mkIf (system != "armv7l-linux") treefmt.wrapper;265          shelly.shells.default = {266            factory = craneLib.devShell;267            packages =268              with pkgs;269              [270                cargo-edit271                cargo-outdated272                cargo-watch273                cargo-insta274                cargo-hack275                cargo-show-asm276                lld277                hyperfine278                graphviz279              ]280              ++ optionals (!stdenv.isDarwin) [281                valgrind282                kdePackages.kcachegrind283                samply284              ];285            environment = {286              CPP_JSONNET_FOR_TESTS = inputs.cpp-jsonnet-for-tests;287              GO_JSONNET_FOR_TESTS = inputs.go-jsonnet-for-tests;288            };289          };290          shelly.shells.impls = {291            packages =292              (with self'.legacyPackages.jsonnetImpls; [293                cpp-jsonnet294                go-jsonnet295                rsjsonnet296                sjsonnet297              ])298              ++ (with self'.packages; [299                jrsonnet300              ]);301          };302        };303      hercules-ci.github-releases.files =304        let305          rel = system: inputs.self.legacyPackages.${system}.release;306          bin = drv: "${drv}/bin/jrsonnet";307          exe = drv: "${drv}/bin/jrsonnet.exe";308        in309        [310          {311            label = "jrsonnet-x86_64-linux-musl";312            path = bin (rel "x86_64-linux").jrsonnet-linux-musl;313          }314          {315            label = "jrsonnet-experimental-x86_64-linux-musl";316            path = bin (rel "x86_64-linux").jrsonnet-experimental-linux-musl;317          }318          {319            label = "jrsonnet-aarch64-darwin";320            path = bin (rel "aarch64-linux").jrsonnet-darwin;321          }322          {323            label = "jrsonnet-experimental-aarch64-darwin";324            path = bin (rel "aarch64-linux").jrsonnet-experimental-darwin;325          }326          {327            label = "jrsonnet-x86_64-windows.exe";328            path = exe (rel "x86_64-linux").jrsonnet-windows;329          }330          {331            label = "jrsonnet-experimental-x86_64-windows.exe";332            path = exe (rel "x86_64-linux").jrsonnet-experimental-windows;333          }334335          {336            label = "jrsonnet-aarch64-linux-musl";337            path = bin (rel "aarch64-linux").jrsonnet-linux-musl;338          }339          {340            label = "jrsonnet-experimental-aarch64-linux-musl";341            path = bin (rel "aarch64-linux").jrsonnet-experimental-linux-musl;342          }343344          {345            label = "jrsonnet-x86_64-linux-glibc";346            path = bin (rel "x86_64-linux").jrsonnet-linux-glibc;347          }348          {349            label = "jrsonnet-experimental-x86_64-linux-glibc";350            path = bin (rel "x86_64-linux").jrsonnet-experimental-linux-glibc;351          }352          {353            label = "jrsonnet-aarch64-linux-glibc";354            path = bin (rel "aarch64-linux").jrsonnet-linux-glibc;355          }356          {357            label = "jrsonnet-experimental-aarch64-linux-glibc";358            path = bin (rel "aarch64-linux").jrsonnet-experimental-linux-glibc;359          }360          {361            label = "jrsonnet-i686-linux-glibc";362            path = bin (rel "i686-linux").jrsonnet-linux-glibc;363          }364          {365            label = "jrsonnet-experimental-i686-linux-glibc";366            path = bin (rel "i686-linux").jrsonnet-experimental-linux-glibc;367          }368          {369            label = "jrsonnet-armv7l-linux-glibc";370            path = bin (rel "armv7l-linux").jrsonnet-linux-glibc;371          }372          {373            label = "jrsonnet-experimental-armv7l-linux-glibc";374            path = bin (rel "armv7l-linux").jrsonnet-experimental-linux-glibc;375          }376        ];377      hercules-ci.cargo-publish = {378        enable = true;379        secretName = "crates-io";380        extraPublishArgs = [ "--workspace" ];381        assertVersions = true;382      };383      hercules-ci.flake-update = {384        enable = true;385        baseMerge.enable = true;386        baseMerge.method = "fast-forward";387        when = {388          dayOfWeek = [ "Sat" ];389        };390      };391      herculesCI =392        { lib, config, ... }:393        {394          ciSystems = [395            "x86_64-linux"396            "i686-linux"397            "aarch64-linux"398            "armv7l-linux"399            # TODO: add workers for these platforms400            # "aarch64-darwin"401          ];402          onPush.default.outputs = {403            benchmarks.x86_64-linux = inputs.self.legacyPackages.x86_64-linux.benchmarks.default;404405            # Cross: musl/mingw/darwin-zigbuild406            release.x86_64-linux = inputs.self.legacyPackages.x86_64-linux.release;407            release.aarch64-linux = inputs.self.legacyPackages.aarch64-linux.release;408            release.armv7l-linux = inputs.self.legacyPackages.armv7l-linux.release;409            release.i686-linux = inputs.self.legacyPackages.i686-linux.release;410411            # Too much to build for CI purposes412            devShells = mkForce { };413            formatter = mkForce { };414415            # No need to run them on different arch, pretty large derivations and might try to compile GHC416            checks.i686-linux.formatting = mkForce { };417            checks.aarch64-linux.formatting = mkForce { };418          };419        };420    };421}
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:ipetkov/crane";23    shelly.url = "github:CertainLach/shelly";2425    cpp-jsonnet-for-tests = {26      url = "github:google/jsonnet";27      flake = false;28    };29    go-jsonnet-for-tests = {30      url = "github:google/go-jsonnet";31      flake = false;32    };33  };34  outputs =35    inputs:36    let37      inherit (inputs.nixpkgs.lib)38        mkIf39        mkForce40        optionals41        optionalAttrs42        ;43    in44    inputs.flake-parts.lib.mkFlake { inherit inputs; } {45      imports = [46        inputs.shelly.flakeModule47        inputs.hercules-ci-effects.flakeModule48      ];49      systems = [50        "x86_64-linux"51        "i686-linux"52        "aarch64-linux"53        "armv7l-linux"54        "aarch64-darwin"55      ];56      perSystem =57        {58          config,59          self',60          system,61          ...62        }:63        let64          pkgs = import inputs.nixpkgs {65            inherit system;66            overlays = [ inputs.fenix.overlays.default ];67            config.allowUnsupportedSystem = true;68            config.allowUnfreePredicate = pkg: pkg.name == "Xcode.app";69          };70          targetArch = pkgs.stdenv.hostPlatform.parsed.cpu.name;71          rustfmt = (pkgs.fenix.complete or pkgs.fenix.stable).rustfmt;72          toolchain = pkgs.fenix.combine [73            ((pkgs.fenix.complete or pkgs.fenix.stable).withComponents [74              "cargo"75              "clippy"76              "rustc"77              "rust-src"78              "rustfmt"79              "rust-analyzer"80            ])81            pkgs.fenix.targets.wasm32-unknown-unknown.latest.rust-std82          ];83          craneLib = (inputs.crane.mkLib pkgs).overrideToolchain toolchain;84          treefmt =85            (inputs.treefmt-nix.lib.evalModule pkgs (import ./treefmt.nix { inherit rustfmt; })).config.build;8687          # Cross-compilation toolchains88          crossToolchain = pkgs.fenix.combine [89            (pkgs.fenix.stable.withComponents [90              "cargo"91              "rustc"92            ])93            pkgs.fenix.targets."${targetArch}-unknown-linux-musl".stable.rust-std94            pkgs.fenix.targets."${targetArch}-apple-darwin".stable.rust-std95          ];96          craneLibCross = (inputs.crane.mkLib pkgs).overrideToolchain crossToolchain;9798          # Windows cross-compilation99          pkgsWindows = import inputs.nixpkgs {100            overlays = [ inputs.fenix.overlays.default ];101            localSystem = system;102            crossSystem = {103              config = "${targetArch}-w64-mingw32";104              libc = "msvcrt";105            };106          };107          windowsToolchain = pkgs.fenix.combine [108            (pkgs.fenix.stable.withComponents [109              "cargo"110              "rustc"111            ])112            pkgs.fenix.targets."${targetArch}-pc-windows-gnu".stable.rust-std113          ];114          craneLibWindows = (inputs.crane.mkLib pkgsWindows).overrideToolchain (_: windowsToolchain);115116        in117        {118          legacyPackages = {119            release = optionalAttrs pkgs.stdenv.hostPlatform.isLinux (120              {121                jrsonnet-linux-glibc = self'.packages.jrsonnet;122                jrsonnet-experimental-linux-glibc = self'.packages.jrsonnet-experimental;123              }124              // optionalAttrs pkgs.stdenv.hostPlatform.is64bit rec {125                jrsonnet-linux-musl = pkgs.callPackage ./nix/jrsonnet-cross-musl.nix {126                  craneLib = craneLibCross;127                  targetTriple = "${targetArch}-unknown-linux-musl";128                  muslCC = pkgs.pkgsMusl.stdenv.cc;129                };130                jrsonnet-experimental-linux-musl = jrsonnet-linux-musl.override {131                  withExperimentalFeatures = true;132                };133              }134              // optionalAttrs (targetArch == "aarch64") rec {135                jrsonnet-darwin = pkgs.callPackage ./nix/jrsonnet-cross-darwin.nix {136                  craneLib = craneLibCross;137                  targetTriple = "${targetArch}-apple-darwin";138                };139                jrsonnet-experimental-darwin = jrsonnet-darwin.override {140                  withExperimentalFeatures = true;141                };142              }143              // optionalAttrs (targetArch == "x86_64") rec {144                jrsonnet-windows = pkgsWindows.callPackage ./nix/jrsonnet-cross-windows.nix {145                  craneLib = craneLibWindows;146                  targetTriple = "${targetArch}-pc-windows-gnu";147                };148                jrsonnet-experimental-windows = jrsonnet-windows.override {149                  withExperimentalFeatures = true;150                };151              }152            );153            benchmarks = optionalAttrs (system == "x86_64-linux" || system == "aarch64-linux") {154              default = pkgs.callPackage ./nix/benchmarks.nix {155                inherit (config.legacyPackages.jsonnetImpls)156                  go-jsonnet157                  sjsonnet158                  cpp-jsonnet159                  rsjsonnet160                  ;161                jrsonnetVariants = [162                  {163                    drv = self'.packages.jrsonnet.override { forBenchmarks = true; };164                    name = "";165                  }166                ];167              };168              quick = pkgs.callPackage ./nix/benchmarks.nix {169                inherit (config.legacyPackages.jsonnetImpls)170                  go-jsonnet171                  sjsonnet172                  cpp-jsonnet173                  rsjsonnet174                  ;175                quick = true;176                jrsonnetVariants = [177                  {178                    drv = self'.packages.jrsonnet.override { forBenchmarks = true; };179                    name = "";180                  }181                ];182              };183              against-release = pkgs.callPackage ./nix/benchmarks.nix {184                inherit (config.legacyPackages.jsonnetImpls)185                  go-jsonnet186                  sjsonnet187                  cpp-jsonnet188                  rsjsonnet189                  ;190                jrsonnetVariants = [191                  {192                    drv = self'.packages.jrsonnet.override { forBenchmarks = true; };193                    name = "current";194                  }195                  {196                    drv = self'.packages.jrsonnet-experimental.override { forBenchmarks = true; };197                    name = "current-experimental";198                  }199                  {200                    drv = self'.legacyPackages.jsonnetImpls.jrsonnet-release.override { forBenchmarks = true; };201                    name = "release";202                  }203                ];204              };205              quick-against-release = pkgs.callPackage ./nix/benchmarks.nix {206                inherit (config.legacyPackages.jsonnetImpls)207                  go-jsonnet208                  sjsonnet209                  cpp-jsonnet210                  rsjsonnet211                  ;212                quick = true;213                jrsonnetVariants = [214                  {215                    drv = self'.packages.jrsonnet.override { forBenchmarks = true; };216                    name = "current";217                  }218                  {219                    drv = self'.packages.jrsonnet-experimental.override { forBenchmarks = true; };220                    name = "current-experimental";221                  }222                  {223                    drv = self'.legacyPackages.jsonnetImpls.jrsonnet-release.override { forBenchmarks = true; };224                    name = "release";225                  }226                ];227              };228            };229            jsonnetImpls = {230              go-jsonnet = pkgs.callPackage ./nix/go-jsonnet.nix { };231              sjsonnet = pkgs.callPackage ./nix/sjsonnet.nix { };232              cpp-jsonnet = pkgs.callPackage ./nix/cpp-jsonnet.nix { };233              # I didn't managed to build it, and nixpkgs version is marked as broken234              # haskell-jsonnet = pkgs.callPackage ./nix/haskell-jsonnet.nix { };235              rsjsonnet = pkgs.callPackage ./nix/rsjsonnet.nix { };236              # Older released version of jrsonnet itself, for benchmarking purposes237              jrsonnet-release = pkgs.callPackage ./nix/jrsonnet-release.nix {238                rustPlatform = pkgs.makeRustPlatform {239                  rustc = toolchain;240                  cargo = toolchain;241                };242              };243            };244          };245          packages =246            let247              jrsonnet = pkgs.callPackage ./nix/jrsonnet.nix {248                inherit craneLib;249                inherit (inputs) cpp-jsonnet-for-tests go-jsonnet-for-tests;250              };251              jrsonnet-experimental = pkgs.callPackage ./nix/jrsonnet.nix {252                inherit craneLib;253                inherit (inputs) cpp-jsonnet-for-tests go-jsonnet-for-tests;254                withExperimentalFeatures = true;255              };256            in257            {258              default = jrsonnet;259              inherit jrsonnet jrsonnet-experimental;260            };261          checks = optionalAttrs (system != "armv7l-linux") {262            formatting = treefmt.check inputs.self;263          };264          formatter = mkIf (system != "armv7l-linux") treefmt.wrapper;265          shelly.shells.default = {266            factory = craneLib.devShell;267            packages =268              with pkgs;269              [270                cargo-edit271                cargo-outdated272                cargo-watch273                cargo-insta274                cargo-hack275                cargo-show-asm276                lld277                hyperfine278                graphviz279              ]280              ++ optionals (!stdenv.isDarwin) [281                valgrind282                kdePackages.kcachegrind283                samply284              ];285            environment = {286              CPP_JSONNET_FOR_TESTS = inputs.cpp-jsonnet-for-tests;287              GO_JSONNET_FOR_TESTS = inputs.go-jsonnet-for-tests;288            };289          };290          shelly.shells.impls = {291            packages =292              (with self'.legacyPackages.jsonnetImpls; [293                cpp-jsonnet294                go-jsonnet295                rsjsonnet296                sjsonnet297              ])298              ++ (with self'.packages; [299                jrsonnet300              ]);301          };302        };303      hercules-ci.github-releases.files =304        let305          rel = system: inputs.self.legacyPackages.${system}.release;306          bin = drv: "${drv}/bin/jrsonnet";307          exe = drv: "${drv}/bin/jrsonnet.exe";308        in309        [310          {311            label = "jrsonnet-x86_64-linux-musl";312            path = bin (rel "x86_64-linux").jrsonnet-linux-musl;313          }314          {315            label = "jrsonnet-experimental-x86_64-linux-musl";316            path = bin (rel "x86_64-linux").jrsonnet-experimental-linux-musl;317          }318          {319            label = "jrsonnet-aarch64-darwin";320            path = bin (rel "aarch64-linux").jrsonnet-darwin;321          }322          {323            label = "jrsonnet-experimental-aarch64-darwin";324            path = bin (rel "aarch64-linux").jrsonnet-experimental-darwin;325          }326          {327            label = "jrsonnet-x86_64-windows.exe";328            path = exe (rel "x86_64-linux").jrsonnet-windows;329          }330          {331            label = "jrsonnet-experimental-x86_64-windows.exe";332            path = exe (rel "x86_64-linux").jrsonnet-experimental-windows;333          }334335          {336            label = "jrsonnet-aarch64-linux-musl";337            path = bin (rel "aarch64-linux").jrsonnet-linux-musl;338          }339          {340            label = "jrsonnet-experimental-aarch64-linux-musl";341            path = bin (rel "aarch64-linux").jrsonnet-experimental-linux-musl;342          }343344          {345            label = "jrsonnet-x86_64-linux-glibc";346            path = bin (rel "x86_64-linux").jrsonnet-linux-glibc;347          }348          {349            label = "jrsonnet-experimental-x86_64-linux-glibc";350            path = bin (rel "x86_64-linux").jrsonnet-experimental-linux-glibc;351          }352          {353            label = "jrsonnet-aarch64-linux-glibc";354            path = bin (rel "aarch64-linux").jrsonnet-linux-glibc;355          }356          {357            label = "jrsonnet-experimental-aarch64-linux-glibc";358            path = bin (rel "aarch64-linux").jrsonnet-experimental-linux-glibc;359          }360          {361            label = "jrsonnet-i686-linux-glibc";362            path = bin (rel "i686-linux").jrsonnet-linux-glibc;363          }364          {365            label = "jrsonnet-experimental-i686-linux-glibc";366            path = bin (rel "i686-linux").jrsonnet-experimental-linux-glibc;367          }368          {369            label = "jrsonnet-armv7l-linux-glibc";370            path = bin (rel "armv7l-linux").jrsonnet-linux-glibc;371          }372          {373            label = "jrsonnet-experimental-armv7l-linux-glibc";374            path = bin (rel "armv7l-linux").jrsonnet-experimental-linux-glibc;375          }376        ];377      hercules-ci.cargo-publish = {378        enable = true;379        secretName = "crates-io";380        extraPublishArgs = [ "--workspace" ];381        assertVersions = true;382      };383      hercules-ci.flake-update = {384        enable = true;385        baseMerge.enable = true;386        baseMerge.method = "fast-forward";387        when = {388          dayOfWeek = [ "Sat" ];389        };390      };391      herculesCI =392        { lib, config, ... }:393        {394          ciSystems = [395            "x86_64-linux"396            "i686-linux"397            "aarch64-linux"398            "armv7l-linux"399            # TODO: add workers for these platforms400            # "aarch64-darwin"401          ];402          onPush.default.outputs = {403            benchmarks.x86_64-linux = inputs.self.legacyPackages.x86_64-linux.benchmarks.default;404405            # Cross: musl/mingw/darwin-zigbuild406            release.x86_64-linux = inputs.self.legacyPackages.x86_64-linux.release;407            release.aarch64-linux = inputs.self.legacyPackages.aarch64-linux.release;408            release.armv7l-linux = inputs.self.legacyPackages.armv7l-linux.release;409            release.i686-linux = inputs.self.legacyPackages.i686-linux.release;410411            # Too much to build for CI purposes412            devShells = mkForce { };413            formatter = mkForce { };414415            # No need to run them on different arch, pretty large derivations and might try to compile GHC416            checks.i686-linux.formatting = mkForce { };417            checks.aarch64-linux.formatting = mkForce { };418          };419        };420    };421}
modifiedxtask/src/bench.rsdiffbeforeafterboth
--- a/xtask/src/bench.rs
+++ b/xtask/src/bench.rs
@@ -5,7 +5,7 @@
 	time::Instant,
 };
 
-use anyhow::{bail, Result};
+use anyhow::{Result, bail};
 use nix::{libc, sys::wait::WaitStatus, unistd::Pid};
 
 #[derive(Debug, Clone)]
modifiedxtask/src/main.rsdiffbeforeafterboth
--- a/xtask/src/main.rs
+++ b/xtask/src/main.rs
@@ -1,8 +1,8 @@
+use anyhow::Result;
 #[cfg(not(target_os = "linux"))]
 use anyhow::bail;
-use anyhow::Result;
 use clap::Parser;
-use xshell::{cmd, Shell};
+use xshell::{Shell, cmd};
 
 #[cfg(target_os = "linux")]
 mod bench;