186 Commits

Author SHA1 Message Date
Tom Alexander
06de3fb0ac Disable CPU power consumption settings.
The pixelbook seems oddly slow. Disabling this to see if it helps.
2023-11-26 09:31:47 -05:00
Tom Alexander
eaa05e13d0 Enable the wireguard configs. 2023-11-26 09:31:47 -05:00
Tom Alexander
98f6ca10ff Add wireguard configs for pixelbook. 2023-11-26 09:31:47 -05:00
Tom Alexander
675652044f Add support for audio. 2023-11-26 09:31:46 -05:00
Tom Alexander
c901defbf3 Add the pixelbook. 2023-11-26 09:31:46 -05:00
Tom Alexander
8bf7b7d489 Trust additional zfs signing key. 2023-11-26 09:31:46 -05:00
Tom Alexander
6e772f1137 Add pipewire jack replacement. 2023-11-26 09:31:46 -05:00
Tom Alexander
d7f99659f1 Add devfs rules for homeserver. 2023-11-24 10:25:16 -05:00
Tom Alexander
023e362896 Add a script to decrypt and mount disks on the home server. 2023-11-18 14:55:19 -05:00
Tom Alexander
c66327a31f Updates for FreeBSD 14. 2023-11-18 11:02:46 -05:00
Tom Alexander
423d057abd Add restaurant_health_rating. 2023-11-18 11:02:46 -05:00
Tom Alexander
6061f61c16 Remove extra subkey from linux build key. 2023-11-16 12:35:15 -05:00
Tom Alexander
f6bc39a7fb TEMP changes for running on NUC. 2023-11-14 15:05:16 -05:00
Tom Alexander
68e84fdd77 Add node version manager (nvm) and minor fixes. 2023-11-14 15:05:16 -05:00
Tom Alexander
48bdb12e77 Change package name for google cloud sdk on linux. 2023-10-26 21:14:41 -04:00
Tom Alexander
ec72d20455 Fix building ZFS on linux. 2023-10-26 21:14:41 -04:00
Tom Alexander
7f47b1ca1b Enable web-mode for dust files. 2023-10-24 00:59:47 -04:00
Tom Alexander
5fcb37591c Add guard rails to the cpu_set_perf_perc script for FreeBSD. 2023-10-23 20:10:58 -04:00
Tom Alexander
3f0b8162b8 Add cargo-semver-checks to linux. 2023-10-18 12:53:33 -04:00
Tom Alexander
b90ec542de Switch to overlay2 for docker.
The latest OpenZFS supports overlay2 on top of ZFS which works much better than the zfs storage driver for docker.
2023-10-18 09:43:58 -04:00
Tom Alexander
16b7a200de Merge branch 'custom_freebsd' 2023-10-18 09:18:54 -04:00
Tom Alexander
e3e7de8eb1 The SHARED_TOOLCHAIN option was removed in FreeBSD 14. 2023-10-16 19:52:37 -04:00
Tom Alexander
51e5917e43 Remove MODULES_WITH_WORLD. 2023-10-16 19:52:37 -04:00
Tom Alexander
2d260dec90 Update the FreeBSD version. 2023-10-16 19:52:37 -04:00
Tom Alexander
72a8d6f615 Build the ports modules with world instead of just with the kernel.
I'm hoping this fixes an issue where the chroot for building the ports only contains the kernel files and therefore lacks /bin/sh.
2023-10-16 19:52:37 -04:00
Tom Alexander
34ffd5c100 Build FreeBSD for tigerlake on freebsdupdate.
I think I need to move to specifying separate src.conf files for each build but I am going to get this working in a simple setup first.
2023-10-16 19:52:37 -04:00
Tom Alexander
da36f1b3d8 Update build_release script to update the virtual machine OS. 2023-10-16 19:52:37 -04:00
Tom Alexander
1c922c2234 Set up a separate FreeBSD update VM.
It seems to compile the ports kernel modules into the OS, I need to be running the same kernel version as I am building, so I am putting it into its own VM.
2023-10-16 19:52:36 -04:00
Tom Alexander
d56132618a Enable guc for hw accelerated encoding for wl-screenrec. 2023-10-16 19:52:36 -04:00
Tom Alexander
575d4360f1 Build current instead of 13.2. 2023-10-16 19:52:36 -04:00
Tom Alexander
e7328f2865 Use /etc/make.conf and /etc/src.conf. 2023-10-16 19:52:36 -04:00
Tom Alexander
6be5ad6b3d Add a manual implementation of building a release. 2023-10-16 19:52:36 -04:00
Tom Alexander
44d3cc61f5 Add release.conf. 2023-10-16 19:52:36 -04:00
Tom Alexander
d20ce1e4d4 TEMP: Add the freebsd_update_server role to odofreebsd for development. 2023-10-16 19:52:36 -04:00
Tom Alexander
ae43050061 Install clippy on linux. 2023-10-16 19:52:35 -04:00
Tom Alexander
7ecf2ef1b1 Check out the freebsd-update-build git repo. 2023-10-16 19:52:35 -04:00
Tom Alexander
05c3b0c1dc Update rust. 2023-10-16 19:52:35 -04:00
Tom Alexander
fccb2312da Start an ansible role for running a custom freebsd-update server. 2023-10-16 19:52:35 -04:00
Tom Alexander
47c36a82bf Remove the sorting in company.
It wasn't really that much of an improvement.
2023-10-16 19:52:35 -04:00
Tom Alexander
112cba2b8c Add more ports to be built along with the kernel. 2023-10-16 19:52:35 -04:00
Tom Alexander
1a017cfac7 Add more task templates to the blank role. 2023-10-16 19:52:35 -04:00
Tom Alexander
eae6737d76 Slightly better result sorting in company. 2023-10-15 16:01:45 -04:00
Tom Alexander
c652e60619 Move emacs config to .config/emacs. 2023-10-12 15:30:40 -04:00
Tom Alexander
b94e13d63e Add some emacs settings from https://idiomdrottning.org/bad-emacs-defaults . 2023-10-12 15:30:40 -04:00
Tom Alexander
68139849f6 Switch from corfu to company.
It seems corfu is causing problems with eglot: https://github.com/joaotavora/eglot/discussions/1127.
2023-10-12 15:30:40 -04:00
Tom Alexander
8975324e7c Turn off screen when idle. 2023-10-11 23:04:07 -04:00
Tom Alexander
e5fd4bf9e6 Show the full org-mode links. 2023-10-06 20:21:41 -04:00
Tom Alexander
a0666e6904 Update pacman.conf for aurutils. 2023-10-06 20:21:41 -04:00
Tom Alexander
a97378654e Add a CNAME for stream. 2023-10-04 09:24:07 -04:00
Tom Alexander
f28f542d4d Force plain rendering for github links.
When linking to a document that renders like markdown or org-mode, we need the plain parameter to get the link to actually go to a line of code.
2023-10-02 19:48:00 -04:00
Tom Alexander
9d118078ae Add support for generating source hut links. 2023-09-30 01:02:15 -04:00
Tom Alexander
c2a0f90b4f Fix delete-selection-mode setting. 2023-09-27 15:01:52 -04:00
Tom Alexander
6f3c5ca025 Remove explicit pinentry setting. 2023-09-27 13:19:26 -04:00
Tom Alexander
49fa0eb9cc Disable on-type formatting in rust.
This was injecting parenthesis into the wrong location.
2023-09-21 16:57:09 -04:00
Tom Alexander
e4b10e7260 Remove extra subkey from pgp key. 2023-09-21 16:30:34 -04:00
Tom Alexander
a536defe9a Update pgp public key. 2023-09-21 13:28:35 -04:00
Tom Alexander
c7b8b4c510 Use go-mod-ts-mode. 2023-09-14 15:47:30 -04:00
Tom Alexander
34cd3b7aa4 Defer the loading of edit-indirect via :commands. 2023-09-14 15:21:39 -04:00
Tom Alexander
1f18074e29 Remove Flymake substring from emacs mode line. 2023-09-14 15:00:09 -04:00
Tom Alexander
971ed7e75d Add pixel precision to plainmacs. 2023-09-14 14:33:38 -04:00
Tom Alexander
35709eb06a Enable shellcheck in bash-ts-mode. 2023-09-14 14:25:42 -04:00
Tom Alexander
25c2f2753b Disable keybind in org-bullets. 2023-09-14 13:39:46 -04:00
Tom Alexander
fa1ed38678 Disable systemd-udev-settle on Linux on framework laptop. 2023-09-14 13:33:33 -04:00
Tom Alexander
beb8781b5c Only install gnome-firmware on graphical installs. 2023-09-12 15:07:38 -04:00
Tom Alexander
deb977de09 Merge branch 'launch' 2023-09-10 18:43:13 -04:00
Tom Alexander
21c664d2c0 Install a polkit agent in the launch keyboard role. 2023-09-10 18:38:09 -04:00
Tom Alexander
754c84ad89 Add a lvfs role for Linux. 2023-09-10 18:28:32 -04:00
Tom Alexander
a54c966ad0 Install the launch keyboard configurator. 2023-09-10 18:25:36 -04:00
Tom Alexander
babf3bb971 No idea. 2023-09-09 17:10:52 -04:00
Tom Alexander
2fc923837f Install system76 tools. 2023-09-09 17:08:36 -04:00
Tom Alexander
84e370bd94 Do not sleep the launch keyboard on Linux. 2023-09-09 16:49:15 -04:00
Tom Alexander
ef59593ef3 Merge branch 'cleanup_emacs' 2023-09-09 16:48:35 -04:00
Tom Alexander
db30ae976a Remove the old settings. 2023-09-09 04:57:39 -04:00
Tom Alexander
b86d7813a9 Add some default settings for rust-analyzer. 2023-09-09 03:47:56 -04:00
Tom Alexander
db5b400408 Locate rust-analyzer on the /home/talexander/.pyenv/shims:/opt/google-cloud-sdk/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/lib/jvm/default/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl:/usr/lib/rustup/bin. 2023-09-09 02:47:20 -04:00
Tom Alexander
d229447149 Re-enable some settings. 2023-09-09 01:44:01 -04:00
Tom Alexander
8707a7941a Disable most of base.el settings.
I will be re-enabling bits as I find I need them.
2023-09-09 00:33:17 -04:00
Tom Alexander
01c5571da0 Remove duplicate setting. 2023-09-08 16:38:43 -04:00
Tom Alexander
e0b5e893d8 Use page-break-lines mode and remove ediff. 2023-09-08 15:58:55 -04:00
Tom Alexander
993e773414 Disable logging of LSP traffic. 2023-09-08 11:55:56 -04:00
Tom Alexander
ed25cd6d31 Move elisp into a folder and switch to emacs-wayland on linux. 2023-09-08 11:26:46 -04:00
Tom Alexander
c9617dd3cc Update cargo credentials. 2023-09-06 17:06:51 -04:00
Tom Alexander
61bc98578b Install CPU microcode updates on Intel on FreeBSD and switch from wf-recorder to wl-screenrec. 2023-09-05 21:17:09 -04:00
Tom Alexander
7f0af6f41c Add scripts to trigger actions in the poudriere loop. 2023-09-04 11:26:28 -04:00
Tom Alexander
8744f8f547 Only run the cleanup when updating ports. 2023-09-04 11:09:24 -04:00
Tom Alexander
955f3cd329 Update rust version. 2023-09-04 11:06:40 -04:00
Tom Alexander
a6af4eee2f Add some scripts for investigating the ports tree options. 2023-09-01 14:38:17 -04:00
Tom Alexander
5e81006208 Reduce poudriere log retention to 30 days. 2023-09-01 11:25:36 -04:00
Tom Alexander
0f054f819f Merge branch 'poudriere_build_static' 2023-09-01 11:16:59 -04:00
Tom Alexander
383894bd3f Disable static on some problem ports. 2023-09-01 10:40:05 -04:00
Tom Alexander
767b925705 Build static binaries with link-time optimization enabled. 2023-08-29 09:24:21 -04:00
Tom Alexander
87ff51a517 Write down some options I'd like to experiment with in building FreeBSD. 2023-08-29 09:24:21 -04:00
Tom Alexander
1378d56924 Add script to delete a poudriere jail. 2023-08-27 16:29:27 -04:00
Tom Alexander
d0ba7ac54b Merge branch 'emacs29' 2023-08-27 14:04:37 -04:00
Tom Alexander
7b512256ec Enable pgtk and native comp for emacs. 2023-08-25 18:11:02 -04:00
Tom Alexander
51fb2ce364 Spelling mistake. 2023-08-21 00:25:51 -04:00
Tom Alexander
623ae1f55f Use the typescript language server for javascript. 2023-08-21 00:25:51 -04:00
Tom Alexander
82777c2265 Emacs 29 has been released! Remove building from the aur. 2023-08-21 00:25:51 -04:00
Tom Alexander
762831b4ec Add a desktop file for plainmacs on Linux. 2023-08-21 00:25:51 -04:00
Tom Alexander
c1e3b8fc4e Combine plainmacs and emacs roles. 2023-08-21 00:25:50 -04:00
Tom Alexander
cb84d7d810 Launch nginx-mode for headers.include. 2023-08-21 00:25:50 -04:00
Tom Alexander
cfdbb50de0 Add support for lsp for typescript. 2023-08-21 00:25:50 -04:00
Tom Alexander
e3a1e69fb5 Update toml for emacs29. 2023-08-21 00:25:50 -04:00
Tom Alexander
3f1c45ac0a Update js and css for emacs29. 2023-08-21 00:25:50 -04:00
Tom Alexander
8e76c38f23 Update json for emacs29. 2023-08-21 00:25:50 -04:00
Tom Alexander
ac95e4b889 Update typescript and tsx for emacs29. 2023-08-21 00:25:50 -04:00
Tom Alexander
6559f212c0 Delete C/C++ from emacs.
I rarely edit C/C++ so I'll dive into updating this for emacs29 the next time its relevant.
2023-08-21 00:25:50 -04:00
Tom Alexander
4b21ed49f1 Set a default treesit-language-source-alist. 2023-08-21 00:25:49 -04:00
Tom Alexander
e0768d1460 Remove rust-mode. 2023-08-21 00:25:49 -04:00
Tom Alexander
3bd6af7427 Remove dockerfile-mode. 2023-08-21 00:25:49 -04:00
Tom Alexander
45903fda14 Remove yaml-mode. 2023-08-21 00:25:49 -04:00
Tom Alexander
04b70049c4 Remove go-mode. 2023-08-21 00:25:49 -04:00
Tom Alexander
f5e84d6dcc Update go for emacs29. 2023-08-21 00:25:49 -04:00
Tom Alexander
10e63f2a94 No changes to lua for emacs29. 2023-08-21 00:25:49 -04:00
Tom Alexander
87589748c2 No changes to terraform for emacs29. 2023-08-21 00:25:49 -04:00
Tom Alexander
d7326706a3 No changes for markdown for emacs29. 2023-08-21 00:25:48 -04:00
Tom Alexander
063b0a0d92 Update bash for emacs29. 2023-08-21 00:25:48 -04:00
Tom Alexander
cd02a14792 Update python for emacs29. 2023-08-21 00:25:48 -04:00
Tom Alexander
1bed94b1b1 No changes to org-mode setup for emacs 29. 2023-08-21 00:25:48 -04:00
Tom Alexander
cfc1a81a49 Update dockerfile support to use treesitter. 2023-08-21 00:25:48 -04:00
Tom Alexander
57ddfaad6f Only install treesitter languages once. 2023-08-21 00:25:48 -04:00
Tom Alexander
5096449cf5 Install prettier on Linux. 2023-08-21 00:25:48 -04:00
Tom Alexander
64b8a3258b Remove LSP from yaml. 2023-08-21 00:25:48 -04:00
Tom Alexander
c5cc2a36e1 Move the definition of treesitter grammars to the init block. 2023-08-21 00:25:47 -04:00
Tom Alexander
df75bf53e6 Move the treesitter language source list into the use-package block. 2023-08-21 00:25:47 -04:00
Tom Alexander
0eb5a8cc2b Move the major mode remap for treesitter into the use-package block. 2023-08-21 00:25:47 -04:00
Tom Alexander
68bd5818ae Disable all non-rust language configs in emacs.
I will re-enable these one-by-one as I update them for emacs29.
2023-08-21 00:25:47 -04:00
Tom Alexander
7761267bb4 Set the treesitter highlighting detail level to the max. 2023-08-21 00:25:47 -04:00
Tom Alexander
6c1adbef04 Cut down the tree sitter langs to just rust. 2023-08-21 00:25:47 -04:00
Tom Alexander
cb63ab4b1f Use treesitter for rust. 2023-08-21 00:25:47 -04:00
Tom Alexander
ba21ec24b8 Install rust-analyzer on Linux. 2023-08-21 00:25:47 -04:00
Tom Alexander
990add4ddf Snapshot the VMs on homeserver. 2023-08-21 00:25:46 -04:00
Tom Alexander
ec44eb5960 Use built-in use-package and eglot. Disable external tree-sitter. 2023-08-21 00:25:46 -04:00
Tom Alexander
cb383ead75 Switch to emacs 29 on Linux. 2023-08-21 00:25:46 -04:00
Tom Alexander
e478ca56aa Support omitting datasets from automatic snapshotting. 2023-08-20 23:12:20 -04:00
Tom Alexander
221e91a56a Merge branch 'usb_autosuspend' 2023-08-20 22:37:15 -04:00
Tom Alexander
e1e95fa205 Only need the autosuspend rule. 2023-08-20 13:21:54 -04:00
Tom Alexander
be5a5018c0 Working udev rules. 2023-08-20 13:17:19 -04:00
Tom Alexander
fcf32657c3 Disable usb autosuspend for keyboard and mouse.
USB auto suspend seems to only happen when the devices are plugged in at boot (which generally means when my laptop is connected to the dock before boot) but it is very annoying because some keypresses get lost and my mouse does not work unless I click first.
2023-08-16 15:51:48 -04:00
Tom Alexander
3f734cbfcc Add a TODO file. 2023-08-14 16:14:40 -04:00
Tom Alexander
10758b0f2f Switch to using ntpd instead of ntpdate on FreeBSD.
Long-running servers were eventually skewing their time.
2023-08-13 22:11:02 -04:00
Tom Alexander
f7ff982098 Add sleep before reboot 2023-08-13 20:48:37 -04:00
Tom Alexander
c0250ac00d Make running snapshots of the virtual machines. 2023-08-13 18:13:07 -04:00
Tom Alexander
bfee369ad8 Add a sleep to the bhyve management script to hopefully avoid bad states. 2023-08-13 18:01:27 -04:00
Tom Alexander
e7b4bb9a4b Merge branch 'dark_theme' 2023-08-13 16:18:32 -04:00
Tom Alexander
3751629166 Enable dark theme.
This should hopefully carry over into the browser and such so I don't get blinded.
2023-08-13 16:17:53 -04:00
Tom Alexander
6c9e458278 Install pavucontrol on FreeBSD. 2023-08-13 13:57:20 -04:00
Tom Alexander
e84fd15cf2 Add support for controlling turbo boost in the set cpu perf perc script. 2023-08-12 21:35:30 -04:00
Tom Alexander
40437bec04 Disable hard-coded www dns entry. 2023-08-12 20:19:14 -04:00
Tom Alexander
8bad10eace Fix a variable name in the bhyve netgraph script. 2023-08-08 14:46:03 -04:00
Tom Alexander
8a3855fddd Add mole to mrmanager. 2023-08-02 18:15:22 -04:00
Tom Alexander
fb9d5e2043 Add machines to dhcp. 2023-08-02 16:48:09 -04:00
Tom Alexander
ff02354107 Disable wev on FreeBSD.
The wev port has been broken for weeks.
2023-07-30 14:38:08 -04:00
Tom Alexander
8bdae45e6c Enable wayland for firefox in Linux. 2023-07-28 14:45:18 -04:00
Tom Alexander
7960699636 Add a git alias "git amend".
This allows us to generate a new git commit hash without changing the commit contents which is useful for triggering CI workflows.
2023-07-24 16:44:23 -04:00
Tom Alexander
1badd8049e Disabling the vulkan sway renderer on Linux again.
The flickering in alacritty is getting annoying.
2023-07-18 19:33:18 -04:00
Tom Alexander
8424abdfa9 Switch k8s_snapshot to using arrays. 2023-07-18 17:47:42 -04:00
Tom Alexander
b9a199c5f5 Switch to converting to an array directly.
This eliminates the the middle step of converting to a string with a different IFS which should be more efficient.
2023-07-18 17:13:58 -04:00
Tom Alexander
0c23b46426 Add a script for rolling back k8s snapshots. 2023-07-18 17:13:58 -04:00
Tom Alexander
67d8dc3f5c Switch from dbus-launch to dbus-run-session. 2023-07-18 15:40:12 -04:00
Tom Alexander
808b087a82 Install a script to snapshot the k8s bhyve virtual machines and persistent volume space. 2023-07-18 15:31:52 -04:00
Tom Alexander
bdff61d8e9 Change git default branch to main. 2023-07-18 15:04:24 -04:00
Tom Alexander
a025770fe7 Update kshell to manage the pod itself so I can use registry pull secrets to use my harbor pull-through cache. 2023-07-14 15:33:44 -04:00
Tom Alexander
6bde027c48 Add a script to update git aurutil packages. 2023-07-14 14:29:03 -04:00
Tom Alexander
cd6d8f3f69 Switch to using bash traps to destroy bhyve vms. 2023-07-14 14:28:36 -04:00
Tom Alexander
fb759470f5 Make poudboot service file not hang startup by launching with daemon. 2023-07-14 14:28:36 -04:00
Tom Alexander
c61d4bdc75 Update kx and ks aliases to use kubeswitch. 2023-07-14 14:28:36 -04:00
Tom Alexander
41397cb7d5 Update rust. 2023-07-14 14:28:35 -04:00
Tom Alexander
9bbc5591c1 Add /usr/local/bin to PATH for poudboot. 2023-07-11 03:53:06 -04:00
Tom Alexander
63b8827725 Set the default branch in git to the default to suppress the warning. 2023-07-08 22:57:26 -04:00
Tom Alexander
16eb703f68 Cleanup mrmanager firewall config. 2023-07-08 22:57:26 -04:00
Tom Alexander
c34f7c0912 Install the minio plugin for kubectl in Linux. 2023-07-08 22:57:26 -04:00
Tom Alexander
625babddc4 Fix kubernetes persistent volumes with specific file ownership. 2023-07-08 22:57:26 -04:00
Tom Alexander
759fece687 Rename texlive package group. 2023-07-08 22:57:26 -04:00
Tom Alexander
55fec03445 Add a "w" alias for watch. 2023-07-08 22:57:25 -04:00
Tom Alexander
1d97921e7b Add nfs server for k8s persistent volumes. 2023-07-08 22:57:25 -04:00
Tom Alexander
6c7265d1d3 Uncomment playbook. 2023-07-01 16:42:20 -04:00
Tom Alexander
b17a5f352d Sanitize network interface names in jail_netgraph_bridge.bash script. 2023-07-01 16:41:41 -04:00
Tom Alexander
db17b87cb8 Enable NTP on Linux. 2023-07-01 16:41:40 -04:00
Tom Alexander
f667f50f84 Only put VM disk metadata into the ARC.
The guest VMs should have their own filesystem cache so I see no need to pollute the host's cache.
2023-07-01 16:41:40 -04:00
Tom Alexander
8346065c6f Add a NFS server jail for persistent volumes. 2023-07-01 16:41:40 -04:00
Tom Alexander
ab48b1e01f Re-enable the vulkan renderer on linux.
It is no longer crashing on linux.
2023-07-01 16:41:40 -04:00
Tom Alexander
eb547bf1bf Add an endless loop to poudboot to rebuild at intervals. 2023-07-01 16:41:40 -04:00
Tom Alexander
9d16e1d42e Add locking to poudboot. 2023-07-01 16:41:40 -04:00
Tom Alexander
0e86dac2ac Add support for custom repos in FreeBSD. 2023-07-01 16:41:40 -04:00
Tom Alexander
edfdb203a0 Only NAT internal DNS requests. 2023-06-20 13:05:31 -04:00
217 changed files with 3042 additions and 811 deletions

