diff options
author | hacker1024 <hacker1024@users.sourceforge.net> | 2024-01-18 14:20:03 +1100 |
---|---|---|
committer | hacker1024 <hacker1024@users.sourceforge.net> | 2024-01-18 14:20:03 +1100 |
commit | 3b33435d02dbe0f41829e97d8880c9f3d4bc60b2 (patch) | |
tree | c9011d28d3c67170f5f4ec3f0e8d55253b190d10 | |
parent | e3b2edadef90b55a6c4c9dcb486e5cc16bca0b87 (diff) |
flutter.buildFlutterApplication: Add multiShell attribute
-rw-r--r-- | doc/languages-frameworks/dart.section.md | 15 | ||||
-rw-r--r-- | pkgs/build-support/flutter/default.nix | 11 |
2 files changed, 21 insertions, 5 deletions
diff --git a/doc/languages-frameworks/dart.section.md b/doc/languages-frameworks/dart.section.md index 9de9a1304c6e9..c12076b8c6cf2 100644 --- a/doc/languages-frameworks/dart.section.md +++ b/doc/languages-frameworks/dart.section.md @@ -80,6 +80,8 @@ Do _not_ use `dart run <package_name>`, as this will attempt to download depende ### Usage with nix-shell {#ssec-dart-applications-nix-shell} +#### Using dependencies from the Nix store {#ssec-dart-applications-nix-shell-deps} + As `buildDartApplication` provides dependencies instead of `pub get`, Dart needs to be explicitly told where to find them. Run the following commands in the source directory to configure Dart appropriately. @@ -120,4 +122,15 @@ flutter.buildFlutterApplication { ### Usage with nix-shell {#ssec-dart-flutter-nix-shell} -See the [Dart documentation](#ssec-dart-applications-nix-shell) for nix-shell instructions. +Flutter-specific `nix-shell` usage notes are included here. See the [Dart documentation](#ssec-dart-applications-nix-shell) for general `nix-shell` instructions. + +#### Entering the shell {#ssec-dart-flutter-nix-shell-enter} + +By default, dependencies for only the `flutterHostPlatform` are available in the +build environment. This is useful for keeping closures small, but be problematic +during development. It's common, for example, to build Web apps for Linux during +development to take advantage of native features such as stateful hot reload. + +To enter a shell with all the usual target platforms available, use the `multiShell` attribute. + +e.g. `nix-shell '<nixpkgs>' -A fluffychat-web.multiShell`. diff --git a/pkgs/build-support/flutter/default.nix b/pkgs/build-support/flutter/default.nix index ff02d907bd5dc..dd49ca4fe2291 100644 --- a/pkgs/build-support/flutter/default.nix +++ b/pkgs/build-support/flutter/default.nix @@ -23,7 +23,7 @@ }@args: let - hostPlatforms = rec { + builderArgs = rec { universal = args // { sdkSetupScript = '' # Pub needs SSL certificates. Dart normally looks in a hardcoded path. @@ -170,7 +170,10 @@ let runHook postInstall ''; }; - }; + }.${flutterHostPlatform} or (throw "Unsupported Flutter host platform: ${flutterHostPlatform}"); + + minimalFlutter = flutter.override { supportedTargetFlutterPlatforms = [ "universal" flutterHostPlatform ]; }; + + buildAppWith = flutter: buildDartApplication.override { dart = flutter; }; in -(buildDartApplication.override { dart = flutter.override { supportedTargetFlutterPlatforms = [ "universal" flutterHostPlatform ]; }; }) - hostPlatforms.${flutterHostPlatform} or (throw "Unsupported Flutter host platform: ${flutterHostPlatform}") +buildAppWith minimalFlutter (builderArgs // { passthru = builderArgs.passthru or { } // { multiShell = buildAppWith flutter builderArgs; }; }) |