Makes Nushell "support" background tasks.
Note: Nushell has native background jobs support through the job command.
The task commands introduced here spawn new and independent processes rather than background threads like job.
The task processes will keep running even when you exit the current Nushell process, the job background threads will not.
Install pueue and make sure pueued is running and that pueue is in PATH.
You will get tab completions and suggestions when you install the module. Please check those.
To install the module, copy the task.nu to the $env.NU_LIB_DIRS directory, then do:
use task.nuIn your Nushell config under ~/.config/nushell.
You can use environment variables, since they are inherited from the parent when spawning a process.
$env.FOO = 123
task spawn {
echo $env.FOO
}If you want to pass serialized data, you can do this:
let foo = { a: 1 b: 2 c: 3 }
with-env { FOO: ($foo | to json) } {
task spawn {
let foo = ($env.FOO | from json)
echo $foo
}
}You can define these commands in a separate module, like so:
# --- in foo.nu ---
export def bar [] { echo bar }
# --- in main.nu ---
task spawn {
use foo.nu
foo bar
}- On some setups (e.g. NixOS with
nuinstalled as a binary in user's$HOME),sh(whichpueuedelegates tasks to run) might fail to findnuin the$PATH. In this case hard-coding the location of your nu binary in thetask spawnfunction definition intask.nucan solve the issue.