From 32eca75f4e640f80a309c44f6d1cb1d96998f392 Mon Sep 17 00:00:00 2001 From: Tom Alexander Date: Mon, 22 Apr 2024 17:23:20 -0400 Subject: [PATCH] Set up home server. --- .../environments/home/host_vars/homeserver | 20 ++++ .../environments/laptop/host_vars/odofreebsd | 2 +- .../vm/host_vars/poudrieremrmanager | 1 + ansible/playbook.yaml | 1 + ansible/roles/base/files/alacritty.termcap | 24 ---- ansible/roles/base/meta/main.yaml | 1 + ansible/roles/base/tasks/common.yaml | 10 +- ansible/roles/base/tasks/freebsd.yaml | 22 ---- ansible/roles/emacs/tasks/freebsd.yaml | 8 ++ .../network/files/homeserver_network.conf | 2 +- .../package_manager/templates/custom.conf.j2 | 3 +- .../14broadwell-default-computer-pkglist | 31 +++++ .../currentznver4-default-framework-pkglist | 1 + .../files/poudriere_schedule_build.bash | 2 +- ansible/roles/sound/tasks/freebsd.yaml | 7 ++ ansible/roles/termcap/files/alacritty.info | 112 ++++++++++++++++++ ansible/roles/termcap/files/alacritty.termcap | 50 ++++++++ ansible/roles/termcap/tasks/common.yaml | 55 +++++++++ ansible/roles/termcap/tasks/freebsd.yaml | 32 +++++ ansible/roles/termcap/tasks/linux.yaml | 29 +++++ ansible/roles/termcap/tasks/main.yaml | 2 + ansible/roles/termcap/tasks/peruser.yaml | 29 +++++ .../roles/termcap/tasks/peruser_freebsd.yaml | 0 .../roles/termcap/tasks/peruser_linux.yaml | 0 ansible/roles/webcam/tasks/freebsd.yaml | 8 +- 25 files changed, 398 insertions(+), 54 deletions(-) delete mode 100644 ansible/roles/base/files/alacritty.termcap create mode 100644 ansible/roles/termcap/files/alacritty.info create mode 100644 ansible/roles/termcap/files/alacritty.termcap create mode 100644 ansible/roles/termcap/tasks/common.yaml create mode 100644 ansible/roles/termcap/tasks/freebsd.yaml create mode 100644 ansible/roles/termcap/tasks/linux.yaml create mode 100644 ansible/roles/termcap/tasks/main.yaml create mode 100644 ansible/roles/termcap/tasks/peruser.yaml create mode 100644 ansible/roles/termcap/tasks/peruser_freebsd.yaml create mode 100644 ansible/roles/termcap/tasks/peruser_linux.yaml diff --git a/ansible/environments/home/host_vars/homeserver b/ansible/environments/home/host_vars/homeserver index af67a67..c92a469 100644 --- a/ansible/environments/home/host_vars/homeserver +++ b/ansible/environments/home/host_vars/homeserver @@ -1,7 +1,27 @@ os_flavor: "freebsd" +custom_repo: "https://freebsdpkg.fizz.buzz/repo/14broadwell-default-computer" +pkgbase_url: "https://freebsdpkg.fizz.buzz/pkgbase/14broadwell-repo/FreeBSD:14:amd64/latest" zfs_snapshot_datasets: - path: zroot/freebsd/computer/be - path: zmass/encrypted/vm +users: + talexander: + initialize: true + uid: 11235 + gid: 11235 + groups: + - name: wheel + - name: video + - name: u2f + - name: operator # To be able to shutdown without root + - name: webcamd + gid: 145 + authorized_keys: + - yubikey + - main_fido + - backup_fido + - homeassistant + gitconfig: "gitconfig_home" sshd_enabled: true sshd_conf: "sshd_config" pf_config: "homeserver_pf.conf" diff --git a/ansible/environments/laptop/host_vars/odofreebsd b/ansible/environments/laptop/host_vars/odofreebsd index 61ed5bc..802dfdb 100644 --- a/ansible/environments/laptop/host_vars/odofreebsd +++ b/ansible/environments/laptop/host_vars/odofreebsd @@ -1,5 +1,5 @@ os_flavor: "freebsd" -custom_repo: currentznver4-default-framework +custom_repo: "https://freebsdpkg.fizz.buzz/repo/currentznver4-default-framework" pkgbase_url: "https://freebsdpkg.fizz.buzz/pkgbase/currentznver4-repo/FreeBSD:15:amd64/latest" zfs_snapshot_datasets: - path: zroot/freebsd/current/be/default diff --git a/ansible/environments/vm/host_vars/poudrieremrmanager b/ansible/environments/vm/host_vars/poudrieremrmanager index c9551ff..6588214 100644 --- a/ansible/environments/vm/host_vars/poudrieremrmanager +++ b/ansible/environments/vm/host_vars/poudrieremrmanager @@ -1,4 +1,5 @@ os_flavor: "freebsd" +custom_repo: "file:///usr/local/poudriere/data/packages/currentznver4-default-framework" pkgbase_url: "file:///usr/local/poudriere/data/images/currentznver4-repo/FreeBSD:15:amd64/latest" poudriere_builds: # - jail: 13amd64 diff --git a/ansible/playbook.yaml b/ansible/playbook.yaml index 7f7e9eb..3cdc51a 100644 --- a/ansible/playbook.yaml +++ b/ansible/playbook.yaml @@ -68,6 +68,7 @@ - sudo # for poudboot script - fstab - package_manager + - termcap - portshaker - poudriere - poudrierenginx diff --git a/ansible/roles/base/files/alacritty.termcap b/ansible/roles/base/files/alacritty.termcap deleted file mode 100644 index bbbc65f..0000000 --- a/ansible/roles/base/files/alacritty.termcap +++ /dev/null @@ -1,24 +0,0 @@ -# Reconstructed via infocmp from file: /usr/share/terminfo/a/alacritty -# (untranslatable capabilities removed to fit entry within 1023 bytes) -# (sgr removed to fit entry within 1023 bytes) -# (acsc removed to fit entry within 1023 bytes) -# (terminfo-only capabilities suppressed to fit entry within 1023 bytes) -alacritty|alacritty terminal emulator:\ - :am:bs:hs:mi:ms:xn:\ - :co#80:it#8:li#24:\ - :AL=\E[%dL:DC=\E[%dP:DL=\E[%dM:DO=\E[%dB:IC=\E[%d@:\ - :K2=\EOE:LE=\E[%dD:RI=\E[%dC:SF=\E[%dS:SR=\E[%dT:\ - :UP=\E[%dA:ae=\E(B:al=\E[L:as=\E(0:bl=^G:bt=\E[Z:cd=\E[J:\ - :ce=\E[K:cl=\E[H\E[2J:cm=\E[%i%d;%dH:cr=\r:\ - :cs=\E[%i%d;%dr:ct=\E[3g:dc=\E[P:dl=\E[M:do=\n:\ - :ds=\E]2;\007:ec=\E[%dX:ei=\E[4l:fs=^G:ho=\E[H:im=\E[4h:\ - :is=\E[!p\E[?3;4l\E[4l\E>:k1=\EOP:k2=\EOQ:k3=\EOR:\ - :k4=\EOS:k5=\E[15~:k6=\E[17~:k7=\E[18~:k8=\E[19~:\ - :k9=\E[20~:kD=\E[3~:kI=\E[2~:kN=\E[6~:kP=\E[5~:kb=\177:\ - :kd=\EOB:ke=\E[?1l\E>:kh=\EOH:kl=\EOD:kr=\EOC:\ - :ks=\E[?1h\E=:ku=\EOA:le=^H:mb=\E[5m:md=\E[1m:me=\E[0m:\ - :mh=\E[2m:mm=\E[?1034h:mo=\E[?1034l:mr=\E[7m:nd=\E[C:\ - :rc=\E8:sc=\E7:se=\E[27m:sf=\n:so=\E[7m:sr=\EM:st=\EH:ta=^I:\ - :te=\E[?1049l\E[23;0;0t:ti=\E[?1049h\E[22;0;0t:\ - :ts=\E]2;:ue=\E[24m:up=\E[A:us=\E[4m:vb=\E[?5h\E[?5l:\ - :ve=\E[?12l\E[?25h:vi=\E[?25l:vs=\E[?12;25h: diff --git a/ansible/roles/base/meta/main.yaml b/ansible/roles/base/meta/main.yaml index 44e74e2..405f132 100644 --- a/ansible/roles/base/meta/main.yaml +++ b/ansible/roles/base/meta/main.yaml @@ -1,2 +1,3 @@ dependencies: - fstab + - termcap diff --git a/ansible/roles/base/tasks/common.yaml b/ansible/roles/base/tasks/common.yaml index f83db1f..0790f6c 100644 --- a/ansible/roles/base/tasks/common.yaml +++ b/ansible/roles/base/tasks/common.yaml @@ -16,13 +16,19 @@ - wget - colordiff - ipcalc - - kdiff3 - - meld - tcpdump - moreutils # for ts [%Y-%m-%d %H:%M:%.S] - ddrescue state: present +- name: Install packages + when: install_graphics + package: + name: + - kdiff3 + - meld + state: present + - name: Set timezone file: src: "/usr/share/zoneinfo/{{ timezone|default('UTC') }}" diff --git a/ansible/roles/base/tasks/freebsd.yaml b/ansible/roles/base/tasks/freebsd.yaml index 05ba700..f0ad089 100644 --- a/ansible/roles/base/tasks/freebsd.yaml +++ b/ansible/roles/base/tasks/freebsd.yaml @@ -7,28 +7,6 @@ - rust-coreutils state: present -- name: See if the alacritty termcap has been added - lineinfile: - name: /usr/share/misc/termcap - regexp: |- - ^alacritty\| - state: absent - check_mode: yes - changed_when: false - register: alacritty_cap - -- name: Append alacritty termcap info - blockinfile: - path: /usr/share/misc/termcap - block: "{{ lookup('file', 'alacritty.termcap') }}" - marker: "# {mark} ANSIBLE MANAGED BLOCK alacritty" - when: not alacritty_cap.found - register: wrote_alacritty_cap - -- name: Update cap_mkdb - command: cap_mkdb /usr/share/misc/termcap - when: wrote_alacritty_cap.changed - - name: Install login.conf copy: src: login.conf diff --git a/ansible/roles/emacs/tasks/freebsd.yaml b/ansible/roles/emacs/tasks/freebsd.yaml index e5fe64e..cde4ccc 100644 --- a/ansible/roles/emacs/tasks/freebsd.yaml +++ b/ansible/roles/emacs/tasks/freebsd.yaml @@ -1,9 +1,17 @@ - name: Install packages + when: install_graphics package: name: - emacs state: present +- name: Install packages + when: not install_graphics + package: + name: + - emacs-nox + state: present + - name: Install packages when: 'emacs_flavor == "full"' package: diff --git a/ansible/roles/network/files/homeserver_network.conf b/ansible/roles/network/files/homeserver_network.conf index 21dfca2..bc9cca2 100644 --- a/ansible/roles/network/files/homeserver_network.conf +++ b/ansible/roles/network/files/homeserver_network.conf @@ -1,3 +1,3 @@ -wlans_rtwn0="wlan0" +wlans_ath0="wlan0" ifconfig_wlan0="WPA DHCP" ifconfig_wlan0_ipv6="inet6 accept_rtadv" diff --git a/ansible/roles/package_manager/templates/custom.conf.j2 b/ansible/roles/package_manager/templates/custom.conf.j2 index 7aa8628..1944df8 100644 --- a/ansible/roles/package_manager/templates/custom.conf.j2 +++ b/ansible/roles/package_manager/templates/custom.conf.j2 @@ -1,6 +1,5 @@ custom: { - # url: "file:///opt/pkgrepo/packages/current-default-framework" - url: "https://freebsdpkg.fizz.buzz/repo/{{ custom_repo }}", + url: "{{ custom_repo }}", enabled: yes, signature_type: "pubkey", pubkey: "/usr/local/etc/pkg/poudriere.pub", diff --git a/ansible/roles/poudriere/files/poudriere.d/14broadwell-default-computer-pkglist b/ansible/roles/poudriere/files/poudriere.d/14broadwell-default-computer-pkglist index 4293572..be9fd9a 100644 --- a/ansible/roles/poudriere/files/poudriere.d/14broadwell-default-computer-pkglist +++ b/ansible/roles/poudriere/files/poudriere.d/14broadwell-default-computer-pkglist @@ -1,13 +1,26 @@ +audio/mixertui devel/git +devel/libccid +devel/pyenv +devel/py-jmespath +devel/py-yamllint editors/emacs@nox editors/mg ftp/wget +graphics/ImageMagick7 lang/python +multimedia/ffmpeg +multimedia/v4l-utils +multimedia/webcamd +net/google-cloud-sdk +net-mgmt/ipcalc net/rsync net/tcpdump net/wireguard-tools ports-mgmt/pkg ports-mgmt/pkg-provides +print/texlive-full +security/cfssl security/doas security/git-crypt security/gnupg @@ -22,13 +35,31 @@ shells/zsh sysutils/ansible sysutils/ansible-sshjail sysutils/bhyve-firmware +sysutils/btop sysutils/cpu-microcode +sysutils/ddrescue sysutils/exfat-utils +sysutils/fusefs-exfat +sysutils/fusefs-sshfs +sysutils/helm sysutils/htop +sysutils/kubectl +sysutils/lscpu +sysutils/lsof +sysutils/moreutils +sysutils/ncdu +sysutils/nvme-cli +sysutils/powerdxx +sysutils/powermon +sysutils/pstree +sysutils/rust-coreutils sysutils/tmux sysutils/tree sysutils/zrepl textproc/aspell textproc/colordiff textproc/en-aspell +textproc/gsed +textproc/jq textproc/ripgrep +www/yt-dlp diff --git a/ansible/roles/poudriere/files/poudriere.d/currentznver4-default-framework-pkglist b/ansible/roles/poudriere/files/poudriere.d/currentznver4-default-framework-pkglist index 1151b5d..5298568 100644 --- a/ansible/roles/poudriere/files/poudriere.d/currentznver4-default-framework-pkglist +++ b/ansible/roles/poudriere/files/poudriere.d/currentznver4-default-framework-pkglist @@ -35,6 +35,7 @@ graphics/vulkan-validation-layers lang/python lang/rust-nightly math/gnuplot +multimedia/ffmpeg multimedia/libva-intel-driver multimedia/libva-intel-media-driver multimedia/libva-utils diff --git a/ansible/roles/poudriere/files/poudriere_schedule_build.bash b/ansible/roles/poudriere/files/poudriere_schedule_build.bash index 7572229..fd33b58 100755 --- a/ansible/roles/poudriere/files/poudriere_schedule_build.bash +++ b/ansible/roles/poudriere/files/poudriere_schedule_build.bash @@ -5,7 +5,7 @@ IFS=$'\n\t' DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" function main { - find / -type f -name times -exec sed -E -i 's/LASTBUILD=.*/LASTBUILD=0/' {} \; + find / -type f -name times -exec sed -E -i '' 's/LASTBUILD=.*/LASTBUILD=0/' {} \; } main "${@}" diff --git a/ansible/roles/sound/tasks/freebsd.yaml b/ansible/roles/sound/tasks/freebsd.yaml index 5be42d0..6c654de 100644 --- a/ansible/roles/sound/tasks/freebsd.yaml +++ b/ansible/roles/sound/tasks/freebsd.yaml @@ -2,9 +2,16 @@ package: name: - mixertui + state: present + +- name: Install packages + when: install_graphics + package: + name: - pavucontrol state: present + - name: Configure sysctls ignore_errors: true when: sound_default_unit is defined diff --git a/ansible/roles/termcap/files/alacritty.info b/ansible/roles/termcap/files/alacritty.info new file mode 100644 index 0000000..d771088 --- /dev/null +++ b/ansible/roles/termcap/files/alacritty.info @@ -0,0 +1,112 @@ +alacritty|alacritty terminal emulator, + use=alacritty+common, + rs1=\Ec\E]104\007, + ccc, + colors#0x100, pairs#0x7FFF, + initc=\E]4;%p1%d;rgb\:%p2%{255}%*%{1000}%/%2.2X/%p3%{255}%* + %{1000}%/%2.2X/%p4%{255}%*%{1000}%/%2.2X\E\\, + oc=\E]104\007, + setab=\E[%?%p1%{8}%<%t4%p1%d%e%p1%{16}%<%t10%p1%{8}%-%d%e48; + 5;%p1%d%;m, + setaf=\E[%?%p1%{8}%<%t3%p1%d%e%p1%{16}%<%t9%p1%{8}%-%d%e38;5 + ;%p1%d%;m, + setb@, setf@, + +alacritty-direct|alacritty with direct color indexing, + use=alacritty+common, + RGB, + colors#0x1000000, pairs#0x7FFF, + initc@, op=\E[39;49m, + setab=\E[%?%p1%{8}%<%t4%p1%d%e48\:2\:\:%p1%{65536}%/%d\:%p1%{256} + %/%{255}%&%d\:%p1%{255}%&%d%;m, + setaf=\E[%?%p1%{8}%<%t3%p1%d%e38\:2\:\:%p1%{65536}%/%d\:%p1%{256} + %/%{255}%&%d\:%p1%{255}%&%d%;m, + setb@, setf@, + +alacritty+common|base fragment for alacritty, + OTbs, am, bce, km, mir, msgr, xenl, AX, XT, + colors#8, cols#80, it#8, lines#24, pairs#64, + acsc=``aaffggiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~, + bel=^G, bold=\E[1m, cbt=\E[Z, civis=\E[?25l, + clear=\E[H\E[2J, cnorm=\E[?12l\E[?25h, cr=\r, + csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H, + cud=\E[%p1%dB, cud1=\n, cuf=\E[%p1%dC, cuf1=\E[C, + cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A, + cvvis=\E[?12;25h, dch=\E[%p1%dP, dch1=\E[P, dim=\E[2m, + dl=\E[%p1%dM, dl1=\E[M, ech=\E[%p1%dX, ed=\E[J, el=\E[K, + el1=\E[1K, flash=\E[?5h$<100/>\E[?5l, home=\E[H, + hpa=\E[%i%p1%dG, ht=^I, hts=\EH, ich=\E[%p1%d@, + il=\E[%p1%dL, il1=\E[L, ind=\n, invis=\E[8m, + is2=\E[!p\E[?3;4l\E[4l\E>, kmous=\E[M, meml=\El, + memu=\Em, op=\E[39;49m, rc=\E8, rev=\E[7m, ri=\EM, + rmacs=\E(B, rmam=\E[?7l, rmir=\E[4l, rmkx=\E[?1l\E>, + rmm=\E[?1034l, rmso=\E[27m, rmul=\E[24m, rs1=\Ec, + rs2=\E[!p\E[?3;4l\E[4l\E>, sc=\E7, setab=\E[4%p1%dm, + setaf=\E[3%p1%dm, + setb=\E[4%?%p1%{1}%=%t4%e%p1%{3}%=%t6%e%p1%{4}%=%t1%e%p1%{6} + %=%t3%e%p1%d%;m, + setf=\E[3%?%p1%{1}%=%t4%e%p1%{3}%=%t6%e%p1%{4}%=%t1%e%p1%{6} + %=%t3%e%p1%d%;m, + sgr=%?%p9%t\E(0%e\E(B%;\E[0%?%p6%t;1%;%?%p5%t;2%;%?%p2%t;4%; + %?%p1%p3%|%t;7%;%?%p4%t;5%;%?%p7%t;8%;m, + sgr0=\E(B\E[m, smacs=\E(0, smam=\E[?7h, smir=\E[4h, + smkx=\E[?1h\E=, smm=\E[?1034h, smso=\E[7m, smul=\E[4m, + tbc=\E[3g, vpa=\E[%i%p1%dd, E3=\E[3J, + kbs=^?, + ritm=\E[23m, sitm=\E[3m, + mc5i, + mc0=\E[i, mc4=\E[4i, mc5=\E[5i, + u6=\E[%i%d;%dR, u7=\E[6n, u8=\E[?%[;0123456789]c, + u9=\E[c, + rmcup=\E[?1049l\E[23;0;0t, smcup=\E[?1049h\E[22;0;0t, + npc, + indn=\E[%p1%dS, kb2=\EOE, kcbt=\E[Z, kent=\EOM, + rin=\E[%p1%dT, + rep=%p1%c\E[%p2%{1}%-%db, + rmxx=\E[29m, smxx=\E[9m, + kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA, kend=\EOF, + khome=\EOH, + kf1=\EOP, kf10=\E[21~, kf11=\E[23~, kf12=\E[24~, + kf13=\E[1;2P, kf14=\E[1;2Q, kf15=\E[1;2R, kf16=\E[1;2S, + kf17=\E[15;2~, kf18=\E[17;2~, kf19=\E[18;2~, kf2=\EOQ, + kf20=\E[19;2~, kf21=\E[20;2~, kf22=\E[21;2~, + kf23=\E[23;2~, kf24=\E[24;2~, kf25=\E[1;5P, kf26=\E[1;5Q, + kf27=\E[1;5R, kf28=\E[1;5S, kf29=\E[15;5~, kf3=\EOR, + kf30=\E[17;5~, kf31=\E[18;5~, kf32=\E[19;5~, + kf33=\E[20;5~, kf34=\E[21;5~, kf35=\E[23;5~, + kf36=\E[24;5~, kf37=\E[1;6P, kf38=\E[1;6Q, kf39=\E[1;6R, + kf4=\EOS, kf40=\E[1;6S, kf41=\E[15;6~, kf42=\E[17;6~, + kf43=\E[18;6~, kf44=\E[19;6~, kf45=\E[20;6~, + kf46=\E[21;6~, kf47=\E[23;6~, kf48=\E[24;6~, + kf49=\E[1;3P, kf5=\E[15~, kf50=\E[1;3Q, kf51=\E[1;3R, + kf52=\E[1;3S, kf53=\E[15;3~, kf54=\E[17;3~, + kf55=\E[18;3~, kf56=\E[19;3~, kf57=\E[20;3~, + kf58=\E[21;3~, kf59=\E[23;3~, kf6=\E[17~, kf60=\E[24;3~, + kf61=\E[1;4P, kf62=\E[1;4Q, kf63=\E[1;4R, kf7=\E[18~, + kf8=\E[19~, kf9=\E[20~, + kLFT=\E[1;2D, kRIT=\E[1;2C, kind=\E[1;2B, kri=\E[1;2A, + kDN=\E[1;2B, kDN3=\E[1;3B, kDN4=\E[1;4B, kDN5=\E[1;5B, + kDN6=\E[1;6B, kDN7=\E[1;7B, kLFT3=\E[1;3D, kLFT4=\E[1;4D, + kLFT5=\E[1;5D, kLFT6=\E[1;6D, kLFT7=\E[1;7D, + kRIT3=\E[1;3C, kRIT4=\E[1;4C, kRIT5=\E[1;5C, + kRIT6=\E[1;6C, kRIT7=\E[1;7C, kUP=\E[1;2A, kUP3=\E[1;3A, + kUP4=\E[1;4A, kUP5=\E[1;5A, kUP6=\E[1;6A, kUP7=\E[1;7A, + kDC=\E[3;2~, kEND=\E[1;2F, kHOM=\E[1;2H, kIC=\E[2;2~, + kNXT=\E[6;2~, kPRV=\E[5;2~, kich1=\E[2~, knp=\E[6~, + kpp=\E[5~, kDC3=\E[3;3~, kDC4=\E[3;4~, kDC5=\E[3;5~, + kDC6=\E[3;6~, kDC7=\E[3;7~, kEND3=\E[1;3F, kEND4=\E[1;4F, + kEND5=\E[1;5F, kEND6=\E[1;6F, kEND7=\E[1;7F, + kHOM3=\E[1;3H, kHOM4=\E[1;4H, kHOM5=\E[1;5H, + kHOM6=\E[1;6H, kHOM7=\E[1;7H, kIC3=\E[2;3~, kIC4=\E[2;4~, + kIC5=\E[2;5~, kIC6=\E[2;6~, kIC7=\E[2;7~, kNXT3=\E[6;3~, + kNXT4=\E[6;4~, kNXT5=\E[6;5~, kNXT6=\E[6;6~, + kNXT7=\E[6;7~, kPRV3=\E[5;3~, kPRV4=\E[5;4~, + kPRV5=\E[5;5~, kPRV6=\E[5;6~, kPRV7=\E[5;7~, + kdch1=\E[3~, + Cr=\E]112\007, Cs=\E]12;%p1%s\007, + Ms=\E]52;%p1%s;%p2%s\007, Se=\E[0 q, Ss=\E[%p1%d q, + hs, dsl=\E]2;\007, fsl=^G, tsl=\E]2;, + Smulx=\E[4\:%p1%dm, + Sync=\E[?2026%?%p1%{1}%-%tl%eh%;, + XF, kxIN=\E[I, kxOUT=\E[O, + BD=\E[?2004l, BE=\E[?2004h, PE=\E[201~, PS=\E[200~, diff --git a/ansible/roles/termcap/files/alacritty.termcap b/ansible/roles/termcap/files/alacritty.termcap new file mode 100644 index 0000000..ec2a7a5 --- /dev/null +++ b/ansible/roles/termcap/files/alacritty.termcap @@ -0,0 +1,50 @@ +# Reconstructed via infocmp from file: /usr/share/terminfo/a/alacritty +# (untranslatable capabilities removed to fit entry within 1023 bytes) +# (sgr removed to fit entry within 1023 bytes) +# (acsc removed to fit entry within 1023 bytes) +# (terminfo-only capabilities suppressed to fit entry within 1023 bytes) +alacritty|alacritty terminal emulator:\ + :am:bs:hs:mi:ms:xn:\ + :co#80:it#8:li#24:\ + :AL=\E[%dL:DC=\E[%dP:DL=\E[%dM:DO=\E[%dB:IC=\E[%d@:\ + :K2=\EOE:LE=\E[%dD:RI=\E[%dC:SF=\E[%dS:SR=\E[%dT:\ + :UP=\E[%dA:ae=\E(B:al=\E[L:as=\E(0:bl=^G:bt=\E[Z:cd=\E[J:\ + :ce=\E[K:cl=\E[H\E[2J:cm=\E[%i%d;%dH:cr=\r:\ + :cs=\E[%i%d;%dr:ct=\E[3g:dc=\E[P:dl=\E[M:do=\n:\ + :ds=\E]2;\007:ec=\E[%dX:ei=\E[4l:fs=^G:ho=\E[H:im=\E[4h:\ + :is=\E[!p\E[?3;4l\E[4l\E>:k1=\EOP:k2=\EOQ:k3=\EOR:\ + :k4=\EOS:k5=\E[15~:k6=\E[17~:k7=\E[18~:k8=\E[19~:\ + :k9=\E[20~:kD=\E[3~:kI=\E[2~:kN=\E[6~:kP=\E[5~:kb=\177:\ + :kd=\EOB:ke=\E[?1l\E>:kh=\EOH:kl=\EOD:kr=\EOC:\ + :ks=\E[?1h\E=:ku=\EOA:le=^H:mb=\E[5m:md=\E[1m:me=\E[0m:\ + :mh=\E[2m:mm=\E[?1034h:mo=\E[?1034l:mr=\E[7m:nd=\E[C:\ + :rc=\E8:sc=\E7:se=\E[27m:sf=\n:so=\E[7m:sr=\EM:st=\EH:ta=^I:\ + :te=\E[?1049l\E[23;0;0t:ti=\E[?1049h\E[22;0;0t:\ + :ts=\E]2;:ue=\E[24m:up=\E[A:us=\E[4m:vb=\E[?5h\E[?5l:\ + :ve=\E[?12l\E[?25h:vi=\E[?25l:vs=\E[?12;25h: + + +# Reconstructed via infocmp from file: /usr/share/terminfo/a/alacritty-direct +# (untranslatable capabilities removed to fit entry within 1023 bytes) +# (sgr removed to fit entry within 1023 bytes) +# (acsc removed to fit entry within 1023 bytes) +# (terminfo-only capabilities suppressed to fit entry within 1023 bytes) +alacritty-direct|alacritty with direct color indexing:\ + :am:bs:hs:mi:ms:xn:\ + :co#80:it#8:li#24:\ + :AL=\E[%dL:DC=\E[%dP:DL=\E[%dM:DO=\E[%dB:IC=\E[%d@:\ + :K2=\EOE:LE=\E[%dD:RI=\E[%dC:SF=\E[%dS:SR=\E[%dT:\ + :UP=\E[%dA:ae=\E(B:al=\E[L:as=\E(0:bl=^G:bt=\E[Z:cd=\E[J:\ + :ce=\E[K:cl=\E[H\E[2J:cm=\E[%i%d;%dH:cr=\r:\ + :cs=\E[%i%d;%dr:ct=\E[3g:dc=\E[P:dl=\E[M:do=\n:\ + :ds=\E]2;\007:ec=\E[%dX:ei=\E[4l:fs=^G:ho=\E[H:im=\E[4h:\ + :is=\E[!p\E[?3;4l\E[4l\E>:k1=\EOP:k2=\EOQ:k3=\EOR:\ + :k4=\EOS:k5=\E[15~:k6=\E[17~:k7=\E[18~:k8=\E[19~:\ + :k9=\E[20~:kD=\E[3~:kI=\E[2~:kN=\E[6~:kP=\E[5~:kb=\177:\ + :kd=\EOB:ke=\E[?1l\E>:kh=\EOH:kl=\EOD:kr=\EOC:\ + :ks=\E[?1h\E=:ku=\EOA:le=^H:mb=\E[5m:md=\E[1m:me=\E[0m:\ + :mh=\E[2m:mm=\E[?1034h:mo=\E[?1034l:mr=\E[7m:nd=\E[C:\ + :rc=\E8:sc=\E7:se=\E[27m:sf=\n:so=\E[7m:sr=\EM:st=\EH:ta=^I:\ + :te=\E[?1049l\E[23;0;0t:ti=\E[?1049h\E[22;0;0t:\ + :ts=\E]2;:ue=\E[24m:up=\E[A:us=\E[4m:vb=\E[?5h\E[?5l:\ + :ve=\E[?12l\E[?25h:vi=\E[?25l:vs=\E[?12;25h: diff --git a/ansible/roles/termcap/tasks/common.yaml b/ansible/roles/termcap/tasks/common.yaml new file mode 100644 index 0000000..bef243a --- /dev/null +++ b/ansible/roles/termcap/tasks/common.yaml @@ -0,0 +1,55 @@ +# - name: Create directories +# file: +# name: "{{ item }}" +# state: directory +# mode: 0755 +# owner: root +# group: wheel +# loop: +# - /foo/bar + +# - name: Install scripts +# copy: +# src: "files/{{ item.src }}" +# dest: "{{ item.dest }}" +# mode: 0755 +# owner: root +# group: wheel +# loop: +# - src: foo.bash +# dest: /usr/local/bin/foo + +# - name: Install Configuration +# copy: +# src: "files/{{ item.src }}" +# dest: "{{ item.dest }}" +# mode: 0600 +# owner: root +# group: wheel +# loop: +# - src: foo.conf +# dest: /usr/local/etc/foo.conf + +# - name: Clone Source +# git: +# repo: "https://foo.bar/baz.git" +# dest: /foo/bar +# version: "v1.0.2" +# force: true +# diff: false + +- import_tasks: tasks/freebsd.yaml + when: 'os_flavor == "freebsd"' + +- import_tasks: tasks/linux.yaml + when: 'os_flavor == "linux"' + +- include_tasks: + file: tasks/peruser.yaml + apply: + become: yes + become_user: "{{ initialize_user }}" + when: users is defined + loop: "{{ users | dict2items | community.general.json_query('[?value.initialize==`true`].key') }}" + loop_control: + loop_var: initialize_user diff --git a/ansible/roles/termcap/tasks/freebsd.yaml b/ansible/roles/termcap/tasks/freebsd.yaml new file mode 100644 index 0000000..69bc615 --- /dev/null +++ b/ansible/roles/termcap/tasks/freebsd.yaml @@ -0,0 +1,32 @@ +# FreeBSD 14 added support for terminfo, so I'm leaving the termcap stuff commented out in case I need it. + +# - name: See if the alacritty termcap has been added +# lineinfile: +# name: /usr/share/misc/termcap +# regexp: |- +# ^alacritty\| +# state: absent +# check_mode: false +# changed_when: false +# register: alacritty_cap + +# # Termcap generated by: +# # cat <(infocmp -Cr alacritty) <(infocmp -Cr alacritty-direct) +# - name: Append alacritty termcap info +# blockinfile: +# path: /usr/share/misc/termcap +# block: "{{ lookup('file', 'alacritty.termcap') }}" +# marker: "# {mark} ANSIBLE MANAGED BLOCK alacritty" +# when: not alacritty_cap.found +# register: wrote_alacritty_cap + +# - name: Update cap_mkdb +# command: cap_mkdb /usr/share/misc/termcap +# when: wrote_alacritty_cap.changed + +- name: Append alacritty terminfo + command: "tic -xe alacritty,alacritty-direct -" + args: + creates: "/usr/share/terminfo/a/alacritty-direct" + # Also creates: "/usr/share/terminfo/a/alacritty" + stdin: "{{ lookup('file', 'files/alacritty.info') }}" diff --git a/ansible/roles/termcap/tasks/linux.yaml b/ansible/roles/termcap/tasks/linux.yaml new file mode 100644 index 0000000..bbbb096 --- /dev/null +++ b/ansible/roles/termcap/tasks/linux.yaml @@ -0,0 +1,29 @@ +# - name: Build aur packages +# register: buildaur +# become_user: "{{ build_user.name }}" +# command: "aurutils-sync --no-view {{ item }}" +# args: +# creates: "/var/cache/pacman/custom/{{ item }}-*.pkg.tar.*" +# loop: +# - foo + +# - name: Update cache +# when: buildaur.changed +# pacman: +# name: [] +# state: present +# update_cache: true + +# - name: Install packages +# package: +# name: +# - foo +# state: present + +# - name: Enable services +# systemd: +# enabled: yes +# name: "{{ item }}" +# daemon_reload: yes +# loop: +# - foo.service diff --git a/ansible/roles/termcap/tasks/main.yaml b/ansible/roles/termcap/tasks/main.yaml new file mode 100644 index 0000000..6805b9d --- /dev/null +++ b/ansible/roles/termcap/tasks/main.yaml @@ -0,0 +1,2 @@ +- import_tasks: tasks/common.yaml + # when: foo is defined diff --git a/ansible/roles/termcap/tasks/peruser.yaml b/ansible/roles/termcap/tasks/peruser.yaml new file mode 100644 index 0000000..111e886 --- /dev/null +++ b/ansible/roles/termcap/tasks/peruser.yaml @@ -0,0 +1,29 @@ +- include_role: + name: per_user + +# - name: Create directories +# file: +# name: "{{ account_homedir.stdout }}/{{ item }}" +# state: directory +# mode: 0700 +# owner: "{{ account_name.stdout }}" +# group: "{{ group_name.stdout }}" +# loop: +# - ".config/foo" + +# - name: Copy files +# copy: +# src: "files/{{ item.src }}" +# dest: "{{ account_homedir.stdout }}/{{ item.dest }}" +# mode: 0600 +# owner: "{{ account_name.stdout }}" +# group: "{{ group_name.stdout }}" +# loop: +# - src: foo.conf +# dest: .config/foo/foo.conf + +- import_tasks: tasks/peruser_freebsd.yaml + when: 'os_flavor == "freebsd"' + +- import_tasks: tasks/peruser_linux.yaml + when: 'os_flavor == "linux"' diff --git a/ansible/roles/termcap/tasks/peruser_freebsd.yaml b/ansible/roles/termcap/tasks/peruser_freebsd.yaml new file mode 100644 index 0000000..e69de29 diff --git a/ansible/roles/termcap/tasks/peruser_linux.yaml b/ansible/roles/termcap/tasks/peruser_linux.yaml new file mode 100644 index 0000000..e69de29 diff --git a/ansible/roles/webcam/tasks/freebsd.yaml b/ansible/roles/webcam/tasks/freebsd.yaml index e21ba7a..b6113fb 100644 --- a/ansible/roles/webcam/tasks/freebsd.yaml +++ b/ansible/roles/webcam/tasks/freebsd.yaml @@ -2,11 +2,17 @@ package: name: - webcamd - - pwcview # For testing webcam - v4l-utils # Needed for support in browsers - v4l_compat # Needed for support in browsers state: present +- name: Install packages + when: install_graphics + package: + name: + - pwcview # For testing webcam + state: present + - name: Install loader.conf copy: src: "files/{{ item }}_loader.conf"