rustux
rustux copied to clipboard
rustux
A thought experiment in creating a Rust-based Linux distro.
Note: this is UNSUPPORTED. It's just for fun :D
Picking the distro
For this experiment, I picked Arch linux as it felt like the easiest way to start with a known, well-supported base. You could also use some of the Linux-from-scratch style distros.
For the installation of Arch, I chose to only install the basic graphical system without installing any desktops. We'll pick our window manager later.
For this I chose: archlinux-2022.06.01-x86_64.iso
Then archinstall
on boot.
Then, I set the profile to the xorg
profile. Made a user. Set up NetworkManager.
Finish the install and reboot and we're in. Now to start installing our Rust tools.
Installing Rust
Install Rust via rustup If you chose Arch, you can also install paru (a Rust-based AUR tool). It will also install Rust for you.
You may want to install rust-analyzer to go with helix (below).
Install our first tools
Once Rust is installed, it's time to add some good commandline tools to help us do the rest of the setup. Arch doesn't come with vim by default. That's okay, we have helix.
You can also install ripgrep
and fd-find
from cargo here.
Install leftwm
Install leftwm, a Rust-based window manager Install leftwm-theme, so we can easily pick a theme
You may also want to install elogind
if you have any issues getting leftwm to work.
Install alacritty
We need a terminal, and alacritty fits the bill.
You may also want to configure leftwm
to run alacritty as your default terminal.
Startup X
Let's configure leftwm and get into a graphical environment.
With elogind
, we can make our .xinitrc:
# .xinitrc
exec dbus-launch leftwm
Then startx
and we're in.
Shell
Let's give ourselves a shell. nushell is great. You can install starship to go with it.
You may want to install some nerd fonts to get the most out of these.
let-env EDITOR = "helix"
will let you set a default editor.
If you want to make nu
your default shell, you may want to run config env
and set up the PATH to be what you want. You can put something like this at the bottom.
let-env PATH = [
# all your paths
]
Areas that need some love
Graphical apps in general. There are some but it's still really early days for Rust and graphical apps.
We don't have a browser. If you're brave, you can try using servo.
Going further
You can go deeper by installing the rewrite of coreutils to Rust