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 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 script_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
- Implementing predefined configuration Profiles
- Further organizing the code, improving readability
- Improving the Quiet Mode code logic
- 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