diff options
Diffstat (limited to 'users/Profpatsch/writers/default.nix')
-rw-r--r-- | users/Profpatsch/writers/default.nix | 58 |
1 files changed, 56 insertions, 2 deletions
diff --git a/users/Profpatsch/writers/default.nix b/users/Profpatsch/writers/default.nix index 9863f0fae098..4eb354c305ab 100644 --- a/users/Profpatsch/writers/default.nix +++ b/users/Profpatsch/writers/default.nix @@ -1,6 +1,6 @@ { depot, pkgs, lib, ... }: let - bins = depot.nix.getBins pkgs.coreutils ["printf" "mkdir" "cat"]; + bins = depot.nix.getBins pkgs.coreutils ["printf" "mkdir" "cat" "ln"]; inherit (depot.nix.yants) defun struct restrict attrs list string drv any; @@ -11,7 +11,9 @@ let [ "E" "W" ]) string; Libraries = defun [ (attrs any) (list drv) ]; - python3 = name: { + + python3 = { + name, libraries ? (_: []), flakeIgnore ? [] }: pkgs.writers.writePython3 name { @@ -62,12 +64,61 @@ let doCheck = false; }; + rustSimple = args@{name, ...}: src: + linkTo name "${rustSimpleBin args src}/bin/${name}"; + + linkTo = name: path: depot.nix.runExecline.local name {} [ + "importas" "out" "out" + bins.ln "-sT" path "$out" + ]; + + rustSimpleBin = { + name, + dependencies ? [], + ... + }@args: src: pkgs.buildRustCrate ({ + pname = name; + version = "1.0.0"; + crateName = name; + crateBin = [ name ]; + dependencies = dependencies; + src = pkgs.runCommandLocal "write-main.rs" { + src = src; + passAsFile = [ "src" ]; + } '' + mkdir -p $out/src/bin + cp "$srcPath" $out/src/bin/${name}.rs + find $out + ''; + } // args); + + rustSimpleLib = { + name, + dependencies ? [], + ... + }@args: src: pkgs.buildRustCrate ({ + pname = name; + version = "1.0.0"; + crateName = name; + dependencies = dependencies; + src = pkgs.runCommandLocal "write-lib.rs" { + src = src; + passAsFile = [ "src" ]; + } '' + mkdir -p $out/src + cp "$srcPath" $out/src/lib.rs + find $out + ''; + } // args); + tests = import ./tests.nix { inherit depot pkgs python3 python3Lib + rustSimpleLib + rustSimple ; }; @@ -75,6 +126,9 @@ in { inherit python3 python3Lib + rustSimple + rustSimpleBin + rustSimpleLib tests ; } |