Although I could just integrate this directly in configuration.nix since
everything is a module, having a separate hardware-configuration.nix
makes it easier to integrate with other devices that may output
different configurations.
Since all of these files do roughly the same thing (that is, configure
the system in a specific way that a separate file seems necessary), this
should reduce the overall complexity of the project tree.
This is my attempt at putting all modules in one directory to avoid
having to remember whether a module was a part of applications/,
desktop/, or terminal/.
This fixes an issue where containers caused the boot process to slow
down, especially those that relied on mounting directories only
available once a graphical session has already started.
Since I never use previous generations, booting the newest entry by
default seems ideal. In the case that something is broken, it should be
possible to return to the menu by pressing space at boot.
This commit fixes the cursor being upside down and inaccurate in
Hyprland. Note that show-cursor=off is used to avoid the duplicate
cursor issue described in https://github.com/swaywm/sway/issues/6581
Unlike GNOME, Hyprland does not automatically change resolution on
window change, so fullscreen is enabled by default to ensure a certain
size. In the future, a script could be used to adjust the resolution as
needed.
Related: https://github.com/hyprwm/Hyprland/issues/1056
I originally used GNOME for virtualization because the cursor in
Hyprland was upside down and its position was offset by a noticeable
amount. However, now that I've figured out how to make Hyprland work
under QEMU with an accurate cursor, this is no longer needed.
Although this was useful at some point to make GNOME usable, a virtual
GNOME instance works quite fine without this script.
Whether I even need GNOME virtualization is debatable due to how much I
was able to achieve with containers. Benefits of containers include not
having to start up a virtual machine, easy sharing of files with the
host, and having the window manager manage all windows.
I figured out how to get wine working on Nix, and it works surprisingly
well, however I'd like to avoid programs from writing wherever they want
and don't want to rely on a solution like firejail.
As it turns out, systemd-nspawn containers enable us to run wine applications
in a reasonably private container without access to neither the files of the
host nor its internet connection.
This should make things easier to change and maintain over time, with
the ultimate goal of making it easy to provide example configurations
that can be expanded upon.
This was my working solution at forwarding ports from a container to the
host. Although mullvad no longer supports port forwarding, this example
can still be used to forward e.g. web services from containers to the
host.