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:
72
README.md
72
README.md
@@ -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.
|
||||
|
||||
Reference in New Issue
Block a user