54 Commits

Author SHA1 Message Date
b970cbc8ca Update kitty to install from GitHub on Debian
Older version of kitty have terrible font rendering on Linux, e.g. the
one shipped with Ubuntu 22.04, so instead install the latest version
from the provided GitHub packages.
2024-04-19 20:50:44 +01:00
e330c3d072 Fix use of stow to not fold directories 2024-04-19 20:50:23 +01:00
5309683d94 Add support for proxy networks & cleanup playbook vars 2024-04-19 13:17:53 +01:00
a1296840f6 Fix python role, actuall remove old pip.conf 2024-04-15 11:29:58 +01:00
5c78bd1da3 Add system-info macOS user service 2024-04-14 15:55:41 +01:00
7379986378 Run tmux install.sh instead of tasks.yaml 2024-04-13 16:30:30 +01:00
d5fc2c3c13 Move zsh install login into script
Enable installing zsh config repo standalone, i.e. without Ansible,
invoke the `install.zsh` script instead.
2024-04-13 16:12:24 +01:00
dc6b7776ff Update config repo branches for tmux & zsh 2024-04-13 14:36:22 +01:00
3fa17e5517 Fix ulauncher role on Fedora 2024-04-11 23:56:54 +01:00
ace72f755a Add ulauncher role 2024-04-11 21:35:28 +01:00
c4c03aabf4 Make guake package become root 2024-04-09 23:18:43 +01:00
e82bff66ce Don't install pynvim globally on Debian
For PEP 668 reasons.
2024-04-09 19:41:31 +01:00
947a6f1b87 Remove python config repo & use templates instead 2024-04-09 19:27:49 +01:00
9bf8c46bb9 Create pip.conf from a template, handle proxy network 2024-04-09 19:09:40 +01:00
a8f255b715 Add Guake role
Fixes #25
2024-04-08 23:54:45 +01:00
c5c12ab670 Remove set config repo email todos 2024-04-08 21:26:39 +01:00
18a74355c0 Expand launchd todo 2024-04-08 21:25:03 +01:00
f512ec427b Rename gnome-tweaks to gnome-shell
Also start gathering info for starting work on #17.
2024-04-07 23:48:54 +01:00
66efc7b88f Add gitea role for tea cli tool 2024-04-07 16:28:33 +01:00
e711b9f3b2 Add optional GitHub API authentication headers
If the `GITHUB_TOKEN` is defined in the Ansible controller's
environment it is used to set the GitHub REST API authentication header.
This is they passed to all `uri` modules tasks which interact with the
GitHub REST API. If the `GITHUB_TOKEN` is not set, the authentication
header is not used.

Fixes #19
2024-04-06 16:35:01 +01:00
883fee21b3 Add podman role
Fixes #12
2024-04-06 15:03:18 +01:00
035c9a7577 Install latest pynvim on Debian based systems
Fixes #21
2024-04-06 14:37:19 +01:00
8635277d75 Add role for fd 2024-04-06 13:51:40 +01:00
500b27a473 Add ripgrep role 2024-04-06 13:47:04 +01:00
19d0ac491b Replace Firefox Snap with Mozilla repo package
Fixes #20
2024-04-06 12:57:59 +01:00
b57c3f9916 Switch over to neovim specific config repo 2024-04-01 12:26:32 +01:00
5126d06e1e Use latest neovim from GitHub on Debian based distros 2024-03-02 00:42:27 +00:00
b63ff02e0c Update WSL playbook 2024-02-27 22:09:15 +00:00
ebf8cfac42 Make cider role usage more strict 2024-02-27 22:04:25 +00:00
643b4eac8d Add note about first time git install on windows 2023-12-23 23:16:35 +00:00
8cfb03bd4d Fix gnome-tweaks when clause 2023-11-28 23:05:36 +00:00
cf041f9747 Add rpmfusion role on Fedora 2023-11-24 22:48:40 +00:00
66e7d9dc76 Add gnome-tweaks role 2023-11-24 22:17:24 +00:00
c4ac91f163 Set EDITOR in .bashrc 2023-10-28 23:16:18 +01:00
9017be5cf7 Add cider role for Linux and Windows
Cider is a cross-platform Apple Music client. Don't bother installing
Cider on macOS since there is the first party Music app.
2023-10-24 00:07:19 +01:00
b4685b9d1e Create shortcut for Ferdium on Windows 2023-10-21 17:44:40 +01:00
e5cc78f6f4 Add url command to zsh symlinks 2023-10-19 18:06:04 +01:00
9df05dc567 Add macos role for macOS tweaks 2023-10-10 21:36:18 +01:00
37d89c475e Add hiddenbar role for macOS 2023-10-10 21:12:05 +01:00
fa0cf04d8f Fix kitty role on macOS 2023-10-10 21:11:50 +01:00
0d1993ef53 Fix win_git module for hidden folders 2023-10-06 10:51:28 +01:00
9fef9403b3 Fix pynvim on macOS by installing dependency 2023-10-01 23:42:44 +01:00
253cf462b3 Add macOS support to kitty role 2023-10-01 23:42:34 +01:00
54b3c4edfe Flatpak system installs require root 2023-09-25 11:20:52 +01:00
4489c05014 Replace yum with dnf where possible 2023-08-28 22:19:44 +01:00
520462a3f4 Add unsafe tags to zsh and tmux
When used in combination with the `--skip-tags unsafe` flag the
`playbooks/UnixCLI.yaml` can be run while inside a `zsh`/`tmux` session
without it locking up due to system files going missing due to the
upgrade.
2023-08-25 12:29:18 +01:00
aeba9ba7f2 Fix obsidian role when already using flatpak 2023-08-20 21:08:36 +01:00
669dffc2c5 Add ~/.local/bin to PATH in .bashrc 2023-08-18 10:54:30 +01:00
399300c162 Switch to obsidian from flathub 2023-08-17 23:45:34 +01:00
3a4224d200 Fix Fedora/RedHat config 2023-08-17 23:31:59 +01:00
afa680c4d1 Enable xremap on Debian/Ubuntu 2023-08-17 23:24:03 +01:00
cba3f6ce2a Name the chocolatey ferdium task 2023-08-01 21:06:51 +01:00
d37b675187 Override Ubuntu codename for neovim ppa 2023-08-01 20:57:10 +01:00
3364d770e1 Add flatpak role for Debian 2023-08-01 20:56:50 +01:00
77 changed files with 881 additions and 223 deletions

View File

