From e4df8739b7dc5d2b327669aa3edeff6f2be32c05 Mon Sep 17 00:00:00 2001 From: hacker1024 Date: Mon, 14 Nov 2022 21:17:36 +1100 Subject: [PATCH] flutter: Implement mkFlutter function using barebones FHS environment --- pkgs/development/compilers/flutter/fhs.nix | 119 +++++++++++---------- 1 file changed, 63 insertions(+), 56 deletions(-) diff --git a/pkgs/development/compilers/flutter/fhs.nix b/pkgs/development/compilers/flutter/fhs.nix index 025d94665b5a..bbba89843e8d 100644 --- a/pkgs/development/compilers/flutter/fhs.nix +++ b/pkgs/development/compilers/flutter/fhs.nix @@ -1,71 +1,78 @@ { lib , stdenv +, callPackage , flutter , buildFHSUserEnv , runCommandLocal , supportsAndroidEmulator ? stdenv.isLinux }: -# Wrap flutter inside an fhs user env to allow execution of binary, -# like adb from $ANDROID_HOME or java from android-studio. -buildFHSUserEnv { - name = flutter.name; +let + # Wrap flutter inside an fhs user env to allow execution of binary, + # like adb from $ANDROID_HOME or java from android-studio. + self = buildFHSUserEnv { + name = flutter.name; - multiPkgs = pkgs: with pkgs; ([ - # Flutter only use these certificates - (runCommandLocal "fedoracert" { } '' - mkdir -p $out/etc/pki/tls/ - ln -s ${cacert}/etc/ssl/certs $out/etc/pki/tls/certs - '') - zlib - ]); + multiPkgs = pkgs: with pkgs; ([ + # Flutter only use these certificates + (runCommandLocal "fedoracert" { } '' + mkdir -p $out/etc/pki/tls/ + ln -s ${cacert}/etc/ssl/certs $out/etc/pki/tls/certs + '') + zlib + ]); - targetPkgs = pkgs: with pkgs; ([ - flutter + targetPkgs = pkgs: with pkgs; ([ + flutter - # General ecosystem dependencies - bash - curl - git - unzip - which - xz + # General ecosystem dependencies + bash + curl + git + unzip + which + xz - # flutter test requires this lib - libGLU - ] ++ lib.optional supportsAndroidEmulator [ - # for android emulator - alsa-lib - dbus - expat - libpulseaudio - libuuid - xorg.libX11 - xorg.libxcb - xorg.libXcomposite - xorg.libXcursor - xorg.libXdamage - xorg.libXext - xorg.libXfixes - xorg.libXi - xorg.libXrender - xorg.libXtst - libGL - nspr - nss - systemd - ]); + # flutter test requires this lib + libGLU + ] ++ lib.optional supportsAndroidEmulator [ + # for android emulator + alsa-lib + dbus + expat + libpulseaudio + libuuid + xorg.libX11 + xorg.libxcb + xorg.libXcomposite + xorg.libXcursor + xorg.libXdamage + xorg.libXext + xorg.libXfixes + xorg.libXi + xorg.libXrender + xorg.libXtst + libGL + nspr + nss + systemd + ]); - runScript = "flutter"; + runScript = "flutter"; - passthru = { - inherit flutter; + passthru = flutter.passthru // { + wrapped = flutter; + mkFlutterApp = callPackage ../../../build-support/flutter { + flutter = callPackage ./fhs.nix { supportsAndroidEmulator = false; }; + }; + }; + + meta = flutter.meta // { + longDescription = '' + ${flutter.meta.longDescription} + Wrapped in a FHS environment to improve compatibility with internal tools and tools in the ecosystem. + ''; + }; }; - - meta = flutter.meta // { - longDescription = '' - ${flutter.meta.longDescription} - Wrapped in a FHS environment to improve compatibility with internal tools and tools in the ecosystem. - ''; - }; -} +in +self