Project bootstrap

Start with
nox init.

Analyze an existing directory or create a new one, then generate the smallest useful Nox project around what is already there.

The command

Initialize from the project root.

nox init
nox init my-project
nox init my-project --language rust --type executable
nox init --language c --formatter

With no name, Nox uses the current directory. A relative name is created below the current directory; an absolute name is used as given. Use --name when automation needs an explicit project name.

Analysis

It looks before it writes.

Nox reports detected languages, package manifests, source files, tests, Git, Nix, and an existing nox.build. A single detected language is selected automatically. Multiple languages are offered interactively; a non-interactive empty directory defaults to Rust. Project type is inferred when possible and otherwise defaults to an executable.

Existing files are preserved. Generated files are written only when absent, including nox.build, language manifests,noxfile, flake.nix, README, formatter config, and .gitignore.

Answers

Make automation explicit.

--name NAMESet the generated project name.

--language LANGChoose rust, c, cpp, haskell, d, swift, javascript, typescript, python, or fsharp.

--type TYPEChoose executable or library.

--template NAMEAccepted by the CLI for template selection; template generation is not implemented yet.

--formatterGenerate the supported formatter config and, with Nix, a formatter helper.

--no-nix / --no-noxfileSkip the generated flake or task file.

Generated shape

A usable first build.

nox init hello --language c
nox setup build
nox build
nox run hello

Empty projects receive a hello-world source in the language’s conventional location and a matching target. Rust, JavaScript, TypeScript, Swift, and Python also receive their ecosystem manifest when it is missing. The generated README includes the first build commands.