1 Commits

Author SHA1 Message Date
1186cfe33f Update neovim role to work on Ubuntu 18.04 2022-05-03 20:08:13 +01:00
68 changed files with 141 additions and 925 deletions

View File

@@ -1,12 +0,0 @@
{
"yaml.schemas": {
"https://raw.githubusercontent.com/ansible-community/schemas/main/f/ansible.json#/$defs/playbook": [
"./*.yaml"
],
"https://raw.githubusercontent.com/ansible-community/schemas/main/f/ansible.json#/$defs/tasks": [
"./roles/*/handlers/*.yaml",
"./roles/*/tasks/*.yaml",
"./tasks.yaml"
]
}
}

View File

@@ -1,24 +0,0 @@
---
- hosts: localhost
roles:
- role: zsh
- role: neovim
- role: tmux
- role: system-info
when: '"WSL" not in ansible_kernel'
- role: ag
- role: bat
- role: fzf
- role: git
- role: tree
- role: llvm
- role: nodejs
- role: python
- role: 1password
- role: wsl
when: '"WSL" in ansible_kernel'

View File

@@ -1,3 +0,0 @@
---
- import_playbook: Unix.yaml
- import_playbook: Windows.yaml

View File

@@ -1,23 +0,0 @@
---
- hosts: windows
roles:
- role: powershell
- role: neovim
- role: system-info
- role: ag
- role: bat
- role: fzf
- role: git
- role: tree
- role: llvm
- role: nodejs
- role: python
- role: 1password
- role: autohotkey
- role: firefox
- role: obsidian
- role: windows-terminal

View File

@@ -1,7 +0,0 @@
---
- import_playbook: Unix.yaml
- hosts: localhost
roles:
- role: obsidian

View File

@@ -1,9 +1,5 @@
---
- name: install homebrew package
homebrew_cask:
name:
- 1password
- 1password-cli
name: 1password
state: latest
- include_tasks: zsh-completion.yaml

View File

@@ -1,38 +1 @@
---
- name: add apt signing key
become: true
apt_key:
url: https://downloads.1password.com/linux/keys/1password.asc
keyring: /etc/apt/trusted.gpg.d/1password-archive-keyring.gpg
state: present
- when: ansible_machine == 'x86_64'
set_fact:
arch: amd64
- assert:
that: arch is defined
fail_msg: 'Architecture not currently supported: {{ansible_machine}}'
- name: add apt repository
become: true
apt_repository:
repo: >-
deb [arch={{arch}}
signed-by=/etc/apt/trusted.gpg.d/1password-archive-keyring.gpg]
https://downloads.1password.com/linux/debian/{{arch}} stable main
- name: install gui package
when: '"WSL" not in ansible_kernel'
become: true
apt:
name: 1password
state: latest
- name: install cli package
become: true
apt:
name: 1password-cli
state: latest
- include_tasks: zsh-completion.yaml
# TODO: https://support.1password.com/install-linux/#debian-or-ubuntu

View File

@@ -1,107 +1,12 @@
---
# NOTE: The 1Password chocolatey packages are not up to date.
# GUI
- set_fact:
app_exe: '{{ansible_env.LOCALAPPDATA}}/1Password/app/8/1Password.exe'
installer_exe: '{{ansible_env.TEMP}}/1PasswordSetup-latest.exe'
- name: check if already installed
win_stat:
path: '{{app_exe}}'
register: app_stat
- name: get installed version
when: app_stat.stat.exists == True
win_command: '{{app_exe}} --version'
register: app_version
changed_when: false
- when: app_stat.stat.exists == True
set_fact:
installed_version: '{{app_version.stdout.strip()}}'
- name: download latest installer
win_get_url:
url: https://downloads.1password.com/win/1PasswordSetup-latest.exe
dest: '{{installer_exe}}'
- name: get installer version
win_shell: |
(Get-ItemProperty {{installer_exe}}).VersionInfo.ProductVersion
register: installer_product_version
changed_when: false
# FIXME: The [5:] is to account for a mystery "\e[6 q" prefix, not sure if this
# is consistent across machines or some other oddity.
- set_fact:
installer_version: '{{installer_product_version.stdout.strip()[5:]}}'
- name: run installer
when: installed_version is not defined or installed_version != installer_version
win_command: '{{installer_exe}}'
- name: install chocolatey package
win_chocolatey:
name:
- 1password
state: latest
- name: create start menu shortcut
win_shortcut:
src: '{{app_exe}}'
src: '{{ansible_env.LOCALAPPDATA}}/1Password/app/7/1Password.exe'
dest: '{{ansible_env.ProgramData}}/Microsoft/Windows/Start Menu/Programs/1Password.lnk'
icon: '{{app_exe}},0'
# CLI
- set_fact:
cli_dir: '{{ansible_env.LOCALAPPDATA}}\1Password\cli'
cli_zip: '{{ansible_env.TEMP}}/op_windows_amd64.zip'
- set_fact:
cli_exe: '{{cli_dir}}\op.exe'
- name: check if op already installed
win_stat:
path: '{{cli_exe}}'
register: cli_stat
- name: get installed op version
when: cli_stat.stat.exists == True
win_command: '{{cli_exe}} --version'
register: cli_version
changed_when: false
- when: cli_stat.stat.exists == True
set_fact:
cli_installed_version: '{{cli_version.stdout.strip()}}'
- name: get list of op releases
win_uri:
url: https://raw.githubusercontent.com/kbenzie/op-release-scraper/main/op-releases.json
return_content: true
register: releases
- set_fact:
latest: '{{releases.json[0]}}'
- name: download latest op zip archive
when: cli_installed_version is not defined or cli_installed_version != latest.version
win_get_url:
url: '{{latest.downloads.Windows.amd64}}'
dest: '{{cli_zip}}'
- name: unzip op zip archive
when: cli_installed_version is not defined or cli_installed_version != latest.version
win_unzip:
src: '{{cli_zip}}'
dest: '{{cli_dir}}'
- name: add op install directory to user PATH
win_path:
scope: user
name: Path
elements: '{{cli_dir}}'
- name: get op powershell completion script
win_command: op completion powershell
register: powershell_completion_script
changed_when: false
- name: create op powershell completion file
win_copy:
content: '{{powershell_completion_script.stdout}}'
dest: '{{cli_dir}}/opProfile.psm1'
icon: '{{ansible_env.LOCALAPPDATA}}/1Password/app/7/1Password.exe,0'

View File

@@ -1,10 +0,0 @@
---
- name: get op zsh completion script
command: op completion zsh
register: zsh_completion_script
changed_when: false
- name: create op zsh completion file
copy:
content: '{{zsh_completion_script.stdout}}'
dest: ~/.local/share/zsh/site-functions/_op

View File

@@ -1,5 +0,0 @@
---
- name: install homebrew package
apt:
name: the_silver_searcher
state: latest

View File

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

View File

@@ -1,5 +0,0 @@
---
- name: install chocolatey package
win_chocolatey:
name: ag
state: latest

View File

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

View File

@@ -7,27 +7,8 @@
- name: clone config repo
win_git:
repo: git@code.infektor.net:config/AutoHotKey.git
dest: '{{autohotkey_repo_dir}}'
dest: '{{ansible_env.LOCALAPPDATA}}/AutoHotKey'
branch: master
- name: create scheduled task
win_scheduled_task:
path: Benie
name: macOS.ahk
state: present
enable: true
triggers:
- type: logon
enabled: true
- type: registration
enabled: true
actions:
- path: '{{autohotkey_repo_dir}}/macOS.ahk'
disallow_start_if_on_batteries: false
stop_if_going_on_batteries: false
execution_time_limit: PT0S
logon_type: interactive_token
multiple_instances: 3
run_level: highest
start_when_available: true
wake_to_run: false
# TODO: - name: create scheduled task
# win_scheduled_task:

View File

@@ -1,2 +0,0 @@
---
autohotkey_repo_dir: '{{ansible_env.LOCALAPPDATA}}/AutoHotKey'

View File

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

View File

@@ -1,13 +0,0 @@
---
- set_fact:
use_github: '{{
ansible_distribution == "Ubuntu" and
ansible_distribution_version == "18.04"
}}'
- debug: msg={{use_github}}
- when: use_github
include_tasks: deb.yaml
- when: not use_github
include_tasks: apt.yaml

