Skip to content

Latest commit

 

History

History

README.md

Documentation Index

Complete guide to the Fedora Desktop Configuration Manager.

New Here? Start Here

First time setup:

  1. Read Installation Guide - Get up and running
  2. Browse Playbooks Reference - See what optional features you can add
  3. Check Configuration Guide - Learn how to customize

Quick answers:

Documentation by Purpose

I want to install the system

Installation Guide

Everything you need to get started:

  • Prerequisites and system requirements
  • One-command installation walkthrough
  • What happens during installation
  • Manual installation steps
  • Common installation issues and fixes

Time to read: 5 minutes | Time to install: 10-30 minutes


I want to add optional features

Playbooks Reference

Complete catalog of available features:

  • Core features (automatic)
  • Development tools (Docker, Python, Go, VS Code)
  • Container platforms (LXC, Docker, Distrobox)
  • Hardware support (NVIDIA, DisplayLink, audio)
  • Desktop enhancements (GNOME, Firefox, VPN)
  • How to run optional playbooks
  • Creating custom playbooks

Time to read: 10 minutes | Quick reference format


I want to understand containerization options

Containerization Guide

Comprehensive comparison and usage guide:

  • LXC vs Docker vs Distrobox comparison table
  • When to use each technology
  • Installation and configuration
  • Real-world usage examples
  • Docker-in-LXC for isolated development
  • Troubleshooting container issues

Time to read: 15 minutes | Includes decision tree


I want to customize my setup

Configuration Guide

Learn how to make it yours:

  • User configuration (name, email, vault)
  • System configuration (DNF, bash, SSH, Git)
  • Optional feature configuration
  • Ansible patterns and best practices
  • Adding custom playbooks and files
  • Debugging configuration issues

Time to read: 10 minutes | Reference guide


I want to understand how it works

Architecture Overview

Deep dive into project structure:

  • Directory structure and organization
  • Execution flow (bootstrap → main → optional)
  • Configuration management patterns
  • Variable hierarchy
  • File management
  • Security model

Time to read: 8 minutes | For contributors and curious minds


I want to contribute or modify

Development Guide

Everything for contributors:

  • Development environment setup
  • Branching strategy (version-specific branches)
  • Ansible style guide and patterns
  • Testing and debugging procedures
  • Contribution workflow
  • Pull request guidelines
  • Security considerations

Time to read: 12 minutes | Essential for contributors

Common Tasks Quick Reference

Installation & Setup

# One-command install (fresh Fedora)
(source <(curl -sS https://raw.githubusercontent.com/LongTermSupport/fedora-desktop/HEAD/run.bash?$(date +%s)))

# Re-run main playbook
cd ~/Projects/fedora-desktop
ansible-playbook playbooks/playbook-main.yml --ask-become-pass

# Check what's installed
ansible desktop -m setup | grep ansible_distribution

Adding Optional Features

cd ~/Projects/fedora-desktop

# Install Docker (rootless)
ansible-playbook playbooks/imports/optional/common/play-docker.yml

# Install Distrobox
ansible-playbook playbooks/imports/optional/common/play-distrobox.yml

# Install Python environment
ansible-playbook playbooks/imports/optional/common/play-python.yml

# Add VS Code
ansible-playbook playbooks/imports/optional/common/play-vscode.yml

Configuration Management

# View encrypted settings
ansible-vault view environment/localhost/host_vars/localhost.yml

# Edit encrypted settings
ansible-vault edit environment/localhost/host_vars/localhost.yml

# Check DNF optimization
grep max_parallel /etc/dnf/dnf.conf

# Test playbook without applying changes
ansible-playbook playbook.yml --check

Containerization

# LXC: Create container
sudo lxc-create -n mycontainer -t download -- -d ubuntu -r jammy -a amd64
sudo lxc-start -n mycontainer

# Docker: Run service
docker run -d -p 8080:80 nginx

# Distrobox: Create dev environment
distrobox create --name dev --image ubuntu:22.04
distrobox enter dev

Project File Structure

~/Projects/fedora-desktop/
├── docs/                          # Documentation (you are here)
│   ├── README.md                  # This index
│   ├── installation.md            # Setup guide
│   ├── playbooks.md               # Feature catalog
│   ├── configuration.md           # Customization guide
│   ├── containerization.md        # Container tech comparison
│   ├── architecture.md            # Technical deep dive
│   └── development.md             # Contributor guide
│
├── playbooks/                     # Ansible automation
│   ├── playbook-main.yml          # Main orchestrator (automatic)
│   └── imports/
│       ├── play-*.yml             # Core playbooks
│       └── optional/
│           ├── common/            # General features
│           ├── hardware-specific/ # Hardware drivers
│           └── experimental/      # Bleeding-edge features
│
├── environment/localhost/         # Configuration
│   ├── hosts.yml                  # Inventory (localhost)
│   └── host_vars/localhost.yml    # User settings (encrypted)
│
├── files/                         # Static files deployed to system
│   ├── etc/                       # System configs
│   └── var/                       # Scripts and data
│
├── vars/                          # Project variables
│   └── fedora-version.yml         # Target Fedora version
│
├── run.bash                       # Bootstrap installer
├── ansible.cfg                    # Ansible configuration
├── vault-pass.secret              # Vault password (gitignored)
└── CLAUDE.md                      # AI coding assistant instructions

Documentation Topics A-Z

Architecture & Design

Configuration & Customization

Containerization

Development & Contributing

Installation & Setup

Playbooks & Features

Troubleshooting Quick Links

Getting Help

Version Information

Current branch: Fedora 42 (F42)

This documentation matches the configuration in this branch. Other Fedora versions have separate branches with version-specific changes.

Check your installed version:

cat /etc/fedora-release                    # Your system version
cat ~/Projects/fedora-desktop/vars/fedora-version.yml  # Target version

If versions don't match, checkout the appropriate branch:

cd ~/Projects/fedora-desktop
git fetch origin
git checkout F43  # or your version