From a0a9cb51e35e915dbcc1d7bda430f45c4353c8ff Mon Sep 17 00:00:00 2001 From: seth Date: Sat, 27 Apr 2024 04:40:29 +0000 Subject: better compose overlay + add aarch64 support (#53) * better compose overlay + add aarch64 support * ci: update workflows --- flake.nix | 98 +++++++++------------------------------------------------------ 1 file changed, 13 insertions(+), 85 deletions(-) (limited to 'flake.nix') diff --git a/flake.nix b/flake.nix index 4f3689d..fbd7158 100644 --- a/flake.nix +++ b/flake.nix @@ -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; }; } -- cgit v1.2.3