Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/yusdacra/rust-nix-templater
Generates Nix build / dev files for Rust projects.
https://github.com/yusdacra/rust-nix-templater
cargo flakes generator naersk nix rust
Last synced: about 1 month ago
JSON representation
Generates Nix build / dev files for Rust projects.
- Host: GitHub
- URL: https://github.com/yusdacra/rust-nix-templater
- Owner: yusdacra
- License: mit
- Archived: true
- Created: 2021-01-04T15:40:01.000Z (almost 4 years ago)
- Default Branch: master
- Last Pushed: 2023-03-14T02:45:44.000Z (over 1 year ago)
- Last Synced: 2024-09-24T01:04:27.417Z (about 2 months ago)
- Topics: cargo, flakes, generator, naersk, nix, rust
- Language: Rust
- Homepage:
- Size: 249 KB
- Stars: 49
- Watchers: 3
- Forks: 1
- Open Issues: 4
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
- awesome-nix - rust-nix-templater - Generates Nix build and development files for Rust projects. (Programming Languages / Rust)
README
# THIS PROJECT IS NO LONGER MAINTAINED
# rust-nix-templater
Generates Rust projects that use [nix-cargo-integration].
## Features
- Support for both flakes and legacy nix
- Cachix support
- Desktop file generation
- CI file generation (GitHub Actions and GitLab CI)
- Creates Cargo project if one is not found in output directory
- See [nix-cargo-integration] for more information.## Installation
Run without installing by executing `nix run github:yusdacra/rust-nix-templater -- --help`.
- Flakes: `nix profile install github:yusdacra/rust-nix-templater`
- Legacy: `nix-env -i -f "https://github.com/yusdacra/rust-nix-templater/tarball/master"`## Examples
Simple:
```ShellSession
rust-nix-templater -l mit -n example
# is equal to
rust-nix-templater --license mit --name example
```This will generate files in the current directory, with license set to `mit` and package name set to `example`.
It will generate both build and development environment files.
If the current directory doesn't already have a Cargo project, this will create one.For a project that is hosted on GitHub:
```ShellSession
rust-nix-templater --github-ci -l mit -n example
# is equal to
rust-nix-templater --github-ci -l mit -n example
```This will do what the first example does and also generate a GitHub Actions workflow.
For more options please check `rust-nix-templater --help`.
## Usage
```
rust-nix-templater 0.4.0
Generates Nix files for Rust projects which uses naerskUSAGE:
rust-nix-templater [FLAGS] [OPTIONS]FLAGS:
-A, --no-app Whether to disable app output for flake
--disable-build Disable app / builds flake output generation
--github-ci Enable GitHub Actions file generation
--gitlab-ci Enable GitLab CI file generation
--help Prints help information
-V, --version Prints version informationOPTIONS:
--cachix-name Cachix cache name. [example: --cachix-name rust-nix-templater]
--cachix-public-key
Cachix cache public key. [example: --cachix-public-key "rust-nix-templater.cachix.org-
1:Tmy1V0KK+nxzg0XFePL/++t4JRKAw5tvr+FNfHz7mIY=""]
-o, --out-dir
Output directory where generated files will be put in. [example: -o example] [default: .]-d, --description A short, single line description of the package
-h, --homepage
Homepage of the package. [example: -h "https://gitlab.com/example/example"]--icon
Icon to use in the generated desktop file. [example: --icon assets/icon.ico]-l, --license
License of the package. Must be a valid Cargo.toml license. [example: mit]-D, --long-description A longer description of the package
-n, --name
Name of the package. Must be passed when also creating a Cargo project. [example: icy_matrix]-s, --systems ...
Systems that the package is supported on. [example: -s x86_64-linux x86_64-darwin] [default: nixpkgs default
systems]
--xdg-categories
Categories to put in the generated desktop file. [example: --xdg-categories "Network;InstantMessaging;"]--xdg-comment
Comment to put in the generated desktop file. [default: package description]--xdg-desktop-name
Desktop name to put in the generated desktop file. Defaults to package name. [example: --xdg-desktop-name
"Icy Matrix"]
--xdg-generic-name
Generic name to put in the generated desktop file. [example: --xdg-generic-name "Matrix Client"]
```## Development
### Building
The Nix flake provides two main build types: release and debug, akin to the Cargo build types.
For debugging, build with debug symbols, but don't test:
```ShellSession
nix build .#rust-nix-templater-dev
```For release, which compiles in Cargo release mode:
```ShellSession
nix build .#rust-nix-templater
# or
nix build
```### Testing
With Nix flakes, you can check the flake.nix format and run the tests with:
```ShellSession
nix flake check
```This will build and test the `rust-nix-templater-tests` attribute (which also runs Cargo tests).
[devshell]: https://github.com/numtide/devshell "devshell"
[nix-cargo-integration]: https://github.com/yusdacra/nix-cargo-integration "nix-cargo-integration"