I added specializations over a year ago when I was still new to NixOS
and trying out some of the many different features unique to it. These
days I don't need much more than a terminal and a web browser, and I
haven't used GNOME or Plasma in over a year at this point.
Nowadays everything I need from a computer I can accomplish with the
terminal. Nixpkgs trained me to dig deep into source code to figure out
how to do things, and using a PinePhone significantly improved my
awareness of how Linux interacts with hardware and how to configure it.
One of the biggest motivators for dropping these environments is that I
can't keep up with the changes that are made to GNOME and Plasma.
Hyprland has served my needs well and feels more stable since there
isn't a user interface that's constantly changing.
Now it's possible to float and unfloat windows and those windows will
preserve their floating window size.
Note that this patch was merged with the alwayscenter patch so the diff
applies cleanly.
Automatically moves windows to the leftmost tag when moving them.
Useful to help keep the third workspace unoccupied when two other
workspaces have windows on them.
Changes from the original dwm:
- Removed border from windows
- Changed colors (will replace with stylix ones later)
- Added media keys for brightness / volume
- Changed tag names and amount
- Added transparency to bar
- Made librewolf float to preserve window size
- Removed unused keybinds like layout switching
- Removed unused tag keys
- Set mod key to super instead of alt
- Changed dmenu to rofi and st to kitty
This prevents us from having specialization-specific configs in the home
directory, which would be unrelated to the main hyprland environment and
would require explicitly disabling it.
Other nix-configs solve this problem with nested directory structures,
however I enjoy being able to access all files in the nix-config one
directory away.
Sometimes you really need to use a stable and reliable Xorg desktop
system. GNOME crashes when switching workspaces with osu! open, and
Plasma seems like too much for just wanting to run osu! without
having to worry about all the Wayland shenanigans decreasing fps.
I used bspwm for years however development has slowed down recently.
I've always liked dwm from trying it previously, and it is comforting
knowing that your window manager is minimal and will always work the
same way.
Having to change the package list in two places was a bit redundant. We
can also use `with` patterns now since nixd warns if there are escaping
variables being used.
Note that variables used in multiple places are kept to make it easier
to recognize that those variables must be changed together. Also note
that inherit (pkgs) inside of mkMerge are currently kept to reduce the
diff.
Currently there are too many serious issues to realistically use
Hyprland on the PinePhone, and Phosh supports most of the features
we need out of the box anyway, so it makes sense to use that full-time
over trying to make something else work.
Now it's possible to use whatever username you want for your system. The
default value of "user" is good if you're concerned about information
disclosure attacks through things like the username being visible in
logs or other output.
Now it's possible to use the specializations in arbitrary configs. Note
that specializations do slow things down a bit so they may be disabled
by default in the future.
This makes it possible to define specializations that are technically
modules without having them placed in the modules directory. This is
mainly useful to separate core Hyprland logic from desktop environment
logic.