Remove ubuntu support
This commit is contained in:
13
install.sh
13
install.sh
@@ -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
|
||||||
|
|||||||
153
packages.yml
153
packages.yml
@@ -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,393 +28,258 @@ packages:
|
|||||||
- xorg-xset
|
- xorg-xset
|
||||||
- xorg-xinit
|
- xorg-xinit
|
||||||
dmenu:
|
dmenu:
|
||||||
ubuntu: ["dmenu"]
|
|
||||||
archlinux: ["dmenu"]
|
archlinux: ["dmenu"]
|
||||||
ansible:
|
ansible:
|
||||||
ubuntu: ["ansible"]
|
|
||||||
archlinux: ["ansible"]
|
archlinux: ["ansible"]
|
||||||
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: ["i3-wm"]
|
archlinux: ["i3-wm"]
|
||||||
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:
|
py3status:
|
||||||
ubuntu: ["py3status", "python3-arrow", "python3-tzlocal", "python3-pydbus"]
|
|
||||||
archlinux: ["py3status", "python-pytz", "python-tzlocal", "python-dbus", "python-pydbus"]
|
archlinux: ["py3status", "python-pytz", "python-tzlocal", "python-dbus", "python-pydbus"]
|
||||||
pass:
|
pass:
|
||||||
ubuntu: ["pass"]
|
|
||||||
archlinux: ["pass", "passff-host"]
|
archlinux: ["pass", "passff-host"]
|
||||||
keepassx:
|
keepassx:
|
||||||
ubuntu: ["keepassx"]
|
|
||||||
archlinux: []
|
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: ["python3"]
|
archlinux: ["python3"]
|
||||||
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"]
|
||||||
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: ["pulseaudio", "pulseaudio-alsa", "lib32-libpulse"]
|
archlinux: ["pulseaudio", "pulseaudio-alsa", "lib32-libpulse"]
|
||||||
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:
|
kubectl:
|
||||||
ubuntu: []
|
|
||||||
archlinux: ["kubectl"]
|
archlinux: ["kubectl"]
|
||||||
bind:
|
bind:
|
||||||
ubuntu: []
|
|
||||||
archlinux: ["bind"]
|
archlinux: ["bind"]
|
||||||
fzf:
|
fzf:
|
||||||
ubuntu: []
|
|
||||||
archlinux: ["fzf"]
|
archlinux: ["fzf"]
|
||||||
chromium:
|
chromium:
|
||||||
ubuntu: []
|
|
||||||
archlinux: ["chromium"]
|
archlinux: ["chromium"]
|
||||||
|
signal:
|
||||||
|
archlinux: ["signal-desktop"]
|
||||||
|
go:
|
||||||
|
archlinux: ["go", "gopls"]
|
||||||
|
|
||||||
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"]
|
||||||
|
|||||||
467
playbook.yml
467
playbook.yml
@@ -23,31 +23,17 @@
|
|||||||
|
|
||||||
- name: check for valid distro
|
- name: check for valid distro
|
||||||
assert:
|
assert:
|
||||||
that: distro in ('ubuntu', 'archlinux')
|
that: distro in ('archlinux')
|
||||||
|
|
||||||
- block:
|
- block:
|
||||||
- block:
|
- name: upgrade system
|
||||||
- name: update apt cache
|
pacman:
|
||||||
apt:
|
upgrade: true
|
||||||
update_cache: true
|
update_cache: true
|
||||||
become: true
|
become: true
|
||||||
changed_when: false
|
changed_when: false
|
||||||
|
|
||||||
- name: upgrade system
|
tags: [system-update]
|
||||||
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 +45,6 @@
|
|||||||
packages:
|
packages:
|
||||||
archlinux:
|
archlinux:
|
||||||
- python-jmespath
|
- python-jmespath
|
||||||
ubuntu:
|
|
||||||
- python3-jmespath
|
|
||||||
|
|
||||||
- block:
|
- block:
|
||||||
- name: enable multilib repository
|
- name: enable multilib repository
|
||||||
@@ -81,13 +65,6 @@
|
|||||||
marker: "# {mark} ANSIBLE MANAGED parallel_download"
|
marker: "# {mark} ANSIBLE MANAGED parallel_download"
|
||||||
become: true
|
become: true
|
||||||
|
|
||||||
- name: upgrade system
|
|
||||||
pacman:
|
|
||||||
upgrade: true
|
|
||||||
update_cache: true
|
|
||||||
become: true
|
|
||||||
changed_when: false
|
|
||||||
|
|
||||||
- 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]
|
||||||
|
|
||||||
|
|||||||
147
user.yml
147
user.yml
@@ -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:
|
||||||
@@ -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
|
||||||
|
|||||||
@@ -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
|
|
||||||
|
|||||||
@@ -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 %}
|
|
||||||
|
|||||||
Reference in New Issue
Block a user