@@ -223,7 +223,7 @@ if ($recursive) {
# Ensure the repository has the correct owner # Ensure the repository has the correct owner
$userName = [System.Security.Principal.WindowsIdentity]::GetCurrent().Name $userName = [System.Security.Principal.WindowsIdentity]::GetCurrent().Name
$idRef = [System.Security.Principal.NTAccount]::new($userName) $idRef = [System.Security.Principal.NTAccount]::new($userName)
Get-Item $dest | foreach { ` Get-Item -Force $dest | foreach { `
$_ ; $_ | Get-ChildItem -Force -Recurse ` $_ ; $_ | Get-ChildItem -Force -Recurse `
} | foreach { ` } | foreach { `
$acl = $_ | Get-Acl; $acl.SetOwner($idRef); $_ | Set-Acl -AclObject $acl ` $acl = $_ | Get-Acl; $acl.SetOwner($idRef); $_ | Set-Acl -AclObject $acl `

View File

@@ -1,4 +1,6 @@
--- ---
- hosts: localhost - hosts: localhost
vars_files:
- vars/environment.yaml
roles: roles:
- 1password - 1password

View File

@@ -2,7 +2,20 @@
- import_playbook: LinuxCLI.yaml - import_playbook: LinuxCLI.yaml
- import_playbook: UnixGUI.yaml - import_playbook: UnixGUI.yaml
- hosts: localhost - hosts: localhost
vars_files:
- vars/environment.yaml
roles: roles:
- role: firefox
- role: kitty - role: kitty
- role: guake
- role: cider
- role: ulauncher
- role: gnome-shell
when: "'GNOME' in ansible_env.XDG_CURRENT_DESKTOP"
- role: xremap - role: xremap
when: ansible_os_family == "RedHat" when: >
'GNOME' in ansible_env.XDG_CURRENT_DESKTOP and
ansible_env.XDG_SESSION_TYPE == 'wayland' and (
ansible_os_family == "RedHat" or
ansible_os_family == "Debian"
)

View File

@@ -1,6 +1,15 @@
--- ---
- hosts: localhost
vars_files:
- vars/environment.yaml
roles:
- role: rpmfusion
when: ansible_os_family == 'RedHat' and ansible_distribution == 'Fedora'
- import_playbook: UnixCLI.yaml - import_playbook: UnixCLI.yaml
- hosts: localhost - hosts: localhost
vars_files:
- vars/environment.yaml
roles: roles:
- role: gdb - role: gdb
- role: podman
- role: system-info - role: system-info

View File

@@ -1,19 +1,24 @@
--- ---
- hosts: localhost - hosts: localhost
vars_files:
- vars/environment.yaml
roles: roles:
- role: sudo - role: sudo
when: ansible_user_id != "root" when: ansible_user_id != "root"
- role: python - role: python
- role: zsh - role: zsh
tags: unsafe
- role: neovim - role: neovim
- role: tmux - role: tmux
tags: unsafe
- role: ag - role: ag
- role: bash - role: bash
- role: bat - role: bat
- role: curl - role: curl
- role: editline - role: editline
- role: fd
- role: fzf - role: fzf
- role: gh - role: gh
- role: git - role: git
@@ -22,6 +27,7 @@
- role: jp - role: jp
- role: jq - role: jq
- role: readline - role: readline
- role: ripgrep
- role: tidy - role: tidy
- role: tree - role: tree
- role: watch - role: watch

View File

@@ -1,6 +1,11 @@
--- ---
- hosts: localhost - hosts: localhost
vars_files:
- vars/environment.yaml
roles: roles:
- role: flatpak
when: ansible_os_family != "Darwin"
- role: 1password - role: 1password
- role: ferdium - role: ferdium
- role: fonts - role: fonts

View File

@@ -1,7 +1,7 @@
--- ---
- import_playbook: UnixCLI.yaml - import_playbook: LinuxCLI.yaml
- hosts: localhost - hosts: localhost
vars_files:
- vars/environment.yaml
roles: roles:
- role: gdb
- role: wsl - role: wsl
- role: system-info

View File

@@ -1,6 +1,7 @@
--- ---
- hosts: windows - hosts: windows
vars_files:
- vars/environment.yaml
roles: roles:
- role: python - role: python
- role: git - role: git
@@ -11,10 +12,12 @@
- role: ag - role: ag
- role: bat - role: bat
- role: curl - role: curl
- role: fd
- role: fzf - role: fzf
- role: gh - role: gh
- role: glab - role: glab
- role: jq - role: jq
- role: ripgrep
- role: tree - role: tree
- role: yq - role: yq
@@ -23,6 +26,7 @@
- role: 1password - role: 1password
- role: autohotkey - role: autohotkey
- role: cider
- role: ferdium - role: ferdium
- role: firefox - role: firefox
- role: fonts - role: fonts

View File

@@ -1,14 +1,22 @@
--- ---
- import_playbook: UnixCLI.yaml - import_playbook: UnixCLI.yaml
- hosts: localhost - hosts: localhost
vars_files:
- vars/environment.yaml
roles: roles:
- role: system-info - role: system-info
- import_playbook: UnixGUI.yaml - import_playbook: UnixGUI.yaml
- hosts: localhost - hosts: localhost
vars_files:
- vars/environment.yaml
roles: roles:
- role: mas - role: mas
- role: hiddenbar
- role: iterm - role: iterm
- role: kitty
- role: magnet - role: magnet
- role: microsoft-remote-desktop - role: microsoft-remote-desktop
- role: viscosity - role: viscosity
- role: macos

View File

@@ -0,0 +1,15 @@
---
# GitHub may rate limit unauthenticated API requests, this is more likely when
# behind a network proxy. Set the GITHUB_TOKEN environment variable to
# authenticate any GitHub API requests executed while playing roles.
github_auth_headers: >-
{{ { 'Authorization': 'Bearer ' + lookup('env', 'GITHUB_TOKEN') }
if lookup('env', 'GITHUB_TOKEN') else {} }}
# When working behind a network proxy, set the http_proxy and https_proxy
# environment variables. These will be passed through to uses of the `get_url`
# module when playing roles.
proxy_environment: >-
{{ { 'http_proxy': lookup('env', 'http_proxy'),
'https_proxy': lookup('env', 'https_proxy') }
if lookup('env', 'http_proxy') and lookup('env', 'https_proxy') else {} }}

View File

@@ -16,6 +16,7 @@
get_url: get_url:
url: https://downloads.1password.com/linux/keys/1password.asc url: https://downloads.1password.com/linux/keys/1password.asc
dest: '{{keyring}}' dest: '{{keyring}}'
environment: '{{proxy_environment}}'
- name: set compatible architecture - name: set compatible architecture
when: ansible_machine == 'x86_64' when: ansible_machine == 'x86_64'

View File

@@ -1,10 +1,10 @@
--- ---
- name: add yum repository key - name: add dnf repository key
become: true become: true
rpm_key: rpm_key:
key: https://downloads.1password.com/linux/keys/1password.asc key: https://downloads.1password.com/linux/keys/1password.asc
- name: add yum repository - name: add dnf repository
become: true become: true
yum_repository: yum_repository:
name: 1password name: 1password
@@ -15,8 +15,8 @@
repo_gpgcheck: true repo_gpgcheck: true
gpgkey: ['https://downloads.1password.com/linux/keys/1password.asc'] gpgkey: ['https://downloads.1password.com/linux/keys/1password.asc']
- name: install yum package - name: install dnf package
become: true become: true
yum: dnf:
name: 1password name: 1password
state: latest state: latest

View File

@@ -16,6 +16,7 @@
win_get_url: win_get_url:
url: https://downloads.1password.com/win/1PasswordSetup-latest.exe url: https://downloads.1password.com/win/1PasswordSetup-latest.exe
dest: '{{installer_exe}}' dest: '{{installer_exe}}'
environment: '{{proxy_environment}}'
- name: run installer - name: run installer
when: not app_stat.stat.exists when: not app_stat.stat.exists
@@ -68,6 +69,7 @@
win_get_url: win_get_url:
url: '{{latest.downloads.Windows.amd64}}' url: '{{latest.downloads.Windows.amd64}}'
dest: '{{cli_zip}}' dest: '{{cli_zip}}'
environment: '{{proxy_environment}}'
- name: unzip op zip archive - name: unzip op zip archive
when: cli_installed_version is not defined or cli_installed_version != latest.version when: cli_installed_version is not defined or cli_installed_version != latest.version

View File

@@ -1,6 +1,6 @@
--- ---
- name: install yum package - name: install dnf package
become: true become: true
yum: dnf:
name: the_silver_searcher name: the_silver_searcher
state: latest state: latest

View File

@@ -110,3 +110,13 @@ grey="\001\e[38;5;244m\002"
reset="\001\e[0m\002" reset="\001\e[0m\002"
PS1="$yellow\u$reset@$grey\h$reset " PS1="$yellow\u$reset@$grey\h$reset "
# Setup environment variables
export PATH=$HOME/.local/bin:$PATH
if command -v nvim > /dev/null; then
export EDITOR=nvim
elif command -v vim > /dev/null; then
export EDITOR=vim
elif command -v vi > /dev/null; then
export EDITOR=vi
fi

View File

@@ -1,6 +1,6 @@
--- ---
- name: install yum package - name: install dnf package
become: true become: true
yum: dnf:
name: bat name: bat
state: latest state: latest

View File

@@ -2,6 +2,7 @@
- name: get latest github release - name: get latest github release
uri: uri:
url: https://api.github.com/repos/sharkdp/bat/releases/latest url: https://api.github.com/repos/sharkdp/bat/releases/latest
headers: '{{github_auth_headers}}'
register: latest register: latest
- set_fact: - set_fact:
@@ -50,6 +51,7 @@
get_url: get_url:
url: '{{asset.browser_download_url}}' url: '{{asset.browser_download_url}}'
dest: '{{bat_deb}}' dest: '{{bat_deb}}'
environment: '{{proxy_environment}}'
- name: install .deb file - name: install .deb file
when: installed_version is not defined or installed_version != latest_version when: installed_version is not defined or installed_version != latest_version

View File

@@ -0,0 +1,15 @@
---
- assert:
that: ansible_os_family != 'Darwin'
- name: install chocolatey package
when: ansible_os_family == 'Windows'
win_chocolatey:
name: Cider
state: latest
- name: install flatpak package
when: ansible_os_family != 'Windows'
become: true
flatpak:
name: sh.cider.Cider

View File

@@ -1,6 +1,6 @@
--- ---
- name: install yum package - name: install dnf package
become: true become: true
yum: dnf:
name: curl name: curl
state: latest state: latest

26
roles/fd/tasks/main.yaml Normal file
View File

@@ -0,0 +1,26 @@
---
- name: install apt package
when: ansible_os_family == 'Debian'
become: true
apt:
name: fd-find
state: latest
- name: install dnf package
when: ansible_os_family == 'RedHat'
become: true
dnf:
name: fd-find
state: latest
- name: install Homebrew package
when: ansible_os_family == 'Darwin'
homebrew:
name: fd
state: latest
- name: install Chocolatey package
when: ansible_os_family == 'Windows'
win_chocolatey:
name: fd
state: latest

View File

@@ -0,0 +1,14 @@
---
- name: install chocolatey package
win_chocolatey:
name: ferdium
state: latest
- set_fact:
ferdium_exe: 'C:/Program Files/Ferdium/Ferdium.exe'
- name: create start menu shortcut
win_shortcut:
src: '{{ferdium_exe}}'
dest: '{{ansible_env.ProgramData}}/Microsoft/Windows/Start Menu/Programs/Ferdium.lnk'
icon: '{{ferdium_exe}},0'

View File

@@ -6,12 +6,11 @@
state: latest state: latest
- when: ansible_os_family == 'Windows' - when: ansible_os_family == 'Windows'
win_chocolatey: include_tasks: Windows.yaml
name: ferdium
state: latest
- name: install flatpak package - name: install flatpak package
when: ansible_os_family != 'Windows' and when: ansible_os_family != 'Windows' and
ansible_os_family != 'Darwin' ansible_os_family != 'Darwin'
become: true
flatpak: flatpak:
name: org.ferdium.Ferdium name: org.ferdium.Ferdium

View File

@@ -0,0 +1,52 @@
---
- name: remove snap package
become: true
snap:
name: firefox
state: absent
- name: create keyrings directory
become: true
file:
path: /etc/apt/keyrings
mode: '755'
state: directory
- name: install mozilla repo keyring
become: true
get_url:
url: https://packages.mozilla.org/apt/repo-signing-key.gpg
dest: /etc/apt/keyrings/packages.mozilla.org.asc
environment: '{{proxy_environment}}'
- name: add mozilla apt repo
become: true
copy:
content: >-
deb [signed-by=/etc/apt/keyrings/packages.mozilla.org.asc]
https://packages.mozilla.org/apt mozilla main
dest: /etc/apt/sources.list.d/mozilla.list
- name: pin mozilla package
become: true
copy:
content: |
Package: *
Pin: origin packages.mozilla.org
Pin-Priority: 1000
dest: /etc/apt/preferences.d/mozilla
- name: install mozilla package
become: true
apt:
name: firefox
state: latest
allow_downgrade: true
update_cache: true
- name: install gnome shell integration
when: "'GNOME' in ansible_env.XDG_CURRENT_DESKTOP"
become: true
apt:
name: chrome-gnome-shell
state: latest

View File

@@ -1,2 +1,5 @@
--- ---
- include_tasks: '{{ansible_os_family}}.yaml' - include_tasks: Windows.yaml
when: ansible_os_family == 'Windows'
- include_tasks: Ubuntu.yaml
when: ansible_distribution == 'Ubuntu'

View File

@@ -0,0 +1,6 @@
---
- name: install apt package
become: true
apt:
name: flatpak
state: latest

View File

@@ -0,0 +1,6 @@
---
- name: install dnf package
become: true
dnf:
name: flatpak
state: latest

View File

@@ -0,0 +1,9 @@
---
- include_tasks: '{{ansible_os_family}}.yaml'
- name: add flathub repository remote
become: true
flatpak_remote:
name: flathub
state: present
flatpakrepo_url: https://dl.flathub.org/repo/flathub.flatpakrepo

View File

@@ -17,6 +17,7 @@
- name: get latest release - name: get latest release
uri: uri:
url: https://api.github.com/repos/ryanoasis/nerd-fonts/releases/latest url: https://api.github.com/repos/ryanoasis/nerd-fonts/releases/latest
headers: '{{github_auth_headers}}'
register: latest register: latest
- set_fact: - set_fact:
@@ -36,6 +37,7 @@
get_url: get_url:
url: '{{asset.browser_download_url}}' url: '{{asset.browser_download_url}}'
dest: '{{ansible_env.HOME}}/.local/share/fonts/tmp.zip' dest: '{{ansible_env.HOME}}/.local/share/fonts/tmp.zip'
environment: '{{proxy_environment}}'
- name: install Caskaydia Cove Nerd Font - name: install Caskaydia Cove Nerd Font
when: needs_installed when: needs_installed

View File

@@ -1,6 +1,6 @@
--- ---
- name: install yum package - name: install dnf package
become: true become: true
yum: dnf:
name: fzf name: fzf
state: latest state: latest

View File

@@ -15,6 +15,7 @@
url: https://cli.github.com/packages/githubcli-archive-keyring.gpg url: https://cli.github.com/packages/githubcli-archive-keyring.gpg
dest: /usr/share/keyrings/githubcli-archive-keyring.gpg dest: /usr/share/keyrings/githubcli-archive-keyring.gpg
mode: 0644 mode: 0644
environment: '{{proxy_environment}}'
- name: add apt repository list - name: add apt repository list
become: true become: true

View File

@@ -1,9 +1,10 @@
--- ---
- name: add yum repository - name: add dnf repository
become: true become: true
get_url: get_url:
url: https://cli.github.com/packages/rpm/gh-cli.repo url: https://cli.github.com/packages/rpm/gh-cli.repo
dest: /etc/yum.repos.d/gh-cli.repo dest: /etc/yum.repos.d/gh-cli.repo
environment: '{{proxy_environment}}'
- name: install dnf package - name: install dnf package
become: true become: true

View File

@@ -2,6 +2,7 @@
- name: get json containing all releases - name: get json containing all releases
win_uri: win_uri:
url: 'https://api.github.com/repos/git-for-windows/git/releases/tags/v{{git_version}}.windows.1' url: 'https://api.github.com/repos/git-for-windows/git/releases/tags/v{{git_version}}.windows.1'
headers: '{{github_auth_headers}}'
return_content: true return_content: true
register: git_release register: git_release
@@ -18,6 +19,7 @@
win_get_url: win_get_url:
url: '{{git_asset.browser_download_url}}' url: '{{git_asset.browser_download_url}}'
dest: '{{git_installer_path}}' dest: '{{git_installer_path}}'
environment: '{{proxy_environment}}'
- name: run installer command - name: run installer command
win_command: win_command:

View File

@@ -31,6 +31,7 @@
- include_tasks: Windows-installer.yaml - include_tasks: Windows-installer.yaml
when: git_run_installer when: git_run_installer
# NOTE: If this is failing on first install of git, restart the sshd service.
- name: clone config repos - name: clone config repos
win_git: win_git:
repo: '{{item.repo}}' repo: '{{item.repo}}'

View File

@@ -0,0 +1,50 @@
---
- name: stat tea executable
stat:
path: '{{tea_package_exe}}'
register: tea
- name: get installed version
when: tea.stat.exists
command: '{{tea_package_exe}} --version'
register: tea_version_string
- name: extract version number
when: tea.stat.exists
set_fact:
installed_version: "{{tea_version_string.stdout |
regex_search('^.*(\\d+\\.\\d+\\.\\d+).*golang.*$', '\\1') }}"
- name: get latest release json
uri:
url: https://gitea.com/api/v1/repos/gitea/tea//releases/latest
register: latest
- name: check installed version
set_fact:
install_required: >
{{not tea.stat.exists or latest.json.name != 'v' + installed_version[0]}}
asset: '{{latest.json.assets | json_query(tea_asset_query)}}'
- name: create package directory
when: install_required
become: true
file:
state: directory
path: '{{tea_package_dir}}/bin'
- name: download package
when: install_required
become: true
get_url:
url: '{{asset.browser_download_url}}'
dest: '{{tea_package_exe}}'
mode: '0755'
environment: '{{proxy_environment}}'
- name: install package
when: install_required
become: true
command:
cmd: 'stow --no-folding --target /usr/local .'
chdir: '{{tea_package_dir}}'

View File

@@ -0,0 +1,12 @@
---
- when: ansible_os_family != 'Darwin' and ansible_os_family != 'Windows'
include_tasks: Linux.yaml
- when: ansible_os_family == 'Windows'
include_tasks: Windows.yaml
- name: install homebrew package
when: ansible_os_family == 'Darwin'
homebrew:
name: tea
state: latest

View File

@@ -0,0 +1,4 @@
---
tea_package_dir: /usr/local/stow/tea
tea_package_exe: '{{tea_package_dir}}/bin/tea'
tea_asset_query: '[?contains(name, `tea-`)] | [?contains(name, `linux-amd64`)] | [0]'

View File

@@ -48,6 +48,7 @@
get_url: get_url:
url: '{{asset.url}}' url: '{{asset.url}}'
dest: '{{tempdir.path}}/glab.deb' dest: '{{tempdir.path}}/glab.deb'
environment: '{{proxy_environment}}'
- name: install .deb file - name: install .deb file
when: glab_version is not defined or glab_version != latest_version when: glab_version is not defined or glab_version != latest_version

View File

@@ -0,0 +1,30 @@
---
- assert:
that: "'GNOME' in ansible_env.XDG_CURRENT_DESKTOP"
- name: install gnome-tweaks
become: true
package:
name: gnome-tweaks
state: latest
# NOTE: Use this command to see default keybindings
# gsettings list-recursively | grep -i -E 'media-keys|keybindings'
# NOTE: Use this command to inspect the current state of the custom keybindings
# dconf dump / | sed -n '/\[org.gnome.settings-daemon.plugins.media-keys/,/^$/p'
# TODO: List of custom-keybindings
# [org/gnome/settings-daemon/plugins/media-keys]
# custom-keybindings=['/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom0/', '/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom1/']
# TODO: 1Password Quick Access
# [org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom0]
# binding='<Shift><Alt>space'
# command='1password --quick-access'
# name='1Password Quick Access'
# TODO: Guake toggle - this requires removing a default binding
# [org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom1]
# binding='<Super>space'
# command='guake-toggle'
# name='Guake Toggle'

View File

@@ -0,0 +1,9 @@
---
- assert:
that: ansible_os_family != 'Darwin' and ansible_os_family != 'Windows'
- name: install package
become: true
package:
name: guake
state: latest

View File

@@ -0,0 +1,8 @@
---
- assert:
that: ansible_os_family == 'Darwin'
- name: install homebrew package
homebrew_cask:
name: hiddenbar
state: latest

View File

@@ -2,6 +2,7 @@
- name: get latest github release - name: get latest github release
uri: uri:
url: https://api.github.com/repos/jmespath/jp/releases/latest url: https://api.github.com/repos/jmespath/jp/releases/latest
headers: '{{github_auth_headers}}'
register: latest register: latest
- set_fact: - set_fact:
@@ -39,3 +40,4 @@
url: '{{asset.browser_download_url}}' url: '{{asset.browser_download_url}}'
dest: '{{jp_exe}}' dest: '{{jp_exe}}'
mode: +x mode: +x
environment: '{{proxy_environment}}'

View File

@@ -19,6 +19,7 @@
- name: get latest release - name: get latest release
uri: uri:
url: 'https://api.github.com/repos/jmespath/jp/releases/latest' url: 'https://api.github.com/repos/jmespath/jp/releases/latest'
headers: '{{github_auth_headers}}'
register: latest register: latest
- name: determine if jp needs installed - name: determine if jp needs installed
@@ -49,3 +50,4 @@
url: '{{asset.browser_download_url}}' url: '{{asset.browser_download_url}}'
dest: '{{ansible_env.HOME}}/.local/bin/jp' dest: '{{ansible_env.HOME}}/.local/bin/jp'
mode: '0755' mode: '0755'
environment: '{{proxy_environment}}'

View File

@@ -0,0 +1,5 @@
---
- name: install homebrew package
homebrew_cask:
name: kitty
state: latest

View File

