mirror of
https://github.com/fscotto/infra.git
synced 2026-09-28 03:03:49 +00:00
Compare commits
10 Commits
160d63c02d
...
feature/at
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
76f3e10ee4 | ||
|
|
c899bb7192 | ||
|
|
2ab5ba6818 | ||
|
|
a347880d4c | ||
|
|
b05a2b4e74 | ||
|
|
75d9081a11 | ||
|
|
b4b3bd10b8 | ||
|
|
db10d1296e | ||
|
|
8c35ef63c9 | ||
|
|
64aebe8c34 |
11
README.md
11
README.md
@@ -63,10 +63,6 @@ nymph is allowed to break
|
|||||||
|
|
||||||
`ikaros` is the stable personal Fedora/GNOME desktop. `nymph` is the laptop and gets the same shared desktop dotfiles while GNOME itself stays close to the Fedora defaults. The legacy `void` and `desktop` groups are compatibility parents; the main axes are `platform_*`, `role_*`, and `desktop_*`.
|
`ikaros` is the stable personal Fedora/GNOME desktop. `nymph` is the laptop and gets the same shared desktop dotfiles while GNOME itself stays close to the Fedora defaults. The legacy `void` and `desktop` groups are compatibility parents; the main axes are `platform_*`, `role_*`, and `desktop_*`.
|
||||||
|
|
||||||
The official ChatGPT desktop RPM is enabled only on `ikaros` and `nymph`. The
|
|
||||||
playbook configures OpenAI's signed RPM repository and imports its pinned RPM
|
|
||||||
signing key before installation; subsequent updates are handled by DNF.
|
|
||||||
|
|
||||||
## Desktop profiles
|
## Desktop profiles
|
||||||
|
|
||||||
- `ikaros`: stable Fedora Workstation + GNOME desktop.
|
- `ikaros`: stable Fedora Workstation + GNOME desktop.
|
||||||
@@ -338,10 +334,9 @@ ansible-playbook ansible/site.yml --limit <host> --tags emacs -e emacs_enabled=t
|
|||||||
## AI coding agents
|
## AI coding agents
|
||||||
|
|
||||||
The shared npm-managed agents are OpenCode, Claude Code, Codex, Gemini CLI, and
|
The shared npm-managed agents are OpenCode, Claude Code, Codex, Gemini CLI, and
|
||||||
GitHub Copilot; IBM Bob is also managed on `deadalus`. Codex Relay is installed
|
GitHub Copilot; IBM Bob is also managed on `deadalus`. Each agent has its own
|
||||||
only on `ikaros`. Each agent has its own lifecycle flags in
|
lifecycle flags in `ansible/inventory/group_vars/all.yml`, so one agent can be
|
||||||
`ansible/inventory/group_vars/all.yml`, so one agent can be installed,
|
installed, configured, or removed without affecting the others:
|
||||||
configured, or removed without affecting the others:
|
|
||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
ai_agents:
|
ai_agents:
|
||||||
|
|||||||
@@ -93,8 +93,6 @@ common_dotfiles:
|
|||||||
# AI coding-agent lifecycle controls are independent for every agent.
|
# AI coding-agent lifecycle controls are independent for every agent.
|
||||||
# Installation and removal are mutually exclusive per agent; the common
|
# Installation and removal are mutually exclusive per agent; the common
|
||||||
# pre-task enforces this before any changes are made.
|
# pre-task enforces this before any changes are made.
|
||||||
codex_relay_install_enabled: false
|
|
||||||
|
|
||||||
ai_agents:
|
ai_agents:
|
||||||
opencode:
|
opencode:
|
||||||
npm_package: opencode-ai
|
npm_package: opencode-ai
|
||||||
@@ -111,11 +109,6 @@ ai_agents:
|
|||||||
install_enabled: true
|
install_enabled: true
|
||||||
deploy_enabled: true
|
deploy_enabled: true
|
||||||
uninstall_enabled: false
|
uninstall_enabled: false
|
||||||
codex_relay:
|
|
||||||
npm_package: codex-relay
|
|
||||||
install_enabled: "{{ codex_relay_install_enabled }}"
|
|
||||||
deploy_enabled: false
|
|
||||||
uninstall_enabled: false
|
|
||||||
gemini_cli:
|
gemini_cli:
|
||||||
npm_package: "@google/gemini-cli"
|
npm_package: "@google/gemini-cli"
|
||||||
install_enabled: true
|
install_enabled: true
|
||||||
|
|||||||
@@ -58,13 +58,3 @@ fedora_dev_packages:
|
|||||||
|
|
||||||
fedora_flatpak_remote_name: flathub
|
fedora_flatpak_remote_name: flathub
|
||||||
fedora_flatpak_remote_url: https://dl.flathub.org/repo/flathub.flatpakrepo
|
fedora_flatpak_remote_url: https://dl.flathub.org/repo/flathub.flatpakrepo
|
||||||
|
|
||||||
chatgpt_desktop_enabled: false
|
|
||||||
chatgpt_desktop_supported_fedora_versions:
|
|
||||||
- "43"
|
|
||||||
- "44"
|
|
||||||
chatgpt_desktop_supported_architectures:
|
|
||||||
- x86_64
|
|
||||||
- aarch64
|
|
||||||
chatgpt_desktop_rpm_gpg_key: RPM-GPG-KEY-chatgpt-3BFA0E4AE8B8CC16A2D9BA684A3B4A566C4660E4.asc
|
|
||||||
chatgpt_desktop_rpm_repository: https://persistent.oaistatic.com/codex-app-prod/linux/rpm/$basearch
|
|
||||||
|
|||||||
@@ -3,10 +3,6 @@ enabled_services:
|
|||||||
- docker
|
- docker
|
||||||
|
|
||||||
workstation_dev_wsl_packages:
|
workstation_dev_wsl_packages:
|
||||||
- buildah
|
|
||||||
- helm
|
|
||||||
# Fedora ships the kubectl client binary in the kubernetes-client package.
|
|
||||||
- kubernetes-client
|
|
||||||
- mise
|
- mise
|
||||||
- pinentry-curses
|
- pinentry-curses
|
||||||
- python3-pip
|
- python3-pip
|
||||||
|
|||||||
@@ -1,9 +1,6 @@
|
|||||||
---
|
---
|
||||||
hostname: ikaros
|
hostname: ikaros
|
||||||
|
|
||||||
codex_relay_install_enabled: true
|
|
||||||
chatgpt_desktop_enabled: true
|
|
||||||
|
|
||||||
host_packages:
|
host_packages:
|
||||||
- openssh-clients
|
- openssh-clients
|
||||||
- openssh-server
|
- openssh-server
|
||||||
@@ -232,7 +229,7 @@ gnome_gsettings_settings:
|
|||||||
- schema: org.gnome.shell
|
- schema: org.gnome.shell
|
||||||
key: app-picker-layout
|
key: app-picker-layout
|
||||||
value: >-
|
value: >-
|
||||||
[{'System': <{'position': <0>}>, 'Utilities': <{'position': <1>}>, 'org.fedoraproject.MediaWriter.desktop': <{'position': <2>}>, 'org.gnome.Contacts.desktop': <{'position': <3>}>, 'org.gnome.Calendar.desktop': <{'position': <4>}>, 'org.gnome.Calculator.desktop': <{'position': <5>}>, 'org.gnome.Weather.desktop': <{'position': <6>}>, 'org.gnome.clocks.desktop': <{'position': <7>}>, 'org.gnome.Maps.desktop': <{'position': <8>}>, 'org.gnome.SimpleScan.desktop': <{'position': <9>}>, 'org.gnome.TextEditor.desktop': <{'position': <10>}>, 'org.gnome.Settings.desktop': <{'position': <11>}>, 'org.gnome.Boxes.desktop': <{'position': <12>}>, 'org.gnome.Showtime.desktop': <{'position': <13>}>, 'org.gnome.Snapshot.desktop': <{'position': <14>}>, 'org.gnome.Characters.desktop': <{'position': <15>}>, 'org.gnome.Tour.desktop': <{'position': <16>}>, 'org.gnome.Yelp.desktop': <{'position': <17>}>, 'org.gnome.Software.desktop': <{'position': <18>}>, 'be.alexandervanhee.gradia.desktop': <{'position': <19>}>, 'com.github.jeromerobert.pdfarranger.desktop': <{'position': <20>}>, 'org.onlyoffice.desktopeditors.desktop': <{'position': <21>}>, 'org.gnome.Meld.desktop': <{'position': <22>}>, 'com.mattjakeman.ExtensionManager.desktop': <{'position': <23>}>}, {'org.remmina.Remmina.desktop': <{'position': <0>}>, 'ch.protonmail.protonmail-bridge.desktop': <{'position': <1>}>, 'syncthing-start.desktop': <{'position': <2>}>, 'syncthing-ui.desktop': <{'position': <3>}>, 'emacs.desktop': <{'position': <4>}>, 'emacs-client.desktop': <{'position': <5>}>, 'org.gnome.gitlab.somas.Apostrophe.desktop': <{'position': <6>}>, 'mpv.desktop': <{'position': <7>}>, 'htop.desktop': <{'position': <8>}>, 'com.raspberrypi.rpi-imager.desktop': <{'position': <9>}>}]
|
[{'System': <{'position': <0>}>, 'Utilities': <{'position': <1>}>, 'org.fedoraproject.MediaWriter.desktop': <{'position': <2>}>, 'org.gnome.Contacts.desktop': <{'position': <3>}>, 'org.gnome.Calendar.desktop': <{'position': <4>}>, 'org.gnome.Calculator.desktop': <{'position': <5>}>, 'org.gnome.Weather.desktop': <{'position': <6>}>, 'org.gnome.clocks.desktop': <{'position': <7>}>, 'org.gnome.Maps.desktop': <{'position': <8>}>, 'org.gnome.SimpleScan.desktop': <{'position': <9>}>, 'org.gnome.TextEditor.desktop': <{'position': <10>}>, 'org.gnome.Settings.desktop': <{'position': <11>}>, 'org.gnome.Boxes.desktop': <{'position': <12>}>, 'org.gnome.Showtime.desktop': <{'position': <13>}>, 'org.gnome.Snapshot.desktop': <{'position': <14>}>, 'org.gnome.Characters.desktop': <{'position': <15>}>, 'org.gnome.Tour.desktop': <{'position': <16>}>, 'org.gnome.Yelp.desktop': <{'position': <17>}>, 'org.gnome.Software.desktop': <{'position': <18>}>, 'be.alexandervanhee.gradia.desktop': <{'position': <19>}>, 'com.github.jeromerobert.pdfarranger.desktop': <{'position': <20>}>, 'org.onlyoffice.desktopeditors.desktop': <{'position': <21>}>, 'org.gnome.Meld.desktop': <{'position': <22>}>, 'com.mattjakeman.ExtensionManager.desktop': <{'position': <23>}>}, {'org.remmina.Remmina.desktop': <{'position': <0>}>, 'ch.protonmail.protonmail-bridge.desktop': <{'position': <1>}>, 'syncthing-start.desktop': <{'position': <2>}>, 'syncthing-ui.desktop': <{'position': <3>}>, 'emacs.desktop': <{'position': <4>}>, 'emacs-client.desktop': <{'position': <5>}>, 'org.gnome.gitlab.somas.Apostrophe.desktop': <{'position': <6>}>, 'mpv.desktop': <{'position': <7>}>, 'htop.desktop': <{'position': <8>}>, 'org.mozilla.thunderbird.desktop': <{'position': <9>}>}]
|
||||||
- schema: org.gnome.shell
|
- schema: org.gnome.shell
|
||||||
key: disabled-extensions
|
key: disabled-extensions
|
||||||
value: >-
|
value: >-
|
||||||
@@ -244,7 +241,7 @@ gnome_gsettings_settings:
|
|||||||
- schema: org.gnome.shell
|
- schema: org.gnome.shell
|
||||||
key: favorite-apps
|
key: favorite-apps
|
||||||
value: >-
|
value: >-
|
||||||
['org.gnome.Nautilus.desktop', 'org.mozilla.firefox.desktop', 'com.spotify.Client.desktop', 'org.gnome.Evolution.desktop', 'org.telegram.desktop.desktop', 'chatgpt.desktop', 'org.gnome.Ptyxis.desktop', 'virt-manager.desktop']
|
['org.gnome.Nautilus.desktop', 'org.mozilla.firefox.desktop', 'com.spotify.Client.desktop', 'org.gnome.Evolution.desktop', 'org.telegram.desktop.desktop', 'org.gnome.Ptyxis.desktop', 'virt-manager.desktop']
|
||||||
- schema: org.gnome.shell
|
- schema: org.gnome.shell
|
||||||
key: remember-mount-password
|
key: remember-mount-password
|
||||||
value: "true"
|
value: "true"
|
||||||
|
|||||||
@@ -1,8 +1,6 @@
|
|||||||
---
|
---
|
||||||
hostname: nymph
|
hostname: nymph
|
||||||
|
|
||||||
chatgpt_desktop_enabled: true
|
|
||||||
|
|
||||||
# Fedora Workstation/GNOME laptop target. GNOME is provided by the base Fedora
|
# Fedora Workstation/GNOME laptop target. GNOME is provided by the base Fedora
|
||||||
# Workstation install; Ansible deploys shared desktop dotfiles but leaves GNOME
|
# Workstation install; Ansible deploys shared desktop dotfiles but leaves GNOME
|
||||||
# settings unmanaged for now.
|
# settings unmanaged for now.
|
||||||
|
|||||||
@@ -1,28 +0,0 @@
|
|||||||
-----BEGIN PGP PUBLIC KEY BLOCK-----
|
|
||||||
|
|
||||||
mQINBGpypFUBEACi1Vvzq9pIpA6lj7chbqELuxJtVuzUzxrasa6ZU0yF4yhq7jf8
|
|
||||||
3YkJRHwbezBKeQyzJ5lkX0EhXS8aXxUhMAm3PFpAlwcInfKzmV7atJwvaxIw6Rmd
|
|
||||||
GYe9fBWKjTN/SmPIjtyxrTznZY97+TfD1AeGZpLaJ8fsnhrC+HkiN2TACiTocgpe
|
|
||||||
hFiP0OWK7mWZeTWnY2scpIYXP1Ro7nQv4KacmY4JacTQ7m/HM0Qej/3olhuEv2Cw
|
|
||||||
lMVWw57/oHhmTllfLDQOogFQyIVqaaR98y/Eu6cAabSfcsqAAZ2A8vfHYD27z28J
|
|
||||||
vLO2PZEJd5ThlnX4Zqv0eIpZdBj//8Sl/MSqTshFZ1NDsRoqwdqw284X5MpnOJ4k
|
|
||||||
4Sc2Se8tJxt/nCeibH3dJ504Fb1X/mnOqhCAQ6pVJz4RB5HRlFPSkxVPyag1v1m/
|
|
||||||
7T4vie+OR4eqFQNz6mudrOoMmeVIfyL5fbe4cOr4fk/FyvEE2xMgkFatPqXn7vM9
|
|
||||||
og+zremPCfwRAFpBPyX74VowFY7llcdaj/w8K5T8PzM14Hb3E4ZKizMluKmTvTq9
|
|
||||||
WE1/eSQJLLQqXD5VmtmdUaC/VyE/1ZlIxcA1LWqvEQ327UXREvX/nHsrkKrl956W
|
|
||||||
jzkiHFUTsD1NJ0dMfs+csOt8Furb5jZj+HsMmCm9jLdfz5b/4WKLPbvxIwARAQAB
|
|
||||||
tBZDb2RleCBMaW51eCBSZXBvc2l0b3J5iQJRBBMBCgA7FiEEO/oOSui4zBai2bpo
|
|
||||||
SjtKVmxGYOQFAmpypFUCGwMFCwkIBwICIgIGFQoJCAsCBBYCAwECHgcCF4AACgkQ
|
|
||||||
SjtKVmxGYORlCQ/9FyikZo8HQcJBP9E/oXVPds/fQnIFB2qJR2z3DrfYEonNt/ev
|
|
||||||
SAySkPPq4/mEOjaI0pFlDDGSaps+FTcJFgoVRTasBIF7JJivvjW9ap8iWEbhhVLe
|
|
||||||
IrFLbMLpUcTRntUx7R4fVMJ/1/cGn+NWZmNwS9ORorzSyCH0IAgCw1Xc3ZrjuMbF
|
|
||||||
VjdToMC1TiXXCEmlYpQakmQ3Ay1cH0FHC2BBNn1MNVkJdPhpZIZCdhaMPHfYFpyo
|
|
||||||
pg8wFvZ5iIcvlbMgyuy8CPJVRWUcYy2dOhEOGnYJnXRPkE3E1hf8YOHNzRlduH89
|
|
||||||
6lT9qcEK2+fpLfrVGoc4zscLZ+Ey+Ko6iQRdVE1j67+wNR3hX8ukue574v1N/xxu
|
|
||||||
i575jumSE19lEj1sH4+P4gFHOtTbF0JhKKzLctbga0IAwTPKhnt3qzj1U5Yj/MZS
|
|
||||||
uEVjrLhdRauOuFBXUclgyVf2w/lE85UUOdlcollsYA6Huq7xDamqf8SslZQGre3E
|
|
||||||
I+lhpqJR1cOwDMUzzcl40uTyhrxXXd/bk4QSlhZbwHR25Pnt+ZMtWavlQWS0eDEV
|
|
||||||
8djuXAURCmx5WOqAFB/TJe1mn5EvyWg4VFzrY/NVNOpzgY5+Xp7J28z7f637r712
|
|
||||||
Eu9j4imVcdPigwS+jf/0f81i2o9b82Y26TN8+EtDLCY841MJ1lrjDrX/dno=
|
|
||||||
=Y+3h
|
|
||||||
-----END PGP PUBLIC KEY BLOCK-----
|
|
||||||
@@ -130,56 +130,6 @@
|
|||||||
loop_control:
|
loop_control:
|
||||||
label: "{{ item.key }}"
|
label: "{{ item.key }}"
|
||||||
|
|
||||||
- name: Validate ChatGPT desktop architecture on Fedora
|
|
||||||
tags: [packages, chatgpt]
|
|
||||||
ansible.builtin.assert:
|
|
||||||
that:
|
|
||||||
- ansible_facts['architecture'] in chatgpt_desktop_supported_architectures
|
|
||||||
- ansible_facts['distribution_major_version'] in chatgpt_desktop_supported_fedora_versions
|
|
||||||
fail_msg: >-
|
|
||||||
ChatGPT desktop supports Fedora {{ chatgpt_desktop_supported_fedora_versions | join(' and ') }}
|
|
||||||
on x86_64 or aarch64; detected Fedora {{ ansible_facts['distribution_major_version'] }}
|
|
||||||
on {{ ansible_facts['architecture'] }}.
|
|
||||||
when: chatgpt_desktop_enabled | bool
|
|
||||||
|
|
||||||
- name: Install ChatGPT desktop RPM signing key
|
|
||||||
tags: [packages, chatgpt]
|
|
||||||
ansible.builtin.copy:
|
|
||||||
src: "{{ chatgpt_desktop_rpm_gpg_key }}"
|
|
||||||
dest: "/etc/pki/rpm-gpg/{{ chatgpt_desktop_rpm_gpg_key }}"
|
|
||||||
owner: root
|
|
||||||
group: root
|
|
||||||
mode: "0644"
|
|
||||||
when: chatgpt_desktop_enabled | bool
|
|
||||||
|
|
||||||
- name: Import ChatGPT desktop RPM signing key
|
|
||||||
tags: [packages, chatgpt]
|
|
||||||
ansible.builtin.rpm_key:
|
|
||||||
state: present
|
|
||||||
key: "/etc/pki/rpm-gpg/{{ chatgpt_desktop_rpm_gpg_key }}"
|
|
||||||
when: chatgpt_desktop_enabled | bool
|
|
||||||
|
|
||||||
- name: Configure ChatGPT desktop RPM repository
|
|
||||||
tags: [packages, chatgpt]
|
|
||||||
ansible.builtin.yum_repository:
|
|
||||||
name: openai-chatgpt
|
|
||||||
description: ChatGPT
|
|
||||||
baseurl: "{{ chatgpt_desktop_rpm_repository }}"
|
|
||||||
enabled: true
|
|
||||||
gpgcheck: true
|
|
||||||
repo_gpgcheck: true
|
|
||||||
gpgkey: "file:///etc/pki/rpm-gpg/{{ chatgpt_desktop_rpm_gpg_key }}"
|
|
||||||
state: present
|
|
||||||
when: chatgpt_desktop_enabled | bool
|
|
||||||
|
|
||||||
- name: Install ChatGPT desktop on selected Fedora hosts
|
|
||||||
tags: [packages, chatgpt]
|
|
||||||
ansible.builtin.dnf:
|
|
||||||
name: chatgpt
|
|
||||||
state: latest
|
|
||||||
update_cache: true
|
|
||||||
when: chatgpt_desktop_enabled | bool
|
|
||||||
|
|
||||||
- name: Define Fedora Flatpak applications
|
- name: Define Fedora Flatpak applications
|
||||||
tags: [packages]
|
tags: [packages]
|
||||||
ansible.builtin.set_fact:
|
ansible.builtin.set_fact:
|
||||||
|
|||||||
Reference in New Issue
Block a user