🚧 This project is a work in progress. The ultimate goal is to create a GUI app that inspires people towards using Nix.
- Install Nix
- Setup
direnv
- Clone this repo,
cd
to it, and rundirenv allow
.
This will automatically activate the nix develop shell. Open VSCode and install recommended extensions, ensuring that direnv activates in VSCode as well.
Note
If you would like to learn the tools & technology involved in this project, follow along this README noting the places where the emoji 🎓 is used.
In nix shell,
just watch
just watch
runs dx serve
(with hot reload disabled) that will restart the desktop app after compilation.
Inside the nix develop shell (activated by direnv) you can use any of the cargo
or rustc
commands, as well as just
workflows. Nix specific commands can also be used to work with the project:
# Full nix build
nix build
# Build and run
nix run
- When you are done with your changes, run
just fmt
to autoformat the source tree; the CI checks for this. - Add tests if relevant, and run them:
- Run
just test
to run the unit tests.
- Run
- Add documentation wherever useful. To preview the docs, run
just doc
.
We use Dioxus to build the desktop app using web technologies. The yet to be released dioxus-signals package is also used for data reactivity.
We use Tailwind for styling; 🎓 familiarize yourself with it! Tailwind enables developers not familiar with design to create reasonably good looking sites. You should also 🎓 get familiar with CSS flexboxes (see Flexbox Froggy).
See tailwind.config.js
for colour aliases we use throughout the app. Instead of, say, text-pink-500
we use text-primary-500
("primary" is more semantic than "pink").
We publish the following crates from this repo:
Crate Link | Description |
---|---|
https://crates.io/crates/nix_rs | Rust interface to the Nix command line |
https://crates.io/crates/nix_health | Nix health check library and executable |