A Rust-based CLI tool for quick Fedora system setup and configuration.
This tool provides both an interactive menu and direct CLI commands for installing and configuring various software on Fedora Linux.
Key Features:
- Pure Rust implementation: All installation logic written in Rust using
cmd_lib - Self-contained binary: No external script files needed at runtime
- Dual-mode operation: Interactive menu or direct CLI commands
- Minimal dependencies: No heavy dependencies like
reqwestoropenssl - Interactive menu: Easy-to-use navigation with
dialoguer - CLI-friendly: Execute installations directly via command-line arguments
- Secure downloads: Uses system
curlwith proper TLS settings
# Download the binary
curl -LO https://github.com/raikbitters/fedora-setup/releases/download/1.0.0/fedora-setup
# Make it executable
chmod +x fedora-setup
# Move to your PATH
sudo mv fedora-setup /usr/local/bin/git clone https://github.com/raikbitters/fedora-setup.git
cd fedora-setup
cargo build --release
sudo cp target/release/fedora-setup /usr/local/bin/Or install globally via cargo:
cargo install --path .The tool supports both interactive mode and direct CLI commands.
Run without arguments to launch the interactive menu:
fedora-setupThen:
- Use arrow keys to navigate the menu
- Press Enter to select an option
- Follow any prompts during installation
- Select "Exit" or "Ctrl+C" when done
Execute specific commands directly:
# Install Discord
fedora-setup discord
# Install Docker
fedora-setup docker
# Install and configure Zsh with Oh My Zsh
fedora-setup zsh
# Set up Git user name and email
fedora-setup gitList all available commands:
fedora-setup --listDisplay version information:
fedora-setup --versionDisplay help information:
fedora-setup --help- Fedora Linux
- Rust toolchain (install via
rustup) - GCC compiler (
sudo dnf install gccorsudo dnf group install c-development)
cargo build --releaseThe binary will be located at target/release/fedora-setup.
During development:
cargo runOr run the built binary directly:
./target/release/fedora-setupfedora-setup/
├── Cargo.toml # Rust project dependencies
├── src/
│ ├── main.rs # Main application entry point with interactive menu
│ ├── menu.rs # Menu item definitions
│ ├── installer.rs # Installation coordinator
│ └── scripts/ # Installation modules (pure Rust implementations)
│ ├── mod.rs
│ ├── utils.rs # Common utilities
│ ├── onepassword.rs
│ ├── vscode.rs
│ ├── docker.rs
│ ├── zsh.rs
│ ├── rust_lang.rs
│ ├── golang.rs
│ ├── nvm.rs
│ ├── fonts.rs
│ ├── discord.rs
│ ├── scaling.rs
│ └── git.rs
└── scripts/ # Original bash scripts (reference only, not used)
dialoguer- Interactive CLI promptsconsole- Terminal utilitiescolored- Colored terminal outputanyhow- Error handlingdirs- Home directory utilitiescmd_lib- Ergonomic shell command executionclap- Command-line argument parsing
All installations are implemented as pure Rust functions that use cmd_lib::run_cmd! macro for executing system commands. This approach provides:
- Type-safe command execution
- Proper error handling with
Result<()> - Clean and readable syntax similar to shell scripts
- No need for temporary script files
Example:
pub fn install_rust() -> Result<()> {
let url = "https://sh.rustup.rs";
run_cmd!(curl --proto "=https" --tlsv1.2 -sSf $url | sh -s -- -y)?;
Ok(())
}