5
TODO.org Normal file
View File

@@ -0,0 +1,5 @@
* to-do
** Switch to overlay driver when zfs 2.2 is released
This might fix some stability issues (like a container getting stuck in a terminating state), may improve performance (since the zfs driver is noticably slower than overlay on ext4 on a zvol), and will avoid a lot of noise in my zfs dataset lists
ref: https://github.com/moby/moby/issues/40132

View File

@@ -1,6 +1,10 @@
os_flavor: "freebsd" os_flavor: "freebsd"
zfs_snapshot_datasets: zfs_snapshot_datasets:
- zroot/freebsd/main/be - path: zroot/freebsd/main/be
- path: zdata/vm
- path: zdata/vm/poudriere/disk0
include: false
- path: zdata/k8spersistent
sshd_enabled: true sshd_enabled: true
loader_conf: "mrmanager_loader.conf" loader_conf: "mrmanager_loader.conf"
rc_conf: "mrmanager_rc.conf" rc_conf: "mrmanager_rc.conf"
@@ -35,3 +39,18 @@ bhyve_dataset: zdata/vm
bhyve_canmount: "on" bhyve_canmount: "on"
# efi_dev: /dev/gpt/EFI # efi_dev: /dev/gpt/EFI
devfs_rules: "mrmanager_devfs.rules" devfs_rules: "mrmanager_devfs.rules"
users:
talexander:
initialize: true
uid: 11235
gid: 11235
groups:
- name: wheel
authorized_keys:
- yubikey
- main_fido
- backup_fido
mole:
initialize: true
authorized_keys:
- mole

