Compare commits

..

24 Commits

Author SHA1 Message Date
5922d989e0 rg: Ignore .git 2024-04-13 17:30:07 +02:00
07884738b8 git: Always use same mail for repo 2024-04-13 17:30:07 +02:00
0b237bd9bc pass: Fix init script 2024-04-13 17:30:07 +02:00
d53a3ab0c0 Do system update after pacman configuration 2024-04-13 17:30:07 +02:00
6bdc001e53 packages: Update list 2024-04-13 17:30:07 +02:00
996a758670 packagers: Install keepassxc 2024-04-13 17:30:07 +02:00
1318431476 packages: Install helix 2024-04-13 17:30:07 +02:00
db422d2cdb Remove old ubuntu 18.04 workaround 2024-04-13 17:30:07 +02:00
a418654fb8 zsh: Add fzf config 2024-04-13 17:30:07 +02:00
f9757b58aa Fix template deployment 2024-04-13 17:30:07 +02:00
9cf05ac5fe Remove ubuntu support 2024-04-13 17:30:07 +02:00
206015074a Update machine neptune 2024-04-10 16:01:37 +02:00
0ee36e4373 packages: Install chromium 2024-04-10 16:01:37 +02:00
143c41e100 packages: Install fzf 2024-04-10 16:01:37 +02:00
a71f756b2d packages: Install bind 2024-04-10 16:01:37 +02:00
e9dfea94c3 packages: Install kubectl 2024-04-10 16:01:37 +02:00
2751beafc1 packages: Remove dia 2024-04-10 16:01:37 +02:00
fcaa7d40be ripgrep: Search hidden files by default 2024-04-10 16:01:37 +02:00
7298ed104f zsh: Fix EDITOR 2024-04-10 16:01:37 +02:00
1501d256b8 i3status-rust: Update ar config 2024-04-10 16:01:37 +02:00
f2cb3de845 i3status-rust: Update icons 2024-04-10 16:01:37 +02:00
b8db8bbfb7 helix: Update config 2024-04-10 16:01:37 +02:00
8e87be2ecf Remove machine mars 2024-04-10 16:01:37 +02:00
029d1f3e0a Remove element 2024-04-10 14:39:08 +02:00
18 changed files with 234 additions and 1035 deletions

View File

@@ -67,6 +67,5 @@ environment:
MACHINE_HAS_NEXTCLOUD: "true" MACHINE_HAS_NEXTCLOUD: "true"
MACHINE_HAS_STEAM: "true" MACHINE_HAS_STEAM: "true"
MACHINE_HAS_RESTIC_BACKUP: "false" MACHINE_HAS_RESTIC_BACKUP: "false"
MACHINE_HAS_ELEMENT: "true"
MACHINE_RESOLUTION_X: "2560" MACHINE_RESOLUTION_X: "2560"
MACHINE_RESOLUTION_Y: "1440" MACHINE_RESOLUTION_Y: "1440"

View File

@@ -1,94 +0,0 @@
font_size_1: 12
font_size_2: 9
i3bar_icon_padding: ""
users:
- name: hannes-work
group: hannes-work
vt: 1
firefox_profiles:
default:
extensions:
- ublock-origin
- privacy-badger17
- tree-style-tab
- i-dont-care-about-cookies
manage_css: true
meet:
extensions:
- ublock-origin
manage_css: false
mail: hannes.koerber@tradebyte.com
git_gpg_sign: false
ssh_agent: true
gpg_agent: false
gpg_agent_for_ssh: false
environment:
MACHINE_HAS_NEXTCLOUD: "false"
MACHINE_HAS_RESTIC_BACKUP: "true"
MACHINE_HAS_ELEMENT: "false"
MACHINE_HAS_KEEPASSX: "true"
repositories: []
- name: hannes-private
group: hannes-private
vt: 2
firefox_profiles:
default:
extensions:
- ublock-origin
- passff
- privacy-badger17
- tree-style-tab
- i-dont-care-about-cookies
- floccus
manage_css: true
mail: hannes@hkoerber.de
git_gpg_sign: false
ssh_agent: false
gpg_agent: true
gpg_agent_for_ssh: true
gpg_key:
email: hannes@hkoerber.de
id: "0xB5C002530C6A2053"
fingerprint: "973AE48D71B76735C4712B5BB5C002530C6A2053"
enable_passwordstore: true
environment:
MACHINE_HAS_NEXTCLOUD: "true"
MACHINE_HAS_RESTIC_BACKUP: "false"
MACHINE_HAS_ELEMENT: "true"
MACHINE_HAS_KEEPASSX: "false"
has_yubikey: true
repositories:
- personal_projects
screen:
1: DP-1-1
2: DP-1-1
3: DP-1-2
4: DP-1-2
5: DP-1-2
6: DP-1-2
7: eDP-1
8: eDP-1
9: eDP-1
0: eDP-1
workspace:
1: ""
2: ""
3: " local"
4: " remote"
7: ""
8: ""
9: ""
10: ""
screencfgs:
- name: three-screens
key: F3
environment:
MACHINE_TYPE: "laptop"
MACHINE_RESOLUTION_X: "1920"
MACHINE_RESOLUTION_Y: "1080"

View File

@@ -1,5 +1,5 @@
font_size_1: 12 font_size_1: 12
font_size_2: 9 font_size_2: 12
i3bar_icon_padding: "" i3bar_icon_padding: ""
@@ -19,20 +19,16 @@ users:
extensions: extensions:
- ublock-origin - ublock-origin
manage_css: false manage_css: false
mail: hannes.koerber@tradebyte.com mail: h.koerber@clipmyhorse.tv
git_gpg_sign: false git_gpg_sign: false
ssh_agent: true ssh_agent: true
gpg_agent: false gpg_agent: false
gpg_agent_for_ssh: false gpg_agent_for_ssh: false
environment: environment:
MACHINE_HAS_NEXTCLOUD: "false" MACHINE_HAS_NEXTCLOUD: "false"
MACHINE_HAS_RESTIC_BACKUP: "true" MACHINE_HAS_RESTIC_BACKUP: "false"
MACHINE_HAS_ELEMENT: "false" MACHINE_HAS_KEEPASSX: "false"
MACHINE_HAS_KEEPASSX: "true"
repositories: [] repositories: []
overrides:
terraform_version: 1.1.3
terraform_check_updates: false
- name: hannes-private - name: hannes-private
group: hannes-private group: hannes-private
@@ -60,7 +56,6 @@ users:
environment: environment:
MACHINE_HAS_NEXTCLOUD: "true" MACHINE_HAS_NEXTCLOUD: "true"
MACHINE_HAS_RESTIC_BACKUP: "false" MACHINE_HAS_RESTIC_BACKUP: "false"
MACHINE_HAS_ELEMENT: "true"
MACHINE_HAS_KEEPASSX: "false" MACHINE_HAS_KEEPASSX: "false"
repositories: repositories:
- personal_projects - personal_projects
@@ -84,7 +79,7 @@ workspace:
4: " remote" 4: " remote"
7: "" 7: ""
8: "" 8: ""
9: "" 9: ""
10: "" 10: ""
screencfgs: screencfgs:
@@ -94,4 +89,4 @@ screencfgs:
environment: environment:
MACHINE_TYPE: "laptop" MACHINE_TYPE: "laptop"
MACHINE_RESOLUTION_X: "1920" MACHINE_RESOLUTION_X: "1920"
MACHINE_RESOLUTION_Y: "1080" MACHINE_RESOLUTION_Y: "1200"

View File

@@ -122,3 +122,5 @@
defaultBranch = master defaultBranch = master
[safe] [safe]
directory = /var/lib/dotfiles directory = /var/lib/dotfiles
[includeIf "gitdir:/var/lib/dotfiles"]
path = /var/lib/dotfiles/gitcfg

