diff --git a/README.md b/README.md index f3aae1b..4653d28 100755 --- a/README.md +++ b/README.md @@ -2,78 +2,54 @@ 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 +# Install NixOS +./bootstrap.sh install --name lin-va-nix-builder + +# Remote Image Build (NixOS Builder) +./bootstrap.sh image --name lin-va-rke2 --remote + +# Home Manager Install +home-manager switch --flake .#evanreichard@mac-va-mbp-personal + +# Update Flake +nix flake update ``` -### NixOS Generators +## Manual ```bash +# Install NixOS +sudo nixos-rebuild switch --flake .#lin-va-mbp-personal + +# Install NixOS (Remote) +nix run github:nix-community/nixos-anywhere -- --flake .#lin-cloud-kube1 --target-host \@\ + +# Build Image nix build .#vmwareConfigurations.lin-va-rke2 ``` -### NixOS Anywhere +## Nix Darwin ```bash -nix run github:nix-community/nixos-anywhere -- --flake .#lin-cloud-kube1 --target-host @ +# Install Nix Without Determinate +curl --proto '=https' --tlsv1.2 -sSf -L https://install.determinate.systems/nix | sh -s -- install + +# Switch Nix Darwin +sudo nix run nix-darwin#darwin-rebuild -- switch --flake .#mac-va-mbp-personal +sudo darwin-rebuild switch --flake .#mac-va-mbp-personal ``` -### Home Manager +## Clean Garbage + +NOTE: This will remove previous generations ```bash -home-manager switch --flake .#evanreichard@mac-va-mbp-personal +sudo nix-collect-garbage --delete-old +nix-collect-garbage --delete-old ``` -### 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 +## Home Manager ```bash # Update System Channels @@ -91,16 +67,7 @@ ln -s /Users/evanreichard/Development/git/personal/nix/home-manager ~/.config/ho 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 +### OS Update `/etc/bashrc` may get overridden. To properly load Nix, prepend the following: @@ -111,14 +78,3 @@ if [ -e '/nix/var/nix/profiles/default/etc/profile.d/nix-daemon.sh' ]; then fi # End Nix ``` - -# Nix Darwin - -```bash -# Install Nix Without Determinate -curl --proto '=https' --tlsv1.2 -sSf -L https://install.determinate.systems/nix | sh -s -- install - -# Switch Nix Darwin -sudo nix run nix-darwin#darwin-rebuild -- switch --flake .#mac-va-mbp-personal -sudo darwin-rebuild switch --flake .#mac-va-mbp-personal -``` diff --git a/bootstrap.sh b/bootstrap.sh index 9a70ede..71e1414 100755 --- a/bootstrap.sh +++ b/bootstrap.sh @@ -51,8 +51,9 @@ function cmd_image() { } function cmd_install() { - local usage="Usage: $0 install --name " + local usage="Usage: $0 install --name [--remote ]" local name="" + local remote="" while [[ $# -gt 0 ]]; do case "$1" in @@ -60,6 +61,10 @@ function cmd_install() { name="$2" shift 2 ;; + --remote) + remote="$2" + shift 2 + ;; *) echo "$usage" exit 1 @@ -87,6 +92,18 @@ function cmd_install() { exit 1 fi + # Remote or Local + if [ -n "$remote" ]; then + cmd_install_remote "$name" "$remote" + else + cmd_install_local "$name" "$disk_id" + fi +} + +function cmd_install_local(){ + local name="$1" + local disk_id="$2" + # Validate Disk Exists if [ ! -e "$disk_id" ]; then echo "Error: Disk $disk_id not found on system" @@ -133,6 +150,27 @@ function cmd_install() { sudo reboot } +function cmd_install_remote(){ + local name="$1" + local remote="$2" + + # Prompt Install + read -p "This will completely wipe and install NixOS on $remote with configuration $name. Continue? (y/n) " -n 1 -r + echo + if [[ ! $REPLY =~ ^[Yy]$ ]]; then + echo "Operation Cancelled" + exit 1 + fi + + # Install NixOS + echo "Installing $name to remote host: $remote" + if ! nix run github:nix-community/nixos-anywhere -- --flake ".#$name" --target-host "$remote"; then + echo "Error: Remote NixOS installation failed" + exit 1 + fi + echo "Successfully installed $name to remote host: $remote" +} + case "$1" in image) shift diff --git a/flake.lock b/flake.lock index de94a17..20f8b9a 100755 --- a/flake.lock +++ b/flake.lock @@ -49,11 +49,11 @@ "nixpkgs": "nixpkgs" }, "locked": { - "lastModified": 1753140376, - "narHash": "sha256-7lrVrE0jSvZHrxEzvnfHFE/Wkk9DDqb+mYCodI5uuB8=", + "lastModified": 1756733629, + "narHash": "sha256-dwWGlDhcO5SMIvMSTB4mjQ5Pvo2vtxvpIknhVnSz2I8=", "owner": "nix-community", "repo": "disko", - "rev": "545aba02960caa78a31bd9a8709a0ad4b6320a5c", + "rev": "a5c4f2ab72e3d1ab43e3e65aa421c6f2bd2e12a1", "type": "github" }, "original": { @@ -70,11 +70,11 @@ }, "locked": { "dir": "pkgs/firefox-addons", - "lastModified": 1753589020, - "narHash": "sha256-rFZWFBjYRXNli1rZvRLOJVKLznk3Fj/eHJJdcWB0zWE=", + "lastModified": 1756699417, + "narHash": "sha256-rpRy5ae5ijEGaK+Cr66NqCQJ6ZeUE5Zi8gUWgKhesto=", "owner": "rycee", "repo": "nur-expressions", - "rev": "2988587ae70864239861389dbd84efdbfa9fa2c5", + "rev": "007b803d1eff595d25e7886e83054dbd038bf029", "type": "gitlab" }, "original": { @@ -159,11 +159,11 @@ ] }, "locked": { - "lastModified": 1753592768, - "narHash": "sha256-oV695RvbAE4+R9pcsT9shmp6zE/+IZe6evHWX63f2Qg=", + "lastModified": 1756679287, + "narHash": "sha256-Xd1vOeY9ccDf5VtVK12yM0FS6qqvfUop8UQlxEB+gTQ=", "owner": "nix-community", "repo": "home-manager", - "rev": "fc3add429f21450359369af74c2375cb34a2d204", + "rev": "07fc025fe10487dd80f2ec694f1cd790e752d0e8", "type": "github" }, "original": { @@ -227,11 +227,11 @@ }, "nixpkgs-unstable": { "locked": { - "lastModified": 1753429684, - "narHash": "sha256-9h7+4/53cSfQ/uA3pSvCaBepmZaz/dLlLVJnbQ+SJjk=", + "lastModified": 1756542300, + "narHash": "sha256-tlOn88coG5fzdyqz6R93SQL5Gpq+m/DsWpekNFhqPQk=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "7fd36ee82c0275fb545775cc5e4d30542899511d", + "rev": "d7600c775f877cd87b4f5a831c28aa94137377aa", "type": "github" }, "original": { @@ -243,11 +243,11 @@ }, "nixpkgs_2": { "locked": { - "lastModified": 1753345091, - "narHash": "sha256-CdX2Rtvp5I8HGu9swBmYuq+ILwRxpXdJwlpg8jvN4tU=", + "lastModified": 1756617294, + "narHash": "sha256-aGnd4AHIYCWQKChAkHPpX+YYCt7pA6y2LFFA/s8q0wQ=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "3ff0e34b1383648053bba8ed03f201d3466f90c9", + "rev": "b4c2c57c31e68544982226d07e4719a2d86302a8", "type": "github" }, "original": { @@ -316,11 +316,11 @@ ] }, "locked": { - "lastModified": 1752544651, - "narHash": "sha256-GllP7cmQu7zLZTs9z0J2gIL42IZHa9CBEXwBY9szT0U=", + "lastModified": 1754988908, + "narHash": "sha256-t+voe2961vCgrzPFtZxha0/kmFSHFobzF00sT8p9h0U=", "owner": "Mic92", "repo": "sops-nix", - "rev": "2c8def626f54708a9c38a5861866660395bb3461", + "rev": "3223c7a92724b5d804e9988c6b447a0d09017d48", "type": "github" }, "original": {