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 = {13 nixpkgs,14 flake-utils,15 rust-overlay,16 ...17 }:18 flake-utils.lib.eachSystem (with flake-utils.lib.system; [x86_64-linux x86_64-windows]) (19 system: let20 pkgs = import nixpkgs {21 inherit system;22 overlays = [rust-overlay.overlays.default];23 config.allowUnsupportedSystem = true;24 };25 lib = pkgs.lib;26 rust =27 (pkgs.rustChannelOf {28 date = "2023-10-28";29 channel = "nightly";30 })31 .default32 .override {33 extensions = ["rust-src" "miri" "rust-analyzer" "clippy"];34 };35 in rec {36 packages = rec {37 go-jsonnet = pkgs.callPackage ./nix/go-jsonnet.nix {};38 sjsonnet = pkgs.callPackage ./nix/sjsonnet.nix {};39 jsonnet = pkgs.callPackage ./nix/jsonnet.nix {};40 41 42 jrsonnet = pkgs.callPackage ./nix/jrsonnet.nix {43 rustPlatform = pkgs.makeRustPlatform {44 rustc = rust;45 cargo = rust;46 };47 };48 jrsonnet-nightly = pkgs.callPackage ./nix/jrsonnet.nix {49 rustPlatform = pkgs.makeRustPlatform {50 rustc = rust;51 cargo = rust;52 };53 withNightlyFeatures = true;54 };55 jrsonnet-release = pkgs.callPackage ./nix/jrsonnet-release.nix {56 rustPlatform = pkgs.makeRustPlatform {57 rustc = rust;58 cargo = rust;59 };60 };6162 benchmarks = pkgs.callPackage ./nix/benchmarks.nix {63 inherit go-jsonnet sjsonnet jsonnet;64 jrsonnetVariants = [65 {66 drv = jrsonnet;67 name = "";68 }69 ];70 };71 benchmarks-quick = pkgs.callPackage ./nix/benchmarks.nix {72 inherit go-jsonnet sjsonnet jsonnet;73 quick = true;74 jrsonnetVariants = [75 {76 drv = jrsonnet;77 name = "";78 }79 ];80 };81 benchmarks-against-release = pkgs.callPackage ./nix/benchmarks.nix {82 inherit go-jsonnet sjsonnet jsonnet;83 jrsonnetVariants = [84 {85 drv = jrsonnet;86 name = "current";87 }88 {89 drv = jrsonnet-nightly;90 name = "current-nightly";91 }92 {93 drv = jrsonnet-release;94 name = "release";95 }96 ];97 };98 benchmarks-quick-against-release = pkgs.callPackage ./nix/benchmarks.nix {99 inherit go-jsonnet sjsonnet jsonnet;100 quick = true;101 jrsonnetVariants = [102 {103 drv = jrsonnet;104 name = "current";105 }106 {107 drv = jrsonnet-nightly;108 name = "current-nightly";109 }110 {111 drv = jrsonnet-release;112 name = "release";113 }114 ];115 };116 };117 packagesCross = lib.genAttrs ["mingwW64"] (crossSystem: let118 callPackage = pkgs.pkgsCross.${crossSystem}.callPackage;119 in {120 jrsonnet = callPackage ./nix/jrsonnet.nix {121 122 123 124 125 };126 });127 devShells.default = pkgs.mkShell {128 nativeBuildInputs = with pkgs; [129 alejandra130 rust131 cargo-edit132 cargo-asm133 cargo-outdated134 cargo-watch135 cargo-insta136 lld137 hyperfine138 graphviz139 ];140 };141 }142 );143}