Introduction
Toughnix is a flake monorepo that handles my NixOS configurations for all my computers. The desktop centers around Emacs and Hyprland, and there will be a VPS configuration as well.
Why Not EXWM?
Because emacs is blocking, and I want to use wayland because it\'s much better and there\'s much less cruft.
Desktop Installation (Continuity System)
To install continuity, install the ISO on a usb. Get internet access
with the command nmtui
, then run:
nix_installer
You will have to interact with the installer three times. Two of those
times will be in vim
, for which you should read the files and make the
intuitive changes based on the comments in those files, and once will be
to confirm that you want to wipe the disk.
After this process, reboot and log into your user with your username and the password being the username. You will immediately be taken into a post-install script. Simply enter your password a couple of times, log back in, and you should be ready to go.
Desktop Usage
On your first install, you will be greeted with firefox, as well as
EMacs. If Waybar doesn\'t appear, run hyprctl monitors
in a terminal
(Windows key + Enter), and you should see the monitors listed. Then,
edit ~/src/toughnix/desktop/vars.nix
accordingly, and rebuild the
system with vim toughnix/desktop/vars.nix; rb
. In general, this goes
without saying, but you should rebuild your system when you want a
change to take effect.
Hyprland
-
Wallpaper
To change the wallpaper, change the
swww add
line inhome.nix
to another wallpaper in my wallpapers repository. -
Keybindings
-
Programs
There are other programs too, but these are all you\'ll need to get started.
example Win + Return => kitty (Terminal) Win + e => emacs Win + w => firefox Win + v => discord (vencord) Win + d => wofi (Run Launcher) Win + p => wofi (Powermenu) PrintScr => grim (screenshot; look for file in $HOME)
-
Commands
These commands are inspired by
vim
.example Win + q => kill window Win + Shift + h => move window to left Win + Shift + l => move window to right Win + Shift + k => move window up Win + Shift + j => move window down Win + h => move window focus to left Win + l => move window focus to right Win + k => move window focus up Win + j => move window focus down
-
Passwords
Passwords will be managed by sops-nix in the future, but for now they
are managed with the pass
password manager. To initialize the password
store, see the documentation. Be sure
to add an entry called Mail
:
pass add Mail
and enter your imaps and smtps password (they should be the same in this setup).
Email is done from within emacs with mu4e with SPC o m
. To initialize
mail, run:
mbsync ret2pop # see mbsyncrc section of home.nix, change ret2pop to something else there
# then run this command with that changed name, if you really want.
# Even though it uses my username, it works for everyone.
mu init --maildir=~/email/ret2pop/
mu index
Note that a prerequisite is initializing pass
and adding a Mail
entry. Be sure to change the imaps and smtps address in the mbsync and
msmtp configurations as well as the usernames.
Firefox
On launch, make sure you enable all the plugins by going into the three bar tab on the right corner and enabling all the automatically installed extensions. Then, optionally, visit the catppuccin firefox theme website and use the Firefox Color install method.
Discord
Optionally, go to user settings > Vencord > Themes > Online Themes. Then, install this theme by pasting the one-liner in:
@import url("https://catppuccin.github.io/discord/dist/catppuccin-mocha-pink.theme.css");
Waybar
If the bar is not displaying, get your monitor name with
hyprctl monitors
. The battery percentage may not be displayed. If it
isn\'t, then change BAT0
with whatever you see when you run
ls /sys/class/power_supply
, assuming you have a laptop with a battery.
After that, it should work normally.
Music
Place your music files in $HOME/music
and run mpc update
, then
mpc add /
. This should add all your music in $HOME/music
to the
playlist to be read by the emacs program emms
.
Emacs
On first initialization, make sure to run:
M-x pdf-tools-install
M-x all-the-icons-install-fonts
M-x nerd-icons-install-fonts
then restart. This will make emacs look not ugly. Also edit the very top
of ~/org/website/config/emacs.org
, modify the parameters (email, full
name, etc...) to your desired value.
-
Keybindings
These are the keybindings that I have set up for emacs. All the other keybindings are ones that are default to the packages installed or the builtin emacs keybindings. Note that I also use evil-mode, so you\'re going to have to know vim keybindings. To get started with editing files, press space, and then press period.
example SPC . find-file SPC o a org-agenda SPC c b counsel-bookmark SPC o c org-capture SPC n j j org-journal-new-entry SPC n r f org-roam-node-find SPC n r i org-roam-node-insert SPC n r g org-roam-graph SPC r s s elfeed SPC . counsel-find-file SPC g / magit-dispatch SPC g P magit-push SPC g c magit-commit SPC g p magit-pull SPC o t vterm-other-window SPC o e eshell SPC o m mu4e SPC e w w eww SPC e c c ellama-chat SPC e a b ellama-ask-about SPC e s ellama-summarize SPC e c r ellama-code-review SPC e c C ellama-code-complete SPC e c a ellama-code-add SPC e c e ellama-code-edit SPC e w i ellama-improve-wording SPC e g i ellama-improve-grammar SPC p w ivy-pass SPC m P p org-publish SPC s e sudo-edit SPC m m emms SPC f f Format code buffer SPC i c Connect to my IRC server SPC h m Manual SPC h r r Reload Config
-
IRC
In the config, replace the IRC configuration (server and name) with your own.
-
ellama
Run
ollama pull zephyr
to get the zephyr ollama model. -
Mu4e
After following the email advice from above, change my mail address and name to your own.
-
Elfeed
Change my RSS feeds out in
$HOME/org/website/config/elfeed.org
with ones you want to read.
Website
I update my website with the command usite
(in the terminal). This
will work by default if you set your vars.nix
correctly and you have
access to the server you\'re sshing through with rsync.
Building the Installer
To build the installer, run this command in the flake:
nix build .#nixosConfigurations.installer.config.system.build.isoImage
this will put the resultant ISO image in ./results/iso/
. You can then
flash it with dd
or any other method.