Skip to content

Latest commit

 

History

70 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

dotfiles

nixOS and user configuration for my machines

layout

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

commands

rebuild

sudo nixos-rebuild switch

explicit 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.nix

media

preview FILE               # images in swayimg, videos in mpv
kitten icat IMAGE          # show an image in kitty

screengrabs

record-region              # select/start/stop recording
Print                      region screenshot with Noctalia
Ctrl+Print                 start/stop region recording

files go under:

~/Media/Screengrabs/Screenshots/
~/Media/Screengrabs/Recordings/

clipboard

Super                      launcher
Super+V                    Noctalia clipboard history
Super+Z                    toggle floating

LTE

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 only

config notes

host

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/xmm7360

for Digi Mobil Romania:

apn=internet

this is internet-only experimental support. SMS and calls are not handled here.

About

dotfiles for my machines

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages