Compare commits
31 Commits
pixelbook
...
e3e78b3eb5
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
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 |
@@ -18,6 +18,7 @@ hwpstate: false
|
|||||||
build_user:
|
build_user:
|
||||||
name: talexander
|
name: talexander
|
||||||
group: talexander
|
group: talexander
|
||||||
|
devfs_rules: "homeserver_devfs.rules"
|
||||||
jail_zfs_dataset: zmass/encrypted/jails
|
jail_zfs_dataset: zmass/encrypted/jails
|
||||||
jail_zfs_dataset_mountpoint: /jail/main
|
jail_zfs_dataset_mountpoint: /jail/main
|
||||||
jail_canmount: "on"
|
jail_canmount: "on"
|
||||||
|
|||||||
@@ -12,11 +12,11 @@ network_rc: "odofreebsd_network.conf"
|
|||||||
rc_conf: "odofreebsd_rc.conf"
|
rc_conf: "odofreebsd_rc.conf"
|
||||||
loader_conf: "odofreebsd_loader.conf"
|
loader_conf: "odofreebsd_loader.conf"
|
||||||
install_graphics: true
|
install_graphics: true
|
||||||
graphics_driver: "intel"
|
graphics_driver: "amd"
|
||||||
cputype: "intel"
|
cputype: "amd"
|
||||||
cpu_opt: tigerlake
|
cpu_opt: tigerlake
|
||||||
hwpstate: true
|
hwpstate: true
|
||||||
cores: 8
|
cores: 16
|
||||||
build_user:
|
build_user:
|
||||||
name: talexander
|
name: talexander
|
||||||
group: talexander
|
group: talexander
|
||||||
|
|||||||
@@ -21,7 +21,7 @@ zfs_snapshot_datasets:
|
|||||||
- path: zroot/linux/archmain/be
|
- path: zroot/linux/archmain/be
|
||||||
- path: zroot/data/bridge/family_disks
|
- path: zroot/data/bridge/family_disks
|
||||||
install_graphics: true
|
install_graphics: true
|
||||||
graphics_driver: "intel"
|
graphics_driver: "amd"
|
||||||
build_user:
|
build_user:
|
||||||
name: talexander
|
name: talexander
|
||||||
group: talexander
|
group: talexander
|
||||||
@@ -30,9 +30,9 @@ enabled_wireguard:
|
|||||||
- wgh
|
- wgh
|
||||||
- drmario
|
- drmario
|
||||||
- colo
|
- colo
|
||||||
cputype: "intel"
|
cputype: "amd"
|
||||||
hwpstate: true
|
hwpstate: true
|
||||||
cores: 8
|
cores: 16
|
||||||
sway_conf_files:
|
sway_conf_files:
|
||||||
- rofimoji
|
- rofimoji
|
||||||
docker_storage_driver: overlay2 # alternatively zfs
|
docker_storage_driver: overlay2 # alternatively zfs
|
||||||
|
|||||||
36
ansible/environments/laptop/host_vars/odowork
Normal file
36
ansible/environments/laptop/host_vars/odowork
Normal file
@@ -0,0 +1,36 @@
|
|||||||
|
os_flavor: "linux"
|
||||||
|
hostname: odowork
|
||||||
|
etc_hosts: {}
|
||||||
|
users:
|
||||||
|
talexander:
|
||||||
|
initialize: true
|
||||||
|
uid: 11235
|
||||||
|
gid: 1000
|
||||||
|
groups:
|
||||||
|
- name: wheel
|
||||||
|
- name: users
|
||||||
|
- name: docker
|
||||||
|
- name: libvirt
|
||||||
|
- name: uucp
|
||||||
|
authorized_keys:
|
||||||
|
- yubikey
|
||||||
|
- main_fido
|
||||||
|
- backup_fido
|
||||||
|
gitconfig: "gitconfig_work"
|
||||||
|
zfs_snapshot_datasets:
|
||||||
|
- path: zroot/linux/archwork/be
|
||||||
|
install_graphics: true
|
||||||
|
graphics_driver: "amd"
|
||||||
|
pgp_key: "gpg_work.asc"
|
||||||
|
build_user:
|
||||||
|
name: talexander
|
||||||
|
group: talexander
|
||||||
|
# wireguard_directory: odowork
|
||||||
|
# enabled_wireguard: []
|
||||||
|
cputype: "amd"
|
||||||
|
hwpstate: true
|
||||||
|
cores: 16
|
||||||
|
sway_conf_files:
|
||||||
|
- rofimoji
|
||||||
|
docker_storage_driver: overlay2 # alternatively zfs
|
||||||
|
docker_zfs_dataset: zroot/linux/archwork/docker
|
||||||
@@ -1,3 +1,4 @@
|
|||||||
[gui]
|
[gui]
|
||||||
odolinux ansible_connection=local ansible_host=127.0.0.1
|
odolinux ansible_connection=local ansible_host=127.0.0.1
|
||||||
odofreebsd ansible_connection=local ansible_host=127.0.0.1
|
odofreebsd ansible_connection=local ansible_host=127.0.0.1
|
||||||
|
odowork ansible_connection=local ansible_host=127.0.0.1
|
||||||
|
|||||||
@@ -45,6 +45,7 @@
|
|||||||
- poudriere
|
- poudriere
|
||||||
- android
|
- android
|
||||||
- latex
|
- latex
|
||||||
|
- python
|
||||||
- pyenv
|
- pyenv
|
||||||
- webcam
|
- webcam
|
||||||
- docker
|
- docker
|
||||||
@@ -52,6 +53,8 @@
|
|||||||
- javascript
|
- javascript
|
||||||
- launch_keyboard
|
- launch_keyboard
|
||||||
- lvfs
|
- lvfs
|
||||||
|
- restaurant_health_rating
|
||||||
|
- wasm
|
||||||
|
|
||||||
- hosts: nat_dhcp:homeserver_nat_dhcp:mrmanager_nat_dhcp
|
- hosts: nat_dhcp:homeserver_nat_dhcp:mrmanager_nat_dhcp
|
||||||
vars:
|
vars:
|
||||||
@@ -114,7 +117,7 @@
|
|||||||
- users
|
- users
|
||||||
- public_dns
|
- public_dns
|
||||||
|
|
||||||
- hosts: odolinux:odofreebsd
|
- hosts: odolinux:odofreebsd:odowork
|
||||||
vars:
|
vars:
|
||||||
ansible_become: True
|
ansible_become: True
|
||||||
roles:
|
roles:
|
||||||
@@ -135,3 +138,15 @@
|
|||||||
- fstab
|
- fstab
|
||||||
- build
|
- build
|
||||||
- freebsd_update_server
|
- freebsd_update_server
|
||||||
|
|
||||||
|
- hosts: homeserver
|
||||||
|
vars:
|
||||||
|
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 }}"
|
owner: "{{ account_name.stdout }}"
|
||||||
group: "{{ group_name.stdout }}"
|
group: "{{ group_name.stdout }}"
|
||||||
loop:
|
loop:
|
||||||
- src: alacritty.yml
|
- src: alacritty.toml
|
||||||
dest: .config/alacritty/alacritty.yml
|
dest: .config/alacritty/alacritty.toml
|
||||||
|
|
||||||
- import_tasks: tasks/peruser_freebsd.yaml
|
- import_tasks: tasks/peruser_freebsd.yaml
|
||||||
when: 'os_flavor == "freebsd"'
|
when: 'os_flavor == "freebsd"'
|
||||||
|
|||||||
@@ -1,4 +1,3 @@
|
|||||||
# $FreeBSD$
|
|
||||||
#
|
#
|
||||||
# Automounter master map, see auto_master(5) for details.
|
# Automounter master map, see auto_master(5) for details.
|
||||||
#
|
#
|
||||||
|
|||||||
@@ -18,3 +18,18 @@
|
|||||||
date = local
|
date = local
|
||||||
[init]
|
[init]
|
||||||
defaultBranch = main
|
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"
|
||||||
@@ -7,7 +7,6 @@
|
|||||||
# This file controls resource limits, accounting limits and
|
# This file controls resource limits, accounting limits and
|
||||||
# default user environment settings.
|
# default user environment settings.
|
||||||
#
|
#
|
||||||
# $FreeBSD$
|
|
||||||
#
|
#
|
||||||
|
|
||||||
# Default settings effectively disable resource limits, see the
|
# Default settings effectively disable resource limits, see the
|
||||||
|
|||||||
@@ -17,6 +17,7 @@
|
|||||||
- colordiff
|
- colordiff
|
||||||
- ipcalc
|
- ipcalc
|
||||||
- kdiff3
|
- kdiff3
|
||||||
|
- meld
|
||||||
- tcpdump
|
- tcpdump
|
||||||
- moreutils # for ts [%Y-%m-%d %H:%M:%.S]
|
- moreutils # for ts [%Y-%m-%d %H:%M:%.S]
|
||||||
- ddrescue
|
- ddrescue
|
||||||
|
|||||||
@@ -74,13 +74,6 @@ function main {
|
|||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
function die {
|
|
||||||
local status_code="$1"
|
|
||||||
shift
|
|
||||||
(>&2 echo "${@}")
|
|
||||||
exit "$status_code"
|
|
||||||
}
|
|
||||||
|
|
||||||
function create_disk {
|
function create_disk {
|
||||||
local zfs_path="$1"
|
local zfs_path="$1"
|
||||||
local mount_path="$2"
|
local mount_path="$2"
|
||||||
|
|||||||
@@ -13,7 +13,7 @@
|
|||||||
# name: []
|
# name: []
|
||||||
# state: present
|
# state: present
|
||||||
# update_cache: true
|
# update_cache: true
|
||||||
|
|
||||||
# - name: Install packages
|
# - name: Install packages
|
||||||
# package:
|
# package:
|
||||||
# name:
|
# name:
|
||||||
|
|||||||
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
|
||||||
@@ -1,34 +1,27 @@
|
|||||||
-----BEGIN PGP PUBLIC KEY BLOCK-----
|
-----BEGIN PGP PUBLIC KEY BLOCK-----
|
||||||
|
|
||||||
mDMEXZwWGhYJKwYBBAHaRw8BAQdAfv7qozKkmf4D+5PDzADsMm4aAKDGLha7+Cu0
|
mDMEXZwWGhYJKwYBBAHaRw8BAQdAfv7qozKkmf4D+5PDzADsMm4aAKDGLha7+Cu0
|
||||||
0H+RsWG0HVRvbSBBbGV4YW5kZXIgPHRvbUBmaXp6LmJ1eno+iJAEExYIADgWIQS4
|
0H+RsWG0HlRvbSBBbGV4YW5kZXIgPHdvcmtAZml6ei5idXp6PoiQBBMWCAA4FiEE
|
||||||
SBWTY8KHeReVS+En3kDZuEVcGwUCXZwWGgIbAwULCQgHAgYVCAkKCwIEFgIDAQIe
|
uEgVk2PCh3kXlUvhJ95A2bhFXBsFAl+w+R0CGwMFCwkIBwIGFQoJCAsCBBYCAwEC
|
||||||
AQIXgAAKCRAn3kDZuEVcG9glAQDX3Bzaz9sQpycc40LeLxSKQsWplfJigfr8wWOg
|
HgECF4AACgkQJ95A2bhFXBt6fgD+NOYnw9gz5K/q3H5LE/JvqzCSHezJmeGgif0C
|
||||||
C15TywEAqkTtCrTNsltdZERLMre7qnv/6RSo54OW0C4pdN7UUAa0HlRvbSBBbGV4
|
uU4m1/MA+gPDKME7syEtJsTpELEMrxWWpDW0tD/W1iJE7roGYPQPtB1Ub20gQWxl
|
||||||
YW5kZXIgPHdvcmtAZml6ei5idXp6PoiQBBMWCAA4FiEEuEgVk2PCh3kXlUvhJ95A
|
eGFuZGVyIDx0b21AZml6ei5idXp6PoiQBBMWCAA4FiEEuEgVk2PCh3kXlUvhJ95A
|
||||||
2bhFXBsFAl+w+R0CGwMFCwkIBwIGFQoJCAsCBBYCAwECHgECF4AACgkQJ95A2bhF
|
2bhFXBsFAl2cFhoCGwMFCwkIBwIGFQgJCgsCBBYCAwECHgECF4AACgkQJ95A2bhF
|
||||||
XBt6fgD+NOYnw9gz5K/q3H5LE/JvqzCSHezJmeGgif0CuU4m1/MA+gPDKME7syEt
|
XBvYJQEA19wc2s/bEKcnHONC3i8UikLFqZXyYoH6/MFjoAteU8sBAKpE7Qq0zbJb
|
||||||
JsTpELEMrxWWpDW0tD/W1iJE7roGYPQPtB9Ub20gQWxleGFuZGVyIDx0b21AaGFy
|
XWRESzK3u6p7/+kUqOeDltAuKXTe1FAGuDMEXZwWyhYJKwYBBAHaRw8BAQdAPyIL
|
||||||
bW9uaWMuYWk+iJAEExYIADgWIQS4SBWTY8KHeReVS+En3kDZuEVcGwUCX7D5RAIb
|
4EGg4T5JO9q2kpVDy2WjMiXz3nZXwYW4GLoTYkiI9QQYFggAJgIbAhYhBLhIFZNj
|
||||||
AwULCQgHAgYVCgkICwIEFgIDAQIeAQIXgAAKCRAn3kDZuEVcGzjDAP9pM1ScstOk
|
wod5F5VL4SfeQNm4RVwbBQJlC4ZhBQkLMdaXAIF2IAQZFggAHRYhBIHmRDmWdVAu
|
||||||
ti+oRAsNSk8qsjIsCT9O5voDS0Q7plWlcwD/btKVFO9tPLsXhyvdB+NSwueVs7TA
|
sSUWutOhecmlPA7eBQJdnBbKAAoJENOhecmlPA7ejJ4A/iq7N2mMhx+ovOXm1REo
|
||||||
kRVjlW3hktpefg24OARdnBYaEgorBgEEAZdVAQUBAQdArbTYQgDBMG7EBFTKA6+f
|
ASPF3l4YAAjOHsXqcPtFHKGJAQCiuA71d6CQ+qNZLuka/KVB/etkkJvDzvaTtiQQ
|
||||||
4CWgwl26Lf2b6cyCGfUw2j4DAQgHiHgEGBYIACAWIQS4SBWTY8KHeReVS+En3kDZ
|
QG+gAwkQJ95A2bhFXBtRDgEAqymMavroD5c/4+M/EZ3/d8wxfA9E3Fb/1mt4c2Zr
|
||||||
uEVcGwUCXZwWGgIbDAAKCRAn3kDZuEVcG03MAQCrkjrE+MhtvbfGaHGHlwz9QnF0
|
NnkBAKYOM+pz/pncFnV+kF7h7TQEEYuGw1JhJVT/duA4lwsLuDMEXZwXARYJKwYB
|
||||||
Z519YzK8Xr8m0O+09QEA9BFCfkAzBM4D4JKeWJh/tmN9U6UexzLrRdY+W9cugAm4
|
BAHaRw8BAQdAa76TmWuKuiR1bnNV1FUE6oQ4C8A+UiQb8x0k1z2DmTKIfgQYFggA
|
||||||
MwRdnBbKFgkrBgEEAdpHDwEBB0A/IgvgQaDhPkk72raSlUPLZaMyJfPedlfBhbgY
|
JgIbIBYhBLhIFZNjwod5F5VL4SfeQNm4RVwbBQJlC4ZwBQkLMdZgAAoJECfeQNm4
|
||||||
uhNiSIj1BBgWCAAmAhsCFiEEuEgVk2PCh3kXlUvhJ95A2bhFXBsFAl+w+hYFCQe4
|
RVwb8TkA/RkBu9Ev8iDE5nvn8YF8FRiY56Z5d+SBPG4VvrCzXrmlAP46wUjIRpkM
|
||||||
fcwAgXYgBBkWCAAdFiEEgeZEOZZ1UC6xJRa606F5yaU8Dt4FAl2cFsoACgkQ06F5
|
rTbb1GMbvYnkeOrBs/qiWjEtHHc3ZLMWD7g4BF2cFygSCisGAQQBl1UBBQEBB0AO
|
||||||
yaU8Dt6MngD+Krs3aYyHH6i85ebVESgBI8XeXhgACM4exepw+0UcoYkBAKK4DvV3
|
0t3BUxLuokTqKVcheFAZd4UKxAGznPQlvsVyhWWIEgMBCAeIfgQYFggAJgIbDBYh
|
||||||
oJD6o1ku6Rr8pUH962SQm8PO9pO2JBBAb6ADCRAn3kDZuEVcG9uAAP43vUsbe24/
|
BLhIFZNjwod5F5VL4SfeQNm4RVwbBQJlC4ZwBQkLMdY5AAoJECfeQNm4RVwbXscA
|
||||||
6tjEezAW0a4L2E1u4HNU8t53lolngs1kswEAy1HBdYEMR9TovX/kMeBHLcz1J2pM
|
/A8zRRTCwQKxJ8iz5jmTcVFAhl2vD781Dtv8NvcWd5t8APwIwcuFVZZA3yayhIxi
|
||||||
VRSV0JnJhj5eZwa4MwRdnBcBFgkrBgEEAdpHDwEBB0BrvpOZa4q6JHVuc1XUVQTq
|
3aqYpMRxpn2t6Nswax1MIM8DBQ==
|
||||||
hDgLwD5SJBvzHSTXPYOZMoh+BBgWCAAmAhsgFiEEuEgVk2PCh3kXlUvhJ95A2bhF
|
=dzEV
|
||||||
XBsFAl+w+hYFCQe4fZUACgkQJ95A2bhFXBs3NgEA3SFYTgRVstidfoEpEZV4DdSL
|
|
||||||
kXaOwN3Eyba4UniClyMA/2CCxQt24vu19TyvUtOXWCp9Zi8SyIqoeiXQ4ZmhhnQO
|
|
||||||
uDgEXZwXKBIKKwYBBAGXVQEFAQEHQA7S3cFTEu6iROopVyF4UBl3hQrEAbOc9CW+
|
|
||||||
xXKFZYgSAwEIB4h+BBgWCAAmAhsMFiEEuEgVk2PCh3kXlUvhJ95A2bhFXBsFAl+w
|
|
||||||
+hcFCQe4fW4ACgkQJ95A2bhFXBtUXAEAyEJCUNVSJ7qvQv5IXuwbYTX2Mh7JU3+F
|
|
||||||
GJHO7AWBXCQA/2aLAi9kYmz9ba770XYwTeBZIv9Y6UIwIwVmFdYHC/EM
|
|
||||||
=a/z4
|
|
||||||
-----END PGP PUBLIC KEY BLOCK-----
|
-----END PGP PUBLIC KEY BLOCK-----
|
||||||
|
|||||||
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
|
- name: Trust my signing key
|
||||||
command: pacman-key -a -
|
command: pacman-key -a -
|
||||||
args:
|
args:
|
||||||
stdin: "{{ lookup('file', 'gpg.asc') }}"
|
stdin: "{{ lookup('file', pgp_key|default('gpg.asc')) }}"
|
||||||
when: '"B848159363C2877917954BE127DE40D9B8455C1B" not in pacmankeys.stdout'
|
when: '"B848159363C2877917954BE127DE40D9B8455C1B" not in pacmankeys.stdout'
|
||||||
register: my_key_imported
|
register: my_key_imported
|
||||||
|
|
||||||
@@ -111,6 +111,8 @@
|
|||||||
loop:
|
loop:
|
||||||
- src: aurutils-purge
|
- src: aurutils-purge
|
||||||
dest: /usr/local/bin/aurutils-purge
|
dest: /usr/local/bin/aurutils-purge
|
||||||
|
- src: aurutils-nuke
|
||||||
|
dest: /usr/local/bin/aurutils-nuke
|
||||||
- src: aurutils-sync
|
- src: aurutils-sync
|
||||||
dest: /usr/local/bin/aurutils-sync
|
dest: /usr/local/bin/aurutils-sync
|
||||||
- src: aurutils-update-devel-packages
|
- 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
|
||||||
@@ -19,7 +19,7 @@
|
|||||||
template:
|
template:
|
||||||
src: "templates/{{ item.src }}.j2"
|
src: "templates/{{ item.src }}.j2"
|
||||||
dest: "{{ item.dest }}"
|
dest: "{{ item.dest }}"
|
||||||
mode: 0755
|
mode: 0644
|
||||||
owner: root
|
owner: root
|
||||||
group: wheel
|
group: wheel
|
||||||
loop:
|
loop:
|
||||||
@@ -35,5 +35,5 @@
|
|||||||
owner: root
|
owner: root
|
||||||
group: wheel
|
group: wheel
|
||||||
loop:
|
loop:
|
||||||
- src: cpu_set_perf_perc_linux
|
- src: cpu_set_perf_perc_linux_intel
|
||||||
dest: /usr/local/bin/cpu_set_perf_perc
|
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) %}
|
{% for core in range(0, cores, 1) %}
|
||||||
w- /sys/devices/system/cpu/cpufreq/policy{{core}}/energy_performance_preference - - - - power
|
w- /sys/devices/system/cpu/cpufreq/policy{{core}}/energy_performance_preference - - - - power
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
|
|||||||
19
ansible/roles/devfs/files/homeserver_devfs.rules
Normal file
19
ansible/roles/devfs/files/homeserver_devfs.rules
Normal file
@@ -0,0 +1,19 @@
|
|||||||
|
# [localrules=10]
|
||||||
|
# add path 'input/*' mode 0660 group video
|
||||||
|
# add path 'usb/*' mode 0660 group usb
|
||||||
|
|
||||||
|
[tajailwg=13]
|
||||||
|
add include $devfsrules_hide_all
|
||||||
|
add include $devfsrules_unhide_basic
|
||||||
|
add include $devfsrules_unhide_login
|
||||||
|
add path 'bpf*' unhide
|
||||||
|
add path pf unhide
|
||||||
|
add path pflog unhide
|
||||||
|
add path pfsynv unhide
|
||||||
|
add path 'tun*' unhide
|
||||||
|
|
||||||
|
[tajaildhcp=14]
|
||||||
|
add include $devfsrules_hide_all
|
||||||
|
add include $devfsrules_unhide_basic
|
||||||
|
add include $devfsrules_unhide_login
|
||||||
|
add path 'bpf*' unhide
|
||||||
@@ -75,4 +75,10 @@
|
|||||||
;; Delete trailing whitespace before save
|
;; Delete trailing whitespace before save
|
||||||
(add-hook 'before-save-hook 'delete-trailing-whitespace)
|
(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)
|
(provide 'base)
|
||||||
|
|||||||
@@ -81,6 +81,12 @@
|
|||||||
(unless (treesit-ready-p 'javascript) (treesit-install-language-grammar 'javascript))
|
(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
|
(use-package css-ts-mode
|
||||||
:ensure nil
|
:ensure nil
|
||||||
:pin manual
|
:pin manual
|
||||||
@@ -88,9 +94,23 @@
|
|||||||
("\\.css\\'" . css-ts-mode)
|
("\\.css\\'" . css-ts-mode)
|
||||||
)
|
)
|
||||||
:commands (css-ts-mode)
|
:commands (css-ts-mode)
|
||||||
|
:custom (css-indent-offset 2)
|
||||||
:init
|
:init
|
||||||
(add-to-list 'treesit-language-source-alist '(css "https://github.com/tree-sitter/tree-sitter-css"))
|
(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))
|
(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
|
- fonts
|
||||||
- role: rust
|
- role: rust
|
||||||
when: 'emacs_flavor == "full"'
|
when: 'emacs_flavor == "full"'
|
||||||
|
- role: python
|
||||||
|
when: 'emacs_flavor == "full"'
|
||||||
|
|||||||
@@ -14,6 +14,7 @@
|
|||||||
- gopls
|
- gopls
|
||||||
- typescript-language-server
|
- typescript-language-server
|
||||||
- shellcheck
|
- shellcheck
|
||||||
|
- vscode-css-languageserver
|
||||||
state: present
|
state: present
|
||||||
|
|
||||||
- name: Create directories
|
- name: Create directories
|
||||||
|
|||||||
@@ -11,3 +11,4 @@ firefox_config:
|
|||||||
browser.newtabpage.activity-stream.showSponsoredTopSites: false
|
browser.newtabpage.activity-stream.showSponsoredTopSites: false
|
||||||
browser.newtabpage.activity-stream.feeds.section.topstories: false
|
browser.newtabpage.activity-stream.feeds.section.topstories: false
|
||||||
browser.newtabpage.pinned: "[]"
|
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
|
daemon_reload: yes
|
||||||
loop:
|
loop:
|
||||||
- systemd-udev-settle.service
|
- 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
|
command: gpg --import
|
||||||
when: '"cv25519/B0B50C7FDDE009E5" not in gpgkeys.stdout'
|
when: '"cv25519/B0B50C7FDDE009E5" not in gpgkeys.stdout'
|
||||||
args:
|
args:
|
||||||
stdin: "{{ lookup('file', 'gpg.asc') }}"
|
stdin: "{{ lookup('file', pgp_key|default('gpg.asc')) }}"
|
||||||
|
|
||||||
- import_tasks: tasks/peruser_freebsd.yaml
|
- import_tasks: tasks/peruser_freebsd.yaml
|
||||||
when: 'os_flavor == "freebsd"'
|
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
|
||||||
10
ansible/roles/homeserver/files/decrypt_disks.bash
Normal file
10
ansible/roles/homeserver/files/decrypt_disks.bash
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
#
|
||||||
|
# Decrypt and mount the disks after a fresh reboot.
|
||||||
|
set -euo pipefail
|
||||||
|
IFS=$'\n\t'
|
||||||
|
DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
|
||||||
|
|
||||||
|
zfs load-key -r zmass/encrypted
|
||||||
|
zfs mount -a
|
||||||
|
service bemount start
|
||||||
55
ansible/roles/homeserver/tasks/common.yaml
Normal file
55
ansible/roles/homeserver/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
|
||||||
10
ansible/roles/homeserver/tasks/freebsd.yaml
Normal file
10
ansible/roles/homeserver/tasks/freebsd.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: decrypt_disks.bash
|
||||||
|
dest: /usr/local/bin/decrypt_disks
|
||||||
29
ansible/roles/homeserver/tasks/linux.yaml
Normal file
29
ansible/roles/homeserver/tasks/linux.yaml
Normal file
@@ -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
|
||||||
2
ansible/roles/homeserver/tasks/main.yaml
Normal file
2
ansible/roles/homeserver/tasks/main.yaml
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
- import_tasks: tasks/common.yaml
|
||||||
|
# when: foo is defined
|
||||||
29
ansible/roles/homeserver/tasks/peruser.yaml
Normal file
29
ansible/roles/homeserver/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/homeserver/tasks/peruser_freebsd.yaml
Normal file
0
ansible/roles/homeserver/tasks/peruser_freebsd.yaml
Normal file
0
ansible/roles/homeserver/tasks/peruser_linux.yaml
Normal file
0
ansible/roles/homeserver/tasks/peruser_linux.yaml
Normal file
@@ -1,10 +1,19 @@
|
|||||||
- name: Set the /etc/hosts
|
- name: Set the /etc/hosts
|
||||||
|
when: hostname is undefined or item.key != hostname
|
||||||
ansible.builtin.lineinfile:
|
ansible.builtin.lineinfile:
|
||||||
path: /etc/hosts
|
path: /etc/hosts
|
||||||
regexp: '^{{ item.key | regex_escape() }}\s+'
|
regexp: '^{{ item.key | regex_escape() }}\s+'
|
||||||
line: "{{ item.key }} {{ item.value | join(' ') }}"
|
line: "{{ item.key }} {{ item.value | join(' ') }}"
|
||||||
loop: "{{ etc_hosts | dict2items }}"
|
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
|
- import_tasks: tasks/freebsd.yaml
|
||||||
when: 'os_flavor == "freebsd"'
|
when: 'os_flavor == "freebsd"'
|
||||||
|
|
||||||
|
|||||||
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
|
owner: root
|
||||||
group: wheel
|
group: wheel
|
||||||
loop:
|
loop:
|
||||||
- src: cast_file_intel
|
- src: cast_file_vaapi
|
||||||
dest: /usr/local/bin/cast_file
|
dest: /usr/local/bin/cast_file
|
||||||
|
|||||||
@@ -7,5 +7,5 @@ NameResolvingService=systemd
|
|||||||
EnableNetworkConfiguration=True
|
EnableNetworkConfiguration=True
|
||||||
# route_priority_offset=300
|
# route_priority_offset=300
|
||||||
|
|
||||||
[Scan]
|
# [Scan]
|
||||||
DisablePeriodicScan=true
|
# DisablePeriodicScan=true
|
||||||
|
|||||||
@@ -36,5 +36,5 @@
|
|||||||
daemon_reload: yes
|
daemon_reload: yes
|
||||||
loop:
|
loop:
|
||||||
- iwd.service
|
- iwd.service
|
||||||
- systemd-networkd.service
|
# - systemd-networkd.service
|
||||||
- systemd-resolved.service
|
- systemd-resolved.service
|
||||||
|
|||||||
55
ansible/roles/odowork/tasks/common.yaml
Normal file
55
ansible/roles/odowork/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/odowork/tasks/freebsd.yaml
Normal file
5
ansible/roles/odowork/tasks/freebsd.yaml
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
# - name: Install packages
|
||||||
|
# package:
|
||||||
|
# name:
|
||||||
|
# - foo
|
||||||
|
# state: present
|
||||||
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/odowork/tasks/main.yaml
Normal file
2
ansible/roles/odowork/tasks/main.yaml
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
- import_tasks: tasks/common.yaml
|
||||||
|
# when: foo is defined
|
||||||
29
ansible/roles/odowork/tasks/peruser.yaml
Normal file
29
ansible/roles/odowork/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/odowork/tasks/peruser_freebsd.yaml
Normal file
0
ansible/roles/odowork/tasks/peruser_freebsd.yaml
Normal file
0
ansible/roles/odowork/tasks/peruser_linux.yaml
Normal file
0
ansible/roles/odowork/tasks/peruser_linux.yaml
Normal file
@@ -39,7 +39,7 @@
|
|||||||
mode: 0644
|
mode: 0644
|
||||||
loop:
|
loop:
|
||||||
- /etc/pacman.d/conf.d/blank.conf
|
- /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:
|
vars:
|
||||||
sub_query: "results[?stat.path=='{{ item }}'].stat.exists"
|
sub_query: "results[?stat.path=='{{ item }}'].stat.exists"
|
||||||
|
|
||||||
@@ -52,7 +52,7 @@
|
|||||||
group: root
|
group: root
|
||||||
loop:
|
loop:
|
||||||
- freeze_firefox.conf
|
- freeze_firefox.conf
|
||||||
|
|
||||||
- name: Install packages
|
- name: Install packages
|
||||||
package:
|
package:
|
||||||
name:
|
name:
|
||||||
|
|||||||
@@ -20,6 +20,7 @@ dns/coredns
|
|||||||
editors/emacs
|
editors/emacs
|
||||||
editors/mg
|
editors/mg
|
||||||
ftp/wget
|
ftp/wget
|
||||||
|
graphics/ImageMagick
|
||||||
graphics/drm-kmod
|
graphics/drm-kmod
|
||||||
graphics/evince
|
graphics/evince
|
||||||
graphics/gimp
|
graphics/gimp
|
||||||
|
|||||||
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
55
ansible/roles/restaurant_health_rating/tasks/common.yaml
Normal file
55
ansible/roles/restaurant_health_rating/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
|
||||||
@@ -0,0 +1,5 @@
|
|||||||
|
- name: Install packages
|
||||||
|
package:
|
||||||
|
name:
|
||||||
|
- ImageMagick7
|
||||||
|
state: present
|
||||||
6
ansible/roles/restaurant_health_rating/tasks/linux.yaml
Normal file
6
ansible/roles/restaurant_health_rating/tasks/linux.yaml
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
- name: Install packages
|
||||||
|
package:
|
||||||
|
name:
|
||||||
|
- imagemagick
|
||||||
|
- web-ext
|
||||||
|
state: present
|
||||||
2
ansible/roles/restaurant_health_rating/tasks/main.yaml
Normal file
2
ansible/roles/restaurant_health_rating/tasks/main.yaml
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
- import_tasks: tasks/common.yaml
|
||||||
|
# when: foo is defined
|
||||||
29
ansible/roles/restaurant_health_rating/tasks/peruser.yaml
Normal file
29
ansible/roles/restaurant_health_rating/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"'
|
||||||
@@ -1,2 +1,2 @@
|
|||||||
# Check that rust-analyzer is valid for date on https://rust-lang.github.io/rustup-components-history/
|
# 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:
|
args:
|
||||||
creates: "{{ account_homedir.stdout }}/.rustup/toolchains/nightly-{{ rust_date }}-x86_64-unknown-linux-gnu"
|
creates: "{{ account_homedir.stdout }}/.rustup/toolchains/nightly-{{ rust_date }}-x86_64-unknown-linux-gnu"
|
||||||
|
|
||||||
- name: Install the musl target
|
- name: Install targets
|
||||||
command: rustup target add x86_64-unknown-linux-musl
|
command: rustup target add "{{ item }}"
|
||||||
args:
|
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).
|
# 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
|
- name: Install the nightly rust-src
|
||||||
|
|||||||
@@ -13,7 +13,7 @@
|
|||||||
# name: []
|
# name: []
|
||||||
# state: present
|
# state: present
|
||||||
# update_cache: true
|
# update_cache: true
|
||||||
|
|
||||||
- name: Install packages
|
- name: Install packages
|
||||||
package:
|
package:
|
||||||
name:
|
name:
|
||||||
@@ -21,4 +21,6 @@
|
|||||||
- pipewire-pulse
|
- pipewire-pulse
|
||||||
- wireplumber
|
- wireplumber
|
||||||
- pavucontrol
|
- pavucontrol
|
||||||
|
- pipewire-jack
|
||||||
|
- lib32-pipewire-jack
|
||||||
state: present
|
state: present
|
||||||
|
|||||||
@@ -89,7 +89,7 @@ KbdInteractiveAuthentication no
|
|||||||
#AllowAgentForwarding yes
|
#AllowAgentForwarding yes
|
||||||
#AllowTcpForwarding yes
|
#AllowTcpForwarding yes
|
||||||
#GatewayPorts no
|
#GatewayPorts no
|
||||||
#X11Forwarding yes
|
#X11Forwarding no
|
||||||
#X11DisplayOffset 10
|
#X11DisplayOffset 10
|
||||||
#X11UseLocalhost yes
|
#X11UseLocalhost yes
|
||||||
#PermitTTY yes
|
#PermitTTY yes
|
||||||
@@ -106,7 +106,7 @@ KbdInteractiveAuthentication no
|
|||||||
#PermitTunnel no
|
#PermitTunnel no
|
||||||
#ChrootDirectory none
|
#ChrootDirectory none
|
||||||
#UseBlacklist no
|
#UseBlacklist no
|
||||||
#VersionAddendum FreeBSD-20230316
|
#VersionAddendum FreeBSD-20231004
|
||||||
|
|
||||||
# no default banner path
|
# no default banner path
|
||||||
#Banner none
|
#Banner none
|
||||||
|
|||||||
@@ -10,3 +10,4 @@ default_sway_conf_files:
|
|||||||
- disable_focus_follows_mouse
|
- disable_focus_follows_mouse
|
||||||
- lockscreen
|
- lockscreen
|
||||||
- logout
|
- 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"
|
||||||
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
@@ -2,6 +2,7 @@
|
|||||||
package:
|
package:
|
||||||
name:
|
name:
|
||||||
- linux-lts-headers
|
- linux-lts-headers
|
||||||
|
- linux-headers
|
||||||
state: present
|
state: present
|
||||||
|
|
||||||
- name: Check trusted gpg keys
|
- name: Check trusted gpg keys
|
||||||
@@ -17,6 +18,7 @@
|
|||||||
command: "gpg --recv-key '{{ item }}'"
|
command: "gpg --recv-key '{{ item }}'"
|
||||||
loop:
|
loop:
|
||||||
- "0AB9E991C6AF658B"
|
- "0AB9E991C6AF658B"
|
||||||
|
- "6AD860EED4598027"
|
||||||
|
|
||||||
- name: Build aur packages
|
- name: Build aur packages
|
||||||
register: buildaur
|
register: buildaur
|
||||||
|
|||||||
@@ -22,6 +22,8 @@ elif [ "$target" = "odolinux" ]; then
|
|||||||
ansible-playbook -v -i environments/laptop playbook.yaml --diff --limit odolinux "${@}"
|
ansible-playbook -v -i environments/laptop playbook.yaml --diff --limit odolinux "${@}"
|
||||||
elif [ "$target" = "odofreebsd" ]; then
|
elif [ "$target" = "odofreebsd" ]; then
|
||||||
ansible-playbook -v -i environments/laptop playbook.yaml --diff --limit odofreebsd "${@}"
|
ansible-playbook -v -i environments/laptop playbook.yaml --diff --limit odofreebsd "${@}"
|
||||||
|
elif [ "$target" = "odowork" ]; then
|
||||||
|
ansible-playbook -v -i environments/laptop playbook.yaml --diff --limit odowork "${@}"
|
||||||
elif [ "$target" = "jail_nat_dhcp" ]; then
|
elif [ "$target" = "jail_nat_dhcp" ]; then
|
||||||
ansible-playbook -v -i environments/jail playbook.yaml --diff --limit nat_dhcp "${@}"
|
ansible-playbook -v -i environments/jail playbook.yaml --diff --limit nat_dhcp "${@}"
|
||||||
elif [ "$target" = "jail_homeserver_nat_dhcp" ]; then
|
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
|
||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user