Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/rustshop/flakebox
Flakebox is to your Rust project dev environment, what NixOS is to your OS, or home-manager to your home directory.
https://github.com/rustshop/flakebox
development-environment dx nix rust
Last synced: 6 days ago
JSON representation
Flakebox is to your Rust project dev environment, what NixOS is to your OS, or home-manager to your home directory.
- Host: GitHub
- URL: https://github.com/rustshop/flakebox
- Owner: rustshop
- Created: 2023-09-19T06:36:03.000Z (over 1 year ago)
- Default Branch: master
- Last Pushed: 2025-01-07T21:08:56.000Z (27 days ago)
- Last Synced: 2025-01-21T08:06:18.933Z (14 days ago)
- Topics: development-environment, dx, nix, rust
- Language: Nix
- Homepage:
- Size: 703 KB
- Stars: 109
- Watchers: 5
- Forks: 7
- Open Issues: 6
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Rustshop Flakebox
## Rust dev experience we can share and love.
Flakebox is to your Rust project, what NixOS is to your OS, and
home-manager to your home directory. And more.Flakebox is based on experiences building and maintaining sophisticated
and demanding Rust projects using Nix. It integrates wide range of
ideas, tools and techniques into a powerful yet easy to use toolkit.Flakebox is more about Rust than Nix, and is focused on onboarding
Rust developers that want to use Nix in their projects.Notable features include:
* library for building complex and highly optimized Nix-based build pipelines;
* efficient multi-stage incremental build caching;
* cross-compilation support, including non-Rust dependencies;
* dev shells with integrated best practices, tooling and cross-compilation;
* CI workflow generation;
* seamless updates.With Flakebox you can start using Nix in your Rust project in minutes
and share the experience and tools between all your projects.Built-in Nix Modules based configuration system allows the same level of
customization and extensibility as NixOS itself.The documentation and tools will teach you how to start and then evolve
your project to employ the power of Nix to handle complex build pipelines,
CI requirements and testing setups.The project is open for ideas and collaboration. Learn, customize, improve and share
as a member of the DX-focused community and use seamless updates
to stay up to date with the evolving ecosystem.Rustshop is a vision of how working with Rust could and should be like.
Flakebox will bring that vision into your projects.**Warning:** Rustshop Flakebox is currently very immature. Expect
rough edges and some amount of churn before we figure out the
core pieces.## Try it out
The easiest way to see how it works in practice is
checking some projects that use it, e.g. ones listed in
[*I'm using it!* community discussions](https://github.com/rustshop/flakebox/discussions/categories/i-m-using-it).In particular, feel free to submit a fake PR to [htmx-sorta](https://github.com/rustshop/htmx-sorta). Clone it,
install Nix via [DeterminateSystems nix-installer](https://github.com/DeterminateSystems/nix-installer) if you
don't have Nix yet, enter the dev shell with `nix develop`, make
some changes and submit a PR. It's OK, we don't mind, it's a demo app.## Join the Community
[Our Github Discussions](https://github.com/rustshop/flakebox/discussions)
is the best place to ask questions and participate in building Flakebox. Don't be shy.If you're looking for more interactive conversation, join [Flakebox Matrix channel](https://matrix.to/#/#flakebox:matrix.org).
# Flakebox Book ToC
The best way to view the Flakebox documentation is by running:
```
nix build github:rustshop/flakebox#docs && xdg-open result/index.html
```In projects already using Flakebox, the documentation can be accessed using `flakebox docs` command.
# ToC
[Introduction](./docs/README.md)
- [Technical Introduction](./docs/technical-details.md)
# Getting Started
- [Tutorial: Flakebox in a New Project](./docs/building-new-project.md)
- [Setting up Flakebox](./docs/getting-started.md)
- [Flake template](./docs/flake-template.md)# Reference Manual
- [Crane and `craneLib`](./docs/crane.md)
- [`flakeboxLib` functions](./docs/flakeboxLib.md)
- [Best practices](./docs/best-practices.md)
- [Native toolchains](./docs/native-toolchains.md)
- [Linux toolchains](./docs/linux-toolchains.md)
- [Darwin (MacOS) toolchains](./docs/darwin-toolchains.md)
- [Android toolchains](./docs/android-toolchains.md)
- [iOS toolchains](./docs/ios-toolchains.md)
- [Config Options](./docs/nixos-options.md)