View File

@@ -1,5 +0,0 @@
---
- name: install chocolatey package
win_chocolatey:
name: Bat
state: latest

View File

@@ -1,13 +0,0 @@
---
- name: install apt package
become: true
apt:
name: bat
state: latest
- name: update bat alternative
become: true
alternatives:
name: bat
path: /usr/bin/batcat
link: /usr/local/bin/bat

View File

@@ -1,65 +0,0 @@
---
- name: get latest github release
uri:
url: https://api.github.com/repos/sharkdp/bat/releases/latest
register: latest
- set_fact:
latest_version: '{{latest.json.tag_name[1:]}}'
bat_exe: '/usr/bin/bat'
- name: check if already installed
stat:
path: '{{bat_exe}}'
register: bat_stat
- name: get installed version
when: bat_stat.stat.exists == True
command: '{{bat_exe}} --version'
register: bat_version
changed_when: false
- when: bat_stat.stat.exists == True
set_fact:
installed_version:
'{{bat_version.stdout.strip() | regex_replace("^.*(\d+\.\d+\.\d+).*$", "\1")}}'
- when: ansible_machine == "x86_64"
set_fact:
arch: amd64
- assert:
that: arch is defined
fail_msg: 'Architecture not currently supported: {{ansible_machine}}'
- set_fact:
assets: '{{latest.json.assets}}'
asset_query: '[?contains(name, `bat-musl_`)] | [?contains(name, `amd64.deb`)] | [0]'
pkg_dir: '{{ansible_env.HOME}}/.local/pkg/bat'
- set_fact:
asset: '{{assets | to_json | from_json | json_query(asset_query)}}'
bat_deb: '{{pkg_dir}}/bat.deb'
- name: create directory for deb file download
file:
state: directory
path: '{{pkg_dir}}'
- name: download .deb file
when: installed_version is not defined or installed_version != latest_version
get_url:
url: '{{asset.browser_download_url}}'
dest: '{{bat_deb}}'
- name: install .deb file
when: installed_version is not defined or installed_version != latest_version
become: true
apt:
deb: '{{bat_deb}}'
- name: remove .deb file
when: installed_version is not defined or installed_version != latest_version
file:
state: absent
path: '{{bat_deb}}'
changed_when: false

View File

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

View File

