From 782c8b44ddda7b5c51ad22d388d93bb39f05586e Mon Sep 17 00:00:00 2001 From: Gabriel Fontes Date: Thu, 4 May 2023 20:20:03 -0300 Subject: buildDartApplication: init This adds a function for easily packaging non-flutter dart apps. --- doc/languages-frameworks/dart.section.md | 36 ++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 doc/languages-frameworks/dart.section.md (limited to 'doc/languages-frameworks/dart.section.md') diff --git a/doc/languages-frameworks/dart.section.md b/doc/languages-frameworks/dart.section.md new file mode 100644 index 000000000000..eb7c82748ad6 --- /dev/null +++ b/doc/languages-frameworks/dart.section.md @@ -0,0 +1,36 @@ +# Dart {#sec-language-dart} + +## Dart applications {#ssec-dart-applications} + +The function `buildDartApplication` builds Dart applications managed with pub. + +It fetches its Dart dependencies automatically through `fetchDartDeps`, and (through a series of hooks) builds and installs the executables specified in the pubspec file. The hooks can be used in other derivations, if needed. The phases can also be overridden to do something different from installing binaries. + +If you are packaging a Flutter desktop application, use the `buildFlutterApplication` function instead. + +`vendorHash`: is the hash of the output of the dependency fetcher derivation. To obtain it, simply set it to `lib.fakeHash` (or omit it) and run the build ([more details here](#sec-source-hashes)). + +If the upstream source is missing a `pubspec.lock` file, you'll have to vendor one and specify it using `pubspecLockFile`. If it is needed, one will be generated for you and printed when attempting to build the derivation. + +The `dart` commands run can be overridden through `pubGetScript` and `dartCompileCommand`, you can also add flags using `dartCompileFlags` or `dartJitFlags`. + +Dart supports multiple [outputs types](https://dart.dev/tools/dart-compile#types-of-output), you can choose between them using `dartOutputType` (defaults to `exe`). If you want to override the binaries path or the source path they come from, you can use `dartEntryPoints`. Outputs that require a runtime will automatically be wrapped with the relevant runtime (`dartaotruntime` for `aot-snapshot`, `dart run` for `jit-snapshot` and `kernel`, `node` for `js`), this can be overridden through `dartRuntimeCommand`. + +```nix +{ buildDartApplication, fetchFromGitHub }: + +buildDartApplication rec { + pname = "dart-sass"; + version = "1.62.1"; + + src = fetchFromGitHub { + owner = "sass"; + repo = pname; + rev = version; + hash = "sha256-U6enz8yJcc4Wf8m54eYIAnVg/jsGi247Wy8lp1r1wg4="; + }; + + pubspecLockFile = ./pubspec.lock; + vendorHash = "sha256-Atm7zfnDambN/BmmUf4BG0yUz/y6xWzf0reDw3Ad41s="; +} +``` -- cgit 1.4.1