Compare commits
33 Commits
pixelbook
...
6b3bdab18b
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
6b3bdab18b | ||
|
|
4d620a33b7 | ||
|
|
e3e78b3eb5 | ||
|
|
3706eda8f3 | ||
|
|
6fc16362ba | ||
|
|
a04b52ec72 | ||
|
|
460a614cf7 | ||
|
|
3e0de0e87a | ||
|
|
80a3f2291c | ||
|
|
6e13ac355a | ||
|
|
60e440b0c6 | ||
|
|
06fc236f0a | ||
|
|
1cad73e68f | ||
|
|
a1ab3327ee | ||
|
|
86ecfd1c54 | ||
|
|
cd58cbb520 | ||
|
|
7dc1a22e6b | ||
|
|
b3ee528c18 | ||
|
|
9ac2605912 | ||
|
|
c87ac216a9 | ||
|
|
94b379c717 | ||
|
|
661b8534a8 | ||
|
|
f42d4c469b | ||
|
|
ebde072f2c | ||
|
|
a7fe6ff42d | ||
|
|
9d54609a12 | ||
|
|
0146c631ae | ||
|
|
86a89be678 | ||
|
|
644b0f2e00 | ||
|
|
4b62c9b4de | ||
|
|
0732a82171 | ||
|
|
e80cdcabdb | ||
|
|
05e06d1615 |
@@ -12,11 +12,11 @@ network_rc: "odofreebsd_network.conf"
|
||||
rc_conf: "odofreebsd_rc.conf"
|
||||
loader_conf: "odofreebsd_loader.conf"
|
||||
install_graphics: true
|
||||
graphics_driver: "intel"
|
||||
cputype: "intel"
|
||||
cpu_opt: skylake
|
||||
graphics_driver: "amd"
|
||||
cputype: "amd"
|
||||
cpu_opt: tigerlake
|
||||
hwpstate: true
|
||||
cores: 4
|
||||
cores: 16
|
||||
build_user:
|
||||
name: talexander
|
||||
group: talexander
|
||||
|
||||
@@ -21,7 +21,7 @@ zfs_snapshot_datasets:
|
||||
- path: zroot/linux/archmain/be
|
||||
- path: zroot/data/bridge/family_disks
|
||||
install_graphics: true
|
||||
graphics_driver: "intel"
|
||||
graphics_driver: "amd"
|
||||
build_user:
|
||||
name: talexander
|
||||
group: talexander
|
||||
@@ -30,10 +30,9 @@ enabled_wireguard:
|
||||
- wgh
|
||||
- drmario
|
||||
- colo
|
||||
cputype: "intel"
|
||||
cputype: "amd"
|
||||
hwpstate: true
|
||||
cores: 4
|
||||
cores: 16
|
||||
sway_conf_files:
|
||||
- rofimoji
|
||||
docker_storage_driver: overlay2 # alternatively zfs
|
||||
docker_zfs_dataset: zroot/linux/archmain/docker
|
||||
|
||||
@@ -1,4 +1,6 @@
|
||||
os_flavor: "linux"
|
||||
hostname: odowork
|
||||
etc_hosts: {}
|
||||
users:
|
||||
talexander:
|
||||
initialize: true
|
||||
@@ -14,22 +16,21 @@ users:
|
||||
- yubikey
|
||||
- main_fido
|
||||
- backup_fido
|
||||
- homeassistant
|
||||
gitconfig: "gitconfig_home"
|
||||
gitconfig: "gitconfig_work"
|
||||
zfs_snapshot_datasets:
|
||||
- path: zroot/linux/archmain/be
|
||||
- path: zroot/linux/archwork/be
|
||||
install_graphics: true
|
||||
graphics_driver: "intel"
|
||||
graphics_driver: "amd"
|
||||
pgp_key: "gpg_work.asc"
|
||||
build_user:
|
||||
name: talexander
|
||||
group: talexander
|
||||
wireguard_directory: pixel
|
||||
enabled_wireguard:
|
||||
- wgh
|
||||
cputype: "intel"
|
||||
# wireguard_directory: odowork
|
||||
# enabled_wireguard: []
|
||||
cputype: "amd"
|
||||
hwpstate: true
|
||||
cores: 4
|
||||
cores: 16
|
||||
sway_conf_files:
|
||||
- rofimoji
|
||||
docker_storage_driver: overlay2 # alternatively zfs
|
||||
docker_zfs_dataset: zroot/linux/archmain/docker
|
||||
closed_source_vscode: true
|
||||
@@ -1,4 +1,4 @@
|
||||
[gui]
|
||||
odolinux ansible_connection=local ansible_host=127.0.0.1
|
||||
odofreebsd ansible_connection=local ansible_host=127.0.0.1
|
||||
pixellinux ansible_connection=local ansible_host=127.0.0.1
|
||||
odowork ansible_connection=local ansible_host=127.0.0.1
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
os_flavor: "freebsd"
|
||||
cpu_opt: skylake
|
||||
cpu_opt: tigerlake
|
||||
build_user:
|
||||
name: root
|
||||
group: wheel
|
||||
|
||||
@@ -45,6 +45,7 @@
|
||||
- poudriere
|
||||
- android
|
||||
- latex
|
||||
- python
|
||||
- pyenv
|
||||
- webcam
|
||||
- docker
|
||||
@@ -53,6 +54,7 @@
|
||||
- launch_keyboard
|
||||
- lvfs
|
||||
- restaurant_health_rating
|
||||
- wasm
|
||||
|
||||
- hosts: nat_dhcp:homeserver_nat_dhcp:mrmanager_nat_dhcp
|
||||
vars:
|
||||
@@ -115,18 +117,12 @@
|
||||
- users
|
||||
- public_dns
|
||||
|
||||
- hosts: odolinux:odofreebsd
|
||||
- hosts: odolinux:odofreebsd:odowork
|
||||
vars:
|
||||
ansible_become: True
|
||||
roles:
|
||||
- framework_laptop
|
||||
|
||||
- hosts: pixellinux
|
||||
vars:
|
||||
ansible_become: True
|
||||
roles:
|
||||
- pixelbook
|
||||
|
||||
- hosts: odofreebsd
|
||||
vars:
|
||||
ansible_become: True
|
||||
@@ -148,3 +144,9 @@
|
||||
ansible_become: True
|
||||
roles:
|
||||
- homeserver
|
||||
|
||||
- hosts: odowork
|
||||
vars:
|
||||
ansible_become: True
|
||||
roles:
|
||||
- odowork
|
||||
|
||||
44
ansible/roles/alacritty/files/alacritty.toml
Normal file
44
ansible/roles/alacritty/files/alacritty.toml
Normal file
@@ -0,0 +1,44 @@
|
||||
[colors]
|
||||
draw_bold_text_with_bright_colors = true
|
||||
indexed_colors = []
|
||||
|
||||
[colors.bright]
|
||||
black = "0x666666"
|
||||
blue = "0x7aa6da"
|
||||
cyan = "0x54ced6"
|
||||
green = "0x9ec400"
|
||||
magenta = "0xb77ee0"
|
||||
red = "0xff3334"
|
||||
white = "0xffffff"
|
||||
yellow = "0xe7c547"
|
||||
|
||||
[colors.normal]
|
||||
black = "0x000000"
|
||||
blue = "0x7aa6da"
|
||||
cyan = "0x70c0ba"
|
||||
green = "0xb9ca4a"
|
||||
magenta = "0xc397d8"
|
||||
red = "0xd54e53"
|
||||
white = "0xeaeaea"
|
||||
yellow = "0xe6c547"
|
||||
|
||||
[colors.primary]
|
||||
background = "0x000000"
|
||||
foreground = "0xeaeaea"
|
||||
|
||||
[font]
|
||||
size = 11.0
|
||||
|
||||
[[hints.enabled]]
|
||||
command = "xdg-open"
|
||||
post_processing = true
|
||||
regex = "(ipfs:|ipns:|magnet:|mailto:|gemini:|gopher:|https:|http:|news:|file:|git:|ssh:|ftp:)[^\u0000-\u001F\u007F-<>\"\\s{-}\\^⟨⟩`]+"
|
||||
|
||||
[hints.enabled.mouse]
|
||||
enabled = false
|
||||
mods = "None"
|
||||
|
||||
[scrolling]
|
||||
history = 10000
|
||||
# Lines moved per scroll.
|
||||
multiplier = 3
|
||||
@@ -1,103 +0,0 @@
|
||||
# If `true`, bold text is drawn using the bright color variants.
|
||||
draw_bold_text_with_bright_colors: true
|
||||
|
||||
colors:
|
||||
# Default colors
|
||||
primary:
|
||||
background: "0x000000"
|
||||
foreground: "0xeaeaea"
|
||||
|
||||
# Bright and dim foreground colors
|
||||
#
|
||||
# The dimmed foreground color is calculated automatically if it is not present.
|
||||
# If the bright foreground color is not set, or `draw_bold_text_with_bright_colors`
|
||||
# is `false`, the normal foreground color will be used.
|
||||
#dim_foreground: '0x9a9a9a'
|
||||
#bright_foreground: '0xffffff'
|
||||
|
||||
# Cursor colors
|
||||
#
|
||||
# Colors which should be used to draw the terminal cursor. If these are unset,
|
||||
# the cursor color will be the inverse of the cell color.
|
||||
#cursor:
|
||||
# text: '0x000000'
|
||||
# cursor: '0xffffff'
|
||||
|
||||
# Selection colors
|
||||
#
|
||||
# Colors which should be used to draw the selection area. If selection
|
||||
# background is unset, selection color will be the inverse of the cell colors.
|
||||
# If only text is unset the cell text color will remain the same.
|
||||
#selection:
|
||||
# text: '0xeaeaea'
|
||||
# background: '0x404040'
|
||||
|
||||
# Normal colors
|
||||
normal:
|
||||
black: "0x000000"
|
||||
red: "0xd54e53"
|
||||
green: "0xb9ca4a"
|
||||
yellow: "0xe6c547"
|
||||
blue: "0x7aa6da"
|
||||
magenta: "0xc397d8"
|
||||
cyan: "0x70c0ba"
|
||||
white: "0xeaeaea"
|
||||
|
||||
# Bright colors
|
||||
bright:
|
||||
black: "0x666666"
|
||||
red: "0xff3334"
|
||||
green: "0x9ec400"
|
||||
yellow: "0xe7c547"
|
||||
blue: "0x7aa6da"
|
||||
magenta: "0xb77ee0"
|
||||
cyan: "0x54ced6"
|
||||
white: "0xffffff"
|
||||
|
||||
# Dim colors
|
||||
#
|
||||
# If the dim colors are not set, they will be calculated automatically based
|
||||
# on the `normal` colors.
|
||||
#dim:
|
||||
# black: '0x000000'
|
||||
# red: '0x8c3336'
|
||||
# green: '0x7a8530'
|
||||
# yellow: '0x97822e'
|
||||
# blue: '0x506d8f'
|
||||
# magenta: '0x80638e'
|
||||
# cyan: '0x497e7a'
|
||||
# white: '0x9a9a9a'
|
||||
|
||||
# Indexed Colors
|
||||
#
|
||||
# The indexed colors include all colors from 16 to 256.
|
||||
# When these are not set, they're filled with sensible defaults.
|
||||
#
|
||||
# Example:
|
||||
# `- { index: 16, color: '0xff00ff' }`
|
||||
#
|
||||
indexed_colors: []
|
||||
|
||||
scrolling:
|
||||
# Maximum number of lines in the scrollback buffer.
|
||||
# Specifying '0' will disable scrolling.
|
||||
history: 10000
|
||||
|
||||
# Number of lines the viewport will move for every line scrolled when
|
||||
# scrollback is enabled (history > 0).
|
||||
multiplier: 3
|
||||
|
||||
font:
|
||||
size: 11.0
|
||||
|
||||
hints:
|
||||
enabled:
|
||||
# Disable opening links when clicked
|
||||
- regex:
|
||||
"(ipfs:|ipns:|magnet:|mailto:|gemini:|gopher:|https:|http:|news:|file:|git:|ssh:|ftp:)\
|
||||
[^\u0000-\u001F\u007F-\u009F<>\"\\s{-}\\^⟨⟩`]+"
|
||||
command: xdg-open
|
||||
post_processing: true
|
||||
mouse:
|
||||
enabled: false
|
||||
mods: None
|
||||
@@ -19,8 +19,8 @@
|
||||
owner: "{{ account_name.stdout }}"
|
||||
group: "{{ group_name.stdout }}"
|
||||
loop:
|
||||
- src: alacritty.yml
|
||||
dest: .config/alacritty/alacritty.yml
|
||||
- src: alacritty.toml
|
||||
dest: .config/alacritty/alacritty.toml
|
||||
|
||||
- import_tasks: tasks/peruser_freebsd.yaml
|
||||
when: 'os_flavor == "freebsd"'
|
||||
|
||||
@@ -18,3 +18,18 @@
|
||||
date = local
|
||||
[init]
|
||||
defaultBranch = main
|
||||
|
||||
# Use meld for `git difftool` and `git mergetool`
|
||||
[diff]
|
||||
tool = meld
|
||||
[difftool]
|
||||
prompt = false
|
||||
[difftool "meld"]
|
||||
cmd = meld "$LOCAL" "$REMOTE"
|
||||
[merge]
|
||||
tool = meld
|
||||
[mergetool "meld"]
|
||||
# Make the middle pane start with partially-merged contents:
|
||||
cmd = meld "$LOCAL" "$MERGED" "$REMOTE" --output "$MERGED"
|
||||
# Make the middle pane start without any merge progress:
|
||||
# cmd = meld "$LOCAL" "$BASE" "$REMOTE" --output "$MERGED"
|
||||
|
||||
35
ansible/roles/base/files/gitconfig_work
Normal file
35
ansible/roles/base/files/gitconfig_work
Normal file
@@ -0,0 +1,35 @@
|
||||
[user]
|
||||
email = ThomasA.Alexander@hmhn.org
|
||||
name = Tom Alexander
|
||||
signingkey = D3A179C9A53C0EDE
|
||||
[push]
|
||||
default = simple
|
||||
[alias]
|
||||
lg = log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit
|
||||
bh = log --oneline --branches=* --remotes=* --graph --decorate
|
||||
amend = commit --amend --no-edit
|
||||
[core]
|
||||
excludesfile = ~/.gitignore_global
|
||||
[commit]
|
||||
gpgsign = true
|
||||
[pull]
|
||||
rebase = true
|
||||
[log]
|
||||
date = local
|
||||
[init]
|
||||
defaultBranch = main
|
||||
|
||||
# Use meld for `git difftool` and `git mergetool`
|
||||
[diff]
|
||||
tool = meld
|
||||
[difftool]
|
||||
prompt = false
|
||||
[difftool "meld"]
|
||||
cmd = meld "$LOCAL" "$REMOTE"
|
||||
[merge]
|
||||
tool = meld
|
||||
[mergetool "meld"]
|
||||
# Make the middle pane start with partially-merged contents:
|
||||
cmd = meld "$LOCAL" "$MERGED" "$REMOTE" --output "$MERGED"
|
||||
# Make the middle pane start without any merge progress:
|
||||
# cmd = meld "$LOCAL" "$BASE" "$REMOTE" --output "$MERGED"
|
||||
@@ -17,6 +17,7 @@
|
||||
- colordiff
|
||||
- ipcalc
|
||||
- kdiff3
|
||||
- meld
|
||||
- tcpdump
|
||||
- moreutils # for ts [%Y-%m-%d %H:%M:%.S]
|
||||
- ddrescue
|
||||
|
||||
@@ -74,13 +74,6 @@ function main {
|
||||
fi
|
||||
}
|
||||
|
||||
function die {
|
||||
local status_code="$1"
|
||||
shift
|
||||
(>&2 echo "${@}")
|
||||
exit "$status_code"
|
||||
}
|
||||
|
||||
function create_disk {
|
||||
local zfs_path="$1"
|
||||
local mount_path="$2"
|
||||
|
||||
12
ansible/roles/build/files/aurutils-nuke
Executable file
12
ansible/roles/build/files/aurutils-nuke
Executable file
@@ -0,0 +1,12 @@
|
||||
#!/usr/bin/env bash
|
||||
#
|
||||
# If something is very wrong in pacman, this removes the keyring and the entire custom repo, then sets up pacman's keyring again. Running the ansible playbook is necessary to get the custom repo added.
|
||||
set -euo pipefail
|
||||
IFS=$'\n\t'
|
||||
DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
|
||||
|
||||
doas rm -rf /var/cache/pacman/custom/ /etc/pacman.d/conf.d/aurutils.conf
|
||||
doas rm -rf /etc/pacman.d/gnupg
|
||||
doas pacman-key --init
|
||||
doas pacman-key --populate archlinux
|
||||
doas pacman -S archlinux-keyring
|
||||
27
ansible/roles/build/files/gpg_work.asc
Normal file
27
ansible/roles/build/files/gpg_work.asc
Normal file
@@ -0,0 +1,27 @@
|
||||
-----BEGIN PGP PUBLIC KEY BLOCK-----
|
||||
|
||||
mDMEXZwWGhYJKwYBBAHaRw8BAQdAfv7qozKkmf4D+5PDzADsMm4aAKDGLha7+Cu0
|
||||
0H+RsWG0LVRob21hcyBBbGV4YW5kZXIgPFRob21hc0EuQWxleGFuZGVyQGhtaG4u
|
||||
b3JnPoiQBBMWCAA4FiEEuEgVk2PCh3kXlUvhJ95A2bhFXBsFAmULicsCGwMFCwkI
|
||||
BwIGFQoJCAsCBBYCAwECHgECF4AACgkQJ95A2bhFXBsUtQD9GWPdWc/nSmO0Gp7p
|
||||
DzxrieliriAnO+ZCHp31mFbMtToBAPxPYN9y4kgSiXhLiFLoRK5k5FCspksTSitg
|
||||
0CbXDE4LuDgEXZwWGhIKKwYBBAGXVQEFAQEHQK202EIAwTBuxARUygOvn+AloMJd
|
||||
ui39m+nMghn1MNo+AwEIB4h4BBgWCAAgFiEEuEgVk2PCh3kXlUvhJ95A2bhFXBsF
|
||||
Al2cFhoCGwwACgkQJ95A2bhFXBtNzAEAq5I6xPjIbb23xmhxh5cM/UJxdGedfWMy
|
||||
vF6/JtDvtPUBAPQRQn5AMwTOA+CSnliYf7ZjfVOlHscy60XWPlvXLoAJuDMEXZwW
|
||||
yhYJKwYBBAHaRw8BAQdAPyIL4EGg4T5JO9q2kpVDy2WjMiXz3nZXwYW4GLoTYkiI
|
||||
9QQYFggAJgIbAhYhBLhIFZNjwod5F5VL4SfeQNm4RVwbBQJlC4ZhBQkLMdaXAIF2
|
||||
IAQZFggAHRYhBIHmRDmWdVAusSUWutOhecmlPA7eBQJdnBbKAAoJENOhecmlPA7e
|
||||
jJ4A/iq7N2mMhx+ovOXm1REoASPF3l4YAAjOHsXqcPtFHKGJAQCiuA71d6CQ+qNZ
|
||||
Luka/KVB/etkkJvDzvaTtiQQQG+gAwkQJ95A2bhFXBtRDgEAqymMavroD5c/4+M/
|
||||
EZ3/d8wxfA9E3Fb/1mt4c2ZrNnkBAKYOM+pz/pncFnV+kF7h7TQEEYuGw1JhJVT/
|
||||
duA4lwsLuDMEXZwXARYJKwYBBAHaRw8BAQdAa76TmWuKuiR1bnNV1FUE6oQ4C8A+
|
||||
UiQb8x0k1z2DmTKIfgQYFggAJgIbIBYhBLhIFZNjwod5F5VL4SfeQNm4RVwbBQJl
|
||||
C4ZwBQkLMdZgAAoJECfeQNm4RVwb8TkA/RkBu9Ev8iDE5nvn8YF8FRiY56Z5d+SB
|
||||
PG4VvrCzXrmlAP46wUjIRpkMrTbb1GMbvYnkeOrBs/qiWjEtHHc3ZLMWD7g4BF2c
|
||||
FygSCisGAQQBl1UBBQEBB0AO0t3BUxLuokTqKVcheFAZd4UKxAGznPQlvsVyhWWI
|
||||
EgMBCAeIfgQYFggAJgIbDBYhBLhIFZNjwod5F5VL4SfeQNm4RVwbBQJlC4ZwBQkL
|
||||
MdY5AAoJECfeQNm4RVwbXscA/A8zRRTCwQKxJ8iz5jmTcVFAhl2vD781Dtv8NvcW
|
||||
d5t8APwIwcuFVZZA3yayhIxi3aqYpMRxpn2t6Nswax1MIM8DBQ==
|
||||
=0HtE
|
||||
-----END PGP PUBLIC KEY BLOCK-----
|
||||
@@ -39,7 +39,7 @@
|
||||
- name: Trust my signing key
|
||||
command: pacman-key -a -
|
||||
args:
|
||||
stdin: "{{ lookup('file', 'gpg.asc') }}"
|
||||
stdin: "{{ lookup('file', pgp_key|default('gpg.asc')) }}"
|
||||
when: '"B848159363C2877917954BE127DE40D9B8455C1B" not in pacmankeys.stdout'
|
||||
register: my_key_imported
|
||||
|
||||
@@ -94,6 +94,14 @@
|
||||
- src: makepkg.conf # TODO: Is this needed or can I use the default from devtools?
|
||||
dest: /etc/aurutils/
|
||||
|
||||
- name: chown the custom package db
|
||||
file:
|
||||
path: "{{ item }}"
|
||||
owner: "{{ build_user.name }}"
|
||||
recurse: true
|
||||
loop:
|
||||
- /var/cache/pacman/custom/
|
||||
|
||||
- name: Create custom repo db
|
||||
command: repo-add --sign /var/cache/pacman/custom/custom.db.tar
|
||||
become: true
|
||||
@@ -111,6 +119,8 @@
|
||||
loop:
|
||||
- src: aurutils-purge
|
||||
dest: /usr/local/bin/aurutils-purge
|
||||
- src: aurutils-nuke
|
||||
dest: /usr/local/bin/aurutils-nuke
|
||||
- src: aurutils-sync
|
||||
dest: /usr/local/bin/aurutils-sync
|
||||
- src: aurutils-update-devel-packages
|
||||
|
||||
29
ansible/roles/cpu/files/cpu_set_perf_perc_linux_amd
Normal file
29
ansible/roles/cpu/files/cpu_set_perf_perc_linux_amd
Normal file
@@ -0,0 +1,29 @@
|
||||
#!/usr/bin/env bash
|
||||
#
|
||||
# Tell hardware p-states whether to maximize CPU performance (100) or
|
||||
# energy efficiency (0).
|
||||
set -euo pipefail
|
||||
IFS=$'\n\t'
|
||||
DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
|
||||
|
||||
perc=$1
|
||||
|
||||
if [ "$perc" -gt 80 ]; then
|
||||
echo performance | tee /sys/firmware/acpi/platform_profile
|
||||
elif [ "$perc" -ge 20 ]; then
|
||||
echo balanced | tee /sys/firmware/acpi/platform_profile
|
||||
else
|
||||
echo low-power | tee /sys/firmware/acpi/platform_profile
|
||||
fi
|
||||
|
||||
if [ "$perc" -ge 80 ]; then
|
||||
echo "performance" | tee /sys/devices/system/cpu/cpufreq/policy*/energy_performance_preference
|
||||
elif [ "$perc" -ge 60 ]; then
|
||||
echo "balance_performance" | tee /sys/devices/system/cpu/cpufreq/policy*/energy_performance_preference
|
||||
elif [ "$perc" -ge 40 ]; then
|
||||
echo "default" | tee /sys/devices/system/cpu/cpufreq/policy*/energy_performance_preference
|
||||
elif [ "$perc" -ge 20 ]; then
|
||||
echo "balance_power" | tee /sys/devices/system/cpu/cpufreq/policy*/energy_performance_preference
|
||||
else
|
||||
echo "power" | tee /sys/devices/system/cpu/cpufreq/policy*/energy_performance_preference
|
||||
fi
|
||||
2
ansible/roles/cpu/files/platform_profile_tmpfiles.conf
Normal file
2
ansible/roles/cpu/files/platform_profile_tmpfiles.conf
Normal file
@@ -0,0 +1,2 @@
|
||||
# Favor energy efficiency for platform profile (EC / system, not CPU)
|
||||
w- /sys/firmware/acpi/platform_profile - - - - low-power
|
||||
40
ansible/roles/cpu/tasks/linux_amd.yaml
Normal file
40
ansible/roles/cpu/tasks/linux_amd.yaml
Normal file
@@ -0,0 +1,40 @@
|
||||
- name: Install packages
|
||||
package:
|
||||
name:
|
||||
- powertop
|
||||
state: present
|
||||
|
||||
- name: Favor energy efficiency for hardware p-states
|
||||
when: hwpstate is defined and hwpstate and cores is defined
|
||||
template:
|
||||
src: "templates/{{ item.src }}.j2"
|
||||
dest: "{{ item.dest }}"
|
||||
mode: 0644
|
||||
owner: root
|
||||
group: wheel
|
||||
loop:
|
||||
- src: energy_performance_preference.conf
|
||||
dest: /etc/tmpfiles.d/energy_performance_preference.conf
|
||||
|
||||
- name: Install tmpfiles.d configuration
|
||||
when: hwpstate is defined and hwpstate and cores is defined
|
||||
copy:
|
||||
src: "files/{{ item }}_tmpfiles.conf"
|
||||
dest: "/etc/tmpfiles.d/{{ item }}.conf"
|
||||
mode: 0644
|
||||
owner: root
|
||||
group: wheel
|
||||
loop:
|
||||
- platform_profile
|
||||
|
||||
- name: Install scripts
|
||||
when: hwpstate is defined and hwpstate
|
||||
copy:
|
||||
src: "files/{{ item.src }}"
|
||||
dest: "{{ item.dest }}"
|
||||
mode: 0755
|
||||
owner: root
|
||||
group: wheel
|
||||
loop:
|
||||
- src: cpu_set_perf_perc_linux_amd
|
||||
dest: /usr/local/bin/cpu_set_perf_perc
|
||||
@@ -4,27 +4,27 @@
|
||||
- powertop
|
||||
state: present
|
||||
|
||||
# - name: Install tmpfiles.d configuration
|
||||
# copy:
|
||||
# src: "files/{{ item }}_tmpfiles.conf"
|
||||
# dest: "/etc/tmpfiles.d/{{ item }}.conf"
|
||||
# mode: 0644
|
||||
# owner: root
|
||||
# group: wheel
|
||||
# loop:
|
||||
# - disable_turboboost
|
||||
- name: Install tmpfiles.d configuration
|
||||
copy:
|
||||
src: "files/{{ item }}_tmpfiles.conf"
|
||||
dest: "/etc/tmpfiles.d/{{ item }}.conf"
|
||||
mode: 0644
|
||||
owner: root
|
||||
group: wheel
|
||||
loop:
|
||||
- disable_turboboost
|
||||
|
||||
# - name: Favor energy efficiency for Speed Shift
|
||||
# when: hwpstate is defined and hwpstate and cores is defined
|
||||
# template:
|
||||
# src: "templates/{{ item.src }}.j2"
|
||||
# dest: "{{ item.dest }}"
|
||||
# mode: 0755
|
||||
# owner: root
|
||||
# group: wheel
|
||||
# loop:
|
||||
# - src: energy_performance_preference.conf
|
||||
# dest: /etc/tmpfiles.d/energy_performance_preference.conf
|
||||
- name: Favor energy efficiency for Speed Shift
|
||||
when: hwpstate is defined and hwpstate and cores is defined
|
||||
template:
|
||||
src: "templates/{{ item.src }}.j2"
|
||||
dest: "{{ item.dest }}"
|
||||
mode: 0644
|
||||
owner: root
|
||||
group: wheel
|
||||
loop:
|
||||
- src: energy_performance_preference.conf
|
||||
dest: /etc/tmpfiles.d/energy_performance_preference.conf
|
||||
|
||||
- name: Install scripts
|
||||
when: hwpstate is defined and hwpstate
|
||||
@@ -35,5 +35,5 @@
|
||||
owner: root
|
||||
group: wheel
|
||||
loop:
|
||||
- src: cpu_set_perf_perc_linux
|
||||
- src: cpu_set_perf_perc_linux_intel
|
||||
dest: /usr/local/bin/cpu_set_perf_perc
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
# Favor energy efficiency for Speed Shift
|
||||
# Favor energy efficiency for hardware p-states
|
||||
{% for core in range(0, cores, 1) %}
|
||||
w- /sys/devices/system/cpu/cpufreq/policy{{core}}/energy_performance_preference - - - - power
|
||||
{% endfor %}
|
||||
|
||||
@@ -75,4 +75,10 @@
|
||||
;; Delete trailing whitespace before save
|
||||
(add-hook 'before-save-hook 'delete-trailing-whitespace)
|
||||
|
||||
;; If the underlying file changes, reload it automatically. This is useful for moving around in git without confusing language servers.
|
||||
(setopt auto-revert-avoid-polling t)
|
||||
(setopt auto-revert-interval 5)
|
||||
(setopt auto-revert-check-vc-info t)
|
||||
(global-auto-revert-mode)
|
||||
|
||||
(provide 'base)
|
||||
|
||||
@@ -81,6 +81,12 @@
|
||||
(unless (treesit-ready-p 'javascript) (treesit-install-language-grammar 'javascript))
|
||||
)
|
||||
|
||||
(defun prettier-fmt ()
|
||||
"Run prettier."
|
||||
(run-command-on-buffer "prettier" "--stdin-filepath" buffer-file-name)
|
||||
)
|
||||
|
||||
|
||||
(use-package css-ts-mode
|
||||
:ensure nil
|
||||
:pin manual
|
||||
@@ -88,9 +94,23 @@
|
||||
("\\.css\\'" . css-ts-mode)
|
||||
)
|
||||
:commands (css-ts-mode)
|
||||
:custom (css-indent-offset 2)
|
||||
:init
|
||||
(add-to-list 'treesit-language-source-alist '(css "https://github.com/tree-sitter/tree-sitter-css"))
|
||||
(unless (treesit-ready-p 'css) (treesit-install-language-grammar 'css))
|
||||
:hook (
|
||||
(css-ts-mode . (lambda ()
|
||||
(eglot-ensure)
|
||||
(defclass my/eglot-css (eglot-lsp-server) ()
|
||||
:documentation
|
||||
"Own eglot server class.")
|
||||
|
||||
(add-to-list 'eglot-server-programs
|
||||
'(css-ts-mode . (my/eglot-css "vscode-css-language-server" "--stdio")))
|
||||
;; (add-hook 'before-save-hook 'eglot-format-buffer nil 'local)
|
||||
(add-hook 'before-save-hook 'prettier-fmt nil 'local)
|
||||
))
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
|
||||
@@ -3,3 +3,5 @@ dependencies:
|
||||
- fonts
|
||||
- role: rust
|
||||
when: 'emacs_flavor == "full"'
|
||||
- role: python
|
||||
when: 'emacs_flavor == "full"'
|
||||
|
||||
@@ -14,6 +14,7 @@
|
||||
- gopls
|
||||
- typescript-language-server
|
||||
- shellcheck
|
||||
- vscode-css-languageserver
|
||||
state: present
|
||||
|
||||
- name: Create directories
|
||||
|
||||
@@ -11,3 +11,4 @@ firefox_config:
|
||||
browser.newtabpage.activity-stream.showSponsoredTopSites: false
|
||||
browser.newtabpage.activity-stream.feeds.section.topstories: false
|
||||
browser.newtabpage.pinned: "[]"
|
||||
browser.newtabpage.activity-stream.section.highlights.includePocket: false
|
||||
|
||||
@@ -0,0 +1,2 @@
|
||||
# Set screen brightness. Ever since enabling adaptive brightness management, my brightness ends up sinking lower on re-boots (I suspect it is saving the actual brightness rather than the set brightness). This forces the brightness back to the level I prefer.
|
||||
w- /sys/class/backlight/amdgpu_bl0/brightness - - - - 85
|
||||
@@ -7,3 +7,14 @@
|
||||
daemon_reload: yes
|
||||
loop:
|
||||
- systemd-udev-settle.service
|
||||
|
||||
- name: Install tmpfiles.d configuration
|
||||
when: hwpstate is defined and hwpstate and cores is defined
|
||||
copy:
|
||||
src: "files/{{ item }}_tmpfiles.conf"
|
||||
dest: "/etc/tmpfiles.d/{{ item }}.conf"
|
||||
mode: 0644
|
||||
owner: root
|
||||
group: wheel
|
||||
loop:
|
||||
- screen_brightness
|
||||
|
||||
27
ansible/roles/gpg/files/gpg_work.asc
Normal file
27
ansible/roles/gpg/files/gpg_work.asc
Normal file
@@ -0,0 +1,27 @@
|
||||
-----BEGIN PGP PUBLIC KEY BLOCK-----
|
||||
|
||||
mDMEXZwWGhYJKwYBBAHaRw8BAQdAfv7qozKkmf4D+5PDzADsMm4aAKDGLha7+Cu0
|
||||
0H+RsWG0LVRob21hcyBBbGV4YW5kZXIgPFRob21hc0EuQWxleGFuZGVyQGhtaG4u
|
||||
b3JnPoiQBBMWCAA4FiEEuEgVk2PCh3kXlUvhJ95A2bhFXBsFAmULicsCGwMFCwkI
|
||||
BwIGFQoJCAsCBBYCAwECHgECF4AACgkQJ95A2bhFXBsUtQD9GWPdWc/nSmO0Gp7p
|
||||
DzxrieliriAnO+ZCHp31mFbMtToBAPxPYN9y4kgSiXhLiFLoRK5k5FCspksTSitg
|
||||
0CbXDE4LuDgEXZwWGhIKKwYBBAGXVQEFAQEHQK202EIAwTBuxARUygOvn+AloMJd
|
||||
ui39m+nMghn1MNo+AwEIB4h4BBgWCAAgFiEEuEgVk2PCh3kXlUvhJ95A2bhFXBsF
|
||||
Al2cFhoCGwwACgkQJ95A2bhFXBtNzAEAq5I6xPjIbb23xmhxh5cM/UJxdGedfWMy
|
||||
vF6/JtDvtPUBAPQRQn5AMwTOA+CSnliYf7ZjfVOlHscy60XWPlvXLoAJuDMEXZwW
|
||||
yhYJKwYBBAHaRw8BAQdAPyIL4EGg4T5JO9q2kpVDy2WjMiXz3nZXwYW4GLoTYkiI
|
||||
9QQYFggAJgIbAhYhBLhIFZNjwod5F5VL4SfeQNm4RVwbBQJlC4ZhBQkLMdaXAIF2
|
||||
IAQZFggAHRYhBIHmRDmWdVAusSUWutOhecmlPA7eBQJdnBbKAAoJENOhecmlPA7e
|
||||
jJ4A/iq7N2mMhx+ovOXm1REoASPF3l4YAAjOHsXqcPtFHKGJAQCiuA71d6CQ+qNZ
|
||||
Luka/KVB/etkkJvDzvaTtiQQQG+gAwkQJ95A2bhFXBtRDgEAqymMavroD5c/4+M/
|
||||
EZ3/d8wxfA9E3Fb/1mt4c2ZrNnkBAKYOM+pz/pncFnV+kF7h7TQEEYuGw1JhJVT/
|
||||
duA4lwsLuDMEXZwXARYJKwYBBAHaRw8BAQdAa76TmWuKuiR1bnNV1FUE6oQ4C8A+
|
||||
UiQb8x0k1z2DmTKIfgQYFggAJgIbIBYhBLhIFZNjwod5F5VL4SfeQNm4RVwbBQJl
|
||||
C4ZwBQkLMdZgAAoJECfeQNm4RVwb8TkA/RkBu9Ev8iDE5nvn8YF8FRiY56Z5d+SB
|
||||
PG4VvrCzXrmlAP46wUjIRpkMrTbb1GMbvYnkeOrBs/qiWjEtHHc3ZLMWD7g4BF2c
|
||||
FygSCisGAQQBl1UBBQEBB0AO0t3BUxLuokTqKVcheFAZd4UKxAGznPQlvsVyhWWI
|
||||
EgMBCAeIfgQYFggAJgIbDBYhBLhIFZNjwod5F5VL4SfeQNm4RVwbBQJlC4ZwBQkL
|
||||
MdY5AAoJECfeQNm4RVwbXscA/A8zRRTCwQKxJ8iz5jmTcVFAhl2vD781Dtv8NvcW
|
||||
d5t8APwIwcuFVZZA3yayhIxi3aqYpMRxpn2t6Nswax1MIM8DBQ==
|
||||
=0HtE
|
||||
-----END PGP PUBLIC KEY BLOCK-----
|
||||
@@ -43,7 +43,7 @@
|
||||
command: gpg --import
|
||||
when: '"cv25519/B0B50C7FDDE009E5" not in gpgkeys.stdout'
|
||||
args:
|
||||
stdin: "{{ lookup('file', 'gpg.asc') }}"
|
||||
stdin: "{{ lookup('file', pgp_key|default('gpg.asc')) }}"
|
||||
|
||||
- import_tasks: tasks/peruser_freebsd.yaml
|
||||
when: 'os_flavor == "freebsd"'
|
||||
|
||||
20
ansible/roles/graphics/tasks/linux_amd.yaml
Normal file
20
ansible/roles/graphics/tasks/linux_amd.yaml
Normal file
@@ -0,0 +1,20 @@
|
||||
# TODO: Should I enable APM?
|
||||
- name: Install packages
|
||||
package:
|
||||
name:
|
||||
- linux-firmware # Arch wiki claims this is needed to boot
|
||||
- mesa
|
||||
- lib32-mesa
|
||||
- vulkan-radeon
|
||||
- lib32-vulkan-radeon
|
||||
- libva-mesa-driver # Accelerated video decoding
|
||||
- lib32-libva-mesa-driver # Accelerated video decoding
|
||||
- mesa-vdpau # Accelerated video decoding
|
||||
- lib32-mesa-vdpau # Accelerated video decoding
|
||||
- vulkan-icd-loader
|
||||
- lib32-vulkan-icd-loader
|
||||
- libva-utils # for vainfo
|
||||
- vdpauinfo # for vdpauinfo
|
||||
- vulkan-tools # For vulkaninfo
|
||||
- radeontop
|
||||
state: present
|
||||
@@ -1,10 +1,19 @@
|
||||
- name: Set the /etc/hosts
|
||||
when: hostname is undefined or item.key != hostname
|
||||
ansible.builtin.lineinfile:
|
||||
path: /etc/hosts
|
||||
regexp: '^{{ item.key | regex_escape() }}\s+'
|
||||
line: "{{ item.key }} {{ item.value | join(' ') }}"
|
||||
loop: "{{ etc_hosts | dict2items }}"
|
||||
|
||||
# Without an entry for the local hostname, firefox takes multiple minutes to launch.
|
||||
- name: Set the /etc/hosts
|
||||
when: hostname is defined
|
||||
ansible.builtin.lineinfile:
|
||||
path: /etc/hosts
|
||||
regexp: '\s+{{ hostname | regex_escape() }}\s*$'
|
||||
line: "127.0.0.1 {{ hostname }}"
|
||||
|
||||
- import_tasks: tasks/freebsd.yaml
|
||||
when: 'os_flavor == "freebsd"'
|
||||
|
||||
|
||||
@@ -7,7 +7,6 @@
|
||||
loop:
|
||||
- kubeswitch
|
||||
- flux-scm
|
||||
- kubectl-minio
|
||||
|
||||
- name: Update cache
|
||||
when: buildaur.changed
|
||||
@@ -23,5 +22,4 @@
|
||||
- stern
|
||||
- kubeswitch
|
||||
- flux-scm
|
||||
- kubectl-minio
|
||||
state: present
|
||||
|
||||
642
ansible/roles/launch_keyboard/files/launch_keyboard_layout.json
Normal file
642
ansible/roles/launch_keyboard/files/launch_keyboard_layout.json
Normal file
@@ -0,0 +1,642 @@
|
||||
{
|
||||
"model": "system76/launch_2",
|
||||
"version": 1,
|
||||
"map": {
|
||||
"K00": [
|
||||
"ESC",
|
||||
"RESET",
|
||||
"ROLL_OVER",
|
||||
"ROLL_OVER"
|
||||
],
|
||||
"K01": [
|
||||
"F1",
|
||||
"ROLL_OVER",
|
||||
"ROLL_OVER",
|
||||
"ROLL_OVER"
|
||||
],
|
||||
"K02": [
|
||||
"F2",
|
||||
"ROLL_OVER",
|
||||
"ROLL_OVER",
|
||||
"ROLL_OVER"
|
||||
],
|
||||
"K03": [
|
||||
"F3",
|
||||
"ROLL_OVER",
|
||||
"ROLL_OVER",
|
||||
"ROLL_OVER"
|
||||
],
|
||||
"K04": [
|
||||
"F4",
|
||||
"ROLL_OVER",
|
||||
"ROLL_OVER",
|
||||
"ROLL_OVER"
|
||||
],
|
||||
"K05": [
|
||||
"F5",
|
||||
"ROLL_OVER",
|
||||
"ROLL_OVER",
|
||||
"ROLL_OVER"
|
||||
],
|
||||
"K06": [
|
||||
"F6",
|
||||
"ROLL_OVER",
|
||||
"ROLL_OVER",
|
||||
"ROLL_OVER"
|
||||
],
|
||||
"K07": [
|
||||
"F7",
|
||||
"ROLL_OVER",
|
||||
"ROLL_OVER",
|
||||
"ROLL_OVER"
|
||||
],
|
||||
"K08": [
|
||||
"F8",
|
||||
"ROLL_OVER",
|
||||
"ROLL_OVER",
|
||||
"ROLL_OVER"
|
||||
],
|
||||
"K09": [
|
||||
"F9",
|
||||
"ROLL_OVER",
|
||||
"ROLL_OVER",
|
||||
"ROLL_OVER"
|
||||
],
|
||||
"K0A": [
|
||||
"F10",
|
||||
"ROLL_OVER",
|
||||
"ROLL_OVER",
|
||||
"ROLL_OVER"
|
||||
],
|
||||
"K0B": [
|
||||
"F11",
|
||||
"ROLL_OVER",
|
||||
"ROLL_OVER",
|
||||
"ROLL_OVER"
|
||||
],
|
||||
"K0C": [
|
||||
"F12",
|
||||
"ROLL_OVER",
|
||||
"ROLL_OVER",
|
||||
"ROLL_OVER"
|
||||
],
|
||||
"K0D": [
|
||||
"DEL",
|
||||
"ROLL_OVER",
|
||||
"ROLL_OVER",
|
||||
"ROLL_OVER"
|
||||
],
|
||||
"K0E": [
|
||||
"HOME",
|
||||
"PLAY_PAUSE",
|
||||
"ROLL_OVER",
|
||||
"ROLL_OVER"
|
||||
],
|
||||
"K10": [
|
||||
"TICK",
|
||||
"ROLL_OVER",
|
||||
"ROLL_OVER",
|
||||
"ROLL_OVER"
|
||||
],
|
||||
"K11": [
|
||||
"1",
|
||||
"ROLL_OVER",
|
||||
"ROLL_OVER",
|
||||
"ROLL_OVER"
|
||||
],
|
||||
"K12": [
|
||||
"2",
|
||||
"ROLL_OVER",
|
||||
"ROLL_OVER",
|
||||
"ROLL_OVER"
|
||||
],
|
||||
"K13": [
|
||||
"3",
|
||||
"ROLL_OVER",
|
||||
"ROLL_OVER",
|
||||
"ROLL_OVER"
|
||||
],
|
||||
"K14": [
|
||||
"4",
|
||||
"ROLL_OVER",
|
||||
"ROLL_OVER",
|
||||
"ROLL_OVER"
|
||||
],
|
||||
"K15": [
|
||||
"5",
|
||||
"ROLL_OVER",
|
||||
"ROLL_OVER",
|
||||
"ROLL_OVER"
|
||||
],
|
||||
"K16": [
|
||||
"6",
|
||||
"ROLL_OVER",
|
||||
"ROLL_OVER",
|
||||
"ROLL_OVER"
|
||||
],
|
||||
"K17": [
|
||||
"7",
|
||||
"ROLL_OVER",
|
||||
"ROLL_OVER",
|
||||
"ROLL_OVER"
|
||||
],
|
||||
"K18": [
|
||||
"8",
|
||||
"ROLL_OVER",
|
||||
"ROLL_OVER",
|
||||
"ROLL_OVER"
|
||||
],
|
||||
"K19": [
|
||||
"9",
|
||||
"ROLL_OVER",
|
||||
"ROLL_OVER",
|
||||
"ROLL_OVER"
|
||||
],
|
||||
"K1A": [
|
||||
"0",
|
||||
"KBD_TOGGLE",
|
||||
"ROLL_OVER",
|
||||
"ROLL_OVER"
|
||||
],
|
||||
"K1B": [
|
||||
"MINUS",
|
||||
"KBD_DOWN",
|
||||
"ROLL_OVER",
|
||||
"ROLL_OVER"
|
||||
],
|
||||
"K1C": [
|
||||
"EQUALS",
|
||||
"KBD_UP",
|
||||
"ROLL_OVER",
|
||||
"ROLL_OVER"
|
||||
],
|
||||
"K1D": [
|
||||
"BKSP",
|
||||
"ROLL_OVER",
|
||||
"ROLL_OVER",
|
||||
"ROLL_OVER"
|
||||
],
|
||||
"K1E": [
|
||||
"PGUP",
|
||||
"VOLUME_UP",
|
||||
"ROLL_OVER",
|
||||
"ROLL_OVER"
|
||||
],
|
||||
"K20": [
|
||||
"TAB",
|
||||
"ROLL_OVER",
|
||||
"ROLL_OVER",
|
||||
"ROLL_OVER"
|
||||
],
|
||||
"K21": [
|
||||
"Q",
|
||||
"ROLL_OVER",
|
||||
"ROLL_OVER",
|
||||
"ROLL_OVER"
|
||||
],
|
||||
"K22": [
|
||||
"W",
|
||||
"ROLL_OVER",
|
||||
"ROLL_OVER",
|
||||
"ROLL_OVER"
|
||||
],
|
||||
"K23": [
|
||||
"E",
|
||||
"ROLL_OVER",
|
||||
"ROLL_OVER",
|
||||
"ROLL_OVER"
|
||||
],
|
||||
"K24": [
|
||||
"R",
|
||||
"ROLL_OVER",
|
||||
"ROLL_OVER",
|
||||
"ROLL_OVER"
|
||||
],
|
||||
"K25": [
|
||||
"T",
|
||||
"ROLL_OVER",
|
||||
"ROLL_OVER",
|
||||
"ROLL_OVER"
|
||||
],
|
||||
"K26": [
|
||||
"Y",
|
||||
"HOME",
|
||||
"ROLL_OVER",
|
||||
"ROLL_OVER"
|
||||
],
|
||||
"K27": [
|
||||
"U",
|
||||
"PGDN",
|
||||
"ROLL_OVER",
|
||||
"ROLL_OVER"
|
||||
],
|
||||
"K28": [
|
||||
"I",
|
||||
"PGUP",
|
||||
"ROLL_OVER",
|
||||
"ROLL_OVER"
|
||||
],
|
||||
"K29": [
|
||||
"O",
|
||||
"END",
|
||||
"ROLL_OVER",
|
||||
"ROLL_OVER"
|
||||
],
|
||||
"K2A": [
|
||||
"P",
|
||||
"ROLL_OVER",
|
||||
"ROLL_OVER",
|
||||
"ROLL_OVER"
|
||||
],
|
||||
"K2B": [
|
||||
"BRACE_OPEN",
|
||||
"ROLL_OVER",
|
||||
"ROLL_OVER",
|
||||
"ROLL_OVER"
|
||||
],
|
||||
"K2C": [
|
||||
"BRACE_CLOSE",
|
||||
"ROLL_OVER",
|
||||
"ROLL_OVER",
|
||||
"ROLL_OVER"
|
||||
],
|
||||
"K2D": [
|
||||
"BACKSLASH",
|
||||
"ROLL_OVER",
|
||||
"ROLL_OVER",
|
||||
"ROLL_OVER"
|
||||
],
|
||||
"K2E": [
|
||||
"PGDN",
|
||||
"VOLUME_DOWN",
|
||||
"ROLL_OVER",
|
||||
"ROLL_OVER"
|
||||
],
|
||||
"K30": [
|
||||
"CAPS",
|
||||
"ROLL_OVER",
|
||||
"ROLL_OVER",
|
||||
"ROLL_OVER"
|
||||
],
|
||||
"K31": [
|
||||
"A",
|
||||
"ROLL_OVER",
|
||||
"ROLL_OVER",
|
||||
"ROLL_OVER"
|
||||
],
|
||||
"K32": [
|
||||
"S",
|
||||
"ROLL_OVER",
|
||||
"ROLL_OVER",
|
||||
"ROLL_OVER"
|
||||
],
|
||||
"K33": [
|
||||
"D",
|
||||
"ROLL_OVER",
|
||||
"ROLL_OVER",
|
||||
"ROLL_OVER"
|
||||
],
|
||||
"K34": [
|
||||
"F",
|
||||
"ROLL_OVER",
|
||||
"ROLL_OVER",
|
||||
"ROLL_OVER"
|
||||
],
|
||||
"K35": [
|
||||
"G",
|
||||
"ROLL_OVER",
|
||||
"ROLL_OVER",
|
||||
"ROLL_OVER"
|
||||
],
|
||||
"K36": [
|
||||
"H",
|
||||
"LEFT",
|
||||
"ROLL_OVER",
|
||||
"ROLL_OVER"
|
||||
],
|
||||
"K37": [
|
||||
"J",
|
||||
"DOWN",
|
||||
"ROLL_OVER",
|
||||
"ROLL_OVER"
|
||||
],
|
||||
"K38": [
|
||||
"K",
|
||||
"UP",
|
||||
"ROLL_OVER",
|
||||
"ROLL_OVER"
|
||||
],
|
||||
"K39": [
|
||||
"L",
|
||||
"RIGHT",
|
||||
"ROLL_OVER",
|
||||
"ROLL_OVER"
|
||||
],
|
||||
"K3A": [
|
||||
"SEMICOLON",
|
||||
"ROLL_OVER",
|
||||
"ROLL_OVER",
|
||||
"ROLL_OVER"
|
||||
],
|
||||
"K3B": [
|
||||
"QUOTE",
|
||||
"ROLL_OVER",
|
||||
"ROLL_OVER",
|
||||
"ROLL_OVER"
|
||||
],
|
||||
"K3C": [
|
||||
"ENTER",
|
||||
"ROLL_OVER",
|
||||
"ROLL_OVER",
|
||||
"ROLL_OVER"
|
||||
],
|
||||
"K3D": [
|
||||
"END",
|
||||
"MUTE",
|
||||
"ROLL_OVER",
|
||||
"ROLL_OVER"
|
||||
],
|
||||
"K40": [
|
||||
"LEFT_SHIFT",
|
||||
"ROLL_OVER",
|
||||
"ROLL_OVER",
|
||||
"ROLL_OVER"
|
||||
],
|
||||
"K41": [
|
||||
"Z",
|
||||
"ROLL_OVER",
|
||||
"ROLL_OVER",
|
||||
"ROLL_OVER"
|
||||
],
|
||||
"K42": [
|
||||
"X",
|
||||
"ROLL_OVER",
|
||||
"ROLL_OVER",
|
||||
"ROLL_OVER"
|
||||
],
|
||||
"K43": [
|
||||
"C",
|
||||
"ROLL_OVER",
|
||||
"ROLL_OVER",
|
||||
"ROLL_OVER"
|
||||
],
|
||||
"K44": [
|
||||
"V",
|
||||
"ROLL_OVER",
|
||||
"ROLL_OVER",
|
||||
"ROLL_OVER"
|
||||
],
|
||||
"K45": [
|
||||
"B",
|
||||
"ROLL_OVER",
|
||||
"ROLL_OVER",
|
||||
"ROLL_OVER"
|
||||
],
|
||||
"K46": [
|
||||
"N",
|
||||
"ROLL_OVER",
|
||||
"ROLL_OVER",
|
||||
"ROLL_OVER"
|
||||
],
|
||||
"K47": [
|
||||
"M",
|
||||
"ROLL_OVER",
|
||||
"ROLL_OVER",
|
||||
"ROLL_OVER"
|
||||
],
|
||||
"K48": [
|
||||
"COMMA",
|
||||
"ROLL_OVER",
|
||||
"ROLL_OVER",
|
||||
"ROLL_OVER"
|
||||
],
|
||||
"K49": [
|
||||
"PERIOD",
|
||||
"ROLL_OVER",
|
||||
"ROLL_OVER",
|
||||
"ROLL_OVER"
|
||||
],
|
||||
"K4A": [
|
||||
"SLASH",
|
||||
"ROLL_OVER",
|
||||
"ROLL_OVER",
|
||||
"ROLL_OVER"
|
||||
],
|
||||
"K4B": [
|
||||
"RIGHT_SHIFT",
|
||||
"ROLL_OVER",
|
||||
"ROLL_OVER",
|
||||
"ROLL_OVER"
|
||||
],
|
||||
"K4C": [
|
||||
"UP",
|
||||
"PGUP",
|
||||
"ROLL_OVER",
|
||||
"ROLL_OVER"
|
||||
],
|
||||
"K50": [
|
||||
"LEFT_CTRL",
|
||||
"ROLL_OVER",
|
||||
"ROLL_OVER",
|
||||
"ROLL_OVER"
|
||||
],
|
||||
"K51": [
|
||||
"LEFT_SUPER",
|
||||
"ROLL_OVER",
|
||||
"ROLL_OVER",
|
||||
"ROLL_OVER"
|
||||
],
|
||||
"K52": [
|
||||
"LEFT_ALT",
|
||||
"ROLL_OVER",
|
||||
"ROLL_OVER",
|
||||
"ROLL_OVER"
|
||||
],
|
||||
"K53": [
|
||||
"FN",
|
||||
"ROLL_OVER",
|
||||
"ROLL_OVER",
|
||||
"ROLL_OVER"
|
||||
],
|
||||
"K54": [
|
||||
"SPACE",
|
||||
"ROLL_OVER",
|
||||
"ROLL_OVER",
|
||||
"ROLL_OVER"
|
||||
],
|
||||
"K55": [
|
||||
"SPACE",
|
||||
"ROLL_OVER",
|
||||
"ROLL_OVER",
|
||||
"ROLL_OVER"
|
||||
],
|
||||
"K56": [
|
||||
"RIGHT_CTRL",
|
||||
"ROLL_OVER",
|
||||
"ROLL_OVER",
|
||||
"ROLL_OVER"
|
||||
],
|
||||
"K57": [
|
||||
"RIGHT_ALT",
|
||||
"ROLL_OVER",
|
||||
"ROLL_OVER",
|
||||
"ROLL_OVER"
|
||||
],
|
||||
"K58": [
|
||||
"PRINT_SCREEN",
|
||||
"ROLL_OVER",
|
||||
"ROLL_OVER",
|
||||
"ROLL_OVER"
|
||||
],
|
||||
"K59": [
|
||||
"LEFT",
|
||||
"HOME",
|
||||
"ROLL_OVER",
|
||||
"ROLL_OVER"
|
||||
],
|
||||
"K5A": [
|
||||
"DOWN",
|
||||
"PGDN",
|
||||
"ROLL_OVER",
|
||||
"ROLL_OVER"
|
||||
],
|
||||
"K5B": [
|
||||
"RIGHT",
|
||||
"END",
|
||||
"ROLL_OVER",
|
||||
"ROLL_OVER"
|
||||
]
|
||||
},
|
||||
"key_leds": {
|
||||
"K00": null,
|
||||
"K01": null,
|
||||
"K02": null,
|
||||
"K03": null,
|
||||
"K04": null,
|
||||
"K05": null,
|
||||
"K06": null,
|
||||
"K07": null,
|
||||
"K08": null,
|
||||
"K09": null,
|
||||
"K0A": null,
|
||||
"K0B": null,
|
||||
"K0C": null,
|
||||
"K0D": null,
|
||||
"K0E": null,
|
||||
"K10": null,
|
||||
"K11": null,
|
||||
"K12": null,
|
||||
"K13": null,
|
||||
"K14": null,
|
||||
"K15": null,
|
||||
"K16": null,
|
||||
"K17": null,
|
||||
"K18": null,
|
||||
"K19": null,
|
||||
"K1A": null,
|
||||
"K1B": null,
|
||||
"K1C": null,
|
||||
"K1D": null,
|
||||
"K1E": null,
|
||||
"K20": null,
|
||||
"K21": null,
|
||||
"K22": null,
|
||||
"K23": null,
|
||||
"K24": null,
|
||||
"K25": null,
|
||||
"K26": null,
|
||||
"K27": null,
|
||||
"K28": null,
|
||||
"K29": null,
|
||||
"K2A": null,
|
||||
"K2B": null,
|
||||
"K2C": null,
|
||||
"K2D": null,
|
||||
"K2E": null,
|
||||
"K30": null,
|
||||
"K31": null,
|
||||
"K32": null,
|
||||
"K33": null,
|
||||
"K34": null,
|
||||
"K35": null,
|
||||
"K36": null,
|
||||
"K37": null,
|
||||
"K38": null,
|
||||
"K39": null,
|
||||
"K3A": null,
|
||||
"K3B": null,
|
||||
"K3C": null,
|
||||
"K3D": null,
|
||||
"K40": null,
|
||||
"K41": null,
|
||||
"K42": null,
|
||||
"K43": null,
|
||||
"K44": null,
|
||||
"K45": null,
|
||||
"K46": null,
|
||||
"K47": null,
|
||||
"K48": null,
|
||||
"K49": null,
|
||||
"K4A": null,
|
||||
"K4B": null,
|
||||
"K4C": null,
|
||||
"K50": null,
|
||||
"K51": null,
|
||||
"K52": null,
|
||||
"K53": null,
|
||||
"K54": null,
|
||||
"K55": null,
|
||||
"K56": null,
|
||||
"K57": null,
|
||||
"K58": null,
|
||||
"K59": null,
|
||||
"K5A": null,
|
||||
"K5B": null
|
||||
},
|
||||
"layers": [
|
||||
{
|
||||
"mode": [
|
||||
7,
|
||||
127
|
||||
],
|
||||
"brightness": 135,
|
||||
"color": [
|
||||
142,
|
||||
255
|
||||
]
|
||||
},
|
||||
{
|
||||
"mode": [
|
||||
13,
|
||||
127
|
||||
],
|
||||
"brightness": 135,
|
||||
"color": [
|
||||
142,
|
||||
255
|
||||
]
|
||||
},
|
||||
{
|
||||
"mode": [
|
||||
13,
|
||||
127
|
||||
],
|
||||
"brightness": 135,
|
||||
"color": [
|
||||
142,
|
||||
255
|
||||
]
|
||||
},
|
||||
{
|
||||
"mode": [
|
||||
13,
|
||||
127
|
||||
],
|
||||
"brightness": 135,
|
||||
"color": [
|
||||
142,
|
||||
255
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
10
ansible/roles/media/tasks/amd.yaml
Normal file
10
ansible/roles/media/tasks/amd.yaml
Normal file
@@ -0,0 +1,10 @@
|
||||
- name: Install scripts
|
||||
copy:
|
||||
src: "files/{{ item.src }}"
|
||||
dest: "{{ item.dest }}"
|
||||
mode: 0755
|
||||
owner: root
|
||||
group: wheel
|
||||
loop:
|
||||
- src: cast_file_vaapi
|
||||
dest: /usr/local/bin/cast_file
|
||||
@@ -6,5 +6,5 @@
|
||||
owner: root
|
||||
group: wheel
|
||||
loop:
|
||||
- src: cast_file_intel
|
||||
- src: cast_file_vaapi
|
||||
dest: /usr/local/bin/cast_file
|
||||
|
||||
@@ -7,5 +7,5 @@ NameResolvingService=systemd
|
||||
EnableNetworkConfiguration=True
|
||||
# route_priority_offset=300
|
||||
|
||||
[Scan]
|
||||
DisablePeriodicScan=true
|
||||
# [Scan]
|
||||
# DisablePeriodicScan=true
|
||||
|
||||
@@ -1,4 +1,3 @@
|
||||
#wlans_ath0="wlan0"
|
||||
wlans_iwm0="wlan0"
|
||||
wlans_ath0="wlan0"
|
||||
ifconfig_wlan0="WPA DHCP"
|
||||
ifconfig_wlan0_ipv6="inet6 accept_rtadv"
|
||||
|
||||
@@ -36,5 +36,5 @@
|
||||
daemon_reload: yes
|
||||
loop:
|
||||
- iwd.service
|
||||
- systemd-networkd.service
|
||||
# - systemd-networkd.service
|
||||
- systemd-resolved.service
|
||||
|
||||
5
ansible/roles/odowork/tasks/linux.yaml
Normal file
5
ansible/roles/odowork/tasks/linux.yaml
Normal file
@@ -0,0 +1,5 @@
|
||||
- name: Install packages
|
||||
package:
|
||||
name:
|
||||
- python-numpy # Increases the speed of iap tunnels
|
||||
state: present
|
||||
2
ansible/roles/package_manager/files/freeze_kernel.conf
Normal file
2
ansible/roles/package_manager/files/freeze_kernel.conf
Normal file
@@ -0,0 +1,2 @@
|
||||
[options]
|
||||
IgnorePkg = linux linux-headers
|
||||
@@ -39,7 +39,7 @@
|
||||
mode: 0644
|
||||
loop:
|
||||
- /etc/pacman.d/conf.d/blank.conf
|
||||
when: "{{ file_exists | community.general.json_query(sub_query) | first | default(False) }} == False"
|
||||
when: "file_exists | community.general.json_query(sub_query) | first | default(False) == False"
|
||||
vars:
|
||||
sub_query: "results[?stat.path=='{{ item }}'].stat.exists"
|
||||
|
||||
@@ -52,6 +52,7 @@
|
||||
group: root
|
||||
loop:
|
||||
- freeze_firefox.conf
|
||||
- freeze_kernel.conf
|
||||
|
||||
- name: Install packages
|
||||
package:
|
||||
|
||||
@@ -1,4 +0,0 @@
|
||||
evdev:atkbd:dmi:bvn*:bvr*:bd*:svnGoogle:pnEve:pvr*
|
||||
KEYBOARD_KEY_5d=delete
|
||||
KEYBOARD_KEY_d8=leftmeta
|
||||
KEYBOARD_KEY_db=capslock
|
||||
Binary file not shown.
@@ -1,129 +0,0 @@
|
||||
SectionVerb {
|
||||
EnableSequence [
|
||||
cdev "hw:kblr55145663max"
|
||||
|
||||
cset "name='codec1_out mo hs_pb_in mi Switch' on"
|
||||
cset "name='Left DAI Sel Mux' Left"
|
||||
cset "name='Right DAI Sel Mux' Right"
|
||||
cset "name='Left Speaker Volume' 3"
|
||||
cset "name='Right Speaker Volume' 3"
|
||||
cset "name='Left Digital Volume' 60"
|
||||
cset "name='Right Digital Volume' 60"
|
||||
cset "name='Left Spk Switch' on"
|
||||
cset "name='Right Spk Switch' on"
|
||||
cset "name='Left Boost Output Voltage' 0"
|
||||
cset "name='Right Boost Output Voltage' 0"
|
||||
cset "name='Left Current Limit' 7"
|
||||
cset "name='Right Current Limit' 7"
|
||||
cset "name='Headphone Playback Volume' 16"
|
||||
cset "name='Headset Mic Switch' off"
|
||||
cset "name='DMIC Switch' on"
|
||||
cset "name='STO1 ADC MIXL ADC1 Switch' on"
|
||||
cset "name='Pin5-Port0 Mux' 2"
|
||||
cset "name='Pin5-Port1 Mux' 2"
|
||||
cset "name='Pin5-Port2 Mux' 2"
|
||||
cset "name='Pin6-Port0 Mux' 1"
|
||||
cset "name='Pin6-Port1 Mux' 1"
|
||||
cset "name='Pin6-Port2 Mux' 1"
|
||||
cset "name='Pin7-Port0 Mux' 3"
|
||||
cset "name='Pin7-Port1 Mux' 3"
|
||||
cset "name='Pin7-Port2 Mux' 3"
|
||||
cset "name='ADC Capture Volume' 35"
|
||||
cset "name='ADC1 Capture Volume' 55"
|
||||
cset "name='ADC2 Capture Volume' 55"
|
||||
cset "name='DAC L Mux' STO DAC MIXL"
|
||||
cset "name='DAC R Mux' STO DAC MIXR"
|
||||
cset "name='STO1 DAC MIXL DAC L Switch' on"
|
||||
cset "name='STO1 DAC MIXR DAC R Switch' on"
|
||||
cset-tlv "name='spk_pb_in dsm 0 dsm_params params' /opt/google/dsm/dsmparam.bin"
|
||||
]
|
||||
}
|
||||
|
||||
SectionDevice."Speaker" {
|
||||
Comment "Speaker"
|
||||
|
||||
Value {
|
||||
PlaybackPCM "hw:kblr55145663max,0"
|
||||
DspName "speaker_eq"
|
||||
}
|
||||
}
|
||||
|
||||
SectionDevice."Headphones" {
|
||||
Comment "Headphones"
|
||||
|
||||
Value {
|
||||
PlaybackPCM "hw:kblr55145663max,2"
|
||||
MixerName "DAC"
|
||||
JackDev "kbl-r5514-5663-max Headset Jack"
|
||||
|
||||
}
|
||||
|
||||
EnableSequence [
|
||||
cset "name='Headphone Jack Switch' on"
|
||||
]
|
||||
|
||||
DisableSequence [
|
||||
cset "name='Headphone Jack Switch' off"
|
||||
]
|
||||
}
|
||||
|
||||
SectionDevice."Internal Mic" {
|
||||
Comment "Internal Microphone"
|
||||
|
||||
Value {
|
||||
CapturePCM "hw:kblr55145663max,4"
|
||||
CaptureChannelMap "2 3 0 1 -1 -1 -1 -1 -1 -1 -1"
|
||||
MixerName "ADC2"
|
||||
DefaultNodeGain "2700"
|
||||
CaptureChannels "4"
|
||||
}
|
||||
|
||||
EnableSequence [
|
||||
cset "name='Sto1 ADC MIXL DMIC Switch' on"
|
||||
cset "name='Sto1 ADC MIXR DMIC Switch' on"
|
||||
cset "name='Sto2 ADC MIXL DMIC Switch' on"
|
||||
cset "name='Sto2 ADC MIXR DMIC Switch' on"
|
||||
]
|
||||
|
||||
DisableSequence [
|
||||
cset "name='Sto1 ADC MIXL DMIC Switch' off"
|
||||
cset "name='Sto1 ADC MIXR DMIC Switch' off"
|
||||
cset "name='Sto2 ADC MIXL DMIC Switch' off"
|
||||
cset "name='Sto2 ADC MIXR DMIC Switch' off"
|
||||
]
|
||||
}
|
||||
|
||||
SectionDevice."Mic" {
|
||||
Comment "Headset Microphone"
|
||||
|
||||
Value {
|
||||
CapturePCM "hw:kblr55145663max,1"
|
||||
JackDev "kbl-r5514-5663-max Headset Jack"
|
||||
}
|
||||
|
||||
EnableSequence [
|
||||
cset "name='Headset Mic Switch' on"
|
||||
]
|
||||
|
||||
DisableSequence [
|
||||
cset "name='Headset Mic Switch' off"
|
||||
]
|
||||
}
|
||||
|
||||
SectionDevice."HDMI1" {
|
||||
Comment "HDMI 1"
|
||||
|
||||
Value {
|
||||
PlaybackPCM "hw:kblr55145663max,6"
|
||||
JackDev "kbl-r5514-5663-max HDMI/DP,pcm=6 Jack"
|
||||
}
|
||||
}
|
||||
|
||||
SectionDevice."HDMI2" {
|
||||
Comment "HDMI 2"
|
||||
|
||||
Value {
|
||||
PlaybackPCM "hw:kblr55145663max,7"
|
||||
JackDev "kbl-r5514-5663-max HDMI/DP,pcm=7 Jack"
|
||||
}
|
||||
}
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -1,6 +0,0 @@
|
||||
Syntax 3
|
||||
|
||||
SectionUseCase."HiFi" {
|
||||
File "HiFi.conf"
|
||||
Comment "Default"
|
||||
}
|
||||
@@ -1,2 +0,0 @@
|
||||
# Enable the pixelbook keyboard backlight. This seems to persist without needing the tmpfiles.d entry but it is here for clean installs of the machine.
|
||||
w- /sys/class/leds/chromeos::kbd_backlight/brightness - - - - 100
|
||||
@@ -1,57 +0,0 @@
|
||||
# Audio firmware from instructions at https://wiki.gentoo.org/wiki/Google_Pixelbook_(2017)#Audio
|
||||
|
||||
- name: Create directories
|
||||
file:
|
||||
name: "{{ item }}"
|
||||
state: directory
|
||||
mode: 0755
|
||||
owner: root
|
||||
group: wheel
|
||||
loop:
|
||||
- /opt/google/dsm
|
||||
- /usr/share/alsa/ucm2/Intel/kbl-r5514-5663-
|
||||
- /usr/share/alsa/ucm2/conf.d/kbl-r5514-5663-
|
||||
|
||||
- name: Install tmpfiles.d configuration
|
||||
copy:
|
||||
src: "files/{{ item }}_tmpfiles.conf"
|
||||
dest: "/etc/tmpfiles.d/{{ item }}.conf"
|
||||
mode: 0644
|
||||
owner: root
|
||||
group: wheel
|
||||
loop:
|
||||
- pixelbook_keyboard_backlight
|
||||
|
||||
- name: Install Configuration
|
||||
copy:
|
||||
src: "files/{{ item.src }}"
|
||||
dest: "{{ item.dest }}"
|
||||
mode: 0600
|
||||
owner: root
|
||||
group: wheel
|
||||
loop:
|
||||
- src: 61-eve-keyboard.hwdb
|
||||
dest: /etc/udev/hwdb.d/61-eve-keyboard.hwdb
|
||||
- src: 9d71-GOOGLE-EVEMAX-0-tplg.bin
|
||||
dest: /lib/firmware/9d71-GOOGLE-EVEMAX-0-tplg.bin
|
||||
- src: dsp_lib_dsm_core_spt_release.bin
|
||||
dest: /lib/firmware/dsp_lib_dsm_core_spt_release.bin
|
||||
- src: dsp_fw_C75061F3-F2B2-4DCC-8F9F-82ABB4131E66.bin
|
||||
dest: /lib/firmware/intel/dsp_fw_C75061F3-F2B2-4DCC-8F9F-82ABB4131E66.bin
|
||||
- src: dsmparam.bin
|
||||
dest: /opt/google/dsm/dsmparam.bin
|
||||
- src: HiFi.conf
|
||||
dest: /usr/share/alsa/ucm2/Intel/kbl-r5514-5663-/HiFi.conf
|
||||
- src: kbl-r5514-5663-.conf
|
||||
dest: /usr/share/alsa/ucm2/Intel/kbl-r5514-5663-/kbl-r5514-5663-.conf
|
||||
|
||||
- name: Create symlinks
|
||||
file:
|
||||
src: "{{ item.src }}"
|
||||
dest: "{{ item.dest }}"
|
||||
owner: root
|
||||
group: wheel
|
||||
state: link
|
||||
loop:
|
||||
- src: /usr/share/alsa/ucm2/Intel/kbl-r5514-5663-/kbl-r5514-5663-.conf
|
||||
dest: /usr/share/alsa/ucm2/conf.d/kbl-r5514-5663-/kbl-r5514-5663-.conf
|
||||
@@ -4,7 +4,7 @@
|
||||
#
|
||||
# Example from bottom of /usr/share/examples/etc/make.conf
|
||||
.if ${.CURDIR:N*/lang/gcc48*} && ${.CURDIR:N*/lang/gcc10*} && ${.CURDIR:N*/devel/qt6-base*}
|
||||
CPUTYPE?=skylake
|
||||
CPUTYPE?=tigerlake
|
||||
# CPUTYPE?=x86-64-v4
|
||||
.endif
|
||||
|
||||
|
||||
2
ansible/roles/python/meta/main.yaml
Normal file
2
ansible/roles/python/meta/main.yaml
Normal file
@@ -0,0 +1,2 @@
|
||||
dependencies:
|
||||
- pyenv
|
||||
55
ansible/roles/python/tasks/common.yaml
Normal file
55
ansible/roles/python/tasks/common.yaml
Normal file
@@ -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
|
||||
5
ansible/roles/python/tasks/freebsd.yaml
Normal file
5
ansible/roles/python/tasks/freebsd.yaml
Normal file
@@ -0,0 +1,5 @@
|
||||
# - name: Install packages
|
||||
# package:
|
||||
# name:
|
||||
# - foo
|
||||
# state: present
|
||||
6
ansible/roles/python/tasks/linux.yaml
Normal file
6
ansible/roles/python/tasks/linux.yaml
Normal file
@@ -0,0 +1,6 @@
|
||||
- name: Install packages
|
||||
package:
|
||||
name:
|
||||
- python
|
||||
- python-poetry
|
||||
state: present
|
||||
2
ansible/roles/python/tasks/main.yaml
Normal file
2
ansible/roles/python/tasks/main.yaml
Normal file
@@ -0,0 +1,2 @@
|
||||
- import_tasks: tasks/common.yaml
|
||||
# when: foo is defined
|
||||
29
ansible/roles/python/tasks/peruser.yaml
Normal file
29
ansible/roles/python/tasks/peruser.yaml
Normal file
@@ -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"'
|
||||
0
ansible/roles/python/tasks/peruser_freebsd.yaml
Normal file
0
ansible/roles/python/tasks/peruser_freebsd.yaml
Normal file
0
ansible/roles/python/tasks/peruser_linux.yaml
Normal file
0
ansible/roles/python/tasks/peruser_linux.yaml
Normal file
@@ -1,2 +1,2 @@
|
||||
# Check that rust-analyzer is valid for date on https://rust-lang.github.io/rustup-components-history/
|
||||
rust_date: "2023-10-16"
|
||||
rust_date: "2023-12-04"
|
||||
|
||||
@@ -3,10 +3,13 @@
|
||||
args:
|
||||
creates: "{{ account_homedir.stdout }}/.rustup/toolchains/nightly-{{ rust_date }}-x86_64-unknown-linux-gnu"
|
||||
|
||||
- name: Install the musl target
|
||||
command: rustup target add x86_64-unknown-linux-musl
|
||||
- name: Install targets
|
||||
command: rustup target add "{{ item }}"
|
||||
args:
|
||||
creates: "{{ account_homedir.stdout }}/.rustup/toolchains/nightly-{{ rust_date }}-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-musl"
|
||||
creates: "{{ account_homedir.stdout }}/.rustup/toolchains/nightly-{{ rust_date }}-x86_64-unknown-linux-gnu/lib/rustlib/{{ item }}"
|
||||
loop:
|
||||
- x86_64-unknown-linux-musl
|
||||
- wasm32-unknown-unknown
|
||||
|
||||
# Needed by rust-analyzer (rust-analyzer will attempt to install via rustup on its own, but this will install it manually).
|
||||
- name: Install the nightly rust-src
|
||||
|
||||
@@ -10,3 +10,4 @@ default_sway_conf_files:
|
||||
- disable_focus_follows_mouse
|
||||
- lockscreen
|
||||
- logout
|
||||
- force_focus
|
||||
|
||||
@@ -0,0 +1,4 @@
|
||||
mode "force focus" {
|
||||
bindsym $mod+Shift+Escape fullscreen; mode "default"
|
||||
}
|
||||
bindsym $mod+Shift+f fullscreen; mode "force focus"
|
||||
1
ansible/roles/vscode/defaults/main.yaml
Normal file
1
ansible/roles/vscode/defaults/main.yaml
Normal file
@@ -0,0 +1 @@
|
||||
closed_source_vscode: false
|
||||
1
ansible/roles/vscode/files/code-flags.conf
Normal file
1
ansible/roles/vscode/files/code-flags.conf
Normal file
@@ -0,0 +1 @@
|
||||
--ozone-platform-hint=auto
|
||||
192
ansible/roles/vscode/files/keybindings.json
Normal file
192
ansible/roles/vscode/files/keybindings.json
Normal file
@@ -0,0 +1,192 @@
|
||||
// Place your key bindings in this file to override the defaultsauto[]
|
||||
[
|
||||
{
|
||||
"key": "alt+.",
|
||||
"command": "editor.action.revealDefinition",
|
||||
"when": "editorHasDefinitionProvider && editorTextFocus && !isInEmbeddedEditor"
|
||||
},
|
||||
{
|
||||
"key": "f12",
|
||||
"command": "-editor.action.revealDefinition",
|
||||
"when": "editorHasDefinitionProvider && editorTextFocus && !isInEmbeddedEditor"
|
||||
},
|
||||
{
|
||||
"key": "alt+,",
|
||||
"command": "workbench.action.navigateBack",
|
||||
"when": "canNavigateBack"
|
||||
},
|
||||
{
|
||||
"key": "ctrl+alt+-",
|
||||
"command": "-workbench.action.navigateBack",
|
||||
"when": "canNavigateBack"
|
||||
},
|
||||
{
|
||||
"key": "shift+alt+/",
|
||||
"command": "editor.action.goToReferences",
|
||||
"when": "editorHasReferenceProvider && editorTextFocus && !inReferenceSearchEditor && !isInEmbeddedEditor"
|
||||
},
|
||||
{
|
||||
"key": "shift+f12",
|
||||
"command": "-editor.action.goToReferences",
|
||||
"when": "editorHasReferenceProvider && editorTextFocus && !inReferenceSearchEditor && !isInEmbeddedEditor"
|
||||
},
|
||||
{
|
||||
"key": "ctrl+alt+.",
|
||||
"command": "workbench.action.showAllSymbols"
|
||||
},
|
||||
{
|
||||
"key": "ctrl+t",
|
||||
"command": "-workbench.action.showAllSymbols"
|
||||
},
|
||||
{
|
||||
"key": "alt+;",
|
||||
"command": "editor.action.commentLine",
|
||||
"when": "editorTextFocus && !editorReadonly"
|
||||
},
|
||||
{
|
||||
"key": "ctrl+/",
|
||||
"command": "-editor.action.commentLine",
|
||||
"when": "editorTextFocus && !editorReadonly"
|
||||
},
|
||||
{
|
||||
"key": "ctrl+x",
|
||||
"command": "-editor.action.clipboardCutAction"
|
||||
},
|
||||
{
|
||||
"key": "ctrl+x",
|
||||
"command": "-filesExplorer.cut",
|
||||
"when": "filesExplorerFocus && foldersViewVisible && !explorerResourceIsRoot && !explorerResourceReadonly && !inputFocus"
|
||||
},
|
||||
{
|
||||
"key": "ctrl+x 3",
|
||||
"command": "workbench.action.splitEditor"
|
||||
},
|
||||
{
|
||||
"key": "ctrl+\\",
|
||||
"command": "-workbench.action.splitEditor"
|
||||
},
|
||||
{
|
||||
"key": "ctrl+x 2",
|
||||
"command": "workbench.action.splitEditorDown"
|
||||
},
|
||||
{
|
||||
"key": "ctrl+k ctrl+\\",
|
||||
"command": "-workbench.action.splitEditorDown"
|
||||
},
|
||||
{
|
||||
"key": "ctrl+x 1",
|
||||
"command": "workbench.action.joinAllGroups"
|
||||
},
|
||||
{
|
||||
"key": "ctrl+x 0",
|
||||
"command": "workbench.action.closeEditorsAndGroup"
|
||||
},
|
||||
{
|
||||
"key": "ctrl+x shift+=",
|
||||
"command": "workbench.action.evenEditorWidths"
|
||||
},
|
||||
{
|
||||
"key": "shift+up",
|
||||
"command": "workbench.action.focusAboveGroup"
|
||||
},
|
||||
{
|
||||
"key": "ctrl+k ctrl+up",
|
||||
"command": "-workbench.action.focusAboveGroup"
|
||||
},
|
||||
{
|
||||
"key": "shift+down",
|
||||
"command": "workbench.action.focusBelowGroup"
|
||||
},
|
||||
{
|
||||
"key": "ctrl+k ctrl+down",
|
||||
"command": "-workbench.action.focusBelowGroup"
|
||||
},
|
||||
{
|
||||
"key": "shift+left",
|
||||
"command": "workbench.action.focusLeftGroup"
|
||||
},
|
||||
{
|
||||
"key": "ctrl+k ctrl+left",
|
||||
"command": "-workbench.action.focusLeftGroup"
|
||||
},
|
||||
{
|
||||
"key": "shift+right",
|
||||
"command": "workbench.action.focusRightGroup"
|
||||
},
|
||||
{
|
||||
"key": "ctrl+k ctrl+right",
|
||||
"command": "-workbench.action.focusRightGroup"
|
||||
},
|
||||
{
|
||||
"key": "ctrl+x ctrl+s",
|
||||
"command": "workbench.action.files.save"
|
||||
},
|
||||
{
|
||||
"key": "ctrl+s",
|
||||
"command": "-workbench.action.files.save"
|
||||
},
|
||||
{
|
||||
"key": "alt+g g",
|
||||
"command": "workbench.action.gotoLine"
|
||||
},
|
||||
{
|
||||
"key": "ctrl+g",
|
||||
"command": "-workbench.action.gotoLine"
|
||||
},
|
||||
{
|
||||
"key": "ctrl+space",
|
||||
"command": "editor.action.setSelectionAnchor",
|
||||
"when": "editorTextFocus"
|
||||
},
|
||||
{
|
||||
"key": "ctrl+k ctrl+b",
|
||||
"command": "-editor.action.setSelectionAnchor",
|
||||
"when": "editorTextFocus"
|
||||
},
|
||||
{
|
||||
"key": "alt+w",
|
||||
"command": "editor.action.clipboardCopyAction"
|
||||
},
|
||||
{
|
||||
"key": "ctrl+c",
|
||||
"command": "-editor.action.clipboardCopyAction"
|
||||
},
|
||||
{
|
||||
"key": "ctrl+w",
|
||||
"command": "editor.action.clipboardCutAction"
|
||||
},
|
||||
{
|
||||
"key": "ctrl+y",
|
||||
"command": "editor.action.clipboardPasteAction"
|
||||
},
|
||||
{
|
||||
"key": "ctrl+v",
|
||||
"command": "-editor.action.clipboardPasteAction"
|
||||
},
|
||||
{
|
||||
"key": "ctrl+x ctrl+f",
|
||||
"command": "workbench.action.quickOpen"
|
||||
},
|
||||
{
|
||||
"key": "ctrl+e",
|
||||
"command": "-workbench.action.quickOpen"
|
||||
},
|
||||
{
|
||||
"key": "ctrl+a",
|
||||
"command": "cursorLineStart"
|
||||
},
|
||||
{
|
||||
"key": "ctrl+e",
|
||||
"command": "cursorLineEnd"
|
||||
},
|
||||
{
|
||||
"key": "ctrl+s",
|
||||
"command": "actions.find",
|
||||
"when": "editorFocus || editorIsOpen"
|
||||
},
|
||||
{
|
||||
"key": "ctrl+f",
|
||||
"command": "-actions.find",
|
||||
"when": "editorFocus || editorIsOpen"
|
||||
}
|
||||
]
|
||||
17
ansible/roles/vscode/files/settings.json
Normal file
17
ansible/roles/vscode/files/settings.json
Normal file
@@ -0,0 +1,17 @@
|
||||
{
|
||||
"workbench.colorTheme": "Default High Contrast",
|
||||
"remote.SSH.connectTimeout": 30,
|
||||
"remote.SSH.enableDynamicForwarding": false,
|
||||
"remote.SSH.enableAgentForwarding": false,
|
||||
"remote.SSH.enableX11Forwarding": false,
|
||||
"python.analysis.inlayHints.functionReturnTypes": true,
|
||||
"python.analysis.inlayHints.variableTypes": true,
|
||||
"editor.minimap.enabled": false,
|
||||
"editor.fontSize": 12,
|
||||
"editor.cursorStyle": "block",
|
||||
"editor.fontFamily": "'Cascadia Mono', 'monospace', monospace",
|
||||
"workbench.colorCustomizations": {
|
||||
"editorCursor.foreground": "#ccff66",
|
||||
"terminalCursor.foreground": "#ccff66"
|
||||
}
|
||||
}
|
||||
@@ -1,4 +1,29 @@
|
||||
- name: Build aur packages
|
||||
when: closed_source_vscode
|
||||
register: buildaur
|
||||
become_user: "{{ build_user.name }}"
|
||||
command: "aurutils-sync --no-view {{ item }}"
|
||||
args:
|
||||
creates: "/var/cache/pacman/custom/{{ item }}-*.pkg.tar.*"
|
||||
loop:
|
||||
- visual-studio-code-bin
|
||||
|
||||
- name: Update cache
|
||||
when: closed_source_vscode and buildaur.changed
|
||||
pacman:
|
||||
name: []
|
||||
state: present
|
||||
update_cache: true
|
||||
|
||||
- name: Install packages
|
||||
when: closed_source_vscode
|
||||
package:
|
||||
name:
|
||||
- visual-studio-code-bin
|
||||
state: present
|
||||
|
||||
- name: Install packages
|
||||
when: not closed_source_vscode
|
||||
package:
|
||||
name:
|
||||
- code
|
||||
|
||||
@@ -0,0 +1,61 @@
|
||||
- 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:
|
||||
# Support wayland
|
||||
- src: code-flags.conf
|
||||
dest: .config/code-flags.conf
|
||||
|
||||
- name: Create directories
|
||||
when: closed_source_vscode
|
||||
file:
|
||||
name: "{{ account_homedir.stdout }}/{{ item }}"
|
||||
state: directory
|
||||
mode: 0700
|
||||
owner: "{{ account_name.stdout }}"
|
||||
group: "{{ group_name.stdout }}"
|
||||
loop:
|
||||
- .config/Code/User
|
||||
|
||||
- name: Copy files
|
||||
when: closed_source_vscode
|
||||
copy:
|
||||
src: "files/{{ item.src }}"
|
||||
dest: "{{ account_homedir.stdout }}/{{ item.dest }}"
|
||||
mode: 0600
|
||||
owner: "{{ account_name.stdout }}"
|
||||
group: "{{ group_name.stdout }}"
|
||||
loop:
|
||||
- src: keybindings.json
|
||||
dest: .config/Code/User/keybindings.json
|
||||
- src: settings.json
|
||||
dest: .config/Code/User/settings.json
|
||||
|
||||
- name: Create directories
|
||||
when: not closed_source_vscode
|
||||
file:
|
||||
name: "{{ account_homedir.stdout }}/{{ item }}"
|
||||
state: directory
|
||||
mode: 0700
|
||||
owner: "{{ account_name.stdout }}"
|
||||
group: "{{ group_name.stdout }}"
|
||||
loop:
|
||||
- .config/Code/User
|
||||
|
||||
- name: Copy files
|
||||
when: not closed_source_vscode
|
||||
copy:
|
||||
src: "files/{{ item.src }}"
|
||||
dest: "{{ account_homedir.stdout }}/{{ item.dest }}"
|
||||
mode: 0600
|
||||
owner: "{{ account_name.stdout }}"
|
||||
group: "{{ group_name.stdout }}"
|
||||
loop:
|
||||
- src: keybindings.json
|
||||
dest: .config/Code - OSS/User/keybindings.json
|
||||
- src: settings.json
|
||||
dest: .config/Code - OSS/User/settings.json
|
||||
|
||||
55
ansible/roles/wasm/tasks/common.yaml
Normal file
55
ansible/roles/wasm/tasks/common.yaml
Normal file
@@ -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
|
||||
5
ansible/roles/wasm/tasks/freebsd.yaml
Normal file
5
ansible/roles/wasm/tasks/freebsd.yaml
Normal file
@@ -0,0 +1,5 @@
|
||||
# - name: Install packages
|
||||
# package:
|
||||
# name:
|
||||
# - foo
|
||||
# state: present
|
||||
7
ansible/roles/wasm/tasks/linux.yaml
Normal file
7
ansible/roles/wasm/tasks/linux.yaml
Normal file
@@ -0,0 +1,7 @@
|
||||
- name: Install packages
|
||||
package:
|
||||
name:
|
||||
- wabt
|
||||
- wasm-bindgen
|
||||
- binaryen # for wasm-opt
|
||||
state: present
|
||||
2
ansible/roles/wasm/tasks/main.yaml
Normal file
2
ansible/roles/wasm/tasks/main.yaml
Normal file
@@ -0,0 +1,2 @@
|
||||
- import_tasks: tasks/common.yaml
|
||||
# when: foo is defined
|
||||
29
ansible/roles/wasm/tasks/peruser.yaml
Normal file
29
ansible/roles/wasm/tasks/peruser.yaml
Normal file
@@ -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"'
|
||||
0
ansible/roles/wasm/tasks/peruser_freebsd.yaml
Normal file
0
ansible/roles/wasm/tasks/peruser_freebsd.yaml
Normal file
0
ansible/roles/wasm/tasks/peruser_linux.yaml
Normal file
0
ansible/roles/wasm/tasks/peruser_linux.yaml
Normal file
Binary file not shown.
Binary file not shown.
@@ -2,6 +2,7 @@
|
||||
package:
|
||||
name:
|
||||
- linux-lts-headers
|
||||
- linux-headers
|
||||
state: present
|
||||
|
||||
- name: Check trusted gpg keys
|
||||
|
||||
@@ -22,8 +22,8 @@ elif [ "$target" = "odolinux" ]; then
|
||||
ansible-playbook -v -i environments/laptop playbook.yaml --diff --limit odolinux "${@}"
|
||||
elif [ "$target" = "odofreebsd" ]; then
|
||||
ansible-playbook -v -i environments/laptop playbook.yaml --diff --limit odofreebsd "${@}"
|
||||
elif [ "$target" = "pixellinux" ]; then
|
||||
ansible-playbook -v -i environments/laptop playbook.yaml --diff --limit pixellinux "${@}"
|
||||
elif [ "$target" = "odowork" ]; then
|
||||
ansible-playbook -v -i environments/laptop playbook.yaml --diff --limit odowork "${@}"
|
||||
elif [ "$target" = "jail_nat_dhcp" ]; then
|
||||
ansible-playbook -v -i environments/jail playbook.yaml --diff --limit nat_dhcp "${@}"
|
||||
elif [ "$target" = "jail_homeserver_nat_dhcp" ]; then
|
||||
|
||||
6
router/boot_loader.conf
Normal file
6
router/boot_loader.conf
Normal file
@@ -0,0 +1,6 @@
|
||||
security.bsd.allow_destructive_dtrace=0
|
||||
cryptodev_load="YES"
|
||||
zfs_load="YES"
|
||||
vmm_load="YES"
|
||||
pptdevs="1/0/0 2/0/0 3/0/0 4/0/0 5/0/0 7/0/0"
|
||||
autoboot_delay="0"
|
||||
16
router/etc_rc.conf
Normal file
16
router/etc_rc.conf
Normal file
@@ -0,0 +1,16 @@
|
||||
clear_tmp_enable="YES"
|
||||
syslogd_flags="-ss"
|
||||
hostname="turtle"
|
||||
#ifconfig_bridgeif="DHCP"
|
||||
#ifconfig_bridgeif_ipv6="inet6 accept_rtadv"
|
||||
wlans_rtwn0="wlan0"
|
||||
ifconfig_wlan0="WPA DHCP"
|
||||
ifconfig_wlan0_ipv6="inet6 accept_rtadv"
|
||||
create_args_wlan0="country US regdomain FCC"
|
||||
sshd_enable="YES"
|
||||
ntpd_enable="YES"
|
||||
ntpd_sync_on_start="YES"
|
||||
moused_nondefault_enable="NO"
|
||||
# Set dumpdev to "AUTO" to enable crash dumps, "NO" to disable
|
||||
dumpdev="NO"
|
||||
zfs_enable="YES"
|
||||
168
router/launch_opnsense.bash
Normal file
168
router/launch_opnsense.bash
Normal file
@@ -0,0 +1,168 @@
|
||||
#!/usr/local/bin/bash
|
||||
#
|
||||
set -euo pipefail
|
||||
IFS=$'\n\t'
|
||||
DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
|
||||
|
||||
: ${CD:=""}
|
||||
: ${VNC_ENABLE:="NO"}
|
||||
: ${VNC_LISTEN:="127.0.0.1:5900"}
|
||||
: ${PID_FILE:="/var/run/opnsense.pid"}
|
||||
|
||||
############## Setup #########################
|
||||
|
||||
function cleanup {
|
||||
for vm in "${vms[@]}"; do
|
||||
log "Destroying bhyve vm $vm"
|
||||
bhyvectl "--vm=$vm" --destroy
|
||||
log "Destroyed bhyve vm $vm"
|
||||
done
|
||||
}
|
||||
vms=()
|
||||
for sig in EXIT INT QUIT HUP TERM; do
|
||||
trap "set +e; sleep 10; cleanup" "$sig"
|
||||
done
|
||||
|
||||
function die {
|
||||
local status_code="$1"
|
||||
shift
|
||||
(>&2 echo "${@}")
|
||||
exit "$status_code"
|
||||
}
|
||||
|
||||
function log {
|
||||
(>&2 echo "${@}")
|
||||
}
|
||||
|
||||
############## Program #########################
|
||||
|
||||
function main {
|
||||
start_vm
|
||||
}
|
||||
|
||||
function start_vm {
|
||||
local name="opnsense"
|
||||
|
||||
|
||||
|
||||
# -H release the CPU when guest issues HLT instruction. Otherwise 100% of core will be consumed.
|
||||
# -s 3,ahci-cd,/vm/.iso/archlinux-2023.04.01-x86_64.iso \
|
||||
# -s 29,fbuf,tcp=0.0.0.0:5900,w=1920,h=1080,wait \
|
||||
# -s 29,fbuf,tcp=0.0.0.0:5900,w=1920,h=1080 \
|
||||
|
||||
# TODO: Look into using nmdm instead of stdio for serial console
|
||||
if [ -n "$CD" ]; then
|
||||
additional_args+=("-s" "5,ahci-cd,$CD")
|
||||
fi
|
||||
if [ "$VNC_ENABLE" = "YES" ]; then
|
||||
additional_args+=("-s" "29,fbuf,tcp=$VNC_LISTEN,w=1920,h=1080")
|
||||
fi
|
||||
|
||||
local bridge_name="bridge_vm"
|
||||
local host_interface_name="bridgeif"
|
||||
|
||||
assert_bridge "$host_interface_name" "$bridge_name"
|
||||
local mac_address
|
||||
mac_address=$(calculate_mac_address "$name")
|
||||
local bridge_link_name
|
||||
bridge_link_name=$(detect_available_link "${bridge_name}")
|
||||
additional_args+=("-s" "2:0,virtio-net,netgraph,path=${bridge_name}:,peerhook=${bridge_link_name},mac=${mac_address}")
|
||||
vms+=("$name")
|
||||
while true; do
|
||||
set -x
|
||||
set +e
|
||||
bhyve \
|
||||
-D \
|
||||
-c 6 \
|
||||
-m 8G \
|
||||
-H \
|
||||
-s 0,hostbridge \
|
||||
-s "4,nvme,/dev/zvol/zroot/vm/opnsense/disk0" \
|
||||
-S \
|
||||
-s 7,passthru,1/0/0 \
|
||||
-s 8,passthru,2/0/0 \
|
||||
-s 9,passthru,3/0/0 \
|
||||
-s 10,passthru,4/0/0 \
|
||||
-s 11,passthru,5/0/0 \
|
||||
-s 12,passthru,7/0/0 \
|
||||
-s 30,xhci,tablet \
|
||||
-s 31,lpc -l com1,stdio \
|
||||
-l "bootrom,/usr/local/share/uefi-firmware/BHYVE_UEFI.fd,/vm/opnsense/BHYVE_UEFI_VARS.fd" \
|
||||
"${additional_args[@]}" \
|
||||
"$name"
|
||||
# local bhyvepid=$!
|
||||
# echo "$bhyvepid" > "$PID_FILE"
|
||||
# wait $bhyvepid
|
||||
local exit_code=$?
|
||||
set +x
|
||||
set -e
|
||||
if [ $exit_code -eq 0 ]; then
|
||||
echo "Rebooting."
|
||||
sleep 5
|
||||
elif [ $exit_code -eq 1 ]; then
|
||||
echo "Powered off."
|
||||
break
|
||||
elif [ $exit_code -eq 2 ]; then
|
||||
echo "Halted."
|
||||
break
|
||||
elif [ $exit_code -eq 3 ]; then
|
||||
echo "Triple fault."
|
||||
break
|
||||
elif [ $exit_code -eq 4 ]; then
|
||||
echo "Exited due to an error."
|
||||
break
|
||||
fi
|
||||
done
|
||||
}
|
||||
|
||||
function ng_exists {
|
||||
ngctl status "${1}" >/dev/null 2>&1
|
||||
}
|
||||
|
||||
function assert_bridge {
|
||||
local host_interface_name="$1"
|
||||
local bridge_name="$2"
|
||||
# local ip_range="$3"
|
||||
|
||||
if ! ng_exists "${bridge_name}:"; then
|
||||
ngctl -d -f - <<EOF
|
||||
mkpeer . eiface hook ether
|
||||
name .:hook $host_interface_name
|
||||
EOF
|
||||
ngctl -d -f - <<EOF
|
||||
mkpeer ${host_interface_name}: bridge ether link0
|
||||
name ${host_interface_name}:ether $bridge_name
|
||||
EOF
|
||||
ifconfig "$(ngctl msg "${host_interface_name}:" getifname | grep Args | cut -d '"' -f 2)" name "${host_interface_name}" up
|
||||
|
||||
dhclient "${host_interface_name}"
|
||||
# (set +e; service netif start wlan0) &
|
||||
fi
|
||||
}
|
||||
|
||||
function detect_available_link {
|
||||
local bridge_name="$1"
|
||||
local linknum=1
|
||||
while true; do
|
||||
local link_name="link${linknum}"
|
||||
if ! ng_exists "${bridge_name}:${link_name}"; then
|
||||
echo "$link_name"
|
||||
return
|
||||
fi
|
||||
linknum=$((linknum + 1))
|
||||
if [ "$linknum" -gt 90 ]; then
|
||||
(>&2 echo "No available links on bridge $bridge_name")
|
||||
exit 1
|
||||
fi
|
||||
done
|
||||
}
|
||||
|
||||
function calculate_mac_address {
|
||||
local name="$1"
|
||||
local source
|
||||
source=$(md5 -r -s "$name" | awk '{print $1}')
|
||||
echo "06:${source:0:2}:${source:2:2}:${source:4:2}:${source:6:2}:${source:8:2}"
|
||||
}
|
||||
|
||||
|
||||
main "${@}"
|
||||
149
router/launch_unifi.bash
Normal file
149
router/launch_unifi.bash
Normal file
@@ -0,0 +1,149 @@
|
||||
#!/usr/local/bin/bash
|
||||
#
|
||||
set -euo pipefail
|
||||
IFS=$'\n\t'
|
||||
DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
|
||||
|
||||
: ${CD:=""}
|
||||
: ${VNC_ENABLE:="NO"}
|
||||
: ${VNC_LISTEN:="127.0.0.1:5900"}
|
||||
: ${PID_FILE:="/var/run/unifi.pid"}
|
||||
|
||||
############## Setup #########################
|
||||
|
||||
function cleanup {
|
||||
for vm in "${vms[@]}"; do
|
||||
log "Destroying bhyve vm $vm"
|
||||
bhyvectl "--vm=$vm" --destroy
|
||||
log "Destroyed bhyve vm $vm"
|
||||
done
|
||||
}
|
||||
vms=()
|
||||
for sig in EXIT INT QUIT HUP TERM; do
|
||||
trap "set +e; sleep 10; cleanup" "$sig"
|
||||
done
|
||||
|
||||
function die {
|
||||
local status_code="$1"
|
||||
shift
|
||||
(>&2 echo "${@}")
|
||||
exit "$status_code"
|
||||
}
|
||||
|
||||
function log {
|
||||
(>&2 echo "${@}")
|
||||
}
|
||||
|
||||
############## Program #########################
|
||||
|
||||
function main {
|
||||
start_vm
|
||||
}
|
||||
|
||||
function start_vm {
|
||||
local name="unifi"
|
||||
|
||||
|
||||
|
||||
# -H release the CPU when guest issues HLT instruction. Otherwise 100% of core will be consumed.
|
||||
# -s 3,ahci-cd,/vm/.iso/archlinux-2023.04.01-x86_64.iso \
|
||||
# -s 29,fbuf,tcp=0.0.0.0:5900,w=1920,h=1080,wait \
|
||||
# -s 29,fbuf,tcp=0.0.0.0:5900,w=1920,h=1080 \
|
||||
|
||||
# TODO: Look into using nmdm instead of stdio for serial console
|
||||
if [ -n "$CD" ]; then
|
||||
additional_args+=("-s" "5,ahci-cd,$CD")
|
||||
fi
|
||||
if [ "$VNC_ENABLE" = "YES" ]; then
|
||||
additional_args+=("-s" "29,fbuf,tcp=$VNC_LISTEN,w=1920,h=1080")
|
||||
fi
|
||||
|
||||
local bridge_name="bridge_vm"
|
||||
wait_for_bridge "$bridge_name"
|
||||
|
||||
local mac_address
|
||||
mac_address=$(calculate_mac_address "$name")
|
||||
|
||||
local bridge_link_name
|
||||
bridge_link_name=$(detect_available_link "${bridge_name}")
|
||||
|
||||
additional_args+=("-s" "2:0,virtio-net,netgraph,path=${bridge_name}:,peerhook=${bridge_link_name},mac=${mac_address}")
|
||||
vms+=("$name")
|
||||
while true; do
|
||||
set -x
|
||||
set +e
|
||||
bhyve \
|
||||
-D \
|
||||
-c 1 \
|
||||
-m 2G \
|
||||
-H \
|
||||
-s 0,hostbridge \
|
||||
-s "4,nvme,/dev/zvol/zroot/vm/unifi/disk0" \
|
||||
-s 30,xhci,tablet \
|
||||
-s 31,lpc -l com1,stdio \
|
||||
-l "bootrom,/usr/local/share/uefi-firmware/BHYVE_UEFI.fd,/vm/unifi/BHYVE_UEFI_VARS.fd" \
|
||||
"${additional_args[@]}" \
|
||||
"$name"
|
||||
# local bhyvepid=$!
|
||||
# echo "$bhyvepid" > "$PID_FILE"
|
||||
# wait $bhyvepid
|
||||
local exit_code=$?
|
||||
set +x
|
||||
set -e
|
||||
if [ $exit_code -eq 0 ]; then
|
||||
echo "Rebooting."
|
||||
sleep 5
|
||||
elif [ $exit_code -eq 1 ]; then
|
||||
echo "Powered off."
|
||||
break
|
||||
elif [ $exit_code -eq 2 ]; then
|
||||
echo "Halted."
|
||||
break
|
||||
elif [ $exit_code -eq 3 ]; then
|
||||
echo "Triple fault."
|
||||
break
|
||||
elif [ $exit_code -eq 4 ]; then
|
||||
echo "Exited due to an error."
|
||||
break
|
||||
fi
|
||||
done
|
||||
}
|
||||
|
||||
function ng_exists {
|
||||
ngctl status "${1}" >/dev/null 2>&1
|
||||
}
|
||||
|
||||
function wait_for_bridge {
|
||||
local bridge_name="$1"
|
||||
while ! ng_exists "${bridge_name}:"; do
|
||||
echo "${bridge_name} does not yet exist, sleeping."
|
||||
sleep 10
|
||||
done
|
||||
}
|
||||
|
||||
function detect_available_link {
|
||||
local bridge_name="$1"
|
||||
local linknum=1
|
||||
while true; do
|
||||
local link_name="link${linknum}"
|
||||
if ! ng_exists "${bridge_name}:${link_name}"; then
|
||||
echo "$link_name"
|
||||
return
|
||||
fi
|
||||
linknum=$((linknum + 1))
|
||||
if [ "$linknum" -gt 90 ]; then
|
||||
(>&2 echo "No available links on bridge $bridge_name")
|
||||
exit 1
|
||||
fi
|
||||
done
|
||||
}
|
||||
|
||||
function calculate_mac_address {
|
||||
local name="$1"
|
||||
local source
|
||||
source=$(md5 -r -s "$name" | awk '{print $1}')
|
||||
echo "06:${source:0:2}:${source:2:2}:${source:4:2}:${source:6:2}:${source:8:2}"
|
||||
}
|
||||
|
||||
|
||||
main "${@}"
|
||||
47
router/opnsense_rc.bash
Normal file
47
router/opnsense_rc.bash
Normal file
@@ -0,0 +1,47 @@
|
||||
#!/bin/sh
|
||||
#
|
||||
# REQUIRE: FILESYSTEMS kld
|
||||
# PROVIDE: opnsense
|
||||
# BEFORE: netif
|
||||
|
||||
. /etc/rc.subr
|
||||
name=opnsense
|
||||
rcvar=${name}_enable
|
||||
start_cmd="${name}_start"
|
||||
stop_cmd="${name}_stop"
|
||||
status_cmd="${name}_status"
|
||||
load_rc_config $name
|
||||
|
||||
tmux_name="opnsense"
|
||||
|
||||
opnsense_start() {
|
||||
# /usr/local/bin/tmux new-session -d -s "$tmux_name" "/usr/bin/env VNC_ENABLE=YES VNC_LISTEN=0.0.0.0:5900 /usr/local/bin/bash /home/talexander/launch_opnsense.bash"
|
||||
/usr/local/bin/tmux new-session -d -s "$tmux_name" "/usr/bin/env VNC_ENABLE=NO VNC_LISTEN=0.0.0.0:5900 /usr/local/bin/bash /home/talexander/launch_opnsense.bash"
|
||||
}
|
||||
|
||||
opnsense_status() {
|
||||
if /usr/local/bin/tmux has-session -t $tmux_name 2>/dev/null; then
|
||||
echo "$tmux_name is running."
|
||||
else
|
||||
echo "$tmux_name is not running."
|
||||
return 1
|
||||
fi
|
||||
}
|
||||
|
||||
opnsense_stop() {
|
||||
/usr/local/bin/tmux has-session -t $tmux_name 2>/dev/null && (
|
||||
/usr/local/bin/tmux kill-session -t $tmux_name
|
||||
sleep 10
|
||||
bhyvectl --vm=opnsense --destroy
|
||||
# kill `cat /var/run/opnsense.pid`
|
||||
)
|
||||
opnsense_wait_for_end
|
||||
}
|
||||
|
||||
opnsense_wait_for_end() {
|
||||
while /usr/local/bin/tmux has-session -t $tmux_name 2>dev/null; do
|
||||
sleep 1
|
||||
done
|
||||
}
|
||||
|
||||
run_rc_command "$1"
|
||||
8
router/reboot
Normal file
8
router/reboot
Normal file
@@ -0,0 +1,8 @@
|
||||
#!/usr/bin/env bash
|
||||
#
|
||||
: ${PID:="95762"}
|
||||
: ${TMUX_NAME:="opnsense"}
|
||||
|
||||
doas kill "$PID"
|
||||
while doas tmux has-session -t "$TMUX_NAME" 2>/dev/null; do sleep 1; done
|
||||
doas shutdown -r now
|
||||
9
router/reload
Normal file
9
router/reload
Normal file
@@ -0,0 +1,9 @@
|
||||
#!/usr/bin/env bash
|
||||
#
|
||||
: ${PID:="19711"}
|
||||
: ${TMUX_NAME:="opnsense"}
|
||||
|
||||
doas kill "$PID"
|
||||
while doas tmux has-session -t "$TMUX_NAME" 2>/dev/null; do sleep 1; done
|
||||
sleep 1
|
||||
doas service opnsense start
|
||||
10
router/rollback
Normal file
10
router/rollback
Normal file
@@ -0,0 +1,10 @@
|
||||
#!/usr/bin/env bash
|
||||
#
|
||||
: ${PID:="37880"}
|
||||
: ${SNAPSHOT:="zroot/vm/opnsense/disk0@20240108_00_initial_working_state"}
|
||||
: ${TMUX_NAME:="opnsense"}
|
||||
|
||||
doas kill "$PID"
|
||||
while doas tmux has-session -t "$TMUX_NAME" 2>/dev/null; do sleep 1; done
|
||||
doas zfs rollback -r "$SNAPSHOT"
|
||||
doas service opnsense start
|
||||
10
router/snapshot
Normal file
10
router/snapshot
Normal file
@@ -0,0 +1,10 @@
|
||||
#!/usr/bin/env bash
|
||||
#
|
||||
: ${PID:="74229"}
|
||||
: ${SNAPSHOT:="zroot/vm/opnsense/disk0@20240108_02_configured"}
|
||||
: ${TMUX_NAME:="opnsense"}
|
||||
|
||||
doas kill "$PID"
|
||||
while doas tmux has-session -t "$TMUX_NAME" 2>/dev/null; do sleep 1; done
|
||||
doas zfs snapshot -r "$SNAPSHOT"
|
||||
doas service opnsense start
|
||||
42
router/unifi/docker-compose/docker-compose.yaml
Normal file
42
router/unifi/docker-compose/docker-compose.yaml
Normal file
@@ -0,0 +1,42 @@
|
||||
# docker-compose up -d
|
||||
---
|
||||
version: "2.1"
|
||||
services:
|
||||
unifi-network-application:
|
||||
image: lscr.io/linuxserver/unifi-network-application:latest
|
||||
container_name: unifi-network-application
|
||||
environment:
|
||||
- PUID=1000
|
||||
- PGID=1000
|
||||
- TZ=Etc/UTC
|
||||
- MONGO_USER=unifi
|
||||
- MONGO_PASS=unifipw
|
||||
- MONGO_HOST=unifi-db
|
||||
- MONGO_PORT=27017
|
||||
- MONGO_DBNAME=unifi
|
||||
- MEM_LIMIT=1024 #optional
|
||||
- MEM_STARTUP=1024 #optional
|
||||
- MONGO_TLS= #optional
|
||||
- MONGO_AUTHSOURCE= #optional
|
||||
volumes:
|
||||
- /data/unifi:/config
|
||||
ports:
|
||||
- 80:8080
|
||||
- 443:8443
|
||||
- 8443:8443
|
||||
- 3478:3478/udp
|
||||
- 10001:10001/udp
|
||||
- 8080:8080
|
||||
- 1900:1900/udp #optional
|
||||
- 8843:8843 #optional
|
||||
- 8880:8880 #optional
|
||||
- 6789:6789 #optional
|
||||
- 5514:5514/udp #optional
|
||||
restart: unless-stopped
|
||||
unifi-db:
|
||||
image: mongo:7.0.5
|
||||
container_name: unifi-db
|
||||
volumes:
|
||||
- /data/mongodb:/data/db
|
||||
- ./init_mongo.js:/docker-entrypoint-initdb.d/init-mongo.js:ro
|
||||
restart: unless-stopped
|
||||
2
router/unifi/docker-compose/init_mongo.js
Normal file
2
router/unifi/docker-compose/init_mongo.js
Normal file
@@ -0,0 +1,2 @@
|
||||
db.getSiblingDB("unifi").createUser({user: "unifi", pwd: "unifipw", roles: [{role: "dbOwner", db: "unifi"}]});
|
||||
db.getSiblingDB("unifi_stat").createUser({user: "unifi", pwd: "unifipw", roles: [{role: "dbOwner", db: "MONGO_DBNAME_stat"}]});
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user