mirror of
https://github.com/NixOS/nix
synced 2025-07-07 10:11:47 +02:00
Move shebang docs from rl-next to nix.md
This commit is contained in:
parent
51bb69535b
commit
e91fd837ee
2 changed files with 61 additions and 48 deletions
|
@ -238,4 +238,65 @@ operate are determined as follows:
|
|||
Most `nix` subcommands operate on a *Nix store*. These are documented
|
||||
in [`nix help-stores`](./nix3-help-stores.md).
|
||||
|
||||
# Shebang interpreter
|
||||
|
||||
The `nix` command can be used as a `#!` interpreter.
|
||||
Arguments to Nix can be passed on subsequent lines in the script.
|
||||
|
||||
Verbatim strings may be passed in double backtick (```` `` ````) quotes.
|
||||
|
||||
`--file` and `--expr` resolve relative paths based on the script location.
|
||||
|
||||
Examples:
|
||||
|
||||
```
|
||||
#!/usr/bin/env nix
|
||||
#! nix shell --file ``<nixpkgs>`` hello cowsay --command bash
|
||||
|
||||
hello | cowsay
|
||||
```
|
||||
|
||||
or with **flakes**:
|
||||
|
||||
```
|
||||
#!/usr/bin/env nix
|
||||
#! nix shell nixpkgs#bash nixpkgs#hello nixpkgs#cowsay --command bash
|
||||
|
||||
hello | cowsay
|
||||
```
|
||||
|
||||
or with an **expression**:
|
||||
|
||||
```bash
|
||||
#! /usr/bin/env nix
|
||||
#! nix shell --impure --expr ``
|
||||
#! nix with (import (builtins.getFlake "nixpkgs") {});
|
||||
#! nix terraform.withPlugins (plugins: [ plugins.openstack ])
|
||||
#! nix ``
|
||||
#! nix --command bash
|
||||
|
||||
terraform "$@"
|
||||
```
|
||||
|
||||
or with cascading interpreters. Note that the `#! nix` lines don't need to follow after the first line, to accomodate other interpreters.
|
||||
|
||||
```
|
||||
#!/usr/bin/env nix
|
||||
//! ```cargo
|
||||
//! [dependencies]
|
||||
//! time = "0.1.25"
|
||||
//! ```
|
||||
/*
|
||||
#!nix shell nixpkgs#rustc nixpkgs#rust-script nixpkgs#cargo --command rust-script
|
||||
*/
|
||||
fn main() {
|
||||
for argument in std::env::args().skip(1) {
|
||||
println!("{}", argument);
|
||||
};
|
||||
println!("{}", std::env::var("HOME").expect(""));
|
||||
println!("{}", time::now().rfc822z());
|
||||
}
|
||||
// vim: ft=rust
|
||||
```
|
||||
|
||||
)""
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue