Skip to content

Repository files navigation

sys-setup

One command to restore my entire workstation across Arch, Ubuntu, Fedora, and macOS.

Arch Linux Ubuntu Fedora macOS License: MIT

Machine

  • Host: MSI Thin GF63 12HW
  • CPU: Intel Core i5-12500H (16 threads)
  • GPU: Intel Arc A370M + Iris Xe
  • Display: 1920×1080 @ 144Hz
  • OS: Linux (Arch, Ubuntu, Fedora) / macOS

Usage

On a fresh install:

bash -c "$(curl -sL https://raw.githubusercontent.com/as-repo1/sys-setup/master/install.sh)"

From a local clone:

git clone https://github.com/as-repo1/sys-setup.git ~/coding/sys-setup
cd ~/coding/sys-setup
bash install.sh

Dry run (see what will happen without making changes):

bash install.sh --dry-run

What It Does

The installer runs through 10 phases interactively with a Nord-themed CRT terminal UI:

Phase Description
0 Preflight checks (user, OS detection, package manager)
1 Interactive profile selection (Typical / Complete / Custom)
2 Mirror ranking (Arch) / Package sources (Ubuntu/Fedora)
3 Chaotic-AUR / RPM Fusion / Ubuntu Extras
4 Install AUR helpers, PPAs, or COPRs
5 Install packages (Native → Flatpak fallback)
6 Enable systemd services
7 Stow dotfiles
8 Download & register AppImages
9 Post-install (git, docker, fish shell)
10 Summary + reboot prompt

Installation Profiles

  • Typical — Niri WM + Dev tools + Zen/Firefox/Chrome + core dotfiles (2 keypresses)
  • Complete — Every package, utility, dotfile, and system option enabled
  • Custom — Select exactly which categories to configure, skip the rest

Visual Walkthrough

Phase 1: Welcome & Profile Selection

The installer welcomes you with a Nord-themed CRT UI and guides you through profile selection:

Installer Welcome & Profile Selection

Choose between Typical (recommended for fast setup), Complete (everything), or Custom (pick what you want).

Phase 1b: Customization Categories

If you select Custom, browse through available categories and toggle what to install:

Customization Categories

Select from Desktop/Window Manager, Browsers, Chat & Messaging, Multimedia, Development Tools, Notes & Office, File Managers, Utilities, Gaming, and AI & Local LLMs.

Phase 1c & 1d: Component Selection

Choose your desktop environment and individual packages per category:

Desktop/Window Manager Options:

Desktop Environment Selection

Browser Selection:

Browser Selection

Each category follows the same interactive pattern, letting you pick exactly what you need.


Available Options by Category

Desktop / Window Manager

Choose your preferred desktop environment or window manager:

  • Niri (Wayland tiling) — Recommended
  • GNOME (Full desktop environment)
  • i3 + bspwm (X11 tiling)

Browsers

Select one or more browsers:

  • Zen Browser — Firefox-based, privacy-focused
  • Firefox — Mozilla's standard browser
  • Google Chrome — Google's browser
  • Brave — Chromium + built-in ad-block
  • Floorp — Firefox-based, highly customizable
  • Microsoft Edge — Chromium-based
  • Librewolf — Hardened Firefox fork
  • Vivaldi — Feature-rich Chromium browser
  • Chromium — Open-source Chrome
  • Tor Browser — Anonymous browsing

Chat & Messaging

Communication tools:

  • Telegram — Encrypted messaging
  • Ferdium — Multi-service messenger aggregator
  • Discord — Community chat platform
  • Vesktop — Discord client (alternative)
  • Signal — Secure messaging
  • Slack — Workspace communication
  • Element — Matrix protocol client
  • Thunderbird — Email and messaging

Multimedia

Media creation and playback:

  • mpv — Lightweight media player
  • VLC — Universal media player
  • yt-dlp — YouTube downloader
  • Parabolic — GUI for yt-dlp
  • Celluloid — GNOME mpv frontend
  • OBS Studio — Recording & streaming
  • Kdenlive — Video editor
  • Audacity — Audio editor

Development Tools

Programming and development utilities:

  • Neovim — Terminal text editor
  • Git & GitHub CLI — Version control
  • Docker — Container platform
  • Android SDK — Android development
  • Base development packages — Build tools, headers, compilers

Notes & Office

Productivity applications:

  • LibreOffice — Office suite
  • Thunderbird — Email + calendar
  • GNOME Calendar — Calendar app
  • Text editors — Various document editors

File Managers

File management tools:

  • Ranger — Terminal file manager
  • Nautilus / Thunar — GUI file managers
  • Yazi — Modern terminal file browser
  • LSD — Colored ls alternative