@@ -1,6 +1,98 @@
--- ---
- name: install apt package - name: remove apt package
become: true become: true
apt: apt:
name: kitty name: kitty
state: latest state: absent
- name: get latest version
uri:
url: https://api.github.com/repos/kovidgoyal/kitty/releases/latest
headers: '{{github_auth_headers}}'
register: latest
- set_fact:
kitty_latest_version: '{{latest.json.tag_name[1:]}}'
kitty_exe: /usr/local/bin/kitty
kitty_package_dir: /usr/local/stow/kitty
- name: check if already installed
stat:
path: '{{kitty_exe}}'
register: kitty
- name: get installed version
when: kitty.stat.exists
command: '{{kitty_exe}} --version'
register: kitty_version
changed_when: false
- when: kitty.stat.exists
set_fact:
kitty_install_version:
'{{kitty_version.stdout | regex_replace("^.*(\d+\.\d+\.\d+).*$", "\1")}}'
- set_fact:
kitty_asset_query: >
[? contains(name,
`kitty-{{kitty_latest_version}}-{{ansible_architecture}}.txz`)] | [0]
- set_fact:
kitty_install_required: >
{{ kitty_install_version is not defined or
kitty_latest_version != kitty_install_version }}
kitty_asset: "{{ latest.json.assets | json_query(kitty_asset_query) }}"
- name: uninstall package
when: kitty_install_required and kitty.stat.exists
become: true
command:
cmd: 'stow --delete --target /usr/local .'
chdir: '{{kitty_package_dir}}'
- name: remove outdated package
when: kitty_install_required and kitty.stat.exists
become: true
file:
state: absent
path: '{{kitty_package_dir}}'
- set_fact:
kitty_package_archive: '{{kitty_package_dir}}/{{kitty_asset.name}}'
- name: create package directory
become: true
file:
state: directory
path: '{{kitty_package_dir}}'
- name: download package
when: kitty_install_required
become: true
get_url:
url: '{{kitty_asset.browser_download_url}}'
dest: '{{kitty_package_archive}}'
environment: '{{proxy_environment}}'
- name: decompress package
when: kitty_install_required
become: true
unarchive:
src: '{{kitty_package_archive}}'
dest: '{{kitty_package_dir}}'
owner: root
group: staff
- name: remove package archive
when: kitty_install_required
become: true
file:
state: absent
path: '{{kitty_package_archive}}'
- name: install package
when: kitty_install_required
become: true
command:
cmd: 'stow --no-folding --target /usr/local .'
chdir: '{{kitty_package_dir}}'

View File

@@ -2,6 +2,7 @@
- name: get latest stable github release - name: get latest stable github release
uri: uri:
url: https://api.github.com/repos/llvm/llvm-project/releases/latest url: https://api.github.com/repos/llvm/llvm-project/releases/latest
headers: '{{github_auth_headers}}'
register: llvm_latest register: llvm_latest
- name: read /etc/os-release - name: read /etc/os-release
@@ -56,6 +57,7 @@
get_url: get_url:
url: https://apt.llvm.org/llvm-snapshot.gpg.key url: https://apt.llvm.org/llvm-snapshot.gpg.key
dest: '{{keyring}}' dest: '{{keyring}}'
environment: '{{proxy_environment}}'
- name: add upstream deb repository - name: add upstream deb repository
become: true become: true

View File

@@ -0,0 +1,9 @@
---
- assert:
that: ansible_os_family == 'Darwin'
- name: disable creation of .DS_Store in directories
osx_defaults:
domain: com.apple.desktopservices
key: DSDontWriteNetworkStores
value: 'true'

View File

@@ -6,6 +6,12 @@
state: latest state: latest
- set_fact: - set_fact:
neovim_pip_packages: '{{neovim_pip_packages + ["pynvim"]}}' neovim_pip_packages: >
{{
neovim_pip_packages + [
"pynvim",
"greenlet"
]
}}
- include_tasks: Unix.yaml - include_tasks: Unix.yaml

View File

@@ -1,25 +1,136 @@
--- ---
- name: slurp /etc/os-release # Don't neovim packages because they are all behind, even Debian unstable.
slurp: # Instead use the latest pre-build Linux package from GitHub, then stow them
src: /etc/os-release # into /usr/local.
register: os_release_slurp
- set_fact:
os_release: "{{ os_release_slurp.content |
b64decode | trim() | replace('=', ': ') | from_yaml }}"
- name: add neovim stable ppa - name: remove apt package
when: "'ID_LIKE' in os_release and os_release.ID_LIKE == 'ubuntu debian'"
become: true become: true
apt_repository: apt:
repo: ppa:neovim-ppa/stable name: neovim
update_cache: true state: absent
- name: install apt package - set_fact:
old_package_dir: '/usr/local/lib/nvim/nvim-linux64'
- name: check if old package directory exists
stat:
path: '{{old_package_dir}}'
register: old_package
- name: uninstall package from old directory
when: old_package.stat.exists
become: true
command:
cmd: 'stow --delete --target /usr/local .'
chdir: '{{old_package_dir}}'
- name: remove old package directory
when: old_package.stat.exists
become: true
file:
state: absent
path: '{{old_package_dir}}'
- name: install gnu stow for managing tar.gz package
become: true become: true
apt: apt:
name: name:
- neovim - stow
- python3-neovim
state: latest state: latest
- name: install python provider pip package
pip:
name: pynvim
state: latest
- name: stat installed executable
stat:
path: /usr/local/bin/nvim
register: nvim
- name: get installed version
when: nvim.stat.exists
command: nvim --version
register: nvim_version
changed_when: false
- when: nvim.stat.exists
set_fact:
installed_version: '{{nvim_version.stdout_lines[0][5:]}}'
- name: get latest version
uri:
url: https://api.github.com/repos/neovim/neovim/releases/latest
headers: '{{github_auth_headers}}'
register: latest
- set_fact:
install_required:
'{{installed_version is not defined or
installed_version != latest.json.tag_name}}'
asset_query: '[?contains(name, `nvim-linux64.tar.gz`)]'
package_dir: '/usr/local/stow/nvim'
- set_fact:
uninstall_required: '{{nvim.stat.exists and install_required}}'
asset: '{{latest.json.assets | json_query(asset_query)}}'
package_path: '{{package_dir}}/{{latest.json.name}}'
- name: uninstall old package from /usr/local
when: uninstall_required
become: true
command:
cmd: 'stow --delete --target /usr/local .'
chdir: '{{package_dir}}/nvim-linux64'
- name: remove old package
become: true
when: uninstall_required
file:
path: '{{package_dir}}/nvim-linux64'
state: absent
- name: create package directory
become: true
file:
path: '{{package_dir}}'
state: directory
- name: download package archive
when: install_required
become: true
get_url:
url: '{{asset[0].browser_download_url}}'
dest: '{{package_path}}'
environment: '{{proxy_environment}}'
- name: extract package archive
when: install_required
become: true
unarchive:
src: '{{package_path}}'
dest: '{{package_dir}}'
- name: remove downloaded archive
when: install_required
become: true
file:
path: '{{package_path}}'
state: absent
- name: move man to share/man
when: install_required
become: true
command:
argv:
- mv
- '{{package_dir}}/nvim-linux64/man'
- '{{package_dir}}/nvim-linux64/share'
- name: install package to /usr/local
when: install_required
become: true
command:
cmd: 'stow --no-folding --target /usr/local .'
chdir: '{{package_dir}}/nvim-linux64'
- include_tasks: Unix.yaml - include_tasks: Unix.yaml

View File

@@ -4,9 +4,9 @@
- name: clone config repo - name: clone config repo
git: git:
repo: git@code.infektor.net:config/vim.git repo: git@code.infektor.net:config/nvim.git
dest: '{{vim_config_dir}}' dest: '{{vim_config_dir}}'
version: master version: main
- name: install pip packages - name: install pip packages
pip: pip:

View File

