nixOS and user configuration for my machines
hosts/
nixpad/
configuration.nix # laptop-only bits: LTE, TLP, LUKS, locale
hardware-configuration.nix
xmm7360/ # LTE helper scripts
desktop/
configuration.nix # desktop-only bits: docker, no LTE
hardware-configuration.nix # placeholder until generated on the machine
modules/
nixos/
common.nix # shared base packages, fonts, nix settings
desktop-hyprland.nix # Hyprland/UWSM, greetd, graphics, keyring
gaming.nix # Steam/gamemode, behind modules.gaming.enable
home/
bro/
home.nix # shared Home Manager config
hosts/
nixpad.nix # thin per-host overlay -> imports ../home.nix
desktop.nix # thin per-host overlay -> imports ../home.nix
hypr/ # Hyprland; hyprland.conf sources the *.conf below
look.conf # general/decoration/animations
input.conf # keyboard/touchpad/gestures
keybinds.conf # all binds — the file to edit for a new shortcut
windowrules.conf
iamb/
kitty/
meli/
scripts/
media/
screengrab/
wallpapers/
pkgs/
xmm7360-pci/ # local kernel module package
Both hosts import the same modules/nixos/* files and set only what differs
(host packages, modules.gaming.enable, LTE, locale). Adding a third
machine means a new hosts/<name>/ + home/bro/hosts/<name>.nix that import
the existing modules and home.nix, picking which shared pieces to enable.
On nixpad, /etc/nixos points at:
/home/bro/gitrepos/github/dotfiles/hosts/nixpad
sudo nixos-rebuild switchexplicit config path:
sudo nixos-rebuild switch -I nixos-config=/home/bro/gitrepos/github/dotfiles/hosts/nixpad/configuration.nix
sudo nixos-rebuild switch -I nixos-config=/home/bro/gitrepos/github/dotfiles/hosts/desktop/configuration.nixpreview FILE # images in swayimg, videos in mpv
kitten icat IMAGE # show an image in kittyrecord-region # select/start/stop recordingPrint region screenshot with Noctalia
Ctrl+Print start/stop region recording
files go under:
~/Media/Screengrabs/Screenshots/
~/Media/Screengrabs/Recordings/
Super launcher
Super+V Noctalia clipboard history
Super+Z toggle floating
lte-on # switch internet to LTE
lte-on --verbose
lte-off # return to Wi-Fi
lte-off --verbose
xmm7360-status # modem/service/routes/DNS status
xmm7360-reset # normal modem reset
xmm7360-hard-reset # ACPI/PCI recovery path
xmm7360-use-lte # lower-level LTE routing/DNS
xmm7360-use-wifi # lower-level Wi-Fi restore
xmm7360-use-dns # install LTE DNS onlyhost
each hosts/<name>/configuration.nix sets machine basics (hostname, locale,
bootloader, users) and imports the shared modules under modules/nixos/:
common.nix (base packages/fonts), desktop-hyprland.nix (Hyprland/UWSM,
greetd, graphics, keyring — both hosts use this), and gaming.nix (Steam,
opt-in per host via modules.gaming.enable = true;).
nixpad additionally owns the LTE modem stack, TLP, and LUKS — all
laptop-specific, so they stay in hosts/nixpad/configuration.nix rather than
a shared module. desktop additionally enables virtualisation.docker for
container/dev work.
<nixos-unstable> and the pinned Noctalia flake package are each imported in
a host's let block, then exposed to every imported NixOS module via
_module.args (so modules/nixos/*.nix can just take unstable/noctalia
as ordinary module arguments) and to Home Manager via
home-manager.extraSpecialArgs.
setting up a new host: copy hosts/nixpad/configuration.nix's let block for
the unstable/noctalia pins, run
sudo nixos-generate-config --dir hosts/<name> on the machine for a real
hardware-configuration.nix, and pick which modules/nixos/* to import.
home manager
home/bro/home.nix owns user packages, shell-wrapped helper commands, user
services, and tracked config files under ~/.config — shared by every host.
home/bro/hosts/<name>.nix is a thin per-host overlay that imports
../home.nix and adds only what that machine needs (see desktop.nix for
where dev/container tooling goes). Each NixOS host's
home-manager.users.bro points at its own overlay file.
desktop
tracked desktop config:
home/bro/hypr/
home/bro/kitty/
current desktop pieces include Hyprland, Noctalia, Kitty, Hackneyed cursors, recording, and media previews.
home/bro/hypr/hyprland.conf only sets monitors/programs/autostart/env, then
sources look.conf, input.conf, keybinds.conf, and windowrules.conf.
Each of those is symlinked individually via xdg.configFile in home.nix
(matching the pattern used for iamb/kitty/meli). To change a shortcut,
edit keybinds.conf — no other file needs touching. Adding a brand-new
partial still needs one line added to home.nix's xdg.configFile.
apps
user-side apps are in Home Manager. currently notable ones:
iamb matrix client, using unstable package for newer media support
meli mail client
gitui terminal git UI, installed system-wide
wiremix audio mixer
runelite
iamb config enables kitty image previews.
wallpapers
the wallpaper library lives in:
home/bro/wallpapers/
Noctalia owns wallpaper selection and rotation.
LTE modem
nixpad has a Fibocom L850-GL / Intel XMM7360 modem.
ModemManager does not manage this card in RPC mode:
Intel XMM7360 in RPC mode not supported
so this repo uses:
pkgs/xmm7360-pci/
hosts/nixpad/xmm7360/
the host config disables ModemManager for this machine, blacklists iosm,
builds the local xmm7360 module, enables acpi_call, and installs the LTE
wrapper commands.
APN config lives outside git:
sudo cp /etc/xmm7360.example /etc/xmm7360
sudoedit /etc/xmm7360for Digi Mobil Romania:
apn=internetthis is internet-only experimental support. SMS and calls are not handled here.