Utilities

System and general utilities:

  • Starship — Shell prompt
  • Fish Shell — User-friendly shell
  • btop / htop — System monitoring
  • fastfetch — System info display
  • bat — Syntax-highlighted cat
  • tree — Directory tree viewer
  • tldr — Simplified man pages
  • lazygit — Terminal git UI
  • stow — Dotfile manager
  • curl / wget — Download tools

Gaming

Gaming and emulation tools:

  • Steam — Game platform
  • Lutris — Gaming platform manager
  • Wine — Windows compatibility
  • Emulators — Various console emulators

AI & Local LLMs

Artificial intelligence tools:

  • AnythingLLM Desktop — AppImage
  • LM Studio — AppImage
  • Pinokio — AppImage
  • Ollama — Local LLM runtime

Structure

sys-setup/
├── install.sh                  ← Main installer entry point
├── sync-dots.sh                ← Pull live configs from ~/.config into repo
├── update-dots.sh              ← Fetch latest dotfiles & apply via GNU Stow
├── check-secrets.sh            ← Scan dotfiles for exposed credentials/API keys
├── lib/                        ← Modular installer libraries & TUI components
├── packages/
│   ├── pkg-map.sh              ← Canonical to distro package name mapping
│   ├── pkglist-core.txt        ← Core packages (pacman native)
│   ├── pkglist-aur.txt         ← AUR packages (via yay)
│   ├── installed-pacman.txt    ← Snapshot of installed pacman packages
│   ├── installed-yay.txt       ← Snapshot of installed yay / AUR packages
│   └── appimages.csv           ← AppImage download manifest
├── system/
│   ├── pacman.conf             ← Custom pacman configuration
│   └── services.txt            ← Systemd services to enable
├── dots/                       ← GNU Stow packages
│   ├── niri/                   ← Niri WM configs & helper scripts
│   ├── waybar/                 ← Waybar configurations & custom modules
│   ├── fish/                   ← Fish shell configuration & functions
│   ├── kitty/ ghostty/ alacritty/ ← Terminal configurations
│   ├── nvim/                   ← Neovim / LazyVim configuration
│   ├── btop/ fastfetch/        ← Monitoring & system fetch configs
│   ├── fuzzel/ dunst/          ← Application launcher & notification daemon
│   ├── gtk/                    ← GTK 3.0 and GTK 4.0 theme settings
│   ├── zathura/ mpv/ ranger/   ← Media, reader & file manager configs
│   ├── noctalia/               ← Noctalia desktop shell & plugins
│   └── appimagelauncher/       ← AppImageLauncher configuration
├── scripts/
│   ├── setup-chaotic-aur.sh    ← Chaotic-AUR setup script
│   ├── setup-git.sh            ← Git user profile configuration
│   ├── setup-docker.sh         ← Docker rootless/storage configuration
│   └── setup-android-sdk.sh    ← Android SDK paths configuration
└── tests/
    ├── Dockerfile              ← Arch Linux test container
    └── test-in-docker.sh       ← Build & run installer inside Docker

Dotfiles Management

Dotfiles are structured as modular packages managed with GNU Stow. Each directory inside dots/<pkg>/ mirrors your $HOME layout (.config/<pkg>/).

Sync Live Configs to Repo:

Whenever you modify your local configs in ~/.config/ and want to save them into the repository:

bash sync-dots.sh

Apply Repo Configs to System:

To pull updates from GitHub and re-stow them to your system:

bash update-dots.sh

Scan for Secrets Before Committing:

bash check-secrets.sh

Apply Manually with Stow:

stow --dir=dots --target=$HOME niri
stow --dir=dots --target=$HOME waybar
# etc.

AppImages

Managed via AppImageLauncher. All AppImages are downloaded to ~/Appimages/ and auto-registered.

App Source
AnythingLLM Desktop GitHub Releases
LM Studio lmstudio.ai
Pinokio GitHub Releases
iDescriptor GitHub Releases
AppImagePool GitHub Releases

Testing

A Docker-based test environment lets you safely test the installer against a clean Arch Linux container without touching your host system:

# Drop into an interactive shell inside the container
./tests/test-in-docker.sh

# Or run a dry-run directly
./tests/test-in-docker.sh --dry-run

Notes

  • Secrets: git credentials, browser sessions, and API keys are never committed.
  • Idempotent: Safe to re-run — packages and stow links are skipped if already present.
  • Log: Full install log saved to ~/sys-setup-install.log

About

One-command Arch/EndeavourOS workstation bootstrap — Nord TUI, dotfiles, AUR, AppImages

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages