diff options
| author | seth <[email protected]> | 2024-04-27 04:40:29 +0000 |
|---|---|---|
| committer | GitHub <[email protected]> | 2024-04-27 00:40:29 -0400 |
| commit | a0a9cb51e35e915dbcc1d7bda430f45c4353c8ff (patch) | |
| tree | 53041599823eddafbf464f1ddb5fcc0a95f63324 /flake.nix | |
| parent | fbc60151f13d4529bea400f55c698dc1468eec46 (diff) | |
better compose overlay + add aarch64 support (#53)
* better compose overlay + add aarch64 support
* ci: update workflows
Diffstat (limited to 'flake.nix')
| -rw-r--r-- | flake.nix | 98 |
1 files changed, 13 insertions, 85 deletions
@@ -1,103 +1,31 @@ { - description = "worked...but in a cool docker container!"; + description = "workerd...but in a cool docker container!"; - inputs = { - nixpkgs.url = "nixpkgs/nixos-unstable"; - }; + inputs.nixpkgs.url = "nixpkgs/nixos-unstable"; outputs = { self, nixpkgs, - ... }: let systems = [ "x86_64-linux" "aarch64-linux" - "x86_64-darwin" - "aarch64-darwin" ]; - forAllSystems = nixpkgs.lib.genAttrs systems; - nixpkgsFor = forAllSystems (system: - import nixpkgs { - inherit system; - overlays = [self.overlays.default]; - }); - - forEachSystem = fn: - forAllSystems (system: - fn { - inherit system; - pkgs = nixpkgsFor.${system}; - }); + forAllSystems = fn: nixpkgs.lib.genAttrs systems (system: fn nixpkgs.legacyPackages.${system}); in { - formatter = forEachSystem ({pkgs, ...}: pkgs.alejandra); - - packages = forEachSystem ({pkgs, ...}: { - inherit (pkgs) workerd workerd-docker; - default = pkgs.workerd-docker; - }); - - overlays.default = final: prev: { - workerd = let - inherit (prev) fetchurl llvmPackages stdenv system; - inherit (prev.lib) makeLibraryPath optionalAttrs; - in - stdenv.mkDerivation rec { - pname = "workerd"; - version = "1.20230628.0"; - src = - optionalAttrs (system - == "x86_64-linux") (fetchurl { - url = "https://github.com/cloudflare/workerd/releases/download/v${version}/workerd-linux-64.gz"; - hash = "sha256-McY39ud6NHgUM8QN8kXO73oLvTcv+zm35xxkWxvOvHA="; - }) - // optionalAttrs (system == "aarch64-linux") (fetchurl { - url = "https://github.com/cloudflare/workerd/releases/download/v${version}/workerd-linux-arm64.gz"; - hash = "sha256-/UA49cbyjqzE82sxpPnVBVT+gd6VA5dDkcpRS7FZjc8="; - }); - - buildInputs = [llvmPackages.libcxx llvmPackages.libunwind]; + formatter = forAllSystems (pkgs: pkgs.alejandra); - unpackPhase = ":"; - - installPhase = '' - mkdir -p $out/bin - cp ${src} workerd.gz - gzip -d workerd.gz - install -Dm755 workerd $out/bin/workerd - ''; - - preFixup = let - libPath = makeLibraryPath [ - llvmPackages.libcxx - llvmPackages.libunwind - ]; - in '' - patchelf \ - --set-interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" \ - --set-rpath ${libPath} \ - $out/bin/workerd - ''; - }; - - workerd-docker = let - inherit (prev) dockerTools; - env = prev.buildEnv { - name = "image-root"; - paths = [dockerTools.binSh final.workerd]; - pathsToLink = ["/bin" "/etc"]; + packages = forAllSystems ( + pkgs: let + pkgs' = import ./. { + nixpkgs = pkgs; + inherit (pkgs.stdenv.hostPlatform) system; }; in - dockerTools.buildLayeredImage { - name = final.workerd.pname; - tag = "latest"; - contents = [ - env - dockerTools.caCertificates - ]; - config.Cmd = ["${final.workerd}/bin/workerd"]; - }; - }; + pkgs' // {default = pkgs'.workerd;} + ); + + overlays.default = final: prev: import ./overlay.nix final prev; }; } |
