Declarative home environment using Nix and Home Manager.
.
├── flake.nix # Entrypoint, defines all host configurations
├── flake.lock # Pinned dependency versions
├── modules/
│ ├── common.nix # Shared config across all hosts
│ └── neovim.nix # Neovim + LSP configuration
└── hosts/
├── thinkpad25-wsl/
│ └── home.nix # WSL2-specific overrides
├── nixbox/
│ ├── configuration.nix # NixOS system configuration
│ ├── hardware-configuration.nix # Generated during install
│ └── home.nix # nixbox-specific Home Manager overrides
└── contabo-vps/
└── home.nix # VPS-specific Home Manager overrides
| Host | Type | User | System |
|---|---|---|---|
xmixa@thinkpad25 |
WSL2 standalone Home Manager | xmixa | x86_64-linux |
nixbox |
NixOS + Home Manager module | cm | x86_64-linux |
christos@contabo-vps |
VPS standalone Home Manager | christos | x86_64-linux |
- WSL2 Ubuntu instance
- SSH key at
~/.ssh/id_ed25519configured for GitHub
sh <(curl -L https://nixos.org/nix/install) --daemonecho "experimental-features = nix-command flakes" | sudo tee -a /etc/nix/nix.conf
sudo systemctl restart nix-daemongit clone https://github.com/christosm-dev/nix-config.git ~/.config/home-managernix run nixpkgs#home-manager -- switch -b backup --flake ~/.config/home-manager#"xmixa@thinkpad25"Home Manager will automatically back up any conflicting files (e.g. .bashrc.backup, .profile.backup).
source ~/.bashrc- NixOS minimal ISO flashed to USB
- SSH key at
~/.ssh/id_ed25519
# Format partitions
sudo mkfs.fat -F 32 /dev/sda1 # EFI partition
sudo mkfs.ext4 /dev/sda2 # root partition
# Mount partitions
sudo mount /dev/sda2 /mnt
sudo mkdir -p /mnt/boot
sudo mount /dev/sda1 /mnt/bootsudo nixos-generate-config --root /mntCopy /mnt/etc/nixos/hardware-configuration.nix to hosts/nixbox/ in the repo and commit it.
# Clone repo and copy configuration
git clone https://github.com/christosm-dev/nix-config.git /tmp/nix-config
sudo cp /tmp/nix-config/hosts/nixbox/configuration.nix /mnt/etc/nixos/configuration.nix
sudo cp /tmp/nix-config/hosts/nixbox/hardware-configuration.nix /mnt/etc/nixos/hardware-configuration.nix
# Install
sudo nixos-installAfter rebooting into NixOS, log in as root and set the cm user password:
passwd cmAdd your SSH public key:
mkdir -p /home/cm/.ssh
echo "your-public-key" > /home/cm/.ssh/authorized_keys
chmod 700 /home/cm/.ssh
chmod 600 /home/cm/.ssh/authorized_keys
chown -R cm:users /home/cm/.sshSSH in as cm and clone the repo:
git clone https://github.com/christosm-dev/nix-config.git ~/.config/home-manager
sudo nixos-rebuild switch --flake ~/.config/home-manager#nixbox- SSH access to the VPS
- SSH key at
~/.ssh/id_ed25519configured for GitHub
sh <(curl -L https://nixos.org/nix/install) --daemonecho "experimental-features = nix-command flakes" | sudo tee -a /etc/nix/nix.conf
sudo systemctl restart nix-daemonecho 'export PATH="$HOME/.nix-profile/bin:$PATH"' >> ~/.bashrc
source ~/.bashrcgit clone https://github.com/christosm-dev/nix-config.git ~/.config/home-managernix run nixpkgs#home-manager -- switch -b backup --flake ~/.config/home-manager#"christos@contabo-vps"source ~/.bashrc# Apply config changes on WSL2
home-manager switch --flake ~/.config/home-manager#"xmixa@thinkpad25"
# Apply config changes on nixbox
sudo nixos-rebuild switch --flake ~/.config/home-manager#nixbox
# Apply config changes on Contabo VPS
home-manager switch --flake ~/.config/home-manager#"christos@contabo-vps"