3
gitcfg Normal file
View File

@@ -0,0 +1,3 @@
[user]
email = hannes@hkoerber.de
name = Hannes Körber

View File

@@ -34,12 +34,7 @@ fixed-list-mode
no-mangle-dos-filenames no-mangle-dos-filenames
require-cross-certification require-cross-certification
{% if not (distro == 'ubuntu' and ansible_distribution_version == '18.04') -%}
{# looks like the gpg version in that ubuntu release it too old and does not
{# contain the setting #}
# do not cache keys for symmetric encryption # do not cache keys for symmetric encryption
no-symkey-cache no-symkey-cache
{% endif -%}
keyserver-options no-honor-keyserver-url no-auto-key-retrieve include-revoked keyserver-options no-honor-keyserver-url no-auto-key-retrieve include-revoked

View File

@@ -2,7 +2,7 @@ theme = "monokai"
[editor] [editor]
idle-timeout = 0 idle-timeout = 0
completion-trigger-len = 1 completion-trigger-len = 2
[editor.statusline] [editor.statusline]
left = [ left = [
@@ -33,3 +33,12 @@ display-inlay-hints = true
[editor.cursor-shape] [editor.cursor-shape]
insert = "bar" insert = "bar"
[editor.file-picker]
hidden = false
[editor.indent-guides]
render = true
[editor.soft-wrap]
enable = true

View File

@@ -6,6 +6,8 @@ icons = "awesome"
[icons.overrides] [icons.overrides]
microphone = "" microphone = ""
volume = "" volume = ""
bat = "\uf240"
music = "\uf1bc"
[theme] [theme]
theme = "native" theme = "native"
@@ -65,9 +67,8 @@ interval = 1
[[block]] [[block]]
block = "battery" block = "battery"
interval = 10 interval = 10
format = " $percentage $time " format = " $icon $percentage $time "
missing_format = "" missing_format = ""
if_command = "test -e /sys/class/power_supply/BAT0"
[[block]] [[block]]
block = "toggle" block = "toggle"

View File

@@ -50,13 +50,7 @@ sudowrap() {
cache_updated=0 cache_updated=0
_install() { _install() {
_package="$1" ; shift _package="$1" ; shift
if [[ $NAME == "Ubuntu" ]] ; then if [[ $NAME == "Arch Linux" ]] ; then
if ! (( cache_updated )) ; then
sudowrap apt-get update
cache_updated=1
fi
sudowrap apt-get install --assume-yes "${_package}"
elif [[ $NAME == "Arch Linux" ]] ; then
sudowrap pacman -S --noconfirm "${_package}" sudowrap pacman -S --noconfirm "${_package}"
else else
2>&1 printf "Unsupported distro $NAME, exiting" 2>&1 printf "Unsupported distro $NAME, exiting"
@@ -81,9 +75,4 @@ if [[ $NAME == "Arch Linux" ]] ; then
_install "ansible" _install "ansible"
fi fi
if [[ $NAME == "Ubuntu" ]] ; then
_install "ansible"
_install "python3-jmespath"
fi
cd "$DOTDIR" && make cd "$DOTDIR" && make

View File

@@ -1,10 +1,6 @@
packages: packages:
list: list:
build-essentials: build-essentials:
ubuntu:
- build-essential
- exuberant-ctags
- cmake
archlinux: archlinux:
- gcc - gcc
- ctags - ctags
@@ -12,22 +8,16 @@ packages:
- maven - maven
- base-devel - base-devel
make: make:
ubuntu: ["make"]
archlinux: ["make"] archlinux: ["make"]
gdb: gdb:
ubuntu: ["gdb"]
archlinux: ["gdb"] archlinux: ["gdb"]
strace: strace:
ubuntu: ["strace"]
archlinux: ["strace"] archlinux: ["strace"]
sudo: sudo:
ubuntu: ["sudo"]
archlinux: ["sudo"] archlinux: ["sudo"]
apt: apt:
ubuntu: ["apt-file"]
archlinux: [""] archlinux: [""]
xorg: xorg:
ubuntu: []
archlinux: archlinux:
- xorg-server - xorg-server
- xorg-xrandr - xorg-xrandr
@@ -38,384 +28,335 @@ packages:
- xorg-xset - xorg-xset
- xorg-xinit - xorg-xinit
dmenu: dmenu:
ubuntu: ["dmenu"]
archlinux: ["dmenu"] archlinux: ["dmenu"]
ansible: ansible:
ubuntu: ["ansible"] archlinux:
archlinux: ["ansible"] - ansible
- ansible-language-server
xdotool: xdotool:
ubuntu: ["xdotool"]
archlinux: ["xdotool"] archlinux: ["xdotool"]
arandr: arandr:
ubuntu: ["arandr"]
archlinux: ["arandr"] archlinux: ["arandr"]
borgbackup: borgbackup:
ubuntu: ["borgbackup"]
archlinux: ["borgbackup"] archlinux: ["borgbackup"]
docker: docker:
ubuntu: ["docker.io", "containerd", "docker-compose"]
archlinux: ["docker", "docker-compose"] archlinux: ["docker", "docker-compose"]
font-awesome: font-awesome:
ubuntu: ["fonts-font-awesome"]
archlinux: ["ttf-font-awesome"] archlinux: ["ttf-font-awesome"]
font-inconsolata: font-inconsolata:
ubuntu: ["fonts-inconsolata"]
archlinux: ["ttf-inconsolata"] archlinux: ["ttf-inconsolata"]
font-dejavu: font-dejavu:
ubuntu: ["fonts-dejavu"]
archlinux: ["ttf-dejavu"] archlinux: ["ttf-dejavu"]
font-libertine: font-libertine:
ubuntu: ["fonts-linuxlibertine"]
archlinux: ["ttf-linux-libertine"] archlinux: ["ttf-linux-libertine"]
font-emoji: font-emoji:
ubuntu: []
archlinux: ["noto-fonts-emoji"] archlinux: ["noto-fonts-emoji"]
git: git:
ubuntu: ["git", "git-extras", "gitk", "git-email"]
# tk required for gitk # tk required for gitk
archlinux: ["git", "tk"] archlinux: ["git", "tk"]
htop: htop:
ubuntu: ["htop"]
archlinux: ["htop"] archlinux: ["htop"]
feh: feh:
ubuntu: ["feh"]
archlinux: ["feh"] archlinux: ["feh"]
i3: i3:
ubuntu: ["i3"] archlinux:
archlinux: ["i3-wm"] - i3-wm
- i3status-rust
i3lock: i3lock:
ubuntu: ["i3lock"]
archlinux: ["i3lock"] archlinux: ["i3lock"]
pluma: pluma:
ubuntu: ["pluma"]
archlinux: ["pluma"] archlinux: ["pluma"]
neovim: neovim:
ubuntu: ["neovim"]
archlinux: ["neovim", "python-pynvim"] archlinux: ["neovim", "python-pynvim"]
network-manager-applet: network-manager-applet:
ubuntu: []
archlinux: ["network-manager-applet"] archlinux: ["network-manager-applet"]
pasystray: pasystray:
ubuntu: ["pasystray"]
archlinux: ["pasystray"] archlinux: ["pasystray"]
redshift: redshift:
ubuntu: ["redshift-gtk"]
archlinux: ["redshift"] archlinux: ["redshift"]
pavucontrol: pavucontrol:
ubuntu: ["pavucontrol"]
archlinux: ["pavucontrol-qt"] archlinux: ["pavucontrol-qt"]
pinentry-qt: pinentry-qt:
ubuntu: ["pinentry-curses", "pinentry-qt"]
archlinux: ["pinentry"] archlinux: ["pinentry"]
pinta: pinta:
ubuntu: ["pinta"]
archlinux: ["pinta"] archlinux: ["pinta"]
py3status:
ubuntu: ["py3status", "python3-arrow", "python3-tzlocal", "python3-pydbus"]
archlinux: ["py3status", "python-pytz", "python-tzlocal", "python-dbus", "python-pydbus"]
pass: pass:
ubuntu: ["pass"]
archlinux: ["pass", "passff-host"] archlinux: ["pass", "passff-host"]
keepassx:
ubuntu: ["keepassx"]
archlinux: []
urxvt: urxvt:
ubuntu: ["rxvt-unicode-256color"]
archlinux: ["rxvt-unicode"] archlinux: ["rxvt-unicode"]
alacritty: alacritty:
ubuntu: []
archlinux: ["alacritty"] archlinux: ["alacritty"]
tmux: tmux:
ubuntu: ["tmux"]
archlinux: ["tmux"] archlinux: ["tmux"]
screen: screen:
ubuntu: ["screen"]
archlinux: ["screen"] archlinux: ["screen"]
zsh: zsh:
ubuntu: ["zsh", "zsh-syntax-highlighting"]
archlinux: ["zsh", "zsh-syntax-highlighting", "zsh-autosuggestions", "zsh-completions"] archlinux: ["zsh", "zsh-syntax-highlighting", "zsh-autosuggestions", "zsh-completions"]
zathura: zathura:
ubuntu: ["zathura", "zathura-pdf-poppler"]
archlinux: ["zathura", "zathura-pdf-poppler"] archlinux: ["zathura", "zathura-pdf-poppler"]
pdf: pdf:
ubuntu: ["ghostscript", "enscript"]
archlinux: ["ghostscript", "enscript"] archlinux: ["ghostscript", "enscript"]
pandoc: pandoc:
ubuntu:
- pandoc
- texlive
- python3-sphinxcontrib.svg2pdfconverter # for html to pdf conversions
- texlive-latex-extra
archlinux: ["pandoc", "texlive-core", "texlive-fontsextra", "texlive-latexextra"] archlinux: ["pandoc", "texlive-core", "texlive-fontsextra", "texlive-latexextra"]
libvirt: libvirt:
ubuntu: ["virt-manager", "libvirt-daemon"]
archlinux: ["virt-manager", "libvirt", "dnsmasq", "ebtables", "dmidecode"] archlinux: ["virt-manager", "libvirt", "dnsmasq", "ebtables", "dmidecode"]
firefox: firefox:
ubuntu: ["firefox"]
archlinux: ["firefox"] archlinux: ["firefox"]
ranger: ranger:
ubuntu: ["ranger"]
archlinux: ["ranger"] archlinux: ["ranger"]
thunar: thunar:
ubuntu: ["thunar"]
archlinux: ["thunar"] archlinux: ["thunar"]
unclutter: unclutter:
ubuntu: ["unclutter"]
archlinux: ["unclutter"] archlinux: ["unclutter"]
libreoffice: libreoffice:
ubuntu: ["libreoffice"]
archlinux: ["libreoffice-fresh", "libreoffice-fresh-de"] archlinux: ["libreoffice-fresh", "libreoffice-fresh-de"]
qt-theming: qt-theming:
ubuntu: ["breeze-cursor-theme", "breeze-icon-theme", "breeze", "qt5ct"]
archlinux: ["breeze", "breeze-icons", "breeze-grub", "qt5ct"] archlinux: ["breeze", "breeze-icons", "breeze-grub", "qt5ct"]
gtk-theming: gtk-theming:
ubuntu: ["gtk3-engines-breeze", "lxappearance"]
archlinux: ["breeze-gtk", "lxappearance"] archlinux: ["breeze-gtk", "lxappearance"]
xcompmgr: xcompmgr:
ubuntu: ["xcompmgr"]
archlinux: ["xcompmgr"] archlinux: ["xcompmgr"]
python: python:
ubuntu: ["python3", "python3-pip", "python3-venv", "virtualenv", "pylint3"] archlinux:
archlinux: ["python3"] - python3
- python-lsp-server
python-modules: python-modules:
ubuntu: []
archlinux: archlinux:
- python-ruamel-yaml - python-ruamel-yaml
- python-gitpython - python-gitpython
- python-semver - python-semver
black: black:
ubuntu: ["black"]
archlinux: ["python-black"] archlinux: ["python-black"]
xbacklight: xbacklight:
ubuntu: ["xbacklight"]
archlinux: ["xorg-xbacklight"] archlinux: ["xorg-xbacklight"]
wireshark: wireshark:
ubuntu: ["wireshark", "wireshark-qt"]
archlinux: ["wireshark-cli", "wireshark-qt"] archlinux: ["wireshark-cli", "wireshark-qt"]
dia:
ubuntu: ["dia"]
archlinux: ["dia"]
nmap: nmap:
ubuntu: ["nmap"]
archlinux: ["nmap"] archlinux: ["nmap"]
openvpn: openvpn:
ubuntu: ["openvpn"]
archlinux: ["openvpn"] archlinux: ["openvpn"]
curl: curl:
ubuntu: ["curl"]
archlinux: ["curl"] archlinux: ["curl"]
wget: wget:
ubuntu: ["wget"]
archlinux: ["wget"] archlinux: ["wget"]
tree: tree:
ubuntu: ["tree"]
archlinux: ["tree"] archlinux: ["tree"]
which: which:
ubuntu: []
archlinux: ["which"] archlinux: ["which"]
zip: zip:
ubuntu: ["zip", "unzip"]
archlinux: ["zip", "unzip"] archlinux: ["zip", "unzip"]
traceroute: traceroute:
ubuntu: ["traceroute"]
archlinux: ["traceroute"] archlinux: ["traceroute"]
tcpdump: tcpdump:
ubuntu: ["tcpdump"]
archlinux: ["tcpdump"] archlinux: ["tcpdump"]
tar: tar:
ubuntu: ["tar"]
archlinux: ["tar"] archlinux: ["tar"]
rsync: rsync:
ubuntu: ["rsync"]
archlinux: ["rsync"] archlinux: ["rsync"]
net-tools: net-tools:
ubuntu: ["net-tools"]
archlinux: ["net-tools"] archlinux: ["net-tools"]
ntfs: ntfs:
ubuntu: ["ntfs-3g"]
archlinux: ["ntfs-3g"] archlinux: ["ntfs-3g"]
lsof: lsof:
ubuntu: ["lsof"]
archlinux: ["lsof"] archlinux: ["lsof"]
iptables: iptables:
ubuntu: ["iptables"]
archlinux: ["iptables-nft"] archlinux: ["iptables-nft"]
pwgen: pwgen:
ubuntu: ["pwgen"]
archlinux: ["pwgen"] archlinux: ["pwgen"]
gpg: gpg:
ubuntu: ["gnupg2", "pcscd", "scdaemon"]
archlinux: ["gnupg", "paperkey", "yubikey-manager", "yubikey-touch-detector"] archlinux: ["gnupg", "paperkey", "yubikey-manager", "yubikey-touch-detector"]
networkmanager: networkmanager:
ubuntu: ["network-manager", "network-manager-openvpn", "network-manager-openconnect", "network-manager-openconnect-gnome"]
archlinux: ["networkmanager"] archlinux: ["networkmanager"]
pulseaudio: pulseaudio:
ubuntu: ["pulseaudio", "pulseaudio-utils"] archlinux:
archlinux: ["pulseaudio", "pulseaudio-alsa", "lib32-libpulse"] - pulseaudio
- pulseaudio-alsa
- lib32-libpulse
- alsa-utils
- alsa-firmware
- sof-firmware
- alsa-ucm-conf
iw: iw:
ubuntu: ["iw"]
archlinux: ["iw"] archlinux: ["iw"]
cowsay: cowsay:
ubuntu: ["cowsay"]
archlinux: ["cowsay"] archlinux: ["cowsay"]
ruby: ruby:
ubuntu: ["ruby", "ruby-dev", "ruby-bundler"]
archlinux: ["ruby"] archlinux: ["ruby"]
lxc: lxc:
ubuntu: ["lxc"]
archlinux: ["lxc"] archlinux: ["lxc"]
acpi: acpi:
ubuntu: ["acpid"]
archlinux: ["acpi", "acpid"] archlinux: ["acpi", "acpid"]
nodejs: nodejs:
ubuntu: ["nodejs"]
archlinux: ["nodejs", "npm"] archlinux: ["nodejs", "npm"]
xdg: xdg:
ubuntu: ["xdg-utils"]
archlinux: ["xdg-utils"] archlinux: ["xdg-utils"]
compton: compton:
ubuntu: ["compton"]
archlinux: [] archlinux: []
dunst: dunst:
ubuntu: ["dunst"]
archlinux: ["dunst"] archlinux: ["dunst"]
cloc: cloc:
ubuntu: ["cloc"]
archlinux: ["cloc"] archlinux: ["cloc"]
bluetooth: bluetooth:
ubuntu: ["blueman"]
archlinux: ["bluez", "bluez-tools", "blueman"] archlinux: ["bluez", "bluez-tools", "blueman"]
autorandr: autorandr:
ubuntu: ["autorandr"]
archlinux: ["autorandr"] archlinux: ["autorandr"]
bwm-ng: bwm-ng:
ubuntu: ["bwm-ng"]
archlinux: ["bwm-ng"] archlinux: ["bwm-ng"]
virtualbox: virtualbox:
ubuntu: ["virtualbox"]
archlinux: ["virtualbox"] archlinux: ["virtualbox"]
ssh: ssh:
ubuntu: ["ssh"]
archlinux: ["openssh"] archlinux: ["openssh"]
sshfs: sshfs:
ubuntu: ["sshfs"]
archlinux: ["sshfs"] archlinux: ["sshfs"]
expect: expect:
ubuntu: ["expect"]
archlinux: ["expect"] archlinux: ["expect"]
inotify: inotify:
ubuntu: ["inotify-tools"]
archlinux: ["inotify-tools"] archlinux: ["inotify-tools"]
rclone: rclone:
ubuntu: ["rclone"]
archlinux: ["rclone"] archlinux: ["rclone"]
dnf: dnf:
ubuntu: []
archlinux: [] archlinux: []
rustup: rustup:
ubuntu: []
archlinux: ["rustup"] archlinux: ["rustup"]
musescore: musescore:
ubuntu: ["musescore3"]
archlinux: ["musescore"] archlinux: ["musescore"]
sipcalc: sipcalc:
ubuntu: ["sipcalc"]
archlinux: ["sipcalc"] archlinux: ["sipcalc"]
rofi: rofi:
ubuntu: ["rofi"]
archlinux: ["rofi"] archlinux: ["rofi"]
imv: imv:
ubuntu: ["imv"]
archlinux: ["imv"] archlinux: ["imv"]
pacman: pacman:
ubuntu: []
archlinux: ["pacman", "pacman-contrib"] archlinux: ["pacman", "pacman-contrib"]
steam: steam:
ubuntu: []
archlinux: ["steam"] archlinux: ["steam"]
man: man:
ubuntu: ["man-db", "manpages"]
archlinux: ["man-db", "man-pages"] archlinux: ["man-db", "man-pages"]
nextcloud: nextcloud:
ubuntu: ["nextcloud-desktop"]
archlinux: ["nextcloud-client"] archlinux: ["nextcloud-client"]
kwallet: kwallet:
ubuntu: []
archlinux: ["kwallet", "kwalletmanager"] archlinux: ["kwallet", "kwalletmanager"]
pv: pv:
ubuntu: ["pv"]
archlinux: ["pv"] archlinux: ["pv"]
stress: stress:
ubuntu: ["stress"]
archlinux: ["stress"] archlinux: ["stress"]
mpris: mpris:
ubuntu: ["playerctl"]
archlinux: ["playerctl"] archlinux: ["playerctl"]
imagemagick: imagemagick:
ubuntu: ["imagemagick"]
archlinux: ["imagemagick"] archlinux: ["imagemagick"]
mpv: mpv:
ubuntu: ["mpv"]
archlinux: ["mpv"] archlinux: ["mpv"]
gnome-keyring: gnome-keyring:
ubuntu: ["gnome-keyring"]
archlinux: ["gnome-keyring"] archlinux: ["gnome-keyring"]
element: element:
ubuntu: []
archlinux: ["element-desktop"] archlinux: ["element-desktop"]
maim: maim:
ubuntu: ["maim"]
archlinux: ["maim"] archlinux: ["maim"]
mkinitcpio: mkinitcpio:
ubuntu: []
archlinux: ["mkinitcpio"] archlinux: ["mkinitcpio"]
terraform: terraform:
ubuntu: []
archlinux: ["terraform"] archlinux: ["terraform"]
synclient: synclient:
ubuntu: ["xserver-xorg-input-synaptics"]
archlinux: ["xf86-input-synaptics"] archlinux: ["xf86-input-synaptics"]
ncdu: ncdu:
ubuntu: ["ncdu"]
archlinux: ["ncdu"] archlinux: ["ncdu"]
font-utils: font-utils:
ubuntu: ["woff-tools", "woff2"]
archlinux: ["woff2"] archlinux: ["woff2"]
jq: jq:
ubuntu: ["jq"]
archlinux: ["jq"] archlinux: ["jq"]
musl: musl:
ubuntu: ["musl", "musl-tools"]
archlinux: ["musl"] archlinux: ["musl"]
kdeconnect: kdeconnect:
ubuntu: ["kdeconnect"]
archlinux: ["kdeconnect"] archlinux: ["kdeconnect"]
restic: restic:
ubuntu: ["restic"]
archlinux: ["restic"] archlinux: ["restic"]
discord: discord:
ubuntu: []
archlinux: ["discord"] archlinux: ["discord"]
kubectl:
archlinux: ["kubectl"]
bind:
archlinux: ["bind"]
fzf:
archlinux: ["fzf"]
chromium:
archlinux: ["chromium"]
signal:
archlinux: ["signal-desktop"]
go:
archlinux: ["go", "gopls"]
helix:
archlinux: ["helix"]
keepassxc:
archlinux: ["keepassxc"]
awscli:
archlinux: ["aws-cli"]
mariadb-client:
archlinux: ["mariadb-clients"]
php:
archlinux: ["php"]
exa:
archlinux: ["exa"]
just:
archlinux: ["just"]
ripgrep:
archlinux: ["ripgrep"]
fd:
archlinux: ["fd"]
bat:
archlinux: ["bat"]
mdbook:
archlinux: ["mdbook"]
bash:
archlinux:
- bash
- bash-language-server
packer:
archlinux: ["packer"]
c:
archlinux:
- gcc
- clang
sed:
archlinux:
- sed
findutils:
archlinux:
- findutils
html:
archlinux:
- vscode-html-languageserver
typescript:
archlinux:
- typescript
- typescript-language-server
json:
archlinux:
- vscode-json-languageserver
markdown:
archlinux:
- marksman
lldb:
archlinux:
- lldb
yaml:
archlinux:
- yaml-language-server
qemu:
archlinux:
- qemu-full
- tigervnc
cloud-init:
archlinux:
- cloud-init
- cloud-utils
netcat:
archlinux:
- openbsd-netcat
remove: remove:
mousepad: mousepad:
ubuntu: ["mousepad"]
archlinux: ["mousepad"] archlinux: ["mousepad"]
chrome:
ubuntu: ["google-chrome-stable"]
archlinux: []
snap:
ubuntu: ["snapd"]
archlinux: []
golang:
ubuntu: ["golang-go"]
archlinux: ["go"]
signal:
ubuntu: []
archlinux: ["signal-desktop"]
vim: vim:
ubuntu: ["vim"]
archlinux: ["gvim"] archlinux: ["gvim"]
rust: rust:
ubuntu: ["rustc", "cargo"]
archlinux: ["rust"] archlinux: ["rust"]

View File

@@ -23,31 +23,7 @@
- name: check for valid distro - name: check for valid distro
assert: assert:
that: distro in ('ubuntu', 'archlinux') that: distro in ('archlinux')
- block:
- block:
- name: update apt cache
apt:
update_cache: true
become: true
changed_when: false
- name: upgrade system
apt:
upgrade: dist
become: true
- name: remove unused packages
apt:
autoremove: true
become: true
- name: clean apt cache
apt:
autoclean: true
become: true
when: distro == 'ubuntu'
- block: - block:
- name: install ansible requirements - name: install ansible requirements
@@ -59,8 +35,6 @@
packages: packages:
archlinux: archlinux:
- python-jmespath - python-jmespath
ubuntu:
- python3-jmespath
- block: - block:
- name: enable multilib repository - name: enable multilib repository
@@ -81,6 +55,7 @@
marker: "# {mark} ANSIBLE MANAGED parallel_download" marker: "# {mark} ANSIBLE MANAGED parallel_download"
become: true become: true
- block:
- name: upgrade system - name: upgrade system
pacman: pacman:
upgrade: true upgrade: true
@@ -88,6 +63,8 @@
become: true become: true
changed_when: false changed_when: false
tags: [system-update]
- name: install pacman-contrib for paccache - name: install pacman-contrib for paccache
package: package:
name: pacman-contrib name: pacman-contrib
@@ -129,7 +106,6 @@
tags: [pacman_cache_cleanup] tags: [pacman_cache_cleanup]
when: distro == 'archlinux' when: distro == 'archlinux'
tags: [system-update]
- block: - block:
- name: create dotfiles group - name: create dotfiles group
@@ -310,7 +286,6 @@
become: true become: true
vars: vars:
query: "{{ 'remove.*.%s[]'|format(distro) }}" query: "{{ 'remove.*.%s[]'|format(distro) }}"
when: distro != 'ubuntu'
- name: install packages - name: install packages
package: package:
@@ -320,16 +295,6 @@
vars: vars:
query: "{{ 'list.*.%s[]'|format(distro) }}" query: "{{ 'list.*.%s[]'|format(distro) }}"
- name: remove packages
apt:
name: "{{ packages|json_query(query) }}"
state: absent
purge: true
become: true
vars:
query: "{{ 'remove.*.%s[]'|format(distro) }}"
when: distro == 'ubuntu'
- name: install machine-specific packages - name: install machine-specific packages
package: package:
name: "{{ machine.packages }}" name: "{{ machine.packages }}"
@@ -368,11 +333,6 @@
- rebuild initrd - rebuild initrd
when: distro == 'archlinux' when: distro == 'archlinux'
- set_fact:
disable_services:
- ssh
when: distro == 'ubuntu'
- set_fact: - set_fact:
disable_services: disable_services:
- sshd - sshd
@@ -387,13 +347,6 @@
become: true become: true
when: manage_services|default(true)|bool when: manage_services|default(true)|bool
- set_fact:
enable_services:
- NetworkManager
- docker
- libvirtd
when: distro == 'ubuntu'
- set_fact: - set_fact:
enable_services: enable_services:
- NetworkManager - NetworkManager
@@ -401,7 +354,6 @@
- libvirtd - libvirtd
- systemd-timesyncd - systemd-timesyncd
- pcscd - pcscd
when: distro == 'archlinux'
- name: enable services - name: enable services
service: service:
@@ -440,7 +392,6 @@
line: 'HandlePowerKey=suspend' line: 'HandlePowerKey=suspend'
become: true become: true
- block:
- name: create sudonopw group - name: create sudonopw group
group: group:
name: sudonopw name: sudonopw
@@ -456,8 +407,6 @@
%sudonopw ALL=(ALL) NOPASSWD: ALL %sudonopw ALL=(ALL) NOPASSWD: ALL
become: true become: true
when: distro == 'archlinux'
- block: - block:
- name: install AMDGPU packages - name: install AMDGPU packages
package: package:
@@ -494,411 +443,6 @@
- machine.gpu is defined and machine.gpu == 'amd' - machine.gpu is defined and machine.gpu == 'amd'
- block: - block:
- name: create rust build user
user:
name: rust_build
home: /var/lib/rust_build
create_home: true
shell: /bin/bash
system: true
become: true
- set_fact:
cargo_env: . ~/.cargo/env
when: distro == 'ubuntu'
- set_fact:
# Do NOT just use `"true"`. Due to some YAML fuckery, it will be
# capitalized and the commands will fail.
cargo_env: "/bin/true"
when: distro == 'archlinux'
- name: install rustup on ubuntu
shell: curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --profile=minimal
args:
creates: /var/lib/rust_build/.cargo/bin/rustup
become: true
become_user: rust_build
when: distro == 'ubuntu'
- name: add rustup stable toolchain
shell: "{{ cargo_env }} && rustup toolchain install stable && rustup default stable"
become: true
become_user: rust_build
changed_when: false
- name: add rustup nightly toolchain
shell: "{{ cargo_env }} && rustup toolchain install nightly"
become: true
become_user: rust_build
changed_when: false
- name: add rustup additional toolchains
shell: "{{ cargo_env }} && rustup toolchain install {{ item }}"
become: true
become_user: rust_build
changed_when: false
loop: "{{ cargo_crate_list|selectattr('toolchain', 'defined')|map(attribute='toolchain')|reject('in', ['none', 'stable', 'nightly'])|list }}"
- name: add additional targets
shell: "{{ cargo_env }} && rustup +{{ item.toolchain|default('stable') }} target add {{ item.target }}"
become: true
become_user: rust_build
changed_when: false
when:
- '"target" in item'
loop: "{{ cargo_crate_list }}"
- name: assert that nofeatures is not actually a flag
assert:
that: '"nofeatures" not in item.features|default([])'
msg: Wow, "nofeatures" is actually a feature. Update the playbook!
loop: "{{ cargo_crate_list }}"
- name: assert that only proper sources are defined
assert:
that: item.source|default("crates.io") in ("crates.io", "git")
msg: "Invalid source: {{ item.source|default('x') }}"
loop: "{{ cargo_crate_list }}"
- name: install required packages
package:
state: present
name: "{{ item.required_packages|map(attribute=distro)|list }}"
when: item.required_packages is defined
become: true
loop: "{{ cargo_crate_list }}"
- name: check if binary already exists for crates.io
stat:
path: /usr/local/lib/binaries/{{ binary_id_cratesio }}
register: rust_binary_cratesio
loop: "{{ cargo_crate_list }}"
loop_control:
label: "{{ item.binary }}"
when: item.source|default('crates.io') == 'crates.io'
check_mode: false
- name: check if binary already exists for git
stat:
path: /usr/local/lib/binaries/{{ binary_id_git }}
register: rust_binary_git
loop: "{{ cargo_crate_list }}"
loop_control:
label: "{{ item.binary }}"
when: item.source|default('crates.io') == 'git'
check_mode: false
- name: build rust crates from crates.io
shell: |
set -o errexit
{{ cargo_env }}
rustup run {{ item.toolchain|default('stable') }} cargo install --features "{{ item.features|default([])|join(' ') }}" {{ "--target " ~ item.target if item.target is defined else '' }} --version {{ item.version }} {{ item.crate }}
mv /var/lib/rust_build/.cargo/bin/{{ item.binary }} /var/lib/rust_build/.cargo/bin/{{ binary_id_cratesio }}
args:
creates: /var/lib/rust_build/.cargo/bin/{{ binary_id_cratesio }}
become: true # do not build as root!
become_user: rust_build
loop: "{{ cargo_crate_list }}"
when:
- item.source|default('crates.io') == 'crates.io'
- not ((rust_binary_cratesio.results | selectattr("item.binary", "match", item.binary)) | list) [0].stat.exists
- name: build rust crates from git
shell: |
set -o errexit
{{ cargo_env }}
rustup run {{ item.toolchain|default('stable') }} cargo install --features "{{ item.features|default([])|join(' ') }}" {{ "--target " ~ item.target if item.target is defined else '' }} --git {{ item.url }} --branch {{ item.branch }} {{ item.package|default("") }}
mv /var/lib/rust_build/.cargo/bin/{{ item.binary }} /var/lib/rust_build/.cargo/bin/{{ binary_id_git }}
args:
creates: /var/lib/rust_build/.cargo/bin/{{ binary_id_git }}
become: true # do not build as root!
become_user: rust_build
loop: "{{ cargo_crate_list }}"
when:
- item.source|default('crates.io') == 'git'
- not ((rust_binary_git.results | selectattr("item.binary", "match", item.binary)) | list)[0].stat.exists
- name: create target directory
file:
state: directory
path: /usr/local/lib/binaries/
owner: root
group: root
mode: '0775'
become: true
- name: move binaries for crates.io
shell: |
mv /var/lib/rust_build/.cargo/bin/{{ binary_id_cratesio }} /usr/local/lib/binaries/{{ binary_id_cratesio }}
args:
creates: /usr/local/lib/binaries/{{ binary_id_cratesio }}
become: true
loop: "{{ cargo_crate_list }}"
when:
- item.source|default('crates.io') == 'crates.io'
- not ((rust_binary_cratesio.results | selectattr("item.binary", "match", item.binary)) | list)[0].stat.exists
- name: move binaries for git
shell: |
mv /var/lib/rust_build/.cargo/bin/{{ binary_id_git }} /usr/local/lib/binaries/{{ binary_id_git }}
args:
creates: /usr/local/lib/binaries/{{ binary_id_git }}
become: true
loop: "{{ cargo_crate_list }}"
when:
- item.source|default('crates.io') == 'git'
- not ((rust_binary_git.results | selectattr("item.binary", "match", item.binary)) | list)[0].stat.exists
- name: link binaries for crates.io
file:
src: /usr/local/lib/binaries/{{ binary_id_cratesio }}
dest: /usr/local/bin/{{ item.binary }}
owner: root
group: root
state: link
force: true
become: true
loop: "{{ cargo_crate_list }}"
when: item.source|default('crates.io') == 'crates.io'
- name: link binaries for git
file:
src: /usr/local/lib/binaries/{{ binary_id_git }}
dest: /usr/local/bin/{{ item.binary }}
owner: root
group: root
state: link
force: true
become: true
loop: "{{ cargo_crate_list }}"
when: item.source|default('crates.io') == 'git'
# Important: clean up the symlinks BEFORE the binaries they point to.
# Otherwise, ansible will skip them because `ansible.builtin.fileglob`
# does not match broken symlinks for some reason.
- name: clean up old binaries for creates.io in /var/lib/rust_build
command: rm -- {{ binaries | join (" ") }}
vars:
binaries: "{{ lookup('ansible.builtin.fileglob', '/var/lib/rust_build/.cargo/bin/' ~ item.binary ~ '.*', wantlist=True) | reject('eq', '/var/lib/rust_build/.cargo/bin/' ~ binary_id_cratesio) | list }}"
changed_when: binaries | length > 0
loop: "{{ cargo_crate_list }}"
become: true
when:
- item.source|default('crates.io') == 'crates.io'
- binaries | length > 0
- name: clean up old binaries for creates.io in /usr/local/lib
command: rm -- {{ binaries | join (" ") }}
vars:
binaries: "{{ lookup('ansible.builtin.fileglob', '/usr/local/lib/binaries/' ~ item.binary ~ '.*', wantlist=True) | reject('eq', '/usr/local/lib/binaries/' ~ binary_id_cratesio) | list }}"
changed_when: binaries | length > 0
loop: "{{ cargo_crate_list }}"
become: true
when:
- item.source|default('crates.io') == 'crates.io'
- binaries | length > 0
- name: clean up old binaries for git in /var/lib/rust_build
command: rm -- {{ binaries | join (" ") }}
vars:
binaries: "{{ lookup('ansible.builtin.fileglob', '/var/lib/rust_build/.cargo/bin/' ~ item.binary ~ '.*', wantlist=True) | reject('eq', '/var/lib/rust_build/.cargo/bin/' ~ binary_id_git) | list }}"
changed_when: binaries | length > 0
loop: "{{ cargo_crate_list }}"
become: true
when:
- item.source|default('crates.io') == 'git'
- binaries | length > 0
- name: clean up old binaries for git in /usr/local/lib
command: rm -- {{ binaries | join (" ") }}
vars:
binaries: "{{ lookup('ansible.builtin.fileglob', '/usr/local/lib/binaries/' ~ item.binary ~ '.*', wantlist=True) | reject('eq', '/usr/local/lib/binaries/' ~ binary_id_git) | list }}"
changed_when: binaries | length > 0
loop: "{{ cargo_crate_list }}"
become: true
when:
- item.source|default('crates.io') == 'git'
- binaries | length > 0
vars:
binary_id_cratesio: "{{ item.binary }}.{{ item.toolchain|default('stable') }}.{{ item.features|default(['nofeatures'])|join('_') }}.{{ item.version }}"
binary_id_git: "{{ item.binary }}.{{ item.toolchain|default('stable') }}.{{ item.features|default(['nofeatures'])|join('_') }}.{{ item.branch }}"
tags:
- rust_binaries
- block:
- name: stat go target directory
stat:
path: /usr/local/go-v{{ go_version }}
register: go_target_stat
- block:
- name: create temporary directory for go download
tempfile:
state: directory
register: go_download
- name: download go
get_url:
url: https://golang.org/dl/go{{ go_version }}.linux-amd64.tar.gz
dest: "{{ go_download.path }}/go{{ go_version }}.linux-amd64.tar.gz"
force: false
- name: unpack go
unarchive:
src: "{{ go_download.path }}/go{{ go_version }}.linux-amd64.tar.gz"
owner: root
group: root
mode: '0755'
dest: "{{ go_download.path }}"
remote_src: true
become: true
- name: install new go version
command: mv "{{ go_download.path }}/go/" /usr/local/go-v{{ go_version }}
become: true
- name: clean up go download directory
file:
path: "{{ go_download.path }}"
state: absent
when: not go_target_stat.stat.exists and not ansible_check_mode
- name: link to the current go version
file:
src: /usr/local/go-v{{ go_version }}
dest: /usr/local/go
owner: root
group: root
state: link
force: true
become: true
- name: add go directory to PATH and set GOROOT
copy:
dest: /etc/profile.d/go.sh
content: |
export PATH=/usr/local/go/bin:$PATH
export GOROOT=/usr/local/go
owner: root
group: root
mode: '0644'
become: true
tags: [go]
- block:
- name: install alacritty build dependencies
package:
state: present
# https://github.com/alacritty/alacritty/blob/master/INSTALL.md#debianubuntu
name:
- cmake
- pkg-config
- libfreetype6-dev
- libfontconfig1-dev
- libxcb-xfixes0-dev
- libxkbcommon-dev
- python3
become: true
- name: stat alacritty binary
stat:
path: /usr/local/bin/alacritty
register: alacritty_binary
- name: create temporary directory for alacritty build
tempfile:
state: directory
register: alacritty_build_tempdir
become: true
become_user: rust_build
when: not alacritty_binary.stat.exists
- name: build alacritty
shell: . ~/.cargo/env && rustup run stable cargo install alacritty --root ./out
args:
chdir: "{{ alacritty_build_tempdir.path }}"
become: true
become_user: rust_build
when: not alacritty_binary.stat.exists
- name: install alacritty
command: mv "{{ alacritty_build_tempdir.path }}/out/bin/alacritty" /usr/local/bin/alacritty
become: true
when: not alacritty_binary.stat.exists
- name: clean up build directory
file:
path: "{{ alacritty_build_tempdir.path }}"
state: absent
become: true
become_user: rust_build
when: not alacritty_binary.stat.exists
when: distro == 'ubuntu'
tags: [alacritty]
- block:
- name: stat yubikey-touch-detector binary
stat:
path: /usr/local/bin/yubikey-touch-detector
register: yubikey_touch_detector_binary
- name: create temporary directory for yubikey-touch-detector build
tempfile:
state: directory
register: yubikey_touch_detector_build_tempdir
when: not yubikey_touch_detector_binary.stat.exists
- name: build yubikey-touch-detector
shell: sh -c 'PATH=/usr/local/go/bin:$PATH env GOROOT=/usr/local/go GOPATH=$(pwd) go install github.com/maximbaz/yubikey-touch-detector@main'
args:
chdir: "{{ yubikey_touch_detector_build_tempdir.path }}"
when: not yubikey_touch_detector_binary.stat.exists
- name: install yubikey-touch-detector
command: >
mv
"{{ yubikey_touch_detector_build_tempdir.path }}/bin/yubikey-touch-detector"
/usr/local/bin/yubikey-touch-detector
become: true
when: not yubikey_touch_detector_binary.stat.exists
- name: clean up build directory
file:
path: "{{ yubikey_touch_detector_build_tempdir.path }}"
state: absent
become: true
when: not yubikey_touch_detector_binary.stat.exists
when: distro == 'ubuntu'
tags: [yubikey-touch-detector]
- block:
- block:
- name: add spotify apt key
apt_key:
url: "https://download.spotify.com/debian/pubkey_5E3C45D7B312C643.gpg"
id: "5E3C45D7B312C643"
become: true
- name: add spotify repository
apt_repository:
repo: "deb http://repository.spotify.com stable non-free"
filename: spotify
become: true
- name: install spotify
apt:
name: spotify-client
update_cache: true
become: true
when: distro == 'ubuntu'
- block: - block:
- name: install spotify from AUR via paru - name: install spotify from AUR via paru
shell: | shell: |
@@ -908,7 +452,6 @@
become_user: paru become_user: paru
args: args:
creates: /usr/bin/spotify creates: /usr/bin/spotify
when: distro == 'archlinux'
tags: [spotify] tags: [spotify]

View File

@@ -51,21 +51,25 @@ test_ares() {
} }
test_neptune() { test_neptune() {
docker pull docker.io/library/ubuntu:20.04 docker run \
docker run -ti --rm -v ${tmpdir}/dotfiles.tar.gz:/tmp/dotfiles.tar.gz:ro --hostname neptune docker.io/library/ubuntu:20.04 sh -c ' -ti \
--rm \
-v ${tmpdir}/dotfiles.tar.gz:/tmp/dotfiles.tar.gz:ro \
--mount type=tmpfs,destination=/var/cache/pacman/pkg/ \
"${dockeropts[@]}" \
--hostname neptune \
docker.io/library/archlinux:base \
sh -c '
set -o errexit set -o errexit
cd $(mktemp -d) # Uncomment CacheDir and append the host pacman cache as cachedir
tar xf /tmp/dotfiles.tar.gz -C . # At worst, the cache directory will be ignored if it does not exist
ANSIBLE_EXTRA_ARGS="-e manage_services=false" ./install.sh # Pacman will always prefer the first cache directory, so newly downloaded
' # packages will stay in the container
} sed -i '"'"'s/^#\?\(CacheDir.*\)/CacheDir = \/var\/cache\/pacman\/pkg_host\/\n\1/'"'"' /etc/pacman.conf
test_mars() {
docker pull docker.io/library/ubuntu:20.04
docker run -ti --rm -v ${tmpdir}/dotfiles.tar.gz:/tmp/dotfiles.tar.gz:ro --hostname mars docker.io/library/ubuntu:20.04 sh -c '
set -o errexit
mkdir -p /var/cache/pacman/pkg_host/
pacman -Syu --noconfirm linux
cd $(mktemp -d) cd $(mktemp -d)
tar xf /tmp/dotfiles.tar.gz -C . tar xf /tmp/dotfiles.tar.gz -C .
ANSIBLE_EXTRA_ARGS="-e manage_services=false" ./install.sh ANSIBLE_EXTRA_ARGS="-e manage_services=false" ./install.sh
@@ -79,12 +83,8 @@ case "${1:-all}" in
neptune) neptune)
test_neptune test_neptune
;; ;;
mars)
test_mars
;;
all) all)
test_ares test_ares
test_neptune test_neptune
test_mars
;; ;;
esac esac

152
user.yml
View File

@@ -13,18 +13,6 @@
become: true become: true
become_user: root become_user: root
- set_fact:
user_groups:
- adm
- cdrom
- sudo
- dip
- plugdev
- docker
- libvirt
when: distro == 'ubuntu'
tags: [always]
- set_fact: - set_fact:
user_groups: user_groups:
- libvirt - libvirt
@@ -35,7 +23,6 @@
- sudonopw - sudonopw
- games - games
- kvm - kvm
when: distro == 'archlinux'
tags: [always] tags: [always]
- set_fact: - set_fact:
@@ -203,7 +190,7 @@
- name: deploy dotfiles templates - name: deploy dotfiles templates
template: template:
src: /home/{{ user.name }}/.dotfiles/{{ item.from }}.j2 src: /var/lib/dotfiles/{{ item.from }}.j2
dest: "/home/{{ user.name }}/{{ item.to }}" dest: "/home/{{ user.name }}/{{ item.to }}"
owner: "{{ user.name }}" owner: "{{ user.name }}"
group: "{{ user_group_name }}" group: "{{ user_group_name }}"
@@ -323,14 +310,6 @@
tags: [user-update] tags: [user-update]
tags: [vim-plugins] tags: [vim-plugins]
- block:
- name: install rustup on ubuntu
shell: curl https://sh.rustup.rs -sSf | sh -s -- -y --no-modify-path
args:
creates: ~/.cargo/bin/rustup
when: distro == 'ubuntu'
tags: [rust]
- block: - block:
- name: create firefox directories - name: create firefox directories
firefox_profile: firefox_profile:
@@ -523,135 +502,9 @@
group: "{{ user_group_name }}" group: "{{ user_group_name }}"
state: link state: link
force: true force: true
tags: tags:
- portfolio-performance - portfolio-performance
- block:
- name: get current stable version
uri:
url: https://storage.googleapis.com/kubernetes-release/release/stable.txt
return_content: true
register: kubectl_stable_version_api
check_mode: false
- set_fact:
kubectl_stable_version: "{{ kubectl_stable_version_api.content|trim }}"
- set_fact:
kubectl_outdated: "{{ kubectl_version != kubectl_stable_version }}"
- name: warn if not on stable version
fail:
msg: "installing kubectl {{ kubectl_version }}, stable version would be {{ kubectl_stable_version }}"
when: kubectl_outdated is sameas true
ignore_errors: True
- name: get kubectl
get_url:
url: https://storage.googleapis.com/kubernetes-release/release/{{ kubectl_version }}/bin/linux/amd64/kubectl
dest: /home/{{ user.name }}/.opt/kubectl-{{ kubectl_version }}
owner: "{{ user.name }}"
group: "{{ user_group_name }}"
mode: '0755'
force: false
- name: make kubectl executable
file:
path: /home/{{ user.name }}/.opt/kubectl-{{ kubectl_version }}
mode: '0755'
when: not ansible_check_mode
- name: link kubectl
file:
src: /home/{{ user.name }}/.opt/kubectl-{{ kubectl_version }}
dest: /home/{{ user.name }}/.optbin/kubectl
state: link
when: not ansible_check_mode
tags:
- kubectl
- block:
- set_fact:
tf_version: "{{ user.overrides.terraform_version|default(terraform_version) }}"
tf_check_updates: "{{ user.overrides.terraform_check_updates|default(terraform_check_updates)|default(true) }}"
- name: stat current terraform binary
stat:
path: "/home/{{ user.name }}/.opt/terraform-v{{ tf_version }}"
register: terraform_binary
check_mode: false
- name: create temporary download directory for terraform
tempfile:
state: directory
register: terraform_download_dir
when:
- not ansible_check_mode
- not terraform_binary.stat.exists
- name: get terraform
get_url:
url: "https://releases.hashicorp.com/terraform/{{ tf_version }}/terraform_{{ tf_version }}_linux_amd64.zip"
dest: "{{ terraform_download_dir.path }}/terraform.zip"
force: false
when:
- not ansible_check_mode
- not terraform_binary.stat.exists
- name: unpack terraform zip
unarchive:
src: "{{ terraform_download_dir.path }}/terraform.zip"
dest: "{{ terraform_download_dir.path }}/"
remote_src: true
when:
- not ansible_check_mode
- not terraform_binary.stat.exists
- name: install terraform
command: mv "{{ terraform_download_dir.path }}/terraform" /home/{{ user.name }}/.opt/terraform-v{{ tf_version }}
when:
- not ansible_check_mode
- not terraform_binary.stat.exists
- name: clean up download directory
file:
path: "{{ terraform_download_dir.path }}"
state: absent
when:
- not ansible_check_mode
- not terraform_binary.stat.exists
- name: link terraform
file:
src: /home/{{ user.name }}/.opt/terraform-v{{ tf_version }}
dest: /home/{{ user.name }}/.optbin/terraform
state: link
when: not ansible_check_mode
- block:
- name: get terraform version info
command: /home/{{ user.name }}/.optbin/terraform version -json
register: terraform_version_output
check_mode: false
changed_when: false
- name: parse terraform version output
set_fact:
terraform_outdated: "{{ (terraform_version_output.stdout | from_json()).terraform_outdated }}"
changed_when: false
- name: warn if terraform is outdated
fail:
msg: "current terraform v{{ tf_version }} is out of date"
when: terraform_outdated is sameas true
ignore_errors: True
when: tf_check_updates
tags:
- terraform
- name: handle autostart units - name: handle autostart units
block: block:
- name: create systemd user directory - name: create systemd user directory
@@ -725,6 +578,9 @@
content: | content: |
#!/usr/bin/env bash #!/usr/bin/env bash
set -o nounset
set -o errexit
if [[ ! -e ~/.password-store ]] ; then if [[ ! -e ~/.password-store ]] ; then
printf '%s\n' 'This is the first time running pass, initializting repository ...' printf '%s\n' 'This is the first time running pass, initializting repository ...'

View File

@@ -1,41 +1 @@
terraform_version: 1.3.6
kubectl_version: v1.26.0
go_version: "1.19.4"
portfolio_performace_version: "0.57.2" portfolio_performace_version: "0.57.2"
cargo_crate_list:
- crate: just
binary: just
version: 1.9.0
- crate: ripgrep
binary: rg
version: 13.0.0
features:
- pcre2
required_packages:
- ubuntu: libpcre2-dev
archlinux: pcre2
- crate: fd-find
binary: fd
version: 8.6.0
- crate: bat
binary: bat
version: 0.22.1
- crate: exa
binary: exa
version: 0.10.1
- crate: mdbook
binary: mdbook
version: 0.4.24
- url: https://github.com/hakoerber/git-repo-manager
binary: grm
branch: develop
source: git
toolchain: nightly
features:
- static-build
target: x86_64-unknown-linux-musl
- url: https://github.com/greshake/i3status-rust
binary: i3status-rs
branch: master
source: git
package: i3status-rs

View File

@@ -11,8 +11,8 @@ for part in ${_path[@]} ; do
done done
export PATH export PATH
export EDITOR="hx" export EDITOR="helix"
export VISUAL="hx" export VISUAL="helix"
export BROWSER="firefox" export BROWSER="firefox"
export PAGER="less" export PAGER="less"
@@ -55,7 +55,6 @@ mkdir -p "${FEATURE_DIR}"
[[ $MACHINE_HAS_KEEPASSX == "true" ]] && touch "${FEATURE_DIR}"/keepassx [[ $MACHINE_HAS_KEEPASSX == "true" ]] && touch "${FEATURE_DIR}"/keepassx
[[ $MACHINE_HAS_STEAM == "true" ]] && touch "${FEATURE_DIR}"/steam [[ $MACHINE_HAS_STEAM == "true" ]] && touch "${FEATURE_DIR}"/steam
[[ $MACHINE_HAS_RESTIC_BACKUP == "true" ]] && touch "${FEATURE_DIR}"/restic_backup [[ $MACHINE_HAS_RESTIC_BACKUP == "true" ]] && touch "${FEATURE_DIR}"/restic_backup
[[ $MACHINE_HAS_ELEMENT == "true" ]] && touch "${FEATURE_DIR}"/element
[[ $MACHINE_TYPE == "laptop" ]] && touch "${FEATURE_DIR}"/machine_is_laptop [[ $MACHINE_TYPE == "laptop" ]] && touch "${FEATURE_DIR}"/machine_is_laptop

View File

@@ -38,6 +38,8 @@ alias grep='grep --color=auto'
alias fgrep='fgrep --color=auto' alias fgrep='fgrep --color=auto'
alias egrep='egrep --color=auto' alias egrep='egrep --color=auto'
alias rg='rg --hidden --glob "!.git/**"'
alias rm='rm -v' alias rm='rm -v'
alias cp='cp -vi' alias cp='cp -vi'
alias mv='mv -vi' alias mv='mv -vi'

View File

@@ -24,3 +24,6 @@ bindkey "\e[H" beginning-of-line
bindkey "\e[F" end-of-line bindkey "\e[F" end-of-line
# completion in the middle of a line # completion in the middle of a line
bindkey '^i' expand-or-complete-prefix bindkey '^i' expand-or-complete-prefix
export FZF_DEFAULT_OPTS='--height 50% --border'
eval "$(fzf --zsh)"

View File

@@ -27,7 +27,3 @@ if [[ ! "$SSH_AUTH_SOCK" ]]; then
source "$XDG_RUNTIME_DIR/ssh-agent.env" >/dev/null source "$XDG_RUNTIME_DIR/ssh-agent.env" >/dev/null
fi fi
{% endif %} {% endif %}
{% if distro == 'ubuntu' %}
alias imv=imv-x11
{% endif %}