A comprehensive automation script for setting up a fresh Fedora 41 Workstation installation with essential software, configurations, and development tools.
Note: The script was designed for Fedora 41 Workstation, but it may also work on other Fedora-based distributions. However, please be cautious and ensure compatibility before running it on other systems.
Important: While the script aims to automate setup tasks, it's essential to review the code and understand what it does before running it on your machine. Ensure that you back up critical data before proceeding. The script provided is for educational purposes and comes with no warranty or support.
Pop!_OS (22.04) - Post Install
- 🔄 System Updates and Optimization
- 📦 Essential Software Installation (DNF & Flatpak)
- 🗂️ Enable RPM Fusion repositories
- 🛠️ Development Environment Setup
- 🔧 Custom Aliases Configuration
- 🔐 GitHub Integration
- 🎮 Gaming and Multimedia Support
- 🎯 Android Development Setup
post-install-fedora/
├── src/
│ ├── alias.sh # Custom shell aliases configuration
│ ├── devEnv.sh # Development environment setup
│ ├── dnf-config.sh # DNF package manager optimization
│ ├── githubCloneAndConfig.sh # GitHub repository setup
│ ├── homeScript.sh # Home directory utilities setup for `misc`
│ └── post-install.sh # Main installation script
├── misc/
│ ├── update.sh # System update utility
│ ├── syncthingStatus.sh # Syncthing status checker
│ └── swapAudio.sh # Audio channel swap utility
└── run.sh # Main execution script
-
run.sh
- Entry point for the installation process
- Orchestrates the execution of all other scripts
- Handles initial setup and permissions
-
post-install.sh
- Manages software installation
- Configures RPM Fusion repositories
- Installs DNF and Flatpak packages
- Sets up Android SDK environment
-
alias.sh
- Configures custom shell aliases
- Creates and manages
.bash_aliases
file - Integrates with
.bashrc
-
dnf-config.sh
- Optimizes DNF package manager settings
- Improves download speeds and package management
- Creates backup of original configuration
-
devEnv.sh
- Sets up development tools
- Installs Node.js, NVM, and other dev packages
-
githubCloneAndConfig.sh
- Configures GitHub CLI
- Clones user repositories
- Sets up Git global configuration
-
misc/update.sh
- System update utility
- Handles DNF and Flatpak updates
- Performs system cleanup
-
misc/syncthingStatus.sh
- Checks Syncthing service status
-
misc/swapAudio.sh
- Utility for swapping audio channels
The script includes several predefined aliases that you can customize. To modify them, edit the CUSTOM_ALIASES
array in src/alias.sh
:
CUSTOM_ALIASES=(
'alias ips="ip -c -br a"'
'alias his="history|grep"'
'alias ports="netstat -tulanp"'
# Add your custom aliases here
)
Common included aliases:
update
,upd
,up
: Run system updatesmisc/update.sh
ips
: Show IP addresseshis
: Search command historyports
: Show network portsswap
: Switch audio outputsyncstatus
: Check Syncthing statusmisc/syncThingStatus.sh
To modify which packages are installed, edit the arrays in src/post-install.sh
:
- DNF Packages:
PROGRAMS_TO_INSTALL_DNF=(
btop
vim
# Add/remove packages here
)
- Flatpak Packages:
PROGRAMS_TO_INSTALL_FLATPAK=(
org.qbittorrent.qBittorrent
# Add/remove packages here
)
- Clone the repository:
git clone https://github.com/geraldohomero/post-install-fedora.git
- Make the script executable:
chmod +x run.sh
- Run the script:
sudo ./run.sh
- Fresh Fedora installation
- Internet connection
- Sudo privileges
Contributions are welcome! Please feel free to submit a Pull Request.