Compare commits
93 Commits
d0ba7ac54b
...
pixelbook
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
06de3fb0ac | ||
|
|
eaa05e13d0 | ||
|
|
98f6ca10ff | ||
|
|
675652044f | ||
|
|
c901defbf3 | ||
|
|
8bf7b7d489 | ||
|
|
6e772f1137 | ||
|
|
d7f99659f1 | ||
|
|
023e362896 | ||
|
|
c66327a31f | ||
|
|
423d057abd | ||
|
|
6061f61c16 | ||
|
|
f6bc39a7fb | ||
|
|
68e84fdd77 | ||
|
|
48bdb12e77 | ||
|
|
ec72d20455 | ||
|
|
7f47b1ca1b | ||
|
|
5fcb37591c | ||
|
|
3f0b8162b8 | ||
|
|
b90ec542de | ||
|
|
16b7a200de | ||
|
|
e3e7de8eb1 | ||
|
|
51e5917e43 | ||
|
|
2d260dec90 | ||
|
|
72a8d6f615 | ||
|
|
34ffd5c100 | ||
|
|
da36f1b3d8 | ||
|
|
1c922c2234 | ||
|
|
d56132618a | ||
|
|
575d4360f1 | ||
|
|
e7328f2865 | ||
|
|
6be5ad6b3d | ||
|
|
44d3cc61f5 | ||
|
|
d20ce1e4d4 | ||
|
|
ae43050061 | ||
|
|
7ecf2ef1b1 | ||
|
|
05c3b0c1dc | ||
|
|
fccb2312da | ||
|
|
47c36a82bf | ||
|
|
112cba2b8c | ||
|
|
1a017cfac7 | ||
|
|
eae6737d76 | ||
|
|
c652e60619 | ||
|
|
b94e13d63e | ||
|
|
68139849f6 | ||
|
|
8975324e7c | ||
|
|
e5fd4bf9e6 | ||
|
|
a0666e6904 | ||
|
|
a97378654e | ||
|
|
f28f542d4d | ||
|
|
9d118078ae | ||
|
|
c2a0f90b4f | ||
|
|
6f3c5ca025 | ||
|
|
49fa0eb9cc | ||
|
|
e4b10e7260 | ||
|
|
a536defe9a | ||
|
|
c7b8b4c510 | ||
|
|
34cd3b7aa4 | ||
|
|
1f18074e29 | ||
|
|
971ed7e75d | ||
|
|
35709eb06a | ||
|
|
25c2f2753b | ||
|
|
fa1ed38678 | ||
|
|
beb8781b5c | ||
|
|
deb977de09 | ||
|
|
21c664d2c0 | ||
|
|
754c84ad89 | ||
|
|
a54c966ad0 | ||
|
|
babf3bb971 | ||
|
|
2fc923837f | ||
|
|
84e370bd94 | ||
|
|
ef59593ef3 | ||
|
|
db30ae976a | ||
|
|
b86d7813a9 | ||
|
|
db5b400408 | ||
|
|
d229447149 | ||
|
|
8707a7941a | ||
|
|
01c5571da0 | ||
|
|
e0b5e893d8 | ||
|
|
993e773414 | ||
|
|
ed25cd6d31 | ||
|
|
c9617dd3cc | ||
|
|
61bc98578b | ||
|
|
7f0af6f41c | ||
|
|
8744f8f547 | ||
|
|
955f3cd329 | ||
|
|
a6af4eee2f | ||
|
|
5e81006208 | ||
|
|
0f054f819f | ||
|
|
383894bd3f | ||
|
|
767b925705 | ||
|
|
87ff51a517 | ||
|
|
1378d56924 |
@@ -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"
|
||||||
|
|||||||
@@ -14,9 +14,9 @@ loader_conf: "odofreebsd_loader.conf"
|
|||||||
install_graphics: true
|
install_graphics: true
|
||||||
graphics_driver: "intel"
|
graphics_driver: "intel"
|
||||||
cputype: "intel"
|
cputype: "intel"
|
||||||
cpu_opt: tigerlake
|
cpu_opt: skylake
|
||||||
hwpstate: true
|
hwpstate: true
|
||||||
cores: 8
|
cores: 4
|
||||||
build_user:
|
build_user:
|
||||||
name: talexander
|
name: talexander
|
||||||
group: talexander
|
group: talexander
|
||||||
|
|||||||
@@ -32,8 +32,8 @@ enabled_wireguard:
|
|||||||
- colo
|
- colo
|
||||||
cputype: "intel"
|
cputype: "intel"
|
||||||
hwpstate: true
|
hwpstate: true
|
||||||
cores: 8
|
cores: 4
|
||||||
sway_conf_files:
|
sway_conf_files:
|
||||||
- rofimoji
|
- rofimoji
|
||||||
docker_storage_driver: zfs # alternatively overlay2
|
docker_storage_driver: overlay2 # alternatively zfs
|
||||||
docker_zfs_dataset: zroot/linux/archmain/docker
|
docker_zfs_dataset: zroot/linux/archmain/docker
|
||||||
|
|||||||
35
ansible/environments/laptop/host_vars/pixellinux
Normal file
35
ansible/environments/laptop/host_vars/pixellinux
Normal file
@@ -0,0 +1,35 @@
|
|||||||
|
os_flavor: "linux"
|
||||||
|
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
|
||||||
|
- homeassistant
|
||||||
|
gitconfig: "gitconfig_home"
|
||||||
|
zfs_snapshot_datasets:
|
||||||
|
- path: zroot/linux/archmain/be
|
||||||
|
install_graphics: true
|
||||||
|
graphics_driver: "intel"
|
||||||
|
build_user:
|
||||||
|
name: talexander
|
||||||
|
group: talexander
|
||||||
|
wireguard_directory: pixel
|
||||||
|
enabled_wireguard:
|
||||||
|
- wgh
|
||||||
|
cputype: "intel"
|
||||||
|
hwpstate: true
|
||||||
|
cores: 4
|
||||||
|
sway_conf_files:
|
||||||
|
- rofimoji
|
||||||
|
docker_storage_driver: overlay2 # alternatively zfs
|
||||||
|
docker_zfs_dataset: zroot/linux/archmain/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
|
||||||
|
pixellinux ansible_connection=local ansible_host=127.0.0.1
|
||||||
|
|||||||
5
ansible/environments/vm/host_vars/freebsdupdatemrmanager
Normal file
5
ansible/environments/vm/host_vars/freebsdupdatemrmanager
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
os_flavor: "freebsd"
|
||||||
|
cpu_opt: skylake
|
||||||
|
build_user:
|
||||||
|
name: root
|
||||||
|
group: wheel
|
||||||
@@ -1,9 +1,13 @@
|
|||||||
[vm]
|
[vm]
|
||||||
poudriereodo ansible_user=builder ansible_host=10.213.177.12
|
poudriereodo ansible_user=builder ansible_host=10.213.177.12
|
||||||
poudrieremrmanager ansible_user=root ansible_host=poudriere
|
poudrieremrmanager ansible_user=root ansible_host=poudriere
|
||||||
|
freebsdupdatemrmanager ansible_user=root ansible_host=freebsdupdate
|
||||||
#
|
#
|
||||||
# Put in ~/.ssh/config
|
# Put in ~/.ssh/config
|
||||||
# Host poudriere
|
# Host poudriere
|
||||||
# ProxyJump talexander@mrmanager
|
# ProxyJump talexander@mrmanager
|
||||||
# HostName 10.215.1.203
|
# HostName 10.215.1.203
|
||||||
#
|
#
|
||||||
|
# Host freebsdupdate
|
||||||
|
# ProxyJump talexander@mrmanager
|
||||||
|
# HostName 10.215.1.213
|
||||||
|
|||||||
@@ -50,6 +50,9 @@
|
|||||||
- docker
|
- docker
|
||||||
- vscode
|
- vscode
|
||||||
- javascript
|
- javascript
|
||||||
|
- launch_keyboard
|
||||||
|
- lvfs
|
||||||
|
- restaurant_health_rating
|
||||||
|
|
||||||
- hosts: nat_dhcp:homeserver_nat_dhcp:mrmanager_nat_dhcp
|
- hosts: nat_dhcp:homeserver_nat_dhcp:mrmanager_nat_dhcp
|
||||||
vars:
|
vars:
|
||||||
@@ -66,6 +69,7 @@
|
|||||||
- portshaker
|
- portshaker
|
||||||
- poudriere
|
- poudriere
|
||||||
- poudrierenginx
|
- poudrierenginx
|
||||||
|
- freebsd_update_server
|
||||||
|
|
||||||
- hosts: mrmanager
|
- hosts: mrmanager
|
||||||
vars:
|
vars:
|
||||||
@@ -110,3 +114,37 @@
|
|||||||
- doas
|
- doas
|
||||||
- users
|
- users
|
||||||
- public_dns
|
- public_dns
|
||||||
|
|
||||||
|
- hosts: odolinux:odofreebsd
|
||||||
|
vars:
|
||||||
|
ansible_become: True
|
||||||
|
roles:
|
||||||
|
- framework_laptop
|
||||||
|
|
||||||
|
- hosts: pixellinux
|
||||||
|
vars:
|
||||||
|
ansible_become: True
|
||||||
|
roles:
|
||||||
|
- pixelbook
|
||||||
|
|
||||||
|
- hosts: odofreebsd
|
||||||
|
vars:
|
||||||
|
ansible_become: True
|
||||||
|
roles:
|
||||||
|
- freebsd_update_server
|
||||||
|
|
||||||
|
- hosts: freebsdupdatemrmanager
|
||||||
|
vars:
|
||||||
|
ansible_become: True
|
||||||
|
roles:
|
||||||
|
- sudo # for poudboot script
|
||||||
|
- doas
|
||||||
|
- fstab
|
||||||
|
- build
|
||||||
|
- freebsd_update_server
|
||||||
|
|
||||||
|
- hosts: homeserver
|
||||||
|
vars:
|
||||||
|
ansible_become: True
|
||||||
|
roles:
|
||||||
|
- homeserver
|
||||||
|
|||||||
@@ -1,4 +1,3 @@
|
|||||||
# $FreeBSD$
|
|
||||||
#
|
#
|
||||||
# Automounter master map, see auto_master(5) for details.
|
# Automounter master map, see auto_master(5) for details.
|
||||||
#
|
#
|
||||||
|
|||||||
@@ -1,2 +1,3 @@
|
|||||||
.idea
|
.idea
|
||||||
.python-version
|
.python-version
|
||||||
|
.dir-locals.el
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -1,3 +1,43 @@
|
|||||||
|
# - 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
|
- import_tasks: tasks/freebsd.yaml
|
||||||
when: 'os_flavor == "freebsd"'
|
when: 'os_flavor == "freebsd"'
|
||||||
|
|
||||||
|
|||||||
@@ -1 +1,2 @@
|
|||||||
freebsd_version: "releng/13.2"
|
# freebsd_version: "releng/13.2"
|
||||||
|
freebsd_version: "9c80d66ec1b4c5b9ac7aaf5b0fdbb1628d49c181"
|
||||||
|
|||||||
26
ansible/roles/build/files/find_packages_that_installed_kernel_modules.bash
Executable file
26
ansible/roles/build/files/find_packages_that_installed_kernel_modules.bash
Executable file
@@ -0,0 +1,26 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
#
|
||||||
|
# List installed packages that install a kernel module.
|
||||||
|
set -euo pipefail
|
||||||
|
IFS=$'\n\t'
|
||||||
|
DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
|
||||||
|
|
||||||
|
: ${PORTSDIR:="/usr/ports"}
|
||||||
|
|
||||||
|
function main {
|
||||||
|
if [ "$#" -ne 0 ]; then
|
||||||
|
(>&2 echo "This script takes no positional parameters.")
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
local module
|
||||||
|
doas find / -type f -name '*.ko' | sort | while read module; do
|
||||||
|
local provides=$(pkg provides "$module")
|
||||||
|
if [ -n "$provides" ]; then
|
||||||
|
package_name=$(grep 'Name : ' <<<"$provides" | sed 's/Name : //g')
|
||||||
|
# module_file=$(grep 'Filename: ' <<<"$provides" | sed 's/Filename: //g')
|
||||||
|
echo "$package_name"
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
}
|
||||||
|
|
||||||
|
main "${@}"
|
||||||
36
ansible/roles/build/files/find_popular_ports_options.bash
Executable file
36
ansible/roles/build/files/find_popular_ports_options.bash
Executable file
@@ -0,0 +1,36 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
#
|
||||||
|
# Find which port options appear the most in ports.
|
||||||
|
set -euo pipefail
|
||||||
|
IFS=$'\n\t'
|
||||||
|
DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
|
||||||
|
|
||||||
|
: ${PORTSDIR:="/usr/ports"}
|
||||||
|
|
||||||
|
function main {
|
||||||
|
if [ "$#" -ne 0 ]; then
|
||||||
|
(>&2 echo "This script takes no positional parameters.")
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
local folder
|
||||||
|
find_port_folders | while read folder; do
|
||||||
|
set +e
|
||||||
|
dump_port_options "$folder"
|
||||||
|
set -e
|
||||||
|
done | sort | uniq -c | sort -nr
|
||||||
|
}
|
||||||
|
|
||||||
|
function find_port_folders {
|
||||||
|
local mf
|
||||||
|
find "$PORTSDIR" -type f -name Makefile -mindepth 3 -maxdepth 3 | sort | while read mf; do
|
||||||
|
dirname "$mf"
|
||||||
|
done
|
||||||
|
}
|
||||||
|
|
||||||
|
function dump_port_options {
|
||||||
|
local folder="$1"
|
||||||
|
local portopts=$(make -C "$folder" -V OPTIONS_DEFINE)
|
||||||
|
echo "$portopts" | grep -oE --line-buffered '[^ ]*'
|
||||||
|
}
|
||||||
|
|
||||||
|
main "${@}"
|
||||||
41
ansible/roles/build/files/find_ports_containing_option.bash
Executable file
41
ansible/roles/build/files/find_ports_containing_option.bash
Executable file
@@ -0,0 +1,41 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
#
|
||||||
|
# List ports containing an option matching the first parameter to the script.
|
||||||
|
set -euo pipefail
|
||||||
|
IFS=$'\n\t'
|
||||||
|
DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
|
||||||
|
|
||||||
|
: ${PORTSDIR:="/usr/ports"}
|
||||||
|
|
||||||
|
function main {
|
||||||
|
if [ "$#" -ne 1 ]; then
|
||||||
|
(>&2 echo "Pass exactly 1 option name to this script.")
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
local find_option_name=$1
|
||||||
|
local folder
|
||||||
|
find_port_folders | while read folder; do
|
||||||
|
set +e
|
||||||
|
dump_port_options "$folder" | grep -qE "^${find_option_name}$"
|
||||||
|
has_opt=$?;
|
||||||
|
set -e
|
||||||
|
if [ $has_opt -eq 0 ]; then
|
||||||
|
echo "$folder"
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
}
|
||||||
|
|
||||||
|
function find_port_folders {
|
||||||
|
local mf
|
||||||
|
find "$PORTSDIR" -type f -name Makefile -mindepth 3 -maxdepth 3 | sort | while read mf; do
|
||||||
|
dirname "$mf"
|
||||||
|
done
|
||||||
|
}
|
||||||
|
|
||||||
|
function dump_port_options {
|
||||||
|
local folder="$1"
|
||||||
|
local portopts=$(make -C "$folder" -V OPTIONS_DEFINE)
|
||||||
|
echo "$portopts" | grep -oE --line-buffered '[^ ]*'
|
||||||
|
}
|
||||||
|
|
||||||
|
main "${@}"
|
||||||
@@ -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-----
|
||||||
|
|||||||
@@ -1,3 +0,0 @@
|
|||||||
KERNCONF=CUSTOM
|
|
||||||
|
|
||||||
BUILD_STATIC=YES
|
|
||||||
|
|||||||
@@ -31,10 +31,11 @@ Architecture = auto
|
|||||||
# Misc options
|
# Misc options
|
||||||
#UseSyslog
|
#UseSyslog
|
||||||
#Color
|
#Color
|
||||||
#TotalDownload
|
NoProgressBar
|
||||||
# We cannot check disk space from within a chroot environment
|
# We cannot check disk space from within a chroot environment
|
||||||
#CheckSpace
|
#CheckSpace
|
||||||
#VerbosePkgLists
|
VerbosePkgLists
|
||||||
|
ParallelDownloads = 5
|
||||||
|
|
||||||
# By default, pacman accepts packages signed by keys that its local keyring
|
# By default, pacman accepts packages signed by keys that its local keyring
|
||||||
# trusts (see pacman-key and its man page), as well as unsigned packages.
|
# trusts (see pacman-key and its man page), as well as unsigned packages.
|
||||||
@@ -69,32 +70,24 @@ LocalFileSigLevel = Optional
|
|||||||
# repo name header and Include lines. You can add preferred servers immediately
|
# repo name header and Include lines. You can add preferred servers immediately
|
||||||
# after the header, and they will be used before the default mirrors.
|
# after the header, and they will be used before the default mirrors.
|
||||||
|
|
||||||
#[testing]
|
#[core-testing]
|
||||||
#Include = /etc/pacman.d/mirrorlist
|
#Include = /etc/pacman.d/mirrorlist
|
||||||
|
|
||||||
[core]
|
[core]
|
||||||
Include = /etc/pacman.d/mirrorlist
|
Include = /etc/pacman.d/mirrorlist
|
||||||
|
|
||||||
|
#[extra-testing]
|
||||||
|
#Include = /etc/pacman.d/mirrorlist
|
||||||
|
|
||||||
[extra]
|
[extra]
|
||||||
Include = /etc/pacman.d/mirrorlist
|
Include = /etc/pacman.d/mirrorlist
|
||||||
|
|
||||||
#[community-testing]
|
|
||||||
#Include = /etc/pacman.d/mirrorlist
|
|
||||||
|
|
||||||
[community]
|
|
||||||
Include = /etc/pacman.d/mirrorlist
|
|
||||||
|
|
||||||
# If you want to run 32 bit applications on your x86_64 system,
|
|
||||||
# enable the multilib repositories as required here.
|
|
||||||
|
|
||||||
#[multilib-testing]
|
|
||||||
#Include = /etc/pacman.d/mirrorlist
|
|
||||||
|
|
||||||
[multilib]
|
|
||||||
Include = /etc/pacman.d/mirrorlist
|
|
||||||
|
|
||||||
# An example of a custom package repository. See the pacman manpage for
|
# An example of a custom package repository. See the pacman manpage for
|
||||||
# tips on creating your own repositories.
|
# tips on creating your own repositories.
|
||||||
#[custom]
|
#[custom]
|
||||||
#SigLevel = Optional TrustAll
|
#SigLevel = Optional TrustAll
|
||||||
#Server = file:///home/custompkgs
|
#Server = file:///home/custompkgs
|
||||||
|
|
||||||
|
[custom]
|
||||||
|
SigLevel = Required
|
||||||
|
Server = file:///var/cache/pacman/custom
|
||||||
@@ -1,3 +1,5 @@
|
|||||||
dependencies:
|
dependencies:
|
||||||
- users
|
- role: users
|
||||||
- gpg
|
when: 'os_flavor == "linux"'
|
||||||
|
- role: gpg
|
||||||
|
when: 'os_flavor == "linux"'
|
||||||
|
|||||||
@@ -3,12 +3,3 @@
|
|||||||
|
|
||||||
- import_tasks: tasks/linux.yaml
|
- import_tasks: tasks/linux.yaml
|
||||||
when: 'os_flavor == "linux"'
|
when: 'os_flavor == "linux"'
|
||||||
|
|
||||||
- include_tasks:
|
|
||||||
file: tasks/peruser.yaml
|
|
||||||
apply:
|
|
||||||
become: yes
|
|
||||||
become_user: "{{ initialize_user }}"
|
|
||||||
loop: "{{ users | dict2items | community.general.json_query('[?value.initialize==`true`].key') }}"
|
|
||||||
loop_control:
|
|
||||||
loop_var: initialize_user
|
|
||||||
|
|||||||
@@ -92,3 +92,9 @@
|
|||||||
dest: /usr/local/bin/freebsd_update_step1
|
dest: /usr/local/bin/freebsd_update_step1
|
||||||
- src: freebsd_update_step2
|
- src: freebsd_update_step2
|
||||||
dest: /usr/local/bin/freebsd_update_step2
|
dest: /usr/local/bin/freebsd_update_step2
|
||||||
|
- src: find_popular_ports_options.bash
|
||||||
|
dest: /usr/local/bin/find_popular_ports_options
|
||||||
|
- src: find_ports_containing_option.bash
|
||||||
|
dest: /usr/local/bin/find_ports_containing_option
|
||||||
|
- src: find_packages_that_installed_kernel_modules.bash
|
||||||
|
dest: /usr/local/bin/find_packages_that_installed_kernel_modules
|
||||||
|
|||||||
@@ -99,7 +99,7 @@
|
|||||||
become: true
|
become: true
|
||||||
become_user: "{{ build_user.name }}"
|
become_user: "{{ build_user.name }}"
|
||||||
args:
|
args:
|
||||||
creates: /var/cache/pacman/custom/custom.db.tar
|
creates: /var/cache/pacman/custom/custom.db.tar.sig
|
||||||
|
|
||||||
- name: Install scripts
|
- name: Install scripts
|
||||||
copy:
|
copy:
|
||||||
|
|||||||
@@ -1,15 +1,29 @@
|
|||||||
{% if cpu_opt is defined and cpu_opt %}
|
{% if cpu_opt is defined and cpu_opt %}
|
||||||
CPUTYPE?={{ cpu_opt }}
|
CPUTYPE?={{ cpu_opt }}
|
||||||
{% endif %}
|
{% endif %}
|
||||||
OPTIMIZED_CFLAGS=YES
|
KERNCONF=CUSTOM
|
||||||
BUILD_OPTIMIZED=YES
|
|
||||||
WITH_CPUFLAGS=YES
|
|
||||||
WITH_MALLOC_PRODUCTION=YES
|
WITH_MALLOC_PRODUCTION=YES
|
||||||
WITHOUT_LLVM_ASSERTIONS=YES
|
WITHOUT_LLVM_ASSERTIONS=YES
|
||||||
WITH_REPRODUCIBLE_BUILD=YES
|
WITH_REPRODUCIBLE_BUILD=YES
|
||||||
|
PORTS_MODULES+=graphics/drm-kmod
|
||||||
|
PORTS_MODULES+=graphics/gpu-firmware-intel-kmod
|
||||||
|
PORTS_MODULES+=net/wireguard-kmod
|
||||||
|
|
||||||
# Would be fun to experiment with:
|
# Would be fun to experiment with:
|
||||||
# WITHOUT_SOURCELESS=YES
|
# WITHOUT_SOURCELESS=YES
|
||||||
|
# WITHOUT_GAMES=YES
|
||||||
|
# WITHOUT_KERBEROS=YES
|
||||||
|
# WITHOUT_LEGACY_CONSOLE=YES
|
||||||
|
# WITHOUT_LIB32=YES
|
||||||
|
# WITHOUT_LOADER_GELI=YES
|
||||||
|
# WITHOUT_MLX5TOOL=YES
|
||||||
|
# WITHOUT_NDIS=YES
|
||||||
|
# WITHOUT_OFED=YES
|
||||||
|
# WITHOUT_PPP=YES
|
||||||
|
# WITH_SORT_THREADS=YES
|
||||||
|
# WITHOUT_TALK=YES
|
||||||
|
# WITHOUT_TCSH=YES
|
||||||
|
|
||||||
|
|
||||||
# Questionable Optimizations
|
# Questionable Optimizations
|
||||||
WITHOUT_FLOPPY=YES
|
WITHOUT_FLOPPY=YES
|
||||||
@@ -19,4 +33,3 @@ WITHOUT_IPFILTER=YES
|
|||||||
WITHOUT_LLVM_TARGET_ALL=YES
|
WITHOUT_LLVM_TARGET_ALL=YES
|
||||||
# Commented out because maybe I want email alerts for failing disks
|
# Commented out because maybe I want email alerts for failing disks
|
||||||
# WITHOUT_MAIL=YES
|
# WITHOUT_MAIL=YES
|
||||||
# WITHOUT_SENDMAIL=YES
|
|
||||||
|
|||||||
@@ -7,6 +7,12 @@ IFS=$'\n\t'
|
|||||||
DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
|
DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
|
||||||
|
|
||||||
perc=$1
|
perc=$1
|
||||||
|
if [ "$perc" -gt 100 ]; then
|
||||||
|
perc=100
|
||||||
|
fi
|
||||||
|
if [ "$perc" -lt 0 ]; then
|
||||||
|
perc=0
|
||||||
|
fi
|
||||||
epp=$((100 - perc))
|
epp=$((100 - perc))
|
||||||
|
|
||||||
sysctl -N dev.hwpstate_intel | grep -E 'dev.hwpstate_intel.[0-9]+.epp' | while read var; do
|
sysctl -N dev.hwpstate_intel | grep -E 'dev.hwpstate_intel.[0-9]+.epp' | while read var; do
|
||||||
|
|||||||
@@ -8,15 +8,20 @@ DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
|
|||||||
|
|
||||||
perc=$1
|
perc=$1
|
||||||
|
|
||||||
if [ $perc -gt 100 ]; then
|
if [ "$perc" -gt 100 ]; then
|
||||||
echo 0 | tee /sys/devices/system/cpu/intel_pstate/no_turbo
|
echo 0 | tee /sys/devices/system/cpu/intel_pstate/no_turbo
|
||||||
perc=100
|
|
||||||
else
|
else
|
||||||
echo 1 | tee /sys/devices/system/cpu/intel_pstate/no_turbo
|
echo 1 | tee /sys/devices/system/cpu/intel_pstate/no_turbo
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ $perc -lt 50 ]; then
|
if [ "$perc" -ge 80 ]; then
|
||||||
echo "power" | tee /sys/devices/system/cpu/cpufreq/policy*/energy_performance_preference
|
|
||||||
else
|
|
||||||
echo "performance" | tee /sys/devices/system/cpu/cpufreq/policy*/energy_performance_preference
|
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
|
fi
|
||||||
|
|||||||
6
ansible/roles/cpu/files/intel_microcode_loader.conf
Normal file
6
ansible/roles/cpu/files/intel_microcode_loader.conf
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
# Load Intel microcode at boot before the kernel does feature detection.
|
||||||
|
#
|
||||||
|
# The alternative would have been /etc/rc.conf with:
|
||||||
|
# microcode_update_enable="YES"
|
||||||
|
cpu_microcode_load="YES"
|
||||||
|
cpu_microcode_name="/boot/firmware/intel-ucode.bin"
|
||||||
@@ -3,6 +3,7 @@
|
|||||||
name:
|
name:
|
||||||
- lscpu # need to kldload cpuctl
|
- lscpu # need to kldload cpuctl
|
||||||
- powermon # need to kldload cpuctl
|
- powermon # need to kldload cpuctl
|
||||||
|
- cpu-microcode-intel
|
||||||
state: present
|
state: present
|
||||||
|
|
||||||
- name: Install loader.conf
|
- name: Install loader.conf
|
||||||
@@ -16,6 +17,7 @@
|
|||||||
- coretemp
|
- coretemp
|
||||||
- cpuctl
|
- cpuctl
|
||||||
- aesni
|
- aesni
|
||||||
|
- intel_microcode
|
||||||
|
|
||||||
- name: Install service configuration
|
- name: Install service configuration
|
||||||
copy:
|
copy:
|
||||||
|
|||||||
@@ -4,27 +4,27 @@
|
|||||||
- powertop
|
- powertop
|
||||||
state: present
|
state: present
|
||||||
|
|
||||||
- name: Install tmpfiles.d configuration
|
# - name: Install tmpfiles.d configuration
|
||||||
copy:
|
# copy:
|
||||||
src: "files/{{ item }}_tmpfiles.conf"
|
# src: "files/{{ item }}_tmpfiles.conf"
|
||||||
dest: "/etc/tmpfiles.d/{{ item }}.conf"
|
# dest: "/etc/tmpfiles.d/{{ item }}.conf"
|
||||||
mode: 0644
|
# mode: 0644
|
||||||
owner: root
|
# owner: root
|
||||||
group: wheel
|
# group: wheel
|
||||||
loop:
|
# loop:
|
||||||
- disable_turboboost
|
# - disable_turboboost
|
||||||
|
|
||||||
- name: Favor energy efficiency for Speed Shift
|
# - name: Favor energy efficiency for Speed Shift
|
||||||
when: hwpstate is defined and hwpstate and cores is defined
|
# when: hwpstate is defined and hwpstate and cores is defined
|
||||||
template:
|
# template:
|
||||||
src: "templates/{{ item.src }}.j2"
|
# src: "templates/{{ item.src }}.j2"
|
||||||
dest: "{{ item.dest }}"
|
# dest: "{{ item.dest }}"
|
||||||
mode: 0755
|
# mode: 0755
|
||||||
owner: root
|
# owner: root
|
||||||
group: wheel
|
# group: wheel
|
||||||
loop:
|
# loop:
|
||||||
- src: energy_performance_preference.conf
|
# - src: energy_performance_preference.conf
|
||||||
dest: /etc/tmpfiles.d/energy_performance_preference.conf
|
# dest: /etc/tmpfiles.d/energy_performance_preference.conf
|
||||||
|
|
||||||
- name: Install scripts
|
- name: Install scripts
|
||||||
when: hwpstate is defined and hwpstate
|
when: hwpstate is defined and hwpstate
|
||||||
|
|||||||
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
|
||||||
@@ -1,103 +0,0 @@
|
|||||||
(package-initialize)
|
|
||||||
(use-package use-package)
|
|
||||||
|
|
||||||
(add-to-list 'package-archives
|
|
||||||
'("melpa" . "https://melpa.org/packages/")
|
|
||||||
)
|
|
||||||
|
|
||||||
(use-package auto-package-update
|
|
||||||
:ensure t
|
|
||||||
:config
|
|
||||||
(setq auto-package-update-delete-old-versions t
|
|
||||||
auto-package-update-interval 14)
|
|
||||||
(auto-package-update-maybe))
|
|
||||||
|
|
||||||
(defconst private-dir (expand-file-name "private" user-emacs-directory))
|
|
||||||
(defconst temp-dir (format "%s/cache" private-dir)
|
|
||||||
"Hostname-based elisp temp directories")
|
|
||||||
|
|
||||||
;; Emacs customizations
|
|
||||||
(setq-default
|
|
||||||
inhibit-startup-screen t
|
|
||||||
initial-scratch-message nil
|
|
||||||
;; Send prompts to mini-buffer not the GUI
|
|
||||||
use-dialog-box nil
|
|
||||||
confirm-nonexistent-file-or-buffer t
|
|
||||||
save-interprogram-paste-before-kill t
|
|
||||||
mouse-yank-at-point t
|
|
||||||
require-final-newline t
|
|
||||||
visible-bell nil
|
|
||||||
ring-bell-function 'ignore
|
|
||||||
;; Write custom variables to an unused file so in-editor changes do not persist.
|
|
||||||
custom-file "~/.emacs.d/.custom.el"
|
|
||||||
;; http://ergoemacs.org/emacs/emacs_stop_cursor_enter_prompt.html
|
|
||||||
minibuffer-prompt-properties
|
|
||||||
'(read-only t point-entered minibuffer-avoid-prompt face minibuffer-prompt)
|
|
||||||
|
|
||||||
;; Disable non selected window highlight
|
|
||||||
cursor-in-non-selected-windows nil
|
|
||||||
highlight-nonselected-windows nil
|
|
||||||
;; PATH
|
|
||||||
exec-path (append exec-path '("/usr/local/bin/"))
|
|
||||||
indent-tabs-mode nil
|
|
||||||
tab-width 4
|
|
||||||
inhibit-startup-message t
|
|
||||||
fringes-outside-margins t
|
|
||||||
x-select-enable-clipboard t
|
|
||||||
use-package-always-ensure t
|
|
||||||
ispell-program-name "aspell"
|
|
||||||
browse-url-browser-function 'browse-url-generic
|
|
||||||
browse-url-generic-program "firefox-developer-edition"
|
|
||||||
frame-title-format '("" invocation-name ": "(:eval (if (buffer-file-name)
|
|
||||||
(abbreviate-file-name (buffer-file-name))
|
|
||||||
"%b")))
|
|
||||||
;; mouse-wheel-progressive-speed nil ;; Don't accelerate mouse wheel
|
|
||||||
;; mouse-wheel-scroll-amount '(5 ((shift) . 3))
|
|
||||||
use-short-answers t
|
|
||||||
package-native-compile t
|
|
||||||
delete-selection-mode t
|
|
||||||
;; Don't show warnings when compiling elisp to native binaries.
|
|
||||||
native-comp-async-report-warnings-errors 'silent
|
|
||||||
)
|
|
||||||
|
|
||||||
(defun assert-directory (p)
|
|
||||||
(unless (file-exists-p p) (make-directory p t))
|
|
||||||
p
|
|
||||||
)
|
|
||||||
(assert-directory (concat temp-dir "/auto-save-list/"))
|
|
||||||
(setq autoload-directory (concat user-emacs-directory (file-name-as-directory "elisp") (file-name-as-directory "autoload")))
|
|
||||||
(add-to-list 'load-path (assert-directory autoload-directory))
|
|
||||||
|
|
||||||
;; Bookmarks
|
|
||||||
(setq
|
|
||||||
;; persistent bookmarks
|
|
||||||
bookmark-save-flag t
|
|
||||||
bookmark-default-file (concat temp-dir "/bookmarks"))
|
|
||||||
|
|
||||||
;; Backups enabled, use nil to disable
|
|
||||||
(setq
|
|
||||||
history-length 1000
|
|
||||||
backup-inhibited nil
|
|
||||||
make-backup-files nil
|
|
||||||
auto-save-default nil
|
|
||||||
auto-save-list-file-name (concat temp-dir "/autosave")
|
|
||||||
create-lockfiles nil
|
|
||||||
backup-directory-alist `((".*" . ,(concat temp-dir "/backup/")))
|
|
||||||
auto-save-file-name-transforms `((".*" ,(concat temp-dir "/auto-save-list/") t)))
|
|
||||||
|
|
||||||
;; Disable toolbar & menubar
|
|
||||||
(menu-bar-mode -1)
|
|
||||||
(when (fboundp 'tool-bar-mode)
|
|
||||||
(tool-bar-mode -1))
|
|
||||||
(when ( fboundp 'scroll-bar-mode)
|
|
||||||
(scroll-bar-mode -1))
|
|
||||||
|
|
||||||
(context-menu-mode +1)
|
|
||||||
|
|
||||||
;; Delete trailing whitespace before save
|
|
||||||
(add-hook 'before-save-hook 'delete-trailing-whitespace)
|
|
||||||
|
|
||||||
(use-package diminish)
|
|
||||||
|
|
||||||
(provide 'base)
|
|
||||||
;;; base ends here
|
|
||||||
@@ -1,42 +0,0 @@
|
|||||||
(use-package eglot
|
|
||||||
:pin gnu
|
|
||||||
:commands (eglot eglot-ensure)
|
|
||||||
:bind (:map eglot-mode-map
|
|
||||||
;; M-.
|
|
||||||
;; ([remap xref-find-definitions] . lsp-ui-peek-find-definitions)
|
|
||||||
;; M-?
|
|
||||||
;; ([remap xref-find-references] . lsp-ui-peek-find-references)
|
|
||||||
("C-c C-a" . eglot-code-actions)
|
|
||||||
)
|
|
||||||
:hook (
|
|
||||||
(eglot-managed-mode . (lambda ()
|
|
||||||
(when (eglot-managed-p)
|
|
||||||
(corfu-mode +1)
|
|
||||||
)
|
|
||||||
))
|
|
||||||
)
|
|
||||||
:config
|
|
||||||
;; Increase garbage collection threshold for performance (default 800000)
|
|
||||||
(setq gc-cons-threshold 100000000)
|
|
||||||
|
|
||||||
;; Increase amount of data read from processes, default 4k
|
|
||||||
(when (>= emacs-major-version 27)
|
|
||||||
(setq read-process-output-max (* 1024 1024)) ;; 1mb
|
|
||||||
)
|
|
||||||
|
|
||||||
(set-face-attribute 'eglot-highlight-symbol-face nil :background "#0291a1" :foreground "black")
|
|
||||||
(set-face-attribute 'eglot-mode-line nil :inherit 'mode-line :bold nil)
|
|
||||||
|
|
||||||
(use-package consult-eglot
|
|
||||||
:bind (
|
|
||||||
:map eglot-mode-map
|
|
||||||
;; C-M-.
|
|
||||||
([remap xref-find-apropos] . #'consult-eglot-symbols)
|
|
||||||
)
|
|
||||||
)
|
|
||||||
:custom
|
|
||||||
(eglot-autoshutdown t "Shut down server when last buffer is killed.")
|
|
||||||
(eglot-sync-connect 0 "Don't block on language server starting.")
|
|
||||||
)
|
|
||||||
|
|
||||||
(provide 'common-lsp)
|
|
||||||
25
ansible/roles/emacs/files/early-init.el
Normal file
25
ansible/roles/emacs/files/early-init.el
Normal file
@@ -0,0 +1,25 @@
|
|||||||
|
(setq gc-cons-threshold 100000000) ;; Increase garbage collection threshold for performance (default 800000)
|
||||||
|
;; Increase amount of data read from processes, default 4k
|
||||||
|
(when (>= emacs-major-version 27)
|
||||||
|
(setq read-process-output-max (* 1024 1024)) ;; 1mb
|
||||||
|
)
|
||||||
|
|
||||||
|
;; Suppress warnings
|
||||||
|
(setq byte-compile-warnings '(not obsolete))
|
||||||
|
(setq warning-suppress-log-types '((comp) (bytecomp)))
|
||||||
|
(setq native-comp-async-report-warnings-errors 'silent)
|
||||||
|
|
||||||
|
;; Set up default visual settings
|
||||||
|
(setq frame-resize-pixelwise t)
|
||||||
|
;; Disable toolbar & menubar
|
||||||
|
(menu-bar-mode -1)
|
||||||
|
(when (fboundp 'tool-bar-mode)
|
||||||
|
(tool-bar-mode -1))
|
||||||
|
(when (display-graphic-p)
|
||||||
|
(context-menu-mode +1))
|
||||||
|
|
||||||
|
(setq default-frame-alist '((fullscreen . maximized)
|
||||||
|
(vertical-scroll-bars . nil)
|
||||||
|
(horizontal-scroll-bars . nil)
|
||||||
|
;; Set dark colors in early-init to prevent flashes of white.
|
||||||
|
(background-color . "#000000")))
|
||||||
@@ -1,5 +1,7 @@
|
|||||||
|
(use-package diminish)
|
||||||
|
|
||||||
;; Eglot recommends pulling the latest of the standard libraries it
|
;; Eglot recommends pulling the latest of the standard libraries it
|
||||||
;; uses from ELPA if you're not tracking the current emacs development
|
;; uses from ELPA if you're not tracking the current.config/emacsevelopment
|
||||||
;; branch.
|
;; branch.
|
||||||
(use-package xref
|
(use-package xref
|
||||||
:pin gnu
|
:pin gnu
|
||||||
@@ -27,24 +29,23 @@
|
|||||||
:config
|
:config
|
||||||
(dashboard-setup-startup-hook))
|
(dashboard-setup-startup-hook))
|
||||||
|
|
||||||
(use-package ediff
|
|
||||||
:config
|
|
||||||
(setq ediff-window-setup-function 'ediff-setup-windows-plain)
|
|
||||||
(setq-default ediff-highlight-all-diffs 'nil)
|
|
||||||
(setq ediff-diff-options "-w"))
|
|
||||||
|
|
||||||
(when (version<= "26.0.50" emacs-version )
|
(when (version<= "26.0.50" emacs-version )
|
||||||
(add-hook 'prog-mode-hook 'display-line-numbers-mode)
|
(add-hook 'prog-mode-hook 'display-line-numbers-mode)
|
||||||
(add-hook 'prog-mode-hook 'column-number-mode)
|
(add-hook 'prog-mode-hook 'column-number-mode)
|
||||||
)
|
)
|
||||||
|
|
||||||
(use-package page-break-lines)
|
;; Display a horizontal line instead of ^L for page break characters
|
||||||
|
(use-package page-break-lines
|
||||||
|
:diminish
|
||||||
|
:config
|
||||||
|
(global-page-break-lines-mode +1)
|
||||||
|
)
|
||||||
|
|
||||||
(use-package recentf
|
(use-package recentf
|
||||||
;; This is an emacs built-in but we're pulling the latest version
|
;; This is an emacs built-in but we're pulling the latest version
|
||||||
:config
|
:config
|
||||||
(setq recentf-max-saved-items 100)
|
(setq recentf-max-saved-items 100)
|
||||||
(setq recentf-save-file (recentf-expand-file-name "~/.emacs.d/private/cache/recentf"))
|
(setq recentf-save-file (recentf-expand-file-name "~/.config/emacs/private/cache/recentf"))
|
||||||
(recentf-mode 1))
|
(recentf-mode 1))
|
||||||
|
|
||||||
;; Persist history over Emacs restarts. Vertico sorts by history position.
|
;; Persist history over Emacs restarts. Vertico sorts by history position.
|
||||||
@@ -55,6 +55,14 @@
|
|||||||
))
|
))
|
||||||
(mapc load-it (directory-files dir nil "\\.el$"))))
|
(mapc load-it (directory-files dir nil "\\.el$"))))
|
||||||
|
|
||||||
|
(defun generate-vc-link ()
|
||||||
|
(interactive)
|
||||||
|
(or
|
||||||
|
(generate-github-link)
|
||||||
|
(generate-source-hut-link)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
(defun generate-github-link ()
|
(defun generate-github-link ()
|
||||||
"Generate a permalink to the current line."
|
"Generate a permalink to the current line."
|
||||||
(interactive)
|
(interactive)
|
||||||
@@ -69,10 +77,37 @@
|
|||||||
(let* (
|
(let* (
|
||||||
(gh-org (match-string 2 repository-url))
|
(gh-org (match-string 2 repository-url))
|
||||||
(gh-repo (match-string 3 repository-url))
|
(gh-repo (match-string 3 repository-url))
|
||||||
(full-url (format "https://github.com/%s/%s/blob/%s/%s#L%s" gh-org gh-repo current-rev relative-path line-number))
|
(full-url (format "https://github.com/%s/%s/blob/%s/%s?plain=1#L%s" gh-org gh-repo current-rev relative-path line-number))
|
||||||
)
|
)
|
||||||
(message "%s" full-url)
|
(message "%s" full-url)
|
||||||
(kill-new full-url)
|
(kill-new full-url)
|
||||||
|
t
|
||||||
|
)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
(defun generate-source-hut-link ()
|
||||||
|
"Generate a permalink to the current line."
|
||||||
|
(interactive)
|
||||||
|
(let (
|
||||||
|
(current-rev (vc-working-revision buffer-file-name))
|
||||||
|
(line-number (line-number-at-pos))
|
||||||
|
(repository-url (vc-git-repository-url buffer-file-name))
|
||||||
|
(relative-path (file-relative-name buffer-file-name (vc-root-dir)))
|
||||||
|
)
|
||||||
|
(message "Using repo url %s" repository-url)
|
||||||
|
(save-match-data
|
||||||
|
(and (string-match "https://git.sr.ht/\\([^/]+\\)/\\([^/]+\\)" repository-url)
|
||||||
|
(let* (
|
||||||
|
(sh-org (match-string 1 repository-url))
|
||||||
|
(sh-repo (match-string 2 repository-url))
|
||||||
|
(full-url (format "https://git.sr.ht/%s/%s/tree/%s/%s#L%s" sh-org sh-repo current-rev relative-path line-number))
|
||||||
|
)
|
||||||
|
(message "%s" full-url)
|
||||||
|
(kill-new full-url)
|
||||||
|
t
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
@@ -7,6 +7,6 @@
|
|||||||
;; dabbrev-expand. Seems to be some sort of dumb-expand. Accidentally hitting it when trying to use M-?
|
;; dabbrev-expand. Seems to be some sort of dumb-expand. Accidentally hitting it when trying to use M-?
|
||||||
(global-unset-key (kbd "M-/"))
|
(global-unset-key (kbd "M-/"))
|
||||||
|
|
||||||
(global-set-key (kbd "C-x g l") 'generate-github-link)
|
(global-set-key (kbd "C-x g l") 'generate-vc-link)
|
||||||
|
|
||||||
(provide 'base-global-keys)
|
(provide 'base-global-keys)
|
||||||
78
ansible/roles/emacs/files/elisp/base.el
Normal file
78
ansible/roles/emacs/files/elisp/base.el
Normal file
@@ -0,0 +1,78 @@
|
|||||||
|
(package-initialize)
|
||||||
|
(use-package use-package)
|
||||||
|
|
||||||
|
(add-to-list 'package-archives
|
||||||
|
'("melpa" . "https://melpa.org/packages/")
|
||||||
|
)
|
||||||
|
|
||||||
|
(use-package auto-package-update
|
||||||
|
:ensure t
|
||||||
|
:config
|
||||||
|
(setq auto-package-update-delete-old-versions t
|
||||||
|
auto-package-update-interval 14)
|
||||||
|
(auto-package-update-maybe))
|
||||||
|
|
||||||
|
(defun assert-directory (p)
|
||||||
|
(unless (file-exists-p p) (make-directory p t))
|
||||||
|
p
|
||||||
|
)
|
||||||
|
|
||||||
|
(defconst private-dir (expand-file-name "private" user-emacs-directory))
|
||||||
|
(defconst temp-dir (format "%s/cache" private-dir)
|
||||||
|
"Hostname-based elisp temp directories")
|
||||||
|
(assert-directory (concat temp-dir "/auto-save-list/"))
|
||||||
|
(setq autoload-directory (concat user-emacs-directory (file-name-as-directory "elisp") (file-name-as-directory "autoload")))
|
||||||
|
(add-to-list 'load-path (assert-directory autoload-directory))
|
||||||
|
|
||||||
|
(setq-default
|
||||||
|
;; Disable backup files and lockfiles
|
||||||
|
make-backup-files nil
|
||||||
|
auto-save-default nil
|
||||||
|
create-lockfiles nil
|
||||||
|
;; Unless otherwise specified, always install packages if they are absent.
|
||||||
|
use-package-always-ensure t
|
||||||
|
;; Point custom-file at /dev/null so emacs does not write any settings to my dotfiles.
|
||||||
|
custom-file "/dev/null"
|
||||||
|
;; Don't pop up a small window at the bottom of emacs at launch.
|
||||||
|
inhibit-startup-screen t
|
||||||
|
inhibit-startup-message t
|
||||||
|
;; Give the scratch buffer a clean slate.
|
||||||
|
initial-major-mode 'fundamental-mode
|
||||||
|
initial-scratch-message nil
|
||||||
|
;; Send prompts to mini-buffer not the GUI
|
||||||
|
use-dialog-box nil
|
||||||
|
;; End files with line break
|
||||||
|
require-final-newline t
|
||||||
|
;; Use spaces, not tabs
|
||||||
|
indent-tabs-mode nil
|
||||||
|
;; Use a better frame title
|
||||||
|
frame-title-format '("" invocation-name ": "(:eval (if (buffer-file-name)
|
||||||
|
(abbreviate-file-name (buffer-file-name))
|
||||||
|
"%b")))
|
||||||
|
;; Use 'y' or 'n' instead of 'yes' or 'no'
|
||||||
|
use-short-answers t
|
||||||
|
;; Natively compile packages
|
||||||
|
package-native-compile t
|
||||||
|
;; Confirm when opening a file that does not exist
|
||||||
|
confirm-nonexistent-file-or-buffer t
|
||||||
|
;; Do not require double space to end a sentence.
|
||||||
|
sentence-end-double-space nil
|
||||||
|
;; Show trailing whitespace
|
||||||
|
show-trailing-whitespace t
|
||||||
|
;; Remove the line when killing it with ctrl-k
|
||||||
|
kill-whole-line t
|
||||||
|
)
|
||||||
|
|
||||||
|
;; (setq-default fringes-outside-margins t)
|
||||||
|
|
||||||
|
;; Per-pixel scrolling instead of per-line
|
||||||
|
(pixel-scroll-precision-mode)
|
||||||
|
|
||||||
|
;; Typed text replaces selection
|
||||||
|
(delete-selection-mode)
|
||||||
|
|
||||||
|
|
||||||
|
;; Delete trailing whitespace before save
|
||||||
|
(add-hook 'before-save-hook 'delete-trailing-whitespace)
|
||||||
|
|
||||||
|
(provide 'base)
|
||||||
46
ansible/roles/emacs/files/elisp/common-lsp.el
Normal file
46
ansible/roles/emacs/files/elisp/common-lsp.el
Normal file
@@ -0,0 +1,46 @@
|
|||||||
|
(use-package eglot
|
||||||
|
:pin gnu
|
||||||
|
:commands (eglot eglot-ensure)
|
||||||
|
:bind (:map eglot-mode-map
|
||||||
|
;; M-.
|
||||||
|
;; ([remap xref-find-definitions] . lsp-ui-peek-find-definitions)
|
||||||
|
;; M-?
|
||||||
|
;; ([remap xref-find-references] . lsp-ui-peek-find-references)
|
||||||
|
("C-c C-a" . eglot-code-actions)
|
||||||
|
;; C-M-.
|
||||||
|
([remap xref-find-apropos] . #'consult-eglot-symbols)
|
||||||
|
)
|
||||||
|
;; :hook (
|
||||||
|
;; (eglot-managed-mode . (lambda ()
|
||||||
|
;; (when (eglot-managed-p)
|
||||||
|
;; (corfu-mode +1)
|
||||||
|
;; )
|
||||||
|
;; ))
|
||||||
|
;; )
|
||||||
|
:config
|
||||||
|
(fset #'jsonrpc--log-event #'ignore) ;; Disable logging LSP traffic for performance boost
|
||||||
|
(set-face-attribute 'eglot-highlight-symbol-face nil :background "#0291a1" :foreground "black")
|
||||||
|
(set-face-attribute 'eglot-mode-line nil :inherit 'mode-line :bold nil)
|
||||||
|
|
||||||
|
|
||||||
|
:custom
|
||||||
|
(eglot-autoshutdown t "Shut down server when last buffer is killed.")
|
||||||
|
(eglot-sync-connect 0 "Don't block on language server starting.")
|
||||||
|
(eglot-send-changes-idle-time 0.1)
|
||||||
|
)
|
||||||
|
|
||||||
|
(use-package consult-eglot
|
||||||
|
:commands (consult-eglot-symbols)
|
||||||
|
)
|
||||||
|
|
||||||
|
(use-package company
|
||||||
|
:after eglot
|
||||||
|
:hook (eglot-managed-mode . company-mode)
|
||||||
|
:config
|
||||||
|
(setq company-backends '((company-capf)))
|
||||||
|
)
|
||||||
|
|
||||||
|
;; (use-package company-box
|
||||||
|
;; :hook (company-mode . company-box-mode))
|
||||||
|
|
||||||
|
(provide 'common-lsp)
|
||||||
@@ -2,7 +2,11 @@
|
|||||||
|
|
||||||
(use-package bash-ts-mode
|
(use-package bash-ts-mode
|
||||||
:ensure nil
|
:ensure nil
|
||||||
:commands bash-ts-mode
|
:commands (bash-ts-mode)
|
||||||
|
:hook (
|
||||||
|
(bash-ts-mode . (lambda ()
|
||||||
|
(flymake-mode +1)
|
||||||
|
)))
|
||||||
:init
|
:init
|
||||||
(add-to-list 'major-mode-remap-alist '(sh-mode . bash-ts-mode))
|
(add-to-list 'major-mode-remap-alist '(sh-mode . bash-ts-mode))
|
||||||
(add-to-list 'treesit-language-source-alist '(bash "https://github.com/tree-sitter/tree-sitter-bash"))
|
(add-to-list 'treesit-language-source-alist '(bash "https://github.com/tree-sitter/tree-sitter-bash"))
|
||||||
@@ -5,19 +5,25 @@
|
|||||||
:pin manual
|
:pin manual
|
||||||
:mode (
|
:mode (
|
||||||
("\\.go\\'" . go-ts-mode)
|
("\\.go\\'" . go-ts-mode)
|
||||||
("/go\\.mod\\'" . go-ts-mode)
|
("/go\\.mod\\'" . go-mod-ts-mode)
|
||||||
)
|
)
|
||||||
:commands (go-mode go-ts-mode)
|
:commands (go-ts-mode go-mod-ts-mode)
|
||||||
:hook (
|
:hook (
|
||||||
(go-ts-mode . (lambda ()
|
(go-ts-mode . (lambda ()
|
||||||
(when-linux
|
(when-linux
|
||||||
(eglot-ensure)
|
(eglot-ensure)
|
||||||
)
|
)
|
||||||
))
|
))
|
||||||
|
|
||||||
|
(go-mod-ts-mode . (lambda ()
|
||||||
|
(when-linux
|
||||||
|
(eglot-ensure)
|
||||||
|
)
|
||||||
|
))
|
||||||
|
|
||||||
;; (before-save . lsp-format-buffer)
|
;; (before-save . lsp-format-buffer)
|
||||||
)
|
)
|
||||||
:init
|
:init
|
||||||
(add-to-list 'major-mode-remap-alist '(go-mode . go-ts-mode))
|
|
||||||
(add-to-list 'treesit-language-source-alist '(go "https://github.com/tree-sitter/tree-sitter-go"))
|
(add-to-list 'treesit-language-source-alist '(go "https://github.com/tree-sitter/tree-sitter-go"))
|
||||||
(add-to-list 'treesit-language-source-alist '(gomod "https://github.com/camdencheek/tree-sitter-go-mod"))
|
(add-to-list 'treesit-language-source-alist '(gomod "https://github.com/camdencheek/tree-sitter-go-mod"))
|
||||||
(unless (treesit-ready-p 'go) (treesit-install-language-grammar 'go))
|
(unless (treesit-ready-p 'go) (treesit-install-language-grammar 'go))
|
||||||
@@ -94,20 +94,20 @@
|
|||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
;; (use-package web-mode
|
(use-package web-mode
|
||||||
;; :mode (("\\.dust\\'" . web-mode)
|
:mode (("\\.dust\\'" . dust-mode)
|
||||||
;; )
|
)
|
||||||
;; :config
|
:config
|
||||||
;; (setq web-mode-markup-indent-offset 2)
|
(setq web-mode-markup-indent-offset 2)
|
||||||
;; (setq web-mode-enable-current-element-highlight t)
|
(setq web-mode-enable-current-element-highlight t)
|
||||||
;; )
|
)
|
||||||
|
|
||||||
;; ;; Define a custom mode for dust so that org-mode handle #+BEGIN_SRC dust blocks
|
;; Define a custom mode for dust so that org-mode handle #+BEGIN_SRC dust blocks
|
||||||
;; (define-derived-mode dust-mode web-mode "WebDust"
|
(define-derived-mode dust-mode web-mode "WebDust"
|
||||||
;; "Major mode for editing dust templates in web-mode."
|
"Major mode for editing dust templates in web-mode."
|
||||||
;; (web-mode)
|
(web-mode)
|
||||||
;; (web-mode-set-engine "dust")
|
(web-mode-set-engine "dust")
|
||||||
;; ;; (setq web-mode-content-type "html")
|
;; (setq web-mode-content-type "html")
|
||||||
;; )
|
)
|
||||||
|
|
||||||
(provide 'lang-javascript)
|
(provide 'lang-javascript)
|
||||||
@@ -7,6 +7,8 @@
|
|||||||
:init (setq markdown-command "multimarkdown"))
|
:init (setq markdown-command "multimarkdown"))
|
||||||
|
|
||||||
;; For code block editing
|
;; For code block editing
|
||||||
(use-package edit-indirect)
|
(use-package edit-indirect
|
||||||
|
:commands (edit-indirect-region edit-indirect-save edit-indirect-abort edit-indirect-commit edit-indirect-display-active-buffer)
|
||||||
|
)
|
||||||
|
|
||||||
(provide 'lang-markdown)
|
(provide 'lang-markdown)
|
||||||
@@ -20,6 +20,9 @@
|
|||||||
org-confirm-babel-evaluate nil
|
org-confirm-babel-evaluate nil
|
||||||
)
|
)
|
||||||
|
|
||||||
|
;; Show the full source of org-mode links instead of condensing them. I.E. render "[[foo]]" instead of "foo"
|
||||||
|
(setq org-descriptive-links nil)
|
||||||
|
|
||||||
;; Only interpret _ and ^ and sub and superscripts if they're of the form _{subscript} and ^{superscript}
|
;; Only interpret _ and ^ and sub and superscripts if they're of the form _{subscript} and ^{superscript}
|
||||||
(setq org-export-with-sub-superscripts '{})
|
(setq org-export-with-sub-superscripts '{})
|
||||||
;; Don't include a "validate" link at the bottom of html export
|
;; Don't include a "validate" link at the bottom of html export
|
||||||
@@ -67,7 +70,6 @@
|
|||||||
(use-package org-bullets
|
(use-package org-bullets
|
||||||
:commands org-bullets-mode
|
:commands org-bullets-mode
|
||||||
:hook (org-mode . org-bullets-mode)
|
:hook (org-mode . org-bullets-mode)
|
||||||
:bind ((:map org-mode-map ([remap fill-paragraph] . unfill-toggle)))
|
|
||||||
)
|
)
|
||||||
|
|
||||||
(use-package gnuplot-mode)
|
(use-package gnuplot-mode)
|
||||||
92
ansible/roles/emacs/files/elisp/lang-rust.el
Normal file
92
ansible/roles/emacs/files/elisp/lang-rust.el
Normal file
@@ -0,0 +1,92 @@
|
|||||||
|
(require 'common-lsp)
|
||||||
|
(require 'util-tree-sitter)
|
||||||
|
|
||||||
|
(defun locate-rust-analyzer ()
|
||||||
|
"Find rust-analyzer."
|
||||||
|
(let ((rust-analyzer-paths (list (locate-rust-analyzer-rustup) (locate-rust-analyzer-ansible-built) (locate-rust-analyzer-in-path))))
|
||||||
|
(let ((first-non-nil-path (seq-find (lambda (elt) elt) rust-analyzer-paths)))
|
||||||
|
first-non-nil-path
|
||||||
|
)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
(defun locate-rust-analyzer-rustup ()
|
||||||
|
"Find rust-analyzer through rustup."
|
||||||
|
(run-command-in-directory nil "rustup" "which" "rust-analyzer")
|
||||||
|
)
|
||||||
|
|
||||||
|
(defun locate-rust-analyzer-ansible-built ()
|
||||||
|
"Find rust-analyzer where the ansible playbook built it."
|
||||||
|
(let ((rust-analyzer-path "/opt/rust-analyzer/target/release/rust-analyzer"))
|
||||||
|
(when (file-exists-p rust-analyzer-path)
|
||||||
|
rust-analyzer-path
|
||||||
|
)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
(defun locate-rust-analyzer-in-path ()
|
||||||
|
"Find rust-analyzer in $PATH."
|
||||||
|
(executable-find "rust-analyzer")
|
||||||
|
)
|
||||||
|
|
||||||
|
(use-package rust-ts-mode
|
||||||
|
:pin manual
|
||||||
|
:mode (
|
||||||
|
("\\.rs\\'" . rust-ts-mode)
|
||||||
|
)
|
||||||
|
:commands (rust-ts-mode)
|
||||||
|
:hook (
|
||||||
|
(rust-ts-mode . (lambda ()
|
||||||
|
(eglot-ensure)
|
||||||
|
;; Disable on-type formatting which was incorrectly injecting parenthesis into my code.
|
||||||
|
(make-local-variable 'eglot-ignored-server-capabilities)
|
||||||
|
(add-to-list 'eglot-ignored-server-capabilities :documentOnTypeFormattingProvider)
|
||||||
|
;; Configure initialization options
|
||||||
|
(let ((rust-analyzer-command (locate-rust-analyzer)))
|
||||||
|
(when rust-analyzer-command
|
||||||
|
;; (add-to-list 'eglot-server-programs `(rust-ts-mode . (,rust-analyzer-command)))
|
||||||
|
(add-to-list 'eglot-server-programs `(rust-ts-mode . (,rust-analyzer-command :initializationOptions (:imports (:granularity (:enforce t :group "item")
|
||||||
|
:merge (:glob nil)
|
||||||
|
:prefix "self")
|
||||||
|
))))
|
||||||
|
)
|
||||||
|
)
|
||||||
|
(add-hook 'before-save-hook 'eglot-format-buffer nil 'local)
|
||||||
|
))
|
||||||
|
)
|
||||||
|
:init
|
||||||
|
(add-to-list 'major-mode-remap-alist '(rust-mode . rust-ts-mode))
|
||||||
|
(add-to-list 'treesit-language-source-alist '(rust "https://github.com/tree-sitter/tree-sitter-rust"))
|
||||||
|
(unless (treesit-ready-p 'yaml) (treesit-install-language-grammar 'rust))
|
||||||
|
:config
|
||||||
|
;; Add keybindings for interacting with Cargo
|
||||||
|
(use-package cargo
|
||||||
|
:hook (rust-ts-mode . cargo-minor-mode))
|
||||||
|
)
|
||||||
|
|
||||||
|
(use-package toml-ts-mode
|
||||||
|
:ensure nil
|
||||||
|
:pin manual
|
||||||
|
:mode (
|
||||||
|
("\\.toml\\'" . toml-ts-mode)
|
||||||
|
)
|
||||||
|
:commands (toml-ts-mode)
|
||||||
|
:init
|
||||||
|
(add-to-list 'treesit-language-source-alist '(toml "https://github.com/tree-sitter/tree-sitter-toml"))
|
||||||
|
(unless (treesit-ready-p 'toml) (treesit-install-language-grammar 'toml))
|
||||||
|
)
|
||||||
|
|
||||||
|
;; Set additional rust-analyzer settings:
|
||||||
|
;;
|
||||||
|
;; (add-to-list 'eglot-server-programs `(rust-ts-mode . (,rust-analyzer-command :initializationOptions (:cargo (:features "all")))))
|
||||||
|
;;
|
||||||
|
;; In addition to the above, directory-specific settings can be written to a .dir-locals.el with the contents:
|
||||||
|
;;
|
||||||
|
;; (
|
||||||
|
;; (rust-ts-mode . ((eglot-workspace-configuration
|
||||||
|
;; . (:rust-analyzer (:cargo (:noDefaultFeatures t :features ["compare" "tracing"]))))
|
||||||
|
;; ))
|
||||||
|
;; )
|
||||||
|
|
||||||
|
|
||||||
|
(provide 'lang-rust)
|
||||||
@@ -12,6 +12,7 @@
|
|||||||
("environments/[^/]*/group_vars/[^/]*\\'" . yaml-ts-mode)
|
("environments/[^/]*/group_vars/[^/]*\\'" . yaml-ts-mode)
|
||||||
("environments/[^/]*/host_vars/[^/]*\\'" . yaml-ts-mode)
|
("environments/[^/]*/host_vars/[^/]*\\'" . yaml-ts-mode)
|
||||||
)
|
)
|
||||||
|
:commands (yaml-ts-mode)
|
||||||
:hook (
|
:hook (
|
||||||
(yaml-ts-mode . (lambda ()
|
(yaml-ts-mode . (lambda ()
|
||||||
(add-hook 'before-save-hook 'yaml-format-buffer nil 'local)
|
(add-hook 'before-save-hook 'yaml-format-buffer nil 'local)
|
||||||
10
ansible/roles/emacs/files/elisp/util-flymake.el
Normal file
10
ansible/roles/emacs/files/elisp/util-flymake.el
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
(use-package flymake
|
||||||
|
:pin manual
|
||||||
|
:ensure nil
|
||||||
|
:commands (flymake-mode)
|
||||||
|
:config
|
||||||
|
;; Set the text before the brackets for flymake's modeline output to an empty string to make it less verbose.
|
||||||
|
(setq flymake-mode-line-lighter "")
|
||||||
|
)
|
||||||
|
|
||||||
|
(provide 'util-flymake)
|
||||||
@@ -46,11 +46,11 @@
|
|||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
|
||||||
(use-package corfu
|
;; (use-package corfu
|
||||||
:commands (corfu-mode global-corfu-mode)
|
;; :commands (corfu-mode global-corfu-mode)
|
||||||
:custom
|
;; :custom
|
||||||
(corfu-auto t)
|
;; (corfu-auto t)
|
||||||
)
|
;; )
|
||||||
|
|
||||||
(use-package marginalia
|
(use-package marginalia
|
||||||
:config (marginalia-mode))
|
:config (marginalia-mode))
|
||||||
@@ -8,6 +8,8 @@
|
|||||||
|
|
||||||
(require 'util-vertico)
|
(require 'util-vertico)
|
||||||
|
|
||||||
|
(require 'util-flymake)
|
||||||
|
|
||||||
(require 'lang-python)
|
(require 'lang-python)
|
||||||
|
|
||||||
(require 'lang-javascript)
|
(require 'lang-javascript)
|
||||||
|
|||||||
@@ -1,66 +0,0 @@
|
|||||||
(require 'common-lsp)
|
|
||||||
(require 'util-tree-sitter)
|
|
||||||
|
|
||||||
(defun locate-rust-analyzer ()
|
|
||||||
"Find rust-analyzer."
|
|
||||||
(let ((rust-analyzer-paths (list (locate-rust-analyzer-rustup) (locate-rust-analyzer-ansible-built))))
|
|
||||||
(let ((first-non-nil-path (seq-find (lambda (elt) elt) rust-analyzer-paths)))
|
|
||||||
first-non-nil-path
|
|
||||||
)
|
|
||||||
)
|
|
||||||
)
|
|
||||||
|
|
||||||
(defun locate-rust-analyzer-rustup ()
|
|
||||||
"Find rust-analyzer through rustup."
|
|
||||||
(run-command-in-directory nil "rustup" "which" "rust-analyzer")
|
|
||||||
)
|
|
||||||
|
|
||||||
(defun locate-rust-analyzer-ansible-built ()
|
|
||||||
"Find rust-analyzer where the ansible playbook built it."
|
|
||||||
(let ((rust-analyzer-path "/opt/rust-analyzer/target/release/rust-analyzer"))
|
|
||||||
(when (file-exists-p rust-analyzer-path)
|
|
||||||
rust-analyzer-path
|
|
||||||
)
|
|
||||||
)
|
|
||||||
)
|
|
||||||
|
|
||||||
(use-package rust-ts-mode
|
|
||||||
:pin manual
|
|
||||||
:mode (
|
|
||||||
("\\.rs\\'" . rust-ts-mode)
|
|
||||||
)
|
|
||||||
:hook (
|
|
||||||
(rust-ts-mode . (lambda ()
|
|
||||||
(eglot-ensure)
|
|
||||||
(let ((rust-analyzer-command (locate-rust-analyzer)))
|
|
||||||
(when rust-analyzer-command
|
|
||||||
(add-to-list 'eglot-server-programs (cons 'rust-ts-mode (list rust-analyzer-command)))
|
|
||||||
)
|
|
||||||
)
|
|
||||||
(add-hook 'before-save-hook 'eglot-format-buffer nil 'local)
|
|
||||||
))
|
|
||||||
)
|
|
||||||
:init
|
|
||||||
(add-to-list 'major-mode-remap-alist '(rust-mode . rust-ts-mode))
|
|
||||||
(add-to-list 'treesit-language-source-alist '(rust "https://github.com/tree-sitter/tree-sitter-rust"))
|
|
||||||
(unless (treesit-ready-p 'yaml) (treesit-install-language-grammar 'rust))
|
|
||||||
:config
|
|
||||||
;; Add keybindings for interacting with Cargo
|
|
||||||
(use-package cargo
|
|
||||||
:hook (rust-ts-mode . cargo-minor-mode))
|
|
||||||
)
|
|
||||||
|
|
||||||
(use-package toml-ts-mode
|
|
||||||
:ensure nil
|
|
||||||
:pin manual
|
|
||||||
:mode (
|
|
||||||
("\\.toml\\'" . toml-ts-mode)
|
|
||||||
)
|
|
||||||
:commands (toml-ts-mode)
|
|
||||||
:init
|
|
||||||
(add-to-list 'treesit-language-source-alist '(toml "https://github.com/tree-sitter/tree-sitter-toml"))
|
|
||||||
(unless (treesit-ready-p 'toml) (treesit-install-language-grammar 'toml))
|
|
||||||
)
|
|
||||||
|
|
||||||
|
|
||||||
(provide 'lang-rust)
|
|
||||||
@@ -20,7 +20,10 @@ INIT_SCRIPT=$(cat <<EOF
|
|||||||
(when (fboundp 'tool-bar-mode)
|
(when (fboundp 'tool-bar-mode)
|
||||||
(tool-bar-mode -1))
|
(tool-bar-mode -1))
|
||||||
(when ( fboundp 'scroll-bar-mode)
|
(when ( fboundp 'scroll-bar-mode)
|
||||||
(scroll-bar-mode -1)))
|
(scroll-bar-mode -1))
|
||||||
|
(pixel-scroll-precision-mode)
|
||||||
|
(setq frame-resize-pixelwise t)
|
||||||
|
)
|
||||||
EOF
|
EOF
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|||||||
@@ -16,4 +16,7 @@
|
|||||||
(when (fboundp 'tool-bar-mode)
|
(when (fboundp 'tool-bar-mode)
|
||||||
(tool-bar-mode -1))
|
(tool-bar-mode -1))
|
||||||
(when ( fboundp 'scroll-bar-mode)
|
(when ( fboundp 'scroll-bar-mode)
|
||||||
(scroll-bar-mode -1)))
|
(scroll-bar-mode -1))
|
||||||
|
(pixel-scroll-precision-mode)
|
||||||
|
(setq frame-resize-pixelwise t)
|
||||||
|
)
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
package:
|
package:
|
||||||
name:
|
name:
|
||||||
- aspell-en
|
- aspell-en
|
||||||
- emacs
|
- emacs-wayland
|
||||||
state: present
|
state: present
|
||||||
|
|
||||||
- name: Install packages
|
- name: Install packages
|
||||||
@@ -13,6 +13,7 @@
|
|||||||
- pyright
|
- pyright
|
||||||
- gopls
|
- gopls
|
||||||
- typescript-language-server
|
- typescript-language-server
|
||||||
|
- shellcheck
|
||||||
state: present
|
state: present
|
||||||
|
|
||||||
- name: Create directories
|
- name: Create directories
|
||||||
|
|||||||
@@ -9,7 +9,7 @@
|
|||||||
owner: "{{ account_name.stdout }}"
|
owner: "{{ account_name.stdout }}"
|
||||||
group: "{{ group_name.stdout }}"
|
group: "{{ group_name.stdout }}"
|
||||||
loop:
|
loop:
|
||||||
- ".emacs.d/elisp"
|
- ".config/emacs/elisp"
|
||||||
|
|
||||||
- name: Configure dotfiles
|
- name: Configure dotfiles
|
||||||
when: 'emacs_flavor == "full"'
|
when: 'emacs_flavor == "full"'
|
||||||
@@ -21,7 +21,9 @@
|
|||||||
group: "{{ group_name.stdout }}"
|
group: "{{ group_name.stdout }}"
|
||||||
loop:
|
loop:
|
||||||
- src: init.el
|
- src: init.el
|
||||||
dest: .emacs.d/init.el
|
dest: .config/emacs/init.el
|
||||||
|
- src: early-init.el
|
||||||
|
dest: .config/emacs/early-init.el
|
||||||
|
|
||||||
- name: Configure dotfiles
|
- name: Configure dotfiles
|
||||||
when: 'emacs_flavor == "plain"'
|
when: 'emacs_flavor == "plain"'
|
||||||
@@ -33,36 +35,18 @@
|
|||||||
group: "{{ group_name.stdout }}"
|
group: "{{ group_name.stdout }}"
|
||||||
loop:
|
loop:
|
||||||
- src: plainmacs_init.el
|
- src: plainmacs_init.el
|
||||||
dest: .emacs.d/init.el
|
dest: .config/emacs/init.el
|
||||||
|
|
||||||
- name: Configure elisp files
|
- name: Configure elisp files
|
||||||
when: 'emacs_flavor == "full"'
|
when: 'emacs_flavor == "full"'
|
||||||
copy:
|
copy:
|
||||||
src: "files/{{ item }}"
|
src: "files/{{ item.src }}"
|
||||||
dest: "{{ account_homedir.stdout }}/.emacs.d/elisp/{{ item }}"
|
dest: "{{ account_homedir.stdout }}/{{ item.dest }}"
|
||||||
mode: 0600
|
|
||||||
owner: "{{ account_name.stdout }}"
|
owner: "{{ account_name.stdout }}"
|
||||||
group: "{{ group_name.stdout }}"
|
group: "{{ group_name.stdout }}"
|
||||||
loop:
|
loop:
|
||||||
- base-extensions.el
|
- src: elisp
|
||||||
- base-functions.el
|
dest: .config/emacs/
|
||||||
- base-global-keys.el
|
|
||||||
- base-theme.el
|
|
||||||
- base.el
|
|
||||||
- common-lsp.el
|
|
||||||
- lang-bash.el
|
|
||||||
- lang-dockerfile.el
|
|
||||||
- lang-go.el
|
|
||||||
- lang-javascript.el
|
|
||||||
- lang-lua.el
|
|
||||||
- lang-markdown.el
|
|
||||||
- lang-org.el
|
|
||||||
- lang-python.el
|
|
||||||
- lang-rust.el
|
|
||||||
- lang-terraform.el
|
|
||||||
- lang-yaml.el
|
|
||||||
- util-vertico.el
|
|
||||||
- util-tree-sitter.el
|
|
||||||
|
|
||||||
- name: Configure zshrc additional imports
|
- name: Configure zshrc additional imports
|
||||||
copy:
|
copy:
|
||||||
|
|||||||
15
ansible/roles/framework_laptop/tasks/common.yaml
Normal file
15
ansible/roles/framework_laptop/tasks/common.yaml
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
- 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/framework_laptop/tasks/freebsd.yaml
Normal file
5
ansible/roles/framework_laptop/tasks/freebsd.yaml
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
# - name: Install packages
|
||||||
|
# package:
|
||||||
|
# name:
|
||||||
|
# - foo
|
||||||
|
# state: present
|
||||||
9
ansible/roles/framework_laptop/tasks/linux.yaml
Normal file
9
ansible/roles/framework_laptop/tasks/linux.yaml
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
# This will prevent pools from being imported, but since my laptop has a single pool with a single disk which is mounted during boot, disabling this service saves me 10 seconds at boot. Reference: https://github.com/openzfs/zfs/issues/10891
|
||||||
|
- name: Disable services
|
||||||
|
systemd:
|
||||||
|
enabled: no
|
||||||
|
masked: true
|
||||||
|
name: "{{ item }}"
|
||||||
|
daemon_reload: yes
|
||||||
|
loop:
|
||||||
|
- systemd-udev-settle.service
|
||||||
2
ansible/roles/framework_laptop/tasks/main.yaml
Normal file
2
ansible/roles/framework_laptop/tasks/main.yaml
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
- import_tasks: tasks/common.yaml
|
||||||
|
# when: foo is defined
|
||||||
130
ansible/roles/freebsd_update_server/files/build_release.bash
Normal file
130
ansible/roles/freebsd_update_server/files/build_release.bash
Normal file
@@ -0,0 +1,130 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
#
|
||||||
|
set -euo pipefail
|
||||||
|
IFS=$'\n\t'
|
||||||
|
DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
|
||||||
|
|
||||||
|
: ${DATA_DIRECTORY:="/usr/local/share/freebsdupdate"}
|
||||||
|
: ${STAGE_FILE:="${DATA_DIRECTORY}/stage"}
|
||||||
|
: ${RELEASE_DIRECTORY:="${DATA_DIRECTORY}/release"}
|
||||||
|
: ${LOG_DIRECTORY:="${DATA_DIRECTORY}/logs"}
|
||||||
|
: ${PORTS_TREE:="/usr/ports"}
|
||||||
|
: ${PORTS_REPO:="https://git.FreeBSD.org/ports.git"}
|
||||||
|
|
||||||
|
############## Setup #########################
|
||||||
|
|
||||||
|
function die {
|
||||||
|
local status_code="$1"
|
||||||
|
shift
|
||||||
|
(>&2 echo "${@}")
|
||||||
|
exit "$status_code"
|
||||||
|
}
|
||||||
|
|
||||||
|
function log {
|
||||||
|
(>&2 echo "${@}")
|
||||||
|
}
|
||||||
|
|
||||||
|
############## Program #########################
|
||||||
|
|
||||||
|
function main {
|
||||||
|
assert_directories
|
||||||
|
|
||||||
|
local stage=""
|
||||||
|
if [ -e "$STAGE_FILE" ]; then
|
||||||
|
local stage=$(cat "$STAGE_FILE")
|
||||||
|
fi
|
||||||
|
if [ "$stage" = "selfbuild" ]; then
|
||||||
|
log_cmd stage_selfbuild
|
||||||
|
elif [ "$stage" = "selfinstallworld" ]; then
|
||||||
|
log_cmd stage_selfinstallworld
|
||||||
|
elif [ "$stage" = "selfconflictcheck" ]; then
|
||||||
|
log_cmd stage_selfconflictcheck
|
||||||
|
elif [ "$stage" = "releasebuild" ]; then
|
||||||
|
log_cmd stage_releasebuild
|
||||||
|
elif [ "$stage" = "done" ]; then
|
||||||
|
log_cmd stage_done
|
||||||
|
else
|
||||||
|
die 1 "Unhandled stage: \"$stage\"."
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
function log_cmd {
|
||||||
|
"${@}" |& tee "$LOG_DIRECTORY/$(date +%Y%m%d-%s).log"
|
||||||
|
}
|
||||||
|
|
||||||
|
function self_conflict_check {
|
||||||
|
if etcupdate status | grep -qE '^ C '; then
|
||||||
|
die 1 'Conflicts remain in etcupdate. Run `etcupdate resolve` to fix them first.'
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
function assert_directories {
|
||||||
|
for d in "$DATA_DIRECTORY" "$RELEASE_DIRECTORY" "$LOG_DIRECTORY"; do
|
||||||
|
if [ ! -e "$d" ]; then
|
||||||
|
mkdir -p "$d"
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
}
|
||||||
|
|
||||||
|
function update_ports_tree {
|
||||||
|
if [ ! -e "$PORTS_TREE" ]; then
|
||||||
|
mkdir -p $PORTS_TREE
|
||||||
|
git -C $PORTS_TREE init --initial-branch=main
|
||||||
|
git -C $PORTS_TREE remote add origin $PORTS_REPO
|
||||||
|
fi
|
||||||
|
git -C $PORTS_TREE fetch origin main # 'refs/heads/main'
|
||||||
|
git -C $PORTS_TREE checkout FETCH_HEAD
|
||||||
|
}
|
||||||
|
|
||||||
|
function set_stage {
|
||||||
|
echo "${@}" > "$STAGE_FILE"
|
||||||
|
}
|
||||||
|
|
||||||
|
function stage_selfbuild {
|
||||||
|
self_conflict_check
|
||||||
|
assert_directories
|
||||||
|
update_ports_tree
|
||||||
|
|
||||||
|
SRCCONF=/dev/null __MAKE_CONF=/dev/null make -C /usr/src clean
|
||||||
|
SRCCONF=/dev/null __MAKE_CONF=/dev/null make -C /usr/src buildworld buildkernel
|
||||||
|
SRCCONF=/dev/null __MAKE_CONF=/dev/null make -C /usr/src installkernel
|
||||||
|
|
||||||
|
set_stage "selfinstallworld"
|
||||||
|
/sbin/shutdown -r now
|
||||||
|
}
|
||||||
|
|
||||||
|
function stage_selfinstallworld {
|
||||||
|
etcupdate -p
|
||||||
|
SRCCONF=/dev/null __MAKE_CONF=/dev/null make -C /usr/src installworld
|
||||||
|
etcupdate -B
|
||||||
|
|
||||||
|
set_stage "selfconflictcheck"
|
||||||
|
stage_selfconflictcheck
|
||||||
|
}
|
||||||
|
|
||||||
|
function stage_selfconflictcheck {
|
||||||
|
self_conflict_check
|
||||||
|
set_stage "releasebuild"
|
||||||
|
/sbin/shutdown -r now
|
||||||
|
}
|
||||||
|
|
||||||
|
function stage_releasebuild {
|
||||||
|
local today=$(date +%Y%m%d)
|
||||||
|
local target_directory="${RELEASE_DIRECTORY}/${today}"
|
||||||
|
if [ -e "$target_directory" ]; then
|
||||||
|
die 1 "The release directory $target_directory already exists. Exiting."
|
||||||
|
fi
|
||||||
|
SRCCONF=/dev/null __MAKE_CONF=/dev/null make -C /usr/src clean
|
||||||
|
make -C /usr/src buildworld buildkernel
|
||||||
|
make -C /usr/src/release obj
|
||||||
|
make -C /usr/src/release release
|
||||||
|
mkdir -p "$target_directory"
|
||||||
|
make -C /usr/src/release install DESTDIR="$target_directory"
|
||||||
|
set_stage "done"
|
||||||
|
}
|
||||||
|
|
||||||
|
function stage_done {
|
||||||
|
log "Everything is done."
|
||||||
|
}
|
||||||
|
|
||||||
|
main "${@}"
|
||||||
120
ansible/roles/freebsd_update_server/files/release.conf
Normal file
120
ansible/roles/freebsd_update_server/files/release.conf
Normal file
@@ -0,0 +1,120 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
#
|
||||||
|
|
||||||
|
## Redefine environment variables here to override prototypes
|
||||||
|
## defined in release.sh.
|
||||||
|
#load_chroot_env() { }
|
||||||
|
#load_target_env() { }
|
||||||
|
#buildenv_setup() { }
|
||||||
|
|
||||||
|
## Set the directory within which the release will be built.
|
||||||
|
CHROOTDIR="/scratch"
|
||||||
|
|
||||||
|
## Do not explicitly require the devel/git port to be installed.
|
||||||
|
#NOGIT=1
|
||||||
|
## Set the version control system host.
|
||||||
|
GITROOT="https://git.freebsd.org/"
|
||||||
|
GITSRC="src.git"
|
||||||
|
GITPORTS="ports.git"
|
||||||
|
|
||||||
|
## Set the src/, ports/, and doc/ branches or tags.
|
||||||
|
#SRCBRANCH="stable/13"
|
||||||
|
SRCBRANCH="main"
|
||||||
|
PORTBRANCH="main"
|
||||||
|
|
||||||
|
## Sample configuration for using git from ports.
|
||||||
|
#GITCMD="/usr/local/bin/git clone -q --branch main"
|
||||||
|
|
||||||
|
## Set to override the default target architecture.
|
||||||
|
#TARGET="amd64"
|
||||||
|
#TARGET_ARCH="amd64"
|
||||||
|
#KERNEL="GENERIC"
|
||||||
|
KERNEL="GENERIC-NODEBUG"
|
||||||
|
## Multiple kernels may be set.
|
||||||
|
#KERNEL="GENERIC XENHVM"
|
||||||
|
|
||||||
|
## Set to specify a custom make.conf and/or src.conf
|
||||||
|
#MAKE_CONF="/etc/local/make.conf"
|
||||||
|
MAKE_CONF="/etc/make.conf"
|
||||||
|
#SRC_CONF="/etc/local/src.conf"
|
||||||
|
SRC_CONF="/etc/src.conf"
|
||||||
|
|
||||||
|
## Set to use make(1) flags.
|
||||||
|
#MAKE_FLAGS="-s"
|
||||||
|
|
||||||
|
## Set to use world- and kernel-specific make(1) flags.
|
||||||
|
#WORLD_FLAGS="-j $(sysctl -n hw.ncpu)"
|
||||||
|
#KERNEL_FLAGS="-j $(( $(( $(sysctl -n hw.ncpu) + 1 )) / 2 ))"
|
||||||
|
|
||||||
|
## Set miscellaneous 'make release' settings.
|
||||||
|
#NOPORTS=
|
||||||
|
#NOSRC=
|
||||||
|
#WITH_DVD=
|
||||||
|
#WITH_COMPRESSED_IMAGES=
|
||||||
|
|
||||||
|
## Set to '1' to disable multi-threaded xz(1) compression.
|
||||||
|
#XZ_THREADS=0
|
||||||
|
|
||||||
|
## Set when building embedded images.
|
||||||
|
#EMBEDDEDBUILD=
|
||||||
|
|
||||||
|
## Set to a list of ports required to build embedded system-on-chip
|
||||||
|
## images, such as sysutils/u-boot-rpi.
|
||||||
|
#EMBEDDEDPORTS=
|
||||||
|
|
||||||
|
## Set to the hardware platform of the target userland. This value
|
||||||
|
## is passed to make(1) to set the TARGET (value of uname -m) to cross
|
||||||
|
## build.
|
||||||
|
#EMBEDDED_TARGET=
|
||||||
|
|
||||||
|
## Set to the machine processor architecture of the target userland.
|
||||||
|
## This value is passed to make(1) to set the TARGET_ARCH (value of uname -p)
|
||||||
|
## to cross build.
|
||||||
|
#EMBEDDED_TARGET_ARCH=
|
||||||
|
|
||||||
|
## Set to skip the chroot environment buildworld/installworld/distribution
|
||||||
|
## step if it is expected the build environment will exist via alternate
|
||||||
|
## means.
|
||||||
|
#CHROOTBUILD_SKIP=
|
||||||
|
|
||||||
|
## Set to a non-empty value skip checkout or update of /usr/src in
|
||||||
|
## the chroot. This is intended for use when /usr/src already exists.
|
||||||
|
#SRC_UPDATE_SKIP=
|
||||||
|
|
||||||
|
## Set to a non-empty value skip checkout or update of /usr/ports in
|
||||||
|
## the chroot. This is intended for use when /usr/ports already exists.
|
||||||
|
#PORTS_UPDATE_SKIP=
|
||||||
|
|
||||||
|
## Set to pass additional flags to make(1) for the build chroot setup, such
|
||||||
|
## as TARGET/TARGET_ARCH.
|
||||||
|
#CHROOT_MAKEENV=
|
||||||
|
|
||||||
|
## Set to a non-empty value to build virtual machine images as part of the
|
||||||
|
## release build.
|
||||||
|
#WITH_VMIMAGES=
|
||||||
|
|
||||||
|
## Set to a non-empty value to compress virtual machine images with xz(1)
|
||||||
|
## as part of the release build.
|
||||||
|
#WITH_COMPRESSED_VMIMAGES=
|
||||||
|
|
||||||
|
## If WITH_VMIMAGES is set to a non-empty value, this is the name of the
|
||||||
|
## file to use for the installed userland/kernel.
|
||||||
|
#VMBASE="vm"
|
||||||
|
|
||||||
|
## If WITH_VMIMAGES is set to a non-empty value, this is the size of the
|
||||||
|
## virtual machine disk filesystem. Valid size values are described in
|
||||||
|
## the makefs(8) manual page.
|
||||||
|
#VMSIZE="20g"
|
||||||
|
|
||||||
|
## If WITH_VMIMAGES is set to a non-empty value, this is a list of disk
|
||||||
|
## image formats to create. Valid values are listed in the mkimg(1)
|
||||||
|
## manual page, as well as 'mkimg --formats' output.
|
||||||
|
#VMFORMATS="vhdf vmdk qcow2 raw"
|
||||||
|
|
||||||
|
## Set to a non-empty value to build virtual machine images for various
|
||||||
|
## cloud providers as part of the release build.
|
||||||
|
#WITH_CLOUDWARE=
|
||||||
|
|
||||||
|
## If WITH_CLOUDWARE is set to a non-empty value, this is a list of providers
|
||||||
|
## to create disk images.
|
||||||
|
#CLOUDWARE="EC2 GCE VAGRANT-VIRTUALBOX VAGRANT-VMWARE"
|
||||||
5
ansible/roles/freebsd_update_server/tasks/common.yaml
Normal file
5
ansible/roles/freebsd_update_server/tasks/common.yaml
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
- import_tasks: tasks/freebsd.yaml
|
||||||
|
when: 'os_flavor == "freebsd" and build_user is defined'
|
||||||
|
|
||||||
|
- import_tasks: tasks/linux.yaml
|
||||||
|
when: 'os_flavor == "linux"'
|
||||||
50
ansible/roles/freebsd_update_server/tasks/freebsd.yaml
Normal file
50
ansible/roles/freebsd_update_server/tasks/freebsd.yaml
Normal file
@@ -0,0 +1,50 @@
|
|||||||
|
- name: Install packages
|
||||||
|
package:
|
||||||
|
name:
|
||||||
|
- git
|
||||||
|
- tmux # For convenience
|
||||||
|
- htop # For convenience
|
||||||
|
- bash
|
||||||
|
state: present
|
||||||
|
|
||||||
|
- name: Create directories
|
||||||
|
file:
|
||||||
|
name: "{{ item }}"
|
||||||
|
state: directory
|
||||||
|
mode: 0755
|
||||||
|
owner: "{{ build_user.name }}"
|
||||||
|
group: "{{ build_user.group }}"
|
||||||
|
loop:
|
||||||
|
- /opt/freebsd_update_server
|
||||||
|
|
||||||
|
- name: Clone freebsd-update-build
|
||||||
|
git:
|
||||||
|
repo: "https://github.com/freebsd/freebsd-update-build.git"
|
||||||
|
dest: /opt/freebsd_update_server/freebsd-update-build
|
||||||
|
version: "28bb3ae7de9c1332fe8a366fb154a5b9faf37f49"
|
||||||
|
force: true
|
||||||
|
become: true
|
||||||
|
become_user: "{{ build_user.name }}"
|
||||||
|
diff: false
|
||||||
|
|
||||||
|
- name: Install Configuration
|
||||||
|
copy:
|
||||||
|
src: "files/{{ item.src }}"
|
||||||
|
dest: "{{ item.dest }}"
|
||||||
|
mode: 0600
|
||||||
|
owner: "{{ build_user.name }}"
|
||||||
|
group: "{{ build_user.group }}"
|
||||||
|
loop:
|
||||||
|
- src: release.conf
|
||||||
|
dest: /opt/freebsd_update_server/release.conf
|
||||||
|
|
||||||
|
- name: Install scripts
|
||||||
|
copy:
|
||||||
|
src: "files/{{ item.src }}"
|
||||||
|
dest: "{{ item.dest }}"
|
||||||
|
mode: 0755
|
||||||
|
owner: root
|
||||||
|
group: wheel
|
||||||
|
loop:
|
||||||
|
- src: build_release.bash
|
||||||
|
dest: /usr/local/bin/build_release
|
||||||
29
ansible/roles/freebsd_update_server/tasks/linux.yaml
Normal file
29
ansible/roles/freebsd_update_server/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/freebsd_update_server/tasks/main.yaml
Normal file
2
ansible/roles/freebsd_update_server/tasks/main.yaml
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
- import_tasks: tasks/common.yaml
|
||||||
|
# when: foo is defined
|
||||||
@@ -3,13 +3,3 @@
|
|||||||
|
|
||||||
- import_tasks: tasks/linux.yaml
|
- import_tasks: tasks/linux.yaml
|
||||||
when: 'os_flavor == "linux"'
|
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,7 +5,7 @@
|
|||||||
args:
|
args:
|
||||||
creates: "/var/cache/pacman/custom/{{ item }}-*.pkg.tar.*"
|
creates: "/var/cache/pacman/custom/{{ item }}-*.pkg.tar.*"
|
||||||
loop:
|
loop:
|
||||||
- google-cloud-sdk
|
- google-cloud-cli
|
||||||
|
|
||||||
- name: Update cache
|
- name: Update cache
|
||||||
when: buildaur.changed
|
when: buildaur.changed
|
||||||
@@ -17,5 +17,5 @@
|
|||||||
- name: Install packages
|
- name: Install packages
|
||||||
package:
|
package:
|
||||||
name:
|
name:
|
||||||
- google-cloud-sdk
|
- google-cloud-cli
|
||||||
state: present
|
state: present
|
||||||
|
|||||||
@@ -1,34 +1,27 @@
|
|||||||
-----BEGIN PGP PUBLIC KEY BLOCK-----
|
-----BEGIN PGP PUBLIC KEY BLOCK-----
|
||||||
|
|
||||||
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
|
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-----
|
||||||
|
|||||||
@@ -4,8 +4,6 @@ use-standard-socket
|
|||||||
default-cache-ttl 600
|
default-cache-ttl 600
|
||||||
max-cache-ttl 7200
|
max-cache-ttl 7200
|
||||||
display :0
|
display :0
|
||||||
{% if install_graphics and os_flavor == "linux" %}
|
{% if install_graphics and os_flavor == "freebsd" %}
|
||||||
pinentry-program /usr/bin/pinentry-qt
|
|
||||||
{% elif install_graphics and os_flavor == "freebsd" %}
|
|
||||||
pinentry-program /usr/local/bin/pinentry-qt5
|
pinentry-program /usr/local/bin/pinentry-qt5
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|||||||
@@ -0,0 +1,2 @@
|
|||||||
|
#enable_guc=2
|
||||||
|
#hw.i915kms.enable_guc=2
|
||||||
@@ -29,6 +29,7 @@
|
|||||||
group: wheel
|
group: wheel
|
||||||
loop:
|
loop:
|
||||||
- intel_power
|
- intel_power
|
||||||
|
- intel_hw_accel_video
|
||||||
|
|
||||||
- name: Install service configuration
|
- name: Install service configuration
|
||||||
copy:
|
copy:
|
||||||
|
|||||||
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
|
||||||
@@ -78,6 +78,11 @@
|
|||||||
// brianai
|
// brianai
|
||||||
"hw-address": "06:a6:dc:59:78:12",
|
"hw-address": "06:a6:dc:59:78:12",
|
||||||
"ip-address": "10.215.1.215"
|
"ip-address": "10.215.1.215"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
// freebsdupdate
|
||||||
|
"hw-address": "06:14:5c:92:3d:5b",
|
||||||
|
"ip-address": "10.215.1.213"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,3 +1,19 @@
|
|||||||
|
- 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:
|
||||||
|
- nvm
|
||||||
|
|
||||||
|
- name: Update cache
|
||||||
|
when: buildaur.changed
|
||||||
|
pacman:
|
||||||
|
name: []
|
||||||
|
state: present
|
||||||
|
update_cache: true
|
||||||
|
|
||||||
- name: Install packages
|
- name: Install packages
|
||||||
package:
|
package:
|
||||||
name:
|
name:
|
||||||
|
|||||||
15
ansible/roles/launch_keyboard/tasks/common.yaml
Normal file
15
ansible/roles/launch_keyboard/tasks/common.yaml
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
- 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/launch_keyboard/tasks/freebsd.yaml
Normal file
5
ansible/roles/launch_keyboard/tasks/freebsd.yaml
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
# - name: Install packages
|
||||||
|
# package:
|
||||||
|
# name:
|
||||||
|
# - foo
|
||||||
|
# state: present
|
||||||
24
ansible/roles/launch_keyboard/tasks/linux.yaml
Normal file
24
ansible/roles/launch_keyboard/tasks/linux.yaml
Normal file
@@ -0,0 +1,24 @@
|
|||||||
|
- 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:
|
||||||
|
- system76-keyboard-configurator
|
||||||
|
|
||||||
|
- name: Update cache
|
||||||
|
when: buildaur.changed
|
||||||
|
pacman:
|
||||||
|
name: []
|
||||||
|
state: present
|
||||||
|
update_cache: true
|
||||||
|
|
||||||
|
- name: Install packages
|
||||||
|
package:
|
||||||
|
name:
|
||||||
|
- dfu-programmer # For flashing keyboard https://support.system76.com/articles/launch_2-firmware-update/
|
||||||
|
- avrdude # For flashing keyboard https://support.system76.com/articles/launch_2-firmware-update/
|
||||||
|
- lxqt-policykit # Need a polkit agent to launch the keyboard configurator
|
||||||
|
- system76-keyboard-configurator
|
||||||
|
state: present
|
||||||
2
ansible/roles/launch_keyboard/tasks/main.yaml
Normal file
2
ansible/roles/launch_keyboard/tasks/main.yaml
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
- import_tasks: tasks/common.yaml
|
||||||
|
when: install_graphics
|
||||||
29
ansible/roles/launch_keyboard/tasks/peruser.yaml
Normal file
29
ansible/roles/launch_keyboard/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"'
|
||||||
5
ansible/roles/lvfs/tasks/common.yaml
Normal file
5
ansible/roles/lvfs/tasks/common.yaml
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
- import_tasks: tasks/freebsd.yaml
|
||||||
|
when: 'os_flavor == "freebsd"'
|
||||||
|
|
||||||
|
- import_tasks: tasks/linux.yaml
|
||||||
|
when: 'os_flavor == "linux"'
|
||||||
5
ansible/roles/lvfs/tasks/freebsd.yaml
Normal file
5
ansible/roles/lvfs/tasks/freebsd.yaml
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
# - name: Install packages
|
||||||
|
# package:
|
||||||
|
# name:
|
||||||
|
# - foo
|
||||||
|
# state: present
|
||||||
20
ansible/roles/lvfs/tasks/linux.yaml
Normal file
20
ansible/roles/lvfs/tasks/linux.yaml
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
- name: Install packages
|
||||||
|
package:
|
||||||
|
name:
|
||||||
|
- fwupd
|
||||||
|
state: present
|
||||||
|
|
||||||
|
- name: Install packages
|
||||||
|
when: install_graphics
|
||||||
|
package:
|
||||||
|
name:
|
||||||
|
- gnome-firmware
|
||||||
|
state: present
|
||||||
|
|
||||||
|
- name: Enable services
|
||||||
|
systemd:
|
||||||
|
enabled: yes
|
||||||
|
name: "{{ item }}"
|
||||||
|
daemon_reload: yes
|
||||||
|
loop:
|
||||||
|
- fwupd.service
|
||||||
2
ansible/roles/lvfs/tasks/main.yaml
Normal file
2
ansible/roles/lvfs/tasks/main.yaml
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
- import_tasks: tasks/common.yaml
|
||||||
|
# when: foo is defined
|
||||||
@@ -1,5 +1,5 @@
|
|||||||
- name: Install packages
|
- name: Install packages
|
||||||
package:
|
package:
|
||||||
name:
|
name:
|
||||||
- youtube-dl
|
- yt-dlp
|
||||||
state: present
|
state: present
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user