Dotfiles for Ubuntu desktop (GNOME), NixOS, servers/containers, and Android (Termux).
Managed via Nix Home Manager — standalone on Ubuntu, as a NixOS module on NixOS.
Setup: Ubuntu | NixOS | Server/Container | Android/Termux
./setup host to list available host configs.
dotfiles
├── backup # restic/rsync backup scripts (ntfy notifications)
├── bin # custom scripts
├── desktop # icons, discord theme
├── nix
│ ├── home
│ │ ├── common.nix # CLI tools, git, zsh plugins (all hosts)
│ │ ├── desktop.nix # GUI apps (workstations)
│ │ ├── firefox.nix # Firefox config, policies, search engines
│ │ ├── gnome.nix # GNOME keybindings, extensions, dconf
│ │ ├── tmux.nix # tmux config + resurrect
│ │ ├── timers.nix # systemd timers (zephyrus)
│ │ ├── pc-timers.nix # backup/sync timers (pc)
│ │ ├── wayland.nix
│ │ └── hosts/ # per-machine: imports + stateVersion
│ └── nixos/ # NixOS system configs
├── nvim # neovim config (lazy.nvim)
├── zsh
│ ├── aliases # shell aliases
│ ├── exports # env vars, PATH
│ ├── functions # shell functions
│ ├── plugins # extra zsh plugins
│ └── zshrc # main config (baked by HM, sources the above)
├── flake.nix # nix flake (NixOS + HM hosts)
├── secrets/ # private repo (SSH, API keys, backup configs)
└── setup # bootstrap script
Boot a live USB, then:
sudo apt-get install -y curl debootstrap gdisk
curl -sLO https://raw.githubusercontent.com/MaxWolf-01/dotfiles/master/bin/ubuntu-install
sudo bash ubuntu-installIf apt doesn't work (pre-release ISO)
curl -Lo /tmp/debootstrap.deb http://archive.ubuntu.com/ubuntu/pool/main/d/debootstrap/debootstrap_1.0.142ubuntu1_all.deb
curl -Lo /tmp/gdisk.deb http://archive.ubuntu.com/ubuntu/pool/main/g/gdisk/gdisk_1.0.10-2build1_amd64.deb
sudo dpkg -i /tmp/debootstrap.deb /tmp/gdisk.deb
curl -sLO https://raw.githubusercontent.com/MaxWolf-01/dotfiles/master/bin/ubuntu-install
sudo bash ubuntu-installCLI pastebin (send text between machines without login/git)
echo "commands here" | curl --data-binary @- https://paste.rs
cat script.sh | curl --data-binary @- https://paste.rsReboot, remove USB.
sudo apt-get update && sudo apt-get install -y git
git clone https://github.com/MaxWolf-01/dotfiles.git ~/.dotfiles
cd ~/.dotfiles && ./setup host zephyrus # dirs, symlinks, nix, HM switchRestart shell (nix needs it on first install), then re-run ./setup host zephyrus.
systemctl --user disable --now working-rsyncnet.timer working-pc.timer # don't accidentally overwrite backups
./setup ubuntu # NVIDIA drivers, codecs, btop, cleanup
sudo reboot
./setup gpu # nix GPU driver symlinks
gh auth login -w
./setup secrets # clones secrets repo, decrypts SSH key + secrets
restore-working # restore data from rsync.net backup
./setup get_claude # after restore to avoid .claude/ conflicts
systemctl --user enable --now working-rsyncnet.timer working-pc.timer # re-enable backupsAfter first run, use hmswitch to apply HM changes.
All ./setup functions are idempotent — safe to re-run.
Other setup functions
./setup docker
./setup nvidia_container_toolkit
./setup get_vibetypergit clone https://github.com/MaxWolf-01/dotfiles.git ~/.dotfiles
cd ~/.dotfiles && ./setup minimal
./setup host pc
nswitchPlace age key at ~/.local/secrets/age-key.txt, then: ./setup secrets
apt-get update && apt-get install -y git
git clone --depth 1 https://github.com/MaxWolf-01/dotfiles.git ~/.dotfiles
cd ~/.dotfiles && ./setup minimalRestart shell, then:
./setup host minimal # or minimal-root if running as root
nix run home-manager/master -- switch --flake ~/.dotfiles#$NIX_HOSTInstall Termux and Termux:Boot from F-Droid.
In Termux, grant storage access and set up SSH:
termux-setup-storage # grants access to /sdcard
pkg update && pkg upgrade && pkg install openssh
mkdir -p ~/.ssh && curl -sL https://github.com/MaxWolf-01.keys >> ~/.ssh/authorized_keys
chmod 700 ~/.ssh && chmod 600 ~/.ssh/authorized_keys
sshd~/storage/shared is symlinked to /storage/emulated/0 (where Downloads, DCIM, etc. live on Android).
From your laptop (assuming Tailscale): ssh <phone-tailscale-ip> -p 8022
Auto-start sshd on boot (requires Termux:Boot + battery optimization exemption for both Termux and Termux:Boot):
mkdir -p ~/.termux/boot
cat > ~/.termux/boot/start-sshd << 'SCRIPT'
#!/data/data/com.termux/files/usr/bin/sh
termux-wake-lock
sshd
SCRIPT
chmod +x ~/.termux/boot/start-sshdAfter SSH is working, the rest can be done from the laptop over SSH.
- rime + claude for making nix easy
- Jovial Theme
- Nix/Home Manager
- Various functions and scripts from other dotfiles repos (see top of functions)
- dotfiles.github.io