diff options
author | hacker1024 <hacker1024@users.sourceforge.net> | 2023-04-16 19:52:42 +1000 |
---|---|---|
committer | hacker1024 <hacker1024@users.sourceforge.net> | 2023-04-16 21:20:25 +1000 |
commit | 17cb291df1d84b89e4aba1fc085333038c9736c3 (patch) | |
tree | fbf0eb8f752ea2f95fa384652151238cb9f1ed07 /pkgs/development/compilers/flutter/wrapper.nix | |
parent | bbfc7911d3e5bbc1a4abb59fbc73b3059df4a705 (diff) | |
download | nixpkgs-17cb291df1d84b89e4aba1fc085333038c9736c3.tar nixpkgs-17cb291df1d84b89e4aba1fc085333038c9736c3.tar.gz nixpkgs-17cb291df1d84b89e4aba1fc085333038c9736c3.tar.bz2 nixpkgs-17cb291df1d84b89e4aba1fc085333038c9736c3.tar.lz nixpkgs-17cb291df1d84b89e4aba1fc085333038c9736c3.tar.xz nixpkgs-17cb291df1d84b89e4aba1fc085333038c9736c3.tar.zst nixpkgs-17cb291df1d84b89e4aba1fc085333038c9736c3.zip |
flutter: Allow adding extra dependencies to the wrapper
Flutter application derivations can add dependencies and build flags, but it's not as easy during development. As an alternative to nix-shell, a custom Flutter wrapper can be built with dependencies required by projects. This feature builds on the existing build environment setup techniques required for Linux desktop support, so is fairly cheap to maintain.
Diffstat (limited to 'pkgs/development/compilers/flutter/wrapper.nix')
-rw-r--r-- | pkgs/development/compilers/flutter/wrapper.nix | 17 |
1 files changed, 12 insertions, 5 deletions
diff --git a/pkgs/development/compilers/flutter/wrapper.nix b/pkgs/development/compilers/flutter/wrapper.nix index fe7d95b6180..114465fd0ef 100644 --- a/pkgs/development/compilers/flutter/wrapper.nix +++ b/pkgs/development/compilers/flutter/wrapper.nix @@ -3,6 +3,12 @@ , callPackage , flutter , supportsLinuxDesktop ? stdenv.isLinux +, extraPkgConfigPackages ? [ ] +, extraLibraries ? [ ] +, extraIncludes ? [ ] +, extraCxxFlags ? [ ] +, extraCFlags ? [ ] +, extraLinkerFlags ? [ ] , makeWrapper , runCommandLocal , writeShellScript @@ -62,7 +68,7 @@ let # Some header files and libraries are not properly located by the Flutter SDK. # They must be manually included. - appStaticBuildDeps = lib.optionals supportsLinuxDesktop [ libX11 xorgproto zlib ]; + appStaticBuildDeps = (lib.optionals supportsLinuxDesktop [ libX11 xorgproto zlib ]) ++ extraLibraries; # Tools used by the Flutter SDK to compile applications. buildTools = lib.optionals supportsLinuxDesktop [ @@ -73,9 +79,9 @@ let ]; # Nix-specific compiler configuration. - pkgConfigDirectories = builtins.filter builtins.pathExists (builtins.concatMap (pkg: map (dir: "${lib.getOutput "dev" pkg}/${dir}/pkgconfig") [ "lib" "share" ]) appBuildDeps); - cppFlags = map (pkg: "-isystem ${lib.getOutput "dev" pkg}/include") appStaticBuildDeps; - linkerFlags = map (pkg: "-rpath,${lib.getOutput "lib" pkg}/lib") appRuntimeDeps; + pkgConfigDirectories = builtins.filter builtins.pathExists (builtins.concatMap (pkg: map (dir: "${lib.getOutput "dev" pkg}/${dir}/pkgconfig") [ "lib" "share" ]) (appBuildDeps ++ extraPkgConfigPackages)); + includeFlags = map (pkg: "-isystem ${lib.getOutput "dev" pkg}/include") (appStaticBuildDeps ++ extraIncludes); + linkerFlags = (map (pkg: "-rpath,${lib.getOutput "lib" pkg}/lib") appRuntimeDeps) ++ extraLinkerFlags; in (callPackage ./sdk-symlink.nix { }) (runCommandLocal "flutter-wrapped" { @@ -94,6 +100,7 @@ in --prefix PATH : '${lib.makeBinPath (tools ++ buildTools)}' \ --prefix PKG_CONFIG_PATH : '${builtins.concatStringsSep ":" pkgConfigDirectories}' \ --prefix LIBRARY_PATH : '${lib.makeLibraryPath appStaticBuildDeps}' \ - --prefix CXXFLAGS "''\t" '${builtins.concatStringsSep " " cppFlags}' \ + --prefix CXXFLAGS "''\t" '${builtins.concatStringsSep " " (includeFlags ++ extraCxxFlags)}' \ + --prefix CFLAGS "''\t" '${builtins.concatStringsSep " " (includeFlags ++ extraCFlags)}' \ --prefix LDFLAGS "''\t" '${builtins.concatStringsSep " " (map (flag: "-Wl,${flag}") linkerFlags)}' '') |