@@ -1,100 +0,0 @@
#compdef distrobox
_distrobox() {
local context curcontext="$curcontext" state line ret=1
typeset -A opt_args
_arguments -C \
'(-h --help)'{-h,--help}'[show help]' \
'(-V --version)'{-V,--version}'[show version]' \
'1: :->command' \
'*:: :->arguments'
case $state in;
(command)
local commands;
commands=(
'create:create the distrobox'
'enter:enter the distrobox'
'export:application and service exporting'
'list:list containers'
'rm:remove containers'
'stop:stop containers'
)
_describe -t commands 'distrobox command' commands "$@" \
&& ret=0 ;;
(arguments)
case $line[1] in
(create)
_arguments \
'(-h --help)'{-h,--help}'[show this message]' \
'(-v --verbose)'{-v,--verbose}'[show more verbosity]' \
'(-V --version)'{-V,--version}'[show version]' \
'(-i --image)'{-i,--image}'[image to use for the container]: :' \
'(-n --name)'{-n,--name}'[name for the distrobox]: :' \
'(-H --home)'{-H,--home}'[select a custom HOME directory for the container]: :' \
'*--volume[additional volumes to add to the container]: :_directories' \
'(-a --additional-flags)'{-a,--additional-flags}'[additional flags to pass to the container manager command]: :' \
'(-I --init)'{-I,--init}'[use init system (like systemd) inside the container]: :' \
'(-d --dry-run)'{-d,--dry-run}'[only print the container manager command generated]' \
&& ret=0 ;;
(enter)
_arguments -S \
'(-h --help)'{-h,--help}'[show this message]' \
'(-v --verbose)'{-v,--verbose}'[show more verbosity]' \
'(-V --version)'{-V,--version}'[show version]' \
'(-n --name)'{-n,--name}'[name for the distrobox]: :' \
'(-T --no-tty)'{-T,--no-tty}'[do not instantiate a tty]' \
'(-a --additional-flags)'{-a,--additional-flags}'[additional flags to pass to the container manager command]: :' \
'(-d --dry-run)'{-d,--dry-run}'[only print the container manager command generated]' \
'(-e --)'{-e,--}'[end arguments execute the rest as command to execute at login]:*:' \
&& ret=0 ;;
(export)
_arguments -S \
'(-h --help)'{-h,--help}'[show this message]' \
'(-v --verbose)'{-v,--verbose}'[show more verbosity]' \
'(-V --version)'{-V,--version}'[show version]' \
'(-a --app)'{-a,--app}'[name of the application to export]: :' \
'(-b --bin)'{-b,--bin}'[absolute path of the binary to export]: :' \
'(-s --service)'{-s,--service}'[name of the service to export]: :' \
'(-d --delete)'{-d,--delete}'[delete exported application or service]: :' \
'(-el --export-label)'{-el,--export-label}'[label to add to exported application name]: :' \
'(-ep --export-path)'{-ep,--export-path}'[path where to export the binary]: :' \
'(-ef --extra-flags)'{-ef,--export-flags}'[extra flags to add to the command]: :' \
'(-S --sudo)'{-S,--sudo}'[specify if the exported item should be run as sudo]' \
&& ret=0 ;;
(list)
_arguments -S \
'(-h --help)'{-h,--help}'[show this message]' \
'(-v --verbose)'{-v,--verbose}'[show more verbosity]' \
'(-V --version)'{-V,--version}'[show version]' \
&& ret=0 ;;
(rm)
_arguments -S \
'(-h --help)'{-h,--help}'[show this message]' \
'(-v --verbose)'{-v,--verbose}'[show more verbosity]' \
'(-V --version)'{-V,--version}'[show version]' \
'(-n --name)'{-n,--name}'[name for the distrobox]: :' \
'(-f --force)'{-f,--force}'[force deletion]' \
&& ret=0 ;;
(stop)
_arguments -S \
'(-h --help)'{-h,--help}'[show this message]' \
'(-v --verbose)'{-v,--verbose}'[show more verbosity]' \
'(-V --version)'{-V,--version}'[show version]' \
'(-n --name)'{-n,--name}'[name for the distrobox]: :' \
'(-Y --yes)'{-Y,--yes}'[non-interactive, stop without asking]' \
&& ret=0 ;;
esac ;;
esac
return $ret
}
_distrobox "$@"

View File

@@ -1,15 +0,0 @@
---
- name: install apt package
when: ansible_distribution == "Debian" and
ansible_distribution_version == "unstable"
become: true
apt:
name: distrobox
state: latest
- name: install distrobox zsh completions
when: ansible_distribution == "Debian" and
ansible_distribution_version == "unstable"
copy:
src: _distrobox
dest: '{{ansible_env.HOME}}/.local/share/zsh/site-functions/_distrobox'

View File

@@ -1,14 +0,0 @@
---
- name: install chocolatey package
win_chocolatey:
name: firefox
package_params: >-
/l:en-GB
/NoDesktopShortcut
/NoAutoUpdate
state: latest
# - TODO: create extensions directory
# file:
# path: '{{ansible_env.ProgramFiles}}/Mozilla Firefox/distribution/extensions'
# state: directory

View File

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

View File

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

View File

@@ -1,13 +0,0 @@
---
- name: clone fzf repo
git:
repo: https://github.com/junegunn/fzf.git
dest: ~/.local/src/fzf
notify: install fzf binaries
- meta: flush_handlers
- name: create symbolic links
file:
state: link
src: ~/.local/src/fzf/bin/fzf
dest: ~/.local/bin/fzf

View File

@@ -1,12 +0,0 @@
---
- name: install apt package
when: ansible_distribution == "Debian" and
ansible_distribution_version == "unstable"
become: true
apt:
name: fzf
state: latest
- include_tasks: Debian-old.yaml
when: not (ansible_distribution == "Debian" and
ansible_distribution_version == "unstable")

View File

@@ -1,5 +0,0 @@
---
- name: install chocolatey package
win_chocolatey:
name: fzf
state: latest

View File

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

View File

@@ -1,15 +1,4 @@
---
- name: install chocolatey package
win_chocolatey:
name: git
package_params: >-
/GitAndUnixToolsOnPath
/NoShellIntegration
/NoGuiHereIntegration
/NoCredentialManager
/NoOpenSSH
state: latest
- name: clone config repos
win_git:
repo: '{{item.repo}}'
@@ -17,7 +6,4 @@
version: master
with_items: '{{git_config_repos}}'
# - TODO: install pip packages
# win_pip:
# name: '{{git_pip_packages}}'
# state: latest
# TODO: - name: install pip packages

View File

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

View File

@@ -1,66 +0,0 @@
---
- name: get latest stable github release
uri:
url: https://api.github.com/repos/llvm/llvm-project/releases/latest
register: llvm_latest
- set_fact:
llvm_major_version:
'{{llvm_latest.json.tag_name[8:llvm_latest.json.tag_name.find(".")]}}'
- set_fact:
llvm_apt_repo_url:
'http://apt.llvm.org/{{ansible_distribution_release}}/'
llvm_apt_category:
'llvm-toolchain-{{ansible_distribution_release}}-{{llvm_major_version}}'
- name: add upstream deb repository
become: true
apt_repository:
repo: 'deb {{llvm_apt_repo_url}} {{llvm_apt_category}} main'
state: present
filename: llvm
update_cache: false
- name: add upstream deb-src repository
become: true
apt_repository:
repo: 'deb-src {{llvm_apt_repo_url}} {{llvm_apt_category}} main'
state: present
filename: llvm
update_cache: false
- name: add apt repository key
become: true
apt_key:
url: https://apt.llvm.org/llvm-snapshot.gpg.key
id: 6084F3CF814B57C1CF12EFD515CF4D18AF4F7421
state: present
- name: update apt cache
become: true
apt:
update_cache: true
- name: install apt packages
become: true
apt:
name:
- clang-{{llvm_major_version}}
- clang-format-{{llvm_major_version}}
- clang-tidy-{{llvm_major_version}}
- clang-tools-{{llvm_major_version}}
- clangd-{{llvm_major_version}}
- llvm-{{llvm_major_version}}
state: latest
install_recommends: true
- name: update alternatives
become: true
alternatives:
link: '/usr/bin/{{item}}'
name: '{{item}}'
path: '/usr/bin/{{item}}-{{llvm_major_version}}'
priority: '{{llvm_major_version}}0'
with_items:
- clang-format
- clangd

View File

@@ -1,5 +0,0 @@
---
- name: install chocolatey package
win_chocolatey:
name: llvm
state: latest

View File

@@ -1,5 +0,0 @@
---
- include_tasks: '{{ansible_os_family}}.yaml'
when: ansible_os_family in ['Darwin', 'Windows']
- include_tasks: '{{ansible_distribution}}.yaml'
when: ansible_os_family not in ['Darwin', 'Windows']

View File

@@ -1,7 +1,11 @@
---
- name: install homebrew packages
homebrew:
name: neovim
name:
- neovim
- llvm
- node
- the_silver_searcher
state: latest
- include_tasks: unix.yaml

View File

@@ -1,13 +1,11 @@
---
- name: install apt packages
- name: install Debian-unstable apt packages
become: true
apt:
name:
- clang
- neovim
- clang-format
- clang-tidy
- clang-tools
- clangd
- llvm
- silversearcher-ag
state: latest
install_recommends: true

View File

@@ -1,8 +1,31 @@
---
- name: install apt package
become: true
apt:
name: neovim
state: latest
- include_tasks: '{{ansible_distribution}}-{{ansible_distribution_version}}.yaml'
- include_tasks: 'unix.yaml'
- include_tasks: unix.yaml
- name: nodejs get json containing latest version
uri:
url: https://nodejs.org/dist/index.json
register: latest
- name: nodejs create directory for downloaded package
file:
state: directory
dest: ~/.local/src
- name: nodejs download latest package
get_url:
url: 'https://nodejs.org/dist/{{latest.json[0].version}}/node-{{latest.json[0].version}}-linux-x64.tar.gz'
dest: ~/.local/src/node.tar.gz
- name: nodejs extract downloaded package
unarchive:
src: ~/.local/src/node.tar.gz
dest: ~/.local/src
remote_src: true
- name: nodejs create symlink links
file:
state: link
src: '~/.local/src/node-{{latest.json[0].version}}-linux-x64/bin/{{item}}'
dest: '~/.local/bin/{{item}}'
with_items: [corepack, node, npm, npx]

