From b5015b5865d8e8f8b64f99746a571b708e9b776f Mon Sep 17 00:00:00 2001 From: Profpatsch Date: Fri, 1 Jan 2021 12:27:20 +0100 Subject: 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`. --- pkgs/profpatsch/default.nix | 6 ++++++ pkgs/profpatsch/execline/nixecline.nix | 16 ++++++++++++++++ pkgs/profpatsch/nix-tools.nix | 18 ++++++++++++++++++ 3 files changed, 40 insertions(+) create mode 100644 pkgs/profpatsch/execline/nixecline.nix create mode 100644 pkgs/profpatsch/nix-tools.nix (limited to 'pkgs/profpatsch') 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 + ; +} -- cgit 1.4.1