on jam@export-create-process help sign in
45 lines 1.4 kB history raw
1# This module exposes a tool for several platforms that can be used to inject
2# configuration information into a canonical location. It also provides a haskell
3# package that can be used to retrieve the injected configuration on each supported
4# platform.
5{ lib
6, runCommand
7, obeliskCleanSource
8}:
10let
11 injectConfig = config: assets: runCommand "inject-config" {} (''
12 set -x
13 mkdir -p $out
14 cp --no-preserve=mode -Lr "${assets}" $out/static
15 chmod +w "$out"
16 '' + lib.optionalString (!(builtins.isNull config)) ''
17 if ! mkdir $out/config; then
18 2>&1 echo config directory already exists or could not be created
19 exit 1
20 fi
21 cp -a "${config}"/* "$out/config"
22 # Needed for android deployments
23 find "$out/config" -type f -printf '%P\0' > "$out/config.files"
24 '');
25in
28 haskellOverlay = self: super: {
29 obelisk-executable-config-lookup = self.callCabal2nix "obelisk-executable-config-lookup" (obeliskCleanSource ./lookup) {};
30 };
32 platforms = {
33 android = {
34 # Inject the given config directory into an android assets folder
35 inject = injectConfig;
36 };
37 ios = {
38 # Inject the given config directory into an iOS app
39 inject = injectConfig;
40 };
41 web = {
42 inject = self: self.callCabal2nix "obelisk-executable-config-inject" (obeliskCleanSource ./inject) {};
43 };
44 };