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 = "2022-11-19"; channel = "nightly"; }).default.override {20 extensions = [ "rust-src" "miri" ];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 = "current"; }54 { drv = jrsonnet-nightly; name = "current-nightly"; }55 ];56 };57 benchmarks-quick = pkgs.callPackage ./nix/benchmarks.nix {58 inherit go-jsonnet sjsonnet jsonnet;59 quick = true;60 jrsonnetVariants = [61 { drv = jrsonnet; name = "current"; }62 { drv = jrsonnet-nightly; name = "current-nightly"; }63 ];64 };65 benchmarks-against-release = pkgs.callPackage ./nix/benchmarks.nix {66 inherit go-jsonnet sjsonnet jsonnet;67 jrsonnetVariants = [68 { drv = jrsonnet; name = "current"; }69 { drv = jrsonnet-nightly; name = "current-nightly"; }70 { drv = jrsonnet-release; name = "before-str-extend"; }71 ];72 };73 benchmarks-quick-against-release = pkgs.callPackage ./nix/benchmarks.nix {74 inherit go-jsonnet sjsonnet jsonnet;75 quick = true;76 jrsonnetVariants = [77 { drv = jrsonnet; name = "current"; }78 { drv = jrsonnet-nightly; name = "current-nightly"; }79 { drv = jrsonnet-release; name = "before-str-extend"; }80 ];81 };82 };83 devShell = pkgs.mkShell {84 nativeBuildInputs = with pkgs;[85 rust86 cargo-edit87 cargo-asm88 lld89 hyperfine90 valgrind91 kcachegrind92 graphviz93 ];94 };95 }96 );97}