# Description

This repository contains the configuration for multiple machines, as well as my home / IDE config (home-manager).

### NixOS

```bash
sudo nixos-rebuild switch --flake .#lin-va-mbp-personal
```

### NixOS Generators

```bash
nix build .#vmwareConfigurations.rke2-node
```

### Home Manager

```bash
home-manager switch --flake .#evanreichard@MBP-Personal
```

### NixOS Hosts

#### Copy Config

```bash
rsync -av --exclude='.git' . root@HOST:/etc/nixos
```

#### Partition Drives

```bash
# Validate Disk
ls -l /dev/disk/by-id

# Partition Disk
# WARNING: This will destroy all data on the disk(s)
sudo nix \
    --experimental-features "nix-command flakes" \
    run github:nix-community/disko -- \
    --mode disko \
    --flake /etc/nixos#HOST_CONFIG
```

#### Install NixOS

```bash
# Install
sudo nixos-install --flake /etc/nixos#HOST_CONFIG

# Reboot
sudo reboot
```

#### Copy Config Back to Host

```bash
rsync -av --exclude='.git' . root@HOST:/etc/nixos
```

#### Rebuild NixOS

```bash
sudo nixos-rebuild switch
```

# Nix Home Manager Configuration - macOS

## Upgrade

```bash
# Update System Channels
sudo nix-channel --add https://nixos.org/channels/nixpkgs-24.11-darwin nixpkgs
sudo nix-channel --update

# Update Home Manager
nix-channel --add https://github.com/nix-community/home-manager/archive/release-24.11.tar.gz home-manager
nix-channel --update

# Link Repo
ln -s /Users/evanreichard/Development/git/personal/nix/home-manager ~/.config/home-manager

# Build Home Manager
home-manager switch
```

## Clean Garbage

NOTE: This will remove previous generations

```bash
sudo nix-collect-garbage --delete-old
nix-collect-garbage --delete-old
```

## OS Update

`/etc/bashrc` may get overridden. To properly load Nix, prepend the following:

```bash
# Nix
if [ -e '/nix/var/nix/profiles/default/etc/profile.d/nix-daemon.sh' ]; then
  . '/nix/var/nix/profiles/default/etc/profile.d/nix-daemon.sh'
fi
# End Nix
```