View File

@@ -1,6 +1,7 @@
os_flavor: "freebsd" os_flavor: "freebsd"
zfs_snapshot_datasets: zfs_snapshot_datasets:
- zroot/freebsd/computer/be/default - path: zroot/freebsd/computer/be
- path: zmass/encrypted/vm
sshd_enabled: true sshd_enabled: true
sshd_conf: "sshd_config" sshd_conf: "sshd_config"
pf_config: "homeserver_pf.conf" pf_config: "homeserver_pf.conf"
@@ -17,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"

View File

@@ -1,2 +1,3 @@
timezone: "America/New_York" timezone: "America/New_York"
install_bluetooth: true install_bluetooth: true
emacs_flavor: "full"

View File

@@ -1,6 +1,7 @@
os_flavor: "freebsd" os_flavor: "freebsd"
custom_repo: 13amd64-default-framework
zfs_snapshot_datasets: zfs_snapshot_datasets:
- zroot/freebsd/release/be/default - path: zroot/freebsd/release/be/default
sshd_enabled: true sshd_enabled: true
sshd_conf: "sshd_config" sshd_conf: "sshd_config"
pf_config: "odofreebsd_pf.conf" pf_config: "odofreebsd_pf.conf"
@@ -13,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

View File

@@ -18,8 +18,8 @@ users:
gitconfig: "gitconfig_home" gitconfig: "gitconfig_home"
zfs_snapshot_datasets: zfs_snapshot_datasets:
# - zroot/linux/archmain/home # - zroot/linux/archmain/home
- zroot/linux/archmain/be - path: zroot/linux/archmain/be
- zroot/data/bridge/family_disks - path: zroot/data/bridge/family_disks
install_graphics: true install_graphics: true
graphics_driver: "intel" graphics_driver: "intel"
build_user: build_user:
@@ -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