View File

@@ -0,0 +1,34 @@
---
- name: get releases json from github
uri:
url: https://api.github.com/repos/neovim/neovim/releases
register: releases
- name: query the latest stable release
set_fact:
stable: '{{releases.json | json_query("[?tag_name==`stable`]")}}'
- name: query the nvim-linux64.deb.sha256sum asset
set_fact:
sha_asset: '{{stable[0].assets | json_query("[?name==`nvim-linux64.deb.sha256sum`]")}}'
- name: query the nvim-linux64.deb asset
set_fact:
deb_asset: '{{stable[0].assets | json_query("[?name==`nvim-linux64.deb`]")}}'
- name: create directory for downloads
file:
state: directory
path: ~/.cache/nvim/deb
- name: download nvim-linux64.deb with checksum
get_url:
url: '{{deb_asset[0].browser_download_url}}'
dest: ~/.cache/nvim/deb/nvim-linux64.deb
checksum: 'sha256:{{sha_asset[0].browser_download_url}}'
- name: install nvim-linux64.deb package
become: true
apt:
deb: ~/.cache/nvim/deb/nvim-linux64.deb
# TODO: clangd, clang-format, clang-tidy
- name: install Ubuntu-18.04 apt packages
become: true
apt:
name:
- silversearcher-ag

View File

@@ -1,7 +1,11 @@
---
- name: install chocolatey packages
- name: install choco packages
win_chocolatey:
name: neovim
name:
- neovim
- ag
- llvm
- nodejs
state: latest
- name: clone config repo
@@ -10,16 +14,15 @@
dest: '{{ansible_env.LOCALAPPDATA}}/nvim'
version: master
# - TODO: neovim set repo email
# win_git_config:
# - TODO: neovim install pip packages
# win_pip:
# name: '{{neovim_pip_packages}}'
# state: latest
# TODO: - name: neovim set repo email
# win_git_config:
# TODO: - name: neovim install pip packages
# win_pip:
# name: '{{neovim_pip_packages}}'
# state: latest
- name: create nvim start menu shortcut
win_shortcut:
src: '{{ansible_env.ChocolateyToolsLocation}}/neovim/nvim-win64/bin/nvim-qt.exe'
dest: '{{ansible_env.ProgramData}}/Microsoft/Windows/Start Menu/Programs/nvim-qt.lnk'
dest: '{{ansible_env.ProgramData}}/Microsoft/Windows/Start Menu/Programs/nvim.lnk'
icon: '{{ansible_env.ChocolateyToolsLocation}}/neovim/nvim-win64/bin/nvim-qt.exe,0'
directory: '{{ansible_env.USERPROFILE}}'

View File

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

View File

@@ -1,28 +0,0 @@
---
- name: get json containing latest version
uri:
url: https://nodejs.org/dist/index.json
register: latest
- name: create directory for downloaded package
file:
state: directory
dest: ~/.local/src/node
- name: download latest package
get_url:
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
- name: extract downloaded package
unarchive:
src: ~/.local/src/node/node.tar.gz
dest: ~/.local/src/node
remote_src: true
- name: create symbolic links
file:
state: link
src: '~/.local/src/node/node-{{latest.json[0].version}}-linux-x64/bin/{{item}}'
dest: '~/.local/bin/{{item}}'
with_items: [corepack, node, npm, npx]

View File

@@ -1,5 +0,0 @@
---
- name: install chocolatey package
win_chocolatey:
name: nodejs
state: latest

View File

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

View File

@@ -1,11 +0,0 @@
---
- name: install homebrew package
homebrew:
name: obsidian
state: latest
- name: clone notes repository
git:
repo: git@github.com:kbenzie/notes.git
dest: '{{ansible_env.HOME}}/Documents/Notes'
branch: main

View File