@@ -10,12 +10,10 @@
- name: clone config repo - name: clone config repo
win_git: win_git:
repo: git@code.infektor.net:config/vim.git repo: git@code.infektor.net:config/nvim.git
dest: '{{vim_config_dir}}' dest: '{{vim_config_dir}}'
branch: master branch: main
# - TODO: neovim set repo email
# win_git_config:
# - TODO: neovim install pip packages # - TODO: neovim install pip packages
# win_pip: # win_pip:
# name: '{{neovim_pip_packages}}' # name: '{{neovim_pip_packages}}'

View File

@@ -13,6 +13,7 @@
get_url: get_url:
url: 'https://nodejs.org/dist/{{latest.json[0].version}}/node-{{latest.json[0].version}}-linux-x64.tar.gz' url: 'https://nodejs.org/dist/{{latest.json[0].version}}/node-{{latest.json[0].version}}-linux-x64.tar.gz'
dest: ~/.local/src/node/node.tar.gz dest: ~/.local/src/node/node.tar.gz
environment: '{{proxy_environment}}'
- name: extract downloaded package - name: extract downloaded package
unarchive: unarchive:

View File

@@ -1,6 +1,6 @@
--- ---
- name: install yum package - name: install dnf package
become: true become: true
yum: dnf:
name: nodejs name: nodejs
state: latest state: latest

View File

@@ -1,75 +1,32 @@
--- ---
# TODO: Prefer Flatpak over AppImage if available - name: install flatpak package
become: true
flatpak:
name: md.obsidian.Obsidian
- name: stat symlink # Remove old appimage if it exists
- name: stat appimage symlink
stat: stat:
path: '{{ansible_env.HOME}}/.local/bin/Obsidian' path: '{{ansible_env.HOME}}/.local/bin/Obsidian'
register: symlink_file register: symlink_file
- name: get latest release
uri:
url: https://api.github.com/repos/obsidianmd/obsidian-releases/releases/latest
register: latest
- set_fact: - set_fact:
appimage: 'Obsidian-{{latest.json.name}}.AppImage'
- set_fact:
filepath: '{{ansible_env.HOME}}/.local/bin/{{appimage}}'
iconpath: 'share/icons/hicolor/512x512/apps/obsidian.png' iconpath: 'share/icons/hicolor/512x512/apps/obsidian.png'
asset_query: '[?contains(name, `{{appimage}}`)] | [0]' - name: remove appimage icon file
- set_fact:
needs_installed:
'{{not symlink_file.stat.exists or symlink_file.stat.lnk_source != filepath}}'
asset: '{{latest.json.assets | to_json | from_json | json_query(asset_query)}}'
- name: download latest version
get_url:
url: '{{asset.browser_download_url}}'
dest: '{{filepath}}'
mode: '0755'
- name: create directories
file: file:
path: '{{item}}'
state: directory
with_items:
- '{{ansible_env.HOME}}/.local/bin'
- '{{ansible_env.HOME}}/.local/share/icons/hicolor/512x512/apps'
- name: create symlink
file:
src: '{{filepath}}'
dest: '{{ansible_env.HOME}}/.local/bin/Obsidian'
state: link
- name: extract squashfs-root for app icon
when: needs_installed
command:
cmd: '{{ansible_env.HOME}}/.local/bin/Obsidian --appimage-extract'
chdir: '/tmp'
- name: copy icon file
when: needs_installed
copy:
src: '/tmp/squashfs-root/usr/{{iconpath}}'
dest: '{{ansible_env.HOME}}/.local/{{iconpath}}' dest: '{{ansible_env.HOME}}/.local/{{iconpath}}'
- name: remove squashfs-root directory
when: needs_installed
file:
path: '/tmp/squashfs-root'
state: absent state: absent
- name: remove appimage desktop file
- name: create desktop file file:
template:
src: obsidian.desktop.j2
dest: '{{ansible_env.HOME}}/.local/share/applications/obsidian-obsidian.desktop' dest: '{{ansible_env.HOME}}/.local/share/applications/obsidian-obsidian.desktop'
notify: install desktop menu state: absent
- name: remove old appimage - name: remove old appimage
when: needs_installed and symlink_file.stat.exists when: "'lnk_source' in symlink_file.stat"
file: file:
path: '{{symlink_file.stat.lnk_source}}' path: '{{symlink_file.stat.lnk_source}}'
state: absent state: absent
- name: remove appimage symlink
file:
path: '{{ansible_env.HOME}}/.local/bin/Obsidian'
state: absent
- include_tasks: Unix.yaml - include_tasks: Unix.yaml

View File

@@ -0,0 +1,26 @@
---
- name: install apt package
when: ansible_os_family == 'Debian'
become: true
apt:
name: podman
state: latest
- name: install dnf package
when: ansible_os_family == 'RedHat'
become: true
dnf:
name: podman
state: latest
- name: install Homebrew package
when: ansible_os_family == 'Darwin'
homebrew:
name: podman-desktop
state: latest
- name: install Chocolatey package
when: ansible_os_family == 'Windows'
win_chocolatey:
name: podman-desktop
state: latest

View File

@@ -1,7 +1,7 @@
--- ---
- name: install yum packages - name: install dnf packages
become: true become: true
yum: dnf:
name: name:
- python3 - python3
- python3-pip - python3-pip

View File

@@ -1,10 +1,14 @@
--- ---
- name: install config repo - name: stat old config repo
git: stat:
repo: git@code.infektor.net:config/python.git path: ~/.config/python/.git
dest: ~/.config/python register: config_python_git
# TODO: set repo email - name: remove old config repo
when: config_python_git.stat.exists
file:
state: absent
dest: ~/.config/python
- name: create config directories - name: create config directories
file: file:
@@ -15,34 +19,45 @@
- ~/.config/ipython/profile_default - ~/.config/ipython/profile_default
- ~/.config/pip - ~/.config/pip
# Ensure that pip.conf exists before ever installing pip packages since - name: stat pip.conf
# Debian has enabled `EXTERNALLY-MANAGED` from PEP 668 which breaks `pip stat:
# install --user` unless configured otherwise. path: ~/.config/pip/pip.conf
- name: create symbolic links register: pip_conf
- name: remove pip.conf if its a symbolic link
when: pip_conf.stat.islnk
file: file:
state: link state: absent
src: '{{item.src}}' path: ~/.config/pip/pip.conf
dest: '{{item.dest}}'
with_items: # Ensure that pip.conf exists before ever installing pip packages since Debian
- src: ~/.config/python/flake8 # has enabled `EXTERNALLY-MANAGED` from PEP 668 which breaks `pip install
dest: ~/.config/flake8 # --user` unless configured otherwise.
- src: ~/.config/python/pylintrc - name: create user pip.conf from template
dest: ~/.pylintrc template:
- src: ~/.config/python/ipython_config.py src: pip.conf.j2
dest: ~/.config/ipython/profile_default/ipython_config.py dest: ~/.config/pip/pip.conf
- src: ~/.config/python/pip.conf
dest: ~/.config/pip/pip.conf # TODO: Also configure pip to disable `EXTERNALLY-MANAGED` globally?
- name: stat old ipython_config.py
stat:
path: ~/.config/ipython/profile_default/ipython_config.py
register: ipython_config_py
- name: remove ipython_conifg.py if its a symbolic link
when: ipython_config_py.stat.islnk
file:
state: absent
path: ~/.config/ipython/profile_default/ipython_config.py
- name: create ipython config from template
template:
src: ipython_config.py
dest: ~/.config/ipython/profile_default/ipython_config.py
- name: install pip packages - name: install pip packages
pip: pip:
name: '{{python_pip_packages}}' name: '{{python_pip_packages}}'
state: latest state: latest
extra_args: --user extra_args: --user
- name: create directories
file:
state: directory
dest: '{{item}}'
with_items:
- ~/.config/ipython/profile_default
- ~/.config/pip

