1{2 description = "Jrsonnet";3 inputs = {4 nixpkgs.url = "github:nixos/nixpkgs";5 flake-utils.url = "github:numtide/flake-utils";6 rust-overlay = {7 url = "github:oxalica/rust-overlay";8 inputs.nixpkgs.follows = "nixpkgs";9 inputs.flake-utils.follows = "flake-utils";10 };11 };12 outputs = { nixpkgs, flake-utils, rust-overlay, ... }:13 flake-utils.lib.eachDefaultSystem (system:14 let15 pkgs = import nixpkgs {16 inherit system;17 overlays = [ rust-overlay.overlays.default ];18 };19 rust = ((pkgs.rustChannelOf { date = "2023-05-07"; channel = "nightly"; }).default.override {20 extensions = [ "rust-src" "miri" "rust-analyzer" ];21 });22 in23 rec {24 packages = rec {25 go-jsonnet = pkgs.callPackage ./nix/go-jsonnet.nix { };26 sjsonnet = pkgs.callPackage ./nix/sjsonnet.nix { };27 jsonnet = pkgs.callPackage ./nix/jsonnet.nix { };28 29 30 jrsonnet = pkgs.callPackage ./nix/jrsonnet.nix {31 rustPlatform = pkgs.makeRustPlatform {32 rustc = rust;33 cargo = rust;34 };35 };36 jrsonnet-nightly = pkgs.callPackage ./nix/jrsonnet.nix {37 rustPlatform = pkgs.makeRustPlatform {38 rustc = rust;39 cargo = rust;40 };41 withNightlyFeatures = true;42 };43 jrsonnet-release = pkgs.callPackage ./nix/jrsonnet-release.nix {44 rustPlatform = pkgs.makeRustPlatform {45 rustc = rust;46 cargo = rust;47 };48 };4950 benchmarks = pkgs.callPackage ./nix/benchmarks.nix {51 inherit go-jsonnet sjsonnet jsonnet;52 jrsonnetVariants = [53 { drv = jrsonnet; name = ""; }54 ];55 };56 benchmarks-quick = pkgs.callPackage ./nix/benchmarks.nix {57 inherit go-jsonnet sjsonnet jsonnet;58 quick = true;59 jrsonnetVariants = [60 { drv = jrsonnet; name = ""; }61 ];62 };63 benchmarks-against-release = pkgs.callPackage ./nix/benchmarks.nix {64 inherit go-jsonnet sjsonnet jsonnet;65 jrsonnetVariants = [66 { drv = jrsonnet; name = "current"; }67 { drv = jrsonnet-nightly; name = "current-nightly"; }68 { drv = jrsonnet-release; name = "before-str-extend"; }69 ];70 };71 benchmarks-quick-against-release = pkgs.callPackage ./nix/benchmarks.nix {72 inherit go-jsonnet sjsonnet jsonnet;73 quick = true;74 jrsonnetVariants = [75 { drv = jrsonnet; name = "current"; }76 { drv = jrsonnet-nightly; name = "current-nightly"; }77 { drv = jrsonnet-release; name = "before-str-extend"; }78 ];79 };80 };81 devShell = pkgs.mkShell {82 nativeBuildInputs = with pkgs;[83 rust84 cargo-edit85 cargo-asm86 cargo-outdated87 lld88 hyperfine89 valgrind90 kcachegrind91 graphviz92 ];93 };94 }95 );96}