Compare commits
81 Commits
c9617dd3cc
...
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 |
@@ -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"'
|
||||||
|
|
||||||
|
|||||||
@@ -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:
|
||||||
|
|||||||
@@ -1 +1,2 @@
|
|||||||
freebsd_version: "releng/13.2"
|
# freebsd_version: "releng/13.2"
|
||||||
|
freebsd_version: "9c80d66ec1b4c5b9ac7aaf5b0fdbb1628d49c181"
|
||||||
|
|||||||
@@ -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-----
|
||||||
|
|||||||
@@ -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
|
|
||||||
|
|||||||
@@ -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:
|
||||||
|
|||||||
@@ -5,12 +5,12 @@ KERNCONF=CUSTOM
|
|||||||
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-510-kmod
|
PORTS_MODULES+=graphics/drm-kmod
|
||||||
NO_SHARED=YES
|
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_SHARED_TOOLCHAIN=YES
|
|
||||||
# WITHOUT_GAMES=YES
|
# WITHOUT_GAMES=YES
|
||||||
# WITHOUT_KERBEROS=YES
|
# WITHOUT_KERBEROS=YES
|
||||||
# WITHOUT_LEGACY_CONSOLE=YES
|
# WITHOUT_LEGACY_CONSOLE=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
|
||||||
|
|||||||
@@ -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.
|
||||||
@@ -53,7 +53,15 @@
|
|||||||
(let ((load-it (lambda (f)
|
(let ((load-it (lambda (f)
|
||||||
(load-file (concat (file-name-as-directory dir) f)))
|
(load-file (concat (file-name-as-directory dir) f)))
|
||||||
))
|
))
|
||||||
(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."
|
||||||
@@ -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)
|
|
||||||
@@ -3,24 +3,27 @@
|
|||||||
|
|
||||||
INIT_SCRIPT=$(cat <<EOF
|
INIT_SCRIPT=$(cat <<EOF
|
||||||
(progn
|
(progn
|
||||||
(setq make-backup-files nil auto-save-default nil create-lockfiles nil)
|
(setq make-backup-files nil auto-save-default nil create-lockfiles nil)
|
||||||
(load-theme 'tango-dark t)
|
(load-theme 'tango-dark t)
|
||||||
(set-face-attribute 'default nil :background "black")
|
(set-face-attribute 'default nil :background "black")
|
||||||
;; Bright yellow highlighting for selected region
|
;; Bright yellow highlighting for selected region
|
||||||
(set-face-attribute 'region nil :background "#ffff50" :foreground "black")
|
(set-face-attribute 'region nil :background "#ffff50" :foreground "black")
|
||||||
;; Bright green cursor to distinguish from yellow region
|
;; Bright green cursor to distinguish from yellow region
|
||||||
(set-cursor-color "#ccff66")
|
(set-cursor-color "#ccff66")
|
||||||
;; Hightlight the current line
|
;; Hightlight the current line
|
||||||
(set-face-attribute 'line-number-current-line nil :foreground "white")
|
(set-face-attribute 'line-number-current-line nil :foreground "white")
|
||||||
;; Set default font
|
;; Set default font
|
||||||
(set-face-attribute 'default nil :height 100 :width 'regular :weight 'regular :family "Cascadia Mono")
|
(set-face-attribute 'default nil :height 100 :width 'regular :weight 'regular :family "Cascadia Mono")
|
||||||
;; Set fallback font for unicode glyphs
|
;; Set fallback font for unicode glyphs
|
||||||
(set-fontset-font "fontset-default" nil (font-spec :name "Noto Color Emoji"))
|
(set-fontset-font "fontset-default" nil (font-spec :name "Noto Color Emoji"))
|
||||||
(menu-bar-mode -1)
|
(menu-bar-mode -1)
|
||||||
(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
|
||||||
@@ -13,9 +13,9 @@
|
|||||||
name: []
|
name: []
|
||||||
state: present
|
state: present
|
||||||
update_cache: true
|
update_cache: true
|
||||||
|
|
||||||
- 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
|
||||||
|
|||||||
@@ -1,3 +1,4 @@
|
|||||||
wlans_ath0="wlan0"
|
#wlans_ath0="wlan0"
|
||||||
|
wlans_iwm0="wlan0"
|
||||||
ifconfig_wlan0="WPA DHCP"
|
ifconfig_wlan0="WPA DHCP"
|
||||||
ifconfig_wlan0_ipv6="inet6 accept_rtadv"
|
ifconfig_wlan0_ipv6="inet6 accept_rtadv"
|
||||||
|
|||||||
4
ansible/roles/pixelbook/files/61-eve-keyboard.hwdb
Normal file
4
ansible/roles/pixelbook/files/61-eve-keyboard.hwdb
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
evdev:atkbd:dmi:bvn*:bvr*:bd*:svnGoogle:pnEve:pvr*
|
||||||
|
KEYBOARD_KEY_5d=delete
|
||||||
|
KEYBOARD_KEY_d8=leftmeta
|
||||||
|
KEYBOARD_KEY_db=capslock
|
||||||
BIN
ansible/roles/pixelbook/files/9d71-GOOGLE-EVEMAX-0-tplg.bin
Normal file
BIN
ansible/roles/pixelbook/files/9d71-GOOGLE-EVEMAX-0-tplg.bin
Normal file
Binary file not shown.
129
ansible/roles/pixelbook/files/HiFi.conf
Normal file
129
ansible/roles/pixelbook/files/HiFi.conf
Normal file
@@ -0,0 +1,129 @@
|
|||||||
|
SectionVerb {
|
||||||
|
EnableSequence [
|
||||||
|
cdev "hw:kblr55145663max"
|
||||||
|
|
||||||
|
cset "name='codec1_out mo hs_pb_in mi Switch' on"
|
||||||
|
cset "name='Left DAI Sel Mux' Left"
|
||||||
|
cset "name='Right DAI Sel Mux' Right"
|
||||||
|
cset "name='Left Speaker Volume' 3"
|
||||||
|
cset "name='Right Speaker Volume' 3"
|
||||||
|
cset "name='Left Digital Volume' 60"
|
||||||
|
cset "name='Right Digital Volume' 60"
|
||||||
|
cset "name='Left Spk Switch' on"
|
||||||
|
cset "name='Right Spk Switch' on"
|
||||||
|
cset "name='Left Boost Output Voltage' 0"
|
||||||
|
cset "name='Right Boost Output Voltage' 0"
|
||||||
|
cset "name='Left Current Limit' 7"
|
||||||
|
cset "name='Right Current Limit' 7"
|
||||||
|
cset "name='Headphone Playback Volume' 16"
|
||||||
|
cset "name='Headset Mic Switch' off"
|
||||||
|
cset "name='DMIC Switch' on"
|
||||||
|
cset "name='STO1 ADC MIXL ADC1 Switch' on"
|
||||||
|
cset "name='Pin5-Port0 Mux' 2"
|
||||||
|
cset "name='Pin5-Port1 Mux' 2"
|
||||||
|
cset "name='Pin5-Port2 Mux' 2"
|
||||||
|
cset "name='Pin6-Port0 Mux' 1"
|
||||||
|
cset "name='Pin6-Port1 Mux' 1"
|
||||||
|
cset "name='Pin6-Port2 Mux' 1"
|
||||||
|
cset "name='Pin7-Port0 Mux' 3"
|
||||||
|
cset "name='Pin7-Port1 Mux' 3"
|
||||||
|
cset "name='Pin7-Port2 Mux' 3"
|
||||||
|
cset "name='ADC Capture Volume' 35"
|
||||||
|
cset "name='ADC1 Capture Volume' 55"
|
||||||
|
cset "name='ADC2 Capture Volume' 55"
|
||||||
|
cset "name='DAC L Mux' STO DAC MIXL"
|
||||||
|
cset "name='DAC R Mux' STO DAC MIXR"
|
||||||
|
cset "name='STO1 DAC MIXL DAC L Switch' on"
|
||||||
|
cset "name='STO1 DAC MIXR DAC R Switch' on"
|
||||||
|
cset-tlv "name='spk_pb_in dsm 0 dsm_params params' /opt/google/dsm/dsmparam.bin"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
|
||||||
|
SectionDevice."Speaker" {
|
||||||
|
Comment "Speaker"
|
||||||
|
|
||||||
|
Value {
|
||||||
|
PlaybackPCM "hw:kblr55145663max,0"
|
||||||
|
DspName "speaker_eq"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
SectionDevice."Headphones" {
|
||||||
|
Comment "Headphones"
|
||||||
|
|
||||||
|
Value {
|
||||||
|
PlaybackPCM "hw:kblr55145663max,2"
|
||||||
|
MixerName "DAC"
|
||||||
|
JackDev "kbl-r5514-5663-max Headset Jack"
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
EnableSequence [
|
||||||
|
cset "name='Headphone Jack Switch' on"
|
||||||
|
]
|
||||||
|
|
||||||
|
DisableSequence [
|
||||||
|
cset "name='Headphone Jack Switch' off"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
|
||||||
|
SectionDevice."Internal Mic" {
|
||||||
|
Comment "Internal Microphone"
|
||||||
|
|
||||||
|
Value {
|
||||||
|
CapturePCM "hw:kblr55145663max,4"
|
||||||
|
CaptureChannelMap "2 3 0 1 -1 -1 -1 -1 -1 -1 -1"
|
||||||
|
MixerName "ADC2"
|
||||||
|
DefaultNodeGain "2700"
|
||||||
|
CaptureChannels "4"
|
||||||
|
}
|
||||||
|
|
||||||
|
EnableSequence [
|
||||||
|
cset "name='Sto1 ADC MIXL DMIC Switch' on"
|
||||||
|
cset "name='Sto1 ADC MIXR DMIC Switch' on"
|
||||||
|
cset "name='Sto2 ADC MIXL DMIC Switch' on"
|
||||||
|
cset "name='Sto2 ADC MIXR DMIC Switch' on"
|
||||||
|
]
|
||||||
|
|
||||||
|
DisableSequence [
|
||||||
|
cset "name='Sto1 ADC MIXL DMIC Switch' off"
|
||||||
|
cset "name='Sto1 ADC MIXR DMIC Switch' off"
|
||||||
|
cset "name='Sto2 ADC MIXL DMIC Switch' off"
|
||||||
|
cset "name='Sto2 ADC MIXR DMIC Switch' off"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
|
||||||
|
SectionDevice."Mic" {
|
||||||
|
Comment "Headset Microphone"
|
||||||
|
|
||||||
|
Value {
|
||||||
|
CapturePCM "hw:kblr55145663max,1"
|
||||||
|
JackDev "kbl-r5514-5663-max Headset Jack"
|
||||||
|
}
|
||||||
|
|
||||||
|
EnableSequence [
|
||||||
|
cset "name='Headset Mic Switch' on"
|
||||||
|
]
|
||||||
|
|
||||||
|
DisableSequence [
|
||||||
|
cset "name='Headset Mic Switch' off"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
|
||||||
|
SectionDevice."HDMI1" {
|
||||||
|
Comment "HDMI 1"
|
||||||
|
|
||||||
|
Value {
|
||||||
|
PlaybackPCM "hw:kblr55145663max,6"
|
||||||
|
JackDev "kbl-r5514-5663-max HDMI/DP,pcm=6 Jack"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
SectionDevice."HDMI2" {
|
||||||
|
Comment "HDMI 2"
|
||||||
|
|
||||||
|
Value {
|
||||||
|
PlaybackPCM "hw:kblr55145663max,7"
|
||||||
|
JackDev "kbl-r5514-5663-max HDMI/DP,pcm=7 Jack"
|
||||||
|
}
|
||||||
|
}
|
||||||
BIN
ansible/roles/pixelbook/files/dsmparam.bin
Normal file
BIN
ansible/roles/pixelbook/files/dsmparam.bin
Normal file
Binary file not shown.
Binary file not shown.
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user