View File

@@ -6,7 +6,6 @@
state: latest state: latest
# TODO: - name: install config repo # TODO: - name: install config repo
# TODO: - name: set repo email
# TODO: - name: install pip packages # TODO: - name: install pip packages
# TODO: - name: create config directories/files # TODO: - name: create config directories/files

View File

@@ -0,0 +1 @@
c.TerminalInteractiveShell.editing_mode = 'vi'

View File

@@ -0,0 +1,8 @@
[global]
break-system-packages = true
{% if ansible_env.http_proxy is defined %}
proxy = {{ ansible_env.http_proxy }}
{% endif %}
[list]
format=columns

View File

@@ -0,0 +1,26 @@
---
- name: install apt package
when: ansible_os_family == 'Debian'
become: true
apt:
name: ripgrep
state: latest
- name: install dnf package
when: ansible_os_family == 'RedHat'
become: true
dnf:
name: ripgrep
state: latest
- name: install Homebrew package
when: ansible_os_family == 'Darwin'
homebrew:
name: ripgrep
state: latest
- name: install Chocolatey package
when: ansible_os_family == 'Windows'
win_chocolatey:
name: ripgrep
state: latest

View File

@@ -0,0 +1,31 @@
---
- assert:
that: ansible_os_family == 'RedHat' and ansible_distribution == 'Fedora'
- name: install rpm fusion free gpg key
become: true
rpm_key:
key: 'https://rpmfusion.org/keys?action=AttachFile&do=get&target=RPM-GPG-KEY-rpmfusion-free-fedora-2020'
state: present
- name: install rpmfusion free repository
become: true
dnf:
name:
'https://mirrors.rpmfusion.org/free/fedora/rpmfusion-free-release-{{ansible_distribution_major_version}}.noarch.rpm'
state: present
validate_certs: no
- name: install rpmfusion non-free gpg key
become: true
rpm_key:
key: 'https://rpmfusion.org/keys?action=AttachFile&do=get&target=RPM-GPG-KEY-rpmfusion-nonfree-fedora-2020'
state: present
- name: install rpmfusion non-free repository
become: true
dnf:
name:
'https://mirrors.rpmfusion.org/nonfree/fedora/rpmfusion-nonfree-release-{{ansible_distribution_major_version}}.noarch.rpm'
state: present
validate_certs: no

View File

@@ -1,4 +1,25 @@
--- ---
# TODO: - name: get list of running launchd services
# cp $script_dir/system-info.plist ~/Library/LaunchAgents/system-info.plist command: launchctl list
# launchctl load -w ~/Library/LaunchAgents/system-info.plist register: launchd_running_services
changed_when: false
- name: determine if system-info is currently running
set_fact:
system_info_debug: true
system_info_plist_path: '{{ansible_env.HOME}}/Library/LaunchAgents/system-info.plist'
system_info_running: "{{'system-info' in launchd_running_services.stdout}}"
- name: install system-info launchd plist
template:
src: system-info.plist.j2
dest: '{{system_info_plist_path}}'
register: system_info_plist
- name: unload running system-info launchd service
when: system_info_plist.changed and system_info_running
command: 'launchctl unload -w {{system_info_plist_path}}'
- name: load system-info launchd service
when: system_info_plist.changed or not system_info_running
command: 'launchctl load -w {{system_info_plist_path}}'

View File

@@ -0,0 +1,19 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>system-info</string>
<key>EnvironmentVariables</key>
<dict>
<key>PATH</key>
<string>/opt/homebrew/bin:/usr/bin:/bin:/usr/sbin:/sbin</string>
</dict>
<key>Program</key>
<string>{{ansible_env.HOME}}/.config/tmux/system-info/system-info-macOS.sh</string>
<key>RunAtLoad</key>
<true/>
<key>KeepAlive</key>
<true/>
</dict>
</plist>

View File

@@ -18,6 +18,7 @@
get_url: get_url:
url: https://gist.githubusercontent.com/nicm/ea9cf3c93f22e0246ec858122d9abea1/raw/37ae29fc86e88b48dbc8a674478ad3e7a009f357/tmux-256color url: https://gist.githubusercontent.com/nicm/ea9cf3c93f22e0246ec858122d9abea1/raw/37ae29fc86e88b48dbc8a674478ad3e7a009f357/tmux-256color
dest: ~/tmux-256color dest: ~/tmux-256color
environment: '{{proxy_environment}}'
- name: compile terminal info - name: compile terminal info
when: terminfo_exists.rc == 1 when: terminfo_exists.rc == 1

View File

@@ -1,7 +1,7 @@
--- ---
- name: install yum packages - name: install dnf packages
become: true become: true
yum: dnf:
name: name:
- tmux - tmux
- sysstat - sysstat

View File

@@ -5,8 +5,9 @@
git: git:
repo: git@code.infektor.net:config/tmux.git repo: git@code.infektor.net:config/tmux.git
dest: ~/.config/tmux dest: ~/.config/tmux
version: master version: main
# TODO: - name: set repo email - name: run install script
command: ~/.config/tmux/install.sh
- include_tasks: ~/.config/tmux/tasks.yaml register: tmux_install
changed_when: "'changed' in tmux_install.stdout"

View File

@@ -0,0 +1,32 @@
---
- name: install keyring
when: ansible_distribution == 'Debian'
become: true
get_url:
url: '{{ulauncher_keyring_url}}'
dest: '{{ulauncher_keyring_path}}'
mode: '0644'
force: true
environment: '{{proxy_environment}}'
- name: add apt sources list
when: ansible_distribution == 'Debian'
become: true
copy:
content: >-
deb [signed-by={{ulauncher_keyring_path}}]
http://ppa.launchpad.net/agornostal/ulauncher/ubuntu
{{ansible_distribution_release}} main"
dest: '{{ulauncher_apt_sources_list_path}}'
- name: add ppa repository
when: ansible_distribution != 'Debian'
become: true
apt_repository:
repo: ppa:agornostal/ulauncher
- name: install apt package
become: true
apt:
name: ulauncher
state: latest

View File

@@ -0,0 +1,6 @@
---
- name: install dnf package
become: true
dnf:
name: ulauncher
state: latest

View File

@@ -0,0 +1,2 @@
---
- include_tasks: '{{ansible_os_family}}.yaml'

View File

@@ -0,0 +1,4 @@
---
ulauncher_keyring_url: http://keyserver.ubuntu.com/pks/lookup?op=get&search=0x59ebde772980c381ca13fa59faf1020699503176
ulauncher_keyring_path: /usr/share/keyrings/ulauncher-archive-keyring.gpg
ulauncher_apt_list_path: /etc/apt/sources.list.d/ulauncher.list

View File

@@ -28,6 +28,7 @@
url: 'https://cdn-2.webcatalog.io/webcatalog/{{appimage}}' url: 'https://cdn-2.webcatalog.io/webcatalog/{{appimage}}'
dest: '{{ansible_env.HOME}}/.local/bin/{{appimage}}' dest: '{{ansible_env.HOME}}/.local/bin/{{appimage}}'
mode: '0755' mode: '0755'
environment: '{{proxy_environment}}'
- name: create directories - name: create directories
file: file:

View File

