From 0e46b7c6befd8e7efa98670a97b4f565b08c9b82 Mon Sep 17 00:00:00 2001 From: DeveloperDurp Date: Sun, 6 Apr 2025 20:13:27 -0500 Subject: [PATCH] update --- Makefile | 3 + ansible/files/charge-thresholds.service | 10 ++ ansible/files/durp.crt | 75 +++++++++ ansible/files/go-bin.sh | 1 + ansible/files/go-path.sh | 3 + ansible/local.yml | 10 ++ ansible/requirements.sh | 3 + ansible/roles/customize/tasks/defaults.yml | 36 +++++ ansible/roles/customize/tasks/main.yml | 11 ++ ansible/roles/customize/vars/Archlinux.yml | 2 + .../roles/customize/vars/Pop!_OS-22.04.yml | 11 ++ .../roles/customize/vars/Pop!_OS-24.04.yml | 3 + ansible/roles/packages/tasks/defaults.yml | 32 ++++ ansible/roles/packages/tasks/main.yml | 11 ++ ansible/roles/packages/vars/Archlinux.yml | 148 ++++++++++++++++++ ansible/roles/packages/vars/Pop!_OS-22.04.yml | 53 +++++++ ansible/roles/packages/vars/Pop!_OS-24.04.yml | 89 +++++++++++ ansible/scripts/configure_bat.yml | 3 + ansible/scripts/configure_gitlab.ps1 | 32 ++++ ansible/scripts/configure_groups.yml | 7 + ansible/scripts/configure_qemu.yml | 12 ++ ansible/scripts/configure_ssh.yml | 14 ++ ansible/scripts/configure_systemd.yml | 30 ++++ ansible/scripts/install_apt.yml | 36 +++++ ansible/scripts/install_brew.yml | 49 ++++++ ansible/scripts/install_flatpak.yml | 22 +++ ansible/scripts/install_fonts.yml | 23 +++ ansible/scripts/install_go.yml | 36 +++++ ansible/scripts/install_goapps.yml | 9 ++ ansible/scripts/install_local_ca.yml | 7 + ansible/scripts/install_pacman.yml | 14 ++ ansible/scripts/install_tpm.yml | 4 + 32 files changed, 799 insertions(+) create mode 100644 ansible/files/charge-thresholds.service create mode 100644 ansible/files/durp.crt create mode 100644 ansible/files/go-bin.sh create mode 100644 ansible/files/go-path.sh create mode 100644 ansible/local.yml create mode 100755 ansible/requirements.sh create mode 100644 ansible/roles/customize/tasks/defaults.yml create mode 100644 ansible/roles/customize/tasks/main.yml create mode 100644 ansible/roles/customize/vars/Archlinux.yml create mode 100644 ansible/roles/customize/vars/Pop!_OS-22.04.yml create mode 100644 ansible/roles/customize/vars/Pop!_OS-24.04.yml create mode 100644 ansible/roles/packages/tasks/defaults.yml create mode 100644 ansible/roles/packages/tasks/main.yml create mode 100644 ansible/roles/packages/vars/Archlinux.yml create mode 100644 ansible/roles/packages/vars/Pop!_OS-22.04.yml create mode 100644 ansible/roles/packages/vars/Pop!_OS-24.04.yml create mode 100644 ansible/scripts/configure_bat.yml create mode 100644 ansible/scripts/configure_gitlab.ps1 create mode 100644 ansible/scripts/configure_groups.yml create mode 100644 ansible/scripts/configure_qemu.yml create mode 100644 ansible/scripts/configure_ssh.yml create mode 100644 ansible/scripts/configure_systemd.yml create mode 100644 ansible/scripts/install_apt.yml create mode 100644 ansible/scripts/install_brew.yml create mode 100644 ansible/scripts/install_flatpak.yml create mode 100644 ansible/scripts/install_fonts.yml create mode 100644 ansible/scripts/install_go.yml create mode 100644 ansible/scripts/install_goapps.yml create mode 100644 ansible/scripts/install_local_ca.yml create mode 100644 ansible/scripts/install_pacman.yml create mode 100644 ansible/scripts/install_tpm.yml diff --git a/Makefile b/Makefile index 09abdfb..9536be5 100644 --- a/Makefile +++ b/Makefile @@ -3,3 +3,6 @@ export run: ansible-playbook ./DesktopAnsible/local.yml -K + +devpod: + ansible-playbook ./DesktopAnsible/local.yml diff --git a/ansible/files/charge-thresholds.service b/ansible/files/charge-thresholds.service new file mode 100644 index 0000000..98b71db --- /dev/null +++ b/ansible/files/charge-thresholds.service @@ -0,0 +1,10 @@ +[Unit] +Description=Set the charge threshold at startup. +After=default.target + +[Service] +Type=simple +ExecStart=system76-power charge-thresholds 75 80 + +[Install] +WantedBy=default.target diff --git a/ansible/files/durp.crt b/ansible/files/durp.crt new file mode 100644 index 0000000..47e37c9 --- /dev/null +++ b/ansible/files/durp.crt @@ -0,0 +1,75 @@ +-----BEGIN CERTIFICATE----- +MIIEszCCA5ugAwIBAgIUZEzzxqEuYiKHkL1df+Cb22NRRJMwDQYJKoZIhvcNAQEL +BQAwFDESMBAGA1UEAxMJZHVycC5pbmZvMB4XDTI1MDEyMzIyMzQ0MloXDTM1MDEy +MTExMTU1NVowIDEeMBwGA1UEAxMVdmF1bHQuaW5mcmEuZHVycC5pbmZvMIIBIjAN +BgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAkZM0ue4bMcmmATs+kGYSpR2hLUzq +scGIwCtqmaKCMbd1xhmgjnIR3zvSRptLR2GVGvc1ti6qby0jXYvcqbxkHvay00zW +2zYN+M2m4lXpuWzg1t6NEoO6XGAsGj2v0vcVktPPU9uj0rGUVGWWfsvjoXqQFg5I +jdxsxK9SvMvw2XtE3FgKxpzCyw94InIHlcPwFTO+3ZdKStZlMbUDIkmszLBrWFcr +XOsPDfLxqMy0Ck//LKIt8djh3254FHB1GG5+kI+JSW1o+tUcL2NymvIINwm/2acS +1uTm+j9W7iEXav0pJNmm+/dzSskc3Y0ftM0h2HCXgitBIaEZnUVneNHOLwIDAQAB +o4IB7zCCAeswDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0O +BBYEFCaQ2q7j7LyBGETEZ5qaJAdlISKCMB8GA1UdIwQYMBaAFO1jCyGkpFO+QiR2 +dfBMWVYeWrQ2MIH0BggrBgEFBQcBAQSB5zCB5DAzBggrBgEFBQcwAYYnaHR0cHM6 +Ly8xOTIuMTY4LjIwLjI1Mzo4MjAxL3YxL3BraS9vY3NwMD0GCCsGAQUFBzABhjFo +dHRwczovL3Jvb3QtdmF1bHQuaW50ZXJuYWwuZHVycC5pbmZvL3YxL3BraS9vY3Nw +MDEGCCsGAQUFBzAChiVodHRwczovLzE5Mi4xNjguMjAuMjUzOjgyMDEvdjEvcGtp +L2NhMDsGCCsGAQUFBzAChi9odHRwczovL3Jvb3QtdmF1bHQuaW50ZXJuYWwuZHVy +cC5pbmZvL3YxL3BraS9jYTAgBgNVHREEGTAXghV2YXVsdC5pbmZyYS5kdXJwLmlu +Zm8wbwYDVR0fBGgwZjAsoCqgKIYmaHR0cHM6Ly8xOTIuMTY4LjIwLjI1Mzo4MjAx +L3YxL3BraS9jcmwwNqA0oDKGMGh0dHBzOi8vcm9vdC12YXVsdC5pbnRlcm5hbC5k +dXJwLmluZm8vdjEvcGtpL2NybDANBgkqhkiG9w0BAQsFAAOCAQEAuJ+lplY/+A5L +5LzkljbKDTy3U6PLv1LtxqVCOFGiJXBnXMjtVW07bBEUadzFRNW8GHQ3w5QzOG6k +/vE/TrrJho7l05J/uc+BUrPSNjefLmQV6hn4jrP86PR0vzRfbSqKKBIID9M7+zi6 +GFvHlVkSHsQyMQp7JOoax9KVzW2Y+OIgw7Lgw2tP122WCt2SIF0QenoZHsoW0guj +tzTJRmJDjn6XeJ7L3FPkf37H6ub0Jg3zBGr6eorEFfYZNN5CXezjqMFBpRdq4UIo +1M3A7o3uyZFcFsp/vGDcMBkwaCsBV9idu/HwkvGaTUNI285ilBORPD0bMZnACq/9 ++Q/cdsO5lg== +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIEmzCCA4OgAwIBAgIUQwCAs82sgSuiaVbjANHScO2DSfAwDQYJKoZIhvcNAQEL +BQAwFDESMBAGA1UEAxMJZHVycC5pbmZvMB4XDTI1MDEyMzExMjEyNVoXDTM1MDEy +MTExMTU1NVowFDESMBAGA1UEAxMJZHVycC5pbmZvMIIBIjANBgkqhkiG9w0BAQEF +AAOCAQ8AMIIBCgKCAQEAn9fjGRqqFsqguz56X6cXZwEMtD9wElwSFCb4Fc8YTzlH +4fV13QwXKESLE/Q+7bw4y4FJQ8BiGNbxxbQOOgWhfGGlQyFa1lfhJtYLfqRN5C2/ +S7nr0YxDB9duc4OAExVL6Pr4/Koc+vDZY03l7RzwnF2AOM9DjFTASw01TphCQjRk +U+upiN2TUhUPejV/gMR+zXM6pn98UBKG1dNubS0HzAMwAEXAPm141NDyWUCPT9+3 +6P03Ka8mUTx3X49OCtvJEGEQbtlnTFQaOSkP1yLW+XRMHw3sQaV2PWXu5fInbEpZ ++SuzmgLOXtmQNmHLav9q1qeTVkpBGPWvfh2Vh1JJhQIDAQABo4IB4zCCAd8wDgYD +VR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFJaP17f1Zw0V +55Ks9Uf0USVWl0BPMB8GA1UdIwQYMBaAFO1jCyGkpFO+QiR2dfBMWVYeWrQ2MIH0 +BggrBgEFBQcBAQSB5zCB5DAzBggrBgEFBQcwAYYnaHR0cHM6Ly8xOTIuMTY4LjIw +LjI1Mzo4MjAxL3YxL3BraS9vY3NwMD0GCCsGAQUFBzABhjFodHRwczovL3Jvb3Qt +dmF1bHQuaW50ZXJuYWwuZHVycC5pbmZvL3YxL3BraS9vY3NwMDEGCCsGAQUFBzAC +hiVodHRwczovLzE5Mi4xNjguMjAuMjUzOjgyMDEvdjEvcGtpL2NhMDsGCCsGAQUF +BzAChi9odHRwczovL3Jvb3QtdmF1bHQuaW50ZXJuYWwuZHVycC5pbmZvL3YxL3Br +aS9jYTAUBgNVHREEDTALgglkdXJwLmluZm8wbwYDVR0fBGgwZjAsoCqgKIYmaHR0 +cHM6Ly8xOTIuMTY4LjIwLjI1Mzo4MjAxL3YxL3BraS9jcmwwNqA0oDKGMGh0dHBz +Oi8vcm9vdC12YXVsdC5pbnRlcm5hbC5kdXJwLmluZm8vdjEvcGtpL2NybDANBgkq +hkiG9w0BAQsFAAOCAQEAiqAZ4zNIEkCWcvpDRq0VyJuk59sVtJr5X4FscHQ179nE +QbbvMe+EBDFS6XQml1Elj8jiPa/D5O9Oc6Iisnm5+weZKwApz/lQ+XVkWLCoEplB +ZZ9fcWVCbMLt0xlt8qn5z/mYKfbCT7ZCqDO+prQZt+ADJcQbiknfroAAqEbNKxwN +Y9uUyOWNF3SxJEch4w2dtX+IEVmxeZnhMy8OuP0SQKl8aW40ugiG0ZD5yTBBfOD9 +zsrGSU/iSatn0b7bevBhaL96hz1/rNR1cL+4/albX2hrr8Rv3/SB2DLtNQlQW0ls +AfhXAqP5zL+Ytgf1Of/pVdgnhxrYUY7RKCSGY5Hagw== +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIDLzCCAhegAwIBAgIUNHdvOzam2HPVdwXpMHUy4wl8ZRYwDQYJKoZIhvcNAQEL +BQAwFDESMBAGA1UEAxMJZHVycC5pbmZvMB4XDTI1MDEyMzExMTUyNVoXDTM1MDEy +MTExMTU1NVowFDESMBAGA1UEAxMJZHVycC5pbmZvMIIBIjANBgkqhkiG9w0BAQEF +AAOCAQ8AMIIBCgKCAQEA8XDTVEtRI3+k4yuvqVqfIiLRQJcXbmhfVtAeYk+5j9Ox +p1w9YHdnPLqLFrD1PzadjqYeAp/fwlEFfs6lqwoTS8S9vhaFqcgB57nVMb77dTBb +/08XHXOU6FPRjdFKm5QMpS7tn1XacPMy/o0bKqRREQeiuFDGVRyuF5PUgvWc1dvJ +l27JvvgYktgjfpNS4DlCxg4lGXT5abvaKf2hnr65egaIo/yRWN9wnvAzRiY7oci7 +GA1oKz87Yc1tfL2gcynrwccOOCF/eUKesJR1I6GXNkN/a1fcr+Ld9Z9NhHBtO+vE +N8DsZY+kG7DE3M4BCCTFUzllcYHjaW4HaF9vZW+PYwIDAQABo3kwdzAOBgNVHQ8B +Af8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQU7WMLIaSkU75CJHZ1 +8ExZVh5atDYwHwYDVR0jBBgwFoAU7WMLIaSkU75CJHZ18ExZVh5atDYwFAYDVR0R +BA0wC4IJZHVycC5pbmZvMA0GCSqGSIb3DQEBCwUAA4IBAQAS/qUI/1Yv07xUTK5k +r93kC7GSPpmpkXIsfjChAl93sebN143fu70NUP74jjCc0Wkb8hRofGg10E+/24r1 +AI0KsLhzKzfIASxUVQAn8RTptLruaaPLboSA4MUZ8IB5y8Vy8E3/KtD0gD80j64Y +rm9XGHA0HTJHbPUTb/Rux2g0E7WtiyWSWH8mqzbegU8IrkM3eVT4+ylBE7YkfWDD +dw44sB71tfmDKpzWg6XQ6YMh0YfnyG1fYCj9LhuecNY9Uuo6cjDaAvkzMewWwqDx +Q2Ekas98Di6itCP8vET+gBDjeCc+XR6Hx6vzWmxlZhwDuxEKL1a2/DabUxJyMNzv +55Fn +-----END CERTIFICATE----- diff --git a/ansible/files/go-bin.sh b/ansible/files/go-bin.sh new file mode 100644 index 0000000..e574b00 --- /dev/null +++ b/ansible/files/go-bin.sh @@ -0,0 +1 @@ +export PATH=$PATH:/usr/local/go/bin \ No newline at end of file diff --git a/ansible/files/go-path.sh b/ansible/files/go-path.sh new file mode 100644 index 0000000..31b9a2b --- /dev/null +++ b/ansible/files/go-path.sh @@ -0,0 +1,3 @@ +export GOPATH=$HOME/go +export GOROOT="/usr/local/go" +export PATH=$GOPATH/bin:$PATH diff --git a/ansible/local.yml b/ansible/local.yml new file mode 100644 index 0000000..8e5a7cc --- /dev/null +++ b/ansible/local.yml @@ -0,0 +1,10 @@ +- hosts: localhost + connection: local + become: true + vars: + GITLAB_TOKEN: "{{ lookup('env', 'GITLAB_TOKEN') }}" + # vars_prompt: + + roles: + - packages + - customize diff --git a/ansible/requirements.sh b/ansible/requirements.sh new file mode 100755 index 0000000..1c959bb --- /dev/null +++ b/ansible/requirements.sh @@ -0,0 +1,3 @@ +sudo apt install python3-pip python3-psutil +ansible-galaxy collection install community.general + diff --git a/ansible/roles/customize/tasks/defaults.yml b/ansible/roles/customize/tasks/defaults.yml new file mode 100644 index 0000000..adf5ac4 --- /dev/null +++ b/ansible/roles/customize/tasks/defaults.yml @@ -0,0 +1,36 @@ +- name: install fonts + include_tasks: "./scripts/install_fonts.yml" + +- name: generate ssh keys + include_tasks: "./scripts/configure_ssh.yml" + + #- name: Configure Gitlab SSH + # become_user: user + # ansible.builtin.command: pwsh -f ./scripts/configure_gitlab.ps1 "{{ GITLAB_TOKEN }}" + +- user: + name: "user" + shell: /usr/bin/zsh + +- name: Create bin folder + become_user: user + ansible.builtin.file: + path: ~/.local/bin + owner: "user" + group: "user" + mode: '0770' + state: directory + +- name: run stow + become_user: user + shell: "stow --adopt ." + args: + chdir: ~/.dotfiles + +- name: set gnome config + become_user: user + dconf: + key: "{{ item.key }}" + value: "{{ item.value }}" + with_items: "{{ dconf }}" + when: dconf is defined diff --git a/ansible/roles/customize/tasks/main.yml b/ansible/roles/customize/tasks/main.yml new file mode 100644 index 0000000..4a0c004 --- /dev/null +++ b/ansible/roles/customize/tasks/main.yml @@ -0,0 +1,11 @@ +- name: Load a variable file + include_vars: "{{ item }}" + with_first_found: + - "vars/{{ ansible_distribution }}-{{ ansible_distribution_version }}.yml" + - "vars/{{ ansible_distribution }}.yml" + - "vars/{{ ansible_os_family }}.yml" + - "vars/defaults.yml" + +- name: + include_tasks: "defaults.yml" + diff --git a/ansible/roles/customize/vars/Archlinux.yml b/ansible/roles/customize/vars/Archlinux.yml new file mode 100644 index 0000000..db1270c --- /dev/null +++ b/ansible/roles/customize/vars/Archlinux.yml @@ -0,0 +1,2 @@ +#fonts: + # - {name: 'GoMonoNerd', url: "https://github.com/ryanoasis/nerd-fonts/releases/download/v3.2.1/Go-Mono.zip"} diff --git a/ansible/roles/customize/vars/Pop!_OS-22.04.yml b/ansible/roles/customize/vars/Pop!_OS-22.04.yml new file mode 100644 index 0000000..2dc2b1d --- /dev/null +++ b/ansible/roles/customize/vars/Pop!_OS-22.04.yml @@ -0,0 +1,11 @@ +dconf: + - {key: '/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings', value: "['/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom1/']"} + - {key: '/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom1/binding', value: "'t'"} + - {key: '/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom1/command', value: "'terminator'"} + - {key: '/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom1/name', value: "'Terminator'"} + - {key: '/org/gnome/desktop/background/picture-uri', value: "'file://${HOME}/.config/configfiles/wallpaper.png'"} + - {key: '/org/gnome/desktop/background/picture-uri-dark', value: "'file://${HOME}/.config/configfiles/wallpaper.png'"} + +fonts: + - {name: 'GoMonoNerd', url: "https://github.com/ryanoasis/nerd-fonts/releases/download/v3.2.1/Go-Mono.zip"} + - {name: 'FiraCodeNerd', url: "https://github.com/ryanoasis/nerd-fonts/releases/download/v3.2.1/FiraCode.zip"} diff --git a/ansible/roles/customize/vars/Pop!_OS-24.04.yml b/ansible/roles/customize/vars/Pop!_OS-24.04.yml new file mode 100644 index 0000000..94207cb --- /dev/null +++ b/ansible/roles/customize/vars/Pop!_OS-24.04.yml @@ -0,0 +1,3 @@ +fonts: + - {name: 'GoMonoNerd', url: "https://github.com/ryanoasis/nerd-fonts/releases/download/v3.2.1/Go-Mono.zip"} + - {name: 'FiraCodeNerd', url: "https://github.com/ryanoasis/nerd-fonts/releases/download/v3.2.1/FiraCode.zip"} diff --git a/ansible/roles/packages/tasks/defaults.yml b/ansible/roles/packages/tasks/defaults.yml new file mode 100644 index 0000000..29e1918 --- /dev/null +++ b/ansible/roles/packages/tasks/defaults.yml @@ -0,0 +1,32 @@ +- name: install apt + include_tasks: "./scripts/install_apt.yml" + +- name: install brew + include_tasks: "./scripts/install_brew.yml" + +- name: install pacman + include_tasks: "./scripts/install_pacman.yml" + + #- name: install go + # include_tasks: "./scripts/install_go.yml" + +- name: install go apps + include_tasks: "./scripts/install_goapps.yml" + +- name: install flatpak + include_tasks: "./scripts/install_flatpak.yml" + +- name: configure systemd + include_tasks: "./scripts/configure_systemd.yml" + +- name: configure groups + include_tasks: "./scripts/configure_groups.yml" + +- name: configure qemu + include_tasks: "./scripts/configure_qemu.yml" + +- name: configure bat + include_tasks: "./scripts/configure_bat.yml" + +- name: trust internal certs + include_tasks: "./scripts/install_local_ca.yml" diff --git a/ansible/roles/packages/tasks/main.yml b/ansible/roles/packages/tasks/main.yml new file mode 100644 index 0000000..4a0c004 --- /dev/null +++ b/ansible/roles/packages/tasks/main.yml @@ -0,0 +1,11 @@ +- name: Load a variable file + include_vars: "{{ item }}" + with_first_found: + - "vars/{{ ansible_distribution }}-{{ ansible_distribution_version }}.yml" + - "vars/{{ ansible_distribution }}.yml" + - "vars/{{ ansible_os_family }}.yml" + - "vars/defaults.yml" + +- name: + include_tasks: "defaults.yml" + diff --git a/ansible/roles/packages/vars/Archlinux.yml b/ansible/roles/packages/vars/Archlinux.yml new file mode 100644 index 0000000..6f10867 --- /dev/null +++ b/ansible/roles/packages/vars/Archlinux.yml @@ -0,0 +1,148 @@ +required_packages_brew: + - oh-my-posh + - zsh-history-substring-search + - zsh-autosuggestions + +required_packages_pacman: + - sway + - waybar + - stow + - lazygit + - tmux + - fzf + - zoxide + - bitwarden-cli + - glab + - go + - neovim + - ffmpeg + - ttyd + - wl-clipboard + - xsel + - pavucontrol + - wofi + - swaybg + - swayidle + - swaylock + - swayimg + - swaync + - pipewire + - pipewire-pulse + - openssh + - xorg-xwayland + - wayland + - kanshi + - xdg-desktop-portal-gtk + - nautilus + - eza + - bat + - wget + - curl + - nmap + - kubectl + - terraform + - podman + - grim + - slurp + - helm + - networkmanager-openvpn + - openresolv + - xsettingsd + - vivid + - lxappearance + - qt5ct + - gnome-calculator + - powertop + - iptables + - gnome-disk-utility + - ranger + - qemu-base + - virt-manager + - virt-viewer + - dnsmasq + - vde2 + - bridge-utils + - openbsd-netcat + - dmidecode + - libguestfs + - polkit-kde-agent + - libusb + - qemu-hw-usb-host + - flatpak + - ly + - seahorse + - kitty + - brightnessctl + - smbclient + - gvfs-smb + - gvfs + - cosmic + - htop + - npm + - ripgrep + - podman-compose + - bluez + - xsettingsd + - dnsutils + - yq + - jq + - k9s + - opentofu + - file-roller + - ufw + - gimp + - yazi + - cronie + - fuse2 + - libappindicator-gtk3 + - webkit2gtk-4.1 + +flatpak_remote: + - { name: "flathub", url: "https://dl.flathub.org/repo/flathub.flatpakrepo" } + +required_packages_flatpak: + - com.discordapp.Discord + - io.gitlab.librewolf-community + - org.gtk.Gtk3theme.Pop-dark + - com.github.tchx84.Flatseal + - com.vscodium.codium + - com.protonvpn.www + - me.proton.Mail + - org.chromium.Chromium + - org.libreoffice.LibreOffice + - com.brave.Browser + +systemd_service: + - cronie.service + - cosmic-greeter.service + #- ly.service + - libvirtd.service + - com.system76.PowerDaemon.service + - ufw.service + - podman.socket + +go_apps: + - github.com/jorgerojas26/lazysql@latest + - github.com/charmbracelet/vhs@latest + - github.com/charmbracelet/glow@latest + - github.com/swaggo/swag/cmd/swag@latest + - github.com/air-verse/air@latest + +yay: + - nwg-look + - catppuccin-gtk-theme-mocha + - ttf-go-nerd + - ttf-hack-nerd + - ttf-jetbrains-mono-nerd + - system76-firmware-daemon + - system76-firmware + - firmware-manager + - system76-power + - gnome-shell-extension-system76-power-git + - system76-driver + - system76-dkms + - system76-acpi-dkms + - system76-io-dkms + - wdisplays + - bluetuith + - powershell diff --git a/ansible/roles/packages/vars/Pop!_OS-22.04.yml b/ansible/roles/packages/vars/Pop!_OS-22.04.yml new file mode 100644 index 0000000..a9c7378 --- /dev/null +++ b/ansible/roles/packages/vars/Pop!_OS-22.04.yml @@ -0,0 +1,53 @@ +install_homebrew_if_missing: true + +required_packages_brew: + - lazygit + - fzf + - glab + - go + - neovim + - oh-my-posh + - tpm + - terraform + - kubernetes-cli + - zsh-autosuggestions + - bitwarden-cli + - hashicorp/tap/vault + - ffmpeg + - ttyd + - bat + - eza + - fastfetch + - vivid + - yazi + +apt_keys: + - https://packages.microsoft.com/keys/microsoft.asc +apt_repo: + - deb [arch=amd64] https://packages.microsoft.com/ubuntu/22.04/prod jammy main + +required_packages_apt: + - powershell + - curl + - wofi + - swaybg + - swayidle + - swaylock + - swayimg + - kanshi + - waybar + #- sway-notification-center + - grim + - slurp + - openresolv + - podman + - brightnessctl + - pavucontrol + - kitty + +flatpak_remote: + - {name: 'flathub', url: "https://dl.flathub.org/repo/flathub.flatpakrepo"} + +required_packages_flatpak: + - VSCodium + diff --git a/ansible/roles/packages/vars/Pop!_OS-24.04.yml b/ansible/roles/packages/vars/Pop!_OS-24.04.yml new file mode 100644 index 0000000..758fee7 --- /dev/null +++ b/ansible/roles/packages/vars/Pop!_OS-24.04.yml @@ -0,0 +1,89 @@ +install_homebrew_if_missing: true + +required_packages_brew: + - lazygit + - glab + - oh-my-posh + - tpm + - kubernetes-cli + - zsh-autosuggestions + - bitwarden-cli + - ttyd + - fastfetch + - vivid + - yazi + - zsh-history-substring-search + - opentofu + - helm + - bat + - neovim + - eza + - zoxide + - ansible + - ffmpeg + - k9s + +required_packages_apt: + - htop + - stow + - zsh + - curl + - xsel + - wl-clipboard + - podman + - wget + - apt-transport-https + - software-properties-common + - qemu-kvm + - qemu-system + - qemu-utils + - python3 + - python3-pip + - libvirt-clients + - libvirt-daemon-system + - bridge-utils + - virtinst + - libvirt-daemon + - virt-manager + - vlc + - vault + - fzf + - ripgrep + - libsecret-tools + - rclone + +apt_keys: + - https://packages.microsoft.com/keys/microsoft.asc +apt_repo: + - deb [arch=amd64] https://packages.microsoft.com/ubuntu/22.04/prod jammy main + - deb [arch=amd64 signed-by=/usr/share/keyrings/hashicorp-archive-keyring.gpg] https://apt.releases.hashicorp.com noble main +apt_repo_gpg: + - {name: "hashicorp-archive-keyring", url: "https://apt.releases.hashicorp.com/gpg"} + +flatpak_remote: + - {name: 'flathub', url: "https://dl.flathub.org/repo/flathub.flatpakrepo"} + +required_packages_flatpak: + - io.gitlab.librewolf-community + - me.proton.Pass + - me.proton.Mail + - com.protonvpn.www + - org.remmina.Remmina + +go_version_target: "go version go1.23.4 linux/amd64" +go_tarball: "go1.23.5.linux-amd64.tar.gz" +go_checksum: "sha256:cbcad4a6482107c7c7926df1608106c189417163428200ce357695cc7e01d091" + +go_apps: + - github.com/charmbracelet/vhs@latest + - github.com/charmbracelet/glow@latest + - github.com/swaggo/swag/cmd/swag@latest + - github.com/air-verse/air@latest + - github.com/minio/mc@latest + +systemd_service: + - libvirtd.service + +user_groups: + - video + - sudo diff --git a/ansible/scripts/configure_bat.yml b/ansible/scripts/configure_bat.yml new file mode 100644 index 0000000..eed100f --- /dev/null +++ b/ansible/scripts/configure_bat.yml @@ -0,0 +1,3 @@ +- name: Build Bat Cache + become_user: user + shell: "bat cache --build" diff --git a/ansible/scripts/configure_gitlab.ps1 b/ansible/scripts/configure_gitlab.ps1 new file mode 100644 index 0000000..3eca041 --- /dev/null +++ b/ansible/scripts/configure_gitlab.ps1 @@ -0,0 +1,32 @@ +param ($GITLAB_TOKEN) +if (!$GITLAB_TOKEN){ + Write-Output "Please unlock Bitwarden" + break +} + +#Gitlab set ssh key + +$header = @{ + "PRIVATE-TOKEN"=$GITLAB_TOKEN +} +$GitlabAPI = "https://gitlab.com/api/v4" + +$publickey = Get-Content ~/.ssh/id_ed25519.pub + +$body = @{ + title = "Ansible Script" + key = "$publickey" +} | ConvertTo-Json + +Try{ + Invoke-RestMethod -Headers $header -Uri $GitlabAPI/user/keys -Body $body -Method Post -ContentType application/json -ErrorVariable gitlabkey | Out-Null +}Catch{ + if($gitlabkey -like "*Token is expired*"){ + Write-Error "Token Has Expired" + exit -1 + } + if($gitlabkey -notlike "*has already been taken*"){ + Write-Error "Failed to upload key" + exit -1 + } +} diff --git a/ansible/scripts/configure_groups.yml b/ansible/scripts/configure_groups.yml new file mode 100644 index 0000000..6fb6969 --- /dev/null +++ b/ansible/scripts/configure_groups.yml @@ -0,0 +1,7 @@ +- name: adding existing user '{{ user }}' to group sudo + user: + groups: '{{ item }}' + name: user + append: yes + with_items: "{{ user_groups }}" + when: user_groups is defined diff --git a/ansible/scripts/configure_qemu.yml b/ansible/scripts/configure_qemu.yml new file mode 100644 index 0000000..f259c9a --- /dev/null +++ b/ansible/scripts/configure_qemu.yml @@ -0,0 +1,12 @@ +- name: set default network + shell: "{{ item }}" + with_items: + - "virsh net-start default" + - "virsh net-autostart default" + ignore_errors: yes + +- name: add user to libvirt + user: + name: user + groups: libvirt,libvirt-qemu,kvm,input,disk + append: yes diff --git a/ansible/scripts/configure_ssh.yml b/ansible/scripts/configure_ssh.yml new file mode 100644 index 0000000..bc9472f --- /dev/null +++ b/ansible/scripts/configure_ssh.yml @@ -0,0 +1,14 @@ +- name: Create ssh folder + become_user: user + ansible.builtin.file: + path: ~/.ssh + owner: "user" + group: "user" + mode: '0700' + state: directory + +- name: Generate an OpenSSH keypair + become_user: user + community.crypto.openssh_keypair: + path: ~/.ssh/id_ed25519 + type: ed25519 diff --git a/ansible/scripts/configure_systemd.yml b/ansible/scripts/configure_systemd.yml new file mode 100644 index 0000000..ec73bb3 --- /dev/null +++ b/ansible/scripts/configure_systemd.yml @@ -0,0 +1,30 @@ +- name: Copy .service files from files folder to /etc/systemd/system + find: + paths: "files/" + hidden: yes + file_type: file + patterns: "*.service" + register: service_files + +- name: Copy each .service file to systemd directory + copy: + src: "{{ item.path }}" + dest: "/etc/systemd/system" + owner: root + group: root + mode: '0644' + with_items: "{{ service_files.files }}" + when: service_files is defined + +- name: Combine predefined list and filesystem paths + set_fact: + systemd_service: "{{ systemd_service | union(service_files.files | map(attribute='path') | map('basename')) | unique }}" + when: service_files is defined + +- name: Enable Systemd Services + ansible.builtin.systemd_service: + name: "{{ item }}" + state: started + enabled: true + with_items: "{{ systemd_service }}" + when: systemd_service is defined diff --git a/ansible/scripts/install_apt.yml b/ansible/scripts/install_apt.yml new file mode 100644 index 0000000..3cec522 --- /dev/null +++ b/ansible/scripts/install_apt.yml @@ -0,0 +1,36 @@ +- name: download gpg + ansible.builtin.get_url: + url: "{{ item.url }}" + dest: "/etc/apt/keyrings/{{ item.name }}.asc" + with_items: "{{ apt_repo_gpg }}" + become: yes + when: apt_repo_gpg is defined + +- name: add apt repository key + apt_key: + url: "{{ item }}" + with_items: "{{ apt_keys }}" + become: yes + when: apt_keys is defined + +- name: add apt repository + apt_repository: + repo: "{{ item }}" + with_items: "{{ apt_repo }}" + become: yes + when: apt_repo is defined + +- name: Upgrade Packages + package: + update_cache: yes + upgrade: safe + become: yes + when: required_packages_apt is defined + +- name: Install Packages + apt: + state: latest + update_cache: yes + pkg: "{{ required_packages_apt }}" + become: yes + when: required_packages_apt is defined diff --git a/ansible/scripts/install_brew.yml b/ansible/scripts/install_brew.yml new file mode 100644 index 0000000..f416409 --- /dev/null +++ b/ansible/scripts/install_brew.yml @@ -0,0 +1,49 @@ +- name: Ensuring Homebrew Is Installed + stat: + path: /home/linuxbrew/.linuxbrew/bin/ + register: homebrew_check + when: required_packages_brew is defined + +- name: Fail If Homebrew Is Not Installed and install_homebrew_if_missing Is False + fail: + msg: Homebrew is missing, install from http://brew.sh + when: + - required_packages_brew is defined + - not homebrew_check.stat.exists + - not install_homebrew_if_missing + +- name: Installing Homebrew + become_user: user + shell: /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" + when: + - required_packages_brew is defined + - not homebrew_check.stat.exists + - install_homebrew_if_missing + +- name: Load Brew shellenv + become_user: user + shell: eval "$(/home/linuxbrew/.linuxbrew/bin brew shellenv)" + when: + - required_packages_brew is defined + - not homebrew_check.stat.exists + - install_homebrew_if_missing + +- name: Install Brew Taps + become_user: user + community.general.homebrew_tap: + name: "{{ item }}" + with_items: "{{ required_taps }}" + when: required_taps is defined + +- name: Install Brew Casks + become_user: user + community.general.homebrew_cask: + name: "{{ item }}" + with_items: "{{ required_packages_casks }}" + when: required_packages_casks is defined + +- name: Install Brew Packages + become_user: user + community.general.homebrew: + name: "{{ required_packages_brew }}" + when: required_packages_brew is defined diff --git a/ansible/scripts/install_flatpak.yml b/ansible/scripts/install_flatpak.yml new file mode 100644 index 0000000..b2f40f2 --- /dev/null +++ b/ansible/scripts/install_flatpak.yml @@ -0,0 +1,22 @@ +- name: configure flatpak + community.general.flatpak_remote: + name: "{{ item.name }}" + state: present + flatpakrepo_url: "{{ item.url }}" + method: system + with_items: "{{ flatpak_remote }}" + when: flatpak_remote is defined + +- name: update flatpaks + become_user: user + shell: + cmd: flatpak update --noninteractive + when: required_packages_flatpak is defined + +- name: install flatpak + become_user: user + community.general.flatpak: + name: "{{ item }}" + with_items: "{{ required_packages_flatpak }}" + when: required_packages_flatpak is defined + ignore_errors: yes diff --git a/ansible/scripts/install_fonts.yml b/ansible/scripts/install_fonts.yml new file mode 100644 index 0000000..baa29f5 --- /dev/null +++ b/ansible/scripts/install_fonts.yml @@ -0,0 +1,23 @@ +- name: ensure fonts directory + become_user: user + file: + path: "~/.fonts" + state: directory + when: fonts is defined + +- name: Ensuring Fonts Exists + become_user: user + shell: "ls ~/.fonts/*{{ item.name }}*" + register: fonts_exist + ignore_errors: yes + with_items: "{{ fonts }}" + when: fonts is defined + +- name: Download Fonts + when: fonts_exist is failed + become_user: user + ansible.builtin.unarchive: + src: "{{ item.url }}" + dest: "~/.fonts/" + remote_src: yes + with_items: "{{ fonts }}" diff --git a/ansible/scripts/install_go.yml b/ansible/scripts/install_go.yml new file mode 100644 index 0000000..2338ca0 --- /dev/null +++ b/ansible/scripts/install_go.yml @@ -0,0 +1,36 @@ +- name: Register the current Go version (if any) + command: go version + ignore_errors: yes + register: go_version + changed_when: false + +- name: Download the Go tarball + get_url: + url: "https://go.dev/dl/{{ go_tarball }}" + dest: /usr/local/src/{{ go_tarball }} + checksum: "{{ go_checksum }}" + #when: go_version|failed or go_version.stdout != go_version_target + +- name: Remove old installation of Go + file: + path: /usr/local/go + state: absent + #when: go_version|failed or go_version.stdout != go_version_target + +- name: Extract the Go tarball if Go is not yet installed or not the desired version + unarchive: + src: /usr/local/src/{{ go_tarball }} + dest: /usr/local + copy: no + #when: go_version|failed or go_version.stdout != go_version_target + +- name: Add the Go bin directory to the PATH environment variable for all users + copy: + src: go-bin.sh + dest: /etc/profile.d + +- name: Set GOPATH for all users + copy: + src: go-path.sh + dest: /etc/profile.d + #when: set_go_path diff --git a/ansible/scripts/install_goapps.yml b/ansible/scripts/install_goapps.yml new file mode 100644 index 0000000..a34cba4 --- /dev/null +++ b/ansible/scripts/install_goapps.yml @@ -0,0 +1,9 @@ +- name: Installing Go apps + become_user: user + shell: "go install {{ item }}" + with_items: "{{ go_apps }}" + when: go_apps is defined + +- name: Build Bat Cache + become_user: user + shell: "bat cache --build" diff --git a/ansible/scripts/install_local_ca.yml b/ansible/scripts/install_local_ca.yml new file mode 100644 index 0000000..9999e92 --- /dev/null +++ b/ansible/scripts/install_local_ca.yml @@ -0,0 +1,7 @@ +- name: Copy Public certs + copy: + src: durp.crt + dest: /etc/ca-certificates/trust-source/anchors/durp.crt + +- name: Trust certs + command: trust extract-compat diff --git a/ansible/scripts/install_pacman.yml b/ansible/scripts/install_pacman.yml new file mode 100644 index 0000000..a7894f4 --- /dev/null +++ b/ansible/scripts/install_pacman.yml @@ -0,0 +1,14 @@ +- name: Upgrade Packages + community.general.pacman: + state: latest + update_cache: yes + become: yes + when: required_packages_pacman is defined + +- name: Install Packages + community.general.pacman: + state: present + update_cache: yes + name: "{{ required_packages_pacman }}" + become: yes + when: required_packages_pacman is defined diff --git a/ansible/scripts/install_tpm.yml b/ansible/scripts/install_tpm.yml new file mode 100644 index 0000000..2cf2cba --- /dev/null +++ b/ansible/scripts/install_tpm.yml @@ -0,0 +1,4 @@ +- name: Install tmux TPM + become_user: user + shell: "git clone https://github.com/tmux-plugins/tpm ~/.tmux/plugins/tpm" + ignore_errors: yes