nix3-flake-init(1)

    Warning
    This program is experimental 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 / -t template

    The template to use.

  Common evaluation options

•   --arg name expr

    Pass the value expr as the argument name to Nix functions.

•   --arg-from-file name path

    Pass the contents of file path as the argument name to Nix functions.

•   --arg-from-stdin name

    Pass the contents of stdin as the argument name to Nix functions.

•   --argstr name string

    Pass the string string as the argument name to Nix functions.

•   --debugger

    Start an interactive environment if evaluation fails.

•   --eval-store store-url

    The URL of the Nix store to use for evaluation, i.e. to store derivations (.drv files) and inputs referenced by them.

•   --impure

    Allow access to mutable paths and repositories.

•   --include / -I path

    Add path to search path entries used to resolve lookup paths

    This option may be given multiple times.

    Paths added through -I take precedence over the nix-path configuration setting and the NIX_PATH environment variable.

•   --override-flake original-ref resolved-ref

    Override the flake registries, redirecting original-ref to resolved-ref.

  Logging-related options

•   --debug

    Set the logging verbosity level to ‘debug’.

•   --log-format format

    Set the format of log output; one of raw, internal-json, bar or bar-with-logs.

•   --print-build-logs / -L

    Print full build logs on standard error.

•   --quiet

    Decrease the logging verbosity level.

•   --verbose / -v

    Increase the logging verbosity level.

  Miscellaneous global options

•   --help

    Show usage information.

•   --offline

    Disable substituters and consider all previously downloaded files up-to-date.

•   --option name value

    Set the Nix configuration setting name to value (overriding nix.conf).

•   --refresh

    Consider all previously downloaded files out-of-date.

•   --repair

    During evaluation, rewrite missing or corrupted files in the Nix store. During building, rebuild missing or corrupted store paths.

•   --version

    Show version information.

    Note

    See man nix.conf for overriding configuration settings with command line flags.