juspay / nix-browser

🚧 A graphical interface to working with Nix & Flakes; and various related crates

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

nix-browser

Note

🚧 nix-browser is in active development. It aims to be a GUI app that motivates people towards adopting Nix on their own.

Getting Started

  1. Install Nix
  2. Setup direnv
  3. Clone this repo, cd to it, and run direnv 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.

Running locally

In nix shell,

just watch

just watch runs dx serve (with hot reload disabled) that will restart the desktop app after compilation.

Nix workflows

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

Contributing

  • 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.
  • Add documentation wherever useful. To preview the docs, run just doc.

Tech

Rust desktop app

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.

Styling

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).

Color palette

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").

Related crates

Crate Description
https://github.com/juspay/nix-rs Rust interface to the Nix command line
https://github.com/juspay/direnv-rs Rust bindings for direnv
https://github.com/juspay/nix-health Nix health check library and executable

About

🚧 A graphical interface to working with Nix & Flakes; and various related crates

License:GNU Affero General Public License v3.0


Languages

Language:Rust 84.0%Language:Nix 12.1%Language:Just 2.4%Language:JavaScript 1.4%Language:CSS 0.1%