git.delta.rocks / jrsonnet / refs/commits / 6baa18de6571

difftreelog

source

flake.nix4.9 KiBsourcehistory
1{2  description = "Jrsonnet";3  inputs = {4    nixpkgs.url = "github:nixos/nixpkgs";5    rust-overlay = {6      url = "github:oxalica/rust-overlay";7      inputs.nixpkgs.follows = "nixpkgs";8    };9    flake-parts = {10      url = "github:hercules-ci/flake-parts";11      inputs.nixpkgs-lib.follows = "nixpkgs";12    };13    crane = {14      url = "github:ipetkov/crane";15      inputs.nixpkgs.follows = "nixpkgs";16    };17    shelly = {18      url = "github:CertainLach/shelly";19      inputs = {20        flake-parts.follows = "flake-parts";21        nixpkgs.follows = "nixpkgs";22      };23    };24  };25  outputs = inputs @ {26    nixpkgs,27    flake-parts,28    rust-overlay,29    crane,30    shelly,31    ...32  }:33    flake-parts.lib.mkFlake {inherit inputs;} {34      imports = [shelly.flakeModule];35      systems = ["x86_64-linux" "aarch64-linux" "armv7l-linux" "armv6l-linux" "mingw-w64"];36      perSystem = {37        config,38        system,39        ...40      }: let41        pkgs = import nixpkgs {42          inherit system;43          overlays = [rust-overlay.overlays.default];44          config.allowUnsupportedSystem = true;45        };46        rust = pkgs.rust-bin.fromRustupToolchainFile ./rust-toolchain.toml;47        craneLib = (crane.mkLib pkgs).overrideToolchain rust;48      in {49        legacyPackages = {50          jsonnetImpls = {51            go-jsonnet = pkgs.callPackage ./nix/go-jsonnet.nix {};52            sjsonnet = pkgs.callPackage ./nix/sjsonnet.nix {};53            jsonnet = pkgs.callPackage ./nix/jsonnet.nix {};54            # I didn't managed to build it, and nixpkgs version is marked as broken55            # haskell-jsonnet = pkgs.callPackage ./nix/haskell-jsonnet.nix { };56            rsjsonnet = pkgs.callPackage ./nix/rsjsonnet.nix {};57          };58        };59        packages = rec {60          default = jrsonnet;6162          jrsonnet = pkgs.callPackage ./nix/jrsonnet.nix {63            inherit craneLib;64          };65          jrsonnet-nightly = pkgs.callPackage ./nix/jrsonnet.nix {66            inherit craneLib;67            withNightlyFeatures = true;68          };69          jrsonnet-experimental = pkgs.callPackage ./nix/jrsonnet.nix {70            inherit craneLib;71            withExperimentalFeatures = true;72          };7374          jrsonnet-release = pkgs.callPackage ./nix/jrsonnet-release.nix {75            rustPlatform = pkgs.makeRustPlatform {76              rustc = rust;77              cargo = rust;78            };79          };8081          benchmarks = pkgs.callPackage ./nix/benchmarks.nix {82            inherit (config.legacyPackages.jsonnetImpls) go-jsonnet sjsonnet jsonnet rsjsonnet;83            jrsonnetVariants = [84              {85                drv = jrsonnet.override {forBenchmarks = true;};86                name = "";87              }88            ];89          };90          benchmarks-quick = pkgs.callPackage ./nix/benchmarks.nix {91            inherit (config.legacyPackages.jsonnetImpls) go-jsonnet sjsonnet jsonnet rsjsonnet;92            quick = true;93            jrsonnetVariants = [94              {95                drv = jrsonnet.override {forBenchmarks = true;};96                name = "";97              }98            ];99          };100          benchmarks-against-release = pkgs.callPackage ./nix/benchmarks.nix {101            inherit (config.legacyPackages.jsonnetImpls) go-jsonnet sjsonnet jsonnet rsjsonnet;102            jrsonnetVariants = [103              {104                drv = jrsonnet.override {forBenchmarks = true;};105                name = "current";106              }107              {108                drv = jrsonnet-nightly.override {forBenchmarks = true;};109                name = "current-nightly";110              }111              {112                drv = jrsonnet-release.override {forBenchmarks = true;};113                name = "release";114              }115            ];116          };117          benchmarks-quick-against-release = pkgs.callPackage ./nix/benchmarks.nix {118            inherit (config.legacyPackages.jsonnetImpls) go-jsonnet sjsonnet jsonnet rsjsonnet;119            quick = true;120            jrsonnetVariants = [121              {122                drv = jrsonnet.override {forBenchmarks = true;};123                name = "current";124              }125              {126                drv = jrsonnet-nightly.override {forBenchmarks = true;};127                name = "current-nightly";128              }129              {130                drv = jrsonnet-release.override {forBenchmarks = true;};131                name = "release";132              }133            ];134          };135        };136        shelly.shells.default = {137          factory = craneLib.devShell;138          packages = with pkgs;139            [140              alejandra141              cargo-edit142              cargo-asm143              cargo-outdated144              cargo-watch145              cargo-insta146              lld147              hyperfine148              graphviz149            ]150            ++ lib.optionals (!stdenv.isDarwin) [151              valgrind152              kcachegrind153            ];154        };155      };156    };157}