Initial System Setup Shell Script Builder for Fedora Workstation
This project offers a Streamlit-based web application for generating a tailored shell script to set up a new Fedora Workstation installation. The app provides an intuitive interface for choosing system configurations, applications, and customization options. It is currently open for testing and is generally suitable for production use, although minor bug fixes and code improvements are ongoing.
(As of 2025-03-04)
- Restructured the entire codebase into a modular architecture:
- Created separate modules for UI components, script generation, and utilities
- Implemented a proper state management system using Streamlit's session state
- Enhanced error handling throughout the application
- Added comprehensive logging for better debugging
- Changed the default output mode to Verbose
- Fixed minor bugs
- Fixed log messages being redirected to /dev/null in quiet mode, ensuring users can see progress messages
- Added option to remove Fedora Flatpak repository and replace it with Flathub repository for better compatibility and stability
- This addresses ongoing drama where the Fedora Flatpak repository can cause conflicts and instability
- Added option to install RustDesk, a remote desktop software
- Added option to install VeraCrypt, a free and open-source encryption software
- Added caching for data loading to improve application performance
- Improved search functionality in the sidebar for easier navigation
- Enhanced the bonus scripts handling with better error management
- Fixed Zerotier installation command
- Updated version specific installers for the following applications:
- Vivaldi Browser
- Tabby Terminal
- NoMachine
(As of 2024-09-05)
We're grateful for the valuable feedback and suggestions from the r/Fedora community. Recent updates include:
- Added a search to the sidebar for easier navigation between available options and applications
- Restructured the Additional Apps section for better organization
- Added a new Coding and DevOps section with tools like Docker, Podman, and VSCodium
- Expanded the list of additional applications, including Pika Backup, Deja Dup, and Tabby Terminal
- Introduced a Bonus Scripts section for standalone customization scripts, including File Templates and NVIDIA Drivers
- Included multimedia, Intel, and AMD codecs from the RPM Fusion repository
- Added virtualization tools for enhanced system capabilities
- Replaced
bpytop
withbtop
for improved system monitoring - Addressed inconsistent naming conventions across the project for better coherence
- Added more Flatpaks to provide a wider range of application options
- Introduced VSCodium as an open-source alternative to VS Code
Special thanks to u/RedBearAK, u/ScootSchloingo, u/charliesbot, u/Laughingatyou1000, u/Papercutter0324, u/ajunior7, and u/intulor for their contributions and insights.
We're continuously working to enhance the script and welcome further suggestions from the community.
- System Configuration: Set hostname, configure DNF, enable auto-updates, install SSH, check for firmware updates, and enable RPM Fusion repositories.
- Essential Apps: Install popular command-line tools and utilities with detailed descriptions.
- Additional Apps: Choose from a wide range of applications categorized by purpose:
- Internet & Communication (browsers, email clients, messaging apps)
- Office & Productivity
- Coding & DevOps
- Media & Graphics
- Gaming & Emulation
- System Tools
- Remote Access & Networking
- File Sharing & Download
- Customization:
- Install fonts (Windows, Google, Adobe Source)
- Install themes (e.g., Tela Icon Theme)
- Configure power settings
- Set up development environments (Zsh, Oh My Zsh, Miniconda)
- Advanced Options: Add custom shell commands to be included in the generated script.
- Script Preview: View a preview of the generated script before downloading.
- One-Click Download: Generate and download the customized script with a single click.
- Output Mode Selection: Choose between Quiet (hide command output) and Verbose (show full output) modes.
- Python 3.7+
- Streamlit
- A modern web browser
-
Clone this repository:
git clone https://github.com/k-mktr/fedora-things-to-do.git cd fedora-things-to-do
-
Install the required Python packages:
pip install streamlit pip --upgrade
-
Run the Streamlit app:
streamlit run app.py
-
Open your web browser and navigate to the URL provided by Streamlit (usually
http://localhost:8501
) or use our official public instance -
Use the sidebar to select your desired configuration options.
-
Choose the Output Mode (Quiet or Verbose) to control the level of detail in the generated script.
-
(Optional) Add custom shell commands in the Advanced section.
-
Click the "Build Your Script" button to create your customized script.
-
Review the script preview and click "Download Your Script" to save it.
-
Follow the instructions provided after generating the script to make it executable and run it on your Fedora system.
The template.sh
file serves as the base for the generated script. It includes:
- Error handling and logging functionality
- User prompts for optional steps
- A modular structure that allows for easy customization
The generated script will make system-wide changes. Always review the script contents before running it on your system.
Contributions are welcome! If you'd like to see additional apps or options included, please open an issue or submit a pull request. Here are some ways you can contribute:
- Suggest new applications or system configurations to include
- Report bugs or issues you encounter
- Enhance the user interface or add new features
This project is licensed under the GNU General Public License v3.0 - see the LICENSE file for details.
- Fedora Project for their excellent Linux distribution
- Streamlit for their intuitive app framework
- All contributors of Open Source Software
For questions, feedback, or support, please:
- Open an issue on this repository
- Contact the author: Karol Stefan Danisz
Future plans for this project include:
- ✅ Enhancing user experience with more intuitive interface options
- ✅ Adding Advanced Section for a custom Shell Commands
- ✅ Further organizing the code, improving readability
- ✅ Improving the Quiet Mode code logic
- Implementing predefined configuration Profiles
- Implementing a feature to save and load custom profiles
- Developing versions for other Linux distributions (e.g., Debian/Ubuntu)
- Adding more applications and configuration options
The script is designed to be safe, but as with any system-wide changes, it's important to review the script contents before running it. We provide a preview feature so you can see exactly what the script will do. Always ensure you understand the changes that will be made to your system.
Currently, this script is specifically designed for Fedora Workstation. While some commands might work on other distributions, we don't recommend using it on non-Fedora systems without significant modifications. We're considering developing versions for other distributions in the future.
We strive to keep the application list up-to-date with the latest stable versions available for Fedora. However, the exact update frequency may vary. If you notice an outdated application or would like to suggest a new one, please open an issue on our GitHub repository.
Absolutely! The generated script is just a starting point. You're free to modify it to better suit your needs. Just be careful to maintain proper syntax and consider the potential impacts of any changes you make.
The script includes error handling to log issues it encounters. If you run into problems, check the log file (default location: /var/log/fedora_things_to_do.log
) for more information. If you can't resolve the issue, feel free to open an issue on our GitHub repository with the error details.
Yes, the script includes options for configuring DNF (Fedora's package manager) and enabling automatic updates.
While the script is designed to be somewhat idempotent (can be run multiple times without causing issues), it's not guaranteed for all operations. It's best to run it once on a fresh Fedora installation. If you need to make changes later, it's safer to generate a new script with only the additional changes you need.
We welcome contributions! You can contribute by suggesting new features, reporting bugs, improving documentation, or submitting pull requests. Check out our "Contributing" section in the README for more details.
While Ansible is a powerful tool for configuration management, our project prioritizes simplicity and transparency for end-users. The shell script approach allows users to easily see and understand exactly what commands will be executed on their system. It doesn't require additional software installation and is more approachable for users who may not be familiar with Ansible. However, for more complex setups or managing multiple systems, Ansible could be a viable alternative.
Created with ❤️ for Open Source