Warning
This program is experimental ⟨@docroot@/development/experimental-features.md#xp-feature-nix-command⟩ and its interface is subject to change.
Name
nix flake init - create a flake in the current directory from a template
Synopsis
nix flake init [option…]
Examples
- •
-
Create a flake using the default template:
# nix flake init
- •
-
List available templates:
# nix flake show templates
- •
-
Create a flake from a specific template:
# nix flake init -t templates#simpleContainer
Description
This command creates a flake in the current directory by copying the files of a template. It will not overwrite existing files. The default template is templates#templates.default, but this can be overridden using -t.
Template definitions
A flake can declare templates through its templates output attribute. A template has the following attributes:
- •
-
description: A one-line description of the template, in CommonMark syntax.
- •
-
path: The path of the directory to be copied.
- •
-
welcomeText: A block of markdown text to display when a user initializes a new flake based on this template.
Here is an example:
outputs = { self }: {
templates.rust = {
path = ./rust;
description = "A simple Rust/Cargo project";
welcomeText = ''
# Simple Rust/Cargo Template
## Intended usage
The intended usage of this flake is...
## More info
- [Rust language](https://www.rust-lang.org/)
- [Rust on the NixOS Wiki](https://wiki.nixos.org/wiki/Rust)
- ...
'';
};
templates.default = self.templates.rust;
}
Options
- •
-
--template⟨#opt-template⟩ /-ttemplate
-
The template to use.
Common evaluation options
- •
-
--arg⟨#opt-arg⟩ name expr
-
Pass the value expr as the argument name to Nix functions.
- •
-
--arg-from-file⟨#opt-arg-from-file⟩ name path
-
Pass the contents of file path as the argument name to Nix functions.
- •
-
--arg-from-stdin⟨#opt-arg-from-stdin⟩ name
-
Pass the contents of stdin as the argument name to Nix functions.
- •
-
--argstr⟨#opt-argstr⟩ name string
-
Pass the string string as the argument name to Nix functions.
- •
-
--debugger⟨#opt-debugger⟩
-
Start an interactive environment if evaluation fails.
- •
-
--eval-store⟨#opt-eval-store⟩ store-url
-
The URL of the Nix store ⟨@docroot@/store/types/index.md#store-url-format⟩ to use for evaluation, i.e. to store derivations (
.drvfiles) and inputs referenced by them.
- •
-
--impure⟨#opt-impure⟩
-
Allow access to mutable paths and repositories.
- •
-
--include⟨#opt-include⟩ /-Ipath
-
Add path to search path entries used to resolve lookup paths ⟨@docroot@/language/constructs/lookup-path.md⟩
-
This option may be given multiple times.
-
Paths added through
-Itake precedence over thenix-pathconfiguration setting ⟨@docroot@/command-ref/conf-file.md#conf-nix-path⟩ and theNIX_PATHenvironment variable ⟨@docroot@/command-ref/env-common.md#env-NIX_PATH⟩\c .
- •
-
--override-flake⟨#opt-override-flake⟩ original-ref resolved-ref
-
Override the flake registries, redirecting original-ref to resolved-ref.
Logging-related options
- •
-
--debug⟨#opt-debug⟩
-
Set the logging verbosity level to ‘debug’.
- •
-
--log-format⟨#opt-log-format⟩ format
-
Set the format of log output; one of
raw,internal-json,barorbar-with-logs.
- •
-
--print-build-logs⟨#opt-print-build-logs⟩ /-L
-
Print full build logs on standard error.
- •
-
--quiet⟨#opt-quiet⟩
-
Decrease the logging verbosity level.
- •
-
--verbose⟨#opt-verbose⟩ /-v
-
Increase the logging verbosity level.
Miscellaneous global options
- •
-
--help⟨#opt-help⟩
-
Show usage information.
- •
-
--offline⟨#opt-offline⟩
-
Disable substituters and consider all previously downloaded files up-to-date.
- •
-
--option⟨#opt-option⟩ name value
-
Set the Nix configuration setting name to value (overriding
nix.conf).
- •
-
--refresh⟨#opt-refresh⟩
-
Consider all previously downloaded files out-of-date.
- •
-
--repair⟨#opt-repair⟩
-
During evaluation, rewrite missing or corrupted files in the Nix store. During building, rebuild missing or corrupted store paths.
- •
-
--version⟨#opt-version⟩
-
Show version information.
Note
See
man nix.conf⟨@docroot@/command-ref/conf-file.md#command-line-flags⟩ for overriding configuration settings with command line flags.