Skip to content

jonaskahn/fedora-essentials

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Fedora Essentials Logo

Fedora Essentials

Interactive terminal setup for Fedora 44+ — debloat, configure, and install apps guided by your role.

Bash Fedora License: MIT


🚀 Quick Start

git clone https://github.com/yourusername/fedora-essentials.git
cd fedora-essentials
sudo ./main.sh

Requires Fedora 44+, sudo, and an internet connection. whiptail is auto-installed if missing.


🖥️ Demo

Fedora Essentials welcome screen

✨ How It Works

  1. Choose a profile — Developer, Office, Media, or Custom
  2. Pick categories — GNOME Desktop, Browsers, Development, Media, Productivity, System Tools
  3. Review checklists marks what's already installed; profile pre-checks suggestions
  4. Confirm — review the full diff (installs + removals) before anything runs
  5. Execute — live progress; pauses on errors (ENTER to continue, Ctrl+C to abort)

Checked = install or keep. Unchecked = remove or skip. Only real changes are applied.


🧩 What's Included

Category Apps Highlights
🖥️ GNOME Desktop 17 Tweaks, Extensions, bulk bloat removal
🌐 Browsers 7 Brave, Chromium, LibreWolf, Vivaldi, Edge
🛠️ Development 23 VSCode, Git, Python, Node, Go, Rust, Java, Docker, Android Studio, Qt, Postman
🎵 Media 8 VLC, MPV, FFmpeg, GStreamer codecs, OBS, Kdenlive, Spotify
📝 Productivity 10 LibreOffice, Thunderbird, GIMP, Inkscape, Obsidian, fonts
⚙️ System Tools 19 btop, fzf, ripgrep, bat, fd, zoxide, timeshift, rclone

👨‍💻 Developer Profile

Select Developer to get extra prompts for:

  • Focus areas: Web, Desktop apps, Android, DevOps
  • Languages: Python, Node.js, Go, Rust, Java, C/C++, .NET, PHP

Matching tools are pre-checked automatically.


🗂️ Project Structure

fedora-essentials/
├── main.sh              # Entry point: profile → checklists → execution
├── lib/
│   ├── utils.sh         # Logging, run_cmd, package detection, error pause
│   ├── ui.sh            # whiptail wrappers (checklist, radiolist, msgbox)
│   ├── repos.sh         # RPM Fusion, Flathub, Brave, VSCode, Docker repos
│   └── dnf_tweaks.sh    # DNF optimizations + system update
├── modules/             # One file per category (84 apps total)
│   ├── gnome_tweaks.sh
│   ├── browsers.sh
│   ├── development.sh
│   ├── media.sh
│   ├── productivity.sh
│   └── system_tools.sh
└── assets/
    ├── logo.svg
    ├── banner.txt
    └── demo.png

📋 Logging

Every session logs to /var/log/fedora-essentials-<timestamp>.log (symlinked at fedora-essentials-latest.log).


🔧 Extending

Add an app to any module's app list:

# pkg|label|source|extra|tags|checkcmd
"com.app.Name|My App|flatpak|flathub|dev,web|"
"my-tool|My CLI Tool|dnf||lang-python|which my-tool"
  • tags — drives profile suggestions (rm:TAG = pre-uncheck for removal)
  • checkcmd — custom install-detection command (overrides rpm/flatpak defaults)

📄 License

MIT © 2026 Jonas

About

Debloat, configure, and install apps guided by profiles

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages