git.delta.rocks / jrsonnet / refs/commits / 0111266c91b4

difftreelog

source

flake.nix5.2 KiBsourcehistory
1{2  description = "Jrsonnet";3  inputs = {4    nixpkgs.url = "github:nixos/nixpkgs/release-25.11";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.url = "github:ipetkov/crane";14    shelly.url = "github:CertainLach/shelly";15  };16  outputs =17    inputs@{18      nixpkgs,19      flake-parts,20      rust-overlay,21      crane,22      shelly,23      ...24    }:25    flake-parts.lib.mkFlake { inherit inputs; } {26      imports = [ shelly.flakeModule ];27      systems = inputs.nixpkgs.lib.systems.flakeExposed;28      perSystem =29        {30          config,31          system,32          ...33        }:34        let35          pkgs = import nixpkgs {36            inherit system;37            overlays = [ rust-overlay.overlays.default ];38            config.allowUnsupportedSystem = true;39          };40          rust = pkgs.rust-bin.fromRustupToolchainFile ./rust-toolchain.toml;41          craneLib = (crane.mkLib pkgs).overrideToolchain rust;42        in43        {44          legacyPackages = {45            jsonnetImpls = {46              go-jsonnet = pkgs.callPackage ./nix/go-jsonnet.nix { };47              sjsonnet = pkgs.callPackage ./nix/sjsonnet.nix { };48              cpp-jsonnet = pkgs.callPackage ./nix/cpp-jsonnet.nix { };49              # I didn't managed to build it, and nixpkgs version is marked as broken50              # haskell-jsonnet = pkgs.callPackage ./nix/haskell-jsonnet.nix { };51              rsjsonnet = pkgs.callPackage ./nix/rsjsonnet.nix { };52            };53          };54          packages = rec {55            default = jrsonnet;5657            jrsonnet = pkgs.callPackage ./nix/jrsonnet.nix {58              inherit craneLib;59            };60            jrsonnet-experimental = pkgs.callPackage ./nix/jrsonnet.nix {61              inherit craneLib;62              withExperimentalFeatures = true;63            };6465            jrsonnet-release = pkgs.callPackage ./nix/jrsonnet-release.nix {66              rustPlatform = pkgs.makeRustPlatform {67                rustc = rust;68                cargo = rust;69              };70            };7172            benchmarks = pkgs.callPackage ./nix/benchmarks.nix {73              inherit (config.legacyPackages.jsonnetImpls)74                go-jsonnet75                sjsonnet76                cpp-jsonnet77                rsjsonnet78                ;79              jrsonnetVariants = [80                {81                  drv = jrsonnet.override { forBenchmarks = true; };82                  name = "";83                }84              ];85            };86            benchmarks-quick = pkgs.callPackage ./nix/benchmarks.nix {87              inherit (config.legacyPackages.jsonnetImpls)88                go-jsonnet89                sjsonnet90                cpp-jsonnet91                rsjsonnet92                ;93              quick = true;94              jrsonnetVariants = [95                {96                  drv = jrsonnet.override { forBenchmarks = true; };97                  name = "";98                }99              ];100            };101            benchmarks-against-release = pkgs.callPackage ./nix/benchmarks.nix {102              inherit (config.legacyPackages.jsonnetImpls)103                go-jsonnet104                sjsonnet105                cpp-jsonnet106                rsjsonnet107                ;108              jrsonnetVariants = [109                {110                  drv = jrsonnet.override { forBenchmarks = true; };111                  name = "current";112                }113                {114                  drv = jrsonnet-experimental.override { forBenchmarks = true; };115                  name = "current-experimental";116                }117                {118                  drv = jrsonnet-release.override { forBenchmarks = true; };119                  name = "release";120                }121              ];122            };123            benchmarks-quick-against-release = pkgs.callPackage ./nix/benchmarks.nix {124              inherit (config.legacyPackages.jsonnetImpls)125                go-jsonnet126                sjsonnet127                cpp-jsonnet128                rsjsonnet129                ;130              quick = true;131              jrsonnetVariants = [132                {133                  drv = jrsonnet.override { forBenchmarks = true; };134                  name = "current";135                }136                {137                  drv = jrsonnet-experimental.override { forBenchmarks = true; };138                  name = "current-experimental";139                }140                {141                  drv = jrsonnet-release.override { forBenchmarks = true; };142                  name = "release";143                }144              ];145            };146          };147          shelly.shells.default = {148            factory = craneLib.devShell;149            packages =150              with pkgs;151              [152                cargo-edit153                cargo-outdated154                cargo-watch155                cargo-insta156                cargo-hack157                lld158                hyperfine159                graphviz160              ]161              ++ lib.optionals (!stdenv.isDarwin) [162                valgrind163              ];164          };165        };166    };167}