View 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

View File

@@ -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

View File

@@ -0,0 +1,5 @@
os_flavor: "freebsd"
cpu_opt: skylake
build_user:
name: root
group: wheel

View File

@@ -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

View File

@@ -5,50 +5,54 @@
- sudo - sudo
- doas - doas
- users - users
# - package_manager - package_manager
# - zfs - zfs
# - zrepl - zrepl
# - zsh - zsh
# - network - network
# - sshd - sshd
# - base - base
# - firewall - firewall
# - cpu - cpu
# - ntp - ntp
# - nvme - nvme
# - hosts - hosts
# - build - build
# - sound - sound
# - graphics - graphics
# - gpg - power_management
# - fonts - gpg
# - alacritty - fonts
# - sway - alacritty
# - emacs - sway
# - firefox - emacs
# - devfs - firefox
# - ssh_client - devfs
# - sshfs - ssh_client
# - jail - sshfs
# - fuse - jail
# - autofs - fuse
# - exfat - autofs
# - bhyve - exfat
# - bluetooth - bhyve
# - media - bluetooth
# - kubernetes - media
# - google_cloud_sdk - kubernetes
# - ansible - google_cloud_sdk
# - wireguard - ansible
# - portshaker - wireguard
# - poudriere - portshaker
# - android - poudriere
# - latex - android
# - pyenv - latex
# - webcam - pyenv
# - docker - webcam
# - vscode - docker
- 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:
@@ -65,6 +69,7 @@
- portshaker - portshaker
- poudriere - poudriere
- poudrierenginx - poudrierenginx
- freebsd_update_server
- hosts: mrmanager - hosts: mrmanager
vars: vars:
@@ -90,7 +95,7 @@
- jail - jail
- bhyve - bhyve
- wireguard - wireguard
- plainmacs - emacs
- mrmanager - mrmanager
- hosts: admin_git:public_dns - hosts: admin_git:public_dns
@@ -109,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

View File

@@ -1,4 +1,3 @@
# $FreeBSD$
# #
# Automounter master map, see auto_master(5) for details. # Automounter master map, see auto_master(5) for details.
# #

View File

@@ -0,0 +1,22 @@
#!/usr/bin/env bash
#
set -euo pipefail
IFS=$'\n\t'
DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
git filter-branch --env-filter '
WRONG_EMAIL="old@email.foo"
NEW_NAME="New Name"
NEW_EMAIL="new@email.buzz"
if [ "$GIT_COMMITTER_EMAIL" = "$WRONG_EMAIL" ]
then
export GIT_COMMITTER_NAME="$NEW_NAME"
export GIT_COMMITTER_EMAIL="$NEW_EMAIL"
fi
if [ "$GIT_AUTHOR_EMAIL" = "$WRONG_EMAIL" ]
then
export GIT_AUTHOR_NAME="$NEW_NAME"
export GIT_AUTHOR_EMAIL="$NEW_EMAIL"
fi
' --tag-name-filter cat --commit-filter 'git commit-tree -S "$@";' -- --branches --tags

View File

@@ -7,6 +7,7 @@
[alias] [alias]
lg = log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit lg = log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit
bh = log --oneline --branches=* --remotes=* --graph --decorate bh = log --oneline --branches=* --remotes=* --graph --decorate
amend = commit --amend --no-edit
[core] [core]
excludesfile = ~/.gitignore_global excludesfile = ~/.gitignore_global
[commit] [commit]
@@ -15,3 +16,5 @@
rebase = true rebase = true
[log] [log]
date = local date = local
[init]
defaultBranch = main

View File

@@ -1,2 +1,3 @@
.idea .idea
.python-version .python-version
.dir-locals.el

View File

@@ -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

View File

@@ -0,0 +1,40 @@
#!/usr/bin/env bash
#
# Imitate watch from linux
set -euo pipefail
IFS=$'\n\t'
DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
############## Setup #########################
function cleanup {
switch_to_main_screen
}
for sig in EXIT INT QUIT HUP TERM; do
trap "set +e; cleanup; exit" "$sig"
done
############## Program #########################
function main {
switch_to_alt_screen
while true; do
local output=$("$@")
clear
cat <<<"$output"
sleep 2
done
}
function switch_to_alt_screen {
# tput smcup
echo -e "\e[?1049h"
clear
}
function switch_to_main_screen {
# tput rmcup
echo -e "\e[?1049l"
}
main "$@"

View File

@@ -0,0 +1,8 @@
#!/usr/bin/env bash
#
# Invoke watch
set -euo pipefail
IFS=$'\n\t'
DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
exec watch "$@"

View File

@@ -47,6 +47,8 @@
dest: /usr/local/bin/git_find_merged_branches dest: /usr/local/bin/git_find_merged_branches
- src: cleanup_temporary_files - src: cleanup_temporary_files
dest: /usr/local/bin/cleanup_temporary_files dest: /usr/local/bin/cleanup_temporary_files
- src: git_fix_author.bash
dest: /usr/local/bin/git_fix_author
- import_tasks: tasks/freebsd.yaml - import_tasks: tasks/freebsd.yaml
when: 'os_flavor == "freebsd"' when: 'os_flavor == "freebsd"'

View File

@@ -94,6 +94,8 @@
loop: loop:
- src: bemount.bash - src: bemount.bash
dest: /usr/local/bin/bemount dest: /usr/local/bin/bemount
- src: watch_freebsd
dest: /usr/local/bin/ww
- name: Install rc script - name: Install rc script
copy: copy:
@@ -121,4 +123,3 @@
group: wheel group: wheel
loop: loop:
- disk_labels - disk_labels

View File

@@ -7,6 +7,7 @@
- bind # dig - bind # dig
- man-db - man-db
- uutils-coreutils - uutils-coreutils
- usbutils # for lsusb
state: present state: present
- name: Start pkgfile update service - name: Start pkgfile update service
@@ -37,3 +38,5 @@
loop: loop:
- src: mount_disk_image - src: mount_disk_image
dest: /usr/local/bin/mount_disk_image dest: /usr/local/bin/mount_disk_image
- src: watch_linux
dest: /usr/local/bin/ww

View File

