- main-setup.sh: sudo/root preflight for fresh Debian installs; offer distro-agnostic 03-dotnet-setup.sh on all supported distros - 01-package-install.sh: Debian package renames (bind9-dnsutils), batcat symlink, libvirt/QEMU stack; vendor repos for gh/terraform/kubectl + k9s/minikube binaries (not in Debian main); keep dnf path for Fedora - 02-dev-tools-setup.sh: PEP 668 fallback for pynvim pip install - 03-fedora-dotnet-setup.sh -> 03-dotnet-setup.sh: .NET SDK via official dotnet-install.sh (no MS repo), PostgreSQL + Podman/podman-docker - zshrc: purge dead oh-my-zsh references (prompt is Oh-My-Posh) - README: Debian 13 first-class; docs: record decisions + status
4.7 KiB
Fresh Install
This is a collection of scripts and dotfiles I use when setting up a fresh Linux installation.
Quick Start
Run the main setup script to install software, configure development tools, and symlink dotfiles:
./main-setup.sh
The script will automatically detect your Linux distribution (Debian 13 "trixie" is the primary target; Ubuntu and Fedora also work) and use the appropriate package manager (apt or dnf).
What Gets Installed
Core Packages (distro packages)
- Development tools:
git,curl,wget,ripgrep,fd-find,bat,eza - System utilities:
btop,zsh,tmux,fzf,zoxide,flatpak - Virtualization (KVM):
virt-manager+ libvirt/QEMU stack - Python:
python3,python3-pip - Networking:
nmap,mtr,tcpdump,socat,whois,iperf3,traceroute,bind9-dnsutils - HTTP:
httpie - DevOps helpers:
ansible,direnv,jq,tldr,unzip
Upstream Tooling (installed by 01)
gh (GitHub CLI), terraform, kubectl, k9s and minikube are not packaged in Debian, so 01-package-install.sh adds the official vendor apt repositories (GitHub CLI, HashiCorp, pkgs.k8s.io) and installs k9s/minikube from upstream binaries. On Fedora these are a best-effort dnf install (usually COPR/manual).
Development Environment (02)
- Neovim (latest from GitHub, installed to
/opt/nvim) - Hack Nerd Font for terminals
- Go toolchain (
/usr/local/go) - Rust toolchain via rustup
- Oh-My-Posh prompt (
~/.local/bin) - Helm, kubectx/kubens, stern, dive, trivy, AWS CLI v2
.NET / Backend Services (03, optional)
Distro-agnostic .NET development environment:
- .NET SDK via the official
dotnet-install.sh(no vendor repository needed) - PostgreSQL server and tools
- Podman +
podman-compose+podman-docker(Docker-CLI-compatible containers) - VS Code is installed as a Flatpak (
com.visualstudio.code)
Flatpak Applications
- Bolt, Bitwarden, Discord, Teams for Linux, Flatseal
- Steam, ProtonUp-Qt (pupgui2), VLC
- Visual Studio Code, Podman Desktop
- Signal, Thunderbird
Modular Architecture
The setup is broken down into focused scripts:
00-system-prep.sh- System updates and Flathub setup01-package-install.sh- Core packages, upstream tooling, and Flatpak apps02-dev-tools-setup.sh- Development tools (Neovim, Go, Rust, Oh-My-Posh, Helm, kubectx, stern, dive, trivy, AWS CLI)03-dotnet-setup.sh- .NET SDK + PostgreSQL + Podman (distro-agnostic)04-config-symlinks.sh- Dotfile symlinking
You can run individual scripts if you only need specific components.
Dotfiles
The following configuration files will be symlinked to your home directory:
.vimrc&.vim/- Vim/Neovim configuration.zshrc&.zsh/- Zsh shell configuration.gitconfig- Git configuration (edit with your credentials).gitignore- Global Git ignore patterns.agignore- Silver Searcher ignore patterns.aliases- Shell aliases (fromaliases.zsh).gitmessage- Git commit template (fromcommit-conventions.txt)
Git Configuration
Important: Edit gitconfig and replace my credentials with yours before running the setup.
Vim/Neovim Setup
I use Neovim with vim-plug for plugin management. If you're using regular Vim, you may need to:
- Remove Neovim-specific plugins from
.vimrc - Run
:PlugCleanto remove plugin directories - Run
:PlugInstallto reinstall compatible plugins
Post-Installation Tasks
After running the setup, remember to:
-
Configure Git with your details:
git config --global user.name "Your Name" git config --global user.email "your.email@example.com" -
Generate SSH key:
ssh-keygen -t ed25519 -C ${USER}@$(hostname --fqdn) -
Set zsh as your login shell:
chsh -s /usr/bin/zsh -
Add yourself to virtualization groups (log out/in afterward):
sudo usermod -aG libvirt,kvm $USER -
(Optional) enable the rootless Podman API socket:
systemctl --user enable --now podman.socket -
Install VS Code extensions:
- C# Dev Kit
- GitLens
- Prettier
- NuGet Package Manager GUI
Supported Distributions
- Debian 13 "trixie" (primary target — full setup incl. upstream tooling, .NET, and backend services)
- Ubuntu / Pop!_OS (apt; core + development tools)
- Fedora (dnf; core + development tools, best-effort upstream tooling)
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.
Legacy
The original monolithic post_install.sh script has been archived in .archive/ for reference.