|
14 | 14 | outputs = { self, nixpkgs, flake-utils, rust-overlay, ... }: |
15 | 15 | flake-utils.lib.eachDefaultSystem (system: |
16 | 16 | let |
| 17 | + inherit (nixpkgs.lib) mapAttrsToList concatStringsSep; |
| 18 | + |
17 | 19 | pkgs = import nixpkgs { |
18 | 20 | inherit system; |
19 | 21 | overlays = [ rust-overlay.overlays.default ]; |
|
26 | 28 |
|
27 | 29 | cargoLock = builtins.fromTOML (builtins.readFile ./Cargo.lock); |
28 | 30 | rustyV8Version = (builtins.head (builtins.filter (p: p.name == "v8") cargoLock.package)).version; |
29 | | - rustyV8Target = { |
| 31 | + rustyV8Targets = { |
30 | 32 | "x86_64-linux" = "x86_64-unknown-linux-gnu"; |
31 | 33 | "aarch64-linux" = "aarch64-unknown-linux-gnu"; |
32 | 34 | "x86_64-darwin" = "x86_64-apple-darwin"; |
33 | 35 | "aarch64-darwin" = "aarch64-apple-darwin"; |
34 | | - }.${system}; |
| 36 | + }; |
| 37 | + rustyV8Target = rustyV8Targets.${system}; |
35 | 38 | rustyV8 = pkgs.fetchurl { |
36 | 39 | url = "https://github.com/denoland/rusty_v8/releases/download/v${rustyV8Version}/librusty_v8_release_${rustyV8Target}.a.gz"; |
37 | 40 | sha256 = { |
38 | | - "x86_64-linux" = "sha256-chV1PAx40UH3Ute5k3lLrgfhih39Rm3KqE+mTna6ysE="; |
39 | | - "aarch64-linux" = "sha256-4IivYskhUSsMLZY97+g23UtUYh4p5jk7CzhMbMyqXyY="; |
40 | | - "x86_64-darwin" = "sha256-1jUuC+z7saQfPYILNyRJanD4+zOOhXU2ac/LFoytwho="; |
41 | | - "aarch64-darwin" = "sha256-yHa1eydVCrfYGgrZANbzgmmf25p7ui1VMas2A7BhG6k="; |
| 41 | + "x86_64-linux" = "sha256-PYCBh8+RY1nvPOKXMCns5mDRo2j0SB3Edw/ut7npjxo="; |
| 42 | + "aarch64-linux" = "sha256-EGlTttOowHhoFBy8FQeokCnbPLi4tfkIhSek28TfcGQ="; |
| 43 | + "x86_64-darwin" = "sha256-61d4tQ/PcNPUvDuQsMNTNUO43zLZSVEHOjdGFG0u4W8="; |
| 44 | + "aarch64-darwin" = "sha256-BMKybPdxP9+7QD/yfbnPnFxD8N7kHPUkMcEEf4P4iSE="; |
42 | 45 | }.${system}; |
43 | 46 | }; |
44 | 47 |
|
|
93 | 96 | default = self.packages.${system}.deno; |
94 | 97 | }; |
95 | 98 |
|
| 99 | + apps.nix-update-rusty-v8 = { |
| 100 | + type = "app"; |
| 101 | + program = toString (pkgs.writeShellScript "update-rusty-v8" '' |
| 102 | + set -euo pipefail |
| 103 | +
|
| 104 | + function update() { |
| 105 | + sys=$1 |
| 106 | + target=$2 |
| 107 | + url="https://github.com/denoland/rusty_v8/releases/download/v${rustyV8Version}/librusty_v8_release_$target.a.gz" |
| 108 | + hash=$(nix store prefetch-file --json "$url" | ${pkgs.lib.getExe pkgs.jq} -r '.hash') |
| 109 | + sed -i "s|\"$sys\" = \"sha256-[^\"]*\";|\"$sys\" = \"$hash\";|" flake.nix |
| 110 | + } |
| 111 | +
|
| 112 | + ${concatStringsSep "\n" (mapAttrsToList (sys: target: "update ${sys} ${target}") rustyV8Targets)} |
| 113 | + ''); |
| 114 | + }; |
| 115 | + |
96 | 116 | devShells.default = pkgs.mkShell { |
97 | 117 | buildInputs = with pkgs; [ |
98 | 118 | rustToolchain |
|
0 commit comments