about summary refs log tree commit diff
diff options
context:
space:
mode:
authorProfpatsch <mail@profpatsch.de>2020-06-27T03·34+0200
committerProfpatsch <mail@profpatsch.de>2020-06-27T03·42+0000
commit17eba437a77d2de549533c8b27d6f815f4059d1b (patch)
tree4ed978cd9634390d7358ba0f648858b540d7c9a3
parentb6cb20b2d07664ef5926123bb69ce94f44c359bc (diff)
feat(nix/binify): add binify r/1097
Create a store path where the executable `exe` is linked to
$out/bin/${name}. This is useful for e.g. including it as a “package”
in `buildInputs` of a shell.nix.

For example, if I have the exeutable /nix/store/…-hello, I can make it
into /nix/store/…-binify-hello/bin/hello with
`binify { exe = …; name = "hello" }`.

Change-Id: I600bdcd8f143bca2dd8dfbb165a9a5a8d6397622
Reviewed-on: https://cl.tvl.fyi/c/depot/+/624
Reviewed-by: tazjin <mail@tazj.in>
-rw-r--r--nix/binify/default.nix16
-rw-r--r--third_party/default.nix1
2 files changed, 17 insertions, 0 deletions
diff --git a/nix/binify/default.nix b/nix/binify/default.nix
new file mode 100644
index 0000000000..17fd980ad9
--- /dev/null
+++ b/nix/binify/default.nix
@@ -0,0 +1,16 @@
+{ pkgs, lib, ... }:
+
+# Create a store path where the executable `exe`
+# is linked to $out/bin/${name}.
+# This is useful for e.g. including it as a “package”
+# in `buildInputs` of a shell.nix.
+#
+# For example, if I have the exeutable /nix/store/…-hello,
+# I can make it into /nix/store/…-binify-hello/bin/hello
+# with `binify { exe = …; name = "hello" }`.
+{ exe, name }:
+
+pkgs.runCommandLocal "binify-${name}" {} ''
+  mkdir -p $out/bin
+  ln -sT ${lib.escapeShellArg exe} $out/bin/${lib.escapeShellArg name}
+''
diff --git a/third_party/default.nix b/third_party/default.nix
index 934eee1571..7d1e83573a 100644
--- a/third_party/default.nix
+++ b/third_party/default.nix
@@ -115,6 +115,7 @@ let
       rsync
       runCommand
       runCommandNoCC
+      runCommandLocal
       rustPlatform
       rustc
       sbcl