Skip to content

MaxWolf-01/dotfiles

Repository files navigation

Dotfiles

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

Setup (Ubuntu)

Fresh install (LUKS + LVM)

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-install
If 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-install
CLI 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.rs

Reboot, remove USB.

Post-install

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 switch

Restart 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 backups

After 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_vibetyper

Setup (NixOS)

git clone https://github.com/MaxWolf-01/dotfiles.git ~/.dotfiles
cd ~/.dotfiles && ./setup minimal
./setup host pc
nswitch

Place age key at ~/.local/secrets/age-key.txt, then: ./setup secrets

Setup (Server/Container)

apt-get update && apt-get install -y git
git clone --depth 1 https://github.com/MaxWolf-01/dotfiles.git ~/.dotfiles
cd ~/.dotfiles && ./setup minimal

Restart shell, then:

./setup host minimal    # or minimal-root if running as root
nix run home-manager/master -- switch --flake ~/.dotfiles#$NIX_HOST

Setup (Android / Termux)

Install 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-sshd

After SSH is working, the rest can be done from the laptop over SSH.

Credits

Eye Candy

Image