@@ -1,7 +1,8 @@
--- ---
- assert: - assert:
that: ansible_env.XDG_CURRENT_DESKTOP == "GNOME" and that: >
ansible_env.XDG_SESSION_TYPE == "wayland" 'GNOME' in ansible_env.XDG_CURRENT_DESKTOP and
ansible_env.XDG_SESSION_TYPE == 'wayland'
- set_fact: - set_fact:
install_dir: '{{ansible_env.HOME}}/.local/bin' install_dir: '{{ansible_env.HOME}}/.local/bin'
@@ -29,18 +30,21 @@
- name: get latest release - name: get latest release
uri: uri:
url: https://api.github.com/repos/k0kubun/xremap/releases/latest url: https://api.github.com/repos/k0kubun/xremap/releases/latest
headers: '{{github_auth_headers}}'
register: latest register: latest
- name: determine if install needed - name: determine if install needed
set_fact: set_fact:
needs_installed: needs_installed:
'{{not executable.stat.exists or installed_version != latest.json.name}}' '{{not executable.stat.exists or installed_version != latest.json.name}}'
xdg_current_desktop:
"{{ansible_env.XDG_CURRENT_DESKTOP | regex_replace('(.*:)?(.*)', '\\2')}}"
- name: construct asset query - name: construct asset query
set_fact: set_fact:
asset_query: > asset_query: >
[?contains(name, `xremap-linux-{{ansible_architecture}}-{{ [?contains(name, `xremap-linux-{{ansible_architecture}}-{{
ansible_env.XDG_CURRENT_DESKTOP | lower}}.zip`)] | [0] xdg_current_desktop | lower}}.zip`)] | [0]
- name: get release asset - name: get release asset
set_fact: set_fact:
asset: '{{latest.json.assets | to_json | from_json | json_query(asset_query)}}' asset: '{{latest.json.assets | to_json | from_json | json_query(asset_query)}}'
@@ -59,6 +63,7 @@
get_url: get_url:
url: '{{asset.browser_download_url}}' url: '{{asset.browser_download_url}}'
dest: '{{install_dir}}/xremap.zip' dest: '{{install_dir}}/xremap.zip'
environment: '{{proxy_environment}}'
- name: extract release archive - name: extract release archive
when: needs_installed when: needs_installed
@@ -81,6 +86,14 @@
append: true append: true
groups: input groups: input
- name: load the uinput kernel module
when: ansible_os_family == 'Debian'
become: true
copy:
content: |
uinput
dest: /etc/modules-load.d/uinput.conf
# TODO: This works for on Fedora, author uses it on Ubuntu so I assume Debian # TODO: This works for on Fedora, author uses it on Ubuntu so I assume Debian
# will work too. Arch and other distros are potentially different see the docs # will work too. Arch and other distros are potentially different see the docs
# https://github.com/k0kubun/xremap # https://github.com/k0kubun/xremap

View File

@@ -2,6 +2,7 @@
- name: get latest github release - name: get latest github release
uri: uri:
url: https://api.github.com/repos/mikefarah/yq/releases/latest url: https://api.github.com/repos/mikefarah/yq/releases/latest
headers: '{{github_auth_headers}}'
register: latest register: latest
- set_fact: - set_fact:
@@ -35,3 +36,4 @@
url: '{{asset.browser_download_url}}' url: '{{asset.browser_download_url}}'
dest: '{{yq_exe}}' dest: '{{yq_exe}}'
mode: +x mode: +x
environment: '{{proxy_environment}}'

View File

@@ -19,6 +19,7 @@
- name: get latest release - name: get latest release
uri: uri:
url: 'https://api.github.com/repos/mikefarah/yq/releases/latest' url: 'https://api.github.com/repos/mikefarah/yq/releases/latest'
headers: '{{github_auth_headers}}'
register: latest register: latest
- name: determine if yq needs installed - name: determine if yq needs installed
@@ -49,3 +50,4 @@
url: '{{asset.browser_download_url}}' url: '{{asset.browser_download_url}}'
dest: '{{ansible_env.HOME}}/.local/bin/yq' dest: '{{ansible_env.HOME}}/.local/bin/yq'
mode: '0755' mode: '0755'
environment: '{{proxy_environment}}'

View File

@@ -1,7 +1,7 @@
--- ---
- name: install yum packages - name: install dnf packages
become: true become: true
yum: dnf:
name: name:
- zsh - zsh
- pinentry-tty - pinentry-tty

View File

@@ -5,77 +5,12 @@
git: git:
repo: git@code.infektor.net:config/zsh.git repo: git@code.infektor.net:config/zsh.git
dest: ~/.config/zsh dest: ~/.config/zsh
version: master version: main
- name: clone plugin repos - name: run install script
git: command: ~/.config/zsh/install.zsh
repo: '{{item.repo}}' register: zsh_install
dest: '{{item.dest}}' changed_when: "'changed' in zsh_install.stdout"
with_items:
- repo: https://github.com/zsh-users/zsh-autosuggestions.git
dest: ~/.config/zsh/zsh-autosuggestions
- repo: https://github.com/zsh-users/zsh-history-substring-search.git
dest: ~/.config/zsh/zsh-history-substring-search
- repo: https://github.com/zsh-users/zsh-syntax-highlighting.git
dest: ~/.config/zsh/zsh-syntax-highlighting
- repo: https://github.com/zsh-users/zsh-completions.git
dest: ~/.config/zsh/zsh-completions
loop_control:
label: '{{item.repo | regex_search("https://github.com/(.*)\.git$", "\1")}}'
- name: create directories
file:
state: directory
dest: '{{item}}'
with_items:
- ~/.local/bin
- ~/.local/share/zsh/site-functions
- name: create symbolic links
file:
state: link
src: '{{item.src}}'
dest: '{{item.dest}}'
with_items:
- src: ~/.config/zsh/zlogin
dest: ~/.zlogin
- src: ~/.config/zsh/zlogout
dest: ~/.zlogout
- src: ~/.config/zsh/zprofile
dest: ~/.zprofile
- src: ~/.config/zsh/zshenv
dest: ~/.zshenv
- src: ~/.config/zsh/zshrc
dest: ~/.zshrc
- src: ~/.config/zsh/prompt_fresh_setup
dest: ~/.local/share/zsh/site-functions/prompt_fresh_setup
- src: ~/.config/zsh/build/_build-dir
dest: ~/.local/share/zsh/site-functions/_build-dir
- src: ~/.config/zsh/sandbox/_sandbox
dest: ~/.local/share/zsh/site-functions/_sandbox
- src: ~/.config/zsh/layout/_layout
dest: ~/.local/share/zsh/site-functions/_layout
- src: ~/.config/zsh/notes/_note
dest: ~/.local/share/zsh/site-functions/_note
- src: ~/.config/zsh/cmake-uninstall
dest: ~/.local/bin/cmake-uninstall
- src: ~/.config/zsh/$
dest: ~/.local/bin/$
loop_control:
label: '{{item.dest}}'
- name: list commands with available completions
command:
zsh {{ansible_env.HOME}}/.config/zsh/list-commands-with-available-completions.zsh
changed_when: false
register: completion_commands
- name: install completions for available commands
file:
state: link
src: '~/.config/zsh/zsh-completions/src/_{{item}}'
dest: '~/.local/share/zsh/site-functions/_{{item}}'
with_items: '{{completion_commands.stdout}}'
- name: get absolute path - name: get absolute path
shell: command -v zsh shell: command -v zsh