Generate Nix packages from URLs with hash prefetching, dependency inference, license detection, and more [maintainer=@figsoda]
Rust
1,484
1,424 commits
updated Oct 15, 2026
Generate Nix packages from URLs
Note: It is likely that the generated package will not work without some tweaks, also remember to double check the license and description even if it does work
cargoHash and
vendorHash
The latest release of nix-init is packaged in nixpkgs and kept up to date on the unstable branches
If you want to use a more recent snapshot of nix-init, it is also available as a
flake. The following command is equivalent to running nix-init --help:
nix run github:nix-community/nix-init -- --help
or if you don't have flakes enabled:
nix run --extra-experimental-features "flakes nix-command" github:nix-community/nix-init -- --help
Usage: nix-init [OPTIONS] [OUTPUT]
Arguments:
[OUTPUT] The path or directory to output the generated file to
Options:
-u, --url <URL> Specify the URL
--rev <REV> Specify the tag or revision
-S, --submodules[=<SUBMODULES>] Always fetch submodules when possible [possible values: true, false]
-V, --version [<VERSION>] Specify the version of the package, or print nix-init version if no arguments are present
--pname <PNAME> Specify the pname
--builder <BUILDER> Specify the builder
--cargo-vendor <CARGO_VENDOR> Specify how the cargo dependencies are vendored [possible values: fetchCargoVendor, importCargoLock]
-y, --overwrite[=<OVERWRITE>] Always overwrite files [possible values: true, false]
--headless Don't prompt for anything (requires --url)
-n, --nixpkgs <NIXPKGS> Path to nixpkgs (in nix)
-C, --commit[=<COMMIT>] Commit the changes if the output path is name-based (RFC 140) [possible values: true, false]
-c, --config <CONFIG> Specify the config file
-h, --help Print help (see more with '--help')
stdenv.mkDerivation and stdenvNoCC.mkDerivationbuildRustPackagebuildPythonApplication and buildPythonPackagebuildGoModulebuildNpmPackagefetchCratefetchFromGitHubfetchFromGitLabfetchFromGiteafetchPypinix-init will try to find nix-init/config.toml under XDG configuration
directories
# ~/.config/nix-init/config.toml
# maintainers that will get added to the package meta
maintainers = ["figsoda"]
# path to nixpkgs (in nix), equivalent to `--nixpkgs`
nixpkgs = "<nixpkgs>" # use the nixpkgs from channels (default)
# nixpkgs = 'builtins.getFlake "nixpkgs"' # use the nixpkgs from the flake registry
# commit the changes if the output path is name-based (RFC 140)
# see https://github.com/NixOS/nixpkgs/tree/master/pkgs/by-name for more information
commit = true
# access tokens to access private repositories and avoid rate limits
[access-tokens]
"github.com" = "ghp_blahblahblah..."
"gitlab.com".command = ["secret-tool", "or", "whatever", "you", "use"]
"gitlab.gnome.org".file = "/path/to/api/token"
# if unspecified, nix-init tries to format the output file with nixfmt if it's found in PATH
# the formatter should take a Nix file from stdin and output the formatted file to stdout
[format]
command = ["alejandra"]
See CHANGELOG.md
(top 24 of 191)
376 followers · starred Oct 2026
381 followers · starred Jul 2023
1,890 followers · starred Jan 2023
148 followers · starred Mar 2023
Generate Nix packages from URLs with hash prefetching, dependency inference, license detection, and more [maintainer=@figsoda]
Rust
1,484
1,424 commits
updated Oct 15, 2026
Generate Nix packages from URLs
Note: It is likely that the generated package will not work without some tweaks, also remember to double check the license and description even if it does work
cargoHash and
vendorHash
The latest release of nix-init is packaged in nixpkgs and kept up to date on the unstable branches
If you want to use a more recent snapshot of nix-init, it is also available as a
flake. The following command is equivalent to running nix-init --help:
nix run github:nix-community/nix-init -- --help
or if you don't have flakes enabled:
nix run --extra-experimental-features "flakes nix-command" github:nix-community/nix-init -- --help
Usage: nix-init [OPTIONS] [OUTPUT]
Arguments:
[OUTPUT] The path or directory to output the generated file to
Options:
-u, --url <URL> Specify the URL
--rev <REV> Specify the tag or revision
-S, --submodules[=<SUBMODULES>] Always fetch submodules when possible [possible values: true, false]
-V, --version [<VERSION>] Specify the version of the package, or print nix-init version if no arguments are present
--pname <PNAME> Specify the pname
--builder <BUILDER> Specify the builder
--cargo-vendor <CARGO_VENDOR> Specify how the cargo dependencies are vendored [possible values: fetchCargoVendor, importCargoLock]
-y, --overwrite[=<OVERWRITE>] Always overwrite files [possible values: true, false]
--headless Don't prompt for anything (requires --url)
-n, --nixpkgs <NIXPKGS> Path to nixpkgs (in nix)
-C, --commit[=<COMMIT>] Commit the changes if the output path is name-based (RFC 140) [possible values: true, false]
-c, --config <CONFIG> Specify the config file
-h, --help Print help (see more with '--help')
stdenv.mkDerivation and stdenvNoCC.mkDerivationbuildRustPackagebuildPythonApplication and buildPythonPackagebuildGoModulebuildNpmPackagefetchCratefetchFromGitHubfetchFromGitLabfetchFromGiteafetchPypinix-init will try to find nix-init/config.toml under XDG configuration
directories
# ~/.config/nix-init/config.toml
# maintainers that will get added to the package meta
maintainers = ["figsoda"]
# path to nixpkgs (in nix), equivalent to `--nixpkgs`
nixpkgs = "<nixpkgs>" # use the nixpkgs from channels (default)
# nixpkgs = 'builtins.getFlake "nixpkgs"' # use the nixpkgs from the flake registry
# commit the changes if the output path is name-based (RFC 140)
# see https://github.com/NixOS/nixpkgs/tree/master/pkgs/by-name for more information
commit = true
# access tokens to access private repositories and avoid rate limits
[access-tokens]
"github.com" = "ghp_blahblahblah..."
"gitlab.com".command = ["secret-tool", "or", "whatever", "you", "use"]
"gitlab.gnome.org".file = "/path/to/api/token"
# if unspecified, nix-init tries to format the output file with nixfmt if it's found in PATH
# the formatter should take a Nix file from stdin and output the formatted file to stdout
[format]
command = ["alejandra"]
See CHANGELOG.md
(top 24 of 191)
376 followers · starred Oct 2026
381 followers · starred Jul 2023
1,890 followers · starred Jan 2023
148 followers · starred Mar 2023