feat: add NixOS support, Go, and Ruby on Rails; remove Rust

- Add nixos/ directory with declarative flake.nix and home.nix for NixOS
- Make all setup scripts NixOS-aware with proper detection and early exit
- Update bashrc, zshrc, and aliases with Go, Ruby on Rails, and Nix profile paths
- Replace Rust/Cargo references in shell configs with rbenv/Ruby on Rails
- Update README with NixOS quick start and full documentation
This commit is contained in:
Blake Ridgway
2026-07-30 20:13:13 -05:00
parent 5efb3dab48
commit 0b1e7b7f51
11 changed files with 776 additions and 50 deletions

View File

@@ -1,16 +1,39 @@
# Fresh Install
This is a collection of scripts and dotfiles I use when setting up a fresh Linux installation.
Now compatible with **NixOS** (declarative via flakes + home-manager), as well as traditional
distributions like Fedora, Ubuntu, Debian, and Pop!_OS.
## Quick Start
### Traditional Distros (Fedora / Ubuntu / Debian / Pop!_OS)
Run the main setup script to install software, configure development tools, and symlink dotfiles:
```bash
./main-setup.sh
```
The script will automatically detect your Linux distribution (Fedora, Ubuntu, Debian, etc.) and use the appropriate package manager.
The script will automatically detect your Linux distribution and use the appropriate package manager.
### NixOS
On NixOS, packages and configuration are managed **declaratively** using the flake in the `nixos/` directory.
Run the main script for a guided workflow:
```bash
./main-setup.sh
```
Or apply the flake directly:
```bash
# Rebuild system configuration
sudo nixos-rebuild switch --flake ~/dotfiles/nixos#nixos
# Apply user-level configuration
home-manager switch --flake ~/dotfiles/nixos#blake
```
## What Gets Installed
@@ -27,8 +50,10 @@ The script will automatically detect your Linux distribution (Fedora, Ubuntu, De
- **Neovim** (latest version from GitHub)
- **Hack Nerd Font** for terminal
- **Oh My Zsh** shell framework
- **Starship** prompt
- **Rust** toolchain via rustup
- **Oh My Posh** prompt
- **Go** (Golang) with `gopls` language server and `delve` debugger
- **Ruby on Rails** — Ruby via rbenv, Bundler, Rails gem, Node.js
- **Python** development tools (pip, virtualenv, pynvim)
### Fedora-Specific (.NET Development)
On Fedora systems, additional packages are installed:
@@ -37,13 +62,16 @@ On Fedora systems, additional packages are installed:
- **PostgreSQL** server and tools
- **Docker** (moby-engine) with Docker Compose
### Flatpak Applications
### Flatpak Applications (Traditional Distros Only)
- Bitwarden
- Discord
- Flatseal
- Steam
- Podman Desktop
- ProtonUp-Qt
- Rider
- Veloren Airshipper
- Signal
- Steam
- Teams for Linux
- Thunderbird
- Visual Studio Code
- VLC Media Player
@@ -51,10 +79,11 @@ On Fedora systems, additional packages are installed:
The setup is broken down into focused scripts:
- `00-system-prep.sh` - System updates and Flathub setup
- `01-package-install.sh` - Core packages and Flatpak apps
- `02-dev-tools-setup.sh` - Development tools (Neovim, Go, Rust, Helm, kubectx, stern, dive, trivy, AWS CLI)
- `03-fedora-dotnet-setup.sh` - Fedora-specific .NET environment
- `00-system-prep.sh` - System updates and Flathub setup (NixOS-aware)
- `01-package-install.sh` - Core packages and Flatpak apps (NixOS-aware)
- `02-dev-tools-setup.sh` - Development tools: Neovim, Hack Nerd Font, Go, Ruby on Rails,
Oh My Posh, Helm, kubectx, stern, dive, trivy, AWS CLI (NixOS-aware)
- `03-fedora-dotnet-setup.sh` - Fedora-specific .NET environment (skipped on NixOS)
- `04-config-symlinks.sh` - Dotfile symlinking
You can run individual scripts if you only need specific components.
@@ -112,10 +141,31 @@ After running the setup, remember to:
## Supported Distributions
- **NixOS** — Declarative via `nixos/flake.nix` + `nixos/home.nix`
- **Fedora** (with full .NET development environment)
- **Ubuntu/Debian** (core packages and development tools)
- **Pop!_OS** (core packages and development tools)
## NixOS Setup (nixos/)
The `nixos/` directory contains a declarative flake-based configuration:
### Files
- **`nixos/flake.nix`** — NixOS system configuration:
- System packages (Go, Ruby, Python, Kubernetes tools, networking tools)
- Docker, Flatpak, and virt-manager services
- Zsh as default shell
- Hack & FiraCode Nerd Fonts
- Neovim as default editor
- **`nixos/home.nix`** — Home-manager user configuration:
- User packages (Go tooling, Ruby on Rails, shell tools, cloud tools)
- Zsh aliases and environment (Go, Ruby/Rails, Kubernetes, Docker, AWS, Terraform)
- Git configuration with template and includes
- Dotfile symlinks (bashrc, zshrc, aliases, gitconfig, gitignore)
- Oh My Posh theme and Nushell config
## Customization
Feel free to fork this repository and modify the scripts/dotfiles to suit your needs. The modular structure makes it easy to add, remove, or modify specific components.