about summary refs log tree commit diff
path: root/nix/writeScript
diff options
context:
space:
mode:
authorProfpatsch <mail@profpatsch.de>2020-06-28T02·52+0200
committerProfpatsch <mail@profpatsch.de>2020-06-30T00·19+0000
commit2f21e0c8c0b47dcf1b29c38a32838f48bd873c0b (patch)
tree885b671e4c9f5ee887700130dc4bfba9926dab49 /nix/writeScript
parent4402c363b6137112716e82b93e946634aefbb600 (diff)
refactor(nix): use our own writeScript(Bin) r/1133
We have this nice `runExecline` now, so we don’t need to use
`runCommand` (which spawns bash) just to write a simple script.

Change-Id: I2941ed8c1448fa1d7cc02dc18b24a8a945b2c38b
Reviewed-on: https://cl.tvl.fyi/c/depot/+/704
Tested-by: BuildkiteCI
Reviewed-by: tazjin <mail@tazj.in>
Reviewed-by: BuildkiteCI
Diffstat (limited to 'nix/writeScript')
-rw-r--r--nix/writeScript/default.nix29
1 files changed, 29 insertions, 0 deletions
diff --git a/nix/writeScript/default.nix b/nix/writeScript/default.nix
new file mode 100644
index 0000000000..e8e6e0fa10
--- /dev/null
+++ b/nix/writeScript/default.nix
@@ -0,0 +1,29 @@
+{ pkgs, depot, ... }:
+
+# Write the given string to $out
+# and make it executable.
+
+let
+  bins = depot.nix.getBins pkgs.s6-portable-utils [
+           "s6-cat"
+           "s6-chmod"
+         ];
+
+in
+name:
+# string of the executable script that is put in $out
+script:
+
+depot.nix.runExecline name {
+  stdin = script;
+  derivationArgs = {
+    preferLocalBuild = true;
+    allowSubstitutes = false;
+  };
+} [
+  "importas" "out" "out"
+  # this pipes stdout of s6-cat to $out
+  # and s6-cat redirects from stdin to stdout
+  "if" [ "redirfd" "-w" "1" "$out" bins.s6-cat ]
+  bins.s6-chmod "0755" "$out"
+]