@@ -35,6 +35,33 @@ if [ "$VERBOSE" = "YES" ]; then
set -x set -x
fi fi
############## Setup #########################
function cleanup {
for vm in "${vms[@]}"; do
log "Destroying bhyve vm $vm"
bhyvectl "--vm=$vm" --destroy
log "Destroyed bhyve vm $vm"
done
}
vms=()
for sig in EXIT INT QUIT HUP TERM; do
trap "set +e; sleep 10; cleanup" "$sig"
done
function die {
local status_code="$1"
shift
(>&2 echo "${@}")
exit "$status_code"
}
function log {
(>&2 echo "${@}")
}
############## Program #########################
function main { function main {
local cmd="$1" local cmd="$1"
shift 1 shift 1
@@ -68,7 +95,7 @@ IP_RANGE="$IP_RANGE"
BRIDGE_NAME="$BRIDGE_NAME" BRIDGE_NAME="$BRIDGE_NAME"
INTERFACE_NAME="$INTERFACE_NAME" INTERFACE_NAME="$INTERFACE_NAME"
EOF EOF
zfs create -s "-V${gigabytes}G" -o volmode=dev "$zfs_path/disk0" zfs create -s "-V${gigabytes}G" -o volmode=dev -o primarycache=metadata -o secondarycache=none "$zfs_path/disk0"
} }
function start_vm { function start_vm {
@@ -117,11 +144,12 @@ function start_vm {
# TODO: Look into using nmdm instead of stdio for serial console # TODO: Look into using nmdm instead of stdio for serial console
if [ -n "$mount_cd" ]; then if [ -n "$mount_cd" ]; then
additional_args+=("-s" "3,ahci-cd,$mount_cd") additional_args+=("-s" "5,ahci-cd,$mount_cd")
fi fi
if [ "$VNC_ENABLE" = "YES" ]; then if [ "$VNC_ENABLE" = "YES" ]; then
additional_args+=("-s" "29,fbuf,tcp=$VNC_LISTEN,w=1920,h=1080") additional_args+=("-s" "29,fbuf,tcp=$VNC_LISTEN,w=1920,h=1080")
fi fi
vms+=("$name")
while true; do while true; do
set -x set -x
set +e set +e
@@ -142,6 +170,7 @@ function start_vm {
set +x set +x
if [ $exit_code -eq 0 ]; then if [ $exit_code -eq 0 ]; then
echo "Rebooting." echo "Rebooting."
sleep 5
elif [ $exit_code -eq 1 ]; then elif [ $exit_code -eq 1 ]; then
echo "Powered off." echo "Powered off."
break break
@@ -156,9 +185,6 @@ function start_vm {
break break
fi fi
done done
bhyvectl "--vm=$name" --destroy
echo "Destroyed bhyve vm."
} }
function detect_available_link { function detect_available_link {

View File

@@ -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"'

View File

@@ -1 +1,2 @@
freebsd_version: "releng/13.2" # freebsd_version: "releng/13.2"
freebsd_version: "9c80d66ec1b4c5b9ac7aaf5b0fdbb1628d49c181"

View File

@@ -0,0 +1,10 @@
#!/usr/bin/env bash
#
# Update packages in aurutils with -git suffix.
#
# This has to be done manually because aurutils does not check for new git commits every time we run an update.
set -euo pipefail
IFS=$'\n\t'
DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
pacman -Slq custom | grep -E -- '-git$' | xargs aurutils-sync --no-ver --reset "$@"

View 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 "${@}"

View 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 "${@}"

View 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 "${@}"

View File

@@ -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-----

View File

@@ -1,3 +0,0 @@
KERNCONF=CUSTOM
BUILD_STATIC=YES

View File

@@ -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

View File

@@ -1,3 +1,5 @@
dependencies: dependencies:
- users - role: users
- gpg when: 'os_flavor == "linux"'
- role: gpg
when: 'os_flavor == "linux"'

View File

@@ -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

View File

@@ -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

View File

@@ -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:
@@ -113,6 +113,8 @@
dest: /usr/local/bin/aurutils-purge dest: /usr/local/bin/aurutils-purge
- src: aurutils-sync - src: aurutils-sync
dest: /usr/local/bin/aurutils-sync dest: /usr/local/bin/aurutils-sync
- src: aurutils-update-devel-packages
dest: /usr/local/bin/
- name: build aurutils inside aurutils - name: build aurutils inside aurutils
become_user: "{{ build_user.name }}" become_user: "{{ build_user.name }}"

View File

@@ -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

View File

@@ -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

View File

@@ -1,15 +1,27 @@
#!/usr/bin/env bash #!/usr/bin/env bash
# #
# Tell speedshift whether to maximize CPU performance (100) or energy # Tell speedshift whether to maximize CPU performance (100) or energy
# efficiency (0). # efficiency (0). If set to 101 this will enable turboboost.
set -euo pipefail set -euo pipefail
IFS=$'\n\t' IFS=$'\n\t'
DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
perc=$1 perc=$1
if [ $perc -lt 50 ]; then if [ "$perc" -gt 100 ]; then
echo "power" | tee /sys/devices/system/cpu/cpufreq/policy*/energy_performance_preference echo 0 | tee /sys/devices/system/cpu/intel_pstate/no_turbo
else else
echo "performance" | tee /sys/devices/system/cpu/cpufreq/policy*/energy_performance_preference echo 1 | tee /sys/devices/system/cpu/intel_pstate/no_turbo
fi
if [ "$perc" -ge 80 ]; then
echo "performance" | tee /sys/devices/system/cpu/cpufreq/policy*/energy_performance_preference
elif [ "$perc" -ge 60 ]; then
echo "balance_performance" | tee /sys/devices/system/cpu/cpufreq/policy*/energy_performance_preference
elif [ "$perc" -ge 40 ]; then
echo "default" | tee /sys/devices/system/cpu/cpufreq/policy*/energy_performance_preference
elif [ "$perc" -ge 20 ]; then
echo "balance_power" | tee /sys/devices/system/cpu/cpufreq/policy*/energy_performance_preference
else
echo "power" | tee /sys/devices/system/cpu/cpufreq/policy*/energy_performance_preference
fi fi

View 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"

View File

@@ -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:

View File

@@ -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

View 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

View File

@@ -0,0 +1 @@
emacs_flavor: "plain" # or full for systems where I do real development.

View File

@@ -1,106 +0,0 @@
(package-initialize)
(add-to-list 'package-archives
'("melpa" . "https://melpa.org/packages/")
)
(when (not package-archive-contents)
(package-refresh-contents))
(unless (package-installed-p 'use-package)
(package-install 'use-package))
(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
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
)
(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

View File

@@ -1,41 +0,0 @@
(use-package eglot
: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)

View 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")))

View File

@@ -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.
@@ -64,9 +65,10 @@
(setq tramp-default-method "ssh") (setq tramp-default-method "ssh")
(use-package dockerfile-mode)
(use-package nginx-mode (use-package nginx-mode
:mode (
("headers\\.include\\'" . nginx-mode)
)
:config :config
(setq nginx-indent-level 4)) (setq nginx-indent-level 4))

View File

@@ -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
) )
) )
) )

View File

@@ -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)

View 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)

View 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)

View File