@@ -1,11 +0,0 @@
---
- name: install chocolatey package
win_chocolatey:
name: obsidian
state: latest
- name: clone notes repository
win_git:
repo: git@github.com:kbenzie/notes.git
dest: '{{ansible_env.USERPROFILE}}/Documents/Notes'
branch: main

View File

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

View File

@@ -7,7 +7,7 @@
- name: install chocolatey package
win_chocolatey:
name: Cmder
name: Cmder
state: latest
- name: install PsReadline module

View File

@@ -1,10 +1,8 @@
---
- name: install apt packages
become: true
apt:
name:
- python-is-python3
- python3
- python3-pip
- python3-venv
- python3-virtualenv
- python-is-python3

View File

@@ -1,4 +0,0 @@
---
# TODO:
# cp $script_dir/system-info.plist ~/Library/LaunchAgents/system-info.plist
# launchctl load -w ~/Library/LaunchAgents/system-info.plist

View File

@@ -1,25 +0,0 @@
---
- name: install apt packages
become: true
apt:
name:
- gawk
- sysstat
state: latest
- name: create systemd user unit directory
file:
state: directory
dest: ~/.config/systemd/user
- name: install system-info systemd unit
copy:
src: ~/.config/tmux/system-info/system-info.service
dest: ~/.config/systemd/user/system-info.service
- name: enable system-info service
systemd:
name: system-info
scope: user
enabled: true
state: started

View File

@@ -1,58 +0,0 @@
---
- name: install chocolatey packages
win_chocolatey:
name: openhardwaremonitor
state: latest
# - TODO: update config file
# C:\ProgramData\chocolatey\lib\OpenHardwareMonitor\tools\OpenHardwareMonitor\OpenHardwareMonitor.config
- name: create OpenHardwareMonitor scheduled task
win_scheduled_task:
path: Benie
name: OpenHardwareMonitor
state: present
enable: true
triggers:
- type: logon
enabled: true
- type: registration
enabled: true
actions:
- path: '{{openhardwaremonitor_exe}}'
working_directory: '{{openhardwaremonitor_install_dir}}'
disallow_start_if_on_batteries: false
stop_if_going_on_batteries: false
execution_time_limit: PT0S
logon_type: interactive_token
multiple_instances: 3
run_level: highest
start_when_available: true
wake_to_run: false
- name: create system-info-WSL.sh scheduled task
win_scheduled_task:
path: Benie
name: system-info-WSL.sh
state: present
enable: true
triggers:
- type: logon
enabled: true
- type: registration
enabled: true
actions:
- path: '{{wsl_exe}}'
arguments: '-d Debian -e /home/benie/.config/tmux/system-info/system-info-WSL.sh'
disallow_start_if_on_batteries: false
stop_if_going_on_batteries: false
execution_time_limit: PT0S
logon_type: password
username: '{{ansible_user}}'
password: '{{ansible_password}}'
multiple_instances: 3
run_level: limited
start_when_available: true
wake_to_run: false
# - TODO: configure firewall

View File

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

View File

@@ -1,5 +0,0 @@
---
openhardwaremonitor_exe: 'OpenHardwareMonitor.exe'
openhardwaremonitor_install_dir: '{{ansible_env.ProgramData}}\chocolatey\lib\OpenHardwareMonitor\tools\OpenHardwareMonitor'
wsl_exe: '{{ansible_env.SystemRoot}}/System32/wsl.exe'

View File

@@ -1,5 +0,0 @@
---
- name: install homebrew pacakge
homebrew:
name: tree
state: latest

View File

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

View File

@@ -1,5 +0,0 @@
---
- name: install chocolatey package
win_chocolatey:
name: tree
state: latest

View File

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

View File

@@ -1,31 +0,0 @@
---
- name: get list of existing actions
set_fact:
actions: '{{settings.actions}}'
action_keys: '{{settings.actions | json_query("[].keys")}}'
- name: add next tab action key mapping
when: '"alt+shift+]" not in action_keys'
set_fact:
actions: >-
{{
actions + [{
"command": {"action": "nextTab", "tabSwitcherMode": "disabled"},
"keys": "alt+shift+]"
}]
}}
- name: add previous tab action key mapping
when: '"alt+shift+[" not in action_keys'
set_fact:
actions: >-
{{
actions + [{
"command": {"action": "prevTab", "tabSwitcherMode": "disabled"},
"keys": "alt+shift+["
}]
}}
- name: set actions in settings
set_fact:
settings: '{{settings | combine({"actions": actions})}}'

