Generate Nix packages from URLs with hash prefetching, dependency inference, license detection, and more [maintainer=@figsoda]
Go to file
dependabot[bot] 78da5e2a2a
build(deps): bump toml from 0.8.0 to 0.8.1
Bumps [toml](https://github.com/toml-rs/toml) from 0.8.0 to 0.8.1.
- [Commits](https://github.com/toml-rs/toml/compare/toml-v0.8.0...toml-v0.8.1)

---
updated-dependencies:
- dependency-name: toml
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-09-27 09:03:20 +00:00
.github build(deps): bump actions/checkout from 3 to 4 2023-09-05 08:32:09 +00:00
assets assets: add readme 2023-04-21 12:25:09 -04:00
license-store-cache update rustfmt.toml 2023-07-01 16:50:45 -04:00
scripts rust: add tests for dependency inference 2023-03-18 11:50:26 -04:00
src rust(deps): add libwebp-sys2 2023-09-22 11:31:16 -04:00
.gitignore move license store cache to its own derivation 2023-03-12 12:30:13 -04:00
build.rs update rustfmt.toml 2023-07-01 16:50:45 -04:00
Cargo.lock build(deps): bump toml from 0.8.0 to 0.8.1 2023-09-27 09:03:20 +00:00
Cargo.toml build(deps): bump toml from 0.8.0 to 0.8.1 2023-09-27 09:03:20 +00:00
CHANGELOG.md changelog: fix typo 2023-09-17 10:18:56 -04:00
flake.lock update dependencies 2023-08-05 10:32:09 -04:00
flake.nix flake: small clean up 2023-09-18 16:46:16 -04:00
LICENSE initial commit 2023-01-18 14:35:23 -05:00
README.md readme: remove deps badge 2023-09-08 14:20:06 -04:00
rustfmt.toml update rustfmt.toml 2023-07-01 16:50:45 -04:00

nix-init

matrix release version license ci

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

  • Hash prefetching powered by nurl with support for cargoHash and vendorHash
  • Dependency inference for Rust, Go, and Python projects
  • Interactive prompts with fuzzy tab completions
  • License detection

Installation

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

Usage: nix-init [OPTIONS] [OUTPUT]

Arguments:
  [OUTPUT]  The path or directory to output the generated file to

Options:
  -u, --url <URL>          Specify the 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
  -V, --version            Print version

Supported builders

  • stdenv.mkDerivation
  • buildRustPackage
  • buildPythonApplication and buildPythonPackage
  • buildGoModule

Supported fetchers

  • fetchCrate
  • fetchFromGitHub
  • fetchFromGitLab
  • fetchFromGitea
  • fetchPypi
  • All other fetchers supported by nurl are also supported, you just have to manually input the tag/revision of the package

Configuration

nix-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"

Changelog

See CHANGELOG.md