{"id":26428435,"url":"https://github.com/arcangelo7/ansible-fedora-config","last_synced_at":"2025-03-18T04:31:25.995Z","repository":{"id":282909526,"uuid":"950031285","full_name":"arcangelo7/ansible-fedora-config","owner":"arcangelo7","description":"Questo repository contiene playbook e ruoli Ansible per configurare automaticamente un sistema Fedora con le mie impostazioni personali.","archived":false,"fork":false,"pushed_at":"2025-03-17T15:47:33.000Z","size":8,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-03-17T16:27:39.275Z","etag":null,"topics":["ansible","fedora-workstation"],"latest_commit_sha":null,"homepage":"","language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/arcangelo7.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2025-03-17T14:21:10.000Z","updated_at":"2025-03-17T15:47:36.000Z","dependencies_parsed_at":"2025-03-17T16:27:42.491Z","dependency_job_id":"d31da8e2-6f00-4ddf-afaf-522c03892869","html_url":"https://github.com/arcangelo7/ansible-fedora-config","commit_stats":null,"previous_names":["arcangelo7/ansible-fedora-config"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/arcangelo7%2Fansible-fedora-config","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/arcangelo7%2Fansible-fedora-config/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/arcangelo7%2Fansible-fedora-config/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/arcangelo7%2Fansible-fedora-config/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/arcangelo7","download_url":"https://codeload.github.com/arcangelo7/ansible-fedora-config/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":244156763,"owners_count":20407564,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["ansible","fedora-workstation"],"created_at":"2025-03-18T04:31:25.643Z","updated_at":"2025-03-18T04:31:25.990Z","avatar_url":"https://github.com/arcangelo7.png","language":null,"funding_links":[],"categories":[],"sub_categories":[],"readme":"# Fedora System Configuration with Ansible\n\nThis repository contains Ansible playbooks and roles to automatically configure a Fedora system with my personal settings.\n\n## Prerequisites\n\n- Fedora (tested on Fedora 41)\n- Ansible installed (`sudo dnf install ansible`)\n\n## Usage\n\n1. Clone this repository:\n   ```bash\n   git clone https://github.com/arcangelo/fedora-ansible-config.git\n   cd fedora-ansible-config\n   ```\n\n2. Run the main playbook:\n   ```bash\n   ansible-playbook -i inventory.yml main.yml --ask-become-pass\n   ```\n\n   Or run only specific tags:\n   ```bash\n   # System update and base packages\n   ansible-playbook -i inventory.yml main.yml --ask-become-pass --tags \"system,base-packages\"\n   \n   # Development environment configuration\n   ansible-playbook -i inventory.yml main.yml --ask-become-pass --tags \"development\"\n   \n   # Docker installation\n   ansible-playbook -i inventory.yml main.yml --ask-become-pass --tags \"docker\"\n   \n   # Desktop and browser configuration\n   ansible-playbook -i inventory.yml main.yml --ask-become-pass --tags \"desktop,browser\"\n   \n   # Cursor (code editor) installation\n   ansible-playbook -i inventory.yml main.yml --ask-become-pass --tags \"cursor\"\n   ```\n\n## Idempotency\n\nThis playbook is designed to be fully idempotent, meaning it can be run multiple times without causing unnecessary changes. Each task includes specific checks to determine if the operation is actually needed:\n\n- **System updates**: The playbook checks if updates are available before running the update process\n- **Package installation**: Each package is individually checked to see if it's already installed\n- **Git configuration**: The current Git settings are compared with the desired ones before making changes\n- **Docker installation**: The system checks if Docker Desktop is already installed and if requirements are met\n- **Application installation**: For applications like Cursor, the playbook verifies if the binaries, desktop entries, and PATH links already exist\n\nThis makes the playbook:\n1. **Faster**: Skips operations that aren't needed\n2. **Safer**: Avoids unnecessary changes to the system\n3. **Reusable**: Can be run regularly to keep the system up to date and configured correctly\n\nYou can safely run the entire playbook or specific parts using tags whenever you want to ensure your system matches the desired configuration.\n\n## Repository Structure\n\n- `inventory.yml`: Ansible inventory file (configures localhost as target)\n- `main.yml`: Main playbook that includes all roles\n- `ansible.cfg`: Ansible configuration\n- `group_vars/workstations.yml`: Configurable variables for the workstations group\n- `roles/`: Directory containing various Ansible roles\n  - `common/`: Basic system configurations\n  - `development/`: Development tools and Git configuration\n  - `desktop/`: GNOME desktop environment configurations\n  - `applications/`: Additional applications\n\n## Available Roles\n\n### Common\nInstalls and configures basic system components:\n- System update (`tags: system, update`)\n- Base packages like git, htop, tilix, wget, curl (`tags: packages, base-packages`)\n- Removal of DNF and Flatpak bloatware packages (`tags: system, cleanup, bloatware`)\n\n### Development\nInstalls and configures development tools:\n- Compilers and build tools like gcc, make, automake (`tags: development, packages`)\n- Custom Git configuration (`tags: development, git`)\n- Docker and system requirements (`tags: development, docker, docker_requirements`)\n- Python and Node.js development tools\n\n### Desktop\nConfigures the GNOME desktop environment:\n- Themes and icons with gnome-tweaks (`tags: desktop, themes`)\n- GNOME extensions like dash-to-dock and appindicator (`tags: desktop, gnome-extensions`)\n- Brave Browser via Flatpak (`tags: desktop, browser, brave`)\n\n### Applications\nInstalls and configures additional applications:\n- Cursor (AI-first code editor) as AppImage (`tags: applications, cursor`)\n  - Downloads the AppImage to `/opt/appimages/`\n  - Extracts the icon from the AppImage\n  - Creates an application menu entry\n  - Makes the AppImage accessible from anywhere in the system\n\n## Customization\n\nYou can customize the configuration by modifying the `group_vars/workstations.yml` file, which includes:\n\n- `fedora_bloatware`: List of DNF packages to remove\n- `flatpak_bloatware`: List of Flatpak applications to remove\n- `common_packages`: List of base packages to install\n- `development_packages`: List of development packages to install\n- `git_config`: Git configuration (username, email, editor)\n- `desktop_theme`: Default desktop theme\n- `desktop_icon_theme`: Default icon theme\n- `desktop_dark_mode`: Dark mode activation\n\nAdditionally, you can modify the specific settings for each role in their respective `defaults/main.yml` files. ","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Farcangelo7%2Fansible-fedora-config","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Farcangelo7%2Fansible-fedora-config","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Farcangelo7%2Fansible-fedora-config/lists"}