View File

@@ -1,17 +0,0 @@
---
- name: read settings.json file
slurp:
src: '{{windows_terminal_settings_json}}'
register: slurped_settings
- name: decode settings into fact
set_fact:
settings: '{{slurped_settings.content | b64decode | from_json}}'
- import_tasks: actions.yaml
# TODO: - import_tasks: profiles.yaml
- name: write settings.json file
copy:
content: '{{settings | to_nice_json}}'
dest: '{{windows_terminal_settings_json}}'

View File

@@ -1,5 +0,0 @@
---
# TODO: defaults
# TODO: modify powershell commandline
# TODO: modify command prompt commandline
# TODO: modify debian icon

View File

@@ -1,5 +0,0 @@
---
windows_terminal_local_app_data:
'{{ansible_env.LOCALAPPDATA}}/Packages/Microsoft.WindowsTerminal_8wekyb3d8bbwe'
windows_terminal_settings_json:
'{{windows_terminal_local_app_data}}/LocalState/settings.json'

View File

@@ -1,38 +1,17 @@
---
- name: install apt packages
become: true
apt:
name: sshpass
state: latest
- name: create /etc/ansible
become: true
file:
dest: /etc/ansible
state: directory
- name: create hosts file
become: true
template:
src: templates/hosts.j2
dest: /etc/ansible/hosts
- name: create external directory
file:
dest: external
state: directory
- name: clone ansible win_git module
git:
repo: https://github.com/tivrobo/ansible-win_git.git
dest: external/ansible-win_git
version: master
- name: create ansible modules directory
file:
dest: ~/.ansible/plugins/modules
state: directory
- name: copy win_git files to ansible modules directory
copy:
src: '~/.config/local/external/ansible-win_git/{{item}}'

View File

@@ -1,9 +0,0 @@
---
all:
children:
windows:
hosts:
{{ansible_hostname}}.local:
ansible_user: {{ansible_user_id}}
ansible_connection: ssh
ansible_shell_type: cmd

View File

@@ -1,4 +1,4 @@
---
- name: install fzf binaries
command:
cmd: ~/.local/src/fzf/install --bin
cmd: ~/.config/zsh/fzf/install --bin

View File

@@ -21,6 +21,13 @@
- repo: https://github.com/zsh-users/zsh-completions.git
dest: ~/.config/zsh/zsh-completions
- name: clone fzf repo
git:
repo: https://github.com/junegunn/fzf.git
dest: ~/.config/zsh/fzf
notify: install fzf binaries
- meta: flush_handlers
- name: create directories
file:
state: directory
@@ -55,6 +62,10 @@
dest: ~/.local/share/zsh/site-functions/_layout
- src: ~/.config/zsh/notes/_note
dest: ~/.local/share/zsh/site-functions/_note
- src: ~/.config/zsh/fzf/bin/fzf
dest: ~/.local/bin/fzf
- src: ~/.config/zsh/fzf/bin/fzf-tmux
dest: ~/.local/bin/fzf-tmux
- src: ~/.config/zsh/cmake-uninstall
dest: ~/.local/bin/cmake-uninstall
- src: ~/.config/zsh/$
@@ -67,6 +78,6 @@
- name: set default shell
user:
name: '{{ansible_user_id}}'
name: '{{lookup("env", "USER")}}'
shell: '{{zsh.stdout}}'
become: true

9
unix.yaml Normal file
View File

@@ -0,0 +1,9 @@
---
- hosts: localhost
roles:
- role: zsh
- role: tmux
- role: neovim
- role: git
- role: python

20
windows.yaml Normal file
View File

@@ -0,0 +1,20 @@
---
- import_playbook: unix.yaml
- hosts: localhost
# FIXME: Roles which depend on the win_git module can't be in the same
# playbook on the first run because the wsl role hasn't added the win_git
# module to the modules path yet.
roles:
- role: wsl
- hosts: windows
roles:
- role: powershell
- role: neovim
- role: git
- role: python
- role: autohotkey
- role: 1password