@@ -0,0 +1,16 @@
(require 'util-tree-sitter)
(use-package bash-ts-mode
:ensure nil
:commands (bash-ts-mode)
:hook (
(bash-ts-mode . (lambda ()
(flymake-mode +1)
)))
:init
(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"))
(unless (treesit-ready-p 'bash) (treesit-install-language-grammar 'bash))
)
(provide 'lang-bash)

View File

@@ -0,0 +1,13 @@
(use-package dockerfile-ts-mode
:pin manual
:mode (
("Dockerfile\\'" . dockerfile-ts-mode)
)
:commands (dockerfile-mode dockerfile-ts-mode)
:init
(add-to-list 'major-mode-remap-alist '(dockerfile-mode . dockerfile-ts-mode))
(add-to-list 'treesit-language-source-alist '(dockerfile "https://github.com/camdencheek/tree-sitter-dockerfile"))
(unless (treesit-ready-p 'dockerfile) (treesit-install-language-grammar 'dockerfile))
)
(provide 'lang-dockerfile)

View File

@@ -0,0 +1,33 @@
(require 'common-lsp)
(require 'util-tree-sitter)
(use-package go-ts-mode
:pin manual
:mode (
("\\.go\\'" . go-ts-mode)
("/go\\.mod\\'" . go-mod-ts-mode)
)
:commands (go-ts-mode go-mod-ts-mode)
:hook (
(go-ts-mode . (lambda ()
(when-linux
(eglot-ensure)
)
))
(go-mod-ts-mode . (lambda ()
(when-linux
(eglot-ensure)
)
))
;; (before-save . lsp-format-buffer)
)
:init
(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"))
(unless (treesit-ready-p 'go) (treesit-install-language-grammar 'go))
(unless (treesit-ready-p 'gomod) (treesit-install-language-grammar 'gomod))
)
(provide 'lang-go)

View File

@@ -0,0 +1,113 @@
(require 'common-lsp)
(require 'util-tree-sitter)
(use-package json-ts-mode
:ensure nil
:pin manual
:mode (
("\\.json\\'" . json-ts-mode)
)
:commands (json-ts-mode)
:hook (
(json-ts-mode . (lambda ()
(add-hook 'before-save-hook 'json-fmt-jq nil 'local)
))
)
:init
(add-to-list 'treesit-language-source-alist '(json "https://github.com/tree-sitter/tree-sitter-json"))
(unless (treesit-ready-p 'json) (treesit-install-language-grammar 'json))
)
(defun json-fmt-jq ()
"Run jq."
(run-command-on-buffer "jq" "--monochrome-output" ".")
)
(use-package tsx-ts-mode
:ensure nil
:pin manual
:mode (
("\\.tsx\\'" . tsx-ts-mode)
)
:commands (tsx-ts-mode)
:hook (
(tsx-ts-mode . (lambda ()
(when-linux
(eglot-ensure)
)
))
)
:init
(add-to-list 'treesit-language-source-alist '(tsx . ("https://github.com/tree-sitter/tree-sitter-typescript" "master" "tsx/src")))
(unless (treesit-ready-p 'tsx) (treesit-install-language-grammar 'tsx))
)
(use-package typescript-ts-mode
:ensure nil
:pin manual
:mode (
("\\.ts\\'" . typescript-ts-mode)
)
:commands (typescript-ts-mode)
:hook (
(typescript-ts-mode . (lambda ()
(when-linux
(eglot-ensure)
)
))
)
:init
(add-to-list 'treesit-language-source-alist '(typescript . ("https://github.com/tree-sitter/tree-sitter-typescript" "master" "typescript/src")))
(unless (treesit-ready-p 'typescript) (treesit-install-language-grammar 'typescript))
)
(use-package js-ts-mode
:ensure nil
:pin manual
:mode (
("\\.js\\'" . js-ts-mode)
)
:commands (js-ts-mode)
:hook (
(js-ts-mode . (lambda ()
(when-linux
(eglot-ensure)
)
))
)
:init
(add-to-list 'treesit-language-source-alist '(javascript . ("https://github.com/tree-sitter/tree-sitter-javascript" "master" "src")))
(unless (treesit-ready-p 'javascript) (treesit-install-language-grammar 'javascript))
)
(use-package css-ts-mode
:ensure nil
:pin manual
:mode (
("\\.css\\'" . css-ts-mode)
)
:commands (css-ts-mode)
:init
(add-to-list 'treesit-language-source-alist '(css "https://github.com/tree-sitter/tree-sitter-css"))
(unless (treesit-ready-p 'css) (treesit-install-language-grammar 'css))
)
(use-package web-mode
:mode (("\\.dust\\'" . dust-mode)
)
:config
(setq web-mode-markup-indent-offset 2)
(setq web-mode-enable-current-element-highlight t)
)
;; Define a custom mode for dust so that org-mode handle #+BEGIN_SRC dust blocks
(define-derived-mode dust-mode web-mode "WebDust"
"Major mode for editing dust templates in web-mode."
(web-mode)
(web-mode-set-engine "dust")
;; (setq web-mode-content-type "html")
)
(provide 'lang-javascript)

View File

@@ -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)

View File

@@ -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)

View File

@@ -52,11 +52,11 @@
) )
(use-package python (use-package python
:mode ("\\.py\\'" . python-mode) :mode ("\\.py\\'" . python-ts-mode)
:commands python-mode :commands (python-mode python-ts-mode)
:pin manual :pin manual
:hook ( :hook (
(python-mode . (lambda () (python-ts-mode . (lambda ()
(when (executable-find "poetry") (when (executable-find "poetry")
(add-poetry-venv-to-path) (add-poetry-venv-to-path)
(let ((venv (locate-venv-poetry))) (when venv (let ((venv (locate-venv-poetry))) (when venv
@@ -64,14 +64,19 @@
(list (cons ':python (list ':venvPath venv ':pythonPath (concat venv "/bin/python"))))) (list (cons ':python (list ':venvPath venv ':pythonPath (concat venv "/bin/python")))))
)) ))
) )
(when-linux
(eglot-ensure) (eglot-ensure)
)
(add-hook 'before-save-hook 'python-fmt nil 'local) (add-hook 'before-save-hook 'python-fmt nil 'local)
(tree-sitter-hl-mode +1)
)) ))
) )
:bind ((:map python-mode-map ([backspace] . python-backspace)) :bind ((:map python-ts-mode-map ([backspace] . python-backspace))
) )
:init
(add-to-list 'major-mode-remap-alist '(python-mode . python-ts-mode))
(add-to-list 'treesit-language-source-alist '(python "https://github.com/tree-sitter/tree-sitter-python"))
(unless (treesit-ready-p 'python) (treesit-install-language-grammar 'python))
) )
(provide 'lang-python) (provide 'lang-python)

View 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)

View File

@@ -13,7 +13,6 @@
:custom (hcl-indent-level 2) :custom (hcl-indent-level 2)
:hook ( :hook (
(hcl-mode . (lambda () (unless (derived-mode-p 'terraform-mode) (add-hook 'before-save-hook 'terraform-fmt nil 'local)))) (hcl-mode . (lambda () (unless (derived-mode-p 'terraform-mode) (add-hook 'before-save-hook 'terraform-fmt nil 'local))))
(hcl-mode . tree-sitter-hl-mode)
) )
) )

View File

@@ -0,0 +1,27 @@
(defun yaml-format-buffer ()
"Run prettier."
(interactive)
(run-command-on-buffer "prettier" "--stdin-filepath" buffer-file-name)
)
(use-package yaml-ts-mode
:mode
(
("\\.y[a]?ml\\'" . yaml-ts-mode)
("playbook\\.tmp\\'" . yaml-ts-mode)
("environments/[^/]*/group_vars/[^/]*\\'" . yaml-ts-mode)
("environments/[^/]*/host_vars/[^/]*\\'" . yaml-ts-mode)
)
:commands (yaml-ts-mode)
:hook (
(yaml-ts-mode . (lambda ()
(add-hook 'before-save-hook 'yaml-format-buffer nil 'local)
))
)
:init
(add-to-list 'major-mode-remap-alist '(yaml-mode . yaml-ts-mode))
(add-to-list 'treesit-language-source-alist '(yaml "https://github.com/ikatyang/tree-sitter-yaml"))
(unless (treesit-ready-p 'yaml) (treesit-install-language-grammar 'yaml))
)
(provide 'lang-yaml)

View 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)

View File

@@ -0,0 +1,16 @@
(use-package treesit
:pin manual
:ensure nil
:commands (treesit-install-language-grammar treesit-ready-p)
:init
(setq treesit-language-source-alist '())
:config
;; Default to the max level of detail in treesitter highlighting. This
;; can be overridden in each language's use-package call with:
;;
;; :custom
;; (treesit-font-lock-level 3)
(setq treesit-font-lock-level 4)
)
(provide 'util-tree-sitter)

View File

@@ -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))

View File

@@ -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)
@@ -28,6 +30,6 @@
(require 'lang-go) (require 'lang-go)
(require 'lang-c) (require 'lang-dockerfile)
(load-directory autoload-directory) (load-directory autoload-directory)

View File

@@ -1,12 +0,0 @@
(require 'common-lsp)
(require 'util-tree-sitter)
(use-package sh-mode
:ensure nil
:commands sh-mode
:hook ((sh-mode . flycheck-mode)
(sh-mode . tree-sitter-hl-mode)
)
)
(provide 'lang-bash)

View File

@@ -1,32 +0,0 @@
(require 'common-lsp)
(require 'util-tree-sitter)
;; To generate a compilation database for the language server, run:
;; intercept-build13 --append make
;;
;; Output: compile_commands.json
(defun use-clangd ()
"Configure eglot to use clangd."
(eglot-ensure)
(defclass my/eglot-c (eglot-lsp-server) ()
:documentation
"Own eglot server class.")
(add-to-list 'eglot-server-programs
'(cc-mode . (my/eglot-c "clangd13")))
(tree-sitter-hl-mode)
)
(use-package cc-mode
;; c-mode c++-mode objc-mode java-mode idl-mode pike-mode awk-mode
:commands (c-mode c++-mode)
:pin manual
:hook (
(c-mode . use-clangd)
(c++-mode . use-clangd)
)
)
(provide 'lang-c)

View File

@@ -1,15 +0,0 @@
(require 'common-lsp)
(require 'util-tree-sitter)
(use-package go-mode
:commands go-mode
:hook (
(go-mode . (lambda ()
(eglot-ensure)
(tree-sitter-hl-mode +1)
))
;; (before-save . lsp-format-buffer)
)
)
(provide 'lang-go)

View File

@@ -1,61 +0,0 @@
(require 'common-lsp)
(require 'util-tree-sitter)
(use-package js
:mode (
("\\.js\\'" . js-mode)
("\\.json\\'" . js-mode)
)
:commands js-mode
:pin manual
:hook (
(find-file . (lambda () (when (string= (file-name-extension buffer-file-name) "json") (add-hook 'before-save-hook 'json-fmt-jq nil 'local))))
(js-mode . (lambda ()
(tree-sitter-hl-mode +1)
)
)
)
:config
(setq js-indent-level 2)
)
(use-package typescript-mode
:mode (
("\\.ts\\'" . typescript-mode)
("\\.tsx\\'" . typescript-mode)
)
:hook (
(typescript-mode . (lambda ()
;; (lsp-register-client
;; (make-lsp-client :new-connection (lsp-stdio-connection '("deno" "lsp" --compat --unstable --allow-read))
;; :major-modes '(typescript-mode)
;; :server-id 'typescript-ls))
(eglot-ensure)
(tree-sitter-hl-mode +1)
))
;; (before-save . lsp-format-buffer)
)
)
(defun json-fmt-jq ()
"Run jq."
(run-command-on-buffer "jq" "--monochrome-output" ".")
)
(use-package web-mode
:mode (("\\.dust\\'" . web-mode)
)
:config
(setq web-mode-markup-indent-offset 2)
(setq web-mode-enable-current-element-highlight t)
)
;; Define a custom mode for dust so that org-mode handle #+BEGIN_SRC dust blocks
(define-derived-mode dust-mode web-mode "WebDust"
"Major mode for editing dust templates in web-mode."
(web-mode)
(web-mode-set-engine "dust")
;; (setq web-mode-content-type "html")
)
(provide 'lang-javascript)

View File

@@ -1,49 +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-nill-path (seq-find (lambda (elt) elt) rust-analyzer-paths)))
first-non-nill-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-mode
:mode "\\.rs\\'"
:hook (
(rust-mode . (lambda ()
(eglot-ensure)
(let ((rust-analyzer-command (locate-rust-analyzer)))
(when rust-analyzer-command
(add-to-list 'eglot-server-programs (cons 'rust-mode (list rust-analyzer-command)))
)
)
(when-linux
(tree-sitter-hl-mode +1)
)
(add-hook 'before-save-hook 'eglot-format-buffer nil 'local)
))
)
:config
;; Add keybindings for interacting with Cargo
(use-package cargo
:hook (rust-mode . cargo-minor-mode))
)
(provide 'lang-rust)

View File

@@ -1,35 +0,0 @@
(defun yaml-backspace (arg)
"Special handling of yaml backspace."
(interactive "*p")
(if mark-active
(backward-delete-char-untabify arg)
(yaml-electric-backspace arg)
)
)
(defun yaml-format-buffer ()
"Run prettier."
(interactive)
(run-command-on-buffer "prettier" "--stdin-filepath" buffer-file-name)
)
(use-package yaml-mode
:mode
(("playbook\\.tmp\\'" . yaml-mode)
("environments/[^/]*/group_vars/[^/]*\\'" . yaml-mode)
("environments/[^/]*/host_vars/[^/]*\\'" . yaml-mode)
)
:hook (
(yaml-mode . (lambda ()
(setq eglot-workspace-configuration
(list (cons ':yaml (list ':hover :json-false :validate :json-false :completion t))))
(eglot-ensure)
(add-hook 'before-save-hook 'yaml-format-buffer nil 'local)
))
)
:bind (
(:map yaml-mode-map ([backspace] . yaml-backspace))
)
)
(provide 'lang-yaml)

View File

@@ -0,0 +1,30 @@
#!/usr/bin/env bash
#
INIT_SCRIPT=$(cat <<EOF
(progn
(setq make-backup-files nil auto-save-default nil create-lockfiles nil)
(load-theme 'tango-dark t)
(set-face-attribute 'default nil :background "black")
;; Bright yellow highlighting for selected region
(set-face-attribute 'region nil :background "#ffff50" :foreground "black")
;; Bright green cursor to distinguish from yellow region
(set-cursor-color "#ccff66")
;; Hightlight the current line
(set-face-attribute 'line-number-current-line nil :foreground "white")
;; Set default font
(set-face-attribute 'default nil :height 100 :width 'regular :weight 'regular :family "Cascadia Mono")
;; Set fallback font for unicode glyphs
(set-fontset-font "fontset-default" nil (font-spec :name "Noto Color Emoji"))
(menu-bar-mode -1)
(when (fboundp 'tool-bar-mode)
(tool-bar-mode -1))
(when ( fboundp 'scroll-bar-mode)
(scroll-bar-mode -1))
(pixel-scroll-precision-mode)
(setq frame-resize-pixelwise t)
)
EOF
)
exec emacs -q --eval "$INIT_SCRIPT" "${@}"

View File

@@ -0,0 +1,12 @@
[Desktop Entry]
Name=Plainmacs
GenericName=Text Editor
Comment=Edit text
MimeType=text/english;text/plain;text/x-makefile;text/x-c++hdr;text/x-c++src;text/x-chdr;text/x-csrc;text/x-java;text/x-moc;text/x-pascal;text/x-tcl;text/x-tex;application/x-shellscript;text/x-c;text/x-c++;
Exec=plainmacs %F
Icon=emacs
Type=Application
Terminal=false
Categories=Development;TextEditor;
StartupNotify=true
StartupWMClass=Emacs

View File

@@ -0,0 +1,22 @@
(progn
(setq make-backup-files nil auto-save-default nil create-lockfiles nil)
(load-theme 'tango-dark t)
(set-face-attribute 'default nil :background "black")
;; Bright yellow highlighting for selected region
(set-face-attribute 'region nil :background "#ffff50" :foreground "black")
;; Bright green cursor to distinguish from yellow region
(set-cursor-color "#ccff66")
;; Hightlight the current line
(set-face-attribute 'line-number-current-line nil :foreground "white")
;; Set default font
(set-face-attribute 'default nil :height 100 :width 'regular :weight 'regular :family "Cascadia Mono")
;; Set fallback font for unicode glyphs
(set-fontset-font "fontset-default" nil (font-spec :name "Noto Color Emoji"))
(menu-bar-mode -1)
(when (fboundp 'tool-bar-mode)
(tool-bar-mode -1))
(when ( fboundp 'scroll-bar-mode)
(scroll-bar-mode -1))
(pixel-scroll-precision-mode)
(setq frame-resize-pixelwise t)
)

View File

@@ -1,7 +0,0 @@
(use-package tree-sitter
:commands (tree-sitter-hl-mode)
:config
(use-package tree-sitter-langs)
)
(provide 'util-tree-sitter)

View File

@@ -1,5 +1,5 @@
dependencies: dependencies:
- users - users
- fonts - fonts
- rust - role: rust
- plainmacs when: 'emacs_flavor == "full"'

View File

@@ -1,9 +1,21 @@
- name: Install packages - name: Install packages
when: 'emacs_flavor == "full"'
package: package:
name: name:
- aspell - aspell
state: present state: present
- name: Install scripts
copy:
src: "files/{{ item.src }}"
dest: "{{ item.dest }}"
mode: 0755
owner: root
group: wheel
loop:
- src: plainmacs
dest: /usr/local/bin/plainmacs
- import_tasks: tasks/freebsd.yaml - import_tasks: tasks/freebsd.yaml
when: 'os_flavor == "freebsd"' when: 'os_flavor == "freebsd"'

View File

@@ -2,6 +2,12 @@
package: package:
name: name:
- emacs - emacs
state: present
- name: Install packages
when: 'emacs_flavor == "full"'
package:
name:
- py39-pygments - py39-pygments
- inkscape # to support SVGs in LaTeX - inkscape # to support SVGs in LaTeX
# - prettier # typescript formatting # - prettier # typescript formatting

View File

@@ -2,4 +2,39 @@
package: package:
name: name:
- aspell-en - aspell-en
- emacs-wayland
state: present state: present
- name: Install packages
when: 'emacs_flavor == "full"'
package:
name:
- prettier # typescript+yaml formatting
- pyright
- gopls
- typescript-language-server
- shellcheck
state: present
- name: Create directories
file:
name: "{{ item }}"
state: directory
mode: 0755
owner: root
group: root # Using root group to match /usr/share/applications
loop:
- /usr/local/share/applications
- name: Install Configuration
copy:
src: "files/{{ item.src }}"
dest: "{{ item.dest }}"
mode: 0644
owner: root
group: wheel
# Can't use validate because it complains about the file extension for the temporary file.
# validate: "desktop-file-validate %s"
loop:
- src: plainmacs.desktop
dest: /usr/local/share/applications/

View File

@@ -9,9 +9,10 @@
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"'
copy: copy:
src: "files/{{ item.src }}" src: "files/{{ item.src }}"
dest: "{{ account_homedir.stdout }}/{{ item.dest }}" dest: "{{ account_homedir.stdout }}/{{ item.dest }}"
@@ -20,35 +21,32 @@
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 elisp files - name: Configure dotfiles
when: 'emacs_flavor == "plain"'
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 mode: 0600
owner: "{{ account_name.stdout }}" owner: "{{ account_name.stdout }}"
group: "{{ group_name.stdout }}" group: "{{ group_name.stdout }}"
loop: loop:
- base-extensions.el - src: plainmacs_init.el
- base-functions.el dest: .config/emacs/init.el
- base-global-keys.el
- base-theme.el - name: Configure elisp files
- base.el when: 'emacs_flavor == "full"'
- common-lsp.el copy:
- lang-bash.el src: "files/{{ item.src }}"
- lang-c.el dest: "{{ account_homedir.stdout }}/{{ item.dest }}"
- lang-go.el owner: "{{ account_name.stdout }}"
- lang-javascript.el group: "{{ group_name.stdout }}"
- lang-lua.el loop:
- lang-markdown.el - src: elisp
- lang-org.el dest: .config/emacs/
- 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:
@@ -58,7 +56,8 @@
owner: "{{ account_name.stdout }}" owner: "{{ account_name.stdout }}"
group: "{{ group_name.stdout }}" group: "{{ group_name.stdout }}"
loop: loop:
- emacs_e - emacs_e # Create an alias 'e' which launches emacs
- plainmacs # Set the EDITOR to plainmacs
- import_tasks: tasks/peruser_freebsd.yaml - import_tasks: tasks/peruser_freebsd.yaml
when: 'os_flavor == "freebsd"' when: 'os_flavor == "freebsd"'

View File

@@ -14,29 +14,52 @@ udp_pass_in = "{ 53 51820 51821 51822 }"
# options # options
set skip on lo set skip on lo
set optimization conservative
set block-policy return
set fail-policy drop
# normalization
scrub in on $ext_if all fragment reassemble
# translation
# Evaluation order of the translation rules is dependent on the type
# of the translation rules and of the direction of a packet. binat
# rules are always evaluated first. Then either the rdr rules are
# evaluated on an inbound packet or the nat rules on an outbound
# packet. Rules of the same type are evaluated in the same order in
# which they appear in the ruleset. The first matching rule decides
# what action is taken.
# redirections # redirections
nat pass on lagg0 inet from $jail_nat_v4 to $not_jail_nat_v4 -> (lagg0) nat on $ext_if inet from ! ($ext_if) to ! ($ext_if) -> ($ext_if)
nat pass on $not_ext_if inet from $jail_nat_v4 to 10.215.1.1 port 53 -> ($ext_if) rdr pass proto {tcp, udp} from any to 10.215.1.1 port 53 tag REDIREXTERNAL -> 1.1.1.1 port 53
rdr pass on $not_ext_if proto {tcp, udp} from $jail_nat_v4 to 10.215.1.1 port 53 -> 1.1.1.1 port 53
rdr pass on $ext_if inet proto tcp from $not_jail_nat_v4 to any port 6443 -> 10.215.1.204 port 6443 rdr pass on $ext_if proto {tcp, udp} to ($ext_if) port 6443 -> 10.215.1.204 port 6443
rdr pass on jail_nat inet proto tcp from $jail_nat_v4 to any port 6443 -> 10.215.1.204 port 6443 rdr pass on jail_nat proto {tcp, udp} to ($ext_if) port 6443 tag REDIRINTERNAL -> 10.215.1.204 port 6443
nat pass on $not_ext_if proto {tcp, udp} from $not_jail_nat_v4 to 10.215.1.204 port 6443 -> (jail_nat)
nat pass on $not_ext_if proto {tcp, udp} from $jail_nat_v4 to 10.215.1.204 port 6443 -> (jail_nat)
rdr pass on $ext_if inet proto tcp from $not_jail_nat_v4 to $not_jail_nat_v4 port 65099 -> 10.215.1.210 port 22 rdr pass on $ext_if proto {tcp, udp} to ($ext_if) port 19993 -> 10.215.1.204 port 19993
rdr pass on jail_nat inet proto tcp from $jail_nat_v4 to $not_jail_nat_v4 port 65099 -> 10.215.1.210 port 22 rdr pass on jail_nat proto {tcp, udp} to ($ext_if) port 19993 tag REDIRINTERNAL -> 10.215.1.204 port 19993
# nat pass on $not_ext_if proto {tcp, udp} from $not_jail_nat_v4 to 10.215.1.210 port 65099 -> (jail_nat)
# nat pass on $not_ext_if proto {tcp, udp} from $jail_nat_v4 to 10.215.1.210 port 65099 -> (lagg0)
rdr pass inet proto {tcp, udp} from any to ($ext_if) port 53 -> 10.215.1.211 port 53 rdr pass proto {tcp, udp} from $not_jail_nat_v4 to ($ext_if) port 65099 -> 10.215.1.210 port 22
nat pass on jail_nat proto {tcp, udp} from { 10.215.1.0/24, !10.215.1.1 } to 10.215.1.211 -> (jail_nat) rdr pass proto {tcp, udp} from $jail_nat_v4 to ($ext_if) port 65099 tag REDIRINTERNAL -> 10.215.1.210 port 22
rdr pass proto {tcp, udp} from $not_jail_nat_v4 to ($ext_if) port 53 -> 10.215.1.211 port 53
rdr pass proto {tcp, udp} from $jail_nat_v4 to ($ext_if) port 53 tag REDIRINTERNAL -> 10.215.1.211 port 53
nat pass tagged REDIRINTERNAL -> (jail_nat)
nat pass tagged REDIREXTERNAL -> ($ext_if)
# filtering # filtering
block log all block log all
pass out on $ext_if pass quick proto {icmp, icmp6} all
pass out quick on $ext_if
# We pass on the interfaces listed in allow rather than skipping on
# them because changes to pass rules will update when running a
# `service pf reload` but interfaces that we `skip` will not update (I
# forget if its from adding, removing, or both. TODO: test to figure
# it out). Also skipped interfaces are not subject to nat/rdr rules.
pass quick on $allow
# Single interface kubernetes cluster is working with the following run on mrmanager: # Single interface kubernetes cluster is working with the following run on mrmanager:
# doas route add -host 74.80.180.139 -interface jail_nat # doas route add -host 74.80.180.139 -interface jail_nat
@@ -47,17 +70,8 @@ pass quick from any to $pub_k8s
pass in on jail_nat pass in on jail_nat
# Allow traffic from my machine to the jails/virtual machines # Allow traffic from my machine to the jails/virtual machines
pass out on jail_nat from $jail_nat_v4 pass out on jail_nat from (jail_nat:network)
# We pass on the interfaces listed in allow rather than skipping on
# them because changes to pass rules will update when running a
# `service pf reload` but interfaces that we `skip` will not update (I
# forget if its from adding, removing, or both. TODO: test to figure
# it out). Also skipped interfaces are not subject to nat/rdr rules.
pass quick on $allow
pass on $ext_if proto icmp all
pass on $ext_if proto icmp6 all
pass in on $ext_if proto tcp to any port $tcp_pass_in pass in on $ext_if proto tcp to any port $tcp_pass_in
pass in on $ext_if proto udp to any port $udp_pass_in pass in on $ext_if proto udp to any port $udp_pass_in

View File

@@ -1,14 +1,3 @@
- name: Install scripts
copy:
src: "files/{{ item.src }}"
dest: "{{ item.dest }}"
mode: 0755
owner: root
group: wheel
loop:
- src: plainmacs
dest: /usr/local/bin/plainmacs
- import_tasks: tasks/freebsd.yaml - import_tasks: tasks/freebsd.yaml
when: 'os_flavor == "freebsd"' when: 'os_flavor == "freebsd"'
@@ -20,6 +9,7 @@
apply: apply:
become: yes become: yes
become_user: "{{ initialize_user }}" become_user: "{{ initialize_user }}"
when: users is defined
loop: "{{ users | dict2items | community.general.json_query('[?value.initialize==`true`].key') }}" loop: "{{ users | dict2items | community.general.json_query('[?value.initialize==`true`].key') }}"
loop_control: loop_control:
loop_var: initialize_user loop_var: initialize_user

View File

@@ -0,0 +1,5 @@
# - name: Install packages
# package:
# name:
# - foo
# state: present

View 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

View File

@@ -0,0 +1,2 @@
- import_tasks: tasks/common.yaml
# when: foo is defined

View 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 "${@}"

View 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"

View 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"'

View 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

View 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

View File

@@ -0,0 +1,2 @@
- import_tasks: tasks/common.yaml
# when: foo is defined

View File

@@ -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

View File

@@ -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

View File

@@ -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-----

Some files were not shown because too many files have changed in this diff Show More