Because of how easy it is to create and run virtual machines in NixOS,
the use of containers is not necessary. Virtual machines additionally
outperform containers when it comes to graphical tasks, and allow for
the usage of a variety of GUI applications separate from the host.
Unfortunately, the system occasionally gets stuck at the dreaded "stop
job" message at times. I haven't delved into figuring out the cause yet,
but this change ensures that shutdowns occur in a timely manner.
Unfortunately, KMSCON was extremely buggy and caused a variety of
graphical glitches and random character sequences across a non-trivial
amount of virtual consoles. Because of this, Hyprland as the main
environment will be preferred with a way to emulate a tty-like
appearance.
A wallpaper is required for Stylix to work, so I added one with base00
as the background color and the NixOS logo as the foreground image.
Credit for the logo goes to the original author who licensed it under
CC-BY: https://releases.nixos.org/nix-dev/2016-October/021876.html
Stylix is like a maintained version of pywal but configuration changes
are managed by Nix and Home Manager, thus guaranteeing a certain level
of reproducibility with its declarative nature.
Although I could technically make a gnome module and make it really easy
to switch between gnome and hyprland, I'm not really interested in
maintaining that right now.
For example, there was a recent bug in nautilus where deleted files
would not show up as deleted. There was another bug where opening a
terminal would not focus the terminal window. I'd much rather use
hyprland in this case due to the faster release cycle and simpler code
base overall.
Similar to fish, there's some relief in knowing that I can declare my
starship settings in Nix and have them accessible from any user on the
machine, even root.
I originally wasn't going to mix logic from my dotfiles with NixOS,
however I was unable to simply use my abbreviations after adding
~/.config/fish/config.fish, so I decided to give it a try.
Using Nix to manage fish abbreviations feels nicer than using a
config.fish because I am now easily able to manipulate these
abbreviations with the limitless possibilities of the Nix language, and
with the guarantee that the output is reproducible.
Highlights:
- Added a test container with network configuration and Wayland support
- Added GNOME/Hyprland support with SDDM
- Added Git/Starship/GPG support
- Properly added Neovim support with .enable
- Various package changes
- Made caps lock function as escape on tap, left ctrl on hold
- Print screen functions as right super on hold
These are my first steps towards using Nix and NixOS to declaratively
configure a reasonably good development environment. I am aware that
there are various paradigms that include using home manager and/or
flakes, however I am still exploring with a simple configuration.nix.