127 lines
		
	
	
		
			2.6 KiB
		
	
	
	
		
			Nix
		
	
	
	
	
	
			
		
		
	
	
			127 lines
		
	
	
		
			2.6 KiB
		
	
	
	
		
			Nix
		
	
	
	
	
	
| {
 | |
|   lib,
 | |
|   stdenvNoCC,
 | |
|   stdenv,
 | |
|   fetchurl,
 | |
|   autoPatchelfHook,
 | |
|   undmg,
 | |
|   zstd,
 | |
|   alsa-lib,
 | |
|   curl,
 | |
|   fontconfig,
 | |
|   libglvnd,
 | |
|   libxkbcommon,
 | |
|   vulkan-loader,
 | |
|   wayland,
 | |
|   xdg-utils,
 | |
|   xorg,
 | |
|   zlib,
 | |
|   makeWrapper,
 | |
|   waylandSupport ? false,
 | |
| }:
 | |
| 
 | |
| let
 | |
|   pname = "warp-terminal";
 | |
|   versions = lib.importJSON ./versions.json;
 | |
|   passthru.updateScript = ./update.sh;
 | |
| 
 | |
|   linux_arch = if stdenv.hostPlatform.system == "x86_64-linux" then "x86_64" else "aarch64";
 | |
| 
 | |
|   linux = stdenv.mkDerivation (finalAttrs: {
 | |
|     inherit pname meta passthru;
 | |
|     inherit (versions."linux_${linux_arch}") version;
 | |
|     src = fetchurl {
 | |
|       inherit (versions."linux_${linux_arch}") hash;
 | |
|       url = "https://releases.warp.dev/stable/v${finalAttrs.version}/warp-terminal-v${finalAttrs.version}-1-${linux_arch}.pkg.tar.zst";
 | |
|     };
 | |
| 
 | |
|     sourceRoot = ".";
 | |
| 
 | |
|     postPatch = ''
 | |
|       substituteInPlace usr/bin/warp-terminal \
 | |
|         --replace-fail /opt/ $out/opt/
 | |
|     '';
 | |
| 
 | |
|     nativeBuildInputs = [
 | |
|       autoPatchelfHook
 | |
|       zstd
 | |
|       makeWrapper
 | |
|     ];
 | |
| 
 | |
|     buildInputs = [
 | |
|       alsa-lib # libasound.so.2
 | |
|       curl
 | |
|       fontconfig
 | |
|       (lib.getLib stdenv.cc.cc) # libstdc++.so libgcc_s.so
 | |
|       zlib
 | |
|     ];
 | |
| 
 | |
|     runtimeDependencies = [
 | |
|       libglvnd # for libegl
 | |
|       libxkbcommon
 | |
|       stdenv.cc.libc
 | |
|       vulkan-loader
 | |
|       xdg-utils
 | |
|       xorg.libX11
 | |
|       xorg.libxcb
 | |
|       xorg.libXcursor
 | |
|       xorg.libXi
 | |
|     ]
 | |
|     ++ lib.optionals waylandSupport [ wayland ];
 | |
| 
 | |
|     installPhase = ''
 | |
|       runHook preInstall
 | |
| 
 | |
|       mkdir $out
 | |
|       cp -r opt usr/* $out
 | |
| 
 | |
|     ''
 | |
|     + lib.optionalString waylandSupport ''
 | |
|       wrapProgram $out/bin/warp-terminal --set WARP_ENABLE_WAYLAND 1
 | |
|     ''
 | |
|     + ''
 | |
|       runHook postInstall
 | |
|     '';
 | |
|   });
 | |
| 
 | |
|   darwin = stdenvNoCC.mkDerivation (finalAttrs: {
 | |
|     inherit pname meta passthru;
 | |
|     inherit (versions.darwin) version;
 | |
|     src = fetchurl {
 | |
|       inherit (versions.darwin) hash;
 | |
|       url = "https://releases.warp.dev/stable/v${finalAttrs.version}/Warp.dmg";
 | |
|     };
 | |
| 
 | |
|     sourceRoot = ".";
 | |
| 
 | |
|     nativeBuildInputs = [ undmg ];
 | |
| 
 | |
|     installPhase = ''
 | |
|       runHook preInstall
 | |
| 
 | |
|       mkdir -p $out/Applications
 | |
|       cp -r *.app $out/Applications
 | |
| 
 | |
|       runHook postInstall
 | |
|     '';
 | |
|   });
 | |
| 
 | |
|   meta = with lib; {
 | |
|     description = "Rust-based terminal";
 | |
|     homepage = "https://www.warp.dev";
 | |
|     license = licenses.unfree;
 | |
|     sourceProvenance = with lib.sourceTypes; [ binaryNativeCode ];
 | |
|     maintainers = with maintainers; [
 | |
|       imadnyc
 | |
|       donteatoreo
 | |
|       johnrtitor
 | |
|     ];
 | |
|     platforms = platforms.darwin ++ [
 | |
|       "x86_64-linux"
 | |
|       "aarch64-linux"
 | |
|     ];
 | |
|   };
 | |
| 
 | |
| in
 | |
| if stdenvNoCC.hostPlatform.isDarwin then darwin else linux
 | 
