Something went wrong. Try again.
a servo-backed webview component for gpui
Something went wrong. Try again.
gpui-servo flake.nix
3.7 kB · 129 lines
Nix
at main
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130{ description = "gpui-servo - a Servo-backed webview component for gpui";
inputs = { nixpkgs.url = "github:NixOS/nixpkgs/nixpkgs-unstable"; fenix = { url = "github:nix-community/fenix"; inputs.nixpkgs.follows = "nixpkgs"; }; };
outputs = { nixpkgs, fenix, ... }: let systems = ["aarch64-darwin"]; forAllSystems = nixpkgs.lib.genAttrs systems;
nixpkgsFor = forAllSystems (system: import nixpkgs {inherit system;});
platform = system: let pkgs = nixpkgsFor.${system};
llvmPackages = pkgs.llvmPackages_20;
rustToolchain = fenix.packages.${system}.fromToolchainFile { file = ./rust-toolchain.toml; sha256 = "sha256-9LY9sgDes2oSCyeuCFFAY37gSvElSJEwh5kiXlr76L8="; };
gstPackages = (with pkgs.gst_all_1; [ gstreamer gst-plugins-base gst-plugins-good gst-plugins-bad ]) ++ [pkgs.libnice];
gstPluginFarm = pkgs.symlinkJoin { name = "gpui-servo-gst-plugins"; paths = map (p: p.out) gstPackages; };
# Headers for the CoreMedia/CoreVideo frameworks that gpui and servo's # bindgen steps include at build time. Supplied by nix so builds work # without a system Xcode / Command Line Tools install. appleSdk = pkgs.apple-sdk; in { inherit pkgs llvmPackages rustToolchain gstPackages gstPluginFarm appleSdk; }; in { formatter = forAllSystems (system: let p = platform system; pkgs = p.pkgs; in pkgs.treefmt.withConfig { settings.formatter = { alejandra = { command = pkgs.lib.getExe pkgs.alejandra; includes = ["*.nix"]; };
rustfmt = { command = pkgs.lib.getExe' p.rustToolchain "rustfmt"; includes = ["*.rs"]; };
taplo = { command = pkgs.lib.getExe pkgs.taplo; options = ["fmt"]; includes = ["*.toml"]; }; }; });
devShells = forAllSystems (system: let p = platform system; pkgs = p.pkgs; in { default = (pkgs.mkShell.override {stdenv = p.llvmPackages.stdenv;}) { name = "gpui-servo-dev";
packages = [ p.rustToolchain pkgs.rust-analyzer pkgs.taplo pkgs.nil
# servo build tooling pkgs.cmake pkgs.pkg-config pkgs.git pkgs.which pkgs.llvm pkgs.perl pkgs.yasm pkgs.m4 pkgs.python311 pkgs.zlib pkgs.gnumake p.llvmPackages.bintools p.llvmPackages.clang ];
# gstreamer backing for the optional `media` feature buildInputs = p.gstPackages ++ [pkgs.glib pkgs.libiconv];
env = { # gpui pulls in bindgen, which needs libclang at build time. LIBCLANG_PATH = pkgs.lib.makeLibraryPath [p.llvmPackages.clang-unwrapped.lib]; SSL_CERT_FILE = "${pkgs.cacert}/etc/ssl/certs/ca-bundle.crt"; GST_PLUGIN_SYSTEM_PATH_1_0 = "${p.gstPluginFarm}/lib/gstreamer-1.0"; CC = "${p.llvmPackages.clang}/bin/clang"; CXX = "${p.llvmPackages.clang}/bin/clang++"; DEVELOPER_DIR = "${p.appleSdk}"; SDKROOT = "${p.appleSdk}/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk"; };
shellHook = '' unset AS # put nix's clang/ld ahead of the Xcode shims in /usr/bin. export PATH="${p.llvmPackages.clang}/bin:${p.llvmPackages.bintools}/bin:$PATH" ''; }; }); };}