Compare commits

...

3430 Commits

Author SHA1 Message Date
1c5c9b80eb nixpkgs: 2025-08-27 -> 2025-08-28; remove upstreamed newsflash cross code 2025-08-28 16:01:56 +00:00
94289c2253 nixpkgs-wayland: 2025-08-27 -> 2025-08-28 2025-08-28 16:00:27 +00:00
0c443fae25 uassets: 2025-08-26 -> 2025-08-28 2025-08-28 16:00:14 +00:00
a490a74390 cross: open PRs for all my rust cross patches 2025-08-28 01:57:17 +00:00
2e71e06c05 lemoa: inline the cross compilation fix 2025-08-27 18:43:49 +00:00
203832b5a8 envelope: 2024-09-13 -> 2025-05-17; inline the cross fixes 2025-08-27 18:37:55 +00:00
1204f4db69 cross: rewrite newsflash patch as a nixpkgs commit 2025-08-27 17:04:05 +00:00
a4b114fce2 nixpkgs: bump; rewrite snapshot patch as nixpkgs commit 2025-08-27 16:29:58 +00:00
7e17eb4056 nixpkgs-wayland: 2025-08-26 -> 2025-08-27 2025-08-27 15:52:50 +00:00
259d980a60 nixpkgs: 2025-08-26 0> 2025-08-27 2025-08-27 15:52:40 +00:00
5488486944 firefox: fix browserpass/native-messaging-hosts integration 2025-08-27 08:32:35 +00:00
969717b1fe firefox: disable safebrowsing and restrict app auto-updates even more aggressively
i don't think any auto-updating bit me, i'm just being pre-emptive
2025-08-27 07:55:45 +00:00
7391e34f77 cross: factor spot,video-trimmer build fixes into nixpkgs commits 2025-08-27 02:25:28 +00:00
7f45077485 cross: split delfin fix into nixpkgs patch 2025-08-27 01:12:25 +00:00
ceb7ccbc6d todo.md: task for migrating spot -> riff 2025-08-27 01:06:14 +00:00
9d63ec5dd2 hosts: remove references to lappy remote fs
this was causing mount timeouts on _every_ deploy
2025-08-27 00:00:21 +00:00
7ce93eae96 cross: fix papers via upstreamable patch 2025-08-26 23:52:58 +00:00
1277c73304 nixpkgs: update, drop upstreamed loupe/pwvucontrol cross patches 2025-08-26 18:14:55 +00:00
0550498cd1 nixpkgs/patches: remove redundant qemu patch, push coincurve upstream 2025-08-26 17:02:45 +00:00
023396a41e nixpkgs-bootstrap.staging: 2025-08-25 -> 2025-08-26 2025-08-26 15:44:27 +00:00
ebb335ef4c nixpkgs-wayland: 2025-08-25 -> 2025-08-26 2025-08-26 15:44:27 +00:00
fbb0046dda uvtools: 5.1.7 -> 5.2.0 2025-08-26 15:44:27 +00:00
59d4197bf5 uassets: 2025-08-25 -> 2025-08-26 2025-08-26 15:44:27 +00:00
90e4e20274 zimPackages.wikipedia_en_all_maxi: 2024-01 -> 2025-08 2025-08-26 15:44:27 +00:00
7ecd368e20 zimPackages.alpinelinux: 2025-07 -> 2025-08 2025-08-26 15:44:27 +00:00
79fc30da0e cross: push fractal/pwvucontrol/loupe patches upstream & update tracking statuses 2025-08-26 15:44:27 +00:00
23f3647cc5 nixpkgs-wayland: 2025-08-20 -> 2025-08-25 2025-08-26 15:44:27 +00:00
ad4910366d zimPackages.archlinux_en_all_maxi: 2025-07 -> 2025-08 2025-08-26 15:44:27 +00:00
609becadfe nixpkgs: 2025-08-18 -> 2025-08-26 2025-08-26 15:44:27 +00:00
3acabe60b6 uassets: 2025-08-20 -> 2025-08-25 2025-08-26 15:44:27 +00:00
87ec095b8a programs: typescript-language-server: link cache files into ephemeral storage 2025-08-26 15:44:27 +00:00
8831d8d1ac image: fix initrd path to be the /boot path instead of the /nix/store path 2025-08-22 02:58:09 +00:00
8b333a8887 doc/migrating-storage-device: show how to resize the fs 2025-08-22 02:58:09 +00:00
028d903e9c boot: package "mlabel", for changing FAT UUIDs 2025-08-22 02:20:05 +00:00
dfed5f070b servo: update fs UUIDs 2025-08-22 02:19:47 +00:00
b29ee5ac03 desko: gate ollama behind sane.maxBuildCost option 2025-08-21 02:43:35 +00:00
e700ff392f servo: gate costly services behind sane.maxBuildCost option 2025-08-21 02:42:58 +00:00
91578c0b78 snippets: add new links 2025-08-20 17:31:19 +00:00
b35656c9ae nixpkgs-wayland: 2025-08-19 -> 2025-08-20 2025-08-20 17:24:48 +00:00
726281a6dd uassets: 2025-08-19 -> 2025-08-20 2025-08-20 17:24:09 +00:00
f305027678 nvimpager: allow access to vimrc 2025-08-20 01:17:37 +00:00
2b69c07d12 nixpkgs-wayland: 2025-08-18 -> 2025-08-19 2025-08-19 08:35:30 +00:00
544b1e58e0 uassets: 2025-08-18 -> 2025-08-19 2025-08-19 08:35:18 +00:00
34c2d4f66f neovim: ship RC file as ~/.config/nvim/
this allows easier editing at runtime
2025-08-18 21:22:21 +00:00
4addf857b7 firefox: redirect "maps" search URL to Kagi by default 2025-08-18 19:39:31 +00:00
a3f6c148d3 nixpkgs: 2025-08-17 -> 2025-08-18 2025-08-18 15:25:24 +00:00
43a0abd68f nixpkgs-wayland: 2025-08-17 -> 2025-08-18 2025-08-18 15:25:15 +00:00
b3c4e96d6e syshud: 2025-07-26 -> 2025-08-18 2025-08-18 15:24:56 +00:00
ade5ce5339 uassets: 2025-08-17 -> 2025-08-18 2025-08-18 15:24:40 +00:00
e543034fcb overlays/cross: update upstreaming status 2025-08-17 21:25:15 +00:00
b5d96ed17b nixpkgs: 2026-08-16 -> 2025-08-17 2025-08-17 17:32:26 +00:00
003ce70cd7 nixpkgs-wayland: 2025-08-15 -> 2025-08-17 2025-08-17 17:32:16 +00:00
04f6964711 uassets: 2025-08-16 -> 2025-08-17 2025-08-17 17:31:59 +00:00
63cf19f839 nixpkgs: 2025-08-15 -> 2025-08-16 2025-08-16 21:05:35 +00:00
806a1aa294 nixpkgs-wayland: 2025-08-14 -> 2025-08-15 2025-08-16 20:13:28 +00:00
35a023f449 lpac: 2.2.1 -> 2.3.0 2025-08-16 17:06:56 +00:00
f0aec4416c uassets: 2025-08-15 -> 2025-08-16 2025-08-16 16:53:29 +00:00
e0bb1b7c62 servo: gitea: place only the most expensive repos behind Anubis 2025-08-16 08:15:47 +00:00
9847e0171c flowy: avoid invoking no-op efibootmgr operations 2025-08-16 08:05:55 +00:00
03a1638628 flowy: set nixos as default EFI boot entry, always 2025-08-16 07:55:35 +00:00
f7327bef3e servo: document the anubis openGraph setting 2025-08-16 07:04:56 +00:00
47fb8296db flowy: add bootloader entry to boot into Windows (but i still need to do more config to get Bitlocker to work w/o secure boot) 2025-08-16 07:02:37 +00:00
b409fbb5f7 systemd-boot: enable memtest and edk2 UEFI shell 2025-08-16 07:00:47 +00:00
84092395f4 Merge pull request 'patch-gitea-anubis-opengraph' (#6) from shelvacu/colins-nix-files:patch-gitea-anubis-opengraph into master
Reviewed-on: #6
2025-08-16 07:00:22 +00:00
Shelvacu
ffcdf08b20 git.uninsane.org: passthru page metadata in Anubis
Inspired by adding a link to a post on discuss.nixos.org and having it show up as "Making sure you're not a bot!"

Anubis docs: https://anubis.techaro.lol/docs/admin/configuration/open-graph/
2025-08-15 23:41:55 -07:00
faa0fd006a nixpkgs: 2025-08-14 -> 2025-08-15 2025-08-15 18:03:14 +00:00
7c7780183a nixpkgs-wayland: bump 2025-08-15 17:24:52 +00:00
78be0fbd11 euicc-manual: 2025-08-10 -> 2025-08-14 2025-08-15 17:24:35 +00:00
9a42a08910 uassets: 2025-08-14 -> 2025-08-15 2025-08-15 17:24:14 +00:00
09a027ef3f snippets: add nixpkgs cross compilation PRs 2025-08-14 15:28:48 +00:00
a54b476b12 nix: ship debug info 2025-08-14 07:50:55 +00:00
98df75a449 waka.laka.osaka: fix autoplay, add tap-to-unmute 2025-08-14 07:50:38 +00:00
d62788108b nixpkgs: 2025-08-13 -> 2025-08-14 2025-08-14 07:01:28 +00:00
0b8807fb9e nixpkgs-wayland: 2025-08-13 -> 2025-08-14 2025-08-14 07:00:17 +00:00
8588fc0ad0 uassets: 2025-08-13 -> 2025-08-14 2025-08-14 06:53:45 +00:00
7e671285ca nfs-utils: ship 2025-08-13 23:40:04 +00:00
844a838016 hosts/x86_64: replace syslinux with systemd-boot inside the image 2025-08-13 20:06:49 +00:00
85ac4241d3 bootpart-systemd-boot: init 2025-08-13 20:05:34 +00:00
e515bf10c4 bootpart-uefi-x86_64 -> bootpart-syslinux 2025-08-13 19:50:43 +00:00
3e35c4ae85 fix hosts.rescue.img build 2025-08-13 19:48:43 +00:00
10e005d8c8 modules/image: distribute systemd-boot loader configs 2025-08-13 19:48:26 +00:00
61b30678c4 all: switch bootloader from syslinux -> systemd-boot (except for moby -- TODO) 2025-08-13 17:53:46 +00:00
a1ba78c69f nixpkgs: 2025-08-12 -> 2025-08-13 2025-08-13 16:10:09 +00:00
7ca9cd116f nixpkgs-wayland: 2025-08-11 -> 2025-08-13 2025-08-13 15:46:36 +00:00
41e534fc66 sops-nix: bump 2025-08-13 15:46:25 +00:00
e52e30990b uassets: 2025-08-12 -> 2025-08-13 2025-08-13 15:46:16 +00:00
190f50748a modules/image: move extlinux population into extraBootFiles hook 2025-08-13 15:45:59 +00:00
326b5ac98d all: remove extlinux 10-entry limit 2025-08-13 07:29:29 +00:00
0498ca9be3 tailscale: support "MagicDNS" (mdns) 2025-08-13 01:52:42 +00:00
9a0efcb8c2 nixpkgs: 2025-08-11 -> 2025-08-12 2025-08-13 01:52:42 +00:00
4442fca519 sops-nix: 2025-08-04 -> 2025-08-12 2025-08-13 01:52:42 +00:00
fb0b7796b4 uassets: 2025-08-11 -> 2025-08-12 2025-08-13 01:52:42 +00:00
9060a426c2 image: fix "nixos.img" -> "disk.img" typo 2025-08-13 01:52:42 +00:00
4b5368d47e easylpac: 0.7.6.5 -> 0.7.8.4; define an updateScript 2025-08-11 22:58:45 +00:00
f659c358d9 euicc-manual: fix swapped ci/eum manifests
omg, i hope i didn't delay easylpac packaging half a year just because of a typo this dumb
2025-08-11 22:58:12 +00:00
7a0760440d euicc-manual: dont skipp build/install hooks 2025-08-11 22:56:56 +00:00
bc89969a2c nixpkgs: 2025-08-10 -> 2025-08-11 2025-08-11 16:24:44 +00:00
c767769b61 nixpkgs-wayland: 2025-08-07 -> 2025-08-10 2025-08-11 16:03:09 +00:00
26acb7c4a7 zimPackages.wikipedia_en_100: 2025-07 -> 2025-08 2025-08-11 16:02:57 +00:00
9e7af6625e uassets: 2025-08-10 -> 2025-08-11 2025-08-11 16:02:41 +00:00
2ec26e9534 nixpkgs: 2025-08-09 -> 2025-08-10 2025-08-10 19:11:45 +00:00
4dac9900b4 euicc-manual: 2025-08-07 -> 2025-08-10 2025-08-10 19:11:36 +00:00
0f91fbe1ae uassets: 2025-08-09 -> 2025-08-10 2025-08-10 19:11:24 +00:00
38899ce392 bootpart-uefi-x86_64: clean up the package and config 2025-08-10 05:17:59 +00:00
f8eec18429 bootpart-uefi-x86_64: refactor 2025-08-10 04:18:33 +00:00
baabd39cb7 bootpart-uefi-x86_64: FIX so that it auto-boots 2025-08-10 04:16:52 +00:00
ca26af0278 bootpart-uefi-x86_64: remove unnecessary /EFI/BOOT/ entries 2025-08-09 19:18:42 +00:00
7fd2c38ff1 bootpart-uefi-x86_64: split the configs into their own files in src 2025-08-09 17:47:11 +00:00
df8b8eeb40 update links 2025-08-09 16:48:58 +00:00
8a5443e50d nixpkgs: 2025-08-08 -> 2025-08-09 2025-08-09 16:40:52 +00:00
464ec33aec uassets: 2025-08-08 -> 2025-08-09 2025-08-09 16:40:40 +00:00
7608534b25 animatch: simplify cross compilation override 2025-08-08 16:04:43 +00:00
2f7a7026c4 nixpkgs: 2025-08-06 -> 2025-08-08 2025-08-08 04:58:39 +00:00
3b7d6d34c4 tor-browser: disable dbus ownership (speculatively) 2025-08-08 04:57:52 +00:00
87f30b8fef nixpkgs-wayland: 2025-08-06 -> 2025-08-07 2025-08-08 04:57:31 +00:00
ff13331fe6 uvtools: 5.1.6 -> 5.1.7 2025-08-08 04:57:11 +00:00
981b79a00f uassets: 2025-08-06 -> 2025-08-08 2025-08-08 04:56:51 +00:00
b8d8a382d0 euicc-manual: 0-unstable-2025-07-20 -> 0-unstable-2025-08-07 2025-08-08 04:56:32 +00:00
4eef8330e7 megapixels-next: 2.0.0-alpha2-unstable-2025-06-12 -> 2.0.0-alpha2-unstable-2025-08-06 2025-08-08 04:56:12 +00:00
8b5284811d servo: bitcoind: update docs 2025-08-07 06:30:37 +00:00
2184c17677 refactor: firefox: move security.ssl.require_safe_negotiation docs to user.js 2025-08-06 22:14:08 +00:00
d64e955206 cross: dont disable gui in v4l-utils: its build is fixed in staging; can pull that patch if i want v4l-utils 2025-08-06 22:12:33 +00:00
c4ae9d9e25 nixpkgs: 2025-08-05 -> 2025-08-06 2025-08-06 22:11:52 +00:00
8dbb2fdbe3 nixpkgs-wayland: 2025-08-05 -> 2025-08-06 2025-08-06 22:10:46 +00:00
8908394493 opencellid: 0-unstable-2025-08-05 -> 0-unstable-2025-08-06 2025-08-06 18:25:25 +00:00
fb825b4630 uassets: 0-unstable-2025-08-05 -> 0-unstable-2025-08-06 2025-08-06 18:25:09 +00:00
d504e9216b firefox: allow it to own mpris dbus endpoints 2025-08-05 21:06:52 +00:00
c9261d1438 epiphany: statically configure the default search provider 2025-08-05 21:00:50 +00:00
e3152da68c nixpkgs-bootstrap: remove upstreamed bind cross compilation patch 2025-08-05 15:57:27 +00:00
44da59ebee 2025-08-04 -> 2025-08-05 2025-08-05 15:21:37 +00:00
64a86d202c sops-nix: 2025-07-15 -> 2025-08-04 2025-08-05 15:21:25 +00:00
a4cb3ce359 nixpkgs-wayland: 2025-08-04 -> 2025-08-05 2025-08-05 15:21:07 +00:00
3ff3d6b135 opencellid: 2025-08-04 -> 2025-08-05 2025-08-05 15:20:53 +00:00
7ca476af97 uassets: 2025-08-04 -> 2025-08-05 2025-08-05 15:20:40 +00:00
a9091151e8 feeds: unsubscribe from Quorators 2025-08-05 15:20:19 +00:00
9641ffecbc nixpkgs: 2025-08-03 -> 2025-08-04 2025-08-04 15:01:15 +00:00
d2d80d548b nixpkgs-wayland: 2025-08-03 -> 2025-08-04 2025-08-04 15:01:04 +00:00
418f0dedeb opencellid: 2025-08-03 -> 2025-08-04 2025-08-04 15:00:49 +00:00
59f45e3fc0 uassets: 2025-08-03 -> 2025-08-04 2025-08-04 15:00:35 +00:00
fcd479e35d tor-browser: persist settings dir 2025-08-04 01:54:09 +00:00
225cbd1280 feeds: youtube: subscribe to @theodd1sout 2025-08-03 23:21:08 +00:00
97e9d77add yt-dlp: document plugins 2025-08-03 22:21:23 +00:00
07bc8be439 yt-dlp: tune the low-quality profile 2025-08-03 22:13:19 +00:00
f494698373 nixpkgs: 2025-08-02 -> 2025-08-03 2025-08-03 19:51:46 +00:00
727f5fc8e6 nixpkgs-wayland: 2025-08-01 -> 2025-08-03 2025-08-03 19:51:34 +00:00
1052649f5b podcastindex-db: 2025-07-27 -> 2025-08-03 2025-08-03 19:51:20 +00:00
ea624269c4 opencellid: 2025-08-01 -> 2025-08-03 2025-08-03 19:51:03 +00:00
851b7fde8c uassets: 2025-08-02 -> 2025-08-03 2025-08-03 19:50:44 +00:00
a4630c21e0 feeds: unsubscribe @CasuallyExplained
oops, not my type of political content
2025-08-03 09:32:08 +00:00
55f06128ee yt-dlp: moby: lower bandwidth preference
unlikely to be hit in practice, for the default low-res videos
2025-08-03 09:28:47 +00:00
da2c808194 yt-dlp: tune resolution preferences 2025-08-03 09:27:25 +00:00
cb2f1faafd yt-dlp: dont strip the extension when saving files 2025-08-03 07:45:10 +00:00
22d3029c7c feeds: youtube: subscribe to @jaketran 2025-08-03 07:44:27 +00:00
faeb311090 feeds: youtube: subscribe to @CasuallyExplained 2025-08-03 07:39:52 +00:00
e1c85f111a feeds: youtube: subscribe to Veritasium 2025-08-03 07:36:36 +00:00
2c8a9c4877 feeds: youtube: subscribe to @kurzgesagt 2025-08-03 07:30:24 +00:00
5d87480e60 feedsearch-crawler: fix build 2025-08-03 07:03:43 +00:00
8966c365cc feeds: subscribe to youtube @scenesbyben 2025-08-03 07:03:32 +00:00
3bc5a8f6c4 nixpkgs: 2025-08-01 -> 2025-08-02 2025-08-02 19:10:49 +00:00
7cb342b1ab nixpkgs-wayland: bump 2025-08-02 19:10:27 +00:00
45fdb7badf uassets: 2025-08-01 -> 2025-08-02 2025-08-02 19:09:58 +00:00
29ee5efe24 yt-dlp: cleanup config 2025-08-02 10:05:51 +00:00
a52f1f0f6a yt-dlp: save sponsorblock tags
TODO: i can probably remove the mpv sponsorblock plugin now?
2025-08-02 09:46:59 +00:00
2d00c141e5 yt-dlp: fix to prefer english language videos 2025-08-02 09:27:24 +00:00
643b1ae661 nixpkgs: 2025-07-31 -> 2025-08-01 2025-08-01 18:11:25 +00:00
23f13c24b7 nixpkgs-wayland: 2025-07-30 -> 2025-08-01 2025-08-01 18:11:08 +00:00
a03ed72ea4 uassets: 2025-07-31 -> 2025-08-01 2025-08-01 18:10:53 +00:00
0f4854944c opencellid: 2025-07-30 -> 2025-08-01 2025-08-01 18:10:39 +00:00
5b10ff1e1e sway: allow select Zoom windows to float 2025-08-01 02:31:55 +00:00
1085978f99 slack: force it to use Wayland 2025-08-01 01:53:31 +00:00
62cf79e60d zoom: switch to Wayland & support webrtc screen sharing
i set this XDG_SESSION_TYPE=wayland system-wide because it's also needed for EVERY screensharing client. sad
2025-08-01 01:47:04 +00:00
fb64d1ad50 nixpkgs: 2025-07-30 -> 2025-07-31 2025-07-31 15:49:09 +00:00
a9301055a4 nixpkgs-wayland: bump 2025-07-31 15:48:57 +00:00
522365d498 uassets: 2025-07-30 -> 2025-07-31 2025-07-31 15:48:48 +00:00
3805f3f72d gpodder: dont use yt-dlp for channel management 2025-07-30 19:42:21 +00:00
c5a574fe6a nixpkgs: 2025-07-28 -> 2025-07-30 2025-07-30 18:16:15 +00:00
0b54c31b0c nixpkgs-wayland: 2025-07-28 -> 2025-07-30 2025-07-30 18:15:54 +00:00
a69ff986cd opencellid: 2025-07-28 -> 2025-07-30 2025-07-30 18:15:39 +00:00
2ba194e0a4 uassets: 2025-07-28 -> 2025-07-30 2025-07-30 18:15:26 +00:00
68889c364c tcpdump: enable dbus, bluetooth, rdma packet captures 2025-07-29 00:41:33 +00:00
5aafbb0dcb programs/tcpdump: move to own file 2025-07-29 00:17:53 +00:00
40fc2f9b9b ollama: document how good/bad more of these models are 2025-07-29 00:12:57 +00:00
e2932f1364 xdg-desktop-portal-nautilus: better co-existence with nautilus
don't install .desktop files for the portal (else i get two 'Files' app entries); rename to ensure we actually launch the portal instead of normal nautilus.
2025-07-28 21:22:04 +00:00
9afeeb62fa gpodder: fix config typos 2025-07-28 20:03:41 +00:00
1157215198 animatch: docs: link to upstream allegro5 + SDL patch 2025-07-28 19:51:45 +00:00
709d70a4d9 gpodder: configure settings (e.g. yt-dlp enablement) statically 2025-07-28 19:49:29 +00:00
9a1fcf8038 programs/gpodder: move to own directory 2025-07-28 18:52:48 +00:00
5edc6ba067 nixpkgs: 2025-07-27 -> 2025-07-28 2025-07-28 17:24:59 +00:00
394e4c42b4 2025-07-27 -> 2025-07-28 2025-07-28 17:24:33 +00:00
162953b004 uvtools: 5.1.5 -> 5.1.6 2025-07-28 17:24:06 +00:00
6c37bc38fa opencellid: 2025-07-27 -> 2025-07-28 2025-07-28 17:23:14 +00:00
ae08bfc496 uassets: 2025-07-27 -> 2025-07-28 2025-07-28 17:22:41 +00:00
713a85b3d3 fix bad --add-flags invocations
makeBinaryWrapper was updated some months ago to apply shell-style parsing to --add-flags; thats not what you want most of the time
2025-07-28 07:18:32 +00:00
49d4a79d87 animatch: switch SDL2 -> sdl2-compat, for clarity (theyre aliases) 2025-07-28 07:18:32 +00:00
3e09196687 dtrx: enable rpm; it builds on cross 2025-07-28 07:18:32 +00:00
1730ecc98f cross: update upstreaming statuses 2025-07-28 07:18:32 +00:00
755dc417ba nixpkgs: 2025-07-26 -> 2025-07-27 2025-07-28 07:18:32 +00:00
74f59eb596 audacity: switch to tenacity because audacity is broken on master 2025-07-28 07:18:32 +00:00
b08ab26ea1 git: alias "pul" to "pull" 2025-07-28 07:18:32 +00:00
afe4857a58 nixpkgs-wayland: 2025-07-25 -> 2025-07-27 2025-07-28 07:18:32 +00:00
8f74778955 syshud: 2025-03-11 -> 2025-07-26
only change is to README.md
2025-07-28 07:18:32 +00:00
557adce795 podcastindex-db: 2025-07-20 -> 2025-07-27 2025-07-28 07:18:32 +00:00
7e704ce55d opencellid: 2025-07-26 -> 2025-07-27 2025-07-28 07:18:32 +00:00
2dbe1df67e uassets: 2025-07-25 -> 2025-07-27 2025-07-28 07:18:32 +00:00
890cb72b58 hosts: grant servo ssh access to my other machines
it's nice to have a backup when desko is offline; servo is already privileged
2025-07-27 20:49:44 +00:00
d8cb9a3370 WiFi: add new nets 2025-07-27 20:26:32 +00:00
4c504dcdd6 nixpkgs: 2025-07-25 -> 2025-07-26 2025-07-26 21:20:47 +00:00
e87bbdf6cd nixpkgs-wayland: bump 2025-07-26 21:20:39 +00:00
f7a08ae2a0 opencellid: 2025-07-25 -> 2025-07-26 2025-07-26 21:20:30 +00:00
c7fc738c85 zimPackages.archlinux: 2025-06 -> 2025-07 2025-07-26 21:20:18 +00:00
385da61255 zimPackages.openstreetmap-wiki_en_all_maxi: 2023-05 -> 2025-07 2025-07-26 21:19:59 +00:00
bfbd5624fc ollama: ~ship kimi-k2~ don't ship it: it needs 3x the RAM any of my machines have :| 2025-07-26 08:16:13 +00:00
5a6dbada11 ollamaPackages.kimi-k2-1026b: init 2025-07-26 08:04:08 +00:00
e9e9c044bf gitignore: ignore build/ files 2025-07-26 04:54:27 +00:00
709edab85d nixpkgs: 2025-07-23 -> 2025-07-25 2025-07-25 17:12:21 +00:00
05d46ad870 nixpkgs-wayland: 2025-07-22 -> 2025-07-25 2025-07-25 17:12:02 +00:00
3eefd4ced1 opencellid: 2025-07-23 -> 2025-07-25 2025-07-25 17:11:41 +00:00
a42c5362bf uassets: 2025-07-23 -> 2025-07-25 2025-07-25 17:11:08 +00:00
c2cd4dd71c ollama: ship llama4-16x17b 2025-07-25 04:03:33 +00:00
4ec5eb1e88 fractal: docs: mention sane-wipe for how to restore a fractal db 2025-07-24 23:44:55 +00:00
0244242991 snapper: document how to manually delete snapshots 2025-07-24 23:33:46 +00:00
f9c72b6c58 servo: jellyfin: remove dead "lib" import 2025-07-24 23:23:27 +00:00
1ae307c8f4 servo: add recommendedProxySettings to all nginx services which were missing it 2025-07-24 23:10:34 +00:00
97dfb58bbb servo: gitea: place behind anubis
somebody was aggressively crawling it again, even with robots.txt :(
2025-07-24 22:42:24 +00:00
00acccb9c9 scripts/deploy: save a gc ref after building a host
this way i don't lose a shit ton of still-relevant builds when nix-gc'ing
2025-07-24 22:41:36 +00:00
181578384d nixpkgs: patches: update hash for zelda64recomp patch 2025-07-24 22:40:46 +00:00
011c428c08 ollamaPackages: docs: link to some mixture-of-experts models id like to try 2025-07-24 21:33:42 +00:00
e2a183e8d3 ollama: ship a bunch of new models 2025-07-24 19:53:17 +00:00
7b66e2f0e2 ollamaPackages: reintroduce docs from the deleted scope-level package.nix, as README.md 2025-07-24 17:50:16 +00:00
45d98d4517 ollamaPackages: use packagesFromDirectoryRecursive 2025-07-24 17:47:55 +00:00
7cb91731be nixpkgs: update hash for signal-desktop cross patch 2025-07-24 17:35:20 +00:00
47ce18fbfb newelle: docs: leave a note about the font cache building 2025-07-24 08:28:22 +00:00
0758697534 newelle: configure the ollama endpoint statically 2025-07-24 08:02:16 +00:00
5552decca6 alpaca: persist settings to disk 2025-07-24 07:39:02 +00:00
42546baadc mkOllamaModel: docs: link to nixpkgs PR for ollama-model-direct-download 2025-07-24 07:30:56 +00:00
11ada7d35d alpaca: ship on moby; fix cross 2025-07-24 07:29:43 +00:00
32946c35d9 newelle: ship on moby, hack in cross compilation 2025-07-24 07:03:40 +00:00
c2ab6748c4 ship alpaca, newelle LLM tools, to desktop devices
unfortunately they don't cross compile (yet)

newelle is my favored app atm, will likely remove one or the other after daily driving a bit
2025-07-24 03:30:28 +00:00
d54eff32a7 desko: ollama: fix/re-enable GPU acceleration 2025-07-24 02:12:20 +00:00
4d20be490a htop: enable GPU field (sorta, see note) 2025-07-24 01:47:31 +00:00
91771b7bef desko: make ollama visible to my wireguard devices 2025-07-24 01:20:14 +00:00
55d23c92c0 socat: ship it 2025-07-23 22:56:14 +00:00
0066b11754 linkBinIntoOwnPackage: guard against the empty-bin/ case 2025-07-23 22:55:59 +00:00
96373e7eaf nixpkgs: 2025-07-22 -> 2025-07-23 2025-07-23 17:32:12 +00:00
1afe5c3ba7 nixpkgs-wayland: bump 2025-07-23 17:31:59 +00:00
eeb2248831 uassets: 2025-07-22 -> 2025-07-23 2025-07-23 17:31:48 +00:00
d887e86c18 opencellid: 2025-07-22 -> 2025-07-23 2025-07-23 17:31:33 +00:00
fff1488761 zimPackages.alpinelinux_en_all_maxi: 2025-06 -> 2025-07 2025-07-23 17:31:20 +00:00
005dddfb8f static-nix-shell: only generate preambles when theyre needed
the previous logic would append : to PATH when the binary did not require PATH additions, however that's not a no-op. i think it causes PATH lookups in PWD. guard against that by only outputting preambles when we would expect them to have a side effect
2025-07-23 07:59:01 +00:00
30b0ba1a52 programs: ship sshpass 2025-07-23 00:41:36 +00:00
b41e29ac30 linkBinIntoOwnPackage: dont link man sections 0/2/3/9: i dont expect these to be associated with binaries 2025-07-23 00:36:13 +00:00
4dcc565c6c linkBinIntoOwnPackage: avoid linking extraneous man1 or man8 manpages 2025-07-23 00:32:30 +00:00
76c16deae1 linkBinIntoOwnPackage: protect against empty doc/man outputs 2025-07-22 23:40:39 +00:00
457beaca20 sane-bt-search: actually fix --h265 flag... 2025-07-22 23:39:51 +00:00
179c3a7ad7 linkIntoOwnPackage: handle share/man, share/doc consistently with nixpkgs
i.e. let stdenv move these to man/doc outputs, as appropriate
2025-07-22 23:28:26 +00:00
509208e305 sane-bt-search: better --h265 filtering 2025-07-22 22:51:40 +00:00
9c4f6f5bd8 linkIntoOwnPackage: refactor 2025-07-22 22:51:10 +00:00
a40a9dcfcc linkIntoOwnPackage: make pathsToLink introspectable/injectable by consumers 2025-07-22 22:29:16 +00:00
26469d5a11 runCommandLocalOverridable: dont invoke hooks more than once 2025-07-22 22:15:55 +00:00
ae2f2c47a4 fftest: simplify
upstream SDL cross compiles now, so the original comment doesn't apply
2025-07-22 22:11:20 +00:00
91133e096a formatting 2025-07-22 22:10:52 +00:00
a5223320af runCommandLocalOverridable: respect the env argument 2025-07-22 22:10:22 +00:00
e32c9d42d9 linkIntoOwnPackage: allow passing extra named arguments 2025-07-22 21:47:35 +00:00
52261d5bc3 programs: ship expect 2025-07-22 21:38:04 +00:00
99c4c4d043 nixpkgs: 2025-07-21 -> 2025-07-22 2025-07-22 18:23:39 +00:00
de95f45cb9 nixpkgs-wayland: 2025-07-21 -> 2025-07-22 2025-07-22 18:23:26 +00:00
ed311f902b opencellid: 2025-07-21 -> 2025-07-22 2025-07-22 18:23:03 +00:00
f2a0dd4e8f uassets: 2025-07-21 -> 2025-07-22 2025-07-22 18:22:51 +00:00
fcd92407d7 nixpkgs/patches.nix: remove some no-longer-relevant patches 2025-07-22 18:07:22 +00:00
5b7c93b490 mercurial: fix coloring for "hg qseries" command 2025-07-22 00:57:05 +00:00
1b4a6a53e6 mercurial: disable color for q alias 2025-07-22 00:35:40 +00:00
b1cdf9b63e sane-profile: init 2025-07-22 00:07:31 +00:00
1411add8ba git: ship difftastic as a standalone program 2025-07-21 23:49:23 +00:00
58b87e32e3 mercurial: have "qcat" use "colordiff" for syntax higlighting 2025-07-21 23:39:22 +00:00
eb304c6b61 programs: mercurial: add "qcat" alias 2025-07-21 23:20:20 +00:00
2db59f380c programs: ship cdecl 2025-07-21 23:20:06 +00:00
2691e3a8eb programs: mercurial: move to own directory 2025-07-21 22:13:39 +00:00
9f8193787f programs: ship bc 2025-07-21 21:47:03 +00:00
b43328f233 firefox-extensions.sponsorblock: fix first-run check? not sure this is actually necessary w/ auto-updates disabled 2025-07-21 21:22:09 +00:00
b45f3ea7db firefox: disable extension auto-updates
i mean, the whole concept assumes you don't patch any of those addons in the first place...
2025-07-21 21:21:29 +00:00
afbed1e18d nixpkgs: 2025-07-20 -> 2025-07-21 2025-07-21 20:35:31 +00:00
3068ac35b7 nixpkgs-wayland: 2025-07-20 -> 2025-07-21 2025-07-21 20:35:15 +00:00
6c4a6a596f opencellid: 2025-07-20 -> 2025-07-21 2025-07-21 20:35:02 +00:00
913dfbd798 uassets: 2025-07-20 -> 2025-07-21 2025-07-21 20:34:50 +00:00
f49ce4b2fd firefox: disable "security.tls.enable_0rtt_data"; add docs to other settings
i'm not that passionate about the 0rtt setting; but i worry the vulnerabilities could stack with e.g. insecure renogiation or other vulns
2025-07-21 08:23:39 +00:00
496b2a10b4 openssl: ship it 2025-07-21 05:49:31 +00:00
9f8df5db63 static-nix-shell.mkZsh: implement shellPreamble to reduce wrapping 2025-07-20 23:44:03 +00:00
6f590899bb static-nix-shell: fix typo in assigning PATH/XDG_DATA_DIRS 2025-07-20 23:27:23 +00:00
f8d2dbca62 sane-bt-search: add "--sort-by size" option 2025-07-20 23:25:19 +00:00
3b458d5337 sane-bt-search: improve help message for "--sort-by" option 2025-07-20 23:23:25 +00:00
3b9fd0a548 sane-bt-search: add tracker IDs for old (unused) trackers 2025-07-20 23:03:43 +00:00
4ef705d143 static-nix-shell.mkPython3: use shellPreamble to avoid an extra layer of wrapping
actually avoids *two* layers of wrapping, since we aren't using the nixpkgs Python wrapper anymore either
2025-07-20 22:55:15 +00:00
233320e3a1 gpodder-configured: expose helper utils via passthru 2025-07-20 22:46:31 +00:00
1a89305f18 static-nix-shell: more clearly mark the nix-shell preambles 2025-07-20 20:56:11 +00:00
3b8b227c09 static-nix-shell.mkYsh: manually inject PATH and XDG_DATA_DIRS to remove an extra layer of wrapping 2025-07-20 20:55:08 +00:00
5eb620d521 static-nix-shell.mkBash: manually inject PATH and XDG_DATA_DIRS to remove an extra layer of wrapping 2025-07-20 20:31:06 +00:00
8fc16eaf39 static-nix-shell: remove unused extraMakeWrapperArgs argument
it wasn't even implemented right
2025-07-20 20:09:50 +00:00
fa38f70079 nixpkgs: 2025-07-19 -> 2025-07-20 2025-07-20 19:00:50 +00:00
aed191b255 nixpkgs-wayland: 2025-07-19 -> 2025-07-20 2025-07-20 19:00:30 +00:00
02fe7e02c2 uvtools: 5.1.4 -> 5.1.5 2025-07-20 19:00:11 +00:00
0aaf453ba7 euicc-manual: 2025-07-19 -> 2025-07-20 2025-07-20 18:59:56 +00:00
dd12514486 uassets: 2025-07-19 -> 2025-07-20 2025-07-20 18:59:39 +00:00
d0eb5851d5 podcastindex-db: 2025-07-15 -> 2025-07-20 2025-07-20 18:59:24 +00:00
2fc1baebd6 opencellid: 2025-07-19 -> 2025-07-20 2025-07-20 18:59:06 +00:00
8477e51538 fix systemd backlight persistence 2025-07-19 23:55:22 +00:00
e016ed9272 fix nixos activation notify-send 2025-07-19 23:35:38 +00:00
e311e0e757 tailscale: remote bogus comment
/dev/net/tun *is* userspace networking; that's all tailscale can do
2025-07-19 23:33:24 +00:00
e6f724a54c networkmanager: dont set invalid main.dns values 2025-07-19 23:32:51 +00:00
bd735d4400 networkmanager-split: ship manpages 2025-07-19 22:36:59 +00:00
2d8dcb600c bluetooth pairings: set correct service.Type = "oneshot" 2025-07-19 21:12:41 +00:00
62a5711a2a wifi pairings: set correct service.Type = "oneshot"
this ensures correct ordering between the things which use it
2025-07-19 21:12:23 +00:00
bdbc632e1e nixpkgs: 2025-07-18 -> 2025-07-19 2025-07-19 19:21:49 +00:00
e25d8a29b9 nixpkgs-wayland: 0-unstable-2025-07-15 -> 0-unstable-2025-07-19 2025-07-19 19:21:49 +00:00
504a13832f euicc-manual: 0-unstable-2025-05-20 -> 0-unstable-2025-07-19 2025-07-19 19:21:49 +00:00
a95bbd23b4 mslicer: 0.2.2-unstable-2025-06-25 -> 0.2.2-unstable-2025-07-18 2025-07-19 19:21:49 +00:00
e2bb663c8e opencellid: 2025-07-16 -> 2025-07-19 2025-07-19 19:21:49 +00:00
04e4d9ed23 uassets: 2025-07-15 -> 2025-07-19 2025-07-19 19:21:49 +00:00
44d83ffdfd rk3399-ppp-sound DTO: elaborate docs 2025-07-19 19:21:49 +00:00
ee92770d11 linuxPackages.ppp-imx258: init
i'm failing to get working cam with this, but gotta start somewhere...
2025-07-19 19:21:49 +00:00
f39978ee43 todo.md: task for getting moby wifi to auto-connect 2025-07-19 19:21:49 +00:00
96a18c86dd static-nix-shell: add infrastructure for configuring PATH/XDG_DATA_DIRS without wrapping, in a shell-specific manner 2025-07-19 19:21:49 +00:00
d426a9e9e8 programs: ship "wiremix" 2025-07-19 19:21:49 +00:00
96d3e3fcca nixpkgs: patches: link to alsa-ucm-conf update 2025-07-19 19:21:49 +00:00
a84d48d601 nixpkgs: remove commented-out patches which have since been merged 2025-07-19 19:21:49 +00:00
7e882212c4 linuxPackages.{imx258,rt5640}: prefix name with "megi-"
to differentiate with other (future) customized versions of these modules
2025-07-19 19:21:49 +00:00
bde9114ce9 pinephone-pro: disable megi's imx258; fixes audio but loses us the camera (which may or may not have been working before) 2025-07-19 19:21:49 +00:00
d7a1859b97 linuxPackages.imx258: document why this custom kernel module is needed
and yes, this is still up-to-date with megi's as of linux 6.15
2025-07-19 19:21:49 +00:00
958f8ef0c9 pinephone-pro: add docs around kernel building 2025-07-19 19:21:49 +00:00
d37543e9e9 pinephone-pro: ship megi's rt5640 driver
longer term, i should switch back to the kernel driver, but first i gotta figure out why it fails...
2025-07-19 19:21:49 +00:00
88454ff073 alsa-ucm-conf: show how to build unmerged versions 2025-07-19 19:21:49 +00:00
0c791e30a0 linuxPackages_6_15.rt5640: fix build against linux 6.15
updated version comes from megi:
```console
$ cd src/linux
$ git fetch stable --tags
$ git checkout v6.15
$ patch -p1 <(curl https://xff.cz/kernels/6.15/patches/all.patch)
$ cp sound/soc/codecs/rt5640.c pkgs/linux-packages/rt5640/snd-soc-rt5640.c
```
2025-07-19 19:21:49 +00:00
e4c6c01f8d sane-input-handler: fix for more recent oils shell 2025-07-19 19:21:49 +00:00
87ce176081 static-niux-shell: support an optional installCheck phase 2025-07-19 19:21:49 +00:00
0f29c667aa sane-input-handler: move to pkgs/by-name 2025-07-19 19:21:49 +00:00
d7f3b7bcff [NOT FOR MOBY DEPLOY] nixpkgs: 2025-07-16 -> 2025-07-18
moby sound issues persist
2025-07-19 19:21:49 +00:00
009691212c [NOT FOR MOBY DEPLOY] nixpkgs: 2025-07-06 -> 2025-07-16
moby has broken sound output (kernel ASoC log errors), and GUI is unresponsive
2025-07-19 19:21:42 +00:00
82e049d99d nixpkgs-wayland: 2025-07-10 -> 2025-07-15 2025-07-18 16:12:05 +00:00
17cdbb12d2 sops-nix: 2025-07-04 -> 2025-07-15 2025-07-18 16:11:40 +00:00
c1edaf792a opencellid: 2025-07-15 -> 2025-07-16 2025-07-18 16:11:09 +00:00
36869a94b9 uassets: 2025-07-10 -> 2025-07-15 2025-07-18 16:10:53 +00:00
d669e66ffa sane-tag-media: fix missing closing paren in log message 2025-07-18 05:17:05 +00:00
2fcf88b89b zsh: define ls helpers in terms of eachother 2025-07-16 00:47:26 +00:00
023f006eb5 zsh: define a "lrt" alias 2025-07-16 00:45:29 +00:00
bdd012fa43 zshrc: use $HOME instead of hardcoding the user 2025-07-16 00:25:21 +00:00
cbcb43ac2c zsh: split zshrc into dedicated file 2025-07-16 00:24:38 +00:00
fde708e602 mercurial: ship mercurialFull
not sure _entirely_ what it adds though
2025-07-15 23:02:55 +00:00
e4fc268c24 mercurial: add an old "qcref" alias, but it doesnt work on modern (or nix?) mercurial 2025-07-15 22:23:43 +00:00
5f829789fd podcastindex-db: 2025-07-06 -> 2025-07-15 2025-07-15 06:44:50 +00:00
28a13219be opencellid: 2025-07-10 -> 2025-07-15 2025-07-15 06:44:37 +00:00
36f2bcd80c tailscale: log added/removed routes 2025-07-15 06:44:19 +00:00
1b181755c7 nixpkgs-wayland: 2025-07-09 -> 2025-07-10 2025-07-10 16:52:43 +00:00
ef68078de6 opencellid: 2025-07-09 -> 2025-07-10 2025-07-10 16:52:28 +00:00
d35ef1be32 uassets: 2025-07-09 -> 2025-07-10 2025-07-10 16:52:15 +00:00
ad2a555256 zimPackages.wikipedia_en_100: 2025-06 -> 2025-07 2025-07-10 16:51:58 +00:00
87908fdf03 nixpkgs-wayland: 2025-07-07 -> 2025-07-09 2025-07-09 15:59:36 +00:00
f079b3d920 zimPackages.devdocs_en_nix: 2025-04 -> 2025-07 2025-07-09 15:59:23 +00:00
82f7580d4c opencellid: 2025-07-07 -> 2025-07-09 2025-07-09 15:59:05 +00:00
df63240580 uassets: 2025-07-07 -> 2025-07-09 2025-07-09 15:58:54 +00:00
e8c5dda396 sane-bt-search: link to tracking issues for bitmagnet limitations 2025-07-09 06:24:42 +00:00
127d731892 signal-desktop: enable desktop notifications
they're actually integrated into sway; show up in swaync
2025-07-08 23:04:07 +00:00
f2a1aafcc6 zsh: tune options 2025-07-08 20:16:33 +00:00
1f3957bcc4 zsh: fix aliases/functions such that they can refer to eachother 2025-07-08 19:26:43 +00:00
fdbdf826d3 sane-bt-search: more precisely specify the --tracker argument options 2025-07-08 18:56:29 +00:00
f66920854a snippets: add a few more 2025-07-08 17:38:58 +00:00
33263c27ff sane-bt-search: calculate bitmagnet URI by using the InfoHash field instead of parsing MagnetUri 2025-07-07 22:27:52 +00:00
25aa82b038 sane-bt-search: add a --tracker parameter to query just a single tracker 2025-07-07 21:44:54 +00:00
fbce38a47a sane-bt-search: fix BitMagnet torrent page URIs 2025-07-07 21:44:54 +00:00
604599b3b6 sane-bt-search: refactor: split out Tracker details into own class 2025-07-07 21:44:54 +00:00
cf38651e8d netns: remove addresses from loopback device 2025-07-07 21:44:54 +00:00
48bd6d304f sane-bt-search: improve sort metrics 2025-07-07 21:44:54 +00:00
d5711e7de7 netns: set lo up when initializing the netns
this is critical for services which communicate with eachother, e.g. jackett -> bitmagnet
2025-07-07 21:44:54 +00:00
5e3854595e servo: bitmagnet: add docs 2025-07-07 19:08:18 +00:00
9f3cf94a0e nixpkgs-bootstrap: update the signal-desktop patch hash 2025-07-07 16:48:56 +00:00
bec6b6ed72 nixpkgs-wayland: 2025-07-06 -> 2025-07-07 2025-07-07 15:52:47 +00:00
fdf2b5327e opencellid: 2025-07-06 -> 2025-07-07 2025-07-07 15:52:31 +00:00
b7daf1ad04 uassets: 2025-07-06 -> 2025-07-07 2025-07-07 15:52:14 +00:00
b454a5a34f signal-desktop: push cross compilation patches upstream 2025-07-07 09:28:19 +00:00
ae29f3066b nixpkgs: 2025-07-05 -> 2025-07-06 2025-07-06 21:25:42 +00:00
70b1dda0a1 nixpkgs-wayland: 2025-07-05 -> 2025-07-06 2025-07-06 21:25:33 +00:00
960ac80ba4 podcastindex-db: 2025-07-02 -> 2025-07-06 2025-07-06 21:25:21 +00:00
214df43af2 opencellid: 2025-07-05 -> 2025-07-06 2025-07-06 21:25:03 +00:00
d67169aa13 uassets: 2025-07-05 -> 2025-07-06 2025-07-06 21:24:48 +00:00
019991cf1e signal-desktop: dont hold onto nodejs at all 2025-07-06 08:25:22 +00:00
c4f25ac198 signal-desktop: remove ref to build-time packages 2025-07-06 07:58:14 +00:00
831bddbcb6 programs: signal-desktop: ship upstream nixpkgs version, patched to cross-compile
because signal is too much bullshit for me to maintain on my own
2025-07-06 07:25:35 +00:00
4ac8805743 signal-desktop: fix cross compilation 2025-07-06 07:24:48 +00:00
abd5e8a18d flare-signal: test & update compat/status 2025-07-06 03:22:52 +00:00
a6a1597f26 signal-dessktop-from-src: freeze at 7.60.0 2025-07-05 23:08:40 +00:00
dede9e3ddb nixpkgs: 2025-07-04 -> 2025-07-05 2025-07-05 23:02:56 +00:00
69ac264681 nixpkgs-wayland: 2025-07-03 -> 2025-07-05 2025-07-05 23:02:35 +00:00
39fc431802 sops-nix: 2025-06-17 -> 2025-07-04 2025-07-05 23:02:19 +00:00
9b9a0fa953 uassets: 2025-07-03 -> 2025-07-05 2025-07-05 23:02:02 +00:00
85b41efc7e opencellid: 2025-07-03 -> 2025-07-05 2025-07-05 23:01:44 +00:00
bd80c3b6f7 nixpkgs: 2025-07-03 -> 2025-07-04 2025-07-04 07:46:30 +00:00
91624ba253 uassets: bump 2025-07-04 07:46:21 +00:00
e52ae986b6 Revert "signal-desktop-from-src: 7.60.0 -> 7.61.0"
This reverts commit 7c0523f3e6.

upon launch, Signal says 7.61.0 has expired and does not let you message
anyone.

fuck signal i hate their bullshit. "bUt It'S sO mUch EaSIer tHAn
MAtrIx". bruh
2025-07-03 07:47:34 +00:00
dead0a4b7c nixpkgs: 2025-07-02 -> 2025-07-03 2025-07-03 07:42:54 +00:00
fc29c61ab7 nixpkgs-wayland: 2025-07-02 -> 2025-07-03 2025-07-03 07:42:42 +00:00
7c0523f3e6 signal-desktop-from-src: 7.60.0 -> 7.61.0 2025-07-03 07:42:30 +00:00
00fdcb7ec3 opencellid: 2025-07-02 -> 2025-07-03 2025-07-03 07:42:09 +00:00
87fbeaa2bf uassets: 2025-07-02 -> 2025-07-03 2025-07-03 07:41:54 +00:00
3cd1bd2bff zsh: expose un-aliased coreutils ls as _ls 2025-07-03 05:08:06 +00:00
11f8127cc3 zsh: fix ls aliases
they were being overriden by shittier nixos defaults
2025-07-02 21:54:16 +00:00
722c94d169 nixpkgs: 2025-06-27 -> 2025-07-02 2025-07-02 19:52:46 +00:00
f1b8fd7a9d nixpkgs-wayland: 2025-06-28 -> 2025-07-02 2025-07-02 19:52:24 +00:00
0c4d84de90 sponsorblock: 5.13.1 -> 5.13.2 2025-07-02 19:52:10 +00:00
9ee805d2f4 uvtools: 5.1.3 -> 5.1.4 2025-07-02 19:51:57 +00:00
ce7702fbb7 uassets: 2025-06-28 -> 2025-07-02 2025-07-02 19:51:37 +00:00
6a1bdeb3a9 podcastindex-db: 2025-06-22 -> 2025-07-02 2025-07-02 19:51:24 +00:00
a61a3afd73 opencellid: 2025-06-28 -> 2025-07-02 2025-07-02 19:51:08 +00:00
728e97b122 ssh: remove unused SSH_EXTRA_KNOWN_HOSTS env hook 2025-07-02 07:37:08 +00:00
558e9edc4b snapper: document how to delete snapshots/data 2025-07-01 16:25:54 +00:00
195e420181 bind: enable reverse DNS on select networks 2025-07-01 16:18:33 +00:00
dd2aee0e10 nixpkgs: update patch hashes 2025-07-01 16:18:14 +00:00
851071c8e1 zsh: tweak ls aliases 2025-07-01 07:26:22 +00:00
73fcb27251 sane-private-unlock-remote: add a timeout 2025-06-29 20:08:10 +00:00
2e7f164738 fix native hosts to not build as cross 2025-06-28 22:48:22 +00:00
689d9ead5a nixpkgs-wayland: 2025-06-27 -> 2025-06-28 2025-06-28 21:19:33 +00:00
f1f0115e1b uassets: 2025-06-27 -> 2025-06-28 2025-06-28 21:19:13 +00:00
ecf90f3662 opencellid: 2025-06-27 -> 2025-06-28 2025-06-28 21:19:01 +00:00
58ab12310a toplevel: define a "static-x86_64" and "static-aarch64" host, to experiment with static linking
progress is early, and it's unclear if the work the make gtk, opengl, etc compatible with such a system will ever be feasible
2025-06-28 11:54:47 +00:00
4ceab76cd1 get "hosts.baseline-x86_64" to eval 2025-06-28 10:17:59 +00:00
a2634219bc nixpkgs: 2025-06-26 -> 2025-06-27 2025-06-27 17:58:33 +00:00
cd6e128a6d nixpkgs-wayland: 2025-06-26 -> 2025-06-27 2025-06-27 17:02:24 +00:00
a472f35775 opencellid: 2025-06-26 -> 2025-06-27 2025-06-27 17:02:10 +00:00
0558eb71d4 uassets: 2025-06-26 -> 2025-06-27 2025-06-27 17:01:57 +00:00
5a7310759e lddtree: ship 2025-06-27 07:16:23 +00:00
7e84c7e237 patchelf: ship it 2025-06-27 07:12:44 +00:00
d7f79ed7d9 nixpkgs: 2025-06-25 -> 2025-06-26 2025-06-26 18:23:15 +00:00
ba9e4b95ba nixpkgs-wayland: 2025-06-24 -> 2025-06-26 2025-06-26 18:23:02 +00:00
e1cc1570c7 signal-desktop-from-src: 7.59.0 -> 7.60.0 2025-06-26 17:46:31 +00:00
ecfe480394 opencellid: 2025-06-25 -> 2025-06-26 2025-06-26 17:46:12 +00:00
ca2e15c8c5 uassets: 2025-06-25 -> 2025-06-26 2025-06-26 17:46:01 +00:00
194151367c nixpkgs: 2025-06-24 -> 2025-06-25 2025-06-25 15:59:53 +00:00
87d9415223 nixpkgs-wayland: same-day bump 2025-06-25 15:59:34 +00:00
7d52b4210a mslicer: 0.2.2-unstable-2025-06-14 -> 0.2.2-unstable-2025-06-25 2025-06-25 15:59:21 +00:00
3c1b1c2967 zimPackages.archlinux_en_all_maxi: 2025-05 -> 2025-06 2025-06-25 15:58:44 +00:00
0b9e012bba uassets: 2025-06-24 -> 2025-06-25 2025-06-25 15:58:27 +00:00
aa7e60c415 opencellid: 2025-06-24 -> 2025-06-25 2025-06-25 15:58:13 +00:00
70b0f3a100 x86_64: enable nested virtualization (speculatively) 2025-06-25 08:16:57 +00:00
1c268038b2 users: colin: add to "kvm" group 2025-06-24 20:25:31 +00:00
6d335a2122 nixpkgs: 2025-06-23 -> 2025-06-24 2025-06-24 15:13:13 +00:00
cc37289967 nixpkgs-wayland: 2025-06-23 -> 2025-06-24 2025-06-24 15:13:04 +00:00
1ee216f7b1 zimPackages.wikipedia_en_all_mini: 2024-04 -> 2025-06 2025-06-24 15:12:50 +00:00
76ac917230 uninsane-dot-org: 2025-02-09 -> 2025-06-23 2025-06-24 15:12:36 +00:00
3ced6b5db9 opencellid: 2025-06-23 -> 2025-06-34 2025-06-24 15:00:23 +00:00
b6a55de5bd uassets: 2025-06-23 -> 2025-06-24 2025-06-24 15:00:12 +00:00
f6b1754dd1 nixpkgs: 2025-06-22 -> 2025-06-23 2025-06-23 15:19:47 +00:00
17b5cf31d1 nixpkgs-wayland: 2025-06-22 -> 2025-06-23 2025-06-23 15:19:29 +00:00
67c314b96c opencellid: 2025-06-22 -> 2025-06-23 2025-06-23 15:19:14 +00:00
7fefed160f uassets: 2025-06-22 -> 2025-06-23 2025-06-23 15:19:00 +00:00
d9c1a97ef6 modules/image.nix: remove dependency on mobile-nixos
the images build, but i have not tried booting them
2025-06-23 02:32:17 +00:00
dafa562f51 programs: cargo: assign buildCost = 1 2025-06-22 22:47:10 +00:00
bf4e5bce27 nixpkgs: 2025-06-21 -> 2025-06-22 2025-06-22 21:31:10 +00:00
059193d09a nixpkgs-wayland: 2025-06-21 -> 2025-06-22 2025-06-22 21:31:10 +00:00
5365044412 signal-desktop-from-src: fix hash 2025-06-22 21:31:10 +00:00
8fb8d468f9 opencellid: 2025-06-21 -> 2025-06-22 2025-06-22 21:31:10 +00:00
136abd88e0 podcastindex-db: 2025-06-16 -> 2025-06-22 2025-06-22 21:31:10 +00:00
dedd89bc43 uassets: 2025-06-21 -> 2025-06-22 2025-06-22 21:31:10 +00:00
e2b432f759 bootpart-u-boot-rpi-aarch64: cleanup
didn't try booting this; not super educated on all the different components here
2025-06-22 21:31:10 +00:00
4dc007460d cadey: ship rpi-400 boot files 2025-06-22 21:31:10 +00:00
2e40a2cf0c hosts: consolidate pkgs.bootpart-uefi-x86_64 into hal/x86_64 2025-06-22 21:31:10 +00:00
8ace840d50 cadey: ship kodi 2025-06-22 21:31:10 +00:00
8aa2396c36 hosts/cadey: init
this hasn't been deployed to hardware -- yet
2025-06-22 21:31:10 +00:00
082db767af sane-bt-add: support "--other $NAME" torrent types 2025-06-22 03:12:28 +00:00
0220a3c22b nixpkgs: update patch hashes 2025-06-22 01:36:22 +00:00
0212be3ac8 flowy: enable rsync-net backups 2025-06-21 16:31:17 +00:00
ec8092a99d nixpkgs: 2025-06-20 -> 2025-06-21; push buildfix patches upstream 2025-06-21 07:43:40 +00:00
03c17dedd2 nixpkgs-wayland: 2025-06-20 -> 2025-06-21 2025-06-21 07:42:55 +00:00
bd9d57c746 sponsorblock: 5.13 -> 5.13.1 2025-06-21 07:42:44 +00:00
51203647d4 zimPackages.alpinelinux_en_all_maxi: 2023-01 -> 2025-06 2025-06-21 07:42:32 +00:00
037e24e877 uassets: 2025-06-20 -> 2025-06-21 2025-06-21 07:42:15 +00:00
81c1db550f opencellid: 2025-06-20 -> 2025-06-21 2025-06-21 07:42:05 +00:00
4703744aa1 nixpkgs: 2025-06-18 -> 2025-06-20 2025-06-21 06:28:26 +00:00
7476f80cbe rsync: enable ssh access 2025-06-21 06:27:59 +00:00
0261110fa5 bypass-paywalls-clean: disable
sources are offline, i havent used it for several months anyway
2025-06-21 06:27:20 +00:00
34ea0a2756 signal-desktop: remove outdated comment 2025-06-21 06:26:27 +00:00
d891dbce96 signal-desktop-from-src: 7.58.0 -> 7.59.0 2025-06-20 21:42:17 +00:00
a5b5b58659 opencellid: 2025-06-18 -> 2025-06-20 2025-06-20 19:42:15 +00:00
18b3877eaa sponsorblock: 5.12.4 -> 5.13 2025-06-20 18:31:41 +00:00
751131bcb0 uassets: 2025-06-18 -> 2025-06-20 2025-06-20 18:31:05 +00:00
7c6d8e2da5 wifi: add new network 2025-06-20 02:11:00 +00:00
bb536e1a89 bind: add records for resolving localhost 2025-06-19 03:16:04 +00:00
13800abfbe tailscale: route the 192.168/16 IP space 2025-06-19 03:16:04 +00:00
da88798ff2 slack: allow access to ~/tmp 2025-06-18 17:30:46 +00:00
8ddf1fce66 nixpkgs: 2025-06-17 -> 2025-06-18 2025-06-18 17:27:33 +00:00
fbc2a06ab9 nixpkgs-wayland: 2025-06-16 -> 2025-06-18 2025-06-18 17:27:20 +00:00
dd93ccd26f opencellid: 2025-06-17 -> 2025-06-18 2025-06-18 17:26:58 +00:00
b6c638ac0b uassets: 0-unstable-2025-06-17 -> 0-unstable-2025-06-18 2025-06-18 17:26:43 +00:00
e241a1f78f hg: tune the [diff] config 2025-06-18 00:43:36 +00:00
42e863cb93 todo.md: task for showing deadlines less often 2025-06-17 21:42:08 +00:00
fb5f15e757 zoom: persist enough data that it stays logged in across exits (but not boots?) 2025-06-17 21:41:56 +00:00
09fd2426e3 nixpkgs: 2025-06-16 -> 2025-06-17 2025-06-17 14:44:32 +00:00
5fa2c56889 nixpkgs-wayland: same-day update 2025-06-17 14:44:23 +00:00
a76173c0ec opencellid: 2025-06-16 -> 2025-06-17 2025-06-17 14:44:10 +00:00
e1bdd9fa0f sops-nix: 2025-06-10 -> 2025-06-17 2025-06-17 14:43:57 +00:00
2dafce82df uassets: 2025-06-16 -> 2025-06-17 2025-06-17 14:43:39 +00:00
d4e668e6fd sane-private-unlock-remote: fix ssh sandboxing (hopefully) 2025-06-17 04:28:14 +00:00
af8f7c06ad nixpkgs: 2025-06-14 -> 2025-06-16 2025-06-17 03:53:42 +00:00
6c11a90bff mslicer: 0.2.1-unstable-2025-05-01 -> 0.2.2-unstable-2025-06-14 2025-06-17 03:53:23 +00:00
59d5d6592e nixpkgs-wayland: 2025-06-14 -> 2025-06-16 2025-06-16 16:56:56 +00:00
8641ee16ad opencellid: 2025-06-14 -> 2025-06-16 2025-06-16 16:56:28 +00:00
643e0f7bbc podcastindex-db: 2025-06-08 -> 2025-06-16 2025-06-16 16:56:16 +00:00
c2e686217c uassets: 2025-06-14 -> 2025-06-16 2025-06-16 16:55:45 +00:00
d4c9e47cff uvtools: 5.1.2 -> 5.1.3 2025-06-16 16:55:28 +00:00
0b241ea4ab firefox: update wiki.nixos.org search URL 2025-06-15 01:53:25 +00:00
c944521cb2 servo: deploy waka.laka.osaka as a derivation instead of linking to external untracked files 2025-06-14 21:37:20 +00:00
d3cc96415b servo: hickory-dns: discover zones via config.sane.dns 2025-06-14 21:07:08 +00:00
dabeadea09 servo: laka.osaka: fix so hickory-dns serves the site, and / is served by index.html 2025-06-14 21:03:05 +00:00
f0126eae61 nixpkgs: 2025-06-13 -> 2025-06-14 2025-06-14 20:58:35 +00:00
8f214ca89d nixpkgs-wayland: 2025-06-13 -> 2025-06-14 2025-06-14 20:58:11 +00:00
ee3442567a opencellid: 2025-06-13 -> 2025-06-14 2025-06-14 20:57:55 +00:00
5d956ce884 uassets: 2025-06-13 -> 2025-06-14 2025-06-14 20:57:46 +00:00
fa5122af8e servo: nginx: define laka.osaka website 2025-06-14 20:26:21 +00:00
1edf5b2d89 servo: uninsane.org: remove SSL hacks
i *think* these aren't needed, now i don't use ejabberd
2025-06-14 20:10:31 +00:00
58e72a6457 servo: uninsane.org: remove public logging; these don't go anywhere, with goaccess being disabled 2025-06-14 20:08:26 +00:00
8238ac10f5 servo: nginx: split uninsane.org out of main config file 2025-06-14 20:05:55 +00:00
c739e94658 servo: nginx: move to own folder 2025-06-14 19:57:26 +00:00
85fb7b04d0 sway: configure gpodder to always render titlebar 2025-06-14 19:53:16 +00:00
93d68e494f neovim: add H keybinding to switch between matching .c and .h files 2025-06-13 19:39:37 +00:00
6f4e96145a megapixels-next: 2025-06-01 -> 2025-06-12 2025-06-13 19:02:35 +00:00
a93e226058 nixpkgs: 2025-06-12 -> 2025-06-13 2025-06-13 19:02:21 +00:00
980a62ecfc nixpkgs-wayland: 2025-06-12 -> 2025-06-13 2025-06-13 19:02:04 +00:00
3d90e2a606 opencellid: 2025-06-12 -> 2025-06-13 2025-06-13 19:01:47 +00:00
c83b5fc771 uassets: 2025-06-12 -> 2025-06-13 2025-06-13 19:01:34 +00:00
7c27e27e27 programs/mercurial: implement a "hg qdup" alias 2025-06-13 07:35:12 +00:00
024fbd48a2 programs/mercurial: try to create an alias to migrate patches across stacks, but i'm too dumb to get it to actually work 2025-06-13 07:21:28 +00:00
5ec78adf11 feeds: unsubscribe from Away Days 2025-06-13 03:38:56 +00:00
cfc08dc06c sane-private-unlock: only unlock if we actually have a session 2025-06-12 19:14:45 +00:00
331cbaf926 modules/users: escape values in ~/.config/environment.d to avoid syntax errors 2025-06-12 19:14:29 +00:00
5aed77b30d programs/mercurial: configure some MQ-related aliases 2025-06-12 19:13:55 +00:00
2c25c54a7e programs/mercurial: add missing "less" dependency 2025-06-12 17:53:43 +00:00
57711561d6 signal-desktop-from-src: fix hash 2025-06-12 17:52:20 +00:00
1f779320d0 nixpkgs: 2025-06-11 -> 2025-06-12 2025-06-12 15:30:04 +00:00
7f57ead946 nixpkgs-wayland: 2025-06-11 -> 2025-06-12 2025-06-12 15:29:53 +00:00
26eddd0eff signal-desktop-from-src: 7.57.0 -> 7.58.0 2025-06-12 15:29:35 +00:00
d3bb04f84c opencellid: 2025-06-11 -> 2025-06-12 2025-06-12 15:29:18 +00:00
a0a2f60b44 uassets: 2025-06-11 -> 2025-06-12 2025-06-12 15:29:06 +00:00
69c9b6badc flowy: enable private-unlock to servo 2025-06-11 20:55:44 +00:00
9b3451f380 nixpkgs: 2025-06-10 -> 2025-06-11 2025-06-11 18:22:15 +00:00
12584bcfde nixpkgs-wayland: 2025-06-10 -> 2025-06-11 2025-06-11 18:22:04 +00:00
b87fdc2ae1 opencellid: 2025-06-10 -> 2025-06-11 2025-06-11 18:21:53 +00:00
a730800d76 sops-nix: 2025-05-18 -> 2025-06-10 2025-06-11 18:21:38 +00:00
7b62be4fa8 uassets: 2025-06-10 -> 2025-06-11 2025-06-11 18:21:28 +00:00
d39a4e38c3 nixpkgs: 2025-06-08 -> 2025-06-10 2025-06-10 16:59:27 +00:00
a6a55dca21 nixpkgs-wayland: 2025-06-08 -> 2025-06-10 2025-06-10 16:59:16 +00:00
4ad9192444 opencellid: 2025-06-08 -> 2025-06-10 2025-06-10 16:59:04 +00:00
c08af9e96f uassets: 2025-06-08 -> 2025-06-10 2025-06-10 16:58:53 +00:00
3765e24f16 zimPackages.wikipedia_en_100: 2025-05 -> 2025-06 2025-06-10 16:58:39 +00:00
ff667bc576 sway: switch back to shipping the nixpkgs-wayland version 2025-06-10 16:58:10 +00:00
81201a97ba servo: /var/media/archive/{README.md->temp/README.md} 2025-06-08 21:23:56 +00:00
d86d32bb55 scripts/deploy: swap lappy -> flowy for default deployments 2025-06-08 19:40:11 +00:00
feaf2ead69 nixpkgs: 2025-06-07 -> 2025-06-08 2025-06-08 19:33:56 +00:00
f811ac3a99 nixpkgs-wayland: 2025-06-07 -> 2025-06-08 2025-06-08 19:33:46 +00:00
9e74337e2d podcastindex-db: 2025-06-02 -> 2025-06-08 2025-06-08 19:33:31 +00:00
9886f95e62 opencellid: 2025-06-07 -> 2025-06-08 2025-06-08 19:33:18 +00:00
38074e0a95 uassets: 2025-06-07 -> 2025-06-08 2025-06-08 19:33:04 +00:00
881ddbc2f2 nixpkgs: push bind extraArgs patch upstream 2025-06-07 19:35:22 +00:00
8d76f4ccae bind: log to /var/log/named/named.log 2025-06-07 19:02:35 +00:00
3bff1fd013 bind: more docs 2025-06-07 09:55:18 +00:00
5acacb78fb nixpkgs: remove upstreamed patches 2025-06-07 09:22:39 +00:00
3c71e2f363 bind: configure minimal logging 2025-06-07 09:14:11 +00:00
e2b4f317fb nixpkgs: 2025-06-06 -> 2025-06-07 2025-06-07 06:58:05 +00:00
2e4a6f061e todo.md: add netns-related tasks 2025-06-07 06:57:49 +00:00
80c8131120 nixpkgs-wayland: 2025-06-06 -> 2025-06-07 2025-06-07 06:57:28 +00:00
e7ce064c69 opencellid: 2025-06-06 -> 2025-06-07 2025-06-07 06:57:07 +00:00
f206a15f29 uassets: 2025-06-06 -> 2025-06-07 2025-06-07 06:56:55 +00:00
7818b14b49 servo: bitmagnet: dont expose the web UI unprotected 2025-06-07 06:56:28 +00:00
40d63c837f polyunfill: keep XDG_CONFIG_DIRS=/etc/xdg nixos default
i finally found a place where it's used
2025-06-07 06:55:51 +00:00
dea48bf34b servo: bitmagnet: raise the crawl rate 2025-06-06 22:17:37 +00:00
0951725e36 sops: remove the default examples 2025-06-06 21:56:45 +00:00
503cc832d4 servo: bitmagnet: restrict behind a login 2025-06-06 21:06:30 +00:00
f7b872aba0 programs: add htpasswd 2025-06-06 21:00:50 +00:00
8b152137f6 secrets: servo: reformat readme 2025-06-06 20:45:07 +00:00
2eeb9a2ace servo: add bitmagnet service 2025-06-06 20:07:56 +00:00
bfae7cd4e9 firefox: add a search shortcut for rust-lang.org docs 2025-06-06 19:45:03 +00:00
cb79156d24 nixpkgs: 2025-06-05 -> 2025-06-06 2025-06-06 16:51:56 +00:00
57694a732d nixpkgs-wayland: 2025-06-04 -> 2025-06-06 2025-06-06 16:51:48 +00:00
51ee4826a5 opencellid: 2025-06-05 -> 2025-06-06 2025-06-06 16:51:31 +00:00
0762c0aa20 uassets: 2025-06-05 -> 2025-06-06 2025-06-06 16:51:21 +00:00
aeeed83b8b ssh: fix sandboxing to support "tailscale ssh" 2025-06-06 08:17:54 +00:00
01438ff7bb bunpen: apply BUNPEN_DISABLE regex matching to BUNPEN_DROP_SHELL, too 2025-06-06 04:02:23 +00:00
1db734375a mercurial: allow ssh access (for cloning over ssh://) 2025-06-06 03:30:23 +00:00
65f3c3d8bd programs/ssh: provide a way to inject known_hosts at runtime 2025-06-06 03:04:20 +00:00
bc25feab80 modules/users: provide an env var to control sourcing of ~/.profile 2025-06-06 03:04:06 +00:00
19a14cc8ad ssh: migrate to using ssh-agent
this provides better security, and the possibility of easier dependency injecting (e.g. coercing a program to use some _specific_ ssh key, even when not designed for it)'
2025-06-05 19:09:30 +00:00
d4c576c2ae servo: update fs uuids 2025-06-05 19:00:11 +00:00
c50f4b1a5a nixpkgs: 2025-06-04 -> 2025-06-05 2025-06-05 08:18:27 +00:00
78be5777cb nixpkgs-wayland: 2025-06-02 -> 2025-06-04 2025-06-05 08:18:14 +00:00
c01656686d opencellid: 2025-06-04 -> 2025-06-05 2025-06-05 08:18:01 +00:00
3a6d05bbf8 uassets: 2025-06-04 -> 2025-06-05 2025-06-05 08:17:48 +00:00
9b8603e505 pkgs/*: migrate stdenv -> stdenvNoCC for packages which dont need a compiler 2025-06-05 04:38:13 +00:00
bc293726ee mercurial: enable MQ extension 2025-06-04 18:57:47 +00:00
8bce4b6fba snippets: add project tracking links 2025-06-04 18:48:26 +00:00
26e9d73541 firefox-extensions: stdenv -> stdenvNoCC wherever possible 2025-06-04 18:05:25 +00:00
984bab8296 feeds: add Away Days (may or may not be worth keeping, idk yet) 2025-06-04 17:58:27 +00:00
55586b578a nixpkgs: 2025-06-03 -> 2025-06-04 2025-06-04 08:45:51 +00:00
d2054a55dd opencellid: 2025-06-03 -> 2025-06-04 2025-06-04 08:45:36 +00:00
9c6c18f157 uassets: 2025-06-03 -> 2025-06-04 2025-06-04 08:45:20 +00:00
3fb1fa3dd9 firefox: auto-open slack/zoom links in external handlers (untested) 2025-06-04 02:04:54 +00:00
d7c496eb28 zoom: allow meeting links to open in the main zoom session 2025-06-03 17:51:40 +00:00
0fdf4271f2 nixpkgs: 2025-06-01 -> 2025-06-03 2025-06-03 07:20:10 +00:00
ffe0ba614b tailscale: fix missing meta
consumers use 'lib.getExe', which works better with valid 'meta'
2025-06-03 03:50:17 +00:00
f12ec0fdeb megapixels-next: 2025-05-31 -> 2025-06-01 2025-06-03 03:49:23 +00:00
02653f1792 opencellid: 2025-06-02 -> 2025-06-03 2025-06-03 03:48:36 +00:00
241023a370 uassets: 2025-06-02 -> 2025-06-03 2025-06-03 03:48:23 +00:00
ecee0fe032 refactor: fs/remote-servo: remove dead code 2025-06-02 17:59:30 +00:00
b88136fe31 sway: assign workspace 1 predictably 2025-06-02 17:59:20 +00:00
788cc28063 flowy: update password 2025-06-02 17:44:11 +00:00
a250a99b69 secrets/net: add networks encountered with flowy 2025-06-02 17:43:29 +00:00
2509ea571f sway: add external displays for flowy 2025-06-02 17:42:49 +00:00
bdc56a20ce nixpkgs-bootstrap: fix patch hash 2025-06-02 16:05:47 +00:00
1929ef3458 flowy: add a user password 2025-06-02 16:05:37 +00:00
81d3c2c469 gnome-keyring: fix creation of default keyring 2025-06-02 09:57:32 +00:00
7fba13c628 flowy: fix host-specific secrets encryption 2025-06-02 09:23:24 +00:00
f4a8a94af8 flowy: enable wireguard 2025-06-02 09:13:48 +00:00
98f505887e doc: fix the updatekeys command to be non-interactive 2025-06-02 09:13:29 +00:00
1d1fe1d9b5 flowy: fix host secrets 2025-06-02 09:12:48 +00:00
be73029e54 doc/adding-a-host: show how to setup wireguard keys 2025-06-02 08:46:31 +00:00
4d3005ca5d scripts/sync: sync to flowy 2025-06-02 08:46:14 +00:00
72f4f6b1a0 hosts/common: add a /mnt/flowy mountpoint 2025-06-02 08:45:57 +00:00
bf3b383957 flowy: enable "work" role 2025-06-02 08:44:09 +00:00
474de5c3d7 programs: ship ssh-to-age 2025-06-02 08:43:54 +00:00
9c39b4346b wg-home: remove unused module argument 2025-06-02 08:43:42 +00:00
899e84ca75 flowy: add ssh and wireguard keys 2025-06-02 08:43:26 +00:00
28ab943be4 docs: show more clearly how to update secret keys 2025-06-02 08:37:17 +00:00
d837278324 secrets: give flowy access to relevant secrets 2025-06-02 08:35:48 +00:00
39ec9f5cfb modules/persist: remove extraneous "nosuid" flag from gocryptfs mounts
it was logging noisily
2025-06-02 08:27:51 +00:00
6ddac6b3f2 nixpkgs-wayland: 2025-05-31 -> 2025-06-02 2025-06-02 08:10:43 +00:00
66163f5e0c signal-desktop-from-src: update hash 2025-06-02 08:10:25 +00:00
10831169d1 opencellid: 2025-06-01 -> 2025-06-02 2025-06-02 08:10:08 +00:00
3ad397b6bc podcastindex-db: 2025-05-30 -> 2025-06-02 2025-06-02 08:09:57 +00:00
2991208cd9 uassets: 2025-06-01 -> 2025-06-02 2025-06-02 08:09:43 +00:00
8fa774e140 bootpart-uefi-x86_64: expand docs 2025-06-02 07:37:56 +00:00
2384c3575e tailscale: avoid overlapping IP routes
I think they were making fractal launch hang, between when tailscale is up and when wg-home is reachable; packet gets sent to tailscale instead and hangs
2025-06-02 05:22:19 +00:00
41f0bfde53 bootpart-uefi-x86_64: cleanup formatting 2025-06-02 04:38:05 +00:00
d4723795e6 tailscale: clean up the IP routes so that it can coexist with by home wireguard network 2025-06-02 04:37:23 +00:00
37ed00f441 refactor: hosts/modules/work: split tailscale into own file 2025-06-01 21:10:47 +00:00
e91eafdfc3 refactor: hosts/modules/work.nix -> subdirectory 2025-06-01 21:09:22 +00:00
ec276e013b nixpkgs-wayland: 2025-05-30 -> 2025-05-31 2025-06-01 20:43:42 +00:00
0555516ebb nixpkgs: 2025-05-31 -> 2025-06-01 2025-06-01 20:43:34 +00:00
3f14b7d364 megapixels-next: 2025-05-16 -> 2025-05-31 2025-06-01 20:43:10 +00:00
18b98125ac doc/adding-a-host: mention ssh/sops keys 2025-06-01 20:11:00 +00:00
4bd4f29759 hosts: add "flowy", my new laptop
i haven't actually deployed this yet, but it does build
2025-06-01 20:10:40 +00:00
bdb203bc5f opencellid: 2025-05-31 -> 2025-06-01 2025-06-01 20:09:18 +00:00
04c2912450 uassets: 2025-05-31 -> 2025-06-01 2025-06-01 20:09:05 +00:00
b11e329351 make host details like host_pubkey, wg-home.ip be optional 2025-06-01 20:08:49 +00:00
ef4373f704 wg-home: dont force each host to define its IP address twice 2025-06-01 20:07:53 +00:00
db9b5dcfeb firefox: remove some more unnecessary fields from search.json 2025-06-01 00:36:33 +00:00
15fcdfca2b firefox: remove some unnecessary fields from search.json 2025-06-01 00:28:52 +00:00
6226818ad7 firefox: configure Kagi as default search 2025-06-01 00:14:57 +00:00
7c18c0d13b programs: ship mozlz4a 2025-05-31 22:41:18 +00:00
fe1a8b7d5e programs/firefox: simplify persistence; improve docs for policies 2025-05-31 22:41:03 +00:00
3ef40e9cb3 nixpkgs: 2025-05-30 -> 2025-05-31 2025-05-31 18:31:42 +00:00
af3d16794f nixpkgs-wayland: bump 2025-05-31 18:31:30 +00:00
c52704b2ed opencellid: 2025-05-30 -> 2025-05-31 2025-05-31 18:31:14 +00:00
a09b05bb49 uassets: 2025-05-30 -> 2025-05-31 2025-05-31 18:31:02 +00:00
7b74ccf192 uvtools: 5.1.1 -> 5.1.2 2025-05-31 18:30:49 +00:00
74bb17316d zimPackages.rationalwiki_en_all_maxi: 2021-03 -> 2025-05 2025-05-31 18:30:32 +00:00
65d1fa76e6 slack: enable video calls 2025-05-30 20:08:40 +00:00
629de56f54 slack: allow notifications & more portal integrations (untested) 2025-05-30 19:32:57 +00:00
01812da816 nixpkgs: 2025-05-29 -> 2025-05-30 2025-05-30 18:13:52 +00:00
c297bc733a nixpkgs-wayland: 2025-05-29 -> 2025-05-30 2025-05-30 18:13:42 +00:00
28b69fd1f9 opencellid: 0-unstable-2025-05-22 -> 0-unstable-2025-05-30 2025-05-30 15:58:23 +00:00
ff786421c5 podcastindex-db: 0-unstable-2025-05-18 -> 0-unstable-2025-05-30 2025-05-30 15:58:07 +00:00
f05ec619e3 uassets: 0-unstable-2025-05-29 -> 0-unstable-2025-05-30 2025-05-30 15:57:52 +00:00
b8e0ae4ed5 firefox-extensions.ublock-origin: 1.63.2 -> 1.64.0 2025-05-30 05:16:56 +00:00
2484822b9d work/tailscale: harden & integrate with BIND for DNS resolution 2025-05-30 05:16:43 +00:00
eabc087ebb tailscale: document that --operator flag is broken 2025-05-30 04:21:02 +00:00
d178f2f2f6 firefox-extensions.sponsorblock: 5.12.1 -> 5.12.4 2025-05-30 04:13:30 +00:00
377f2c4a75 firefox-extensions.addon-git-updater: fix double-quoting of update URL 2025-05-30 04:12:08 +00:00
83855f7d6a desko: add tailscale config; move slack/zoom behind a "work" role 2025-05-30 03:02:46 +00:00
92f68baaf9 systemd: rework emergency/rescue targets to be safer 2025-05-30 01:14:11 +00:00
82096288e2 systemd: fix rescue/emergency targets to allow root login 2025-05-30 00:22:27 +00:00
2aa2af823d sane-vpn: add flags to control the address, device, and DNS server 2025-05-29 23:03:49 +00:00
047543ca93 programs: add slack 2025-05-29 19:12:07 +00:00
065e4f8fb8 programs: ship zoom-us 2025-05-29 18:02:37 +00:00
0c286946d9 zimPackages.archlinux_en_all_maxi: 2025-04 -> 2025-05 2025-05-29 16:03:57 +00:00
9078cf3acc uassets: 2025-05-22 -> 2025-05-29 2025-05-29 16:03:57 +00:00
5dca51f840 signal-desktop-from-src: 7.55.0 -> 7.57.0 2025-05-29 16:03:57 +00:00
32ca4476c5 nixpkgs-wayland: 2025-05-23 -> 2025-05-29 2025-05-29 16:03:57 +00:00
a9b165a63d nixpkgs: 2025-05-23 -> 2025-05-29
rk818-charger: fix to compile against linux 6.15
2025-05-29 16:03:54 +00:00
9337436b71 nixpkgs-wayland: 2025-05-21 -> 2025-05-23 2025-05-29 06:28:36 +00:00
e25a8a35e9 nixpkgs: 2025-05-19 -> 2025-05-23 2025-05-29 06:28:26 +00:00
c0a788f750 signal-desktop-from-src: update hashes 2025-05-29 06:27:22 +00:00
ed59897119 ollamaPackages.qwq-abliterated-32b: update hashes 2025-05-29 06:27:06 +00:00
5091786d9c servo/ovpn: update IP address 2025-05-29 06:26:21 +00:00
55aa9b75f1 opencellid: 0-unstable-2025-05-20 -> 0-unstable-2025-05-22 2025-05-29 06:26:21 +00:00
d5de32ddea uassets: 0-unstable-2025-05-21 -> 0-unstable-2025-05-22 2025-05-29 06:26:21 +00:00
c082154d58 nixpkgs-wayland: 2025-05-20 -> 2025-05-21 2025-05-29 06:26:21 +00:00
bb67240055 uassets: 2025-05-20 -> 2025-05-21 2025-05-29 06:26:21 +00:00
cea680b727 scripts/deploy: fix --help flag 2025-05-29 06:26:21 +00:00
61fb2666d0 nixpkgs-wayland: 2025-05-19 -> 2025-05-20 2025-05-29 06:26:21 +00:00
e328ec8c3f euicc-manual: 2025-05-18 -> 2025-05-20 2025-05-29 06:26:21 +00:00
d3c76f3a43 opencellid: 2025-05-19 -> 2025-05-20 2025-05-29 06:26:21 +00:00
69cf3ae762 uassets: 2025-05-19 -> 2025-05-20 2025-05-29 06:26:21 +00:00
b39c3ec7de desko: update fs uuids
migrated to a new disk; changing the UUIDs so i can have both disks in the same system without conflict
2025-05-29 06:14:54 +00:00
c4cdf5ee72 programs: replace coreutils uptime with procps uptime 2025-05-27 03:22:59 +00:00
ec5bf7cc1f ollamaPackages.qwq-abliterated-32b: fix hashes 2025-05-25 05:38:29 +00:00
b11bb8d2f9 ollama: stop shipping qwq-32b
redundant with qwq-abliterated-32b
2025-05-25 05:38:10 +00:00
448389d888 nixpkgs: update patch hashes 2025-05-25 05:37:45 +00:00
e5cd484138 nixpkgs: grab conky update 2025-05-19 19:02:34 +00:00
99826b7f1b scripts/deploy: fix missing "setvar" when parsing "--deriv" argument 2025-05-19 19:02:26 +00:00
d0327f8f73 nixpkgs: 2025-05-18 -> 2025-05-19 2025-05-19 17:52:48 +00:00
90b27d36c9 nixpkgs-wayland: 2025-05-17 -> 2025-05-19 2025-05-19 16:46:38 +00:00
1405d24a8e sops-nix: 2025-05-05 -> 2025-05-18 2025-05-19 16:46:23 +00:00
2ab16e97c2 opencellid: 2025-05-18 -> 2025-05-19 2025-05-19 16:46:11 +00:00
414bbc7217 uassets: 2025-05-18 -> 2025-05-19 2025-05-19 16:45:59 +00:00
8beada36d2 nixpkgs: 2025-05-17 -> 2025-05-18 2025-05-18 17:11:49 +00:00
6b55711f10 nixpkgs-wayland: 2025-05-16 -> 2025-05-17 2025-05-18 17:11:34 +00:00
6b0771f1fe euicc-manual: 2025-05-16 -> 2025-05-18 2025-05-18 17:11:20 +00:00
e865534903 opencellid: 2025-05-17 -> 2025-05-18 2025-05-18 17:11:05 +00:00
f4e9a0aa02 podcastindex-db: 2025-05-08 -> 2025-05-18 2025-05-18 17:10:52 +00:00
a963d63ca8 uassets: 2025-05-17 -> 2025-05-18 2025-05-18 17:10:39 +00:00
07ecda1116 servo: update OVPN IP address 2025-05-18 08:18:37 +00:00
ffdb00ea19 sane-vpn: clarify the CLI
unfortunately i can't directly use 'sane-vpn do -- CMD', because python strips -- in arg parsing
2025-05-18 02:31:45 +00:00
014008472b scripts/deploy: fix to allow destructive ... (echo=true) invocations 2025-05-18 00:07:39 +00:00
340f91de3f cross: drop the gnome-user-share patch; make my crossCargo compatible with debug build type 2025-05-18 00:03:56 +00:00
6fef1bbd4b scripts/deploy: refactor 2025-05-17 21:03:58 +00:00
99629c9e09 nixpkgs: 2025-05-15 -> 2025-05-17 2025-05-17 18:00:28 +00:00
9ec2c1a22a nixpkgs-wayland: 2025-05-15 -> 2025-05-16 2025-05-17 18:00:28 +00:00
e7e6997472 opencellid: 2025-05-16 -> 2025-05-17 2025-05-17 18:00:28 +00:00
f74a0bbaca neovim: configure filetype matching for nix-shell ysh 2025-05-17 18:00:28 +00:00
c4824f8f78 scripts/deploy: fix broken "|| return 1" 2025-05-17 18:00:28 +00:00
9daacae794 scripts/deploy: fix --build, --copy, --switch, --test flags 2025-05-17 18:00:28 +00:00
a375393f2a megapixels-next: 2.0.0-alpha1-unstable-2025-04-08 -> 2.0.0-alpha1-unstable-2025-05-16 2025-05-17 18:00:28 +00:00
7fc6bda614 euicc-manual: 2025-05-14 -> 2025-05-16 2025-05-17 18:00:28 +00:00
7423177796 uassets: 2025-05-16 -> 2025-05-17 2025-05-17 18:00:28 +00:00
cce19c38d7 nixpkgs-wayland: 2025-05-14 -> 2025-05-15 2025-05-17 01:42:39 +00:00
ba657ae647 scripts/deploy: print a deployment plan before executing it 2025-05-17 01:42:23 +00:00
997e901fee opencellid: 2025-05-15 -> 2025-05-16 2025-05-16 03:04:01 +00:00
793e7fca09 uassets: 2025-05-15 -> 2025-05-16 2025-05-16 03:03:48 +00:00
fcfe45da92 scripts/check-uninsane: add a check that uninsane.org. is reachable from Google DNS
sometimes 8.8.8.8 reflects DNS reboots faster than 1.1.1.1
2025-05-15 16:02:41 +00:00
0c6d279c54 nixpkgs-wayland: 2025-05-13 -> 2025-05-14 2025-05-15 15:42:12 +00:00
15d2a8bf65 nixpkgs: 2025-05-14 -> 2025-05-15 2025-05-15 15:41:58 +00:00
efd04b6601 servo: update /mnt/pool UUIDs 2025-05-15 15:41:40 +00:00
1c739bd8ad scripts/deploy: fix invalid use of "failed" builtin 2025-05-15 15:32:28 +00:00
098a5ac959 euicc-manual: 2025-05-13 -> 2025-05-14 2025-05-15 06:47:37 +00:00
bfd0a97e8a opencellid: 2025-05-14 -> 2025-05-15 2025-05-15 06:47:24 +00:00
030fe9596f uassets: 2025-05-14 -> 2025-05-15 2025-05-15 06:47:12 +00:00
56b8d82c42 scripts/deploy: port from bash to ysh 2025-05-15 06:47:01 +00:00
471341447e btrfs-progs: fix sandboxing to be compat with "btrfs replace" 2025-05-15 04:11:18 +00:00
2701b484e5 nixpkgs-wayland: 2025-05-12 -> 2025-05-13 2025-05-14 07:51:04 +00:00
5ca30a2e43 nixpkgs: 2025-05-13 -> 2025-05-14 2025-05-14 07:50:54 +00:00
8bd273e51b opencellid: 2025-05-12 -> 2025-05-14 2025-05-14 07:50:40 +00:00
f86b1d2ef1 signal-desktop-from-src: 7.54.0 -> 7.55.0 2025-05-14 07:50:28 +00:00
34a1cba331 uassets: 2025-05-13 -> 2025-05-14 2025-05-14 07:50:08 +00:00
97d789c52a programs: add readline 2025-05-14 07:49:55 +00:00
c645a73e2e common: stop persisting ~/.cache/mesa_shader_cache_db: make it ephemeral and then delete altogether once it has no more users 2025-05-14 07:49:22 +00:00
7e655c6451 schlock: fix icon rendering, slightly improve colors 2025-05-13 08:42:42 +00:00
e46ae9b9e5 nicotine-plus: update UI preferences (no confirm-on-quit; disable unused columns) 2025-05-13 06:08:42 +00:00
c4d0ead5e1 nixpkgs: 2025-05-12 -> 2025-05-13 2025-05-13 06:03:06 +00:00
39e9b4aa3e zsh: fix c alias to support 0 arguments 2025-05-13 06:02:37 +00:00
e561417c7c euicc-manual: 0-unstable-2025-05-03 -> 0-unstable-2025-05-13 2025-05-13 06:01:57 +00:00
d361ac1b5f uassets: 0-unstable-2025-05-12 -> 0-unstable-2025-05-13 2025-05-13 06:01:45 +00:00
d0c772533b mpv: remove MBTN_LEFT controls until i can update uosc 2025-05-13 05:29:50 +00:00
cc3e0e8fa0 nixpkgs-bootstrap: update *patched* src name to nixpkgs-$branch-sane 2025-05-13 04:32:43 +00:00
0e198ad482 scripts/update: relax note on parallelism now that nixpkgs-bootstrap updates are atomic 2025-05-13 04:31:34 +00:00
f8fb4b9ef4 nixpkgs-bootstrap: make the updater atomic, thereby allowing update of nixpkgs-bootstrap.master in parallel with anything else 2025-05-13 04:30:55 +00:00
22cf60914b nixpkgs-wayland: bump 2025-05-13 03:08:19 +00:00
3a9a3353a0 schlock: remove unused call args 2025-05-13 02:26:31 +00:00
218e06a8a8 nix-check-deps: ship it 2025-05-13 02:26:00 +00:00
78f42f984d nix-check-deps: init at 0-unstable-2025-04-09 2025-05-13 01:54:14 +00:00
c0878f1717 cross: fix xarchiver by fetching patch from upstream PR instead of with overlay 2025-05-12 23:14:12 +00:00
7d8fbf64dc cross: remove no-longer-necessary delfin patch
idk when this got fixed, but the msgfmt error no longer appears; nix log $result reads the same before and after
2025-05-12 20:59:16 +00:00
d8c692fc79 nixpkgs-wayland: 2025-05-09 -> 2025-05-12 2025-05-12 20:50:25 +00:00
d4f308caca nixpkgs: 2025-05-11 -> 2025-05-12 2025-05-12 20:50:13 +00:00
f0bb931ca9 opencellid: 2025-05-11 -> 2025-05-12 2025-05-12 20:50:00 +00:00
48f8f1c4e4 uvtools: 5.1.0 -> 5.1.1 2025-05-12 20:49:49 +00:00
d06b767f85 uassets: 2025-05-11 -> 2025-05-12 2025-05-12 20:49:23 +00:00
39a7556dbe nixpkgs: 2025-05-10 -> 2025-05-11 2025-05-11 15:24:10 +00:00
cf59cfab26 opencellid: 2025-05-10 -> 2025-05-11 2025-05-11 15:23:51 +00:00
b1b1c1dfc3 uassets: 2025-05-10 -> 2025-05-11 2025-05-11 15:23:38 +00:00
dabeb9bef9 sane-deadlines: ignore commented-out lines 2025-05-11 15:21:53 +00:00
3ca0b9ae28 sane-deadlines: port from bash -> ysh 2025-05-11 15:16:21 +00:00
4645e6389e firefox: add a shortcut for searching soundcloud 2025-05-10 22:10:21 +00:00
451a620916 sway: update config to (hopefully) place Zelda 64 recomp on the external display 2025-05-10 18:19:09 +00:00
c3ca009d05 zelda64recomp: 1.1.1-unstable-2025-02-14 -> 1.2.0 2025-05-10 18:18:18 +00:00
79048f5bd5 nixpkgs: 2025-05-09 -> 2025-05-10 2025-05-10 05:45:22 +00:00
14dcd5bf0c nixpkgs-wayland: bump 2025-05-10 05:45:14 +00:00
66cfb61e6c opencellid: 0-unstable-2025-05-06 -> 0-unstable-2025-05-10 2025-05-10 05:44:54 +00:00
1b35317f97 uassets: 0-unstable-2025-05-09 -> 0-unstable-2025-05-10 2025-05-10 05:44:42 +00:00
e17ed9a265 nixpkgs: 2025-05-08 -> 2025-05-09 2025-05-09 15:11:45 +00:00
17de44c0af nixpkgs-wayland: 2025-05-08 -> 2025-05-09 2025-05-09 15:11:27 +00:00
d841e6782f sops-nix: assets-unstable-2025-04-22 -> assets-unstable-2025-05-05 2025-05-09 15:11:06 +00:00
db862eac69 uassets: 2025-05-03 -> 2025-05-09 2025-05-09 15:10:51 +00:00
c32822cfa9 zimPackages.wikipedia_en_100: 2025-04 ->205-05 2025-05-09 15:04:23 +00:00
0587d33000 swaynotificationcenter: 0.10.1-unstable-2024-04-16 -> 0.11.0 2025-05-09 15:03:53 +00:00
02d10168b6 scripts/sync: dont sync PKM to self 2025-05-09 07:41:10 +00:00
cff611d7c1 nixpkgs-wayland: 2025-05-05 -> 2025-05-08 2025-05-09 07:41:05 +00:00
7e8c31dc2f signal-desktop-from-src: 7.53.0 -> 7.54.0 2025-05-09 07:41:05 +00:00
85f8706136 podcastindex-db: 0-unstable-2025-04-29 -> 0-unstable-2025-05-08 2025-05-09 07:36:24 +00:00
e99e2f5a6e nixpkgs-bootstrap.mkNixpkgs: remove the overrideAttrs call, and inline its functionality into applyPatches 2025-05-09 07:33:28 +00:00
bac24e6ceb nixpkgs-bootstrap: hoist config to callArgs level, to simplify the call site 2025-05-09 06:43:03 +00:00
acdf9b7f94 scripts/update: note some limitations of PARALLELISM 2025-05-09 06:30:18 +00:00
17cdca36ca nixpkgs-bootstrap: get rid of "override"
this reduces the number of times we have to 'import' different nixpkgs during bootstrap
2025-05-09 06:19:41 +00:00
86528b5fcc nixpkgs: 0-unstable-2025-05-05 -> 0-unstable-2025-05-08 2025-05-09 06:17:45 +00:00
fbde0005d8 nixpkgs-bootstrap/mkNixpkgs: rework to more reliably support updateScripts 2025-05-09 06:17:28 +00:00
15de5234ef opencellid: 2025-05-05 -> 2025-05-06 2025-05-06 02:59:29 +00:00
a4f177a125 nixpkgs: 2025-05-04 -> 2025-05-05 2025-05-05 15:30:05 +00:00
3336dbf5ef nixpkgs-wayland: 2025-05-03 -> 2025-05-05 2025-05-05 15:29:52 +00:00
810a62ae4d opencellid: 2025-05-04 -> 2025-05-05 2025-05-05 15:29:38 +00:00
c8e1d7d8ba firefox: grant access to hardware security keys 2025-05-04 20:50:06 +00:00
38624342bb modules/programs: implement a whitelistSecurityKeys sandboxing option 2025-05-04 20:49:54 +00:00
2a126684af scripts/check-uninsane: add graphical indicators for passed/failed tests 2025-05-04 19:47:52 +00:00
f725b7ef94 nixpkgs: 2025-05-03 -> 2025-05-04 2025-05-04 18:08:50 +00:00
73aecebd08 nixpkgs-wayland: bump 2025-05-04 18:08:39 +00:00
912753d723 opencellid: 2025-05-03 -> 2025-05-04 2025-05-04 07:45:45 +00:00
d3cc39a7f0 feeds: mention jumble.top for bypassing paywalls 2025-05-04 04:29:36 +00:00
2b36019dfa nixpkgs: 2025-05-02 -> 2025-05-03 2025-05-04 04:28:50 +00:00
4f558743e5 nixpkgs-wayland: 2025-05-01 -> 2025-05-03 2025-05-03 05:03:44 +00:00
f9462216b8 euicc-manual: 2025-04-26 -> 2025-05-03 2025-05-03 05:03:30 +00:00
d7fc1beb16 uassets: 2025-05-02 -> 2025-05-03 2025-05-03 05:03:15 +00:00
fc1c51174b opencellid: 2025-05-02 -> 2025-05-03 2025-05-03 05:03:05 +00:00
92c3cde5cd nixpkgs-bootstrap: bump, to grab upstreamed dialect fixes 2025-05-02 14:50:14 +00:00
5e68fe2df6 overlays/cross: tangram: document one route to upstreaming 2025-05-02 07:01:02 +00:00
9e199a9f74 cross: push dialect patch upstream 2025-05-02 05:58:15 +00:00
517d12c700 overlays/cross: update upstreaming status 2025-05-02 05:17:54 +00:00
5ad27f2ec0 programs/itgmania: address a todo 2025-05-02 04:30:48 +00:00
ac456501df sway: add a rule so ITGmania always renders to the external display 2025-05-02 03:59:21 +00:00
419968daa2 sway: add theater TV settings 2025-05-02 03:56:06 +00:00
2c6bf71111 overlays/cross: remove upstreamed blueprint-compiler fixes 2025-05-02 03:24:20 +00:00
c1e53b32ad nixpkgs: 2025-05-01 -> 2025-05-02 2025-05-02 02:56:23 +00:00
a18046cd3b nixpkgs-wayland: bump 2025-05-02 02:56:09 +00:00
6d189bf813 opencellid: 2025-05-01 -> 2025-05-02 2025-05-02 02:55:56 +00:00
a17df1c1e4 uassets: 2025-04-30 -> 2025-05-02 2025-05-02 02:55:45 +00:00
5de6d7f41a todo.md: add a task to rework "programs" API 2025-05-02 02:18:19 +00:00
3a7cc40703 scripts/sync: re-enable VN sync to moby 2025-05-01 16:48:08 +00:00
1334fba055 nixpkgs: 2025-04-30 -> 2025-05-01 2025-05-01 16:46:33 +00:00
4ffa0ec4ee nixpkgs-wayland: 2025-04-29 -> 2025-05-01 2025-05-01 16:45:58 +00:00
f23a924025 mslicer: 0.2.1-unstable-2025-04-25 -> 0.2.1-unstable-2025-05-01 2025-05-01 05:45:23 +00:00
dc88ce74a9 opencellid: 0-unstable-2025-04-30 -> 0-unstable-2025-05-01 2025-05-01 05:16:38 +00:00
dbb26cb983 firefox: add a shortcut to search with Kagi 2025-05-01 05:16:21 +00:00
bd2a360e90 nixpkgs: apply buffybox patch 2025-05-01 04:42:32 +00:00
2e288d6221 nixpkgs: 2025-04-29 -> 2025-04-30 2025-04-30 15:17:05 +00:00
03bd34982e nixpkgs-wayland: 2025-04-27 -> 2025-04-29 2025-04-30 15:16:57 +00:00
b1997b1ca2 opencellid: 2025-04-29 -> 2025-04-30 2025-04-30 15:16:41 +00:00
84c5ef3ac9 uassets: 2025-04-29 -> 2025-04-30 2025-04-30 15:16:29 +00:00
ccca3aa3b6 nixpkgs: 2025-04-28 -> 2025-04-29 2025-04-29 16:37:23 +00:00
3477794172 sops-nix: assets-unstable-2025-04-08 -> assets-unstable-2025-04-22 2025-04-29 16:37:13 +00:00
bf7900fded uassets: 0-unstable-2025-04-22 -> 0-unstable-2025-04-29 2025-04-29 16:37:00 +00:00
a12230e1f8 firefox: add an option to enable kagi-search extension (disabled by default)
with the extension, kagi auth actually persists across browser restarts -- unlike e.g. cookie-based GH auth

more would surely need to be done to persist that across machine restarts, however
2025-04-29 16:36:46 +00:00
fab4a9ea8d firefox-extensions.kagi-search: init at 0.7.4 2025-04-29 06:31:13 +00:00
69cccaa5f3 privacypass-extension: factor out the -lib build, but its broken because upstream doesnt commit their lock files! 2025-04-29 06:19:53 +00:00
945b637cc2 opencellid: 2025-04-28 -> 2025-04-29 2025-04-29 02:45:01 +00:00
e8a27b43a3 podcastindex-db: 0-unstable-2025-04-27 -> 0-unstable-2025-04-29
the db just grew 5x in size...

upstream website claims that this new count is correct, and is only a couple % larger than 3 days ago, implying that the old db snapshot was wrong somehow...

in fact looking at `head` and `tail` of the new v.s. old indexes:
- primary keys in old db: 6385082 - 7311215
- primary keys in new db: 1 - 7313345

so the old one was just WRONG somehow?
and ACTUAL growth is about 1000 keys per day.
TODO: add some safeguards to the update script, in light of this!
2025-04-29 02:43:14 +00:00
be83452c4a scripts/deploy: support "--force-reboot" as alternate spelling to "--reboot-force" 2025-04-28 04:15:45 +00:00
c0c01f355b feeds: subscribe to Mystery AI Hype Theater 3000 podcast
haven't listened; heard of via Future of Coding
2025-04-28 04:06:38 +00:00
e06b735bcb feeds/update-feed: add podcastindex support
also drop unused `site-name`, `site-url` from the saved feeds.
podcastindex doesn't provide exactly those, and they've shown to be
rather useless so far.
TODO: remove these entries from existing feeds.
2025-04-28 04:03:46 +00:00
7319bd1528 feeds/update-feed: refactor 2025-04-28 03:02:10 +00:00
11be114e1d nixpkgs: 0-unstable-2025-04-27 -> 0-unstable-2025-04-28 2025-04-28 02:40:29 +00:00
7cf7555c7d podcastindex-db: move output to /share subdirectory 2025-04-28 02:40:05 +00:00
bc8395a541 opencellid: move output to /share subdirectory 2025-04-28 02:39:35 +00:00
f7b4069631 nixpkgs-wayland: 0-unstable-2025-04-26 -> 0-unstable-2025-04-27 2025-04-28 02:38:57 +00:00
c0afdf69b1 signal-desktop-from-src: fix hash 2025-04-28 02:38:40 +00:00
1b8d2daf20 static-nix-shell: add $dep/share to XDG_DATA_DIRS, also only add those $dep/bin paths which actually exist to PATH
this actually causes some packages which were previously wrapped to no longer require wrapping (because none of the directories they were adding actually existed)
2025-04-28 01:56:04 +00:00
8e12201ecc feeds/update-feed: rename from feeds/update.py 2025-04-28 01:30:51 +00:00
8ae22c246e podcastindex-db: init at 2025-04-27 2025-04-27 22:41:08 +00:00
fdbf53e6bb hosts/common: ship sysadminExtraUtils to all hosts
includes sqlite3; just wanted to use it on desko, can imagine infrequent but highly important use on all hosts
2025-04-27 21:11:33 +00:00
d2d302137c nixpkgs: 0-unstable-2025-04-26 -> 0-unstable-2025-04-27 2025-04-27 18:22:32 +00:00
37f49fbf09 nixpkgs-wayland: 0-unstable-2025-04-24 -> 0-unstable-2025-04-26 2025-04-27 18:22:17 +00:00
9c31fc5a0a euicc-manual: 0-unstable-2025-04-06 -> 0-unstable-2025-04-26 2025-04-27 18:22:04 +00:00
46d1433606 opencellid: 0-unstable-2025-04-26 -> 0-unstable-2025-04-27 2025-04-27 18:21:47 +00:00
3dfde24a84 wrapFirefoxAddonsHook: remove legacy toplevel-is-XPI code path 2025-04-27 03:43:03 +00:00
6693333a84 firefox-extensions: refactor
remove the custom scope-level logic, and create the package set same way i do with normal pkgs/
2025-04-27 03:42:26 +00:00
a8a6cd2973 nixpkgs: 2025-04-25 -> 2025-04-26 2025-04-26 05:39:27 +00:00
eaae50f9ef mslicer: 0.2.1-unstable-2025-04-13 -> 0.2.1-unstable-2025-04-25 2025-04-26 05:39:16 +00:00
60c4a1b1bd opencellid: 2025-04-25 -> 2025-04-26 2025-04-26 05:39:03 +00:00
a77810f8e7 firefox-extensions.sponsorblock: 5.12 -> 5.12.1 2025-04-26 05:38:52 +00:00
670a744eca feeds: subscribe to Mother Earth News 2025-04-26 03:23:00 +00:00
fbeb6881db replace deprecated "substituteAll" with "replaceVars" 2025-04-25 16:01:15 +00:00
cf82e414f7 nixpkgs: 2025-04-24 -> 2025-04-25 2025-04-25 03:31:30 +00:00
dd93a1fc87 nixpkgs-wayland: 2025-04-23 -> 2025-04-24 2025-04-25 03:15:05 +00:00
26bc04ecbf firefox-extensions.sponsorblock: 5.11.11 -> 5.12 2025-04-25 02:52:16 +00:00
42290c23a1 opencellid: 2025-04-24 -> 2025-04-25 2025-04-25 02:50:11 +00:00
2f5ad8e7b0 firefox-extensions.privacypass-extension: init at 1.0.5 (DOESNT BUILD)
hopefully i'll come back to this when i have more time
2025-04-24 16:03:50 +00:00
641ac8bea7 nixpkgs: 2025-04-23 -> 2025-04-24 2025-04-24 15:47:02 +00:00
3eb5a0385b signal-desktop-from-src: 7.52.0 -> 7.53.0 2025-04-24 15:46:49 +00:00
c907f6fcd6 zimPackages.archlinux_en_all_maxi: 2025-03 -> 2025-04 2025-04-24 02:15:55 +00:00
e1d15b8adf opencellid: 2025-04-23 -> 2025-04-24 2025-04-24 02:15:32 +00:00
35a9adeb11 nixpkgs: 2025-04-21 -> 2025-04-23 2025-04-23 16:15:18 +00:00
826483d4c2 nixpkgs-wayland: 2025-04-22 -> 2025-04-23 2025-04-23 16:14:17 +00:00
110fddc026 opencellid: 2025-04-22 -> 2025-04-23 2025-04-23 16:13:33 +00:00
49c1fe2dba doc: show how to fix perms when migrating devices 2025-04-23 16:12:57 +00:00
92384f4b51 document how to migrate a system to a new drive 2025-04-23 07:17:15 +00:00
c5fbfa824b pine64-pinephone-pro: install bootloader 2025-04-23 07:16:45 +00:00
3b7883fe0f u-boot-pinephone-pro: remove no-longer-needed patches 2025-04-23 03:51:57 +00:00
30b4337f11 doc: update the nix attribute paths 2025-04-23 02:05:59 +00:00
4cf73cc03a nixpkgs: fix moby cross compilation 2025-04-22 16:43:39 +00:00
f3b16d33d6 nixpkgs-wayland: 2025-04-20 -> 2025-04-22 2025-04-22 16:43:05 +00:00
d8b44d7263 uvtools: 5.0.9 -> 5.0.10 2025-04-22 16:42:52 +00:00
022bc55575 btrfs-progs: fix scrub behavior when sandboxed 2025-04-22 16:42:24 +00:00
7f9ab477e7 snippets: update URLs 2025-04-22 16:00:41 +00:00
8c4b3c3a02 uassets: 0-unstable-2025-04-13 -> 0-unstable-2025-04-22 2025-04-22 07:11:02 +00:00
4dad4d9291 opencellid: 2025-04-21 -> 2025-04-22 2025-04-22 07:10:51 +00:00
aaa80bfb82 btrfs-progs: add missing /var/lib/btrfs path 2025-04-22 03:11:40 +00:00
a8c2414f19 nixpkgs: 2025-04-20 -> 2025-04-21 2025-04-21 08:25:16 +00:00
8a262749e8 passff: 1.22 -> 1.22.1 2025-04-21 08:19:51 +00:00
1c6054c720 nixpkgs-wayland: same-day bump 2025-04-21 07:49:44 +00:00
0dcbdd4262 opencellid: 2025-04-20 -> 2025-04-21 2025-04-21 07:49:31 +00:00
Shelvacu
0481a2f419 servo: gitea: increase client_max_body_size in nginx config
Ben was unable to upload a clone of a repo over HTTP, due to a 413 error.

Nginx's default limit is 1 megabyte ;( https://nginx.org/en/docs/http/ngx_http_core_module.html#client_max_body_size

See https://forum.gitea.com/t/unable-to-push-to-repo-due-to-rpc-failed-http-413-error/2630/4
2025-04-20 21:44:46 -07:00
db12529df3 firefox: add "i" shortcut to search for images 2025-04-20 23:31:36 +00:00
66001bd723 cross: blueprint-compiler: push build fixes toward upstream 2025-04-20 23:21:14 +00:00
fbde8816e9 cross: cleanup blueprint-compiler patches even more
it would *seem* that the only actual issue is the compiler itself not having GIR files *it* needs

however moby is being extremely slow to deploy so i havent verified this wholly
2025-04-20 20:52:23 +00:00
35539ca2ec nixpkgs: 0-unstable-2025-04-19 -> 0-unstable-2025-04-20 2025-04-20 17:31:12 +00:00
b49fac6651 nixpkgs-wayland: 0-unstable-2025-04-19 -> 0-unstable-2025-04-20 2025-04-20 17:30:58 +00:00
bfef88be88 signal-desktop-from-src: fix deps hash 2025-04-20 17:30:43 +00:00
9dc6e0f93d opencellid: 2025-04-19 -> 2025-04-20 2025-04-20 17:30:17 +00:00
d721845258 firefox-extensions.passff: 1.21 -> 1.22 2025-04-20 17:24:44 +00:00
a13feca385 cross: tidy up the blueprint-compiler patches
deployed and *seems* to be working; i ought to be able to turn these into proper patches over the next few days
2025-04-20 08:13:42 +00:00
a099279a7a overlays/cross: update upstreaming status 2025-04-20 03:46:24 +00:00
b4745b0c87 nixpkgs: 2025-04-18 -> 2025-04-19 2025-04-19 20:35:19 +00:00
8782b529fd fcitx5,xcb-imdkit: push cross fixes upstream 2025-04-19 20:35:09 +00:00
be2d34d869 nixpkgs-wayland: 0-unstable-2025-04-18 -> 0-unstable-2025-04-19 2025-04-19 20:34:26 +00:00
daff05855c signal-desktop-from-src: update dependencies hash
fuck this
2025-04-19 20:34:10 +00:00
67ea8ba8c3 opencellid: 0-unstable-2025-04-18 -> 0-unstable-2025-04-19 2025-04-19 20:33:51 +00:00
850299db58 disable systemd-ssh-proxy, to route around ssh permission errors when sandboxed 2025-04-19 05:40:26 +00:00
1d4191c838 nixpkgs: 0-unstable-2025-04-13 -> 0-unstable-2025-04-18 2025-04-19 04:32:14 +00:00
920b277a93 nixpkgs-wayland: 0-unstable-2025-04-12 -> 0-unstable-2025-04-18 2025-04-19 04:30:11 +00:00
36be5f8a95 signal-desktop-from-src: 7.51.0 -> 7.52.0 2025-04-19 04:27:46 +00:00
13f70c4626 opencellid: 0-unstable-2025-04-13 -> 0-unstable-2025-04-18 2025-04-19 04:27:25 +00:00
960c39966b mslicer: 0.2.0-unstable-2025-04-06 -> 0.2.1-unstable-2025-04-13 2025-04-19 04:27:12 +00:00
45f05e89ed sane-private-unlock-remote: avoid printing the password to stdout (where it may be saved to logs) 2025-04-19 02:20:32 +00:00
5e553585f4 scripts/check-uninsane: check for private data mount 2025-04-19 02:16:05 +00:00
31a884e27e feeds: subscribe to Unchained podcast 2025-04-13 21:25:42 +00:00
ab9f7a8768 feedsearch-crawler: add an update script
even though upstream appears to be dead (:
2025-04-13 21:22:55 +00:00
75c60c8cb6 feeds: unsubscribe from Tech Lounge
detached from reality in the *weirdest* (uninteresting) way
2025-04-13 20:27:28 +00:00
1597e6569e nixpkgs: 2025-04-12 -> 2025-04-13 2025-04-13 05:26:40 +00:00
f48ca3c77a signal-desktop-from-src: update hash
*cries*
2025-04-13 05:26:30 +00:00
b733a7e6cd opencellid: 2025-04-12 -> 2025-04-13 2025-04-13 05:26:12 +00:00
513e8c04e8 sops-nix: 2025-03-21 -> 2025-04-08 2025-04-13 05:26:01 +00:00
a006ef19c2 uassets: 2025-04-03 -> 2025-04-13 2025-04-13 05:25:47 +00:00
c0bb4ffa2b zsh: fix no-such-keybinding warnings (hopefully) 2025-04-13 02:49:24 +00:00
c6bc94f19a nixpkgs-wayland: 2025-04-11 -> 2025-04-12 2025-04-12 08:10:49 +00:00
bb04885d0a opencellid: 2025-04-11 -> 2025-04-12 2025-04-12 08:10:36 +00:00
d3846fd6fb zimPackages.zimgit-food-preparation_en: 2024-08 -> 2025-04 2025-04-12 08:10:23 +00:00
f47ce15fd9 nixpkgs: 2025-04-11 -> 2025-04-12 2025-04-12 08:10:04 +00:00
734bb04212 nixpkgs: 2025-04-10 -> 2025-04-11 2025-04-11 05:33:47 +00:00
d6bb231993 nixpkgs-wayland: 2025-04-09 -> 2025-04-11 2025-04-11 05:33:26 +00:00
fb630af35a opencellid: 2025-04-10 -> 2025-04-11 2025-04-11 05:32:56 +00:00
dc9b621fa1 programs/python3-repl: better sandboxing 2025-04-10 15:35:52 +00:00
38da1d9c5c nixpkgs-bootstrap: 2025-04-09 -> 2025-04-10 2025-04-10 03:30:10 +00:00
392eeed937 nixpkgs-wayland: 2025-04-08 -> 2025-04-09 2025-04-10 03:29:55 +00:00
eddf48e88e signal-desktop-from-src: 7.50.0 -> 7.51.0 2025-04-10 03:29:41 +00:00
da0361d2df opencellid: 2025-04-09 -> 2025-04-10 2025-04-10 03:29:25 +00:00
51077bffb1 zimPackages.devdocs_en_nix: 2025-01 -> 2025-04 2025-04-10 03:29:11 +00:00
5e02f8cff0 nixpkgs: 2025-04-08 -> 2025-04-09 2025-04-09 21:10:08 +00:00
9413ac3c8c nixpkgs-wayland: 2025-04-07 -> 2025-04-08 2025-04-09 20:58:17 +00:00
d7addb1568 megapixels-next: 2025-04-04 -> 2025-04-08 2025-04-09 20:15:12 +00:00
81e8e68ee0 signal-desktop-from-src: update hash
NSA is that you?
2025-04-09 20:14:02 +00:00
3ef1d9fc4e opencellid: 2025-04-08 -> 2025-04-09 2025-04-09 20:12:56 +00:00
c26479a31a nixpkgs: 2025-04-07 -> 2025-04-08 2025-04-08 04:46:48 +00:00
719ebfb52f feeds: subscribe to Blue City Blues 2025-04-08 04:11:56 +00:00
02c9105d63 nixpkgs-wayland: 2025-04-06 -> 2025-04-07 2025-04-08 02:30:30 +00:00
f838b65027 zimPackages.wikipedia_en_100: 2025-03 -> 2025-04 2025-04-08 02:30:17 +00:00
c557cb573b opencellid: 2025-04-07 -> 2025-04-08 2025-04-08 02:29:33 +00:00
f455eca161 nixpkgs: 2025-04-06 -> 2025-04-07 2025-04-07 14:50:22 +00:00
2c2fbab3d3 nixpkgs-wayland: 2025-04-05 -> 2025-04-06 2025-04-07 14:50:12 +00:00
9fdc909f9f signal-desktop-from-src: fix hash (...?) 2025-04-07 14:49:52 +00:00
d8079369fb opencellid: 2025-04-06 -> 2025-04-07 2025-04-07 14:49:02 +00:00
1a352aee4b mslicer: 0.2.0-unstable-2025-04-05 -> 0.2.0-unstable-2025-04-06
this should fix the --rotation parameter to be in degrees
2025-04-07 02:39:42 +00:00
b1cbe1be32 gps-share: fix update script 2025-04-06 18:32:09 +00:00
fcfa54e284 treewide: remove repo = pname idiom, format pkgs 2025-04-06 18:30:35 +00:00
3d08c79b42 mslicer: ship it! and stop shipping cassini, since it didnt seem to work 2025-04-06 06:41:42 +00:00
dbe8747b15 mslicer: 0.2.0 -> 0.2.0-unstable-2025-04-05
tip comes with a much expanded CLI for `slicer`
2025-04-06 06:26:13 +00:00
c0fc8f15aa 2025-04-05 -> 2025-04-06 2025-04-06 06:00:05 +00:00
9e8e0e5e36 nixpkgs-wayland: intra-day update 2025-04-06 05:59:53 +00:00
26e86f80eb euicc-manual: 2025-03-25 -> 2025-04-06 2025-04-06 05:59:42 +00:00
8e8725258f opencellid: 2025-04-05 -> 2025-04-06 2025-04-06 05:59:23 +00:00
9434a178a3 programs: unzip: ship it
dtrx isn't perfect; nice to have other archive helpers on hand
2025-04-05 19:04:02 +00:00
e7e15c55dc nixpkgs: 2025-04-04 -> 2025-04-05 2025-04-05 06:33:04 +00:00
43f3e165a9 nixpkgs-wayland: 2025-04-04 -> 2025-04-05 2025-04-05 06:32:46 +00:00
f64525898d megapixels-next: 2025-03-20 -> 2025-04-04 2025-04-05 06:32:32 +00:00
d1e4f46135 libmegapixels: 0.2.0 -> 0.2.1 2025-04-05 06:32:16 +00:00
780fceb5ef opencellid: 2025-04-04 -> 2025-04-05 2025-04-05 06:32:02 +00:00
29002c62fb overlays/cross: update upstreaming status 2025-04-04 16:44:37 +00:00
ccf2d5baa1 nixpkgs: push libbytesize cross fix towards upstream 2025-04-04 15:20:09 +00:00
bca2cea95f nixpkgs: 2025-04-03 -> 2025-04-04 2025-04-04 15:12:14 +00:00
5e69dddcb7 nixpkgs-wayland: 2025-04-02 -> 2025-04-04 2025-04-04 15:11:49 +00:00
93566f9e69 uvtools: 5.0.8 -> 5.0.9
did not test the build
2025-04-04 15:11:33 +00:00
278488a089 opencellid: 2025-04-03 -> 2025-04-04 2025-04-04 15:11:01 +00:00
7ebb88a40e fix broken "imgs" typo -> "img" 2025-04-04 00:21:37 +00:00
f7fc3bd981 nixpkgs-bootstrap: 2025-04-02 -> 2025-04-03 2025-04-03 06:46:24 +00:00
df5fdf54af nixpkgs-wayland: 2025-04-01 -> 2025-04-02 2025-04-03 06:45:57 +00:00
4374bb2b3b signal-desktop-from-src: 7.49.0 -> 7.50.0 2025-04-03 06:45:43 +00:00
abac2d3b03 opencellid: 2025-04-01 -> 2025-04-03 2025-04-03 06:45:06 +00:00
a4c763356b uassets: 2025-03-30 -> 2025-04-03 2025-04-03 06:44:54 +00:00
3e2040f83f firefox-extensions.sponsorblock: 5.11.10 -> 5.11.11 2025-04-03 06:44:43 +00:00
533dd469da nixpkgs: 2025-04-01 -> 2025-04-02 2025-04-02 15:23:08 +00:00
cec0612a64 nixpkgs-wayland: 2025-03-31 -> 2025-04-01 2025-04-02 15:12:14 +00:00
2747079373 sane-input-handler: fix power_then_voldown keybinding 2025-04-01 05:46:43 +00:00
4eec2cba7a sane-input-handler: fix typo: swamsg -> swaymsg 2025-04-01 04:13:40 +00:00
bb646b1828 nixpkgs: 2025-03-31 -> 2025-04-01 2025-04-01 04:01:50 +00:00
097618056b nixpkgs-wayland: same-day update 2025-04-01 04:01:40 +00:00
582168f570 firefox-extensions.sponsorblock: 5.11.9 -> 5.11.10 2025-04-01 04:01:24 +00:00
b60f4c2778 nixpkgs: 2025-03-30 -> 2025-03-31 2025-04-01 02:53:12 +00:00
e618eb4258 nixpkgs-wayland: 2025-03-30 -> 2025-03-31 2025-03-31 15:36:41 +00:00
f0fbf78b1a sane-input-handler: fix toggleKeyboard improperly calling effect
'cant call proc when errexit is set...' this seems like a genuine limitation of osh
2025-03-31 07:40:32 +00:00
9fcaba8bf3 sane-input-handler: express the logic in a way thats more immune to the previous class of quoting error
had to introduce some hacks to keep the debuggability though. i don't like it.
2025-03-31 07:10:31 +00:00
6da4a5ab9d sane-input-handler: dont crash on unmapped actions 2025-03-31 04:16:04 +00:00
a21618cb9c nixpkgs: 2025-03-29 -> 2025-03-30 2025-03-30 05:39:25 +00:00
fa4a2c84c8 nixpkgs-wayland: 2025-03-29 -> 2025-03-30 2025-03-30 05:39:17 +00:00
1cc630b7bb opencellid: 2025-03-29 -> 2025-03-30 2025-03-30 05:38:47 +00:00
7742e48af7 uassets: 2025-03-28 -> 2025-03-30 2025-03-30 05:38:35 +00:00
4ec928ea55 feeds: subscribe to Nocturne Podcast (rec by 99 percent invisible) 2025-03-30 05:38:23 +00:00
65cb6a027d sane-input-handler: log fullscreen state from handleWith 2025-03-30 04:55:01 +00:00
bff5d5a757 sane-input-handler: activate media controls when inside a fullscreen app 2025-03-30 04:17:28 +00:00
47659f9649 sane-input-handler: lift command execution up to the toplevel 2025-03-30 03:44:27 +00:00
a01b99c2dc sane-input-handler: factor out the side effects from the mapping 2025-03-30 03:19:20 +00:00
e83bcd07f8 sane-input-handler: port to oil shell 2025-03-30 03:08:07 +00:00
03635fcf31 sane-input-handler: implement --dry-run flag 2025-03-30 00:19:16 +00:00
617babafad sane-input-handler: implement --verbose flag 2025-03-30 00:10:00 +00:00
6a14303395 oils-for-unix: ship it! 2025-03-29 23:14:39 +00:00
b016f9e3ef cross: fix oils-for-unix (i.e. oils/ysh) to cross compile 2025-03-29 23:14:31 +00:00
6c1d93d344 nixpkgs: 2025-03-28 -> 2025-03-29 2025-03-29 19:30:01 +00:00
615afdea01 nixpkgs-wayland: 2025-03-28 -> 2025-03-29 2025-03-29 19:29:48 +00:00
080eff357a opencellid: 2025-03-28 -> 2025-03-29 2025-03-29 19:29:34 +00:00
0c24119f0f assorted: ensure mktemp places temporaries in /tmp 2025-03-28 05:42:20 +00:00
0cc171734a nixpkgs: 2025-03-27 -> 2025-03-28 2025-03-28 05:36:45 +00:00
d2623272ae nixpkgs-wayland: 2025-03-27 -> 2025-03-28 2025-03-28 05:30:13 +00:00
f459f921b7 opencellid: 2025-03-27 -> 2025-03-28 2025-03-28 05:29:56 +00:00
3d2a93a645 uassets: 2025-03-22 -> 2025-03-28 2025-03-28 05:29:34 +00:00
60a165cbb5 programs/cargo: remove no-longer-necessary package override 2025-03-27 06:12:12 +00:00
ce236f6c7a nixpkgs: 2025-03-25 -> 2025-03-27 2025-03-27 06:11:58 +00:00
30fca5512c nixpkgs-wayland: 2025-03-24 -> 2025-03-27 2025-03-27 05:29:21 +00:00
f66b37a84f firefox-extensions: dont passthru the updateScript when wrapping addons
the unwrapped addon's update script simply doesn't apply to the wrapped addon. otherwise we do silly things like try to update each addon twice
2025-03-27 05:17:34 +00:00
7d92241678 opencellid: 2025-03-24 -> 2025-03-27 2025-03-27 05:10:38 +00:00
17f3002b99 scripts/update: use a unique working directory per package, to decrease updateScript interference 2025-03-27 05:10:25 +00:00
7e354ce52a firefox-extensions.addon-version-lister: refactor
especially, improve logging; and don't log to stdout else we confuse the downstream updaters
2025-03-27 05:08:35 +00:00
6601efb5de linux-manjaro: remove
pkg no longer evals due to depending on a `linux` no longer shipped in nixpkgs
2025-03-27 05:07:44 +00:00
54b2151a00 nixpkgs-bootstrap: rework "mkNixpkgs" such that "nixpkgs-bootstrap.$channel.updateScript" can be evaluated *without* importing the underlying nixpkgs
this makes it possible to update out of a nixpkgs staging rev whose toplevel attrset doesn't eval
2025-03-27 03:32:01 +00:00
7169193cc4 programs/epiphany: fix so it launches again (had an overly restrictive bunpen sandbox, after i enabled webkit sandboxing) 2025-03-25 15:25:16 +00:00
662525d159 nixpkgs: 2025-03-24 -> 2025-03-25 2025-03-25 15:10:23 +00:00
e7e70ce611 euicc-manual: 2025-03-20 -> 2025-03-25 2025-03-25 15:10:08 +00:00
1b3cdd7905 libmegapixels: 2025-03-20 -> 2025-03-24 2025-03-25 15:09:55 +00:00
a7b5c86f25 dtrx: fix .tar.lz extraction 2025-03-25 14:40:27 +00:00
8685e11a13 nixpkgs/patches: remove upstreamed patches; update hashes 2025-03-25 02:41:49 +00:00
cd48bdad93 nixpkgs: 0-unstable-2025-03-22 -> 0-unstable-2025-03-24 2025-03-25 02:36:31 +00:00
f8d2e9a19c nixpkgs-wayland: 0-unstable-2025-03-22 -> 0-unstable-2025-03-24 2025-03-25 02:36:08 +00:00
18a8c487a8 zimPackages.archlinux_en_all_maxi: 2025-02 -> 2025-03 2025-03-25 02:35:52 +00:00
3c52d8a38f opencellid: 0-unstable-2025-03-23 -> 0-unstable-2025-03-24 2025-03-25 02:35:34 +00:00
dcc497cfad opencellid: 2025-03-22 -> 2025-03-23 2025-03-23 10:25:52 +00:00
c8b1f9d221 scripts/deploy: remove "crappy"; i dont deploy it anymore 2025-03-23 01:22:50 +00:00
b528d75d31 buffybox: 2025-03-12 -> 2025-03-16 2025-03-22 21:26:00 +00:00
7743428c9e sops-nix: assets-unstable-2025-03-19 -> assets-unstable-2025-03-21 2025-03-22 21:25:46 +00:00
d50321fa0d uassets: same-day update 2025-03-22 21:25:34 +00:00
a36c4ee2ff firefox-extensions.ublock: 1.63.0 -> 1.63.2 2025-03-22 09:46:25 +00:00
889a02311d firefox-extensions: ignore beta/rc releases (again) 2025-03-22 09:46:06 +00:00
dca343daed firefox-extensions.addon-version-lister: port from sh to oil 2025-03-22 09:45:23 +00:00
3d3bd5e5b2 static-nix-shell.mkYsh: init 2025-03-22 09:06:17 +00:00
c9699b7bc4 nixpkgs-bootstrap.master: 2025-03-21 -> 2025-03-22 2025-03-22 06:19:26 +00:00
65acb2be75 nixpkgs-wayland: 2025-03-20 -> 2025-03-22 2025-03-22 06:19:06 +00:00
0987f2f8f7 opencellid: 2025-03-21 -> 2025-03-22 2025-03-22 06:18:48 +00:00
b56366bf98 uassets: 0-unstable-2025-03-20 -> 0-unstable-2025-03-22 2025-03-22 06:18:02 +00:00
33f894674c todo.md: mark snapper as complete 2025-03-21 20:10:51 +00:00
4b0d0cd226 ols: fix to reference correct opencellid csv path 2025-03-21 18:16:09 +00:00
56c6e97f8f opencellid: rework package; mirror the data to an external repo 2025-03-21 08:08:36 +00:00
b51352bd98 nixpkgs-wayland: same-day bump 2025-03-21 05:37:02 +00:00
9a7ce9501e nixpkgs-bootstrap: 2025-03-20 -> 2025-03-21 2025-03-21 05:36:53 +00:00
ab5d291840 megapixels-next: 2025-03-12 -> 2025-03-20 2025-03-21 05:36:31 +00:00
2a6e5e5c9b libmegapixels: 2025-03-07 -> 2025-03-20 2025-03-21 05:36:16 +00:00
687141ee1f firefox-extensions: fix the damn uBlock update script 2025-03-21 04:09:40 +00:00
8bf9dec92f opencellid: 2025-03-20 -> 2025-03-21 2025-03-21 02:38:58 +00:00
8886fa867e gpodder: ACTUALLY fix environment variable expansion
they were incorrectly being expanded at build time by the python wrapper; use extraMakeWrapperArgs to avoid that
2025-03-20 16:30:17 +00:00
cfde788dc4 gpodder: fix to preserve GPODDER_HOME environment variables 2025-03-20 15:38:40 +00:00
73d79e10e7 nixpkgs: intra-day update (to get my upstreamed fontconfig fixes) 2025-03-20 14:51:43 +00:00
6c9766c96b nixpkgs-wayland: 2025-03-19 -> 2025-03-20 2025-03-20 14:51:23 +00:00
4d8aef47dd signal-desktop-from-src: 7.47.0 -> 7.48.0 2025-03-20 14:51:10 +00:00
6087334f39 sops-nix: 2025-03-13 -> 2025-03-19 2025-03-20 14:50:45 +00:00
db4751467f uassets: 0-unstable-2025-03-15 -> 0-unstable-2025-03-20 2025-03-20 14:50:30 +00:00
ff1d845fcd gpodder-adaptive: fix broken Exec= path in .desktop files 2025-03-20 08:14:39 +00:00
f279ea5cc1 servo: transmission/torrent-done: add some more files to the remove list 2025-03-20 07:45:56 +00:00
b689ffded6 servo: transmission/torrent-done: when a torrent completes, only copy that torrent's files -- not its entire directory
this is mostly relevant for single-file torrents. untested
2025-03-20 07:32:40 +00:00
adcc3fd4eb nixpkgs: fix rocm patch hash 2025-03-20 07:31:22 +00:00
3ff8b1750f servo: transmission/torrent-done: document more of the env vars available 2025-03-20 06:57:37 +00:00
38381b890b {epiphany,tangram}: remove obsolete WEBKIT_DISABLE_SANDBOX_THIS_IS_DANGEROUS=1 hack
epiphany works fine without this on moby now. didnt test tangram
2025-03-20 06:44:27 +00:00
6a69d54de7 gpodder: synchronize feeds as part of desktop bringup -- not once per launch 2025-03-20 04:00:03 +00:00
272f8e6b2c nixpkgs: 2025-03-19 -> 2025-03-20 2025-03-20 03:40:11 +00:00
406defeaef opencellid: 2025-03-19 -> 2025-03-20 2025-03-20 03:39:59 +00:00
29415aa88a scripts/deploy: allow --deriv to be either a .drv or a store path 2025-03-20 03:39:44 +00:00
5133664603 radicale: relax auth. fixes gnome-contacts 2025-03-20 03:38:54 +00:00
48b4a61e7b firefox-extensions: fix version-regex so that uBlock won't try to update to nonexistent versions anymore 2025-03-20 03:18:20 +00:00
9b9d0760b4 firefox-extensions.ublock: restrict to signed releases ONLY 2025-03-20 02:33:37 +00:00
d868f4fa15 nixpkgs-wayland: 2025-03-16 -> 2025-03-19 2025-03-20 02:06:17 +00:00
1ff24f5664 nixpkgs: 2025-03-18 -> 2025-03-19 2025-03-20 02:06:07 +00:00
1dc0d20c81 opencellid: 2025-03-18 -> 2025-03-19 2025-03-20 02:05:49 +00:00
a65d738765 euicc-manual: 0-unstable-2025-03-09 -> 0-unstable-2025-03-20 2025-03-20 02:05:37 +00:00
6f26d87e0d fc-cache patches: push upstream 2025-03-19 16:06:40 +00:00
0dc62d7fe2 fotnconfig: push cross patches upstream (partially) 2025-03-19 14:55:41 +00:00
208a88b8ca fontconfig: document some limitations of the cache 2025-03-19 07:25:43 +00:00
8974dd082b nixpkgs: 0-unstable-2025-03-16 -> 0-unstable-2025-03-18 2025-03-19 07:05:48 +00:00
fb9d7ad886 gst-launch: improve docs 2025-03-19 07:03:28 +00:00
6770bd158e nixpkgs-wayland: 2025-03-15 -> 2025-03-16 2025-03-19 07:03:03 +00:00
7de157564a firefox-extensions.ublock: 1.62.0 -> 1.63.0 2025-03-19 07:02:38 +00:00
5532ecc12d overlays/preferences: remove obsolete build fixs 2025-03-19 07:02:15 +00:00
9ebaefe7c2 itgmania: remove obsolete patch 2025-03-19 07:01:51 +00:00
7df509603b dialect: remove obsolete patch 2025-03-19 07:01:23 +00:00
1653fd36d7 sequoia: remove obsolete patch 2025-03-19 07:01:10 +00:00
70da2d6ec4 opencellid: 0-unstable-2025-02-25 -> 0-unstable-2025-03-18 2025-03-19 07:00:49 +00:00
ba9aced5e4 bemenu: use env instead of wrapping 2025-03-19 07:00:33 +00:00
83884c66dd firefox: add search bookmark for pypi.org 2025-03-18 19:37:08 +00:00
9b1db9aa18 nvimpager: push cross compilation fix upstream 2025-03-18 07:19:49 +00:00
fc426b5c0b nixpkgs: patches: fix rocm hash 2025-03-18 06:03:18 +00:00
f6a21f1c56 nixpkgs: update hashes for rocm, zelda64 patches 2025-03-17 07:04:31 +00:00
951d905cca firefox: add an etsy search alias 2025-03-17 06:30:18 +00:00
470664d1c4 sane-reboot: do a force reboot if the original command fails (experimental) 2025-03-17 06:28:32 +00:00
7ee91765fc upstream some cross compilation fixes; remove patches which are no longer necessary 2025-03-17 01:28:16 +00:00
04328e7f2a nixpkgs: 2025-03-11 -> 2025-03-16 2025-03-16 21:54:15 +00:00
2d7a06e8cd megapixels-next: 2025-03-09 -> 2025-03-12 2025-03-16 21:53:57 +00:00
f07c3efff8 nixpkgs-wayland: 2025-03-11 -> 2025-03-15 2025-03-16 21:53:43 +00:00
6768cad5c5 signal-desktop-from-src: 7.46.0 -> 7.47.0 2025-03-16 21:53:27 +00:00
1597f68cf2 sops-nix: assets-unstable-2025-03-10 -> assets-unstable-2025-03-13 2025-03-16 21:53:10 +00:00
41dfe31800 syshud: 0-unstable-2025-03-09 -> 0-unstable-2025-03-11 2025-03-16 21:52:56 +00:00
e19b2d87f8 uassets: 0-unstable-2025-03-11 -> 0-unstable-2025-03-15 2025-03-16 21:52:44 +00:00
2544bb4d68 scripts/deploy: add --build flag
useful as e.g. deploy --pre --build, to only *build* all variants/hosts, but don't actually copy
2025-03-16 07:01:15 +00:00
ca6c6f7b57 neovim: swap out a filetype plugin in place of tree-sitter-nix-shell for handling #!nix-shell scripts 2025-03-16 06:43:02 +00:00
9b4ff72758 neovim: switch nix-shell plugin back to the old way 2025-03-16 01:51:12 +00:00
2ac61bfa14 preferences: switch back to precompiled electron binaries 2025-03-16 00:40:54 +00:00
d549f4a0eb programs: disable a few programs i havent used in a long time 2025-03-16 00:40:18 +00:00
b488eeaf1d neovim: ship the *wrapped* version of tree-sitter-nix-shell
hopefully this will fix syntax highlighting
2025-03-16 00:39:41 +00:00
a5d36ca633 tree-sitter-nix-shell: make compatible with tree-sitter 0.15 2025-03-16 00:39:12 +00:00
af87c40b97 impure.nix (updaters): dont hardcode the location of this repo 2025-03-15 05:01:14 +00:00
c926bfc765 scripts/check-nur: dont hardcode the location of this repo 2025-03-15 05:00:49 +00:00
13a2acfd70 scripts/update: dont hardcode the location of this repo 2025-03-15 04:55:09 +00:00
bbefa924cf scripts/update: implement -j option to control the number of parallel update jobs 2025-03-15 04:45:28 +00:00
855522daec go2tv: install both the full and the "light" CLI 2025-03-14 10:31:31 +00:00
8393c6f823 go2tv: partially fix the -tc option 2025-03-14 10:31:17 +00:00
90df599adf go2tv: re-enable SSDP search patch 2025-03-13 15:25:56 +00:00
5b718799a5 mslicer: remove unused dependencies 2025-03-12 16:41:17 +00:00
e264c8dd21 mslicer: fix so the mslicer GUI loads 2025-03-12 15:46:40 +00:00
8818f271cb snapper: increase snapshot lifetime, except for lappy 2025-03-12 15:30:38 +00:00
0fd424306a mpv: associate with .amr audio files 2025-03-12 15:30:38 +00:00
075a089696 mslicer: forcibly link against wayland
this fixes the error that it can't find wayland, but now it complains about unsupported (graphics) features

old error:
```
thread 'main' panicked at mslicer/src/main.rs:80:6:
called `Result::unwrap()` on an `Err` value: WinitEventLoop(Os(OsError { line: 80, file: "/build/mslicer-0.2.0-vendor/winit-0.29.15/src/platform_impl/linux/wayland/event_loop/mod.rs", error: WaylandError(Connection(NoWaylandLib)) }))
```

new error:
```
thread 'main' panicked at mslicer/src/main.rs:80:6:
called `Result::unwrap()` on an `Err` value: Wgpu(RequestDeviceError(RequestDeviceError { inner: Core(UnsupportedFeature(Features(POLYGON_MODE_LINE))) }))
```
2025-03-11 16:22:39 +00:00
b18797bf98 gps-share: 0.3.1 -> 0.3.1-unstable-2024-03-19 2025-03-11 15:29:02 +00:00
ba7a931b18 gps-share: port to useFetchCargoVendor 2025-03-11 15:24:26 +00:00
284eeceee9 nixpkgs-wayland: 2025-03-07 -> 2025-03-11 2025-03-11 15:10:38 +00:00
5b1fa9bf32 nixpkgs-bootstrap: 2025-03-10 -> 2025-03-11 2025-03-11 15:10:27 +00:00
30637c3da2 uvtools: 5.0.7 -> 5.0.8 2025-03-11 15:10:05 +00:00
58a6f7cfd9 uassets: 2025-03-09 -> 2025-03-11 2025-03-11 15:09:41 +00:00
15546f9b31 sops-nix: 2025-03-03 -> 2025-03-10 2025-03-11 15:09:20 +00:00
ab8699732a firefox-extensions.sponsorblock: 5.11.8 -> 5.11.9 2025-03-11 15:08:47 +00:00
3c1a762c25 mslicer: init at 0.2.0
i haven't tested anything beyond the --help flags

hopefully this generates .goo files which are more compatible than UVtools'
2025-03-11 07:29:13 +00:00
69297280eb templates: rust: update for fetchCargoVendor 2025-03-11 07:21:17 +00:00
3956a2f166 nixpkgs: 2025-03-08 -> 2025-03-10 2025-03-10 18:10:16 +00:00
6ed1375069 syshud: 2025-01-13 -> 2025-03-09 2025-03-10 18:06:01 +00:00
8be329096e megapixels-next: 2025-03-07 -> 2025-03-09 2025-03-10 18:05:09 +00:00
e2e58fae5e euicc-manual: 0-unstable-2025-03-03 -> 0-unstable-2025-03-09 2025-03-10 15:44:34 +00:00
763bce7824 firefox-extensions.sponsorblock: 5.11.7 -> 5.11.8 2025-03-10 15:44:18 +00:00
05e27a5af6 uassets: 0-unstable-2025-03-08 -> 0-unstable-2025-03-09 2025-03-10 15:44:00 +00:00
7ae39338b7 cassini: point to my own development fork
i hope this isn't a dead end.
2025-03-10 07:59:53 +00:00
0bdc5b4a59 cassini: ship it
this fixes the firewall, but looks like the data format may have changed since upstream authored the project...

i think i can change:
```py
desc['Data']['Attributes']['MainboardID']
```
to
```
desc['Data']['MainboardID']
```
2025-03-10 07:59:49 +00:00
ca1b9294e5 net/upnp: document the firewall commands better 2025-03-10 07:59:44 +00:00
4441e1609f sane-scripts.ssdp: use stdenv.mkDerivation instead of buildPythonPackage 2025-03-10 06:49:57 +00:00
47fb71d980 templates/pkgs/python: show how to package a setuptools project 2025-03-10 06:49:16 +00:00
58b89e88fe cassini: init at 0-unstable-2024-03-30 2025-03-10 06:48:26 +00:00
69c41081a0 uvtools: ship 2025-03-10 01:49:47 +00:00
73ddbe22f0 libqmi: fix cross via upstream patch 2025-03-10 01:49:47 +00:00
072a98dce4 zelda64recomp: ship it 2025-03-09 02:06:39 +00:00
3080c34398 nixpkgs-bootstrap.master: 0-unstable-2025-03-06 -> 0-unstable-2025-03-08 2025-03-09 01:10:06 +00:00
7c78ba5776 megapixels-next: 2.0.0-alpha1-unstable-2025-02-17 -> 2.0.0-alpha1-unstable-2025-03-07 2025-03-09 01:09:22 +00:00
4615203f09 uassets: 0-unstable-2025-03-07 -> 0-unstable-2025-03-08 2025-03-09 01:09:00 +00:00
7116f3a954 mm64baserom: init 2025-03-08 21:43:48 +00:00
fd000c6ad8 sm64baserom: remove ... from callArgs 2025-03-08 21:43:03 +00:00
dc8bdf09ad signal-desktop-from-src: provide libgdm directly rather than through mesa 2025-03-08 20:43:14 +00:00
ef54ea84dc sway: disable USB DAC media keys 2025-03-08 13:53:36 +00:00
6554c8ea52 rename flavored hosts to $hostName{-light,-min}{-staging,-next}
i.e. swap the order of those two parameters
2025-03-08 09:38:45 +00:00
9a87622ce6 Merge pull request 'impure.nix: Add extendModules to hosts.*' (#4) from shelvacu/colins-nix-files:patch-add-host-extendModules into master
Reviewed-on: #4
2025-03-08 09:33:22 +00:00
97e65a55e2 gnome-sound-recorder: fix sandboxing 2025-03-07 17:01:36 +00:00
574a00b431 gnome-sound-recorder: ship 2025-03-07 16:55:33 +00:00
4f633e8492 nixpkgs-staging: 0-unstable-2025-03-05 -> 0-unstable-2025-03-07 2025-03-07 07:12:00 +00:00
2f7c79e97f nixpkgs-wayland: 2025-03-06 -> 2025-03-07 2025-03-07 07:11:47 +00:00
0dc7c06b72 uassets: 2025-03-05 -> 2025-03-07 2025-03-07 07:11:25 +00:00
cd6d40154c signal-desktop-from-src: 7.44.0 -> 7.46.0
build migrates from npm -> pnpm

also, cleaned up a runtime dep on the build-time bash

native compilation tested; cross compilation succeeds, haven't tested the binary
2025-03-07 07:11:13 +00:00
4d259e93b0 nixpkgs: fix hash 2025-03-07 04:11:28 +00:00
e5c1e02255 nixpkgs-wayland: 2025-03-04 -> 2025-03-06 2025-03-06 08:01:36 +00:00
f596efab0e nixpkgs: 2025-03-05 -> 2025-03-06 2025-03-06 08:01:26 +00:00
ad453264fb nixpkgs-wayland: intra-day bump 2025-03-06 05:11:23 +00:00
9a1d2cbda1 nixpkgs: 2025-03-04 -> 2025-03-05 2025-03-06 05:11:14 +00:00
881573c28a sops-nix: 2025-02-11 -> 2025-03-03 2025-03-06 05:10:46 +00:00
eea9b47121 firefox-extensions.sponsorblock: 5.11.6 -> 5.11.7 2025-03-06 05:10:31 +00:00
e7c52340ab uassets: 0-unstable-2025-03-04 -> 0-unstable-2025-03-05 2025-03-06 05:10:14 +00:00
e126aafa9b zsh: disable Ctrl+S "suspend terminal" shortcut 2025-03-04 21:16:41 +00:00
Shelvacu
a405850cf8 impure.nix: Add extendModules to hosts.*
With this something like `hosts.servo.extendModules { networking.hostname = "shel-is-awesome"; }` works as expected. Mirrors the functionality of extendModules on the result of evalConfig
2025-03-04 12:25:55 -08:00
4f4c06f753 clightning: disable problematic plugin, add more debugging options 2025-03-04 18:58:05 +00:00
5fbb790902 nipkgs-bootstrap.master: 0-unstable-2025-02-28 -> 0-unstable-2025-03-04 2025-03-04 16:53:59 +00:00
55bfcf3116 nixpkgs-wayland: 0-unstable-2025-02-26 -> 0-unstable-2025-03-04 2025-03-04 16:53:05 +00:00
1d42dccb6e euicc-manual: 0-unstable-2025-02-04 -> 0-unstable-2025-03-03 2025-03-04 16:52:49 +00:00
1d28dac94f libmegapixels: 0.2.0-unstable-2025-02-11 -> 0.2.0-unstable-2025-03-03 2025-03-04 16:52:30 +00:00
6a42b9125b zimPackages.wikipedia_en_100: 2024-06 -> 2025-03 2025-03-04 16:52:13 +00:00
e80c7e020a uassets: 0-unstable-2025-02-26 -> 0-unstable-2025-03-04 2025-03-04 16:51:53 +00:00
b5d30f989b firefox-extensions.sponsorblock: 5.11.5 -> 5.11.6 2025-03-04 16:51:39 +00:00
dd9daa06a8 fix impure.nix to be compatible with updateScripts 2025-03-04 07:30:57 +00:00
8160840bf2 audacity: fix GUI 2025-03-04 05:12:52 +00:00
d9a31ddff3 programs: add (and ship) see-cat; a program to pretty-print anything in the terminal 2025-03-04 05:00:58 +00:00
0448603731 bootstrap: avoid ever invoking mkNixpkgs without the localSystem argument
apparently importing nixpkgs and then `override`ing with `localSystem`
isn't enough; it needs `localSystem` from the start.
2025-03-03 08:30:25 +00:00
989f321c53 toplevel: pass localSystem into mkPkgs
hopefully this fixes pure-mode flake evaluation
2025-03-03 08:11:20 +00:00
64a2d60d89 sane-bt-rm: support deleting multiple torrents in one invocation 2025-03-02 05:25:28 +00:00
ccd343f0b6 nixpkgs: 0-unstable-2025-02-26 -> 0-unstable-2025-02-28 2025-02-28 16:52:05 +00:00
4be7222f98 emgucv: remove unused inputs 2025-02-28 09:04:17 +00:00
e8ab744bcc uvtools: fix missing runtime dep on emgucv
now `UVtoolsCmd convert case.sl1 Chitubox case.ctb` works!

or, appears to work. i have no printer with which to test the output yet
2025-02-28 07:33:00 +00:00
cf001326cd emgucv: port to buildDotnetModule
this isn't strictly necessary, but it seems to simplify the packaging
2025-02-28 07:32:07 +00:00
e93d04c09e nixpkgs-wayland: 0-unstable-2025-02-25 -> 0-unstable-2025-02-26 2025-02-27 06:47:20 +00:00
df0e072645 nixpkgs: 0-unstable-2025-02-25 -> 0-unstable-2025-02-26 2025-02-27 06:47:11 +00:00
5f8f8a44ba uassets: 0-unstable-2025-02-25 -> 0-unstable-2025-02-26 2025-02-27 02:53:36 +00:00
de8a544acd emgucv: init at 4.10.0 2025-02-26 17:32:00 +00:00
06add1cc55 signal-desktop-from-src: update hash (why did it change??) 2025-02-25 20:35:57 +00:00
fc40b9671e nixpkgs-wayland: intra-day update 2025-02-25 20:35:19 +00:00
68fc360586 uassets: intra-day update 2025-02-25 20:34:48 +00:00
5f79ddde03 opencellid: 0-unstable-2025-01-02 -> 0-unstable-2025-02-25 2025-02-25 20:34:02 +00:00
13f38d6fd7 servo: fix kiwix-serve build 2025-02-25 08:11:13 +00:00
3b44f05af0 nixpkgs: push librsvg patch toward upstream 2025-02-25 08:11:03 +00:00
79d567cd01 cross: fix librsvg (hopefully) 2025-02-25 07:30:39 +00:00
6bb6e4319c programs: gnome-contacts: remove dependency on webkitgtk 2025-02-25 07:30:37 +00:00
4c72d1af8e nixpkgs-bootstrap: 0-unstable-2025-02-24 -> 0-unstable-2025-02-25 2025-02-25 03:58:51 +00:00
9b0c90be7d nixpkgs-wayland: 0-unstable-2025-01-28 -> 0-unstable-2025-02-25 2025-02-25 03:58:38 +00:00
3f7000f2f8 signal-desktop-from-src: 7.42.0 -> 7.44.0 2025-02-25 03:58:25 +00:00
ffb08b1195 uassets: 0-unstable-2025-02-24 -> 0-unstable-2025-02-25 2025-02-25 03:57:26 +00:00
4fd4f6fa2f users/systemd: disable autostart limit for user services 2025-02-25 03:54:58 +00:00
9e6eb1eb94 nixpkgs: 0-unstable-2025-02-22 -> 0-unstable-2025-02-24 2025-02-25 02:51:24 +00:00
33108ea9e1 zimPackages.archlinux_en_all_maxi: 2022-12 -> 2025-02 2025-02-24 18:50:48 +00:00
8153e5e033 uvtools: only grab the deps we actually need 2025-02-24 18:49:54 +00:00
04d1da8e39 TODO: fold: sidebery 2025-02-24 18:48:55 +00:00
1aad4622a7 uassets: 0-unstable-2025-02-17 -> 0-unstable-2025-02-24 2025-02-24 18:43:08 +00:00
6f6851f565 sidebery: 5.3.2 -> 5.3.3 2025-02-24 18:41:20 +00:00
acb00e7f8a impure.nix: allow scripts/update to work with more types of updateScript 2025-02-24 07:35:14 +00:00
621cc83740 uvtools: init at 5.0.7 2025-02-24 07:34:55 +00:00
d399a824e4 nixpkgs: 0-unstable-2025-02-17 -> 0-unstable-2025-02-22 2025-02-24 05:55:15 +00:00
ec77f8f6b9 lemoa: upgrade rustPlatform.fetchCargoTarball -> rustPlatform.fetchCargoVendor
the former is deprecated
2025-02-22 09:55:58 +00:00
d5226957bf lemoa: fix build (it had incorrect cargo hash) 2025-02-22 09:43:00 +00:00
0b1c94d4a3 net: add guest wifi 2025-02-22 04:51:14 +00:00
64f23282e2 sane-stop-all-servo: add missing services 2025-02-19 08:32:34 +00:00
a530ee8ae4 nixpkgs: 0-unstable-2025-02-08 -> 0-unstable-2025-02-17 2025-02-18 15:31:10 +00:00
87c58c312d megapixels-next: 2.0.0-alpha1-unstable-2025-01-16 -> 2.0.0-alpha1-unstable-2025-02-11 2025-02-18 15:31:10 +00:00
dad4dd1860 uassets: assets-unstable-2025-01-31 -> assets-unstable-2025-02-11 2025-02-18 15:31:10 +00:00
b8e2205a15 uassets: 0-unstable-2025-02-07 -> 0-unstable-2025-02-17 2025-02-18 15:31:10 +00:00
9029127ea8 uninsane-dot-org: 0-unstable-2024-11-16 -> 0-unstable-2025-02-09 2025-02-18 15:30:50 +00:00
4134525019 snapper: decrease from 3 to 2 daily snapshots
servo is really running out of space
2025-02-18 15:30:50 +00:00
e4fe5e0cd4 snapper: gc old snapshots more frequently 2025-02-18 15:30:50 +00:00
dc0ad5ed20 signal-desktop-from-src: remove old source hashes 2025-02-18 15:25:49 +00:00
e4ba0d3c83 signal-desktop-from-src: 7.37.0 -> 7.42.0 2025-02-18 15:25:15 +00:00
e7ce6a2ef6 remove merged coturn build fix 2025-02-18 05:56:02 +00:00
16f4afbc60 feeds: unsubscribe from Adam Savage 2025-02-17 01:22:48 +00:00
21cb18885c sane-cast/go2tv: fix broken casting due to upstream SSDP changes 2025-02-13 06:59:39 +00:00
a636e19198 todo.md: soulseek CLI 2025-02-13 05:38:45 +00:00
0327d7072a snapper: cull snapshots more aggressively 2025-02-13 05:37:04 +00:00
396efcd357 nvimpager: fix cross compilation 2025-02-11 04:13:45 +00:00
79b4e5a652 secrets/net: be picky about which cell networks we autoconnect to 2025-02-11 03:50:51 +00:00
233ee5be43 networkmanager: actually plumb autoconnect for connections which specify it 2025-02-11 03:50:30 +00:00
da2217f194 sane-input-handler: lengthen the power-tap-2 threshold from 750ms to 825ms 2025-02-10 05:21:48 +00:00
ab55adb52d feeds: unsubscribe from Tech Won't Save Us 2025-02-10 03:46:44 +00:00
d419a3cb08 sane-input-handler: increase power-tap-hold duration from 750ms -> 875ms
i'm *very occasionally* killing windows when i mean to screen-off, but it's frequent enough that i'm now hesitant to double-tap power
2025-02-10 03:45:39 +00:00
ba38fbc4e5 ollama: dont ship on -min and -light variants 2025-02-10 03:43:24 +00:00
925c0faa05 servo: switch a few services which Require postgresql to a weaker Wants dependency, in light of my postgresql flakiness 2025-02-09 18:59:52 +00:00
8ec309e33f sway: increase the vertical padding inside titlebars 1 -> 3
i think this increases the height by 4 pixels, which may be a bit much. OTOH, it _feels_ like it decreased when i switched the default font earlier, and i'm just compensating for that
2025-02-09 03:50:23 +00:00
bec429a04d nixpkgs: 2025-02-07 -> 2025-02-08 2025-02-08 12:26:27 +00:00
77f62d247f nixpkgs: 2025-01-28 -> 2025-02-07 2025-02-08 12:26:27 +00:00
f6cddfb7e8 bonsai: avoid shipping multiple versions of the package 2025-02-08 11:51:39 +00:00
290fd281b9 haredoc: dont ship the *entirety* of hare; just the .ha files we need for docs 2025-02-08 11:43:34 +00:00
690abc305f sops-nix: assets-unstable-2025-01-20 -> assets-unstable-2025-01-31 2025-02-08 11:42:52 +00:00
e6d028b01d megapixels-next: 2.0.0-alpha1-unstable-2024-12-27 -> 2.0.0-alpha1-unstable-2025-01-16 2025-02-08 11:42:35 +00:00
9733f8af7a uassets: 0-unstable-2025-01-28 -> 0-unstable-2025-02-07 2025-02-08 11:42:17 +00:00
203aa4b470 firefox-extensions.sidebery: 5.3.1 -> 5.3.2 2025-02-08 11:42:03 +00:00
6542919831 feeds: add malicious.life podcast (like Darknet Diaries) 2025-02-08 10:46:12 +00:00
5d42f5a6e5 feeds: add Lawfare Daily 2025-02-08 03:27:55 +00:00
a5054deef0 ollama: add deepseek-r1-671b model 2025-02-07 12:13:50 +00:00
3ed2d08a77 net: add connection for overseas mobile provider 2025-02-05 19:30:40 +00:00
e2775ea266 networkmanagerapplet: ship
the UI overflows too much to be usable on mobile, however it does work (and is useful) on lappy
2025-02-05 19:30:11 +00:00
d077036bb6 desko: ship a few more ollama models 2025-02-05 17:16:19 +00:00
7a149d8f2f desko: ship 32b variant of deepseek-r1-abliterated 2025-02-05 14:08:16 +00:00
44f05916f2 desko: ship a bunch more models, especially deepseek-r1 and uncensored/"abliterated" models 2025-02-05 13:41:46 +00:00
5a88a10a19 confy: ship 2025-02-04 09:37:11 +00:00
ac899b614b hosts/all: wifi: auto-connect to non-password-protected APs 2025-02-04 08:39:00 +00:00
f1c7c32e84 wifi: update Brussels APs 2025-02-03 20:42:52 +00:00
9399fd0254 wifi: update 2025-02-01 14:11:34 +00:00
cb1a72cb71 blanket: fix dbus sandboxing 2025-01-31 07:13:05 +00:00
6d5c75b38c blanket: ship
turns out it actually is useful, in crowed settings where i can't focus
2025-01-31 06:56:23 +00:00
6ba9743f05 sane-vpn: fix to provide bunpen with the gateway address for "sane-vpn do none ..." 2025-01-31 06:05:32 +00:00
2ffaf1f3d8 sane-vpn: dont show the ip-check dialog for none region 2025-01-31 06:05:32 +00:00
3dea4370d7 sane-vpn: fix typos in recently-modified sane-vpn {up,down} paths 2025-01-31 06:05:32 +00:00
cebedc43c7 WIP: sane-vpn: fix "sane-vpn up none" to correctly delegate all DNS to the DHCP-provided servers when using BIND
previously this only worked when using hickory-dns as the local resolver
2025-01-31 06:05:32 +00:00
14d5910e79 cups: enable
verified working on lappy; builds for moby
2025-01-30 17:25:44 +00:00
45526bd583 feeds: subscribe to Quorators 2025-01-30 02:21:16 +00:00
a42bd18d14 feeds: unsubscribe from Justin Robert Young
too... trivia-like. like a sports betting podcast
2025-01-30 02:15:48 +00:00
b536a30919 fonts: switch to Monaspace Argon
this one is especially easy for reading code comments
2025-01-29 23:35:17 +00:00
ec71b0219a fonts: try Monaspace... but dont commit to it right now 2025-01-29 23:24:24 +00:00
41b1ed0c31 cross: update upstreaming status 2025-01-29 00:24:47 +00:00
9fbb9c0c07 uassets: 2025-01-26 -> 2025-01-28 2025-01-28 23:24:10 +00:00
f90faf4516 nixpkgs-wayland: 0-unstable-2025-01-27 -> 0-unstable-2025-01-28 2025-01-28 23:24:02 +00:00
0d6ae1cc3a nixpkgs: 0-unstable-2025-01-27 -> 0-unstable-2025-01-28 2025-01-28 23:23:48 +00:00
b40c5abaf4 nixpkgs-wayland: 0-unstable-2025-01-26 -> 0-unstable-2025-01-27 2025-01-27 21:23:36 +00:00
063c897b43 nixpkgs: 0-unstable-2025-01-26 -> 0-unstable-2025-01-27 2025-01-27 21:23:28 +00:00
63bba23ff2 nixpkgs-wayland: 0-unstable-2025-01-21 -> 0-unstable-2025-01-26 2025-01-26 11:13:13 +00:00
214bd1e696 nixpkgs: 0-unstable-2025-01-25 -> 0-unstable-2025-01-26 2025-01-26 11:13:04 +00:00
3d584cb07b uassets: 0-unstable-2025-01-25 -> 0-unstable-2025-01-26 2025-01-26 11:12:46 +00:00
6f0f54f0ae geary: try to reduce dbus access, but then abort because i notice it uses xdg-dbus-proxy internally, which doesnt yet support nesting! 2025-01-26 09:06:28 +00:00
5f8d64cdb5 nwg-panel: restrict dbus access 2025-01-26 09:06:02 +00:00
049011e7db gnome-calls: restrict dbus
tested, can receive calls, it rings, notifies on missed call, notification can be clicked to call back, in-call audio works and mute button works (on lappy)
2025-01-26 09:03:32 +00:00
40e2cbec2c wireplumber: grant access to the system bus
this is required for bluetooth audio
2025-01-26 06:28:00 +00:00
65997c9f00 programs: definitions for blueman, but dont actually enable it 2025-01-26 06:27:39 +00:00
3c41a0bd29 blueberry: enable bluetooth.service
i'm still not able to connect to a bluetooth speaker yet...
2025-01-26 05:34:56 +00:00
88ef815717 blueberry: patch for cross compilation, and ship it
note that this doesn't do anything yet, as i need to re-enable bluez (bluetooth.service), first
2025-01-26 05:07:35 +00:00
3f0e2c5cb2 aarch64/moby: fix papers cross-compilation and use that as my PDF viewer instead of zathura 2025-01-26 03:04:54 +00:00
54a23fd109 cross: push vpnc-related changes upstream to nixpkgs 2025-01-26 01:38:15 +00:00
ccb90e7e4e cross: update upstreaming status 2025-01-26 01:05:27 +00:00
8ab56cbe8e feeds: unsubscribe from 60 Minutes
too informationally sparse
2025-01-25 21:45:20 +00:00
f3fb303cbf nixpkgs: 0-unstable-2025-01-24 -> 0-unstable-2025-01-25 2025-01-25 21:01:53 +00:00
85cdef4b4e uassets: 0-unstable-2025-01-21 -> 0-unstable-2025-01-25 2025-01-25 21:01:43 +00:00
5ed6df90c2 cross: push networkmanager plugin patches toward upstream 2025-01-25 12:42:37 +00:00
63281e5486 postgresql: increase log level 2025-01-25 12:34:20 +00:00
3debab9a7a servo: shelvacu: allow to start/stop/restart units 2025-01-25 12:33:59 +00:00
de6845834f servo: add Shelvacu as postgres admin 2025-01-25 12:09:51 +00:00
d99a2382ff add missing file to git 2025-01-25 10:57:19 +00:00
2a1b0cc90c nixpkgs: 0-unstable-2025-01-23 -> 0-unstable-2025-01-24 2025-01-25 01:52:40 +00:00
b9cfd504cc nixpkgs-bootstrap.master: fix hash
how do these 0-hashes sneak in without breaking builds sooner?
2025-01-24 20:07:59 +00:00
429bb604d7 nixpkgs-wayland: intra-day bump 2025-01-24 05:57:00 +00:00
bb32cadc4a nixpkgs: 2025-01-22 -> 2025-01-23 2025-01-24 05:56:46 +00:00
fcaa2079e1 firefox-extensions.sidebery: 5.3.0 -> 5.3.1 2025-01-24 05:56:29 +00:00
dba7949943 firefox-extensions.sponsorblock: 5.11.3 -> 5.11.5 2025-01-24 05:56:16 +00:00
a368fb3fb2 gnome-maps: associate with geo: URI (seen via fosdem.org, and gnome-maps copy-to-clipboard) 2025-01-24 05:55:59 +00:00
37bb0cf076 nixpkgs-bootstrap: include the name "nixpkgs" in the source derivation, for easier debugging 2025-01-23 21:42:39 +00:00
1a59005cef firefox-extensions: dont update to beta versions 2025-01-22 21:10:18 +00:00
2364e9a819 pipeline: remove (upstreamed into nixpkgs) 2025-01-22 21:06:52 +00:00
b9237d9c46 libcap-with-captree: remove (upstreamed into main libcap) 2025-01-22 21:06:52 +00:00
74deec9bbf directoryListingUpdater2: remove leftover files (my changes for this were upstreamed) 2025-01-22 21:06:52 +00:00
34eb0ed749 buffybox: remove (upstreamed into nixpkgs) 2025-01-22 21:06:52 +00:00
47a433d42a blast-ugjka: remove (upstreamed, as sblast) 2025-01-22 21:06:52 +00:00
c05771ba0b nixpkgs-bootstrap: fix hash for nautilus cross patch 2025-01-22 21:06:37 +00:00
977859776b servo: ship a bunch more kiwix archives
can't ship khanacademy yet because it takes literal days to download
2025-01-22 20:46:08 +00:00
9bbd4f0887 nixpkgs: 2025-01-21 -> 2025-01-22 2025-01-22 20:37:55 +00:00
742f1ab700 euicc-manual: 0-unstable-2024-12-10 -> 0-unstable-2025-01-05 2025-01-22 20:37:25 +00:00
b2c0ca0b42 firefox-extensions.sponsorblock: 5.11.2 -> 5.11.3 2025-01-22 20:36:32 +00:00
c1565efb2d sane-reclaim-disk-space: fix capability sandboxing 2025-01-22 10:50:49 +00:00
83477b9e70 zim packages: add a bunch more
the khanacademy one is taking ages to download...
2025-01-22 10:50:36 +00:00
e8ef317468 nixpkgs: 2025-01-20 -> 2025-01-21 2025-01-21 18:34:52 +00:00
a741962f1f nixpkgs-wayland: 0-unstable-2025-01-19 -> 0-unstable-2025-01-21 2025-01-21 18:34:42 +00:00
080de3d9ce sops-nix: assets-unstable-2025-01-10 -> assets-unstable-2025-01-20 2025-01-21 18:34:30 +00:00
05f97dc836 firefox-extensions.sideberry: 5.2.0 -> 5.3.0 2025-01-21 18:34:17 +00:00
dc54383632 uassets: 0-unstable-2025-01-20 -> 0-unstable-2025-01-21 2025-01-21 18:34:00 +00:00
78feb634ad servo: postgresql: fix Restart=on-failure 2025-01-21 18:07:42 +00:00
5740718d08 servo: gitea: rate limit the restarts 2025-01-21 11:31:32 +00:00
a7010f597d servo: matrix: tune restart settings 2025-01-21 11:10:52 +00:00
ffa9153101 servo: postgres: regulate the restarting a bit more to prevent systemd from disabling it 2025-01-21 10:37:29 +00:00
8374418abc postgresql: WIP script to recollate the database 2025-01-21 06:41:59 +00:00
8607f3c2fd servo: postgres: move to subdirectory 2025-01-21 06:31:50 +00:00
7f1be0d933 systemctl: fix sandboxing 2025-01-21 05:51:42 +00:00
8fbf0e416b syshud: 0-unstable-2024-11-25 -> 0-unstable-2025-01-13 2025-01-21 05:51:41 +00:00
73c7dbb27a nixpkgs: 0-unstable-2025-01-19 -> 0-unstable-2025-01-20
this includes a kernel update from 6.12.x -> 6.13.0
2025-01-21 05:51:41 +00:00
ac9a44cb48 firefox-extensions.sponsorblock: 5.11.1 -> 5.11.2 2025-01-21 05:51:41 +00:00
ffaba82483 uassets: 0-unstable-2025-01-19 -> 0-unstable-2025-01-20 2025-01-21 05:51:41 +00:00
e43ad983cd nixpkgs: 0-unstable-2025-01-18 -> 0-unstable-2025-01-19
this includes a staging -> master merge, yay
2025-01-21 05:51:41 +00:00
e0447581d4 nixpkgs-wayland: 0-unstable-2025-01-04 -> 0-unstable-2025-01-19 2025-01-21 05:51:41 +00:00
4365babde2 uassets: 0-unstable-2025-01-18 -> 0-unstable-2025-01-19 2025-01-21 05:51:41 +00:00
ea9d42b778 snapper: enable for ALL hosts 2025-01-21 05:51:41 +00:00
ffd3ecd465 programs: ship snapper 2025-01-21 05:51:41 +00:00
2b34ef8ba4 desko: enable snapper 2025-01-21 05:51:41 +00:00
a46faff066 btrfs-progs: fix sandboxing for btrfs subvolume ops 2025-01-21 05:51:41 +00:00
68c9cf7189 desko: remove dead hickory-dns disable line 2025-01-21 05:51:41 +00:00
0738bc7395 feeds: subscribe to WHYcast 2025-01-19 01:41:58 +00:00
cb8b7676b6 erdtree: ship 2025-01-18 22:16:24 +00:00
fe28340922 bunpen: support --bunpen-autodetct existingDir 2025-01-18 22:16:17 +00:00
67e5a386a6 nixpkgs-bootstrap: 2025-01-17 -> 2025-01-18 2025-01-18 21:42:31 +00:00
8a79c0e995 firefox-extensions.sponsorblock: 5.11 -> 5.11.1 2025-01-18 21:33:54 +00:00
1ad46f7411 uassets: 2025-01-13 -> 2025-01-18 2025-01-18 21:33:40 +00:00
271ac808fa nixpkgs: 0-unstable-2025-01-14 -> 0-unstable-2025-01-17 2025-01-18 04:50:19 +00:00
1d8b45f37a reminders: init at 5.0.rc-unstable-2023-05-03
this is just translated from <https://github.com/NixOS/nixpkgs/pull/363748>
2025-01-17 08:48:56 +00:00
38a9c3baf4 todo.md: sync 2025-01-14 23:37:26 +00:00
9fccd2cf86 programs: gnome-frog: split into own file; hopefully fix dbus sandboxing 2025-01-14 23:31:41 +00:00
65633eea57 cross: upstream patches for nautilus, gnome-settings-daemon 2025-01-14 08:30:13 +00:00
3bd57f7370 overlays/cross: update upstreaming notes 2025-01-14 06:44:23 +00:00
9f49a12dac nixpkgs: 0-unstable-2025-01-13 -> 0-unstable-2025-01-14 2025-01-14 06:43:46 +00:00
df0ade9319 docs: dns/BIND: show how to invoke the service manually 2025-01-13 21:23:14 +00:00
5b358c8460 nixpkgs: 0-unstable-2025-01-12 -> 0-unstable-2025-01-13 2025-01-13 19:47:30 +00:00
9bb6866b85 sops-nix: assets-unstable-2025-01-05 -> assets-unstable-2025-01-10 2025-01-13 19:46:53 +00:00
8d30074c79 uassets: 0-unstable-2025-01-06 -> 0-unstable-2025-01-13 2025-01-13 19:46:41 +00:00
66bcd52341 firefox-extensions.sponsorblock: 5.10.5 -> 5.11 2025-01-13 11:23:37 +00:00
09fbe8f64e feeds: link to podcast charts 2025-01-13 09:09:55 +00:00
219b18d157 feeds: subscribe to Chapo Trap House (havent listened yet) 2025-01-13 08:43:22 +00:00
630278dedb feeds: subscribe to Advent of Computing (havent listened to it yet) 2025-01-13 08:28:02 +00:00
121e86e78b feeds: unsub from All-In
what a whiplash yeesh
2025-01-13 08:17:12 +00:00
3988191739 nixpkgs: 0-unstable-2025-01-11 -> 0-unstable-2025-01-12 2025-01-12 07:27:51 +00:00
ccca829c79 lpac: 2.2.0 -> 2.2.1 2025-01-12 00:45:04 +00:00
8e5dba2dc1 libdng: 0.2.1-unstable-2024-12-27 -> 0.2.1-unstable-2025-01-07 2025-01-11 23:15:16 +00:00
013ddec10c nixpkgs: 0-unstable-2025-01-10 -> 0-unstable-2025-01-11 2025-01-11 23:15:03 +00:00
6c55b4ae1c programs: fractal: add missing mesa cache dir 2025-01-11 21:30:41 +00:00
f014a9066e programs: dissent: add missing mesa cache dir 2025-01-11 21:30:23 +00:00
b228ea123d servo: clightning: rebalance channels in the background, always 2025-01-11 10:56:32 +00:00
cdbb128fbe nixpkgs patches: update; disable lua-language-server cross patch 2025-01-11 10:55:52 +00:00
162c3d16c6 clightning-sane: improve docs 2025-01-11 09:54:10 +00:00
de83d06f48 clightning-sane: show node aliases, not just pubkeys, on a best-effort 2025-01-11 09:30:18 +00:00
8d6b336100 clightning-sane: handle nodes w/o aliases 2025-01-11 07:23:27 +00:00
616e4c645d radicale: remove source override (upstream has released new version; no longer necessary to patch) 2025-01-11 00:45:27 +00:00
4f2c14f341 nixpkgs: 0-unstable-2025-01-05 -> 0-unstable-2025-01-10 2025-01-11 00:45:27 +00:00
b03b20f2f4 try (but fail) to enable dbus sandboxing for more apps: seems xdg-dbus-proxy doesnt nest! 2025-01-11 00:45:27 +00:00
5ea4e07847 programs: foliate: restrict dbus 2025-01-11 00:45:27 +00:00
06840bde34 programs: epiphany: restrict dbus 2025-01-11 00:45:27 +00:00
fe149e699e programs: portfolio: restrict dbus 2025-01-11 00:45:27 +00:00
b1690b5d8c programs: komikku: fix launch failure due to missing dbus access 2025-01-11 00:45:27 +00:00
91d56a8538 programs: feedbackd: restrict dbus 2025-01-11 00:45:27 +00:00
ec816311f9 programs: dino: restrict dbus 2025-01-11 00:45:27 +00:00
3fffc50975 modules/programs: allow access to the ProxyResolver portal 2025-01-11 00:45:27 +00:00
23513e34f2 programs: signal-desktop: restrict dbus 2025-01-11 00:45:27 +00:00
22a362ea4b programs: gnome-clocks: restrict dbus 2025-01-11 00:45:27 +00:00
d942498282 programs: gnome-contacts: restrict dbus 2025-01-11 00:45:27 +00:00
133f8703dc programs: firefox-xdg-open: restrict dbus 2025-01-11 00:45:27 +00:00
b40d2cc2a5 programs: discord: restrict dbus 2025-01-11 00:45:27 +00:00
95839bfad8 programs: dissent: restrict dbus 2025-01-11 00:45:27 +00:00
7ad1ca4e6b gnome-keyring: restrict dbus 2025-01-11 00:45:27 +00:00
07525a7000 gpodder: restrict dbus 2025-01-11 00:45:27 +00:00
35ce9a412d rofi-run-command: restrict dbus
can't restrict ALL of rofi, for some reason. maybe dbus proxies don't nest well?
2025-01-11 00:45:27 +00:00
14b475a0a6 sane-open: restrict dbus 2025-01-11 00:45:27 +00:00
a3ebeb0543 modules/programs: enable org.freedesktop.DBus.Introspectable.Introspect for portal users 2025-01-11 00:45:27 +00:00
7faa36b225 docs: matrix/irc: record some random .onion address i found for oftc 2025-01-11 00:45:27 +00:00
1721839c8d firefox: sandbox dbus
it's possible this breaks camera access; have not extensively tested
2025-01-11 00:45:27 +00:00
9b13717ecd tor-browser: sandbox dbus 2025-01-11 00:45:27 +00:00
5cae0edb12 mpv: sandbox dbus 2025-01-11 00:45:27 +00:00
4c56ea3e6b modules/programs: add more portal sandboxing options, and MPRIS option 2025-01-11 00:45:27 +00:00
091de5c788 refactor: fractal: sort sandboxing items 2025-01-11 00:45:27 +00:00
02669d3ef4 clightning-sane: dont crash when printing channels for which the scid hasnt been allocated yet 2025-01-09 04:23:37 +00:00
fa5fcaa2bf clightning-sane: default to "status" action when none specified 2025-01-09 04:04:51 +00:00
ff9b1538fe papers: disable sandboxing until i figure out why it cant open embedded media 2025-01-08 01:09:08 +00:00
de1acf946d uassets: 0-unstable-2025-01-05 -> 0-unstable-2025-01-06 2025-01-06 22:54:06 +00:00
65da9bd004 fractal: restrict dbus access a bit tighter 2025-01-06 11:25:35 +00:00
0915957337 bunpen: fix bracket mismatch 2025-01-06 10:02:21 +00:00
2a1d6fff08 programs: refactor whitelistDbus 2025-01-06 10:02:21 +00:00
365d9c2457 bunpen: dbus: replace "talk" with "call" specifier
the latter serves *mostly* as a more capable version of the former
2025-01-06 08:53:33 +00:00
5644dde395 bunpen: address a trivial todo 2025-01-06 03:11:16 +00:00
cce27f52fb bunpen: dbus: dont override stdin/stdout with dup2'd fds; just use normal dup instead
seems clearing non-0/1/2 fd's is a thing specific to pasta
2025-01-06 03:07:52 +00:00
d3a3231861 bunpen: pasta: fix to not keep the non-sandboxed file open after exec'ing into the user program 2025-01-06 03:00:35 +00:00
7f069b0f23 bunpen: tests: add a timeout for each integration test 2025-01-06 02:58:58 +00:00
57ef42991e bunpen: dbus: fix to not keep the non-sandboxed file open after exec'ing into the user program 2025-01-06 02:52:46 +00:00
db45fabb9c bunpen: dbus proxy: get it working even when --bunpen-keep-pid 2025-01-06 02:34:49 +00:00
8ac9ea4a91 bunpen: backfill tests that cover dbus proxying in a partial sandbox 2025-01-06 01:09:07 +00:00
94ffab5874 bunpen: dbus: backfill talk/own test cases 2025-01-06 00:42:30 +00:00
5814ae82fb nix-tree: ship it (for x86 only) 2025-01-05 22:34:19 +00:00
865b6a0679 nixpkgs-bootstrap.staging: 0-unstable-2025-01-03 -> 0-unstable-2025-01-05 2025-01-05 20:46:34 +00:00
513fe937ba nixpkgs-wayland: 0-unstable-2025-01-03 -> 0-unstable-2025-01-04 2025-01-05 20:46:05 +00:00
bac941d16a sops-nix: assets-unstable-2024-12-29 -> assets-unstable-2025-01-05 2025-01-05 20:45:52 +00:00
0df054fac4 uassets: 0-unstable-2025-01-03 -> 0-unstable-2025-01-05 2025-01-05 20:45:39 +00:00
52bc98741c moby: re-enable some packages which do cross-compile 2025-01-05 11:43:13 +00:00
9b9a1ba22a cross: enable lua-language-server, via upstream nixpkgs PR 2025-01-05 10:54:20 +00:00
f22ffd1fda WIP: nixpkgs: 0-unstable-2025-01-03 -> 0-unstable-2025-01-05 2025-01-05 10:42:02 +00:00
6878d3f65b bunpen: dbus: disable proxy if it would disrupt the main dbus daemon 2025-01-05 08:12:59 +00:00
93934eb609 bunpen: make pasta logging more verbose 2025-01-05 07:52:19 +00:00
884b99048f bunpen: xdg-dbus-proxy: place in its own user namespace separate from the user program 2025-01-05 07:51:50 +00:00
b4ff9eb4ae bunpen: refactor: dbus: use path::abs in place of strings::hasprefix 2025-01-05 06:39:06 +00:00
2f717dc770 bunpen: wait for xdg-dbus-proxy to be ready before continuing execution 2025-01-05 06:33:55 +00:00
35f24282c7 bunpen: dbus proxy: no longer crashes, but xdg-dbus-proxy dies still
error is 'No socket path given'
2025-01-04 02:25:55 +00:00
b005897d84 bunpen: backfill some integration tests for dbus operation inside the sandbox
the proxy appears not to work (yet)
2025-01-03 22:59:56 +00:00
4260909d2d todo.md: new item for alacritty failing to cd 2025-01-03 22:21:51 +00:00
22f3a19165 bunpen: finish wiring the xdg-dbus-proxy instance
this isn't tested, except to see that it doesn't interfere with the *existing* bunpen use
2025-01-03 11:55:46 +00:00
66103854fa bunpen: if --bunpen-dbus-* is specified, then include DBUS_SESSION_BUS_ADDRESS in the parent sandbox
this is just setup for what the dbus proxy will require in the near future
2025-01-03 10:51:34 +00:00
93f140e0e4 sway: document why i run the nixpkgs-wayland (unstable) version 2025-01-03 09:54:10 +00:00
51e5f13c06 nixpkgs-bootstrap: 0-unstable-2025-01-02 -> 0-unstable-2025-01-03 2025-01-03 09:41:54 +00:00
fd58ec6e24 nixpkgs-wayland: 0-unstable-2024-12-22 -> 0-unstable-2025-01-03 2025-01-03 09:41:41 +00:00
5ae42ce797 lpac: 2.1.0 -> 2.2.0 2025-01-03 09:41:25 +00:00
3842c4204b uassets: 0-unstable-2025-01-02 -> 0-unstable-2025-01-03 2025-01-03 09:41:15 +00:00
2b9700d2a6 bunpen: parse dbus config options
these aren't actually *consumed* yet, though
2025-01-03 05:19:33 +00:00
4f4538c44d bunpen: refactor: lift dbus_resources out of restrict/dbus_proxy -> resources 2025-01-03 05:11:11 +00:00
27365ff602 bunpen: dbus_proxy: implement restrict_dbus, totally untested function to shell out to xdg-dbus-proxy 2025-01-03 03:41:03 +00:00
f25eba7f37 bunpen: dbus_proxy: rename get_dbus_socket() -> get_dbus_session_path() 2025-01-03 03:19:01 +00:00
7c857f39e6 bunpen: dbus_proxy: define a function to parse the DBUS_SESSION_BUS_ADDRESS 2025-01-03 03:01:06 +00:00
0b9b9a8271 bunpen: dbus-proxy: document the --own flag 2025-01-03 02:37:49 +00:00
e803a5959f opencellid: 0-unstable-2024-12-17 -> 0-unstable-2025-01-02 2025-01-03 02:37:49 +00:00
10429055f9 firefox-extensions.ublock: 1.61.3b11 -> 1.62.0 2025-01-03 02:37:49 +00:00
77dde6057c uassets: 0-unstable-2024-12-31 -> 0-unstable-2025-01-02 2025-01-03 02:19:38 +00:00
92584b351b nixpkgs: 2025-01-01 -> 2025-01-02 2025-01-03 02:19:19 +00:00
713e7247b3 bunpen: add prototype xdg-dbus-proxy to git 2025-01-02 14:05:23 +00:00
ee57b94658 bunpen: pasta: better isolate
it still runs in the same user namespace as the main sandboxer.

it's technically possible to also unshare the user ns, but would appear to require an additional process
2025-01-02 11:49:02 +00:00
3fc6571294 programs: don't persist mesaCacheDir by default
and explicitly add it to every program that uses mesa.

wow, that's a *lot*
2025-01-02 05:36:19 +00:00
863468e402 programs: remove old fontconfig persistence/references 2025-01-02 03:09:17 +00:00
1c87ef5625 feeds: fix rephonic link 2025-01-02 02:28:05 +00:00
cfc2a2fc80 feeds: podcasts: add name comments where previously missing 2025-01-02 02:16:02 +00:00
3a09943a19 feeds: unsubscribe from Last Week in AI: each individual ep is not nearly info-dense enough 2025-01-02 02:12:59 +00:00
4cf3889d7a feeds: unsubscribe from Atlast Obscura; low signal/noise 2025-01-02 02:11:52 +00:00
63cc309cfd feeds: podcasts: subscribe to This Wont Last 2025-01-02 02:07:48 +00:00
a02be29c02 feeds: podcasts: subscribe to History 102 2025-01-02 02:06:32 +00:00
332c2b3493 feeds: podcasts: subscribe to Econ 102 w/ Noah Smith 2025-01-02 02:05:12 +00:00
737ac7329b feeds: subscribe to ChinaTalk podcast 2025-01-02 01:58:17 +00:00
54e6b62778 feeds: unsubscribe from Sustain OSS 2025-01-02 01:58:16 +00:00
002286e1ea feeds: subscribe to Ben+Marc podcast 2025-01-02 01:58:16 +00:00
5a487c18db xdg-terminal-exec: add a TODO for removing an override 2025-01-02 00:14:52 +00:00
0de134e208 nixpkgs: 0-unstable-2024-12-30 -> 0-unstable-2025-01-01 2025-01-02 00:14:39 +00:00
05a7bad26c uassets: 2024-12-21 -> 2024-12-30 2025-01-01 22:19:34 +00:00
c47f4179a0 python3-repl: enable numpy/scipy 2025-01-01 00:55:17 +00:00
6b0a78bee0 pipewire: remove upstreamed libcamera patch 2024-12-31 07:32:31 +00:00
7093385f98 programs: integrate nvimpager into man to make text reflow correctly
also get marginally better syntax highlighting! the cursor movements are a little strange, but overall net improvement
2024-12-30 20:25:45 +00:00
fee5c7042b firefox: add aur search shortcut 2024-12-30 17:42:21 +00:00
4d54877776 sops-nix: assets-unstable-2024-12-18 -> assets-unstable-2024-12-29 2024-12-30 17:09:09 +00:00
fdf038bf90 uassets: 0-unstable-2024-12-24 -> 0-unstable-2024-12-30 2024-12-30 17:09:09 +00:00
3ed002ea88 programs: less: enable color highlighting 2024-12-30 17:09:09 +00:00
0a9e5b9f68 bunpen: pasta: share /proc/self/ns/net with pasta in a way that will be friendlier to sandboxing 2024-12-30 16:58:26 +00:00
2d989327f7 todo.md: sync 2024-12-30 16:40:33 +00:00
ce447cf674 gpodder-adaptive: 3.11.4+1 -> 3.11.5+1 2024-12-30 14:35:13 +00:00
2b1637652a megapixels-next: 2.0.0-alpha1-unstable-2024-12-24 -> 2.0.0-alpha1-unstable-2024-12-27 2024-12-30 14:35:13 +00:00
64b7a75664 rofi-snippets: remove dependency on non-wayland rofi 2024-12-30 14:35:13 +00:00
d18cd69536 nixpkgs-bootstrap: 0-unstable-2024-12-29 -> 0-unstable-2024-12-30 2024-12-30 14:35:13 +00:00
da27a0e857 bunpen: pasta: fix to send the full 4bytes of the netns fd across the pipe 2024-12-30 13:46:40 +00:00
93782cd71c bunpen: pasta: share the netns via fd instead of path
this *should* allow for operation even when the sandboxed program wants access to all of / and we therefore can't make files like /bunpen-private/netns

however it may complicate future sandboxing efforts, as it requiires the child to read fd's from the parent
2024-12-30 13:35:31 +00:00
42ac5353f1 bunpen: use /proc/self/fd in place of /dev/fd
/dev/fd just symlinks to /proc/self/fd, hence using /proc/self requires strictly fewer resources (e.g., it's safe to unmount /dev now)
2024-12-30 09:22:25 +00:00
5c0418ac6a sane-vpn: find vpn configs, even when running under sudo 2024-12-30 08:18:58 +00:00
fc8a6a2144 BIND: disable IPv6
this makes it work (more reliably, at least) inside sane-vpn
2024-12-30 08:17:07 +00:00
acd20e23d9 common: net: switch DNS resolver from unbound to BIND 2024-12-30 07:29:01 +00:00
424f61f782 WIP: enable BIND DNS recursive resolver 2024-12-30 03:15:42 +00:00
d2540f97ee matrix-synapse: fix build 2024-12-29 16:14:56 +00:00
d7be319067 coturn: fix build 2024-12-29 16:14:42 +00:00
43df4e1574 mesa cross fix: push patch upstream 2024-12-29 16:14:27 +00:00
2a6ed9adb9 nixpkgs-bootstrap: 0-unstable-2024-12-28 -> 0-unstable-2024-12-29 2024-12-29 16:14:09 +00:00
925d49efcc curlftpfs-sane: fix version 0 -> 0.9.2 2024-12-29 16:13:19 +00:00
3fe4831f89 common/quirks: remove dead UV_USE_IO_URING=0 libuv/neovim patch 2024-12-29 16:12:38 +00:00
38372c60a1 stepmania: replace with itgmania, since the former no longer builds 2024-12-29 15:25:07 +00:00
3815f069fa nixpkgs-bootstrap: patch to fix mesa cross compilation 2024-12-29 12:56:47 +00:00
bd647bd62b cross: disable hyprland-qtutils, to fix the system build 2024-12-29 12:56:21 +00:00
4606b00b73 nixpkgs-bootstrap: 0-unstable-2024-12-26 -> 0-unstable-2024-12-29 2024-12-29 10:30:33 +00:00
f7ee19042e nixpkgs-bootstrap.staging: fix hash 2024-12-28 23:56:08 +00:00
4ad470469f scripts/update: pass through nix flags like --show-trace 2024-12-28 14:13:48 +00:00
8585c7ce4b overlays/preferences: prefer binary electron (for element-desktop) over from-source electron 2024-12-27 10:17:05 +00:00
3e7a8e138f nixpkgs-bootstrap: fix numpy 2024-12-27 03:36:59 +00:00
e210f10379 nixpkgs-bootstrap: -> 2024-12-23 -> 2024-12-26 2024-12-27 00:45:43 +00:00
f1d901d1a5 curlftpfs-sane: patch for newer libfuse3 2024-12-27 00:45:43 +00:00
09d5fcc514 firefox-extensions.sponsorblock: 5.10.4 -> 5.10.5 2024-12-27 00:45:43 +00:00
65d6685161 bunpen: fix so that outer sandbox doesnt need to fork a new PID ns
it was failing because i was bind-mounting /proc, and then later /proc/self. solution was to just swap the order. RIP the last *3 days* of my life
2024-12-26 10:01:45 +00:00
100dd34509 bunpen: implement --bunpen-seal and show that nested sandboxing *does* work, currently 2024-12-26 09:39:12 +00:00
93e56a3757 bunpen: backfill a test for how /proc functions in the sandbox 2024-12-26 05:52:21 +00:00
949d7af62a bunpen: integration tests: fix naming/ordering of test_06* 2024-12-26 05:36:00 +00:00
2e139c56d5 bunpen: FIX /proc sandboxing (at a hefty cost)
this implementation requires an entire extra PID namespace at the top layer, and i should work to remove that

... but at least it _works_
2024-12-25 10:45:06 +00:00
19d939c811 bunpen: restrict_namespace: cleanup the --bunpen-try-keep-users impl 2024-12-25 10:45:06 +00:00
50f1a86f26 WIP: bunpen: refactor to facilitate future work of placing pasta and user program in mutually distinct PID namespaces
TODO: fix pasta, e.g.
> PATH=/nix/store/ylld0m96sqf497vs2g7ca8nw9x1q4ycm-bunpen-0.1.0/bin:$PATH gnome-calls --bunpen-drop-shell --bunpen-debug=3

for now the user program is in a sub-pidspace of pasta.
moving pasta to its own PID namespace is slightly more involved than
expected, because one can't (reliably) unshare PID NS more than once.
2024-12-25 10:45:06 +00:00
09fa4f336a todo.md: note that gnome-calls is totally broken, on at least lappy and moby 2024-12-25 10:44:55 +00:00
1936e2cd45 todo.md: note that dissent has a memory leak 2024-12-25 10:40:28 +00:00
6810885945 nixpkgs-wayland: 0-unstable-2024-12-18 -> 0-unstable-2024-12-22 2024-12-24 21:36:26 +00:00
f1cbc0d89b megapixels-next: 1.6.1-unstable-2024-11-30 -> 2.0.0-alpha1-unstable-2024-12-24 2024-12-24 21:35:54 +00:00
f3a589a511 firefox-extensions: -> latest 2024-12-24 21:35:18 +00:00
8c030f836c uassets: 0-unstable-2024-12-20 -> 0-unstable-2024-12-24 2024-12-24 21:34:46 +00:00
3499869225 feeds: subscribe to Justin Robert Young's PX3 2024-12-24 03:20:51 +00:00
d64f273ead bunpen: implement (but disable) setns and pidfd_open syscalls
i thought i could use this to drop into a new PID NS, and then return back, but it is not so simple; i think one cannot setns into a PID NS unless you're owner of that namespace (i.e. CAP_SYS_ADMIN for the user ns which created that pid ns ...?

so it works *sometimes*, but not in the times where i'd actually want it
2024-12-23 06:05:45 +00:00
73b31cb085 bunpen: pasta: invert so that pasta is a child of the primary bunpen process, instead of vice-versa 2024-12-23 03:37:53 +00:00
3774e61ec7 bunpen: exec: log more verbosely 2024-12-23 03:16:09 +00:00
c12a6ae57e bunpen: logging: annotate log statements with the PID issuing the log 2024-12-23 02:54:43 +00:00
272ad49265 re-silence the "multiple password options" warning
its format changed a while ago
2024-12-23 01:19:35 +00:00
9bcbeb458a nixpkgs-bootstrap.master: 0-unstable-2024-12-22 -> 0-unstable-2024-12-23
this fixes neovim compilation, broken by the previous nixpkgs update
2024-12-23 01:08:37 +00:00
6f615d916f nixpkgs-bootstrap: 0-unstable-2024-12-21 -> 0-unstable-2024-12-22 2024-12-22 19:42:57 +00:00
5956e121d8 bunpen: isolate pasta into its own PID namespace
this can and will be improved: i'm just proving the approach
2024-12-22 06:39:44 +00:00
eacf23da47 bunpen: log *which* PID exits when a child exits 2024-12-22 06:15:00 +00:00
fd97b6fea9 servo: gitea: cleanup the database config 2024-12-22 02:29:18 +00:00
641d553675 nixpkgs-bootstrap.master: 0-unstable-2024-12-20 -> 0-unstable-2024-12-21 2024-12-21 23:30:29 +00:00
0397eacaca feeds: subscribe to Dwarkesh Patel podcast (speculatively) 2024-12-20 20:42:47 +00:00
56515e622f mpv-image-viewer: remove (upstreamed) 2024-12-20 11:16:43 +00:00
ffa52bea83 remove directoryListingUpdater2 (upstreamed) 2024-12-20 11:15:51 +00:00
640ff7452c sops-nix: assets-unstable-2024-12-12 -> assets-unstable-2024-12-18 2024-12-20 11:14:13 +00:00
09b403bf63 sops-nix: 0-unstable-2024-12-17 -> 0-unstable-2024-12-20 2024-12-20 11:14:04 +00:00
57e6f3b768 nixpkgs-bootstrap: update (2024-12-20 -> 2024-12-20) 2024-12-20 11:13:50 +00:00
9e17836663 nixpkgs-bootstrap: 0-unstable-2024-12-19 -> 0-unstable-2024-12-20 2024-12-20 10:09:17 +00:00
c63d8001bc bunpen: pasta: wait for pasta to be ready before executing the user program 2024-12-20 09:49:23 +00:00
fad36e97a1 bunpen: restrict/pasta: better comments 2024-12-20 06:52:20 +00:00
14f6087143 firefox-xdg-open: dont duplicate the menu entries 2024-12-20 01:18:58 +00:00
6922387088 programs: firefox: drop librewolf-specific bits from config
arkenfox is great; dont expect to switch back to librewolf
2024-12-20 00:56:18 +00:00
bd54291925 networkmanager patch: update the GH patch 2024-12-19 22:57:08 +00:00
f0f908c3b1 bonsaid: update nixpkgs PR 2024-12-19 22:28:09 +00:00
70734e154b overlays/cross: push calls,geary patches upstream 2024-12-19 22:28:09 +00:00
9047d72fe7 overlays/cross: remove the unused iotas patch (which probably doesnt work anyway) 2024-12-19 22:28:09 +00:00
1c25deabbb cross: hyprland: remove patches
hyprland cross-compiles on nixpkgs master ... for now
2024-12-19 22:28:09 +00:00
ca85054498 nixpkgs-wayland: 0-unstable-2024-12-17 -> 0-unstable-2024-12-18 2024-12-19 22:28:09 +00:00
d14d225800 nixpkgs-bootstrap: -> latest 2024-12-19 22:28:09 +00:00
8158045205 overlays/cross: remove more commented-out bits which have been upstreamed 2024-12-19 22:28:09 +00:00
49727b9453 overlays/cross: update upstreaming status 2024-12-19 22:28:09 +00:00
18903a68bb cross: evolution-data-server: ship the compile fix partially upstream 2024-12-19 22:28:09 +00:00
6a60077e44 overlays/cross: update upstreaming status; remove patches for packages which are no longer supported in upstream nixpkgs 2024-12-19 22:28:09 +00:00
0fd00938aa overlays/cross: refactor: split the gnome scope 2024-12-19 22:28:09 +00:00
c09045c87e overlays/cross: remove dead networkmanager-{iodine,fortisslvpn} patches (misuzu upstreamed them, yay) 2024-12-19 22:28:09 +00:00
3598ca7657 overlays/cross: remove dead code which has been successfully upstreamed 2024-12-19 22:28:09 +00:00
39eb2cf08b services: remove buffyboard (upstreamed into nixpkgs, yay) 2024-12-19 22:28:09 +00:00
87b5bb4296 bonsaid: update nixpkgs PR 2024-12-19 22:28:09 +00:00
5f0308125d nixpkgs-bootstrap: 0-unstable-2024-12-17 -> 0-unstable-2024-12-19 2024-12-19 22:28:09 +00:00
930f4da164 htop: fix systemd sandboxing 2024-12-19 22:26:33 +00:00
01c7bae542 bunpen: pasta setup (ip ...): never outlive parent bunpen instance 2024-12-19 08:06:11 +00:00
27e67748d4 bunpen: pasta: never outlive the parent bunpen lifetime 2024-12-19 07:53:33 +00:00
066bf3c3d4 bunpen: refactor: split fork_and_die_with_parent out as a standalone helper 2024-12-19 07:48:31 +00:00
8a8bb0f0bd bunpen: refactor: split fork/exec helpers out of namespace.ha 2024-12-19 07:37:19 +00:00
33ce256f14 bunpen: fork_and_propagate: forward SIGKILL as SIGKILL, not SIGTERM 2024-12-19 07:30:18 +00:00
d493e4885e bunpen: ensure child processes never outlive the parent
surprised this wasn't causing notable problems; i guess most programs are just well behaved and/or i wasnt using kill -9 much
2024-12-19 07:14:30 +00:00
b3acc27265 phog: 0.1.6 -> 0.1.7 (untested. i dont use this package; it was an automated update) 2024-12-19 03:13:55 +00:00
8c5d10fb39 nixpkgs-bootstrap: 0-unstable-2024-12-16 -> 0-unstable-2024-12-17 2024-12-19 03:09:29 +00:00
ee257bb78d megapixels-next: 1.6.1-unstable-2024-11-04 -> 1.6.1-unstable-2024-11-30 2024-12-19 03:09:01 +00:00
331842020e nixpkgs-wayland: 0-unstable-2024-12-15 -> 0-unstable-2024-12-17 2024-12-19 03:08:31 +00:00
51eecca60f opencellid: 0-unstable-2024-11-29 -> 0-unstable-2024-12-17 2024-12-19 03:08:01 +00:00
1408a69811 uassets: 0-unstable-2024-12-16 -> 0-unstable-2024-12-17 2024-12-19 03:07:43 +00:00
b6796d05d4 fontconfig: disable user-dir fc cache 2024-12-19 03:07:24 +00:00
dae1c4b50e cross: send gnome-user-share, gnome-online-accounts patches upstream 2024-12-17 16:17:58 +00:00
e6759ac34e overlays/cross: update upstreaming status 2024-12-17 16:17:58 +00:00
159f8ccf98 bunpen: dont make /tmp a new tmpfs in the sandboxed environment
this makes fs use more visible, e.g. Signal is storing 60+MB in /tmp
2024-12-17 16:17:58 +00:00
a29995762a firefox: define tmpdir 2024-12-17 10:58:25 +00:00
bc15a876ff programs: place TMPDIR on ephemeral storage for select programs which demand a lot of it 2024-12-17 10:26:34 +00:00
ebd55cdf3b nixpkgs-bootstrap: 0-unstable-2024-12-15 -> 0-unstable-2024-12-16 2024-12-16 21:13:20 +00:00
66bf274866 signal-desktop-from-src: 7.35.0 -> 7.37.0
i did not verify that the blobs are up-to-date, but the package builds fine
2024-12-16 21:12:33 +00:00
ab6f0e74bb nixpkgs-wayland: 0-unstable-2024-12-10 -> 0-unstable-2024-12-15 2024-12-16 21:11:23 +00:00
4123ad3413 sops-nix: assets-unstable-2024-12-09 -> assets-unstable-2024-12-12 2024-12-16 21:11:01 +00:00
5aa792e339 uassets: 0-unstable-2024-12-10 -> 0-unstable-2024-12-16 2024-12-16 21:10:28 +00:00
7fde4cc251 firefox-extensions -> latest 2024-12-16 21:10:05 +00:00
7bfb913425 assorted: persist some more caches to ephemeral storage 2024-12-16 07:10:03 +00:00
42a80fcfe4 bunpen: expose the bare / tmpfs at /unbacked, to allow for debugging ramdisk usage 2024-12-16 06:57:17 +00:00
ad319417b5 bunpen: docs: elaborate why i remount MS_SLAVE 2024-12-16 04:04:52 +00:00
3cd5a1b598 bunpen: refactor: backfill tests for --bunpen-path option 2024-12-16 02:49:30 +00:00
3b0f97a795 sane-input-handler: EXPERIMENTAL: power-tap-hold to restart bonsaid when screen is off
it may be i need power_pressed.power_pressed (w/ no power_released in between) for this to work
2024-12-16 01:31:48 +00:00
e145a8f003 assorted: remove the mesa cache for apps which aren't using it 2024-12-16 01:30:32 +00:00
cec413720e programs: change the default mesa persistence directory 2024-12-16 00:08:27 +00:00
08ca65c2a4 programs: persist mesa dirs for every wayland application
this is certainly *not* perfect (it incorrectly persists some wayland utils like wtype; it has the wrong name for e.g. grimshot), but it's a good start
2024-12-16 00:06:31 +00:00
2e7a9c777c programs: port mesa_shader_cache persistors over to sandbox.mesaCacheDir 2024-12-15 23:39:17 +00:00
a0ade73638 modules/programs: allow using custom mesa cache dirs, when sandboxed 2024-12-15 23:31:50 +00:00
2130e517fc bunpen: tests: refactor 2024-12-15 23:04:00 +00:00
3da9874176 bunpen: kill --bunpen-{home,run}-path in favor of shell-style expansion/parameterization 2024-12-15 23:03:52 +00:00
843fdb0dfe bunpen: refactor: split out an abstraction that will allow substituting of env vars for whitelisted paths
as with --bunpen-env. i can use this to consolidate the variants of --bunpen-path
2024-12-15 22:20:18 +00:00
60575640fd bunpen: support --bunpen-env KEY=VALUE flag
this performs some variable expansion, and will be useful for e.g. `--bunpen-env 'MESA_SHADER_CACHE_DIR=$HOME/.cache/my-app/mesa_shader_cache_db'`
2024-12-15 11:04:17 +00:00
8141c94948 scripts/sync: refactor and also sync ~/knowledge 2024-12-15 01:59:14 +00:00
4d3caba74e todo.md: task to make bunpen apps more introspectable 2024-12-14 22:10:41 +00:00
c5a2b63162 nixpkgs-bootstrap.master: 0-unstable-2024-12-14 -> 0-unstable-2024-12-15 2024-12-14 22:01:21 +00:00
e6090045ac feeds: unsubscribe from mintcast
it's a very different kind of linux user than me: good that those exist, but i'm more interested in the dev side and deeper tech dives
2024-12-14 21:56:44 +00:00
d4621abbdd radicale: fix optionals -> optionalAttrs typo 2024-12-14 21:39:44 +00:00
e9fd7328cf nixpkgs-bootstrap.master: 0-unstable-2024-12-10 -> 0-unstable-2024-12-14 2024-12-14 21:29:36 +00:00
db4e79fde8 modules/persist: support nested persistence
especially, support persisting 'parent' and 'parent/child' to the same backing store

this is mechanically the same as persisting parent, and ensuring parent/child gets created, but explicit support will allow for automating the persistence of more things which *might* be subdirs of other persisted items (e.g. ~/.cache/my-program/mesa_shader_db)
2024-12-14 12:08:40 +00:00
c00ebddb85 sane-open: change title of the Open Clipboard action to be more searchable 2024-12-14 11:01:02 +00:00
d1f5ac6cc1 sane-screenshot: fix that it couldnt save screenshots on moby, by bypassing grimshot 2024-12-14 10:59:18 +00:00
9a3cb6711a gnome-contacts: fix to allow opening the Maps app for a contacts location 2024-12-14 09:48:41 +00:00
a105a1f028 doc: more info about how to (maybe, someday) precompile mesa shader caches 2024-12-14 07:53:11 +00:00
36281a94a2 gnome-contacts: enable mesa shader cache so moby doesnt complain about not being able to find primary contacts (misleading!) 2024-12-14 07:09:46 +00:00
b5d7f3d861 evolution: integrate with Radicale for vcard contacts storage 2024-12-14 04:27:55 +00:00
4788170e8a programs: ensure gnome-keyring is started before the things which need it
notably, this seems to ensure dissent reliably logs on at start
2024-12-14 02:06:14 +00:00
87f0ac232f evolution-data-server: more docs 2024-12-13 01:52:43 +00:00
c403a3cc6e evolution-data-server: disable webkitgtk features 2024-12-12 21:21:05 +00:00
eab6cf88dd evolution-data-server: init, using local address book and calendar 2024-12-12 21:08:30 +00:00
a7ba40cace sway: fix idle inhibition, especially for gnome-maps 2024-12-12 02:30:54 +00:00
d3a7586803 xdg-desktop-portal-nautilus: investigate org.gnome.NautilusPreviewer (but choose to not integrate it) 2024-12-12 02:15:23 +00:00
296ca4f0fa xdg-desktop-portal: try, but decide against, integration the Documents portal 2024-12-12 01:56:12 +00:00
1d4b7777c3 nixpkgs-bootstrap: 0-unstable-2024-12-09 -> 0-unstable-2024-12-10 2024-12-11 00:41:58 +00:00
76e06be424 nixpkgs-wayland: 0-unstable-2024-12-09 -> 0-unstable-2024-12-10 2024-12-11 00:41:44 +00:00
87d906b0e9 sops-nix: assets-unstable-2024-12-02 -> assets-unstable-2024-12-09 2024-12-11 00:41:29 +00:00
9c209fb5a0 uassets: 0-unstable-2024-12-09 -> 0-unstable-2024-12-10 2024-12-11 00:36:32 +00:00
9c7c628491 firefox-extensions.sponsorblock: 5.10.1 -> 5.10.2 2024-12-11 00:36:19 +00:00
cca4f07501 euicc-manual: 0-unstable-2024-12-09 -> 0-unstable-2024-12-10 2024-12-11 00:36:05 +00:00
79ab098558 buffybox: 3.2.0-unstable-2024-11-10 -> 3.2.0-unstable-2024-12-09 2024-12-11 00:34:04 +00:00
c80694f865 calls: document what lives in folks 2024-12-10 08:47:41 +00:00
d64b28a3b2 gnome-maps: associate with maps: scheme handler 2024-12-10 02:38:34 +00:00
caf25fde69 nixpkgs-bootstrap: 0-unstable-2024-12-08 -> 0-unstable-2024-12-09 2024-12-09 23:13:34 +00:00
13bc81fb6a programs: patch udev rules more effectively 2024-12-09 23:13:22 +00:00
9d20f55815 nixpkgs-wayland: 0-unstable-2024-12-08 -> 0-unstable-2024-12-09 2024-12-09 23:12:47 +00:00
30154033ec euicc-manual: 0-unstable-2024-11-25 -> 0-unstable-2024-12-09 2024-12-09 23:12:30 +00:00
c551d9dac3 firefox-extensions.ublock: 1.61.3b5 -> 1.61.3b6 2024-12-09 23:12:16 +00:00
10878dad5a uassets: 0-unstable-2024-12-08 -> 0-unstable-2024-12-09 2024-12-09 23:11:57 +00:00
cae7f5cdf9 Revert "opencellid: fix hash"
This reverts commit 86a03e7e1d.

Rate limiting means i can't actually update this package right now...
2024-12-09 10:44:29 +00:00
dbea2c1606 trivial-builders: format 2024-12-09 10:38:22 +00:00
9efb42e186 rofi: fix mismatched close/cancel action 2024-12-09 10:35:40 +00:00
327d1b7dae dbus-user: disable dbus activation more broadly 2024-12-09 10:35:40 +00:00
ebb7d0b4e1 treewide: replace runCommandLocal with runCommand + preferLocalBuild
the former prevents all substitution; the latter is just a hint to Nix on how to prioritize available builders
2024-12-09 10:35:24 +00:00
86a03e7e1d opencellid: fix hash 2024-12-09 10:34:31 +00:00
d44bddf696 ripgrep: fix .ignore po/ logic 2024-12-09 08:52:26 +00:00
e84af727ee nixpkgs-bootstrap: update hickory-dns patch hash 2024-12-09 08:52:04 +00:00
0a0abe55bc calls: update patch; *actually* remove dep on webkitgtk 2024-12-08 23:48:56 +00:00
5cd292bdc8 nixpkgs: 0-unstable-2024-12-05 -> 0-unstable-2024-12-08 2024-12-08 23:22:13 +00:00
86b9419cc2 servo: autologin as root 2024-12-08 23:13:07 +00:00
9d32e199ea vpn: formatting fixes 2024-12-08 23:12:50 +00:00
04283627c0 wg-home: port to systemd.networks 2024-12-08 23:12:28 +00:00
8ab1e1ed5f nixpkgs-wayland: 0-unstable-2024-12-05 -> 0-unstable-2024-12-08 2024-12-08 20:07:34 +00:00
8fada3bb4a uassets: 0-unstable-2024-12-05 -> 0-unstable-2024-12-08 2024-12-08 20:07:16 +00:00
4c952109e9 firefox-extensions.ublock: 1.61.3b3 -> 1.61.3b5 2024-12-08 20:07:01 +00:00
af1dc32eb9 gnome-calls: push update patch upstream 2024-12-08 10:54:40 +00:00
65a1caf206 gnome-calls: 47.beta -> 47.0 2024-12-08 05:19:58 +00:00
f672823214 hickory-dns: push patches to upstream nixpkgs 2024-12-08 02:09:02 +00:00
6af75f470c hickory-dns: simplify further by exposing configFile in nixpkgs 2024-12-08 00:54:21 +00:00
5362fc9276 hickory-dns: simplify config, push the zonedir into nixpkgs upstream attrs 2024-12-08 00:34:42 +00:00
19078d3da1 yt-dlp: configure for better file naming 2024-12-07 23:24:05 +00:00
106a4fd67c sane-open-clipboard: init; integrate with sway 2024-12-07 23:23:42 +00:00
7ef6916b04 sane-open: format with nixfmt 2024-12-07 21:06:19 +00:00
338559296c sane-open: refactor 2024-12-07 21:02:51 +00:00
ac82d8f72a sane-cast: fix typo 2024-12-07 20:05:38 +00:00
2ceda7d298 sane-wipe: add rofi subcommand 2024-12-06 01:36:03 +00:00
eab5cd57d5 sane-color-picker: fix sandboxing 2024-12-06 01:27:01 +00:00
cc6be7a407 assorted: use Title Casing for .desktop desktopName entries 2024-12-06 01:24:42 +00:00
85675465f4 sane-screenshot: fix desktopName for better casing 2024-12-06 01:21:02 +00:00
c3f2bf537f sane-color-picker: init 2024-12-06 01:20:52 +00:00
ca513aeb0e nixpkgs-bootstrap: update sblast patch hash 2024-12-06 00:34:16 +00:00
fd5d6cd23d firefox: customize the reader mode 2024-12-06 00:16:40 +00:00
c3c212b6dd ollamaPackages.mkOllamaModel: sanity checks during development that you actually specify all the needed blobs 2024-12-05 22:11:33 +00:00
ec1d573ddb ollamaPackages.athene-v2-72b-q2_K: init
this is a tuned version of qwen
2024-12-05 22:11:08 +00:00
94e44951f8 mkOllamaModel: add diagnostics to help in packaging new models 2024-12-05 21:46:17 +00:00
b0059e74dc ollama: add new models: qwq-32b (from the qwen team), marco-o1 (also from Alibaba) 2024-12-05 21:46:04 +00:00
410d63f08e nixpkgs-bootstrap: 0-unstable-2024-12-04 -> 0-unstable-2024-12-05 2024-12-05 19:28:39 +00:00
163ac472a1 nixpkgs-wayland: 0-unstable-2024-12-03 -> 0-unstable-2024-12-05 2024-12-05 19:28:28 +00:00
263b66aa68 firefox-extensions.ublock: 1.61.3b2 -> 1.61.3b3 2024-12-05 19:28:16 +00:00
5135adb673 uassets: 0-unstable-2024-12-04 -> 0-unstable-2024-12-05 2024-12-05 19:27:57 +00:00
85fae592f6 push apache cross fixes upstream 2024-12-05 12:53:06 +00:00
fb21826666 enable /dev/dri access for some programs which can hopefully make use of that for better perf 2024-12-05 11:32:58 +00:00
d9c6476afa nautilus: fix cross compilation 2024-12-05 10:28:57 +00:00
48ff85492d xdg-desktop-portal: ship Nautilus instead of gnome 2024-12-05 08:23:18 +00:00
2d40717d04 xdg-desktop-portal: simplify the plumbing of .portal files; no more ~/.config/xdg-desktop-portal/portals 2024-12-05 08:21:24 +00:00
f46b0ec73e common/net: unbound: configure to serve expired records
anecdotally, this seems to aid with the networking blips i see, where hosts are marked down in the infra-cache?
2024-12-05 06:32:21 +00:00
d8b16bacf3 firefox: user.js: enable the downloads button in UI 2024-12-05 04:49:59 +00:00
2afc99bd00 xdg-desktop-portal: allow spawned processes to survive service restarts 2024-12-05 03:36:58 +00:00
78ec98301e sway/xdg-desktop-portals: fix moby so app chooser is provided by gnome portal, even as the requirements for camera access are provided by gtk 2024-12-05 00:52:58 +00:00
a8810d336c sysctl: ship it 2024-12-05 00:06:43 +00:00
e1c8d0d610 man: sandbox; and fix the cache for e.g. man-db 2024-12-04 23:54:54 +00:00
7de16fa95b refactor: replace ps with unixtools.ps, which is just nixpkgs upstream logic that does exactly what i was doing to extract it from procps 2024-12-04 22:47:49 +00:00
aa82d50879 feeds: unsubscribe from The Intercept
idk man, report on events, provide your narrative of the truth, but dont water down newsworthy reports with 10-minute-long moral sermons or unchallenged monologues from iffy sources
2024-12-04 21:39:00 +00:00
bafc1cd85f nixpkgs-bootstrap: 0-unstable-2024-12-03 -> 0-unstable-2024-12-04 2024-12-04 21:15:53 +00:00
fe63675093 nixpkgs-wayland: 0-unstable-2024-12-02 -> 0-unstable-2024-12-03 2024-12-04 21:15:42 +00:00
875e788b87 signal-desktop-from-src: fix hash (?) 2024-12-04 21:15:29 +00:00
154b84809e sops-nix: assets-unstable-2024-11-25 -> assets-unstable-2024-12-02 2024-12-04 21:15:09 +00:00
29b8831064 uassets: 2024-12-02 -> 2024-12-03 2024-12-04 21:14:56 +00:00
1619321aac desko: make it possible to build nixosTests 2024-12-04 21:14:34 +00:00
bc56ecf199 firefox: add reload button back to the UI 2024-12-04 19:02:43 +00:00
894b149dd5 scripts/deploy: add a timeout to the nix copy step 2024-12-04 18:19:32 +00:00
253a9ecc7e common/net/dns/unbound: enable DNS prefetch 2024-12-04 09:24:25 +00:00
716aa4be33 doc: common/net/dns/unbound: cleanup the explanations for why i set what i do 2024-12-04 09:24:07 +00:00
3fcf3bca8a unbound: fix up to better handle network blips
the notes here are not all up-to-date. but the new config is better than the old, which could have failed DNS for 900s post-boot
2024-12-04 04:32:26 +00:00
192771c99f hosts/common: dns: cleanup hickory-dns file 2024-12-03 23:28:47 +00:00
6af6768160 unbound: fix NTP/DNS circular dependency by disabling DNSSEC for pool.ntp.org. 2024-12-03 23:28:16 +00:00
4de9fcc09a refactor: hosts/common/dns: split into separate files 2024-12-03 21:13:50 +00:00
5c69765759 unbound-dns: tweak options to avoid connectivity issues
seems lots of unbound config options combine to create bad effects: best to leave as much as possible defaulted
2024-12-03 21:07:41 +00:00
c950d286d4 net: unbound: remove negative caching for better stability
else sometimes addresses are unresolvable at early boot, and never become reachable again
2024-12-03 17:42:48 +00:00
a72bc90e90 nixpkgs-bootstrap: 0-unstable-2024-12-01 -> 0-unstable-2024-12-03 2024-12-03 17:12:31 +00:00
6f84e33d80 nixpkgs-wayland: 0-unstable-2024-11-29 -> 0-unstable-2024-12-02 2024-12-03 17:12:19 +00:00
b69a0da7f7 uassets: 0-unstable-2024-12-01 -> 0-unstable-2024-12-03 2024-12-03 17:12:03 +00:00
532194b862 servo: speculative wg tunnel fix 2024-12-03 04:49:24 +00:00
535268d6a8 servo: switch back to random wireguard ports 2024-12-03 04:38:16 +00:00
08c5f5661f modules/netns: make the wg port optional 2024-12-03 04:23:53 +00:00
770928357e todo.md: remove outdated moby wlan action 2024-12-03 04:19:19 +00:00
ccb15b2c82 todo.md: remove PPP camera work 2024-12-03 03:52:55 +00:00
cb9aba095d exiftool: fix sandboxing
and with that, also fixes Megapixels open-image button :)
2024-12-03 03:52:29 +00:00
6340a35fb9 hal: pinephone-pro: remove CMA 2024-12-03 03:33:45 +00:00
559ce84e47 megapixels-next: fix so it can save images as .jpg instead of just .dnf 2024-12-03 02:58:30 +00:00
e6bf0e76dc todo.md: update 2024-12-03 02:19:03 +00:00
fc239cfa34 modules/programs: support mime.priority when handling duplicated env keys 2024-12-03 02:18:48 +00:00
38fc2ffb82 megapixels-next: patch to save photos in the right directory (i hope) 2024-12-03 02:02:18 +00:00
2ac3a755e0 blast: port from my own blast-ugjka to the out-for-PR sblast 2024-12-02 23:12:04 +00:00
7affd0f343 firefox: configure laptop zoom to 1.20, keep desktop at 1.70 2024-12-02 22:35:49 +00:00
633e9c64ab firefox: fix uBlock managed-storage
i can finally browse stackoverflow again w/o cookie banners????? IT'S LIKE 2010 AGAIN I LOVE YOU
2024-12-02 21:42:21 +00:00
c5b014c001 firefox-extensions.default-zoom: remove unneeded data 2024-12-02 21:41:38 +00:00
491b489997 programs: firefox: add a few more user.js settings, likely redundant thanks to arkenfox 2024-12-02 21:35:49 +00:00
5521c6c5b6 firefox-extensions.default-zoom: load the zoom from managed storage
this allows it to be configurable per device

this changeset probably does *too* much -- a lot can likely be dropped
2024-12-02 21:35:20 +00:00
8f757d906e feeds: subscribe to https://substack.com/@chlamchowder 2024-12-02 20:37:15 +00:00
84aa332cdb hal: aarch64: disable firefox/browserpass-extension 2024-12-02 19:29:00 +00:00
82f6d630d7 moby: disable unused eg25-manager 2024-12-02 19:28:45 +00:00
b4823f0c41 programs: firefox: tune user.js settings 2024-12-02 18:45:09 +00:00
bdfd0a8901 programs: firefox: un-block about:debugging 2024-12-02 18:44:46 +00:00
a45193f592 programs: firefox: use arkenfox prefs instead of librewolf prefs 2024-12-02 17:52:21 +00:00
16adf6f983 programs/firefox: switch from librewolf back to firefox
done such that (1) i can still load unsigned browser extensions and (2) i get all the privacy preferences of LW.

at this point staying closer to mainline Firefox means easier debugging, and without much lost
2024-12-02 06:19:31 +00:00
6f04f3d558 firefox: allow either librewolf OR firefox to load unsigned addons 2024-12-02 03:01:41 +00:00
b5581b57f3 firefox-extensions.default-zoom: tune defaultZoom, 1.8 -> 1.7 2024-12-01 23:34:19 +00:00
285ebf915f firefox-extensions.default-zoom: note about lappy comfort levels 2024-12-01 22:55:54 +00:00
8720a3ca39 firefox-extensions.default-zoom: tune defaultZoom, 1.7 -> 1.8 2024-12-01 22:37:46 +00:00
e2f3491131 firefox-extensions.default-zoom: tune defaultZoom, 2.0 -> 1.7 2024-12-01 22:35:28 +00:00
2b7d457e2a firefox-extensions.firefox-xdg-open: simplify by removing background.html 2024-12-01 22:31:50 +00:00
ec29c399f7 firefox-extensions: add default-zoom so that new tabs are readable by default 2024-12-01 22:27:23 +00:00
8a5629ec13 firefox: update prefs, especially sidebar/vertical tabs 2024-12-01 21:40:47 +00:00
047dc0bd21 firefox: port to native vertical tabs
it's not perfect; i can hopefully tweak this more

but committing this now because firefox is insanely fragile about these preferences and i don't know that i could recreate these withoput another hour of testing
2024-12-01 20:51:45 +00:00
f1242d28d4 nixpkgs-bootstrap: 0-unstable-2024-11-26 -> 0-unstable-2024-12-01 2024-12-01 18:31:54 +00:00
17654b4716 nixpkgs-wayland: 0-unstable-2024-11-26 -> 0-unstable-2024-11-29 2024-12-01 18:31:41 +00:00
96de70fcc2 signal-desktop-from-src: fix hash? 2024-12-01 18:31:27 +00:00
35d3bc40d5 firefox-extensions -> latest 2024-12-01 18:31:14 +00:00
fe62a75416 opencellid: 0-unstable-2024-11-19 -> 0-unstable-2024-11-29 2024-12-01 18:31:02 +00:00
8e6517f909 uassets: 0-unstable-2024-11-26 -> 0-unstable-2024-12-01 2024-12-01 18:30:38 +00:00
56b58d3506 moby: switch back to mainline rt5640 driver
camera and audio still work
2024-12-01 06:53:11 +00:00
ce7f2ee2d6 nixpkgs-bootstrap: link to libcamera patch, merged into staging-next 2024-12-01 06:05:18 +00:00
983e2043bc hal: pinephone-pro-camera: cleanup
this doesn't change any functionality; just shuffling things around and better documenting the bits
2024-11-29 18:41:37 +00:00
de182e117d modules/programs: enable even more /dev/video devices inside the relevant sandboxes 2024-11-29 18:33:35 +00:00
02286a24ba modules/programs: add more /dev/video devices required by pinephone-pro rear camera 2024-11-29 18:29:35 +00:00
dfe06af8d3 pipewire,wireplumber: fix sandboxing to allow portal-based camera apps (i.e. snapshot) 2024-11-29 18:28:22 +00:00
947660ec8f sway: fix portal ordering so that snapshot camera app can request camera perms 2024-11-29 18:27:10 +00:00
09df3f69f6 millipixels: drop; it doesnt support any of my devices 2024-11-29 18:25:29 +00:00
2225ae8cf7 gnome-calendar: mark as buildCost = 2 because of its dep on webkitgtk 2024-11-29 18:24:56 +00:00
9153841159 envelope: mark as buildCost = 2 2024-11-29 18:24:19 +00:00
360167fbb7 gnome calls: drop dependency on webkitgtk_6_0, for faster rebuilds 2024-11-29 18:24:05 +00:00
95fd526100 megapixels-next: unstable-2024-09-03 -> 1.6.1-unstable-2024-11-04 2024-11-29 18:23:23 +00:00
86dec329f1 moby: ship megis rt5640 sound driver (experimental. it still boots, but pipewire/wireplumber still crash-loops) 2024-11-29 05:19:12 +00:00
045acca8e2 programs: sqlite: un-sandbox
the sandbox had to have been broken: it would have never allowed the db into the sandbox
2024-11-29 03:40:26 +00:00
58894a7f9b moby: enable rear camera
this works with megapixels-next (at least, with sandboxing disabled). however it breaks pipewire: will investigate
2024-11-29 03:40:26 +00:00
4c6712d6a4 linux-megous: link to where the libcamera patches come from 2024-11-29 03:16:19 +00:00
593f70488d systemd: configure coredumpctl to be less of a drag on the system 2024-11-29 03:16:03 +00:00
5e7476a47c cross: import patches to allow xdg-desktop-portal-gtk to build 2024-11-29 03:15:33 +00:00
65243100f2 moby: speculatively increase the CMA pool size 2024-11-27 20:53:40 +00:00
4aa9877861 nixpkgs-bootstrap: 0-unstable-2024-11-25 -> 0-unstable-2024-11-26 2024-11-27 20:52:13 +00:00
d0f5a51fce nixpkgs-wayland: 0-unstable-2024-11-25 -> 0-unstable-2024-11-26 2024-11-27 20:51:47 +00:00
6d2a7eecd9 sops-nix: assets-unstable-2024-11-21 -> assets-unstable-2024-11-25 2024-11-27 20:51:29 +00:00
7253533cb3 uassets: 0-unstable-2024-11-25 -> 0-unstable-2024-11-26 2024-11-27 20:50:45 +00:00
e3b6482997 zeal-lynx-cli: init
it's hard to tell if it's all working

i think the 'list all functions for language FOO' function is working, but the 'dump docs for item BAR' isnt
2024-11-26 22:49:04 +00:00
96ca0b5e7f docsets.lua-std: properly distinguish between methods/functions/variables 2024-11-26 20:04:14 +00:00
b5b15dc074 docsets.lua-std: simplify the module matching logic 2024-11-26 19:51:39 +00:00
45ce9d2e66 docsets: ship Lua stdlib 2024-11-26 19:36:20 +00:00
0519cafbec signal-desktop-from-src: enable updateScript and update 7.34.0 -> 7.35.0 2024-11-26 13:03:01 +00:00
874fece378 signal-desktop-from-src: format 2024-11-26 12:43:09 +00:00
9870ef77f1 signal-desktop-from-src: simplify the build by borrowing from nixpkgs' signal-desktop package
motivation is that i can *nearly* automate the updates now
2024-11-26 12:42:16 +00:00
29cb38f300 signal-desktop: docs: show how to (optionally) use the binary signal-desktop package 2024-11-26 12:01:46 +00:00
45ad799ebb signal-desktop-from-src: 7.26.0 -> 7.34.0 2024-11-26 10:28:52 +00:00
2939e9a278 nixpkgs-bootstrap: update buffyboard patch 2024-11-26 09:32:31 +00:00
f653906c37 nixpkgs-bootstrap: 0-unstable-2024-11-23 -> 0-unstable-2024-11-25 2024-11-26 07:03:58 +00:00
ff97457545 nixpkgs-wayland: 0-unstable-2024-11-23 -> 0-unstable-2024-11-25 2024-11-26 07:03:44 +00:00
21ae1b20f1 euicc-manual: 0-unstable-2024-11-14 -> 0-unstable-2024-11-25 2024-11-26 07:03:23 +00:00
c8425c93d8 syshud: 0-unstable-2024-11-12 -> 0-unstable-2024-11-25 2024-11-26 07:03:08 +00:00
150bc4c67b uassets: 0-unstable-2024-11-22 -> 0-unstable-2024-11-25 2024-11-26 07:02:48 +00:00
04315d35b8 pinephone-pro: WIP support for camera
i can't get images out of it, but the ov8858 appears to be detected by media-ctl (?)
2024-11-25 21:32:55 +00:00
6be6c08e7c servo: hardcode the doof/ovpns listen ports, and forward them through the NAT 2024-11-25 18:07:37 +00:00
3ed0ff6611 netns: make it *slightly* more debuggable 2024-11-25 15:55:23 +00:00
ba8c3f8123 mpv: fix music auto-profile detection when mpv is invoked inside the ~/Music directory itself 2024-11-25 13:07:31 +00:00
e60faa08ea mpv: nit: prefer get for auto-profiles so the log spams fewer errors 2024-11-25 13:06:45 +00:00
3bf4447ab1 mpv: disable playback resumption for ~/Music files 2024-11-25 12:55:32 +00:00
a84cf3dd90 podcasts: subscribe to Chris Chinchilla - Tech Lounge 2024-11-25 11:10:28 +00:00
3669780afe podcasts: Sustain OSS: subscribe 2024-11-25 10:54:26 +00:00
e1a6f09667 buffyboard: acquire from upstream nixpkgs PR 2024-11-25 10:44:56 +00:00
4405f1bed0 buffyboard: push upstream (out for PR) 2024-11-25 10:05:00 +00:00
953c61d6cb nixpkgs-bootstrap: patches: update samba hash 2024-11-25 10:05:00 +00:00
2686b5329c nixpkgs-review: restrict to just /nix/var
granting all of /nix also gives /nix/persist :o
2024-11-25 09:39:41 +00:00
da5d52abed nixpkgs-hammering: ship 2024-11-25 09:39:14 +00:00
00e2f48bfe buffybox: fix service to be output to the correct directory 2024-11-25 07:57:19 +00:00
1581151af5 rofi: snippets: add nixpkgs-hammering 2024-11-25 07:33:54 +00:00
51b627878b migrate search shortcuts rofi -> firefox 2024-11-25 07:24:29 +00:00
cee29af431 buffybox: 3.2.0-unstable-2024-10-05 -> 3.2.0-unstable-2024-11-10 2024-11-25 07:15:05 +00:00
0104dcc92b servo: replace raid disks 2024-11-25 05:18:44 +00:00
babe95034f htop: fix reporting of zram stats under sandboxing 2024-11-24 15:38:50 +00:00
dd8bf6e482 nixpkgs-bootstrap: 0-unstable-2024-11-22 -> 0-unstable-2024-11-23 2024-11-24 11:42:34 +00:00
929eba2ead nixpkgs-wayland: 0-unstable-2024-11-18 -> 0-unstable-2024-11-23 2024-11-24 11:42:19 +00:00
ca78b723b3 sops-nix: 2024-11-11 -> 2024-11-21 2024-11-24 11:42:02 +00:00
f63c8a490e feeds: subscribe to Matt Stoller - Organized Money 2024-11-23 17:26:42 +00:00
e588ce6de0 samba: fix cross build 2024-11-22 23:30:05 +00:00
95f04580f4 nixpkgs-bootstrap: 0-unstable-2024-11-19 -> 0-unstable-2024-11-22 2024-11-22 22:18:16 +00:00
ca6cd4b0cb uassets: 0-unstable-2024-11-14 -> 0-unstable-2024-11-22 2024-11-22 22:17:55 +00:00
5286a2cb8a firefox-extensions.ublock: 1.61.1b5 -> 1.61.3b0 2024-11-22 22:17:36 +00:00
4b444134a2 nixpkgs-bootstrap: 0-unstable-2024-11-16 -> 0-unstable-2024-11-19
and also simplify my overlays; rework things to be more cache-friendly
2024-11-22 04:27:52 +00:00
1029e36fed libreoffice: run stable version so that i can reliably grab it from cache 2024-11-22 03:54:15 +00:00
23f6a301a4 firefox-extensions.ublock: 1.61.1b4 -> 1.61.1b5 2024-11-22 03:53:42 +00:00
cfd4a7a54b opencellid: 0-unstable-2024-11-16 -> 0-unstable-2024-11-19 2024-11-22 03:53:23 +00:00
cc857db8bf firefox: add search shortcut for rottentomatoes.com 2024-11-21 17:05:51 +00:00
92faecc7c7 wireplumber: note when sandbox might require net connection 2024-11-21 09:00:36 +00:00
1b7c9cf2a0 easylpac: init at 0.7.6.5 2024-11-21 07:28:24 +00:00
d75de67fca lpac: init at 2.1.0
but it gives errors on launch...
2024-11-21 07:01:35 +00:00
3c0893224f euicc-manual: init at 0-unstable-2024-11-14 2024-11-21 07:01:35 +00:00
348d9f9352 secrets: net: update wifi 2024-11-21 07:01:35 +00:00
2f703ef694 bandwhich: ship 2024-11-18 20:52:16 +00:00
c975831cc4 servo: jellyfin: sync DLNA profile with upstream 2024-11-18 06:05:19 +00:00
c4c8141977 servo: jellyfin: persist more selectively
hoping in time i can get a config that persists even *less* to the point that i dont have to worry as much about BS packaging changes like what happened with the DLNA
2024-11-18 03:49:05 +00:00
c34bcfcdd9 servo: jellyfin: tame the logging 2024-11-18 03:49:05 +00:00
b355dcfaf5 servo: switch back to jellyfin, and fix it to (mostly) work as it did before 2024-11-18 03:49:05 +00:00
fe7281c393 servo: switch minidlna -> gerbera 2024-11-17 23:11:12 +00:00
00329a8bd3 servo: switch from jellyfin -> minidlna 2024-11-17 22:15:55 +00:00
697edc20fc servo: prosody: harden systemd serivice 2024-11-17 21:11:36 +00:00
a1ed37fada systemd: fix polkit rules so "systemd-run" isnt allowed by default 2024-11-17 20:57:01 +00:00
97089c6bd1 todo.md: sync 2024-11-17 17:15:33 +00:00
85103c61aa polyunfill: re-enable /etc/pam.d/systemd-user
it's needed by systemd --user, and hence by gitea
2024-11-17 17:08:39 +00:00
01309b66cc programs: shadow: remove pam session supression (this is presently dead code anyway) 2024-11-17 17:08:39 +00:00
7783de5d54 users: split pam stuff out of default.nix and disable 2024-11-17 17:08:39 +00:00
7ec6d28c65 servo: gitea: cleanup 2024-11-17 17:08:39 +00:00
2058045011 systemd-user-sessions: re-enable
this is actually probably necessary, else systemd user session fails with error PAM
2024-11-17 16:26:02 +00:00
09ed5a271d disable the systemd --user instance in a less hacky way, which hopefully causes fewer gitea-related errors 2024-11-17 16:18:18 +00:00
f723aa008c NUR: hopefully fix the NUR eval errors
see: <https://github.com/nix-community/NUR/actions/runs/11879057301/job/33100486232#step:4:2171>
2024-11-17 13:56:42 +00:00
5c001d5677 mpv: associate with tiktok 2024-11-17 12:11:22 +00:00
6b5da3c61f nixpkgs-bootstrap: 0-unstable-2024-11-14 -> 0-unstable-2024-11-16 2024-11-17 06:05:23 +00:00
11bce103a0 nixpkgs-wayland: 0-unstable-2024-11-09 -> 0-unstable-2024-11-16 2024-11-17 06:04:44 +00:00
39fd6b4309 firefox-extensions.{sponsorblock,ublacklist} -> latest 2024-11-17 06:04:28 +00:00
21f4b1d9f1 opencellid: 0-unstable-2024-11-14 -> 0-unstable-2024-11-16 2024-11-17 06:02:42 +00:00
186ff0b085 uninsane-dot-org: -> latest 2024-11-16 21:23:55 +00:00
444ca4353b nginx: uninsane.org: block archive.org, google bot from select pages 2024-11-16 17:11:49 +00:00
e179d71bfa uninsane-dot-org: 0-unstable-2024-10-27 -> 0-unstable-2024-11-16 2024-11-16 14:34:13 +00:00
db2137d756 ccache: disable 2024-11-15 05:22:54 +00:00
4e008c3420 nixpkgs-bootstrap.master: 0-unstable-2024-11-09 -> 0-unstable-2024-11-14 2024-11-15 05:07:30 +00:00
39ff8252c2 sops-nix: assets-unstable-2024-10-26 -> assets-unstable-2024-11-11 2024-11-15 05:07:13 +00:00
50be4729b0 syshud: 0-unstable-2024-11-07 -> 0-unstable-2024-11-12 2024-11-15 05:06:56 +00:00
b27e5d4c7d uassets: 0-unstable-2024-11-09 -> 0-unstable-2024-11-14 2024-11-15 05:06:34 +00:00
f38ce77d41 opencell-id: 2024-11-09 -> 2024-11-14 2024-11-15 05:06:19 +00:00
5788edbbc5 feeds: subscribe to Innuendo Studios 2024-11-14 14:25:16 +00:00
0f8152569b servo: replace one of the /mnt/pool disks 2024-11-14 03:18:48 +00:00
8bd4402faf todo.md: setup a real calendar system 2024-11-13 14:19:16 +00:00
18ce2e07a5 todo.md: note that /mnt/.servo_ftp has some problem 2024-11-13 14:17:38 +00:00
9de483a706 pkgs/assorted: fix pythonImportsCheckHook to be in nativeCheckInputs so it doesnt run on cross 2024-11-13 13:47:52 +00:00
7b88c9c644 sane.fs: dont have local-fs.target depend on any of my (persistence) bind mounts
otherwise it's too easy for local-fs to hang (/mnt/persist/private), or fail (/mnt/pool), and i lose critical things like *networking*

this was only working because on servo the /mnt/persist/private deps caused a cycle and systemd just _removed_ local-fs.target
2024-11-13 12:05:31 +00:00
d37e7fb5e8 servo: jellyfin: systemd: explicitly depend on /var/media 2024-11-13 12:03:15 +00:00
568ff01bc1 seatd: remove --bunpen-debug=4 flag 2024-11-13 11:47:47 +00:00
f5684b7c06 servo/fs: remove local-fs.target ordering dep on /mnt/pool
this is incremental work toward being able to boot (especially to networking) while my media disks are unplugged
2024-11-13 11:07:36 +00:00
8d1c714ba0 hosts/common: clean up the journald persistence to support both *private* or plaintext storage, by config 2024-11-13 09:14:30 +00:00
cffc826746 hosts/common: persist systemd journal in a way thats encrypted AND doesnt break boot 2024-11-12 11:48:36 +00:00
fed25f44d5 dyn-dns: allow services to subscribe *only* to change events, and not require DNS always be available
also switch back exclusively to UPnP / local source of trust
2024-11-12 04:06:24 +00:00
6513d927d4 hickory-dns: allow empty DNS substitutions, and handle those by filtering out the corresponding record 2024-11-12 04:05:25 +00:00
4779ad8f41 dyn-dns: better implementation 2024-11-12 02:31:50 +00:00
2134a9c738 WIP: dyn-dns: try a smarter trigger scheme, but im getting weird "resource" errors with systemd path units 2024-11-12 01:09:23 +00:00
5aa6c9b8c7 dyn-dns: when DNS changes, restart immediately instead of blocking on another dyn-dns.service query
the new behavior though causes dyn-dns consumers to be started even before we've learned the IP. that sort of matches the semantics of the module though. not sure the best design yet
2024-11-11 23:41:58 +00:00
388c58f656 servo: slim dependencies so that local-fs.target can be reached even if my media drives are inaccessible
this means some services which need access (like sftpgo) fail to start if the drive is unavailable
2024-11-11 20:40:13 +00:00
f3ee312dad modules/ssh: start sshd as early in the boot as possible
this allows more scenarios to be recoverable
2024-11-11 20:35:47 +00:00
3fb2656ff5 smartd: enable periodic drive self-tests 2024-11-11 15:42:27 +00:00
bb09575028 programs: btrfs: better sandboxing 2024-11-11 12:41:48 +00:00
ce43b00707 todo.md: sync 2024-11-11 11:11:55 +00:00
ec5e8a3269 netns: simplify the host -> netns response tunneling
i don't actually need any route table that's higher priority than 'local'
2024-11-11 11:02:42 +00:00
4604117184 programs: assorted: ensure everything that needs X(wayland) gets X(wayland) 2024-11-11 10:24:37 +00:00
c202e02d51 feeds: subscribe to ICM.museum 2024-11-11 09:03:52 +00:00
f6369bce8d servo: doof: dont proxy DNS inside the net namespace 2024-11-11 02:46:06 +00:00
309bd04037 modules/netns: rename options for better grouping 2024-11-11 02:37:00 +00:00
23913c9cd2 netns: configure the device in a way that should allow named endpoints to be resolved outside the netns 2024-11-11 02:19:00 +00:00
95d9db3973 neovim: associate \<Ctrl+k> to show keybindings; makes them more easily discoverable 2024-11-11 02:16:34 +00:00
2684b3c1aa wg-home: re-enable keepalives
this should fix some of the flakiness i've seen when deploying moby?
2024-11-10 16:19:07 +00:00
a36c1a6818 wg-home: simplify the server side 2024-11-10 16:05:53 +00:00
2ed633cfe8 wg-ovpns/doof: port from networking.wireguard -> sane.netns 2024-11-10 15:48:43 +00:00
2962f2dc21 refactor: modules/netns.nix 2024-11-10 14:00:29 +00:00
419132df8c scripts/check-uninsane: better verbosity options 2024-11-10 10:23:16 +00:00
e35e4d54c9 nixpkgs: -> latest
this gets me the latest hickory-dns; had to rebase libgweather
2024-11-10 07:16:49 +00:00
cd870e70cd hickory-dns: use upstream package, unpatched
I don't need the recursive resolver patches anymore
2024-11-10 05:56:09 +00:00
c30929e1a6 servo: switch to unbound for local DNS provider 2024-11-10 05:53:17 +00:00
e2dfbfe829 kiwix-serve: fix service sandboxing typo (ReadPaths -> ReadOnlyPaths) 2024-11-10 05:07:13 +00:00
bde5bc5983 libbytesize: push cross fix upstream 2024-11-10 01:44:12 +00:00
33412ad3f2 smartd: fix sandboxing on desko 2024-11-09 22:28:59 +00:00
c70ec39a48 nixpkgs-bootstrap: 0-unstable-2024-11-08 -> 0-unstable-2024-11-09 2024-11-09 21:50:51 +00:00
e51870df6f scripts/deploy: dont ship builds to servo by default 2024-11-09 21:50:33 +00:00
e8782a078f nixpkgs-wayland: 0-unstable-2024-11-04 -> 0-unstable-2024-11-09 2024-11-09 21:49:59 +00:00
c68db4d3ef syshud: 0-unstable-2024-11-04 -> 0-unstable-2024-11-07 2024-11-09 21:49:38 +00:00
f61225c3f4 uassets: 0-unstable-2024-11-05 -> 0-unstable-2024-11-09 2024-11-09 21:48:51 +00:00
ac8deb1e26 opencellid: 0-unstable-2024-10-26 -> 0-unstable-2024-11-09 2024-11-09 21:48:34 +00:00
63dc397665 firefox-extensions.ublock: 1.61.1b0 -> 1.61.1b1 2024-11-09 21:48:18 +00:00
5d9ce829ea smartd: only enable postfix integration IF postfix is enabled 2024-11-09 21:47:54 +00:00
6bd75034e0 smartd: sandbox 2024-11-09 12:11:17 +00:00
3abf1fdff8 bunpen: fix --bunpen-net pasta integration to work even when pasta isnt on PATH 2024-11-09 09:00:17 +00:00
870a09282f secrets: net: update auth for UW WiFi 2024-11-09 05:52:49 +00:00
4e402266b2 sane-vpn: fix so that sane-vpn do works even without hickory-dns installed 2024-11-09 05:52:49 +00:00
b6a368419e scripts/sync: fix Books/ synchronization (cant sync whole folder because of persistence details 2024-11-08 10:27:19 +00:00
62de15d418 todo.md: note that rsync has sandboxing issues 2024-11-08 10:25:19 +00:00
a34ab22fd7 btrfs.autoScrub: enable 2024-11-08 09:37:24 +00:00
b897640f7f smartd: port to sane.programs 2024-11-08 09:37:24 +00:00
4d0627ebd8 servo: remove networking.hostId 2024-11-08 09:26:03 +00:00
675f8a6bbf services.smartd: enable 2024-11-08 09:21:37 +00:00
ee24ae7e27 smartctl: fix sandboxing 2024-11-08 09:02:25 +00:00
849fe87de7 btrfs-progs: fix scrub sandboxing 2024-11-08 08:58:46 +00:00
d161cbdc72 fs: fix Books/Audiobook -> Books/Audiobooks 2024-11-08 08:28:23 +00:00
5d1549bbeb hickory-dns: update comment about status of upstream hickory-dns 2024-11-08 08:09:13 +00:00
e58677b0c3 syshud: fix changes due to upstream config parsing changes 2024-11-08 07:02:17 +00:00
c890646a1d nixpkgs-bootstrap: 0-unstable-2024-11-07 -> 0-unstable-2024-11-08 2024-11-08 07:01:34 +00:00
b6ad6d2707 firefox-extensions.passff: 1.20.1 -> 1.21 2024-11-08 07:01:08 +00:00
ea36ef78a2 firefox-extensions.ublock: 1.60.1b17 -> 1.61.1b0 2024-11-08 07:00:53 +00:00
d7ec4264bf nixpkgs-bootstrap: 0-unstable-2024-10-30 -> 0-unstable-2024-11-07 2024-11-07 11:08:38 +00:00
3ecce4639b desko: bump /tmp size to 128G 2024-11-07 10:55:05 +00:00
ef3f1b63dc sane-input-handler: reduce vol-up/down repeat latency and extend the max trigger counts from 5 to 8 2024-11-07 09:10:43 +00:00
7496c10cf9 todo.md: consider pass-based secret provider 2024-11-07 09:04:23 +00:00
6660896929 programs: port the remainder from dconf -> gsettings, but untested 2024-11-07 05:07:14 +00:00
1f84fc4b2b programs: port a few programs from dconf -> gsettings, tested on desko 2024-11-07 05:06:44 +00:00
ddaec49ea9 programs: prefer the gsettings backend over dconf backend
it's more easily human editable, and programs can write new settings without requiring dbus access
2024-11-07 04:19:10 +00:00
c2cf989bb7 programs.dconf: simlify the config 2024-11-07 03:34:16 +00:00
3a9e4af6da modules/programs: introduce a gsettings config option, which so far routes to dconf but later will stand alone 2024-11-07 03:30:34 +00:00
815f3d64e4 docsets.gtk: dont ship, since the rtfm dependency doesnt cross-compile 2024-11-07 02:17:30 +00:00
2e2fd53c33 docsets.nixpkgs-lib: fix cross compilation 2024-11-07 02:06:22 +00:00
0ea22c79ad refactor: remove a dead comment about GSK_RENDERER=cairo 2024-11-06 15:23:18 +00:00
404420b247 gnome-weather: statically define location
this hopefully fixes sandboxing issue, where ~/.config/dconf (persisted) wasnt visible inside the sandbox
2024-11-06 15:23:18 +00:00
97b7a6cc4c docsets: dont ship mx-sanebox docs, since i dont use them and build breaks for cross 2024-11-06 15:23:18 +00:00
199b300c6d servo: try, fail, to bridge irc.sdf.org to Matrix 2024-11-06 14:52:06 +00:00
d440c7e548 firefox-extensions: comment out everything i dont use, so that auto-updates are less noisy 2024-11-06 09:47:24 +00:00
944e28b64e nixpkgs-wayland: 0-unstable-2024-10-29 -> 0-unstable-2024-11-04 2024-11-06 03:35:54 +00:00
3e83cd8c9c syshud: 0-unstable-2024-09-26 -> 0-unstable-2024-11-04 2024-11-06 03:35:33 +00:00
54975e2db2 firefox-extensions.ether-metamask: 12.5.0 -> 12.6.0 2024-11-06 03:35:15 +00:00
871dd8d4f4 uassets: 0-unstable-2024-10-30 -> 0-unstable-2024-11-05 2024-11-06 03:34:49 +00:00
e307c5a60c docsets.python3-std: remove a lot of noise from the python docs 2024-11-05 05:44:50 +00:00
50277ff3bc docsets.python3-std: init
this includes docs for argparse, builtins like map, etc

however the index is lacking; it picks up a lot of noise, so that searching for 'map' will turn up tutorials instead of the API reference
2024-11-05 05:10:42 +00:00
d1f2f2462a doc2dash: init at 3.1.0 2024-11-05 02:49:31 +00:00
4be8a54866 docsets.gtk: init 2024-11-05 02:29:22 +00:00
1a09d9abe9 docsets.nix-builtins: init 2024-11-05 01:41:53 +00:00
97dc226414 servo: pleroma: reduce log spam 2024-11-05 00:19:20 +00:00
f23f8e31ae postgresql: tune for reduced memory usage 2024-11-04 22:46:29 +00:00
be112ea232 refactor: docsets: split make-docset-index into its own package so i can (in the future) use it for other docsets 2024-11-04 20:54:08 +00:00
2824ec96f2 vim: integrate dasht as plugin 2024-11-04 20:28:09 +00:00
7e1624d017 docsets: ship nixpkgs lib as a Dash/Zeal docset 2024-11-04 20:02:21 +00:00
598e55380c todo.md: note opportunity for sane-deadlines improvements 2024-11-04 16:07:53 +00:00
5e4628498a rofi: fix broken sandboxing 2024-11-04 13:45:15 +00:00
0d6c7d9f64 git: fix git mv sandboxing 2024-11-04 13:45:15 +00:00
58611f236d discord: patch to use wayland instead of X11/Xwayland 2024-11-04 13:45:15 +00:00
fa8cbd690d feeds: subscribe to ergaster podcast 2024-11-04 12:24:26 +00:00
757e77a84d docsets.rust-std: also ship core:: docs 2024-11-04 03:06:30 +00:00
616881c09b docsets.rust-std: patch so that std:: docs show up properly in std::, not rust_std::std 2024-11-04 02:52:41 +00:00
3179eb03eb docsets: ship rust stdlib docs, usable with e.g. dasht 2024-11-04 02:35:28 +00:00
5cbca3de22 docsets: cleanup
configure via actual packages, not strings representing the package names
2024-11-03 20:01:19 +00:00
7cfb59cb92 docsets: install system-wide 2024-11-03 19:14:09 +00:00
243ae05a68 dasht: ship 2024-11-03 17:25:55 +00:00
effd4094af refactor: programs: split docsets out of the zeal program 2024-11-03 16:55:05 +00:00
e230d40fae ollama: ship gemma2-27b, package but dont ship codegemma-7b 2024-11-03 12:44:47 +00:00
3aadc12f04 services: ollama: remove some LLM models which ive found to not be useful 2024-11-03 12:16:27 +00:00
7b04d24886 sane-input-handler: tweak hold times
decrease power-hold-to-play/pause; increase power-double-tap timeout; straddle volume-hold: shorter time-to-first-hold but longer time-between-holds
2024-11-03 09:53:05 +00:00
8ab7228cb5 firefox: bookmarks: add imdb search bookmark 2024-10-30 22:11:38 +00:00
2f3f59c89c refactor: firefox: bookmarks: sort 2024-10-30 22:10:24 +00:00
20ed91f03b nixpkgs-bootstrap: 0-unstable-2024-10-26 -> 0-unstable-2024-10-30 2024-10-30 21:04:30 +00:00
c4d43e25a8 nixpkgs-wayland: 0-unstable-2024-10-25 -> 0-unstable-2024-10-29 2024-10-30 21:02:44 +00:00
e2e184b6a5 uassets: 0-unstable-2024-10-26 -> 0-unstable-2024-10-30 2024-10-30 21:02:04 +00:00
2f2d058423 uninsane-dot-org: 0-unstable-2024-08-29 -> 0-unstable-2024-10-27 2024-10-30 21:01:47 +00:00
d653ddcf53 mumble: jail unregistered users 2024-10-30 10:13:10 +00:00
f9aaa48520 mumble: ship desktop interface 2024-10-30 02:04:03 +00:00
b930bb58fa servo: deploy a mumble service
is this permissioned correctly? i don't really know
2024-10-30 00:08:38 +00:00
c8210da075 libgpiod: fix sandboxing 2024-10-29 09:40:02 +00:00
f110e71011 todo.md: hard systemd services 2024-10-29 09:38:04 +00:00
e51e5ebf18 libgpiod (e.g. gpioinfo): sandbox 2024-10-29 09:12:39 +00:00
1f7d6fb240 fftest: sandbox 2024-10-29 09:12:29 +00:00
02deb27c8d rofi-run-command: sandbox 2024-10-29 09:12:11 +00:00
9f620087b5 powersupply: sandbox 2024-10-29 09:11:57 +00:00
cf1f558908 procs: sandbox 2024-10-29 08:28:54 +00:00
f29aa12039 dmidecode: sandbox 2024-10-29 08:28:44 +00:00
0dff9f993f browserpass: sandbox 2024-10-29 08:21:42 +00:00
50389407ef mmcli: fix sandboxing 2024-10-29 06:21:23 +00:00
e89cf69aa5 common/fs: re-organize ~/Books to be simpler 2024-10-29 06:06:48 +00:00
864e75afce sanebox: purge 2024-10-29 05:59:01 +00:00
51204fc494 systemctl: fix sandboxing 2024-10-29 05:25:16 +00:00
ea334f7f77 todo.md: cleanup gnome-keyring-daemon 2024-10-27 10:05:51 +00:00
6611f70274 nixpkgs-bootstrap: 0-unstable-2024-10-25 -> 0-unstable-2024-10-26 2024-10-26 16:31:53 +00:00
1b05280448 nixpkgs-wayland: 0-unstable-2024-10-24 -> 0-unstable-2024-10-25 2024-10-26 16:31:40 +00:00
259946f558 sops-nix: assets-unstable-2024-10-24 -> assets-unstable-2024-10-26 2024-10-26 16:31:25 +00:00
73a3a165f8 firefox-extensions.ublock: 1.60.1b16 -> 1.60.1b17 2024-10-26 16:31:12 +00:00
70bd1ec6c4 uassets: 0-unstable-2024-10-25 -> 0-unstable-2024-10-26 2024-10-26 16:30:34 +00:00
7cb39000c3 opencellid: 0-unstable-2024-10-25 -> 0-unstable-2024-10-26 2024-10-26 16:30:18 +00:00
c7c0d4c6c7 bunpen: dont intercept SIGTSTP
this is the Ctrl+Z signal; catching it seems to actually break the ability for a bunpen process to suspend
2024-10-26 11:37:50 +00:00
74a7fe46b0 todo.md: sync 2024-10-26 08:51:16 +00:00
e649eb4c13 feedbackd: integrate with PPP vibration motor 2024-10-26 08:42:19 +00:00
ce1d16a7ef scripts/check-backups: print the ssh command before running it 2024-10-26 05:12:30 +00:00
5b45282da6 buffybox/buffyboard: push systemd service upstream 2024-10-26 03:58:36 +00:00
ecd7d9d6b5 gnome-weather: fix .desktop file 2024-10-26 02:49:50 +00:00
ea4e230efd feeds: switch Matrix Live to the Youtube channel (the RSS is dead) 2024-10-26 02:30:24 +00:00
b79c9749c0 gpodder-configured: add --no-sync flag to bypass feed list synchronization, for faster init 2024-10-26 02:24:56 +00:00
929dbc706b nixpkgs-bootstrap: 0-unstable-2024-10-23 -> 0-unstable-2024-10-25 2024-10-26 00:58:08 +00:00
3783101408 nixpkgs-wayland: 0-unstable-2024-10-23 -> 0-unstable-2024-10-24 2024-10-26 00:57:56 +00:00
cc28df466e sops-nix: assets-unstable-2024-10-08 -> assets-unstable-2024-10-24 2024-10-26 00:57:39 +00:00
3665a8e798 uassets: 0-unstable-2024-10-23 -> 0-unstable-2024-10-25 2024-10-26 00:57:23 +00:00
a9fdea1082 opencellid: 0-unstable-2024-10-23 -> 0-unstable-2024-10-25 2024-10-26 00:57:07 +00:00
94e391c9a7 feeds: podcasts: subscribe to Unexplainable 2024-10-25 03:43:11 +00:00
6b1ea48f7a feeds: podcasts: subscribe to Stuff you should Know 2024-10-25 03:40:04 +00:00
d810c17cfd feeds: podcasts: subscribe to Last Week In AI 2024-10-25 03:32:22 +00:00
969d4cbef2 feeds: subscribe to EFF How To Fix The Internet 2024-10-25 03:31:46 +00:00
9045171184 firefox: add a search shortcut for Etymonline 2024-10-24 07:08:48 +00:00
344f08b12b sane-secrets-dump: fix oathtool invocation to always specify --totp 2024-10-24 07:06:34 +00:00
a9c497dc0b nixpkgs-wayland: 0-unstable-2024-10-16 -> 0-unstable-2024-10-23 2024-10-23 21:47:23 +00:00
1335978106 nixpkgs-bootstrap: 0-unstable-2024-10-21 -> 0-unstable-2024-10-23 2024-10-23 21:47:06 +00:00
0f500088a8 firefox-extensions: -> latest 2024-10-23 21:46:26 +00:00
ddd0cc0613 uassets: 0-unstable-2024-10-21 -> 0-unstable-2024-10-23 2024-10-23 21:46:11 +00:00
92b870a1c1 opencellid: 0-unstable-2024-10-15 -> 0-unstable-2024-10-23 2024-10-23 21:45:58 +00:00
f450ee8361 curlftpfs: fix a bug wherein optimized aarch64 readdirs would loop endlessly
the fuse3 API allows for seekable directory iterators, and by not passing the 'offset' parameter to fuse, it was defaulting to garbage and the same part of the directory was being iterated, endlessly
2024-10-23 10:17:18 +00:00
cebfe5df19 fftest: ship 2024-10-22 07:02:16 +00:00
1c57b9ce9e programs/sandbox: include udev rules in the sandboxed program output
notably, this fixes feedbackd so that the PPP haptics/vibrator is writable by the user
2024-10-22 07:01:18 +00:00
c4ca651754 pict-rs: fix for newer nixpkgs 2024-10-21 22:38:20 +00:00
b21ae11b04 NUR: fix eval
locally, at least: hopefully this fixes the CI jobs as well
2024-10-21 22:16:55 +00:00
88a64738e2 nixpkgs-bootstrap: 0-unstable-2024-10-16 -> 0-unstable-2024-10-21 2024-10-21 21:48:16 +00:00
339b5d805f uassets: 0-unstable-2024-10-16 -> 0-unstable-2024-10-21 2024-10-21 21:48:02 +00:00
4ef137101c firefox-extensions: -> latest 2024-10-21 21:47:47 +00:00
ea65680a50 feeds: subscribe to TVW_Washington YouTube 2024-10-21 21:20:03 +00:00
155d1dbc95 firefox: add a search bookmark for Google Maps 2024-10-21 19:39:36 +00:00
98c64a5940 pleroma: fix (and partially strengthen) the sandboxing 2024-10-21 10:17:28 +00:00
d17f436250 hosts/common: ship libgpiod 2024-10-21 08:58:13 +00:00
b69ec1d5f1 pleroma: fix log level warn -> warning 2024-10-21 08:53:22 +00:00
3a8cc67900 audacity: fix .desktop file 2024-10-21 07:41:09 +00:00
089a379d54 moby: actually, just disable the debug uart pull resistor 2024-10-20 08:17:49 +00:00
9d1770f6db moby: HACK: switch UART2_RX to pull down to silence sysrqs from headphone detection
i haven't tested the uart mode with this: hopefully it still works with that.

even with this, i get several hp-detect interrupts, which comes with its
own problem (i.e. pipewire restarts every second).
2024-10-20 06:27:15 +00:00
f8fd59b7be common: enable irqbalance 2024-10-20 06:25:50 +00:00
a5b80e103f alsaUtils/aplay: fix sandboxing 2024-10-20 06:25:33 +00:00
3f22ac89a1 moby: enable camera flash (for use as a torch) 2024-10-20 06:25:16 +00:00
92fa2d4776 moby: import the remainder of the sound config from pine64-org DTS
i didn't check the routing on those, but after applying this in full, 3.5mm-attached mic has way more volume, and i *think* this patch is what fixed that (mic bias)
2024-10-19 05:55:33 +00:00
dba22fdb39 moby: ship alsa w/o the "voice call" configs, since they dont produce any audio 2024-10-19 05:45:18 +00:00
921786de9f moby: sound: add Internal Earpiece node (does it work? idk, but it doesnt break anything!) 2024-10-19 01:53:15 +00:00
65e8e6bf1c pinephone-pro: plumb backlight through to swaync (though apparently i still disable this, in favor of nwg-panel) 2024-10-19 00:09:09 +00:00
35d349a73e moby: re-enable gps-share by lifting it out of HAL 2024-10-19 00:08:07 +00:00
fc4fadbb5b ols: remove WiGLE integration 2024-10-19 00:07:28 +00:00
cfbd385904 bonsai: add a noop delay transition at the root of the state machine, hopefully improves reliability 2024-10-18 20:51:31 +00:00
441e69e708 bunpen: reap child processes when acting as PID1 2024-10-18 08:23:36 +00:00
34ad1831ff moby: synchronize touchscreen rotation with display rotation 2024-10-18 05:18:20 +00:00
2dec4a648e home/fs: limit ~/.persist/* to just the users home data 2024-10-18 05:00:35 +00:00
4a0ae85dd5 sane-find-dotfiles: also print directories in ~/.* 2024-10-18 04:55:43 +00:00
f1dfca12ac swaync: fix so the gps button actually works (by starting gps.target -- not gps.service) 2024-10-18 02:56:17 +00:00
d138cec9fc users/systemd: fix so oneshot services arent stopped immediately after activation 2024-10-18 02:55:44 +00:00
bc8e0d07f4 eg25-control: fix sandboxing (at least, for --power-on) 2024-10-18 02:40:56 +00:00
b33e6a0c73 scripts/deploy: add --force-reboot option 2024-10-18 01:45:48 +00:00
0888c9e994 networkmanager: fix dbus UID check so that nmcli/etc can connect when the service is running as dedicated user 2024-10-18 01:20:43 +00:00
30cd1c06ba findutils: remove sandboxing, it doesnt make sense 2024-10-17 21:46:36 +00:00
0c85d73466 networkmanager: improve sandboxing 2024-10-17 07:02:55 +00:00
8e9800c4e4 networkmanager: disable /etc/resolv.conf management when unbound is enabled 2024-10-17 05:40:21 +00:00
bb87899b95 swayidle: fix local typo 2024-10-17 03:59:10 +00:00
1e045c2c17 nixpkgs-bootstrap: 0-unstable-2024-10-15 -> 0-unstable-2024-10-16 2024-10-17 01:07:56 +00:00
3fb44e6405 uassets: 0-unstable-2024-10-15 -> 0-unstable-2024-10-16 2024-10-17 01:07:31 +00:00
0c43aedc02 nixpkgs-wayland: 0-unstable-2024-10-12 -> 0-unstable-2024-10-16 2024-10-17 01:07:17 +00:00
33aa2727be envelope: fix cross compilation 2024-10-16 21:41:10 +00:00
27740bb546 servo: sftpgo: revoke fedi/music sharing access
this was only ever a temporary thing, i can reintroduce it for anyone who actually wants it
2024-10-16 20:51:15 +00:00
fbc5786559 Firefox: add search shortcut for Google Shopping 2024-10-16 20:44:02 +00:00
917110092f todo.md: add task to lock down dbus 2024-10-16 00:48:03 +00:00
5822eca99c wireshark: install /share, for icons, etc 2024-10-16 00:21:39 +00:00
dbc29db5fa modules/programs: update docs for tryKeepUsers 2024-10-16 00:18:06 +00:00
8b8046773e feeds: subscribe to momi.ca / Anjan 2024-10-15 23:37:44 +00:00
038851744e todo.md: add item for using honeybee xmpp calling app 2024-10-15 23:36:34 +00:00
8099307f32 envelope: ship it! 2024-10-15 23:08:06 +00:00
7bbc9cde62 todo.md: add an entry for replacing geary with envelope 2024-10-15 22:07:15 +00:00
d4b269be7f todo.md: new entry for installing mobroute/transito 2024-10-15 22:06:14 +00:00
7eda639658 nixpkgs: 0-unstable-2024-10-14 -> 0-unstable-2024-10-15 2024-10-15 22:05:56 +00:00
f2842a3b7c opencellid: 0-unstable-2024-10-08 -> 0-unstable-2024-10-15 2024-10-15 22:05:08 +00:00
af0dc12a1f uassets: 0-unstable-2024-10-13 -> 0-unstable-2024-10-15 2024-10-15 22:03:56 +00:00
c617d4d0cd eg25-control: remove old TODOs 2024-10-15 17:53:37 +00:00
4822cc1ecb moby: enable the modem
the USB PHY which links RK3399 to the modem needed to be enabled, then the rest works OOTB

eg25-control works; modem-manager sees the modem, i haven't actually tried to get an IP address yet though
2024-10-15 07:27:16 +00:00
00aa9530bb moby: *try* to enable the modem
it might be getting further in the setup than before, but it's still not complete

eg25-control --power-on does show it sending the STATUS signal, but /dev/ttyUSB2 does not appear and modem-manager sees nothing.

eg25-manager likewise does not work

TODO: try lsusb?
2024-10-15 05:22:24 +00:00
9fbe040ea5 moby: limit i2c1 frequency to 400 kHz 2024-10-15 03:48:28 +00:00
0a2945e9a9 eg25-control: document better the modem GPIO lines 2024-10-15 02:15:06 +00:00
a76d375182 firefox: configure with uidensity=2 2024-10-14 23:10:33 +00:00
4f5339ed9b mpv: associate with youtube music URLs 2024-10-14 20:42:14 +00:00
de8e17ead1 nixpkgs: 0-unstable-2024-10-12 -> 0-unstable-2024-10-14 2024-10-14 20:40:16 +00:00
053d7d1156 nixpkgs-wayland: 0-unstable-2024-10-10 -> 0-unstable-2024-10-12 2024-10-14 20:40:16 +00:00
45cf4f5fb4 firefox-extensions.ublock: 1.60.1b12 -> 1.60.1b13 2024-10-14 20:40:16 +00:00
b41145e1f6 uassets: 0-unstable-2024-10-10 -> 0-unstable-2024-10-13 2024-10-14 20:40:16 +00:00
f24b463a34 firefox: bookmarks: add lib.rs search bookmark 2024-10-14 03:35:07 +00:00
29c13e35cb neovim: fix cross compilation for newer nixpkgs 2024-10-14 03:08:53 +00:00
e5cc9afde6 dont ship koreader (cross build is failing on newer nixpkgs) 2024-10-14 03:08:53 +00:00
fb56c9ed73 ids: allocate a static id for resolvconf (part of future nixpkgs update) 2024-10-14 03:08:53 +00:00
936138e592 dmidecode: ship 2024-10-14 03:08:53 +00:00
341242d32d envelope: remove unused inputs 2024-10-13 22:15:59 +00:00
d8a41ff3c6 envelope: init at 0.1.0-unstable-2024-09-13
the Cargo.lock file was manually generated by running `cargo build` in
the source directory.
2024-10-13 21:20:22 +00:00
455b05e99a ollama: ship deepseek-coder-v2-16b-lite-instruct-q5_1,qwen2_5-32b-instruct-q2_K 2024-10-13 18:56:05 +00:00
7f5b262801 ollama: ship fewer models, improve notes on the remaining models 2024-10-13 08:37:50 +00:00
ea57fc5faa ollamaPackages: fix install path so that ollama gives it a nicer name 2024-10-13 08:37:50 +00:00
b58416b6ac ollamaPackages: add a bunch more 2024-10-13 08:37:50 +00:00
bc302df2fa ollamaPackages.{qwen2_5-7b,qwen2_5-14b}: init, and cleanup the surroundings 2024-10-13 08:37:50 +00:00
14da2b6b6c ollamaPackages: rename {model}_{variant} -> {model}-{variant} 2024-10-13 08:37:50 +00:00
ca9f2f5f07 ollamaPackages.{qwen2_5-coder-7b,mistral-large,mixtral-8x7b}: init 2024-10-13 08:37:50 +00:00
c4dbb977d4 llamaPackages.qwen2_5_32b: init 2024-10-13 08:37:50 +00:00
8380fdfb85 ollamaPackages.llama3_1_70b: init 2024-10-13 08:37:50 +00:00
cb963bba4c ollama: ship mistral 2024-10-13 08:37:50 +00:00
8744870cd4 ollamaPackages.mistral: init 2024-10-13 08:37:50 +00:00
3169ab33dd nix: ships in user environment 2024-10-13 08:37:50 +00:00
07218f2350 eg25-control: fix typos 2024-10-13 05:05:51 +00:00
e2fc11ba1a nixpkgs-bootstrap: fix unl0kr patch hash 2024-10-13 05:05:33 +00:00
cdfa8afcfc eg25-control: refactor in advance of PinePhonePro having different GPIOs for powering the modem 2024-10-13 00:48:08 +00:00
06ee80bc40 ollama: cleanup docs 2024-10-12 23:29:52 +00:00
21c44b3a3b nixpkgs-bootstrap: remove unused common.nix file 2024-10-12 23:15:56 +00:00
cba800ca17 ollama: enable AMD GPU acceleration 2024-10-12 23:10:42 +00:00
643a6e8309 neovim: fix sandboxing when run as sudo 2024-10-12 22:44:17 +00:00
a753cf34ec tree: fix sandboxing when run as sudo 2024-10-12 22:44:06 +00:00
cacec52d8e ollama: enable on desko 2024-10-12 22:43:49 +00:00
2edce8e6c8 refactor: use mkEnableOption,mkPackageOption where applicable 2024-10-12 19:36:50 +00:00
11b706b132 refactor: use lib.getExe where applicable 2024-10-12 19:34:42 +00:00
ef2db7aaf9 firefox: bookmarks: add a google videos search shortcut 2024-10-12 17:13:04 +00:00
59cb238b00 nixpkgs-bootstrap: 0-unstable-2024-10-08 -> 0-unstable-2024-10-12 2024-10-12 16:14:38 +00:00
1f485f179f nixpkgs-wayland: 0-unstable-2024-10-08 -> 0-unstable-2024-10-10 2024-10-12 16:14:23 +00:00
534f5fd45c firefox-extensions.ublock-origin: 1.60.1b10 -> 1.60.1b12; metamask 2024-10-12 16:14:05 +00:00
af7faeaafe common/fs: reduce the servo ftp mounts to just one ftp mount, plus a collection of bind mounts
simpler, more reliable, and less resource intensive!
2024-10-12 04:28:41 +00:00
b166de34ef common/fs: reduce the ftp liveness checks to just one service 2024-10-12 03:38:39 +00:00
b60f7af59b hosts/common/fs: refactor 2024-10-12 03:17:42 +00:00
3685a27e8e refactor: hosts/common/fs: split into multiple files 2024-10-12 03:14:34 +00:00
f8a1751e44 fs.nix -> fs/default.nix 2024-10-12 03:01:56 +00:00
758b58cc5e home/fs: make hung /mnt/servo/* less impactful (and also more debuggable)
logs now show in /var/log/curlftpfs, when enabled

previously unaccessed mounts still time out on first access without net, only it takes 120s instead of the more typical 20s

since each mount expires independently, it can still take 15 minutes after 'ls /mnt/servo/media' for that directory to become usable (but at least it *does*)
2024-10-12 03:00:01 +00:00
274a1683eb nwg-panel: *drastically* reduce pipewire refresh intervals, to reduce load and log noise 2024-10-11 19:13:28 +00:00
ddb10a0da3 bonsaid: acquire from upstream module 2024-10-11 00:06:51 +00:00
c10686cf0f nixpkgs-bootstrap: remove upstreamed alsa-utils patch 2024-10-10 23:07:31 +00:00
1ac398799c bonsai: begin to push the service upstream 2024-10-10 22:55:24 +00:00
295742239e nixpkgs-bootstrap: 0-unstable-2024-10-08 -> 0-unstable-2024-10-10 2024-10-10 18:03:01 +00:00
d9622a69a9 nixpkgs-wayland: 0-unstable-2024-10-06 -> 0-unstable-2024-10-08 2024-10-10 18:02:48 +00:00
37f535d2c4 firefox-extensions.{ether-metamask,fc_cast} -> latest 2024-10-10 18:02:32 +00:00
a4abb688c3 uassets: 0-unstable-2024-10-08 -> 0-unstable-2024-10-10 2024-10-10 18:02:10 +00:00
2803afc8e6 moby: sound: remove some configs borrowed from megi which arent needed in practice 2024-10-10 07:46:21 +00:00
994bc941b7 alsa-ucm-conf: tweak package priority to ensure that other alsa files take precedence over the base configs 2024-10-10 07:07:51 +00:00
312fba89e4 moby: define the audio/amplifier
combined with an out-of-tree ucm file, the audio device can actually make noise. no setup needed -- just run speaker-test after boot

this patch probably changes more than is strictly required: i can maybe reduce it over time
2024-10-10 06:50:46 +00:00
853a06d70b nixpkgs-bootstrap: add link to alsa-utils upstream PR 2024-10-10 05:14:59 +00:00
fe64c8950f pine64-alsa-ucm: fix install paths 2024-10-10 03:48:47 +00:00
3e4d3c9c46 sane-sync-from-iphone: integrate into main scripts/sync 2024-10-10 03:48:25 +00:00
0023983799 pine64-alsa-ucm: fix installation directory 2024-10-10 02:44:48 +00:00
19bccbbbeb kiwix-serve: obtain wikipedia zim via nix, instead of being stateful 2024-10-10 01:59:02 +00:00
966a29dff3 ship pine64-alsa-ucm, more likely to work with PinePhonePro 2024-10-10 01:58:39 +00:00
f43cdcbe32 pine64-alsa-ucm: init 2024-10-10 01:50:37 +00:00
450c61f384 firefox: add wk shortcut to search my wikipedia mirror 2024-10-10 01:49:09 +00:00
e0c8b64307 zimPackages.wikipedia_en_all_maxi: init at 2024-01 2024-10-10 00:37:24 +00:00
9aa5e82d93 directoryListingUpdater2: align with upstream nixpkgs PR 2024-10-09 23:29:57 +00:00
f7a21243da zimPackages: init
this includes wikipedia snapshots, though currently only their smaller ones (simply because the larger ones will take time to download)
2024-10-09 23:20:13 +00:00
d12c10e203 nixpkgs-bootstrap: link a patch for my alsa-ucm-conf update 2024-10-09 20:47:18 +00:00
012f4b4e88 alsaUtils (e.g. aplay): fix sandboxing 2024-10-08 23:02:29 +00:00
2833832b79 moby: define the i2s bus
this is enough for the sound card to come online, visible in /dev/snd and also pipewire

however i don't *hear* anything. speaker-test -c 2 does not work
2024-10-08 23:01:53 +00:00
ad0465456b moby: experimental device tree overlay to define the audio codec
the codec is probed, and i think enumerated over i2c,
but `aplay -l` shows empty.

earlier version omitted one of the power supplies and the kernel driver
complained:
```
[   33.506926] rt5640 1-001c: Device with ID register 0x0 is not rt5640/39
```

since this version of the patch doesn't have that error, i *think* the
driver read the device's id register over i2c, at least.

the device shows up at:
```
/sys/bus/platform/drivers/rk3x-i2c/ff110000.i2c/i2c-1/1-001c
```
but this is a static definition; it doesn't seem to say anything about
the runtime status of the device.
2024-10-08 22:23:36 +00:00
06e7118390 mpv-image-viewer: link to upstream 2024-10-08 18:23:19 +00:00
a65ff83306 re-enable handbrake 2024-10-08 18:22:54 +00:00
2070e8cbed video-trimmer: ship it
in the future this *could* integrate with mpv, better than my current clipping script...?
2024-10-08 16:25:44 +00:00
ad8976f145 fractal: switch back to using nixpkgs edition 2024-10-08 16:15:35 +00:00
01eb5b891f mpv: uosc: 5.2.0-unstable-2024-03-13 -> 5.2.0-unstable-2024-05-07
still not the latest, but updating further than this requires reworking my patches
2024-10-08 16:15:35 +00:00
f4e1b48298 video-trimmer: fix cross compilation 2024-10-08 15:44:34 +00:00
189710057a cross: simplify cargo cross-compilation patches 2024-10-08 15:44:21 +00:00
62d2801d55 nixpkgs-bootstrap: 0-unstable-2024-10-06 -> 0-unstable-2024-10-08 2024-10-08 14:36:42 +00:00
d539668f01 sops-nix: assets-unstable-2024-10-06 -> assets-unstable-2024-10-08 2024-10-08 14:36:29 +00:00
cf7a969429 uassets: 0-unstable-2024-10-06 -> 0-unstable-2024-10-08 2024-10-08 14:36:15 +00:00
722dfce78e toplevel: support derivation-type updateScripts 2024-10-08 14:01:37 +00:00
f4798e5fcf opencellid: implement an updateScript
also fix the package version, because apparently i forgot the date when manually updating just now
2024-10-08 14:01:11 +00:00
170fd579ad opencellid: 0-unstable-2024-06-20 -> 0-unstable-2024-10-07 2024-10-08 13:38:33 +00:00
adb2301fd5 cross: simplify the blueprint-compiler patching 2024-10-08 12:09:10 +00:00
801cdd424e mpvScripts: dont recurse into them
something infinitely recurses when i do. this impacts update scripts
2024-10-08 02:31:30 +00:00
1f47303938 mpv: tune image-positioning bindings 2024-10-08 02:18:33 +00:00
ea05bac480 mpv: enable image-positioning extension 2024-10-08 02:03:19 +00:00
0fa0ded0a4 mpvScripts.mpv-image-viewer: init at 0-unstable-2023-03-03 2024-10-08 01:19:14 +00:00
16580235b5 mpv extensions: lift sane_cast,sane_sysvol out to pkgs/
establishing a format for this will make it easier for me to package 3rd-party mpv scripts
2024-10-07 22:49:03 +00:00
c9fa30e758 mpv: disable auto-play-next for most images 2024-10-07 21:23:12 +00:00
f960b784b1 todo.md: fix opening of PDFs at a URI 2024-10-07 19:26:10 +00:00
01329b2498 clean up application URL associations, slightly
a lot of glib apps seem to struggle with http(s)://, possibly because of flatpak? so use mpv for images. no suitable option for pdfs
2024-10-07 19:05:58 +00:00
0fc169ed9b programs: cleanup the gvfs implementation (but, dont actually use it) 2024-10-07 18:04:03 +00:00
b89f1b203a firefox: bookmarks: add temu search 2024-10-07 08:58:33 +00:00
568cae8225 nixpkgs-bootstrap: 0-unstable-2024-10-04 -> 0-unstable-2024-10-06 2024-10-07 07:23:39 +00:00
f715c57994 nixpkgs-wayland: 0-unstable-2024-10-01 -> 0-unstable-2024-10-06 2024-10-07 07:23:18 +00:00
f1556419a4 sops-nix: assets-unstable-2024-09-30 -> assets-unstable-2024-10-06 2024-10-07 07:22:57 +00:00
f0dc904b4c uassets: 0-unstable-2024-10-03 -> 0-unstable-2024-10-06 2024-10-07 07:22:41 +00:00
8fbf243d54 ublock: 1.60.1b4 -> 1.60.1b8 2024-10-07 07:22:22 +00:00
7e380322d9 i2p-in-private-browsing: 2.6.1 -> 2.7.1 2024-10-07 07:22:07 +00:00
9c4235d521 nixpkgs-bootstrap: fix so the scope is recursed into and my updaters know to update it 2024-10-06 22:07:22 +00:00
0e6a94d399 refactor: impure.nix calculates localSystem for itself; avoid duplication since otherwise integrations/nix-update/default.nix would need to add that too 2024-10-06 21:46:40 +00:00
a42afed98f feeds: unsubscribe from Ezra Klein 2024-10-06 21:43:46 +00:00
2a1d0f9637 moby: fix KASLR 2024-10-06 21:11:45 +00:00
c636058efe todo.md: expand notes on moby KASLR 2024-10-06 20:34:44 +00:00
fc869c66ab todo.md: note that BPF is enabled on moby now
LSM support for eBPF active  //  systemd[1]: bpf-restrict-fs: LSM BPF program attached
2024-10-06 20:23:57 +00:00
4bf46a18b1 buffyboard: harden systemd service 2024-10-06 19:55:20 +00:00
a460a7461f programs: ship xxd 2024-10-06 18:42:39 +00:00
d109f0faa3 kernel: use nixpkgs architecture defaults, override only the fields i care about 2024-10-06 18:19:40 +00:00
7795a3f6aa dns: disable DNSSEC to avoid circular dependency with NTP 2024-10-06 13:00:12 +00:00
6579e6264c u-boot-pinephone-pro: disable HDCP blob 2024-10-06 12:10:27 +00:00
871b855204 todo.md: moby: enable dynamic DRAM clocking 2024-10-06 11:27:53 +00:00
3f58caa446 private-storage: mark as a dependency of default, so that even non-GUI systems like servo are sure to load it 2024-10-06 09:00:23 +00:00
974cf4a5a7 moby: use stock NixOS linux kernel, and apply config changes strictly through the boot.kernelPatches module
this is more composable, in case i want to make a kernel that's bootable on multiple devices, e.g.
2024-10-06 07:50:25 +00:00
37ceb63444 moby: initrd: remove extraneous sdhci_of_arasan module 2024-10-06 07:50:25 +00:00
be94ff4ab9 moby: initrd: remove extraneous spi_rockchip,dw_wdt modules 2024-10-06 07:50:25 +00:00
bdcb1c44e9 normalize the base kernel config nixpkgs applies for each host 2024-10-06 07:50:25 +00:00
440db76ddc fix sane-private-unlock sandboxing 2024-10-06 07:50:21 +00:00
761b5a7663 nit: nixpkgs-bootstrap: remove nonsensical argument defaults 2024-10-05 21:27:56 +00:00
a2eb2c2cec moby: remove from initrd unnecessary rk8xx_spi module 2024-10-05 21:27:29 +00:00
cb003b2307 moby: remove from initrd: ofpart,nvmem_rockchip_efuse 2024-10-05 20:48:47 +00:00
41620b790b moby: remove unneeded gpu_sched module from initrd 2024-10-05 20:33:55 +00:00
f33212ef75 moby: remove panfrost from the initrd
it's actually not needed for framebuffer graphics
2024-10-05 20:15:51 +00:00
a2478fa153 rk2aw: init 2024-10-05 19:08:00 +00:00
8fa8cd7a04 buffybox: 3.2.0-unstable-2024-09-26 -> 3.2.0-unstable-2024-10-05
my patches have been upstreamed :)
2024-10-05 18:45:31 +00:00
a45c0c0976 moby: ship fewer modules in the initrd 2024-10-05 18:34:16 +00:00
6de31b7bc4 sane-private-unlock: fix perms 2024-10-05 18:32:09 +00:00
1e6123b32d moby: ship fewer modules in the initrd 2024-10-05 17:48:18 +00:00
f7a9311c9a moby: ship fewer modules in the initrd 2024-10-05 17:23:27 +00:00
3442d4488f moby: ship fewer modules in the initrd 2024-10-05 17:02:59 +00:00
e07ed5fe02 moby: build the kernel with everything as a module 2024-10-05 16:47:34 +00:00
7590111b8f todo.md: drop the item about theming moby 2024-10-05 14:49:11 +00:00
caa41d5a95 todo.md: sync 2024-10-05 14:40:01 +00:00
38816c71ec todo: fix moby boot order 2024-10-05 14:08:04 +00:00
be50bf4499 README: update to reflect recent refactorings 2024-10-05 14:03:35 +00:00
358b16516b todo.md: sync 2024-10-05 13:48:01 +00:00
aa5ec54b92 pkgs: remove jellyfin-media-player-qt6, since i never used it in years 2024-10-05 13:42:11 +00:00
90dd7c8272 nit: nixpkgs-bootstrap: remove outdated comment 2024-10-05 13:37:06 +00:00
c528e25915 refactor: nixpkgs-bootstrap: drop uninteresting commented-out gnustep patch 2024-10-05 13:35:38 +00:00
58aaa1202a refactor: nixpkgs-bootstrap: use standard fetchpatch "name" instead of "title" 2024-10-05 13:30:01 +00:00
2c6d919d4f buffybox: add an updateScript 2024-10-05 13:27:00 +00:00
62faaebb76 buffybox: apply patches against upstream master, instead of sourcing my fork directly 2024-10-05 13:26:10 +00:00
526ad60d6c ssh: add gitlab.com pubkey 2024-10-05 13:05:44 +00:00
e64a5a486b unl0kr: supply via buffybox 2024-10-05 12:59:30 +00:00
96f563be18 buffybox: fix usleep typo to reduce CPU to something *much* more manageable 2024-10-05 12:53:46 +00:00
9ab10627ab buffybox: 3.2.0 -> 3.2.0-unstable-2024-10-05
with my patches, this gets much better CPU use

project has bee refactored so that it builds both unl0kr *and* buffyboard
2024-10-05 12:45:24 +00:00
3da1f78ff5 sway: ignore input events from buffyboard 2024-10-05 11:47:10 +00:00
383893eed2 sway: remove bluetooth stuff (unused) 2024-10-05 09:23:09 +00:00
ef4bda2b41 sane-wipe: fix sandboxing 2024-10-05 08:43:04 +00:00
189d7da00b firefox: link the bookmarks into fs in a way thats easier to edit at runtime 2024-10-05 08:42:18 +00:00
b3501d1b30 firefox: bookmarks: remove unneeded close tags and prevent firefox from deduping my bookmarks 2024-10-05 08:38:54 +00:00
b75af9678d firefox: bookmarks: format for human editing 2024-10-05 08:17:15 +00:00
b01eac692b firefox: add search bookmarks for aliexpress 2024-10-05 08:07:49 +00:00
3e40fe73f8 notifyActive activation script: fix
the DBUS_SESSION_BUS_ADDRESS env var referred to the XDG_RUNTIME_DIR, the latter wasn't set by the time the former was being evaluated
2024-10-05 07:17:51 +00:00
ec11d681ee sane-private-unlock: init
this presents a simpler unlock mechanism than my previous unl0kr script
2024-10-05 06:55:26 +00:00
0c825263af refactor: activationScripts.nvd: prefer lib.getExe shorthand 2024-10-05 06:13:31 +00:00
9d1bb05e49 refactor: remove unused sane-private-* scripts or move them into scripts/ 2024-10-05 06:03:14 +00:00
e60076bdb9 replace unl0kr with buffyboard
i still need to wire it to gocryptfs
2024-10-05 05:53:25 +00:00
4cead8eef2 todo.md: entry for reworking hosts/modules -> toplevel modules/ 2024-10-05 04:12:47 +00:00
10f662d2c2 todo.md: add entries for upstreaming to nwg-panel 2024-10-05 04:10:53 +00:00
85bddee024 todo.md: lift the hickory-dns TODOs into the hickory-dns module, now that i dont use it as system resolver 2024-10-05 04:09:05 +00:00
472706c769 todo.md: document bunpen ctrl-z bug 2024-10-05 04:05:05 +00:00
758b504757 nixpkgs: 0-unstable-2024-10-03 -> 0-unstable-2024-10-04 2024-10-05 03:08:53 +00:00
11e31bb0d1 firefox-extensions.ublock-origin: 1.60.1b2 -> 1.60.1b4 2024-10-05 03:08:53 +00:00
48c3456080 buffyboard: init at 3.2.0
maybe i can use this to replace unl0kr someday
2024-10-05 03:08:53 +00:00
2b50425b79 sane-sysload: fix battery logic to also work on Pinephone Pro (and more devices, generally) 2024-10-04 19:09:52 +00:00
4471ef5e91 firefox: search bookmarks: add Google 2024-10-04 18:45:55 +00:00
a8625a915f lappy: raise pipewire buffer to avoid audio crackling 2024-10-04 18:45:55 +00:00
780ec13a11 firefox: disable OCSP altogether 2024-10-04 18:45:55 +00:00
bde70fe6bf firefox: use system resolver (omg) 2024-10-04 18:14:50 +00:00
6647223523 dns: replace local recursive resolver with unbound
this affects lappy, moby AND desko, but not servo (yet)
2024-10-04 17:44:30 +00:00
6d3a9e97ea modules/ids: improve error message for non-deterministic IDs 2024-10-04 17:14:37 +00:00
1ab91fb1ea firefox: search bookmarks: allow "amazon" for Amazon.com 2024-10-04 13:18:37 +00:00
44418136f7 firefox: bookmarks: fix GH, MAL search URLs 2024-10-04 10:45:14 +00:00
c3fbb9f39a firefox: sort bookmarks 2024-10-04 10:05:43 +00:00
060996b03c firefox: add search shortcut for docs.rs 2024-10-04 10:05:14 +00:00
37a8c93f4f firefox: add search shortcut for reddit 2024-10-04 10:04:31 +00:00
de3debab16 alacritty: set the cursor to always blink
this seems to override any TTY escape codes, and survive e.g. tput reset
2024-10-04 09:30:05 +00:00
07a0718775 zsh: reset terminal mode on every prompt to prevent broken applications from breaking my input 2024-10-04 09:29:01 +00:00
705a7a83b1 fs: overwrite symlinks/data on deploy 2024-10-04 09:26:50 +00:00
c290358cad feeds: remove the useless super-package: feeds can just be an ordinary attrset 2024-10-04 04:56:20 +00:00
6020aeb9cc updateScripts: fix to work with package names that contain slashes 2024-10-04 04:55:22 +00:00
5f2d080453 nixpkgs-bootstrap: grab procs cross fix from upstream nixpkgs PR 2024-10-04 03:42:18 +00:00
3b8fc63e87 nixpkgs-bootstrap: 24.05-unstable-2024-10-02 -> 0-unstable-2024-10-03 2024-10-04 03:20:15 +00:00
a3721ac300 uassets: 0-unstable-2024-10-02 -> 0-unstable-2024-10-03 2024-10-04 03:20:01 +00:00
75aee6a4b6 firefox-extensions.ublock-origin: 1.60.1b1 -> 1.60.1b2 2024-10-04 03:19:45 +00:00
73b0a9fd88 nixpkgs-bootstrap: BETTER updateScript fix 2024-10-03 17:26:54 +00:00
69c29f5089 nixpkgs-bootstrap: fix so nix-update-script can actually substitute the hashes 2024-10-03 13:01:26 +00:00
588fc12bdf sm64coopdx: acquire from upstream nixpkgs PR 2024-10-03 12:39:39 +00:00
083dcd03f7 refactor so that my update scripts can apply to the nixpkgs bootstrap 2024-10-03 12:19:27 +00:00
16ded395fd nixpkgs: annotate with recurseIntoAttrs to aid tools like my updater 2024-10-03 11:33:44 +00:00
30543db25a kaiteki: remove
flutter.mkFlutterApp doesn't even exist anymore
2024-10-03 11:29:40 +00:00
3b5040c641 nixpkgs: update STAGING/STAGING-NEXT: 24.05-unstable-2024-10-02 -> 24.05-unstable-2024-10-03
don't actually bump master yet, because there's too much to rebuild.
most importantly, this just gets the different branches all actually
back on different commits so i can update them with the update script.
2024-10-03 11:19:09 +00:00
9a52c8686c refactor: nixpkgs/list.nix -> nixpkgs/patches.nix 2024-10-03 11:14:38 +00:00
5b4cb2c387 programs: ship procs 2024-10-03 11:13:41 +00:00
4815e4858c nixpkgs: apply patch to fix procs cross compilation 2024-10-03 11:13:34 +00:00
614a323d7f nixpkgs: fix to actually plumb variant where it was meant to go 2024-10-03 10:42:15 +00:00
801a1075a0 move rk818-charger out of pkgs/additional 2024-10-03 09:46:35 +00:00
e2662e0f20 pkgs: move another batch of pkgs to by-name
this set of packages are ones i've long had disabled, so this actually also adds them back in scope
2024-10-03 09:37:58 +00:00
0d4a5ab940 fluffychat-moby: remove
i haven't used it for years, it doesn't cross compile
2024-10-03 09:35:14 +00:00
a36c12712e refactor: remove gpodder-adaptive-configured alias from toplevel packages 2024-10-03 09:33:00 +00:00
474e37d1e4 pkgs/nixpkgs: move to by-name 2024-10-03 09:30:34 +00:00
141ce4be3d port (most of the) pkgs overlay to nixpkgs by-name style 2024-10-03 07:28:58 +00:00
6e9c7a21eb pkgs/patched: remove
ibus upstreamed to nixpkgs, in PR: <https://github.com/NixOS/nixpkgs/pull/346076>

the others are simple enough i can recreate them if ever needed
2024-10-03 05:21:10 +00:00
da19374044 docs: update references to s6-rc (now using systemd) 2024-10-03 03:36:38 +00:00
0f12c45aa6 swaync: port s6 -> systemd 2024-10-03 03:36:38 +00:00
0744237c13 programs: fix most service invokers (sway, nwg-panel, etc) to use systemd 2024-10-03 03:20:05 +00:00
9991518a64 feeds: unsubscribe from ColdFusion + B1M 2024-10-03 03:00:34 +00:00
45b2d6fdf9 feeds: subscribe to Adam Savage YT channel 2024-10-03 02:59:42 +00:00
198f6a1836 feeds: fix \u2019 -> ' encoding in feed fields 2024-10-03 02:58:13 +00:00
1a2ef5e660 browserpass: move from pkgs/patched -> hosts/common/programs/firefox 2024-10-02 17:45:19 +00:00
89d36bacf6 programs/firefox: refactor the extensions to leverage sane.programs (and, in the future, sandboxing) 2024-10-02 17:39:58 +00:00
a668da3c2e firefox: comment out a few extensions i never use 2024-10-02 16:58:59 +00:00
b7f3267102 uassets: 0-unstable-2024-09-27 -> 0-unstable-2024-10-02 2024-10-02 16:30:59 +00:00
d9c2415318 sops-nix: assets-unstable-2024-09-27 -> assets-unstable-2024-09-30 2024-10-02 16:30:44 +00:00
39ace53760 nixpkgs-wayland: 0-unstable-2024-09-27 -> 0-unstable-2024-10-01 2024-10-02 16:30:27 +00:00
ead19dfd84 firefox-extensions.ether-metamask: 11.16.16 -> 12.3.1 2024-10-02 16:01:21 +00:00
e35278e7a8 firefox.extensions.ublock-origin: 1.58.1b12 -> 1.60.1b1 2024-10-02 16:01:06 +00:00
07e33af8e2 firefox-extensions.sponsorblock: 5.7 -> 5.9.4
now will you please stop nagging me to update
2024-10-02 16:00:42 +00:00
d7293219ee firefox: suport passff as an addon
though i don't yet have it wired to my password store
2024-10-02 15:59:31 +00:00
df972d7b9c refactor: firefox: split out an option for nativeMessagingHosts 2024-10-02 15:58:54 +00:00
976946541e firefox-extensions: fix update scripts 2024-10-02 15:55:15 +00:00
606c56036a programs/firefox: remove some dead code 2024-10-02 15:29:46 +00:00
78346cccaf passff: init at 1.20.1 2024-10-02 15:28:31 +00:00
ceb0d02efe nixpkgs: 24.05-unstable-2024-09-28 -> 24.05-unstable-2024-10-02 2024-10-02 15:06:47 +00:00
0710419495 programs/assorted: remove programs i havent used in too long 2024-10-02 14:56:38 +00:00
25bba7d73f visidata: remove unnecessary patching 2024-10-02 14:48:08 +00:00
c672c46034 nwg-panel: remove outdated cross-compilation fixes 2024-10-02 14:32:02 +00:00
1315f93471 users: dont restart systemd services on activation
i can see why this would be desired... but unless i plumb a way to selectively disable it, i'd prefer to disable it by default
2024-10-02 14:30:44 +00:00
47e093fc06 playerctl: lift patch to only the place its needed 2024-10-02 14:28:37 +00:00
8f5835b814 todo.md: add note about services being restarted on deploy 2024-10-02 13:54:01 +00:00
fa4ff32ba7 todo.md: remove s6 and sops items (no longer relevant) 2024-10-02 13:49:59 +00:00
0b70948d08 feeds: unsubscribe from Byrne Hobart 2024-10-02 13:44:56 +00:00
dc4e86213d firefox: bookmarks: remove the date/time fields 2024-10-02 13:31:49 +00:00
484a177e5c firefox: add GitHub search bookmark 2024-10-02 13:10:20 +00:00
c8de203198 browserpass/sops-gpg-adapter: remove dead code "sane-secrets-unlock"
i don't give firefox access to ~/.ssh, so this wasn't doing anything
2024-10-02 12:32:16 +00:00
b532189b2f overlays/preferences: remove overrides which are no longer needed/wanted 2024-10-02 12:28:52 +00:00
ff7d1639c9 pkgs: remove no-longer-needed clightning patch 2024-10-02 12:17:16 +00:00
5884ecde42 fix scripts/update to not fail because of linuxPackages 2024-10-02 12:08:44 +00:00
695e639fc9 git: add an alias for "git reset --hard HEAD" 2024-10-02 11:56:58 +00:00
cf33b0e244 rk818-charger: dont ship clk-rk808, rk808-regulator, rk8xx-spi since the mainline versions work fine 2024-10-02 11:51:07 +00:00
d0cd8ed691 moby: kernel: build the in-tree MFD_RK8XX, just plumb it so nixos doesnt complain about conflicting module suppliers 2024-10-02 11:51:07 +00:00
16d31669d1 yt-dlp: add a bandwidth limit when considering the preferred stream 2024-10-02 10:18:30 +00:00
69ae2df933 moby: add rk818_{battery,charger} to boot.kernelModules
with this they're loaded on boot and now i actually do get capacity info
2024-10-02 08:22:54 +00:00
80b3016363 moby: deploy my rk818-charger kernel module
it needs to be manually probed, but after that i *do* get current measurement, just no capacity
2024-10-02 01:29:04 +00:00
881aec85c4 rk818-charger: add clk-rk808 and rk808-regulator modules, unchanged from upstream
i'm not a fan of this approach: i should just build the mainline kernel all modules, then remove the ones i want to replace
2024-10-02 01:04:33 +00:00
936b197d03 moby: fix kernel/modules to be in a bootable state
probably i actually can enable myt rk818-charger now that i have the right modules in initrd, but this commit serves as a known-good checkpoint
2024-10-02 00:44:25 +00:00
4ff0bf7cde pkgs: stop patching helix, pasta, firefox-unwrapped at the global scope
these patches could be re-applied if needed, via `sane.programs`.
if i remove my other patches, then i can migrate `pkgs/additional/` to
just `pkgs/`
2024-10-02 00:24:40 +00:00
99285c5911 picocom: fix cross compilation 2024-10-02 00:22:01 +00:00
34f0bc529b programs: ship picocom 2024-10-02 00:01:34 +00:00
2b85563b65 rk818-charger: import rk8xx-spi from mainline 2024-10-01 23:30:46 +00:00
d00e26c044 plumb rk818-charger module into the moby config 2024-10-01 15:08:56 +00:00
6f38c7847f SPECULATIVE: moby: build kernel with MFD_RK8XXX_* as a module instead of as builtin 2024-10-01 13:06:10 +00:00
a641dc6e39 rk818-charger: update rk8xx-{core,i2c}.c with patches from megi's kernel tree that add compat to rk818 2024-10-01 12:59:24 +00:00
2a4cbcf327 rk818-charger: import rk8xx-{core,i2c}.c from mainline (6.11) linux 2024-10-01 12:44:51 +00:00
dbd914b58f rk818-charger: init at 0.1 (WIP)
this doesn't build yet.
i'll also need to import the patched mfd driver.
2024-10-01 12:29:00 +00:00
caabf1421b bt/wifi: switch back to sane.fs; fix so WiFi creds are available before NetworkManager starts 2024-10-01 11:21:45 +00:00
b56aae444d MASSIVELY reduce eval time for cross-compiled hosts (i.e. moby)
moby eval time is reduced from ~3m to 17s
2024-10-01 09:54:33 +00:00
31aeaf8f35 modules/programs: remove programs whose packages no longer exist 2024-10-01 09:49:16 +00:00
8795212c67 programs: discord: lift to own file 2024-10-01 05:45:28 +00:00
c7abda9393 impure.nix: add new pseudohosts: baseline-{aarch64,x86_64}
immediately apparent is that the config takes 4x as long to eval on cross than on native, regardless of anything else
2024-10-01 04:38:50 +00:00
044bf8b783 refactor: remove dead modules/lib/fs.nix file 2024-10-01 03:55:29 +00:00
61df81291b refactor: optimize eval time
lifting `let` bindings up where possible helps reduce the number of thunks nix has to allocate. this patch only does that by 0.3%-ish, though
2024-10-01 03:54:44 +00:00
80c67caf19 modules/fs: remove unused symlink.targetName option 2024-09-30 15:18:32 +00:00
1eea81c4ff refactor: sane.fs: lift acl up to the toplevel; drop generated options 2024-09-30 15:15:30 +00:00
97d38aecab feeds: subscribe to timclicks.dev 2024-09-30 15:00:45 +00:00
3114b56f41 yt-dlp: fix video sort argument 2024-09-30 13:55:48 +00:00
894e2ad13a ntfy-sh: dont ship the desktop component either 2024-09-30 11:44:29 +00:00
cf4f232b30 goaccess: disable 2024-09-30 11:34:43 +00:00
a568f1273c ntfy-sh: disable 2024-09-30 11:34:34 +00:00
e88e693026 komga: disable 2024-09-30 11:14:35 +00:00
01363bf2e0 rsync: move from console packages to sysadmin package 2024-09-30 10:40:22 +00:00
e29842aa9d sane.fs: simplify 2024-09-30 10:19:39 +00:00
50c52683ff sane.fs: remove unused mount.mountConfig, mount.unitConfig options 2024-09-30 10:19:39 +00:00
ca85dac4ac sane.fs: make bind a required sub-option of mount 2024-09-30 10:19:39 +00:00
e52f57f5a2 sane.fs: remove unused mount.depends 2024-09-30 10:19:39 +00:00
49b5da6385 sane.fs: dont generate systemd services for every file/dir/symlink
that's handled by systemd-tmpfiles now
2024-09-30 10:19:39 +00:00
572dd5854d WIP: sane.fs: remove wantedBy/wantedBeforeBy options 2024-09-30 10:19:39 +00:00
0c270fe4a3 WIP: sane.fs consumers: avoid wantedBy/wantedBeforeBy 2024-09-30 10:19:39 +00:00
fb85b62d04 prosody: populate /etc/* using environment.etc 2024-09-30 10:19:39 +00:00
48c81610a5 sane.fs: remove public access to the "unit" fields
fs entries soon won't correspond to systemd units, and hence that option's a bit nonsensical
2024-09-30 09:10:40 +00:00
e7cf14cc4c /var/lib/systemd/backlight: persist using ordinary symlink-based approach
it works, at least on lappy
2024-09-30 05:44:42 +00:00
6983dbe8c4 sane.fs: fix so my tmpfiles.d always runs before anything else (like e.g. /var/lib stuff) 2024-09-30 05:44:42 +00:00
c71d2c846c sane.fs: symlink files into place using systemd.tmpfiles 2024-09-30 05:43:51 +00:00
3ae8e1feb0 postgres: upgrade database 15 -> 16 2024-09-30 05:43:27 +00:00
d091a016aa nit: cross: lift gnome-settings-daemon up to the toplevel (as nixpkgs has done), and comment it out since it doesnt build anymore 2024-09-29 15:54:05 +00:00
4035aae777 nit: syshud: format 2024-09-29 15:14:53 +00:00
b8824ed332 nixpkgs: nit: tweak fetchpatch source ordering to prefer the most upstreamed source 2024-09-29 15:14:41 +00:00
fa778dba76 nixpkgs: push libpeas2/libjxl patches upstream 2024-09-29 15:13:59 +00:00
f3de4c5da3 cross: libpeas2: proper build fix, and work toward upstreaming 2024-09-29 13:55:44 +00:00
c9d5d3eeca refactor: modules/users: dont hardcode $HOME 2024-09-29 07:17:00 +00:00
6d6f29293c hosts/common/fs: remoteServo: remove use of sane.fs.*.mount
part of an effort to simplify sane.fs
2024-09-29 01:57:22 +00:00
3cbb45fa4c hosts/common/fs: remoteHome: remove use of sane.fs.*.mount
part of an effort to simplify sane.fs
2024-09-29 01:52:34 +00:00
c44b5240d1 cross: replace xdg-desktop-portal-gnome with an upstreamable libjxl fix 2024-09-29 00:41:24 +00:00
66d9957173 nixpkgs: remove upstreamed xdg-desktop-portal cross compilation patch 2024-09-28 23:35:03 +00:00
823d607867 programs: use extended ${var} variable expansion in command expressions to satisfy systemd 2024-09-28 22:07:32 +00:00
22f67ac624 nixpkgs: 24.05-unstable-2024-09-27 -> 24.05-unstable-2024-09-28 2024-09-28 21:31:50 +00:00
5857bdcc81 persist: remove the unused "initrd" store 2024-09-28 14:25:40 +00:00
8fb74594c9 todo.md: replace unl0kr with buffyboard 2024-09-28 14:25:40 +00:00
995db12ec4 seatd: declare the runtime dir with systemd.tmpfiles instead of sane.fs 2024-09-28 14:25:40 +00:00
75a8614ae8 sanebox: remove symlink-cache
i don't use sanebox anymore, and the cache was awful while it did exist, so just delete that
2024-09-28 14:25:40 +00:00
30fd53803f derived-secrets: remove 2024-09-28 14:25:40 +00:00
0a3a60ab38 servo: port coturn shared secret to sops
NOW i can delete derived-secrets
2024-09-28 14:25:40 +00:00
9bd80447f6 wg-home: port away from derived-secrets
and now i can kill derived secrets?
2024-09-28 14:25:40 +00:00
d7c26b736c remove all users of sane.fs.*.generated (except derived-secrets, that comes later)
this will allow me to reduce the scope of sane.fs, and then optimize it to not create a systemd service per each entry
2024-09-28 14:25:40 +00:00
2c1857793f servo/fs: remove swapDevices comment 2024-09-28 10:49:35 +00:00
74469457eb scripts/check-uninsane: remove legacy zfs test
i don't use zfs anymore
2024-09-28 10:48:16 +00:00
08fc90bd53 refactor: lemmy: fewer file-level inherits 2024-09-28 09:57:35 +00:00
8145435445 static-nix-shell: fix lints 2024-09-28 09:56:58 +00:00
aa7e1dfd33 refactor: modules/data/feeds: fewer file-level inherits 2024-09-28 09:55:12 +00:00
09cd3ec2a5 refactor: hosts/modules/roles/dev-machine: fewer file-level inherits 2024-09-28 09:53:59 +00:00
674699bf05 refactor: hosts/common/programs/zeal: fewer file-level inherits 2024-09-28 09:53:04 +00:00
911e03fcb4 refactor: hosts/modules: fewer file-level inherits 2024-09-28 09:51:17 +00:00
a1c2078166 refactor: hosts/modules/roles: fewer file-level inherits 2024-09-28 09:48:32 +00:00
06629a5921 refactor: roles/client: remove unused module args 2024-09-28 09:46:41 +00:00
ccee8ae8f7 todo.md: remove pkgs.impure-cached item (use pkgsCCache) 2024-09-28 08:55:20 +00:00
09c9b74350 unl0kr: delay start until after the framebuffer appears 2024-09-28 07:42:37 +00:00
423d7a2201 wine: disable sandboxing 2024-09-28 07:02:27 +00:00
5fa39f871c nixpkgs: 24.05-unstable-2024-09-21 -> 24.05-unstable-2024-09-27 2024-09-28 03:44:33 +00:00
b0132c9694 nixpkgs-wayland: 0-unstable-2024-09-21 -> 0-unstable-2024-09-27 2024-09-28 03:43:55 +00:00
71e812bfbf syshud: 0-unstable-2024-09-15 -> 0-unstable-2024-09-26 2024-09-28 03:43:41 +00:00
52707c82d4 sops-nix: assets-unstable-2024-09-16 -> assets-unstable-2024-09-27 2024-09-28 03:43:29 +00:00
d2ac1892cb uassets: 0-unstable-2024-09-21 -> 0-unstable-2024-09-27 2024-09-28 03:43:16 +00:00
138f435b38 signal-desktop-from-src: 7.18.0 -> 7.26.0 2024-09-28 03:43:01 +00:00
d073250032 users: switch to systemd services by default 2024-09-28 03:38:46 +00:00
edb665abd0 users: add a systemd backend for managing services 2024-09-28 03:38:46 +00:00
3bbec161bf servo: fix clightning service 2024-09-27 15:50:53 +00:00
d74164c455 moby: seal the initrd modules to just whats needed 2024-09-27 13:49:08 +00:00
4482414839 moby: remove unneeded goodix_ts from initrd 2024-09-27 13:42:06 +00:00
d70415d5fe moby: remove unneeded gpu_sched from initrd 2024-09-27 13:35:36 +00:00
8ebd612ec6 moby: remove unneeded dw_wdt from initrd 2024-09-27 13:28:06 +00:00
ebb57de4fa moby: remove unneeded rockchip_dfi from initrd 2024-09-27 13:12:31 +00:00
ccb90463f7 moby: remove unneeded rockchip_thermal from initrd 2024-09-27 13:08:51 +00:00
34153465d4 moby: remove unneeded rockchip_saradc from initrd 2024-09-27 13:02:22 +00:00
28aa84f719 moby: remove unneeded pwm_rockchip from initrd 2024-09-27 12:55:59 +00:00
3b49ec9087 moby: remove fusb302 module from initrd
it's not needed for early graphics
2024-09-27 12:50:50 +00:00
f71a28ea89 moby: remove some more modules from the initrd
i still get early graphics
2024-09-27 12:45:29 +00:00
86f8f874ac moby: try to fix the battery devicetree overlay, but i still dont see any /sys fs node for it... 2024-09-27 12:30:49 +00:00
4c3a843b05 moby: remove a few more modules from initrd
still get initrd graphics, yay
2024-09-27 12:30:49 +00:00
cdce083050 moby: remove some more modules from the initrd
it still boots, to graphics and net, though i didn't test the serial out
2024-09-27 12:12:48 +00:00
557f8f343d moby: remove some more kernel modules from the initrd
i still get early display, and serial output
2024-09-27 11:56:45 +00:00
ef9016c1de moby: fix the lradc threshold so that volume-down actually triggers 2024-09-27 11:48:12 +00:00
faa5742ca3 linux-sane-pinephonepro: remove DRM-related overrides, not necessary for boot/graphics 2024-09-27 11:32:13 +00:00
2f49f0a2cf dtc: fix sandboxing 2024-09-27 10:46:36 +00:00
518180fd61 moby: remove a bunch of kernel modules from the initrd 2024-09-27 10:45:15 +00:00
0ee20fb3ad moby: define a DeviceTree Overlay for the battery
it compiles, and /sys/firmware/fdt shows that it was merged, but this seems not enough to actually get a battery readout
2024-09-27 10:44:57 +00:00
9558cbd6b2 moby: reduce the initrd module closure
i can probably reduce *much* further; it's nice to keep graphics in the initrd though, which i don't think i had when using just the pmOS modules
2024-09-27 09:15:15 +00:00
dcbce37ded refactor: hal: place pine64-pinephone-pro into own subdirectory 2024-09-27 08:50:47 +00:00
d4a9df38b7 WIP: moby: slim down the kernel config so that it fits within the 63.5 MiB u-boot limit 2024-09-27 08:47:01 +00:00
7b638b5ab8 moby: don't ship a massive initrd; measure the modules i load at boot and ship only those.
the massive initrd proved to have problems with e.g. wireless driver failing to load its firmware
2024-09-27 06:18:37 +00:00
06b53fbb87 moby: bump bootloader config limit from 8 -> 10 2024-09-27 03:37:47 +00:00
e93680c336 WIP: moby: include module blacklists in the initrd
i don't know if this fixes things; i was seeing net connectivity issues where the broadcom wlan fails to probe
2024-09-27 03:26:14 +00:00
60c2914c09 linux-megous: expose all the patches as one series 2024-09-26 11:03:03 +00:00
0546384ccd moby: ship kernel modules not as builtins but actually as modules, and place *all* of them in the initrd
somehow this actually works. even on stock u-boot: the kernel is 30-something MiB, the compressed initrd about 110 MiB decompressed to 250MiB
2024-09-26 10:01:25 +00:00
3b573b8653 moby: remove most kernel config overrides
PPP still boots -- but only using my patched u-boot.
stock u-boot will fail to load it, because its slightly greater than
the limit of 63.5 MiB.
2024-09-26 07:40:49 +00:00
9aebaba1d6 moby: kernel: optimize for size
u-boot has a 63.5 MiB limitation on the kernel size, it seems, and that's probably all or most of the issues i was hitting with kernel config
2024-09-26 06:53:45 +00:00
4c554e54c7 u-boot-pinephone-pro: tune UART & memory addresses 2024-09-26 05:54:14 +00:00
0a7606231d WIP: moby: hack an impure kernel for faster dev cycles 2024-09-26 02:39:21 +00:00
afe949be05 moby: drop CMA_SIZE_MBYTES kernel override
now that i'm building a size-optimized image, this WORKS
2024-09-26 01:43:24 +00:00
20265a899b moby: optimize kernels for size
this is REQUIRED for future kernel changes i plan: u-boot has limitations on the kernel size it can load
2024-09-26 01:42:35 +00:00
3de9465de9 moby: drop AUXDISPLAY & related kernel overrides
PPP still boots
2024-09-25 16:55:04 +00:00
94f09de863 moby: kernel: remove config options which are already defaults
that is, this should not trigger any rebuilds
2024-09-25 16:55:04 +00:00
8d3877bbb9 moby: kernel: clarify that at least one of the NO_HZ_IDLE-related kernel configs is required for boot
does not boot when these are removed
2024-09-25 16:55:04 +00:00
74a5b8f963 moby: disable NR_CPUS & related kernel overrides
PPP still boots.
2024-09-25 16:55:04 +00:00
9641676da2 moby: try (but fail) to drop some kernel configs
this re-applies the following commits from before autoModules=true, but commented out:
- 9ad0b8f45a127572970d3decf3f0532df3fba021
- de98898c2ebb30c189063626241f19aa792da9d8
2024-09-25 16:55:04 +00:00
585ad13c68 moby: try (and fail) to drop some more kernel configs
this re-applies the following commits from before autoModules=true, commented out:
- 217adc2b47e5de74726c6e3055f1b4421de071fa
- 6b84e9959458948bc33284e64aa0453a2ae949ca
2024-09-25 16:55:04 +00:00
25b9644f4e moby: try (and fail) to reduce kernel config
this reapplies the following commits from before `autoModules=true`, but commented out:
- fa0508521995f4510ee4e08f9d1eb086eb64f707
- 513c4b1aa0e2800ea1d867ec158510bb56fac794
2024-09-25 16:55:04 +00:00
19d15eef8d moby: try (but fail) to remove a few kernel configs, mark them required instead
this is a re-application of the following commits, but against the
autoModules + no-pmos kernel:

- ee4068718bf72e8072d81697eba07cdd9008cc82
- 95be7fc4cb4ca38b2396428999d531c508f2bb95
- 278b6ec804cec470d82ef288f5783f7a0afa748d
- 2737688cae5a735099ab4fc7f77a1cb8f841beef
2024-09-25 16:55:04 +00:00
27358915e9 moby: try (but fail) to disable some kernel configs
this is a re-application of the following commits, but against the
autoModules + no-pmos kernel:

- 387d9df23b1fc7649f2c85182c41c800a0d15313
- 4d42ca2a2b77d677c12800e963d6378499ba9c68
2024-09-25 16:55:04 +00:00
97bce7e39b moby: kernel: drop pmos config
PPP still boots
2024-09-25 16:55:04 +00:00
2e3e950b29 moby: deploy kernel with autoModules = true
this requires re-introducing some kernel config overrides i was using earlier.
hopefully they can be reduced effectively, again.
2024-09-25 16:55:04 +00:00
63c2d83fb0 u-boot-pinephone-pro: add instructions for how to install to SD card 2024-09-25 16:53:33 +00:00
6d0a2d63fc users: make the service manager partly configurable 2024-09-25 15:39:57 +00:00
a2e709b940 u-boot-pinephone-pro: init 2024-09-25 14:54:21 +00:00
264297af7a linux-megous: import all commits relative to 6.11.0
this includes some massive stuff for e.g. the WiFi driver. if the size of that patch causes anyone issues let me know and i'll delete it / work around it
2024-09-25 13:31:22 +00:00
872d662716 linux-megous: orange-pi-6.9-20240721-2345 -> orange-pi-6.11-20240915-2344
this builds, but i did not deploy
2024-09-25 13:31:22 +00:00
7c37b10332 scripts/deploy: allow omitting the "host" argument 2024-09-25 13:31:22 +00:00
693251d901 moby: kernel: note that PRINTK_INDEX=n is required for boot 2024-09-25 13:31:22 +00:00
9d5174077e yt-dlp: move config to recommended location 2024-09-25 13:31:22 +00:00
19ef5ff32a moby: kernel: note that IO_STRICT_DEVMEM is required for boot 2024-09-25 13:31:22 +00:00
7e3e89778d moby: drop CRASH_DUMP kernel override
PPP still boots.
2024-09-25 13:31:22 +00:00
f3f162f87a moby: drop HOTPLUG_PCI_PCIE=n kernel override
PPP still boots.
2024-09-25 13:31:22 +00:00
00f9973a2c moby: drop RANDOM_KMALLOC_CACHES=n kernel override
PPP still boots.
2024-09-25 13:31:22 +00:00
c6239e2501 moby: drop RUNTIME_TESTING_MENU kernel override
PPP still boots
2024-09-25 13:31:22 +00:00
aa1fa85706 moby: kernel: note that SHUFFLE_PAGE_ALLOCATOR=n is required for boot 2024-09-25 13:31:22 +00:00
e9084e6994 moby: note that RUNTIME_TESTING_MENU is likely optional, since removing both IO_STRICT_DEVMEM and PRINTK_INDEX breaks boot 2024-09-25 13:31:22 +00:00
6c089ccd55 moby: kernel: note that TRANSPARENT_HUGEPAGE_ALWAYS=y is required 2024-09-25 13:31:22 +00:00
a650261e47 moby: drop DRM_ACCEL kernel override
PPP still boots.
2024-09-25 13:31:22 +00:00
8b8a460045 moby: kernel: separate TRANSPARENT_HUGEPAGE_ALWAYS from the other options 2024-09-25 13:31:22 +00:00
df45fd1743 moby: kernel: remove extraneous PREEMPT-related options
this is a no-op change: the dropped option values are defaults from the remaining ones
2024-09-25 13:31:22 +00:00
0c6886eb59 moby: kernel: note that CONFIG_PREEMPT is required for boot AND so are the other options
though honestly i can't say why; the config diff is confusing
2024-09-25 13:31:22 +00:00
550d455607 moby: drop NR_CPUS kernel override
PPP still boots.
2024-09-25 13:31:22 +00:00
9e0ce1fc0c moby: kernel: clarify that something in the IO_STRICT_DEVMEM group is needed 2024-09-25 13:31:22 +00:00
c8f351e843 moby: note that either CRASH_DUMP or CRASH_RESERVE are required kernel options 2024-09-25 13:31:22 +00:00
71b9f3f3ec moby: remove KFENCE kernel override
PPP still boots.
2024-09-25 13:31:22 +00:00
1c040251e0 moby: drop BT_HCIUART_BCSP & related kernel overrides
PPP still boots.
2024-09-25 13:31:22 +00:00
81abe8c44d moby: drop NO_HZ_IDLE & related kernel overrides
PPP still boots
2024-09-25 13:31:22 +00:00
ca52382941 moby: note that the NR_CPUS kernel config group is separate from the others 2024-09-25 13:31:22 +00:00
508130132a moby: note that HOTPLUG_PCI_PCIE & related kernel config overrides are required to boot 2024-09-25 13:31:22 +00:00
d031a74583 moby: mark RANDOM_KMALLOC_CACHES & related kernel configs as required 2024-09-25 13:31:22 +00:00
6f1f3843b6 moby: note that CRASH_DUMP & other kernel configs are required for boot 2024-09-25 13:31:22 +00:00
388eebfc71 WIP: moby: drop ATH10K_DFS_CERTIFIED & related kernel configs 2024-09-25 13:31:22 +00:00
418cc7cfc2 moby: drop AUXDISPLAY & related kernel config overrides 2024-09-25 13:31:22 +00:00
397ca4cea8 moby: drop SOFTLOCKUP_DETECTOR_INTR_STORM & other kernel configs
PPP boots without these
2024-09-25 13:31:22 +00:00
b2bceb3d0c moby: kernel: clarify that NO_HZ_IDLE & co are needed for boot 2024-09-25 13:31:22 +00:00
99ab05a928 moby: note that ATH10K_DFS_CERTIFIED & co are required for boot 2024-09-25 13:31:22 +00:00
9f72c5ccb2 moby: note that PREEMPT kernel config options are *required* for boot 2024-09-25 13:31:22 +00:00
de6c5f2720 moby: remove kernel configs for CPUMASK_OFFSTACK & co
it boots
2024-09-25 13:31:22 +00:00
c631b134ac moby: kernel: remove commented out configs 2024-09-25 13:31:22 +00:00
52fa8eea2d moby: kernel: mark SYSFB_SIMPLEFB & co as required for boot 2024-09-25 13:31:22 +00:00
1d559bfd8f moby: mark NO_HZ_IDLE kernel optiosn & co as required for boot 2024-09-25 13:31:22 +00:00
635bde0403 moby: kernel config: properly remove HARDLOCKUP_DETECTOR patches & co
it should still boot
2024-09-25 13:31:22 +00:00
78cfb05c26 moby: remove kernel option USB_SERIAL & co
it still boots
2024-09-25 13:31:22 +00:00
77875d3d58 moby: remove kernel option HARDLOCKUP_DETECTOR & co
it boots... i'm pretty sure??
2024-09-25 13:31:22 +00:00
f9f9da3350 moby: remove INPUT_MATRIXKMAP kernel config patch & co
should still boot
2024-09-25 13:31:22 +00:00
0a04b60579 moby: reduce custom kernel options 2024-09-25 13:31:22 +00:00
56448529b2 moby: reduce custom kernel options 2024-09-25 13:31:22 +00:00
af66e6e6c6 moby: enable nixpkgs kernel options
it requires a lot of additional options before it actually boots: not
sure which ones here are critical.
2024-09-25 13:31:22 +00:00
7ae107d42a sane-input-handler: add PinePhone Pro power/volume buttons 2024-09-25 13:31:22 +00:00
45ad0d88d9 scripts/deploy: allow deploying to a specific IP address 2024-09-25 13:31:22 +00:00
522ad82f23 mpv: associate with facebook reels 2024-09-25 13:31:22 +00:00
a46e42a79b sftpgo: grant access to v. 2024-09-25 01:05:25 +00:00
17d96a8ca1 moby: ship a mainline kernel for the pinephone pro
not perfect, but it does boot
2024-09-23 04:30:03 +00:00
258fd5b4aa moby: port PinePhone -> PinePhone Pro
in the future i do hope to enable _both_ of these options, but that requires some serious effort on the kernel front (to build one kernel which can boot either device)
2024-09-23 04:30:03 +00:00
2379068b85 hal: add pine64-pinephone-pro hardware support 2024-09-23 04:30:03 +00:00
ff9a86041b hal: split aarch64 cross fixes into own file 2024-09-23 04:30:03 +00:00
b53581eef3 refactor: hal: rename pine64 -> pine64-pinephone
it turns out i'll likely need a pinephonepro HAL as well
2024-09-23 02:06:33 +00:00
b9ce182ede powersupply: ship 2024-09-23 01:47:16 +00:00
af6eaf687d linux-postmarketos-pinephone-pro: init at 6.6.0 2024-09-23 01:42:23 +00:00
cc30673c10 mmcli: temporarily revert bunpen sandboxing 2024-09-22 01:05:53 +00:00
960f881cb4 millipixels: fix broken ref 2024-09-22 01:05:42 +00:00
2e78e9aa0c rsync-net: remove unused sanebox dependency 2024-09-21 23:41:21 +00:00
76583c49f4 UNTESTED: programs/assorted: switch every remaining bwrap sandboxed program over to the default (bunpen) 2024-09-21 23:35:46 +00:00
31615340a7 programs/assorted: remove explicit (and extraneous) sandbox.method = "bunpen" declarations 2024-09-21 23:35:06 +00:00
4868fbb82c UNTESTED: assorted: add sandbox.tryKeepUsers to programs which appear to need capabilities 2024-09-21 23:01:41 +00:00
ea3eaf048e programs: sandbox with bunpen *by default*; manually opt out or opt to a different sandboxer where required 2024-09-21 23:00:49 +00:00
b4662c838e megapixels-next: sandbox 2024-09-21 22:32:11 +00:00
b113d98ab5 todo.md: add a note for nmcli sandboxing 2024-09-21 22:19:14 +00:00
4f28d11bfa networkmanager_dmenu: sandbox with bunpen (NOTE: BROKEN)
this is as broken as the bwrap sandboxing: it can see the current connection, but can't adjust it. i believe this is because of faulty NetworkManager sandboxing (e.g. nmcli has similar issues)
2024-09-21 22:18:07 +00:00
2d5d685607 feedbackd: sandbox with bunpen 2024-09-21 22:12:51 +00:00
ded7aeffd8 callaudiod: sandbox with bunpen 2024-09-21 22:12:26 +00:00
b7576029bf xdg-desktop-portal-wlr: sandbox with bunpen 2024-09-21 22:05:05 +00:00
fc79093245 tuba: sandbox with bunpen 2024-09-21 22:04:19 +00:00
9cac849917 ffmpeg: sandbox with bunpen 2024-09-21 22:02:13 +00:00
e55cf14e99 gawk: sandbox with bunpen 2024-09-21 22:01:32 +00:00
76ea30ada9 mesa-demos: sandbox with bunpen 2024-09-21 21:59:31 +00:00
bf9c664d03 seahorse: sandbox with bunpen 2024-09-21 21:58:42 +00:00
a770ac7c78 nixpkgs: 24.05-unstable-2024-09-17 -> 24.05-unstable-2024-09-21 2024-09-21 20:23:41 +00:00
68f1dae946 nixpkgs-wayland: 0-unstable-2024-09-17 -> 0-unstable-2024-09-21 2024-09-21 20:23:27 +00:00
282b9d041b uassets: 0-unstable-2024-09-19 -> 0-unstable-2024-09-21 2024-09-21 20:20:57 +00:00
e8b957a4dc megapixels-next: make it the default camera 2024-09-21 12:58:06 +00:00
1501c99016 sane-vpn: port to bunpen 2024-09-21 12:48:31 +00:00
b1763ccd02 todo.md: sync 2024-09-21 12:33:45 +00:00
7cf5aa4732 hosts/all: remove the zfs kernel pin 2024-09-21 12:30:44 +00:00
66f829492c servo: replace zfs pool with a btrfs pool 2024-09-21 12:27:08 +00:00
821855651d gnome-calls: sandbox with bunpen 2024-09-21 12:23:33 +00:00
606be197db nicotine-plus: sandbox with bunpen 2024-09-21 12:23:21 +00:00
208b634040 programs/sandboxing: add required args to use pasta 2024-09-21 12:21:11 +00:00
224b298cda bunpen: tighter sequencing around pasta net proxying 2024-09-21 11:52:13 +00:00
29975ce787 remove custom eg25-manager and use nixpkgs upstream instead 2024-09-21 08:33:15 +00:00
90d48849cc mpv: replace "blast-to-default" with "sane-cast"
i could kill 'blast-to-default' altogether now, but i may hold off until i'm more certain this works
2024-09-21 08:30:01 +00:00
9a4635c93b sane-cast: support casting audio 2024-09-21 08:29:23 +00:00
f7b4e5ba98 pipewire: create a "effect_input.virtual" node which can become the "blast" audio source in the future 2024-09-21 07:38:05 +00:00
84c4dcb9d1 blast-ugjka: format with nixfmt 2024-09-21 06:37:31 +00:00
3dff60397e bunpen: get pasta working
full of race conditions and weird edge cases (some of which may have existed before)
2024-09-21 03:40:26 +00:00
b105e774b3 btrfs-progs: fix sandboxing 2024-09-21 01:56:56 +00:00
e9d3623a97 firefox: add search shortcut for ArchLinux wiki 2024-09-21 00:14:34 +00:00
a9472a14f2 bunpen: restore /proc access in PID-namespaced applications 2024-09-20 23:15:05 +00:00
a2abe159a4 bunpen: tests: ensure that --bunpen-keep-net actually does something 2024-09-20 22:50:24 +00:00
0546bf6ea5 bunpen: barebones pasta integration
totally untested, except that it builds
2024-09-20 12:41:39 +00:00
d22bbcf44a bunpen: refactor: be more organized with how we shed resources 2024-09-20 11:51:53 +00:00
e6803d6068 bunpen: refactor: split mount_ns into own file 2024-09-20 11:22:10 +00:00
3993f26cc6 bunpen: move restrict::namespace_restrict -> restrict::ns::namespace_restrict 2024-09-20 11:18:02 +00:00
f6a93e120a yt-dlp: fix that downloaded files have ordinary mtimes 2024-09-20 11:02:11 +00:00
b3a6656c81 moby: linux-armbian: remove an unnecessary HDMI-sound patch 2024-09-20 10:12:21 +00:00
a4a43d24dc eg25-control: fix missing sandbox path 2024-09-20 10:11:46 +00:00
ec144ae63b eg25-control: fix build 2024-09-20 10:11:46 +00:00
145c65b66b linux-armbian: enable patches necessary to boot the modem (with eg25-manager, or soon, eg25-control) 2024-09-20 10:11:46 +00:00
dfad5d596d eg25-control: fix power-down sequence 2024-09-20 10:11:09 +00:00
ee083b1b8f eg25-control: slightly more robust power-down codepath (i suspect it's still broken though) 2024-09-20 09:40:04 +00:00
f1d05af377 eg25-control: support power-on/off via GPIO control instead of modem-power 2024-09-20 08:07:15 +00:00
c81a6f51e2 eg25-control: split out a Phy abstraction behind which to hide megi's modem-power API 2024-09-20 08:07:15 +00:00
8559de949e python3-repl: ship libgpiod 2024-09-20 04:19:54 +00:00
8979ff0eec bunpen: plumb pasta related arguments into make-sandboxed
for testing only: these options don't yet have the intended effect
2024-09-19 23:54:43 +00:00
2a4043523d bunpen: plumb pasta CLI options up through main 2024-09-19 23:52:07 +00:00
bf53ab1cb1 bunpen: parse net CLI switches 2024-09-19 23:35:05 +00:00
381641b2db eg25-manager: actually ship udev rules (?) 2024-09-19 23:25:59 +00:00
1cc809b347 avahi: sandbox with bunpen 2024-09-19 23:10:28 +00:00
9e74297acd eg25-manager: ship udev rules 2024-09-19 22:39:00 +00:00
51556eeefd readme: remove outdated mention of sxmo-utils 2024-09-19 19:46:32 +00:00
32d565fe77 uassets: 0-unstable-2024-09-17 -> 0-unstable-2024-09-19 2024-09-19 19:02:24 +00:00
0e4b38a163 Revert "mpv: uosc: remove package pin"
This reverts commit 03ebb3de28.

newer uosc is completely unresponsive to touch controls.
sliders (speed, position, and *possibly* volume) respond to touch,
but buttons like play/forward/previous/close/menu don't activate.
2024-09-19 11:01:49 +00:00
03ebb3de28 mpv: uosc: remove package pin
this is not thoroughly tested; may well be partly broken on moby
2024-09-19 10:40:02 +00:00
b034196ce4 eg25-manager: ship (but not yet integrated) 2024-09-19 10:06:39 +00:00
b0edd56ba2 activationScripts: cleanup the "nixos activated" graphical notification 2024-09-19 10:05:56 +00:00
717af4e5ff moby: clean up kernel config 2024-09-19 08:26:45 +00:00
3c660df817 moby: ship axp20x_adc as a kernel module, in initrd, instead of as a builtin
works: display
works: rear camera (megapixels-next)
works: torch / LED
works: speaker
works: headphones
untested: battery/charging
2024-09-19 08:26:45 +00:00
dc1999e7b2 moby: default the ARM64_LPA2 kernel option
works: display
works: rear camera (megapixels-next)
works: torch / LED
works: speaker
works: headphones
untested: battery/charging
2024-09-19 08:26:45 +00:00
e2698f02c6 moby: default AXP20X_POWER kernel config
works: display
works: rear camera (megapixels-next)
works: torch / LED
works: speaker
works: headphones
untested: battery/charging
2024-09-19 08:26:45 +00:00
3c863bc004 moby: default some more AXP20x kernel options
works: display
works: rear camera (megapixels-next)
works: torch / LED
works: speaker
works: headphones
untested: battery/charging
2024-09-19 08:26:45 +00:00
fec90421df moby: remove INPUT_AXP20X_PEK kernel config override
works: display
works: rear camera (megapixels-next)
works: speakers
works: headphones
works: microphone
works: torche / LED
2024-09-19 08:26:45 +00:00
1c5b9f1ede moby: re-disable LCD_CLASS_DEVICE, now that boot has been verified 2024-09-19 08:26:45 +00:00
4ea9698959 moby: remove REGULATOR_VCTRL kernel config override
works: display
works: rear camera (via megapixels-next)
works: torch / LED
works: speakers
works: headphones
untested: battery/charging
2024-09-19 08:26:45 +00:00
c6705be538 moby: disable another LCD-related kernel override (and temporarily re-enable SUN50I_IOMMU until tested)
working: display
UNTESTED: camera
UNTESTED: torch / LED
UNTESTED: speakers
UNTESTED: headphones
2024-09-19 08:26:45 +00:00
d8b9f58788 moby: disable CMA/DMABUF config options
works: display
works: torch / LED
works: rear camera (via megapixels-next)
works: speakers
works: headphones
2024-09-19 08:26:45 +00:00
378168776a moby: remove the device-tree related kernel options
works: display
works: rear camera (via megapixels-next)
works: torch
works: speakers
works: headphones
untested: battery/charging
2024-09-19 08:26:45 +00:00
f5a86956a9 moby: remove the DRM-related kernel config overrides 2024-09-19 08:26:45 +00:00
965ef91736 moby: remove a couple more custom kernel configs
also revert the previous commit, but that's a development artifact; not actually required.

works: display
works: rear camera (via megapixels-next)
works: torch / LED
works: speakers
works: headphones
2024-09-19 08:26:45 +00:00
791b96fa8f moby: switch DRM kernel options from builtin back to module
works: display
works: rear camera (via megapixels-next)
works: torch / LED
works: speakers
works: headphones
2024-09-19 08:26:45 +00:00
92626cd87d moby: disable a few more custom kernel config options
works: display
works: rear camera (megapixels-next)
works: speaker
works: headphones
works: torch / LED
2024-09-19 08:26:45 +00:00
09bbd9fd91 NOT FOR MERGE: moby: switch a few more kernel options back to their default
display: non-functional
2024-09-19 08:26:45 +00:00
9b07eebf6d moby: switch a few more kernel configs back to their default
works: display
works: rear camera (via megapixels-next)
works: speakers
works: headphones
works: torch / LED
untested: battery/charging
2024-09-19 08:26:45 +00:00
439ee43a5e moby: decrease custom kernel config
works: display
works: rear camera / megapixels-next
works: speaker
works: headphones
works: torch / LED
untested: battery / charging
2024-09-19 08:26:45 +00:00
e2a96a391f moby: reduce custom kernel configs
works: rear camera (megapixels-next)
works: speaker
works: headphones
works: camera flash
untested: battery/charging
2024-09-19 08:26:45 +00:00
6be3a8a245 moby: remove a few unnecessary kernel configs
camera: works (rear, in megapixels-next)
speakers: work
headphones: work
charging: untested (assume the USB-C port only powers the board, doesn't charge the battery)
2024-09-19 08:26:45 +00:00
7a3c550817 moby: remove pmos kernel config (and replace some m options with y to keep functionality)
graphics: works
rear camera: works (in megapixels-next)
speakers: work
headphones: work
battery: incapable of charging; battery current capped to below 0.
- i *think* this happened when i switched to "all" config, earlier.
2024-09-19 08:26:45 +00:00
7b72046bee moby: don't blacklist mainline gc2145
this doesn't enable the front camera in any app, but it doesn't break anything either
2024-09-19 08:26:45 +00:00
5500a7ffcc linux-armbian: enable withFullConfig
hope to disable pmos later, but for now that would kill graphics.

battery charging _may_ be capped such that the battery cannot charge
unless powered off. difficult to tell for certain.
2024-09-19 08:26:45 +00:00
e2cd92a356 cross: push xdg-desktop-portal build fix upstream 2024-09-19 08:26:45 +00:00
b1036896fe cross: push switchboard-plug-network patch upstream 2024-09-19 08:26:45 +00:00
e4ab6e2022 cross: remove a few upstreamed patches 2024-09-19 08:26:44 +00:00
631bd9998d nixpkgs: 24.05-unstable-2024-09-16 -> 24.05-unstable-2024-09-17 2024-09-19 08:26:44 +00:00
28d329855f nixpkgs-wayland: 0-unstable-2024-09-13 -> 0-unstable-2024-09-17 2024-09-19 08:26:44 +00:00
4d03d7a845 sops-nix: assets-unstable-2024-09-13 -> assets-unstable-2024-09-16 2024-09-19 08:26:44 +00:00
2f367c1247 syshud: 0-unstable-2024-09-10 -> 0-unstable-2024-09-15 2024-09-19 08:26:44 +00:00
ee62acab02 uassets: 0-unstable-2024-09-14 -> 0-unstable-2024-09-17 2024-09-19 08:26:44 +00:00
9efa3f8f86 moby: disable some inconsequential audio-related kernel patches
speaker: works.
headphones: works.
internal mic: works.
headphone mic: works.
2024-09-19 08:26:44 +00:00
7b57d62da6 moby: disable more kernel audio patches
speakers: works.
headphones: works.
headset mic: works.
builtin mic: works.
2024-09-19 08:26:44 +00:00
aa0ca7ed0e moby: remove more AC100 audio patches
speakers: work. headphones: work.
mic: untested.
2024-09-19 08:26:44 +00:00
c0347eb68a moby: disable the "analog" component of AC100 codec as well
speaker and headphones work; builtin and headphone mic work.
2024-09-19 08:26:44 +00:00
e5a1aeedac moby: disable digital part of AC100
speaker and headphone audio work. safe to deploy.
2024-09-19 08:26:44 +00:00
9108ecdf59 moby: enable speaker audio
tested: speaker, headphone, rear cam (via megapixels-next)

this is hopefully more patches than actually required.
2024-09-19 08:26:44 +00:00
1859cfc714 moby: kernel: disable unnecessary N_VBUSEN patch
still working: rear cam with megapixels-next, charging, headphone out
2024-09-19 08:26:44 +00:00
c8fca594ef linux-armbian: fixup patching logic for modem power (still doesnt apply against 6.11.0 though) 2024-09-19 08:26:44 +00:00
395ff01276 moby: linux-armbian: switch back to armbian's megous patches, since they're better tracked
functionality is identical to mobian's
2024-09-19 08:26:44 +00:00
13b38f523c linux-armbian: fix formatting 2024-09-19 08:26:44 +00:00
1dc18bca5f firefox: add a search shortcut for repology.org 2024-09-17 07:42:21 +00:00
e763673e75 moby: ship stock kernel 6.11 with a subset of mobian patches
this is enough for the rear camera to work in megapixels-next (NOT normal megapixels, and not snapshot or gnome-screenshot)

audio over 3.5mm works; but not over speakers. charging: unknown
2024-09-17 03:27:55 +00:00
034c3f987e programs/make-sandboxed: fix for apps which ship thumbnailers (i.e. gnome papers) 2024-09-17 02:33:51 +00:00
c15d068f39 linux-mobian: init 2024-09-17 02:33:08 +00:00
6ad53751a1 nixpkgs: 24.05-unstable-2024-09-14 -> 24.05-unstable-2024-09-16
i'll lose access to the pinephone camera for a while, since this bumps to linux 6.11. but i think i can take from mobian linux to restore that, using just devicetree changes
2024-09-17 02:04:12 +00:00
bcc6c773cb deploy gnome-screenshot, for camera testing 2024-09-17 02:02:24 +00:00
dfe3f39225 linux-armbian: show that i can build against the armbian patches
they don't achieve much; nothing noticable at all, actually
2024-09-17 02:02:02 +00:00
2bb4a3fec2 linux-armbian: -> 2024-09-16 2024-09-17 02:01:22 +00:00
a03a0fcefd moby: kernel: remove another extraneous patch (still the display isnt coming on though, nor does libcamera see any cams) 2024-09-16 22:59:20 +00:00
b41db547ec moby: kernel: re-enable build-time improvements and display config (the latter doesnt always work though) 2024-09-16 22:58:47 +00:00
6edc81d437 moby: kernel: build without full config again 2024-09-16 22:57:48 +00:00
6d8008ea5e UNTESTED: linux-armbian: patch so it builds against linux 6.11 2024-09-16 21:25:37 +00:00
2c932ed926 moby: stop overriding the armbian kernel
that'll be useful as a form of documentation in the future, but for now it's just hassle
2024-09-16 21:23:39 +00:00
4560bb9dda WIP: moby: also blacklist gc2145, for flexibility in running mainline kernel
i think mainline camera *still* doesn't work though, even with this
2024-09-16 21:22:37 +00:00
051625fd47 moby: kernel: add a withMegousPatches option, disabled to get the minimal usable build (lacking cameras, and possibly with charging limitations) 2024-09-16 18:51:33 +00:00
bb0a90ec1e scripts/deploy: add a --deriv flag to deploy a pre-built path
useful for systems like moby where re-evaluating an unchanged system is expensive
2024-09-16 18:40:42 +00:00
acca87c187 moby: reduce the kernel patching
tested: camera (Megapixels), audio (mpv: speakers, headphones)

i think i *might* have had one failed (i.e. no graphics) boot? not sure.
2024-09-16 09:02:02 +00:00
e23429eebe moby: build w/o full config -- just pmos + nixpkgs
this *should* make iteration (of reducing kernel patches) a little quicker

this is the eventual goal, though in the meantime it may be quicker iteration to build with *only* pmos config and no full config
2024-09-16 08:21:17 +00:00
9fcbd6e7e2 moby: remove a few more unnecessary kernel patches 2024-09-16 04:57:00 +00:00
d943946f9d doc: moby: note why certain kernel patches must be kept 2024-09-16 04:36:22 +00:00
c8543e9326 moby: blacklist fewer camera-adjacent kernel modules 2024-09-16 02:42:08 +00:00
e9decbbf40 sandboxing: add a global toggle to disable sandboxing 2024-09-16 00:38:02 +00:00
fe353f3417 nixpkgs: 24.05-unstable-2024-09-10 -> 24.05-unstable-2024-09-14 2024-09-15 11:14:50 +00:00
adf554c177 moby: kernel: remove the rockchip-specific patches
Pinephone uses Allwinner A64, Pinephone Pro uses rockchip, patches are therefore not necessary for ordinary PP
2024-09-15 11:14:50 +00:00
373356d097 moby: reduce the set of kernel patches i apply
this makes them easier to maintain; upgrades are less fragile
2024-09-15 11:14:50 +00:00
b5f9ba62d0 camera: fix sandboxing for pipewire (so snapshot can open the camera), and share that with megapixels (which opens it directly)
N.B. snapshot (pipewire) doesn't work with the current kernel deployment; it requires linux-postmarketos-allwinner and even then only the front camera works (at about 1 fps)

this wasn't always the case: i believe that once, the rear camera worked as well. although now i think about it, i'm not positive of that
2024-09-15 11:14:23 +00:00
6e0c83b4f3 modules/programs: don't install bunpen/sanebox unless some program actually requires it 2024-09-14 23:10:19 +00:00
4fda2e67a2 crappy: bypass efibootmgr cross compilation error 2024-09-14 22:36:37 +00:00
c576885c84 neovim: fix treesitter cross compilation 2024-09-14 22:36:33 +00:00
565684d1e9 neovim: fix ts_ls typeserver LSP deprecation 2024-09-14 22:36:27 +00:00
7a75459249 curlftpfs-sane: fix cross compilation to 32bit platforms (i.e. armv7l-hf-multiplatform) 2024-09-14 21:18:11 +00:00
d0555548b7 linux-armbian.patches: -> 2024-09-14 2024-09-14 21:18:11 +00:00
52b71b5ef3 nixpkgs-wayland: 2024-09-08 -> 2024-09-13 2024-09-14 21:18:11 +00:00
0ffb67b77e sops-nix: 2024-09-08 -> 2024-09-13 2024-09-14 21:18:11 +00:00
146a184e43 uassets: 2024-09-08 -> 2024-09-14 2024-09-14 21:18:11 +00:00
9c4f87bbad syshud: 2024-09-07 -> 2024-09-10 2024-09-14 21:18:11 +00:00
54dfb04b81 moby: kernel: enable full config
camera works so long as i blacklist some new modules
2024-09-14 21:18:11 +00:00
a773513189 pkgsCCache: init (if only to prevent me from wasting time with ccache again: its really not that great) 2024-09-14 21:18:11 +00:00
4f77b2313b firefox: add a search shortcut for MyAnimeList.net 2024-09-14 02:54:16 +00:00
c7305f3c90 firefox: cleanup search URLs 2024-09-14 02:53:28 +00:00
f3edeca237 moby: linux-armbian kernel: use enableCommonConfig instead of copying the nixpkgs config into kernelPatches 2024-09-13 16:18:27 +00:00
8b3e413cae moby: dont patch CMA at all; just accept the defaults
it seems like things don't actually need this
2024-09-13 07:19:17 +00:00
1971ef5fd4 todo.md: sync 2024-09-13 07:19:17 +00:00
6a1f48420f google-chrome: ship 2024-09-13 00:05:03 +00:00
441269fb2f moby: enable modem-power 2024-09-13 00:04:15 +00:00
b43ee23459 firefox: allow webcam access 2024-09-13 00:02:48 +00:00
b9db78a154 moby: get WiFi + camera working on linux 6.10.9
note that modem_power is disabled... i can probably enable that here shortly
2024-09-12 23:27:21 +00:00
e2f7cd154d gst-device-monitor: improve docs 2024-09-12 07:14:20 +00:00
fa180ff50a moby: get the camera working on linux 6.10.9 (but at the expense of WiFi, heh); enable but un-commenting in pine64/kernel.nix
something in 'enableCommonConfig' breaks the camera. i bet it's related to the DRM stuff?
2024-09-12 07:13:18 +00:00
3febbcaef7 programs/via: make the udev config conditional upon via actually being installed 2024-09-12 06:38:04 +00:00
2c68bead1d linux-megous: orange-pi-6.9-20240514-1047 (6.9.0) -> orange-pi-6.9-20240721-2345 (6.9.10)
no immediately noticable differences, but not thoroughly tested
2024-09-12 06:37:38 +00:00
129a7aec68 linux-megous: fix build 2024-09-12 05:29:19 +00:00
fbed348e68 linux-postmarketos-allwinner: update; add option to build w/o pmos patches (just the megi kernel + pmos defconfig) 2024-09-12 05:28:27 +00:00
4694dacd2f millipixels: ship it (it doesnt work though) 2024-09-12 05:27:31 +00:00
7fa689c82d libcamera: split to separate file & add udev rules
i think the udev rules arent actually needed though?
2024-09-12 05:26:46 +00:00
add5910b4f linux-megous: lint 2024-09-11 22:11:46 +00:00
590d4d819e moby: try shipping the armbian kernel with (close to) the pmOS defconfig
it builds, but the camera is just as broken as w/o pmOS config
2024-09-11 21:16:02 +00:00
f6493122bb nix-index: sandbox with bunpen 2024-09-11 19:20:13 +00:00
954fedd41b hal/pine64: split kernel into new armbian-kernel package 2024-09-11 19:19:54 +00:00
858ca4245a megapixels-next: document the state of things against mainline linux 2024-09-11 04:31:36 +00:00
d1044023d3 fcitx5: sandbox with bunpen 2024-09-11 04:26:12 +00:00
53e73659b4 v4l-utils: more docs 2024-09-11 04:13:54 +00:00
8a5e1cb6b6 megapixels-next: unstable-2024-05-11 -> unstable-2024-09-03 2024-09-11 04:13:12 +00:00
2a29e22d6d libmegapixels,libdng,megapixels-next: format with nixfmt 2024-09-11 03:46:48 +00:00
f5a64bc913 megapixels-next: ship
i can't get any camera working on actually-mainline linux. i'm hoping megapixels-next will work with fewer patches, though
2024-09-11 03:44:08 +00:00
2407e51b67 endless-sky: sandbox with bunpen (only minimally tested) 2024-09-11 03:12:24 +00:00
e626044037 lightning-cli: sandbox with bunpen (only minimally tested) 2024-09-11 03:11:19 +00:00
f6abee5670 losslesscut-bin: sandbox with bunpen (only minimally tested) 2024-09-11 02:18:28 +00:00
8b8bbcd59b clightning-sane: sandbox with bunpen 2024-09-11 02:17:46 +00:00
f14dbf13b1 sane-find-dotfiles: sandbox with bunpen 2024-09-11 02:07:57 +00:00
a0a34cc62e sane-bt-add: sandbox with bunpen (only minimally tested) 2024-09-11 02:07:33 +00:00
89b9f693e5 sane-bt-rm: sandbox with bunpen 2024-09-11 02:07:19 +00:00
2c76497d34 wirelesstools: sandbox with bunpen (only minimally tested) 2024-09-11 02:04:59 +00:00
0128826a42 speedtest-cli: sandbox with bunpen 2024-09-11 02:01:46 +00:00
4de34f662b sox: sandbox with bunpen (minimally tested) 2024-09-11 02:01:29 +00:00
07626c55f5 slurp: sandbox with bunpen 2024-09-11 02:00:34 +00:00
d53b4df4a8 hdparm: sandbox with bunpen 2024-09-11 01:59:43 +00:00
f6b6d6488d gparted: sandbox with bunpen 2024-09-11 01:59:19 +00:00
c6d93598ed nixfmt-rfc-style: sandbox with bunpen 2024-09-11 01:57:31 +00:00
fad05b929a bunpen: support --bunpen-autodetect-cli existingDirOrParent 2024-09-11 01:57:11 +00:00
e69bacf54e sc-im: sandbox with bunpen 2024-09-11 01:55:40 +00:00
7d4d4d6c65 libreoffice: sandbox with bunpen 2024-09-11 01:55:20 +00:00
7d6c5cf20c handbrake: sandbox with bunpen (UNTESTED because unused) 2024-09-11 01:31:49 +00:00
b483254bb3 wireshark: sandbox with bunpen 2024-09-11 01:27:26 +00:00
884435fe21 refactor: remove uses of deprecated "rust.toRustTarget" 2024-09-11 01:25:15 +00:00
33aaf8c458 nixpkgs: 24.05-unstable-2024-09-08 -> 24.05-unstable-2024-09-10 2024-09-10 23:24:05 +00:00
1c3c7f599f feeds/update.py: fix sources which have null description 2024-09-10 20:30:29 +00:00
e7f54cda6b feeds: subscribe to Marijn Braam's blog 2024-09-10 19:54:46 +00:00
909beec420 sane-reclaim-disk-space: fix sandboxing 2024-09-10 19:35:42 +00:00
ae5bad1514 feeds: subscribe to mii beta / Baby Wogue 2024-09-10 18:16:45 +00:00
77683e090c lsof: sandbox with bunpen 2024-09-10 08:52:32 +00:00
f7c5b16c1c gst-launch: ship gst-libav, for H.264 decoding 2024-09-10 08:52:22 +00:00
ad98e96823 gst-launch: ship default plugins 2024-09-10 08:06:04 +00:00
e167cbbbb4 gst-launch: ship 2024-09-10 07:40:48 +00:00
eb6c0acf11 v4l-utils: expand docs 2024-09-10 07:36:03 +00:00
f7a650b0e0 nethogs: sandbox with bunpen 2024-09-10 06:59:18 +00:00
a37554ada3 moby: ship all of megi's patches again: this fixes charging. once i get the camera working i can then start wittling down the patch stack 2024-09-10 06:57:01 +00:00
d3fa4e6e7c programs: ship v4l-utils, for debugging the Pinephone camera pipeline 2024-09-10 05:00:15 +00:00
90df023be0 firefox: add search keyword for ebay 2024-09-10 03:56:54 +00:00
f8141c5270 zfs-tools: sandbox with bunpen 2024-09-10 02:18:44 +00:00
1599df26e7 /mnt/persist/private: remove unneeded "sandbox.keepPids" 2024-09-10 01:09:21 +00:00
0b39f18faa /mnt/persist/ephemeral: dont even try to delete the backing directory -- just everything contained in it 2024-09-10 00:45:07 +00:00
8ae7e255e5 gocryptfs: sandbox with bunpen 2024-09-10 00:02:03 +00:00
6f72453f5d nvme-cli: sandbox with bunpen 2024-09-09 19:51:36 +00:00
ca09c93bf8 bunpen: handle unexpected whitepsace in BUNPEN_APPEND env var 2024-09-09 07:29:30 +00:00
ba229aaf69 bunpen: implement BUNPEN_APPEND env var 2024-09-09 04:16:38 +00:00
95994de1ad provision-private-key (/run/gocryptfs/private.key): sandbox with bunpen 2024-09-09 03:56:55 +00:00
f04d0c07af programs: split yt-dlp config out of mpv config 2024-09-08 22:16:32 +00:00
6dc4aeafc1 programs/yt-dlp: migrate to own file 2024-09-08 21:51:23 +00:00
1067bc9215 scripts/deploy: separate eval and build phases to decrease maximum ram requirements 2024-09-08 20:36:54 +00:00
bb18f65ed2 nixpkgs: 2024-09-06 -> 2024-09-08 2024-09-08 20:35:58 +00:00
0d6a823382 syshud: 0-unstable-2024-09-04 -> 0-unstable-2024-09-07 2024-09-08 20:35:26 +00:00
13aad0256d nixpkgs-wayland: 0-unstable-2024-09-06 -> 0-unstable-2024-09-08 2024-09-08 20:35:07 +00:00
ca4061ab94 sops-nix: assets-unstable-2024-09-05 -> assets-unstable-2024-09-08 2024-09-08 20:34:45 +00:00
df65454950 uassets: 0-unstable-2024-09-06 -> 0-unstable-2024-09-08 2024-09-08 20:34:28 +00:00
64311094ad zsh: add more eza aliases (la, lla, lal) 2024-09-07 22:52:13 +00:00
ac53d5512b cryptsetup: sandbox with bunpen 2024-09-07 22:40:29 +00:00
9d594f696a bunpen: support BUNPEN_DEBUG=n env var 2024-09-07 22:32:32 +00:00
4ade6b1418 cryptsetup: sandbox with bwrap 2024-09-07 22:24:13 +00:00
3ef98a5ab3 modules/programs: support "sandbox.keepIpc = true" 2024-09-07 22:10:11 +00:00
130ce0e69f bunpen: support --bunpen-keep-ipc 2024-09-07 22:08:25 +00:00
3fb566a3fd ethtool: sandbox with bwrap
it doesn't *quite* sandbox with bunpen: i lose Wake-on-lan info... not sure why
2024-09-07 21:19:24 +00:00
135af51f37 eza: sandbox with bunpen 2024-09-07 21:12:18 +00:00
98ed5f10ee e2fsprogs: sandbox with bunpen 2024-09-07 21:08:21 +00:00
71241f83e2 nettools: sandbox with bunpen 2024-09-07 21:02:31 +00:00
2b7143fb84 portfolio-filemanager: sandbox with bunpen
note that portfolio seems not to use portal integration anymore? so using it to launch e.g. Music files totally fails (because i don't grant pipewire access)

well, i don't really use this that much, so i'll deal with that only if/when it's an issue
2024-09-07 20:58:57 +00:00
0605034a53 eg25-control: sandbox with bunpen 2024-09-07 20:57:11 +00:00
140f2b515e parted: sandbox with bunpen (only minimally tested) 2024-09-07 20:43:03 +00:00
ca5eab656d tcpdump: sandbox with bunpen 2024-09-07 20:42:11 +00:00
028f56f70b hping: sandbox with bunpen 2024-09-07 20:41:37 +00:00
9f4c40fe01 gptfdisk: sandbox with bunpen (minimally tested) 2024-09-07 20:36:50 +00:00
8eadede76d wireguard-tools: sandbox with bunpen 2024-09-07 20:33:54 +00:00
823ec0e6f4 pcituils: sandbox with bunpen 2024-09-07 20:28:39 +00:00
fc865574bf iputils: sandbox with bunpen 2024-09-07 20:26:36 +00:00
58b3411c8c iotop: sandbox with bunpen 2024-09-07 20:23:23 +00:00
e517c5cecf inetutils: sandbox with bunpen 2024-09-07 20:22:29 +00:00
c735c0e11e iftop: sandbox with bunpen 2024-09-07 20:18:26 +00:00
41d7268094 forkstat: sandbox with bunpen 2024-09-07 20:16:59 +00:00
e66c389695 efibootmgr: sandbox with bunpen 2024-09-07 20:04:58 +00:00
d43a5a4687 btrfs-progs: sandbox with bunpen 2024-09-07 20:01:46 +00:00
83efe3f552 smartmontools: sandbox with bunpen 2024-09-07 20:00:22 +00:00
5742101191 powertop: sandbox with bunpen 2024-09-07 19:59:59 +00:00
7b5508c91d g4music: sandbox with bunpen 2024-09-07 19:23:05 +00:00
0b11c0e790 sane-backup-rsync-net: remove dead SANEBOX_PREPEND flags
i'm not actually sure how this is still working, with bunpen? but it *seems* to be
2024-09-07 19:12:13 +00:00
aeea904e5b seatd/bunpen: remove the need for CAP_SETPCAP 2024-09-07 18:58:47 +00:00
64e302eb20 go2tv: sandbox with bunpen 2024-09-07 18:37:18 +00:00
91a9d6e0d6 fcitx5: re-enable 2024-09-07 18:35:55 +00:00
f593b8ca4a nwg-panel/torch-toggle: sandbox with bunpen 2024-09-07 18:33:08 +00:00
30060e4bb1 bunpen/seatd: remove CAP_NET_ADMIN: creating a net namespace does NOT require that, rather it was a quirk in bwrap 2024-09-07 18:32:29 +00:00
9b8bdfaf5e seatd: ACTUALLY sandbox with bunpen 2024-09-07 18:24:33 +00:00
fc72884c2e hosts/common: persist ~/.cache/mesa_shader_cache_db 2024-09-07 17:27:15 +00:00
8f47636ee0 ols: sandbox with bunpen 2024-09-07 17:26:30 +00:00
f68fbb0e0b bunpen/seatd namespacing: clarify that CAP_NET_ADMIN requirement is surprising 2024-09-07 17:14:50 +00:00
7ce82ca735 seatd: remove no-longer-necessary ambient caps 2024-09-07 17:01:05 +00:00
7ce098f2bb bunpen: --bunpen-try-user will now raise the capabilities it needs, as part of that 2024-09-07 17:00:34 +00:00
454c109ef8 seatd: sandbox with bunpen 2024-09-07 15:39:50 +00:00
4dfc0bf323 sane-open: fix keyboard toggling to be compatible with bunpen 2024-09-07 08:36:32 +00:00
2d1e7777e8 sm64ex-coop-deluxe: ship (and configure so that you dont have to drag the rom) 2024-09-07 06:21:11 +00:00
1d5f71f935 satellite: sandbox with bunpen 2024-09-07 05:44:40 +00:00
41a132dd9a geoclue-demo-agent: sandbox with bunpen 2024-09-07 04:31:53 +00:00
51350d228d where-am-i: sandbox with bunpen 2024-09-07 04:29:45 +00:00
e9a289cc87 gps-share: sandbox with bunpen 2024-09-07 04:27:20 +00:00
de47a0521d wvkbd: sandbox with bunpen 2024-09-07 02:14:20 +00:00
412e698786 bunpen: forward signals through the PID namespace
this should enable things like wvkbd -- which depend on signals -- to function while sandboxed
2024-09-07 01:43:34 +00:00
ed7c5ef89a bunpen: forward signals to the child
note that pid namespaces will silently not deliver signals to PID 1 for which no handler is installed... i'll have to either install an intermediary PID 1 which forwards to the real process, or peek into /proc/PID/status to check if the signal is deliverable before/after sending it (but that's racy, and eww parsing)
2024-09-06 23:16:10 +00:00
9814cb5ad7 bunpen: errors::ext::check: supoort errors::error 2024-09-06 23:13:21 +00:00
b6d8aa614c bunpen: fix so the integration tests are actually run during the nix build
heh
2024-09-06 18:29:20 +00:00
24440b059c bunpen: write tests for signal deliverability (which shows that the current behavior is incorrect) 2024-09-06 18:12:05 +00:00
53ec44b3de nixpkgs: 0-unstable-2024-09-05 -> 24.05-unstable-2024-09-06
N.B.: the different "revs" got merged again while i wasnt looking...
2024-09-06 17:00:05 +00:00
e9cd3069fa nixpkgs-wayland: 0-unstable-2024-09-02 -> 0-unstable-2024-09-06 2024-09-06 16:59:23 +00:00
7b4fc029b2 sops-nix: assets-unstable-2024-09-01 -> assets-unstable-2024-09-05 2024-09-06 16:59:03 +00:00
cc6e99361d uassets: 0-unstable-2024-09-05 -> 0-unstable-2024-09-06 2024-09-06 16:58:46 +00:00
ca3dc42586 rsync: sandbox with tryKeepUsers. this lets us rsync things owned by any user, not just the non-superuser invoker 2024-09-06 06:33:45 +00:00
8255e419be modules/programs: rename "keepUsers" -> "tryKeepUsers" 2024-09-06 06:32:49 +00:00
9bd5a7e4e4 bunpen: implement --bunpen-try-keep-users to try to keep the user namespace, but create a new one if keeping the existing one would require less sandboxing elsewhere 2024-09-06 06:25:27 +00:00
baf5aab4b9 sshfs-fuse: sandbox with bunpen 2024-09-06 06:04:23 +00:00
ce7474603f sway: fix config to not use Xwayland-specific settings 2024-09-06 05:41:34 +00:00
bf6053985f xwayland: sandbox with bunpen 2024-09-06 05:34:08 +00:00
c0106c9196 scripts/deploy: deploy to moby over wireguard by default, but allow this to be customized broadly 2024-09-06 05:30:59 +00:00
038e21a447 schlock: sandbox with bunpen 2024-09-06 05:27:19 +00:00
6596bad162 foliate: sandbox with bunpen 2024-09-06 05:25:20 +00:00
c46c5bb3ca komikku: sandbox with bunpen 2024-09-06 05:24:48 +00:00
8079cc47bf nwg-panel: simplify sandbox definition 2024-09-06 05:23:33 +00:00
8c802ddc1a epiphany: sandbox with bunpen 2024-09-06 05:23:00 +00:00
1ed27c166e wike: sandbox with bunpen 2024-09-06 05:21:55 +00:00
82dcd40829 sane-input-handler: sandbox with bunpen 2024-09-06 05:21:38 +00:00
c6af2c8e02 bonsai: sandbox with bunpen 2024-09-06 05:20:51 +00:00
8bdb711968 grimshot: fix sandboxing so that wl-clipboard can actually copy stuff to the clipboard 2024-09-06 04:57:53 +00:00
4b96d10980 swappy: sandbox with bunpen 2024-09-06 04:35:50 +00:00
346b887779 sane-screenshot: simplify by using grimshot savecopy command instead of separate copy + wl-paste tio file 2024-09-06 04:34:51 +00:00
6e30527688 modules/programs: simplfiy the common combination of keeping pids AND /proc by introducing "keepPidsAndProc" 2024-09-06 04:18:46 +00:00
9340f52df1 modules/programs: rename isolatePids -> keepPids, isolateUsers -> keepUsers
this follows my explicit whitelisting elsewhere
2024-09-06 04:06:42 +00:00
cc90183ca2 blast-ugjka: sandbox with bunpen 2024-09-06 03:52:36 +00:00
31d475bf88 sane-cast: sandbox with bunpen 2024-09-06 03:42:03 +00:00
329a02f475 gnome-keyring-daemon: sandbox with bunpen 2024-09-06 03:12:00 +00:00
e3dda5b140 grimshot: sandbox with bunpen 2024-09-06 02:31:20 +00:00
876ec637c2 stepmania: shift the data dir patch upstream 2024-09-06 02:21:08 +00:00
d338826855 stepmania: sandbox with bunpen 2024-09-06 01:44:11 +00:00
b770a77257 stepmania: simplify the wrapping 2024-09-06 01:41:20 +00:00
b289f13779 stepmania: wrap in a way which doesnt require manually cding to the data dir 2024-09-06 01:19:13 +00:00
d8664cd88b stepmania: fix fs paths to point to valid data 2024-09-06 01:17:21 +00:00
5270c41347 avahi: fix ip6tables firewall rule 2024-09-06 01:17:21 +00:00
850c975321 modules/programs: when sandboxing, use makeBinaryWrapper if supported 2024-09-06 01:17:21 +00:00
b1b12c353d sm64ex-coop-deluxe: init 2024-09-05 23:43:42 +00:00
3934d9c5a5 sway: fix sm64ex syntax error 2024-09-05 23:39:21 +00:00
84a36d9ef8 bunpen: fix last failing integration test 2024-09-05 23:21:56 +00:00
05b8352b4d bunpen: bind execvpe 2024-09-05 23:21:31 +00:00
4123d2d92e sway: bind mod+P to screenshot
one of my keyboards here doesn't have PrintScreen :o
2024-09-05 22:55:02 +00:00
768998f78d bunpen: rearrange integration tests to make it obvious that invoking by PATH is what's failing 2024-09-05 22:51:21 +00:00
a128f624b2 bunpen: fix to correctly forward the exit status 2024-09-05 22:41:12 +00:00
f12123416b bunpen: integration_test: add logging tests 2024-09-05 22:21:06 +00:00
392330f9ca bunpen: make the integration tests easier to understand 2024-09-05 22:04:00 +00:00
60bdc7c5d3 nixpkgs: 0-unstable-2024-08-30 -> 0-unstable-2024-09-05 2024-09-05 21:50:19 +00:00
aa93ac608b nixpkgs-wayland: 0-unstable-2024-08-30 -> 0-unstable-2024-09-02 2024-09-05 21:50:19 +00:00
3ad7271439 syshud: 0-unstable-2024-08-27 -> 0-unstable-2024-09-04 2024-09-05 21:50:19 +00:00
fe087720ed uassets: 0-unstable-2024-08-30 -> 0-unstable-2024-09-05 2024-09-05 21:50:19 +00:00
15ff2589d3 sops: 2024-08-12 -> 2024-09-01 2024-09-05 21:50:19 +00:00
b74372dd2b fs: mount moby via wireguard 2024-09-05 21:50:19 +00:00
196cf2dc9e bunpen: cleanup the integration test infrastructure 2024-09-05 10:01:47 +00:00
3f6713c12c s64ex-coop: sandbox 2024-09-05 08:56:43 +00:00
d8058f0591 sm64ex-coop: persist save data 2024-09-05 08:48:33 +00:00
a1450b4eff sm64ex-coop: ship 2024-09-05 06:38:58 +00:00
3b009b8435 baseRom: init 2024-09-05 06:25:20 +00:00
c0bf2df718 firefox: add a "pr" search shortcut to search nixpkgs PRs 2024-09-05 05:30:10 +00:00
24eefbeded bunpen: add some integration tests (they fail heh) 2024-09-05 02:37:41 +00:00
e97302a453 bunpen: dont forward argv[0] if the caller didnt forward it 2024-09-05 02:34:56 +00:00
2b2173be56 bunpen: enable logging earlier 2024-09-05 02:32:12 +00:00
ac5b9061a2 scripts/deploy: implement --wireguard flag, to deploy the host over wireguard 2024-09-05 02:06:59 +00:00
a54b051bbe crappy: split cross-specific programs config into hal 2024-09-05 01:11:16 +00:00
968e9654cf moby: move cross-specific programs config to hal 2024-09-05 01:11:16 +00:00
a557c79f4e hosts/modules/hal/pine64: split kernel into own file 2024-09-05 00:59:51 +00:00
f2dc84a1c8 refactor: hosts/modules/hal/pine64: give it its own directory 2024-09-05 00:57:29 +00:00
8a7a20fe2b sane-open: fix isLandscape to query actual geometry instead of the less informative "rotation" property 2024-09-05 00:23:57 +00:00
7e674b205f rsync-net: add a script to help with restoring backups 2024-09-04 23:09:04 +00:00
8d87a15e60 modules/image: be verbose when we flash the bootloader 2024-09-04 13:50:22 +00:00
f39a08e379 aerc: sandbox with bunpen 2024-09-04 13:49:40 +00:00
b567aeadd7 bunpen: namespace: populat /dev/pts 2024-09-04 13:49:40 +00:00
04ac2ada05 bunpen: simplify the /proc/self/{u,g}id_map logic 2024-09-04 13:49:40 +00:00
6193f347e7 bunpen: allow mount to take str mount params 2024-09-04 13:49:40 +00:00
39733b4862 bunpen: log more clearly when an error message is fatal v.s. non-fatal 2024-09-04 13:49:40 +00:00
9a7fca267e modules/image: bump /boot space from 1 GiB to 2 GiB 2024-09-04 13:49:40 +00:00
364a4f1182 sane-secrets-unlock: work around race condition during system boot 2024-09-04 13:48:10 +00:00
3e182b2a06 modules/persist: lint 2024-09-04 13:13:14 +00:00
6ff35b4366 dbus: place the bus in a subdirectory for better sandboxing 2024-09-04 13:04:20 +00:00
9f49084ccb firefox: normalize bookmark ADD_DATE / LAST_MODIFIED to "1"
i *think* these fields don't matter, so this makes editing them by hand easier
2024-09-04 12:15:06 +00:00
b2f351dba2 firefox: add Amazon.com search 2024-09-04 12:13:29 +00:00
35a41be824 modules/*: lint (esp: modules/vpn.nix -- removed unused priorityWgTable) 2024-09-03 20:24:36 +00:00
f384515c51 exiftool: sandbox with bunpen 2024-09-03 19:19:24 +00:00
c7eb0c7c71 youtube-tui: sandbox with bunpen
youtube-tui's kinda always breaking... i can't verify that this isn't breaking it more
2024-09-03 19:19:24 +00:00
2debd88019 objdump: sandbox with bunpen 2024-09-03 19:19:24 +00:00
783a0ae29f supertuxkart: sandbox with bunpen 2024-09-03 19:19:24 +00:00
ad57f1537a sane-ip-check: sandbox with bunpen 2024-09-03 19:19:24 +00:00
e82de6180c lftp: sandbox with bunpen 2024-09-03 19:19:24 +00:00
09cb743865 gst-device-monitor: sandbox with bunpen 2024-09-03 19:19:24 +00:00
0d737216ea kdenlive: sandbox with bunpen 2024-09-03 19:19:24 +00:00
3478224bf9 inkscape: split to own file and sandbox with bunpen 2024-09-03 19:19:24 +00:00
94863db03a frozen-bubble: sandbox with bunpen 2024-09-03 18:35:07 +00:00
3260659fc1 networkmanagerapplet: disable (broken) 2024-09-03 18:34:33 +00:00
1ce07e08f6 sane-wipe: dont wipe the static config files in ~/.mozilla/firefox 2024-09-03 18:33:20 +00:00
2e8904fa52 swaynotificationcenter: sandbox with bunpen 2024-09-03 18:32:51 +00:00
0535d97191 sane-wipe: sandbox with bunpen 2024-09-03 18:30:30 +00:00
71539036fc swayidle: sandbox with bunpen 2024-09-03 18:27:37 +00:00
e295da5d67 gpodder: sandbox with bunpen 2024-09-03 18:24:04 +00:00
986dc8c37a fontconfig: sandbox with bunpen 2024-09-03 18:22:27 +00:00
57637167b1 dconf: sandbox with bunpen 2024-09-03 18:21:58 +00:00
9b6ec64ed4 xdg-desktop-portal-gnome: sandbox with bunpen 2024-09-03 17:56:17 +00:00
c7638be79b visidata: sandbox with bunpen 2024-09-03 17:53:37 +00:00
f537049387 imagemagick: sandbox with bunpen 2024-09-03 17:52:23 +00:00
2cee6ea954 celeste64: sandbox with bunpen 2024-09-03 17:51:13 +00:00
36bcda6416 element-desktop: sandbox with bunpen 2024-09-03 17:48:58 +00:00
45907f23b9 oath-toolkit,sops: sandbox with bunpen 2024-09-03 17:48:30 +00:00
e57e0b9509 dbus: sandbox with bunpen 2024-09-03 17:46:08 +00:00
2f00580ddd vvvvvv: sandbox with bunpen 2024-09-03 17:44:07 +00:00
c7a786bef3 superTux: sandbox with bunpen 2024-09-03 17:43:35 +00:00
646ffa891c wdisplays: sandbox with bunpen 2024-09-03 17:31:33 +00:00
a887d2d780 soundconverter: split into own file and sandbox with bunpen 2024-09-03 17:30:41 +00:00
291e6fe1e3 w3m: sandbox with bunpen 2024-09-03 17:30:41 +00:00
acad3dc60a unzip: sandbox with bunpen 2024-09-03 17:30:41 +00:00
de78119e46 tumiki-fighters: sandbox with bunpen 2024-09-03 17:30:41 +00:00
628a701fa0 space-cadet-pinball: sandbox with bunpen 2024-09-03 17:30:41 +00:00
851e6e9176 slic3r: sandbox with bunpen 2024-09-03 17:30:41 +00:00
69bba0f6a9 shattered-pixel-dungeon: sandbox with bunpen 2024-09-03 17:30:41 +00:00
3a8f31a490 sequoia: sandbox with bunpen 2024-09-03 17:30:41 +00:00
4b0518408e sane-weather: sandbox with bunpen 2024-09-03 17:30:41 +00:00
2e38f49773 rsync: sandbox with bunpen 2024-09-03 17:30:41 +00:00
4704c9ca9e pstree: fix formatting 2024-09-03 17:30:41 +00:00
6d37c531f2 procps: sandbox with bunpen (note that i only use sub items of it though, like free and pidof) 2024-09-03 17:30:41 +00:00
1d8f825bc6 hase: sandbox with bunpen 2024-09-03 17:30:41 +00:00
775c1522ee grim: sandbox with bunpen 2024-09-03 17:30:41 +00:00
4856a46388 hitori: sandbox with bunpen 2024-09-03 17:30:41 +00:00
2702e2afd5 gnome-frog: sandbox with bunpen 2024-09-03 17:30:41 +00:00
2d1ebe7219 gnome-2048: sandbox with bunpen 2024-09-03 17:30:41 +00:00
cef2a1e129 gnome-calendar: sandbox with bunpen 2024-09-03 17:30:41 +00:00
f48b8fb6b9 discord: sandbox with bunpen 2024-09-03 17:30:41 +00:00
a75fb267f1 font-manager: sandbox with bunpen 2024-09-03 17:30:41 +00:00
981cd4c65c findutils: sandbox with bunpen 2024-09-03 17:30:41 +00:00
d25701e280 evtest: sandbox with bunpen 2024-09-03 17:30:41 +00:00
562315bf4d libnotify: sandbox with bunpen 2024-09-03 17:30:41 +00:00
5b9fbb97cb krita: split into own file and sandbox with bunpen 2024-09-03 17:30:41 +00:00
2965fe29d1 gnome-calculator: sandbox with bunpen 2024-09-03 16:48:35 +00:00
6692c67e74 wireplumber: sandbox with bunpen 2024-09-03 16:47:54 +00:00
cc7f53a828 nautilus: sandbox with bunpen 2024-09-03 16:06:42 +00:00
5e38ebef4b swaylock: sandbox with bunpen 2024-09-03 16:05:34 +00:00
181bc57a8a bunpen: fix edge-case where we wouldnt deref (and bind the underlying path of) a symlink under an already-mounted directory 2024-09-03 16:05:34 +00:00
8a61ad704a unl0kr: sandbox with bunpen 2024-09-03 15:42:39 +00:00
c93f71e285 pipewire: sandbox with bunpen 2024-09-03 15:42:24 +00:00
09507a04bd sway: sandbox with bunpen 2024-09-03 15:19:10 +00:00
ccdf633e4f gimp: sandbox with bunpen 2024-09-03 15:09:14 +00:00
e62c1fe63f sane-secrets-dump: sandbox with bunpen 2024-09-03 15:00:04 +00:00
66f00088f1 sane-tag-media: sandbox with bunpen 2024-09-03 14:58:48 +00:00
a2366ba9d4 sane-screenshot: sandbox with bunpen 2024-09-03 14:57:29 +00:00
a2bfb23253 nwg-panel: sandbox with bunpen 2024-09-03 14:56:09 +00:00
d474d159ac sane-shutdown,sane-reboot: sandbox with bunpen 2024-09-03 14:55:55 +00:00
60d5dbda77 sane-secrets-unlock: sandbox with bunpen 2024-09-03 14:49:02 +00:00
ff763b44bc playerctl: sandbox with bunpen 2024-09-03 14:47:39 +00:00
ba28240a04 audacity: sandbox with bunpen 2024-09-03 14:46:47 +00:00
2a755492bd conky: sandbox with bunpen 2024-09-03 14:45:59 +00:00
c682cb5fd7 bunpen: add regex functionality to BUNPEN_DISABLE 2024-09-03 14:42:01 +00:00
68dfd64ee3 sane-which: sandbox with bunpen 2024-09-03 14:16:40 +00:00
179c6697e6 sane-reclaim-{boot,disk}-space: sandbox with bunpen 2024-09-03 14:16:14 +00:00
9301a84e1c sane-bt-{search,show}: sandbox with bunpen 2024-09-03 14:13:40 +00:00
fc5a1c7d5e pkill: sandbox with bunpen 2024-09-03 14:12:36 +00:00
94a261280b pactl: sandbox with bunpen 2024-09-03 14:11:27 +00:00
8214b27569 dialect: sandbox with bunpen 2024-09-03 14:11:05 +00:00
12c39fec03 animatch: sandbox with bunpen 2024-09-03 14:10:14 +00:00
50d443ad46 make-sandboxed: fix quoting error 2024-09-03 14:10:06 +00:00
a4eb7c0fd6 gnome-weather: sandbox with bunpen 2024-09-03 14:08:26 +00:00
a633690ab9 gnome-clocks: sandbox with bunpen 2024-09-03 14:07:57 +00:00
8badb38b76 firefox-xdg-open: sandbox with bunpen 2024-09-03 14:07:28 +00:00
3bc8c34b85 engrampa: sandbox with bunpen 2024-09-03 14:05:34 +00:00
88263695d3 dtrx: sandbox with bunpen 2024-09-03 14:04:41 +00:00
7d9b2cb224 nmcli: sandbox with bunpen
note that i can't 'nmcli connect' -- but i think that's a NetworkManager service error, not nmcli
2024-09-03 14:04:07 +00:00
1588ebe696 wl-clipboard: sandbox with bunpen 2024-09-03 13:54:45 +00:00
8cbe8fc9e2 wtype: sandbox with bunpen 2024-09-03 13:54:27 +00:00
0ee564b329 tor-browser: sandbox with bunpen 2024-09-03 13:11:15 +00:00
a9f0f99482 sane-private-unlock-remote: sandbox with bunpen 2024-09-03 13:10:16 +00:00
fd2eabf07e mepo: sandbox with bunpen 2024-09-03 13:06:25 +00:00
7b8303f070 git: sandbox with bunpen 2024-09-03 13:05:42 +00:00
eaf03520e7 curl: sandbox with bunpen 2024-09-03 13:04:45 +00:00
b05ebc6c62 papers: sandbox with bunpen 2024-09-03 13:03:58 +00:00
8c94bc79d5 newsflash: sandbox with bunpen 2024-09-03 13:02:10 +00:00
d2f86e7b0d gdbus: sandbox with bunpen 2024-09-03 12:54:06 +00:00
f959a0dd00 sane-open: sandbox with bunpen 2024-09-03 12:41:12 +00:00
a0240dca36 mimetype: sandbox with bunpen 2024-09-03 12:40:39 +00:00
471f453321 pidof: sandbox with bunpen 2024-09-03 12:40:22 +00:00
3712eaf869 brave: sandbox with bunpen 2024-09-03 12:39:57 +00:00
ecc4e90b4a gnome-maps: sandbox with bunpen 2024-09-03 12:38:19 +00:00
c7823ab3f4 assorted: remove outdated comments about landlock > bwrap 2024-09-03 04:49:36 +00:00
2cc23525ec curlftp: sandbox with bunpen 2024-09-03 04:48:23 +00:00
07bbf34f59 nmon: sandbox with bunpen 2024-09-03 04:38:44 +00:00
941fff725a vulkan-tools: sandbox with bunpen 2024-09-03 04:34:19 +00:00
d478b945c4 killall: sandbox with bunpen 2024-09-03 04:26:56 +00:00
769fdcee89 tree: sandbox with bunpen 2024-09-03 04:26:06 +00:00
b0aedb6714 pstree: sandbox with bunpen 2024-09-03 04:25:20 +00:00
20e71ad800 fd: sandbox with bunpen 2024-09-03 04:23:41 +00:00
0566e237aa alsaUtils: sandbox with bunpen 2024-09-03 04:23:13 +00:00
0df02b5ba3 bunpen: sandbox with bunpen 2024-09-03 03:56:11 +00:00
22a5bcc259 firefox: sandbox with bunpen 2024-09-03 03:55:52 +00:00
40d14460ab rofi: sandbox with bunpen
i had a lot of trouble with this... i *think* it's working now
2024-09-03 03:51:10 +00:00
ef0f6c2053 htop: sandbox with bunpen 2024-09-03 03:48:52 +00:00
71be891c85 string: sandbox with bunpen 2024-09-03 03:37:31 +00:00
a163a260fa errno: sandbox with bunpen 2024-09-03 03:37:05 +00:00
fe910ea153 brightnessctl: sandbox with bunpen 2024-09-03 03:32:34 +00:00
1e81c033aa pwvucontrol: sandbox with bunpen 2024-09-03 03:32:12 +00:00
f490a49921 pulsemixer: sandbox with bunpen 2024-09-03 03:31:14 +00:00
7b9874b90d ausyscall: sandbox with bunpen 2024-09-03 03:30:57 +00:00
4b52fe260c yt-dlp: sandbox with bunpen 2024-09-03 03:10:29 +00:00
8a2951a405 firefox: add YouTube search shortcut (yt) 2024-09-03 03:09:59 +00:00
c81e2fd6fa wget: sandbox with bunpen 2024-09-03 03:07:54 +00:00
1ac244d1de usbutils: sandbox with bunpen 2024-09-03 03:06:50 +00:00
f70d4b75b2 typescript-language-server: sandbox with bunpen 2024-09-03 03:06:36 +00:00
34aad6f74c python3-repl: sandbox with bunpen 2024-09-03 03:04:38 +00:00
d20359fc1d pyright: sandbox with bunpen 2024-09-03 03:01:06 +00:00
714f727f1a pavucontrol: sandbox with bunpen 2024-09-03 03:00:36 +00:00
eff8f2597c openscad-lsp: sandbox with bunpen 2024-09-03 02:59:59 +00:00
1d7a8c688a nmap: sandbox with bunpen 2024-09-03 02:59:22 +00:00
56bac1ac19 nixd: sandbox with bunpen 2024-09-03 02:58:48 +00:00
fbe00915bb nano: sandbox with bunpen 2024-09-03 02:58:23 +00:00
bf1d401b48 mercurial: document that sandboxing DOES work at present 2024-09-03 02:58:11 +00:00
424f6ef35a marksman: sandbox with bunpen 2024-09-03 02:57:24 +00:00
4637a3eee3 lua-language-server: sandbox with bunpen 2024-09-03 02:57:13 +00:00
d2e600dcf8 jq: sandbox with bunpen 2024-09-03 02:56:10 +00:00
a17369cebe sed: sandbox with bunpen 2024-09-03 02:55:34 +00:00
2d5cb84eef forkstat: document sandbox limitations 2024-09-03 02:54:27 +00:00
9050d8979e grep: sandbox with bunpen 2024-09-03 02:53:37 +00:00
15d668f1ca file: sandbox with bunpen 2024-09-03 02:48:13 +00:00
147efe0a9e dig: sandbox with bunpen 2024-09-03 02:47:32 +00:00
d11f3152d0 cargo,rust-analyzer: sandbox with bunpen 2024-09-03 02:46:54 +00:00
8a2a41ecc9 bash-language-server: sandbox with bunpen 2024-09-03 02:44:10 +00:00
f1000c9fba syshud: sandbox with bunpen 2024-09-03 02:40:03 +00:00
5266a8b8f2 ps: sandbox with bunpen 2024-09-03 02:28:52 +00:00
af99673043 ripgrep (rg): sandbox with bunpen
yay! im finally free of the sanebox ~/dev/cat symlink glitch!
2024-09-03 02:28:33 +00:00
eb562037b1 free: sandbox with bunpen 2024-09-03 02:26:17 +00:00
08ed8cd052 haredoc: sandbox with bunpen 2024-09-03 02:25:52 +00:00
ce7a082447 modules/programs: plum sandbox.keepPids and whitelistPwd into bunpen 2024-09-03 02:25:28 +00:00
53c4054bb7 less: sandbox with bunpen 2024-09-03 02:24:51 +00:00
070bc867da sane-deadlines: sandbox with bunpen 2024-09-03 02:24:25 +00:00
9bfc527aa7 dissent: sandbox with bunpen 2024-09-03 02:23:42 +00:00
c23cf48001 sane-sysload: sandbox with bunpen 2024-09-03 02:21:36 +00:00
dfffa564e2 signal-desktop: sandbox with bunpen 2024-09-03 02:13:52 +00:00
8a89e62063 bunpen: enable /dev/shm in the sandbox 2024-09-03 02:13:32 +00:00
71d32e442f dino: sandbox with bunpen 2024-09-03 02:13:00 +00:00
68ffdc113e neovim: sandbox with bunpen 2024-09-03 01:50:01 +00:00
8b0ca4d393 geary: sandbox with bunpen 2024-09-03 01:48:07 +00:00
743ede00c4 bunpen: avoid binding /proc entries; these especially confuse bwrap apps like geary 2024-09-03 01:47:49 +00:00
41d9eccfe8 bunpen: preserve argv0 in the wrapper 2024-09-03 01:45:48 +00:00
04eb5ed012 bunpen: more verbose logging when we exec 2024-09-03 01:45:28 +00:00
0279c030de loupe: sandbox with bunpen 2024-09-03 00:33:16 +00:00
f0ea3f8bf6 fractal: sandbox with bunpen 2024-09-03 00:32:03 +00:00
f3b9369783 bunpen: implement BUNPEN_DISABLE=1 env var to bypass sandboxing 2024-09-03 00:27:14 +00:00
5ae12272bd bunpen: restrict/namespace: fix so that nested mounts mount both paths
so e.g. '--bunpen-path /' at the end of the CLI will actually do something
2024-09-02 23:50:19 +00:00
6a1b4fdba1 bunpen: logging: make the exec log line easier to understand 2024-09-02 23:24:46 +00:00
0264ed68f4 bunpen: check syscall return codes more strictly
many syscalls say *specifically* in their documentation that they return 0 on success (implying no other value is success)
2024-09-02 22:39:52 +00:00
384472c1c4 nix: fix typo in NIXPATH introduced in a39d705ff5 2024-09-02 21:54:14 +00:00
1719943a6e bunpen: log the args it was invoked with 2024-09-02 21:53:41 +00:00
0ee51d1812 bunpen: peek through *all* symlinks, not just intermediary ones
`mount` doesnt seem to mount over symlinks, hence why we have to follow even terminal symlinks
2024-09-02 21:47:51 +00:00
5e84056715 bunpen: make --bunpen-caps all behave as shorthand for literally specifying every capability 2024-09-02 20:39:18 +00:00
da72fc9d52 bunpen: fix typo that prevented assigning caps >= 32 2024-09-02 20:36:37 +00:00
36e2f57b06 bunpen: proper capability boxing
the Amb/Bound sets are written as specified, and I/P set so as to be activated when we exec the wrapped program
2024-09-02 20:21:09 +00:00
bc2823d622 bunpen: better (still incomplete) capability boxing 2024-09-02 18:55:53 +00:00
8b53f97c1c bunpen: bind the different PR_CAP* prctl syscalls
see 'man prctl' for additional calls, some of which were omitted because i don't expect to need them
2024-09-02 17:02:02 +00:00
712b2c38f0 firefox: disable Ctrl+W shortcut
finally, i can stop accidentally killing tabs when i mean to backspace
2024-09-02 15:43:12 +00:00
3212664f37 firefox: migrate extraPolicies to overrides.cfg
this fixes that the bookmarks policy in extraPolicies was breaking my bookmarks import
2024-09-02 15:15:00 +00:00
98c62f66dd firefox: add duckduckgo search bookmark 2024-09-02 14:11:13 +00:00
1677f77fd6 firefox: statically define a few bookmarks 2024-09-02 14:04:47 +00:00
c5e21546ff firefox: refactor: split addons into separate file 2024-09-02 13:57:53 +00:00
5eb597b133 programs: firefox: move to subdir
then i'll split it into separate files fore easier management
2024-09-02 13:41:11 +00:00
90f7953615 firefox: remove dead code 2024-09-02 13:29:11 +00:00
ab15d2a991 programs: replace gnome-disk-utility with gparted
the latter *appears* to work better when sandboxed
2024-09-02 12:02:32 +00:00
eba9bb3099 feeds: subscribe to Charles Stross blog 2024-09-02 11:38:47 +00:00
3deb17125d make-sandboxed: handl polkit files when patching bin paths 2024-09-02 11:31:24 +00:00
49a38001bc update-feed: support sites which are accessible only by www.FOO and not toplevel FOO 2024-09-02 11:30:53 +00:00
a39d705ff5 nix: fix NIXPATH to be free of symlinks 2024-09-02 11:29:58 +00:00
4328a7ddf3 modules/programs: remove unused arguments 2024-09-02 10:26:42 +00:00
1b959272a1 moby: fetch the ANX7688 patch from lkml instead of armbian
didn't actually deploy this, but it builds
2024-09-02 10:07:37 +00:00
9d83f4cbf7 NetworkManager: reduce hardening options which broke IPv6 link-local addressing
'ip -6 addr' should show an address even on networks which aren't
routable. /proc or /sys sandboxing was preventing this (with error messages logged to syslog).
2024-09-01 23:13:30 +00:00
48fccebd1e iptables: temporarily disable sandbox
it was overrestrictive
2024-09-01 21:24:19 +00:00
8f4d4c97bc avahi: ensure that mDNS responses arent blocked by rpfilter
this PROBABLY isnt necessary, but keep it here as i debug stuff at least
2024-09-01 21:23:52 +00:00
0419e50cc3 upnp: fix rpfilter to support IPv6, too 2024-09-01 21:21:57 +00:00
80d3ad3d0e moby: wifi low power patch: clarify that it just mitigates, doesnt solve, the reconnections 2024-09-01 21:21:30 +00:00
3d3853d596 moby: rtw88 wifi: disable deep sleep to prevent disconnections 2024-09-01 17:37:53 +00:00
cfa60ce41c common/fs: remove dead nfs code 2024-09-01 15:50:28 +00:00
942ca82445 assorted: hosts/common: remove unused module parameters 2024-09-01 15:49:15 +00:00
336696bb06 scripts/deploy: show the nix copy command, to aid in manual runs 2024-09-01 15:41:33 +00:00
7d75b3c736 neovim: docs: suggest alternate mappings for nvim-cmp 2024-09-01 15:38:13 +00:00
3ca2c7ec53 sane-tag-media: fix escapes in docstring 2024-09-01 14:30:53 +00:00
9d605030c3 cross: wike: push build fix to upstream nixpkgs 2024-09-01 13:44:31 +00:00
e1d678093e ayatana, switchboard: push cross patches upstream 2024-09-01 13:16:39 +00:00
5586a3a87b moby: document status of linux 6.11 2024-09-01 11:35:20 +00:00
38c6ecefa6 programs: ship camera debugging tools 2024-09-01 11:31:10 +00:00
c80aa813d9 neovim: ship GitMessenger plugin for git-blame-like functionality 2024-09-01 01:12:27 +00:00
4f6ea0938c neovim: Ctrl+Space to autocomplete 2024-09-01 01:00:37 +00:00
7ed78686c2 hal/pine64: remove more commented out patches which are irrelevant to pinephone 2024-08-31 22:42:04 +00:00
96b90b84d3 linux-firmware-megous: lint 2024-08-31 21:57:33 +00:00
c32be5d170 hal/pine64: remove some commented out patches which are *definitely* irrelevant to pinephone
probably there are way more; i just have to make sense of the weird name scheme and be sure which sensors are/aren't on the pinephone
2024-08-31 21:50:50 +00:00
7830603ff3 cleanup: impure.nix: remove extraneous parentheses 2024-08-31 21:20:18 +00:00
98f028108e moby: remove old way of getting the armbian patches 2024-08-31 21:09:57 +00:00
1649e9e22f moby: remove outdated documentation 2024-08-31 21:08:08 +00:00
874ba132a8 crust-firmware-pinephone: remove unused pkgsCross input 2024-08-31 20:57:48 +00:00
1f0fa1cf2b WIP: moby: add the modem-power dev node back
my eg25-control script requires it; maybe someday i'll manage modem power from userspace as well -- that should be less error prone
2024-08-31 20:54:55 +00:00
98e32fbcab moby: add anxNNNN back to the device tree
i *suspect* this fixes/improves battery charging.
at least, i see the nwg-panel icon intermittently switch between
charging/not-charging, whereas before it ONLY ever showed not-charging.
2024-08-31 20:51:55 +00:00
947f2b821d moby: reduce the set of kernel patches
in fact i forgot to include the patch which adds anxNNNN to the device
tree, but it still boots to graphics. battery charging i *think* DOESN'T
work (needs the dts change probably)

waiting for this to deploy; i think i removed too many, and should have kept the anxNNNN device-tree patch, but unsure
2024-08-31 19:43:42 +00:00
68478b37fe moby: fix display for pseudo-mainline kernel
i'll work to reduce the patch stack... but it takes time to recompile/deploy
2024-08-31 18:20:41 +00:00
097f172e71 nixpkgs: remove no-longer-needed permittedInsecurePackages config 2024-08-31 18:19:14 +00:00
28be40a2c8 WIP: moby: enable the HDMI sound card
waiting on deploy; unsure if this achieves anything. but it applies and builds so why not, for now.
2024-08-31 17:10:32 +00:00
9daa12049f WIP: moby: ship mainline linux, with a few megi patches
100% mainline linux boots, with WiFi and battery charging, but no display

i'm trying to select megi patches that will enable the display; haven't found that yet. may be that the config requires tweaking (e.g. SIMPLEDRM stuff)
2024-08-31 17:09:39 +00:00
b9cd911c0d armbian-build: init
this repo contains (among other things) megi's kernel tree, exported as individual patches, where they can be easily cherry-picked and tracked
2024-08-31 17:03:17 +00:00
de2991a515 cleanup: nixpkgs/list: remove dead inputs 2024-08-31 17:01:11 +00:00
dd3dfc1988 todo.md: sync 2024-08-31 16:56:04 +00:00
a4dbca48fe all: remove the UV_USE_IO_URING=0 patch (seemingly fixed by linux 6.9/6.10?) 2024-08-31 07:22:05 +00:00
2cfccd948f nixpkgs: 0-unstable-2024-08-25 -> 0-unstable-2024-08-30 2024-08-31 07:15:00 +00:00
d911f92c28 nixpkgs-wayland: 0-unstable-2024-08-13 -> 0-unstable-2024-08-30 2024-08-31 07:14:51 +00:00
5a782551f7 syshud: 0-unstable-2024-08-24 -> 0-unstable-2024-08-27 2024-08-31 07:14:32 +00:00
c4f97fc31b uassets: 0-unstable-2024-08-21 -> 0-unstable-2024-08-30 2024-08-31 07:13:56 +00:00
b4f921ab04 programs: tangram: disable (i dont use it) 2024-08-31 07:13:39 +00:00
458a87045d uninsane-dot-org: 0-unstable-2024-08-14 -> 0-unstable-2024-08-29 2024-08-31 07:13:24 +00:00
ee4c699850 moby: fix cross: replace papers with zathura 2024-08-31 07:13:07 +00:00
341b150254 feeds: unsubscribe Sam Harris
he just kinda says the same thing over and over.
2024-08-30 20:38:18 +00:00
737df8c10e modules/programs: plumb capabilities into bunpen sandboxer 2024-08-30 20:36:11 +00:00
2053ba079c bunpen: plumb capabilities sandboxing into main
it produces visible effects (in the cap_i set), but it's useless until i also set ambient caps
2024-08-30 20:35:27 +00:00
04c937f04b bunpen: bind capset syscall, and plumb the caps into restrict::resources
but don't actually restrict them yet
2024-08-30 18:40:44 +00:00
475d1615fa bunpen: implement capability struct with parse method 2024-08-30 17:02:44 +00:00
25b3ccaa48 bunpen: split autodetect type into own file 2024-08-30 16:28:03 +00:00
735079e615 bunpen: config: make the help type not an error
asking for help isn't an error
2024-08-30 15:41:17 +00:00
1a1edc0d19 refactor: bunpen: config/translate_opts: guard file type more idiomatically
i hope. it's still really weird code here.
2024-08-30 15:34:54 +00:00
9148b49ba2 refactor: bunpen: config/translate_opts: make the autodetect logic not pollute the hardcoded path ingestion quite so much 2024-08-30 15:20:56 +00:00
67f6026c67 refactor: bunpen: config/translate_opts: rework the path detection code 2024-08-30 14:38:52 +00:00
cfb5a7651b refactor: bunpen: implement and use check_u64 to cover most remaining uses of ! 2024-08-30 13:41:11 +00:00
6f71d2f8db refactor: bunpen: switch a few more ! error unwraps to errors::ext::check 2024-08-30 13:25:41 +00:00
5f5cda9706 refactor: bunpen: namespace: swallow /proc/self/*_map errors instead of aborting 2024-08-30 13:17:24 +00:00
7ac4a6f060 refactor: bunpen: namespace: simplify the error paths 2024-08-30 13:10:00 +00:00
1d79f3eacc papers: ship in place of Zathura as the default pdf viewer 2024-08-30 12:53:05 +00:00
e5263915b9 refactor: namespace: leverage errors::ext::swallow where easily applicable 2024-08-30 12:42:28 +00:00
29cabd2ac4 bunpen: refactor: cleanup error checking impl 2024-08-30 12:23:48 +00:00
475037f9c9 bunpen: move rtext:: -> rt::ext:: 2024-08-30 12:03:23 +00:00
dab05a0f9c {check,swallow}_error: lift out of rtext into errors::ext
the ::ext namespace is required to prevent a circular dep within the std lib
2024-08-30 12:00:43 +00:00
d2bf8dbdbb bunpen: clone: place the clone flags behind an enum 2024-08-30 11:37:45 +00:00
3e5cb29a7d bunpen: namespace/umount: place the umount flags behind an enum 2024-08-30 11:31:12 +00:00
edeb153eb8 bunpen: namespace/mount: place the various mount flags behind an enum 2024-08-30 11:28:34 +00:00
61e8b99f72 bunpen: landlock: namespace the landlock_create_ruleset flags as well 2024-08-30 11:04:52 +00:00
566a61ca9f bunpen: landlock: namespace the different flags into enums 2024-08-30 10:57:48 +00:00
590cd36e53 bunpen: landlock: split out a helper to simplify the error handling 2024-08-30 10:33:33 +00:00
9803be75e1 bunpen: no_new_privs -> capabilities, in expectation of this file expanding in role 2024-08-30 09:43:46 +00:00
73583d19d4 programs: nix: ship nixVersions.latest
it gives better error messages, and i'm not seeing any regressions so far
2024-08-30 09:37:56 +00:00
19e2e37105 mpv: sandbox with bunpen instead of bwrap
it's far enough along to be actually working; though i likely give it a few more in-namespace capabilities than it really needs
2024-08-29 20:14:30 +00:00
f26f13ddf3 bunpen: bind "safe"-ish /de items 2024-08-29 20:13:37 +00:00
9c69666646 bunpen: expose a new /tmp to the sandbox 2024-08-29 20:13:20 +00:00
4f6b1b0a69 bunpen: bind a sandboxed /proc 2024-08-29 20:12:42 +00:00
bc1453f675 bunpen: mount /proc in the namespace, if pids are sandboxed 2024-08-29 16:47:02 +00:00
353057af23 bunpen: namespace: perform the first fork required for pid namespacing 2024-08-29 14:54:08 +00:00
7f5b55bc2a bunpen: simplify: share resources with the CLI parsing to avoid duplication 2024-08-29 14:17:42 +00:00
452ee68926 bunpen: lay the plumbing for future pid isolation 2024-08-29 14:13:38 +00:00
a2fa3727cc sane_sysvol: fix use of uninitialized volstr
hey, that lua language server is pretty neat ^_^
2024-08-29 11:43:19 +00:00
1676ef77ad bunpen: configure logging ASAP
this avoids dumping undesired spam to the console during the autodetect phase
2024-08-29 11:41:08 +00:00
39a7c1a6d9 bunpen: namespace: improve docs around path edgecases 2024-08-29 11:27:01 +00:00
d91e1d51c1 bunpen: handle intermediary symlinks when binding 2024-08-29 11:17:35 +00:00
f6d4dcaabb bunpen: fix outdated docs for namespace path binding 2024-08-29 11:10:37 +00:00
963a0ee56c mpv: setup profiles by which to tune youtube quality preferences and debanding 2024-08-29 10:17:53 +00:00
3e9e1168b4 bunpen: landlock: fix landlock access mode for unix sockets
the inode type for a socket is a superset of the inode type for a directory, so the bitmasking logic was wrong
2024-08-28 13:27:36 +00:00
14929c1102 programs: plum --bunpen-autodetect into modules/programs API 2024-08-28 11:37:18 +00:00
35848ece02 bunpen: implement --bunpen-autodetect 2024-08-28 11:35:58 +00:00
38ee8be785 bunpen: refactor: dont exit directly when parsing args, but return an error and let main do that 2024-08-27 22:28:06 +00:00
b3ea0ff2b3 bunpen: remove dead options i wont ever implement 2024-08-27 22:12:54 +00:00
e5cdd53537 bunpen: implement --bunpen-debug=n for more controlled logging 2024-08-27 20:48:26 +00:00
fb894bb7a5 bunpen: treelogger: implement log depth filtering 2024-08-27 20:36:31 +00:00
2ffacf0e44 bunpen: lay groundwork for a better logger 2024-08-27 20:36:31 +00:00
7dbe64e52f bunpen: preserve environment across exec boundary 2024-08-27 20:36:31 +00:00
b9fc61e627 modules/programs: plumb bunpen's home/run path binds 2024-08-27 20:36:31 +00:00
99de056048 bunpen: namespace: restore the working directory (if possible) after entering the mount namespace 2024-08-27 20:36:31 +00:00
469b9b9223 bunpen: prefer os::getpwd instead of relying on the PWD env var 2024-08-27 20:36:31 +00:00
2f6e54f331 bunpen: support --bunpen-home-path, --bunpen-run-path
still needs to be integrated into modules/programs
2024-08-27 20:36:31 +00:00
29886d7f10 servo: sftpgo: allow read-only media access via password auth 2024-08-27 13:52:40 +00:00
861014bca3 nixpkgs: fix patch hashes 2024-08-27 13:44:42 +00:00
3417a9fd3f sanebox: remove the portal logic, and delegate it to manual handling by those few apps which truly need special casing
it's a questionable responsibility to give to the sandbox itself (unless i also have the sandbox do things like dbus proxying, someday). and it will make the bunpen implementation simpler
2024-08-27 11:00:15 +00:00
83ef250a34 neovim: fix lints 2024-08-26 20:47:18 +00:00
59ba9e4853 neovim: disable ltex-ls plugin 2024-08-26 20:46:32 +00:00
3994beaa01 hosts/moby: disable the very heavy-weight LSPs (rust, typescript) 2024-08-26 17:17:10 +00:00
93159485fa neovim: integrate LSP for lua, LaTeX, html, markdown, nix, OpenSCAD, Rust, js/TypeScript :) 2024-08-26 16:49:00 +00:00
e1f5a55bca neovim: enable bash and python language servers 2024-08-26 14:06:49 +00:00
ea2739f86c neovim: enable "which-key" plugin 2024-08-26 14:06:49 +00:00
3c9ff16108 neovim: simplify plugin config schema 2024-08-26 14:06:49 +00:00
0787a3a50e neovim: split plugin configs into their own file 2024-08-26 14:06:49 +00:00
446e614e9a neovim: split vimrc into own file 2024-08-26 14:06:49 +00:00
afd0ec09a1 nixfmt-rfc-style: ship 2024-08-26 14:06:49 +00:00
422e8aeb3f sanebox: support existingDir{,OrParent} autodetect option 2024-08-26 14:06:49 +00:00
ae8e9267c4 nixpkgs: 0-unstable-2024-08-21 -> 0-unstable-2024-08-25 2024-08-26 08:15:49 +00:00
60c4b2e4c0 syshud: 2024-08-17 -> 2024-08-24, and apply nixfmt 2024-08-26 08:06:43 +00:00
289e9182fd bunpen: --bunpen-drop-shell: specify argv0 more correctly 2024-08-25 19:24:32 +00:00
ec7b87b985 bunpen: PARTIAL support for symlinks 2024-08-25 19:22:25 +00:00
9f5d7f2bb2 bunpen: fix mixup between argv0 and the rest of argv 2024-08-25 19:10:26 +00:00
64697a2cb8 bunpen: namespace: bind all requested user paths, and create requisite directories 2024-08-25 19:06:28 +00:00
1c50ff8fe4 bunpen: factor the pivot_root logic into some abstraction
is this really helpful? hard to tell for sure
2024-08-25 13:36:11 +00:00
3010ff89d0 bunpen: clean up mount namespacing so that i could bind any directory -- including /tmp 2024-08-25 13:27:31 +00:00
7a902cabfe bunpen: proof-of-concept mount namespace, exposing only *some* paths 2024-08-25 11:38:08 +00:00
64948a497d bunpen: write real uid/gid to /proc/self/uid_map 2024-08-24 20:38:33 +00:00
ccddc6f8e1 bunpen: TODO: calculate uid/gid at runtime 2024-08-24 20:12:51 +00:00
7d7abc9619 bunpen: namespace: simplify 2024-08-24 20:05:09 +00:00
f0efa0c255 bunpen: proof-of-concept mount namespacing 2024-08-24 20:01:27 +00:00
9ab6d101f6 bunpen: no_new_privs: propagate the error & handle it in main 2024-08-24 17:18:47 +00:00
164275fa59 bunpen: bind pivot_root to Hare 2024-08-24 12:35:55 +00:00
dbdd356691 bunpen: mv rtext/namespace -> rtext/unshare, to reflect that it is more limited in scope 2024-08-24 06:36:04 +00:00
c9157291b9 bunpen: namespace: unshare cgroup/ipc/uts, and net where possible 2024-08-24 05:20:54 +00:00
e315919b54 bunpen: run process inside a new user namespace 2024-08-24 05:12:27 +00:00
5f35eaccd9 programs/host: sandbox with bunpen instead of landlock
this just acts as a good proof-of-concept / testing it in the wild
2024-08-23 16:00:31 +00:00
c86d893a2c modules/programs: sandbox: allow method = "bunpen" 2024-08-23 16:00:31 +00:00
abb19b1fc9 bunpen: fix to allow binding files into the environment -- not just directories 2024-08-23 16:00:31 +00:00
ab4ebb012a bunpen: implement --bunpen-drop-shell flag 2024-08-23 16:00:31 +00:00
effec38a99 modules/programs: sandbox: introduce an interface which will allow for sandboxers other than sanebox 2024-08-23 16:00:31 +00:00
c5ed1263dc feeds: subscribe to justine.lol 2024-08-23 16:00:31 +00:00
e0d33862f0 bunpen: implement --bunpen-keep-net CLI arg 2024-08-23 16:00:31 +00:00
7d097474a3 bunpen: implement --bunpen-path cli arg 2024-08-23 16:00:31 +00:00
7a4a7d613b bunpen: implement basic arg parsing 2024-08-23 16:00:31 +00:00
e457cf96ae bunpen: break out a resources abstraction 2024-08-23 16:00:31 +00:00
f323c0f90d bunpen: rename "methods" -> "restrict" 2024-08-23 16:00:31 +00:00
5525ea4b59 bunpen: lift main up to the toplevel
it seems modules *do* support freestanding hare files at the toplevel -- but only if theres just one of them (?)
2024-08-23 16:00:31 +00:00
daa1783e21 bunpen: refactor kernel bindings into a rtext module
additionally, this requires moving all other files into their own directories, else hare doesn't seem to recognize 'rtext' as a module
2024-08-23 16:00:31 +00:00
27d5928155 bunpen: landlock: allow access to all of / 2024-08-23 16:00:31 +00:00
2f9dd4cd60 bunpen: landlock: fully restrict
of course, this means it's unable to 'exec' from disk -- for now
2024-08-23 16:00:31 +00:00
ba406e912f bunpen: landlock: cleaner bindings 2024-08-23 16:00:31 +00:00
45ff21822a feeds: sub JRE (we'll see how long this lasts...) 2024-08-23 06:09:33 +00:00
7ef9f0b455 bunpen: implement landlock_add_rule binding 2024-08-23 06:09:14 +00:00
ec90f5c066 bunpen: landlock: negotiate access modes with the running kernel 2024-08-22 17:30:07 +00:00
57e113137f bunpen: add minimal landlock API 2024-08-22 16:08:53 +00:00
2c390a8b6d bunpen: set no_new_privs before executing the command 2024-08-22 15:42:59 +00:00
634f13ba6b bunpen: use stdlib log isntead of raw fmt::printfln 2024-08-22 14:40:46 +00:00
dab7803cbb bunpen: execute the given argv 2024-08-22 14:34:08 +00:00
64f53020ee bunpen: explicitly configure 2-space indentation 2024-08-22 13:19:39 +00:00
e737d2e24b bunpen: run hare test during build 2024-08-22 13:19:21 +00:00
9b11b64349 haredoc: ship 2024-08-22 09:00:14 +00:00
212f6c0f48 bunpen: init at 0.1.0 2024-08-22 08:31:21 +00:00
a9cc0f28e2 feeds: subscribe to linuxdevtime podcast 2024-08-22 07:19:37 +00:00
3599f051b1 nixpkgs: 0-unstable-2024-08-19 -> 0-unstable-2024-08-21 2024-08-22 04:12:57 +00:00
d72a1c799e uassets: 0-unstable-2024-08-18 -> 0-unstable-2024-08-21 2024-08-22 04:12:39 +00:00
e78907b88b curlftpfs: remove -o interface... option and patch curl instead 2024-08-21 10:20:09 +00:00
04c41f6045 alsa-ucm-conf: make clear which data i last updated everything 2024-08-21 08:26:50 +00:00
32a52c3366 gnome-calls: document limitations/compatibility 2024-08-21 08:26:00 +00:00
55175e5957 geary: fix that it was failing to connect 2024-08-21 06:06:10 +00:00
b4b95be588 make-sandboxed: fix to preserve the specified output, for packages like dig 2024-08-21 04:00:45 +00:00
2758b0eae2 signal-desktop: DO start by default: until/unless i get signal-flare working, hosts which are capable should launch signal-desktop at boot 2024-08-21 03:30:16 +00:00
ae0d6cb8e8 make-sandboxed: preserve outputs of multiple-output packages
especially, this fixes the dconf service, since we keep '/libexec'
2024-08-21 03:28:02 +00:00
9c9b237e69 /mnt/servo/*: fix for curl 8.9.0
see: <https://github.com/curl/curl/discussions/14299>
2024-08-20 09:53:37 +00:00
17dcf566f7 loupe: add /dev/dri to the sandbox for faster rendering 2024-08-20 08:52:24 +00:00
bf94946759 nixpkgs: 0-unstable-2024-08-18 -> 0-unstable-2024-08-19 2024-08-20 08:52:07 +00:00
6e1ccc3e19 all: pin kernel to a later version (6.10, whereas it would be reduced to 6.6 by next nixpkgs update) 2024-08-20 08:51:38 +00:00
4055c6d3e9 podcasts: subscribe to C-Span's _The Weekly_ 2024-08-20 02:23:41 +00:00
ba8d9f2882 ayatana-ido: fix cross 2024-08-20 00:46:46 +00:00
82aa0eb1d6 flatpak: fix cross for 1.14.10 2024-08-19 23:39:31 +00:00
6341531122 syshud: 0-unstable-2024-08-10 -> 0-unstable-2024-08-17 2024-08-19 13:57:46 +00:00
c71d89e6af signal-desktop-from-src: disable automatic updates 2024-08-19 13:49:41 +00:00
995183a4fd koreader-from-src: disable automatic updates 2024-08-19 13:49:41 +00:00
ddffda1594 nixpkgs: 0-unstable-2024-08-13 -> 0-unstable-2024-08-18 2024-08-19 13:49:32 +00:00
c15cea08f6 nixpkgs-wayland: versionless update 2024-08-19 13:47:44 +00:00
7e73199b68 uassets: 0-unstable-2024-08-13 -> 0-unstable-2024-08-18 2024-08-19 13:46:50 +00:00
705a8a19c9 uninsane-dot-org: 0-unstable-2024-08-06 -> 0-unstable-2024-08-14 2024-08-19 13:46:30 +00:00
c8b28580a9 todo.md: sync 2024-08-19 13:30:46 +00:00
1b4266f8a7 hickory-dns: fix compilation error with newer rustc 2024-08-19 13:29:09 +00:00
aecbfb45c9 gnome-calls: dont fail offline indefinitely when DNS errors 2024-08-18 14:24:11 +00:00
e16a26fad2 sane-tag-media: implement --style video to aid in structuring an album-less library (e.g. an archive of Youtube videos, organized by channel) 2024-08-18 01:51:12 +00:00
7d23f9453e sane-tag-media: update docs 2024-08-17 22:42:51 +00:00
391c4f5aac geary: change the default autostart to true 2024-08-17 12:13:15 +00:00
48b0960966 moby: dont auto-start signal-desktop (its too battery draining) 2024-08-17 12:11:40 +00:00
9069a97c26 sane-tag-media: ignore QuarkXPress publisher 2024-08-17 10:53:45 +00:00
ca793af819 make-sandboxed: fix double-wrapping when two symlinks point to the same binary by non-canonical paths (e.g. mount.sshfs -> ../bin/sshfs) 2024-08-16 10:50:20 +00:00
05e2f6f2a0 todo.md: note that hickory-dns cant resolve shows.acast.com 2024-08-16 02:48:24 +00:00
08d6f9c761 dconf: sandbox out-of-place 2024-08-16 02:48:24 +00:00
05bc5923cf sway: sandbox out-of-place 2024-08-16 02:48:24 +00:00
114b37928a tor-browser: sandbox out-of-place 2024-08-16 02:44:27 +00:00
e846a5046a feeds: subscribe to 404 media 2024-08-16 02:41:17 +00:00
5dcb7b5cf6 scripts/init-feed: sanitize titles/descriptions 2024-08-16 02:39:56 +00:00
f603bad779 scripts/init-feed: support --podcast argument to select podcasts over text 2024-08-16 02:34:19 +00:00
729d2a9809 firefox: dont use inplace wrapper
avoiding inplace wrapping gives me more leverage over what gets linked into the final runtime environment
2024-08-16 02:16:37 +00:00
a552ed625b make-sandboxed: fix several edge-cases for e.g. brave, firefox, especially around handling of wrapped binaries 2024-08-16 02:15:46 +00:00
f3df321713 sanebox: fix pasta argv passing 2024-08-16 02:14:29 +00:00
62ebdf5de4 brave: fix sandboxing 2024-08-16 00:15:58 +00:00
f834f551ed assorted: clarify why i use wrapperType = inplace when sandboxing 2024-08-15 21:01:42 +00:00
140b61a944 slic3r: ship 2024-08-15 10:32:22 +00:00
db7767c679 assorted: remove some no-longer-needed sandbox.wrapperType = "inplace" declarations 2024-08-15 10:32:22 +00:00
fd6959230f make-sandboxed: handle /opt-style packaging, with toplevels linked into /bin, a bit better 2024-08-15 10:32:18 +00:00
87e9856497 sanebox: forward argv0 2024-08-15 10:31:21 +00:00
50b1d82b38 nixpkgs: fix hashes 2024-08-14 23:20:31 +00:00
60a4eb0bde gnome-calls: associate with tel:, sip:, sips: URIs 2024-08-14 08:27:27 +00:00
a96e83f4e1 doc: gnome-calls: document some UI elements 2024-08-14 07:53:47 +00:00
0d685f406e uassets: 2024-08-09 -> 2024-08-13 2024-08-13 22:02:37 +00:00
a16e33d7a6 sops-nix: 2024-08-05 -> 2024-08-12 2024-08-13 22:02:27 +00:00
f38d351869 syshud: 2024-08-03 -> 2024-08-10 2024-08-13 22:01:57 +00:00
e245164da3 nixpkgs-wayland: 2024-08-12 -> 2024-08-13 2024-08-13 22:01:31 +00:00
7df8f45e97 nixpkgs: 2024-08-12 -> 2024-08-13 2024-08-13 22:00:49 +00:00
e1ba371838 cross: flatpak: fix via nixpkgs patch instead of overlay 2024-08-13 07:20:24 +00:00
467283989f todo.md: fix Epiphany to persist cookies 2024-08-13 03:41:08 +00:00
db39dc209f xdg-desktop-portal-gnome: sandbox 2024-08-13 03:34:09 +00:00
7cf860a071 nixpkgs: update passt hash 2024-08-13 03:33:48 +00:00
77a753b0d6 gnome-maps: todo: better portal integration 2024-08-13 02:50:59 +00:00
e2a4f4d63e todo.md: newsflash and gnome-maps bugs to tackle 2024-08-13 02:48:08 +00:00
31fc072bce nixpkgs-overlays: try to be a little more pure 2024-08-12 21:56:30 +00:00
144afd8171 sway: fix wlroots drmSync bug via upstream patch 2024-08-12 21:52:44 +00:00
7d97355d2a overlays/cross: remove no-longer-necessary overrides 2024-08-12 21:20:16 +00:00
7827f6c584 sway: note that the activation patch is still necessary 2024-08-12 18:28:16 +00:00
e1899495a0 nixpkgs-wayland: 0-unstable-2024-08-06 -> 0-unstable-2024-08-12 2024-08-12 18:05:32 +00:00
a56ad56a4f refactor: move ~/.cache/nix persistence to hosts/common/programs/nix.nix 2024-08-12 16:06:26 +00:00
da551b8b97 geary: grant access to more files 2024-08-12 16:04:20 +00:00
ca412d08bd nautilus: grant access to more files 2024-08-12 16:04:11 +00:00
e7a1bb6ec0 nixpkgs: 2024-08-11 -> 2024-08-12 2024-08-12 10:30:04 +00:00
74acfeadd5 programs/assorted: clarify sandbox.enable = false situation 2024-08-12 10:27:41 +00:00
e7d5a61014 libcap: split into separate capsh and captree programs, and sandbox the latter 2024-08-12 10:13:50 +00:00
6f47708624 nixpkgs patches: send a few upstream; dont apply ffado patch here because my system doesnt use it 2024-08-12 10:10:06 +00:00
fc826a3503 libcap: patch in captree locally rather than via a nixpkgs patch that would force mass rebuilds 2024-08-12 09:39:43 +00:00
ccb2b7b8b6 nixpkgs: update libcap patch to grab from the PR 2024-08-12 09:18:50 +00:00
78169d50f2 overlays/cross: remove upstreamed patches; simplify rust things 2024-08-12 09:14:42 +00:00
33a7d3536d nixpkgs: update patches 2024-08-12 09:14:00 +00:00
7899c8d033 syshud: 0-unstable-2024-07-29 -> 0-unstable-2024-08-10 2024-08-12 02:37:03 +00:00
82b662a733 nixpkgs: remove dead (upstreamed) patches 2024-08-12 02:13:07 +00:00
d4290588bf rename: trust-dns -> hickory-dns 2024-08-12 01:23:39 +00:00
bd97fb9ec9 nixpkgs: 24.05-unstable-2024-08-09 -> 24.05-unstable-2024-08-11 2024-08-12 01:08:03 +00:00
4dbff9c18f scripts/deploy: shorten "--action copy" to just "--copy" 2024-08-12 01:07:50 +00:00
bfe278c17a feeds: subscribe to Weird Little Guys 2024-08-12 00:35:34 +00:00
295e07d535 sane-tag-media: fix lingering crashes around --derive behavior 2024-08-12 00:13:42 +00:00
d39459d8b5 NetworkManager: tighten the systemd sandboxing 2024-08-11 22:54:47 +00:00
4d5e60756b modemmanager: make its capabilities more obvious 2024-08-11 22:54:41 +00:00
119afcf393 firefox: remove open-in-mpv (obsoleted by firefox-xdg-open) 2024-08-11 22:37:12 +00:00
d3d970eb3e firefox: dont require approval to open xdg-open: URIs 2024-08-11 22:32:26 +00:00
c0d5004926 firefox: add a right-click context menu to open any URI with the system handler
it still prompts the user to allow it, but i'll fix that later i guess
2024-08-11 22:26:23 +00:00
d9a876e49a fractal: association with https://matrix.to links 2024-08-11 21:45:51 +00:00
5a9dd89475 sane-vpn: fix global up/down action 2024-08-11 21:01:11 +00:00
5e71e5a067 moby: enable bluetooth 2024-08-11 06:27:07 +00:00
f0b0d15ad7 evtest: ship 2024-08-11 06:26:58 +00:00
8aebc1fe87 feeds: subscribe to Oyez supreme court oral arguments 2024-08-10 11:16:54 +00:00
764c2a3276 Revert "nixpkgs-wayland: 0-unstable-2024-08-06 -> 0-unstable-2024-08-09"
This reverts commit ce1c3ec804.

while the nixpkgs-wayland bump works fine on lappy/desko,
it causes moby to be stuck on the white screen after unlocking.
2024-08-10 04:16:31 +00:00
a2f34be9d6 avahi: fix so the dbus policy files get installed system wide, again 2024-08-10 02:59:20 +00:00
bda172bc2d avahi: harden systemd service
N.B.: i haven't tested this on moby yet (which advertizes the gps-share service) nor on servo (which maybe uses it for jellyfin, idk)
2024-08-10 02:04:57 +00:00
a91a2d8a7f gps-share: fix sandboxing 2024-08-10 01:10:31 +00:00
875d919fa8 systemd-rfkill: harden 2024-08-10 00:34:13 +00:00
a323f321b5 snapper: disable
it wasn't working to begin with
2024-08-10 00:09:58 +00:00
f986936bbd wg-home-refresh: use the sandboxed wireguard-tools 2024-08-09 23:52:31 +00:00
3d773fe375 sanebox: improve the capsh stuff a bit more 2024-08-09 23:52:16 +00:00
055ad222e3 wg-home-refresh: harden systemd service 2024-08-09 23:05:58 +00:00
3aafcb0aa8 sanebox: capshonly: be more precise about preserving e/i/p capabilities
with this, gocryptfs works AND wg works
2024-08-09 22:55:02 +00:00
c85f02ca68 scripts/sync: dont rely on /mnt/$self existing 2024-08-09 21:41:56 +00:00
eeafc34ccf hare-ev: 2024-07-11 -> 2024-08-06 2024-08-09 21:41:56 +00:00
039ffcdcd4 newsflash: sandbox 2024-08-09 21:35:33 +00:00
2a35cb5379 mime.urlAssociations: clarify regexes by using $ terminator 2024-08-09 20:57:13 +00:00
3db009bc98 mpv: associate with all web audio/video resources 2024-08-09 20:55:00 +00:00
1e840e72b3 nixpkgs: 24.05-unstable-2024-08-06 -> 24.05-unstable-2024-08-09 2024-08-09 10:34:20 +00:00
ce1c3ec804 nixpkgs-wayland: 0-unstable-2024-08-06 -> 0-unstable-2024-08-09 2024-08-09 10:34:02 +00:00
09dd69a855 uassets: 0-unstable-2024-08-06 -> 0-unstable-2024-08-09 2024-08-09 10:33:29 +00:00
cbe71868ef newsflash: deploy 2024-08-09 10:25:53 +00:00
7b043d0c87 newsflash: simplify cross compilation 2024-08-09 10:14:59 +00:00
fd0188025d newsflash: fix cross compilation 2024-08-09 09:46:40 +00:00
1c57ffa798 newsflash-nixified: init at 3.3.4 (doesn't build!)
it's doing complicated things with glib macros that i can't get to work.
2024-08-09 03:50:36 +00:00
1d205a89bc sway: fix gnome-calls to always be on workspace 1 2024-08-08 23:59:19 +00:00
5ff643aa2f foliate: fix sandboxing 2024-08-08 23:58:02 +00:00
bfdf63e641 calls: 46.3 -> 47.0-beta 2024-08-08 23:57:47 +00:00
c695f7a979 foliate: ship 2024-08-08 21:08:51 +00:00
b3b38451b5 koreader-from-src: add an update script (only updates the toplevel, at the moment) 2024-08-08 18:47:03 +00:00
1ee81db537 switch xdg-desktop-portal-gtk -> xdg-desktop-portal-gnome
the gnome file chooser is far more responsive, on moby

though thumbnailing doesnt work, which may degrade the desktop experience :-(
2024-08-08 09:43:47 +00:00
b9947c05ca xdg-desktop-portal-gnome: fix cross compilation 2024-08-08 09:05:26 +00:00
2de6491583 xdg-desktop-portal-gnome: get working as a xdp backend, on lappy
probably needs some porting to moby before it works there
2024-08-08 08:52:24 +00:00
4525df58e0 rsyslog: disable 2024-08-08 07:40:59 +00:00
9d1ffc7c43 todo.md: document some connectivity issues 2024-08-08 03:41:52 +00:00
a69af91b7b add /mnt/servo/home to my hosts 2024-08-08 00:45:33 +00:00
7b5d655c91 scripts/check-backups: show how to view the host's last-completed 2024-08-07 23:00:44 +00:00
de6ffe6b75 flare-signal: update compatibility notes 2024-08-07 22:07:56 +00:00
f8aea34e96 sanebox: bwrap: make user namespace unsharing more obvious 2024-08-07 21:23:21 +00:00
49efb94a0a seatd: restrict capabilities 2024-08-07 20:30:29 +00:00
9b1e053ead seatd: place the socket in a place that lends itself to better sandboxing 2024-08-07 19:37:20 +00:00
235dc86155 todo.md: delete completed sandboxing items 2024-08-07 01:33:31 +00:00
6dad290cd5 duplicity: purge 2024-08-07 01:33:31 +00:00
cc6ed6c0ec flare-signal: annotate my notes on it with datestamps 2024-08-07 01:23:43 +00:00
cc3aba3cc2 servo: fix postfix: dont start until after the mail dir has been mounted 2024-08-07 00:17:17 +00:00
41f08125bb scripts/check-backups: convert timestamps to hours 2024-08-06 21:50:49 +00:00
27487fe870 scripts/check-admin: script to show which (if any) services require tending to registration attempts 2024-08-06 21:40:48 +00:00
d45ea622d1 servo: disable email-based registration gating 2024-08-06 21:39:32 +00:00
247fd3f807 less: tune flags, especially for systemd/journalctl 2024-08-06 19:25:10 +00:00
816e2a7065 nixpkgs: 24.05-unstable-2024-08-04 -> 24.05-unstable-2024-08-06 2024-08-06 19:08:39 +00:00
be842d5c5e nixpkgs-wayland: 0-unstable-2024-08-03 -> 0-unstable-2024-08-06 2024-08-06 19:08:30 +00:00
fa6ec981e0 sops-nix: assets-unstable-2024-07-27 -> assets-unstable-2024-08-05 2024-08-06 19:08:16 +00:00
52b4c1542a uassets: 0-unstable-2024-08-03 -> 0-unstable-2024-08-06 2024-08-06 19:08:00 +00:00
3ff59247da uninsane-dot-org: ? -> 2024-08-06 2024-08-06 19:07:44 +00:00
d9c0855c4e fractal-nixified: 7 -> 8 2024-08-06 08:26:50 +00:00
1a67a05238 transmission/torrent-done: make files readable (speculative) 2024-08-06 08:26:16 +00:00
1cdeedd9ec servo: partially ship ollama 2024-08-06 08:24:29 +00:00
6830bb7097 servo: transmission: simplify the rsync call
i'm having perms issues _somewhere_
2024-08-06 08:14:45 +00:00
316b0bee3a landlock-sandboxer: disable the ABI mismatch warnings 2024-08-06 07:20:00 +00:00
638655ff83 mnt-servo-*-reachable.service: harden systemd service 2024-08-06 06:43:10 +00:00
5e57e78411 /mnt/servo/*: fix to not hang the mount when fs is offline
this is an unfortunate effect of the drop_privileges part of fuse3,
that the mount is active as soon as the fs implementation is launched,
instead of when it enters `fuse_main`.
2024-08-06 05:54:31 +00:00
3859619ae0 curlftpfs-sane: implement "-o exit_after_connect" 2024-08-06 05:53:45 +00:00
646c2dd85a common/fs: mount curlftpfs using fuse3 2024-08-06 04:48:47 +00:00
0655b6906c curlftpfs: implement readdir
i think now all the stuff you'd expect of a basic fs now actually works
2024-08-06 04:11:32 +00:00
3019f90f5d curlftpfs-sane: upgrade to fuse3 2024-08-06 03:00:11 +00:00
020e5f8c6e /mnt/persist/private: split waiting on the keyfile out of the mount process 2024-08-06 02:03:55 +00:00
809c3af7fa /mnt/persist/private: minor improvements to file permissions 2024-08-06 01:26:53 +00:00
93cb1bc546 /mnt/persist/private: sandbox in a way that the actual gocryptfs instance doesn't get CAP_SYS_ADMIN 2024-08-06 00:52:48 +00:00
53acab834c refactor: persist/stores/ephemeral: move to its own source directory 2024-08-05 23:05:02 +00:00
3a0610b029 /mnt/persist/ephemeral: sandbox in a way that the actual gocryptfs instance doesn't get CAP_SYS_ADMIN
instead, only fuse does, and the capability is lost during the handoff between fuse and gocryptfs
2024-08-05 23:04:14 +00:00
9cee460d7e gocryptfs: sandbox with landlock
now /mnt/persist/ephemeral implementation can't access /mnt/persist/private; /mnt/persist/private can't access /mnt/desko/home, and so on
2024-08-05 23:01:38 +00:00
e657507a76 libfuse-sane: search for mount helpers on /run/current-system/sw/bin 2024-08-05 23:00:05 +00:00
c706a19836 landlock-sandboxer: rename the binary, so that it can be included on PATH without collisions 2024-08-05 22:59:14 +00:00
566e15286b sanebox: don't assume 'readlink' is available in the environment 2024-08-05 22:56:18 +00:00
d1b4e9c923 sanebox: allow /dev/fd in the sandbox by default 2024-08-05 22:55:12 +00:00
5eca45891b sanebox: fix landlock sandboxing IAB edgecases
i don't fully understand it. but adjusting the Inh capability set breaks things like gocryptfs. i think it isn't necessary: if we set E alone, and no-new-privs, then that gets us the same guarantees.
2024-08-05 22:54:20 +00:00
722fe8f368 libcap: ship the optional 'captree' component 2024-08-05 05:30:14 +00:00
e25dd98f6c spot/spotify: disable
i don't use spotify atm
2024-08-05 00:47:59 +00:00
54e9d4a0ae sane-vpn: switch back to bwrap instead of pasta 2024-08-04 18:56:17 +00:00
9f3a13eeb8 nixpkgs: 24.05-unstable-2024-08-02 -> 24.05-unstable-2024-08-04 2024-08-04 02:19:14 +00:00
5605ffda4b nixpkgs-wayland: 0-unstable-2024-08-02 -> 0-unstable-2024-08-03 2024-08-04 02:18:57 +00:00
9165925469 syshud: 0-unstable-2024-07-29 -> 0-unstable-2024-08-03 2024-08-04 02:18:37 +00:00
f65bf2b433 uassets: 0-unstable-2024-08-02 -> 0-unstable-2024-08-03 2024-08-04 02:18:14 +00:00
0f60a86ed4 hare-ev: 0-unstable-2024-07-07 -> 0-unstable-2024-07-11 2024-08-04 01:08:37 +00:00
b488b6748d nixos/pam: replace apparmor warnings with assertions 2024-08-04 00:50:41 +00:00
ef6b7cf175 syshud: 0-unstable-2024-07-16 -> 0-unstable-2024-07-29 2024-08-04 00:39:04 +00:00
0906d76f83 libcap_ng: ship 2024-08-03 23:27:53 +00:00
90c495e74c libfuse-sane: ship 2024-08-03 22:59:34 +00:00
74662df720 persist/{private,ephemeral}: mount via fuse
gocryptfs is compatible with --drop-permissions style of mount.fuse3. only, i can't actually use that today because i need to keep permissions :o

but maybe i'll enable that in the future
2024-08-03 18:51:58 +00:00
2b3278eb7f /mnt/$host/home: layer bwrap sandboxing after the drop-privileges passoff 2024-08-03 17:11:11 +00:00
9b4e91fbd9 /mnt/$host/home: harden systemd settings 2024-08-03 16:27:42 +00:00
734627232a /mnt/$host/home: mount with drop_privileges 2024-08-03 15:13:04 +00:00
3adbbe5fa7 /mnt/$host/home: run as user instead of as root 2024-08-03 15:13:04 +00:00
b4a244df7a rsync-net: fix /nix/persist/private path 2024-08-03 14:32:44 +00:00
97268e9b26 curlftpfs-sane: rename from curlftpfs
i already patched it significantly; i plan to port to fuse3 shortly
2024-08-03 14:32:01 +00:00
bebf6bdaeb rsync-net: hardcode fewer paths 2024-08-03 11:38:43 +00:00
04fc601c9c rsync-net: fix sandboxing (dont set PrivateUsers: we lose perms in the root ns doing that) 2024-08-03 11:25:50 +00:00
ee062d61d0 sane-tag-media: rework the tag extrapolation to be less intrusive 2024-08-03 07:58:43 +00:00
0dba9987c5 sane-tag-media: remove unused "confirm" function 2024-08-03 07:19:53 +00:00
4761690b6d sane-tag-media: have --derive + --override-existing NOT override the existing tags when the derived ones apear to be simply lower-quality versions of the same on-disk data 2024-08-03 07:19:08 +00:00
604782c3a6 sane-tag-media: refactor (simplify) 2024-08-03 03:57:09 +00:00
365d33c357 sane-tag-media: empty manual tags always overwrite tags, regardless of --override-existing flag 2024-08-03 03:38:22 +00:00
a39ad8a508 sane-tag-media: rename --force flag to --override-existing 2024-08-03 03:31:16 +00:00
c49e9a4c2b sane-tag-media: implement the --ignore-existing flag 2024-08-03 03:18:07 +00:00
36491842cc sanebox: bwrap: micro-optimize to not require env 2024-08-02 22:44:27 +00:00
81ea2210c9 sanebox: allow keeping the net namespace 2024-08-02 22:44:27 +00:00
f678508b33 sanebox: add --sanebox-capsh-arg flag 2024-08-02 22:44:27 +00:00
6135be5f72 sanebox: refactor: bwrapFlags -> bwrapArgs 2024-08-02 22:44:27 +00:00
c8989ca1a8 pasta: allow running as root 2024-08-02 22:44:26 +00:00
1d665f8ecc sanebox: support "--sanebox-cap all" special case 2024-08-02 22:43:52 +00:00
7c284ad8da sane-vpn: use pasta instead of full bwrap for net namespacing 2024-08-02 22:42:56 +00:00
1c26674da7 rsync-net: temporarily use only RestrictNetworkInterfaces option and disable the internal sane-vpn logic
this is temporary, until i can fix sane-vpn to preserve linux capabilities
2024-08-02 22:10:44 +00:00
dae8481176 firefox: ship a "stub DNS" desktop file variant
though note that my stub-dns seems to be broken recently...
2024-08-02 21:41:07 +00:00
42b27f0433 sane-vpn: fix broken doc on --verbose flag 2024-08-02 21:39:29 +00:00
84be0cae5a todo.md: note another website which doesnt resolve with trust-dns 2024-08-02 21:20:31 +00:00
fbfd0afca4 common/fs: only desclare /mnt/$host mounts for hosts this machine is authorized to access 2024-08-02 20:29:22 +00:00
e586b7b449 signal-desktop-from-src: 7.16.0 -> 7.18.0 2024-08-02 10:52:44 +00:00
222c37b056 uassets: 2024-07-29 -> 2024-08-02 2024-08-02 10:52:25 +00:00
53b17ec230 nixpkgs-wayland: 2024-07-28 -> 2024-08-02 2024-08-02 10:52:07 +00:00
7697704aff nixpkgs: 2024-07-31 -> 2024-08-02 2024-08-02 10:51:44 +00:00
1535 changed files with 639059 additions and 20969 deletions

3
.gitignore vendored
View File

@@ -1,4 +1,5 @@
.working
/build
/.working
result
result-*
/secrets/local.nix

View File

@@ -1,10 +1,12 @@
keys:
- &user_desko_colin age1tnl4jfgacwkargzeqnhzernw29xx8mkv73xh6ufdyde6q7859slsnzf24x
- &user_flowy_colin age1nw3z25gn6l8gxneqw43tp8d2354c83d9sn3r0dqy5tapakdwhyvse0j2cc
- &user_lappy_colin age1j2pqnl8j0krdzk6npe93s4nnqrzwx978qrc0u570gzlamqpnje9sc8le2g
- &user_servo_colin age1z8fauff34cdecr6sjkre260luzxcca05kpcwvhx988d306tpcejsp63znu
- &user_moby_colin age1zsrsvd7j6l62fjxpfd2qnhqlk8wk4p8r0dtxpe4sdgnh2474095qdu7xj9
- &host_crappy age1hl50ufuxnqy0jnk8fqeu4tclh4vte2xn2d59pxff0gun20vsmv5sp78chj
- &host_desko age1vnw7lnfpdpjn62l3u5nyv5xt2c965k96p98kc43mcnyzpetrts9q54mc9v
- &host_flowy age1azm6carlm6tdjup37u5dr40585vjujajev70u4glwd9sv7swa99sk6mswx
- &host_lappy age1w7mectcjku6x3sd8plm8wkn2qfrhv9n6zhzlf329e2r2uycgke8qkf9dyn
- &host_servo age1tzlyex2z6t88tg9h82943e39shxhmqeyr7ywhlwpdjmyqsndv3qq27x0rf
- &host_moby age18vq5ktwgeaysucvw9t67drqmg5zd5c5k3le34yqxckkfj7wqdqgsd4ejmt
@@ -13,11 +15,13 @@ creation_rules:
key_groups:
- age:
- *user_desko_colin
- *user_flowy_colin
- *user_lappy_colin
- *user_servo_colin
- *user_moby_colin
- *host_crappy
- *host_desko
- *host_flowy
- *host_lappy
- *host_servo
- *host_moby
@@ -25,6 +29,7 @@ creation_rules:
key_groups:
- age:
- *user_desko_colin
- *user_flowy_colin
- *user_lappy_colin
- *user_servo_colin
- *host_servo
@@ -32,18 +37,28 @@ creation_rules:
key_groups:
- age:
- *user_desko_colin
- *user_flowy_colin
- *user_lappy_colin
- *host_desko
- path_regex: secrets/flowy*
key_groups:
- age:
- *user_lappy_colin
- *user_flowy_colin
- *user_desko_colin
- *host_flowy
- path_regex: secrets/lappy*
key_groups:
- age:
- *user_lappy_colin
- *user_flowy_colin
- *user_desko_colin
- *host_lappy
- path_regex: secrets/moby*
key_groups:
- age:
- *user_desko_colin
- *user_flowy_colin
- *user_lappy_colin
- *user_moby_colin
- *host_moby

View File

@@ -17,24 +17,27 @@ the only hard dependency for my exported pkgs/modules should be [nixpkgs][nixpkg
building [hosts/](./hosts/) will require [sops][sops].
you might specifically be interested in these files (elaborated further in #key-points-of-interest):
- ~~[`sxmo-utils`](./pkgs/additional/sxmo-utils/default.nix)~~
- these files will remain until my config settles down, but i no longer use or maintain SXMO.
- [my packages](./pkgs/by-name)
- [my implementation of impermanence](./modules/persist/default.nix)
- my way of deploying dotfiles/configuring programs per-user:
- [modules/fs/](./modules/fs/default.nix)
- [modules/programs/](./modules/programs/default.nix)
- [modules/users/](./modules/users/default.nix)
if you find anything here genuinely useful, message me so that i can work to upstream it!
[nixpkgs]: https://github.com/NixOS/nixpkgs
[sops]: https://github.com/Mic92/sops-nix
[uninsane-org]: https://uninsane.org
## Using This Repo In Your Own Config
follow the instructions [here][NUR] to access my packages through the Nix User Repositories.
[NUR]: https://nur.nix-community.org/
## Layout
- `doc/`
- instructions for tasks i find myself doing semi-occasionally in this repo.
@@ -52,7 +55,7 @@ follow the instructions [here][NUR] to access my packages through the Nix User R
- `pkgs/`
- derivations for things not yet packaged in nixpkgs.
- derivations for things from nixpkgs which i need to `override` for some reason.
- inline code for wholly custom packages (e.g. `pkgs/additional/sane-scripts/` for CLI tools
- inline code for wholly custom packages (e.g. `pkgs/by-name/sane-scripts/` for CLI tools
that are highly specific to my setup).
- `scripts/`
- scripts which aren't reachable on a deployed system, but may aid manual deployments.
@@ -79,44 +82,40 @@ i.e. you might find value in using these in your own config:
- populated with some statically-defined data
- populated according to some script
- created as a dependency of some service (e.g. `nginx`)
- values defined here are applied neither at evaluation time _nor_ at activation time.
- rather, they become systemd services.
- systemd manages dependencies
- e.g. link `/var/www -> /mnt/my-drive/www` only _after_ `/mnt/my-drive/www` appears)
- this is akin to using [Home Manager's][home-manager] file API -- the part which lets you
statically define `~/.config` files -- just with a different philosophy.
namely, it avoids any custom activation scripts by leveraging `systemd-tmpfiles`.
- `modules/persist/`
- my alternative to the Impermanence module.
- this builds atop `modules/fs/` to achieve things stock impermanence can't:
- persist things to encrypted storage which is unlocked at login time (pam_mount).
- my implementation of impermanence, built atop the above `fs` module, with a few notable features:
- no custom activation scripts or services (uses `systemd-tmpfiles` and `.mount` units)
- "persist" cache directories -- to free up RAM -- but auto-wipe them on mount
and encrypt them to ephemeral keys so they're unreadable post shutdown/unmount.
- persist to encrypted storage which is unlocked at login time.
- `modules/programs/`
- like nixpkgs' `programs` options, but allows both system-wide or per-user deployment.
- allows `fs` and `persist` config values to be gated behind program deployment:
- e.g. `/home/<user>/.mozilla/firefox` is persisted only for users who
`sane.programs.firefox.enableFor.user."<user>" = true;`
- allows aggressive sandboxing any program:
- `sane.programs.firefox.sandbox.method = "bwrap"; # sandbox with bubblewrap`
- `sane.programs.firefox.sandbox.enable = true; # wraps the program so that it isolates itself into a new namespace when invoked`
- `sane.programs.firefox.sandbox.whitelistWayland = true; # allow it to render a wayland window`
- `sane.programs.firefox.sandbox.extraHomePaths = [ "Downloads" ]; # allow it read/write access to ~/Downloads`
- integrated with `fs` and `persist` modules so that programs' config files and persisted data stores are linked into the sandbox w/o any extra involvement.
- `modules/users/`
- convenience layer atop the above modules so that you can just write
`fs.".config/git"` instead of `fs."/home/colin/.config/git"`
- per-user services managed by [s6-rc](https://www.skarnet.org/software/s6-rc/)
some things in here could easily find broader use. if you would find benefit in
them being factored out of my config, message me and we could work to make that happen.
- simplified `systemd.services` API
[home-manager]: https://github.com/nix-community/home-manager
## Mirrors
this repo exists in a few known locations:
- primary: <https://git.uninsane.org/colin/nix-files>
- mirror: <https://github.com/nix-community/nur-combined/tree/master/repos/colinsane>
## Contact
if you want to contact me for questions, or collaborate to split something useful into a shared repo, etc,

167
TODO.md
View File

@@ -1,111 +1,129 @@
## BUGS
- alacritty Ctrl+N frequently fails to `cd` to the previous directory
- bunpen dbus sandboxing can't be *nested* (likely a problem in xdg-dbus-proxy)
- dissent has a memory leak (3G+ after 24hr)
- set a max memory use in the systemd service, to force it to restart as it leaks?
- `rmDbusServices` may break sandboxing
- e.g. if the package ships a systemd unit which references $out, then make-sandboxed won't properly update that unit.
- `rmDbusServicesInPlace` is not affected
- when moby wlan is explicitly set down (via ip link set wlan0 down), /var/lib/trust-dns/dhcp-configs doesn't get reset
- `ip monitor` can detect those manual link state changes (NM-dispatcher it seems cannot)
- or try dnsmasq?
- trust-dns can't resolve `abs.twimg.com`
- trust-dns can't resolve `social.kernel.org`
- trust-dns can't resolve `pe.usps.com`
- sandbox: link cache means that if i update ~/.config/... files inline, sandboxed programs still see the old version
- mpv: continues to play past the end of some audio files
- mpv: audiocast has mpv sending its output to the builtin speakers unless manually changed
- `ssh` access doesn't grant same linux capabilities as login
- syshud (volume overlay): when casting with `blast`, syshud doesn't react to volume changes
- moby: kaslr is effectively disabled
- `dmesg | grep "KASLR disabled due to lack of seed"`
- fix by adding `kaslrseed` to uboot script before `booti`
- <https://github.com/armbian/build/pull/4352>
- not sure how that's supposed to work with tow-boot; maybe i should just update tow-boot
- moby: bpf is effectively disabled?
- `dmesg | grep 'systemd[1]: bpf-lsm: Failed to load BPF object: No such process'`
- `dmesg | grep 'hid_bpf: error while preloading HID BPF dispatcher: -22'`
- `s6` is not re-entrant
- so if the desktop crashes, the login process from `unl0kr` fails to re-launch the GUI
- dissent: if i launch it without net connectivity, it gets stuck at the login, and never tries again
- newsflash on moby can't play videos
- "open in browser" works though -- in mpv
- gnome-maps can't use geoclue *and* openstreetmap at the same time
- get gnome-maps to speak xdg-desktop-portal, and this will be fixed
- epiphany can't save cookies
- see under "preferences", cookies are disabled
- prevents logging into websites (OpenStreetMap)
- works when sandbox is disabled
- rsync to ssh target fails because of restrictive sandboxing
- `/mnt/.servo_ftp` retries every 10s, endlessly, rather than doing a linear backoff
- repro by `systemctl stop sftpgo` on servo, then watching `mnt-.servo_ftp.{mount,timer}` on desko
- `ovpns` (and presumably `doof`) net namespaces aren't firewalled
- not great because things like `bitmagnet` expose unprotected admin APIs by default!
- moby: NetworkManager doesn't connect to network until _after_ `systemctl restart NetworkManager`
- probably a dependency ordering issue
- e.g. we try to bring up NetworkManager before bringing up `lo`
- could be a perms issue (over-restrictive sandboxing)
## REFACTORING:
- fold hosts/modules/ into toplevel modules/
- add import checks to my Python nix-shell scripts
- consolidate ~/dev and ~/ref
- ~/dev becomes a link to ~/ref/cat/mine
- fold hosts/common/home/ssh.nix -> hosts/common/users/colin.nix
- don't hardcode IP addresses so much in servo
- modules/netns: migrate `sane.netns.$NS.services = [ FOO ]` option to be `systemd.services.$FOO.sane.netns = NS`
- then change the ExecStartPre check to not ping `ipinfo.net` or whatever.
either port all of `sane-ip-check` to use a self-hosted reflector,
or settle for something like `test -eq "$(ip route get ...)" "$expectedGateway"`
### sops/secrets
- rework secrets to leverage `sane.fs`
- remove sops activation script as it's covered by my systemd sane.fs impl
- user secrets could just use `gocryptfs`, like with ~/private?
- can gocryptfs support nested filesystems, each with different perms (for desko, moby, etc)?
### roles
- allow any host to take the role of `uninsane.org`
- will make it easier to test new services?
### upstreaming
- add updateScripts to all my packages in nixpkgs
- upstream blueprint-compiler cross fixes -> nixpkgs
- upstream cargo cross fixes -> nixpkgs
- upstream `gps-share` package -> nixpkgs
#### upstreaming to non-nixpkgs repos
- gnome-calls: retry net connection when DNS is down
- gtk: build schemas even on cross compilation: <https://github.com/NixOS/nixpkgs/pull/247844>
- linux: upstream PinePhonePro device trees
- nwg-panel: configurable media controls
- nwg-panel / playerctl hang fix (i think nwg-panel is what should be patched here)
## IMPROVEMENTS:
- systemd/journalctl: use a less shit pager
- there's an env var for it: SYSTEMD_PAGER? and a flag for journalctl
- kernels: ship the same kernel on every machine
- then i can tune the kernels for hardening, without duplicating that work 4 times
- zfs: replace this with something which doesn't require a custom kernel build
- mpv: add media looping controls (e.g. loop song, loop playlist)
- servo: expand /boot to 2 GiB like all other hosts
- moby: port to systemd-boot
- sane-deadlines: show day of the week for upcoming items
- and only show on "first" terminal opened; not on Ctrl+N terminals
- curlftpfs: replace with something better
- safer (rust? actively maintained? sandboxable?)
- handles spaces/symbols in filenames
- has better multi-stream perf (e.g. `sane-sync-music` should be able to copy N items in parallel)
- firefox: open *all* links (http, https, ...) with system handler
- removes the need for open-in-mpv, firefox-xdg-open, etc.
- matrix room links *just work*.
- `network.protocol-handler.external.https = true` in about:config *seems* to do this,
but breaks some webpages (e.g. Pleroma)
- associate http(s)://*.pdf with my pdf handler
- can't do that because lots of applications don't handle URIs
- could workaround using a wrapper that downloads the file and then passes it to the program
- geary: replace with envelope
- likely requires updating envelope to a more recent version (for multi-accounting), and therefore updating libadwaita...
### security/resilience
- validate duplicity backups!
- encrypt more ~ dirs (~/archives, ~/records, ..?)
- best to do this after i know for sure i have good backups
- /mnt/desko/home, etc, shouldn't include secrets (~/private)
- 95% of its use is for remote media access and stuff which isn't in VCS (~/records)
- harden systemd services:
- servo: `coturn.service`
- servo: `postgresql.service`
- servo: `postfix.service`
- servo: `prosody.service`
- servo: `slskd.service`
- desko: `usbmuxd.service`
- servo: `backup-torrents.service`
- servo: `dedupe-media.service`
- remove SGID /run/wrappers/bin/sendmail, and just add senders to `postdrop` group
- port all sane.programs to be sandboxed
- sandbox `curlftpfs`
- sandbox `nix`
- sandbox `sshfs-fuse`
- sandbox mount units
- gocryptfs: /mnt/persist/private
- curlftpfs: /mnt/servo/*
- sshfs: /mnt/{desko,lappy,moby}/home
- enforce that all `environment.packages` has a sandbox profile (or explicitly opts out)
- revisit "non-sandboxable" apps and check that i'm not actually just missing mountpoints
- LL_FS_RW=/ isn't enough -- need all mount points like `=/:/proc:/sys:...`.
- ensure non-bin package outputs are linked for sandboxed apps
- i.e. `outputs.man`, `outputs.debug`, `outputs.doc`, ...
- lock down dbus calls within the sandbox
- otherwise anyone can `systemd-run --user ...` to potentially escape a sandbox
- <https://github.com/flatpak/xdg-dbus-proxy>
- port sanebox to a compiled language (hare?)
- it adds like 50-70ms launch time _on my laptop_. i'd hate to know how much that is on the pinephone.
- enforce granular dbus sandboxing (bunpen-dbus-*)
- make gnome-keyring-daemon less monolithic
- no reason every application with _a_ secret needs to see _all_ secrets
- check out oo7-daemon?
- also unix-pass based provider: <https://github.com/mdellweg/pass_secret_service>
- make dconf stuff less monolithic
- i.e. per-app dconf profiles for those which need it. possible static config.
- flatpak/spectrum has some stuff to proxy dconf per-app
- rework `programs` API to be just an overlay which wraps each binary in an env with XDG_DATA_DIRS etc set & the config/state links placed in /nix/store instead of $HOME.
### user experience
- setup a real calendar system, for recurring events
- rofi: sort items case-insensitively
- rofi: enable mouse mode?
- mpv: add media looping controls (e.g. loop song, loop playlist)
- mpv: add/implement an extension to search youtube
- apparently `yt-dlp` does searching!
- replace starship prompt with something more efficient
- watch `forkstat`: it does way too much
- cleanup waybar/nwg-panel so that it's not invoking playerctl every 2 seconds
- cleanup nwg-panel so that it's not invoking swaync every second
- nwg-panel: doesn't know that virtual-desktop 10/TV exists
- install apps:
- display QR codes for WiFi endpoints: <https://linuxphoneapps.org/apps/noappid.wisperwind.wifi2qr/>
- shopping list (not in nixpkgs): <https://linuxphoneapps.org/apps/ro.hume.cosmin.shoppinglist/>
- offline Wikipedia (or, add to `wike`)
- offline docs viewer (gtk): <https://github.com/workbenchdev/Biblioteca>
- some type of games manager/launcher
- Gnome Highscore (retro games)?: <https://gitlab.gnome.org/World/highscore>
- better maps for mobile (Osmin (QtQuick)? Pure Maps (Qt/Kirigami)?)
- note-taking app: <https://linuxphoneapps.org/categories/note-taking/>
- Folio is nice, uses standard markdown, though it only supports flat repos
- OSK overlay specifically for mobile gaming
- i.e. mock joysticks, for use with SuperTux and SuperTuxKart
- game: Hedgewars
- install mobile-friendly games:
- Shattered Pixel Dungeon (nixpkgs `shattered-pixel-dungeon`; doesn't cross-compile b/c openjdk/libIDL) <https://github.com/ebolalex/shattered-pixel-dungeon>
- UnCiv (Civ V clone; nixpkgs `unciv`; doesn't cross-compile): <https://github.com/yairm210/UnCiv>
@@ -116,56 +134,49 @@
- blurble (https://linuxphoneapps.org/games/app.drey.blurble/). nix: not as of 2024-02-05
- Trivia Quiz (https://linuxphoneapps.org/games/io.github.nokse22.trivia-quiz/)
- sane-sync-music: remove empty dirs
- soulseek: install a CLI app usable over ssh
- moby: replace `spot` with its replacement, `riff` (<https://github.com/Diegovsky/riff>)
#### moby
- moby: port battery support to something upstreamable
- moby: install transito/mobroute public transit app: <https://sr.ht/~mil/mobroute/> <https://git.sr.ht/~mil/transito>
- see: <https://github.com/NixOS/nixpkgs/pull/335613>
- moby: consider honeybee instead of gnome-calls for calling? <https://git.sr.ht/~anjan/honeybee>
- uses XMPP, so more NAT/WoWLAN-friendly
- fix cpuidle (gets better power consumption): <https://xnux.eu/log/077.html>
- fix cpupower for better power/perf
- `journalctl -u cpupower --boot` (problem is present on lappy, at least)
- use dynamic DRAM clocking to reduce power by 0.5W: <https://xnux.eu/log/083.html>
- coreboot implements DRAM training for rk3399: <https://gitlab.com/vicencb/kevinboot/-/blob/master/cb/sdram.c>
- moby: tune keyboard layout
- SwayNC: add option to change audio output
- moby: tune GPS
- fix iio-sensor-proxy magnetometer scaling
- tune QGPS setting in eg25-control, for less jitter?
- configure geoclue to do some smoothing?
- manually do smoothing, as some layer between mepo and geoclue?
- email wigle.net people to unlock API access
- moby: port `freshen-agps` timer service to s6 (maybe i want some `s6-cron` or something)
- moby: improve gPodder launch time
- moby: theme GTK apps (i.e. non-adwaita styles)
- especially, make the menubar collapsible
- try Gradience tool specifically for theming adwaita? <https://linuxphoneapps.org/apps/com.github.gradienceteam.gradience/>
- SwayNC/nwg-panel: add option to change audio output
- Newsflash: sync OPML on start, same way i do with gpodder
- better podcasting client?
- hardware upgrade (OnePlus)?
#### non-moby
- RSS: integrate a paywall bypass
- e.g. self-hosted [ladder](https://github.com/everywall/ladder) (like 12ft.io)
- RSS: have podcasts get downloaded straight into ~/Videos/...
- and strip the ads out using Whisper transcription + asking a LLM where the ad breaks are
- neovim: set up language server (lsp; rnix-lsp; nvim-lspconfig)
- neovim: integrate LLMs
- Helix: make copy-to-system clipboard be the default
- firefox/librewolf: persist history
- neovim: integrate ollama
- neovim: better docsets (e.g. c++, glib)
- firefox: persist history
- just not cookies or tabs
- package Nix/NixOS docs for Zeal
- install [doc-browser](https://github.com/qwfy/doc-browser)
- this supports both dash (zeal) *and* the datasets from <https://devdocs.io> (which includes nix!)
- install [devhelp](https://wiki.gnome.org/Apps/Devhelp) (gnome)
- have xdg-open parse `<repo:...> URIs (or adjust them so that it _can_ parse)
- sane-bt-search: show details like 5.1 vs stereo, h264 vs h265
- maybe just color these "keywords" in all search results?
- transmission: apply `sane-tag-media` path fix in `torrent-done` script
- many .mkv files do appear to be tagged: i'd just need to add support in my own tooling
- more aggressively cleanup non-media files after DL (ripper logos, info txts)
- uninsane.org: make URLs relative to allow local use (and as offline homepage)
- email: fix so that local mail doesn't go to junk
- git sendmail flow adds the DKIM signatures, but gets delivered locally w/o having the sig checked, so goes into Junk
- could change junk filter from "no DKIM success" to explicit "DKIM failed"
- add an auto-reply address (e.g. `reply-test@uninsane.org`) which reflects all incoming mail; use this (or a friend running this) for liveness checks
### perf
- add `pkgs.impure-cached.<foo>` package set to build things with ccache enabled
- every package here can be auto-generated, and marked with some env var so that it doesn't pollute the pure package set
- would be super handy for package prototyping!
## NEW FEATURES:
- migrate Kodi box to nix
- migrate MAME cabinet to nix
- boot it from PXE from servo?
- enable IPv6

View File

@@ -1,5 +1,5 @@
{ ... }@args:
let
sane-nix-files = import ./pkgs/additional/sane-nix-files { };
sane-nix-files = import ./pkgs/by-name/sane-nix-files/package.nix { };
in
import "${sane-nix-files}/impure.nix" args

View File

@@ -1,7 +1,10 @@
to add a host:
- create the new nix targets
- hosts/by-name/HOST
- let the toplevel (flake.nix) know about HOST
- let the toplevel (impure.nix) know about HOST
- let the other hosts know about this host (hosts/common/hosts.nix)
- let sops know about the host's pubkey (.sops.yaml)
- re-encrypt all sops keys in secrets/common
- build and flash an image
- optionally expand the rootfs
- `cfdisk /dev/sda2` -> resize partition
@@ -22,4 +25,9 @@ to add a host:
- instructions in hosts/common/secrets.nix
- run `ssh-to-age` on user/host pubkeys
- add age key to .sops.yaml
- update encrypted secrets: `sops updatekeys path/to/secret.yaml`
- update encrypted secrets: `find secrets -type f -exec sops updatekeys -y '{}' ';'`
- setup wireguard keys
- `pk=$(wg genkey)`
- `echo "$pk" | sops encrypt --filename-override secrets/$(hostname)/wg-home.priv.bin --output secrets/$(hostname)/wg-home.priv.bin`
- `pub=$(echo "$pk" | wg pubkey)`
- add pubkey to hosts/common/hosts.nix

View File

@@ -0,0 +1,49 @@
## migrating a host to a new drive
### 1. copy persistent data off of the host:
```sh
$ mkdir -p mnt old/persist
$ mount /dev/$old mnt
$ rsync -arv mnt/persist/ old/persist/
```
### 2. flash the new drive
```
$ nix-build -A hosts.moby.img
$ dd if=$(readlink ./result) of=/dev/$new bs=4M oflag=direct conv=sync status=progress
```
### 3.1. expand the partition
```sh
$ cfdisk /dev/$new
# scroll to the last partition
> Resize
leave at default (max)
> Write
type "yes"
> Quit
```
### 3.2. expand the filesystem
```
$ mkdir -p /mnt/$new
$ mount /dev/$new /mnt/$new
$ btrfs filesystem resize max /mnt/$new
```
### 4. copy data onto the new host
```
$ mkdir /mnt/$new
$ mount /dev/$new /mnt/$new
# if you want to use btrfs snapshots (e.g. snapper), then create the data directory as a subvolume:
$ btrfs subvolume create /mnt/$new/persist
# restore the data
$ rsync -arv old/persist/ /mnt/$new/persist/
```
### 5. ensure/fix ownership
```
$ chmod -R a+rX /mnt/$new/nix
# or, let the nix daemon do it:
$ nix copy --no-check-sigs --to /mnt/$new $(nix-build -A hosts.moby)
```
### 6. insert the disk into the system, and boot!

View File

@@ -1,5 +1,5 @@
## deploying to SD card
- build a toplevel config: `nix build '.#hostSystems.moby'`
- build a toplevel config: `nix build '.#hosts.moby.img'`
- mount a system:
- `mkdir -p root/{nix,boot}`
- `mount /dev/sdX1 root/boot`

View File

@@ -0,0 +1,19 @@
# MAME arcade cabinet
# Raspberry Pi 400:
# - quad-core Cortex-A72 @ 1.8 GHz (ARMv8-A 64; BCM2711)
# - 4GiB RAM
{ ... }:
{
imports = [
./fs.nix
];
sane.hal.rpi-400.enable = true;
sane.roles.client = true; # for WiFi creds
# TODO: port to `sane.programs` interface
services.xserver.desktopManager.kodi.enable = true;
# /boot space is at a premium, especially with uncompressed kernels. default was 20.
# boot.loader.generic-extlinux-compatible.configurationLimit = 10;
}

View File

@@ -0,0 +1,17 @@
{ ... }:
{
fileSystems."/nix" = {
device = "/dev/disk/by-uuid/cccccccc-aaaa-dddd-eeee-000020250621";
fsType = "btrfs";
options = [
"compress=zstd"
"defaults"
];
};
fileSystems."/boot" = {
device = "/dev/disk/by-uuid/2025-0621";
fsType = "vfat";
};
}

View File

@@ -30,16 +30,4 @@
# sane.programs.guiApps.enableFor.user.colin = false;
# sane.programs.pcGuiApps.enableFor.user.colin = false; #< errors!
sane.programs.blueberry.enableFor.user.colin = false; # bluetooth manager: doesn't cross compile!
# sane.programs.brave.enableFor.user.colin = false; # 2024/06/03: fails eval if enabled on cross
# sane.programs.firefox.enableFor.user.colin = false; # 2024/06/03: this triggers an eval error in yarn stuff -- i'm doing IFD somewhere!!?
sane.programs.mepo.enableFor.user.colin = false; # 2024/06/04: doesn't cross compile (nodejs)
sane.programs.mercurial.enableFor.user.colin = false; # 2024/06/03: does not cross compile
sane.programs.nixpkgs-review.enableFor.user.colin = false; # 2024/06/03: OOMs when cross compiling
sane.programs.ntfy-sh.enableFor.user.colin = false; # 2024/06/04: doesn't cross compile (nodejs)
sane.programs.pwvucontrol.enableFor.user.colin = false; # 2024/06/03: doesn't cross compile (libspa-sys)
sane.programs."sane-scripts.bt-search".enableFor.user.colin = false; # 2024/06/03: does not cross compile
sane.programs.sequoia.enableFor.user.colin = false; # 2024/06/03: does not cross compile
sane.programs.zathura.enableFor.user.colin = false; # 2024/06/03: does not cross compile
}

View File

@@ -1,10 +1,13 @@
{ config, lib, pkgs, ... }:
{ config, lib, ... }:
{
imports = [
./fs.nix
];
sane.services.trust-dns.asSystemResolver = false; # TEMPORARY: TODO: re-enable trust-dns
# firewall has to be open to allow clients to use services hosted on this device,
# like `ollama`
sane.ports.openFirewall = true;
# sane.programs.devPkgs.enableFor.user.colin = true;
# sane.guest.enable = true;
@@ -22,46 +25,33 @@
sane.roles.build-machine.enable = true;
sane.roles.client = true;
sane.roles.dev-machine = true;
sane.roles.pc = true;
sane.roles.work = true;
sane.services.ollama.enable = lib.mkIf (config.sane.maxBuildCost >= 3) true;
sane.services.wg-home.enable = true;
sane.services.wg-home.ip = config.sane.hosts.by-name."desko".wg-home.ip;
sane.ovpn.addrV4 = "172.26.55.21";
# sane.ovpn.addrV6 = "fd00:0000:1337:cafe:1111:1111:20c1:a73c";
sane.services.duplicity.enable = true;
sane.services.rsync-net.enable = true;
sane.nixcache.remote-builders.desko = false;
sane.programs.firefox.config.formFactor = "desktop";
sane.programs.sane-private-unlock-remote.enableFor.user.colin = true;
sane.programs.sane-private-unlock-remote.config.hosts = [ "servo" ];
sane.programs.sway.enableFor.user.colin = true;
sane.programs.iphoneUtils.enableFor.user.colin = true;
sane.programs.steam.enableFor.user.colin = true;
sane.programs.geary.config.autostart = true;
sane.programs.signal-desktop.config.autostart = true;
sane.programs.nwg-panel.config = {
battery = false;
brightness = false;
};
sane.image.extraBootFiles = [ pkgs.bootpart-uefi-x86_64 ];
sane.programs.mpv.config.defaultProfile = "high-quality";
# needed to use libimobiledevice/ifuse, for iphone sync
services.usbmuxd.enable = true;
# default config: https://man.archlinux.org/man/snapper-configs.5
# defaults to something like:
# - hourly snapshots
# - auto cleanup; keep the last 10 hourlies, last 10 daylies, last 10 monthlys.
services.snapper.configs.nix = {
# TODO: for the impermanent setup, we'd prefer to just do /nix/persist,
# but that also requires setting up the persist dir as a subvol
SUBVOLUME = "/nix";
# TODO: ALLOW_USERS doesn't seem to work. still need `sudo snapper -c nix list`
ALLOW_USERS = [ "colin" ];
};
hardware.amdgpu.opencl.enable = true; # desktop (AMD's opencl implementation AKA "ROCM"); probably required for ollama
}

View File

@@ -3,10 +3,10 @@
{
# increase /tmp space (defaults to 50% of RAM) for building large nix things.
# a cross-compiled kernel, particularly, will easily use 30+GB of tmp
fileSystems."/tmp".options = [ "size=64G" ];
fileSystems."/tmp".options = [ "size=128G" ];
fileSystems."/nix" = {
device = "/dev/disk/by-uuid/845d85bf-761d-431b-a406-e6f20909154f";
device = "/dev/disk/by-uuid/dddddddd-eeee-5555-cccc-000020250527";
fsType = "btrfs";
options = [
"compress=zstd"
@@ -15,7 +15,7 @@
};
fileSystems."/boot" = {
device = "/dev/disk/by-uuid/5049-9AFD";
device = "/dev/disk/by-uuid/2025-0527";
fsType = "vfat";
};
}

View File

@@ -0,0 +1,58 @@
{ lib, pkgs, ... }:
{
imports = [
./fs.nix
];
sane.roles.client = true;
sane.roles.pc = true;
sane.roles.work = true;
sane.services.wg-home.enable = true;
# sane.ovpn.addrV4 = "172.23.119.72";
# sane.guest.enable = true;
sane.programs.sane-private-unlock-remote.enableFor.user.colin = true;
sane.programs.sane-private-unlock-remote.config.hosts = [ "servo" ];
sane.programs.firefox.config.formFactor = "laptop";
sane.programs.itgmania.enableFor.user.colin = true;
sane.programs.sway.enableFor.user.colin = true;
sops.secrets.colin-passwd.neededForUsers = true;
sane.services.rsync-net.enable = true;
# add an entry to boot into Windows, as if it had been launched directly from the BIOS.
boot.loader.systemd-boot.rebootForBitlocker = true;
boot.loader.systemd-boot.windows.primary.efiDeviceHandle = "HD0b";
system.activationScripts.makeDefaultBootEntry = {
text = let
makeDefaultBootEntry = pkgs.writeShellApplication {
name = "makeDefaultBootEntry";
runtimeInputs = with pkgs; [
efibootmgr
gnugrep
];
text = ''
# configure the EFI firmware to boot into NixOS by default.
# do this by querying the active boot entry, and just making that be the default.
# this is needed on flowy because enabling secure boot / booting into Windows
# resets the default boot order; manually reconfiguring that is tiresome.
efi=$(efibootmgr)
bootCurrent=$(echo "$efi" | grep '^BootCurrent: ')
bootCurrent=''${bootCurrent/BootCurrent: /}
bootOrder=$(echo "$efi" | grep '^BootOrder: ')
bootOrder=''${bootOrder/BootOrder: /}
if ! [[ "$bootOrder" =~ ^"$bootCurrent", ]]; then
# booted entry was not the default,
# so prepend it to the boot order:
newBootOrder="$bootCurrent,$bootOrder"
(set -x; efibootmgr -o "$newBootOrder")
fi
'';
};
in lib.getExe makeDefaultBootEntry;
};
}

View File

@@ -0,0 +1,17 @@
{ ... }:
{
fileSystems."/nix" = {
device = "/dev/disk/by-uuid/ffffffff-1111-0000-eeee-000020250531";
fsType = "btrfs";
options = [
"compress=zstd"
"defaults"
];
};
fileSystems."/boot" = {
device = "/dev/disk/by-uuid/2025-0531";
fsType = "vfat";
};
}

View File

@@ -1,41 +1,37 @@
{ config, pkgs, ... }:
{ lib, ... }:
{
imports = [
./fs.nix
];
sane.roles.client = true;
sane.roles.dev-machine = true;
sane.roles.pc = true;
sane.services.wg-home.enable = true;
sane.services.wg-home.ip = config.sane.hosts.by-name."lappy".wg-home.ip;
sane.ovpn.addrV4 = "172.23.119.72";
# sane.ovpn.addrV6 = "fd00:0000:1337:cafe:1111:1111:0332:aa96/128";
# sane.guest.enable = true;
sane.image.extraBootFiles = [ pkgs.bootpart-uefi-x86_64 ];
sane.programs.sane-private-unlock-remote.enableFor.user.colin = true;
sane.programs.sane-private-unlock-remote.config.hosts = [ "servo" ];
sane.programs.stepmania.enableFor.user.colin = true;
sane.programs.firefox.config.formFactor = "laptop";
sane.programs.itgmania.enableFor.user.colin = true;
# sane.programs.stepmania.enableFor.user.colin = true; #< TODO: fix build
sane.programs.sway.enableFor.user.colin = true;
sane.programs.geary.config.autostart = true;
sane.programs.signal-desktop.config.autostart = true;
sops.secrets.colin-passwd.neededForUsers = true;
sane.services.rsync-net.enable = true;
# default config: https://man.archlinux.org/man/snapper-configs.5
# defaults to something like:
# - hourly snapshots
# - auto cleanup; keep the last 10 hourlies, last 10 daylies, last 10 monthlys.
services.snapper.configs.nix = {
# TODO: for the impermanent setup, we'd prefer to just do /nix/persist,
# but that also requires setting up the persist dir as a subvol
SUBVOLUME = "/nix";
ALLOW_USERS = [ "colin" ];
};
# starting 2024/09, under default settings (apparently 256 quantum), audio would crackle under load.
# 1024 solves *most* crackles, but still noticable under heavier loads.
sane.programs.pipewire.config.min-quantum = 2048;
# limit how many snapshots we keep, due to extremely limited disk space (TODO: remove this override after upgrading lappy hard drive)
services.snapper.configs.root.TIMELINE_LIMIT_HOURLY = lib.mkForce 2;
services.snapper.configs.root.TIMELINE_LIMIT_DAILY = lib.mkForce 2;
services.snapper.configs.root.TIMELINE_LIMIT_WEEKLY = lib.mkForce 0;
services.snapper.configs.root.TIMELINE_LIMIT_MONTHLY = lib.mkForce 0;
services.snapper.configs.root.TIMELINE_LIMIT_YEARLY = lib.mkForce 0;
}

View File

@@ -6,17 +6,16 @@
# - Mobian wiki: <https://wiki.mobian-project.org/doku.php?id=start>
# - recommended apps, chatrooms
{ config, pkgs, lib, ... }:
{ ... }:
{
imports = [
./fs.nix
];
sane.hal.pine64.enable = true;
sane.hal.pine64-pinephone-pro.enable = true;
sane.roles.client = true;
sane.roles.handheld = true;
sane.services.wg-home.enable = true;
sane.services.wg-home.ip = config.sane.hosts.by-name."moby".wg-home.ip;
sane.ovpn.addrV4 = "172.24.87.255";
# sane.ovpn.addrV6 = "fd00:0000:1337:cafe:1111:1111:18cd:a72b";
@@ -30,20 +29,16 @@
sane.programs.sway.enableFor.user.colin = true;
sane.programs.sway.config.mod = "Mod1"; #< alt key instead of Super
sane.programs.blueberry.enableFor.user.colin = false; # bluetooth manager: doesn't cross compile!
sane.programs.fcitx5.enableFor.user.colin = false; # does not cross compile
sane.programs.mercurial.enableFor.user.colin = false; # does not cross compile
sane.programs.nvme-cli.enableFor.system = false; # does not cross compile (libhugetlbfs)
# enabled for easier debugging
sane.programs.eg25-control.enableFor.user.colin = true;
# sane.programs.rtl8723cs-wowlan.enableFor.user.colin = true;
# sane.programs.eg25-manager.enableFor.user.colin = true;
# sane.programs.ntfy-sh.config.autostart = true;
sane.programs.dino.config.autostart = true;
sane.programs.signal-desktop.config.autostart = true;
# sane.programs.geary.config.autostart = true;
# sane.programs.calls.config.autostart = true;
sane.programs.signal-desktop.config.autostart = false;
sane.programs.geary.config.autostart = false;
sane.programs.pipewire.config = {
# tune so Dino doesn't drop audio
@@ -61,7 +56,12 @@
max-quantum = 8192;
};
# /boot space is at a premium. default was 20.
# even 10 can be too much
boot.loader.generic-extlinux-compatible.configurationLimit = 8;
sane.programs.mpv.config.defaultProfile = "fast";
# /boot space is at a premium, especially with uncompressed kernels. default was 20.
# boot.loader.generic-extlinux-compatible.configurationLimit = 10;
# TODO: switch to systemd-boot
boot.loader.generic-extlinux-compatible.enable = true;
boot.loader.systemd-boot.enable = false;
}

View File

@@ -1,10 +1,9 @@
{ pkgs, ... }:
{ ... }:
{
imports = [
./fs.nix
];
sane.image.extraBootFiles = [ pkgs.bootpart-uefi-x86_64 ];
sane.persist.enable = false; # what we mean here is that the image is immutable; `/` is still tmpfs.
sane.nixcache.enable = false; # don't want to be calling out to dead machines that we're *trying* to rescue

View File

@@ -1,10 +1,11 @@
{ config, pkgs, ... }:
{ ... }:
{
imports = [
./fs.nix
./net.nix
./net
./services
./users
];
# for administering services
@@ -21,25 +22,14 @@
"sane-scripts.stop-all-servo"
];
sane.services.dyn-dns.enable = true;
sane.services.trust-dns.asSystemResolver = false; # TODO: enable once it's all working well
sane.services.wg-home.enable = true;
sane.services.wg-home.visibleToWan = true;
sane.services.wg-home.forwardToWan = true;
sane.services.wg-home.routeThroughServo = false;
sane.services.wg-home.ip = config.sane.hosts.by-name."servo".wg-home.ip;
sane.ovpn.addrV4 = "172.23.174.114";
# sane.ovpn.addrV6 = "fd00:0000:1337:cafe:1111:1111:8df3:14b0";
sane.nixcache.remote-builders.desko = false;
sane.nixcache.remote-builders.servo = false;
# sane.services.duplicity.enable = true; # TODO: re-enable after HW upgrade
sane.services.rsync-net.enable = true;
# automatically log in at the virtual consoles.
# using root here makes sure we always have an escape hatch.
# XXX(2024-07-27): this is incompatible with my s6-rc stuff, which needs to auto-login as `colin` to start its user services.
# services.getty.autologinUser = "root";
sane.image.extraBootFiles = [ pkgs.bootpart-uefi-x86_64 ];
# XXX(2024-07-27): this is incompatible if using s6, which needs to auto-login as `colin` to start its user services.
services.getty.autologinUser = "root";
# both transmission and ipfs try to set different net defaults.
# we just use the most aggressive of the two here:

View File

@@ -1,60 +1,9 @@
# zfs docs:
# - <https://nixos.wiki/wiki/ZFS>
# - <repo:nixos/nixpkgs:nixos/modules/tasks/filesystems/zfs.nix>
#
# zfs check health: `zpool status`
#
# zfs pool creation (requires `boot.supportedFilesystems = [ "zfs" ];`
# - 1. identify disk IDs: `ls -l /dev/disk/by-id`
# - 2. pool these disks: `zpool create -f -m legacy pool raidz ata-ST4000VN008-2DR166_WDH0VB45 ata-ST4000VN008-2DR166_WDH17616 ata-ST4000VN008-2DR166_WDH0VC8Q ata-ST4000VN008-2DR166_WDH17680`
# - legacy documented: <https://superuser.com/questions/790036/what-is-a-zfs-legacy-mount-point>
# - 3. enable acl support: `zfs set acltype=posixacl pool`
#
# import pools: `zpool import pool`
# show zfs datasets: `zfs list` (will be empty if haven't imported)
# show zfs properties (e.g. compression): `zfs get all pool`
# set zfs properties: `zfs set compression=on pool`
{ lib, pkgs, ... }:
{
# hostId: not used for anything except zfs guardrail?
# [hex(ord(x)) for x in 'serv']
networking.hostId = "73657276";
boot.supportedFilesystems = [ "zfs" ];
# boot.zfs.enabled = true;
boot.zfs.forceImportRoot = false;
# scrub all zfs pools weekly:
services.zfs.autoScrub.enable = true;
boot.extraModprobeConfig = ''
### zfs_arc_max tunable:
# ZFS likes to use half the ram for its own cache and let the kernel push everything else to swap.
# so, reduce its cache size
# see: <https://askubuntu.com/a/1290387>
# see: <https://serverfault.com/a/1119083>
# see: <https://openzfs.github.io/openzfs-docs/Performance%20and%20Tuning/Module%20Parameters.html#zfs-arc-max>
# for all tunables, see: `man 4 zfs`
# to update these parameters without rebooting:
# - `echo '4294967296' | sane-sudo-redirect /sys/module/zfs/parameters/zfs_arc_max`
### zfs_bclone_enabled tunable
# this allows `cp --reflink=always FOO BAR` to work. i.e. shallow copies.
# it's unstable as of 2.2.3. led to *actual* corruption in 2.2.1, but hopefully better by now.
# - <https://github.com/openzfs/zfs/issues/405>
# note that `du -h` won't *always* show the reduced size for reflink'd files (?).
# `zpool get all | grep clone` seems to be the way to *actually* see how much data is being deduped
options zfs zfs_arc_max=4294967296 zfs_bclone_enabled=1
'';
# to be able to mount the pool like this, make sure to tell zfs to NOT manage it itself.
# otherwise local-fs.target will FAIL and you will be dropped into a rescue shell.
# - `zfs set mountpoint=legacy pool`
# if done correctly, the pool can be mounted before this `fileSystems` entry is created:
# - `sudo mount -t zfs pool /mnt/persist/pool`
fileSystems."/mnt/pool" = {
device = "pool";
fsType = "zfs";
options = [ "acl" ]; #< not sure if this `acl` flag is actually necessary. it mounts without it.
};
# services.zfs.zed = ... # TODO: zfs can send me emails when disks fail
sane.programs.sysadminUtils.suggestedPrograms = [ "zfs-tools" ];
# networking.hostId = "73657276";
sane.persist.stores."ext" = {
origin = "/mnt/pool/persist";
@@ -67,7 +16,7 @@
fileSystems."/tmp".options = [ "size=32G" ];
fileSystems."/nix" = {
device = "/dev/disk/by-uuid/cc81cca0-3cc7-4d82-a00c-6243af3e7776";
device = "/dev/disk/by-uuid/55555555-eeee-ffff-bbbb-000020250820";
fsType = "btrfs";
options = [
"compress=zstd"
@@ -76,23 +25,39 @@
};
fileSystems."/boot" = {
device = "/dev/disk/by-uuid/6EE3-4171";
device = "/dev/disk/by-uuid/2025-0820";
fsType = "vfat";
};
# slow, external storage (for archiving, etc)
fileSystems."/mnt/usb-hdd" = {
device = "/dev/disk/by-uuid/aa272cff-0fcc-498e-a4cb-0d95fb60631b";
fileSystems."/mnt/pool" = {
# all btrfs devices of the same RAID volume use the same UUID.
device = "UUID=40fc6e1d-ba41-44de-bbf3-1aa02c3441df";
fsType = "btrfs";
options = [
"compress=zstd"
# "compress=zstd" #< not much point in compressing... mostly videos and music; media.
"defaults"
# `device=...` only needed if `btrfs scan` hasn't yet been run
# see: <https://askubuntu.com/a/484374>
# i don't know what guarantees NixOS/systemd make about that, so specifying all devices for now
# "device=/dev/disk/by-partuuid/14a7d00a-be53-2b4e-96f9-7e2c964674ec" #< removed 2024-11-24 (for capacity upgrade)
"device=/dev/disk/by-partuuid/409a147e-2282-49eb-87a7-c968032ede88" #< added 2024-11-24
# "device=/dev/disk/by-partuuid/6b86cc10-c3cc-ec4d-b20d-b6688f0959a6" #< removed 2025-06-04 (early drive failure; capacity upgrade)
# "device=/dev/disk/by-partuuid/7fd85cac-b6f3-8248-af4e-68e703d11020" #< removed 2024-11-13 (early drive failure)
"device=/dev/disk/by-partuuid/92ebbbfb-022f-427d-84d5-39349d4bc02a" #< added 2025-05-14
"device=/dev/disk/by-partuuid/9e6c06b0-4a39-4d69-813f-1f5992f62ed7" #< added 2025-06-05
"device=/dev/disk/by-partuuid/d9ad5ebc-0fc4-4d89-9fd0-619ce5210f1b" #< added 2024-11-13
# "device=/dev/disk/by-partuuid/ef0e5c7b-fccf-f444-bac4-534424326159" #< removed 2025-05-14 (early drive failure)
"nofail"
# "x-systemd.before=local-fs.target"
"x-systemd.device-bound=false" #< don't unmount when `device` disappears (i thought this was necessary, for drive replacement, but it might not be)
"x-systemd.device-timeout=60s"
"x-systemd.mount-timeout=60s"
];
};
sane.fs."/mnt/usb-hdd".mount = {};
# TODO: move this elsewhere and automate the ACLs!
# FIRST TIME SETUP FOR MEDIA DIRECTORY:
# - set the group stick bit: `sudo find /var/media -type d -exec chmod g+s {} +`
# - set the group sticky bit: `sudo find /var/media -type d -exec chmod g+s {} +`
# - this ensures new files/dirs inherit the group of their parent dir (instead of the user who creates them)
# - ensure everything under /var/media is mounted with `-o acl`, to support acls
# - ensure all files are rwx by group: `setfacl --recursive --modify d:g::rwx /var/media`
@@ -104,8 +69,9 @@
mode = "0775";
}];
sane.fs."/var/media/archive".dir = {};
sane.fs."/var/media/archive/temp".dir = {};
# this is file.text instead of symlink.text so that it may be read over a remote mount (where consumers might not have any /nix/store/.../README.md path)
sane.fs."/var/media/archive/README.md".file.text = ''
sane.fs."/var/media/archive/temp/README.md".file.text = ''
this directory is for media i wish to remove from my library,
but keep for a short time in case i reverse my decision.
treat it like a system trash can.
@@ -115,7 +81,6 @@
sane.fs."/var/media/Books/Books".dir = {};
sane.fs."/var/media/Books/Visual".dir = {};
sane.fs."/var/media/collections".dir = {};
# sane.fs."/var/media/datasets".dir = {};
sane.fs."/var/media/freeleech".dir = {};
sane.fs."/var/media/Music".dir = {};
sane.fs."/var/media/Pictures".dir = {};
@@ -124,13 +89,6 @@
sane.fs."/var/media/Videos/Shows".dir = {};
sane.fs."/var/media/Videos/Talks".dir = {};
# this is file.text instead of symlink.text so that it may be read over a remote mount (where consumers might not have any /nix/store/.../README.md path)
sane.fs."/var/lib/uninsane/datasets/README.md".file.text = ''
this directory may seem redundant with ../media/datasets. it isn't.
this directory exists on SSD, allowing for speedy access to specific datasets when necessary.
the contents should be a subset of what's in ../media/datasets.
'';
systemd.services.dedupe-media = {
description = "transparently de-duplicate /var/media entries by using block-level hardlinks";
script = ''
@@ -144,28 +102,5 @@
OnUnitActiveSec = "720min";
};
};
# btrfs doesn't easily support swapfiles
# swapDevices = [
# { device = "/nix/persist/swapfile"; size = 4096; }
# ];
# this can be a partition. create with:
# fdisk <dev>
# n
# <default partno>
# <start>
# <end>
# t
# <partno>
# 19 # set part type to Linux swap
# w # write changes
# mkswap -L swap <part>
# swapDevices = [
# {
# label = "swap";
# # TODO: randomEncryption.enable = true;
# }
# ];
}

View File

@@ -1,124 +0,0 @@
{ config, lib, pkgs, ... }:
let
portOpts = with lib; types.submodule {
options = {
visibleTo.ovpns = mkOption {
type = types.bool;
default = false;
description = ''
whether to forward inbound traffic on the OVPN vpn port to the corresponding localhost port.
'';
};
visibleTo.doof = mkOption {
type = types.bool;
default = false;
description = ''
whether to forward inbound traffic on the doofnet vpn port to the corresponding localhost port.
'';
};
};
};
in
{
options = with lib; {
sane.ports.ports = mkOption {
# add the `visibleTo.{doof,ovpns}` options
type = types.attrsOf portOpts;
};
};
config = {
networking.domain = "uninsane.org";
systemd.network.networks."50-eth0" = {
matchConfig.Name = "eth0";
networkConfig.Address = [
"205.201.63.12/32"
"10.78.79.51/22"
];
networkConfig.DNS = [ "10.78.79.1" ];
};
sane.ports.openFirewall = true;
sane.ports.openUpnp = true;
# unless we add interface-specific settings for each VPN, we have to define nameservers globally.
# networking.nameservers = [
# "1.1.1.1"
# "9.9.9.9"
# ];
# services.resolved.extraConfig = ''
# # docs: `man resolved.conf`
# # DNS servers to use via the `wg-ovpns` interface.
# # i hope that from the root ns, these aren't visible.
# DNS=46.227.67.134%wg-ovpns 192.165.9.158%wg-ovpns
# FallbackDNS=1.1.1.1 9.9.9.9
# '';
# tun-sea config
sane.dns.zones."uninsane.org".inet.A."doof.tunnel" = "205.201.63.12";
# sane.dns.zones."uninsane.org".inet.AAAA."doof.tunnel" = "2602:fce8:106::51"; #< TODO: enable IPv6
networking.wireguard.interfaces.wg-doof = {
privateKeyFile = config.sops.secrets.wg_doof_privkey.path;
# wg is active only in this namespace.
# run e.g. ip netns exec doof <some command like ping/curl/etc, it'll go through wg>
# sudo ip netns exec doof ping www.google.com
interfaceNamespace = "doof";
ips = [
"205.201.63.12"
# "2602:fce8:106::51/128" #< TODO: enable IPv6
];
peers = [
{
publicKey = "nuESyYEJ3YU0hTZZgAd7iHBz1ytWBVM5PjEL1VEoTkU=";
# TODO: configure DNS within the doof ns and use tun-sea.doof.net endpoint
# endpoint = "tun-sea.doof.net:53263";
endpoint = "205.201.63.44:53263";
allowedIPs = [ "0.0.0.0/0" "::/0" ];
persistentKeepalive = 25; #< keep the NAT alive
}
];
};
sane.netns.doof.hostVethIpv4 = "10.0.2.5";
sane.netns.doof.netnsVethIpv4 = "10.0.2.6";
sane.netns.doof.netnsPubIpv4 = "205.201.63.12";
sane.netns.doof.routeTable = 12;
# OVPN CONFIG (https://www.ovpn.com):
# DOCS: https://nixos.wiki/wiki/WireGuard
# if you `systemctl restart wireguard-wg-ovpns`, make sure to also restart any other services in `NetworkNamespacePath = .../ovpns`.
# TODO: why not create the namespace as a seperate operation (nix config for that?)
networking.wireguard.enable = true;
networking.wireguard.interfaces.wg-ovpns = {
privateKeyFile = config.sops.secrets.wg_ovpns_privkey.path;
# wg is active only in this namespace.
# run e.g. ip netns exec ovpns <some command like ping/curl/etc, it'll go through wg>
# sudo ip netns exec ovpns ping www.google.com
interfaceNamespace = "ovpns";
ips = [ "185.157.162.178" ];
peers = [
{
publicKey = "SkkEZDCBde22KTs/Hc7FWvDBfdOCQA4YtBEuC3n5KGs=";
endpoint = "185.157.162.10:9930";
# alternatively: use hostname, but that presents bootstrapping issues (e.g. if host net flakes)
# endpoint = "vpn36.prd.amsterdam.ovpn.com:9930";
allowedIPs = [ "0.0.0.0/0" ];
# nixOS says this is important for keeping NATs active
persistentKeepalive = 25;
# re-executes wg this often. docs hint that this might help wg notice DNS/hostname changes.
# so, maybe that helps if we specify endpoint as a domain name
# dynamicEndpointRefreshSeconds = 30;
# when refresh fails, try it again after this period instead.
# TODO: not avail until nixpkgs upgrade
# dynamicEndpointRefreshRestartSeconds = 5;
}
];
};
sane.netns.ovpns.hostVethIpv4 = "10.0.1.5";
sane.netns.ovpns.netnsVethIpv4 = "10.0.1.6";
sane.netns.ovpns.netnsPubIpv4 = "185.157.162.178";
sane.netns.ovpns.routeTable = 11;
sane.netns.ovpns.dns = "46.227.67.134"; #< DNS requests inside the namespace are forwarded here
};
}

View File

@@ -0,0 +1,60 @@
# debugging:
# - enable logs (shows handshake attempts)
# - `echo module wireguard +p | sane-sudo-redirect /sys/kernel/debug/dynamic_debug/control`
# - `sudo dmesg --follow`
# patterns: "Sending keepalive packet to peer NN (N.N.N.N:NNNNN)"
# patterns: "Sending handshake initiation to peer NN (N.N.N.N:NNNNN)"
# - when wg-doof and wg-ovpns stop routing traffic, restart with:
# - `systemctl restart netns-doof-wg`
# - handshaking:
# - `wg show` should *always* show "latest handshake: N", with N < 2 minutes ago.
{ lib, ... }:
let
portOpts = with lib; types.submodule {
options = {
visibleTo.ovpns = mkOption {
type = types.bool;
default = false;
description = ''
whether to forward inbound traffic on the OVPN vpn port to the corresponding localhost port.
'';
};
visibleTo.doof = mkOption {
type = types.bool;
default = false;
description = ''
whether to forward inbound traffic on the doofnet vpn port to the corresponding localhost port.
'';
};
};
};
in
{
options = with lib; {
sane.ports.ports = mkOption {
# add the `visibleTo.{doof,ovpns}` options
type = types.attrsOf portOpts;
};
};
imports = [
./doof.nix
./ovpn.nix
./wg-home.nix
];
config = {
networking.domain = "uninsane.org";
systemd.network.networks."50-eth0" = {
matchConfig.Name = "eth0";
networkConfig.Address = [
"205.201.63.12/32"
"10.78.79.51/22"
];
networkConfig.DNS = [ "10.78.79.1" ];
};
sane.ports.openFirewall = true;
sane.ports.openUpnp = true;
};
}

View File

@@ -0,0 +1,27 @@
{ config, ... }:
{
# tun-sea config
sane.dns.zones."uninsane.org".inet.A."doof.tunnel" = "205.201.63.12";
# sane.dns.zones."uninsane.org".inet.AAAA."doof.tunnel" = "2602:fce8:106::51"; #< TODO: enable IPv6 (i have /128)
# if the tunnel breaks, restart it manually:
# - `systemctl restart netns-doof.service`
sane.netns.doof = {
veth.initns.ipv4 = "10.0.2.5";
veth.netns.ipv4 = "10.0.2.6";
routeTable = 12;
# wg.port = 51821;
wg.privateKeyFile = config.sops.secrets.wg_doof_privkey.path;
wg.address.ipv4 = "205.201.63.12";
wg.peer.publicKey = "nuESyYEJ3YU0hTZZgAd7iHBz1ytWBVM5PjEL1VEoTkU=";
wg.peer.endpoint = "tun-sea.doof.net:53263";
# wg.peer.endpoint = "205.201.63.44:53263";
};
# inside doof, forward DNS requests back to the root machine
# this is fine: nothing inside the ns performs DNS except for wireguard,
# and we're not forwarding external DNS requests here
# XXX: ACTUALLY, CAN'T EASILY DO THAT BECAUSE HICKORY-DNS IS ALREADY USING PORT 53
# but that's ok, we don't really need DNS *inside* this namespace.
# sane.netns.doof.dns.ipv4 = config.sane.netns.doof.veth.netns.ipv4;
}

View File

@@ -0,0 +1,20 @@
{ config, ... }:
{
sane.ovpn.addrV4 = "172.23.174.114"; #< this applies to the dynamic VPNs -- NOT the static VPN
# sane.ovpn.addrV6 = "fd00:0000:1337:cafe:1111:1111:8df3:14b0";
# OVPN CONFIG (https://www.ovpn.com):
# DOCS: https://nixos.wiki/wiki/WireGuard
sane.netns.ovpns = {
veth.initns.ipv4 = "10.0.1.5";
veth.netns.ipv4 = "10.0.1.6";
routeTable = 11;
dns.ipv4 = "46.227.67.134"; #< DNS requests inside the namespace are forwarded here
# wg.port = 51822;
wg.privateKeyFile = config.sops.secrets.wg_ovpns_privkey.path;
wg.address.ipv4 = "146.70.100.165"; #< IP address for my end of the VPN tunnel. for OVPN public IPv4, this is also the public IP address.
wg.peer.publicKey = "xc9p/lf2uLg6IGDh54E0Pbc6WI/J9caaByhwD4Uiu0Q="; #< pubkey by which i can authenticate OVPN, varies per OVPN endpoint
wg.peer.endpoint = "vpn31.prd.losangeles.ovpn.com:9930";
# wg.peer.endpoint = "45.83.89.131:9930";
};
}

View File

@@ -0,0 +1,14 @@
{ config, ... }:
{
sane.services.wg-home.enable = true;
sane.services.wg-home.visibleToWan = true;
sane.services.wg-home.forwardToWan = true;
sane.services.wg-home.routeThroughServo = false;
services.unbound.settings.server.interface = [
# provide DNS to my wireguard clients
config.sane.hosts.by-name."servo".wg-home.ip
];
services.unbound.settings.server.access-control = [
"${config.sane.hosts.by-name."servo".wg-home.ip}/24 allow"
];
}

View File

@@ -0,0 +1,70 @@
# bitmagnet is a DHT crawler. it discovers publicly reachable torrents and indexes:
# - torrent's magnet URI
# - torrent's name
# - torrent's file list (the first 100 files, per torrent), including size and "type" (e.g. video)
# - seeder/leecher counts
# - torrent's size
# it provides a web UI to query these, especially a search form.
# data is stored in postgresql as `bitmagnet` db (`sudo -u bitmagnet psql`)
# after 30 days of operation:
# - 12m torrents discovered
# - 77GB database size => 6500B per torrent
{ config, ... }:
{
services.bitmagnet.enable = true;
sane.netns.ovpns.services = [ "bitmagnet" ];
sane.ports.ports."3334" = {
protocol = [ "tcp" "udp" ];
# visibleTo.ovpns = true; #< not needed: it runs in the ovpns namespace
description = "colin-bitmagnet";
};
services.bitmagnet.settings = {
# dht_crawler.scaling_factor: how rapidly to crawl the DHT.
# influences number of worker threads, buffer sizes, etc.
# default: 10.
# docs claim "diminishing returns" above 10, but seems weakly confident about that.
dht_crawler.scaling_factor = 64;
# http_server.local_address: `$addr:$port` to `listen` to.
# default is `:3333`, which listens on _all_ interfaces.
# the http server exposes unprotected admin endpoints though, so restrict to private interfaces:
http_server.local_address = "${config.sane.netns.ovpns.veth.netns.ipv4}:3333";
# tmdb.enabled: whether to query The Movie DataBase to resolve filename -> movie title.
# default: true.
# docs claim 1 query per second rate limit, unless you supply your own API key.
tmdb.enabled = false;
};
# bitmagnet web client
# protected by passwd because it exposes some mutation operations:
# - queuing "jobs"
# - deleting torrent infos (in bulk)
# it uses graphql for _everything_, so no easy way to disable just the mutations (and remove the password) AFAICT.
services.nginx.virtualHosts."bitmagnet.uninsane.org" = {
# basicAuth is cleartext user/pw, so FORCE this to happen over SSL
forceSSL = true;
enableACME = true;
locations."/" = {
proxyPass = "http://${config.sane.netns.ovpns.veth.netns.ipv4}:3333";
recommendedProxySettings = true;
};
basicAuthFile = config.sops.secrets.bitmagnet_passwd.path;
};
sops.secrets."bitmagnet_passwd" = {
owner = config.users.users.nginx.name;
mode = "0400";
};
sane.dns.zones."uninsane.org".inet.CNAME."bitmagnet" = "native";
systemd.services.bitmagnet = {
# hardening (systemd-analyze security bitmagnet). base nixos service is already partially hardened.
serviceConfig.CapabilityBoundingSet = "";
serviceConfig.SystemCallArchitectures = "native";
serviceConfig.PrivateDevices = true;
serviceConfig.PrivateUsers = true;
serviceConfig.ProtectProc = "invisible";
serviceConfig.ProcSubset = "pid";
serviceConfig.SystemCallFilter = [ "@system-service" "~@privileged" "~@resources" ];
};
}

View File

@@ -104,13 +104,6 @@ in
SRV."_turns._tcp" = "5 50 5349 turn";
};
sane.derived-secrets."/var/lib/coturn/shared_secret.bin" = {
encoding = "base64";
# TODO: make this not globally readable
acl.mode = "0644";
};
sane.fs."/var/lib/coturn/shared_secret.bin".wantedBeforeBy = [ "coturn.service" ];
# provide access to certs
users.users.turnserver.extraGroups = [ "nginx" ];
@@ -119,9 +112,14 @@ in
services.coturn.cert = "/var/lib/acme/turn.uninsane.org/fullchain.pem";
services.coturn.pkey = "/var/lib/acme/turn.uninsane.org/key.pem";
# N.B.: prosody needs to read this shared secret
sops.secrets."coturn_shared_secret".owner = "turnserver";
sops.secrets."coturn_shared_secret".group = "turnserver";
sops.secrets."coturn_shared_secret".mode = "0440";
#v disable to allow unauthenticated access (or set `services.coturn.no-auth = true`)
services.coturn.use-auth-secret = true;
services.coturn.static-auth-secret-file = "/var/lib/coturn/shared_secret.bin";
services.coturn.static-auth-secret-file = "/run/secrets/coturn_shared_secret";
services.coturn.lt-cred-mech = true; #< XXX: use-auth-secret overrides lt-cred-mech
services.coturn.min-port = turnPortLow;
@@ -131,11 +129,11 @@ in
"verbose"
# "Verbose" #< even MORE verbosity than "verbose" (it's TOO MUCH verbosity really)
"no-multicast-peers" # disables sending to IPv4 broadcast addresses (e.g. 224.0.0.0/3)
# "listening-ip=${config.sane.netns.ovpns.hostVethIpv4}" "external-ip=${config.sane.netns.ovpns.netnsPubIpv4}" #< 2024/04/25: works, if running in root namespace
"listening-ip=${config.sane.netns.ovpns.netnsPubIpv4}" "external-ip=${config.sane.netns.ovpns.netnsPubIpv4}"
# "listening-ip=${config.sane.netns.ovpns.veth.initns.ipv4}" "external-ip=${config.sane.netns.ovpns.wg.address.ipv4}" #< 2024/04/25: works, if running in root namespace
"listening-ip=${config.sane.netns.ovpns.wg.address.ipv4}" "external-ip=${config.sane.netns.ovpns.wg.address.ipv4}"
# old attempts:
# "external-ip=${config.sane.netns.ovpns.netnsPubIpv4}/${config.sane.netns.ovpns.hostVethIpv4}"
# "external-ip=${config.sane.netns.ovpns.wg.address.ipv4}/${config.sane.netns.ovpns.veth.initns.ipv4}"
# "listening-ip=10.78.79.51" # can be specified multiple times; omit for *
# "external-ip=97.113.128.229/10.78.79.51"
# "external-ip=97.113.128.229"

View File

@@ -1,4 +1,5 @@
# as of 2023/12/02: complete blockchain is 530 GiB (on-disk size may be larger)
# as of 2025/08/06: on-disk blockchain as reported by `du` is 732 GiB
#
# ports:
# - 8333: for node-to-node communications
@@ -22,7 +23,7 @@ let
_bitcoindWithExternalIp = pkgs.writeShellScriptBin "bitcoind" ''
set -xeu
externalip="$(cat /var/lib/tor/onion/bitcoind/hostname)"
exec ${bitcoind}/bin/bitcoind "-externalip=$externalip" "$@"
exec ${lib.getExe' bitcoind "bitcoind"} "-externalip=$externalip" "$@"
'';
# the package i provide to services.bitcoind ends up on system PATH, and used by other tools like clightning.
# therefore, even though services.bitcoind only needs `bitcoind` binary, provide all the other bitcoin-related binaries (notably `bitcoin-cli`) as well:
@@ -72,13 +73,18 @@ in
proxy=127.0.0.1:9050
'';
extraCmdlineOptions = [
# `man bitcoind` for options
# "-assumevalid=0" # to perform script validation on all blocks, instead of just the latest checkpoint published by bitcoin-core
# "-debug"
# "-debug=estimatefee"
# "-debug=leveldb"
# "-debug=http"
# "-debug=net"
"-debug=proxy"
"-debug=rpc"
# "-debug=validation"
# "-reindex" # wipe chainstate, block index, other indices; rebuild from blk*.dat (takes 2.5hrs)
# "-reindex-chainstate" # wipe chainstate; rebuild from blk*.dat
];
};

View File

@@ -115,16 +115,24 @@
# - fee-per-satoshi=<ppm>
# - feature configs (i.e. experimental-xyz options)
sane.services.clightning.extraConfig = ''
# log levels: "io", "debug", "info", "unusual", "broken"
log-level=info
# log levels: "io", "trace", "debug", "info", "unusual", "broken"
# log-level=info
# log-level=info:lightningd
# log-level=debug:lightningd
# log-level=debug
log-level=debug
# log-level=io
disable-plugin=cln-xpay
# let me use `lightning-cli dev-*` subcommands, fucktards.
developer
# `developer` enables `dev-*` but *disables* the older commands. asshats.
allow-deprecated-apis=true
# peerswap:
# - config example: <https://github.com/fort-nix/nix-bitcoin/pull/462/files#diff-b357d832705b8ce8df1f41934d613f79adb77c4cd5cd9e9eb12a163fca3e16c6>
# XXX: peerswap crashes clightning on launch. stacktrace is useless.
# plugin={pkgs.peerswap}/bin/peerswap
# plugin={lib.getExe' pkgs.peerswap "peerswap"}
# peerswap-db-path=/var/lib/clightning/peerswap/swaps
# peerswap-policy-path=...
'';

View File

@@ -1,32 +1,36 @@
{ ... }:
{
imports = [
./bitmagnet.nix
./coturn.nix
./cryptocurrencies
./email
./ejabberd.nix
./freshrss.nix
./export
./hickory-dns.nix
./gerbera.nix
./gitea.nix
./goaccess.nix
./ipfs.nix
./jackett
./jellyfin.nix
./jellyfin
./kiwix-serve.nix
./komga.nix
./lemmy.nix
./matrix
./minidlna.nix
./mumble.nix
./navidrome.nix
./nginx.nix
./nginx
./nixos-prebuild.nix
./ntfy
./pict-rs.nix
./pleroma.nix
./postgres.nix
./postgresql
./prosody
./slskd.nix
./transmission
./trust-dns.nix
./wikipedia.nix
];
}

View File

@@ -457,13 +457,12 @@ lib.mkIf false
mod_version = {};
};
});
sed = "${pkgs.gnused}/bin/sed";
in ''
ip=$(cat '${config.sane.services.dyn-dns.ipPath}')
# config is 444 (not 644), so we want to write out-of-place and then atomically move
# TODO: factor this out into `sane-woop` helper?
rm -f /var/lib/ejabberd/ejabberd.yaml.new
${sed} "s/%ANATIVE%/$ip/g" ${config-in} > /var/lib/ejabberd/ejabberd.yaml.new
${lib.getExe pkgs.gnused} "s/%ANATIVE%/$ip/g" ${config-in} > /var/lib/ejabberd/ejabberd.yaml.new
mv /var/lib/ejabberd/ejabberd.yaml{.new,}
'';

View File

@@ -25,10 +25,10 @@
#
# debugging: general connectivity issues
# - test that inbound port 25 is unblocked:
# - `curl https://canyouseeme.org/ --data 'port=25&IP=185.157.162.178' | grep 'see your service'`
# - `curl https://canyouseeme.org/ --data 'port=25&IP=$MX_IP' | grep 'see your service'`
# - and retry with port 465, 587
# - i think this API requires the queried IP match the source IP
# - if necessary, `systemctl stop postfix` and `sudo nc -l 185.157.162.178 25`, then try https://canyouseeme.org
# - if necessary, `systemctl stop postfix` and `sudo nc -l $MX_IP 25`, then try https://canyouseeme.org
{ ... }:
{

View File

@@ -124,7 +124,9 @@
# ];
};
};
services.dovecot2.modules = [
environment.systemPackages = [
# XXX(2025-03-16): dovecot loads modules from /run/current-system/sw/lib/dovecot/modules
# see: <https://github.com/NixOS/nixpkgs/pull/387642>
pkgs.dovecot_pigeonhole # enables sieve execution (?)
];
services.dovecot2.sieve = {
@@ -141,5 +143,5 @@
'';
};
systemd.services.dovecot2.serviceConfig.RestartSec = lib.mkForce "15s"; # nixos defaults this to 1s
systemd.services.dovecot.serviceConfig.RestartSec = lib.mkForce "15s"; # nixos defaults this to 1s
}

View File

@@ -1,4 +1,11 @@
# postfix config options: <https://www.postfix.org/postconf.5.html>
# config files:
# - /etc/postfix/main.cf
# - /etc/postfix/master.cf
#
# logs:
# - postfix logs directly to *syslog*,
# so check e.g. ~/.local/share/rsyslog
{ config, lib, pkgs, ... }:
@@ -20,12 +27,12 @@ in
{
sane.persist.sys.byStore.private = [
# TODO: mode? could be more granular
{ user = "opendkim"; group = "opendkim"; path = "/var/lib/opendkim"; method = "bind"; }
{ user = "root"; group = "root"; path = "/var/lib/postfix"; method = "bind"; } #< probably not *all* of postfix needs to actually be persisted (e.g. not the conf dir)
{ user = "opendkim"; group = "opendkim"; path = "/var/lib/opendkim"; method = "bind"; } #< TODO: migrate to secrets
{ user = "root"; group = "root"; path = "/var/spool/mail"; method = "bind"; }
# *probably* don't need these dirs:
# "/var/lib/dhparams" # https://github.com/NixOS/nixpkgs/blob/master/nixos/modules/security/dhparams.nix
# "/var/lib/dovecot"
# "/var/lib/postfix"
];
# XXX(2023/10/20): opening these ports in the firewall has the OPPOSITE effect as intended.
@@ -92,9 +99,12 @@ in
services.postfix.hostname = "mx.uninsane.org";
services.postfix.origin = "uninsane.org";
services.postfix.destination = [ "localhost" "uninsane.org" ];
services.postfix.sslCert = "/var/lib/acme/mx.uninsane.org/fullchain.pem";
services.postfix.sslKey = "/var/lib/acme/mx.uninsane.org/key.pem";
services.postfix.config.smtpd_tls_chain_files = [
"/var/lib/acme/mx.uninsane.org/key.pem"
"/var/lib/acme/mx.uninsane.org/fullchain.pem"
];
# see: `man 5 virtual`
services.postfix.virtual = ''
notify.matrix@uninsane.org matrix-synapse
@uninsane.org colin
@@ -104,7 +114,7 @@ in
# smtpd_milters = local:/run/opendkim/opendkim.sock
# milter docs: http://www.postfix.org/MILTER_README.html
# mail filters for receiving email and from authorized SMTP clients (i.e. via submission)
# smtpd_milters = inet:185.157.162.190:8891
# smtpd_milters = inet:$IP:8891
# opendkim.sock will add a Authentication-Results header, with `dkim=pass|fail|...` value to received messages
smtpd_milters = "unix:/run/opendkim/opendkim.sock";
# mail filters for sendmail
@@ -135,17 +145,32 @@ in
# smtpd_sender_restrictions = reject_unknown_sender_domain
};
# debugging options:
# services.postfix.masterConfig = {
# "proxymap".args = [ "-v" ];
# "proxywrite".args = [ "-v" ];
# "relay".args = [ "-v" ];
# "smtp".args = [ "-v" ];
# "smtp_inet".args = [ "-v" ];
# "submission".args = [ "-v" ];
# "submissions".args = [ "-v" ];
# "submissions".chroot = false;
# "submissions".private = false;
# "submissions".privileged = true;
# };
services.postfix.enableSubmission = true;
services.postfix.submissionOptions = submissionOptions;
services.postfix.enableSubmissions = true;
services.postfix.submissionsOptions = submissionOptions;
systemd.services.postfix.after = [ "wireguard-wg-ovpns.service" ];
systemd.services.postfix.partOf = [ "wireguard-wg-ovpns.service" ];
systemd.services.postfix.serviceConfig = {
# run this behind the OVPN static VPN
NetworkNamespacePath = "/run/netns/ovpns";
};
systemd.services.postfix.unitConfig.RequiresMountsFor = [
"/var/spool/mail" # spooky errors when postfix is run w/o this: `warning: connect #1 to subsystem private/proxymap: Connection refused`
"/var/lib/opendkim"
];
# run these behind the OVPN static VPN
sane.netns.ovpns.services = [ "opendkim" "postfix" ];
#### OPENDKIM
@@ -164,34 +189,37 @@ in
# keeping this the same as the hostname seems simplest
services.opendkim.selector = "mx";
systemd.services.opendkim.after = [ "wireguard-wg-ovpns.service" ];
systemd.services.opendkim.partOf = [ "wireguard-wg-ovpns.service" ];
systemd.services.opendkim.serviceConfig = {
# run this behind the OVPN static VPN
NetworkNamespacePath = "/run/netns/ovpns";
# /run/opendkim/opendkim.sock needs to be rw by postfix
UMask = lib.mkForce "0011";
};
#### OUTGOING MESSAGE REWRITING:
services.postfix.enableHeaderChecks = true;
services.postfix.headerChecks = [
# intercept gitea registration confirmations and manually screen them
{
# headerChecks are somehow ignorant of alias rules: have to redirect to a real user
action = "REDIRECT colin@uninsane.org";
pattern = "/^Subject: Please activate your account/";
}
# intercept Matrix registration confirmations
{
action = "REDIRECT colin@uninsane.org";
pattern = "/^Subject:.*Validate your email/";
}
# XXX postfix only supports performing ONE action per header.
# {
# action = "REPLACE Subject: git application: Please activate your account";
# pattern = "/^Subject:.*activate your account/";
# }
];
# - `man 5 header_checks`
# - <https://www.postfix.org/header_checks.5.html>
# - populates `/var/lib/postfix/conf/header_checks`
# XXX(2024-08-06): registration gating via email matches is AWFUL:
# 1. bypassed if the service offers localization.
# 2. if i try to forward the registration request, it may match the filter again and get sent back to my inbox.
# 3. header checks are possibly under-used in the ecosystem, and may break postfix config.
# services.postfix.enableHeaderChecks = true;
# services.postfix.headerChecks = [
# # intercept gitea registration confirmations and manually screen them
# {
# # headerChecks are somehow ignorant of alias rules: have to redirect to a real user
# action = "REDIRECT colin@uninsane.org";
# pattern = "/^Subject: Please activate your account/";
# }
# # intercept Matrix registration confirmations
# {
# action = "REDIRECT colin@uninsane.org";
# pattern = "/^Subject:.*Validate your email/";
# }
# # XXX postfix only supports performing ONE action per header.
# # {
# # action = "REPLACE Subject: git application: Please activate your account";
# # pattern = "/^Subject:.*activate your account/";
# # }
# ];
}

View File

@@ -10,7 +10,7 @@
fileSystems."/var/export/media" = {
# everything in here could be considered publicly readable (based on the viewer's legal jurisdiction)
device = "/var/media";
options = [ "rbind" ];
options = [ "rbind" "nofail" ];
};
# fileSystems."/var/export/playground" = {
# device = config.fileSystems."/mnt/persist/ext".device;
@@ -34,18 +34,16 @@
];
sane.fs."/var/export/README.md" = {
wantedBy = [ "nfs.service" "sftpgo.service" ];
file.text = ''
- media/ read-only: Videos, Music, Books, etc
- playground/ read-write: use it to share files with other users of this server, inaccessible from the www
- pub/ read-only: content made to be shared with the www
- playground/ read-write*: use it to share files with other users of this server, inaccessible from the www
*if you can't write to it, make sure you're connected to the WiFi and not mobile.
'';
};
sane.fs."/var/export/playground/README.md" = {
wantedBy = [ "nfs.service" "sftpgo.service" ];
file.text = ''
this directory is intentionally read+write by anyone with access (i.e. on the LAN).
this directory is intentionally read+write by anyone with access.
- share files
- write poetry
- be a friendly troll
@@ -53,7 +51,6 @@
};
sane.fs."/var/export/.public_for_test/test" = {
wantedBy = [ "nfs.service" "sftpgo.service" ];
file.text = ''
automated tests read this file to probe connectivity
'';

View File

@@ -102,14 +102,14 @@ in
}
{
# binding this means any doof client can connect (TLS only)
address = config.sane.netns.doof.hostVethIpv4;
address = config.sane.netns.doof.veth.initns.ipv4;
port = 990;
debug = true;
tls_mode = 2; # 2 = "implicit FTPS": client negotiates TLS before any FTP command.
}
{
# binding this means any LAN client can connect via `ftp.uninsane.org` (TLS only)
address = config.sane.netns.doof.netnsPubIpv4;
address = config.sane.netns.doof.wg.address.ipv4;
port = 990;
debug = true;
tls_mode = 2; # 2 = "implicit FTPS": client negotiates TLS before any FTP command.
@@ -141,7 +141,7 @@ in
};
data_provider = {
driver = "memory";
external_auth_hook = "${external_auth_hook}/bin/external_auth_hook";
external_auth_hook = lib.getExe external_auth_hook;
# track_quota:
# - 0: disable quota tracking
# - 1: quota is updated on every upload/delete, even if user has no quota restriction
@@ -158,14 +158,15 @@ in
];
systemd.services.sftpgo = {
after = [ "network-online.target" ];
after = [ "network-online.target" ]; #< so that it reliably binds to all interfaces/netns's?
wants = [ "network-online.target" ];
serviceConfig = {
ReadWritePaths = [ "/var/export" ];
Restart = "always";
RestartSec = "20s";
UMask = lib.mkForce "0002";
};
unitConfig.RequiresMountsFor = [
"/var/export/media"
"/var/export/playground"
];
serviceConfig.ReadWritePaths = [ "/var/export" ];
serviceConfig.Restart = "always";
serviceConfig.RestartSec = "20s";
serviceConfig.UMask = lib.mkForce "0002";
};
}

View File

@@ -69,8 +69,12 @@ TRUSTED_CREDS = [
# /etc/shadow style creds.
# mkpasswd -m sha-512
# $<method>$<salt>$<hash>
"$6$Zq3c2u4ghUH4S6EP$pOuRt13sEKfX31OqPbbd1LuhS21C9MICMc94iRdTAgdAcJ9h95gQH/6Jf6Ie4Obb0oxQtojRJ1Pd/9QHOlFMW." #< m. rocket boy
"$6$Zq3c2u4ghUH4S6EP$pOuRt13sEKfX31OqPbbd1LuhS21C9MICMc94iRdTAgdAcJ9h95gQH/6Jf6Ie4Obb0oxQtojRJ1Pd/9QHOlFMW.", #< m. rocket boy
"$6$B0NLGNdCL51PNse1$46G.aA1ATWIv5v.jUsKf4F3NS7emV2jB2gkZ3MytZtMvw2pjniHmRl0fywRjKW9TuXTeK9T50v.H0f2BaQ4PT1", #< v. telephony
]
TRUSTED_VIEWING_OR_PLAYGROUND_CREDS = [
# "$6$iikDajz5b.YH1.on$tfSzzBEtX8IeDiJJXCasOTxRTd7cFDKXU6dhlWYVhK6xDeJhV2fh6bmm1WIHItjIth9Eh9zNgUB8xibMIWCm/." # fedi (2024-08-27); music appreciation
];
def mkAuthOk(username: str, permissions: dict[str, list[str]]) -> dict:
return dict(
@@ -112,8 +116,8 @@ def isLan(ip: str) -> bool:
def isWireguard(ip: str) -> bool:
return ip.startswith("10.0.10.")
def isTrustedCred(password: str) -> bool:
for cred in TRUSTED_CREDS:
def isTrustedCred(password: str, credlist: list[str] = TRUSTED_CREDS) -> bool:
for cred in credlist:
if passlib.hosts.linux_context.verify(password, cred):
return True
@@ -130,6 +134,22 @@ def getAuthResponse(ip: str, username: str, password: str) -> dict:
"/": PERM_RW,
"/playground": PERM_RW,
"/.public_for_test": PERM_RO,
"/media/Music": PERM_RO, #< i am too picky about Music organization
})
if isTrustedCred(password, TRUSTED_VIEWING_OR_PLAYGROUND_CREDS) and username != "colin":
return mkAuthOk(username, permissions = {
# error prone, but... not the worst if i miss something
"/": PERM_LIST,
"/media/archive": PERM_DENY,
"/media/Books": PERM_RO,
"/media/collections": PERM_DENY,
"/media/games": PERM_RO,
"/media/Music": PERM_RO,
"/media/Pictures": PERM_RO,
"/media/torrents": PERM_DENY,
"/media/Videos": PERM_RO,
"/playground": PERM_RW,
"/.public_for_test": PERM_RO,
})
if isWireguard(ip):
# allow any user from wireguard

View File

@@ -0,0 +1,38 @@
# gerbera UPNP/media server
# accessible from TVs on the LAN
# unauthenticated admin and playback UI at http://servo:49152/
#
# supposedly does transcoding, but i poked at it for 10 minutes and couldn't get that working
#
# compatibility:
# - LG TV: music: all working
# - LG TV: videos: mixed
{ lib, ... }:
lib.mkIf false #< XXX(2024-11-17): WORKS, but no better than any other service; slow to index and transcoding doesn't work
{
sane.ports.ports."1900" = {
protocol = [ "udp" ];
visibleTo.lan = true;
description = "colin-upnp-for-gerbera";
};
sane.ports.ports."49152" = {
protocol = [ "tcp" "udp" ]; # TODO: is udp required?
visibleTo.lan = true;
description = "colin-gerbera-http";
};
sane.persist.sys.byStore.plaintext = [
# persist the index database, since it takes a good 30 minutes to scan the media collection
{ user = "mediatomb"; group = "mediatomb"; mode = "0700"; path = "/var/lib/gerbera"; method = "bind"; }
];
services.mediatomb.enable = true;
services.mediatomb.serverName = "servo";
services.mediatomb.transcoding = true;
services.mediatomb.mediaDirectories = [
{ path = "/var/media/Music"; recursive = true; hidden-files = false; }
{ path = "/var/media/Videos/Film"; recursive = true; hidden-files = false; }
{ path = "/var/media/Videos/Shows"; recursive = true; hidden-files = false; }
];
users.users.mediatomb.extraGroups = [ "media" ];
}

View File

@@ -1,21 +1,33 @@
# config options: <https://docs.gitea.io/en-us/administration/config-cheat-sheet/>
# TODO: service shouldn't run as `git` user, but as `gitea`
{ config, pkgs, lib, ... }:
{
sane.persist.sys.byStore.private = [
{ user = "git"; group = "gitea"; mode = "0750"; path = "/var/lib/gitea"; method = "bind"; }
];
sane.programs.gitea.enableFor.user.colin = true; # for admin, and monitoring
services.gitea.enable = true;
services.gitea.user = "git"; # default is 'gitea'
services.gitea.database.type = "postgres";
services.gitea.database.user = "git";
services.gitea.appName = "Perfectly Sane Git";
# services.gitea.disableRegistration = true;
services.gitea.database.createDatabase = false; #< silence warning which wants db user and name to be equal
# TODO: remove this after merge: <https://github.com/NixOS/nixpkgs/pull/268849>
services.gitea.database.createDatabase = false; # can only createDatabase if user ("git") == dbname ("gitea")
services.gitea.database.type = "postgres";
services.gitea.database.user = "git";
# createDatabase=false means manually specify the connection; see: <https://github.com/NixOS/nixpkgs/pull/268849>
services.gitea.database.name = "gitea";
services.gitea.database.socket = "/run/postgresql"; #< would have been set if createDatabase = true
services.postgresql.enable = true;
services.postgresql.ensureDatabases = [ "gitea" ];
services.postgresql.ensureUsers = [{
name = "git";
# ensureDBOwnership = true; # not possible if db name ("gitea") != db username ("git"); one-time manual setup required to grant user ownership of the relevant db
}];
# gitea doesn't create the git user
users.users.git = {
description = "Gitea Service";
@@ -40,14 +52,21 @@
# timeout for email approval. 5760 = 4 days. 10080 = 7 days
ACTIVE_CODE_LIVE_MINUTES = 10080;
# REGISTER_EMAIL_CONFIRM = false;
# REGISTER_MANUAL_CONFIRM = true;
REGISTER_EMAIL_CONFIRM = true;
# REGISTER_EMAIL_CONFIRM = true; #< override REGISTER_MANUAL_CONFIRM
REGISTER_MANUAL_CONFIRM = true;
# not sure what this notifies *on*...
ENABLE_NOTIFY_MAIL = true;
# defaults to image-based captcha.
# also supports recaptcha (with custom URLs) or hCaptcha.
ENABLE_CAPTCHA = true;
NOREPLY_ADDRESS = "noreply.anonymous.git@uninsane.org";
EMAIL_DOMAIN_BLOCKLIST = lib.concatStringsSep ", " [
"*.claychoen.top"
"*.gemmasmith.co.uk"
"*.jenniferlawrence.uk"
"*.sarahconnor.co.uk"
"*.marymarshall.co.uk"
];
};
session = {
COOKIE_SECURE = true;
@@ -75,7 +94,7 @@
ENABLED = true;
FROM = "notify.git@uninsane.org";
PROTOCOL = "sendmail";
SENDMAIL_PATH = "${pkgs.postfix}/bin/sendmail";
SENDMAIL_PATH = lib.getExe' pkgs.postfix "sendmail";
SENDMAIL_ARGS = "--"; # most "sendmail" programs take options, "--" will prevent an email address being interpreted as an option.
};
time = {
@@ -85,37 +104,75 @@
};
};
systemd.services.gitea.wants = [ "postgresql.service" ];
systemd.services.gitea.serviceConfig = {
# nix default is AF_UNIX AF_INET AF_INET6.
# we need more protos for sendmail to work. i thought it only needed +AF_LOCAL, but that didn't work.
RestrictAddressFamilies = lib.mkForce "~";
# add maildrop to allow sendmail to work
ReadWritePaths = lib.mkForce [
ReadWritePaths = [
"/var/lib/postfix/queue/maildrop"
"/var/lib/gitea"
];
# rate limit the restarts to prevent systemd from disabling it
RestartSec = 5;
RestartMaxDelaySec = 30;
StartLimitBurst = 120;
RestartSteps = 5;
};
services.openssh.settings.UsePAM = true; #< required for `git` user to authenticate
# services.openssh.settings.UsePAM = true; #< required for `git` user to authenticate
services.anubis.instances."git.uninsane.org" = {
settings.TARGET = "http://127.0.0.1:3000";
# allow IM clients/etc to show embeds/previews, else they just show "please verify you aren't a bot..."
botPolicy.openGraph.enabled = true;
};
# hosted git (web view and for `git <cmd>` use
# TODO: enable publog?
services.nginx.virtualHosts."git.uninsane.org" = {
services.nginx.virtualHosts."git.uninsane.org" = let
# XXX(2025-07-24): gitea's still being crawled, even with robots.txt.
# the load is less than when Anthropic first started, but it's still pretty high (like 600%).
# place behind anubis to prevent AI crawlers from hogging my CPU (gitea is slow to render pages).
proxyPassHeavy = "http://unix:${config.services.anubis.instances."git.uninsane.org".settings.BIND}";
# but anubis breaks embeds, so only protect the expensive repos.
proxyPassLight = "http://127.0.0.1:3000";
proxyTo = proxy: root: {
proxyPass = proxy;
recommendedProxySettings = true;
};
in {
forceSSL = true; # gitea complains if served over a different protocol than its config file says
enableACME = true;
# inherit kTLS;
extraConfig = ''
client_max_body_size 100m;
'';
locations."/" = {
proxyPass = "http://127.0.0.1:3000";
proxyPass = proxyPassLight;
recommendedProxySettings = true;
};
# selectively proxy the heavyweight items through anubis.
# a typical interaction is:
# nginx:/colin/linux -> anubis:/colin/linux -> browser is served a loading page
# -> nginx:.within.website/x/cmd/anubis/api/pass-challenge?response=... -> anubis:.within.website/x/cmd/anubis/api/pass-challenge?response=... -> browser is forwarded to /colin/linux
# -> nginx:/colin/linux -> anubis:/colin/linux -> gitea:/colin/linux -> browser is served the actual content
locations."/.within.website/" = proxyTo proxyPassHeavy;
locations."/colin/linux" = proxyTo proxyPassHeavy;
locations."/colin/nixpkgs" = proxyTo proxyPassHeavy;
locations."/colin/opencellid-mirror" = proxyTo proxyPassHeavy;
locations."/colin/podcastindex-db-mirror" = proxyTo proxyPassHeavy;
# fuck you @anthropic
locations."= /robots.txt".extraConfig = ''
return 200 "User-agent: *\nDisallow: /\n";
'';
# locations."= /robots.txt".extraConfig = ''
# return 200 "User-agent: *\nDisallow: /\n";
# '';
# gitea serves all `raw` files as content-type: plain, but i'd like to serve them as their actual content type.
# or at least, enough to make specific pages viewable (serving unoriginal content as arbitrary content type is dangerous).
locations."~ ^/colin/phone-case-cq/raw/.*.html" = {
proxyPass = "http://127.0.0.1:3000";
proxyPass = proxyPassLight;
recommendedProxySettings = true;
extraConfig = ''
proxy_hide_header Content-Type;
default_type text/html;
@@ -123,7 +180,8 @@
'';
};
locations."~ ^/colin/phone-case-cq/raw/.*.js" = {
proxyPass = "http://127.0.0.1:3000";
proxyPass = proxyPassLight;
recommendedProxySettings = true;
extraConfig = ''
proxy_hide_header Content-Type;
default_type text/html;

View File

@@ -1,4 +1,5 @@
{ pkgs, ... }:
{ lib, pkgs, ... }:
lib.mkIf false #< 2024/09/30: disabled because i haven't used it in several months
{
# based on <https://bytes.fyi/real-time-goaccess-reports-with-nginx/>
# log-format setting can be derived with this tool if custom:
@@ -10,7 +11,7 @@
description = "GoAccess server monitoring";
serviceConfig = {
ExecStart = ''
${pkgs.goaccess}/bin/goaccess \
${lib.getExe pkgs.goaccess} \
-f /var/log/nginx/public.log \
--log-format=VCOMBINED \
--real-time-html \
@@ -22,7 +23,7 @@
--port=7890 \
-o /var/lib/goaccess/index.html
'';
ExecReload = "${pkgs.coreutils}/bin/kill -HUP $MAINPID";
ExecReload = "${lib.getExe' pkgs.coreutils "kill"} -HUP $MAINPID";
Type = "simple";
Restart = "on-failure";
RestartSec = "10s";
@@ -55,6 +56,7 @@
locations."/ws" = {
proxyPass = "http://127.0.0.1:7890";
recommendedProxySettings = true;
# XXX not sure how much of this is necessary
extraConfig = ''
proxy_http_version 1.1;

View File

@@ -1,5 +1,5 @@
# TODO: split this file apart into smaller files to make it easier to understand
{ config, lib, pkgs, ... }:
{ config, lib, ... }:
let
dyn-dns = config.sane.services.dyn-dns;
@@ -55,8 +55,7 @@ in
];
};
services.trust-dns.settings.zones = [ "uninsane.org" ];
services.hickory-dns.settings.zones = builtins.attrNames config.sane.dns.zones;
networking.nat.enable = true; #< TODO: try removing this?
# networking.nat.extraCommands = ''
@@ -83,12 +82,12 @@ in
# };
sane.services.trust-dns.enable = true;
sane.services.trust-dns.instances = let
sane.services.hickory-dns.enable = true;
sane.services.hickory-dns.instances = let
mkSubstitutions = flavor: {
"%ADOOF%" = config.sane.netns.doof.netnsPubIpv4;
"%ADOOF%" = config.sane.netns.doof.wg.address.ipv4;
"%ANATIVE%" = nativeAddrs."servo.${flavor}";
"%AOVPNS%" = config.sane.netns.ovpns.netnsPubIpv4;
"%AOVPNS%" = config.sane.netns.ovpns.wg.address.ipv4;
"%AWAN%" = "$(cat '${dyn-dns.ipPath}')";
"%CNAMENATIVE%" = "servo.${flavor}";
};
@@ -97,37 +96,37 @@ in
doof = {
substitutions = mkSubstitutions "doof";
listenAddrsIpv4 = [
config.sane.netns.doof.hostVethIpv4
config.sane.netns.doof.netnsPubIpv4
config.sane.netns.doof.veth.initns.ipv4
config.sane.netns.doof.wg.address.ipv4
nativeAddrs."servo.lan"
# config.sane.netns.ovpns.hostVethIpv4
# config.sane.netns.ovpns.veth.initns.ipv4
];
};
hn = {
substitutions = mkSubstitutions "hn";
listenAddrsIpv4 = [ nativeAddrs."servo.hn" ];
enableRecursiveResolver = true; #< allow wireguard clients to use this as their DNS resolver
# extraConfig = {
# zones = [
# {
# # forward the root zone to the local DNS resolver
# # to allow wireguard clients to use this as their DNS resolver
# zone = ".";
# zone_type = "Forward";
# stores = {
# type = "forward";
# name_servers = [
# {
# socket_addr = "127.0.0.53:53";
# protocol = "udp";
# trust_nx_responses = true;
# }
# ];
# };
# }
# ];
# };
};
# hn = {
# substitutions = mkSubstitutions "hn";
# listenAddrsIpv4 = [ nativeAddrs."servo.hn" ];
# enableRecursiveResolver = true; #< allow wireguard clients to use this as their DNS resolver
# # extraConfig = {
# # zones = [
# # {
# # # forward the root zone to the local DNS resolver
# # # to allow wireguard clients to use this as their DNS resolver
# # zone = ".";
# # zone_type = "Forward";
# # stores = {
# # type = "forward";
# # name_servers = [
# # {
# # socket_addr = "127.0.0.53:53";
# # protocol = "udp";
# # trust_nx_responses = true;
# # }
# # ];
# # };
# # }
# # ];
# # };
# };
# lan = {
# substitutions = mkSubstitutions "lan";
# listenAddrsIpv4 = [ nativeAddrs."servo.lan" ];
@@ -141,5 +140,10 @@ in
# };
};
sane.services.dyn-dns.restartOnChange = lib.map (c: "${c.service}.service") (builtins.attrValues config.sane.services.trust-dns.instances);
systemd.services.hickory-dns-doof.after = [
# service will fail to bind the veth, otherwise
"netns-doof-veth.service"
];
sane.services.dyn-dns.restartOnChange = lib.map (c: "${c.service}.service") (builtins.attrValues config.sane.services.hickory-dns.instances);
}

View File

@@ -27,6 +27,7 @@ lib.mkIf false # i don't actively use ipfs anymore
locations."/" = {
proxyPass = "http://127.0.0.1:8080";
recommendedProxySettings = true;
extraConfig = ''
proxy_set_header Host $host;
proxy_set_header X-Ipfs-Gateway-Prefix "";

View File

@@ -10,15 +10,16 @@ in
];
services.jackett.enable = true;
systemd.services.jackett.after = [ "wireguard-wg-ovpns.service" ];
systemd.services.jackett.partOf = [ "wireguard-wg-ovpns.service" ];
# run this behind the OVPN static VPN
sane.netns.ovpns.services = [ "jackett" ];
systemd.services.jackett = {
# run this behind the OVPN static VPN
serviceConfig.NetworkNamespacePath = "/run/netns/ovpns";
serviceConfig.ExecStartPre = [ "${lib.getExe pkgs.sane-scripts.ip-check} --no-upnp --expect ${config.sane.netns.ovpns.netnsPubIpv4}" ]; # abort if public IP is not as expected
serviceConfig.ExecStartPre = [
# abort if public IP is not as expected
"${lib.getExe pkgs.sane-scripts.ip-check} --no-upnp --expect ${config.sane.netns.ovpns.wg.address.ipv4}"
];
# patch in `--ListenPublic` so that it's reachable from the netns veth.
# this also makes it reachable from the VPN pub address. oh well.
serviceConfig.ExecStart = lib.mkForce "${cfg.package}/bin/Jackett --ListenPublic --NoUpdates --DataFolder '${cfg.dataDir}'";
serviceConfig.ExecStart = lib.mkForce "${lib.getExe' cfg.package "Jackett"} --ListenPublic --NoUpdates --DataFolder '${cfg.dataDir}'";
serviceConfig.RestartSec = "30s";
# hardening (systemd-analyze security jackett)
@@ -55,7 +56,7 @@ in
enableACME = true;
# inherit kTLS;
locations."/" = {
proxyPass = "http://${config.sane.netns.ovpns.netnsVethIpv4}:9117";
proxyPass = "http://${config.sane.netns.ovpns.veth.netns.ipv4}:9117";
recommendedProxySettings = true;
};
locations."= /robots.txt".extraConfig = ''

View File

@@ -1,127 +0,0 @@
# configuration options (today i don't store my config in nix):
#
# - jellyfin-web can be statically configured (result/share/jellyfin-web/config.json)
# - <https://jellyfin.org/docs/general/clients/web-config>
# - configure server list, plugins, "menuLinks", colors
#
# - jellfyin server is configured in /var/lib/jellfin/
# - root/default/<LibraryType>/
# - <LibraryName>.mblink: contains the directory name where this library lives
# - options.xml: contains preferences which were defined in the web UI during import
# - e.g. `EnablePhotos`, `EnableChapterImageExtraction`, etc.
# - config/encoding.xml: transcoder settings
# - config/system.xml: misc preferences like log file duration, audiobook resume settings, etc.
# - data/jellyfin.db: maybe account definitions? internal state?
{ config, lib, ... }:
{
# https://jellyfin.org/docs/general/networking/index.html
sane.ports.ports."1900" = {
protocol = [ "udp" ];
visibleTo.lan = true;
description = "colin-upnp-for-jellyfin";
};
sane.ports.ports."7359" = {
protocol = [ "udp" ];
visibleTo.lan = true;
description = "colin-jellyfin-specific-client-discovery";
# ^ not sure if this is necessary: copied this port from nixos jellyfin.openFirewall
};
# not sure if 8096/8920 get used either:
sane.ports.ports."8096" = {
protocol = [ "tcp" ];
visibleTo.lan = true;
description = "colin-jellyfin-http-lan";
};
sane.ports.ports."8920" = {
protocol = [ "tcp" ];
visibleTo.lan = true;
description = "colin-jellyfin-https-lan";
};
sane.persist.sys.byStore.plaintext = [
{ user = "jellyfin"; group = "jellyfin"; mode = "0700"; path = "/var/lib/jellyfin"; method = "bind"; }
];
sane.fs."/var/lib/jellyfin/config/logging.json" = {
# "Emby.Dlna" logging: <https://jellyfin.org/docs/general/networking/dlna>
symlink.text = ''
{
"Serilog": {
"MinimumLevel": {
"Default": "Information",
"Override": {
"Microsoft": "Warning",
"System": "Warning",
"Emby.Dlna": "Debug",
"Emby.Dlna.Eventing": "Debug"
}
},
"WriteTo": [
{
"Name": "Console",
"Args": {
"outputTemplate": "[{Timestamp:HH:mm:ss}] [{Level:u3}] [{ThreadId}] {SourceContext}: {Message:lj}{NewLine}{Exception}"
}
}
],
"Enrich": [ "FromLogContext", "WithThreadId" ]
}
}
'';
wantedBeforeBy = [ "jellyfin.service" ];
};
# Jellyfin multimedia server
# this is mostly taken from the official jellfin.org docs
services.nginx.virtualHosts."jelly.uninsane.org" = {
forceSSL = true;
enableACME = true;
# inherit kTLS;
locations."/" = {
proxyPass = "http://127.0.0.1:8096";
extraConfig = ''
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-Protocol $scheme;
proxy_set_header X-Forwarded-Host $http_host;
# Disable buffering when the nginx proxy gets very resource heavy upon streaming
proxy_buffering off;
'';
};
# locations."/web/" = {
# proxyPass = "http://127.0.0.1:8096/web/index.html";
# extraConfig = ''
# proxy_set_header Host $host;
# proxy_set_header X-Real-IP $remote_addr;
# proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
# proxy_set_header X-Forwarded-Proto $scheme;
# proxy_set_header X-Forwarded-Protocol $scheme;
# proxy_set_header X-Forwarded-Host $http_host;
# '';
# };
locations."/socket" = {
proxyPass = "http://127.0.0.1:8096";
extraConfig = ''
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-Protocol $scheme;
proxy_set_header X-Forwarded-Host $http_host;
'';
};
};
sane.dns.zones."uninsane.org".inet.CNAME."jelly" = "native";
services.jellyfin.enable = true;
}

View File

@@ -0,0 +1,173 @@
# configuration options (today only a *subset* of the config is done in nix)
# - jellyfin-web can be statically configured (result/share/jellyfin-web/config.json)
# - <https://jellyfin.org/docs/general/clients/web-config>
# - configure server list, plugins, "menuLinks", colors
#
# - jellfyin server is configured in /var/lib/jellfin/
# - root/default/<LibraryType>/
# - <LibraryName>.mblink: contains the directory name where this library lives
# - options.xml: contains preferences which were defined in the web UI during import
# - e.g. `EnablePhotos`, `EnableChapterImageExtraction`, etc.
# - config/encoding.xml: transcoder settings
# - config/system.xml: misc preferences like log file duration, audiobook resume settings, etc.
# - data/jellyfin.db: maybe account definitions? internal state?
#
# N.B.: default install DOES NOT SUPPORT DLNA out of the box.
# one must install it as a "plugin", which can be done through the UI.
{ config, lib, ... }:
# lib.mkIf false #< XXX(2024-11-17): disabled because it hasn't been working for months; web UI hangs on load, TVs see no files
{
config = lib.mkIf (config.sane.maxBuildCost >= 2) {
# https://jellyfin.org/docs/general/networking/index.html
sane.ports.ports."1900" = {
protocol = [ "udp" ];
visibleTo.lan = true;
description = "colin-upnp-for-jellyfin";
};
sane.ports.ports."7359" = {
protocol = [ "udp" ];
visibleTo.lan = true;
description = "colin-jellyfin-specific-client-discovery";
# ^ not sure if this is necessary: copied this port from nixos jellyfin.openFirewall
};
# not sure if 8096/8920 get used either:
sane.ports.ports."8096" = {
protocol = [ "tcp" ];
visibleTo.lan = true;
description = "colin-jellyfin-http-lan";
};
sane.ports.ports."8920" = {
protocol = [ "tcp" ];
visibleTo.lan = true;
description = "colin-jellyfin-https-lan";
};
sane.persist.sys.byStore.plaintext = [
{ user = "jellyfin"; group = "jellyfin"; mode = "0700"; path = "/var/lib/jellyfin/data"; method = "bind"; }
{ user = "jellyfin"; group = "jellyfin"; mode = "0700"; path = "/var/lib/jellyfin/metadata"; method = "bind"; }
# TODO: ship plugins statically, via nix. that'll be less fragile
{ user = "jellyfin"; group = "jellyfin"; mode = "0700"; path = "/var/lib/jellyfin/plugins/DLNA_5.0.0.0"; method = "bind"; }
{ user = "jellyfin"; group = "jellyfin"; mode = "0700"; path = "/var/lib/jellyfin/root"; method = "bind"; }
];
sane.persist.sys.byStore.ephemeral = [
{ user = "jellyfin"; group = "jellyfin"; mode = "0700"; path = "/var/lib/jellyfin/log"; method = "bind"; }
{ user = "jellyfin"; group = "jellyfin"; mode = "0700"; path = "/var/lib/jellyfin/transcodes"; method = "bind"; }
];
services.jellyfin.enable = true;
users.users.jellyfin.extraGroups = [ "media" ];
sane.fs."/var/lib/jellyfin".dir.acl = {
user = "jellyfin";
group = "jellyfin";
mode = "0700";
};
# `"Jellyfin.Plugin.Dlna": "Debug"` logging: <https://jellyfin.org/docs/general/networking/dlna>
# TODO: switch Dlna back to 'Information' once satisfied with stability
sane.fs."/var/lib/jellyfin/config/logging.json".symlink.text = ''
{
"Serilog": {
"MinimumLevel": {
"Default": "Information",
"Override": {
"Microsoft": "Warning",
"System": "Warning",
"Jellyfin.Plugin.Dlna": "Debug"
}
},
"WriteTo": [
{
"Name": "Console",
"Args": {
"outputTemplate": "[{Timestamp:HH:mm:ss}] [{Level:u3}] [{ThreadId}] {SourceContext}: {Message:lj}{NewLine}{Exception}"
}
}
],
"Enrich": [ "FromLogContext", "WithThreadId" ]
}
}
'';
sane.fs."/var/lib/jellyfin/config/network.xml".file.text = ''
<?xml version="1.0" encoding="utf-8"?>
<NetworkConfiguration xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<BaseUrl />
<EnableHttps>false</EnableHttps>
<RequireHttps>false</RequireHttps>
<InternalHttpPort>8096</InternalHttpPort>
<InternalHttpsPort>8920</InternalHttpsPort>
<PublicHttpPort>8096</PublicHttpPort>
<PublicHttpsPort>8920</PublicHttpsPort>
<AutoDiscovery>true</AutoDiscovery>
<EnableUPnP>false</EnableUPnP>
<EnableIPv4>true</EnableIPv4>
<EnableIPv6>false</EnableIPv6>
<EnableRemoteAccess>true</EnableRemoteAccess>
<LocalNetworkSubnets>
<string>10.78.76.0/22</string>
</LocalNetworkSubnets>
<KnownProxies>
<string>127.0.0.1</string>
<string>localhost</string>
<string>10.78.79.1</string>
</KnownProxies>
<IgnoreVirtualInterfaces>false</IgnoreVirtualInterfaces>
<VirtualInterfaceNames />
<EnablePublishedServerUriByRequest>false</EnablePublishedServerUriByRequest>
<PublishedServerUriBySubnet />
<RemoteIPFilter />
<IsRemoteIPFilterBlacklist>false</IsRemoteIPFilterBlacklist>
</NetworkConfiguration>
'';
# guest user id is `5ad194d60dca41de84b332950ffc4308`
sane.fs."/var/lib/jellyfin/plugins/configurations/Jellyfin.Plugin.Dlna.xml".file.text = ''
<?xml version="1.0" encoding="utf-8"?>
<DlnaPluginConfiguration xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<EnablePlayTo>true</EnablePlayTo>
<ClientDiscoveryIntervalSeconds>60</ClientDiscoveryIntervalSeconds>
<BlastAliveMessages>true</BlastAliveMessages>
<AliveMessageIntervalSeconds>180</AliveMessageIntervalSeconds>
<SendOnlyMatchedHost>true</SendOnlyMatchedHost>
<DefaultUserId>5ad194d6-0dca-41de-84b3-32950ffc4308</DefaultUserId>
</DlnaPluginConfiguration>
'';
# fix LG TV to play more files.
# there are certain files for which it only supports Direct Play (not even "Direct Stream" -- but "Direct Play").
# this isn't a 100% fix: patching the profile allows e.g. Azumanga Daioh to play,
# but A Place Further Than the Universe still fails as before.
#
# profile is based on upstream: <https://github.com/jellyfin/jellyfin-plugin-dlna>
sane.fs."/var/lib/jellyfin/plugins/DLNA_5.0.0.0/profiles/LG Smart TV.xml".symlink.target = ./dlna/user/LG_Smart_TV.xml;
# XXX(2024-11-17): old method, but the file referenced seems not to be used and setting just it causes failures:
# > [DBG] Jellyfin.Plugin.Dlna.ContentDirectory.ContentDirectoryService: Not eligible for DirectPlay due to unsupported subtitles
# sane.fs."/var/lib/jellyfin/plugins/configurations/dlna/user/LG Smart TV.xml".symlink.target = ./dlna/user/LG_Smart_TV.xml;
systemd.services.jellyfin.unitConfig.RequiresMountsFor = [
"/var/media"
];
# Jellyfin multimedia server
# this is mostly taken from the official jellfin.org docs
services.nginx.virtualHosts."jelly.uninsane.org" = {
forceSSL = true;
enableACME = true;
# inherit kTLS;
locations."/" = {
proxyPass = "http://127.0.0.1:8096";
proxyWebsockets = true;
recommendedProxySettings = true;
# extraConfig = ''
# # Disable buffering when the nginx proxy gets very resource heavy upon streaming
# proxy_buffering off;
# '';
};
};
sane.dns.zones."uninsane.org".inet.CNAME."jelly" = "native";
};
}

View File

@@ -0,0 +1,91 @@
<?xml version="1.0"?>
<Profile xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<Name>LG Smart TV</Name>
<Identification>
<ModelName>LG TV</ModelName>
<Headers />
</Identification>
<Manufacturer>Jellyfin</Manufacturer>
<ManufacturerUrl>https://github.com/jellyfin/jellyfin</ManufacturerUrl>
<ModelName>Jellyfin Server</ModelName>
<ModelDescription>UPnP/AV 1.0 Compliant Media Server</ModelDescription>
<ModelNumber>01</ModelNumber>
<ModelUrl>https://github.com/jellyfin/jellyfin</ModelUrl>
<EnableAlbumArtInDidl>false</EnableAlbumArtInDidl>
<EnableSingleAlbumArtLimit>false</EnableSingleAlbumArtLimit>
<EnableSingleSubtitleLimit>false</EnableSingleSubtitleLimit>
<SupportedMediaTypes>Audio,Photo,Video</SupportedMediaTypes>
<AlbumArtPn>JPEG_SM</AlbumArtPn>
<MaxAlbumArtWidth>480</MaxAlbumArtWidth>
<MaxAlbumArtHeight>480</MaxAlbumArtHeight>
<MaxIconWidth>48</MaxIconWidth>
<MaxIconHeight>48</MaxIconHeight>
<MaxStreamingBitrate>140000000</MaxStreamingBitrate>
<MaxStaticBitrate>140000000</MaxStaticBitrate>
<MusicStreamingTranscodingBitrate>192000</MusicStreamingTranscodingBitrate>
<MaxStaticMusicBitrate xsi:nil="true" />
<ProtocolInfo>http-get:*:video/mpeg:*,http-get:*:video/mp4:*,http-get:*:video/vnd.dlna.mpeg-tts:*,http-get:*:video/avi:*,http-get:*:video/x-matroska:*,http-get:*:video/x-ms-wmv:*,http-get:*:video/wtv:*,http-get:*:audio/mpeg:*,http-get:*:audio/mp3:*,http-get:*:audio/mp4:*,http-get:*:audio/x-ms-wma:*,http-get:*:audio/wav:*,http-get:*:audio/L16:*,http-get:*:image/jpeg:*,http-get:*:image/png:*,http-get:*:image/gif:*,http-get:*:image/tiff:*</ProtocolInfo>
<TimelineOffsetSeconds>10</TimelineOffsetSeconds>
<RequiresPlainVideoItems>false</RequiresPlainVideoItems>
<RequiresPlainFolders>false</RequiresPlainFolders>
<EnableMSMediaReceiverRegistrar>false</EnableMSMediaReceiverRegistrar>
<IgnoreTranscodeByteRangeRequests>false</IgnoreTranscodeByteRangeRequests>
<XmlRootAttributes />
<DirectPlayProfiles>
<DirectPlayProfile container="ts,mpegts,avi,mkv,m2ts" audioCodec="aac,ac3,eac3,mp3,dca,dts" videoCodec="h264,hevc" type="Video" />
<DirectPlayProfile container="mp4,m4v" audioCodec="aac,ac3,eac3,mp3,dca,dts" videoCodec="h264,mpeg4,hevc" type="Video" />
<DirectPlayProfile container="mp3" type="Audio" />
<DirectPlayProfile container="jpeg" type="Photo" />
<DirectPlayProfile container="" audioCodec="" videoCodec="" type="Video" />
</DirectPlayProfiles>
<TranscodingProfiles>
<TranscodingProfile container="mp3" type="Audio" audioCodec="mp3" estimateContentLength="false" enableMpegtsM2TsMode="false" transcodeSeekInfo="Auto" copyTimestamps="false" context="Streaming" enableSubtitlesInManifest="false" minSegments="0" segmentLength="0" breakOnNonKeyFrames="false" />
<TranscodingProfile container="ts" type="Video" videoCodec="h264" audioCodec="ac3,aac,mp3" estimateContentLength="false" enableMpegtsM2TsMode="false" transcodeSeekInfo="Auto" copyTimestamps="false" context="Streaming" enableSubtitlesInManifest="false" minSegments="0" segmentLength="0" breakOnNonKeyFrames="false" />
<TranscodingProfile container="jpeg" type="Photo" estimateContentLength="false" enableMpegtsM2TsMode="false" transcodeSeekInfo="Auto" copyTimestamps="false" context="Streaming" enableSubtitlesInManifest="false" minSegments="0" segmentLength="0" breakOnNonKeyFrames="false" />
</TranscodingProfiles>
<ContainerProfiles>
<ContainerProfile type="Photo">
<Conditions>
<ProfileCondition condition="LessThanEqual" property="Width" value="1920" isRequired="true" />
<ProfileCondition condition="LessThanEqual" property="Height" value="1080" isRequired="true" />
</Conditions>
</ContainerProfile>
</ContainerProfiles>
<CodecProfiles>
<CodecProfile type="Video" codec="mpeg4">
<Conditions>
<ProfileCondition condition="LessThanEqual" property="Width" value="1920" isRequired="true" />
<ProfileCondition condition="LessThanEqual" property="Height" value="1080" isRequired="true" />
<ProfileCondition condition="LessThanEqual" property="VideoFramerate" value="30" isRequired="true" />
</Conditions>
<ApplyConditions />
</CodecProfile>
<CodecProfile type="Video" codec="h264">
<Conditions>
<ProfileCondition condition="LessThanEqual" property="Width" value="1920" isRequired="true" />
<ProfileCondition condition="LessThanEqual" property="Height" value="1080" isRequired="true" />
<ProfileCondition condition="LessThanEqual" property="VideoLevel" value="41" isRequired="true" />
</Conditions>
<ApplyConditions />
</CodecProfile>
<CodecProfile type="VideoAudio" codec="ac3,eac3,aac,mp3">
<Conditions>
<ProfileCondition condition="LessThanEqual" property="AudioChannels" value="6" isRequired="true" />
</Conditions>
<ApplyConditions />
</CodecProfile>
</CodecProfiles>
<ResponseProfiles>
<ResponseProfile container="m4v" type="Video" mimeType="video/mp4">
<Conditions />
</ResponseProfile>
<ResponseProfile container="ts,mpegts" type="Video" mimeType="video/mpeg">
<Conditions />
</ResponseProfile>
</ResponseProfiles>
<SubtitleProfiles>
<SubtitleProfile format="srt" method="Embed" />
<SubtitleProfile format="srt" method="External" />
</SubtitleProfiles>
</Profile>

View File

@@ -1,30 +1,42 @@
# how to update wikipedia snapshot:
# - browse for later snapshots:
# - <https://mirror.accum.se/mirror/wikimedia.org/other/kiwix/zim/wikipedia>
# - DL directly, or via rsync (resumable):
# - `rsync --progress --append-verify rsync://mirror.accum.se/mirror/wikimedia.org/other/kiwix/zim/wikipedia/wikipedia_en_all_maxi_2022-05.zim .`
{ ... }:
{ config, lib, pkgs, ... }:
{
sane.persist.sys.byStore.ext = [
{ user = "colin"; group = "users"; path = "/var/lib/kiwix"; method = "bind"; }
];
config = lib.mkIf (config.sane.maxBuildCost >= 3) {
sane.services.kiwix-serve = {
enable = true;
port = 8013;
zimPaths = with pkgs.zimPackages; [
alpinelinux_en_all_maxi.zimPath
archlinux_en_all_maxi.zimPath
bitcoin_en_all_maxi.zimPath
devdocs_en_nix.zimPath
gentoo_en_all_maxi.zimPath
# khanacademy_en_all.zimPath #< TODO: enable
openstreetmap-wiki_en_all_maxi.zimPath
psychonautwiki_en_all_maxi.zimPath
rationalwiki_en_all_maxi.zimPath
# wikipedia_en_100.zimPath
wikipedia_en_all_maxi.zimPath
# wikipedia_en_all_mini.zimPath
zimgit-food-preparation_en.zimPath
zimgit-medicine_en.zimPath
zimgit-post-disaster_en.zimPath
zimgit-water_en.zimPath
];
};
sane.services.kiwix-serve = {
enable = true;
port = 8013;
zimPaths = [ "/var/lib/kiwix/wikipedia_en_all_maxi_2023-11.zim" ];
services.nginx.virtualHosts."w.uninsane.org" = {
forceSSL = true;
enableACME = true;
# inherit kTLS;
locations."/" = {
proxyPass = "http://127.0.0.1:8013";
recommendedProxySettings = true;
};
locations."= /robots.txt".extraConfig = ''
return 200 "User-agent: *\nDisallow: /\n";
'';
};
sane.dns.zones."uninsane.org".inet.CNAME."w" = "native";
};
services.nginx.virtualHosts."w.uninsane.org" = {
forceSSL = true;
enableACME = true;
# inherit kTLS;
locations."/".proxyPass = "http://127.0.0.1:8013";
locations."= /robots.txt".extraConfig = ''
return 200 "User-agent: *\nDisallow: /\n";
'';
};
sane.dns.zones."uninsane.org".inet.CNAME."w" = "native";
}

View File

@@ -1,8 +1,9 @@
{ config, ... }:
{ config, lib, ... }:
let
svc-cfg = config.services.komga;
inherit (svc-cfg) user group port stateDir;
in
lib.mkIf false #< 2024/09/30: disabled because i haven't used this for several months
{
sane.persist.sys.byStore.plaintext = [
{ inherit user group; mode = "0700"; path = stateDir; method = "bind"; }
@@ -16,6 +17,7 @@ in
enableACME = true;
locations."/" = {
proxyPass = "http://127.0.0.1:${builtins.toString port}";
recommendedProxySettings = true;
};
locations."= /robots.txt".extraConfig = ''
return 200 "User-agent: *\nDisallow: /\n";

View File

@@ -5,177 +5,175 @@
{ config, lib, pkgs, ... }:
let
inherit (builtins) toString;
inherit (lib) mkForce;
uiPort = 1234; # default ui port is 1234
backendPort = 8536; # default backend port is 8536
#^ i guess the "backend" port is used for federation?
pict-rs = pkgs.pict-rs;
# pict-rs = pkgs.pict-rs.overrideAttrs (upstream: {
# # as of v0.4.2, all non-GIF video is forcibly transcoded.
# # that breaks lemmy, because of the request latency.
# # and it eats up hella CPU.
# # pict-rs is iffy around video altogether: mp4 seems the best supported.
# # XXX: this patch no longer applies after 0.5.10 -> 0.5.11 update.
# # git log is hard to parse, but *suggests* that video is natively supported
# # better than in the 0.4.2 days, e.g. 5fd59fc5b42d31559120dc28bfef4e5002fb509e
# # "Change commandline flag to allow disabling video, since it is enabled by default"
# postPatch = (upstream.postPatch or "") + ''
# substituteInPlace src/validate.rs \
# --replace-fail 'if transcode_options.needs_reencode() {' 'if false {'
# '';
# });
in {
services.lemmy = {
enable = true;
settings.hostname = "lemmy.uninsane.org";
# federation.debug forces outbound federation queries to be run synchronously
# N.B.: this option might not be read for 0.17.0+? <https://github.com/LemmyNet/lemmy/blob/c32585b03429f0f76d1e4ff738786321a0a9df98/RELEASES.md#upgrade-instructions>
# settings.federation.debug = true;
settings.port = backendPort;
ui.port = uiPort;
database.createLocally = true;
nginx.enable = true;
};
systemd.services.lemmy.environment = {
RUST_BACKTRACE = "full";
RUST_LOG = "error";
# RUST_LOG = "warn";
# RUST_LOG = "debug";
# RUST_LOG = "trace";
# upstream defaults LEMMY_DATABASE_URL = "postgres:///lemmy?host=/run/postgresql";
# - Postgres complains that we didn't specify a user
# lemmy formats the url as:
# - postgres://{user}:{password}@{host}:{port}/{database}
# SO suggests (https://stackoverflow.com/questions/3582552/what-is-the-format-for-the-postgresql-connection-string-url):
# - postgresql://[user[:password]@][netloc][:port][/dbname][?param1=value1&...]
# LEMMY_DATABASE_URL = "postgres://lemmy@/run/postgresql"; # connection to server on socket "/run/postgresql/.s.PGSQL.5432" failed: FATAL: database "run/postgresql" does not exist
# LEMMY_DATABASE_URL = "postgres://lemmy?host=/run/postgresql"; # no PostgreSQL user name specified in startup packet
# LEMMY_DATABASE_URL = mkForce "postgres://lemmy@?host=/run/postgresql"; # WORKS
LEMMY_DATABASE_URL = mkForce "postgres://lemmy@/lemmy?host=/run/postgresql";
};
users.groups.lemmy = {};
users.users.lemmy = {
group = "lemmy";
isSystemUser = true;
};
services.nginx.virtualHosts."lemmy.uninsane.org" = {
forceSSL = true;
enableACME = true;
};
sane.dns.zones."uninsane.org".inet.CNAME."lemmy" = "native";
systemd.services.lemmy = {
# fix to use a normal user so we can configure perms correctly
# XXX(2024-07-28): this hasn't been rigorously tested:
# possible that i've set something too strict and won't notice right away
serviceConfig.DynamicUser = mkForce false;
serviceConfig.User = "lemmy";
serviceConfig.Group = "lemmy";
# hardening (systemd-analyze security lemmy)
# a handful of these are specified in upstream nixpkgs, but mostly not
serviceConfig.LockPersonality = true;
serviceConfig.NoNewPrivileges = true;
serviceConfig.MemoryDenyWriteExecute = true;
serviceConfig.PrivateDevices = true;
serviceConfig.PrivateMounts = true;
serviceConfig.PrivateTmp = true;
serviceConfig.PrivateUsers = true;
serviceConfig.ProcSubset = "pid";
serviceConfig.ProtectClock = true;
serviceConfig.ProtectControlGroups = true;
serviceConfig.ProtectHome = true;
serviceConfig.ProtectHostname = true;
serviceConfig.ProtectKernelLogs = true;
serviceConfig.ProtectKernelModules = true;
serviceConfig.ProtectKernelTunables = true;
serviceConfig.ProtectProc = "invisible";
serviceConfig.ProtectSystem = "strict";
serviceConfig.RemoveIPC = true;
serviceConfig.RestrictAddressFamilies = "AF_UNIX AF_INET AF_INET6";
serviceConfig.RestrictNamespaces = true;
serviceConfig.RestrictSUIDSGID = true;
serviceConfig.SystemCallArchitectures = "native";
serviceConfig.SystemCallFilter = [ "@system-service" ];
};
systemd.services.lemmy-ui = {
# hardening (systemd-analyze security lemmy-ui)
# TODO: upstream into nixpkgs
serviceConfig.LockPersonality = true;
serviceConfig.NoNewPrivileges = true;
# serviceConfig.MemoryDenyWriteExecute = true; #< it uses v8, JIT
serviceConfig.PrivateDevices = true;
serviceConfig.PrivateMounts = true;
serviceConfig.PrivateTmp = true;
serviceConfig.PrivateUsers = true;
serviceConfig.ProcSubset = "pid";
serviceConfig.ProtectClock = true;
serviceConfig.ProtectControlGroups = true;
serviceConfig.ProtectHome = true;
serviceConfig.ProtectHostname = true;
serviceConfig.ProtectKernelLogs = true;
serviceConfig.ProtectKernelModules = true;
serviceConfig.ProtectKernelTunables = true;
serviceConfig.ProtectProc = "invisible";
serviceConfig.ProtectSystem = "strict";
serviceConfig.RemoveIPC = true;
serviceConfig.RestrictAddressFamilies = "AF_UNIX AF_INET AF_INET6";
serviceConfig.RestrictNamespaces = true;
serviceConfig.RestrictSUIDSGID = true;
serviceConfig.SystemCallArchitectures = "native";
serviceConfig.SystemCallFilter = [ "@system-service" "@pkey" "@sandbox" ];
};
#v DO NOT REMOVE: defaults to 0.3, instead of latest, so always need to explicitly set this.
services.pict-rs.package = pict-rs;
# pict-rs configuration is applied in this order:
# - via toml
# - via env vars (overrides everything above)
# - via CLI flags (overrides everything above)
# some of the CLI flags have defaults, making it the only actual way to configure certain things even when docs claim otherwise.
# CLI args: <https://git.asonix.dog/asonix/pict-rs#user-content-running>
systemd.services.pict-rs = {
serviceConfig.ExecStart = lib.mkForce (lib.concatStringsSep " " [
"${lib.getBin pict-rs}/bin/pict-rs run"
"--media-video-max-frame-count" (builtins.toString (30*60*60))
"--media-process-timeout 120"
"--media-video-allow-audio" # allow audio
]);
# TOML args: <https://git.asonix.dog/asonix/pict-rs/src/branch/main/pict-rs.toml>
toml = pkgs.formats.toml { };
tomlConfig = toml.generate "pict-rs.toml" pictrsConfig;
pictrsConfig = {
media.process_timeout = 120;
media.video.allow_audio = true;
media.video.max_frame_count = 30 * 60 * 60;
};
in {
config = lib.mkIf (config.sane.maxBuildCost >= 2) {
services.lemmy = {
enable = true;
settings.hostname = "lemmy.uninsane.org";
# federation.debug forces outbound federation queries to be run synchronously
# N.B.: this option might not be read for 0.17.0+? <https://github.com/LemmyNet/lemmy/blob/c32585b03429f0f76d1e4ff738786321a0a9df98/RELEASES.md#upgrade-instructions>
# settings.federation.debug = true;
settings.port = backendPort;
ui.port = uiPort;
database.createLocally = true;
nginx.enable = true;
};
# hardening (systemd-analyze security pict-rs)
# TODO: upstream into nixpkgs
serviceConfig.LockPersonality = true;
serviceConfig.NoNewPrivileges = true;
serviceConfig.MemoryDenyWriteExecute = true;
serviceConfig.PrivateDevices = true;
serviceConfig.PrivateMounts = true;
serviceConfig.PrivateTmp = true;
serviceConfig.PrivateUsers = true;
serviceConfig.ProcSubset = "pid";
serviceConfig.ProtectClock = true;
serviceConfig.ProtectControlGroups = true;
serviceConfig.ProtectHome = true;
serviceConfig.ProtectHostname = true;
serviceConfig.ProtectKernelLogs = true;
serviceConfig.ProtectKernelModules = true;
serviceConfig.ProtectKernelTunables = true;
serviceConfig.ProtectProc = "invisible";
serviceConfig.ProtectSystem = "strict";
serviceConfig.RemoveIPC = true;
serviceConfig.RestrictAddressFamilies = "AF_UNIX AF_INET AF_INET6";
serviceConfig.RestrictNamespaces = true;
serviceConfig.RestrictSUIDSGID = true;
serviceConfig.SystemCallArchitectures = "native";
serviceConfig.SystemCallFilter = [ "@system-service" ];
systemd.services.lemmy.environment = {
RUST_BACKTRACE = "full";
RUST_LOG = "error";
# RUST_LOG = "warn";
# RUST_LOG = "debug";
# RUST_LOG = "trace";
# upstream defaults LEMMY_DATABASE_URL = "postgres:///lemmy?host=/run/postgresql";
# - Postgres complains that we didn't specify a user
# lemmy formats the url as:
# - postgres://{user}:{password}@{host}:{port}/{database}
# SO suggests (https://stackoverflow.com/questions/3582552/what-is-the-format-for-the-postgresql-connection-string-url):
# - postgresql://[user[:password]@][netloc][:port][/dbname][?param1=value1&...]
# LEMMY_DATABASE_URL = "postgres://lemmy@/run/postgresql"; # connection to server on socket "/run/postgresql/.s.PGSQL.5432" failed: FATAL: database "run/postgresql" does not exist
# LEMMY_DATABASE_URL = "postgres://lemmy?host=/run/postgresql"; # no PostgreSQL user name specified in startup packet
# LEMMY_DATABASE_URL = lib.mkForce "postgres://lemmy@?host=/run/postgresql"; # WORKS
LEMMY_DATABASE_URL = lib.mkForce "postgres://lemmy@/lemmy?host=/run/postgresql";
};
users.groups.lemmy = {};
users.users.lemmy = {
group = "lemmy";
isSystemUser = true;
};
services.nginx.virtualHosts."lemmy.uninsane.org" = {
forceSSL = true;
enableACME = true;
};
sane.dns.zones."uninsane.org".inet.CNAME."lemmy" = "native";
systemd.services.lemmy = {
# fix to use a normal user so we can configure perms correctly
# XXX(2024-07-28): this hasn't been rigorously tested:
# possible that i've set something too strict and won't notice right away
serviceConfig.DynamicUser = lib.mkForce false;
serviceConfig.User = "lemmy";
serviceConfig.Group = "lemmy";
# switch postgres from Requires -> Wants, so that postgres may restart without taking lemmy down with it.
requires = lib.mkForce [];
wants = [ "postgresql.service" ];
# hardening (systemd-analyze security lemmy)
# a handful of these are specified in upstream nixpkgs, but mostly not
serviceConfig.LockPersonality = true;
serviceConfig.NoNewPrivileges = true;
serviceConfig.MemoryDenyWriteExecute = true;
serviceConfig.PrivateDevices = true;
serviceConfig.PrivateMounts = true;
serviceConfig.PrivateTmp = true;
serviceConfig.PrivateUsers = true;
serviceConfig.ProcSubset = "pid";
serviceConfig.ProtectClock = true;
serviceConfig.ProtectControlGroups = true;
serviceConfig.ProtectHome = true;
serviceConfig.ProtectHostname = true;
serviceConfig.ProtectKernelLogs = true;
serviceConfig.ProtectKernelModules = true;
serviceConfig.ProtectKernelTunables = true;
serviceConfig.ProtectProc = "invisible";
serviceConfig.ProtectSystem = "strict";
serviceConfig.RemoveIPC = true;
serviceConfig.RestrictAddressFamilies = "AF_UNIX AF_INET AF_INET6";
serviceConfig.RestrictNamespaces = true;
serviceConfig.RestrictSUIDSGID = true;
serviceConfig.SystemCallArchitectures = "native";
serviceConfig.SystemCallFilter = [ "@system-service" ];
};
systemd.services.lemmy-ui = {
# hardening (systemd-analyze security lemmy-ui)
# TODO: upstream into nixpkgs
serviceConfig.LockPersonality = true;
serviceConfig.NoNewPrivileges = true;
# serviceConfig.MemoryDenyWriteExecute = true; #< it uses v8, JIT
serviceConfig.PrivateDevices = true;
serviceConfig.PrivateMounts = true;
serviceConfig.PrivateTmp = true;
serviceConfig.PrivateUsers = true;
serviceConfig.ProcSubset = "pid";
serviceConfig.ProtectClock = true;
serviceConfig.ProtectControlGroups = true;
serviceConfig.ProtectHome = true;
serviceConfig.ProtectHostname = true;
serviceConfig.ProtectKernelLogs = true;
serviceConfig.ProtectKernelModules = true;
serviceConfig.ProtectKernelTunables = true;
serviceConfig.ProtectProc = "invisible";
serviceConfig.ProtectSystem = "strict";
serviceConfig.RemoveIPC = true;
serviceConfig.RestrictAddressFamilies = "AF_UNIX AF_INET AF_INET6";
serviceConfig.RestrictNamespaces = true;
serviceConfig.RestrictSUIDSGID = true;
serviceConfig.SystemCallArchitectures = "native";
serviceConfig.SystemCallFilter = [ "@system-service" "@pkey" "@sandbox" ];
};
#v DO NOT REMOVE: defaults to 0.3, instead of latest, so always need to explicitly set this.
services.pict-rs.package = pict-rs;
systemd.services.pict-rs = {
serviceConfig.ExecStart = lib.mkForce (lib.concatStringsSep " " [
(lib.getExe pict-rs)
"--config-file"
tomlConfig
"run"
]);
# hardening (systemd-analyze security pict-rs)
# TODO: upstream into nixpkgs
serviceConfig.LockPersonality = true;
serviceConfig.NoNewPrivileges = true;
serviceConfig.MemoryDenyWriteExecute = true;
serviceConfig.PrivateDevices = true;
serviceConfig.PrivateMounts = true;
serviceConfig.PrivateTmp = true;
serviceConfig.PrivateUsers = true;
serviceConfig.ProcSubset = "pid";
serviceConfig.ProtectClock = true;
serviceConfig.ProtectControlGroups = true;
serviceConfig.ProtectHome = true;
serviceConfig.ProtectHostname = true;
serviceConfig.ProtectKernelLogs = true;
serviceConfig.ProtectKernelModules = true;
serviceConfig.ProtectKernelTunables = true;
serviceConfig.ProtectProc = "invisible";
serviceConfig.ProtectSystem = "strict";
serviceConfig.RemoveIPC = true;
serviceConfig.RestrictAddressFamilies = "AF_UNIX AF_INET AF_INET6";
serviceConfig.RestrictNamespaces = true;
serviceConfig.RestrictSUIDSGID = true;
serviceConfig.SystemCallArchitectures = "native";
serviceConfig.SystemCallFilter = [ "@system-service" ];
};
};
}

View File

@@ -12,7 +12,9 @@
# - delete a notification destination by setting `kind` to `null` (otherwise, request is identical to above)
#
{ config, lib, pkgs, ... }:
let
ntfy = config.services.ntfy-sh.enable;
in
{
imports = [
./discord-puppet.nix
@@ -30,7 +32,7 @@
# services.matrix-synapse.enable_registration_captcha = true;
# services.matrix-synapse.enable_registration_without_verification = true;
enable_registration = true;
# enable_registration = true;
# services.matrix-synapse.registration_shared_secret = "<shared key goes here>";
# default for listeners is port = 8448, tls = true, x_forwarded = false.
@@ -68,21 +70,30 @@
config.sops.secrets."matrix_synapse_secrets.yaml".path
];
systemd.services.matrix-synapse.postStart = ''
ACCESS_TOKEN=$(${pkgs.coreutils}/bin/cat ${config.sops.secrets.matrix_access_token.path})
TOPIC=$(${pkgs.coreutils}/bin/cat ${config.sops.secrets.ntfy-sh-topic.path})
# tune restart settings to ensure systemd doesn't disable it, and we don't overwhelm postgres
systemd.services.matrix-synapse.serviceConfig.RestartSec = 5;
systemd.services.matrix-synapse.serviceConfig.RestartMaxDelaySec = 20;
systemd.services.matrix-synapse.serviceConfig.StartLimitBurst = 120;
systemd.services.matrix-synapse.serviceConfig.RestartSteps = 3;
# switch postgres from Requires -> Wants, so that postgres may restart without taking matrix down with it.
systemd.services.matrix-synapse.requires = lib.mkForce [];
systemd.services.matrix-synapse.wants = [ "postgresql.service" ];
systemd.services.matrix-synapse.postStart = lib.optionalString ntfy ''
ACCESS_TOKEN=$(${lib.getExe' pkgs.coreutils "cat"} ${config.sops.secrets.matrix_access_token.path})
TOPIC=$(${lib.getExe' pkgs.coreutils "cat"} ${config.sops.secrets.ntfy-sh-topic.path})
echo "ensuring ntfy push gateway"
${pkgs.curl}/bin/curl \
${lib.getExe pkgs.curl} \
--header "Authorization: Bearer $ACCESS_TOKEN" \
--data "{ \"app_display_name\": \"ntfy-adapter\", \"app_id\": \"ntfy.uninsane.org\", \"data\": { \"url\": \"https://ntfy.uninsane.org/_matrix/push/v1/notify\", \"format\": \"event_id_only\" }, \"device_display_name\": \"ntfy-adapter\", \"kind\": \"http\", \"lang\": \"en-US\", \"profile_tag\": \"\", \"pushkey\": \"$TOPIC\" }" \
localhost:8008/_matrix/client/v3/pushers/set
echo "registered push gateways:"
${pkgs.curl}/bin/curl \
${lib.getExe pkgs.curl} \
--header "Authorization: Bearer $ACCESS_TOKEN" \
localhost:8008/_matrix/client/v3/pushers \
| ${pkgs.jq}/bin/jq .
| ${lib.getExe pkgs.jq} .
'';
@@ -112,6 +123,7 @@
locations."/" = {
proxyPass = "http://127.0.0.1:8008";
recommendedProxySettings = true;
extraConfig = ''
# allow uploading large files (matrix enforces a separate limit, downstream)
client_max_body_size 512m;
@@ -159,5 +171,5 @@
owner = config.users.users.matrix-synapse.name;
};
# provide access to ntfy-sh-topic secret
users.users.matrix-synapse.extraGroups = [ "ntfy-sh" ];
users.users.matrix-synapse.extraGroups = lib.optionals ntfy [ "ntfy-sh" ];
}

View File

@@ -1,6 +1,6 @@
# config docs:
# - <https://github.com/matrix-org/matrix-appservice-irc/blob/develop/config.sample.yaml>
{ config, lib, ... }:
{ lib, ... }:
let
ircServer = { name, additionalAddresses ? [], ssl ? true, sasl ? true, port ? if ssl then 6697 else 6667 }: let
@@ -128,6 +128,7 @@ in
ircService = {
logging.level = "warn"; # "error", "warn", "info", "debug"
mediaProxy.publicUrl = "https://irc.matrix.uninsane.org/media";
servers = {
"irc.esper.net" = ircServer {
name = "esper";
@@ -153,8 +154,17 @@ in
# notable channels:
# - #sxmo
# - #sxmo-offtopic
# supposedly also available at <irc://37lnq2veifl4kar7.onion:6667/> (unofficial)
};
"irc.rizon.net" = ircServer { name = "Rizon"; };
# "irc.sdf.org" = ircServer {
# # XXX(2024-11-06): seems it can't connect. "matrix-appservice-irc: WARN:Provisioner Provisioner only handles text 'yes'/'y' (from BASHy2-EU on irc.sdf.org)"
# # use instead? <https://lemmy.sdf.org/c/sdfpubnix>
# name = "sdf";
# # sasl = false;
# # notable channels (see: <https://sdf.org/?tutorials/irc-channels>)
# # - #sdf
# };
"wigle.net" = ircServer {
name = "WiGLE";
ssl = false;
@@ -168,4 +178,17 @@ in
# the service actively uses at least one of these, and both of them are fairly innocuous
SystemCallFilter = lib.mkForce "~@clock @cpu-emulation @debug @keyring @module @mount @obsolete @raw-io @setuid @swap";
};
services.nginx.virtualHosts."irc.matrix.uninsane.org" = {
forceSSL = true;
enableACME = true;
locations."/media" = {
proxyPass = "http://127.0.0.1:11111";
recommendedProxySettings = true;
};
};
sane.dns.zones."uninsane.org".inet = {
CNAME."irc.matrix" = "native";
};
}

View File

@@ -0,0 +1,39 @@
# - `man 5 minidlna.conf`
# - `man 8 minidlnad`
#
# this is an extremely simple (but limited) DLNA server:
# - no web UI
# - no runtime configuration -- just statically configure media directories instead
# - no transcoding
# compatibility:
# - LG TV: music: all working
# - LG TV: videos: mixed. i can't see the pattern; HEVC works; H.264 sometimes works.
{ lib, ... }:
lib.mkIf false #< XXX(2024-11-17): WORKS, but i'm trying gerbera instead for hopefully better transcoding
{
sane.ports.ports."1900" = {
protocol = [ "udp" ];
visibleTo.lan = true;
description = "colin-upnp-for-minidlna";
};
sane.ports.ports."8200" = {
protocol = [ "tcp" ];
visibleTo.lan = true;
description = "colin-minidlna-http";
};
services.minidlna.enable = true;
services.minidlna.settings = {
media_dir = [
# A/V/P to restrict a directory to audio/video/pictures
"A,/var/media/Music"
"V,/var/media/Videos/Film"
# "V,/var/media/Videos/Milkbags"
"V,/var/media/Videos/Shows"
];
notify_interval = 60;
};
users.users.minidlna.extraGroups = [ "media" ];
}

View File

@@ -0,0 +1,66 @@
# murmur is the server component of mumble.
# - docs: <https://www.mumble.info/documentation/>
# - config docs: <https://www.mumble.info/documentation/administration/config-file/>
#
# default port is 64738 (UDP and TCP)
#
# FIRST-RUN:
# - login from mumble client as `SuperUser`, password taken from `journalctl -u murmur`.
# - login from another machine and right click on self -> 'Register'
# - as SuperUser, right click on server root -> edit
# - Groups tab: select "admin", then add the other registered user to the group.
# - log out as SuperUser and manage the server using that other user now.
#
# USAGE:
# - 'auth' group = any user who has registered a cert with the server.
{ ... }:
{
sane.persist.sys.byStore.private = [
{ user = "murmur"; group = "murmur"; mode = "0700"; path = "/var/lib/murmur"; method = "bind"; }
];
services.murmur.enable = true;
services.murmur.welcometext = "welcome to Colin's mumble voice chat server";
# max bandwidth (bps) **per user**. i believe this affects both voice and uploads?
# mumble defaults to 558000, but nixos service defaults to 72000.
services.murmur.bandwidth = 558000;
services.murmur.imgMsgLength = 8 * 1024 * 1024;
services.murmur.sslCert = "/var/lib/acme/mumble.uninsane.org/fullchain.pem";
services.murmur.sslKey = "/var/lib/acme/mumble.uninsane.org/key.pem";
services.murmur.sslCa = "/etc/ssl/certs/ca-bundle.crt";
# allow clients on the LAN to discover this server
services.murmur.bonjour = true;
# mumble has a public server listing.
# my server doesn't associate with that registry (unless i specify registerPassword).
# however these settings appear to affect how the server presents itself to clients, regardless of registration.
services.murmur.registerName = "mumble.uninsane.org";
services.murmur.registerUrl = "https://mumble.uninsane.org";
services.murmur.registerHostname = "mumble.uninsane.org";
# defaultchannel=ID makes it so that unauthenticated users are placed in some specific channel when they join
services.murmur.extraConfig = ''
defaultchannel=2
'';
users.users.murmur.extraGroups = [
"nginx" # provide access to certs
];
services.nginx.virtualHosts."mumble.uninsane.org" = {
# allow ACME to procure a cert via nginx for this domain
enableACME = true;
};
sane.dns.zones."uninsane.org".inet = {
CNAME."mumble" = "native";
};
sane.ports.ports."64738" = {
protocol = [ "tcp" "udp" ];
visibleTo.lan = true;
visibleTo.doof = true;
description = "colin-mumble";
};
}

View File

@@ -34,7 +34,10 @@ lib.mkIf false #< i don't actively use navidrome
forceSSL = true;
enableACME = true;
# inherit kTLS;
locations."/".proxyPass = "http://127.0.0.1:4533";
locations."/" = {
proxyPass = "http://127.0.0.1:4533";
recommendedProxySettings = true;
};
};
sane.dns.zones."uninsane.org".inet.CNAME."music" = "native";

View File

@@ -1,248 +0,0 @@
# docs: <https://nixos.wiki/wiki/Nginx>
# docs: <https://nginx.org/en/docs/>
{ config, lib, pkgs, ... }:
let
# make the logs for this host "public" so that they show up in e.g. metrics
publog = vhost: lib.attrsets.unionOfDisjoint vhost {
extraConfig = (vhost.extraConfig or "") + ''
access_log /var/log/nginx/public.log vcombined;
'';
};
# kTLS = true; # in-kernel TLS for better perf
in
{
sane.ports.ports."80" = {
protocol = [ "tcp" ];
visibleTo.lan = true;
visibleTo.ovpns = true; # so that letsencrypt can procure a cert for the mx record
visibleTo.doof = true;
description = "colin-http-uninsane.org";
};
sane.ports.ports."443" = {
protocol = [ "tcp" ];
visibleTo.lan = true;
visibleTo.doof = true;
description = "colin-https-uninsane.org";
};
services.nginx.enable = true;
# nginxStable is one release behind nginxMainline.
# nginx itself recommends running mainline; nixos defaults to stable.
# services.nginx.package = pkgs.nginxMainline;
# XXX(2024-07-31): nixos defaults to zlib-ng -- supposedly more performant, but spams log with
# "gzip filter failed to use preallocated memory: ..."
services.nginx.package = pkgs.nginxMainline.override { zlib = pkgs.zlib; };
services.nginx.appendConfig = ''
# use 1 process per core.
# may want to increase worker_connections too, but `ulimit -n` must be increased first.
worker_processes auto;
'';
# this is the standard `combined` log format, with the addition of $host
# so that we have the virtualHost in the log.
# KEEP IN SYNC WITH GOACCESS
# goaccess calls this VCOMBINED:
# - <https://gist.github.com/jyap808/10570005>
services.nginx.commonHttpConfig = ''
log_format vcombined '$host:$server_port $remote_addr - $remote_user [$time_local] "$request" $status $body_bytes_sent "$http_referrer" "$http_user_agent"';
access_log /var/log/nginx/private.log vcombined;
'';
# enables gzip and sets gzip_comp_level = 5
services.nginx.recommendedGzipSettings = true;
# enables zstd and sets zstd_comp_level = 9
services.nginx.recommendedZstdSettings = true;
# enables OCSP stapling (so clients don't need contact the OCSP server -- i do instead)
# - doesn't seem to, actually: <https://www.ssllabs.com/ssltest/analyze.html?d=uninsane.org>
# caches TLS sessions for 10m
services.nginx.recommendedTlsSettings = true;
# enables sendfile, tcp_nopush, tcp_nodelay, keepalive_timeout 65
services.nginx.recommendedOptimisation = true;
# web blog/personal site
# alternative way to link stuff into the share:
# sane.fs."/var/www/sites/uninsane.org/share/Ubunchu".mount.bind = "/var/media/Books/Visual/HiroshiSeo/Ubunchu";
# sane.fs."/var/media/Books/Visual/HiroshiSeo/Ubunchu".dir = {};
services.nginx.virtualHosts."uninsane.org" = publog {
# a lot of places hardcode https://uninsane.org,
# and then when we mix http + non-https, we get CORS violations
# and things don't look right. so force SSL.
forceSSL = true;
enableACME = true;
# inherit kTLS;
# for OCSP stapling
sslTrustedCertificate = "${pkgs.cacert}/etc/ssl/certs/ca-bundle.crt";
locations."/" = {
root = "${pkgs.uninsane-dot-org}/share/uninsane-dot-org";
tryFiles = "$uri $uri/ @fallback";
};
# unversioned files
locations."@fallback" = {
root = "/var/www/sites/uninsane.org";
};
# uninsane.org/share/foo => /var/www/sites/uninsane.org/share/foo.
# special-cased to enable directory listings
locations."/share" = {
root = "/var/www/sites/uninsane.org";
extraConfig = ''
# autoindex => render directory listings
autoindex on;
# don't follow any symlinks when serving files
# otherwise it allows a directory escape
disable_symlinks on;
'';
};
locations."/share/Milkbags/" = {
alias = "/var/media/Videos/Milkbags/";
extraConfig = ''
# autoindex => render directory listings
autoindex on;
# don't follow any symlinks when serving files
# otherwise it allows a directory escape
disable_symlinks on;
'';
};
locations."/share/Ubunchu/" = {
alias = "/var/media/Books/Visual/HiroshiSeo/Ubunchu/";
extraConfig = ''
# autoindex => render directory listings
autoindex on;
# don't follow any symlinks when serving files
# otherwise it allows a directory escape
disable_symlinks on;
'';
};
# allow matrix users to discover that @user:uninsane.org is reachable via matrix.uninsane.org
locations."= /.well-known/matrix/server".extraConfig =
let
# use 443 instead of the default 8448 port to unite
# the client-server and server-server port for simplicity
server = { "m.server" = "matrix.uninsane.org:443"; };
in ''
add_header Content-Type application/json;
return 200 '${builtins.toJSON server}';
'';
locations."= /.well-known/matrix/client".extraConfig =
let
client = {
"m.homeserver" = { "base_url" = "https://matrix.uninsane.org"; };
"m.identity_server" = { "base_url" = "https://vector.im"; };
};
# ACAO required to allow element-web on any URL to request this json file
in ''
add_header Content-Type application/json;
add_header Access-Control-Allow-Origin *;
return 200 '${builtins.toJSON client}';
'';
# static URLs might not be aware of .well-known (e.g. registration confirmation URLs),
# so hack around that.
locations."/_matrix" = {
proxyPass = "http://127.0.0.1:8008";
};
locations."/_synapse" = {
proxyPass = "http://127.0.0.1:8008";
};
# allow ActivityPub clients to discover how to reach @user@uninsane.org
# see: https://git.pleroma.social/pleroma/pleroma/-/merge_requests/3361/
# not sure this makes sense while i run multiple AP services (pleroma, lemmy)
# locations."/.well-known/nodeinfo" = {
# proxyPass = "http://127.0.0.1:4000";
# extraConfig = pleromaExtraConfig;
# };
# redirect common feed URIs to the canonical feed
locations."= /atom".extraConfig = "return 301 /atom.xml;";
locations."= /feed".extraConfig = "return 301 /atom.xml;";
locations."= /feed.xml".extraConfig = "return 301 /atom.xml;";
locations."= /rss".extraConfig = "return 301 /atom.xml;";
locations."= /rss.xml".extraConfig = "return 301 /atom.xml;";
locations."= /blog/atom".extraConfig = "return 301 /atom.xml;";
locations."= /blog/atom.xml".extraConfig = "return 301 /atom.xml;";
locations."= /blog/feed".extraConfig = "return 301 /atom.xml;";
locations."= /blog/feed.xml".extraConfig = "return 301 /atom.xml;";
locations."= /blog/rss".extraConfig = "return 301 /atom.xml;";
locations."= /blog/rss.xml".extraConfig = "return 301 /atom.xml;";
};
# serve any site not listed above, if it's static.
# because we define it dynamically, SSL isn't trivial. support only http
# documented <https://nginx.org/en/docs/http/ngx_http_core_module.html#server_name>
services.nginx.virtualHosts."~^(?<domain>.+)$" = {
default = true;
addSSL = true;
enableACME = false;
sslCertificate = "/var/www/certs/wildcard/cert.pem";
sslCertificateKey = "/var/www/certs/wildcard/key.pem";
# sslCertificate = "/var/lib/acme/.minica/cert.pem";
# sslCertificateKey = "/var/lib/acme/.minica/key.pem";
# serverName = null;
locations."/" = {
# somehow this doesn't escape -- i get error 400 if i:
# curl 'http://..' --resolve '..:80:127.0.0.1'
root = "/var/www/sites/$domain";
# tryFiles = "$domain/$uri $domain/$uri/ =404";
};
};
security.acme.acceptTerms = true;
security.acme.defaults.email = "admin.acme@uninsane.org";
sane.persist.sys.byStore.plaintext = [
{ user = "acme"; group = "acme"; path = "/var/lib/acme"; method = "bind"; }
];
sane.persist.sys.byStore.private = [
{ user = "colin"; group = "users"; path = "/var/www/sites"; method = "bind"; }
];
sane.persist.sys.byStore.ephemeral = [
# logs *could* be persisted to private storage, but then there's the issue of
# "what if servo boots, isn't unlocked, and the whole / tmpfs is consumed by logs"
{ user = "nginx"; group = "nginx"; path = "/var/log/nginx"; method = "bind"; }
];
# let's encrypt default chain looks like:
# - End-entity certificate ← R3 ← ISRG Root X1 ← DST Root CA X3
# - <https://community.letsencrypt.org/t/production-chain-changes/150739>
# DST Root CA X3 expired in 2021 (?)
# the alternative chain is:
# - End-entity certificate ← R3 ← ISRG Root X1 (self-signed)
# using this alternative chain grants more compatibility for services like ejabberd
# but might decrease compatibility with very old clients that don't get updates (e.g. old android, iphone <= 4).
# security.acme.defaults.extraLegoFlags = [
security.acme.certs."uninsane.org" = rec {
# ISRG Root X1 results in lets encrypt sending the same chain as default,
# just without the final ISRG Root X1 ← DST Root CA X3 link.
# i.e. we could alternative clip the last item and achieve the exact same thing.
extraLegoRunFlags = [
"--preferred-chain" "ISRG Root X1"
];
extraLegoRenewFlags = extraLegoRunFlags;
};
# TODO: alternatively, we could clip the last cert IF it's expired,
# optionally outputting that to a new cert file.
# security.acme.defaults.postRun = "";
# create a self-signed SSL certificate for use with literally any domain.
# browsers will reject this, but proxies and local testing tools can be configured
# to accept it.
system.activationScripts.generate-x509-self-signed.text = ''
mkdir -p /var/www/certs/wildcard
test -f /var/www/certs/wildcard/key.pem || ${pkgs.openssl}/bin/openssl \
req -x509 -newkey rsa:4096 \
-keyout /var/www/certs/wildcard/key.pem \
-out /var/www/certs/wildcard/cert.pem \
-sha256 -nodes -days 3650 \
-addext 'subjectAltName=DNS:*' \
-subj '/CN=self-signed'
chmod 640 /var/www/certs/wildcard/{key,cert}.pem
chown root:nginx /var/www/certs/wildcard /var/www/certs/wildcard/{key,cert}.pem
'';
}

View File

@@ -0,0 +1,111 @@
# docs: <https://nixos.wiki/wiki/Nginx>
# docs: <https://nginx.org/en/docs/>
{ lib, pkgs, ... }:
{
imports = [
./uninsane.org.nix
./waka.laka.osaka
];
sane.ports.ports."80" = {
protocol = [ "tcp" ];
visibleTo.lan = true;
visibleTo.ovpns = true; # so that letsencrypt can procure a cert for the mx record
visibleTo.doof = true;
description = "colin-http-uninsane.org";
};
sane.ports.ports."443" = {
protocol = [ "tcp" ];
visibleTo.lan = true;
visibleTo.doof = true;
description = "colin-https-uninsane.org";
};
services.nginx.enable = true;
users.users.nginx.extraGroups = [ "anubis" ];
# nginxStable is one release behind nginxMainline.
# nginx itself recommends running mainline; nixos defaults to stable.
# services.nginx.package = pkgs.nginxMainline;
# XXX(2024-07-31): nixos defaults to zlib-ng -- supposedly more performant, but spams log with
# "gzip filter failed to use preallocated memory: ..."
# XXX(2025-07-24): "gzip filter" spam is gone => use default nginx package
# services.nginx.package = pkgs.nginxMainline.override { zlib = pkgs.zlib; };
services.nginx.appendConfig = ''
# use 1 process per core.
# may want to increase worker_connections too, but `ulimit -n` must be increased first.
worker_processes auto;
'';
# this is the standard `combined` log format, with the addition of $host
# so that we have the virtualHost in the log.
# KEEP IN SYNC WITH GOACCESS
# goaccess calls this VCOMBINED:
# - <https://gist.github.com/jyap808/10570005>
services.nginx.commonHttpConfig = ''
log_format vcombined '$host:$server_port $remote_addr - $remote_user [$time_local] "$request" $status $body_bytes_sent "$http_referrer" "$http_user_agent"';
access_log /var/log/nginx/private.log vcombined;
'';
# enables gzip and sets gzip_comp_level = 5
services.nginx.recommendedGzipSettings = true;
# enables zstd and sets zstd_comp_level = 9
# services.nginx.recommendedZstdSettings = true; #< XXX(2025-07-18): nginx zstd integration is unmaintained in NixOS
# enables OCSP stapling (so clients don't need contact the OCSP server -- i do instead)
# - doesn't seem to, actually: <https://www.ssllabs.com/ssltest/analyze.html?d=uninsane.org>
# caches TLS sessions for 10m
services.nginx.recommendedTlsSettings = true;
# enables sendfile, tcp_nopush, tcp_nodelay, keepalive_timeout 65
services.nginx.recommendedOptimisation = true;
# serve any site not otherwise declared, if it's static.
# because we define it dynamically, SSL isn't trivial. support only http
# documented <https://nginx.org/en/docs/http/ngx_http_core_module.html#server_name>
services.nginx.virtualHosts."~^(?<domain>.+)$" = {
default = true;
addSSL = true;
enableACME = false;
sslCertificate = "/var/www/certs/wildcard/cert.pem";
sslCertificateKey = "/var/www/certs/wildcard/key.pem";
# sslCertificate = "/var/lib/acme/.minica/cert.pem";
# sslCertificateKey = "/var/lib/acme/.minica/key.pem";
# serverName = null;
locations."/" = {
# somehow this doesn't escape -- i get error 400 if i:
# curl 'http://..' --resolve '..:80:127.0.0.1'
root = "/var/www/sites/$domain";
# tryFiles = "$domain/$uri $domain/$uri/ =404";
};
};
security.acme.acceptTerms = true;
security.acme.defaults.email = "admin.acme@uninsane.org";
sane.persist.sys.byStore.plaintext = [
{ user = "acme"; group = "acme"; path = "/var/lib/acme"; method = "bind"; }
];
sane.persist.sys.byStore.private = [
{ user = "colin"; group = "users"; path = "/var/www/sites"; method = "bind"; }
];
sane.persist.sys.byStore.ephemeral = [
# logs *could* be persisted to private storage, but then there's the issue of
# "what if servo boots, isn't unlocked, and the whole / tmpfs is consumed by logs"
{ user = "nginx"; group = "nginx"; path = "/var/log/nginx"; method = "bind"; }
];
# create a self-signed SSL certificate for use with literally any domain.
# browsers will reject this, but proxies and local testing tools can be configured
# to accept it.
system.activationScripts.generate-x509-self-signed.text = ''
mkdir -p /var/www/certs/wildcard
test -f /var/www/certs/wildcard/key.pem || ${lib.getExe pkgs.openssl} \
req -x509 -newkey rsa:4096 \
-keyout /var/www/certs/wildcard/key.pem \
-out /var/www/certs/wildcard/cert.pem \
-sha256 -nodes -days 3650 \
-addext 'subjectAltName=DNS:*' \
-subj '/CN=self-signed'
chmod 640 /var/www/certs/wildcard/{key,cert}.pem
chown root:nginx /var/www/certs/wildcard /var/www/certs/wildcard/{key,cert}.pem
'';
}

View File

@@ -0,0 +1,132 @@
{ pkgs, ... }:
{
# alternative way to link stuff into the share:
# sane.fs."/var/www/sites/uninsane.org/share/Ubunchu".mount.bind = "/var/media/Books/Visual/HiroshiSeo/Ubunchu";
# sane.fs."/var/media/Books/Visual/HiroshiSeo/Ubunchu".dir = {};
services.nginx.virtualHosts."uninsane.org" = {
# a lot of places hardcode https://uninsane.org,
# and then when we mix http + non-https, we get CORS violations
# and things don't look right. so force SSL.
forceSSL = true;
enableACME = true;
# extraConfig = ''
# # "public" log so requests show up in goaccess metrics
# access_log /var/log/nginx/public.log vcombined;
# '';
locations."/" = {
root = "${pkgs.uninsane-dot-org}/share/uninsane-dot-org";
tryFiles = "$uri $uri/ @fallback";
};
# unversioned files
locations."@fallback" = {
root = "/var/www/sites/uninsane.org";
extraConfig = ''
# instruct Google to not index these pages.
# see: <https://developers.google.com/search/docs/crawling-indexing/robots-meta-tag#xrobotstag>
add_header X-Robots-Tag 'none, noindex, nofollow';
# best-effort attempt to block archive.org from archiving these pages.
# reply with 403: Forbidden
# User Agent is *probably* "archive.org_bot"; maybe used to be "ia_archiver"
# source: <https://archive.org/details/archive.org_bot>
# additional UAs: <https://github.com/mitchellkrogza/nginx-ultimate-bad-bot-blocker>
#
# validate with: `curl -H 'User-Agent: "bot;archive.org_bot;like: something else"' -v https://uninsane.org/dne`
if ($http_user_agent ~* "(?:\b)archive.org_bot(?:\b)") {
return 403;
}
if ($http_user_agent ~* "(?:\b)archive.org(?:\b)") {
return 403;
}
if ($http_user_agent ~* "(?:\b)ia_archiver(?:\b)") {
return 403;
}
'';
};
# uninsane.org/share/foo => /var/www/sites/uninsane.org/share/foo.
# special-cased to enable directory listings
locations."/share" = {
root = "/var/www/sites/uninsane.org";
extraConfig = ''
# autoindex => render directory listings
autoindex on;
# don't follow any symlinks when serving files
# otherwise it allows a directory escape
disable_symlinks on;
'';
};
locations."/share/Milkbags/" = {
alias = "/var/media/Videos/Milkbags/";
extraConfig = ''
# autoindex => render directory listings
autoindex on;
# don't follow any symlinks when serving files
# otherwise it allows a directory escape
disable_symlinks on;
'';
};
locations."/share/Ubunchu/" = {
alias = "/var/media/Books/Visual/HiroshiSeo/Ubunchu/";
extraConfig = ''
# autoindex => render directory listings
autoindex on;
# don't follow any symlinks when serving files
# otherwise it allows a directory escape
disable_symlinks on;
'';
};
# allow matrix users to discover that @user:uninsane.org is reachable via matrix.uninsane.org
locations."= /.well-known/matrix/server".extraConfig =
let
# use 443 instead of the default 8448 port to unite
# the client-server and server-server port for simplicity
server = { "m.server" = "matrix.uninsane.org:443"; };
in ''
add_header Content-Type application/json;
return 200 '${builtins.toJSON server}';
'';
locations."= /.well-known/matrix/client".extraConfig =
let
client = {
"m.homeserver" = { "base_url" = "https://matrix.uninsane.org"; };
"m.identity_server" = { "base_url" = "https://vector.im"; };
};
# ACAO required to allow element-web on any URL to request this json file
in ''
add_header Content-Type application/json;
add_header Access-Control-Allow-Origin *;
return 200 '${builtins.toJSON client}';
'';
# static URLs might not be aware of .well-known (e.g. registration confirmation URLs),
# so hack around that.
locations."/_matrix".extraConfig = "return 301 https://matrix.uninsane.org$request_uri;";
locations."/_synapse".extraConfig = "return 301 https://matrix.uninsane.org$request_uri;";
# allow ActivityPub clients to discover how to reach @user@uninsane.org
# see: https://git.pleroma.social/pleroma/pleroma/-/merge_requests/3361/
# not sure this makes sense while i run multiple AP services (pleroma, lemmy)
# locations."/.well-known/nodeinfo" = {
# proxyPass = "http://127.0.0.1:4000";
# extraConfig = pleromaExtraConfig;
# };
# redirect common feed URIs to the canonical feed
locations."= /atom".extraConfig = "return 301 /atom.xml;";
locations."= /feed".extraConfig = "return 301 /atom.xml;";
locations."= /feed.xml".extraConfig = "return 301 /atom.xml;";
locations."= /rss".extraConfig = "return 301 /atom.xml;";
locations."= /rss.xml".extraConfig = "return 301 /atom.xml;";
locations."= /blog/atom".extraConfig = "return 301 /atom.xml;";
locations."= /blog/atom.xml".extraConfig = "return 301 /atom.xml;";
locations."= /blog/feed".extraConfig = "return 301 /atom.xml;";
locations."= /blog/feed.xml".extraConfig = "return 301 /atom.xml;";
locations."= /blog/rss".extraConfig = "return 301 /atom.xml;";
locations."= /blog/rss.xml".extraConfig = "return 301 /atom.xml;";
};
}

View File

@@ -0,0 +1,35 @@
{ config, pkgs, ... }:
let
wakaLakaOsaka = pkgs.linkFarm "waka-laka-osaka" {
"index.html" = ./index.html;
"waka.laka.for.osaka.mp4" = pkgs.fetchurl {
# saved from: <https://www.youtube.com/watch?v=ehB_7bBKprY>
url = "https://uninsane.org/share/Milkbags/PG_Plays_Video_Games-Waka_Laka_For_Osaka_4K.mp4";
hash = "sha256-UW0qR4btX4pZ1bJp4Oxk20m3mvQGj9HweLKO27JBTFs=";
};
};
in
{
services.nginx.virtualHosts."laka.osaka" = {
addSSL = true;
enableACME = true;
locations."/" = {
# redirect everything to waka.laka.osaka
return = "301 https://waka.laka.osaka$request_uri";
};
};
services.nginx.virtualHosts."waka.laka.osaka" = {
addSSL = true;
enableACME = true;
locations."/" = {
root = wakaLakaOsaka;
};
};
sane.dns.zones."laka.osaka".inet = {
SOA."@" = config.sane.dns.zones."uninsane.org".inet.SOA."@";
A."@" = config.sane.dns.zones."uninsane.org".inet.A."@";
NS."@" = config.sane.dns.zones."uninsane.org".inet.NS."@";
CNAME."waka" = "native.uninsane.org.";
};
}

View File

@@ -0,0 +1,46 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width initial-scale=1" />
<meta name="description" content="Waka Laka (for Osaka)" />
<title>Waka Laka (for Osaka)</title>
<style>
html,body {
width: 100%;
height: 100%;
max-width: 100%;
max-height: 100%;
}
* {
margin: 0px;
padding: 0px;
border: 0px;
}
.bg-image {
width: 100%;
height: 100%;
min-width: 100%;
min-height: 100%;
position: fixed;
background-repeat: no-repeat;
background-position: 50% 50%;
background-size: contain;
}
body {
background-color: #000000;
}
</style>
</head>
<body>
<!-- TODO: how to autoplay video _without_ it being muted? -->
<video class="bg-image" id="waka-video" width="1440" height="1080"
autoplay loop muted
onclick="document.getElementById('waka-video').muted = !document.getElementById('waka-video').muted;"
>
<!-- from https://www.youtube.com/watch?v=ehB_7bBKprY -->
<!-- original and more info at https://www.aquilinestudios.org/wakalaka.html -->
<source src="waka.laka.for.osaka.mp4" type="video/mp4">
</video>
</body>
</html>

View File

@@ -6,7 +6,7 @@ lib.optionalAttrs false # disabled until i can be sure it's not gonna OOM my se
description = "build a nixos image with all updated deps";
path = with pkgs; [ coreutils git nix ];
script = ''
working=$(mktemp -d /tmp/nixos-prebuild.XXXXXX)
working=$(mktemp -d nixos-prebuild.XXXXXX --tmpdir)
pushd "$working"
git clone https://git.uninsane.org/colin/nix-files.git \
&& cd nix-files \

View File

@@ -1,12 +1,12 @@
# ntfy: UnifiedPush notification delivery system
# - used to get push notifications out of Matrix and onto a Phone (iOS, Android, or a custom client)
{ config, ... }:
{ config, lib, ... }:
{
imports = [
./ntfy-waiter.nix
./ntfy-sh.nix
];
sops.secrets."ntfy-sh-topic" = {
sops.secrets."ntfy-sh-topic" = lib.mkIf config.services.ntfy-sh.enable {
mode = "0440";
owner = config.users.users.ntfy-sh.name;
group = config.users.users.ntfy-sh.name;

View File

@@ -29,6 +29,7 @@ let
# at the IP layer, to enable e.g. wake-on-lan.
altPort = 2587;
in
lib.mkIf false #< 2024/09/30: disabled because i haven't used it in several months
{
sane.persist.sys.byStore.private = [
# not 100% necessary to persist this, but ntfy does keep a 12hr (by default) cache
@@ -58,7 +59,7 @@ in
# note that this will fail upon first run, i.e. before ntfy has created its db.
# just restart the service.
topic=$(cat ${config.sops.secrets.ntfy-sh-topic.path})
${pkgs.ntfy-sh}/bin/ntfy access everyone "$topic" read-write
${lib.getExe' pkgs.ntfy-sh "ntfy"} access everyone "$topic" read-write
'';

View File

@@ -14,7 +14,7 @@ let
silence = port - portLow;
flags = lib.optional cfg.verbose "--verbose";
cli = [
"${cfg.package}/bin/ntfy-waiter"
(lib.getExe cfg.package)
"--port"
"${builtins.toString port}"
"--silence"
@@ -31,7 +31,7 @@ let
ExecStart = lib.concatStringsSep " " cli;
};
after = [ "network.target" ];
wantedBy = [ "default.target" ];
wantedBy = [ "ntfy-sh.service" ];
};
};
in
@@ -39,7 +39,7 @@ in
options = with lib; {
sane.ntfy-waiter.enable = mkOption {
type = types.bool;
default = true;
default = config.services.ntfy-sh.enable;
};
sane.ntfy-waiter.verbose = mkOption {
type = types.bool;

View File

@@ -10,231 +10,213 @@
{ config, lib, pkgs, ... }:
let
logLevel = "warn";
logLevel = "warning";
# logLevel = "debug";
in
{
sane.persist.sys.byStore.private = [
# contains media i've uploaded to the server
{ user = "pleroma"; group = "pleroma"; path = "/var/lib/pleroma"; method = "bind"; }
];
services.pleroma.enable = true;
services.pleroma.secretConfigFile = config.sops.secrets.pleroma_secrets.path;
services.pleroma.configs = [
''
import Config
config = lib.mkIf (config.sane.maxBuildCost >= 2) {
sane.persist.sys.byStore.private = [
# contains media i've uploaded to the server
{ user = "pleroma"; group = "pleroma"; path = "/var/lib/pleroma"; method = "bind"; }
];
services.pleroma.enable = true;
services.pleroma.secretConfigFile = config.sops.secrets.pleroma_secrets.path;
services.pleroma.configs = [
''
import Config
config :pleroma, Pleroma.Web.Endpoint,
url: [host: "fed.uninsane.org", scheme: "https", port: 443],
http: [ip: {127, 0, 0, 1}, port: 4040]
# secret_key_base: "{secrets.pleroma.secret_key_base}",
# signing_salt: "{secrets.pleroma.signing_salt}"
config :pleroma, Pleroma.Web.Endpoint,
url: [host: "fed.uninsane.org", scheme: "https", port: 443],
http: [ip: {127, 0, 0, 1}, port: 4040]
# secret_key_base: "{secrets.pleroma.secret_key_base}",
# signing_salt: "{secrets.pleroma.signing_salt}"
config :pleroma, :instance,
name: "Perfectly Sane",
description: "Single-user Pleroma instance",
email: "admin.pleroma@uninsane.org",
notify_email: "notify.pleroma@uninsane.org",
limit: 5000,
registrations_open: true,
account_approval_required: true,
max_pinned_statuses: 5,
external_user_synchronization: true
config :pleroma, :instance,
name: "Perfectly Sane",
description: "Single-user Pleroma instance",
email: "admin.pleroma@uninsane.org",
notify_email: "notify.pleroma@uninsane.org",
limit: 5000,
registrations_open: true,
account_approval_required: true,
max_pinned_statuses: 5,
external_user_synchronization: true
# docs: https://hexdocs.pm/swoosh/Swoosh.Adapters.Sendmail.html
# test mail config with sudo -u pleroma ./bin/pleroma_ctl email test --to someone@somewhere.net
config :pleroma, Pleroma.Emails.Mailer,
enabled: true,
adapter: Swoosh.Adapters.Sendmail,
cmd_path: "${pkgs.postfix}/bin/sendmail"
# docs: https://hexdocs.pm/swoosh/Swoosh.Adapters.Sendmail.html
# test mail config with sudo -u pleroma ./bin/pleroma_ctl email test --to someone@somewhere.net
config :pleroma, Pleroma.Emails.Mailer,
enabled: true,
adapter: Swoosh.Adapters.Sendmail,
cmd_path: "${lib.getExe' pkgs.postfix "sendmail"}"
config :pleroma, Pleroma.User,
restricted_nicknames: [ "admin", "uninsane", "root" ]
config :pleroma, Pleroma.User,
restricted_nicknames: [ "admin", "uninsane", "root" ]
config :pleroma, :media_proxy,
enabled: false,
redirect_on_failure: true
#base_url: "https://cache.pleroma.social"
config :pleroma, :media_proxy,
enabled: false,
redirect_on_failure: true
#base_url: "https://cache.pleroma.social"
# see for reference:
# - `force_custom_plan`: <https://docs.pleroma.social/backend/configuration/postgresql/#disable-generic-query-plans>
config :pleroma, Pleroma.Repo,
adapter: Ecto.Adapters.Postgres,
username: "pleroma",
database: "pleroma",
hostname: "localhost",
pool_size: 10,
prepare: :named,
parameters: [
plan_cache_mode: "force_custom_plan"
]
# XXX: prepare: :named is needed only for PG <= 12
# prepare: :named,
# password: "{secrets.pleroma.db_password}",
# see for reference:
# - `force_custom_plan`: <https://docs.pleroma.social/backend/configuration/postgresql/#disable-generic-query-plans>
config :pleroma, Pleroma.Repo,
adapter: Ecto.Adapters.Postgres,
username: "pleroma",
database: "pleroma",
hostname: "localhost",
pool_size: 10,
prepare: :named,
parameters: [
plan_cache_mode: "force_custom_plan"
]
# XXX: prepare: :named is needed only for PG <= 12
# prepare: :named,
# password: "{secrets.pleroma.db_password}",
# Configure web push notifications
config :web_push_encryption, :vapid_details,
subject: "mailto:notify.pleroma@uninsane.org"
# public_key: "{secrets.pleroma.vapid_public_key}",
# private_key: "{secrets.pleroma.vapid_private_key}"
# Configure web push notifications
config :web_push_encryption, :vapid_details,
subject: "mailto:notify.pleroma@uninsane.org"
# public_key: "{secrets.pleroma.vapid_public_key}",
# private_key: "{secrets.pleroma.vapid_private_key}"
# config :joken, default_signer: "{secrets.pleroma.joken_default_signer}"
# config :joken, default_signer: "{secrets.pleroma.joken_default_signer}"
config :pleroma, :database, rum_enabled: false
config :pleroma, :instance, static_dir: "/var/lib/pleroma/instance/static"
config :pleroma, Pleroma.Uploaders.Local, uploads: "/var/lib/pleroma/uploads"
config :pleroma, configurable_from_database: false
config :pleroma, :database, rum_enabled: false
config :pleroma, :instance, static_dir: "/var/lib/pleroma/instance/static"
config :pleroma, Pleroma.Uploaders.Local, uploads: "/var/lib/pleroma/uploads"
config :pleroma, configurable_from_database: false
# strip metadata from uploaded images
config :pleroma, Pleroma.Upload, filters: [Pleroma.Upload.Filter.Exiftool.StripLocation]
# strip metadata from uploaded images
config :pleroma, Pleroma.Upload, filters: [Pleroma.Upload.Filter.Exiftool.StripLocation]
# TODO: GET /api/pleroma/captcha is broken
# there was a nixpkgs PR to fix this around 2022/10 though.
config :pleroma, Pleroma.Captcha,
enabled: false,
method: Pleroma.Captcha.Native
# fix log spam: <https://git.pleroma.social/pleroma/pleroma/-/issues/1659>
# specifically, remove LAN addresses from `reserved`
config :pleroma, Pleroma.Web.Plugs.RemoteIp,
enabled: true,
reserved: ["127.0.0.0/8", "::1/128", "fc00::/7", "172.16.0.0/12"]
# TODO: GET /api/pleroma/captcha is broken
# there was a nixpkgs PR to fix this around 2022/10 though.
config :pleroma, Pleroma.Captcha,
enabled: false,
method: Pleroma.Captcha.Native
# (enabled by colin)
# Enable Strict-Transport-Security once SSL is working:
config :pleroma, :http_security,
sts: true
# (enabled by colin)
# Enable Strict-Transport-Security once SSL is working:
config :pleroma, :http_security,
sts: true
# docs: https://docs.pleroma.social/backend/configuration/cheatsheet/#logger
config :logger,
backends: [{ExSyslogger, :ex_syslogger}]
# docs: https://docs.pleroma.social/backend/configuration/cheatsheet/#logger
config :logger,
backends: [{ExSyslogger, :ex_syslogger}]
config :logger, :ex_syslogger,
level: :${logLevel}
config :logger, :ex_syslogger,
level: :${logLevel}
# policies => list of message rewriting facilities to be enabled
# transparence => whether to publish these rules in node_info (and /about)
config :pleroma, :mrf,
policies: [Pleroma.Web.ActivityPub.MRF.SimplePolicy],
transparency: true
# policies => list of message rewriting facilities to be enabled
# transparence => whether to publish these rules in node_info (and /about)
config :pleroma, :mrf,
policies: [Pleroma.Web.ActivityPub.MRF.SimplePolicy],
transparency: true
# reject => { host, reason }
config :pleroma, :mrf_simple,
reject: [ {"threads.net", "megacorp"}, {"*.threads.net", "megacorp"} ]
# reject: [ [host: "threads.net", reason: "megacorp"], [host: "*.threads.net", reason: "megacorp"] ]
# reject => { host, reason }
config :pleroma, :mrf_simple,
reject: [ {"threads.net", "megacorp"}, {"*.threads.net", "megacorp"} ]
# reject: [ [host: "threads.net", reason: "megacorp"], [host: "*.threads.net", reason: "megacorp"] ]
# XXX colin: not sure if this actually _does_ anything
# better to steal emoji from other instances?
# - <https://docs.pleroma.social/backend/configuration/cheatsheet/#mrf_steal_emoji>
config :pleroma, :emoji,
shortcode_globs: ["/emoji/**/*.png"],
groups: [
"Cirno": "/emoji/cirno/*.png",
"Kirby": "/emoji/kirby/*.png",
"Bun": "/emoji/bun/*.png",
"Yuru Camp": "/emoji/yuru_camp/*.png",
]
''
];
# XXX colin: not sure if this actually _does_ anything
# better to steal emoji from other instances?
# - <https://docs.pleroma.social/backend/configuration/cheatsheet/#mrf_steal_emoji>
config :pleroma, :emoji,
shortcode_globs: ["/emoji/**/*.png"],
groups: [
"Cirno": "/emoji/cirno/*.png",
"Kirby": "/emoji/kirby/*.png",
"Bun": "/emoji/bun/*.png",
"Yuru Camp": "/emoji/yuru_camp/*.png",
]
''
];
systemd.services.pleroma.path = [
# something inside pleroma invokes `sh` w/o specifying it by path, so this is needed to allow pleroma to start
pkgs.bash
# used by Pleroma to strip geo tags from uploads
config.sane.programs.exiftool.package
# i saw some errors when pleroma was shutting down about it not being able to find `awk`. probably not critical
config.sane.programs.gawk.package
# needed for email operations like password reset
pkgs.postfix
];
systemd.services.pleroma.path = [
# something inside pleroma invokes `sh` w/o specifying it by path, so this is needed to allow pleroma to start
pkgs.bash
# used by Pleroma to strip geo tags from uploads
pkgs.exiftool
# config.sane.programs.exiftool.package #< XXX(2024-10-20): breaks image uploading
# i saw some errors when pleroma was shutting down about it not being able to find `awk`. probably not critical
# config.sane.programs.gawk.package
# needed for email operations like password reset
pkgs.postfix
];
systemd.services.pleroma = {
# postgres can be slow to service early requests, preventing pleroma from starting on the first try
serviceConfig.Restart = "on-failure";
serviceConfig.RestartSec = "10s";
systemd.services.pleroma = {
# postgres can be slow to service early requests, preventing pleroma from starting on the first try
serviceConfig.Restart = "on-failure";
serviceConfig.RestartSec = "10s";
# hardening (systemd-analyze security pleroma)
# XXX(2024-07-28): this hasn't been rigorously tested:
# possible that i've set something too strict and won't notice right away
# make sure to test:
# - image/media uploading
serviceConfig.CapabilityBoundingSet = "~CAP_SYS_ADMIN"; #< TODO: reduce this. try: CAP_SYS_NICE CAP_DAC_READ_SEARCH CAP_SYS_CHROOT CAP_SETGID CAP_SETUID
serviceConfig.LockPersonality = true;
serviceConfig.NoNewPrivileges = true;
serviceConfig.MemoryDenyWriteExecute = true;
serviceConfig.PrivateDevices = lib.mkForce true; #< dunno why nixpkgs has this set false; it seems to work as true
serviceConfig.PrivateMounts = true;
serviceConfig.PrivateTmp = true;
serviceConfig.PrivateUsers = true;
# hardening (systemd-analyze security pleroma)
# XXX(2024-07-28): this hasn't been rigorously tested:
# possible that i've set something too strict and won't notice right away
# make sure to test:
# - image/media uploading
serviceConfig.CapabilityBoundingSet = lib.mkForce [ "" "" ]; # nixos default is `~CAP_SYS_ADMIN`
serviceConfig.LockPersonality = true;
serviceConfig.NoNewPrivileges = true;
serviceConfig.MemoryDenyWriteExecute = true;
serviceConfig.PrivateDevices = lib.mkForce true; #< dunno why nixpkgs has this set false; it seems to work as true
serviceConfig.PrivateMounts = true;
serviceConfig.PrivateTmp = true;
serviceConfig.PrivateUsers = true;
serviceConfig.ProtectProc = "invisible";
serviceConfig.ProcSubset = "all"; #< needs /proc/sys/kernel/overflowuid for bwrap
serviceConfig.ProtectProc = "invisible";
serviceConfig.ProcSubset = "all"; #< needs /proc/sys/kernel/overflowuid for bwrap
serviceConfig.ProtectClock = true;
serviceConfig.ProtectControlGroups = true;
serviceConfig.ProtectHome = true;
serviceConfig.ProtectKernelModules = true;
serviceConfig.ProtectSystem = lib.mkForce "strict";
serviceConfig.RemoveIPC = true;
serviceConfig.RestrictAddressFamilies = "AF_UNIX AF_INET AF_INET6 AF_NETLINK";
serviceConfig.ProtectClock = true;
serviceConfig.ProtectControlGroups = true;
serviceConfig.ProtectHome = true;
serviceConfig.ProtectKernelModules = true;
serviceConfig.ProtectSystem = lib.mkForce "strict";
serviceConfig.RemoveIPC = true;
serviceConfig.RestrictAddressFamilies = "AF_UNIX AF_INET AF_INET6 AF_NETLINK";
serviceConfig.RestrictSUIDSGID = true;
serviceConfig.SystemCallArchitectures = "native";
serviceConfig.SystemCallFilter = [ "@system-service" "@mount" "@sandbox" ]; #< "sandbox" might not actually be necessary
serviceConfig.RestrictSUIDSGID = true;
serviceConfig.SystemCallArchitectures = "native";
serviceConfig.SystemCallFilter = [ "@system-service" "@mount" "@sandbox" ]; #< "sandbox" might not actually be necessary
serviceConfig.ProtectHostname = false; #< else brap can't mount /proc
serviceConfig.ProtectKernelLogs = false; #< else breaks exiftool ("bwrap: Can't mount proc on /newroot/proc: Operation not permitted")
serviceConfig.ProtectKernelTunables = false; #< else breaks exiftool
serviceConfig.RestrictNamespaces = false; # media uploads require bwrap
};
serviceConfig.ProtectHostname = false; #< else brap can't mount /proc
serviceConfig.ProtectKernelLogs = false; #< else breaks exiftool ("bwrap: Can't mount proc on /newroot/proc: Operation not permitted")
serviceConfig.ProtectKernelTunables = false; #< else breaks exiftool
serviceConfig.RestrictNamespaces = false; # media uploads require bwrap
};
# this is required to allow pleroma to send email.
# raw `sendmail` works, but i think pleroma's passing it some funny flags or something, idk.
# hack to fix that.
users.users.pleroma.extraGroups = [ "postdrop" ];
# this is required to allow pleroma to send email.
# raw `sendmail` works, but i think pleroma's passing it some funny flags or something, idk.
# hack to fix that.
users.users.pleroma.extraGroups = [ "postdrop" ];
# Pleroma server and web interface
# TODO: enable publog?
services.nginx.virtualHosts."fed.uninsane.org" = {
forceSSL = true; # pleroma redirects to https anyway
enableACME = true;
# inherit kTLS;
locations."/" = {
proxyPass = "http://127.0.0.1:4040";
recommendedProxySettings = true;
# documented: https://git.pleroma.social/pleroma/pleroma/-/blob/develop/installation/pleroma.nginx
extraConfig = ''
# XXX colin: this block is in the nixos examples: i don't understand all of it
add_header 'Access-Control-Allow-Origin' '*' always;
add_header 'Access-Control-Allow-Methods' 'POST, PUT, DELETE, GET, PATCH, OPTIONS' always;
add_header 'Access-Control-Allow-Headers' 'Authorization, Content-Type, Idempotency-Key' always;
add_header 'Access-Control-Expose-Headers' 'Link, X-RateLimit-Reset, X-RateLimit-Limit, X-RateLimit-Remaining, X-Request-Id' always;
if ($request_method = OPTIONS) {
return 204;
}
# Pleroma server and web interface
# TODO: enable publog?
services.nginx.virtualHosts."fed.uninsane.org" = {
forceSSL = true; # pleroma redirects to https anyway
enableACME = true;
# inherit kTLS;
locations."/" = {
proxyPass = "http://127.0.0.1:4040";
recommendedProxySettings = true;
# documented: https://git.pleroma.social/pleroma/pleroma/-/blob/develop/installation/pleroma.nginx
extraConfig = ''
# client_max_body_size defines the maximum upload size
client_max_body_size 16m;
'';
};
};
add_header X-XSS-Protection "1; mode=block";
add_header X-Permitted-Cross-Domain-Policies none;
add_header X-Frame-Options DENY;
add_header X-Content-Type-Options nosniff;
add_header Referrer-Policy same-origin;
add_header X-Download-Options noopen;
sane.dns.zones."uninsane.org".inet.CNAME."fed" = "native";
# proxy_http_version 1.1;
# proxy_set_header Upgrade $http_upgrade;
# proxy_set_header Connection "upgrade";
# # proxy_set_header Host $http_host;
# proxy_set_header Host $host;
# proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
# colin: added this due to Pleroma complaining in its logs
# proxy_set_header X-Real-IP $remote_addr;
# proxy_set_header X-Forwarded-Proto $scheme;
# NB: this defines the maximum upload size
client_max_body_size 16m;
'';
sops.secrets."pleroma_secrets" = {
owner = config.users.users.pleroma.name;
};
};
sane.dns.zones."uninsane.org".inet.CNAME."fed" = "native";
sops.secrets."pleroma_secrets" = {
owner = config.users.users.pleroma.name;
};
}

View File

@@ -1,4 +1,4 @@
{ pkgs, ... }:
{ lib, pkgs, ... }:
let
GiB = n: MiB 1024*n;
@@ -29,9 +29,10 @@ in
# - as `sudo su postgres`:
# - `cd /var/lib/postgreql`
# - `psql -f state.sql`
# (for a compressed dump: `gunzip --stdout state.sql.gz | psql`)
# - restart dependent services (maybe test one at a time)
services.postgresql.package = pkgs.postgresql_15;
services.postgresql.package = pkgs.postgresql_16;
# XXX colin: for a proper deploy, we'd want to include something for Pleroma here too.
@@ -44,34 +45,46 @@ in
# LC_CTYPE = "C";
# '';
# perf tuning
# - for recommended values see: <https://pgtune.leopard.in.ua/>
# - for official docs (sparse), see: <https://www.postgresql.org/docs/11/config-setting.html#CONFIG-SETTING-CONFIGURATION-FILE>
services.postgresql.settings = {
# DB Version: 15
# perf tuning
# - for recommended values see: <https://pgtune.leopard.in.ua/>
# - for official docs (sparse), see: <https://www.postgresql.org/docs/11/config-setting.html#CONFIG-SETTING-CONFIGURATION-FILE>
# DB Version: 16
# OS Type: linux
# DB Type: web
# Total Memory (RAM): 32 GB
# vvv artificially constrained because the server's resources are shared across maaany services
# Total Memory (RAM): 12 GB
# CPUs num: 12
# Data Storage: ssd
max_connections = 200;
shared_buffers = "8GB";
effective_cache_size = "24GB";
maintenance_work_mem = "2GB";
shared_buffers = "3GB";
effective_cache_size = "9GB";
maintenance_work_mem = "768MB";
checkpoint_completion_target = 0.9;
wal_buffers = "16MB";
default_statistics_target = 100;
random_page_cost = 1.1;
effective_io_concurrency = 200;
work_mem = "10485kB";
work_mem = "3932kB";
min_wal_size = "1GB";
max_wal_size = "4GB";
max_worker_processes = 12;
max_parallel_workers_per_gather = 4;
max_parallel_workers = 12;
max_parallel_maintenance_workers = 4;
# DEBUG OPTIONS:
log_min_messages = "DEBUG1";
};
# regulate the restarts, so that systemd never disables it
systemd.services.postgresql.serviceConfig.Restart = lib.mkForce "on-failure";
systemd.services.postgresql.serviceConfig.RestartSec = 2;
systemd.services.postgresql.serviceConfig.RestartMaxDelaySec = 10;
systemd.services.postgresql.serviceConfig.RestartSteps = 4;
systemd.services.postgresql.serviceConfig.StartLimitBurst = 120;
# systemd.services.postgresql.serviceConfig.TimeoutStartSec = "14400s"; #< 14400 = 4 hours; recoveries are long
# daily backups to /var/backup
services.postgresqlBackup.enable = true;

View File

@@ -0,0 +1,81 @@
#!/bin/sh
# source: <https://gist.githubusercontent.com/troykelly/616df024050dd50744dde4a9579e152e/raw/fe84e53cedf0caa6903604894454629a15867439/reindex_and_refresh_collation.sh>
#
# run this whenever postgres complains like:
# > WARNING: database "gitea" has a collation version mismatch
# > DETAIL: The database was created using collation version 2.39, but the operating system provides version 2.40.
# > HINT: Rebuild all objects in this database that use the default collation and run ALTER DATABASE gitea REFRESH COLLATION VERSION, or build PostgreSQL with the right library version.
#
# this script checks which databases are in need of a collation update,
# and re-collates them as appropriate.
# invoking this script should have low perf impact in the non-upgrade case,
# so safe to do this as a cron job.
#
# invoke as postgres user
log_info() {
>&2 echo "$@"
}
list_databases() {
log_info "Retrieving list of databases from the PostgreSQL server..."
psql --dbname="postgres" -Atc \
"SELECT datname FROM pg_database WHERE datistemplate = false"
}
refresh_collation_version() {
local db=$1
log_info "Refreshing collation version for database: $db..."
psql --dbname="$db" -c \
"ALTER DATABASE \"$db\" REFRESH COLLATION VERSION;"
}
check_collation_mismatches() {
local error=
log_info "Checking for collation mismatches in all databases..."
# Loop through each database and check for mismatching collations in table columns.
while IFS= read -r db; do
if [ -n "$db" ]; then
log_info "Checking database: $db for collation mismatches..."
local mismatches=$(psql --dbname="$db" -Atc \
"SELECT 'Mismatch in table ' || table_name || ' column ' || column_name || ' with collation ' || collation_name
FROM information_schema.columns
WHERE collation_name IS NOT NULL AND collation_name <> 'default' AND table_schema = 'public'
EXCEPT
SELECT 'No mismatch - default collation of ' || datcollate || ' used.'
FROM pg_database WHERE datname = '$db';"
)
if [ -z "$mismatches" ]; then
log_info "No collation mismatches found in database: $db"
else
# Print an informational message to stderr.
log_info "Collation mismatches found in database: $db:"
log_info "$mismatches"
error=1
fi
fi
done
if [ -n "$error" ]; then
exit 1
fi
}
log_info "Starting the reindexing and collation refresh process for all databases..."
databases=$(list_databases)
if [ -z "$databases" ]; then
log_info "No databases found for reindexing or collation refresh. Please check connection details to PostgreSQL server."
exit 1
fi
for db in $databases; do
refresh_collation_version "$db"
done
# Checking for collation mismatches after reindexing and collation refresh.
# Pass the list of databases to the check_collation_mismatches function through stdin.
echo "$databases" | check_collation_mismatches
log_info "Reindexing and collation refresh process completed."

View File

@@ -49,7 +49,7 @@
# - disable or fix bosh (jabber over http):
# - "certmanager: No certificate/key found for client_https port 0"
{ lib, pkgs, ... }:
{ config, lib, pkgs, ... }:
let
# enables very verbose logging
@@ -104,6 +104,7 @@ in
users.users.prosody.extraGroups = [
"nginx" # provide access to certs
"ntfy-sh" # access to secret ntfy topic
"turnserver" # to access the coturn shared secret
];
security.acme.certs."uninsane.org".extraDomainNames = [
@@ -149,14 +150,8 @@ in
# pointing it to /var/lib/acme doesn't quite work because it expects the private key
# to be named `privkey.pem` instead of acme's `key.pem`
# <https://prosody.im/doc/certificates#automatic_location>
sane.fs."/etc/prosody/certs/uninsane.org/fullchain.pem" = {
symlink.target = "/var/lib/acme/uninsane.org/fullchain.pem";
wantedBeforeBy = [ "prosody.service" ];
};
sane.fs."/etc/prosody/certs/uninsane.org/privkey.pem" = {
symlink.target = "/var/lib/acme/uninsane.org/key.pem";
wantedBeforeBy = [ "prosody.service" ];
};
environment.etc."prosody/certs/uninsane.org/fullchain.pem".source = "/var/lib/acme/uninsane.org/fullchain.pem";
environment.etc."prosody/certs/uninsane.org/privkey.pem".source = "/var/lib/acme/uninsane.org/key.pem";
services.prosody = {
enable = true;
@@ -178,7 +173,7 @@ in
domain = "conference.xmpp.uninsane.org";
}
];
uploadHttp.domain = "upload.xmpp.uninsane.org";
httpFileShare.domain = "upload.xmpp.uninsane.org";
virtualHosts = {
# "Prosody requires at least one enabled VirtualHost to function. You can
@@ -242,6 +237,7 @@ in
# legacy coturn integration
# see: <https://modules.prosody.im/mod_turncredentials.html>
# "turncredentials"
] ++ lib.optionals config.services.ntfy-sh.enable [
"sane_ntfy"
] ++ lib.optionals enableDebug [
"stanza_debug" #< logs EVERY stanza as debug: <https://prosody.im/doc/modules/mod_stanza_debug>
@@ -273,18 +269,35 @@ in
s2s_direct_tls_ports = { 5270 }
turn_external_host = "turn.uninsane.org"
turn_external_secret = readAll("/var/lib/coturn/shared_secret.bin")
turn_external_secret = readAll("/run/secrets/coturn_shared_secret")
-- turn_external_user = "prosody"
-- legacy mod_turncredentials integration
-- turncredentials_host = "turn.uninsane.org"
-- turncredentials_secret = readAll("/var/lib/coturn/shared_secret.bin")
ntfy_binary = "${pkgs.ntfy-sh}/bin/ntfy"
ntfy_topic = readAll("/run/secrets/ntfy-sh-topic")
-- turncredentials_secret = readAll("/run/secrets/coturn_shared_secret")
-- s2s_require_encryption = true
-- c2s_require_encryption = true
'' + lib.optionalString config.services.ntfy-sh.enable ''
ntfy_binary = "${lib.getExe' pkgs.ntfy-sh "ntfy"}"
ntfy_topic = readAll("/run/secrets/ntfy-sh-topic")
'';
checkConfig = false; # secrets aren't available at build time
};
systemd.services.prosody = {
# hardening (systemd-analyze security prosody)
serviceConfig.LockPersonality = true;
serviceConfig.NoNewPrivileges = true;
serviceConfig.PrivateUsers = true;
serviceConfig.ProcSubset = "pid";
serviceConfig.ProtectClock = true;
serviceConfig.ProtectKernelLogs = true;
serviceConfig.ProtectProc = "invisible";
serviceConfig.ProtectSystem = "strict";
serviceConfig.RemoveIPC = true;
serviceConfig.RestrictAddressFamilies = "AF_UNIX AF_INET AF_INET6";
serviceConfig.SystemCallArchitectures = "native";
serviceConfig.SystemCallFilter = [ "@system-service" "~@privileged" "~@resources" ];
};
}

View File

@@ -34,8 +34,9 @@
forceSSL = true;
enableACME = true;
locations."/" = {
proxyPass = "http://${config.sane.netns.ovpns.netnsVethIpv4}:5030";
proxyPass = "http://${config.sane.netns.ovpns.veth.netns.ipv4}:5030";
proxyWebsockets = true;
recommendedProxySettings = true;
};
};
@@ -73,7 +74,10 @@
systemd.services.slskd = {
# run this behind the OVPN static VPN
serviceConfig.NetworkNamespacePath = "/run/netns/ovpns";
serviceConfig.ExecStartPre = [ "${lib.getExe pkgs.sane-scripts.ip-check} --no-upnp --expect ${config.sane.netns.ovpns.netnsPubIpv4}" ]; # abort if public IP is not as expected
serviceConfig.ExecStartPre = [
# abort if public IP is not as expected
"${lib.getExe pkgs.sane-scripts.ip-check} --no-upnp --expect ${config.sane.netns.ovpns.wg.address.ipv4}"
];
serviceConfig.Restart = lib.mkForce "always"; # exits "success" when it fails to connect to soulseek server
serviceConfig.RestartSec = "60s";

View File

@@ -58,8 +58,8 @@ in
# DOCUMENTATION/options list: <https://github.com/transmission/transmission/blob/main/docs/Editing-Configuration-Files.md#options>
# message-level = 3; #< enable for debug logging. 0-3, default is 2.
# ovpns.netnsVethIpv4 => allow rpc only from the root servo ns. it'll tunnel things to the net, if need be.
rpc-bind-address = config.sane.netns.ovpns.netnsVethIpv4;
# ovpns.veth.netns.ipv4 => allow rpc only from the root servo ns. it'll tunnel things to the net, if need be.
rpc-bind-address = config.sane.netns.ovpns.veth.netns.ipv4;
#rpc-host-whitelist = "bt.uninsane.org";
#rpc-whitelist = "*.*.*.*";
rpc-authentication-required = true;
@@ -70,7 +70,7 @@ in
rpc-whitelist-enabled = false;
# force behind ovpns in case the NetworkNamespace fails somehow
bind-address-ipv4 = config.sane.netns.ovpns.netnsPubIpv4;
bind-address-ipv4 = config.sane.netns.ovpns.wg.address.ipv4;
port-forwarding-enabled = false;
# hopefully, make the downloads world-readable
@@ -104,16 +104,17 @@ in
# - TR_TORRENT_NAME - Name of torrent (not filename)
# - TR_TORRENT_TRACKERS - A comma-delimited list of the torrent's trackers' announce URLs
script-torrent-done-enabled = true;
script-torrent-done-filename = "${torrent-done}/bin/torrent-done";
script-torrent-done-filename = lib.getExe torrent-done;
};
# run this behind the OVPN static VPN
sane.netns.ovpns.services = [ "transmission" ];
systemd.services.transmission = {
after = [ "wireguard-wg-ovpns.service" ];
partOf = [ "wireguard-wg-ovpns.service" ];
environment.TR_DEBUG = "1";
# run this behind the OVPN static VPN
serviceConfig.NetworkNamespacePath = "/run/netns/ovpns";
serviceConfig.ExecStartPre = [ "${lib.getExe pkgs.sane-scripts.ip-check} --no-upnp --expect ${config.sane.netns.ovpns.netnsPubIpv4}" ]; # abort if public IP is not as expected
serviceConfig.ExecStartPre = [
# abort if public IP is not as expected
"${lib.getExe pkgs.sane-scripts.ip-check} --no-upnp --expect ${config.sane.netns.ovpns.wg.address.ipv4}"
];
serviceConfig.Restart = "on-failure";
serviceConfig.RestartSec = "30s";
@@ -138,7 +139,7 @@ in
systemd.services.backup-torrents = {
description = "archive torrents to storage not owned by transmission";
script = ''
${pkgs.rsync}/bin/rsync -arv /var/lib/transmission/.config/transmission-daemon/torrents/ /var/backup/torrents/
${lib.getExe pkgs.rsync} -arv /var/lib/transmission/.config/transmission-daemon/torrents/ /var/backup/torrents/
'';
};
systemd.timers.backup-torrents = {
@@ -157,7 +158,8 @@ in
# inherit kTLS;
locations."/" = {
# proxyPass = "http://ovpns.uninsane.org:9091";
proxyPass = "http://${config.sane.netns.ovpns.netnsVethIpv4}:9091";
proxyPass = "http://${config.sane.netns.ovpns.veth.netns.ipv4}:9091";
recommendedProxySettings = true;
};
};

View File

@@ -3,8 +3,20 @@
# transmission invokes this with no args, and the following env vars:
# - TR_TORRENT_DIR: full path to the folder i told transmission to download it to.
# e.g. /var/media/torrents/Videos/Film/Jason.Bourne-2016
# optionally:
# e.g. "/var/media/torrents/Videos/Film/Jason.Bourne-2016"
# - TR_APP_VERSION
# - TR_TIME_LOCALTIME
# - TR_TORRENT_BYTES_DOWNLOADED
# - TR_TORRENT_HASH
# - TR_TORRENT_ID: local number to uniquely identify this torrent, used by e.g. transmission-remote.
# e.g. "67"
# - TR_TORRENT_LABELS
# - TR_TORRENT_NAME: file/folder name of the toplevel torrent item
# e.g. "Jason Bourne (2016) [2160p] [4K] [BluRay] [5.1] [YTS.MX]"
# - TR_TORRENT_PRIORITY
# - TR_TORRENT_TRACKERS
# optionally, set these variables for debugging (these are specific to my script and not used upstream):
# - TR_DRY_RUN=1
# - TR_DEBUG=1
@@ -24,7 +36,7 @@ debug() {
fi
}
echo "TR_TORRENT_DIR=$TR_TORRENT_DIR torrent-done $*"
echo "TR_TORRENT_DIR=$TR_TORRENT_DIR TR_TORRENT_NAME=$TR_TORRENT_NAME torrent-done $*"
if [[ "$TR_TORRENT_DIR" =~ ^.*freeleech.*$ ]]; then
# freeleech torrents have no place in my permanent library
@@ -33,19 +45,35 @@ if [[ "$TR_TORRENT_DIR" =~ ^.*freeleech.*$ ]]; then
fi
if ! [[ "$TR_TORRENT_DIR" =~ ^$DOWNLOAD_DIR/.*$ ]]; then
echo "unexpected torrent dir, aborting: $TR_TORRENT_DIR"
exit 0
exit 1
fi
TORRENT_PATH="$TR_TORRENT_DIR/$TR_TORRENT_NAME"
if [[ ! -e "$TORRENT_PATH" ]]; then
echo "torrent unexpectedly doesn't exist at $TORRENT_PATH. will try fallback"
TORRENT_PATH="$TR_TORRENT_DIR"
fi
if [[ -d "$TORRENT_PATH" ]]; then
# trailing slash so that rsync copies the directory contents, without creating an extra toplevel dir.
TORRENT_PATH="$TORRENT_PATH/"
elif [[ ! -e "$TORRENT_PATH" ]]; then
echo "torrent unexpectedly doesn't exist at TR_TORRENT_DIR=$TORRENT_PATH: bailing"
exit 1
fi
REL_DIR="${TR_TORRENT_DIR#$DOWNLOAD_DIR/}"
MEDIA_DIR="/var/media/$REL_DIR"
destructive mkdir -p "$(dirname "$MEDIA_DIR")"
destructive rsync -arv "$TR_TORRENT_DIR/" "$MEDIA_DIR/"
destructive rsync -rlv "$TORRENT_PATH" "$MEDIA_DIR/"
# make the media rwx by anyone in the group
destructive find "$MEDIA_DIR" -type d -exec setfacl --recursive --modify d:g::rwx,o::rx {} \;
destructive find "$MEDIA_DIR" -type d -exec chmod g+rw,a+rx {} \;
destructive find "$MEDIA_DIR" -type f -exec chmod g+rw,a+r {} \;
# if there's a single directory inside the media dir, then inline that
# if there's a single directory inside the media dir, then inline that.
# TODO: this is probably obsolete now that i process TR_TORRENT_NAME
subdirs=("$MEDIA_DIR"/*)
debug "top-level items in torrent dir:" "${subdirs[@]}"
if [ ${#subdirs[@]} -eq 1 ]; then
@@ -60,10 +88,24 @@ fi
# -iname means "insensitive", but the syntax is NOT regex -- more similar to shell matching
destructive find "$MEDIA_DIR/" -type f \(\
-iname '*downloaded?from*' \
-o -iname 'source.txt' \
-o -iname '(xxxpav69).txt' \
-o -iname '*upcoming?releases*' \
-o -iname 'www.YTS*.jpg' \
-o -iname 'ETRG.mp4' \
-o -iname 'Encoded by*.txt' \
-o -iname 'PSArips.com.txt' \
-o -iname 'RARBG.com*' \
-o -iname 'RARBG.txt' \
-o -iname 'RARBG_DO_NOT_MIRROR.exe' \
-o -iname 'Tellytorrent.net.txt' \
-o -iname 'WWW.VPPV.LA.txt' \
-o -iname 'WWW.YIFY*.COM.jpg' \
-o -iname 'YIFY*.com.txt' \
-o -iname 'YTS*.com.txt' \
-o -iname 'YTSYify*.txt' \
-o -iname 'www.YTS*.jpg' \
\) -exec rm {} \;
# might want to keep, might want to remove:
# -o -iname 'info.txt'
# -o -iname 'source.txt'
# -o -iname 'sample.mkv'

View File

@@ -0,0 +1,6 @@
{ ... }:
{
imports = [
./shelvacu.nix
];
}

View File

@@ -0,0 +1,65 @@
{ lib, pkgs, ... }:
{
users.users.shelvacu = {
isNormalUser = true;
home = "/home/shelvacu";
subUidRanges = [
{ startUid=300000; count=1; }
];
group = "users";
initialPassword = lib.mkDefault "";
shell = pkgs.bash;
openssh.authorizedKeys.keys = [
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIKoy1TrmfhBGWtVedgOM1FB1oD2UdodN3LkBnnLx6Tug compute-deck"
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIAxAFFxQMXAgi+0cmGaNE/eAkVfEl91wafUqFIuAkI5I compute-deck-root"
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAINQ2c0GzlVMjV06CS7bWbCaAbzG2+7g5FCg/vClJPe0C fw"
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIGHLPOxRd68+DJ/bYmqn0wsgwwIcMSMyuU1Ya16hCb/m fw-root"
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIOre0FnYDm3arsFj9c/l5H2Q8mdmv7kmvq683pL4heru legtop"
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAINznGot+L8kYoVQqdLV/R17XCd1ILMoDCILOg+I3s5wC pixel9pro-nod"
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIDcRDekd8ZOYfQS5X95/yNof3wFYIbHqWeq4jY0+ywQX pro1x-nod"
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIJNFbzt0NHVTaptBI38YtwLG+AsmeNYy0Nr5yX2zZEPE root@vacuInstaller toptop-root"
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAICVeSzDkGTueZijB0xUa08e06ovAEwwZK/D+Cc7bo91g triple-dezert"
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIOtwtao/TXbiuQOYJbousRPVesVcb/2nP0PCFUec0Nv8 triple-dezert-root"
];
};
security.sudo.extraRules = [
{
users = [ "shelvacu" ];
runAs = "postgres";
commands = [
{
command = "ALL";
options = [ "NOPASSWD" ];
}
];
}
];
security.polkit.extraConfig = ''
// allow:
// - systemctl restart|start|stop SERVICE
polkit.addRule(function(action, subject) {
if (subject.user == "shelvacu" && action.id == "org.freedesktop.systemd1.manage-units") {
switch (action.lookup("verb")) {
// case "cancel":
// case "reenable":
case "restart":
// case "reload":
// case "reload-or-restart":
case "start":
case "stop":
// case "try-reload-or-restart":
// case "try-restart":
return polkit.Result.YES;
default:
}
}
})
'';
sane.persist.sys.byStore.private = [
{ path = "/home/shelvacu/persist"; user = "shelvacu"; group = "users"; mode = "0700"; }
];
}

View File

@@ -3,13 +3,13 @@
boot.initrd.supportedFilesystems = [ "ext4" "btrfs" "ext2" "ext3" "vfat" ];
# useful emergency utils
boot.initrd.extraUtilsCommands = ''
copy_bin_and_libs ${pkgs.btrfs-progs}/bin/btrfstune
copy_bin_and_libs ${pkgs.util-linux}/bin/{cfdisk,lsblk,lscpu}
copy_bin_and_libs ${pkgs.gptfdisk}/bin/{cgdisk,gdisk}
copy_bin_and_libs ${pkgs.smartmontools}/bin/smartctl
copy_bin_and_libs ${pkgs.e2fsprogs}/bin/resize2fs
'' + lib.optionalString pkgs.stdenv.hostPlatform.isx86_64 ''
copy_bin_and_libs ${pkgs.nvme-cli}/bin/nvme # doesn't cross compile
copy_bin_and_libs ${lib.getExe' pkgs.btrfs-progs "btrfstune"}
copy_bin_and_libs ${lib.getExe' pkgs.e2fsprogs "resize2fs"}
copy_bin_and_libs ${lib.getExe' pkgs.gptfdisk "{cgdisk,gdisk}"}
copy_bin_and_libs ${lib.getExe' pkgs.mtools "mlabel"}
copy_bin_and_libs ${lib.getExe pkgs.nvme-cli}
copy_bin_and_libs ${lib.getExe' pkgs.smartmontools "smartctl"}
copy_bin_and_libs ${lib.getExe' pkgs.util-linux "{cfdisk,lsblk,lscpu}"}
'';
boot.kernelParams = [
"boot.shell_on_fail"
@@ -25,10 +25,11 @@
# moby has to run recent kernels (defined elsewhere).
# meanwhile, kernel variation plays some minor role in things like sandboxing (landlock) and capabilities.
# - as of 2024/08/xx, my boot fails on 6.6, but works on 6.9 and (probably; recently) 6.8.
# simpler to keep near the latest kernel on all devices,
# and also makes certain that any weird system-level bugs i see aren't likely to be stale kernel bugs.
# servo needs zfs though, which doesn't support every kernel.
boot.kernelPackages = lib.mkDefault pkgs.zfs.latestCompatibleLinuxPackages;
boot.kernelPackages = lib.mkDefault pkgs.linuxPackages_latest;
# boot.kernelPackages = lib.mkDefault pkgs.linuxPackages_testing;
# hack in the `boot.shell_on_fail` arg since that doesn't always seem to work.
boot.initrd.preFailCommands = "allowShell=1";
@@ -37,7 +38,12 @@
boot.consoleLogLevel = 7;
boot.loader.grub.enable = lib.mkDefault false;
boot.loader.generic-extlinux-compatible.enable = lib.mkDefault true;
# boot.loader.generic-extlinux-compatible.enable = lib.mkDefault true;
boot.loader.systemd-boot.enable = lib.mkDefault true;
boot.loader.systemd-boot.configurationLimit = lib.mkDefault 20;
boot.loader.systemd-boot.edk2-uefi-shell.enable = lib.mkDefault true;
boot.loader.systemd-boot.memtest86.enable = lib.mkDefault
(lib.meta.availableOn pkgs.stdenv.hostPlatform pkgs.memtest86plus);
hardware.enableAllFirmware = true; # firmware with licenses that don't allow for redistribution. fuck lawyers, fuck IP, give me the goddamn firmware.
# hardware.enableRedistributableFirmware = true; # proprietary but free-to-distribute firmware (extraneous to `enableAllFirmware` option)

View File

@@ -1,9 +1,9 @@
{ config, lib, pkgs, ... }:
{ lib, pkgs, ... }:
{
imports = [
./boot.nix
./feeds.nix
./fs.nix
./fs
./home
./hosts.nix
./ids.nix
@@ -14,6 +14,7 @@
./programs
./quirks.nix
./secrets.nix
./snapper.nix
./ssh.nix
./systemd.nix
./users
@@ -29,8 +30,18 @@
sane.persist.enable = lib.mkDefault true;
sane.root-on-tmpfs = lib.mkDefault true;
sane.programs.sysadminUtils.enableFor.system = lib.mkDefault true;
sane.programs.sysadminExtraUtils.enableFor.system = lib.mkDefault true;
sane.programs.consoleUtils.enableFor.user.colin = lib.mkDefault true;
services.buffyboard.enable = true;
services.buffyboard.settings.theme.default = "pmos-light";
# services.buffyboard.settings.quirks.fbdev_force_refresh = true;
services.buffyboard.extraFlags = [ "--verbose" ];
# irqbalance monitors interrupt count (as a daemon) and assigns high-frequency interrupts to different CPUs.
# that reduces contention between simultaneously-fired interrupts.
services.irqbalance.enable = true;
# time.timeZone = "America/Los_Angeles";
time.timeZone = "Etc/UTC"; # DST is too confusing for me => use a stable timezone
@@ -41,7 +52,7 @@
# source: <https://github.com/luishfonseca/dotfiles/blob/32c10e775d9ec7cc55e44592a060c1c9aadf113e/modules/upgrade-diff.nix>
# modified to not error on boot (when /run/current-system doesn't exist)
if [ -d /run/current-system ]; then
${pkgs.nvd}/bin/nvd --nix-bin-dir=${pkgs.nix}/bin diff /run/current-system "$systemConfig"
${lib.getExe pkgs.nvd} --nix-bin-dir=${pkgs.nix}/bin diff /run/current-system "$systemConfig"
fi
'';
};

View File

@@ -1,11 +1,15 @@
# where to find good stuff?
# - universal search/directory: <https://podcastindex.org>
# - the full database is downloadable
# - find adjacent podcasts: <https://rephonic.com/graph>
# - charts: <https://rephonic.com/charts/apple/united-states/technology>
# - list of lists: <https://en.wikipedia.org/wiki/Category:Lists_of_podcasts>
# - podcasts w/ a community: <https://lemmyverse.net/communities?query=podcast>
# - podcast recs:
# - active lemmy: <https://slrpnk.net/c/podcasts>
# - old thread: <https://lemmy.ml/post/1565858>
#
# - paywall bypass / bootlegs: <https://jumble.top/>
{ lib, sane-data, ... }:
let
hourly = { freq = "hourly"; };
@@ -57,24 +61,36 @@ let
};
podcasts = [
(fromDb "404media.co/the-404-media-podcast" // tech)
(fromDb "acquiredlpbonussecretsecret.libsyn.com" // tech) # ACQ2 - more "Acquired" episodes
(fromDb "allinchamathjason.libsyn.com" // pol)
(fromDb "adventofcomputing.com" // tech) # computing history
(fromDb "api.oyez.org/podcasts/oral-arguments/2015" // pol) # Supreme Court Oral Arguments ("2015" in URL means nothing -- it's still updated)
(fromDb "anchor.fm/s/34c7232c/podcast/rss" // tech) # Civboot -- https://anchor.fm/civboot
(fromDb "anchor.fm/s/2da69154/podcast/rss" // tech) # POD OF JAKE -- https://podofjake.com/
(fromDb "bluecityblues.org.podcastpage.io" // pol) # hosts overlap with Seattle Nice
(fromDb "buzzsprout.com/2126417" // tech) # Mystery AI Hype Theater 3000
(fromDb "cast.postmarketos.org" // tech)
(fromDb "congressionaldish.libsyn.com" // pol) # Jennifer Briney
(fromDb "craphound.com" // pol) # Cory Doctorow -- both podcast & text entries
(fromDb "darknetdiaries.com" // tech)
(fromDb "feed.podbean.com/matrixlive/feed.xml" // tech) # Matrix (chat) Live
(fromDb "dwarkeshpatel.com" // tech)
(fromDb "feeds.99percentinvisible.org/99percentinvisible" // pol) # 99% Invisible -- also available here: <https://feeds.simplecast.com/BqbsxVfO>
(fromDb "feeds.acast.com/public/shows/lawfare" // pol) # <https://www.lawfaremedia.org/podcasts-multimedia/podcast/the-lawfare-podcast>
(fromDb "feeds.buzzsprout.com/2412334.rss") # Matt Stoller's _Organized Money_ <https://www.organizedmoney.fm/>
(fromDb "feeds.eff.org/howtofixtheinternet" // pol)
(fromDb "feeds.feedburner.com/80000HoursPodcast" // rat)
(fromDb "feeds.feedburner.com/dancarlin/history" // rat)
(fromDb "feeds.feedburner.com/radiolab" // pol) # Radiolab -- also available here, but ONLY OVER HTTP: <http://feeds.wnyc.org/radiolab>
(fromDb "feeds.megaphone.fm/CHTAL4990341033" // pol) # ChinaTalk: https://www.chinatalk.media/podcast
(fromDb "feeds.megaphone.fm/GLT1412515089" // pol) # JRE: Joe Rogan Experience
(fromDb "feeds.megaphone.fm/behindthebastards" // pol) # also Maggie Killjoy
(fromDb "feeds.megaphone.fm/cspantheweekly" // pol)
(fromDb "feeds.megaphone.fm/econ102") # Noah Smith + Erik Torenberg <https://www.podpage.com/econ102/>
(fromDb "feeds.megaphone.fm/history102") # <https://www.podpage.com/history-102-with-whatifalthist/>
(fromDb "feeds.megaphone.fm/recodedecode" // tech) # The Verge - Decoder
(fromDb "feeds.simplecast.com/82FI35Px" // pol) # Ezra Klein Show
(fromDb "feeds.megaphone.fm/thiswontlast" // tech) # <https://www.podpage.com/thiswontlast/>
(fromDb "feeds.megaphone.fm/unexplainable")
(fromDb "feeds.simplecast.com/wgl4xEgL" // rat) # Econ Talk
(fromDb "feeds.simplecast.com/xKJ93w_w" // uncat) # Atlas Obscura
(fromDb "feeds.transistor.fm/acquired" // tech)
(fromDb "feeds.transistor.fm/complex-systems-with-patrick-mckenzie-patio11" // tech) # Patrick Mackenzie (from Bits About Money)
(fromDb "feeds.twit.tv/floss.xml" // tech)
@@ -83,44 +99,66 @@ let
(fromDb "hackerpublicradio.org" // tech)
(fromDb "lexfridman.com/podcast" // rat)
(fromDb "linktr.ee/betteroffline" // pol)
(fromDb "linuxdevtime.com" // tech)
(fromDb "malicious.life" // tech)
(fromDb "mapspodcast.libsyn.com" // uncat) # Multidisciplinary Association for Psychedelic Studies
(fromDb "motherearthnewsandfriends.libsyn.com" // uncat) # off-grid living
(fromDb "microarch.club" // tech)
(fromDb "mintcast.org" // tech)
(fromDb "nocturnepodcast.org")
(fromDb "omegataupodcast.net" // tech) # 3/4 German; 1/4 eps are English
(fromDb "omny.fm/shows/cool-people-who-did-cool-stuff" // pol) # Maggie Killjoy -- referenced by Cory Doctorow
(fromDb "omny.fm/shows/money-stuff-the-podcast") # Matt Levine
(fromDb "omny.fm/shows/stuff-you-should-know-1")
(fromDb "omny.fm/shows/the-dollop-with-dave-anthony-and-gareth-reynolds") # The Dollop history/comedy
(fromDb "omny.fm/shows/weird-little-guys") # Cool Zone Media
(fromDb "originstories.libsyn.com" // uncat)
(fromDb "podcast.ergaster.org/@flintandsilicon" // tech) # Thib's podcast: public interest tech, gnome, etc: <https://fed.uninsane.org/users/$ALLO9MZ5g5CsQTCBH6>
(fromDb "pods.media/api/rss/feed/channel/unchained" // tech) # cryptocurrency happenings; rec via patio11
(fromDb "politicalorphanage.libsyn.com" // pol)
(fromDb "reverseengineering.libsyn.com/rss" // tech) # UnNamed Reverse Engineering Podcast
(fromDb "rss.acast.com/deconstructed") # The Intercept - Deconstructed
(fromDb "rss.acast.com/ft-tech-tonic" // tech)
(fromDb "rss.acast.com/intercepted-with-jeremy-scahill") # The Intercept - Intercepted
(fromDb "rss.art19.com/60-minutes" // pol)
(fromDb "rss.acast.com/ft-tech-tonic" // tech) # Financial Time's: Tech Tonic
(fromDb "rss.art19.com/the-portal" // rat) # Eric Weinstein
(fromDb "seattlenice.buzzsprout.com" // pol)
(fromDb "seattlenice.buzzsprout.com" // pol) # Seattle Nice
(fromDb "speedboatdope.com" // pol) # Chapo Trap House (premium feed)
(fromDb "srslywrong.com" // pol)
(fromDb "sharkbytes.transistor.fm" // tech) # Wireshark Podcast o_0
(fromDb "sharptech.fm/feed/podcast" // tech)
(fromDb "sscpodcast.libsyn.com" // rat) # Astral Codex Ten
(fromDb "sharptech.fm/feed/podcast" // tech) # Ben Thompson
(fromDb "sscpodcast.libsyn.com" // rat) # Astral Codex Ten; Scott Alexander
(fromDb "talesfromthebridge.buzzsprout.com" // tech) # Sci-Fi? has Peter Watts; author of No Moods, Ads or Cutesy Fucking Icons (rifters.com)
(fromDb "theamphour.com" // tech)
(fromDb "techtalesshow.com" // tech) # Corbin Davenport
(fromDb "techwontsave.us" // pol) # rec by Cory Doctorow
(fromDb "wakingup.libsyn.com" // pol) # Sam Harris
(fromDb "werenotwrong.fireside.fm" // pol)
(fromDb "theamphour.com" // tech) # The Amp Hour
(fromDb "the-ben-marc-show.simplecast.com" // tech // pol) # Ben Horowitz + Marc Andreessen; love to hate em
(fromDb "timclicks.dev/compose-podcast" // tech) # Rust-heavy dev interviews
(fromDb "werenotwrong.fireside.fm" // pol) # We're Not Wrong
(fromDb "whycast.podcast.audio/@whycast" // tech) # What Hackers Yearn [for]: <https://why2025.org/>
(mkPod "https://sfconservancy.org/casts/the-corresponding-source/feeds/ogg/" // tech)
# (fromDb "allinchamathjason.libsyn.com" // pol)
# (fromDb "feed.podbean.com/matrixlive/feed.xml" // tech) # Matrix (chat) Live
# (fromDb "feeds.libsyn.com/421877" // rat) # Less Wrong Curated
# (fromDb "feeds.megaphone.fm/hubermanlab" // uncat) # Daniel Huberman on sleep
# (fromDb "feeds.simplecast.com/54nAGcIl" // pol) # The Daily
# (fromDb "feeds.simplecast.com/82FI35Px" // pol) # Ezra Klein Show
# (fromDb "feeds.simplecast.com/l2i9YnTd" // tech // pol) # Hard Fork (NYtimes tech)
# (fromDb "feeds.simplecast.com/whlwDbyc" // tech) # Tech Lounge: <https://chrischinchilla.com/podcast/techlounge/>
# (fromDb "feeds.simplecast.com/xKJ93w_w" // uncat) # Atlas Obscura
# (fromDb "iheart.com/podcast/1119-away-days-podcast-reporti-275359753" // pol) # Away Days (Cool Zone Media)
# (fromDb "lastweekinai.com" // tech) # Last Week in AI
# (fromDb "mintcast.org" // tech)
# (fromDb "podcast.posttv.com/itunes/post-reports.xml" // pol)
# (fromDb "podcast.sustainoss.org" // tech) # "Sustainable tech", only... it somehow manages to avoid any tech which is actually sustainable, and most of the time doesn't even talk about Open Source Software (!). normie/surface-level/"feel good"
# (fromDb "podcast.thelinuxexp.com" // tech) # low-brow linux/foss PR announcements
# (fromDb "politicspoliticspolitics.com" // pol) # don't judge me. Justin Robert Young.
# (fromDb "rss.acast.com/deconstructed") # The Intercept - Deconstructed
# (fromDb "rss.acast.com/intercepted-with-jeremy-scahill") # The Intercept - Intercepted
# (fromDb "rss.art19.com/60-minutes" // pol)
# (fromDb "rss.art19.com/your-welcome" // pol) # Michael Malice - Your Welcome -- also available here: <https://origin.podcastone.com/podcast?categoryID2=2232>
# (fromDb "rss.prod.firstlook.media/deconstructed/podcast.rss" // pol) #< possible URL rot
# (fromDb "rss.prod.firstlook.media/intercepted/podcast.rss" // pol) #< possible URL rot
# (fromDb "sites.libsyn.com/438684" // humor) # Quorators - digging up *weird* Quota questions
# (fromDb "techwontsave.us" // pol) # rec by Cory Doctorow, but way too info-sparse
# (fromDb "trashfuturepodcast.podbean.com" // pol) # rec by Cory Doctorow, but way rambly
# (fromDb "wakingup.libsyn.com" // pol) # Sam Harris, but he just repeats himself now
# (mkPod "https://anchor.fm/s/21bc734/podcast/rss" // pol // infrequent) # Emerge: making sense of what's next -- <https://www.whatisemerging.com/emergepodcast>
# (mkPod "https://audioboom.com/channels/5097784.rss" // tech) # Lateral with Tom Scott
# (mkPod "https://feeds.megaphone.fm/RUNMED9919162779" // pol // infrequent) # The Witch Trials of J.K. Rowling: <https://www.thefp.com/witchtrials>
@@ -128,9 +166,11 @@ let
];
texts = [
(fromDb "ergaster.org/blog" // tech) # Thib's blog: public interest tech, gnome, etc: <https://fed.uninsane.org/users/$ALLO9MZ5g5CsQTCBH6>
(fromDb "acoup.blog/feed") # history, states. author: <https://historians.social/@bretdevereaux/following>
(fromDb "amosbbatto.wordpress.com" // tech)
(fromDb "anish.lakhwara.com" // tech)
(fromDb "antipope.org") # Charles Stross
(fromDb "apenwarr.ca/log/rss.php" // tech) # CEO of tailscale
(fromDb "applieddivinitystudies.com" // rat)
(fromDb "artemis.sh" // tech)
@@ -145,6 +185,7 @@ let
(fromDb "blog.jmp.chat" // tech)
(fromDb "blog.rust-lang.org" // tech)
(fromDb "blog.thalheim.io" // tech) # Mic92
(fromDb "blog.brixit.nl" // tech) # Martijn Braam
(fromDb "bunniestudios.com" // tech) # Bunnie Juang
(fromDb "capitolhillseattle.com" // pol)
(fromDb "edwardsnowden.substack.com" // pol // text)
@@ -157,6 +198,7 @@ let
(fromDb "interconnected.org/home/feed" // rat) # Matt Webb -- engineering-ish, but dreamy
(fromDb "jeffgeerling.com" // tech)
(fromDb "jefftk.com" // tech)
(fromDb "justine.lol" // tech)
(fromDb "jwz.org/blog" // tech // pol) # DNA lounge guy, loooong-time blogger
(fromDb "kill-the-newsletter.com/feeds/joh91bv7am2pnznv.xml" // pol) # Matt Levine - Money Stuff
(fromDb "kosmosghost.github.io/index.xml" // tech)
@@ -166,6 +208,7 @@ let
(fromDb "mako.cc/copyrighteous" // tech // pol) # rec by Cory Doctorow
(fromDb "mg.lol" // tech)
(fromDb "mindingourway.com" // rat)
(fromDb "momi.ca" // tech) # Anjan, pmOS
(fromDb "morningbrew.com/feed" // pol)
(fromDb "nixpkgs.news" // tech)
(fromDb "overcomingbias.com" // rat) # Robin Hanson
@@ -188,7 +231,6 @@ let
(fromDb "slimemoldtimemold.com" // rat)
(fromDb "spectrum.ieee.org" // tech)
(fromDb "stpeter.im/atom.xml" // pol)
(fromDb "thediff.co" // pol) # Byrne Hobart
(fromDb "thisweek.gnome.org" // tech)
(fromDb "tuxphones.com" // tech)
(fromDb "uninsane.org" // tech)
@@ -200,12 +242,14 @@ let
(fromDb "xorvoid.com" // tech)
(fromDb "www.thebignewsletter.com" // pol)
(mkSubstack "astralcodexten" // rat // daily) # Scott Alexander
(mkSubstack "chlamchowder" // tech) # details CPU advancements
(mkSubstack "eliqian" // rat // weekly)
(mkSubstack "oversharing" // pol // daily)
(mkSubstack "samkriss" // humor // infrequent)
(mkText "http://benjaminrosshoffman.com/feed" // pol // weekly)
(mkText "http://boginjr.com/feed" // tech // infrequent)
(mkText "https://forum.merveilles.town/rss.xml" // pol // infrequent) #quality RSS list here: <https://forum.merveilles.town/thread/57/share-your-rss-feeds%21-6/>
(mkText "https://icm.museum/rss20.xml" // tech // infrequent) # Interim Computer Museum
(mkText "https://jvns.ca/atom.xml" // tech // weekly) # Julia Evans
(mkText "https://linuxphoneapps.org/blog/atom.xml" // tech // infrequent)
(mkText "https://nixos.org/blog/announcements-rss.xml" // tech // infrequent) # more nixos stuff here, but unclear how to subscribe: <https://nixos.org/blog/categories.html>
@@ -218,6 +262,7 @@ let
# (fromDb "econlib.org" // pol)
# (fromDb "lesswrong.com" // rat)
# (fromDb "profectusmag.com" // pol) # some conservative/libertarian think tank
# (fromDb "thediff.co" // pol) # Byrne Hobart; 80% is subscriber-only
# (fromDb "thesideview.co" // uncat) # spiritual journal; RSS items are stubs
# (fromDb "theregister.com" // tech)
# (fromDb "vitalik.ca" // tech) # moved to vitalik.eth.limo
@@ -230,21 +275,32 @@ let
videos = [
(fromDb "youtube.com/@Channel5YouTube" // pol)
(fromDb "youtube.com/@ColdFusion")
(fromDb "youtube.com/@ContraPoints" // pol)
(fromDb "youtube.com/@Exurb1a")
(fromDb "youtube.com/@hbomberguy")
(fromDb "youtube.com/@JackStauber")
(fromDb "youtube.com/@jaketran")
(fromDb "youtube.com/@kurzgesagt")
(fromDb "youtube.com/@mii_beta" // tech) # Baby Wogue / gnome reviewer
(fromDb "youtube.com/@Matrixdotorg" // tech) # Matrix Live
(fromDb "youtube.com/@NativLang")
(fromDb "youtube.com/@PolyMatter")
(fromDb "youtube.com/@scenesbyben" // pol) # video essays
(fromDb "youtube.com/@TechnologyConnections" // tech)
(fromDb "youtube.com/@TheB1M")
(fromDb "youtube.com/@theodd1sout")
(fromDb "youtube.com/@TomScottGo")
(fromDb "youtube.com/@TVW_Washington" // pol) # interviews with WA public officials
(fromDb "youtube.com/@veritasium")
(fromDb "youtube.com/@Vihart")
(fromDb "youtube.com/@InnuendoStudios" // pol) # breaks down the nastier political strategies, from a "politics is power" angle
# (fromDb "youtube.com/@CasuallyExplained" // pol)
# (fromDb "youtube.com/@ColdFusion")
# (fromDb "youtube.com/@rossmanngroup" // pol // tech) # Louis Rossmann
# (fromDb "youtube.com/@TheB1M")
# (fromDb "youtube.com/@tested" // tech) # Adam Savage (uploads too frequently)
# (fromDb "youtube.com/@Vox")
# (fromDb "youtube.com/@Vsauce") # they're all like 1-minute long videos now? what happened @Vsauce?
# (fromDb "youtube.com/@rossmanngroup" // pol // tech) # Louis Rossmann
];
images = [

View File

@@ -1,266 +0,0 @@
# docs
# - x-systemd options: <https://www.freedesktop.org/software/systemd/man/systemd.mount.html>
# - fuse options: `man mount.fuse`
{ config, lib, pkgs, sane-lib, utils, ... }:
let
fsOpts = rec {
common = [
"_netdev"
"noatime"
# user: allow any user with access to the device to mount the fs.
# note that this requires a suid `mount` binary; see: <https://zameermanji.com/blog/2022/8/5/using-fuse-without-root-on-linux/>
"user"
"x-systemd.requires=network-online.target"
"x-systemd.after=network-online.target"
"x-systemd.mount-timeout=10s" # how long to wait for mount **and** how long to wait for unmount
];
# x-systemd.automount: mount the fs automatically *on first access*.
# creates a `path-to-mount.automount` systemd unit.
automount = [ "x-systemd.automount" ];
# noauto: don't mount as part of remote-fs.target.
# N.B.: `remote-fs.target` is a dependency of multi-user.target, itself of graphical.target.
# hence, omitting `noauto` can slow down boots.
noauto = [ "noauto" ];
# lazyMount: defer mounting until first access from userspace.
# see: `man systemd.automount`, `man automount`, `man autofs`
lazyMount = noauto ++ automount;
fuse = [
"allow_other" # allow users other than the one who mounts it to access it. needed, if systemd is the one mounting this fs (as root)
# allow_root: allow root to access files on this fs (if mounted by non-root, else it can always access them).
# N.B.: if both allow_root and allow_other are specified, then only allow_root takes effect.
# "allow_root"
# default_permissions: enforce local permissions check. CRUCIAL if using `allow_other`.
# w/o this, permissions mode of sshfs is like:
# - sshfs runs all remote commands as the remote user.
# - if a local user has local permissions to the sshfs mount, then their file ops are sent blindly across the tunnel.
# - `allow_other` allows *any* local user to access the mount, and hence any local user can now freely become the remote mapped user.
# with default_permissions, sshfs doesn't tunnel file ops from users until checking that said user could perform said op on an equivalent local fs.
"default_permissions"
];
fuseColin = fuse ++ [
"uid=1000"
"gid=100"
];
ssh = common ++ fuse ++ [
"identityfile=/home/colin/.ssh/id_ed25519"
# i *think* idmap=user means that `colin` on `localhost` and `colin` on the remote are actually treated as the same user, even if their uid/gid differs?
# i.e., local colin's id is translated to/from remote colin's id on every operation?
"idmap=user"
];
sshColin = ssh ++ fuseColin ++ [
# follow_symlinks: remote files which are symlinks are presented to the local system as ordinary files (as the target of the symlink).
# if the symlink target does not exist, the presentation is unspecified.
# symlinks which point outside the mount ARE followed. so this is more capable than `transform_symlinks`
"follow_symlinks"
# symlinks on the remote fs which are absolute paths are presented to the local system as relative symlinks pointing to the expected data on the remote fs.
# only symlinks which would point inside the mountpoint are translated.
"transform_symlinks"
];
# sshRoot = ssh ++ [
# # we don't transform_symlinks because that breaks the validity of remote /nix stores
# "sftp_server=/run/wrappers/bin/sudo\\040/run/current-system/sw/libexec/sftp-server"
# ];
# in the event of hunt NFS mounts, consider:
# - <https://unix.stackexchange.com/questions/31979/stop-broken-nfs-mounts-from-locking-a-directory>
# NFS options: <https://linux.die.net/man/5/nfs>
# actimeo=n = how long (in seconds) to cache file/dir attributes (default: 3-60s)
# bg = retry failed mounts in the background
# retry=n = for how many minutes `mount` will retry NFS mount operation
# intr = allow Ctrl+C to abort I/O (it will error with `EINTR`)
# soft = on "major timeout", report I/O error to userspace
# softreval = on "major timeout", service the request using known-stale cache results instead of erroring -- if such cache data exists
# retrans=n = how many times to retry a NFS request before giving userspace a "server not responding" error (default: 3)
# timeo=n = number of *deciseconds* to wait for a response before retrying it (default: 600)
# note: client uses a linear backup, so the second request will have double this timeout, then triple, etc.
# proto=udp = encapsulate protocol ops inside UDP packets instead of a TCP session.
# requires `nfsvers=3` and a kernel compiled with `NFS_DISABLE_UDP_SUPPORT=n`.
# UDP might be preferable to TCP because the latter is liable to hang for ~100s (kernel TCP timeout) after a link drop.
# however, even UDP has issues with `umount` hanging.
#
# N.B.: don't change these without first testing the behavior of sandboxed apps on a flaky network.
nfs = common ++ [
# "actimeo=5"
# "bg"
"retrans=1"
"retry=0"
# "intr"
"soft"
"softreval"
"timeo=30"
"nofail" # don't fail remote-fs.target when this mount fails (not an option for sshfs else would be common)
# "proto=udp" # default kernel config doesn't support NFS over UDP: <https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1964093> (see comment 11).
# "nfsvers=3" # NFSv4+ doesn't support UDP at *all*. it's ok to omit nfsvers -- server + client will negotiate v3 based on udp requirement. but omitting causes confusing mount errors when the server is *offline*, because the client defaults to v4 and thinks the udp option is a config error.
# "x-systemd.idle-timeout=10" # auto-unmount after this much inactivity
];
# manually perform a ftp mount via e.g.
# curlftpfs -o ftpfs_debug=2,user=anonymous:anonymous,connect_timeout=10 -f -s ftp://servo-hn /mnt/my-ftp
ftp = common ++ fuseColin ++ [
# "ftpfs_debug=2"
"user=colin:ipauth"
# connect_timeout=10: casting shows to T.V. fails partway through about half the time
"connect_timeout=20"
];
};
remoteHome = host: {
sane.programs.sshfs-fuse.enableFor.system = true;
fileSystems."/mnt/${host}/home" = {
device = "colin@${host}:/home/colin";
fsType = "fuse.sshfs";
options = fsOpts.sshColin ++ fsOpts.lazyMount;
noCheck = true;
};
sane.fs."/mnt/${host}/home" = sane-lib.fs.wanted {
dir.acl.user = "colin";
dir.acl.group = "users";
dir.acl.mode = "0700";
};
};
remoteServo = subdir: let
localPath = "/mnt/servo/${subdir}";
systemdName = utils.escapeSystemdPath localPath;
in {
sane.programs.curlftpfs.enableFor.system = true;
fileSystems."${localPath}" = {
device = "ftp://servo-hn:/${subdir}";
noCheck = true;
fsType = "fuse.curlftpfs";
options = fsOpts.ftp ++ fsOpts.noauto;
# fsType = "nfs";
# options = fsOpts.nfs ++ fsOpts.lazyMount;
};
sane.fs."${localPath}" = {
dir.acl.user = "colin";
dir.acl.group = "users";
dir.acl.mode = "0750";
wantedBy = [ "default.target" ];
mount.depends = [ "network-online.target" ];
#VVV patch so that when the mount fails, we start a timer to remount it.
# and for a disconnection after a good mount (onSuccess), restart the timer to be more aggressive
mount.unitConfig.OnFailure = [ "${systemdName}.timer" ];
mount.unitConfig.OnSuccess = [ "${systemdName}-restart-timer.target" ];
mount.mountConfig.TimeoutSec = "10s";
mount.mountConfig.User = "colin";
mount.mountConfig.Group = "users";
# hardening (systemd-analyze security mnt-servo-playground.mount)
mount.mountConfig.AmbientCapabilities = "CAP_SYS_ADMIN";
mount.mountConfig.CapabilityBoundingSet = "CAP_SYS_ADMIN";
mount.mountConfig.LockPersonality = true;
mount.mountConfig.MemoryDenyWriteExecute = true;
mount.mountConfig.NoNewPrivileges = true;
mount.mountConfig.ProtectClock = true;
mount.mountConfig.ProtectHostname = true;
mount.mountConfig.RemoveIPC = true;
mount.mountConfig.RestrictAddressFamilies = "AF_UNIX AF_INET AF_INET6";
#VVV this includes anything it reads from, e.g. /bin/sh; /nix/store/...
# see `systemd-analyze filesystems` for a full list
mount.mountConfig.RestrictFileSystems = "@common-block @basic-api fuse";
mount.mountConfig.RestrictNamespaces = true;
mount.mountConfig.RestrictRealtime = true;
mount.mountConfig.RestrictSUIDSGID = true;
mount.mountConfig.SystemCallArchitectures = "native";
mount.mountConfig.SystemCallFilter = [
"@system-service"
"@mount"
"~@chown"
"~@cpu-emulation"
"~@keyring"
# could remove almost all io calls, however one has to keep `open`, and `write`, to communicate with the fuse device.
# so that's pretty useless as a way to prevent write access
];
mount.mountConfig.IPAddressDeny = "any";
mount.mountConfig.IPAddressAllow = "10.0.10.5";
mount.mountConfig.DevicePolicy = "closed"; # only allow /dev/{null,zero,full,random,urandom}
mount.mountConfig.DeviceAllow = "/dev/fuse";
};
systemd.targets."${systemdName}-restart-timer" = {
# hack unit which, when started, stops the timer (if running), and then starts it again.
after = [ "${systemdName}.timer" ];
conflicts = [ "${systemdName}.timer" ];
upholds = [ "${systemdName}.timer" ];
unitConfig.StopWhenUnneeded = true;
};
systemd.timers."${systemdName}" = {
timerConfig.Unit = "${systemdName}.mount";
timerConfig.AccuracySec = "2s";
timerConfig.OnActiveSec = [
# try to remount at these timestamps, backing off gradually
# there seems to be an implicit mount attempt at t=0.
"10s"
"30s"
"60s"
"120s"
];
# cap the backoff to a fixed interval.
timerConfig.OnUnitActiveSec = [ "120s" ];
};
};
in
lib.mkMerge [
{
# some services which use private directories error if the parent (/var/lib/private) isn't 700.
sane.fs."/var/lib/private".dir.acl.mode = "0700";
# in-memory compressed RAM
# defaults to compressing at most 50% size of RAM
# claimed compression ratio is about 2:1
# - but on moby w/ zstd default i see 4-7:1 (ratio lowers as it fills)
# note that idle overhead is about 0.05% of capacity (e.g. 2B per 4kB page)
# docs: <https://www.kernel.org/doc/Documentation/blockdev/zram.txt>
#
# to query effectiveness:
# `cat /sys/block/zram0/mm_stat`. whitespace separated fields:
# - *orig_data_size* (bytes)
# - *compr_data_size* (bytes)
# - mem_used_total (bytes)
# - mem_limit (bytes)
# - mem_used_max (bytes)
# - *same_pages* (pages which are e.g. all zeros (consumes no additional mem))
# - *pages_compacted* (pages which have been freed thanks to compression)
# - huge_pages (incompressible)
#
# see also:
# - `man zramctl`
zramSwap.enable = true;
# how much ram can be swapped into the zram device.
# this shouldn't be higher than the observed compression ratio.
# the default is 50% (why?)
# 100% should be "guaranteed" safe so long as the data is even *slightly* compressible.
# but it decreases working memory under the heaviest of loads by however much space the compressed memory occupies (e.g. 50% if 2:1; 25% if 4:1)
zramSwap.memoryPercent = 100;
# environment.pathsToLink = [
# # needed to achieve superuser access for user-mounted filesystems (see sshRoot above)
# # we can only link whole directories here, even though we're only interested in pkgs.openssh
# "/libexec"
# ];
programs.fuse.userAllowOther = true; #< necessary for `allow_other` or `allow_root` options.
}
(remoteHome "crappy")
(remoteHome "desko")
(remoteHome "lappy")
(remoteHome "moby")
# this granularity of servo media mounts is necessary to support sandboxing:
# for flaky mounts, we can only bind the mountpoint itself into the sandbox,
# so it's either this or unconditionally bind all of media/.
(remoteServo "media/archive")
(remoteServo "media/Books")
(remoteServo "media/collections")
# (remoteServo "media/datasets")
(remoteServo "media/games")
(remoteServo "media/Music")
(remoteServo "media/Pictures/macros")
(remoteServo "media/torrents")
(remoteServo "media/Videos")
(remoteServo "playground")
]

View File

@@ -0,0 +1,51 @@
{ ... }:
{
imports = [
./remote-home.nix
./remote-servo.nix
];
# some services which use private directories error if the parent (/var/lib/private) isn't 700.
sane.fs."/var/lib/private".dir.acl.mode = "0700";
# allocate a proper /tmp fs, else its capacity will be limited as per impermanence defaults (i.e. 1 GB).
fileSystems."/tmp" = {
device = "none";
fsType = "tmpfs";
options = [
"mode=777"
"defaults"
];
};
# in-memory compressed RAM
# defaults to compressing at most 50% size of RAM
# claimed compression ratio is about 2:1
# - but on moby w/ zstd default i see 4-7:1 (ratio lowers as it fills)
# note that idle overhead is about 0.05% of capacity (e.g. 2B per 4kB page)
# docs: <https://www.kernel.org/doc/Documentation/blockdev/zram.txt>
#
# to query effectiveness:
# `cat /sys/block/zram0/mm_stat`. whitespace separated fields:
# - *orig_data_size* (bytes)
# - *compr_data_size* (bytes)
# - mem_used_total (bytes)
# - mem_limit (bytes)
# - mem_used_max (bytes)
# - *same_pages* (pages which are e.g. all zeros (consumes no additional mem))
# - *pages_compacted* (pages which have been freed thanks to compression)
# - huge_pages (incompressible)
#
# see also:
# - `man zramctl`
zramSwap.enable = true;
# how much ram can be swapped into the zram device.
# this shouldn't be higher than the observed compression ratio.
# the default is 50% (why?)
# 100% should be "guaranteed" safe so long as the data is even *slightly* compressible.
# but it decreases working memory under the heaviest of loads by however much space the compressed memory occupies (e.g. 50% if 2:1; 25% if 4:1)
zramSwap.memoryPercent = 100;
programs.fuse.userAllowOther = true; #< necessary for `allow_other` or `allow_root` options.
}

View File

@@ -0,0 +1,76 @@
# docs
# - x-systemd options: <https://www.freedesktop.org/software/systemd/man/systemd.mount.html>
# - fuse options: `man mount.fuse`
rec {
common = [
"_netdev"
"noatime"
# user: allow any user with access to the device to mount the fs.
# note that this requires a suid `mount` binary; see: <https://zameermanji.com/blog/2022/8/5/using-fuse-without-root-on-linux/>
"user"
"x-systemd.requires=network-online.target"
"x-systemd.after=network-online.target"
"x-systemd.mount-timeout=10s" # how long to wait for mount **and** how long to wait for unmount
# disable defaults: don't fail local-fs.target if this mount fails
"nofail"
];
# x-systemd.automount: mount the fs automatically *on first access*.
# creates a `path-to-mount.automount` systemd unit.
automount = [ "x-systemd.automount" ];
# noauto: don't mount as part of remote-fs.target.
# N.B.: `remote-fs.target` is a dependency of multi-user.target, itself of graphical.target.
# hence, omitting `noauto` can slow down boots.
noauto = [ "noauto" ];
# lazyMount: defer mounting until first access from userspace.
# see: `man systemd.automount`, `man automount`, `man autofs`
lazyMount = noauto ++ automount;
fuse = [
"allow_other" # allow users other than the one who mounts it to access it. needed, if systemd is the one mounting this fs (as root)
# allow_root: allow root to access files on this fs (if mounted by non-root, else it can always access them).
# N.B.: if both allow_root and allow_other are specified, then only allow_root takes effect.
# "allow_root"
# default_permissions: enforce local permissions check. CRUCIAL if using `allow_other`.
# w/o this, permissions mode of sshfs is like:
# - sshfs runs all remote commands as the remote user.
# - if a local user has local permissions to the sshfs mount, then their file ops are sent blindly across the tunnel.
# - `allow_other` allows *any* local user to access the mount, and hence any local user can now freely become the remote mapped user.
# with default_permissions, sshfs doesn't tunnel file ops from users until checking that said user could perform said op on an equivalent local fs.
"default_permissions"
"drop_privileges"
"auto_unmount" #< ensures that when the fs exits, it releases its mountpoint. then systemd can recognize it as failed.
];
fuseColin = fuse ++ [
"uid=1000"
"gid=100"
];
ssh = common ++ fuseColin ++ [
"identityfile=/home/colin/.ssh/id_ed25519"
# i *think* idmap=user means that `colin` on `localhost` and `colin` on the remote are actually treated as the same user, even if their uid/gid differs?
# i.e., local colin's id is translated to/from remote colin's id on every operation?
"idmap=user"
];
sshColin = ssh ++ fuseColin ++ [
# follow_symlinks: remote files which are symlinks are presented to the local system as ordinary files (as the target of the symlink).
# if the symlink target does not exist, the presentation is unspecified.
# symlinks which point outside the mount ARE followed. so this is more capable than `transform_symlinks`
"follow_symlinks"
# symlinks on the remote fs which are absolute paths are presented to the local system as relative symlinks pointing to the expected data on the remote fs.
# only symlinks which would point inside the mountpoint are translated.
"transform_symlinks"
];
# sshRoot = ssh ++ [
# # we don't transform_symlinks because that breaks the validity of remote /nix stores
# "sftp_server=/run/wrappers/bin/sudo\\040/run/current-system/sw/libexec/sftp-server"
# ];
# manually perform a ftp mount via e.g.
# curlftpfs -o ftpfs_debug=2,user=anonymous:anonymous,connect_timeout=10 -f -s ftp://servo-hn /mnt/my-ftp
ftp = common ++ fuseColin ++ [
# "ftpfs_debug=2"
"user=colin:ipauth"
# connect_timeout=10: casting shows to T.V. fails partway through about half the time
"connect_timeout=20"
];
}

View File

@@ -0,0 +1,85 @@
{ config, lib, ... }:
let
fsOpts = import ./fs-opts.nix;
ifSshAuthorized = lib.mkIf (((config.sane.hosts.by-name."${config.networking.hostName}" or {}).ssh or {}).authorized or false);
remoteHome = name: { host ? name }: let
mountpoint = "/mnt/${name}/home";
device = "sshfs#colin@${host}:/home/colin";
fsType = "fuse3";
options = fsOpts.sshColin ++ fsOpts.lazyMount;
in {
sane.programs.sshfs-fuse.enableFor.system = true;
system.fsPackages = [
config.sane.programs.sshfs-fuse.package
];
fileSystems."${mountpoint}" = {
inherit device fsType options;
noCheck = true;
};
# tell systemd about the mount so that i can sandbox it
systemd.mounts = [{
where = mountpoint;
what = device;
type = fsType;
options = lib.concatStringsSep "," options;
wantedBy = [ "default.target" ];
after = [
"emergency.service"
"network-online.target"
];
requires = [ "network-online.target" ];
unitConfig.Conflicts = [
# emergency.service drops the user into a root shell;
# only accessible via physical TTY, but unmount sensitive data before that as a precaution.
"emergency.service"
];
# mountConfig.LazyUnmount = true; #< else it _ocassionally_ fails "target is busy"
mountConfig.ExecSearchPath = [ "/run/current-system/sw/bin" ];
mountConfig.User = "colin";
mountConfig.AmbientCapabilities = "CAP_SETPCAP CAP_SYS_ADMIN";
# hardening (systemd-analyze security mnt-desko-home.mount):
# TODO: i can't use ProtectSystem=full here, because i can't create a new mount space; but...
# with drop_privileges, i *could* sandbox the actual `sshfs` program using e.g. bwrap
mountConfig.CapabilityBoundingSet = "CAP_SETPCAP CAP_SYS_ADMIN";
mountConfig.LockPersonality = true;
mountConfig.MemoryDenyWriteExecute = true;
mountConfig.NoNewPrivileges = true;
mountConfig.ProtectClock = true;
mountConfig.ProtectHostname = true;
mountConfig.RemoveIPC = true;
mountConfig.RestrictAddressFamilies = "AF_UNIX AF_INET AF_INET6";
#VVV this includes anything it reads from, e.g. /bin/sh; /nix/store/...
# see `systemd-analyze filesystems` for a full list
mountConfig.RestrictFileSystems = "@common-block @basic-api fuse";
mountConfig.RestrictRealtime = true;
mountConfig.RestrictSUIDSGID = true;
mountConfig.SystemCallArchitectures = "native";
mountConfig.SystemCallFilter = [
"@system-service"
"@mount"
"~@chown"
"~@cpu-emulation"
"~@keyring"
# could remove almost all io calls, however one has to keep `open`, and `write`, to communicate with the fuse device.
# so that's pretty useless as a way to prevent write access
];
mountConfig.IPAddressDeny = "any";
mountConfig.IPAddressAllow = "10.0.0.0/8";
mountConfig.DevicePolicy = "closed"; # only allow /dev/{null,zero,full,random,urandom}
mountConfig.DeviceAllow = "/dev/fuse";
# mount.mountConfig.RestrictNamespaces = true; #< my sshfs sandboxing uses bwrap
}];
};
in
lib.mkMerge [
(ifSshAuthorized (remoteHome "crappy" {}))
(ifSshAuthorized (remoteHome "desko" {}))
(ifSshAuthorized (remoteHome "flowy" {}))
# (ifSshAuthorized (remoteHome "lappy" {}))
(ifSshAuthorized (remoteHome "moby" { host = "moby-hn"; }))
(ifSshAuthorized (remoteHome "servo" {}))
]

View File

@@ -0,0 +1,132 @@
{ config, lib, utils, ... }:
let
fsOpts = import ./fs-opts.nix;
commonOptions = fsOpts.ftp ++ fsOpts.noauto;
mountpoint = "/mnt/.servo_ftp";
systemdName = utils.escapeSystemdPath mountpoint;
device = "curlftpfs#ftp://servo-hn:/";
fsType = "fuse3";
options = commonOptions ++ [
# systemd (or maybe fuse?) swallows stderr of mount units with no obvious fix.
# instead, use this flag to log the mount output to disk
"stderr_path=/var/log/curlftpfs/servo-hn.stderr"
];
remoteServo = subdir: {
# sane.fs."/mnt/servo/${subdir}".mount.bind = "/mnt/.servo_ftp/${subdir}";
systemd.mounts = [{
where = "/mnt/servo/${subdir}";
what = "/mnt/.servo_ftp/${subdir}";
options = "bind,nofail";
type = "auto";
after = [ "${systemdName}.mount" ];
upheldBy = [ "${systemdName}.mount" ]; #< start this mount whenever the underlying becomes available
bindsTo = [ "${systemdName}.mount" ]; #< stop this mount whenever the underlying disappears
}];
};
in
lib.mkMerge [
{
sane.programs.curlftpfs.enableFor.system = true;
system.fsPackages = [
config.sane.programs.curlftpfs.package
];
sane.fs."/var/log/curlftpfs".dir.acl.mode = "0777";
fileSystems."/mnt/.servo_ftp" = {
inherit device fsType options;
noCheck = true;
};
systemd.mounts = [{
where = mountpoint;
what = device;
type = fsType;
options = lib.concatStringsSep "," options;
wantedBy = [ "default.target" ];
after = [ "network-online.target" ];
requires = [ "network-online.target" ];
#VVV patch so that when the mount fails, we start a timer to remount it.
# and for a disconnection after a good mount (onSuccess), restart the timer to be more aggressive
unitConfig.OnFailure = [ "${systemdName}.timer" ];
unitConfig.OnSuccess = [ "${systemdName}-restart-timer.target" ];
mountConfig.TimeoutSec = "10s";
mountConfig.ExecSearchPath = [ "/run/current-system/sw/bin" ];
mountConfig.User = "colin";
mountConfig.AmbientCapabilities = "CAP_SETPCAP CAP_SYS_ADMIN";
# hardening (systemd-analyze security mnt-servo-playground.mount)
mountConfig.CapabilityBoundingSet = "CAP_SETPCAP CAP_SYS_ADMIN";
mountConfig.LockPersonality = true;
mountConfig.MemoryDenyWriteExecute = true;
mountConfig.NoNewPrivileges = true;
mountConfig.ProtectClock = true;
mountConfig.ProtectHostname = true;
mountConfig.RemoveIPC = true;
mountConfig.RestrictAddressFamilies = "AF_UNIX AF_INET AF_INET6";
#VVV this includes anything it reads from, e.g. /bin/sh; /nix/store/...
# see `systemd-analyze filesystems` for a full list
mountConfig.RestrictFileSystems = "@common-block @basic-api fuse";
mountConfig.RestrictRealtime = true;
mountConfig.RestrictSUIDSGID = true;
mountConfig.SystemCallArchitectures = "native";
mountConfig.SystemCallFilter = [
"@system-service"
"@mount"
"~@chown"
"~@cpu-emulation"
"~@keyring"
# could remove almost all io calls, however one has to keep `open`, and `write`, to communicate with the fuse device.
# so that's pretty useless as a way to prevent write access
];
mountConfig.IPAddressDeny = "any";
mountConfig.IPAddressAllow = "10.0.10.5";
mountConfig.DevicePolicy = "closed"; # only allow /dev/{null,zero,full,random,urandom}
mountConfig.DeviceAllow = "/dev/fuse";
# mountConfig.RestrictNamespaces = true;
}];
systemd.targets."${systemdName}-restart-timer" = {
# hack unit which, when started, stops the timer (if running), and then starts it again.
after = [ "${systemdName}.timer" ];
conflicts = [ "${systemdName}.timer" ];
upholds = [ "${systemdName}.timer" ];
unitConfig.StopWhenUnneeded = true;
};
systemd.timers."${systemdName}" = {
timerConfig.Unit = "${systemdName}.mount";
timerConfig.AccuracySec = "2s";
timerConfig.OnActiveSec = [
# try to remount at these timestamps, backing off gradually
# there seems to be an implicit mount attempt at t=0.
"10s"
"30s"
"60s"
"120s"
];
# cap the backoff to a fixed interval.
timerConfig.OnUnitActiveSec = [ "120s" ];
};
}
# this granularity of servo media mounts is necessary to support sandboxing. consider:
# 1. servo offline
# 2. launch a long-running app
# 3. servo comes online
# in order for the servo mount to be propagated into the app's namespace, we need to bind
# the root mountpoint into the app namespace. if we wish to only grant the app selective access
# to servo, we must create *multiple* mountpoints: /mnt/servo/FOO directories which always exist,
# and are individually bound to /mnt/.servo_ftp/FOO as the latter becomes available.
(remoteServo "media/archive")
(remoteServo "media/Books")
(remoteServo "media/collections")
# (remoteServo "media/datasets")
(remoteServo "media/games")
(remoteServo "media/Music")
(remoteServo "media/Pictures/macros")
(remoteServo "media/torrents")
(remoteServo "media/Videos")
(remoteServo "playground")
]

View File

@@ -6,16 +6,19 @@
"dev"
"ref"
"use"
"Books/Audiobooks"
"Books/Books"
"Books/Visual"
"Books/local"
"Music"
# these are persisted simply to save on RAM.
# ~/.cache/nix can become several GB.
# mesa_shader_cache is < 10 MB.
# TODO: integrate with sane.programs.sandbox?
".cache/mesa_shader_cache"
".cache/nix"
];
sane.user.persist.byStore.ephemeral = [
# this is persisted simply to save on RAM. mesa_shader_cache_db is < 10 MB per boot.
# TODO: see about removing this. the programs which benefit from shader caches should be configured to persist their _own_ dbs.
".cache/mesa_shader_cache_db"
];
sane.user.persist.byStore.private = [
"archive"
"Pictures/albums"
@@ -34,9 +37,15 @@
sane.user.fs = let
persistEnabled = config.sane.persist.enable;
in {
".persist/private" = lib.mkIf persistEnabled { symlink.target = config.sane.persist.stores.private.origin; };
".persist/plaintext" = lib.mkIf persistEnabled { symlink.target = config.sane.persist.stores.plaintext.origin; };
".persist/ephemeral" = lib.mkIf persistEnabled { symlink.target = config.sane.persist.stores.ephemeral.origin; };
".persist/private" = lib.mkIf persistEnabled {
symlink.target = "${config.sane.persist.stores.private.origin}/home/${config.sane.defaultUser}";
};
".persist/plaintext" = lib.mkIf persistEnabled {
symlink.target = "${config.sane.persist.stores.plaintext.origin}/home/${config.sane.defaultUser}";
};
".persist/ephemeral" = lib.mkIf persistEnabled {
symlink.target = "${config.sane.persist.stores.ephemeral.origin}/home/${config.sane.defaultUser}";
};
"nixos".symlink.target = "dev/nixos";

View File

@@ -53,19 +53,24 @@ let
(p: builtins.toString p.package)
(enabledProgramsWithPackage ++ [ { package=mimeappsListPkg; } ]);
}).overrideAttrs (orig: {
# like normal symlinkJoin, but don't error if the path doesn't exist
# like normal symlinkJoin, but don't error if the path doesn't exist.
# additionally, remove `DBusActivatable=true` from any .desktop files encountered;
# my dbus session is sandboxed such that it can't activate services even if i thought that was a good idea.
buildCommand = ''
mkdir -p $out/share/applications
for i in $(cat $pathsPath); do
if [ -e "$i/share/applications" ]; then
${pkgs.buildPackages.xorg.lndir}/bin/lndir -silent $i/share/applications $out/share/applications
local files=($(cd "$i/share/applications"; ls .))
for f in "''${files[@]}"; do
sed '/DBusActivatable=true/d' $i/share/applications/$f > $out/share/applications/$f
done
fi
done
runHook postBuild
'';
postBuild = ''
# rebuild `mimeinfo.cache`, used by file openers to show the list of *all* apps, not just the user's defaults.
${pkgs.buildPackages.desktop-file-utils}/bin/update-desktop-database $out/share/applications
${lib.getExe' pkgs.buildPackages.desktop-file-utils "update-desktop-database"} $out/share/applications
'';
});

View File

@@ -2,6 +2,12 @@
{
# TODO: this should be populated per-host
sane.hosts.by-name."cadey" = {
ssh.authorized = lib.mkDefault false;
lan-ip = "10.78.79.70";
};
sane.hosts.by-name."crappy" = {
ssh.user_pubkey = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIMIvSQAGKqmymXIL4La9B00LPxBIqWAr5AsJxk3UQeY5";
ssh.host_pubkey = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIMN0cpRAloCBOE5/2wuzgik35iNDv5KLceWMCVaa7DIQ";
@@ -18,14 +24,22 @@
lan-ip = "10.78.79.52";
};
sane.hosts.by-name."lappy" = {
ssh.user_pubkey = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIDpmFdNSVPRol5hkbbCivRhyeENzb9HVyf9KutGLP2Zu";
ssh.host_pubkey = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAILSJnqmVl9/SYQ0btvGb0REwwWY8wkdkGXQZfn/1geEc";
wg-home.pubkey = "FTUWGw2p4/cEcrrIE86PWVnqctbv8OYpw8Gt3+dC/lk=";
wg-home.ip = "10.0.10.20";
lan-ip = "10.78.79.53";
sane.hosts.by-name."flowy" = {
ssh.user_pubkey = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIAa9U2+aUc5Kr6f2oeILAy2EC86W5OZSprmBb1F+8n7/";
ssh.host_pubkey = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIMNuTITzc07mqYspWw6fqRw40ObxwnmWCwg188apHB/o";
wg-home.pubkey = "o6Vh+gHF87wAOOofgKKYIhV91kgDRnLvwnd5W2WHsDE=";
wg-home.ip = "10.0.10.56";
lan-ip = "10.78.79.56";
};
# sane.hosts.by-name."lappy" = {
# ssh.user_pubkey = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIDpmFdNSVPRol5hkbbCivRhyeENzb9HVyf9KutGLP2Zu";
# ssh.host_pubkey = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAILSJnqmVl9/SYQ0btvGb0REwwWY8wkdkGXQZfn/1geEc";
# wg-home.pubkey = "FTUWGw2p4/cEcrrIE86PWVnqctbv8OYpw8Gt3+dC/lk=";
# wg-home.ip = "10.0.10.20";
# lan-ip = "10.78.79.53";
# };
sane.hosts.by-name."moby" = {
# ssh.authorized = lib.mkDefault false; # moby's too easy to hijack: don't let it ssh places
ssh.user_pubkey = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAICrR+gePnl0nV/vy7I5BzrGeyVL+9eOuXHU1yNE3uCwU";
@@ -36,7 +50,7 @@
};
sane.hosts.by-name."servo" = {
ssh.authorized = lib.mkDefault false; # servo presents too many services to the internet: easy atack vector
# ssh.authorized = lib.mkDefault false; # servo presents too many services to the internet: easy atack vector
ssh.user_pubkey = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIPS1qFzKurAdB9blkWomq8gI1g0T3sTs9LsmFOj5VtqX";
ssh.host_pubkey = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIOfdSmFkrVT6DhpgvFeQKm3Fh9VKZ9DbLYOPOJWYQ0E8";
wg-home.pubkey = "roAw+IUFVtdpCcqa4khB385Qcv9l5JAB//730tyK4Wk=";

View File

@@ -6,6 +6,7 @@
{
# partially supported in nixpkgs <repo:nixos/nixpkgs:nixos/modules/misc/ids.nix>
sane.ids.networkmanager.uid = 57; #< nixpkgs unofficially reserves this, to match networkmanager's gid
sane.ids.mediatomb.uid = 187; # <repo:nixos/nixpkgs:nixos/modules/misc/ids.nix>
# legacy servo users, some are inconvenient to migrate
sane.ids.dhcpcd.gid = 991;
@@ -45,8 +46,8 @@
sane.ids.pict-rs.gid = 2409;
sane.ids.sftpgo.uid = 2410;
sane.ids.sftpgo.gid = 2410;
sane.ids.trust-dns.uid = 2411;
sane.ids.trust-dns.gid = 2411;
sane.ids.hickory-dns.uid = 2411; #< previously "trust-dns"
sane.ids.hickory-dns.gid = 2411; #< previously "trust-dns"
sane.ids.export.gid = 2412;
sane.ids.nfsuser.uid = 2413;
sane.ids.media.gid = 2414;
@@ -63,6 +64,13 @@
sane.ids.nix-serve.uid = 2420;
sane.ids.nix-serve.gid = 2420;
sane.ids.plugdev.gid = 2421;
sane.ids.ollama.uid = 2422;
sane.ids.ollama.gid = 2422;
sane.ids.bitmagnet.uid = 2423;
sane.ids.bitmagnet.gid = 2423;
sane.ids.anubis.uid = 2424;
sane.ids.anubis.gid = 2424;
sane.ids.shelvacu.uid = 5431;
sane.ids.colin.uid = 1000;
sane.ids.guest.uid = 1100;
@@ -79,6 +87,16 @@
sane.ids.wireshark.gid = 2006;
sane.ids.nixremote.uid = 2007;
sane.ids.nixremote.gid = 2007;
sane.ids.unbound.uid = 2008;
sane.ids.unbound.gid = 2008;
sane.ids.resolvconf.gid = 2009;
sane.ids.smartd.uid = 2010;
sane.ids.smartd.gid = 2010;
sane.ids.radicale.uid = 2011;
sane.ids.radicale.gid = 2011;
sane.ids.named.uid = 2012;
sane.ids.named.gid = 2012;
sane.ids.lpadmin.gid = 2013;
# found on graphical hosts
sane.ids.nm-iodine.uid = 2101; # desko/moby/lappy

View File

@@ -1,11 +1,12 @@
{ lib, ... }:
{ ... }:
{
imports = [
./dns.nix
./dns
./hostnames.nix
./modemmanager.nix
./networkmanager.nix
./ntp.nix
./upnp.nix
./vpn.nix
];

View File

@@ -0,0 +1,162 @@
# debugging:
# - /var/log/named/named.log
## config
# - `man named`
# - `man named.conf`
# - show defaults with: `named -C`
# - defaults live in <repo:isc-projects/bind:bin/named/config.c>
# - per-option docs live in <repo:isc-projects/bind:bind9/doc/arm/reference.rst>
#
## statistics
# - `netstat --statistics --udp`
# - `rdnc stats`? dumps to `named.stats` in named's PWD?
#
## interactive debugging
# - `systemctl stop bind`
# - `sudo /nix/store/0zpdy93sd3fgbxgvf8dsxhn8fbbya8d2-bind-9.18.28/sbin/named -g -u named -4 -c /nix/store/f1mp0myzmfms71h9vinwxpn2i9362a9a-named.conf`
# - `-g` = don't fork
# - `-u named` = start as superuser (to claim port 53), then drop to user `named`
#
{ config, lib, pkgs, ... }:
let
hostCfg = config.sane.hosts.by-name."${config.networking.hostName}" or null;
bindCfg = config.services.bind;
in
{
config = lib.mkIf (!config.sane.services.hickory-dns.asSystemResolver) {
services.resolved.enable = lib.mkForce false;
networking.nameservers = [
# be compatible with systemd-resolved
# "127.0.0.53"
# or don't be compatible with systemd-resolved, but with libc and pasta instead
# see <pkgs/by-name/sane-scripts/src/sane-vpn>
"127.0.0.1"
# enable IPv6, or don't; unbound is spammy when IPv6 is enabled but unroutable
# "::1"
];
networking.resolvconf.extraConfig = ''
# DNS serviced by `BIND` recursive resolver
name_servers='127.0.0.1'
'';
services.bind.enable = lib.mkDefault true;
services.bind.forwarders = []; #< don't forward queries to upstream resolvers
services.bind.cacheNetworks = [
"127.0.0.0/24"
"::1/128"
"10.0.10.0/24" #< wireguard clients (servo)
];
services.bind.listenOn = [
"127.0.0.1"
] ++ lib.optionals (hostCfg != null && hostCfg.wg-home.ip != null) [
# allow wireguard clients to use us as a recursive resolver (only needed for servo)
hostCfg.wg-home.ip
];
services.bind.listenOnIpv6 = [
# "::1"
];
services.bind.ipv4Only = true; # unbound is spammy when it tries IPv6 without a routable address
# when testing, deploy on a port other than 53
# services.bind.extraOptions = ''
# listen-on port 953 { any; };
# '';
# services.bind.extraArgs = [
# # -d = debug logging level: higher = more verbose
# "-d" "2"
# # -L = where to log. default is `named.run` in PWD -- unless running interactively in which case it logs to stdout
# "-L" "/var/log/named/named.log"
# ];
networking.resolvconf.useLocalResolver = false; #< we manage resolvconf explicitly, above
# TODO: how to exempt `pool.ntp.org` from DNSSEC checks, as i did when using unbound?
# allow runtime insertion of zones or other config changes:
# add your supplemental config as a toplevel file in /run/named/dhcp-configs/, then `systemctl restart bind`
services.bind.extraConfig = ''
include "/run/named/dhcp-configs.conf";
'';
services.bind.extraOptions = ''
// we can't guarantee that all forwarders support DNSSEC,
// and as of 2025-01-30 BIND9 gives no way to disable DNSSEC per-forwarder/zone,
// so just disable it globally
dnssec-validation no;
// XXX(2025-06-30): i need reverse DNS of private IP space such as 10.0.0.0/8.
// configuring those zones (done in a secrets/ file), unfortunately requires disabling
// ALL local entries for reserved zones (IN-ADDR.ARPA, IP6.ARPA, EMPTY.AS112.ARPA, HOME.ARPA, RESOLVER.ARPA).
// TODO: figure a better solution, as this likely causes reverse-DNS queries of LAN hosts to be sent to the WAN!
// - see <https://www.as112.net/>
empty-zones-enable no;
'';
# re-implement the nixos default bind config, but without `options { forwarders { }; };`,
# as having an empty `forwarders` at the top-level prevents me from forwarding the `.` zone in a separate statement
# (which i want to do to allow sane-vpn to forward all DNS).
services.bind.configFile = pkgs.writeText "named.conf" ''
include "/etc/bind/rndc.key";
controls {
inet 127.0.0.1 allow {localhost;} keys {"rndc-key";};
};
acl cachenetworks { ${lib.concatMapStrings (entry: " ${entry}; ") bindCfg.cacheNetworks} };
acl badnetworks { ${lib.concatMapStrings (entry: " ${entry}; ") bindCfg.blockedNetworks} };
options {
listen-on { ${lib.concatMapStrings (entry: " ${entry}; ") bindCfg.listenOn} };
listen-on-v6 { ${lib.concatMapStrings (entry: " ${entry}; ") bindCfg.listenOnIpv6} };
allow-query-cache { cachenetworks; };
blackhole { badnetworks; };
//v disable top-level forwards, so that i can do forwarding more generically in `zone FOO { ... }` directives.
// forward ${bindCfg.forward};
// forwarders { ${lib.concatMapStrings (entry: " ${entry}; ") bindCfg.forwarders} };
directory "${bindCfg.directory}";
pid-file "/run/named/named.pid";
${bindCfg.extraOptions}
};
// XXX(2025-06-18): some tools i use for work assume 'localhost' can be resolved by the system nameserver,
// and not just by /etc/hosts
zone "localhost" {
type master;
file "${pkgs.writeText "localhost" ''
$TTL 300
@ IN SOA localhost. root.localhost. (
202506181 ; Serial
28800 ; Refresh
7200 ; Retry
604800 ; Expire
86400) ; Minimum TTL
NS localhost.
localhost. A 127.0.0.1
AAAA ::1
''}";
};
${bindCfg.extraConfig}
'';
systemd.services.bind.serviceConfig.ExecStartPre = pkgs.writeShellScript "named-generate-config" ''
mkdir -p /run/named/dhcp-configs
chmod g+w /run/named/dhcp-configs
echo "// FILE GENERATED BY bind.service's ExecStartPre: CHANGES TO THIS FILE WILL BE OVERWRITTEN" > /run/named/dhcp-configs.conf
for c in $(ls /run/named/dhcp-configs/); do
cat "/run/named/dhcp-configs/$c" >> /run/named/dhcp-configs.conf
done
'';
systemd.services.bind.serviceConfig.ReadWritePaths = [
"/var/log/named"
];
sane.persist.sys.byPath."/var/log/named" = {
store = "ephemeral";
method = "symlink";
acl.mode = "0750";
acl.user = "named";
};
};
}

View File

@@ -20,36 +20,14 @@
# - each namespace may use a different /etc/resolv.conf to specify different DNS servers
# - nscd breaks namespacing: the host nscd is unaware of the guest's /etc/resolv.conf, and so directs the guest's DNS requests to the host's servers.
# - this is fixed by either removing `/var/run/nscd/socket` from the namespace, or disabling nscd altogether.
{ config, lib, pkgs, ... }:
lib.mkMerge [
{ config, pkgs, ... }:
{
sane.services.trust-dns.enable = lib.mkDefault config.sane.services.trust-dns.asSystemResolver;
sane.services.trust-dns.asSystemResolver = lib.mkDefault true;
}
(lib.mkIf (!config.sane.services.trust-dns.asSystemResolver) {
# use systemd's stub resolver.
# /etc/resolv.conf isn't sophisticated enough to use different servers per net namespace (or link).
# instead, running the stub resolver on a known address in the root ns lets us rewrite packets
# in servo's ovnps namespace to use the provider's DNS resolvers.
# a weakness is we can only query 1 NS at a time (unless we were to clone the packets?)
# TODO: improve trust-dns recursive resolver and then remove this
services.resolved.enable = true; #< to disable, set ` = lib.mkForce false`, as other systemd features default to enabling `resolved`.
# without DNSSEC:
# - dig matrix.org => works
# - curl https://matrix.org => works
# with default DNSSEC:
# - dig matrix.org => works
# - curl https://matrix.org => fails
# i don't know why. this might somehow be interfering with the DNS run on this device (trust-dns)
services.resolved.dnssec = "false";
networking.nameservers = [
# use systemd-resolved resolver
# full resolver (which understands /etc/hosts) lives on 127.0.0.53
# stub resolver (just forwards upstream) lives on 127.0.0.54
"127.0.0.53"
imports = [
./bind.nix
./hickory-dns.nix
./unbound.nix
];
})
{
# nscd -- the Name Service Caching Daemon -- caches DNS query responses
# in a way that's unaware of my VPN routing, so routes are frequently poor against
# services which advertise different IPs based on geolocation.
@@ -72,9 +50,10 @@ lib.mkMerge [
services.nscd.enable = false;
# system.nssModules = lib.mkForce [];
sane.silencedAssertions = [''.*Loading NSS modules from system.nssModules.*requires services.nscd.enable being set to true.*''];
# add NSS modules into their own subdirectory.
# then i can add just the NSS modules library path to the global LD_LIBRARY_PATH, rather than ALL of /run/current-system/sw/lib.
# TODO: i'm doing this so as to achieve mdns DNS resolution (avahi). it would be better to just have trust-dns delegate .local to avahi
# TODO: i'm doing this so as to achieve mdns DNS resolution (avahi). it would be better to just have hickory-dns delegate .local to avahi
# (except avahi doesn't act as a local resolver over DNS protocol -- only dbus).
environment.systemPackages = [(pkgs.symlinkJoin {
name = "nss-modules";
@@ -90,4 +69,3 @@ lib.mkMerge [
environment.variables.LD_LIBRARY_PATH = [ "/run/current-system/sw/lib/nss" ];
systemd.globalEnvironment.LD_LIBRARY_PATH = "/run/current-system/sw/lib/nss"; #< specifically for `geoclue.service`
}
]

View File

@@ -0,0 +1,31 @@
{ config, lib, ... }:
lib.mkIf false #< XXX(2024-10-xx): hickory-dns recursive resolution is too immature; switched to `unbound`
(lib.mkMerge [
{
sane.services.hickory-dns.enable = lib.mkDefault config.sane.services.hickory-dns.asSystemResolver;
# sane.services.hickory-dns.asSystemResolver = lib.mkDefault true;
}
(lib.mkIf (!config.sane.services.hickory-dns.asSystemResolver && config.sane.services.hickory-dns.enable) {
# use systemd's stub resolver.
# /etc/resolv.conf isn't sophisticated enough to use different servers per net namespace (or link).
# instead, running the stub resolver on a known address in the root ns lets us rewrite packets
# in servo's ovnps namespace to use the provider's DNS resolvers.
# a weakness is we can only query 1 NS at a time (unless we were to clone the packets?)
# TODO: improve hickory-dns recursive resolver and then remove this
services.resolved.enable = true; #< to disable, set ` = lib.mkForce false`, as other systemd features default to enabling `resolved`.
# without DNSSEC:
# - dig matrix.org => works
# - curl https://matrix.org => works
# with default DNSSEC:
# - dig matrix.org => works
# - curl https://matrix.org => fails
# i don't know why. this might somehow be interfering with the DNS run on this device (hickory-dns)
services.resolved.dnssec = "false";
networking.nameservers = [
# use systemd-resolved resolver
# full resolver (which understands /etc/hosts) lives on 127.0.0.53
# stub resolver (just forwards upstream) lives on 127.0.0.54
"127.0.0.53"
];
})
])

View File

@@ -0,0 +1,93 @@
# `man unbound.conf` for info on settings
# it's REALLY EASY to combine settings in a way that produce bad effects.
# generally, prefer to stay close to defaults unless there's a compelling reason to differ.
{ config, lib, ... }:
lib.optionalAttrs false #< XXX(2024-12-29): unbound caches failed DNS resolutions, just randomly breaks connectivity daily
{
config = lib.mkIf (!config.sane.services.hickory-dns.asSystemResolver) {
services.resolved.enable = lib.mkForce false;
networking.nameservers = [
# be compatible with systemd-resolved
# "127.0.0.53"
# or don't be compatible with systemd-resolved, but with libc and pasta instead
# see <pkgs/by-name/sane-scripts/src/sane-vpn>
"127.0.0.1"
# enable IPv6, or don't, because having just a single name server makes monkey-patching it easier
# "::1"
];
networking.resolvconf.extraConfig = ''
# DNS serviced by `unbound` recursive resolver
name_servers='127.0.0.1'
'';
# resolve DNS recursively with Unbound.
services.unbound.enable = lib.mkDefault true;
services.unbound.resolveLocalQueries = false; #< disable, so that i can manage networking.nameservers manually
services.unbound.settings.server.interface = [ "127.0.0.1" ];
services.unbound.settings.server.access-control = [ "127.0.0.0/8 allow" ];
# allow control via `unbound-control`. user must be a member of the `unbound` Unix group.
services.unbound.localControlSocketPath = "/run/unbound/unbound.ctl";
# exempt `pool.ntp.org` from DNSSEC checks to avoid a circular dependency between DNS resolution and NTP.
# without this, if the RTC fails, then both time and DNS are unrecoverable.
services.unbound.settings.server.domain-insecure = config.networking.timeServers;
# XXX(2024-12-03): BUG: during boot (before network is up), or during network blips, Unbound will
# receive a query, fail to evaluate it, and then resolve future identical queries with a no-answers response for the next ~15m.
# this *appears* to be some bug in Unbound's "infra-cache", as evidenced by `unbound-control flush_infra all`.
#
# the infra cache is a per-nameserver liveness and latency cache which Unbound uses to decide which of N applicable nameservers to route a given query to.
#
# there is apparently NO simple solution.
# the closest fix is to reduce the TTL of the infra-cache (`infra-host-ttl`) so as to limit the duration of this error.
# tried, but failed fixes:
# - server.harden-dnssec-stripped = false
# - services.unbound.enableRootTrustAnchor = false; #< disable DNSSEC
# - server.trust-anchor-file = "${pkgs.dns-root-data}/root.key"; #< hardcode root keys instead of dynamically probing them
# - server.disable-dnssec-lame-check = true;
# - server.infra-keep-probing = true; #< if unbound fails to reach a host (NS), it by default *does not try again* for 900s. keep-probing tells it to keep trying, with a backoff.
# - server.infra-cache-min-rtt = 1000;
# - server.infra-cache-max-rtt = 1000;
#
# see also:
# - <https://forum.opnsense.org/index.php?topic=32852.0>
# - <https://unbound.docs.nlnetlabs.nl/en/latest/reference/history/info-timeout-server-selection.html>
#
services.unbound.settings.server.infra-host-ttl = 30; #< cache each NS's liveness for a max of 30s
# perf tuning; see: <https://unbound.docs.nlnetlabs.nl/en/latest/topics/core/performance.html>
# resource usage:
# - defaults (num-threads = 1; so-{rcvbuf,sndbuf} = 0, prefetch = false): 12.7M memory usage
# - num-threads = 2: 17.2M memory usage
# - num-threads = 4: 26.2M memory usage
# - num-threads = 4; so-{rcvbuf,sndbuf}=4m: 26.7M memory usage
# - prefetch = true: no increased memory; supposed 10% increase in traffic
#
# # i suspect most operations are async; the only serialized bits are either CPU or possibly local IO (i.e. syscalls to write sockets).
# # threading is probably only rarely helpful
# services.unbound.settings.server.num-threads = 4;
#
# higher so-rcvbuf means less likely to drop client queries...
# default is `cat /proc/sys/net/core/wmem_default`, i.e. 208k
# services.unbound.settings.server.so-rcvbuf = "1m";
# services.unbound.settings.server.so-sndbuf = "1m";
#
# `prefetch`: prefetch RRs which are about to expire from the cache, to keep them primed.
# services.unbound.settings.server.prefetch = true;
# if a resolution fails, or takes excessively long, reply with expired cache entries
# see: <https://unbound.docs.nlnetlabs.nl/en/latest/topics/core/serve-stale.html#rfc-8767>
services.unbound.settings.server.serve-expired = true;
services.unbound.settings.server.serve-expired-ttl = 86400; #< don't serve any records more outdated than this
services.unbound.settings.server.serve-expired-client-timeout = 2800; #< only serve expired records if the client has been waiting this long, ms
# `cache-max-negative-ttl`: intended to limit damage during networking flakes, but instead seems to cause unbound to cache error responses it *wouldn't* otherwise cache
# services.unbound.settings.server.cache-max-negative-ttl = 60;
# `user-caps-for-id`: randomizes casing to avoid spoofing, but causes unbound to reply with no results to queries after boot (likely a infra-cache issue)
# services.unbound.settings.server.use-caps-for-id = true;
};
}

View File

@@ -37,7 +37,11 @@
# serviceConfig.RestrictAddressFamilies = "AF_NETLINK AF_UNIX AF_QIPCRTR";
# serviceConfig.NoNewPrivileges = true;
serviceConfig.CapabilityBoundingSet = [ "CAP_NET_ADMIN" ]; #< TODO: make sure this is *really* taking effect, and isn't supplemental to upstream's `CAP_SYS_ADMIN` setting
serviceConfig.CapabilityBoundingSet = [
"" #< reset upstream capabilities
"CAP_NET_ADMIN"
"CAP_SYS_ADMIN" #< TODO: remove CAP_SYS_ADMIN!
];
serviceConfig.LockPersonality = true;
# serviceConfig.PrivateUsers = true; #< untried, not likely to work since it needs capabilities
serviceConfig.PrivateTmp = true;

View File

@@ -1,29 +1,10 @@
{ config, pkgs, ... }:
let
# networkmanager = pkgs.networkmanager;
networkmanager = pkgs.networkmanager.overrideAttrs (upstream: {
# src = pkgs.fetchFromGitea {
# domain = "git.uninsane.org";
# owner = "colin";
# repo = "NetworkManager";
# # patched to fix polkit permissions (with `nmcli`) when NetworkManager runs as user networkmanager
# rev = "dev-sane-1.48.0";
# hash = "sha256-vGmOKtwVItxjYioZJlb1og3K6u9s4rcmDnjAPLBC3ao=";
# };
patches = (upstream.patches or []) ++ [
(pkgs.fetchpatch {
name = "polkit: add owner annotations to all actions";
url = "https://git.uninsane.org/colin/NetworkManager/commit/a01293861fa24201ffaeb84c07f1c71136c49759.patch";
hash = "sha256-th1/M2slo7rjkVBwETZII53Lmhyw8OMS0aT9QYI5Uvk=";
})
];
});
# split the package into `daemon` and `nmcli` outputs, because the networkmanager *service*
# doesn't need `nmcli`/`nmtui` tooling
networkmanager-split = pkgs.networkmanager-split.override { inherit networkmanager; };
in {
{ config, lib, pkgs, ... }:
{
networking.networkmanager.enable = true;
systemd.network.wait-online.enable = false; # systemd-networkd-wait-online.service reliably fails on lappy. docs don't match behavior. shit software.
# systemd-networkd-wait-online.service reliably fails on lappy. docs don't match behavior. shit software.
# XXX(2025-07-18): `systemd-networkd-wait-online.service` also fails on desko (timeout).
systemd.network.wait-online.enable = false;
# plugins mostly add support for establishing different VPN connections.
# the default plugin set includes mostly proprietary VPNs:
# - fortisslvpn (Fortinet)
@@ -36,10 +17,9 @@ in {
#
# i don't use these, and notably they drag in huge dependency sets and don't cross compile well.
# e.g. openconnect drags in webkitgtk (for SSO)!
# networking.networkmanager.plugins = lib.mkForce [];
networking.networkmanager.enableDefaultPlugins = false;
networking.networkmanager.plugins = lib.mkForce [];
networking.networkmanager.package = networkmanager-split.daemon.overrideAttrs (upstream: {
networking.networkmanager.package = pkgs.networkmanager-split.daemon.overrideAttrs (upstream: {
# postPatch = (upstream.postPatch or "") + ''
# substituteInPlace src/{core/org.freedesktop.NetworkManager,nm-dispatcher/nm-dispatcher}.conf --replace-fail \
# 'user="root"' 'user="networkmanager"'
@@ -48,7 +28,9 @@ in {
# allow the bus to owned by either root or networkmanager users
# use the group here, that way ordinary users can be elevated to control networkmanager
# (via e.g. `nmcli`)
for f in org.freedesktop.NetworkManager.conf nm-dispatcher.conf ; do
confs=(nm-dispatcher.conf)
confs+=(org.freedesktop.NetworkManager.conf)
for f in "''${confs[@]}" ; do
substitute $out/share/dbus-1/system.d/$f \
$out/share/dbus-1/system.d/networkmanager-$f \
--replace-fail 'user="root"' 'group="networkmanager"'
@@ -66,16 +48,30 @@ in {
serviceConfig.User = "networkmanager";
serviceConfig.Group = "networkmanager";
serviceConfig.AmbientCapabilities = [
"CAP_KILL" #< required, else `nmcli d disconnect blah` says "Unable to determine UID of the request"
"CAP_NET_ADMIN"
"CAP_NET_RAW"
"CAP_NET_BIND_SERVICE"
# "CAP_DAC_OVERRIDE"
# "CAP_SYS_MODULE"
# "CAP_AUDIT_WRITE" #< allow writing to the audit log (optional)
# "CAP_KILL"
];
serviceConfig.CapabilityBoundingSet = [
"CAP_KILL" #< required, else `nmcli d disconnect blah` says "Unable to determine UID of the request"
"CAP_NET_ADMIN"
"CAP_NET_RAW" #< required, else `libndp: ndp_sock_open: Failed to create ICMP6 socket.`
"CAP_NET_BIND_SERVICE" #< this *does* seem to be necessary, though i don't understand why. DHCP?
# "CAP_DAC_OVERRIDE"
# "CAP_SYS_MODULE"
# "CAP_AUDIT_WRITE" #< allow writing to the audit log (optional)
# "CAP_KILL"
];
serviceConfig.LockPersonality = true;
serviceConfig.NoNewPrivileges = true;
serviceConfig.MemoryDenyWriteExecute = true;
serviceConfig.PrivateDevices = true; # remount /dev with just the basics, syscall filter to block @raw-io
serviceConfig.PrivateIPC = true;
serviceConfig.PrivateTmp = true;
@@ -86,8 +82,11 @@ in {
serviceConfig.ProtectHostname = true; # probably not upstreamable: prevents changing hostname
serviceConfig.ProtectKernelLogs = true; # disable /proc/kmsg, /dev/kmsg
serviceConfig.ProtectKernelModules = true; # syscall filter to prevent module calls (probably not upstreamable: NM will want to load modules like `ppp`)
serviceConfig.ProtectKernelTunables = true; # but NM might need to write /proc/sys/net/...
# serviceConfig.ProtectKernelTunables = true; # causes errors/warnings when opening files in /proc/sys/net/...; also breaks IPv6 SLAAC / link-local address creation!
serviceConfig.ProtectProc = "invisible";
serviceConfig.ProcSubset = "all";
serviceConfig.ProtectSystem = "strict"; # makes read-only: all but /dev, /proc, /sys.
serviceConfig.RemoveIPC = true;
serviceConfig.RestrictAddressFamilies = [
"AF_INET"
"AF_INET6"
@@ -98,19 +97,25 @@ in {
# AF_BLUETOOTH ?
# AF_BRIDGE ?
];
serviceConfig.RestrictNamespaces = true;
serviceConfig.RestrictSUIDSGID = true;
serviceConfig.SystemCallArchitectures = "native"; # prevents e.g. aarch64 syscalls in the event that the kernel is multi-architecture.
serviceConfig.SystemCallFilter = [
"@system-service"
# TODO: restrict SystemCallFilter more aggressively
];
# TODO: restrict `DeviceAllow`
# from earlier `landlock` sandboxing, i know it needs these directories:
# - "/proc/net"
# - "/proc/sys/net"
# - "/run/NetworkManager"
# - "/run/systemd" # for trust-dns-nmhook
# - "/run/systemd" # for hickory-dns-nmhook
# - "/run/udev"
# - # "/run/wg-home.priv"
# - "/sys/class"
# - "/sys/devices"
# - "/var/lib/NetworkManager"
# - "/var/lib/trust-dns" #< for trust-dns-nmhook
# - "/var/lib/hickory-dns" #< for hickory-dns-nmhook
# - "/run/systemd"
};
@@ -122,12 +127,12 @@ in {
# fix NetworkManager-dispatcher to actually run as a daemon,
# and sandbox it a bit
systemd.services.NetworkManager-dispatcher = {
#VVV so that /var/lib/trust-dns will exist (the hook needs to write here).
# but this creates a cycle: trust-dns-localhost > network.target > NetworkManager-dispatcher > trust-dns-localhost.
#VVV so that /var/lib/hickory-dns will exist (the hook needs to write here).
# but this creates a cycle: hickory-dns-localhost > network.target > NetworkManager-dispatcher > hickory-dns-localhost.
# (seemingly) impossible to remove the network.target dep on NetworkManager-dispatcher.
# beffore would be to have the dispatcher not write trust-dns files
# but rather just its own, and create a .path unit which restarts trust-dns appropriately.
# after = [ "trust-dns-localhost.service" ];
# before would be to have the dispatcher not write hickory-dns files
# but rather just its own, and create a .path unit which restarts hickory-dns appropriately.
# after = [ "hickory-dns-localhost.service" ];
# serviceConfig.ExecStart = [
# "" # first blank line is to clear the upstream `ExecStart` field.
# "${cfg.package}/libexec/nm-dispatcher --persist" # --persist is needed for it to actually run as a daemon
@@ -135,7 +140,7 @@ in {
# serviceConfig.Restart = "always";
# serviceConfig.RestartSec = "1s";
# serviceConfig.DynamicUser = true; #< not possible, else we lose group perms (so can't write to `trust-dns`'s files in the nm hook)
# serviceConfig.DynamicUser = true; #< not possible, else we lose group perms (so can't write to `hickory-dns`'s files in the nm hook)
serviceConfig.User = "networkmanager"; # TODO: should arguably use `DynamicUser`
serviceConfig.Group = "networkmanager";
serviceConfig.LockPersonality = true;
@@ -151,7 +156,7 @@ in {
serviceConfig.ProtectKernelLogs = true; # disable /proc/kmsg, /dev/kmsg
serviceConfig.ProtectKernelModules = true; # syscall filter to prevent module calls
serviceConfig.ProtectKernelTunables = true;
serviceConfig.ProtectSystem = "full"; # makes read-only: /boot, /etc/, /usr. `strict` isn't possible due to trust-dns hook
serviceConfig.ProtectSystem = "full"; # makes read-only: /boot, /etc/, /usr. `strict` isn't possible due to hickory-dns hook
serviceConfig.RestrictAddressFamilies = [
"AF_UNIX" # required, probably for dbus or systemd connectivity
];
@@ -201,6 +206,7 @@ in {
};
networking.networkmanager.settings = {
# docs: `man 5 NetworkManager.conf`
# keyfile.path = where networkmanager should look for connection credentials
keyfile.path = "/var/lib/NetworkManager/system-connections";
@@ -212,18 +218,30 @@ in {
# main.dhcp = "internal"; #< default
# main.dns controls what to do when NM gets a DNS server via DHCP
# - "none" (populate /run/NetworkManager/resolv.conf with DHCP settings)
# - "internal" (?)
# - "systemd-resolved" (tell systemd-resolved about it, and point /run/NetworkManager/resolv.conf -> systemd)
# without this, systemd-resolved won't be able to resolve anything (because it has no upstream servers)
# - "default": NM manages /etc/resolv.conf itself.
# - "none": NM doesn't manage /etc/resolv.conf, but does populate /run/NetworkManager/resolv.conf with DHCP settings
# - "systemd-resolved": tell systemd-resolved about it, and point /run/NetworkManager/resolv.conf -> systemd
# - without this, systemd-resolved won't be able to resolve anything (because it has no upstream servers)
# - (empty): perform a best-guess for how to manage /etc/resolv.conf
# -> if /etc/resolv.conf is a symlink to systemd-resolved, then behaves as "systemd-resolved".
# -> else, behaves as "default".
# note that NM's resolv.conf isn't (necessarily) /etc/resolv.conf -- that is managed by nixos (via symlinking)
main.dns = if config.services.resolved.enable then
"systemd-resolved"
else if config.sane.services.trust-dns.enable && config.sane.services.trust-dns.asSystemResolver then
"none"
else
"internal"
;
main.dns = let
dns = if config.services.resolved.enable then
"systemd-resolved"
else if
(config.sane.services.hickory-dns.enable && config.sane.services.hickory-dns.asSystemResolver)
|| (config.services.unbound.enable && config.services.unbound.resolveLocalQueries)
|| config.services.bind.enable # bind config isn't easily inspectable; assume that it's acting as local resolver
then
"none"
else
# omitting the option instructs NM to do a "best guess".
# this is nearly equivalent to "default", however NM will do checks like "is /etc/resolv.conf a symlink to systemd-resolved", etc,
# to actually try to understand the environment.
null
;
in lib.mkIf (dns != null) dns;
main.systemd-resolved = false;
};
environment.etc."NetworkManager/system-connections".source = "/var/lib/NetworkManager/system-connections";
@@ -261,7 +279,7 @@ in {
users.users.networkmanager = {
isSystemUser = true;
group = "networkmanager";
extraGroups = [ "trust-dns" ];
extraGroups = [ "hickory-dns" ];
};
# there is, unfortunately, no proper interface by which to plumb wpa_supplicant into the NixOS service, except by overlay.

32
hosts/common/net/ntp.nix Normal file
View File

@@ -0,0 +1,32 @@
# NTP and DNS/DNSSEC have a chicken-and-egg issue:
# - NTP needs to resolve DNS to know how to query the servers (`0.nixos.pool.ntp.org`, etc)
# - DNS needs to have a semi-accurate clock to validate DNSSEC for resolutions
#
# nixos and systemd-timesyncd overcome this in the default installation by:
# - setting `SYSTEMD_NSS_RESOLVE_VALIDATE=0` in the systemd-timesyncd.service unit file
# - systemd nss module which plumbs that to systemd-resolved
# that ONLY WORKS if using systemd-resolved.
#
# my alternative fix here is to hardcode a list of fallback NTP IP addresses, to use when DNS resolution of the primaries fails.
#
# lastly, the clock can be manually set:
# - `systemctl stop systemd-timesyncd`
# - `sudo timedatectl --adjust-system-clock set-time '2024-01-01 00:00:01 UTC'`
# - `systemctl start systemd-timesyncd`
#
# XXX(2024-12-03): i fixed the NTP-DNS circularity by exempting `pool.ntp.org` from DNSSEC validation in unbound conf
{ config, ... }:
{
# services.timesyncd.servers = config.networking.timeServers;
# services.timesyncd.fallbackServers = [
# "129.6.15.28" # time-a-g.nist.gov
# "132.163.97.1" # time-a-wwv.nist.gov
# "132.163.96.1" # time-a-b.nist.gov
# "128.138.140.44" # utcnist.colorado.edu
# "162.159.200.1" # time.cloudflare.com
# ];
# more feature-complete NTP implementations exist, like `chrony`, should i ever wish to also be a NTP **server**:
# services.chrony.enable = true;
# services.chrony.enableNTS = true;
}

View File

@@ -7,7 +7,8 @@
];
networking.firewall.extraCommands = with pkgs; ''
# after an outgoing SSDP query to the multicast address, open FW for incoming responses.
# after an outgoing SSDP query to the multicast address (dest port=1900, src port=any),
# open FW for incoming responses (i.e. accept any packet, so long as it's sent to the port we sent from).
# necessary for anything DLNA, especially go2tv
# source: <https://serverfault.com/a/911286>
# context: <https://github.com/alexballas/go2tv/issues/72>
@@ -16,5 +17,10 @@
${ipset}/bin/ipset create -! upnp hash:ip,port timeout 10
${iptables}/bin/iptables -A OUTPUT -d 239.255.255.250/32 -p udp -m udp --dport 1900 -j SET --add-set upnp src,src --exist
${iptables}/bin/iptables -A INPUT -p udp -m set --match-set upnp dst,dst -j ACCEPT
# IPv6 ruleset. ff02::/16 means *any* link-local multicast group (so this is probably more broad than it needs to be)
${ipset}/bin/ipset create -! upnp6 hash:ip,port timeout 10 family inet6
${iptables}/bin/ip6tables -A OUTPUT -d ff02::/16 -p udp -m udp --dport 1900 -j SET --add-set upnp6 src,src --exist
${iptables}/bin/ip6tables -A INPUT -p udp -m set --match-set upnp6 dst,dst -j ACCEPT
'';
}

View File

@@ -5,7 +5,7 @@
# - generate config @ OVPN.com
# - copy the Address, PublicKey, Endpoint from OVPN's config
{ config, lib, pkgs, ... }:
{ config, lib, ... }:
let
# N.B.: OVPN issues each key (i.e. device) a different IP (addrV4), and requires you use it.
# the IP it issues can be used to connect to any of their VPNs.

View File

@@ -55,7 +55,17 @@
# this is actually a no-op, and the real action happens in assigning `nix.settings.nix-path`.
nix.nixPath = (lib.optionals (config.sane.maxBuildCost >= 2) [
"nixpkgs=${pkgs.path}"
]) ++ [
]) ++ (let
# XXX(2024-09-02): nix 2.24.4 errors when nixpkgs-overlays includes a symlink component:
# "error: path '/home/colin/dev' is a symlink"
# apparently nix has to explicitly handle symlinks in every place it might encounter them,
# so the fixes inside nix for this are manual and fragile. dereference it ourselves:
dev = if (config.sane.fs."/home/colin/dev" or {}) != {} then
config.sane.fs."/home/colin/dev".symlink.target
else
"/home/colin/dev"
;
in [
# note the import starts at repo root: this allows `./overlay/default.nix` to access the stuff at the root
# "nixpkgs-overlays=${../../..}/hosts/common/nix-path/overlay"
# as long as my system itself doesn't rely on NIXPKGS at runtime, we can point the overlays to git
@@ -64,8 +74,9 @@
# it's an impurity that touches way more than i need and tends to cause hard-to-debug eval issues
# when it goes wrong. should i port my `nix-shell` scripts to something more tailored to my uses
# and then delete `nixpkgs-overlays`?
"nixpkgs-overlays=/home/colin/dev/nixos/integrations/nixpkgs/nixpkgs-overlays.nix"
];
# "nixpkgs-overlays=/home/colin/dev/nixos/integrations/nixpkgs/nixpkgs-overlays.nix"
"nixpkgs-overlays=${dev}/nixos/integrations/nixpkgs/nixpkgs-overlays.nix"
]);
# ensure new deployments have a source of this repo with which they can bootstrap.
# this however changes on every commit and can be slow to copy for e.g. `moby`.

View File

@@ -6,11 +6,15 @@ let
# nixpkgs' pam hardcodes unix_chkpwd path to the /run/wrappers one,
# but i don't want the wrapper, so undo that.
# ideally i would patch this via an overlay, but pam is in the bootstrap so that forces a full rebuild.
postPatch = (if upstream.postPatch != null then upstream.postPatch else "") + ''
substituteInPlace modules/pam_unix/Makefile.am --replace-fail \
# see: <repo:nixos/nixpkgs:pkgs/by-name/li/linux-pam/package.nix>
postPatch = (upstream.postPatch or "") + ''
substituteInPlace modules/module-meson.build --replace-fail \
"/run/wrappers/bin/unix_chkpwd" "$out/bin/unix_chkpwd"
'';
});
# `mkDefault` is `mkOverride 1000`.
# `mkOverrideDefault` will override `mkDefault` values, but not ordinary values.
mkOverrideDefault = lib.mkOverride 900;
in
{
# remove a few items from /run/wrappers we don't need.
@@ -59,7 +63,7 @@ in
"userdel"
"usermod"
# from <repo:nixos/nixpkgs:nixos/modules/system/boot/systemd/user.nix>
"systemd-user" #< N.B.: this causes the `systemd --user` service manager to not be started!
# "systemd-user" #< N.B.: this causes the `systemd --user` service manager to fail 224/PAM!
]));
};
@@ -106,6 +110,7 @@ in
conveniencePackages = [
config.boot.kernelPackages.cpupower # <repo:nixos/nixpkgs:nixos/modules/tasks/cpu-freq.nix> places it on PATH for convenience if powerManagement.cpuFreqGovernor is set
pkgs.kbd # <repo:nixos/nixpkgs:nixos/modules/config/console.nix> places it on PATH as part of console/virtual TTYs, but probably not needed unless you want to set console fonts
pkgs.nixos-firewall-tool # <repo:nixos/nixpkgs:nixos/modules/services/networking/firewall.nix> for end-user management of the firewall? cool but doesn't cross-compile
];
in lib.filter (p: ! builtins.elem p (requiredPackages ++ conveniencePackages));
};
@@ -134,11 +139,20 @@ in
environment.variables.NIXPKGS_CONFIG = lib.mkForce "";
# XDG_CONFIG_DIRS defaults to "/etc/xdg", which doesn't exist.
# in practice, pam appends the values i want to XDG_CONFIG_DIRS, though this approach causes an extra leading `:`
environment.sessionVariables.XDG_CONFIG_DIRS = lib.mkForce [];
# XXX(2025-06-06): some nixpkgs' systemd services actually depend on the default XDG_CONFIG_DIRS=/etc/xdg!
# specifically: `services.bitmagnet`
# environment.sessionVariables.XDG_CONFIG_DIRS = lib.mkForce [];
# XCURSOR_PATH: defaults to `[ "$HOME/.icons" "$HOME/.local/share/icons" ]`, neither of which i use, just adding noise.
# see: <repo:nixos/nixpkgs:nixos/modules/config/xdg/icons.nix>
environment.sessionVariables.XCURSOR_PATH = lib.mkForce [];
environment.shellAliases = {
# unset default aliases; see <repo:nixos/nixpkgs:nixos/modules/config/shells-environment.nix>
ls = mkOverrideDefault null;
ll = mkOverrideDefault null;
l = mkOverrideDefault null;
};
# disable nixos' portal module, otherwise /share/applications gets linked into the system and complicates things (sandboxing).
# instead, i manage portals myself via the sane.programs API (e.g. sane.programs.xdg-desktop-portal).
xdg.portal.enable = false;
@@ -151,7 +165,6 @@ in
# nix.channel.enable: populates `/nix/var/nix/profiles/per-user/root/channels`, `/root/.nix-channels`, `$HOME/.nix-defexpr/channels`
# <repo:nixos/nixpkgs:nixos/modules/config/nix-channel.nix>
# TODO: may want to recreate NIX_PATH, nix.settings.nix-path
nix.channel.enable = false;
# environment.stub-ld: populate /lib/ld-linux.so with an object that unconditionally errors on launch,

View File

@@ -1,10 +1,12 @@
# Terminal UI mail client
{ ... }:
{ pkgs, ... }:
{
sane.programs.aerc = {
sandbox.method = "bwrap";
sandbox.wrapperType = "inplace"; #< /share/aerc/aerc.conf refers to other /share files by absolute path
packageUnwrapped = pkgs.aerc.override {
withNotmuch = false; #< not used; regularly fails to build
};
sandbox.wrapperType = "inplace"; #< /share/aerc/aerc.conf mentions (in comments) other (non-sandboxed) /share files by absolute path
sandbox.net = "clearnet";
secrets.".config/aerc/accounts.conf" = ../../../secrets/common/aerc_accounts.conf.bin;
mime.associations."x-scheme-handler/mailto" = "aerc.desktop";

View File

@@ -26,6 +26,9 @@ in
[font]
size = ${builtins.toString cfg.config.fontSize}
[cursor.style]
blinking = "Always"
[[keyboard.bindings]]
mods = "Control"
key = "N"

View File

@@ -0,0 +1,63 @@
# alpaca: ollama llm client
# - super simple, easy UI
#
# shortcomings (as of 6.1.7, 2025-07-23):
# - doesn't seem to do any prompt tuning;
# inherits all the pathologies of the underlying model (e.g. makes up citations)
#
# it creates a config dir, `~/.config/com.jeffser.Alpaca`, but apparently empty
#
# TODO: configure ollama connection details statically
# - until then, on first run:
# - select the non-"managed" ollama option.
# - connect to http://10.0.10.22:11434
# TODO: update the nix package 6.1.7 -> 7.5.2
# - i.e. review <https://github.com/NixOS/nixpkgs/pull/420698>
{ pkgs, ... }:
{
sane.programs.alpaca = {
packageUnwrapped = (pkgs.alpaca.override {
# ollama is only added to `PATH`; since i'm using it via http, remove it here.
# fixes cross compilation & simplifies closure.
ollama = null;
python3Packages = pkgs.python3Packages // {
# XXX(2025-07-23): does not cross compile (markitdown -> pydub -> ... -> opencv)
markitdown = null;
};
}).overrideAttrs (upstream: {
postPatch = (upstream.postPatch or "") + ''
# for nulled dependencies (above), patch so the application only errors
# at runtime, on first attempted use.
substituteInPlace src/widgets/attachments.py \
--replace-fail 'from markitdown' '# from markitdown'
'';
});
buildCost = 2; #< liable to break cross during updates; not important enough to block deploy over
sandbox.net = "all"; # maybe only needs wireguard, actually
sandbox.whitelistWayland = true;
sandbox.mesaCacheDir = ".cache/com.jeffser.Alpaca/mesa";
sandbox.whitelistDbus.user.own = [ "com.jeffser.Alpaca" ];
sandbox.whitelistPortal = [
"OpenURI"
];
sandbox.whitelistSendNotifications = true;
persist.byStore.ephemeral = [
".cache/com.jeffser.Alpaca" #< ?
];
persist.byStore.private = [
# alpaca.db: sqlite3 database with the following tables:
# - attachment
# - chat
# - instances
# - message
# - model_preferences
# - preferences
# - tool_parameters
".local/share/com.jeffser.Alpaca"
];
};
}

View File

@@ -1,46 +1,30 @@
{ config, lib, pkgs, ... }:
let
cfg = config.sane.programs.alsa-ucm-conf;
deprioritize = pkg: pkg.overrideAttrs (base: {
meta = (base.meta or {}) // {
# let the other alsa ucm packages override configs from this one
priority = ((base.meta or {}).priority or 10) + 20;
};
});
alsa-ucm-latest = pkgs.alsa-ucm-conf.overrideAttrs (upstream: rec {
# XXX(2025-07-18): see <https://github.com/NixOS/nixpkgs/pull/414818>
version = "1.2.14";
src = lib.warnIf (lib.versionAtLeast upstream.version "1.2.14") "upstream alsa-ucm-conf is up to date with my own: remove override?" pkgs.fetchurl {
url = "mirror://alsa/lib/alsa-ucm-conf-${version}.tar.bz2";
hash = "sha256-MumAn1ktkrl4qhAy41KTwzuNDx7Edfk3Aiw+6aMGnCE=";
};
installPhase = lib.replaceStrings
[ ''for file in "''${files[@]}"'' ]
[ ''for file in ucm2/common/ctl/led.conf'' ]
upstream.installPhase
;
});
in
{
sane.programs.alsa-ucm-conf = {
configOption = with lib; mkOption {
default = {};
type = types.submodule {
options.preferEarpiece = mkOption {
type = types.bool;
default = true;
};
};
};
# upstream alsa ships with PinePhone audio configs, but they don't actually produce sound.
# - still true as of 2024-05-26
# - see: <https://github.com/alsa-project/alsa-ucm-conf/pull/134>
#
# we can substitute working UCM conf in two ways:
# 1. nixpkgs' override for the `alsa-ucm-conf` package
# - that forces a rebuild of ~500 packages (including webkitgtk).
# 2. set ALSA_CONFIG_UCM2 = /path/to/ucm2 in the relevant places
# - e.g. pulsewire service.
# - easy to miss places, though.
#
# alsa-ucm-pinephone-manjaro (2024-05-26):
# - headphones work
# - "internal earpiece" works
# - "internal speaker" is silent (maybe hardware issue)
# - 3.5mm connection is flapping when playing to my car, which eventually breaks audio and requires restarting wireplumber
# packageUnwrapped = pkgs.alsa-ucm-pinephone-manjaro.override {
# inherit (cfg.config) preferEarpiece;
# };
# alsa-ucm-pinephone-pmos (2024-05-26):
# - headphones work
# - "internal earpiece" works
# - "internal speaker" is silent (maybe hardware issue)
packageUnwrapped = pkgs.alsa-ucm-pinephone-pmos.override {
inherit (cfg.config) preferEarpiece;
};
packageUnwrapped = deprioritize pkgs.alsa-ucm-conf;
# packageUnwrapped = deprioritize alsa-ucm-latest;
sandbox.enable = false; #< only provides $out/share/alsa
# alsa-lib package only looks in its $out/share/alsa to find runtime config data, by default.
@@ -48,6 +32,8 @@ in
# this is particularly needed by wireplumber;
# also *maybe* pipewire and pipewire-pulse.
# taken from <repo:nixos/mobile-nixos:modules/quirks/audio.nix>
# the other option is to `override` pkgs.alsa-ucm-conf,
# but that triggers 500+ rebuilds
env.ALSA_CONFIG_UCM2 = "/run/current-system/sw/share/alsa/ucm2";
enableFor.system = lib.mkIf (builtins.any (en: en) (builtins.attrValues cfg.enableFor.user)) true;

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