about summary refs log tree commit diff
path: root/pkgs
diff options
context:
space:
mode:
authorProfpatsch <mail@profpatsch.de>2021-01-01 12:27:20 +0100
committerProfpatsch <mail@profpatsch.de>2021-01-01 12:27:20 +0100
commitb5015b5865d8e8f8b64f99746a571b708e9b776f (patch)
tree55087666a194b810f8848ba539118f6354092cd9 /pkgs
parent47a8bf4dd2cb1f6778b38bc2f4990ba72366d5a9 (diff)
pkgs/profpatsch: add nix-run
Small tool which takes a block of nix options that should produce a
script to run, and then calls the script with the rest of argv

    e nix-run { -A foobar } a b c

calls `nix-build -A foobar && ./result a b c`.
Diffstat (limited to 'pkgs')
-rw-r--r--pkgs/profpatsch/default.nix6
-rw-r--r--pkgs/profpatsch/execline/nixecline.nix16
-rw-r--r--pkgs/profpatsch/nix-tools.nix18
3 files changed, 40 insertions, 0 deletions
diff --git a/pkgs/profpatsch/default.nix b/pkgs/profpatsch/default.nix
index 0c37387a..e3c65803 100644
--- a/pkgs/profpatsch/default.nix
+++ b/pkgs/profpatsch/default.nix
@@ -169,6 +169,8 @@ in rec {
     writeExecline writeExeclineBin;
   inherit (import ./execline/runblock.nix { inherit pkgs; })
     runblock;
+  inherit (import ./execline/nixecline.nix { inherit writeExecline; })
+    backtick;
   inherit (import ./execline/e.nix { inherit pkgs writeExecline getBins; })
     e;
 
@@ -193,6 +195,10 @@ in rec {
     importas-if
     ;
 
+  inherit (import ./nix-tools.nix { inherit pkgs getBins writeExecline runblock backtick; })
+    nix-run
+    ;
+
 
   easy-dhall-nix = (import (pkgs.fetchFromGitHub {
     owner = "justinwoo";
diff --git a/pkgs/profpatsch/execline/nixecline.nix b/pkgs/profpatsch/execline/nixecline.nix
new file mode 100644
index 00000000..518bce2e
--- /dev/null
+++ b/pkgs/profpatsch/execline/nixecline.nix
@@ -0,0 +1,16 @@
+# wrappers around execline commands ensuring sane default behaviours
+{ writeExecline }:
+
+let
+  backtick = {
+    var,
+    cmd,
+    importVar ? [ "importas" "-ui" var var ]
+  }: writeExecline "nix-backtick" {}
+    ([ "backtick" "-in" var cmd ]
+    ++ importVar
+    ++ [ "$@" ]);
+
+in {
+ inherit backtick;
+}
diff --git a/pkgs/profpatsch/nix-tools.nix b/pkgs/profpatsch/nix-tools.nix
new file mode 100644
index 00000000..9b6eb339
--- /dev/null
+++ b/pkgs/profpatsch/nix-tools.nix
@@ -0,0 +1,18 @@
+{ pkgs, writeExecline, backtick, runblock, getBins }:
+
+let
+  bins = getBins pkgs.nix [ "nix-build" ];
+
+  nix-run = writeExecline "nix-run" { argMode = "env"; } [
+    (backtick {
+      var = "storepath";
+      cmd = [ runblock "1" bins.nix-build ];
+    })
+    runblock "-r" "2" "exec" "$storepath"
+  ];
+
+in {
+  inherit
+    nix-run
+    ;
+}