about summary refs log tree commit diff
path: root/pkgs/profpatsch/write-rust.nix
diff options
context:
space:
mode:
authorProfpatsch <mail@profpatsch.de>2020-06-02 21:42:10 +0200
committerProfpatsch <mail@profpatsch.de>2020-06-02 21:42:10 +0200
commitc7aaf0b2c7c49b672e0ed5c52ad9003d41ef4af4 (patch)
treeb9a8e2804f4e8758aa2b2d31e4853156983a4490 /pkgs/profpatsch/write-rust.nix
parent58c640dcccdec34c8892c3f70120fe1ed493f87a (diff)
pkgs/profpatsch: writeRustSimple, wrapper around buildRustCrate
Diffstat (limited to 'pkgs/profpatsch/write-rust.nix')
-rw-r--r--pkgs/profpatsch/write-rust.nix44
1 files changed, 44 insertions, 0 deletions
diff --git a/pkgs/profpatsch/write-rust.nix b/pkgs/profpatsch/write-rust.nix
new file mode 100644
index 00000000..bf6c1eb2
--- /dev/null
+++ b/pkgs/profpatsch/write-rust.nix
@@ -0,0 +1,44 @@
+{ pkgs, runExeclineLocal, getBins }:
+let
+  bins = getBins pkgs.coreutils [ "ln" ];
+
+  writeRustSimple = name: args: srcFile:
+    linkTo name "${writeRustSimpleBin name args srcFile}/bin/${name}";
+
+  linkTo = name: path: runExeclineLocal name {} [
+    "importas" "out" "out"
+    bins.ln "-sT" path "$out"
+  ];
+
+  writeRustSimpleBin = name: { dependencies ? [], ... }@args: srcFile: pkgs.buildRustCrate ({
+      pname = name;
+      version = "1.0.0";
+      crateName = name;
+      crateBin = [ name ];
+      dependencies = dependencies;
+      src = pkgs.runCommandLocal "write-main.rs" {} ''
+        mkdir -p $out/src/bin
+        cp ${srcFile} $out/src/bin/${name}.rs
+        find $out
+      '';
+    } // args);
+
+  writeRustSimpleLib = name: { dependencies ? [], ... }@args: srcFile: pkgs.buildRustCrate ({
+      pname = name;
+      version = "1.0.0";
+      crateName = name;
+      dependencies = dependencies;
+      src = pkgs.runCommandLocal "write-lib.rs" {} ''
+        mkdir -p $out/src
+        cp ${srcFile} $out/src/lib.rs
+        find $out
+      '';
+    } // args);
+
+in {
+  inherit
+    writeRustSimple
+    writeRustSimpleBin
+    writeRustSimpleLib
+    ;
+}