Compare commits

...

1993 Commits

Author SHA1 Message Date
b50ee5dcea WIP: sxmo: port to systemd 2023-10-08 17:12:53 +00:00
aaa8424c9e wowlan: document another failure 2023-10-08 17:12:34 +00:00
65123aa963 linux-megous: revert LPS patch until i know its really an improvement 2023-10-08 17:12:09 +00:00
97d14f4c2c sxmo: revert the sxmo_log patch: tee is good enough 2023-10-08 17:11:10 +00:00
3e7fc56c86 sxmo: suspend: dump wowlan_last_wake_reason on wakeup 2023-10-08 04:20:52 +00:00
346ca57c93 sxmo: simplify suspend hook and cap suspend time to just 5min 2023-10-08 04:16:37 +00:00
47e23c1ff3 sxmo: inline the sxmo_suspend.sh script
this is exactly how it presently appears upstream (less shebang/comment changes)
2023-10-08 01:58:04 +00:00
b6d2fbdf6d sxmo-utils-latest: 2023-09-22 -> 2023-10-05 2023-10-08 01:45:11 +00:00
cf553b1386 wowlan: more documentation 2023-10-08 00:00:26 +00:00
e40cbaf1cf wowlan: document more about disconnections detection 2023-10-07 21:51:33 +00:00
19b8c0c923 wowlan: document known issues 2023-10-07 21:29:55 +00:00
22e9a48edc gpodder-adaptive: 3.11.2+1 -> 3.11.3+1 2023-10-07 21:29:36 +00:00
a6b1c23e2b remove no-longer-needed qemu override 2023-10-07 21:10:29 +00:00
4a498ef1a9 dino: docs: leave myself a TODO about niceness/priority 2023-10-07 08:27:35 +00:00
4909127ec7 nixpkgs: 2023-10-01 -> 2023-10-03
```
• Updated input 'nixpkgs-unpatched':
    'github:nixos/nixpkgs/fdd898f8f79e8d2f99ed2ab6b3751811ef683242' (2023-10-01)
  → 'github:nixos/nixpkgs/81e8f48ebdecf07aab321182011b067aafc78896' (2023-10-03)
```
2023-10-07 08:24:13 +00:00
7a75cad65f Dino: bump input latency to 20ms 2023-10-07 08:09:50 +00:00
168fcce157 stepmania: configure directories 2023-10-07 05:50:58 +00:00
03d3ea4965 moby: ship the geoclue where-am-i helper on PATH 2023-10-07 04:34:15 +00:00
e5125065d6 eg25-control: add a timeout to how long a power-on can take 2023-10-07 04:27:14 +00:00
bc3ad7dfa5 moby: gps: restrict geoclue to only my user 2023-10-07 04:27:14 +00:00
2097c3ad77 moby: gps: document some findings 2023-10-07 04:25:44 +00:00
56838a4867 swaync: don't show GPS on non-gps-enabled devices (i.e. desktop/laptop) 2023-10-07 04:14:42 +00:00
d35fe126e3 doc: dino: document findings in adjusting Dino mic buffer 2023-10-07 01:30:45 +00:00
a6ea5da7a1 moby: disable legacy PulseAudio stuff 2023-10-07 01:27:16 +00:00
98a6671e95 moby: decrease the amount of samples Dino drops while in a call 2023-10-07 00:58:11 +00:00
243a4c6f0d moby: gps: document some maps programs 2023-10-07 00:21:40 +00:00
e84be3a7b2 sxmo: link all default hooks into user dir 2023-10-07 00:21:13 +00:00
5fdd6881a0 sxmo-utils: update Dino suspend blocker patch 2023-10-07 00:20:49 +00:00
67192d89a9 sxmo-utils: suspend: block if Dino is in a call 2023-10-06 20:42:49 +00:00
b6c8b1948b bypass-paywalls-clean: don't show options on first launch
this is apparently a thing firefox does when it sees the `options_ui`
key in manifest.json?
2023-10-05 19:02:51 +00:00
3a71d26638 nixpkgs: 2023-09-29 -> 2023-10-01, sops-nix, uninsane-dot-org
```
• Updated input 'nixpkgs-unpatched':
    'github:nixos/nixpkgs/f5892ddac112a1e9b3612c39af1b72987ee5783a' (2023-09-29)
  → 'github:nixos/nixpkgs/fdd898f8f79e8d2f99ed2ab6b3751811ef683242' (2023-10-01)
• Updated input 'sops-nix':
    'github:Mic92/sops-nix/2f375ed8702b0d8ee2430885059d5e7975e38f78' (2023-09-21)
  → 'github:Mic92/sops-nix/746c7fa1a64c1671a4bf287737c27fdc7101c4c2' (2023-10-03)
• Updated input 'sops-nix/nixpkgs-stable':
    'github:NixOS/nixpkgs/596611941a74be176b98aeba9328aa9d01b8b322' (2023-09-16)
  → 'github:NixOS/nixpkgs/dbe90e63a36762f1fbde546e26a84af774a32455' (2023-10-01)
• Updated input 'uninsane-dot-org':
    'git+https://git.uninsane.org/colin/uninsane?ref=refs/heads/master&rev=6f06c3a2ecf36ba7f5a4845b1d30a5d9894ca76c' (2023-09-27)
  → 'git+https://git.uninsane.org/colin/uninsane?ref=refs/heads/master&rev=1f588493031168d92a1e60705f26aaf4b2cdc07e' (2023-10-03)
```
2023-10-05 08:06:08 +00:00
a586611aa0 docs: moby: gps: link to geoclue/gnome-maps support channels 2023-10-05 08:05:35 +00:00
d7120a14f4 moby: gps: fixup geoclue notes 2023-10-04 05:36:22 +00:00
7db8dabf8f theming: ship HighContrast icon theme as default
current gnome.adwaita-icon-theme doesn't generate all icons when cross-compiled

this may be fixed in GNOME 45.

until then, HighContrast gets us *most* icons
2023-10-04 01:01:29 +00:00
d89287af11 switch icon theme to Pop 2023-10-03 20:21:20 +00:00
b14daac0f8 komikku: 1.23.0 -> 1.24.2 2023-10-03 20:11:19 +00:00
f65aaf8852 gtk: add a bunch more icon theme options 2023-10-03 20:10:09 +00:00
5a84c9a585 fractal-nixified: plumb an "optimize" argument to toggle between slow and fast build 2023-10-03 16:31:28 +00:00
464fca9679 eg25-control: actually, dont dump /dev/ttyUSB1 2023-10-03 01:13:37 +00:00
6c6e1ee84b moby: add gps-related services to the "dialout" group 2023-10-03 01:01:06 +00:00
41d8c6681f sway: disable --debug flag 2023-10-03 00:47:33 +00:00
4dbb656a34 eg25-control: dump fix data as part of --dump-debug-info 2023-10-03 00:40:32 +00:00
8c4caab995 linux-megous: 6.4.15 -> 6.5.3 2023-10-03 00:29:42 +00:00
83586ce483 trust-dns: cleanup some typos 2023-10-02 22:33:54 +00:00
e20c4d01e6 trust-dns: fix missing "mkdir" during service startup 2023-10-02 22:12:09 +00:00
01cad7b702 trust-dns: perform more specialization via structured config instead of sed 2023-10-02 22:02:46 +00:00
48715546e2 trust-dns: split into separate (restartable) services 2023-10-02 21:30:51 +00:00
00b59f6985 firefox-extensions: update ublacklist, sponsorblock, ether-metamask 2023-10-02 07:49:21 +00:00
d82d3e55cb firefox-extensions.bypass-paywalls-clean: 3.3.5.0 -> 3.3.6.0 2023-10-02 07:48:01 +00:00
f2c3f9fe52 nixpkgs 2023-09-27 -> 2023-09-29; mobile-nixos -> 2023-10-01
```
• Updated input 'mobile-nixos':
    'github:nixos/mobile-nixos/fa12ebaa98ce18e30cbdaf58a71b9ec56984e38f' (2023-09-19)
  → 'github:nixos/mobile-nixos/7cee346c3f8e73b25b1cfbf7a086a7652c11e0f3' (2023-10-01)
• Updated input 'nixpkgs-unpatched':
    'github:nixos/nixpkgs/8a86b98f0ba1c405358f1b71ff8b5e1d317f5db2' (2023-09-27)
  → 'github:nixos/nixpkgs/f5892ddac112a1e9b3612c39af1b72987ee5783a' (2023-09-29)
```
2023-10-02 07:36:14 +00:00
2de6c01262 fractal: launch on boot 2023-10-02 06:12:24 +00:00
bbdc6f3aa9 eg25-control: treat some GPS config failures as non-fatal 2023-10-02 06:12:12 +00:00
16ee30b696 sxmo-utils: kill-window patch: fetch from mail list 2023-10-02 05:39:58 +00:00
9c341c87d8 gnome-maps: fix missing gapplication runtime dep 2023-10-02 05:30:09 +00:00
67a9134130 moby: switch default browser back to epiphany 2023-10-02 05:10:00 +00:00
fe6d2f04c5 sxmo-utils: add a Kill Window option to the wmmenu 2023-10-02 04:53:00 +00:00
d138c99c61 sxmo-utils: fix j4-dmenu-desktop not found when trying to view all apps 2023-10-02 04:37:50 +00:00
290d6a8da5 gnome-maps: ship on lappy/desko/moby 2023-10-02 04:07:21 +00:00
09ed98c973 cross: support gnome-maps 2023-10-02 04:06:34 +00:00
bc7dee6a80 swaync: enable audible notifications for Fractal Matrix client 2023-10-02 03:48:20 +00:00
4c708baf63 remove Videos/servo-incomplete symlink 2023-10-02 03:23:44 +00:00
cc16fe85b0 fractal: ship the nixified build by default 2023-10-02 03:20:55 +00:00
7d63132c48 fractal-nixified: massively reduce build time (via unoptimized build) 2023-10-02 03:20:43 +00:00
5acd704ae7 docs: overlays/cross: mention cdylib fractal workaround 2023-10-01 22:43:14 +00:00
0c0948e8e1 fractal-nixified: tidy up 2023-10-01 22:40:56 +00:00
6283384522 fractal-nixified: sort dependencies 2023-10-01 22:19:37 +00:00
b70fc6841f fractal-nixified: support cross compilation 2023-10-01 22:17:25 +00:00
97dd84ed71 tuba: document an alternative fix 2023-10-01 18:47:47 +00:00
7a6981253b fractal-nixified: remove some unecessary dependencies 2023-10-01 05:02:50 +00:00
9e78ec221b fractal-nixified: avoid double meson build 2023-10-01 04:42:29 +00:00
4a8d7ca1c3 alsa-ucm-conf-sane: route audio to the internal speaker by default 2023-10-01 04:26:54 +00:00
b9f31c6f4b devPkgs: add cargo, rustc 2023-10-01 03:47:45 +00:00
cd3bed023a fractal-nixified: it builds! 2023-10-01 03:15:53 +00:00
0ad6b2bc1b fractal-nixified: get gst-plugin-gtk4 to cross build 2023-09-30 23:42:01 +00:00
54b0c1bfcf fractal-nixified: get pipewire to compile
that's all the dependencies now, except for the special case of gst-plugin-gtk4 on cross
2023-09-30 21:07:20 +00:00
285dd6a1c9 fractal-nixified: get libshumate-sys and sourceview5-sys to compile 2023-09-30 20:28:31 +00:00
1c5e2843a1 fractal-nixified: get libspa crate to build 2023-09-30 20:19:28 +00:00
ce9b30767f fractal-nixified: add a bunch of crateOverrides to get *closer* to a complete build 2023-09-30 07:07:40 +00:00
d26fa5bec1 fractal-nixified: pin serde_derive at 1.0.171 to overcome build failure
https://discourse.nixos.org/t/errors-using-serde-derive-with-buildrustcrate/31398
2023-09-30 04:44:49 +00:00
832ca52ccf fractal-nixified: regenerate with more recent crate2nix 2023-09-30 03:57:03 +00:00
c70176bfb2 WIP: fractal: build with crate2nix 2023-09-30 02:57:52 +00:00
cb3cf57465 cargo: when enabled, persist ~/.cargo 2023-09-30 02:57:30 +00:00
dfaeb7b7de sxmo_hook_inputhandler: document proposed input changes 2023-09-30 01:42:45 +00:00
d3818b5e44 fractal: enable, and persist the right directories 2023-09-29 22:08:13 +00:00
5b8850404b fractal-latest: support cross compilation (this method takes about 60minutes. 45m for deps and 15m for fractal itself) 2023-09-29 21:42:36 +00:00
38fa73cfb7 feeds: unsubscribe from Michael Malice 2023-09-29 18:25:08 +00:00
43fc050eed feeds: subscribe to FasterThanLime 2023-09-29 18:23:14 +00:00
f3423d45bd fractal-latest: reduce build time from 2hr+ to 5 minutes 2023-09-29 18:21:59 +00:00
56866c1ac1 servo: fix lemmy-ui build 2023-09-29 15:39:27 +00:00
99ea6a59c5 remove unused GUI apps: cantata, gajim, dconf-editor, obsidian, rhythmbox 2023-09-29 02:04:06 +00:00
eb5ebf94a7 nixpkgs: 2023-09-25 -> 2023-09-27; uninsane-dot-org -> 2023-09-27
```
• Updated input 'nixpkgs-unpatched':
    'github:nixos/nixpkgs/6500b4580c2a1f3d0f980d32d285739d8e156d92' (2023-09-25)
  → 'github:nixos/nixpkgs/8a86b98f0ba1c405358f1b71ff8b5e1d317f5db2' (2023-09-27)
• Updated input 'uninsane-dot-org':
    'git+https://git.uninsane.org/colin/uninsane?ref=refs/heads/master&rev=9952b69003eb7397cadf1df0b5d696cea1833248' (2023-09-20)
  → 'git+https://git.uninsane.org/colin/uninsane?ref=refs/heads/master&rev=6f06c3a2ecf36ba7f5a4845b1d30a5d9894ca76c' (2023-09-27)
```
2023-09-28 22:26:15 +00:00
bdf049d9e4 moby: wowlan: also wake on ARP requests (experimental) 2023-09-28 20:55:18 +00:00
9205e076c5 modules/wowlan: move options to "ipv4" attrset for future protocol expansion 2023-09-28 20:09:04 +00:00
60e5f6b41b fractal-latest: 2023-07-28 -> unstable-2023-09-14 2023-09-28 06:52:56 +00:00
3aa85c96b2 sxmo_hook_rotate.sh: fix bash syntax error 2023-09-28 00:18:43 +00:00
2f71d80c38 firefox-extensions: repeat myself less when wrapping 2023-09-27 23:25:07 +00:00
558a9f4cd0 todo.md: sync 2023-09-27 22:54:04 +00:00
9a6915a0ed firefox-extensions: deprecate "fetchAddon" 2023-09-27 22:30:28 +00:00
d0feca0d57 firefox-extensions: ether-metamask: port to fetchVersionedAddon 2023-09-27 22:26:55 +00:00
36e9f0bcde firefox-extensions: i2p-in-private-browsing: port to fetchVersionedAddon 2023-09-27 22:24:46 +00:00
a17fc1c76e firefox-extensions.ublock-origin: 1.52.0 -> 1.52.3b0 2023-09-27 22:22:14 +00:00
84d8fb5339 firefox-extensions: ublock-origin: port to fetchVersionedAddon 2023-09-27 22:21:42 +00:00
2b9373e0fc firefox-extensions: sidebery: port to fetchVersionedAddon 2023-09-27 22:17:02 +00:00
2992d0db6b firefox-extensions: ublacklist: port to github release fetcher 2023-09-27 22:13:43 +00:00
71b70712f8 firefox-extensions: factor out the github addon fetcher 2023-09-27 22:06:38 +00:00
10c7fc8e91 sxmo: exit fullscreen on screen rotation 2023-09-27 21:42:55 +00:00
48971bb237 sponsorblock: 5.4.19 -> 5.4.21 2023-09-27 19:10:14 +00:00
387b49a8b5 flake.nix: support list-type updateScripts (e.g. nix-update-script {}) 2023-09-27 19:10:14 +00:00
bc9bacb08f sponsorblock: fetch from github instead of Mozilla store 2023-09-27 19:10:14 +00:00
d44cf620c1 firefox-extensions: remove completed TODO 2023-09-27 18:48:16 +00:00
14cef8eb6c bypass-paywalls-clean: 3.3.4.0 -> 3.3.5.0 2023-09-27 18:40:25 +00:00
0bbe3e14c1 flake: show flake targets as part of "help" 2023-09-27 18:38:06 +00:00
6df63d825a sane-bt-search: clean up the jackett URLs 2023-09-27 18:34:04 +00:00
10e6436c34 sane-bt-add: accept https:// urls and extract actual torrents from them 2023-09-27 18:34:04 +00:00
aa3ee802d2 nixpkgs: 2023-09-22 -> 2023-09-25
```
• Updated input 'nixpkgs-unpatched':
    'github:nixos/nixpkgs/e35dcc04a3853da485a396bdd332217d0ac9054f' (2023-09-22)
  → 'github:nixos/nixpkgs/6500b4580c2a1f3d0f980d32d285739d8e156d92' (2023-09-25)
```
2023-09-27 18:34:04 +00:00
9a16b1cda7 ntfy: add a lengthy proxy_read_timeout to prevent hangups 2023-09-27 18:25:36 +00:00
ebbef901c1 wowlan: document VPN shortcomings 2023-09-27 01:32:50 +00:00
1ef203ee07 wowlan: docs: caveats 2023-09-27 01:30:06 +00:00
ca645ed23d wowlan: remove the version/ip header length match 2023-09-27 01:26:51 +00:00
742ed50960 moby: configure wake-on-lan 2023-09-27 01:04:53 +00:00
a60af4990a sway: hide window bar when only one window on workspace 2023-09-26 20:36:30 +00:00
d2890ecbba ntfy-sh: dont autostart except on moby
it's easier to troubleshoot when there's only one subscriber...
2023-09-26 14:48:54 +00:00
36d8158414 zsh: alias annoying lsof/tcpdump defaults 2023-09-26 14:38:06 +00:00
642afd6f34 ntfy: subscribe to the non-443 port 2023-09-26 13:52:10 +00:00
fad9c8f483 ntfy: run on a non-443 port 2023-09-26 13:51:27 +00:00
40a8fc50d9 sxmo-utils: apply patch to launch apps via swaymsg exec 2023-09-26 00:15:28 +00:00
21838afc0d feeds: subscribe to turnoff.us 2023-09-25 23:09:56 +00:00
8821c4edd7 sxmo-timer: connect to swaync so that it alerts on completion 2023-09-25 20:56:22 +00:00
a265dd28dd ntfy-sh: configure auth, simplify proxying 2023-09-25 17:34:50 +00:00
14bc8a1732 ship a trivial service which subscribes to push notifications (ntfy-sh) 2023-09-25 16:56:41 +00:00
10dd18a42a flake: remove nix-serve
even though upstream issue remains open, i observe a successful build via the nix-serve cache
2023-09-25 14:37:58 +00:00
691f009656 clean up documentation 2023-09-25 13:35:50 +00:00
68f1af090e have nix flake .#check do both NUR and system builds 2023-09-25 13:09:02 +00:00
6412778b98 feeds: unsubscribe from The Register 2023-09-25 12:09:56 +00:00
de12a2200e feeds: add amosbbatto 2023-09-25 12:09:38 +00:00
2600d6223c tuba: fix FileDialog 2023-09-24 23:36:05 +00:00
1ed1d8403d tuba: ship a friendly alias 2023-09-24 21:38:20 +00:00
5e34d9e44d sane-scripts.sane-deadlines: fix missing sed dependency 2023-09-24 20:21:13 +00:00
4f49c86d73 sxmo-utils: separate the DWM and Sway dependencies; only ship those we need
also, remove mepo
2023-09-24 19:49:59 +00:00
74309f8fa4 sxmo: fix missing bin/ typo 2023-09-24 18:13:49 +00:00
699c4301b4 static-nix-shell: avoid wrapping when not necessary
i guess this would be a minor perf gain in places
2023-09-24 17:51:19 +00:00
c7c90a9fa3 sxmo-utils: doc: why we include xdg-user-dirs 2023-09-24 17:48:35 +00:00
e5d843b21f sxmo: add missing deps to custom hooks 2023-09-24 17:48:18 +00:00
3ab943ab0b phog: remove DesktopNames==null workaround 2023-09-24 17:24:29 +00:00
e8d2aeb3a6 phog: 0.1.3 -> 0.1.4 2023-09-24 17:16:01 +00:00
28220ea8b4 flake: plumb date/rev into built nixos system images 2023-09-24 15:30:12 +00:00
9f47a29b43 mpv: update watch_later dir
see: <https://github.com/mpv-player/mpv/pull/10838>
2023-09-24 13:15:45 +00:00
46bb39332f lemoa: add an updateScript 2023-09-24 13:02:57 +00:00
e8bf83274f flake: have update.pkgs not update the feeds by default 2023-09-24 12:36:17 +00:00
083bdad88f feeds: update metadata for all
this should fix a couple broken feeds whose URL changed, but most changes here are inconsequential
2023-09-24 12:25:04 +00:00
0e238ff2dd fix pkgs.feeds update scripts 2023-09-24 12:11:28 +00:00
d0cbfaed44 flake: add aliases for bulk package updating 2023-09-24 10:50:02 +00:00
791dc59ba2 flake: expose update script for every package that has one 2023-09-24 10:27:32 +00:00
457197f85b gpodder-adaptive: 3.11.1+1 -> 3.11.2+1 and add an updateScript 2023-09-24 08:16:19 +00:00
07ee54af3a nixpkgs: 2023-09-19 -> 2023-09-22
```
• Updated input 'nixpkgs-unpatched':
    'github:nixos/nixpkgs/5ba549eafcf3e33405e5f66decd1a72356632b96' (2023-09-19)
  → 'github:nixos/nixpkgs/e35dcc04a3853da485a396bdd332217d0ac9054f' (2023-09-22)
```
2023-09-24 07:40:06 +00:00
865777b7ba enable ntfy (and manually integrate with matrix) 2023-09-23 21:09:04 +00:00
7b38ec3f8f docs: irc: mention mnt-reform channel location 2023-09-23 11:20:45 +00:00
f8448d7d2f sxmo: fix sxmo_init ordering so my hooks are loaded and scale set properly 2023-09-23 11:20:20 +00:00
ba638c1533 sxmo-utils: 2023-09-09 -> 2023-09-22 2023-09-23 10:11:49 +00:00
130901d7f7 sxmo: fix inputhandler hook loic errors 2023-09-23 09:36:16 +00:00
07c3fd8941 sxmo: override the postwake handler 2023-09-23 09:17:21 +00:00
2d98bbf4d6 sxmo: ship a custom inputhandler 2023-09-23 09:13:26 +00:00
08acd9714f swaync: fix perms for jingle toggle 2023-09-22 23:10:50 +00:00
57c3abf2e1 cozy: disable reporting/telemetry 2023-09-22 22:51:05 +00:00
2f12fd8ae7 ejabberd: port config to structured nix attrs 2023-09-22 22:50:51 +00:00
69ab1c1b8f servo-vpn: resolve DNS through the VPN 2023-09-22 19:49:35 +00:00
a2f4dc0b6c nfs4 patch: fix so moby can still build 2023-09-22 19:48:51 +00:00
6d7ff7ea86 fix trust-dns to resolve when invoked from VPN 2023-09-22 18:54:12 +00:00
00d831e755 wg-home: fix DNS forwarding
ugh, this is a mess, but it seems to work
2023-09-22 14:36:56 +00:00
63d65a453c trust-dns: spin up a separate server to wg-home requests, also forwarding them to upstream 2023-09-22 12:36:48 +00:00
68e3bc932f bypass-paywalls-clean: 3.2.5.0 -> 3.3.4.0; lay the foundation for updateScripts in this repo
note that the hash produced by the updateScript wasn't actually correct
(failed once i attempted to build it). hmm.
2023-09-22 10:13:56 +00:00
6222998303 firefox-extensions: update all binary extensions 2023-09-22 09:45:24 +00:00
8d0678457e patch broken NFS mounting 2023-09-22 09:33:05 +00:00
c7c669b8d4 nixpkgs: 2023-09-17 -> 2023-09-19; sops-nix; uninsane-dot-org 2023-08-03 -> 2023-09-20
```
• Updated input 'nixpkgs-unpatched':
    'github:nixos/nixpkgs/970a59bd19eff3752ce552935687100c46e820a5' (2023-09-17)
  → 'github:nixos/nixpkgs/5ba549eafcf3e33405e5f66decd1a72356632b96' (2023-09-19)
• Updated input 'sops-nix':
    'github:Mic92/sops-nix/4356a5a0c12c9dc1b6bdde0631c7600d9377ed8b' (2023-09-19)
  → 'github:Mic92/sops-nix/2f375ed8702b0d8ee2430885059d5e7975e38f78' (2023-09-21)
• Updated input 'uninsane-dot-org':
    'git+https://git.uninsane.org/colin/uninsane?ref=refs/heads/master&rev=f4d91aa201b6e49af690f250d4786bd1d8b4dcfd' (2023-08-03)
  → 'git+https://git.uninsane.org/colin/uninsane?ref=refs/heads/master&rev=9952b69003eb7397cadf1df0b5d696cea1833248' (2023-09-20)
```
2023-09-21 20:59:56 +00:00
e28cf3ebb5 swaync: fix SIP/jingle indicators to use systemctl --user 2023-09-21 20:37:11 +00:00
4ea0256c56 swaync: ignore "Modem crashed!" notifications/warnings 2023-09-21 20:21:38 +00:00
bf52b65dd5 Dino: fix to workspace 1 2023-09-21 20:03:19 +00:00
6de9b87f16 swaync: add entry for SIP/jingle call receiving 2023-09-21 19:53:02 +00:00
2b48adfbef gnome-calls: don't auto-start 2023-09-21 19:44:11 +00:00
7f944ad4a1 dino: autostart (on moby) 2023-09-21 19:40:12 +00:00
50045432fa libkiwix: 12.0.0 -> 12.1.1 2023-09-20 09:41:18 +00:00
cd4b700962 wg-home: docs: link to Arch wiki on wireguard docs 2023-09-20 09:34:26 +00:00
b98934693c programs: ship binutils (for "strings") 2023-09-20 06:42:23 +00:00
e22fb7c6b7 nixpkgs: 2023-09-15 -> 2023-09-17; mobile-nixos; sops-nix
```
• Updated input 'mobile-nixos':
    'github:nixos/mobile-nixos/7564347ef8bc2b96c72abbfaf158e3fd1e47efd6' (2023-09-15)
  → 'github:nixos/mobile-nixos/fa12ebaa98ce18e30cbdaf58a71b9ec56984e38f' (2023-09-19)
• Updated input 'nixpkgs-unpatched':
    'github:nixos/nixpkgs/ace5093e36ab1e95cb9463863491bee90d5a4183' (2023-09-15)
  → 'github:nixos/nixpkgs/970a59bd19eff3752ce552935687100c46e820a5' (2023-09-17)
• Updated input 'sops-nix':
    'github:Mic92/sops-nix/ea208e55f8742fdcc0986b256bdfa8986f5e4415' (2023-09-12)
  → 'github:Mic92/sops-nix/4356a5a0c12c9dc1b6bdde0631c7600d9377ed8b' (2023-09-19)
• Updated input 'sops-nix/nixpkgs-stable':
    'github:NixOS/nixpkgs/5601118d39ca9105f8e7b39d4c221d3388c0419d' (2023-09-02)
  → 'github:NixOS/nixpkgs/596611941a74be176b98aeba9328aa9d01b8b322' (2023-09-16)
```
2023-09-19 16:43:30 +00:00
dfbe5c5210 swaync: add a button to toggle VPN 2023-09-19 16:25:17 +00:00
f3ed9a3452 sane-vpn: support "vpn-servo" 2023-09-19 16:09:56 +00:00
57e35eeab1 vpn-servo: allow coexistence with wg-home 2023-09-19 16:03:20 +00:00
e3e2af46a1 define a new "vpn-servo" which allows routing all traffic out of servo, via wireguard 2023-09-19 15:52:24 +00:00
3a30b891be sane-vpn-{up,down}: consolidate 2023-09-19 15:41:54 +00:00
b69424983f hosts.nix: split the data out of modules/ and into common/ 2023-09-19 15:32:31 +00:00
37313183f5 engrampa: fix eval error
note that the package doesn't actually build correctly. :s
2023-09-19 14:37:03 +00:00
86453b6873 todo.md: new item to prettify sane-bt-search 2023-09-19 14:23:32 +00:00
c1d62bdbc2 wg-quick: allow clients to contact the internet 2023-09-19 12:36:57 +00:00
bbe633ef2e wg-home: refactor: don't 'use' lib/builtins 2023-09-19 12:09:21 +00:00
201bfb922d WIP: wake-on-lan: use own patch since peetz0r doesnt apply
this patch might not actually be necessary
2023-09-19 11:40:15 +00:00
9d1ebd38ce wg-home: don't infer role from ip address, but set it explicitly 2023-09-19 11:38:51 +00:00
9dfcacf8a3 todo.md: add some apps to install on moby 2023-09-19 10:10:22 +00:00
247b272986 ship nm-connection-editor 2023-09-19 10:09:24 +00:00
072506c5d9 ship ethtool 2023-09-19 10:09:24 +00:00
05bbc5d18f moby: switch to linux-megous-firmware for firmware 2023-09-19 10:09:24 +00:00
e51ca61bfe rtl8723cs-firmware: leave note about mobile-nixos approach 2023-09-19 10:09:24 +00:00
d3ad280731 package megi's linux firmware 2023-09-19 10:09:24 +00:00
85b043af37 WIP: enable wake on wlan 2023-09-19 10:09:24 +00:00
0342594728 programs: ship iw 2023-09-19 10:09:24 +00:00
56e7484721 nixpatches: update g4music/font-manager hashes 2023-09-18 10:10:23 +00:00
cd61a530cb sxmo: fix multi-user.service -> multi-user.target typo 2023-09-17 08:44:31 +00:00
f4c0e06b62 docs: gnome-calls: mention ~/.cache/folks dir 2023-09-17 05:57:21 +00:00
b4d748d87f gnome-calls: run as daemon after log-on 2023-09-17 05:53:05 +00:00
107c07915e ship gnome-calls 2023-09-17 05:00:15 +00:00
f493f005a9 lappy: switch back to sway 2023-09-16 15:11:01 +00:00
fbafbd0d52 todo.md: new item for reducing phog closure 2023-09-16 15:01:49 +00:00
9215da61a3 todo.md: remove completed eg25-control items 2023-09-16 15:00:17 +00:00
61428a5c8b unify fonts across sway and sxmo 2023-09-16 14:59:12 +00:00
77906fb58b font-manager: re-enable 2023-09-16 12:44:31 +00:00
a79d021123 font-manager: build without webkit 2023-09-16 12:44:09 +00:00
d85f5d88cd docs: cross: fractal-next: leave notes about present failure mode 2023-09-16 12:04:31 +00:00
518d63c08d tokodon: remove
this is upstream now; my own build file was already a no-op
2023-09-16 09:23:08 +00:00
b254f0716b engrampa: add a warning to make sure i tend this once upstream updates 2023-09-16 09:21:57 +00:00
9e93a4cdce chatty-latest: unstable-2023-08-01 -> v0.8.0_rc0
this actually is an update, despite the dates (merge order/commit timestamps/timezones)
2023-09-16 09:21:36 +00:00
38f839fb60 servo: fix over-broad "passwordFile" fix 2023-09-16 08:42:05 +00:00
09cee559eb mpv: improve MIME priority; re-enable youtube support 2023-09-16 08:36:08 +00:00
f64af6675b p10k/powerlevel10k: remove (unused)
i use starship now
2023-09-16 08:33:02 +00:00
9d71a08841 kitty: remove configs (unused)
i use alacritty now
2023-09-16 08:26:39 +00:00
321cc62ca0 passwordFile -> hashedPasswordFile to fix deprecation warning 2023-09-16 08:17:48 +00:00
92bf5c3be2 fix g4music build 2023-09-16 08:15:00 +00:00
43db1fed84 nixpkgs: 2023-09-14 -> 2023-09-15
```
• Updated input 'mobile-nixos':
    'github:nixos/mobile-nixos/d25d3b87e7f300d8066e31d792337d9cd7ecd23b' (2023-09-15)
  → 'github:nixos/mobile-nixos/7564347ef8bc2b96c72abbfaf158e3fd1e47efd6' (2023-09-15)
• Updated input 'nixpkgs-unpatched':
    'github:nixos/nixpkgs/f2ea252d23ebc9a5336bf6a61e0644921f64e67c' (2023-09-14)
  → 'github:nixos/nixpkgs/ace5093e36ab1e95cb9463863491bee90d5a4183' (2023-09-15)
```
2023-09-16 08:15:00 +00:00
f81b76a975 nixpkgs: 2023-09-11 -> 2023-09-14; mobile-nixos -> 2023-09-15
```
• Updated input 'mobile-nixos':
    'github:nixos/mobile-nixos/d22c60e8d4d21f0197c1cac88c34dcc366b7a16c' (2023-09-10)
  → 'github:nixos/mobile-nixos/d25d3b87e7f300d8066e31d792337d9cd7ecd23b' (2023-09-15)
• Updated input 'nixpkgs-unpatched':
    'github:nixos/nixpkgs/3a2786eea085f040a66ecde1bc3ddc7099f6dbeb' (2023-09-11)
  → 'github:nixos/nixpkgs/f2ea252d23ebc9a5336bf6a61e0644921f64e67c' (2023-09-14)
```
2023-09-16 08:15:00 +00:00
81c16ec479 swaync/feedbackd: activate ringer on incoming dino call 2023-09-16 05:06:41 +00:00
254da7e17b swaync: document env vars 2023-09-16 02:55:36 +00:00
400739cd83 feedbackd: add debug logging 2023-09-16 02:55:23 +00:00
2f7655e1c1 eg25-control: don't auto-start GPS on boot
this also means we don't power the modem on boot

this is OK to do now that i have a toggle in swaync for GPS
2023-09-15 16:55:27 +00:00
c3a6943b7e swaync: replace feedbackd button with gps button 2023-09-15 16:51:43 +00:00
fdc37c9f53 swaync: add button to toggle feedbackd
this is just a proof of concept: will toggle GPS later
2023-09-15 16:09:28 +00:00
c73246d7c6 sane-bt-search: fix tracker typos 2023-09-15 11:14:29 +00:00
e03ae48ef6 docs: feedbackd: note about default.json 2023-09-15 10:44:29 +00:00
cd1cfdd5db swaync: fix to also proxy notifs from Purisms Chatty app 2023-09-15 10:35:30 +00:00
d87015836e swaync: integrate with feedbackd for notification sounds 2023-09-15 10:20:18 +00:00
71c01795f4 moby: eg25-control-freshen-agps: fix to actually run hourly 2023-09-15 07:35:05 +00:00
2291c89dbc moby: eg25-control: fixup perms & add service that DLs new agps data when stale 2023-09-15 04:47:12 +00:00
1546304b4e eg25-control: run as own user
its perms might still need adjustment so that it can control modem power and write to mmcli
2023-09-15 03:54:01 +00:00
a0e6efb409 eg25-control: better cache timestamp handling (just use os.stat) 2023-09-15 03:37:18 +00:00
bd18a6871c eg25-control: add --ensure-agps-cache operation 2023-09-15 03:33:00 +00:00
0f3f566d25 eg25-control: use fs timestamp when caching 2023-09-15 02:53:35 +00:00
92451d1e28 eg25-control: cache the location assistance data 2023-09-15 02:35:31 +00:00
a0c2ed38e6 eg25-control: allow finer-grained service control 2023-09-15 01:38:50 +00:00
649e5a2cab sway: persist pipewire/wireplumber audio volumes 2023-09-13 12:57:18 +00:00
f2e51ef742 todo.md: swaync: theme 2023-09-13 10:14:07 +00:00
cf4c27a74c swaynotificationcenter: support pulseaudio even on cross builds 2023-09-13 10:11:11 +00:00
4cff9f99cb alsa-ucm-conf-sane: reduce Internal Speaker playback priority 2023-09-13 09:35:01 +00:00
741264ec48 nixpkgs: 2023-09-08 -> 2023-09-11
```
• Updated input 'nixpkgs-unpatched':
    'github:nixos/nixpkgs/db9208ab987cdeeedf78ad9b4cf3c55f5ebd269b' (2023-09-08)
  → 'github:nixos/nixpkgs/3a2786eea085f040a66ecde1bc3ddc7099f6dbeb' (2023-09-11)
• Updated input 'sops-nix':
    'github:Mic92/sops-nix/faf21ac162173c2deb54e5fdeed002a9bd6e8623' (2023-09-05)
  → 'github:Mic92/sops-nix/ea208e55f8742fdcc0986b256bdfa8986f5e4415' (2023-09-12)
```
2023-09-13 06:07:19 +00:00
9ad1be40b2 persist: stores: crypt: remove unrecognized nodev flag 2023-09-13 06:07:04 +00:00
910d0fa59e persist: remove the nosuid flag since gocryptfs cant parse it here 2023-09-13 05:13:43 +00:00
f54d5a68ff trust-dns: 0.22.1 -> 0.23.0 2023-09-13 02:53:06 +00:00
a359350d7e sxmo-utils.latest: 2023-08-29 -> 2023-09-09 2023-09-12 10:29:10 +00:00
7bef6b4089 modules: users/programs: cleaner option passthrough 2023-09-12 05:44:53 +00:00
8011e78e21 persist: cryptClearOnBoot: note rare (but predictable) bug during redeploy 2023-09-12 04:58:56 +00:00
8a6fcd92ae programs: port to programs.services interface 2023-09-12 04:45:38 +00:00
3e33313bf0 programs: add a "services" option which forwards into the user config 2023-09-12 04:44:07 +00:00
6138291a8d users: add a "services" option via which to configure per-user systemd services 2023-09-12 04:43:23 +00:00
6addf5a3b2 fs: symlink: add an option by which to control the symlink target name 2023-09-12 04:41:32 +00:00
2ead0201ab todo.md: add task for moby battery readout 2023-09-12 00:07:34 +00:00
56ad2370dc colin: add to systemd-journal group 2023-09-12 00:06:00 +00:00
3157ceb88b swaync: dont ship dbus files 2023-09-11 23:03:57 +00:00
df2a2fe427 mako: simplify with a rmDbusServices helper 2023-09-11 22:56:54 +00:00
c55ea59c4f ship unzip, for when dtrx fails 2023-09-11 22:31:54 +00:00
9cb28e037d firefox: sponsorblock: fix to really not show popup on first-run 2023-09-11 22:30:28 +00:00
90eeb380ef firefox-extensions: upadte sponsorblock, ublacklist 2023-09-11 22:21:25 +00:00
9472a5c5d4 todo.md: sort moby tasks 2023-09-11 01:30:29 +00:00
d7884a9c8a nixpkgs: 2023-09-06 -> 2023-09-08
```
• Updated input 'mobile-nixos':
    'github:nixos/mobile-nixos/56fc9f9619f305f0865354975a98d22410eed127' (2023-07-22)
  → 'github:nixos/mobile-nixos/d22c60e8d4d21f0197c1cac88c34dcc366b7a16c' (2023-09-10)
• Updated input 'nixpkgs-unpatched':
    'github:nixos/nixpkgs/0bffda19b8af722f8069d09d8b6a24594c80b352' (2023-09-06)
  → 'github:nixos/nixpkgs/db9208ab987cdeeedf78ad9b4cf3c55f5ebd269b' (2023-09-08)
```
2023-09-10 12:57:14 +00:00
3f10fbdf4d sway: remove deprecated "types.string" 2023-09-10 12:57:10 +00:00
c5ccc0ab34 eg25-control: mention atinout as a way to send AT commands 2023-09-10 12:56:56 +00:00
664bd473c3 linux-megous: try making more modules be builtin 2023-09-10 12:56:37 +00:00
8ef0926614 cross: build in qemu using stock linux
this allows faster iteration of linux-megous kernel
2023-09-10 11:59:47 +00:00
2298d1bfaa linux-megous: 6.4.7 -> 6.4.15 2023-09-10 11:47:05 +00:00
08857dd143 sane-bt-search: rank miobt/subsplease 2023-09-10 11:46:39 +00:00
b26f7a5d2b sysadminUtils: ship dtc (device tree de/compiler) 2023-09-10 09:49:31 +00:00
4e997591dd snippets: update 2023-09-10 00:49:02 +00:00
fad3972554 sway: waybar: fix media to better handle multiple players 2023-09-10 00:01:39 +00:00
755f844294 doc: sway/wlroots patch: explain the xdg_activation_v1 situation 2023-09-09 10:52:07 +00:00
fd18da52a8 overlays/preferences: remove dead dino code (it never worked) 2023-09-09 09:32:21 +00:00
cc78c3c36e sway: patch to temporarily allow any window to request activation (fix for notifications) 2023-09-09 09:32:00 +00:00
75009f6816 doc: sxmo: explain why we need nerdfonts 2023-09-09 07:44:31 +00:00
59f82cea27 doc: element: leave notes for if element fails to render, again 2023-09-09 07:11:25 +00:00
0da8d282fe feeds: add Andrew Heaton - Political Orphanage 2023-09-09 02:33:48 +00:00
6b4bd5ea28 feeds: remove Useful Idiots
the only ungated content is just idle chitchat
2023-09-09 02:20:02 +00:00
93ceef0163 sane-bt-search: fix bakabt URIs 2023-09-09 00:05:22 +00:00
eab0d656d3 docs: cpuFreqGovernor: explain which hardware this config affects 2023-09-08 23:37:21 +00:00
c2d99603a8 nixpkgs: 2023-09-04 -> 2023-09-06
```
• Updated input 'nixpkgs-unpatched':
    'github:nixos/nixpkgs/3c15feef7770eb5500a4b8792623e2d6f598c9c1' (2023-09-04)
  → 'github:nixos/nixpkgs/0bffda19b8af722f8069d09d8b6a24594c80b352' (2023-09-06)
```
2023-09-08 21:16:12 +00:00
f73b6b56a9 nixpkgs: 2023-09-02 -> 2023-09-04
```
• Updated input 'nixpkgs-unpatched':
    'github:nixos/nixpkgs/e56990880811a451abd32515698c712788be5720' (2023-09-02)
  → 'github:nixos/nixpkgs/3c15feef7770eb5500a4b8792623e2d6f598c9c1' (2023-09-04)
```
2023-09-08 20:48:56 +00:00
b65eca7dcf sxmo: fix so the sway session launched via phog includes debug logging 2023-09-08 10:59:31 +00:00
dec5826be8 all: switch powerManagement from powersave -> ondemand
how did i end up on powersave?

powersave is unusable on moby
2023-09-08 05:37:56 +00:00
b2393d4715 opengl: enable more broadly
this reduces the amount of sxmo-specific config
2023-09-07 10:47:17 +00:00
c86037e5d0 sway: don't enable greetd by default 2023-09-07 10:45:23 +00:00
d7751fb300 sway: remove unused installConfigs option 2023-09-07 10:33:28 +00:00
9582ea2e0a refactor: hosts/modules/hardware -> hosts/common/hardware
the config here didn't have any options; doesn't really make sense as a module
2023-09-07 10:29:25 +00:00
d92b393f01 hardware/x86_64.nix: split these options into more relevant files
also makes it so we dont ship opengl on platforms where we dont need it (servo)
2023-09-07 10:24:20 +00:00
ea26899735 docs: swaync: show how to view interactive style 2023-09-07 09:09:47 +00:00
f8d807225f swaync: fix backlight controls for moby 2023-09-07 08:54:43 +00:00
4c08609824 swaync: ship as own service 2023-09-07 07:34:22 +00:00
ccb11a4ecf swaync: fix broken black-on-black text 2023-09-07 07:33:15 +00:00
7f8ce68182 transmission: disable the incomplete dir 2023-09-07 06:14:11 +00:00
edf936820a transmission: fix permission-related errors 2023-09-07 06:14:11 +00:00
c6ab274dcf sxmo: waybar: add swaync 2023-09-07 01:27:30 +00:00
4d0c1811a3 neovim: associate with json/txt/md 2023-09-07 00:11:33 +00:00
ccb6f33b2f swaync: tune config; ignore certain sxmo notifications 2023-09-07 00:11:14 +00:00
4484fd243e docs: swaynotificationcenter: show how to reveal the notification center 2023-09-06 10:22:56 +00:00
7f1cdae91a sxmo: remove mako & other programs which are managed by sway now 2023-09-06 10:14:59 +00:00
b763009821 cross: fix swaynotificationcenter compilation 2023-09-06 09:56:46 +00:00
f392c0c02b swaync: tune parameters a bit 2023-09-06 09:20:00 +00:00
027086dd48 waybar: add divider to swaync 2023-09-06 09:19:50 +00:00
6eeca57694 waybar: add swaync notifications center 2023-09-06 09:13:34 +00:00
cc9ff2a2b0 swaynotificationcenter: port text blob to structured nix config 2023-09-06 09:03:19 +00:00
507753b3dc .gitignore: ignore some more things 2023-09-06 08:59:58 +00:00
eaecb395cd sway: switch from mako to swaynotificationcenter
mako's not working great on moby; hoping this will be better
2023-09-06 08:57:25 +00:00
6f5132633f sway: disable unused status_cmd 2023-09-06 08:19:52 +00:00
1076289490 sway: enable xwayland (but not for sxmo) 2023-09-06 08:19:52 +00:00
743f669b8c mako: disable the dbus service so our systemd service can take control 2023-09-06 08:19:52 +00:00
c12fc4bd57 todo.md: remove completed mpv item 2023-09-06 08:19:52 +00:00
9ab82904e6 mpv: remove power-button -> close mpv mapping 2023-09-06 08:19:51 +00:00
45df0954f4 sway: improve waybar text size 2023-09-06 08:19:51 +00:00
de685236a0 sway: waybar: fix default min-width setting (to aid moby) 2023-09-06 01:55:14 +00:00
2aa8033a5f sway: remove defaulted bar options 2023-09-06 01:18:35 +00:00
12b2fb6dfd mako: deploy as systemd service 2023-09-06 00:57:47 +00:00
aa5eb3988d sway: fix broken @status@ substitution 2023-09-06 00:51:13 +00:00
5efeb6ca50 lappy: sxmo: set noidle 2023-09-06 00:46:08 +00:00
18eaebb7fc mako: don't dismiss notifications when touched 2023-09-05 18:21:26 +00:00
9ed3dd4f22 sxmo: let mako be started via normal dbus activation
note that sxmo still installs its own, custom, mako theme
2023-09-05 17:46:01 +00:00
51ecf1b54b sxmo: fix sxmo_hook_init.sh -> sxmo_hook_start.sh 2023-09-05 17:31:33 +00:00
d1741c60dc sxmo: clean up our hook injections 2023-09-05 17:21:02 +00:00
f62c844aaf modules: fs: allow symlink target to be a path 2023-09-05 17:21:02 +00:00
409baf0321 moby: lift background into sway config 2023-09-05 16:13:23 +00:00
c3e37f7864 sops-nix: 2023-08-30 -> 2023-09-05
```
• Updated input 'sops-nix':
    'github:Mic92/sops-nix/d9c5dc41c4b1f74c77f0dbffd0f3a4ebde447b7a' (2023-08-30)
  → 'github:Mic92/sops-nix/faf21ac162173c2deb54e5fdeed002a9bd6e8623' (2023-09-05)
• Updated input 'sops-nix/nixpkgs-stable':
    'github:NixOS/nixpkgs/9117c4e9dc117a6cd0319cca40f2349ed333669d' (2023-08-27)
  → 'github:NixOS/nixpkgs/5601118d39ca9105f8e7b39d4c221d3388c0419d' (2023-09-02)
```
2023-09-05 09:26:59 +00:00
233a81c7d8 sxmo: more logging around power_button/volume_button 2023-09-05 09:14:32 +00:00
aca67b997a sxmo: dont start conky manually (let sway do it) 2023-09-05 08:48:18 +00:00
cddba3d35f conky: ship on sway
this probably causes double conky on sxmo, but i can fix in future patch
2023-09-05 08:31:50 +00:00
14b0d1bd37 sway: tidy up media key handling to not interfere with sxmo hooks 2023-09-05 04:51:12 +00:00
578162a266 sxmo: fix waybar height 2023-09-05 04:32:00 +00:00
ab776d7fc8 sxmo: fold the sway config fully into sane.gui.sway 2023-09-05 04:25:58 +00:00
cd9f05b8e1 sxmo: merge waybar configs into sway 2023-09-05 03:43:32 +00:00
2bf978f845 sway: waybar: disable sway/mode (it doesnt seem to do anything...) 2023-09-05 03:09:32 +00:00
b89212bcbd refactor: waybar: sort these items 2023-09-05 01:19:06 +00:00
5498694729 sway: tidy waybar items and add memory 2023-09-05 01:18:55 +00:00
7b5bf2969a sway: switch theming to be consistent with SXMO, for future merging 2023-09-05 01:05:59 +00:00
e198c49a96 refactor: sway: make snip_cmd be an actual shell script 2023-09-05 00:29:38 +00:00
7f5811db9a refactor: sway: split config template into own file 2023-09-05 00:28:38 +00:00
5c3bb2293c sway: consolidate the nix substitutions into mostly just one area and use sway-native variables after 2023-09-04 23:30:40 +00:00
59ac2061af sxmo: minor docs improvement 2023-09-04 11:33:14 +00:00
905934cad2 moby: disable blueberry app, since it doesnt compile 2023-09-04 11:31:07 +00:00
e89805cd17 sxmo: have sway launch sxmo -- not the other way around
this lets me treat sxmo as just some nice scripts which run atop an existing DE (sway), rather than the opposite

can share more code with my desktop/laptop
2023-09-04 11:10:30 +00:00
680ab2c189 lappy: fix sxmo polyfill 2023-09-04 10:01:29 +00:00
10095e3ce5 sxmo: rename greeter option: {,->greetd-}sway-gtkgreet 2023-09-04 01:06:57 +00:00
a2b8e23eee nixpkgs: 2023-09-01 -> 2023-09-02
```
• Updated input 'nixpkgs-unpatched':
    'github:nixos/nixpkgs/aa8aa7e2ea35ce655297e8322dc82bf77a31d04b' (2023-09-01)
  → 'github:nixos/nixpkgs/e56990880811a451abd32515698c712788be5720' (2023-09-02)
```
2023-09-03 20:13:07 +00:00
0587c14af5 nixpkgs: 2023-08-31 -> 2023-09-01
```
• Updated input 'nixpkgs-unpatched':
    'github:nixos/nixpkgs/3e52e76b70d5508f3cec70b882a29199f4d1ee85' (2023-08-31)
  → 'github:nixos/nixpkgs/aa8aa7e2ea35ce655297e8322dc82bf77a31d04b' (2023-09-01)
```
2023-09-03 08:49:56 +00:00
6a83e0ce6c WIP: sxmo: ship notifications-related dependencies 2023-09-03 08:48:43 +00:00
72960aa963 cross: fix flatpak compilation 2023-09-03 08:46:50 +00:00
5f4f047769 cross: fix ostree compilation 2023-09-03 07:45:21 +00:00
a880ba254b sway: remove some unneeded config options 2023-09-02 10:37:09 +00:00
4d75c3d97a ejabberd: document more compat & how to admin 2023-09-02 08:36:32 +00:00
90511ed765 ejabberd: support matrix: clarify client support 2023-09-02 08:36:32 +00:00
aa3b85511f ejabberd: docs: update federation/support matrix 2023-09-02 08:36:32 +00:00
5d90cbcc98 programs: ship gajim on desko 2023-09-02 07:21:16 +00:00
0525f99813 moby: ship dino 2023-09-02 05:13:01 +00:00
769019f2f5 greetd: types.string -> types.str 2023-09-02 01:36:11 +00:00
dcaba0f0ee secrets: fix build when host has no secrets 2023-09-02 01:34:32 +00:00
d33b6eec59 flake: add a check-host-configs target to ensure all hosts are buildable 2023-09-02 01:25:20 +00:00
20aef83496 greetd: refactor: session{Name,Cmd,User} into session attrset 2023-09-02 00:54:05 +00:00
3cc4a1ea19 sxmo: port to greetd abstraction 2023-09-02 00:49:44 +00:00
a41fefa906 consolidate greetd stuff out of sway 2023-09-02 00:07:46 +00:00
c00bba3fcf nixpkgs: 2023-08-30 -> 2023-08-31
```
• Updated input 'nixpkgs-unpatched':
    'github:nixos/nixpkgs/e7f38be3775bab9659575f192ece011c033655f0' (2023-08-30)
  → 'github:nixos/nixpkgs/3e52e76b70d5508f3cec70b882a29199f4d1ee85' (2023-08-31)
```
2023-09-01 20:03:55 +00:00
63fab5899b common: mount /mnt/servo-nfs/playground 2023-09-01 10:10:28 +00:00
357b6ef06e nfs: expose playground as a read/write dir 2023-09-01 10:08:29 +00:00
4fdf74fdbe export: enforce a quota 2023-09-01 03:37:33 +00:00
15e09573d5 exports: consolidate nfs and sftpgo mounts into /var/export 2023-09-01 01:23:35 +00:00
d6479ca148 nfs/sftpgo: combine into "exports" nix directory 2023-09-01 00:39:22 +00:00
cf9558f166 WIP: sftp: define playground as a btrfs subvolume 2023-09-01 00:35:43 +00:00
68bce9c8b7 ports: if they fail to forward, retry after some interval 2023-09-01 00:30:32 +00:00
913201b9cd sane-bt-search: add TPB to TRACKER_RANKS 2023-08-31 23:38:29 +00:00
3f748164e4 ftp: add a playground directory 2023-08-31 12:56:30 +00:00
ded5d94d69 modules: fs: add a "text" type to populate static text files when symlinks wont do 2023-08-31 12:56:30 +00:00
815a8b52b6 refactor: sftpgo: define permissions via nix config 2023-08-31 12:56:30 +00:00
639a4cfe50 ftp: grant read access to LAN 2023-08-31 12:56:30 +00:00
b2af4e8983 nixpkgs: disable phog patch 2023-08-31 12:56:09 +00:00
ff39fc5d95 ports: make upnp service files more human-readable 2023-08-31 01:02:48 +00:00
9fea007d4f cross: support gnome "calls" package 2023-08-31 00:52:28 +00:00
f44a094d1d nixpkgs: 2023-08-28 -> 2023-08-30; sops-nix -> 2023-08-30
```
• Updated input 'nixpkgs-unpatched':
    'github:nixos/nixpkgs/3efb0f6f404ec8dae31bdb1a9b17705ce0d6986e' (2023-08-28)
  → 'github:nixos/nixpkgs/e7f38be3775bab9659575f192ece011c033655f0' (2023-08-30)
• Updated input 'sops-nix':
    'github:Mic92/sops-nix/c89ee06488706b587a22085b1844bf9ca6ba5687' (2023-08-28)
  → 'github:Mic92/sops-nix/d9c5dc41c4b1f74c77f0dbffd0f3a4ebde447b7a' (2023-08-30)
```
2023-08-30 20:45:57 +00:00
ec6f90eb44 mpv: fix "DRM_IOCTL_MODE_CREATE_DUMB failed" bug 2023-08-30 10:32:31 +00:00
bbe583637f mpv: uosc: 2023-07-26 -> 2023-08-29 2023-08-30 06:33:09 +00:00
29eab151a1 lemoa: 0.3 -> 0.4 2023-08-30 05:34:04 +00:00
a7c5daf8a5 sxmo: sway-config: leave a todo for deploying via /etc/sway/config.d 2023-08-30 01:56:32 +00:00
a23dea03a9 sxmo: sway config: pull defaults from upstream sxmo-utils 2023-08-30 01:54:30 +00:00
45e5f3ecca dino: document how to start calls 2023-08-30 01:50:06 +00:00
8bcba8802f sxmo-utils: 2023-08-22 -> 2023-08-29 2023-08-30 01:49:48 +00:00
3e2e0ccc1c nixpatches: note to split xdg-utils patch 2023-08-29 21:26:43 +00:00
c14d88f1ea nixpkgs: 2023-08-27 -> 2023-08-28
```
• Updated input 'nixpkgs-unpatched':
    'github:nixos/nixpkgs/a999c1cc0c9eb2095729d5aa03e0d8f7ed256780' (2023-08-27)
  → 'github:nixos/nixpkgs/3efb0f6f404ec8dae31bdb1a9b17705ce0d6986e' (2023-08-28)
```
2023-08-29 21:26:43 +00:00
e72e847147 sops-nix: 2023-08-27 -> 2023-08-28 2023-08-29 21:26:43 +00:00
073879e523 nixpkgs: 2023-08-25 -> 2023-08-27
```
• Updated input 'nixpkgs-unpatched':
    'github:nixos/nixpkgs/5690c4271f2998c304a45c91a0aeb8fb69feaea7' (2023-08-25)
  → 'github:nixos/nixpkgs/a999c1cc0c9eb2095729d5aa03e0d8f7ed256780' (2023-08-27)
• Updated input 'sops-nix':
    'github:Mic92/sops-nix/1b7b3a32d65dbcd69c217d7735fdf0a6b2184f45' (2023-08-22)
  → 'github:Mic92/sops-nix/0618c8f0ed5255ad74ee08d1618841ff5af85c86' (2023-08-27)
• Updated input 'sops-nix/nixpkgs-stable':
    'github:NixOS/nixpkgs/5e63e8bbc46bc4fc22254da1edaf42fc7549c18a' (2023-08-20)
  → 'github:NixOS/nixpkgs/9117c4e9dc117a6cd0319cca40f2349ed333669d' (2023-08-27)
```
2023-08-29 21:26:43 +00:00
bf302f70f1 servo: ejabberd: give each TURN port a unique upnp description
i think some impls expect the description to be unique?
2023-08-29 11:46:40 +00:00
a045eaa181 sxmo: persist the fontconfig and mesa_shader_cache directories for faster boot 2023-08-29 10:35:14 +00:00
b83b2ce0cc sxmo-utils: begin to push Makefile patches upstream 2023-08-29 10:32:56 +00:00
377aec7e07 sxmo-utils: re-add lost patch to the stable variant 2023-08-29 10:09:30 +00:00
9d50a6669a sxmo-utils-latest: 2023-08-11 -> 2023-08-22 2023-08-29 10:00:42 +00:00
bded6c9562 todo.md: new entry for getting sxmo youtube script working 2023-08-29 09:44:52 +00:00
5520c74921 sxmo-utils: add missing wl-clipboard dependency (for sxmo_screenshot.sh) 2023-08-29 09:44:30 +00:00
589c005bc4 sxmo-utils: add missing slurp dependency 2023-08-29 09:17:09 +00:00
d64a213ec2 sxmo-utils: add missing wtype package 2023-08-29 08:49:25 +00:00
18c940962e sxmo-utils: fix incorrect PREFIX
this should help the appscripts (screenshotting and the like)
2023-08-29 07:59:43 +00:00
e01b1f35fc sxmo-utils: simplifiy the install phase 2023-08-29 07:35:42 +00:00
60030860e5 todo.md: sxmo: better dependency/PATH handling 2023-08-29 07:35:42 +00:00
90894087e5 sxmo: apply SXMO_DISABLE_CONFIGVERSION_CHECK earlier 2023-08-29 07:35:42 +00:00
bdcccbd894 ejabberd: forward TURN ports over UPnP 2023-08-29 07:22:48 +00:00
b64cf408fb chatty: persist all of ~/.purple 2023-08-29 06:13:24 +00:00
eaca5b9889 cross: record more upstreaming status 2023-08-29 00:18:07 +00:00
1c265b2073 cross: update upstreaming status 2023-08-28 23:33:42 +00:00
fa98ba86bc sxmo: default SXMO_DISABLE_CONFIGVERSION_CHECK to on 2023-08-28 21:53:43 +00:00
53aee9e651 cross: libgweather/tuba: grab from upstream PRs 2023-08-28 12:04:03 +00:00
d4a305f5bb cross: tuba: grab from nixpkgs fork 2023-08-28 11:52:39 +00:00
fd39efe31f sxmo-utils: sxmo_hook_apps: fix some typod apps 2023-08-28 11:15:25 +00:00
3b2f4b6f72 preferences: phog: fix eval typo 2023-08-28 11:15:05 +00:00
9a16942b16 cross: send brightnessctl, libgweather (partially) upstream 2023-08-28 11:14:51 +00:00
fe47d68fd3 sxmo-utils: disable configversion checking
this is not yet deployed -- might not work 100%
2023-08-28 10:32:37 +00:00
deaee833cf cross: move phog patch to preferences.nix 2023-08-28 10:08:50 +00:00
8d03881109 cross compilation: disable kitty patch (no longer needed) 2023-08-28 10:06:24 +00:00
e476adfdf5 todo.md: add entry for fixing fonts in wvkbd 2023-08-28 09:56:24 +00:00
4201aa7466 gui: sxmo: default to sxmo-utils-latest variant of the package 2023-08-28 09:56:02 +00:00
a85d594c89 sxmo-utils: add a few more apps i use 2023-08-28 09:55:34 +00:00
7b98cd3d50 todo.md: remove completed phog item 2023-08-28 09:37:01 +00:00
d256a0b647 todo.md: upstreaming to non-nixpkgs 2023-08-28 09:36:11 +00:00
c87ba7f670 snippets: add link to sxmo-devel maillist 2023-08-28 09:26:41 +00:00
e4e5df80f1 sxmo-utils: factor out commons and create a package for sxmo-utils-latest 2023-08-28 09:26:30 +00:00
02f409451d chatty: persist .purple/chatty 2023-08-28 09:01:29 +00:00
9f2c7b90ce snippets.txt: more uninsane services; Johoe mempool 2023-08-28 08:52:33 +00:00
559c551752 re-enable dino XMPP client 2023-08-28 08:48:35 +00:00
304482cc9b moby: ModemManager: make quieter 2023-08-28 08:09:19 +00:00
ad9db91812 moby: ship eg25-control on user profile 2023-08-28 08:03:27 +00:00
1c7997e1ef rename eg25-control-defaults.service -> eg25-control 2023-08-28 08:03:14 +00:00
deefcaae9a nixpkgs: 2023-08-24 -> 2023-08-25
```
• Updated input 'nixpkgs-unpatched':
    'github:nixos/nixpkgs/18324978d632ffc55ef1d928e81630c620f4f447' (2023-08-24)
  → 'github:nixos/nixpkgs/5690c4271f2998c304a45c91a0aeb8fb69feaea7' (2023-08-25)
```
2023-08-26 20:07:04 +00:00
562008f3c0 sxmo: default to greetd + sway + phog greeter 2023-08-26 19:57:43 +00:00
2584d62b28 sxmo: enable hardware opengl
this fixes the awful perf i was seeing when not using lightdm-mobile-greeter

xserver enables hardware opengl, i'm just copying that behavior to non-X greeters
2023-08-26 19:57:43 +00:00
dc64193a62 moby: generalize sun4i init failure to displayManager *and* greetd 2023-08-26 19:57:43 +00:00
a7f8089ed8 sane-bt-search: link to jargon definitions 2023-08-26 19:25:23 +00:00
e8e63167d2 phog: bring in-tree and patch to allow launching via sway
it looses the bar functionality (oh well)
2023-08-26 13:04:07 +00:00
c056191de1 sxmo: try some alternate greeters 2023-08-26 12:28:25 +00:00
f2a597f698 moby: sxmo: phog: provide an identifier in the syslog 2023-08-26 10:06:36 +00:00
7b637f976b moby: sxmo: fix phog to log its output 2023-08-26 09:40:07 +00:00
39a378c517 nixpkgs: 2023-08-22 -> 2023-08-24
```
• Updated input 'nixpkgs-unpatched':
    'github:nixos/nixpkgs/b85ed9dcbf187b909ef7964774f8847d554fab3b' (2023-08-22)
  → 'github:nixos/nixpkgs/18324978d632ffc55ef1d928e81630c620f4f447' (2023-08-24)
```
2023-08-26 01:26:33 +00:00
0f9dfb9f8a sxmo-utils: add missing xrdb dependency 2023-08-25 23:37:05 +00:00
ab7f2fb1ec sxmo: switch back to lightdm-mobile greeter 2023-08-25 23:36:47 +00:00
a892c364c6 sxmo-utils: cherry-pick upstream light -> brightnessctl patch 2023-08-25 22:33:48 +00:00
a5c829fa96 moby: switch to phog by default 2023-08-25 13:29:49 +00:00
e844cf5970 phog: fix hardcoded paths 2023-08-25 13:29:29 +00:00
999c6fd880 preferences: remove a dead todo 2023-08-25 12:14:03 +00:00
2aa4bdd5a6 cross compilation: fix brightnessctl 2023-08-25 12:13:39 +00:00
05801f298f phog: add missing gnome-shell dependency
oof, that's a massive dep to pull in just for the schema files...
2023-08-25 12:05:15 +00:00
0fd1ec861b sxmo-utils: add missing brightnessctl dep 2023-08-25 12:04:28 +00:00
37d0473b7f cross: enable gnome-clocks, gnome-shell, squeekboard, better libgweather 2023-08-25 12:03:35 +00:00
aaca46c485 cross: get ibus to cross-compile 2023-08-25 12:01:49 +00:00
30a6a1c1c2 new todo: fix mpv blank UI bug 2023-08-25 01:34:19 +00:00
2c39ac3015 phoc: remove patches; they've been upstreamed 2023-08-25 01:33:34 +00:00
cc6a0dd8b3 phoc: fix patching style to be better overridable 2023-08-25 01:32:45 +00:00
fbf62f0531 moby: add experimental support for phog greeter 2023-08-25 01:25:07 +00:00
c96b951895 todo.md: moby: switch to phog greeter 2023-08-24 21:31:28 +00:00
34294341d7 libgweather: update nws patch with PR feedback 2023-08-24 11:41:31 +00:00
cdc8885e60 sane-weather: leave notes for future work 2023-08-24 11:23:33 +00:00
41416cd184 moby: conky: tune weather display 2023-08-24 11:17:36 +00:00
3c32246d9a sane-weather: default to METAR only 2023-08-24 11:06:24 +00:00
6862d084ac sane-weather: format the temperature better 2023-08-24 11:06:05 +00:00
6eb3626203 ship gnome-weather to all GUI platforms 2023-08-24 11:00:38 +00:00
5f808eab5c libgweather: push NWS segfault fix upstream 2023-08-24 10:35:54 +00:00
fe15c0b097 sane-weather: switch to METAR + NWS
NWS gets us hourly forecasts
2023-08-24 09:20:36 +00:00
e4fbe9d03c sane-weather: reoder the operations list 2023-08-24 09:20:36 +00:00
de09d54c64 sane-weather: make the location configurable 2023-08-24 09:20:36 +00:00
5bf117fc05 sane-weather: document some functions/classes 2023-08-24 09:20:36 +00:00
f734797628 libgweather: fix null string comparison in nws backend 2023-08-24 09:20:36 +00:00
236470dc33 cross compilation fixes for previous nixpkgs update 2023-08-24 05:56:47 +00:00
555627dad5 nixpkgs: 2023-08-21 -> 2023-08-22
```
• Updated input 'nixpkgs-unpatched':
    'github:nixos/nixpkgs/91a22f76cd1716f9d0149e8a5c68424bb691de15' (2023-08-21)
  → 'github:nixos/nixpkgs/b85ed9dcbf187b909ef7964774f8847d554fab3b' (2023-08-22)
```
2023-08-24 02:04:25 +00:00
49c5ddd9f3 nixpkgs: 2023-08-19 -> 2023-08-21
```
• Updated input 'nixpkgs-unpatched':
    'github:nixos/nixpkgs/d680ded26da5cf104dd2735a51e88d2d8f487b4d' (2023-08-19)
  → 'github:nixos/nixpkgs/91a22f76cd1716f9d0149e8a5c68424bb691de15' (2023-08-21)
• Updated input 'sops-nix':
    'github:Mic92/sops-nix/f81e73cf9a4ef4b949b9225be3daa1e586c096da' (2023-08-15)
  → 'github:Mic92/sops-nix/1b7b3a32d65dbcd69c217d7735fdf0a6b2184f45' (2023-08-22)
• Updated input 'sops-nix/nixpkgs-stable':
    'github:NixOS/nixpkgs/efeed708ece1a9f4ae0506ae4a4d7da264a74102' (2023-08-12)
  → 'github:NixOS/nixpkgs/5e63e8bbc46bc4fc22254da1edaf42fc7549c18a' (2023-08-20)
```
2023-08-23 13:40:45 +00:00
a43ccaac64 conky: display temperature 2023-08-23 13:38:11 +00:00
91c02aec9a sane-weather: enable cross compilation 2023-08-23 13:31:45 +00:00
681d3d5520 sane-weather: more diagnostics 2023-08-23 11:55:30 +00:00
f945dc42fa sane-weather: init
for now, all it does is print the current temperature; no caching
2023-08-23 11:14:13 +00:00
cc6f33b928 sxmo-utils: add missing curl, libxml2 deps 2023-08-23 06:18:24 +00:00
2f83e73139 sxmo: sway: default to tabbed workspaces 2023-08-22 10:03:07 +00:00
53ccb96234 sxmo: sway: theme "urgent" titlebars to match mpv colors 2023-08-22 10:00:13 +00:00
a0d6139e50 add todos around moby GPS 2023-08-22 08:53:55 +00:00
90abadf7c4 eg25-control: document typical jitter 2023-08-22 08:51:10 +00:00
7f1e959ece moby: gps: grant geoclue access to all users 2023-08-22 08:49:04 +00:00
794df4d762 moby: geoclue: restrict to just "colin" user 2023-08-22 07:20:31 +00:00
d6b262a28e moby: enable geoclue service 2023-08-22 07:15:14 +00:00
0cc518e523 todo.md: reflow 4-space tabs to 2-space 2023-08-22 06:41:26 +00:00
8780dff794 add lemonade, new-server-as-remote-builder to todo 2023-08-22 06:40:46 +00:00
0f881006e7 eg25-control: don't abort when AGPS download fails 2023-08-22 04:59:30 +00:00
5d349ce042 moby: init GPS during boot 2023-08-22 04:53:40 +00:00
940711878b eg25-control: make own package 2023-08-22 04:41:54 +00:00
75048efcf3 eg25_gps_init.py: allow CLI config of modem control points 2023-08-22 04:36:37 +00:00
8cc5199d9b FIXUP 2023-08-22 04:35:51 +00:00
3f60bacd38 eg25_gps_init: allow finer CLI control 2023-08-22 04:32:11 +00:00
8fb705dde4 eg25-gps-init: document the SIM requirement 2023-08-21 19:39:55 +00:00
79777cd4ae eg25-gps-init: improve docs 2023-08-21 11:14:16 +00:00
fabd1e3b64 eg25-gps-init: fixup docs 2023-08-21 10:42:27 +00:00
bcb6beef05 check in a script to initialize the eg25 gps
not part of the deployed system: has to be run manually
2023-08-21 10:33:39 +00:00
34336e4ade linux-megous: 6.4.0-rc7 -> 6.4.7
this is the version currently deployed by postmarketOS
2023-08-21 04:49:46 +00:00
a518e56cf1 feeds: leave note to where to find podcasts that have a lemmy community 2023-08-21 01:14:55 +00:00
6cc7655180 feeds: add Tom Scott's podcast 2023-08-21 01:13:19 +00:00
0a15aad6d7 sane-bt-search: rename "source" sort to "tracker" 2023-08-20 09:14:45 +00:00
1d8bee2856 sane-bt-search: add a flag to sort by tracker reputation 2023-08-20 09:14:19 +00:00
6894d5828b sane-bt-search: refactor: move filter logic off of Torrent class 2023-08-20 08:53:06 +00:00
35bc222552 sane-bt-search: allow showing only videos 2023-08-20 08:49:04 +00:00
16b5b6840f sane-bt-search: refactor: make filtering easier to extend 2023-08-20 08:45:10 +00:00
1a7837d740 flake: add a sync-lappy command 2023-08-20 07:46:55 +00:00
607bfbe452 fs: add /mnt/lappy-home 2023-08-20 06:26:20 +00:00
c2b85bd6b8 refactor: break out a helper in fs.nix for mounting remote home dirs 2023-08-20 06:20:28 +00:00
c3bc0ec645 fs: remove desko-root mount
i don't use it in practice
2023-08-20 06:11:17 +00:00
89b5e8145d lemmy: pict-rs: remove unused options 2023-08-20 05:01:24 +00:00
0edab7ed64 lemmy: port to new pict-rs and enable video 2023-08-20 05:00:35 +00:00
c8a3814f6a nixpkgs: 2023-08-18 -> 2023-08-19
```
• Updated input 'nixpkgs-unpatched':
    'github:nixos/nixpkgs/8ecc900b2f695d74dea35a92f8a9f9b32c8ea33d' (2023-08-18)
  → 'github:nixos/nixpkgs/d680ded26da5cf104dd2735a51e88d2d8f487b4d' (2023-08-19)
```
2023-08-20 00:47:38 +00:00
9ddac508e2 sane-bt-search: port to argparse 2023-08-19 23:32:11 +00:00
3245f8f94c nixpkgs: 2023-08-17 -> 2023-08-18
```
• Updated input 'nixpkgs-unpatched':
    'github:nixos/nixpkgs/42c25608aa2ad4e5d3716d8d63c606063513ba33' (2023-08-17)
  → 'github:nixos/nixpkgs/8ecc900b2f695d74dea35a92f8a9f9b32c8ea33d' (2023-08-18)
```
2023-08-19 11:30:18 +00:00
8be1f43c23 g4music: m4a support: acquire from upstream PR 2023-08-18 20:07:26 +00:00
e29e26605b nixpkgs: 2023-08-16 -> 2023-08-17
```
• Updated input 'nixpkgs-unpatched':
    'github:nixos/nixpkgs/caac0eb6bdcad0b32cb2522e03e4002c8975c62e' (2023-08-16)
  → 'github:nixos/nixpkgs/42c25608aa2ad4e5d3716d8d63c606063513ba33' (2023-08-17)
```
2023-08-18 10:07:17 +00:00
7bd6c0c14d WIP: moby: launch ModemManager in debug mode
this lets me use mmcli --command=...
2023-08-18 10:05:32 +00:00
d7c912386f linux-megous: re-enable modem-power
it's likely i won't be using eg25-manager after all and will have to manually boot the modem, so may as well use Megi's driver for that
2023-08-18 04:08:32 +00:00
e7e86cae95 modemmanager: undo patching
once i insert a SIM, it's able to understand the modem...
2023-08-18 02:17:09 +00:00
b083ce87be eg25-manager: disable 2023-08-17 10:56:32 +00:00
17b90fc697 eg25-manager: configure without modemmanager support 2023-08-17 08:34:32 +00:00
4fc59fa2ac modemmanager: experimental patch to not fail the whole modem if there's no sim 2023-08-17 08:34:18 +00:00
e87cda2e55 g4music: add mp4 support 2023-08-17 01:51:25 +00:00
2c4d30b5ec postgresql: tune db parameters
fixes pleroma timeouts
2023-08-17 01:28:37 +00:00
d0af645af8 pleroma: add missing "prepare: :named" config 2023-08-17 01:28:33 +00:00
a1f79dc18a komikku: use unpatched upstream now that my fix is in a release 2023-08-17 00:01:15 +00:00
ff65a697a9 nixpatches: apply outstanding komikku, komga update PRs 2023-08-16 22:49:45 +00:00
ef881b1392 podcasts: subscribe to Useful Idiots 2023-08-16 22:03:40 +00:00
debea8fa5b podcasts: subscribe to Behind the Bastards 2023-08-16 21:58:51 +00:00
8a9acbaeea podcasts: subscribe to We're Not Wrong 2023-08-16 21:58:07 +00:00
8869ec7bca podcasts: subscribe to omegatau 2023-08-16 21:54:55 +00:00
dc0268736a g4music: remove (use upstream) 2023-08-16 21:25:25 +00:00
6f9c2a846e nixpkgs: 2023-08-15 -> 2023-08-16
```
• Updated input 'nixpkgs-unpatched':
    'github:nixos/nixpkgs/8353344d3236d3fda429bb471c1ee008857d3b7c' (2023-08-15)
  → 'github:nixos/nixpkgs/caac0eb6bdcad0b32cb2522e03e4002c8975c62e' (2023-08-16)
```
2023-08-16 21:24:51 +00:00
3cb00840de nixpkgs: 2023-08-14 -> 2023-08-15
```
• Updated input 'nixpkgs-unpatched':
    'github:nixos/nixpkgs/6e287913f7b1ef537c97aa301b67c34ea46b640f' (2023-08-14)
  → 'github:nixos/nixpkgs/8353344d3236d3fda429bb471c1ee008857d3b7c' (2023-08-15)
• Updated input 'sops-nix':
    'github:Mic92/sops-nix/32603de0dc988d60a7b80774dd7aed1083cd9629' (2023-08-13)
  → 'github:Mic92/sops-nix/f81e73cf9a4ef4b949b9225be3daa1e586c096da' (2023-08-15)
```
2023-08-16 11:31:04 +00:00
6a2603a4ea dev-machine: disable zeal (requires qtwebengine) 2023-08-16 11:29:43 +00:00
69efecb2ef postgresql: update 13 -> 15 2023-08-16 11:09:22 +00:00
056e6d358e moby: switch back to megi kernel (manjaro kernel has graphical glitches) 2023-08-16 10:59:58 +00:00
793baf0e0f cross: remove upstreamed tracker patches 2023-08-16 10:54:36 +00:00
721899258a cross: point playerctl patch to upstream PR 2023-08-16 10:54:07 +00:00
4f9d84cd82 cross: fix playerctl build 2023-08-16 10:34:13 +00:00
a462180d3c sane-stop-all-servo: add signald, pict-rs 2023-08-16 10:34:13 +00:00
58f2d87959 sane-stop-all-servo: add missing mautrix-signal and lemmy-ui services 2023-08-16 10:34:13 +00:00
a50b8e6373 moby: split the old linux-manjaro config into its own package & update it 2023-08-16 10:10:42 +00:00
4ec947d549 eg25-manager: set RestartSec to make the restart loops less painful 2023-08-16 09:09:13 +00:00
6751a74063 moby: kernel: better docs 2023-08-16 09:08:35 +00:00
6118a18200 gthumb: associate with gif and webp 2023-08-15 20:48:51 +00:00
d223d4be06 cross: try to fix webkitgtk build 2023-08-15 10:56:07 +00:00
ab7ec9bd74 cross: remove dead overrides for upstreamed packages 2023-08-15 10:55:18 +00:00
7b70b5ec86 linux-megous: build WITHOUT modem_power module, for better eg25-manager compatibility 2023-08-15 10:49:07 +00:00
db99043753 eg25-manager.service: remove modem_power module & point to the right UART 2023-08-15 10:46:18 +00:00
8f87e49606 cross: fix comment typos 2023-08-15 05:38:11 +00:00
5557107259 nixpkgs: 2023-08-13 -> 2023-08-14
```
• Updated input 'nixpkgs-unpatched':
    'github:nixos/nixpkgs/100a1550b0e7a64b960c625b656f9229bdef5f87' (2023-08-13)
  → 'github:nixos/nixpkgs/6e287913f7b1ef537c97aa301b67c34ea46b640f' (2023-08-14)
```
2023-08-15 04:32:49 +00:00
1b5c870798 sane-scripts.sync-music: add to a package set (sane-scripts.sys-utils) 2023-08-15 01:47:45 +00:00
a5162651b7 zsh: re-enable lost keybindings like ctrl+r and ctrl+a 2023-08-15 01:47:12 +00:00
b9868512d6 switch TERMINAL from kitty -> alacritty 2023-08-15 01:46:57 +00:00
8432d9c9ed sway: be terminal agnostic 2023-08-15 01:46:40 +00:00
5d4f94f218 add alacritty program/config 2023-08-15 01:46:22 +00:00
7e9d5d99c7 g4music: obtain via nixpkgs PR 2023-08-14 20:19:22 +00:00
487e64b09b nixos/dconf patch: point to upstream PR 2023-08-14 20:13:19 +00:00
5e350b810f nixpkgs: 2023-08-10 -> 2023-08-13; sops-nix 2023-07-24 -> 2023-08-13
```
• Updated input 'nixpkgs-unpatched':
    'github:nixos/nixpkgs/ce5e4a6ef2e59d89a971bc434ca8ca222b9c7f5e' (2023-08-10)
  → 'github:nixos/nixpkgs/100a1550b0e7a64b960c625b656f9229bdef5f87' (2023-08-13)
• Updated input 'sops-nix':
    'github:Mic92/sops-nix/c36df4fe4bf4bb87759b1891cab21e7a05219500' (2023-07-24)
  → 'github:Mic92/sops-nix/32603de0dc988d60a7b80774dd7aed1083cd9629' (2023-08-13)
• Updated input 'sops-nix/nixpkgs-stable':
    'github:NixOS/nixpkgs/ce45b591975d070044ca24e3003c830d26fea1c8' (2023-07-22)
  → 'github:NixOS/nixpkgs/efeed708ece1a9f4ae0506ae4a4d7da264a74102' (2023-08-12)
```
2023-08-14 20:12:01 +00:00
5fb3a6be81 desko: disable jellyfin (just use mounted fs, avoid qtwebengine...) 2023-08-14 10:27:10 +00:00
dbec4b8f32 cross: expand buildInQemu to support a few more packages (e.g. g4music, but i didnt need it in the end) 2023-08-14 10:23:23 +00:00
f8b559bef1 g4music: docs on how to get it rendering correctly 2023-08-14 10:21:13 +00:00
7d9d0ce8b5 g4music: wrapGAppsHook -> wrapGAppsHook4 2023-08-14 10:20:54 +00:00
7857f123a4 new nix run '.#sync-moby' command to synchronize music onto my mobile phone 2023-08-14 08:20:06 +00:00
e3ba156fe1 fs: define /mnt/moby-home 2023-08-14 08:10:17 +00:00
c824751682 ~: don't symlink ~/Music/servo
it gets in the way for devices that have a full copy of their music
2023-08-14 08:10:06 +00:00
e5520437a5 sane-sync-music: init 2023-08-14 08:02:29 +00:00
c6211fe48f ship g4music 2023-08-14 06:17:22 +00:00
54d6c9008d g4music: init at 3.2 2023-08-14 06:13:22 +00:00
05e5edcce3 mpv: fix bug where GUI would be missing for some podcasts 2023-08-14 05:52:16 +00:00
3249baccfa mopidy: remove dead service code 2023-08-13 10:20:50 +00:00
274682cf85 mopidy: comment for how to disable spotify backend 2023-08-13 10:17:43 +00:00
31a700f6a7 mcg: support cross compilation 2023-08-13 09:39:04 +00:00
91a6fc32ef desktop: ship rhythmbox music player 2023-08-13 09:27:01 +00:00
135b87a091 mcg: init at 3.2.1 2023-08-13 09:24:17 +00:00
6b9484f611 cross: re-enable qt5 override. i dont actively use it but it is nice for testing 2023-08-13 07:49:29 +00:00
7a612b701d cross: emulateBuildMachine -> buildInQemu 2023-08-13 07:41:45 +00:00
c69fb690f1 cantata: fix to be in desktopGuiApps (because it needs qt) 2023-08-12 09:05:27 +00:00
1ef73dd69d mopidy: get spotify, jellyfin working 2023-08-12 09:00:33 +00:00
54afa1aec5 cross compiling: update status/notes 2023-08-12 08:26:18 +00:00
72c3c939e2 programs: ship cantata & mopidy for music playing (desktop) 2023-08-12 08:26:18 +00:00
67d8e89556 WIP: enable mopidy music server 2023-08-12 08:26:18 +00:00
07408813db python310Packages.keyring: re-enable cryptography dependency (it cross compiles now) 2023-08-12 08:03:16 +00:00
436760a592 python310Packages.keyring: fix cross compilation 2023-08-12 07:58:15 +00:00
5c758df032 gpodder-adaptive: fix cross compilation 2023-08-12 04:14:47 +00:00
d12a41bfa9 gpodder-adaptive: fix pname 2023-08-12 03:51:22 +00:00
8ec22b6320 mepo: fix autoPatchelfHook placement so it cross compiles 2023-08-12 02:44:14 +00:00
95d04467a8 cross: delete binfmt experiment (it will never work); comment out broken proot attempt 2023-08-11 23:28:37 +00:00
dd53de96fe cross: tune linuxMinimal 2023-08-11 23:25:26 +00:00
8089334ea9 cross: fix dconf-system-config 2023-08-11 23:06:25 +00:00
5bbb3678ed helix: support cross compilation 2023-08-11 23:01:46 +00:00
4e7ffe3140 cross compilation: simplify emulateBuilderQemu & use linux-megous as kernel when available 2023-08-11 22:27:35 +00:00
d2842484fd cross: do emulation with a smaller linux image (experimental) 2023-08-11 22:27:35 +00:00
a8932b5a72 WIP: try to cross-compile using proot instead of binfmt
but it doesn't seem to be emulating child processes...
2023-08-11 22:27:35 +00:00
a283d1ee21 linux-megous: simplify the package definition & build w/o debug info 2023-08-11 21:34:19 +00:00
d41d802d83 nixpkgs: 2023-08-09 -> 2023-08-10
```
• Updated input 'nixpkgs-unpatched':
    'github:nixos/nixpkgs/e528fa15d5f740a25b5f536c33932db64cb10fc8' (2023-08-09)
  → 'github:nixos/nixpkgs/ce5e4a6ef2e59d89a971bc434ca8ca222b9c7f5e' (2023-08-10)
```
2023-08-11 21:32:53 +00:00
8a0efb3e40 servo: bump /tmp space to 32 GB 2023-08-11 07:10:25 +00:00
b013123669 moby: note for future self about a new display-manager failure case 2023-08-11 05:01:48 +00:00
264657d623 nixpkgs: 2023-08-08 -> 2023-08-09
```
• Updated input 'nixpkgs-unpatched':
    'github:nixos/nixpkgs/41c7605718399dcfa53dd7083793b6ae3bc969ff' (2023-08-08)
  → 'github:nixos/nixpkgs/e528fa15d5f740a25b5f536c33932db64cb10fc8' (2023-08-09)
```
2023-08-10 21:20:56 +00:00
8ad4ee4341 bonsai: support cross compilation 2023-08-10 07:41:12 +00:00
664b21e5f1 enable eg25-manager (experimental) 2023-08-10 07:27:38 +00:00
163a7af328 fix pillow compilation 2023-08-10 05:51:01 +00:00
4adeae6d85 firefox-extensions.sponsorblock: support cross compilation 2023-08-09 23:22:32 +00:00
9168803008 seaborn (visidata dep): fix build 2023-08-09 21:08:32 +00:00
3f9c0d1b60 nixpkgs: 2023-08-07 -> 2023-08-08
```
• Updated input 'nixpkgs-unpatched':
    'github:nixos/nixpkgs/5a8e9243812ba528000995b294292d3b5e120947' (2023-08-07)
  → 'github:nixos/nixpkgs/41c7605718399dcfa53dd7083793b6ae3bc969ff' (2023-08-08)
```
2023-08-09 07:58:03 +00:00
cc35317b54 bonsai: update PR to use PREFIX instead of DESTDIR 2023-08-09 03:16:55 +00:00
006070d08f cross: confirm that qt5 module emulation is actually necessary 2023-08-08 22:09:35 +00:00
19f6a98d31 nixpatches: note that i sent the mepo patch upstream 2023-08-08 07:03:45 +00:00
301abbe155 gtk{3,4}: acquire schema compilation patches via upstream PR 2023-08-08 01:53:48 +00:00
dab3a2d0a9 mate.engrampa: acquire cross compilation patch from upstream pr 2023-08-08 01:51:55 +00:00
3a00e93dc3 cross: fix mepo to cross compile again 2023-08-08 01:51:55 +00:00
4c4b0ce920 nixpkgs: 2023-08-04 -> 2023-08-07
```
• Updated input 'nixpkgs-unpatched':
    'github:nixos/nixpkgs/18036c0be90f4e308ae3ebcab0e14aae0336fe42' (2023-08-04)
  → 'github:nixos/nixpkgs/5a8e9243812ba528000995b294292d3b5e120947' (2023-08-07)
```
2023-08-08 01:51:55 +00:00
b9259ff8b9 gtk{3,4}: tidy schema compilation patches 2023-08-08 01:51:55 +00:00
e2ed37196f browserpass-extension: emulate 2023-08-07 10:41:32 +00:00
b343d5d83a firefox-extensions.browserpass-extensions: enable module access via passthru 2023-08-07 10:26:29 +00:00
9bbff0d7a7 firefox-extensions.bypass-paywalls-clean: fix cross compilation by using the build-time zip 2023-08-07 10:26:24 +00:00
014fb5a633 gtk4 schema fix: include needed mesonEmulatorHook
this is probably needed for gtk3 too, only we get it for free when introspection is enabled
2023-08-07 08:30:56 +00:00
76d8921bdf eg25-manager: fix by importing the legacy libgpiod v1 as it appeared nixpkgs 1 wk ago 2023-08-07 08:29:06 +00:00
b7f23a032c eg25-manager: init at 0.4.6 2023-08-07 08:05:34 +00:00
68be1ba2a1 gtk{3,4}: compile schemas even on cross builds 2023-08-07 08:05:07 +00:00
5a6bb475c4 conky: support cross-compilation/wayland via nixpkgs patch stack 2023-08-07 07:33:01 +00:00
132e15cb9f sxmo-utils: switch runtime shell back to bash, but still use busybux during build
no need to patch it out of the build process
2023-08-07 04:29:38 +00:00
07c0878d11 sxmo-utils: force the scripts to run under busybox instead of default /bin/sh 2023-08-07 03:44:07 +00:00
b993479ada sxmo-utils: use busybox 2023-08-07 03:44:07 +00:00
8dc568d52e ship mate.engrampa as archive manager (after getting it to cross compile) 2023-08-07 03:43:37 +00:00
44ee7cd3db conky: build without emulation 2023-08-06 20:59:42 +00:00
2773cd8406 nixpkgs: 2023-08-02 -> 2023-08-04
```
• Updated input 'nixpkgs-unpatched':
    'github:nixos/nixpkgs/66aedfd010204949cb225cf749be08cb13ce1813' (2023-08-02)
  → 'github:nixos/nixpkgs/18036c0be90f4e308ae3ebcab0e14aae0336fe42' (2023-08-04)
```
2023-08-06 09:59:46 +00:00
9bb26e0199 nixpatches: update xdg-utils cross patch 2023-08-06 09:42:25 +00:00
8d772074ba gupnp: acquire cross patch from upstream nixpkgs PR 2023-08-06 09:16:43 +00:00
18c6ad0663 cross: mepo: fix ld-linux path 2023-08-06 08:53:59 +00:00
24a91acd0a firefox-extensions: update hashes for sponsorblock, ublock-origin 2023-08-06 08:33:18 +00:00
bec5241326 qt5: build in emulator
qt5.qtbase does build, after an hour. qtdeclarative fails to complete even after 3 hours
2023-08-06 08:15:47 +00:00
2b5365d774 packages: only build nheko on desktop 2023-08-06 08:15:05 +00:00
e377a9f05b cross: emulateBuildMachine: bump RAM limit & add helper overrideAttrs fn 2023-08-06 08:13:46 +00:00
2f53e94cc9 mepo_1_1: remove package
i can just use normal `mepo` now.
2023-08-06 08:11:27 +00:00
75770cd34b cross compilation: get mepo to cross compile
in the end i don't even need to emulate zig... (yay)

the mepo_1_1 stuff isn't needed. i'll delete it next patch
2023-08-06 08:09:13 +00:00
a4860c3963 cross: allow makeWrapper in emulated builds 2023-08-06 01:51:55 +00:00
4b072ecbe5 cross: support browserpass-extension w/o emulation 2023-08-06 01:51:14 +00:00
3423f103fc firefox-extensions: tidy the wrapping and dont double-wrap 2023-08-06 01:50:40 +00:00
c3bb776149 cross: qt5.qtbase: build in qemu, not binfmt (holy cow, it actually builds this way) 2023-08-05 12:08:22 +00:00
d31aac4d19 tangram: build the blueprint compiler via qemu, not binfmt 2023-08-05 12:03:05 +00:00
378e72ceb7 cross: automatically convert nativeBuildInputs into their host equivalent 2023-08-05 11:53:14 +00:00
d86be97ced cross: fix emulateBuilder to use build bash in the vmRunCommand 2023-08-05 09:54:56 +00:00
44388b132a cross: fix enableParallelBuilding to work 2023-08-05 09:54:56 +00:00
cd6b112d33 build bonsai/hare/qbe without relying on binfmt emulation 2023-08-05 09:54:56 +00:00
8eb6be863a cross: koreader: build luajit from emulated stdenv, instead of grabbing it from the emulated packageset 2023-08-05 09:54:14 +00:00
3b5ff938ce flake: apply nixpatches/list.nix using the build patcher, not the emulated host patcher 2023-08-05 09:32:50 +00:00
2685c91dd9 cross: build mepo without emulating as many packages 2023-08-05 00:42:07 +00:00
169354bd33 sxmo-utils: fix udev rule 2023-08-04 22:39:30 +00:00
cc1889d2dd mpvScripts.mpris: acquire cross compilation patch via nixpkgs PR 2023-08-04 08:16:06 +00:00
22ffcb1b55 remove fwupd to reduce cross-compilation patches 2023-08-04 07:47:00 +00:00
76abbac6f6 fwupd: define as a sane.program 2023-08-04 07:35:13 +00:00
12e15b6456 wvkbd: fetch cross-compilation fix via nixpkgs PR 2023-08-04 07:27:11 +00:00
8c2a4a31bf cross compilation: remove dead code 2023-08-04 07:21:15 +00:00
1fcfa04447 remove python.pkgs.cryptography as it doesn't cross compile (yet) 2023-08-04 07:19:30 +00:00
f3af31c727 cross: comment out packages i haven't used for an extended time 2023-08-04 05:20:20 +00:00
21e22096b1 uninsane-dot-org: 2023-07-25 -> 2023-08-03 2023-08-04 04:59:56 +00:00
c9383da414 cross: get bonsai to build w/o emulating anything other than stdenv 2023-08-04 04:07:06 +00:00
b82bb13f4f gssapi cross fix: pull from nixpkgs pr 2023-08-04 00:39:02 +00:00
346a68884b cross: fix qt5.overrideScope' deprecation wraning 2023-08-03 23:47:26 +00:00
eb04129959 cross: emulate hare/harec at the consumer level 2023-08-03 23:46:29 +00:00
2e93f58795 update cross-compilation PR URIs 2023-08-03 22:12:10 +00:00
26b77221da nixpkgs: 2023-08-01 -> 2023-08-02
```
• Updated input 'nixpkgs-unpatched':
    'github:nixos/nixpkgs/9e1960bc196baf6881340d53dccb203a951745a2' (2023-08-01)
  → 'github:nixos/nixpkgs/66aedfd010204949cb225cf749be08cb13ce1813' (2023-08-02)
```
2023-08-03 12:32:21 +00:00
6877507ae0 xdg-utils: patch cross compilation via nixpkgs PR 2023-08-03 12:30:31 +00:00
8757f86c57 gupnp: patch via nixpkgs PR 2023-08-03 12:06:40 +00:00
633997f452 gupnp: update patch to point to nixpkgs PR 2023-08-03 11:38:43 +00:00
ff9163b365 iio-sensor-proxy: fix cross via nixpkgs PR 2023-08-03 10:34:50 +00:00
edd86e3981 upower: fix cross via nixpkgs PR 2023-08-03 10:28:21 +00:00
c9b60788b5 update bonsai/hare-ev/hare-json patches 2023-08-03 09:49:19 +00:00
66dad1e519 libgnt patch: use nixpkgs PR 2023-08-03 09:23:26 +00:00
687ceba474 libkiwix: downgrade to 12.0.0 again 2023-08-03 08:47:15 +00:00
6e85f26964 gupnp: fix via upstream PR 2023-08-03 08:46:36 +00:00
40dc8d698e libkiwix: 12.0.0 -> 12.1.0 2023-08-03 06:10:23 +00:00
350f7e32f8 desko: disable dino/gajim XMPP clients until i need them again 2023-08-03 06:10:03 +00:00
3a5b72a258 moby: ship chatty 2023-08-03 06:10:03 +00:00
b40ac95b5c cross: get chatty-latest to cross compile 2023-08-03 06:10:03 +00:00
c1a8d1aa18 sane-bt-search: document the --h265 option 2023-08-03 05:28:32 +00:00
03d7806adf flakey-tests: leave a note about libqmi 2023-08-03 00:39:44 +00:00
9d06bfb544 cross: compile tangram with less emulation 2023-08-03 00:39:18 +00:00
bf5ac3cb76 cross: get mepo to cross compile
haven't tried running it. its dependency on gpsd drags in the host
python, so probably *something* will need fixing.

this reduces the closure by a full 1GB though.
2023-08-03 00:38:21 +00:00
85e63caeb0 nixpkgs: 2023-07-29 -> 2023-08-01
```
• Updated input 'nixpkgs-unpatched':
    'github:nixos/nixpkgs/e6ab46982debeab9831236869539a507f670a129' (2023-07-29)
  → 'github:nixos/nixpkgs/9e1960bc196baf6881340d53dccb203a951745a2' (2023-08-01)
```
2023-08-02 21:32:11 +00:00
dcf97b70e1 programs: use the declPackageSet helper 2023-08-02 21:20:50 +00:00
44059b34c7 don't ship unused sane-scripts 2023-08-02 21:09:16 +00:00
561802ec41 cross: add links to upstream PRs/issues 2023-08-02 20:30:24 +00:00
b464e60a77 chatty: build w/o samba 2023-08-02 20:30:06 +00:00
b73b4b0439 chatty: persist the share directory 2023-08-02 11:36:49 +00:00
991685d149 chatty-latest: add glib-networking to fix TLS 2023-08-02 11:13:11 +00:00
4d7111feef chatty: try a newer build (still fails homeserver handshake) 2023-08-02 10:49:44 +00:00
bd8cec311e cleanup: guiApps syntax 2023-08-02 08:35:36 +00:00
fd174a0475 gui: ship nheko on moby again 2023-08-02 08:33:58 +00:00
3e83a1956c cross: try to fix fractal compilation (no luck) 2023-08-02 08:31:48 +00:00
57f272c9ba sway: expose needed env vars to user dbus services (xdg-desktop-portal) 2023-08-02 08:23:14 +00:00
186c09594d sway: remove default packages (unused) 2023-08-02 08:19:56 +00:00
c74ba4e733 sway: enable xdg-desktop-portal-gtk
it's failing to start though
2023-08-02 08:16:05 +00:00
8a126d0a64 programs: explicitly declare dependencies on gnome-keyring 2023-08-02 07:40:57 +00:00
2e04a512b3 programs: get a semi-working build of chatty (need to set xdg.portal?) 2023-08-02 07:15:33 +00:00
b4c83987f9 overlays: split the pipewire ffado tweak into a preferences overlay 2023-08-02 06:38:46 +00:00
cc09832187 cross: fix libshumate build (used by fractal) 2023-08-02 06:25:53 +00:00
33b41482e2 cross: use upstream iio-sensor-proxy fix 2023-08-02 06:24:59 +00:00
6e523e7162 fractal: fix fractal-latest, and persist data directory 2023-08-02 06:24:00 +00:00
995c586fd9 nixpatches: remove upstreamed gpodder xdg-utils patch 2023-08-01 22:50:20 +00:00
3aa5852cf2 alsa-project as a scope: push patch upstream 2023-08-01 22:48:02 +00:00
8efad09cf4 cross: remove unused qt stuff 2023-08-01 22:47:43 +00:00
a7b71979f9 cross: move gst-plugins-good override into nheko
and fully disable the qt5 stuff; reduces rebuilds & saves 20MB closure
2023-08-01 22:04:28 +00:00
1082ab22bf cross: work to upstream a few more things (deployed & working) 2023-08-01 21:48:25 +00:00
5b2598bcaa cross: upstream a bunch of stuff (still waiting on build...) 2023-08-01 08:07:27 +00:00
1ba877b325 upnp-forward: add a timeout to the unit
especially, this lets the target die, and the timer restart, when the UPNP stuff hangs
2023-07-31 11:06:04 +00:00
7ab5cfa698 cross: update gcr_4 blockers 2023-07-31 10:31:12 +00:00
8a367b718d moby: replace file-roller with xarchiver 2023-07-31 09:59:15 +00:00
4e37f2c651 cross: annotate upstreaming status 2023-07-31 08:17:32 +00:00
2cf714c999 nixpkgs: 2023-07-25 -> 2023-07-29
```
• Updated input 'nixpkgs-unpatched':
    'github:nixos/nixpkgs/ef99fa5c5ed624460217c31ac4271cfb5cb2502c' (2023-07-25)
  → 'github:nixos/nixpkgs/e6ab46982debeab9831236869539a507f670a129' (2023-07-29)
```
2023-07-31 03:37:32 +00:00
6f835db8f3 cross: don't unnecessarily emulate pkgsi686Linux.tbb 2023-07-31 03:13:26 +00:00
206dd84477 sane-reclaim-disk-space: remove rmlint
i wasn't using it, and now we can emulate less :)
2023-07-31 03:10:38 +00:00
381a111944 cross: remove explicit emulation of packages i no longer use on arm 2023-07-31 03:06:54 +00:00
3138482ed9 cross: remove ununsed emulation-based compilation fixes 2023-07-31 02:54:32 +00:00
1796d3c259 sxmo-utils: call out (but dont apply) the lock-state perf patch 2023-07-31 02:22:16 +00:00
b565a719fb sxmo-utils: fetch upstreamed xkb path patch instead of using local patch 2023-07-31 02:13:15 +00:00
f7ac46fd30 refactor: don't hardcode the libreoffice 'fresh' variant 2023-07-31 02:03:19 +00:00
61cf801983 nixpatches: use the dtrx from upstream PR 2023-07-31 01:59:53 +00:00
ae9a81919f replace unar with dtrx
the former is costly to (cross-)compile
2023-07-31 01:13:15 +00:00
9ca8c74ed7 feeds: add wireshark podcast 2023-07-31 00:11:47 +00:00
fd58896c0c cross: no longer emulate perl packages 2023-07-31 00:03:21 +00:00
d2a46e88f6 gui: disable chromium 2023-07-31 00:02:09 +00:00
5cd05d8762 programs: split consoleUtils into separate normal/desktop sets 2023-07-30 11:59:38 +00:00
a35f3e238d jellyfin: switch back to stock qt5 upstream 2023-07-30 11:30:17 +00:00
039d685e3c flake: deploy-moby: deploy to the wireguard address, to handle when the device is docked 2023-07-30 11:23:02 +00:00
da42b3ddd7 sxmo: address fonts.fonts -> fonts.packages deprecation warning 2023-07-30 02:26:17 +00:00
51eaf83be8 komikku: downgrade to nixpkgs source, keeping my upstreamed patch 2023-07-30 01:49:12 +00:00
d8a6a1df41 cross fixes 2023-07-30 01:48:29 +00:00
36176abdf3 libwacom, pipewire: fix build/remove qt5 dep 2023-07-30 01:45:37 +00:00
085c38ea47 moby: ship portfolio instead of nautilus file browser 2023-07-30 01:44:49 +00:00
9adaece9d6 sane.programs.nheko: split to own file 2023-07-30 01:44:08 +00:00
df8e572a8f sane.programs.megapixels: ship w/o qt deps 2023-07-30 01:43:35 +00:00
d39b698066 sane.programs.fractal: split to separate file 2023-07-30 01:42:58 +00:00
83c483395c fractal-lated: bump 2023-07-30 01:41:47 +00:00
2e08321016 cross: leave notes for what blocks each fix from being upstreamed 2023-07-29 10:57:55 +00:00
abf80d765c cross: fix nautilus; reduce emulation for tracker{,-miners} 2023-07-29 10:57:05 +00:00
8c0b215832 overlays: disable-flakey-tests: remove dead code 2023-07-28 10:49:05 +00:00
28c9bd3cac overlays: disable-flakey-tests: remove ell/libwacom (not flakey); add elfutils 2023-07-28 10:49:05 +00:00
e1e40332f7 cross: reduce gtk-related emulation (esp wrapGAppsHook) 2023-07-28 10:49:05 +00:00
28ef8141f7 nixpkgs: 2023-07-24 -> 2023-07-25; uninsane-dot-org
```
• Updated input 'nixpkgs-unpatched':
    'github:nixos/nixpkgs/b12803b6d90e2e583429bb79b859ca53c348b39a' (2023-07-24)
  → 'github:nixos/nixpkgs/ef99fa5c5ed624460217c31ac4271cfb5cb2502c' (2023-07-25)
• Updated input 'uninsane-dot-org':
    'git+https://git.uninsane.org/colin/uninsane?ref=refs/heads/master&rev=1542323cfb46a8950c17a3afa5f7cd2e62dd9672' (2023-07-02)
  → 'git+https://git.uninsane.org/colin/uninsane?ref=refs/heads/master&rev=fcec1d09b6c469d9425a716b11b4f4995a285774' (2023-07-25)
```
2023-07-28 01:20:25 +00:00
ad6b0ea75e nixpkgs: 2023-07-22 -> 2023-07-24
```
• Updated input 'nixpkgs-unpatched':
    'github:nixos/nixpkgs/12303c652b881435065a98729eb7278313041e49' (2023-07-22)
  → 'github:nixos/nixpkgs/b12803b6d90e2e583429bb79b859ca53c348b39a' (2023-07-24)
• Updated input 'sops-nix':
    'github:Mic92/sops-nix/bd695cc4d0a5e1bead703cc1bec5fa3094820a81' (2023-07-16)
  → 'github:Mic92/sops-nix/c36df4fe4bf4bb87759b1891cab21e7a05219500' (2023-07-24)
• Updated input 'sops-nix/nixpkgs-stable':
    'github:NixOS/nixpkgs/13231eccfa1da771afa5c0807fdd73e05a1ec4e6' (2023-07-16)
  → 'github:NixOS/nixpkgs/ce45b591975d070044ca24e3003c830d26fea1c8' (2023-07-22)
```
2023-07-28 01:20:25 +00:00
f59da7ad0f feeds: add minding our way 2023-07-28 01:14:28 +00:00
183457444c feeds: add Ezra Klein show 2023-07-28 01:08:19 +00:00
28a91723b8 feeds: add Atlas Obscura podcast 2023-07-28 01:06:15 +00:00
9b53a28920 lemmy-server: remove useless override 2023-07-28 00:57:08 +00:00
49e33d7238 mpv-uosc-latest: warn once next release hits nixpkgs 2023-07-28 00:55:37 +00:00
6572557b5b flake: add help program 2023-07-28 00:49:44 +00:00
e18fb2ce4e mpv: change reverse seek from 30s to 10s 2023-07-28 00:34:49 +00:00
027e7cb074 cross: fix mpvScripts.mpris compilation 2023-07-27 12:16:23 +00:00
13ae0b798c mpv-uosc-latest: fix fonts 2023-07-27 12:16:09 +00:00
d8675b544a mpv: uosc: fix for touchscreen support 2023-07-27 11:45:28 +00:00
5bf5d82d30 mpv: add the mpris plugin 2023-07-27 05:47:21 +00:00
0c92f3695a mpv: switch to uosc interface 2023-07-26 12:36:01 +00:00
558258c367 moby: switch to mpv
needs some more tuning, but ditching vlc means no more Qt, and it looks
like i can tune the mpv UI to be substantially better for my wants
2023-07-26 09:56:35 +00:00
7f13c482e5 cross compilation: support clapper 2023-07-26 08:51:51 +00:00
7b21ede5c4 moby: enable gpsd 2023-07-25 12:05:41 +00:00
219bb02cb8 refactor: moby: cleaner way to disable gestures 2023-07-25 10:56:29 +00:00
2df59f7c7d moby: rename firmware.nix -> bootloader.nix 2023-07-25 10:52:58 +00:00
11a7370a76 moby: sxmo: dont auto-start gestures daemon 2023-07-24 21:46:23 +00:00
44e3b01e7c moby: sxmo: waybar: remove the 2px shadows 2023-07-24 21:11:48 +00:00
c7f0e5c8b5 moby: sxmo: waybar: use consistent left/right padding 2023-07-24 21:11:08 +00:00
7ce33340f9 moby: sxmo: style titlebars 2023-07-24 10:50:08 +00:00
8f77b1db94 moby: sxmo: swaybar: decrease animations 0.3s -> 0.2s 2023-07-24 09:36:21 +00:00
f4cac0c158 moby: sxmo: swaybar: shrink from 32 px -> 28 px 2023-07-24 09:33:02 +00:00
04106e660e moby: sxmo: stylize the waybar to match other colors 2023-07-24 08:13:56 +00:00
6ed550b813 moby: theme bemenu to match desktop background 2023-07-24 03:33:50 +00:00
1cfd0fab6a sxmo: patch over duplicated lisgd services 2023-07-24 01:36:13 +00:00
5a31a0b415 koreader-from-src: clean up some dead code/comments 2023-07-23 23:44:33 +00:00
eb82268eee nipkgs: 2023-07-21 -> 2023-07-22; mobile-nixos 2023-05-07 -> 2023-07-22
```
• Updated input 'mobile-nixos':
    'github:nixos/mobile-nixos/ba4638836e94a8f16d1d1f9e8c0530b86078029c' (2023-05-07)
  → 'github:nixos/mobile-nixos/56fc9f9619f305f0865354975a98d22410eed127' (2023-07-22)
• Updated input 'nixpkgs-unpatched':
    'github:nixos/nixpkgs/9ca785644d067445a4aa749902b29ccef61f7476' (2023-07-21)
  → 'github:nixos/nixpkgs/12303c652b881435065a98729eb7278313041e49' (2023-07-22)
```
2023-07-23 21:04:46 +00:00
86964f6fde koreader: ship the from-src build 2023-07-23 21:00:43 +00:00
3121a6a7e9 cross: koreader-from-src: fix by emulating luajit 2023-07-23 11:37:18 +00:00
c353f06832 koreader-from-src: support cross compilation (cross luajit fails due to table.pack == nil) 2023-07-23 01:29:20 +00:00
b6a878757c sane-bt-search: implement --h265 flag 2023-07-22 21:56:00 +00:00
c862b559e7 sane-bt-search: error on bad --top=N usage 2023-07-22 21:55:24 +00:00
64c8dabaf2 nixpkgs: 2023-07-16 -> 2023-07-21
```
• Updated input 'nixpkgs-unpatched':
    'github:nixos/nixpkgs/6cee3b5893090b0f5f0a06b4cf42ca4e60e5d222' (2023-07-16)
  → 'github:nixos/nixpkgs/9ca785644d067445a4aa749902b29ccef61f7476' (2023-07-21)
```
2023-07-22 10:57:43 +00:00
512b5d78d4 moby: update bg, and add the blur/fade to the image instead of to conky 2023-07-22 10:56:06 +00:00
0479a43f2d koreader-from-src: remove some unneeded buildInputs 2023-07-22 09:32:15 +00:00
307e93de3b koreader: RSS: specify download_full_article=true by default 2023-07-22 08:55:05 +00:00
13d623201e koreader-from-src: it runs! 2023-07-22 08:44:11 +00:00
f223af584d koreader: build to install
launch doesn't work because it fails to load libSDL.so
2023-07-22 06:03:54 +00:00
9a2f648463 koreader-from-src: get the entire buildPhase working
fails in install: bash: line 1: /build/koreader/platform/debian/do_debian_package.sh: cannot execute: required file not found
2023-07-22 06:03:54 +00:00
e29361f05e koreader-from-src: get glib input working 2023-07-22 06:03:54 +00:00
439eeeeb45 koreader-from-src: get lua-Spore, libzmq, czmq, libffi deps passing 2023-07-22 06:03:54 +00:00
6a6276c2e0 koreader-from-src: get deps compiling: lua-htmlparser, lpeg 2023-07-22 06:03:54 +00:00
e5d311188e koreader-from-src: get a few more dependencies to succeed 2023-07-22 06:03:54 +00:00
98ef5d77c3 koreader-from-src: get mupdf to build 2023-07-22 06:03:54 +00:00
f3edafd11c koreader-from-src: add most remaining sources 2023-07-22 06:03:54 +00:00
2fdf95cea6 koreader-from-src: add more sources 2023-07-22 06:03:54 +00:00
7b8af3e719 koreader-from-src: remove deepClone and keepDotGit options 2023-07-22 06:03:54 +00:00
f95c45fb8e koreader-from-src: enable freetype2, fbink sources
it seems we still check out submodules even if deepClone is false?
2023-07-22 06:03:54 +00:00
0be20351a1 koreader-from-src: add fribidi source 2023-07-22 06:03:54 +00:00
519ee152b9 koreader-from-src: sort the thirdparty sources alphabetically 2023-07-22 06:03:54 +00:00
5baba0378f koreader-from-src: add curl, zstd sources 2023-07-22 06:03:54 +00:00
3ac193f9b4 koreader-from-src: specify thirdparty sources as attrs instead of list 2023-07-22 06:03:54 +00:00
8b72338f3a koreader-from-src: add sources for libk2pdfopt 2023-07-22 06:03:54 +00:00
c82e445e07 koreader-from-src: add sources for tesseract/leptonica 2023-07-22 06:03:54 +00:00
5ce0805046 koreader-from-src: nit: tidy fetchgit impl 2023-07-22 06:03:54 +00:00
7e5904c073 koreader-from-src: add libpng dep 2023-07-22 06:03:54 +00:00
cc50ad172c koreader-from-src: vendor zlib 2023-07-22 06:03:54 +00:00
29a4466750 koreader-from-src: get further into the build; split sources into own file 2023-07-22 06:03:54 +00:00
ba9eebcda8 koreader-from-src: tidy up 2023-07-22 06:03:54 +00:00
44ba0adacc koreader-from-src: advance the build past luajit (the following jpeg dep fails) 2023-07-22 06:03:54 +00:00
695ff8d057 WIP: build koreader from source 2023-07-22 06:03:54 +00:00
c71136c315 sxmo: conky: tune the shade colors 2023-07-21 23:07:52 +00:00
e7d5b14ab0 sxmo: battery_estimate: improve edge cases 2023-07-21 22:51:24 +00:00
6d216c14fa moby: conky: update config to work better with nixos bg 2023-07-21 22:46:59 +00:00
f037e0b5a4 sxmo: update docs links 2023-07-21 22:46:14 +00:00
75fe6226c8 moby: use librewolf as default browser again 2023-07-21 21:29:48 +00:00
556664f10d sxmo: start lisgd by default again
patching it out the way i was is incompatible with the upstream patch which
makes its enablement status persistent
2023-07-21 21:28:42 +00:00
bc46dc310d sxmo: define a background 2023-07-21 21:28:26 +00:00
94bae57411 gthumb: add svg mime association 2023-07-21 20:00:45 +00:00
bd16aaa884 sxmo-utils: fix so auto-rotate does not restart gestures 2023-07-21 10:17:21 +00:00
777d1a1588 add todo: pkgs.impure-cached set 2023-07-21 09:13:15 +00:00
a73937c32c complete a todo: webkitgtk mem use/swap 2023-07-21 09:10:13 +00:00
ee284901ff firefox-extensions: bypass-paywalls-clean: disable nag pages 2023-07-18 22:38:30 +00:00
0cb81bb86f browserpass-extension: nit: remove unused parameter 2023-07-18 22:08:27 +00:00
10bdd3c05a firefox: ship bypass-paywalls-clean extension 2023-07-18 22:08:27 +00:00
5ed33d90cf moby: fix sidebery disable type 2023-07-18 20:06:36 +00:00
535bbd2c0b sane.{programs,user}.fs: pass fs values onto sane.fs unmerged
notably, this allows ~/.config/zsh/.zshrc to be specified by more than one location, and for the values to not overwrite one another
2023-07-18 11:25:27 +00:00
ad16e50081 sxmo: configure screenshot directory 2023-07-18 10:40:54 +00:00
9f6760a37f moby: doc: add resources 2023-07-18 10:39:44 +00:00
ef203c3215 sxmo-utils: use makeBinaryWrapper for better perf 2023-07-18 10:18:15 +00:00
e3b7896169 zsh/starship: improve padding on ssh line 2023-07-18 10:17:13 +00:00
91f47f863d zsh: factor out the colors to avoid repeating them 2023-07-18 10:14:13 +00:00
532a78e2b2 desko: disable wpa_supplicant 2023-07-18 10:02:25 +00:00
11a4b7006e upnp-forwards: fix timer to actually run every hour 2023-07-18 09:54:06 +00:00
a907fa1ca7 flake: rework so deploy scripts can be run in parallel 2023-07-18 09:10:25 +00:00
90279efebb sxmo-utils: add missing grim dep (for wayland screenshots) 2023-07-18 08:29:42 +00:00
5c1eaf273e zsh/starship: fix bg color for ssh prompt 2023-07-18 08:28:53 +00:00
f12737b1f9 starship: try some other status symbols (but stay as is) 2023-07-18 03:51:03 +00:00
254b248bf3 starship: configure bg color for username section 2023-07-18 03:41:45 +00:00
431b1054e6 complete starship/zsh perf todo 2023-07-18 03:32:31 +00:00
e6b5223e2e zsh: starship: theme 2023-07-18 03:26:51 +00:00
d583d5db4f cross: emulate less of gnustep 2023-07-18 02:50:35 +00:00
1709f64a69 zsh/starship: fix init 2023-07-18 02:17:44 +00:00
23e95ba2ba modules: fs: symlink.text: allow specifying it multiple times 2023-07-18 02:17:25 +00:00
1dfd894568 cross: gnustep: emulate only gnustep.base 2023-07-18 01:32:50 +00:00
13d3a5ba6b cross: silence qt.overrideScope' warning 2023-07-18 01:32:06 +00:00
2716c0398b zsh: switch to starship prompt 2023-07-18 01:30:53 +00:00
0ba1a9f984 zsh: factor p10k stuff out of the main module; minimal support for starship prompt 2023-07-18 01:28:30 +00:00
1ddd79fdf0 complete todos: sway super; firefox first run prompts 2023-07-18 00:43:58 +00:00
761d60a7f4 cross: fix browserpass-extension compilation 2023-07-17 22:28:05 +00:00
82f141c0df firefox-extensions: make it a scope 2023-07-17 22:27:49 +00:00
6ce10b00af firefox-extensions: refactor to be more amenable to overrides 2023-07-17 22:19:29 +00:00
ff17ed599d firefox: disable metamask 2023-07-17 21:33:15 +00:00
96d0c52d28 refactor: firefox-extensions: patch in preferences at the same place we define how to build the addon 2023-07-17 21:32:10 +00:00
007c13f975 sponsorblock: remove the goddamn first-run popup
fuck javascript/typescript/whatever

y'all started with a low-complexity ecosystem and then drove the whole thing with some apparent goal of maximizing complexity

minified js? WHY? compile to native/wasm if you care about perf, else optimize for readability/patchability and leave compression to gzip like a normal fucking person
2023-07-17 21:22:24 +00:00
2b9de91540 firefox-extensions: make the patching logic even more pluggable 2023-07-17 20:47:55 +00:00
0175adbf27 firefox-extensions: make the patching logic more pluggable 2023-07-17 20:41:04 +00:00
83bc056ceb nixpkgs: 2023-07-15 -> 2023-07-16
```
• Updated input 'nixpkgs-unpatched':
    'github:nixos/nixpkgs/8acef304efe70152463a6399f73e636bcc363813' (2023-07-15)
  → 'github:nixos/nixpkgs/6cee3b5893090b0f5f0a06b4cf42ca4e60e5d222' (2023-07-16)
• Updated input 'sops-nix':
    'github:Mic92/sops-nix/cfe47aff8660fd760b1db89613a3205c2c4ba7b6' (2023-07-15)
  → 'github:Mic92/sops-nix/bd695cc4d0a5e1bead703cc1bec5fa3094820a81' (2023-07-16)
• Updated input 'sops-nix/nixpkgs-stable':
    'github:NixOS/nixpkgs/3dc2bc15956db2ff2316af45eefd45803fc1372b' (2023-07-15)
  → 'github:NixOS/nixpkgs/13231eccfa1da771afa5c0807fdd73e05a1ec4e6' (2023-07-16)
```
2023-07-17 20:12:50 +00:00
0e5cb3ada9 nixpkgs: 2023-07-14 -> 2023-07-15
```
• Updated input 'nixpkgs-unpatched':
    'github:nixos/nixpkgs/dfdbcc428f365071f0ca3888f6ec8c25c3792885' (2023-07-14)
  → 'github:nixos/nixpkgs/8acef304efe70152463a6399f73e636bcc363813' (2023-07-15)
```
2023-07-17 19:53:29 +00:00
b4d58a1515 sxmo: do restart lisgd on rotation, but don't enable lisgd by default
the restart logic is racy, and lisgd with autorotate becomes unusable after long enough
2023-07-17 19:53:19 +00:00
88153fe7a1 lemoa: 0.2.0 -> 0.3.0 2023-07-17 06:12:46 +00:00
ad67f7b13e browserpass-extension: move to firefox-extensions scope 2023-07-17 05:25:12 +00:00
40cc0367d8 zsh: switch(): add keep-going flag 2023-07-17 05:22:12 +00:00
a10e31257a sxmo-utils: sxmo_rotate: don't restart lisgd on sway 2023-07-17 05:21:46 +00:00
d7929ed06a firefox: generalize the facility to remove permissions from an extension 2023-07-17 03:57:42 +00:00
2c96ecfd0d firefox-extensions: factor out into own file 2023-07-17 03:12:04 +00:00
7c9664270d sane-wipe-browser: also kill browser processes that might be sticking around in ram 2023-07-17 01:55:32 +00:00
6f5c5a5113 browserpass-extension: disable startup/install notification 2023-07-17 01:55:32 +00:00
ebcc0c269e trust-dns: remove from this repo
it's fully upstreamed into nixpkgs now
2023-07-16 12:27:23 +00:00
57681bfa6d moby: re-enable firefox, but still default to epiphany 2023-07-16 12:26:31 +00:00
9058caac1d moby: firefox: disable sideberry 2023-07-16 12:25:42 +00:00
60650f82fe firefox: switch back to the default UI -- not pmos-mobile 2023-07-16 12:25:12 +00:00
11b4d2d66a doc: mime: show how to go from scheme -> .desktop association 2023-07-16 12:17:54 +00:00
0111d4220e nixos/trust-dns: add myself as maintainer 2023-07-16 04:13:19 +00:00
83b76dc47e moby: fix occasional blank screen on boot 2023-07-16 00:37:09 +00:00
c7ca3ad563 wifi: add new network 2023-07-15 22:40:18 +00:00
1c891f45df wifi: add new network 2023-07-15 22:36:53 +00:00
dc6790e168 nixpkgs: 2023-07-13 -> 2023-07-14
```
• Updated input 'nixpkgs-unpatched':
    'github:nixos/nixpkgs/e74e68449c385db82de3170288a28cd0f608544f' (2023-07-13)
  → 'github:nixos/nixpkgs/dfdbcc428f365071f0ca3888f6ec8c25c3792885' (2023-07-14)
```
2023-07-15 22:13:14 +00:00
3bbbb6c714 sxmo-utils: sxmo_wmmenu: respect SXMO_WORKSPACE_WRAPPING 2023-07-15 22:10:15 +00:00
8788a8c67a servo: upnp-forwards.timer: fix to invoke upnp-forwards.target instead of upnp-forwards.service 2023-07-15 22:08:55 +00:00
6ae73bdf87 lemmy-server: 0.18.1 -> 0.18.2 2023-07-15 21:04:19 +00:00
47a973b603 sops-nix: 2023-07-12 -> 2023-07-15
```
• Updated input 'sops-nix':
    'github:Mic92/sops-nix/88b964df6981e4844c07be8c192aa6bdca768a10' (2023-07-12)
  → 'github:Mic92/sops-nix/cfe47aff8660fd760b1db89613a3205c2c4ba7b6' (2023-07-15)
• Updated input 'sops-nix/nixpkgs-stable':
    'github:NixOS/nixpkgs/510d721ce097150ae3b80f84b04b13b039186571' (2023-07-09)
  → 'github:NixOS/nixpkgs/3dc2bc15956db2ff2316af45eefd45803fc1372b' (2023-07-15)
```
2023-07-15 10:12:29 +00:00
20b8e2934c moby: don't ship firefox 2023-07-15 10:11:45 +00:00
088286d8f7 mime: support multiple implementors of the same association, with different priorities 2023-07-15 10:11:31 +00:00
29b53d934f trust-dns: apply PR feedback 2023-07-15 09:07:57 +00:00
77e5f82b31 programs: rename web-browser -> firefox 2023-07-15 08:51:36 +00:00
55d64eb598 programs: factor out a sane.programs.<foo>.mime schema 2023-07-15 08:44:18 +00:00
d459dd0f85 net: switch from iwd back to stock NetworkManager/wpa_supplicant 2023-07-15 07:16:10 +00:00
9594c03d66 net: port iwd secrets to a .json file that i can make backend agnostic 2023-07-15 06:38:50 +00:00
7391ce0b05 programs: move the guiApps category up to hosts/modules/gui 2023-07-15 01:02:41 +00:00
2822dd6137 programs: update tor-browser bug info 2023-07-15 00:44:24 +00:00
e5cca42717 servo: fix sane.nixcache path 2023-07-15 00:40:31 +00:00
799c53adf4 sway/waybar: remove font specification (it's probably not used by the bar i have actually deployed, anyway?) 2023-07-15 00:38:57 +00:00
0ed9394fff sway: define the secret snippets more idiomatically 2023-07-15 00:23:14 +00:00
e6a989bc92 nginx/pleroma: correct an old todo 2023-07-15 00:08:05 +00:00
2385984152 duplicity: restrict readability 2023-07-15 00:02:22 +00:00
809c9f74c3 phosh: remove dead code 2023-07-14 23:59:35 +00:00
44b15ba8ed users: apply default permissions to any user who goes through the sane.users module 2023-07-14 23:56:01 +00:00
ab7068c819 lappy: remove some dead ipfs code 2023-07-14 23:44:47 +00:00
746af067dc moby: increase menu lines in landscape mode 2023-07-14 23:41:52 +00:00
918febe884 nixpkgs: 2023-07-12 -> 2023-07-13 2023-07-14 22:58:19 +00:00
b5d1baf3ee zramSwap: increase capacity to 100% of uncompressed RAM 2023-07-14 22:57:19 +00:00
2f5c33b2b4 nixcache: tidy up substituter config 2023-07-14 22:33:33 +00:00
fdc18821ca servo: matrix-appservice-irc: remove completed todo 2023-07-14 22:11:59 +00:00
2a537cd3b1 splatmoji: port fully to wayland 2023-07-14 22:09:43 +00:00
9aa4e6c0f2 remove completed todo's 2023-07-14 21:35:25 +00:00
6b1baefaa7 moby: link to some config references 2023-07-14 06:48:02 +00:00
85483cde79 moby: allow video group to write to front-facing LEDs 2023-07-14 06:47:32 +00:00
8feafbb615 pinephone: fix flashlight permissions, the proper way (udev) 2023-07-14 05:55:44 +00:00
e1bb0de76f sxmo: fix pinephone LED permissions 2023-07-14 00:30:53 +00:00
d7fb1b615a feeds: add boginjr.com 2023-07-14 00:02:37 +00:00
8aa2712956 feeds: disable LessWrong (too noisy/too AI) and SimonWillison (too bro) 2023-07-13 23:48:50 +00:00
962ffeab7e re-enable zramSwap on all devices
this is critical on moby, though even with this swap, we run out of CMA (videoram) instead -- just later
2023-07-13 23:37:30 +00:00
e5072c8837 linux-megous: update docs 2023-07-13 23:36:22 +00:00
992ae37ccf sxmo: cleanup use of sane-lib.fs.wantedText 2023-07-13 22:20:26 +00:00
1642734aa3 hosts/common: cleanup uses of sane-lib.fs.wantedText 2023-07-13 22:19:18 +00:00
a8382fed12 hosts/common: move /var/lib/private defn into fs.nix 2023-07-13 22:18:45 +00:00
cfa50500ac hosts/common: remove commented-out code 2023-07-13 22:09:53 +00:00
d3d9b30f29 consolidate /tmp fs into hosts/modules/roles 2023-07-13 22:04:28 +00:00
4b99331e5a nixpkgs: 2023-07-11 -> 2023-07-12
```
• Updated input 'nixpkgs-unpatched':
    'github:nixos/nixpkgs/f2406198ea0e4e37d4380d0e20336c575b8f8ef9' (2023-07-11)
  → 'github:nixos/nixpkgs/2de8efefb6ce7f5e4e75bdf57376a96555986841' (2023-07-12)
```
2023-07-13 20:19:02 +00:00
76347309bc sxmo: disable Xwayland 2023-07-13 10:50:40 +00:00
1347199a87 sxmo: group these statements more logically 2023-07-13 10:50:40 +00:00
c8a59d9986 trust-dns: grab from nixpkgs PR 2023-07-13 10:49:12 +00:00
41f4d8e85a trust-dns: specify zone via shorthand 2023-07-13 10:04:20 +00:00
e38bf42506 trust-dns: migrate module to nixpkgs repo 2023-07-13 09:57:11 +00:00
ffec91a52c moby: disable zsh deadlines 2023-07-13 08:12:05 +00:00
f54f972056 vlc: move persisted data to ~/private, and add .cache/vlc, for artwork 2023-07-13 07:20:13 +00:00
f2eba95dfc users/colin: persist some notable cache directories 2023-07-13 07:17:27 +00:00
8b3521d08f fixup sxmo persistence (prev two commits don't build 2023-07-13 07:17:09 +00:00
5e07882568 sxmo: back the superd log directory with a store 2023-07-13 06:58:48 +00:00
abb4492897 sxmo: persist the /var/lib/lightdm directory 2023-07-13 06:56:03 +00:00
427e6bb696 /root: back by a physical store 2023-07-13 06:50:46 +00:00
d4ed4ae9f1 librewolf: *always* back the dot dir by a real disk
this saves ram on memory-constrained devices
2023-07-13 06:44:22 +00:00
fe5be03e0a readme: mention the doc/ folder 2023-07-13 06:35:11 +00:00
0875b6fd22 readme: suggest how to send patches 2023-07-13 06:34:19 +00:00
527607e38f desko: use sane.programs.steam 2023-07-13 06:27:54 +00:00
e416405f44 nixpkgs: 2023-07-10 -> 2023-07-11
```
• Updated input 'nixpkgs-unpatched':
    'github:nixos/nixpkgs/4a729ce4b1fe5ec4fffc71c67c96aa5184ebb462' (2023-07-10)
  → 'github:nixos/nixpkgs/f2406198ea0e4e37d4380d0e20336c575b8f8ef9' (2023-07-11)
```
2023-07-13 02:05:01 +00:00
5090340189 sxmo: battery_estimate: zero-pad the minutes 2023-07-13 02:02:25 +00:00
7dc0899784 sxmo: conky: tune config 2023-07-13 02:00:15 +00:00
19b697cc52 conky-config: remove trailing whitespace 2023-07-13 01:36:24 +00:00
cd011d845a sxmo: include superd on path 2023-07-13 01:35:37 +00:00
67a52eca86 sxmo: conky: include battery estimate 2023-07-13 01:35:31 +00:00
29bf9d410f sxmo: customize the conky display 2023-07-13 01:35:23 +00:00
694a5383cb sane-bt-search: ignore the uhd tag 2023-07-13 01:35:12 +00:00
96b3896017 sane-vpn-up/down: fix sane-ip-check invocation to not use UPNP 2023-07-13 01:33:52 +00:00
4a7398da2f trust-dns: finish hardening 2023-07-13 01:33:31 +00:00
ceef95cbe3 fix komikku patch hash 2023-07-13 00:59:30 +00:00
99d97af742 sops-nix: 2023-07-09 -> 2023-07-12
```
• Updated input 'sops-nix':
    'github:Mic92/sops-nix/b2047c8fc963407916ad3834165309007dc5a1f7' (2023-07-09)
  → 'github:Mic92/sops-nix/88b964df6981e4844c07be8c192aa6bdca768a10' (2023-07-12)
```
2023-07-12 11:38:16 +00:00
545babe86c sxmo: document waybar-config defaults 2023-07-12 11:36:50 +00:00
ba7078527a sway: fix config symlink 2023-07-12 11:34:41 +00:00
c2b2d5eaa9 sxmo: switch to waybar 2023-07-12 11:28:54 +00:00
58be04b632 cross: get waybar to compile 2023-07-12 10:27:08 +00:00
f0d396543f sxmo: set mod key to alt instead of logo 2023-07-12 10:10:03 +00:00
6d21c917d5 sxmo: import the default sway config 2023-07-12 10:03:58 +00:00
ec277d1347 sxmo: move to subdirectory 2023-07-12 09:42:23 +00:00
f5264508eb komikku: fix cross compilation 2023-07-12 09:16:32 +00:00
0d6a10bc3a komikku: don't crash when crop_borders fails to find borders 2023-07-12 08:58:35 +00:00
33c6330cbc gui: delete plasma-mobile 2023-07-12 08:25:09 +00:00
ece02f35c6 gui: delete plasma 2023-07-12 08:24:55 +00:00
d4e6001431 moby: increase workspaces from 4 -> 5 2023-07-12 08:24:13 +00:00
cded837255 moby: sort sxmo prefs alphabetically 2023-07-12 08:24:13 +00:00
2ae187ea62 komikku: update to latest rev 2023-07-12 08:24:13 +00:00
e317cc4c12 refactor: sway: fix config indentation 2023-07-12 08:24:01 +00:00
83275ed0b6 komikku: 1.21.1 -> 1.22.0 2023-07-12 07:51:42 +00:00
e5a81f0a45 moby: update env tunables 2023-07-12 06:45:47 +00:00
e4d0cabd13 conky: enable Wayland support; 1.18.0 -> 1.19.2 2023-07-12 02:09:34 +00:00
a2a2db1611 cross: Tangram: reduce emulated inputs 2023-07-12 01:25:46 +00:00
586b181714 snippets: update firewall address 2023-07-12 00:13:10 +00:00
a51817625a sandboxing todo: mention nixpak 2023-07-11 22:26:12 +00:00
ddec0cae7a nixpkgs: 2023-07-09 -> 2023-07-10
```
• Updated input 'nixpkgs-unpatched':
    'github:nixos/nixpkgs/408c0e8c15a1c9cf5c3226931b6f283c9867c484' (2023-07-09)
  → 'github:nixos/nixpkgs/4a729ce4b1fe5ec4fffc71c67c96aa5184ebb462' (2023-07-10)
```
2023-07-11 21:13:11 +00:00
4cc4c3293b programs: don't ship ncdu 2023-07-11 21:12:25 +00:00
615e9befb3 document some dconf findings 2023-07-11 10:05:46 +00:00
9502fb34c7 tangram: don't need to create the dconf db: dconf will do that for us if need-be 2023-07-11 10:04:03 +00:00
17951be995 tangram: persist dconf files
with this, saved tabs are *actually* saved
2023-07-11 10:02:47 +00:00
281116bc7d document how to ship programs 2023-07-11 08:11:48 +00:00
70fcf179d5 programs: ship ncdu 2023-07-11 08:11:10 +00:00
3f81370879 install-iwd: allow the paths to be omitted 2023-07-11 07:32:54 +00:00
f71fd4565b sane-ip-reconnect: be more resilient to errors 2023-07-11 07:24:46 +00:00
79fca6c5e5 sane-ip-reconnect: add type annotations to compound types 2023-07-11 07:13:16 +00:00
3bbc4aecbb fix derived secrets (all were failing) 2023-07-11 05:15:56 +00:00
464db2c118 complete UPNP service split todo 2023-07-11 01:57:47 +00:00
8e94d77b0f ports: create a separate systemd service per port forward
this allows one failed forward to not take down all forwards
2023-07-11 01:56:59 +00:00
307121ec2c sane_ssdp: cache the UPNP root device
i could also cache the lan and wan... future work, i guess
2023-07-11 01:18:47 +00:00
8bd7fa8a3f sway: use Super modifier instead of Alt
this allows applications to use the Alt key
2023-07-11 00:55:17 +00:00
41aa13621d add a TODO for using Starship prompt 2023-07-11 00:55:17 +00:00
f765e3d030 sane-ip-check: also store the upnp gateway 2023-07-11 00:55:04 +00:00
798f467128 sane_bt: add return type annotations 2023-07-10 22:42:39 +00:00
35431f5b53 sane_ssdp: add more type annotations 2023-07-10 22:41:06 +00:00
0bc1082596 Merge branch 'staging/nixpkgs-2023-07-09' 2023-07-10 22:32:44 +00:00
c23cb8470f sane-bt-search: document --manga flag 2023-07-10 21:53:55 +00:00
d46ee21ce0 nixpkgs: 2023-07-06 -> 2023-07-09
```
• Updated input 'nixpkgs-unpatched':
    'github:nixos/nixpkgs/3c7487575d9445185249a159046cc02ff364bff8' (2023-07-06)
  → 'github:nixos/nixpkgs/408c0e8c15a1c9cf5c3226931b6f283c9867c484' (2023-07-09)
```
2023-07-10 21:38:01 +00:00
abc9f4c464 moby: sxmo: switch SXMO_SWAY_SCALE back to default of 2 2023-07-10 09:07:17 +00:00
e92b621e09 sxmo: configure user prefs via ~/.config/sxmo/profile
rather than the system environment
2023-07-10 09:07:16 +00:00
d593349717 sane-ip-reconnect: repopulate secrets if necessary
sometimes iwd just... deletes them
2023-07-10 09:06:23 +00:00
452260f7c7 trust-dns: don't run as root 2023-07-10 09:00:37 +00:00
b648aca505 trust-dns: link to docs in service file 2023-07-10 08:12:07 +00:00
8c4af55f82 trust-dns: apply some hardening (still need more) 2023-07-10 08:00:45 +00:00
384428756d tangram/epiphany: preserve desktop files when patching 2023-07-10 06:49:27 +00:00
069f7b4616 sxmo: use ~/.config/sxmo/profile instead of system environment, for settings 2023-07-10 06:08:17 +00:00
c44756874a git: add todo for using toGitINI 2023-07-10 06:07:47 +00:00
23fb37a3e9 fs: have nodes require their parent instead of the weaker want
this may fix it so spurious (failed) mounts of ~/private *don't* create a bunch of directories that later cause a real mount to be impossible
2023-07-10 05:58:30 +00:00
5188ddf398 keyrings: answer a todo 2023-07-10 01:21:57 +00:00
db93bd42ed moby: ship megapixels camera app 2023-07-10 01:18:40 +00:00
b76d326da3 megapixels: fix cross compilation 2023-07-10 01:14:00 +00:00
3fa3091143 sxmo-utils: fix Tangram icon 2023-07-09 22:13:46 +00:00
81f527070f build machines: disable ccache 2023-07-09 18:55:37 +00:00
445bc08a0c desko: disable guest account 2023-07-09 18:49:36 +00:00
213e738305 sops-nix: 2023-07-02 -> 2023-07-09
```
• Updated input 'sops-nix':
    'github:Mic92/sops-nix/5ed3c22c1fa0515e037e36956a67fe7e32c92957' (2023-07-02)
  → 'github:Mic92/sops-nix/b2047c8fc963407916ad3834165309007dc5a1f7' (2023-07-09)
• Updated input 'sops-nix/nixpkgs-stable':
    'github:NixOS/nixpkgs/f553c016a31277246f8d3724d3b1eee5e8c0842c' (2023-07-02)
  → 'github:NixOS/nixpkgs/510d721ce097150ae3b80f84b04b13b039186571' (2023-07-09)
```
2023-07-09 18:38:54 +00:00
3c309b65af programs: ship tangram to gui platforms 2023-07-09 11:17:54 +00:00
c751268f62 epiphany: leave a note about missing .desktop files 2023-07-09 11:17:07 +00:00
1bd815d2ef tangram: disable sandbox (same reason as with epiphany) 2023-07-09 11:16:08 +00:00
b3db579deb add todos for sway/firefox/helix 2023-07-09 10:50:37 +00:00
b152794cb6 get tangram to cross compile 2023-07-09 10:50:01 +00:00
96ddc9513d sxmo-utils: apply upstreamed patches via fetchpatch instead of storing in-repo 2023-07-09 07:48:10 +00:00
158f978f19 sxmo-utils: add icon for Tangram 2023-07-09 07:29:10 +00:00
963e59070d programs: define persistence for Tangram 2023-07-09 07:20:38 +00:00
5e66bad3dd epiphany: fix to launch on moby 2023-07-09 03:13:17 +00:00
a3a3da4c62 implement a ldd-aarch64 package & ship it for dev hosts 2023-07-09 00:32:22 +00:00
a0473782f9 nixpkgs: 2023-07-05 -> 2023-07-06
```
• Updated input 'nixpkgs-unpatched':
    'github:nixos/nixpkgs/f292b4964cb71f9dfbbd30dc9f511d6165cd109b' (2023-07-05)
  → 'github:nixos/nixpkgs/3c7487575d9445185249a159046cc02ff364bff8' (2023-07-06)
```
2023-07-08 18:18:28 +00:00
640d9be83d derived-secrets: fix broken encoding 2023-07-08 11:20:28 +00:00
db72f5e11f fs: generated.script.scriptArgs -> generated.command 2023-07-08 11:15:23 +00:00
8753e5e0c6 fs: remove legacy generated.script.script option 2023-07-08 11:15:23 +00:00
558b35fee0 prepare fs.generated.script users to not assume a shell 2023-07-08 11:15:23 +00:00
3ce2716fbe fs: factor out the ensureSymlink/ensureDir/ensurePerms scripts 2023-07-08 10:35:10 +00:00
e9293dbe07 fs: fix raciness that was causing ensure-xyz services to run multiple times per boot 2023-07-08 09:08:59 +00:00
f18d624fd9 fs: avoid creating a new script for every fs entry 2023-07-08 09:00:49 +00:00
43aadef3b3 remove completed items from todo.md; add moby related improvements 2023-07-08 03:03:05 +00:00
6e3e45a9f6 fontconfig: re-enable
i'm not sure why this failed with lib.mkDefault
2023-07-08 02:27:21 +00:00
36dbf696e7 fontconfig: only enable for system, not user 2023-07-08 02:23:50 +00:00
e57efbcb21 zsh: fix history file persistence 2023-07-08 02:22:29 +00:00
8f57394cd2 persist: create the backing path as a dependency of the VFS path 2023-07-08 02:08:18 +00:00
01b8a28a52 programs.fs: remove extraneous wantedBeforeBy clause
it's provided by `sane.user.fs`
2023-07-08 02:06:44 +00:00
b42207882e programs.persist: fix to allow any options that underlying persist allows 2023-07-08 02:06:18 +00:00
b8ccc271fc mepo: fix savestate to be persisted as a file -- not a directory 2023-07-08 01:35:36 +00:00
95c105367c ~/.ssh/id_ed25519: correctly persist as a file -- not a directory 2023-07-08 01:35:23 +00:00
0a519eddb4 persist: allow persisting of individual files, not just directories
i actually do already, with ~/.ssh/id_ed25519 -- it works only as a fluke
2023-07-08 01:31:14 +00:00
8e4dc0c6ae helix: render whitespace 2023-07-08 00:54:51 +00:00
a257d8d1a1 helix: enable soft line wrapping 2023-07-08 00:27:12 +00:00
38411617ef fontconfig: only ship on GUI systems 2023-07-07 23:44:45 +00:00
c21efa005f show package changes during nixos-rebuild switch 2023-07-07 23:34:12 +00:00
24a3c22edc revoke ssh access from servo/moby into any other system (by default) 2023-07-07 21:15:00 +00:00
54b74498b6 helix: don't persist the grammars directory anymore 2023-07-07 11:05:13 +00:00
05f375a5f8 neovim: try to ship nix-shell highlighting (fail) 2023-07-07 10:45:41 +00:00
975bdd64cb helix: ship nix-shell syntax highlighting 2023-07-07 10:43:13 +00:00
62907acedc tree-sitter-nix-shell: init at 0.1.0 2023-07-07 08:33:15 +00:00
7004fb8f4e sane-bt-search: clean up type annotations (thanks Ben for the tips!) 2023-07-07 07:12:48 +00:00
5aeb6a5525 sane-bt-search: fix: parse --top as an integer 2023-07-07 07:11:47 +00:00
ad4631a5a8 sane-bt-search: add (limited) ability to search by category 2023-07-07 07:08:17 +00:00
799cbccdbe desko: disable devPkgs 2023-07-07 06:30:19 +00:00
1f82679f62 add a deploy-servo nix script, like deploy-moby 2023-07-06 22:40:25 +00:00
d318d61895 sxmo-utils: send a couple more patches upstream 2023-07-06 20:16:50 +00:00
e3b853e7f0 nixpkgs: 2023-07-04 -> 2023-07-05
```
• Updated input 'nixpkgs-unpatched':
    'github:nixos/nixpkgs/78419edadf0fabbe5618643bd850b2f2198ed060' (2023-07-04)
  → 'github:nixos/nixpkgs/f292b4964cb71f9dfbbd30dc9f511d6165cd109b' (2023-07-05)
```
2023-07-06 20:16:50 +00:00
8fa9815b10 sane-bt-search: fix usage for top flag 2023-07-06 20:16:50 +00:00
b7a77375b2 pleroma: block FB/IG/Meta's threads.net instance 2023-07-05 21:36:55 +00:00
d6ccd7d1cb nixpkgs: 2023-07-02 -> 2023-07-04
```
• Updated input 'nixpkgs-unpatched':
    'github:nixos/nixpkgs/0fbe93c5a7cac99f90b60bdf5f149383daaa615f' (2023-07-02)
  → 'github:nixos/nixpkgs/78419edadf0fabbe5618643bd850b2f2198ed060' (2023-07-04)
```
2023-07-05 09:14:51 +00:00
5c75f8c0e3 add todo for port 53 forward 2023-07-05 09:07:20 +00:00
07d7994176 pleroma: simplify proxy settings & make log level configurable 2023-07-05 09:04:50 +00:00
9e7930cb6e nixpatches: fix hashes 2023-07-05 09:04:50 +00:00
1d11c9b342 servo: persist media/datasets
it has to be under media so that transmission can see it
2023-07-05 09:04:50 +00:00
adb04c46f5 nixpkgs: 2023-07-01 -> 2023-07-02
```
• Updated input 'nixpkgs-unpatched':
    'github:nixos/nixpkgs/645ff62e09d294a30de823cb568e9c6d68e92606' (2023-07-01)
  → 'github:nixos/nixpkgs/0fbe93c5a7cac99f90b60bdf5f149383daaa615f' (2023-07-02)
```
2023-07-04 18:57:27 +00:00
43740c3b9b neovim: nit: fix "tex" -> "viml" typo 2023-07-04 10:28:44 +00:00
2131e638aa desko: enable some dev-related packages
useful as i hack on Helix
2023-07-04 10:27:59 +00:00
8bd2ad0456 zsh: add switch function 2023-07-04 03:31:13 +00:00
61cbdc2c85 add helix text editor 2023-07-04 03:28:54 +00:00
ebf6f46948 persist ~/Books 2023-07-03 22:38:30 +00:00
29e03d59f3 sxmo: cleaner terminal and keyboard config computation 2023-07-03 22:27:29 +00:00
e6cdd5450c moby: specify wvkbd layers explicitly 2023-07-03 22:19:50 +00:00
32e20cdda0 programs: enable epiphany web browser for all gui platforms 2023-07-03 08:16:40 +00:00
8600934755 programs: more cleanup 2023-07-03 08:03:55 +00:00
787b58b284 programs: reorder package groups 2023-07-03 07:58:02 +00:00
acf89a041e modules/programs: cleanup with statements 2023-07-03 07:55:05 +00:00
9340d5f391 programs: remove explicit default definitions 2023-07-03 07:49:44 +00:00
9f1d61c781 programs: remove quadratic behavior 2023-07-03 07:16:24 +00:00
83e48eabad WIP: decrease quadratic operations in modules/programs.nix 2023-07-03 07:04:57 +00:00
9b9273b725 programs: call out some quadratic behavior; i can try to fix it in the future 2023-07-03 06:41:48 +00:00
ccaff668c1 sane-lib: path: fix from bug; tidy 2023-07-03 05:28:53 +00:00
4c44101a83 add a todo for theming adwaita 2023-07-03 05:08:26 +00:00
85b7596763 enable cross-compilation of epiphany web browser 2023-07-03 03:00:46 +00:00
dfbf30912f add a todo for shipping camera app on moby 2023-07-02 23:16:59 +00:00
27964c9c40 moby: mark kernel compression todo item as complete 2023-07-02 23:14:18 +00:00
262592b26a programs: better way to ship jellyfin-media-player only on desktops 2023-07-02 23:12:12 +00:00
7b0e4caa16 programs: ship blanket ambient noise generator 2023-07-02 23:10:05 +00:00
9546908dbf remove unused sane-mount-* helpers 2023-07-02 23:01:56 +00:00
3961923599 scripts: move these to more appropriate places 2023-07-02 22:49:17 +00:00
6b55faec0c install-bluetooth: port to nix-shell 2023-07-02 22:42:52 +00:00
67bf15cca2 nixpkgs: 2023-06-29 -> 2023-07-01; sops-nix -> 2023-07-02; uninsane-dot-org
```
• Updated input 'nixpkgs-unpatched':
    'github:nixos/nixpkgs/4bc72cae107788bf3f24f30db2e2f685c9298dc9' (2023-06-29)
  → 'github:nixos/nixpkgs/645ff62e09d294a30de823cb568e9c6d68e92606' (2023-07-01)
• Updated input 'sops-nix':
    'github:Mic92/sops-nix/2ff6973350682f8d16371f8c071a304b8067f192' (2023-06-22)
  → 'github:Mic92/sops-nix/5ed3c22c1fa0515e037e36956a67fe7e32c92957' (2023-07-02)
• Updated input 'sops-nix/nixpkgs-stable':
    'github:NixOS/nixpkgs/e2e2059d19668dab1744301b8b0e821e3aae9c99' (2023-06-17)
  → 'github:NixOS/nixpkgs/f553c016a31277246f8d3724d3b1eee5e8c0842c' (2023-07-02)
• Updated input 'uninsane-dot-org':
    'git+https://git.uninsane.org/colin/uninsane?ref=refs/heads/master&rev=ae27eb61b55b6c6d83c25384fb163df398a80265' (2023-06-26)
  → 'git+https://git.uninsane.org/colin/uninsane?ref=refs/heads/master&rev=1542323cfb46a8950c17a3afa5f7cd2e62dd9672' (2023-07-02)
```
2023-07-02 12:00:24 +00:00
a62852072e sane-reclaim-disk-space: include delete-older-than 30d argument 2023-07-02 11:59:37 +00:00
83f2438739 moby: fix gtk icons 2023-07-02 11:58:57 +00:00
bad0e9cc53 gui: remove dead code 2023-07-02 11:35:03 +00:00
9aea0945a5 gtk: fix icons, and apply Tokyonight as default theme 2023-07-02 11:33:01 +00:00
cce87eb6fb WIP: theme gtk apps 2023-07-02 09:37:07 +00:00
9777e5f83c trust-dns: rework the module to be more suitable for upstreaming
still need to do hardening and docs
2023-07-02 08:21:33 +00:00
154711432f pleroma: link to docs 2023-07-02 04:33:34 +00:00
b8460b7524 refine moby todos 2023-07-02 03:00:46 +00:00
fa427ad7ea add todo for offline uninsane.org 2023-07-02 02:54:07 +00:00
7be7d5d938 sxmo-utils: add lemoa app listing (and change Tuba icon) 2023-07-02 01:52:26 +00:00
7c5ab7d253 ship lemoa on gui hosts 2023-07-02 01:40:36 +00:00
48adaa832e lemoa: 0.1.0 -> 0.2.0 2023-07-01 23:39:50 +00:00
38b44a31e4 sxmo-utils: link to upstreamed patches 2023-07-01 00:58:43 +00:00
9ad72af979 add todo for better email 2023-07-01 00:57:36 +00:00
2a2ce34bd8 git: sendemail: always annotate and confirm 2023-07-01 00:55:43 +00:00
b2e70c0210 programs: ship msmtp sendmail implementation 2023-07-01 00:28:59 +00:00
3d4cbbf005 git: add br -> branch alias 2023-06-30 23:13:56 +00:00
b18bdc4e3e sxmo-utils: fix typo in gthumb app 2023-06-30 21:17:12 +00:00
2f88ba92d1 nixpkgs: 2023-06-27 -> 2023-06-29
```
• Updated input 'nixpkgs-unpatched':
    'github:nixos/nixpkgs/e18dc963075ed115afb3e312b64643bf8fd4b474' (2023-06-27)
  → 'github:nixos/nixpkgs/4bc72cae107788bf3f24f30db2e2f685c9298dc9' (2023-06-29)
```
2023-06-30 20:29:58 +00:00
f25dbdd4d2 aerc: change name to match git name 2023-06-30 11:09:10 +00:00
3da58f1d41 kitty: set the TERMINAL env var by default 2023-06-30 11:02:53 +00:00
e519c1c629 patch prefered terminal into glib/gio apps like firefox
now i can type mailto:foo@bar.com into firefox urlbar and it opens in aerc in a new terminal
2023-06-30 11:02:53 +00:00
3df165593c web browser: set $BROWSER environment variable
this gets used as fallback by e.g. xdg-email
2023-06-30 08:50:58 +00:00
daabe09bb4 overlays: disable webkitgtk "separateDebugInfo = false;" override 2023-06-30 03:45:27 +00:00
dfbfae90a5 lemmy: remove db migration hack
all my lemmy patches can be removed from this repo, but i'll wait for some stability before actually doing that
2023-06-30 03:45:09 +00:00
ef9f62ed13 sxmo-utils: fix cozy appname 2023-06-29 23:21:24 +00:00
2c49dfa642 refactor: remove overlays/pins.nix 2023-06-29 22:47:51 +00:00
6ddc943a39 add todos for sxmo module & zsh optimizations 2023-06-29 22:45:25 +00:00
5c50243d23 git: allow common dif typo 2023-06-29 22:45:07 +00:00
556600e54b zsh: disable command suggestions 2023-06-29 22:43:49 +00:00
5db9c4f558 nix-index/nix-locate: re-enable 2023-06-29 21:24:32 +00:00
e22fb2f4f5 mime associations: add aerc for email (but... it doesnt work from gui) 2023-06-29 21:08:50 +00:00
71971a050c sxmo-utils: ship app icon for gThumb 2023-06-29 20:37:30 +00:00
ac97accd32 moby: ship gThumb 2023-06-29 20:23:53 +00:00
f391e467c2 networkmanager: remove the default plugins 2023-06-29 10:58:18 +00:00
fa5d4c467c sway: replace gnome-control-center with wdisplays
mostly this is driven to reduce my desktop's dependencies (particularly
on webkitgtk), but it also looks a little nicer than gnome's displays
panel.
2023-06-29 10:56:56 +00:00
4c5333c9ed desko/lappy: don't ship font-manager
with this i no longer ship webkitgtk4_0
2023-06-29 09:45:15 +00:00
6fdb7059e3 gthumb: build without webkitgtk 2023-06-29 09:43:17 +00:00
28f7823077 nixpatches: fix nmap/lua54 hash 2023-06-29 09:14:15 +00:00
9e972d21b4 Merge branch 'master' of git.uninsane.org:colin/nix-files 2023-06-29 09:12:24 +00:00
42f194f447 keyring: fix bad dep ordering that prevented ~/private from being mounted 2023-06-29 09:11:22 +00:00
dbd312e9bd guest: enable access to shelvacu 2023-06-29 09:11:22 +00:00
9be5604c40 nixpkgs: 2023-06-26 -> 2023-06-27
```
• Updated input 'nixpkgs-unpatched':
    'github:nixos/nixpkgs/6b3d1b1cf13f407fef5e634b224d575eb7211975' (2023-06-26)
  → 'github:nixos/nixpkgs/e18dc963075ed115afb3e312b64643bf8fd4b474' (2023-06-27)
```
2023-06-29 00:49:09 +00:00
97ce93cac6 fs: allow mounting /mnt/* as ordinary user 2023-06-28 10:50:39 +00:00
56c637d4d3 enable systemd-oomd on nix builds 2023-06-28 10:47:53 +00:00
89160f68e8 mention systemd-run in app containerization todo 2023-06-28 10:30:57 +00:00
316eb59071 nixpkgs: 2023-06-22 -> 2023-06-26; uninsane-dot-org -> 2023-06-26
```
• Updated input 'nixpkgs-unpatched':
    'github:nixos/nixpkgs/e603dc5f061ca1d8a19b3ede6a8cf9c9fcba6cdc' (2023-06-22)
  → 'github:nixos/nixpkgs/6b3d1b1cf13f407fef5e634b224d575eb7211975' (2023-06-26)
• Updated input 'uninsane-dot-org':
    'git+https://git.uninsane.org/colin/uninsane?ref=refs/heads/master&rev=0e0aa12aca143639f158b3a5c0c00349fcc2166c' (2023-06-16)
  → 'git+https://git.uninsane.org/colin/uninsane?ref=refs/heads/master&rev=ae27eb61b55b6c6d83c25384fb163df398a80265' (2023-06-26)
• Updated input 'uninsane-dot-org/flake-utils':
    'github:numtide/flake-utils/93a2b84fc4b70d9e089d029deacc3583435c2ed6' (2023-03-15)
  → 'github:numtide/flake-utils/dbabf0ca0c0c4bce6ea5eaf65af5cb694d2082c7' (2023-06-25)
• Added input 'uninsane-dot-org/flake-utils/systems':
    'github:nix-systems/default/da67096a3b9bf56a91d16901293e51ba5b49a27e' (2023-04-09)
```
2023-06-28 06:45:02 +00:00
c19a0af6d7 desko: enable distccd 2023-06-28 04:16:20 +00:00
038d252f7d guest: allow external configuration of authorized ssh keys 2023-06-28 03:53:19 +00:00
68cda2006b cleanup/refactor users 2023-06-28 03:46:29 +00:00
ddf79e54e9 users: split colin and guest apart 2023-06-28 03:34:15 +00:00
ac5e2cc023 users.nix: move to subdir 2023-06-28 03:21:05 +00:00
48eece548f add todo: gitea CI 2023-06-28 03:09:54 +00:00
8e16cd6d32 feeds: link to a place where i might find more 2023-06-28 03:09:23 +00:00
6676935ee1 feeds: add The Linux Experiment 2023-06-28 03:05:45 +00:00
c09b2d0d63 elaborate todo about securing programs 2023-06-28 01:08:53 +00:00
f12672b197 linux-megous: note about stability 2023-06-28 00:20:14 +00:00
8717a91467 programs: git: add alias for diff summary 2023-06-28 00:20:02 +00:00
b43b8a3a22 zsh: disable "command not found" corrections 2023-06-27 22:41:27 +00:00
c1df32695b build-machine: increase the number of nix build users 2023-06-27 22:41:23 +00:00
b98eca1d84 add TODO: remove overlays/pins.nix 2023-06-27 22:41:20 +00:00
7bc718bf15 dev-machine: don't ship docs until i resume development 2023-06-27 22:41:16 +00:00
dbb1d16617 web-browser: update extension hashes 2023-06-27 22:41:14 +00:00
771f482d84 EDITOR, GIT_EDITOR: lift into vim.nix 2023-06-27 10:26:11 +00:00
40ec4d6ce0 programs: allow programs to ship system-level environment variables 2023-06-27 10:24:48 +00:00
b90bc1058d git: add aliases: cp -> cherry-pick; rb -> rebase 2023-06-27 08:54:17 +00:00
0fcddf8970 web-browser: leave myself a todo for cleaning up prefs 2023-06-27 08:10:01 +00:00
cffb54c293 sxmo: give a little more time before transitioning from screen lock -> screen off 2023-06-27 08:10:01 +00:00
36c181c147 matrix-irc: fix oftc connection 2023-06-27 08:08:27 +00:00
cdbd3c2fd8 lemoa: remove excess buildInputs 2023-06-27 07:12:32 +00:00
530163c853 nixpatches: fix mepo hash
probably most of these hashes are outdated, after switching to fetchpatch2
2023-06-27 06:41:03 +00:00
516459b351 lemoa: unstable-2023-06-25 -> 0.1.0 2023-06-27 06:36:45 +00:00
05e37a4557 formatting 2023-06-27 01:59:49 +00:00
4006765387 cross: fix firefox-pmos-mobile cross compilation 2023-06-27 01:59:04 +00:00
db0ce6eadd web-browser: don't apply librewolf prefs to firefox deployments 2023-06-26 23:22:45 +00:00
f188229379 nixpatches: switch to fetchpatch2
fewer edgecases
2023-06-26 10:12:00 +00:00
f0d7d6877b web-browser: clean up some dead comments, defaults 2023-06-26 10:11:22 +00:00
a8025550d5 web-browser: apply pmos styling
on desktop, this doesn't respond to mouse input.
on mobile, not tested.
2023-06-26 10:10:26 +00:00
acd803d5bc patches: import firefox-pmos-mobile 2023-06-26 10:09:32 +00:00
59111b95b3 sane-wipe-browser: also wipe firefox 2023-06-26 08:04:45 +00:00
b5feeb1792 complete TODO: fix NUR evaluation 2023-06-26 01:27:53 +00:00
325398ec28 sane-scripts: rename nix-shell-scripts -> sane-bin 2023-06-26 01:27:35 +00:00
9b3ee537a8 flake: add "check-nur" app to validate that my repo passes NUR checks 2023-06-26 01:26:13 +00:00
7aa0c5e3ea pkgs: fix python3Packages.sane-lib eval outside of flake (i.e. NUR) 2023-06-26 01:25:46 +00:00
8c586bd0db cargo-docset: remove. it's been upstreamed 2023-06-26 01:12:29 +00:00
ec0e8ce38b pkgs: fix error that prevented gpodder-adaptive-configured from being evaluated on its own 2023-06-26 01:09:27 +00:00
be0d5fd7c2 gpodder-configured: name the package based on the input gPodder pname 2023-06-26 01:08:30 +00:00
e7fadbe965 gpodder-configured: name the resulting binary gpodder so it can be started with anything expecting normal gpodder API (e.g. sxmo) 2023-06-26 00:52:11 +00:00
054af010bd add new TODO: neovim LSP 2023-06-26 00:32:47 +00:00
ee5a2ff986 neovim: fix auto-indent for nix files 2023-06-26 00:32:47 +00:00
cb7f84e2b7 neovim: order plugins lexicographically 2023-06-26 00:32:47 +00:00
e5124fd0d6 lemoa: init at unstable-2023-06-25 2023-06-26 00:32:45 +00:00
0751e748ea feeds: add PostmarketOS podcast 2023-06-25 22:22:32 +00:00
afce50b56d jellyfin-media-player-qt6: bump 2023-06-25 22:04:54 +00:00
71e0942cc2 git: configure git stash show to actually... SHOW the stash
OMFG
2023-06-25 21:45:47 +00:00
049ded2a0d firefox-pmos-mobile: rebase patch 2023-06-25 18:05:06 +00:00
4854b8b409 sxmo-utils: ship mepo dependency 2023-06-25 18:04:34 +00:00
55e90f531b mepo: enable cross compilation (via emulation) 2023-06-25 18:04:19 +00:00
3a6bb5a787 add new TODO: better sane.persist behavior esp for ~/private 2023-06-25 02:15:58 +00:00
aae5e40e92 complete todo: librewolf and jellyfin are displayed in sxmo appmenu 2023-06-25 02:14:39 +00:00
5d464b3c64 sxmo: apps: add jellyfin 2023-06-25 02:14:35 +00:00
9b389416cd programs: git: add st and stat aliases 2023-06-25 02:09:25 +00:00
bd57bb7934 programs: add mepo 2023-06-25 02:05:50 +00:00
db2d4ca78e nixpatches: try (and abandon) the firefox-pmos-mobile patch 2023-06-25 01:17:14 +00:00
3812d935a7 sxmo: fix Tuba app entry 2023-06-25 00:42:41 +00:00
bc993d1139 add TODO: fix NUR eval 2023-06-25 00:37:08 +00:00
ec62b5f664 sxmo: leave a TODO about reducing nerdfonts size 2023-06-25 00:36:58 +00:00
71e96fff18 sxmo: add missing gnugrep dependency 2023-06-25 00:03:36 +00:00
33eaa00957 sxmo: add app entry for Sublime Music 2023-06-25 00:03:36 +00:00
a5af1e0893 sxmo: fix MPRIS detection so that any active player will block suspend 2023-06-24 23:54:39 +00:00
be21ac57f8 sxmo-utils: add some missing runtime deps 2023-06-24 23:43:00 +00:00
63a773d8a9 sxmo-utils: add missing dbus dependency 2023-06-24 23:14:57 +00:00
505fcf5111 sxmo-utils: add missing modemmanager dependency (for mmcli) 2023-06-24 23:13:15 +00:00
f0e76ef11f sxmo-utils: add app entries for Librewolf and Tuba 2023-06-24 23:02:43 +00:00
cb721ac70e elaborate TODO about OOM: consider placing nix builds in their own subdir 2023-06-24 22:13:23 +00:00
aae783876b delete completed TODOs 2023-06-24 22:11:19 +00:00
5e3a8cf702 cross: fix tuba compilation for moby 2023-06-24 19:43:09 +00:00
d9b9349572 programs: disable a few that i don't actually use 2023-06-24 19:43:09 +00:00
b6b0e65ef6 flake/nixpkgs: 2023-06-17 -> 2023-06-22
```
• Updated input 'nix-serve':
    'github:edolstra/nix-serve/e6e3d09438e803daa5374ad8edf1271289348456' (2023-05-17)
  → 'github:edolstra/nix-serve/d6df5bd8584f37e22cff627db2fc4058a4aab5ee' (2023-06-20)
• Updated input 'nixpkgs-unpatched':
    'github:nixos/nixpkgs/04af42f3b31dba0ef742d254456dc4c14eedac86' (2023-06-17)
  → 'github:nixos/nixpkgs/e603dc5f061ca1d8a19b3ede6a8cf9c9fcba6cdc' (2023-06-22)
• Updated input 'sops-nix':
    'github:Mic92/sops-nix/1634d2da53f079e7f5924efa7a96511cd9596f81' (2023-06-18)
  → 'github:Mic92/sops-nix/2ff6973350682f8d16371f8c071a304b8067f192' (2023-06-22)
```
2023-06-24 19:43:09 +00:00
a723d1274b all: ship Tuba mastodon/pleroma client 2023-06-24 09:50:12 +00:00
d41ad9db01 lappy: fix build (syntax error) 2023-06-24 09:39:58 +00:00
d6720f3601 sxmo: lift device-specific config out of the sxmo-utils & into the hosts 2023-06-23 10:24:47 +00:00
0b0d453916 sxmo: remove cfg.{deviceHooks,hooks}
seems sxmo is able to find them through XDG_DATA_DIR
2023-06-23 09:13:57 +00:00
59adddafc7 sxmo: make the package a config option 2023-06-23 08:38:23 +00:00
50fa70ca56 sxmo-utils: leave note about which hooks to lift out of package 2023-06-23 08:31:53 +00:00
86855b0c40 sxmo: run upstream set-permissions script at boot
this doesn't seem to do much in practice.
ideally upstream would include the logic for LEDs here too, but they
don't.
2023-06-23 08:31:53 +00:00
931838fb0d sxmo: ship deps via package instead of at the DE level 2023-06-23 08:31:48 +00:00
ec3a7067b6 modules/programs.nix: fix eval error when a program is suggestedBy multiple enabled packages 2023-06-23 02:05:26 +00:00
8cb236b0a9 users: add self to transmission group 2023-06-23 00:27:48 +00:00
5f47372f6a sane-bt: add --freeleech and --archive flags to control torrent location 2023-06-23 00:02:51 +00:00
afe27fd9cb sane-bt-add: support moving torrents to new directories 2023-06-22 23:48:00 +00:00
e8265807a9 NIX_PATH: point overlays to ~/nixos, not /nix/store/... 2023-06-22 23:34:15 +00:00
85ecaf64e9 sane-scripts: tidy up python deps 2023-06-22 23:33:49 +00:00
33b33a9237 sane-bt-*: remove extraneous nix-shell dep 2023-06-22 22:39:02 +00:00
fecd2fa7d3 sane-bt-*: add top-level docs 2023-06-22 22:37:02 +00:00
74ec65c8a9 sane-bt-show: allow showing multiple torrents (again) 2023-06-22 22:32:38 +00:00
21a060d856 sane-scripts: lift the transmission runtime dependency into sane-lib.bt 2023-06-22 22:29:52 +00:00
6249f7553c sane-bt-*: refactor: executor -> bt_api rename 2023-06-22 22:25:13 +00:00
96c976a3b0 sane-bt-show: port to Python 2023-06-22 22:24:49 +00:00
d48d3a979f sane-scripts: leave comment about cleaning up setup.py 2023-06-22 21:35:45 +00:00
ab8ee51321 sane-ip-port-forward: fix broken import 2023-06-22 21:34:59 +00:00
74891fb2f0 sane-scripts: split sane-lib-ssdp into an actual, nix-level library 2023-06-22 09:58:56 +00:00
f62bd83eb8 sane-scripts: split sane-lib-bt into an actual, nix-level library
a bit less hacky, i think
2023-06-22 09:53:30 +00:00
c977665214 sane-scripts: port sane-bt-rm to python
also fix missing lib in sane-bt-add
2023-06-22 07:24:08 +00:00
b3a605c76b sane-ip-port-forward: remind why we sys.path.insert 2023-06-22 02:28:10 +00:00
2cbd44b2b3 sane-bt-add: port to Python (and add a dry-run option) 2023-06-22 02:27:47 +00:00
689c63a905 record my attempt at updating matrix-appservice-irc in case i try again in the future 2023-06-21 06:13:27 +00:00
ed2480f48c matrix-appservice-irc: fix permissions errors 2023-06-21 06:12:08 +00:00
7aad3a62ba koreader: ship RSS feeds 2023-06-20 19:58:02 +00:00
1583b213f1 fs: ensure directories for remote filesystems are created 2023-06-20 08:40:25 +00:00
db851d960c sxmo: include sfeed, for use by sxmo_rss.sh
note that sxmo_rss.sh needs to be run from a terminal,
and i'm not sure it's totally wired up "correct".
2023-06-20 08:38:18 +00:00
fb7cb091e3 tuiApps: add sfeed 2023-06-20 08:38:11 +00:00
048dbc5809 moby/linux: 6.3.0 -> 6.4.0-rc7
this supposedly brings better power usage during sleep
by powering off the touchscreen
2023-06-20 03:01:10 +00:00
bb1a2c9dcb moby: remove ~/.config/sxmo/profile in favor of the nixos-level config options
note that this reverts from a SXMO_SWAY_SCALE of 2.0 -> 1.5

there may be other idiomatic ways to tune that
2023-06-20 00:33:10 +00:00
86c8fe1466 sane-bt-search: remove jackett hostname hack 2023-06-20 00:29:16 +00:00
95f6fd7082 jackett: use recommendedProxySettings so that returned URLs are correct 2023-06-20 00:28:46 +00:00
5fb52ba38e sxmo: show battery percentage by default; idle timeout to 5min, both configurable 2023-06-20 00:13:39 +00:00
4f8d0023ef sxmo: make an option with which to configure noidle 2023-06-20 00:05:06 +00:00
280c4aa2e8 sxmo: add missing j4-dmenu-desktop
this adds the "all apps" option to the app menu
2023-06-19 23:58:04 +00:00
fd270dd0b8 sxmo-utils: 1.14.1 -> 1.14.2 2023-06-19 23:57:44 +00:00
8e17e2beb2 lemmy: remove unsupported settings.federation.enabled option 2023-06-19 21:17:59 +00:00
d68704474d sane-bt-search: include links to the tracker page 2023-06-19 21:01:52 +00:00
0fa5b5bf52 flake/nixpkgs: 2023-06-15 -> 2023-06-17
```
• Updated input 'nixpkgs-unpatched':
    'github:nixos/nixpkgs/7c67f006ea0e7d0265f16d7df07cc076fdffd91f' (2023-06-15)
  → 'github:nixos/nixpkgs/04af42f3b31dba0ef742d254456dc4c14eedac86' (2023-06-17)
• Updated input 'sops-nix':
    'github:Mic92/sops-nix/1e2bae54870a06aa9364f8d33a5b9a0869d792fc' (2023-06-16)
  → 'github:Mic92/sops-nix/1634d2da53f079e7f5924efa7a96511cd9596f81' (2023-06-18)
• Updated input 'sops-nix/nixpkgs-stable':
    'github:NixOS/nixpkgs/aa4b53f79d961a7cbba0b24f791401a34c18011a' (2023-06-16)
  → 'github:NixOS/nixpkgs/e2e2059d19668dab1744301b8b0e821e3aae9c99' (2023-06-17)
```
2023-06-19 19:33:51 +00:00
9caa2a0a17 koreader: note to self that the os.execute bug may affect other features 2023-06-19 09:48:57 +00:00
023e28fb03 koreader: fix that "isOnline" check was failing and preventing FTP access 2023-06-19 09:21:30 +00:00
bed33fae60 koreader: 2023.04 -> 2023.05.1 2023-06-19 08:02:54 +00:00
3b958ba356 sftp: allow read-only anonymous FTP 2023-06-19 03:49:51 +00:00
adb6ff4c66 remove dead code: resholve-prologue 2023-06-18 21:48:12 +00:00
931c76c2e7 unftp: init at 0.14.3 2023-06-18 06:38:01 +00:00
d95042ab65 servo: partially enable a FTP server
disabled as i tidy it
strugging to enable an anonymous FTP user -- might not be possible without using the web admin interface
2023-06-17 10:15:30 +00:00
0605094461 Merge branch 'staging/nixpkgs-2023-06-15' 2023-06-17 10:13:21 +00:00
4eb6c1fd7d flake/nixpkgs: 2023-06-12 -> 2023-06-15
```
• Updated input 'nixpkgs-unpatched':
    'github:nixos/nixpkgs/0eeebd64de89e4163f4d3cf34ffe925a5cf67a05' (2023-06-12)
  → 'github:nixos/nixpkgs/7c67f006ea0e7d0265f16d7df07cc076fdffd91f' (2023-06-15)
• Updated input 'sops-nix':
    'github:Mic92/sops-nix/cb85e297937af1bd1434cf5f85a3f86a21dc8207' (2023-06-11)
  → 'github:Mic92/sops-nix/1e2bae54870a06aa9364f8d33a5b9a0869d792fc' (2023-06-16)
• Updated input 'sops-nix/nixpkgs-stable':
    'github:NixOS/nixpkgs/ef24b2fa0c5f290a35064b847bc211f25cb85c88' (2023-06-10)
  → 'github:NixOS/nixpkgs/aa4b53f79d961a7cbba0b24f791401a34c18011a' (2023-06-16)
• Updated input 'uninsane-dot-org':
    'git+https://git.uninsane.org/colin/uninsane?ref=refs/heads/master&rev=f3747a1dad3d34880613821faf26357ba432d3d7' (2023-05-19)
  → 'git+https://git.uninsane.org/colin/uninsane?ref=refs/heads/master&rev=0e0aa12aca143639f158b3a5c0c00349fcc2166c' (2023-06-16)
```
2023-06-17 10:07:59 +00:00
c553e74cd6 common: fs: remove invalid "nofail" option from ssh mounts 2023-06-17 10:03:44 +00:00
4eb6f59b01 sane-ip-reconnect: add some logging 2023-06-16 07:17:31 +00:00
9f55a8288d ship koreader ebook reader (and persist relevant data) 2023-06-16 01:23:55 +00:00
feb299eb22 cross: fix koreader build 2023-06-16 01:23:55 +00:00
b21c79a0b4 cross: fix nautilus 2023-06-16 01:23:55 +00:00
c819bc2d95 cross: fix cozy unable to load FileChooser at runtime 2023-06-16 01:23:55 +00:00
21006e52dc sane-bt-search: add a --help option 2023-06-15 10:25:59 +00:00
5562d60cbb fs mounts: add nofail and mount-timeout to reduce shutdown hangs on nfs 2023-06-15 10:08:54 +00:00
17041384e9 fs mounts: reduce nfs timeouts, for faster shutdown
it still takes 90s; maybe the issue is nested mounts?
2023-06-15 09:25:48 +00:00
9eb36441e1 fs mounts: don't auto-mount ssh; try to specify correct net dependencies for better shutdown 2023-06-15 08:40:21 +00:00
0d0a9fce6a associate ssh pubkeys to my hosts' wireguard names 2023-06-15 07:54:31 +00:00
847e618dee cozy: persist data 2023-06-15 06:34:50 +00:00
c4e345e2e7 cozy: ship on all gui devices 2023-06-15 06:08:10 +00:00
c75719e751 /mnt/servo-media: default to the nfs mount
maybe i remove the ssh mounts if/when nfs proves stable
2023-06-15 02:31:17 +00:00
7a57cf5327 clients: fs: mount servo over nfs 2023-06-15 02:14:42 +00:00
b81642ccc9 servo/nfs: fix netmask typo 2023-06-15 02:13:29 +00:00
57ca3e67b3 servo/nfs: export rw if the source is wireguard 2023-06-15 01:52:15 +00:00
bcca6b6096 servo: export some read-only NFS mounts 2023-06-15 01:38:09 +00:00
79772d4e3d cozy: fix launch 2023-06-14 22:27:03 +00:00
339c0a47ab flake/nixpkgs: 2023-06-11 -> 2023-06-12
```
• Updated input 'nixpkgs-unpatched':
    'github:nixos/nixpkgs/75a5ebf473cd60148ba9aec0d219f72e5cf52519' (2023-06-11)
  → 'github:nixos/nixpkgs/0eeebd64de89e4163f4d3cf34ffe925a5cf67a05' (2023-06-12)
```
2023-06-14 20:38:43 +00:00
b1be78529b gpodder: apply update via upstream PR 2023-06-14 07:39:18 +00:00
cce53b968b sequoia: apply update via upstream PR 2023-06-14 07:35:50 +00:00
1d55b98cd1 sequoia: 0.28.0 -> 0.30.1 2023-06-14 07:16:21 +00:00
e9d45c3b31 snippets: update 2023-06-14 02:30:29 +00:00
32dde42ee2 zecwallet-light-cli: init at 1.7.7 2023-06-14 00:32:54 +00:00
b60986cfb8 update snippets 2023-06-13 22:10:59 +00:00
60ef232bc0 flake/nixpkgs: 2023-06-10 -> 2023-06-11
```
• Updated input 'nixpkgs-unpatched':
    'github:nixos/nixpkgs/21951114383770f96ae528d0ae68824557768e81' (2023-06-10)
  → 'github:nixos/nixpkgs/75a5ebf473cd60148ba9aec0d219f72e5cf52519' (2023-06-11)
```
2023-06-13 08:49:55 +00:00
7f7bc33be5 sane-bt-search: report errors for unexpected options 2023-06-13 08:01:52 +00:00
f52f56a34c moby: no longer ship Jellyfin 2023-06-13 07:05:21 +00:00
425de71583 komikuu: ship on all GUI platforms 2023-06-13 07:04:43 +00:00
0bd87077c1 komikku: fix for cross compilation 2023-06-13 07:04:26 +00:00
601bf567eb gpodder: ship the gpodder-adaptive branch
better mobile experience
2023-06-13 05:30:10 +00:00
4f74078423 komikku: persist downloaded comics 2023-06-13 05:30:10 +00:00
f170351de7 ship komikku (comic/manga viewer) 2023-06-13 05:30:10 +00:00
bee9dab513 gpodder: 3.10.21 -> 3.11.1 2023-06-13 05:30:10 +00:00
16c3d4289e cross: jellyfin-media-player-qt6: fix wrapQtAppsHook 2023-06-13 05:30:10 +00:00
21e0c0d00f sane_ssdp: fix get_ips_from_location return value on failure 2023-06-12 20:11:02 +00:00
fdf85156bc lemmy: re-enable the version pin 2023-06-11 12:12:41 +00:00
79a7daca12 lemmy: more debugging 2023-06-11 11:24:15 +00:00
3996e1be08 lemmy-ui: no need to patch nodejs version after upstream nixpkgs update 2023-06-11 10:51:05 +00:00
8b1dbd42da roles/dev-machine: disable docs for lemmy-server 2023-06-11 10:51:05 +00:00
a2c7edf340 flake/nixpkgs: 2023-06-07 -> 2023-06-10
```
• Updated input 'nixpkgs-unpatched':
    'github:nixos/nixpkgs/381e92a35e2d196fdd6077680dca0cd0197e75cb' (2023-06-07)
  → 'github:nixos/nixpkgs/21951114383770f96ae528d0ae68824557768e81' (2023-06-10)
• Updated input 'sops-nix':
    'github:Mic92/sops-nix/a522e12ee35e50fa7d902a164a9796e420e6e75b' (2023-06-04)
  → 'github:Mic92/sops-nix/cb85e297937af1bd1434cf5f85a3f86a21dc8207' (2023-06-11)
• Updated input 'sops-nix/nixpkgs-stable':
    'github:NixOS/nixpkgs/eaf03591711b46d21abc7082a8ebee4681f9dbeb' (2023-06-03)
  → 'github:NixOS/nixpkgs/ef24b2fa0c5f290a35064b847bc211f25cb85c88' (2023-06-10)
```
2023-06-11 10:51:05 +00:00
9b365d1771 sxmo: fix volume controls for pipewire 2023-06-11 09:57:47 +00:00
8cf3402be4 add new TODOs for better sxmo experiences 2023-06-11 08:34:20 +00:00
a92fa489cb complete todos: sxmo auto-rotation 2023-06-11 08:32:56 +00:00
837f20e892 lemmy: apply PR feedback 2023-06-11 03:43:35 +00:00
3d56117d65 gocryptfs: remove "defaults" flag 2023-06-10 23:21:42 +00:00
1724ac60e5 feeds: update URL for The Intercept 2023-06-10 23:08:51 +00:00
bf168c7f0f feeds: update URL for Deconstructed 2023-06-10 22:59:44 +00:00
37cafcf610 moby: re-enable nautilus file browser 2023-06-10 22:54:27 +00:00
27d2f756d2 moby: tweak default apps (sxmo, jellyfin qt6) 2023-06-09 09:44:27 +00:00
3ab33956e4 programs: disable unused networkmanagerapplet 2023-06-09 01:17:06 +00:00
0b71712208 moby: disable soundconverter to speed up the builds 2023-06-09 01:05:54 +00:00
f31619d9e9 programs: disable sublime-music
i don't use it frequently enough to justify building/shipping it on the
regular.
2023-06-09 01:04:26 +00:00
61838a589f programs: remove playerctl (unused)
it's used by sway, where we address it by full path
2023-06-09 01:03:49 +00:00
c10c887650 programs: clinfo: move out of guiApps -> consoleApps 2023-06-09 01:03:05 +00:00
6df61525a1 programs: dconf-editor: only build on desktop guis 2023-06-09 01:02:41 +00:00
e5ce7c02ef programs: factor ffmpeg/yt-dlp & friends out of consoleUtils 2023-06-09 00:57:53 +00:00
88e5efd1f3 programs: disable unused gnome-system-monitor, emote 2023-06-09 00:45:17 +00:00
e9200ffcdf programs: split steam into own file 2023-06-09 00:42:36 +00:00
ab78a36354 programs: separate the imports from the default packages/sets 2023-06-09 00:40:26 +00:00
c92f216a5b programs: split imagemagick into own file 2023-06-09 00:40:22 +00:00
eacd3c88d1 nixpatches: update bambu-studio PR hash 2023-06-08 22:48:57 +00:00
487fbf2236 flake/nixpkgs: 2023-05-24 -> 2024-06-07
```
• Updated input 'nixpkgs-unpatched':
    'github:nixos/nixpkgs/f91ee3065de91a3531329a674a45ddcb3467a650' (2023-05-24)
  → 'github:nixos/nixpkgs/381e92a35e2d196fdd6077680dca0cd0197e75cb' (2023-06-07)
• Updated input 'sops-nix':
    'github:Mic92/sops-nix/4ccdfb573f323a108a44c13bb7730e42baf962a9' (2023-05-21)
  → 'github:Mic92/sops-nix/a522e12ee35e50fa7d902a164a9796e420e6e75b' (2023-06-04)
• Updated input 'sops-nix/nixpkgs-stable':
    'github:NixOS/nixpkgs/d0dade110dc7072d67ce27826cfe9ab2ab0cf247' (2023-05-21)
  → 'github:NixOS/nixpkgs/eaf03591711b46d21abc7082a8ebee4681f9dbeb' (2023-06-03)
```
2023-06-08 22:37:53 +00:00
97f93e8ec0 sxmo: enable auto screen rotation by default 2023-06-08 22:14:43 +00:00
e1eac4ae46 cross: fix jellyfin-media-player-qt6 wrapper to target host platform 2023-06-08 20:11:03 +00:00
44d0b4efd4 cross: emulate only qt5 package set, and less of the actual libsForQt5 stuff 2023-06-08 20:01:21 +00:00
9ab85167c3 cross: jellyfin: build w/o using libsForQt5.callPackage 2023-06-08 09:36:43 +00:00
9730659f32 add some TODOs about work i want to push upstream 2023-06-08 08:27:20 +00:00
b45981e870 jellyfin: allow qt6 cross build (but the result exits immediately on launch) 2023-06-08 05:41:38 +00:00
95c9b5d6a2 cross: get qtwebengine to cross compile from x86_64 -> aarch64
the resulting product isn't *necessarily* correct.
i can build jellyfin, but it exits immediately.
2023-06-08 05:41:38 +00:00
05f10f0115 sane-bt-search: place URI on its own line in the results list 2023-06-08 01:46:36 +00:00
86b15d381f sane-bt-search: include non-magnet results 2023-06-08 01:32:19 +00:00
ecaab07bce Merge branch 'staging/dns-refactor' 2023-06-08 00:33:02 +00:00
4fd4efa22f DNS: split the zone generation out of trust-dns
this is in preparation for upstreaming parts of this into nixpkgs
2023-06-08 00:32:28 +00:00
527585e7eb new TODOs for sane-bt-search improvements 2023-06-07 23:57:32 +00:00
481110fefb add a todo: split out trust-dns 2023-06-07 08:08:23 +00:00
c44f69a01f modules/services/dyn-dns: specifc sane-ip-check* more irectly 2023-06-07 08:00:43 +00:00
adbc2a76c3 modules/ports.nix: specify sane-ip-port-forward more directly 2023-06-07 08:00:43 +00:00
34ed201aff browserpass: specify sane-secrets-unlock more directly 2023-06-07 08:00:39 +00:00
4d63b81b05 zsh: refer to sane-deadlines more directly 2023-06-07 07:44:46 +00:00
e1a18cdae1 sane-scripts: port sane-wipe-browser to nix-shell & remove dead resholve code 2023-06-07 07:30:11 +00:00
2a1d87650b sane-scripts: port sane-which to nix-shell 2023-06-07 07:25:43 +00:00
4a18dfeef3 sane-scripts: port sane-vpn-up to nix-shell 2023-06-07 07:24:49 +00:00
ff1aece1ed sane-scripts: port sane-vpn-down to nix-shell 2023-06-07 07:24:32 +00:00
05cf5e376a sane-scripts: port sane-sync-from-servo to nix-shell 2023-06-07 07:21:36 +00:00
855a66499f sane-scripts: port sane-sync-from-iphone to nix-shell 2023-06-07 07:20:27 +00:00
b9cc581736 sane-scripts: port sane-sudo-redirect to nix-shell 2023-06-07 07:17:26 +00:00
0a8eee8af0 sane-scripts: port sane-stop-all-servo to nix-shell 2023-06-07 07:16:27 +00:00
a40fc7e112 sane-scripts: port sane-ssl-dump to nix-shell 2023-06-07 07:12:42 +00:00
6bbb5669a6 sane-scripts: port sane-shutdown to nix-shell 2023-06-07 07:11:41 +00:00
c8d5411462 sane-scripts: port sane-secrets-* to nix-shell 2023-06-07 07:07:07 +00:00
af4cfc29b1 sane-scripts: port sane-reclaim-disk-space to nix-shell 2023-06-07 07:00:07 +00:00
9942025a2f sane-scripts: port sane-reboot to nix-shell 2023-06-07 06:58:11 +00:00
04f7287781 sane-scripts: port sane-rcp to nix-shell 2023-06-07 06:57:07 +00:00
14ae501433 sane-scripts: sane-private-*: port to nix-shell 2023-06-07 06:53:45 +00:00
46edc56a32 sane-scripts: remove sane-test 2023-06-06 09:22:01 +00:00
7907623887 sane-scripts: lift sane-mount-servo out of resholve 2023-06-06 08:24:32 +00:00
c542e120ef refactor: sane-scripts: order the non-resholve scripts, rename py-scripts 2023-06-06 08:15:50 +00:00
7fcff0b6a2 sane-scripts: lift sane-ip-check out of resholve 2023-06-06 08:14:42 +00:00
32671201a4 sane-scripts: lift sane-git-init out of resholve 2023-06-06 08:10:31 +00:00
4d2268b5f1 sane-scripts: lift sane-find-dotfiles out of resholve 2023-06-06 08:09:37 +00:00
e5fe7c093a sane-scripts: lift sane-dev-cargo-loop out of resholve 2023-06-06 08:08:20 +00:00
162f3a291c sane-scripts: lift deadlines out of resholve 2023-06-06 08:05:10 +00:00
31740befbf programs: split jellyfin-media-player into own nix module 2023-06-06 07:54:08 +00:00
0c610c8f1c jellyfin-media-player: working qt6 build
haven't checked cross compilation
2023-06-06 07:54:08 +00:00
e9dc22c1f2 sxmo-utils: sxmo_hook_start.sh: don't start pulse/pipewire audio daemons at start; don't warn on 'first' use 2023-06-06 07:54:08 +00:00
75e6393680 sxmo-utils: move the upstrea sxmo_hook_start.sh inline
this can let me customize it aggressively here

but see track how it originally looked
2023-06-06 07:54:08 +00:00
9ca6857f4d sxmo-utils: refactor a bit to allow easier customizing 2023-06-06 07:54:08 +00:00
8c30b87a94 sane-find-dotfiles: include ~/.local/state 2023-06-06 07:54:08 +00:00
6ffd6693cb sane-scripts: remove sane-date-math
why did i even make this...
2023-06-06 07:54:08 +00:00
e11fe929f4 alsa-ucm-conf-sane: move from patched/ to additional/
the way i'm using this lately calls into question the naming scheme...
2023-06-06 07:54:08 +00:00
3dcd5629a7 moby: set ALSA_CONFIG_UCM2 in all the places it's needed 2023-06-06 07:54:08 +00:00
4cf4c38da3 WIP: jellyfin-media-player: support qt6
the hope is that achieving this would allo much faster mobile deployments

as qt6 can generally compile w/o emulation
2023-06-06 07:54:08 +00:00
e0e3c36d1b fix NIX_PATH overlay interaction that was crashing nix-shell 2023-06-06 07:49:52 +00:00
108c1d9d60 moby: don't set ALSA_CONFIG_UCM2 var within pulseaudio service 2023-06-01 09:38:51 +00:00
c6e16ebc13 alsa-ucm-conf: patch custom PinePhone conf into the upstream package rather than shipping *only* the PinePhone configs
this is more to faciliate a goal of eventually not shipping any custom audio profiles

i.e. stay close to how upstream does things until we reach that goal

-mnote that this doesn't actually override the alsa-ucm-conf nix package (yet).

doing so is costly
2023-06-01 09:19:45 +00:00
aa60838551 gpodder-configured: don't bail if we fail to realize the feeds 2023-06-01 00:10:36 +00:00
d6bde02dfe feeds: update URL for Acquired podcast 2023-06-01 00:04:54 +00:00
d07bb03936 feeds: update URL/title for _ACQ2_ 2023-05-31 23:57:08 +00:00
1ab2f42ff4 feeds: update URL for _The Portal_ 2023-05-31 23:54:46 +00:00
e0d20cb62a cross: fix phosh cross compilation 2023-05-31 09:16:04 +00:00
f8944c8379 programs: ship alsaUtils 2023-05-31 08:15:32 +00:00
ca38bb4aec refactor: remove deprecated types.string uses 2023-05-31 04:27:27 +00:00
287817056f refactor: sane.services.wan-ports -> sane.ports 2023-05-31 04:25:39 +00:00
5cc7ced859 dns: rework so that we branch to the LAN v.s. WAN results based on source IP of the query -- not interface.
this simplifies the UPnP forwards and the OVPN routing
2023-05-31 00:56:52 +00:00
4dc5378b3e dns: give different results based on which port the request arrives from
WAN and VPN requests are served by local port 1053 and `wan.uninsane.org`.

LAN requests are served by port 53 and `servo.lan.uninsane.org`.

i'm not *super* fond of this. a recursive resolver of uninsane.org via the VPN will only ever get WAN addresses (broken).

we may prefer to do IP-based responses, maybe via the same Linux firewall rules that forward from VPN namespace to root namespace
2023-05-30 12:00:30 +00:00
fe7e440997 git: remove __pycache__ 2023-05-28 21:49:29 +00:00
e4262cb0bc ssh: integrate with sane.services.wan-ports 2023-05-28 20:39:18 +00:00
35c9f2bf60 servo: enable UPnP port forwarding timer 2023-05-28 20:38:24 +00:00
13794e9eaa sane-scripts: build sane-ip-port-forward with inetutils (required for hostname command) 2023-05-27 23:27:36 +00:00
a33950da62 sane-scripts: UPnP retrieves LAN IP from the gateway 2023-05-27 23:26:57 +00:00
37995e23c2 sane-scripts: make the UPnP/ssdp code more resilient to errors 2023-05-27 23:17:47 +00:00
66156829d9 flake/nixpkgs: 2023-05-22 -> 2023-05-24
```
• Updated input 'nixpkgs-unpatched':
    'github:nixos/nixpkgs/7084250df3d7f9735087d3234407f3c1fc2400e3' (2023-05-22)
  → 'github:nixos/nixpkgs/f91ee3065de91a3531329a674a45ddcb3467a650' (2023-05-24)
```
2023-05-27 21:02:28 +00:00
3c40fa6982 sane-script to forward a list of ports via UPnP 2023-05-27 09:57:41 +00:00
c1ddddddc0 ports: hide behind services.sane.wan-ports
later i will use this to enable UPnP on relevant ports
2023-05-26 23:28:30 +00:00
aae118b476 net: open UDP ports required for UPnP 2023-05-26 22:45:41 +00:00
7e402ce974 dyn-dns: obtain IP address via UPnP 2023-05-26 22:40:50 +00:00
5b80308074 servo: disable broken mx-discord-puppet 2023-05-26 21:04:54 +00:00
e5c94b410f lemmy-ui: update nodejs version 2023-05-26 21:04:34 +00:00
209c18cb38 flake/nixpkgs: 2023-05-18 -> 2023-05-22
```
• Updated input 'nixpkgs-unpatched':
    'github:nixos/nixpkgs/48a0fb7aab511df92a17cf239c37f2bd2ec9ae3a' (2023-05-18)
  → 'github:nixos/nixpkgs/7084250df3d7f9735087d3234407f3c1fc2400e3' (2023-05-22)
• Updated input 'sops-nix':
    'github:Mic92/sops-nix/a376127bb5277cd2c337a9458744f370aaf2e08d' (2023-05-14)
  → 'github:Mic92/sops-nix/4ccdfb573f323a108a44c13bb7730e42baf962a9' (2023-05-21)
• Updated input 'sops-nix/nixpkgs-stable':
    'github:NixOS/nixpkgs/c6d2f3dc0d3efd4285eebe4f8a36a47ba438138e' (2023-05-14)
  → 'github:NixOS/nixpkgs/d0dade110dc7072d67ce27826cfe9ab2ab0cf247' (2023-05-21)
```
2023-05-26 05:58:22 +00:00
616a2dd19f add todo: debug wireguard flakiness 2023-05-26 05:58:08 +00:00
5b0f898c62 roles/ac: disable unused p2p services
i2p in particular binds to port 1900, which is partially in conflict with UPnP
2023-05-26 04:53:35 +00:00
a541e866a1 servo: remove the extraneous firewall enable statement. FW is enabled by default 2023-05-26 04:52:52 +00:00
d3eb0bee26 enable some net debugging tools 2023-05-25 09:48:42 +00:00
2ca0f6ea62 cross compilation: fix wrapFirefox
now the web browser extensions should work on moby?? :o :o
2023-05-25 06:07:05 +00:00
66be38bfbf librewolf: enable some more policies which might or might not actually improve things :-(
i really hate firefox, but there's not much alternative.
2023-05-25 01:01:34 +00:00
4785e54024 flake: new output to build sane.programs.foo.package 2023-05-24 23:32:21 +00:00
aecb55c79e programs/web-browser: allow overriding specific addons 2023-05-24 23:09:05 +00:00
1759d5a075 build bonsai via upstream PR 2023-05-24 23:08:12 +00:00
f50feb6c96 add todo: upstreaming of bonsai 2023-05-24 09:38:13 +00:00
d2b50b53d4 cross: browserpass-extension can cross-compile 2023-05-24 09:37:47 +00:00
4550299bdb moby: sxmo: configure defaults 2023-05-24 09:37:26 +00:00
67a23c01e9 sxmo: allow full 180 rotation 2023-05-24 09:00:36 +00:00
077d11a0d6 add todo: sxmo autorotation improvements 2023-05-24 07:41:48 +00:00
49db12b8fd complete todo item: fixed nur 2023-05-24 07:41:48 +00:00
8cde4135b1 matrix: irc: libera: configure with sasl=false 2023-05-24 07:40:35 +00:00
12cd61c9f7 sxmo: support KEYBOARD 2023-05-24 06:06:16 +00:00
c882fb673e cross: wvkbd: support aarch64 builds 2023-05-24 05:57:30 +00:00
19f022a682 pkgs/default.nix: conditionally import partially-upstreamed packages to fix NUR 2023-05-24 05:57:26 +00:00
839f51a6a2 hare: pull patches from upstream PR 2023-05-24 05:52:17 +00:00
9b2b261bd3 fix overlay application order so cross comes before pkgs
this lets me add new packages, and have them be emulated on moby builds
2023-05-24 03:57:35 +00:00
b2fe449c7f bonsai: remove aarch64-specific hacks
they aren't needed with newer hare
2023-05-23 20:17:40 +00:00
da5e3e6742 hare: upgrade version so we don't need to patch as much 2023-05-23 19:08:29 +00:00
68763ade1f sxmo: enable gnome-keyring as required by nheko 2023-05-23 10:54:55 +00:00
1fadd6b177 fix NUR evaluation 2023-05-23 09:44:05 +00:00
2ac9c98bc0 moby: get lisgd gestures working for sxmo 2023-05-23 05:22:17 +00:00
67b6dfc3d3 sxmo: ship a11y and session packages, needed by lightdm-mobile-greeter 2023-05-23 04:43:27 +00:00
8dddf83eb7 bonsai: remove dead commented code 2023-05-23 01:03:36 +00:00
e41ff28746 bonsai: fix aarch64 build 2023-05-23 01:03:36 +00:00
6d1baab11f hosts: allow building of broken packages 2023-05-23 01:03:36 +00:00
a6f68ac90c flake/uninsane.org: 2023-04-30 -> 2023-05-19 2023-05-19 20:42:09 +00:00
3aa1a9f674 Merge branch 'staging/nixpkgs-2023-05-18' 2023-05-19 20:07:21 +00:00
21d17c330f sane-backup-*: port to nix-shell 2023-05-19 19:58:37 +00:00
ae2e4931f3 sane-bt-show: port to nix-shell 2023-05-19 19:52:44 +00:00
c662936490 sane-bt-add: add help message & port to nix-shell 2023-05-19 19:48:52 +00:00
d6fb2ab5b4 flake/nixpkgs 2023-05-14 -> 2023-05-18; nix-serve -> 2023-05-17
```
• Updated input 'nix-serve':
    'github:edolstra/nix-serve/3b6d30016d910a43e0e16f94170440a3e0b8fa8d' (2023-03-07)
  → 'github:edolstra/nix-serve/e6e3d09438e803daa5374ad8edf1271289348456' (2023-05-17)
• Updated input 'nixpkgs-unpatched':
    'github:nixos/nixpkgs/0470f36b02ef01d4f43c641bbf07020bcab71bf1' (2023-05-14)
  → 'github:nixos/nixpkgs/48a0fb7aab511df92a17cf239c37f2bd2ec9ae3a' (2023-05-18)
```
2023-05-19 19:31:37 +00:00
8a28e347f5 matrix: bridge to irc.libera.chat 2023-05-19 10:47:41 +00:00
a8eaaa4e7a sxmo: gtkgreet: launch sxmo instead of sway o.0 2023-05-19 10:43:28 +00:00
0289dee658 sxmo: greetd: fix settings -> session typo 2023-05-19 10:27:27 +00:00
c8aa6a057f sxmo: make configurable if it launches on sway v.s. lightdm-mobile-greeter 2023-05-19 10:18:26 +00:00
dd17843c76 sxmo: split the laptop-specific config into hosts/by-name/lappy 2023-05-19 09:36:17 +00:00
ae7e372b97 add TODO: zsh: disable "command not found" helper 2023-05-19 09:13:51 +00:00
af9d435517 sxmo: use the better-supported foot terminal
this is just precautionary
2023-05-19 08:04:17 +00:00
4d92458db3 sxmo: include xdotool package 2023-05-19 08:04:05 +00:00
19944c2a46 sxmo: disable auto-lock 2023-05-19 08:03:51 +00:00
3b5d08f808 sxmo-utils: patch to preserve 105 key layout after menu manipulation 2023-05-19 08:03:24 +00:00
c748de74a0 SXMO: add missing swayidle dependency 2023-05-19 00:09:23 +00:00
951e3a617a SXMO: disable LEDs
on thinkpad it would cause warnings
2023-05-19 00:09:02 +00:00
11d5af99b2 SXMO: add missing jq dependency 2023-05-19 00:04:18 +00:00
7dadea94da don't shutdown device when power button is tapped
notably, this will allow sxmo to intercept the keypress
2023-05-19 00:01:40 +00:00
abfd516025 sxmo: configure volume and power keys 2023-05-18 11:10:43 +00:00
e2e044a8f4 sxmo: switch terminal to kitty 2023-05-18 11:10:28 +00:00
bacc17e333 sxmo: add missing bonsai, bc dependencies 2023-05-18 11:10:14 +00:00
6e483c9ed9 nixpatches: remove flutter, kaiteki dead patches 2023-05-18 11:09:48 +00:00
ace9d71d0e nix-serve: fix typo 2023-05-18 11:07:51 +00:00
54c7d00621 get conky to cross compile 2023-05-18 11:07:36 +00:00
ec77cdaa49 complete TODO: lemmy upstream
which is to say, i've sent them upstream & am waiting
2023-05-18 08:37:17 +00:00
72e8d62145 Merge branch 'staging/nixpkgs-2023-05-14' 2023-05-18 08:35:24 +00:00
6344c3da8b bonsai: provide missing dependencies to unbreak package 2023-05-18 07:34:41 +00:00
88f91bd2d4 hare-ev: init at unstable-2022-12-29 2023-05-18 07:34:01 +00:00
dfc4ac2f86 hare-json: init at unstable-2023-01-31 2023-05-18 07:29:22 +00:00
43ec95f54a begin packaging for bonsai (incomplete) 2023-05-18 01:31:06 +00:00
25f4661b29 cross: ibus: document why it does not compile 2023-05-18 00:00:09 +00:00
56f7011ada cross: samba: don't patch 2023-05-17 23:59:43 +00:00
85c8292f9a pkgs/default.nix: simplify (no need for the scope) 2023-05-17 23:17:24 +00:00
2db988b67c cross: fix gocryptfs, squeekboard 2023-05-17 23:16:33 +00:00
6301ea3a16 don't install some programs i don't use anymore 2023-05-17 10:39:50 +00:00
1596685d2b add TODO: auto-populate sane.programs 2023-05-17 10:39:20 +00:00
4f494228d3 sxmo: enable pipewire audio 2023-05-17 10:19:13 +00:00
12d120cd81 sxmo: ship conky, wob dependencies 2023-05-17 10:18:58 +00:00
dc0c3ff887 sxmo: link to some other nix users 2023-05-17 10:18:11 +00:00
aa3515ade2 add TODO: enable IPv6 2023-05-17 08:49:06 +00:00
16cee4e8d4 sane-scripts/sane-wipe-browser: init 2023-05-17 08:36:52 +00:00
3a942ad8a4 add TODO: fix nur evaluation 2023-05-17 07:32:27 +00:00
8973cb22b7 sxmo: add nerdfonts font
otherwise certain symbols don't render on the waybar.

still not all do, but it's better than before.
2023-05-17 07:16:30 +00:00
e0bd579e44 Revert "sxmo-utils: define a hooks passthru package"
This reverts commit 3f9261d765.

we achieve hooks at the service layer now.
2023-05-17 07:00:52 +00:00
a96e10617f sxmo: get gesture support working 2023-05-17 07:00:42 +00:00
14a4d8d577 sxmo-utils: patch the bin paths in superd services 2023-05-17 07:00:42 +00:00
3f9261d765 sxmo-utils: define a hooks passthru package 2023-05-17 07:00:39 +00:00
9b5c39e3c5 users: add colin to input group 2023-05-17 06:59:46 +00:00
2e9eb51893 i2p/yggdrasil: factor out and only enable for desko/servo
especially this means i no longer run them on moby, improving battery life & such
2023-05-17 01:53:17 +00:00
3135b92257 add TODO: better URI parsing 2023-05-17 00:26:18 +00:00
7ef504d14b git: configure a better log format 2023-05-17 00:26:04 +00:00
fa952e076a sxmo: add bemenu and ligsd dependencies
this doesn't mean they're active yet
2023-05-17 00:25:14 +00:00
bb7462523b sxmo-utils: fix an internally broken xkb path 2023-05-17 00:24:46 +00:00
44d3623165 add TODO: auto-mount servo 2023-05-16 22:18:28 +00:00
42aca2483e sway: move log off of /tmp storage 2023-05-16 11:40:30 +00:00
998647c8b5 add TODO: dev documentation browser 2023-05-16 11:24:34 +00:00
e24e76fd8f get the sxmo service to boot to desktop
not sure how to actually launch anything with it >_<
2023-05-16 11:10:19 +00:00
d3a7bfda7f sxmo-utils 1.13.0 -> 1.14.1 2023-05-16 11:09:57 +00:00
76d875ef3c cross: fix python cryptography build 2023-05-16 09:52:21 +00:00
b74c4550d5 sane-bt-search: handle trailing newlines in API key 2023-05-16 07:19:09 +00:00
beef453802 sops: fix key map after universal -> common rename 2023-05-16 07:19:09 +00:00
2da544a39e nixpkgs (flake input): 2023-05-06 -> 2023-05-14
```
• Updated input 'nixpkgs-unpatched':
    'github:nixos/nixpkgs/897876e4c484f1e8f92009fd11b7d988a121a4e7' (2023-05-06)
  → 'github:nixos/nixpkgs/0470f36b02ef01d4f43c641bbf07020bcab71bf1' (2023-05-14)
```
2023-05-16 07:19:09 +00:00
32dcfde7e9 sxmo-utils: init at 1.13.0
thanks to noneucat for sharing their own packaging of sxmo on nix
2023-05-16 07:08:04 +00:00
e0c2e8c149 lemmy: split the nginx config out into something that can be upstreamed later
(waiting for the nixosTests to pass before upstreaming)
2023-05-16 06:04:29 +00:00
95635be1d5 matrix: bridge to irc.oftc.net 2023-05-16 05:55:16 +00:00
c2682fdbf3 mime: associate webm with vlc/video player 2023-05-16 05:08:56 +00:00
d43d02bff5 gpodder: fix opml deployment 2023-05-16 02:12:14 +00:00
4e6deae299 add TODO: better OOM experience (e.g. swap space) 2023-05-15 23:30:50 +00:00
e850bb4f5f phoc: patch screen blank fix 2023-05-15 23:30:29 +00:00
f76c180ed6 programs: remove logseq (unused) 2023-05-15 22:37:01 +00:00
e8efc855bb roll-back phoc update (though maybe not strictly necessary, also roll back Phosh)
this new config is usable
2023-05-15 22:08:09 +00:00
7684ae91e0 update phoc/phosh via patches 2023-05-15 19:42:28 +00:00
b124035281 nixpatches: point kiwix-tools to upstream PR 2023-05-15 11:03:05 +00:00
68bc670613 phosh-mobile-settings: 0.23.1 -> 0.27.0
not deployed yet though
2023-05-15 11:01:02 +00:00
3881f79af0 kiwix-tools: 3.4.0 -> 3.5.0 2023-05-15 10:54:43 +00:00
a47e785ae7 sway: tidy 2023-05-15 02:51:57 +00:00
f8d02687b9 sway: split sway-config out of toplevel 2023-05-15 02:48:58 +00:00
23e39481a4 sway: use blueberry instead of gnome-bluetooth
blueman-manager and gnome-bluetooth both seem to fail outside of gnome DE
2023-05-15 02:42:33 +00:00
9769aea3b3 sway: split waybar-config.nix out from toplevel config 2023-05-15 02:36:28 +00:00
7bbec9d6f5 sway: split waybar-style.css out of top-level config 2023-05-15 02:30:07 +00:00
f8a2691ca0 sway: move to subdir 2023-05-15 02:22:09 +00:00
d024637edf "fix" gnome-control-center to run on sway again 2023-05-15 02:09:32 +00:00
6501f4c0d7 update TODOs: zecwallet-lite -> source build 2023-05-15 01:01:08 +00:00
c85a429388 servo: fix pleroma secret config syntax 2023-05-15 00:58:31 +00:00
99963c1133 update TODOs: add upstreaming section 2023-05-15 00:42:39 +00:00
5c52a25ccf update TODOs: UX improvements 2023-05-15 00:38:32 +00:00
4a782db808 update TODOs: UX improvements 2023-05-15 00:36:25 +00:00
f88bbfbb81 inputs/sops-nix: 2023-05-08 -> 2023-05-14
```
• Updated input 'sops-nix':
    'github:Mic92/sops-nix/36b062a2c85a0efb37de1300c79c54602a094fab' (2023-05-08)
  → 'github:Mic92/sops-nix/a376127bb5277cd2c337a9458744f370aaf2e08d' (2023-05-14)
• Updated input 'sops-nix/nixpkgs-stable':
    'github:NixOS/nixpkgs/ba0086c178d4ed60a7899f739caea553eca2e046' (2023-05-08)
  → 'github:NixOS/nixpkgs/c6d2f3dc0d3efd4285eebe4f8a36a47ba438138e' (2023-05-14)
```
2023-05-14 10:49:08 +00:00
b403348e43 install-iwd: port to static-nix-shell 2023-05-14 10:32:20 +00:00
51ca72da84 iwd: fix secret installation 2023-05-14 10:21:16 +00:00
38d921dbc9 update TODOs: some secrets work is now complete 2023-05-14 09:58:49 +00:00
fb427e55e8 secrets: define these by crawling the repo to decrease duplication 2023-05-14 09:50:01 +00:00
bf56200345 hosts: document the directory structure 2023-05-14 08:56:38 +00:00
7c31407ead secrets: rename "universal" -> "common" to match the language of hosts/ 2023-05-14 08:52:43 +00:00
b39a250e22 secrets: fix servo secrets to all be "binary" format 2023-05-14 08:47:21 +00:00
0822ed34d7 secrets: split matrix_synapse_secrets out of servo.yaml 2023-05-14 08:46:40 +00:00
147b1c50b2 secrets: split pleroma_secrets out of servo.yaml 2023-05-14 08:44:37 +00:00
55875816d0 secrets: split nix_serve_privkey out of servo.yaml 2023-05-14 08:43:07 +00:00
e25a4bbee6 secrets: split freshrss_passwd out of servo.yaml 2023-05-14 08:41:27 +00:00
dbb9e00bed secrets: split dovecot_passwd out of servo.yaml 2023-05-14 08:40:35 +00:00
6b1c3d02c1 secrets: split wg_ovpns_privkey out of servo.yaml 2023-05-14 08:38:46 +00:00
4a448a1bf1 secrets: split ddns_afraid out of servo.yaml 2023-05-14 08:37:13 +00:00
452a55c5e1 secrets: split ddns_he out of servo.yaml 2023-05-14 08:36:04 +00:00
d10f70aff7 secrets: split duplicity_passphrase out of servo.yaml 2023-05-14 08:34:36 +00:00
38423183ee secrets: split mediawiki_pw out of servo.yaml 2023-05-14 08:33:22 +00:00
5c3be90b82 secrets: split wireguard keys out of universal.yaml 2023-05-14 08:26:54 +00:00
eabeef9f30 secrets/universal: document some of the more obscure secrets 2023-05-14 08:22:16 +00:00
f5dcca5166 secrets: split router_passwd out from universal.yaml 2023-05-14 08:19:54 +00:00
d9a23dfc1b secrets: split transmission_passwd out of universal.yaml 2023-05-14 08:17:06 +00:00
adb2162a9c secrets: split jackett_apikey out of universal.yaml 2023-05-14 08:16:56 +00:00
ed020b56c0 secrets: split moby.yaml into file-per-secret 2023-05-14 02:42:07 +00:00
ff01155efc secrets: remove dead lappy.yaml file 2023-05-14 02:35:01 +00:00
af42cbd575 servo: fix typo in nixserve secret config 2023-05-14 02:33:56 +00:00
974656a80a secrets: split lappy.yaml into per-secret files 2023-05-14 02:33:21 +00:00
318efe09e2 secrets: split desko.yaml into one-secret-per-file 2023-05-14 02:29:30 +00:00
88bce722d5 TODO: validate duplicity backups 2023-05-14 02:10:07 +00:00
74e3aa02b9 servo: disable DNSSEC to fix connectivity problems 2023-05-13 21:28:47 +00:00
05ee8f92b3 TODO: debug slow nixos-rebuilds 2023-05-13 12:58:48 +00:00
a5fafee4dd hosts: fix servo lan IP typo 2023-05-13 12:56:11 +00:00
4afdc11882 hosts: update LAN UP addresses 2023-05-13 11:58:10 +00:00
310f5982cb static-nix-shell: factor out more helpers & correctly abort build on config error 2023-05-13 11:39:46 +00:00
b6ae9f3646 static-nix-shell: factor out some commonalities between bash & python impls 2023-05-13 11:24:58 +00:00
0270ccdebd sane-scripts: add sane-bt-rm to remove torrents
also rework statix-nix-shell to support bash
2023-05-13 10:31:48 +00:00
efd45c58f1 start tracking TODO items in-repo 2023-05-13 10:04:46 +00:00
596aaf93f6 linux-megous: 6.2-rc5 -> 6.3.0 2023-05-12 10:35:33 +00:00
943008ae5b feeds: unsubscribe from This Is Democracy 2023-05-12 07:47:01 +00:00
9d6629ad12 feeds: subscribe tuxphones.com 2023-05-12 07:45:42 +00:00
9e21101207 Merge branch 'staging/nixpkgs-2023-05-06' 2023-05-12 06:55:13 +00:00
5997283cef lemmy: break pict-rs config into own unit & persist its data 2023-05-12 06:54:26 +00:00
3c2715648c moby: ship compressed kernel images
i've verified that .gz images boot. don't know about zImage, etc.
2023-05-12 06:49:59 +00:00
265642c8da lemmy: remove the log-startup patch
it was only needed for debugging; now i can stay closer to mainline
2023-05-12 05:55:28 +00:00
d7bed3bec2 lemmy: remove debugging statements 2023-05-12 04:49:15 +00:00
079ab08642 lemmy: remove federation.debug 2023-05-12 04:47:10 +00:00
e34c9cc190 lemmy: enable proxyWebsockets instead of manually specifying upgrade logic 2023-05-12 04:46:38 +00:00
6ff2c8acae lemmy: restrict the http_accept types i forward to the backend
it seems that forwarding `POST`s is the important part i was missing earlier
2023-05-12 03:05:26 +00:00
04e8e72ae3 lemmy: switch back to using nix-style proxyPass 2023-05-12 02:47:47 +00:00
5b33c85e75 gitea: link to config options 2023-05-12 02:35:46 +00:00
083d905f4c lemmy: fix federation
now when i subscribe to a community, the request actually seems to go through.

this change probably does more than necessary, but it serves as a known-good config
2023-05-12 02:35:37 +00:00
dd25c26845 add colin to wireshark group 2023-05-11 23:46:59 +00:00
3bdbd9db7b nixpkgs.hostPlatform: set as default, to allow hosts to customize it later 2023-05-11 22:39:14 +00:00
a077009064 fix moby cross compilation 2023-05-11 21:31:41 +00:00
46baec344d don't ship wireshark on non-desktop machines 2023-05-11 21:31:23 +00:00
a23f5c148c sublime-music-mobile: bump dependencies to fix build 2023-05-11 08:16:21 +00:00
ada8b75670 transmission: double upload BW to 600 kBps 2023-05-11 06:27:31 +00:00
852a3e7686 nixpkgs: 2023-04-25 -> 2023-05-06
```
• Updated input 'mobile-nixos':
    'github:nixos/mobile-nixos/4aa0afd84005b79be4d5361b56a60df9e9bd4ea3' (2023-04-03)
  → 'github:nixos/mobile-nixos/ba4638836e94a8f16d1d1f9e8c0530b86078029c' (2023-05-07)
• Updated input 'nixpkgs-unpatched':
    'github:nixos/nixpkgs/d0ea36ece469a71a909ebff90777c2f7a49478bb' (2023-04-25)
  → 'github:nixos/nixpkgs/897876e4c484f1e8f92009fd11b7d988a121a4e7' (2023-05-06)
• Updated input 'sops-nix':
    'github:Mic92/sops-nix/7c8e9727a2ecf9994d4a63d577ad5327e933b6a4' (2023-04-24)
  → 'github:Mic92/sops-nix/36b062a2c85a0efb37de1300c79c54602a094fab' (2023-05-08)
• Updated input 'sops-nix/nixpkgs-stable':
    'github:NixOS/nixpkgs/ee7ec1c71adc47d2e3c2d5eb0d6b8fbbd42a8d1c' (2023-04-22)
  → 'github:NixOS/nixpkgs/ba0086c178d4ed60a7899f739caea553eca2e046' (2023-05-08)
```
2023-05-10 23:32:31 +00:00
6dbcc89c2e cargo-docset: source via nixpkgs PR 2023-05-10 23:30:03 +00:00
d661a0776a nixpatches: factor out an abstraction above fetchpatch for common upstreaming workflows 2023-05-10 22:51:34 +00:00
e71079b354 cargo-docset: replace with nixpkgs-level patch (for upstreaming) 2023-05-10 22:36:27 +00:00
99eb0962ad Revert "cargo-docset: rename package to cargoDocset"
This reverts commit f09a10a168.

nixpkgs convention is to keep cargo packages in kebab-case.
2023-05-10 22:10:11 +00:00
9c79791428 cargoDocsetHook: invoke via cargo
this makes sure we really have all the dependencies on the PATH which we need
2023-05-10 22:09:03 +00:00
f09a10a168 cargo-docset: rename package to cargoDocset 2023-05-10 21:45:59 +00:00
4ddf381d41 zeal-qt5: rename to zeal
i don't really care that it's qt5 v.s. qt6, say.
2023-05-10 21:24:58 +00:00
d5ffa6d796 zeal/docsets: ship on desko too 2023-05-10 21:23:42 +00:00
24364992e1 README: update repo structure & link to mirrors 2023-05-10 10:15:05 +00:00
b9afd1e340 lemmy: fixup websocket forwarding
able to create admin account and subscribe to remote communities.
haven't tested posting comments.
2023-05-10 08:24:52 +00:00
5936ea5008 yggdrasil: fix deprecated option use 2023-05-10 05:30:30 +00:00
c4bf887fe6 net: add conn for calyx-roomie 2023-05-10 04:52:34 +00:00
20e2ff1fe7 programs: ship wireshark 2023-05-10 04:52:12 +00:00
59a2259105 feeds: add theregister.com 2023-05-09 22:53:06 +00:00
bfcbea5ca1 lemmy: fix the database connection 2023-05-09 10:05:14 +00:00
0376b15a2f matrix: appservice-irc: connect to esper.net IRC 2023-05-09 08:01:26 +00:00
26c3441344 snippets: include router login and archive.is 2023-05-08 22:20:43 +00:00
51c7ccd782 feeds: subscribe Morning Brew 2023-05-08 21:50:59 +00:00
74ed7bff11 programs: remove wantedBy from the fs, and make it implicit 2023-05-08 21:41:02 +00:00
836b74991a mx-sanebot: remove cargoDocsetHook dependency
this is now injected when we specifically ask for docs
2023-05-08 21:20:04 +00:00
fbae81eca7 zeal: ship docsets via programs config 2023-05-08 19:18:02 +00:00
89f28e63b4 fs: leave a note about trying lazyAttrs 2023-05-08 09:50:10 +00:00
f89f136041 sane.programs: allow per-program config (and port web-browser to use that) 2023-05-08 09:49:58 +00:00
d220aadc2d web-browser: move default enable flag to programs/default.nix 2023-05-05 23:01:42 +00:00
94a8c00a40 gitea: migrate config away from deprecated options 2023-05-05 22:33:59 +00:00
3e94a0d0f0 Merge branch 'master' of git.uninsane.org:colin/nix-files 2023-05-05 22:25:47 +00:00
094356cae2 feeds: subscribe acoup.blog 2023-05-05 22:11:06 +00:00
a78c516817 lemmy: fix the perms when running db migrations 2023-05-05 02:04:37 +00:00
e0047150cc feeds: unsubscribe from Drew Devault 2023-05-05 01:52:11 +00:00
5bf80a701d feeds: add Eli Qian 2023-05-05 01:51:28 +00:00
b44c0e774e sane-bt-search: handle mis-encoded iso timestamps 2023-05-04 00:38:04 +00:00
6b9bbe278f moby: shift the kernel config into the linux-megous package 2023-05-03 22:48:07 +00:00
afdf3442b4 mx-sanebot: further simplify build for when cargoDocsetHook doesn't exist 2023-05-03 22:40:27 +00:00
b5b32fde95 cargoDocsetHook: init, and use to simplify mx-sanebot build 2023-05-03 22:29:32 +00:00
96eb427ea7 matrix: support larger uploads (100M) 2023-05-03 22:22:09 +00:00
8ffb7b5893 Merge branch 'master' of git.uninsane.org:colin/nix-files 2023-05-03 22:21:46 +00:00
1aed894d2e linux-megous: fix eval error from aliased kernelPatches
have not completed a redeploy, so unsure if this has precisely the same
meaning as it used to.
2023-05-03 10:20:00 +00:00
13ee861b0d lightdm-mobile-greeter: avoid IFD 2023-05-03 09:43:20 +00:00
35d6f40263 browserpass-extension: avoid IFD 2023-05-03 09:40:40 +00:00
185f1f8f11 Merge branch 'staging/nur' 2023-05-03 08:27:29 +00:00
18ebfb9d9f fix feedsearch-crawler to build outside of overlay 2023-05-03 08:16:46 +00:00
a8584cf8dc linux-megous: fix eval error from aliased kernelPatches 2023-05-03 07:25:21 +00:00
57fcd33392 fix dangling reference to feeds.[passthru.]update 2023-05-03 06:48:38 +00:00
569a990488 fix so pythonPackagesExtensions takes effect when importing my packages w/o overlay 2023-05-03 06:47:41 +00:00
915f792b74 overlay: fix pythonPackagesExtension directive 2023-05-03 06:22:33 +00:00
897ba300b2 move pythonPackagesExtensions up to toplevel where it belongs 2023-05-03 06:13:18 +00:00
89f81da134 cleanup: move my packages to just one toplevel scope
having multiple scopes -- particularly near the toplevel -- was actually just a complication
2023-05-03 05:59:48 +00:00
1b76f1d643 cleanup: place packages into scopes
this helps for my own packages which depend on eachother: they should now evaluate without an overlay
2023-05-03 03:19:39 +00:00
9f21fbceda nur: better docs for my entrypoint 2023-05-03 00:56:23 +00:00
ff081f3da6 hosts: fix moby lan ip 2023-05-02 18:04:24 +00:00
b15fd0ced5 hosts: fix lappy lan ip 2023-05-02 06:00:06 +00:00
2450bb6f06 refactor package layout to conform better with NUR expectations 2023-05-02 01:27:51 +00:00
dc0ad98db6 uninsane-dot-org: update da209f34 -> 257c45a8
```
• Updated input 'uninsane-dot-org':
    'git+https://git.uninsane.org/colin/uninsane?ref=refs%2fheads%2fmaster&rev=da209f34ce34eb6b8c4d2b3256a02eb23ad9f655' (2023-04-30)
  → 'git+https://git.uninsane.org/colin/uninsane?ref=refs%2fheads%2fmaster&rev=257c45a8b7c5f7edc309362097193900c072040a' (2023-04-30)
```
2023-04-30 10:35:41 +00:00
7d581f93cc uninsane-dot-org: 2023-04-20 -> 2023-04-30
notably, fix some on-site links

```
• Updated input 'uninsane-dot-org':
    'git+https://git.uninsane.org/colin/uninsane?ref=refs%2fheads%2fmaster&rev=3b9ce28b7a65d516eedddac67a224493399e5b1e' (2023-04-20)
  → 'git+https://git.uninsane.org/colin/uninsane?ref=refs%2fheads%2fmaster&rev=da209f34ce34eb6b8c4d2b3256a02eb23ad9f655' (2023-04-30)
```
2023-04-30 00:54:08 +00:00
96d113ffac lemmy: bump to git version in attempt to debug failed launch 2023-04-30 00:54:08 +00:00
b247c920f6 README: link to the projects i reference 2023-04-29 23:14:20 +00:00
dfa921035d README.md: cleanup 2023-04-29 23:01:37 +00:00
0c59f4e59c readme.md -> README.md 2023-04-29 22:08:50 +00:00
3dda51db7d mx-sanebot: fix formatting typos 2023-04-29 10:34:46 +00:00
b5a6a7a57c mx-sanebot: pretty-print torrent search results 2023-04-29 10:32:19 +00:00
f300cb1202 mx-sanebot: factor out a helper when invoking processes 2023-04-29 09:35:07 +00:00
10a100c961 mx-sanebot: format the help message in html 2023-04-29 09:18:05 +00:00
25d2234c69 sane-bt-search: add --json flag to control output format 2023-04-29 08:59:06 +00:00
fa5bc18721 mx-sanebot: add command to search for torrents 2023-04-29 08:42:31 +00:00
7c1961eba8 mx-sanebot: port the parsing over to a more formal implementation 2023-04-29 07:31:16 +00:00
b0c68308b7 WIP: mx-sanebot: first pass at formalizing a parser 2023-04-29 03:22:10 +00:00
6f7b7ddb84 Merge branch 'master' of git.uninsane.org:colin/nix-files 2023-04-28 09:20:05 +00:00
1cc139c45c Merge branch 'staging/nixpkgs-2023-04-24-staging-next' 2023-04-28 09:19:32 +00:00
d06516a71b servo: try to ship lemmy (it's failing with some DB migration stuff) 2023-04-28 02:02:39 +00:00
1c5a7b72ea mx-sanebot: add command that can show torrent status 2023-04-28 01:50:25 +00:00
afc916c9f8 mx-sanebot: split out a cleaner API between the Matrix events and the bot's event-handling logic 2023-04-28 01:33:47 +00:00
7b141f6f58 mx-sanebot: refactor event handling
now we handle invites using the same sync idioms as with normal messages
2023-04-27 23:35:42 +00:00
94b7826099 lightdm-mobile-greeter: fix to comply with newer cargo git deps/nixpkgs requirements 2023-04-27 21:01:36 +00:00
fd82256bbc install zeal docs for packages like mx-sanebot 2023-04-27 10:07:16 +00:00
ec7f36913c mx-sanebot: allow building zeal docs 2023-04-27 08:32:24 +00:00
6324d8004f mx-sanebot: add to pkgs 2023-04-27 08:14:23 +00:00
4b8fddeb3f static-nix-shell: ensure runtime deps are on PATH 2023-04-27 08:14:11 +00:00
871975a597 mx-sanebot: split shell and default out of flake.nix 2023-04-27 08:04:39 +00:00
1e6e41a9cb add pkgs support to static-nix-shell and use it for gpodder 2023-04-27 08:00:38 +00:00
2f375b7778 cargo-docset: remove extraneous pkg-config nativeBuildInputs 2023-04-26 08:48:12 +00:00
df2e3a1b03 templates: rust: change sha256 (deprecated) to hash 2023-04-26 08:34:43 +00:00
718a4b61d7 cargo-docset: init at 0.3.1 2023-04-26 08:34:24 +00:00
d617c0259f templates: add a pure rust package template 2023-04-26 07:41:08 +00:00
83e404f000 templates: categorize by pkgs v.s. env 2023-04-26 07:35:04 +00:00
ba11bba909 rust template: remove unused build inputs 2023-04-26 07:24:12 +00:00
af394b315e add a flake template for rust binaries 2023-04-26 07:20:02 +00:00
44195a7d87 programs: ship /home secrets correctly 2023-04-26 03:46:18 +00:00
44e356cf6b programs: ship zeal (to browse programming docs) 2023-04-26 00:58:50 +00:00
7aafc6719e home: move firefox from home/firefox.nix -> programs/web-browser.nix 2023-04-26 00:53:30 +00:00
f6579b865b home: firefox: port to sane.programs API 2023-04-26 00:52:13 +00:00
8d5c917c79 home: move zsh from home -> programs 2023-04-26 00:46:35 +00:00
4c74a95194 home: zsh: port to programs API 2023-04-26 00:46:12 +00:00
a6056aeb47 home: move kitty from home -> programs 2023-04-26 00:36:37 +00:00
ac3e384b63 home: move vlc from home -> programs 2023-04-26 00:35:01 +00:00
3338e93c87 home: move sublime-music from home -> programs 2023-04-26 00:34:39 +00:00
97cb72db7c home: sublime-music: specify secrets using sane.programs API 2023-04-26 00:34:17 +00:00
f7f6b80cd0 home: move splatmoji from home -> programs 2023-04-26 00:33:04 +00:00
d60fe7a93c home: move ripgrep from home -> programs 2023-04-26 00:32:33 +00:00
e2fa18b7c7 home: move offlineimap from home -> programs 2023-04-26 00:31:56 +00:00
3226615885 home: offlineimap: specify secrets using the sane.programs API 2023-04-26 00:31:24 +00:00
dd99e66fb5 home: move newsflash from home -> programs 2023-04-26 00:29:49 +00:00
2e45145e72 home: move neovim from home -> programs 2023-04-26 00:29:10 +00:00
9783646a0d home: move mpv from home -> programs 2023-04-26 00:28:11 +00:00
c24f4d1659 home: move libreoffice from home -> programs 2023-04-26 00:27:43 +00:00
f220771b58 home: move gpodder from home -> programs 2023-04-26 00:27:15 +00:00
cb9854c297 home: move gnome-feeds from home -> programs 2023-04-26 00:26:44 +00:00
d422dcdd89 home: move git from home -> programs 2023-04-26 00:26:05 +00:00
4e4e7e4991 aerc: move from home -> programs 2023-04-26 00:25:08 +00:00
9c09d03e5c programs: add per-program secrets 2023-04-26 00:19:33 +00:00
1f0fbe29a8 programs: move to subdir 2023-04-26 00:17:20 +00:00
131a828ed0 mx-sanebot: remove dead code 2023-04-25 23:23:04 +00:00
a4bcb44677 Merge branch 'staging/nixpkgs-2023-04-19-staging-next' into master-next 2023-04-25 09:53:53 +00:00
d385845dd5 mx-sanebot: stream the sync events to avoid an inversion of control
the handler callback API is a poor fit for Rust lifetimes, so avoid it when possible
2023-04-25 09:48:42 +00:00
66c42916c8 mx-sanebot: refactor event loop 2023-04-25 08:20:56 +00:00
c6d4784dae nix update: nixpkgs 2023-04-23 -> 2023-04-25
```
• Updated input 'nixpkgs-unpatched':
    'github:nixos/nixpkgs/7d385961ebe582fed4e850a326d8d200be79f6b8' (2023-04-23)
  → 'github:nixos/nixpkgs/d0ea36ece469a71a909ebff90777c2f7a49478bb' (2023-04-25)
• Updated input 'sops-nix':
    'github:Mic92/sops-nix/8a95e6f8cd160a05c2b560e66f702432a53b59ac' (2023-04-23)
  → 'github:Mic92/sops-nix/7c8e9727a2ecf9994d4a63d577ad5327e933b6a4' (2023-04-24)
```
2023-04-25 07:59:38 +00:00
b282e5beb2 mx-sanebot: split out some request/response interface 2023-04-25 07:44:49 +00:00
20f4251c6e nix flake update 2023/04/23 2023-04-25 06:40:01 +00:00
5d0630cad4 sane-bt-add: implement --audiobook, --vn options 2023-04-24 10:02:40 +00:00
2dbf3b4732 sane-scripts: fix broken prologue 2023-04-24 10:02:24 +00:00
8e8e63a33f matrix: re-enable shared registration secret
this allows me to create users from the CLI
2023-04-24 09:49:37 +00:00
6b7a8f9fec programs: imagemagick: ship ghostscript as a suggested package 2023-04-24 09:48:09 +00:00
b85bdf26fd sane-scripts: don't ship the prologue
it gets inlined during resholve building
2023-04-24 09:47:36 +00:00
2fa76836b5 programs: fix git/rg not having config 2023-04-24 09:40:09 +00:00
5c8cca6a52 start work on a Matrix bot to expose sane-* commands to Matrix 2023-04-24 09:39:59 +00:00
1f2c9a9a5e refactor hosts/common/home to use sane.programs API 2023-04-24 07:22:33 +00:00
337fb9e9d9 sane.programs: allow programs to define files, as per sane.fs 2023-04-24 06:49:56 +00:00
e7f02c057e steam: integrate into sane.programs, and enable for lappy 2023-04-23 23:21:08 +00:00
8df87256a1 partial nixpkgs update (ibus fails) 2023-04-21 19:41:42 +00:00
09a1d286d0 servo: enable komga, a comic/manga webapp 2023-04-21 07:15:05 +00:00
0662b06df6 servo: try to ship calibre (but i get runtime errors, so disable it) 2023-04-21 06:57:26 +00:00
b0a99da884 dovecot: if mail fails DKIM, deliver it to Junk 2023-04-20 14:25:59 +00:00
12fd7ebc41 email: split dovecot config out of postfix config 2023-04-20 09:43:39 +00:00
f4a04ff6ba reorg: move postfix stuff into an email subdir 2023-04-20 09:24:20 +00:00
89e2a83067 postfix: toy with some spam protection (but don't actually enable it) 2023-04-20 09:17:25 +00:00
ae78f2b6c2 sane-scripts: sane-ip-reconnect: port to python & only connect to networks we *know* 2023-04-20 09:11:18 +00:00
198c40df66 minor nixpkgs update (2023-04-19 -> 2023-04-19)
```
• Updated input 'nixpkgs-unpatched':
    'github:nixos/nixpkgs/bf5b2a67bccd55572834c40a3c1c92530ab55673' (2023-04-19)
  → 'github:nixos/nixpkgs/a1cb3e73104adb41f8902093e07b8eba2114ab3f' (2023-04-19)
```
2023-04-19 13:43:12 +00:00
a952f84ee4 cross: fix patches 2023-04-19 13:42:35 +00:00
c9e55a586b flake: update nixpkgs 2023-04-16 -> 2023-04-19 (staging-next)
```
• Updated input 'nixpkgs-unpatched':
    'github:nixos/nixpkgs/f294325aed382b66c7a188482101b0f336d1d7db' (2023-04-16)
  → 'github:nixos/nixpkgs/bf5b2a67bccd55572834c40a3c1c92530ab55673' (2023-04-19)
• Updated input 'sops-nix':
    'github:Mic92/sops-nix/de6514f8fe1b3c2b57307569a0898bc4be9ae1c5' (2023-04-17)
  → 'github:Mic92/sops-nix/5698b06b0731a2c15ff8c2351644427f8ad33993' (2023-04-18)
```
2023-04-19 11:24:21 +00:00
aa8c3affcd cross: remove patches which have been upstreamed 2023-04-19 09:20:56 +00:00
692f47d02d doc: github token could be shipped statically 2023-04-19 00:00:52 +00:00
0ac17c32a3 programs: add MS GitHub gh program 2023-04-18 22:04:00 +00:00
2ff4df069e nix update: nixpkgs: 2023-04-13 -> 2023-04-16 (nixos-unstable)
```
• Updated input 'nixpkgs-unpatched':
    'github:nixos/nixpkgs/915c0fab841cc88045e00778b8e7fbdbdbd7d1aa' (2023-04-13)
  → 'github:nixos/nixpkgs/f294325aed382b66c7a188482101b0f336d1d7db' (2023-04-16)
• Updated input 'sops-nix':
    'github:Mic92/sops-nix/00d5fd73756d424de5263b92235563bc06f2c6e1' (2023-04-11)
  → 'github:Mic92/sops-nix/de6514f8fe1b3c2b57307569a0898bc4be9ae1c5' (2023-04-17)
• Updated input 'sops-nix/nixpkgs-stable':
    'github:NixOS/nixpkgs/e45cc0138829ad86e7ff17a76acf2d05e781e30a' (2023-04-09)
  → 'github:NixOS/nixpkgs/1040ce5f652b586da95dfd80d48a745e107b9eac' (2023-04-16)
```
2023-04-18 21:40:17 +00:00
b11759a0a6 Merge branch 'master' of git.uninsane.org:colin/nix-files 2023-04-18 06:10:47 +00:00
6af0d54e7b matrix: re-enable signal bridge 2023-04-18 06:10:17 +00:00
f87c115f7c RSS: subscribe to JMP.chat 2023-04-18 05:50:47 +00:00
099cd12bdd matrix/irc.nix: sanitize quit messages 2023-04-18 00:58:15 +00:00
bf67def14a matrix/irc.nix: MyAnonamouse: disable SASL auth
it's unclear if SASL auth *might* actually work -- just with some weird delays -- but non-SASL auth *definitely* works
2023-04-17 01:57:27 +00:00
39e7e2230e symlink Pictures/servo-macros 2023-04-17 00:46:37 +00:00
4ff82f002b matrix/irc.nix: bridge to MyAnonamouse 2023-04-16 13:13:36 +00:00
781a149542 matrix: re-enable IRC bridge 2023-04-16 00:32:04 +00:00
b7f2f4f5c4 Merge branch 'master' of git.uninsane.org:colin/nix-files 2023-04-16 00:22:00 +00:00
e3cb51951c programs: add a few (disabled) dev tools 2023-04-15 23:05:37 +00:00
94ac4ec0e9 matrix-appservice-irc: correct the user id/gid 2023-04-15 06:58:13 +00:00
348bd0f177 flake: nit: rename deploy-moby-switch -> deploy-moby 2023-04-15 06:56:24 +00:00
bae0e3df76 cross: remove browserpass patch. it's been merged upstream 2023-04-15 06:56:08 +00:00
429951cfcc cross: remove tpm2-abrmd patch. it's been upstreamed 2023-04-14 11:09:30 +00:00
b23262b367 cross: remove libtiger patch (no longer necessary?) 2023-04-14 10:51:22 +00:00
464e348545 include a reference to the rav1e PR which i'm waiting for merge 2023-04-14 09:32:35 +00:00
62c1f4009b switch browser to librewolf 2023-04-14 07:14:50 +00:00
2373d28eb8 flake update: nixpkgs 2023-04-12 -> 2023-04-13
```
• Updated input 'nixpkgs-unpatched':
    'github:nixos/nixpkgs/cab3b7f3356fa82bfab449fa1bb7b54092dc8e17' (2023-04-12)
  → 'github:nixos/nixpkgs/915c0fab841cc88045e00778b8e7fbdbdbd7d1aa' (2023-04-13)
```
2023-04-13 22:30:52 +00:00
d76591349e cross: re-patch libgweather, which was incorrectly removed 2023-04-13 21:50:20 +00:00
4361bd45c7 sane-deadlines: fix threshold/date parsing 2023-04-13 10:02:53 +00:00
be33684d5d cross: remove upstreamed patches 2023-04-13 09:41:10 +00:00
d2ef8d113e nix update nixpkgs 2023-04-11 -> 2023-04-12
```
• Updated input 'nixpkgs-unpatched':
    'github:nixos/nixpkgs/4e2c1815ed1a40825c52e30dc993bf3a3c136104' (2023-04-11)
  → 'github:nixos/nixpkgs/cab3b7f3356fa82bfab449fa1bb7b54092dc8e17' (2023-04-12)
```
2023-04-12 20:55:26 +00:00
54d29ca190 Merge branch 'staging/nixpkgs-2023-04-11' 2023-04-12 10:46:55 +00:00
875482f395 apply bambu-studio PR 2023-04-12 02:44:37 +00:00
dac245e032 nix update: nixpkgs 2023-04-08 -> 2023-04-11; sops-nix
```
• Updated input 'nixpkgs-unpatched':
    'github:nixos/nixpkgs/df6db8c5b0b94b85e578d05b37e5bf3b24555638' (2023-04-08)
  → 'github:nixos/nixpkgs/4e2c1815ed1a40825c52e30dc993bf3a3c136104' (2023-04-11)
• Updated input 'sops-nix':
    'github:Mic92/sops-nix/b93eb910f768f9788737bfed596a598557e5625d' (2023-04-02)
  → 'github:Mic92/sops-nix/00d5fd73756d424de5263b92235563bc06f2c6e1' (2023-04-11)
• Updated input 'sops-nix/nixpkgs-stable':
    'github:NixOS/nixpkgs/c1e2efaca8d8a3db6a36f652765d6c6ba7bb8fae' (2023-04-01)
  → 'github:NixOS/nixpkgs/e45cc0138829ad86e7ff17a76acf2d05e781e30a' (2023-04-09)
```
2023-04-12 00:09:51 +00:00
e7edafcfec nix update nixpkgs 2023-04-02 -> 2023-04-08; mobile-nixos; uninsane-dot-org
```
• Updated input 'mobile-nixos':
    'github:nixos/mobile-nixos/7a6e97e3af73c4cca87e12c83abcb4913dac7dbc' (2023-03-22)
  → 'github:nixos/mobile-nixos/4aa0afd84005b79be4d5361b56a60df9e9bd4ea3' (2023-04-03)
• Updated input 'nixpkgs-unpatched':
    'github:nixos/nixpkgs/66f60deb8aa348ca81d60d0639ae420c667ff92a' (2023-04-02)
  → 'github:nixos/nixpkgs/df6db8c5b0b94b85e578d05b37e5bf3b24555638' (2023-04-08)
• Updated input 'uninsane-dot-org':
    'git+https://git.uninsane.org/colin/uninsane?ref=refs%2fheads%2fmaster&rev=068f176a64f0e26dc8c1f0eccf28cbd05be4909b' (2023-03-29)
  → 'git+https://git.uninsane.org/colin/uninsane?ref=refs%2fheads%2fmaster&rev=2970c6080187975a1fc996f541167e697d4ebebc' (2023-04-03)
```
2023-04-12 00:08:50 +00:00
00af6104be flake: pass CLI arguments into nixos-rebuild when running deploy-moby-X 2023-04-07 22:55:47 +00:00
40c9517dc6 moby: ship jellyfin (and it runs!) 2023-04-07 22:55:02 +00:00
c2915e29d4 cross compilation: disable appstream patch 2023-04-06 12:42:06 +00:00
b6edf768b9 packages: enable slic3r (3d printing software) 2023-04-06 08:46:04 +00:00
27be182eb7 Merge branch 'wip/less-disable-flakey-tests' 2023-04-06 08:42:17 +00:00
ddf1be7410 sane-scripts: sane-reclaim-disk-space: use nix-store --optimise 2023-04-06 08:41:02 +00:00
ad819e4cc0 nix flake update: nixpkgs 2023-03-31 -> 2023-04-01 2023-04-06 08:41:02 +00:00
6407f156b2 cross compilation: remove gupnp patch 2023-04-06 07:43:22 +00:00
2f2c666b0b formatting changes 2023-04-06 06:24:01 +00:00
8760621440 enable nix's auto-optimise-store 2023-04-06 06:23:45 +00:00
0596b02f22 enable i2p 2023-04-06 06:22:47 +00:00
a5841192a2 cross compilation: support i2p 2023-04-06 06:22:19 +00:00
f085c1d691 overlays/disable-flakey-tests.nix: significantly reduce how much we patch nixpkgs
this means we can grab from upstream caches more
2023-04-04 23:31:50 +00:00
396d094520 sane-scripts: sane-reclaim-disk-space: use nix-store --optimise 2023-04-04 23:20:54 +00:00
6d419b8279 RSS: unsubscribe from text-based econlib 2023-04-04 20:46:34 +00:00
bf3e0ad790 feeds: subscribe to capitol hill seattle blog 2023-04-03 07:01:51 +00:00
0c07e03ad6 podcasts: add The Witch Trials of JK Rowling 2023-04-03 06:58:14 +00:00
12f3fc333d nix flake update: nixpkgs 2023-03-31 -> 2023-04-01 2023-04-01 23:56:16 +00:00
4d96a1ed45 update LAN IPs for lappy/desko/moby 2023-04-01 23:50:53 +00:00
9aedb133bb servo: update LAN IP 2023-04-01 17:08:01 +00:00
5a15b76b61 nix flake update: nixpkgs 2023-03-28 -> 2023-03-31
should fix Pleroma

```
• Updated input 'nixpkgs-unpatched':
    'github:nixos/nixpkgs/fc47fa33a3ac1044098b1d516f88c38c2d22ef72' (2023-03-28)
  → 'github:nixos/nixpkgs/d8f8da95a0a67aaa83036bded2ca59b1940816e2' (2023-03-31)
```
2023-03-31 23:33:59 +00:00
5c17de6e83 Merge branch 'staging/nixpkgs-next-2023-03-28' 2023-03-31 13:05:04 +00:00
8db4498ae8 jellyfin: enable port forwarding and DLNA debugging 2023-03-31 12:42:31 +00:00
001a5fc252 firefox: update addon hashes 2023-03-31 10:27:05 +00:00
6f64e5d469 kitty: change terminal colors 2023-03-31 06:34:13 +00:00
b1e9d8db80 nix flake update: nixpkgs f027fe965cc2 -> fc47fa33a3ac; sops-nix 2023-03-31 05:53:20 +00:00
5b39baf2db kitty: move color theme in-tree 2023-03-31 05:50:21 +00:00
4e8ca1a30d flake: document how to update specific flake inputs 2023-03-29 12:04:43 +00:00
1db3a29dac flake update: uninsane-dot-org 2023-03-29 12:04:31 +00:00
61ba1802ee home: link to servo Books 2023-03-29 12:02:13 +00:00
059c4e9964 nix flake: update uninsane.org 2023-03-29 01:09:46 +00:00
a09736e60b RSS: add Poorly Drawn Lines (comic) 2023-03-28 23:03:10 +00:00
bdfdcfd164 RSS: add... unpronouncable hacker :P 2023-03-28 23:03:06 +00:00
7579d4b2c5 jellyfin: 1.8.1 -> 1.9.0 2023-03-28 09:24:04 +00:00
e90a8b7b6e nix flake update: nixpkgs 2023-03-09 (nixos-unstable) -> 2023-03-28 (staging); others
this will break moby; will work to re-enable

```
• Updated input 'mobile-nixos':
    'github:nixos/mobile-nixos/9a0c317a027d1c085c641fe6df1f51b71880b720' (2023-03-03)
  → 'github:nixos/mobile-nixos/7a6e97e3af73c4cca87e12c83abcb4913dac7dbc' (2023-03-22)
• Updated input 'nixpkgs-unpatched':
    'github:nixos/nixpkgs/1e2590679d0ed2cee2736e8b80373178d085d263' (2023-03-09)
  → 'github:nixos/nixpkgs/f027fe965cc27f258e9f7ffd3d0cec011e51a41c' (2023-03-28)
• Updated input 'sops-nix':
    'github:Mic92/sops-nix/1568702de0d2488c1e77011a9044de7fadec80c4' (2023-03-10)
  → 'github:Mic92/sops-nix/4740f80ca6e756915aaaa0a9c5fbb61ba09cc145' (2023-03-26)
• Updated input 'sops-nix/nixpkgs-stable':
    'github:NixOS/nixpkgs/d51554151a91cd4543a7620843cc378e3cbc767e' (2023-03-04)
  → 'github:NixOS/nixpkgs/da26ae9f6ce2c9ab380c0f394488892616fc5a6a' (2023-03-25)
```
2023-03-28 09:17:56 +00:00
50cec94164 sane-bt-add: add a "--series <name>" flag to control download location 2023-03-26 08:51:16 +00:00
5bb31aa5da sane-bt-search: dedupe results 2023-03-26 08:34:52 +00:00
2aef1c30bd sane-bt-search: set vim filetype for highlighting 2023-03-26 08:34:27 +00:00
471ef03289 discord: remove nss override (fixed upstream) 2023-03-23 22:03:59 +00:00
bdcdba6a6d mumble: persist data directory 2023-03-23 22:00:27 +00:00
bf64948cc1 sane-scripts: add sane-bt-add to download some torrent 2023-03-22 23:51:52 +00:00
4331df28d2 sane-scripts: add sane-bt-show to get info about previously added torrents 2023-03-22 22:43:30 +00:00
2a148c1543 sane-scripts: include the python scripts 2023-03-22 21:21:00 +00:00
adf72fc9d4 modules/fs: escape shell args 2023-03-22 19:52:04 +00:00
96a66abcd5 flake.lock: update uninsane-dot-org 2023-03-10 -> 2023-03-22
```
• Updated input 'uninsane-dot-org':
    'git+https://git.uninsane.org/colin/uninsane?ref=refs%2fheads%2fmaster&rev=9b549e42da18218e46d1bf217b5eb81c0c4caf11' (2023-03-10)
  → 'git+https://git.uninsane.org/colin/uninsane?ref=refs%2fheads%2fmaster&rev=1b993ff2888d37f4877cc69c88eff318b93d0ece' (2023-03-22)
• Updated input 'uninsane-dot-org/flake-utils':
    'github:numtide/flake-utils/3db36a8b464d0c4532ba1c7dda728f4576d6d073' (2023-02-13)
  → 'github:numtide/flake-utils/93a2b84fc4b70d9e089d029deacc3583435c2ed6' (2023-03-15)
```
2023-03-22 19:44:06 +00:00
8f40bdc9c0 RSS: add Byrne Hobart (like Matt Levine but infrequent) 2023-03-22 18:46:44 +00:00
3e782a5e73 RSS: disable doomberg (paywalled) 2023-03-22 18:43:58 +00:00
f1b47e5de9 RSS: (re-)subscribe to UnNamed Reverse Engineering Podcast 2023-03-21 01:23:36 +00:00
3c6c466d87 RSS: subscribe to ACQ2 / Acquired 2 podcast 2023-03-21 01:02:11 +00:00
16bf03d8be RSS: subscribe Maggie Killjoy/Cool People Who Did Cool Stuff 2023-03-21 00:56:10 +00:00
ca1594a354 programs: ship mumble on desktop 2023-03-20 08:36:07 +00:00
2e120f613f lappy: enable yggdrasil 2023-03-20 08:35:40 +00:00
2c6f667a7e add experimental yggdrasil module (TODO: enable) 2023-03-20 08:12:53 +00:00
8e7586b902 programs: ship jellyfin media player 2023-03-16 21:30:58 +00:00
7a0eed4ec3 feeds: add Simon Willison 2023-03-16 11:02:37 +00:00
ca1015d579 feeds: add This Week In Rust 2023-03-16 11:02:37 +00:00
f89837f3aa servo: re-enable jellyfin 2023-03-16 09:11:26 +00:00
2a1d6e1faa roles/build-machine: ship qemu 2023-03-16 08:09:46 +00:00
7918403d1b roles/build-machine: hide ccache stuff behind a config option 2023-03-16 08:09:46 +00:00
3fb76e720f cross compilation: track movement of upstream PRs 2023-03-15 12:19:06 +00:00
a899cf6c9f binfmt compilation: fix typo 2023-03-14 21:34:37 +00:00
40b26fc57e cross compilation: disable the (previously universal) ccache
maybe i will re-enable it on select packages in the future
2023-03-14 21:34:37 +00:00
1be7119b73 cross compilation: attempt other ways of emulating unbuildable packages 2023-03-14 21:34:37 +00:00
4b41aa3718 postfix: group forwarded ports by host 2023-03-14 11:35:56 +00:00
71d6fe44a1 postfix: compact the TXT MX records 2023-03-14 11:35:34 +00:00
c5c1378f59 trust-dns: properly quote TXT records 2023-03-14 11:34:48 +00:00
8fc57c4249 make it so servo doesn't do binfmt emulation, nor fetch cache from desko 2023-03-11 13:45:45 +00:00
39eb1e3d07 TODO: disable binfmt stuff 2023-03-11 13:23:44 +00:00
e386406bc1 feeds: subscribe to nixos announcements 2023-03-11 10:37:45 +00:00
0cf4c3ff80 feeds: add thisweek.gnome.org 2023-03-11 10:30:29 +00:00
06e699a72b pkgs/feeds: make sane.feed-init a buildable package 2023-03-11 10:29:02 +00:00
0c32f807e6 pkgs/feeds: rework the update script so that it can be built ahead-of-time, as a package, instead of just-in-time 2023-03-11 10:12:17 +00:00
f6d3c102fa flake: fix so nix flake check passes 2023-03-11 10:01:25 +00:00
3e1a2243c7 hosts/rescue: make this evaluate again 2023-03-11 10:00:53 +00:00
4fe6f2aab3 pkgs/feeds: rework to use recurseIntoAttrs
this is closer to what upstream seems to prefer, but i'm still a little
unsure.
2023-03-11 09:59:53 +00:00
dc1cd7a9a5 sane.persist: make it default-true for my hosts 2023-03-11 08:36:14 +00:00
ead9fd87d7 overlays/pkgs.nix: cleanup: use with next; instead of bing so explicit 2023-03-11 08:32:37 +00:00
4ac5c5f469 overlays/pkgs.nix: cleanup: use next.callPackage instead of prev.callPackage 2023-03-11 08:32:37 +00:00
f3151320a3 servo: shutup sane-deadlines warning 2023-03-11 07:58:56 +00:00
403b177a80 matrix: disable mautrix-signal (temporarily) 2023-03-11 00:02:30 +00:00
f714235717 package hase (game) 2023-03-10 22:37:32 +00:00
3ec01ba971 flake update: nixpkgs 2023-03-08 -> 2023-03-09; sops-nix
```
• Updated input 'nixpkgs-unpatched':
    'github:nixos/nixpkgs/c90c4025bb6e0c4eaf438128a3b2640314b1c58d' (2023-03-08)
  → 'github:nixos/nixpkgs/1e2590679d0ed2cee2736e8b80373178d085d263' (2023-03-09)
• Updated input 'sops-nix':
    'github:Mic92/sops-nix/00e9e9cd46600d68dd98a392025d4894c3711b58' (2023-03-08)
  → 'github:Mic92/sops-nix/1568702de0d2488c1e77011a9044de7fadec80c4' (2023-03-10)
```
2023-03-10 12:45:39 +00:00
a51f8d45b3 Merge branch 'staging/nixpkgs-2023-03-08' 2023-03-10 09:13:25 +00:00
cd375a9a05 nit: remove dead commented-out code 2023-03-10 09:07:52 +00:00
0486c7f787 programs: only ship gnome-terminal on phosh
this saves us one whole `webkitgtk` (5.0) build on non-phosh GUIs.
2023-03-10 09:02:26 +00:00
190571e565 flake: update uninsane.org so that it can build on modern nixpkgs 2023-03-10 09:01:27 +00:00
94c31c4e8e splatmoji: fix history_file path 2023-03-10 05:30:01 +00:00
e13af1c1c8 update phosh: 0.23 -> 0.25.1 2023-03-10 05:19:21 +00:00
77587389c4 re-enable chromium 2023-03-10 00:13:59 +00:00
70d2d97525 flake update: nixpkgs 2023-03-04 -> 2023-03-08; nix-serve; sops-nix
```
• Updated input 'nix-serve':
    'github:edolstra/nix-serve/7089565e260267c9c234a81292c841958737cef6' (2023-02-09)
  → 'github:edolstra/nix-serve/3b6d30016d910a43e0e16f94170440a3e0b8fa8d' (2023-03-07)
• Updated input 'nixpkgs-unpatched':
    'github:nixos/nixpkgs/3c5319ad3aa51551182ac82ea17ab1c6b0f0df89' (2023-03-04)
  → 'github:nixos/nixpkgs/c90c4025bb6e0c4eaf438128a3b2640314b1c58d' (2023-03-08)
• Updated input 'sops-nix':
    'github:Mic92/sops-nix/7cff56b43952edc5a2c212076d5fc922f764240f' (2023-03-05)
  → 'github:Mic92/sops-nix/00e9e9cd46600d68dd98a392025d4894c3711b58' (2023-03-08)
```
2023-03-09 21:45:02 +00:00
65ed2afb23 temporarily disable chromium, since it doesnt build 2023-03-09 21:32:54 +00:00
b2419da057 cross compilation: apache/mod_dnssd: less emulation 2023-03-09 06:57:09 +00:00
243d38333d cross compilation: don't emulate apache 2023-03-09 06:57:09 +00:00
7ad75cacb9 cross compilation: doc: rmlint path to cross compilation 2023-03-09 06:57:09 +00:00
6e9cd15517 cross compilation: ibus: fix compilation & reduce emulation 2023-03-09 06:57:09 +00:00
9d052a62b4 cross compilation: squeekboard: fix build 2023-03-09 06:57:09 +00:00
862667648c cross compilation: stop emulating re2 2023-03-09 06:57:09 +00:00
2591314fdb flake update: nixpkgs 2023-02-16 -> 2023-03-04, sops, mobile-nixos
```
• Updated input 'mobile-nixos':
    'github:nixos/mobile-nixos/c252e7bd9122704f0e0303c638f8b8412c2521c2' (2023-02-26)
  → 'github:nixos/mobile-nixos/9a0c317a027d1c085c641fe6df1f51b71880b720' (2023-03-03)
• Updated input 'nixpkgs-unpatched':
    'github:nixos/nixpkgs/ac1f5b72a9e95873d1de0233fddcb56f99884b37' (2023-02-16)
  → 'github:nixos/nixpkgs/3c5319ad3aa51551182ac82ea17ab1c6b0f0df89' (2023-03-04)
• Updated input 'sops-nix':
    'github:Mic92/sops-nix/83fe25c8019db8216f5c6ffc65b394707784b4f3' (2023-02-26)
  → 'github:Mic92/sops-nix/7cff56b43952edc5a2c212076d5fc922f764240f' (2023-03-05)
• Updated input 'sops-nix/nixpkgs-stable':
    'github:NixOS/nixpkgs/ea736343e4d4a052e023d54b23334cf685de479c' (2023-02-25)
  → 'github:NixOS/nixpkgs/d51554151a91cd4543a7620843cc378e3cbc767e' (2023-03-04)
```
2023-03-09 06:57:09 +00:00
dcd622bc1d Merge branch 'master' of git.uninsane.org:colin/nix-files 2023-03-09 06:56:38 +00:00
e5cdcc4500 feeds: document Metaculus Journal 2023-03-09 00:33:27 +00:00
cb4ca7d26a feeds: document the Nonlinear Library 2023-03-08 23:50:34 +00:00
9f5d1c0111 zsh: ignore "nixos-rebuild switch" in history 2023-03-08 23:45:58 +00:00
6fe29529b2 init-feeds script: handle unedited url arguments 2023-03-08 23:36:16 +00:00
eae8ef11c8 feeds: subscribe to MAPS 2023-03-08 23:35:45 +00:00
edf21e6837 feeds: subscribe to Daniel Huberman podcast 2023-03-08 23:09:24 +00:00
0ecc08b49d feeds: subscribe to LessWrong Curated 2023-03-08 22:52:08 +00:00
6eb8191514 feeds: subscribe to Aaron Scott / textfiles.com 2023-03-08 09:41:27 +00:00
3c6da51f84 feeds/update.py: consider https AND http as a fallback 2023-03-08 09:19:36 +00:00
6c10c14a32 packages: ship brave on desktop 2023-03-08 03:27:27 +00:00
8ae4be341a sane-deadlines: allow specifying the amount of desired notice per-deadline 2023-03-08 02:26:53 +00:00
c94ed9d519 zsh: show upcoming deadlines at shell init 2023-03-08 01:14:53 +00:00
99373dcd83 new sane-deadlines tool to remind me of upcoming deadlines 2023-03-08 01:14:47 +00:00
98739bb061 zsh: remove driver's license reminder 2023-03-08 01:10:29 +00:00
46dabcd33f cross compilation: speculatively compile spandsp with ac_cv_func_malloc_0_nonnull 2023-03-07 12:17:01 +00:00
68d72eab16 cross-compilation: gst-editing-services: reduce buildInputs/nativeBuildInputs duplication 2023-03-07 12:16:03 +00:00
f933581b0c cross compilation: fwupd8: reduce overlapping buildInputs/nativeBuildInputs 2023-03-07 12:15:18 +00:00
1a639b320d cross compilation: specify these overrides with better helpers 2023-03-07 06:43:24 +00:00
c9ac005548 cross compilation: squeekboard: explore more options 2023-03-06 23:35:35 +00:00
9a73293bd4 cross compilation: obex_data_server: reduce emulation 2023-03-06 21:35:30 +00:00
99e2ac1dbb cross compilation: push ccache into every build -> host package 2023-03-06 11:20:24 +00:00
a56b31cdac get moby packages to selectively use ccache
this is a liiittle bit weird: we might want to just apply it to
everything.
2023-03-05 09:25:03 +00:00
df9716e244 WIP: try to get moby builds to use ccache, god damnit 2023-03-05 07:20:38 +00:00
45f3d5a117 ccache: default to 50G cache 2023-03-05 03:50:04 +00:00
97a1b5732b docs: cross compilation: document the emptyDirectory pattern 2023-03-05 03:13:43 +00:00
59e4c84800 build-machine: use ccache for some large packages 2023-03-05 03:13:11 +00:00
16e84cae9d qt6: adwaita, qgnomeplatform: actually build them
we can, so why not
2023-03-05 03:11:00 +00:00
d725dfb7f1 refactor: group build-machine-related config into one "role" file 2023-03-05 01:05:17 +00:00
79b6c119ee cross compilation: emacs: don't emulate stdenv 2023-03-05 00:17:27 +00:00
be1d8c5d97 cross compilation: reduce emulation for evolution-data-server 2023-03-04 23:15:38 +00:00
454e02c8ec cross-compilation: document failed attempts 2023-03-04 22:28:15 +00:00
3b37286e65 cross compilation: gnome-shell: don't emulate stdenv 2023-03-04 22:27:43 +00:00
77388f35f6 cross compilation: phosh-mobile-settings: reduce emulation 2023-03-04 22:27:27 +00:00
a6c91db11b gst: reduce emulation
note that i do see runtime errors around gobject-introspection when i
launch `nheko`
2023-03-04 22:26:48 +00:00
a96d0e9630 patch qt6 to cross-compile qgnomeplatform & get gnome-style Qt theme 2023-03-04 22:26:09 +00:00
43f39674d6 nixcache: enable on all machines 2023-03-04 08:19:46 +00:00
d7fd7d7368 nixcache: omit substituters that are the host 2023-03-04 08:09:27 +00:00
386c712a23 lappy: ship stepmania 2023-03-04 08:08:37 +00:00
9d09a323be cross compilation: leave notes for things i tried and failed 2023-03-04 07:48:46 +00:00
9beb6b52e5 desko: re-enable steam 2023-03-04 07:48:22 +00:00
f96f2ec960 cross compilation: emulate less in dconf 2023-03-04 07:14:24 +00:00
fd080393f8 cross compilation: do not emulate qt6 (it's unused) 2023-03-04 03:59:56 +00:00
408cfc08a1 phosh: re-enable the gnome qt5 styling, just without the qt6 piece 2023-03-04 03:58:57 +00:00
d34a03e060 visidata: compile without hdf5 support 2023-03-04 03:25:04 +00:00
8230389b21 cross compilation: stop emulating psql 2023-03-04 01:18:47 +00:00
6a735cc0bc nixpatches: link to mesa CMA fix 2023-03-03 13:40:48 +00:00
fbc79d2527 sway: add grimshot back to PATH 2023-03-03 10:22:41 +00:00
76963d6aaf handbrake: un-pin 2023-03-03 09:57:26 +00:00
7f74951fb3 cross compilation: stop emulating libtiger 2023-03-03 09:56:15 +00:00
d698c7ca70 Merge branch 'dev/moby' 2023-03-03 09:50:22 +00:00
8e865999f8 email: ship offlineimap for mail synchronization 2023-03-03 08:48:59 +00:00
f7b5423338 ids.nix: leave a comment about switching to upstream module in the future 2023-03-03 02:38:30 +00:00
1ec3e1fb1c phosh: re-enable gvfs (it builds) 2023-03-03 02:33:57 +00:00
8346d21d42 gpodder-configured: deploy a built version rather than the nix-shell version 2023-03-03 02:22:37 +00:00
3ed8e0cb44 FIX nix-serve: migrate to a package built against older nix 2023-03-03 01:48:04 +00:00
583fcbce6e cross compilation: fix gpodder runtime 2023-03-03 01:05:44 +00:00
4a7513ba23 moby: re-enable nixos documentation
now that we properly cross compile (no emulation), it's pretty trivial.
2023-03-02 08:30:58 +00:00
b51b01ff02 cross compilation: get subversion to compile 2023-03-02 08:19:00 +00:00
f9ceb7d8fd cross compilation: fix serf, a dependency of subversion 2023-03-02 07:53:41 +00:00
1a1bef5948 readme: fix typo in moby-cross -> cross-moby 2023-03-02 07:50:11 +00:00
0625eb1bf8 flake: add "applications" to deploy to moby 2023-03-02 07:49:29 +00:00
b722a4bcc8 Merge branch 'staging/mesa-downgrade-10' into dev/moby
moby can cross compile, desko can still build without recompiling
*everything* (only mesa & derivatives)
2023-03-02 00:46:52 +00:00
c744b976d0 secrets: add internet for make space 2023-03-02 00:46:37 +00:00
8352d3aa8f overlays/pins.nix: split out the test fixes and only apply them on platforms where we're already building from source 2023-03-02 00:06:22 +00:00
dfebedbd6c flake: make separate cross and emulated package sets (so i can build non-cross systems again) 2023-03-01 23:33:32 +00:00
3caa072d00 flake: fix the unstable hashing by importing the nixpatches flake instead of specifying it as input 2023-03-01 13:01:41 +00:00
4ee31d075a readme: document the real key i use to sign packages 2023-03-01 13:00:33 +00:00
d973cb939c readme: document how to build a host package 2023-03-01 11:35:37 +00:00
78ab7b0b80 readme: document nixos-rebuild remote deployment 2023-03-01 11:33:15 +00:00
2fcb0ebfd0 moby: disable sequioa instead of emulating it 2023-03-01 10:14:48 +00:00
7445adbea0 cross compilation: don't emulate kitty 2023-03-01 10:14:12 +00:00
706cf3bac2 cross.nix: move to subdir 2023-03-01 09:48:35 +00:00
4b722a6c30 pins: disable failing fish tests 2023-03-01 09:45:03 +00:00
8350386ea8 cross.nix: doc improvements 2023-03-01 08:22:36 +00:00
0ee0b3c3bb phosh: disable the qt gnome theming because qtdeclarative/qgnomeplatform does not cross compile 2023-03-01 08:18:00 +00:00
8ce1fae67b fonts: switch from twitter-color-emoji -> noto-color-emoji because the former doesn't cross compile 2023-03-01 08:16:41 +00:00
f27202056e cross compilation: draft lighter-weight solutions to gocryptfs, networkmanager-iodine, ostree (commented out) 2023-03-01 08:13:29 +00:00
7f38cd7535 cross compilation: emulate less of squeekboard 2023-03-01 08:07:44 +00:00
b56507d4c2 cross compilation: fix build of notmuch 2023-03-01 04:49:04 +00:00
aab2a9cd26 cross compilation: gmime3: build with gpgme support (needed by notmuch) 2023-03-01 04:48:25 +00:00
b7c2dfea19 cross compilation: reduce emulation of fwupd-efi 2023-02-28 07:35:56 +00:00
f1709c0355 cross compilation: libgweather: build with vala (dependents need it) 2023-02-28 07:15:34 +00:00
7a67f3ed0f cross compilation: don't emulate gmime3 2023-02-28 06:08:08 +00:00
91054159d3 cross compilation: cross compile ibus 2023-02-28 06:05:35 +00:00
0eedcd0114 cross compilation: get phoc and phosh to cross-compile 2023-02-28 03:30:07 +00:00
9305566330 cross compilation: get gnome-shell to build 2023-02-28 01:44:57 +00:00
0abbd006fc cross compilation: get evolution-data-server to cross compile 2023-02-27 21:29:55 +00:00
9d31a462a8 flake update: nixpkgs 2023-02-21 -> 2023-02-25
```
• Updated input 'mobile-nixos':
    'github:nixos/mobile-nixos/8701fcb1448f1eb67c0d47631ec2bdb613bd6a38' (2023-02-12)
  → 'github:nixos/mobile-nixos/c252e7bd9122704f0e0303c638f8b8412c2521c2' (2023-02-26)
• Updated input 'nixpkgs':
    'path:/nix/store/y0x2jn4xil90lqwpjryba9qg9n888f5s-source/nixpatches?lastModified=1&narHash=sha256-AJlQHunLsnhZ8LdYirwIcqD1iojYJEQAdxGfJn9siPs=' (1970-01-01)
  → 'path:/nix/store/7zqfzdrbcqw5c754iyik7rsv55921fy4-source/nixpatches?lastModified=1&narHash=sha256-AJlQHunLsnhZ8LdYirwIcqD1iojYJEQAdxGfJn9siPs=' (1970-01-01)
• Updated input 'nixpkgs-unpatched':
    'github:nixos/nixpkgs/d0d55259081f0b97c828f38559cad899d351cad1' (2023-02-21)
  → 'github:nixos/nixpkgs/b1f87ca164a9684404c8829b851c3586c4d9f089' (2023-02-25)
• Updated input 'sops-nix':
    'github:Mic92/sops-nix/2c5828439d718a6cddd9a511997d9ac7626a4aff' (2023-02-21)
  → 'github:Mic92/sops-nix/83fe25c8019db8216f5c6ffc65b394707784b4f3' (2023-02-26)
• Updated input 'sops-nix/nixpkgs-stable':
    'github:NixOS/nixpkgs/f27a4e2f6a3a23b843ca1c736e6043fb8b99acc1' (2023-02-19)
  → 'github:NixOS/nixpkgs/ea736343e4d4a052e023d54b23334cf685de479c' (2023-02-25)
```
2023-02-27 02:21:10 +00:00
1c8659d145 secrets: add internet for make space 2023-02-27 01:25:14 +00:00
503f097272 cross compilation: get dconf-editor to cross compile 2023-02-26 11:29:15 +00:00
a55e8847ec cross compilation: disable tests for packages that flake 2023-02-26 11:27:01 +00:00
2937cbc67a cross compilation: fix xapian to not use #!/bin/sh 2023-02-25 01:29:21 +00:00
c92e67bda1 cross compilation: fix notmuch to compile 2023-02-25 01:28:30 +00:00
652e4ca93b cross compilation: remove emulation for gvfs (also: meaningless hdf5 changes) 2023-02-24 10:50:00 +00:00
07d3f60f26 cross compilation: don't emulate flatpak 2023-02-24 10:31:35 +00:00
cb20b4a56b cross compilation: gupnp, tracker: disable tests (flakiness) 2023-02-23 12:12:10 +00:00
0da3edfa52 cross compilation: don't emulate fuzzel stdenv 2023-02-23 12:11:33 +00:00
9477160a2d cross compilation: build gnome.mutter w/o emulation 2023-02-23 08:35:59 +00:00
b77bde5417 cross compilation: fix gnome-settings-daemon (by disabling the power plugin) 2023-02-23 08:17:50 +00:00
d2a3bec605 flake update: nixpkgs 2023-02-16 -> 2023-02-21; sops-nix -> 2023-02-21
```
• Updated input 'nixpkgs-unpatched':
    'github:nixos/nixpkgs/ac1f5b72a9e95873d1de0233fddcb56f99884b37' (2023-02-16)
  → 'github:nixos/nixpkgs/d0d55259081f0b97c828f38559cad899d351cad1' (2023-02-21)
• Updated input 'sops-nix':
    'github:Mic92/sops-nix/c5dab21d8706afc7ceb05c23d4244dcb48d6aade' (2023-02-12)
  → 'github:Mic92/sops-nix/2c5828439d718a6cddd9a511997d9ac7626a4aff' (2023-02-21)
• Updated input 'sops-nix/nixpkgs-stable':
    'github:NixOS/nixpkgs/d863ca850a06d91365c01620dcac342574ecf46f' (2023-02-12)
  → 'github:NixOS/nixpkgs/f27a4e2f6a3a23b843ca1c736e6043fb8b99acc1' (2023-02-19)
```
2023-02-22 21:13:23 +00:00
b519de1d6f ripgrep: add .ignore file for po/ translations 2023-02-22 21:08:34 +00:00
1c867c5160 all: ship subversion (svn) on user PATH 2023-02-22 20:29:19 +00:00
f8ab8b290e cross compilation: don't emulate file-roller 2023-02-22 09:03:15 +00:00
c8a8fe73ca cross compilation: fix libvisual build 2023-02-22 06:47:31 +00:00
03d7cf65a4 cross compilation: remove emulation from ncftp 2023-02-22 06:03:14 +00:00
8ddfa91125 cross: remove emulation for libjcat, libgweather 2023-02-22 06:02:05 +00:00
415a2e1a67 cross compilation: fix libchamplain 2023-02-22 01:41:56 +00:00
f4a1ede7d4 cross compilation: fix unar 2023-02-21 12:19:49 +00:00
478002766e trust-dns: fetch lan IP to listen on from config instead of repeating myself 2023-02-21 11:38:27 +00:00
290a15e517 servo: update lan IP 2023-02-21 11:36:16 +00:00
e923636181 Merge branch 'dev/servo' 2023-02-21 11:35:00 +00:00
017aa335b1 servo: dyn-dns: have getIp command use a fallback 2023-02-21 11:25:34 +00:00
58b219546b ejabberd: reduce TURN port pool 2023-02-21 11:25:34 +00:00
499078e0f8 trust-dns: update the address we listen on 2023-02-21 11:25:16 +00:00
82d3e9686d sane-ip-check: set exit code based on if we get IP or not 2023-02-21 11:17:54 +00:00
02df87fc51 cross compilation: build webp-pixbuf-loader without emulation 2023-02-21 01:25:42 +00:00
33ff993981 cross: compile appstream, colord without emulation 2023-02-21 01:25:42 +00:00
976f48268d pins: disable failing python310Packages.ipython tests 2023-02-21 01:25:42 +00:00
ec26f11db4 pins: disable failing python310Packages.pytest-xdist tests 2023-02-21 01:25:42 +00:00
15755a8a71 WIP: reduce emulated cross pkgset; aborted x86-x86 cross compilation 2023-02-21 01:25:42 +00:00
02067db774 moby: ship the full recommended guiApps again 2023-02-21 01:25:42 +00:00
e69734250e phosh: disable konsole. it drags in a large closure, especially qt stuff which doesn't cross compile well 2023-02-21 01:25:42 +00:00
f78a02700f cross packages: full moby build can cross compile (except konsole is untested) 2023-02-21 01:25:42 +00:00
d776c4618a programs: split the guiApps category into slightly smaller bits 2023-02-21 01:25:39 +00:00
50812e5678 moby: ship some of the base apps 2023-02-21 01:21:01 +00:00
86293377d7 cross packages: cross compile more stuff 2023-02-21 01:21:01 +00:00
14922a40b2 gpodder: fix makeWrapper to be a nativeBuildInput 2023-02-21 01:21:01 +00:00
e6a6d35adf phosh-mobile-settings: cross compile 2023-02-21 01:21:01 +00:00
5777e1a6e4 cross packages: cross compile more gnome packages 2023-02-21 01:21:01 +00:00
635a4b958b working moby cross compilation 2023-02-21 01:21:01 +00:00
99c4fedbdc cross packages: get more things to build and further reduce the emulated closure 2023-02-21 01:21:01 +00:00
e70e8e144b cross packages: get more things to build and further reduce the emulated closure 2023-02-21 01:21:01 +00:00
aad572a058 cross packages: reduce the emulated package set 2023-02-21 01:21:01 +00:00
4a886b9e9b phosh: disable gvfs service 2023-02-21 01:21:01 +00:00
ce60270821 phosh: enable fewer gnome services/packages 2023-02-21 01:21:01 +00:00
8929311732 programs: re-enable cdrtools, fwupd 2023-02-21 01:20:54 +00:00
fdec1817c4 tune emulated package set (e.g. only emulate one of gvfs' deps; not the WHOLE thing 2023-02-21 01:19:02 +00:00
6cbeccf51f WIP: moby: partially working cross compilation for phosh w/o apps (webkitgtk build OOMs) 2023-02-21 01:19:02 +00:00
7491114915 moby: get working cross compilation for the base image (i.e. no GUI) 2023-02-21 01:19:02 +00:00
5715795d1f WIP: moby-cross: is cross-by-default instead of opt-in 2023-02-21 01:19:00 +00:00
bffe39b6b5 gjs, libadwaita, libsecret: skip flakey check phase 2023-02-21 01:18:01 +00:00
8b2a7d5fb4 mesa: downgrade from 22.3.4 -> 22.3.2 to address a memory leak 2023-02-21 01:18:01 +00:00
251297b62e desko: enable iphone utils 2023-02-21 01:11:42 +00:00
0e70f516b7 programs: make console/sysadmin package default on, not forced on 2023-02-21 01:11:30 +00:00
8ecdaa0a64 programs: split console packages into smaller groups 2023-02-21 01:11:06 +00:00
af5c0d0648 hosts: update LAN IPs 2023-02-20 00:27:14 +00:00
87ec775ddb flake update: nixpkgs 2023-02-15 -> 2023-02-16
```
• Updated input 'nixpkgs-unpatched':
    'github:nixos/nixpkgs/28319deb5ab05458d9cd5c7d99e1a24ec2e8fc4b' (2023-02-15)
  → 'github:nixos/nixpkgs/ac1f5b72a9e95873d1de0233fddcb56f99884b37' (2023-02-16)
```
2023-02-18 11:39:09 +00:00
71028911e3 zsh: renew me to renew my license (c/o Ben) 2023-02-18 10:12:40 +00:00
5de54acd90 flake update: nixpkgs 2023-02-09 -> 2023-02-15
```
• Updated input 'mobile-nixos':
    'github:nixos/mobile-nixos/7478a9ffad737486951186b66f6c5535dc5802e2' (2023-01-28)
  → 'github:nixos/mobile-nixos/8701fcb1448f1eb67c0d47631ec2bdb613bd6a38' (2023-02-12)
• Updated input 'nixpkgs-unpatched':
    'github:nixos/nixpkgs/724bfc0892363087709bd3a5a1666296759154b1' (2023-02-09)
  → 'github:nixos/nixpkgs/28319deb5ab05458d9cd5c7d99e1a24ec2e8fc4b' (2023-02-15)
• Updated input 'sops-nix':
    'github:Mic92/sops-nix/8fec29b009c19538e68d5d814ec74e04f662fbd1' (2023-02-08)
  → 'github:Mic92/sops-nix/c5dab21d8706afc7ceb05c23d4244dcb48d6aade' (2023-02-12)
• Updated input 'sops-nix/nixpkgs-stable':
    'github:NixOS/nixpkgs/e32c33811815ca4a535a16faf1c83eeb4493145b' (2023-02-05)
  → 'github:NixOS/nixpkgs/d863ca850a06d91365c01620dcac342574ecf46f' (2023-02-12)
```
2023-02-17 04:15:55 +00:00
d54d1b9295 net: rename archived secrets 2023-02-15 02:04:06 +00:00
b740af17cd net: document how to add new networks 2023-02-15 01:59:22 +00:00
40e7d8a689 net: add new WiFi connection details 2023-02-15 01:59:12 +00:00
2f16e802d8 rename old networks 2023-02-15 01:52:39 +00:00
613 changed files with 64072 additions and 7786 deletions

3
.gitignore vendored
View File

@@ -1,2 +1,5 @@
/keep
result
result-*
/secrets/local.nix
/working

View File

@@ -8,7 +8,7 @@ keys:
- &host_servo age1tzlyex2z6t88tg9h82943e39shxhmqeyr7ywhlwpdjmyqsndv3qq27x0rf
- &host_moby age18vq5ktwgeaysucvw9t67drqmg5zd5c5k3le34yqxckkfj7wqdqgsd4ejmt
creation_rules:
- path_regex: secrets/universal*
- path_regex: secrets/common*
key_groups:
- age:
- *user_desko_colin
@@ -26,19 +26,19 @@ creation_rules:
- *user_lappy_colin
- *user_servo_colin
- *host_servo
- path_regex: secrets/desko.yaml$
- path_regex: secrets/desko*
key_groups:
- age:
- *user_desko_colin
- *user_lappy_colin
- *host_desko
- path_regex: secrets/lappy.yaml$
- path_regex: secrets/lappy*
key_groups:
- age:
- *user_lappy_colin
- *user_desko_colin
- *host_lappy
- path_regex: secrets/moby.yaml$
- path_regex: secrets/moby*
key_groups:
- age:
- *user_desko_colin

123
README.md Normal file
View File

@@ -0,0 +1,123 @@
## What's Here
this is the top-level repo from which i configure/deploy all my NixOS machines:
- desktop
- laptop
- server
- mobile phone (Pinephone)
everything outside of <./hosts/> and <./secrets/> is intended for export, to be importable for use by 3rd parties.
the only hard dependency for my exported pkgs/modules should be [nixpkgs][nixpkgs].
building <./hosts/> will require [sops][sops].
you might specifically be interested in these files (elaborated further in #key-points-of-interest):
- [`sxmo-utils-latest`](./pkgs/additional/sxmo-utils/default.nix)
- [example SXMO deployment](./hosts/modules/gui/sxmo/default.nix)
- [my implementation of impermanence](./modules/persist/default.nix)
- my way of deploying dotfiles/configuring programs per-user:
- <./modules/fs/default.nix>
- <./modules/programs.nix>
- <./modules/users.nix>
[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
this should be a pretty "standard" flake. just reference it, and import either
- `nixosModules.sane` (for the modules)
- `overlays.pkgs` (for the packages)
or follow the instructions [here][NUR] to use it via the Nix User Repositories.
[NUR]: https://nur.nix-community.org/
## Layout
- `doc/`
- instructions for tasks i find myself doing semi-occasionally in this repo.
- `hosts/`
- the bulk of config which isn't factored with external use in mind.
- that is, if you were to add this repo to a flake.nix for your own use,
you won't likely be depending on anything in this directory.
- `integrations/`
- code intended for consumption by external tools (e.g. the Nix User Repos)
- `modules/`
- config which is gated behind `enable` flags, in similar style to nixpkgs'
`nixos/` directory.
- if you depend on this repo, it's most likely for something in this directory.
- `nixpatches/`
- literally, diffs i apply atop upstream nixpkgs before performing further eval.
- `overlays/`
- exposed via the `overlays` output in `flake.nix`.
- predominantly a list of `callPackage` directives.
- `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
that are highly specific to my setup).
- `scripts/`
- scripts which aren't reachable on a deployed system, but may aid manual deployments
- `secrets/`
- encrypted keys, API tokens, anything which one or more of my machines needs
read access to but shouldn't be world-readable.
- not much to see here
- `templates/`
- exposed via the `templates` output in `flake.nix`.
- used to instantiate short-lived environments.
- used to auto-fill the boiler-plate portions of new packages.
## Key Points of Interest
i.e. you might find value in using these in your own config:
- `modules/fs/`
- use this to statically define leafs and nodes anywhere in the filesystem,
not just inside `/nix/store`.
- e.g. specify that `/var/www` should be:
- owned by a specific user/group
- set to a specific mode
- symlinked to some other path
- 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.
- `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).
- "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.
- `modules/programs.nix`
- 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;`
- `modules/users.nix`
- convenience layer atop the above modules so that you can just write
`fs.".config/git"` instead of `fs."/home/colin/.config/git"`
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.
[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,
you can reach me via any method listed [here](https://uninsane.org/about).
patches, for this repo or any other i host, will be warmly welcomed in any manner you see fit:
`git send-email`, DM'ing the patch over Matrix/Lemmy/ActivityPub/etc, even a literal PR where you
link me to your own clone.

120
TODO.md Normal file
View File

@@ -0,0 +1,120 @@
## BUGS
- why i need to manually restart `wireguard-wg-ovpns` on servo periodically
- else DNS fails
- fix epiphany URL bar input on moby
## REFACTORING:
### sops/secrets
- attach secrets to the thing they're used by (sane.programs)
- rework secrets to leverage `sane.fs`
- remove sops activation script as it's covered by my systemd sane.fs impl
### roles
- allow any host to take the role of `uninsane.org`
- will make it easier to test new services?
### upstreaming
- split out a sxmo module usable by NUR consumers
- bump nodejs version in lemmy-ui
- add updateScripts to all my packages in nixpkgs
- fix lightdm-mobile-greeter for newer libhandy
- port zecwallet-lite to a from-source build
- REVIEW/integrate jellyfin dataDir config: <https://github.com/NixOS/nixpkgs/pull/233617>
- remove `libsForQt5.callPackage` broadly: <https://github.com/NixOS/nixpkgs/issues/180841>
#### upstreaming to non-nixpkgs repos
- gtk: build schemas even on cross compilation: <https://github.com/NixOS/nixpkgs/pull/247844>
- sxmo: add new app entries
## IMPROVEMENTS:
### security/resilience
- validate duplicity backups!
- encrypt more ~ dirs (~/archives, ~/records, ..?)
- best to do this after i know for sure i have good backups
- have `sane.programs` be wrapped such that they run in a cgroup?
- at least, only give them access to the portion of the fs they *need*.
- Android takes approach of giving each app its own user: could hack that in here.
- **systemd-run** takes a command and runs it in a temporary scope (cgroup)
- presumably uses the same options as systemd services
- see e.g. <https://github.com/NixOS/nixpkgs/issues/113903#issuecomment-857296349>
- flatpak does this, somehow
- apparmor? SElinux? (desktop) "portals"?
- see Spectrum OS; Alyssa Ross; etc
- bubblewrap-based sandboxing: <https://github.com/nixpak/nixpak>
- canaries for important services
- e.g. daily email checks; daily backup checks
- integrate `nix check` into Gitea actions?
### user experience
#### moby
- fix cpuidle (gets better power consumption): <https://xnux.eu/log/077.html>
- install apps:
- display QR codes for WiFi endpoints: <https://linuxphoneapps.org/apps/noappid.wisperwind.wifi2qr/>
- shopping list: <https://linuxphoneapps.org/apps/ro.hume.cosmin.shoppinglist/>
- offline Wikipedia
- SwayNC:
- don't show MPRIS if no players detected
- this is a problem of playerctld, i guess
- add option to change audio output
- fix colors (red alert) to match overall theme
- moby: tune GPS
- run only geoclue, and not gpsd, to save power?
- tune QGPS setting in eg25-control, for less jitter?
- direct mepo to prefer gpsd, with fallback to geoclue, for better accuracy?
- configure geoclue to do some smoothing?
- manually do smoothing, as some layer between mepo and geoclue/gpsd?
- moby: show battery state on ssh login
- moby: improve gPodder launch time
- sxmo: port to swaybar like i use on desktop
- users in #sxmo claim it's way better perf
- sxmo: fix youtube scripts (package youtube-cli)
- sxmo: don't put all deps on PATH
- maybe: use resholve to hard-code them
- this is the most "correct", but least patchable
- maybe: express each invocation as a function in sxmo_common.sh
- this will require some patching to handle `exec <foo>` style
- maybe: save original PATH and reset it before invoking user files
- moby: theme GTK apps (i.e. non-adwaita styles)
- combine multiple icon themes to get one which has the full icon set?
- get adwaita-icon-theme to ship everything even when cross-compiled?
- especially, make the menubar collapsible
- try Gradience tool specifically for theming adwaita? <https://linuxphoneapps.org/apps/com.github.gradienceteam.gradience/>
- phog: remove the gnome-shell runtime dependency to save hella closure size
#### non-moby
- neovim: set up language server (lsp; rnix-lsp; nvim-lspconfig)
- Helix: make copy-to-system clipboard be the default
- firefox/librewolf: 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?
- 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"
### 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!
- why does nixos-rebuild switch take 5 minutes when net is flakey?
- trying to auto-mount servo?
- something to do with systemd services restarting/stalling
- maybe wireguard & its refresh operation, specifically?
- get moby to build without binfmt emulation (i.e. make all emulation explicit)
- then i can distribute builds across servo + desko, and also allow servo to pull packages from desko w/o worrying about purity
## NEW FEATURES:
- migrate MAME cabinet to nix
- boot it from PXE from servo?
- deploy to new server, and use it as a remote builder
- enable IPv6
- package lemonade lemmy app: <https://linuxphoneapps.org/apps/ml.mdwalters.lemonade/>

9
default.nix Normal file
View File

@@ -0,0 +1,9 @@
# limited, non-flake interface to this repo.
# this file exposes the same view into `pkgs` which the flake would see when evaluated.
#
# the primary purpose of this file is so i can run `updateScript`s which expect
# the root to be `default.nix`
{ pkgs ? import <nixpkgs> {} }:
pkgs.appendOverlays [
(import ./overlays/all.nix)
]

13
doc/adding-a-program.md Normal file
View File

@@ -0,0 +1,13 @@
to ship `pkgs.foo` on some host, either:
- add it as an entry in `suggestedPrograms` to the appropriate category in `hosts/common/programs/assorted.nix`, or
- `sane.programs.foo.enableFor.user.colin = true` in `hosts/by-name/myhost/default.nix`
if the program needs customization (persistence, configs, secrets):
- add a file for it at `hosts/common/programs/<foo>.nix`
- set the options, `sane.programs.foo.{fs,persist}`
if it's unclear what fs paths a program uses:
- run one of these commands, launch the program, run it again, and `diff`:
- `du -x --apparent-size ~`
- `find ~ -xdev`
- or, inspect the whole tmpfs root with `ncdu -x /`

80
flake.lock generated
View File

@@ -1,12 +1,15 @@
{
"nodes": {
"flake-utils": {
"inputs": {
"systems": "systems"
},
"locked": {
"lastModified": 1659877975,
"narHash": "sha256-zllb8aq3YO3h8B/U0/J1WBgAL8EX5yWf5pMj3G0NAmc=",
"lastModified": 1687709756,
"narHash": "sha256-Y5wKlQSkgEK2weWdOu4J3riRd+kV/VCgHsqLNTTWQ/0=",
"owner": "numtide",
"repo": "flake-utils",
"rev": "c0e246b9b83f637f4681389ecabcb2681b4f3af0",
"rev": "dbabf0ca0c0c4bce6ea5eaf65af5cb694d2082c7",
"type": "github"
},
"original": {
@@ -18,11 +21,11 @@
"mobile-nixos": {
"flake": false,
"locked": {
"lastModified": 1674880620,
"narHash": "sha256-JMALuC7xcoH/T66sKTVLuItHfOJBCWsNKpE49Qrvs80=",
"lastModified": 1696124168,
"narHash": "sha256-EzGHYAR7rozQQLZEHbKEcb5VpUFGoxwEsM0OWfW4wqU=",
"owner": "nixos",
"repo": "mobile-nixos",
"rev": "7478a9ffad737486951186b66f6c5535dc5802e2",
"rev": "7cee346c3f8e73b25b1cfbf7a086a7652c11e0f3",
"type": "github"
},
"original": {
@@ -31,46 +34,29 @@
"type": "github"
}
},
"nixpkgs": {
"inputs": {
"nixpkgs": [
"nixpkgs-unpatched"
]
},
"locked": {
"lastModified": 1,
"narHash": "sha256-FTUAvxSeQToawyfVP9/S2143D5EgCbk88qI2PePLQQ8=",
"path": "/nix/store/s9v0l913m4drrddglbjqa384nxxwhxca-source/nixpatches",
"type": "path"
},
"original": {
"path": "/nix/store/s9v0l913m4drrddglbjqa384nxxwhxca-source/nixpatches",
"type": "path"
}
},
"nixpkgs-stable": {
"locked": {
"lastModified": 1675556398,
"narHash": "sha256-5Gf5KlmFXfIGVQb2hmiiE7FQHoLd4UtEhIolLQvNB/A=",
"lastModified": 1696123266,
"narHash": "sha256-S6MZEneQeE4M/E/C8SMnr7B7oBnjH/hbm96Kak5hAAI=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "e32c33811815ca4a535a16faf1c83eeb4493145b",
"rev": "dbe90e63a36762f1fbde546e26a84af774a32455",
"type": "github"
},
"original": {
"owner": "NixOS",
"ref": "release-22.11",
"ref": "release-23.05",
"repo": "nixpkgs",
"type": "github"
}
},
"nixpkgs-unpatched": {
"locked": {
"lastModified": 1675942811,
"narHash": "sha256-/v4Z9mJmADTpXrdIlAjFa1e+gkpIIROR670UVDQFwIw=",
"lastModified": 1696375444,
"narHash": "sha256-Sv0ICt/pXfpnFhTGYTsX6lUr1SljnuXWejYTI2ZqHa4=",
"owner": "nixos",
"repo": "nixpkgs",
"rev": "724bfc0892363087709bd3a5a1666296759154b1",
"rev": "81e8f48ebdecf07aab321182011b067aafc78896",
"type": "github"
},
"original": {
@@ -83,7 +69,6 @@
"root": {
"inputs": {
"mobile-nixos": "mobile-nixos",
"nixpkgs": "nixpkgs",
"nixpkgs-unpatched": "nixpkgs-unpatched",
"sops-nix": "sops-nix",
"uninsane-dot-org": "uninsane-dot-org"
@@ -92,16 +77,16 @@
"sops-nix": {
"inputs": {
"nixpkgs": [
"nixpkgs"
"nixpkgs-unpatched"
],
"nixpkgs-stable": "nixpkgs-stable"
},
"locked": {
"lastModified": 1675872570,
"narHash": "sha256-RPH3CeTv7ixC2WcYiKyhmIgoH/9tur4Kr+3Vg/pleQk=",
"lastModified": 1696320910,
"narHash": "sha256-fbuEc6wylH+0VxG48lhPBK+SQJHfo2lusUwWHZNipIM=",
"owner": "Mic92",
"repo": "sops-nix",
"rev": "8fec29b009c19538e68d5d814ec74e04f662fbd1",
"rev": "746c7fa1a64c1671a4bf287737c27fdc7101c4c2",
"type": "github"
},
"original": {
@@ -110,19 +95,34 @@
"type": "github"
}
},
"systems": {
"locked": {
"lastModified": 1681028828,
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
"owner": "nix-systems",
"repo": "default",
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
"type": "github"
},
"original": {
"owner": "nix-systems",
"repo": "default",
"type": "github"
}
},
"uninsane-dot-org": {
"inputs": {
"flake-utils": "flake-utils",
"nixpkgs": [
"nixpkgs"
"nixpkgs-unpatched"
]
},
"locked": {
"lastModified": 1675131883,
"narHash": "sha256-yBgJDG72YqIr1bltasqHD1E/kHc9uRFgDjxDmy6kI8M=",
"lastModified": 1696306988,
"narHash": "sha256-I/OyJxIxu0n5h1eFqwVw0C6wTN3ewBXp2lGAdo1ur70=",
"ref": "refs/heads/master",
"rev": "b099c24091cc192abf3997b94342d4b31cc5757b",
"revCount": 170,
"rev": "1f588493031168d92a1e60705f26aaf4b2cdc07e",
"revCount": 208,
"type": "git",
"url": "https://git.uninsane.org/colin/uninsane"
},

437
flake.nix
View File

@@ -4,6 +4,8 @@
# - this is marginally the case with schemes like `github:nixos/nixpkgs`.
# - given the *existing* `git+https://` scheme, i propose expressing github URLs similarly:
# - `github+https://github.com/nixos/nixpkgs/tree/nixos-22.11`
# - this would allow for the same optimizations as today's `github:nixos/nixpkgs`, but without obscuring the source.
# a code reader could view the source being referenced simply by clicking the https:// portion of that URI.
# - need some way to apply local patches to inputs.
#
#
@@ -12,40 +14,61 @@
# - Flake RFC: <https://github.com/tweag/rfcs/blob/flakes/rfcs/0049-flakes.md>
# - Discussion: <https://github.com/NixOS/rfcs/pull/49>
# - <https://serokell.io/blog/practical-nix-flakes>
#
#
# COMMON OPERATIONS:
# - update a specific flake input:
# - `nix flake lock --update-input nixpkgs`
{
# XXX: use the `github:` scheme instead of the more readable git+https: because it's *way* more efficient
# preferably, i would rewrite the human-readable https URLs to nix-specific github: URLs with a helper,
# but `inputs` is required to be a strict attrset: not an expression.
inputs = {
# <https://github.com/nixos/nixpkgs/tree/nixos-22.11>
# nixpkgs-stable.url = "github:nixos/nixpkgs?ref=nixos-22.11";
# branch workflow:
# - daily:
# - nixos-unstable cut from master after enough packages have been built in caches.
# - every 6 hours:
# - master auto-merged into staging.
# - staging-next auto-merged into staging.
# - manually, approximately once per month:
# - staging-next is cut from staging.
# - staging-next merged into master.
#
# which branch to source from?
# - for everyday development, prefer `nixos-unstable` branch, as it provides good caching.
# - if need to test bleeding updates (e.g. if submitting code into staging):
# - use `staging-next` if it's been cut (i.e. if there's an active staging-next -> master PR)
# - use `staging` if no staging-next branch has been cut.
#
# <https://github.com/nixos/nixpkgs/tree/nixos-unstable>
nixpkgs-unpatched.url = "github:nixos/nixpkgs?ref=nixos-unstable";
nixpkgs = {
url = "./nixpatches";
inputs.nixpkgs.follows = "nixpkgs-unpatched";
};
# nixpkgs-unpatched.url = "github:nixos/nixpkgs?ref=staging-next";
# nixpkgs-unpatched.url = "github:nixos/nixpkgs?ref=staging";
mobile-nixos = {
# <https://github.com/nixos/mobile-nixos>
# only used for building disk images, not relevant after deployment
url = "github:nixos/mobile-nixos";
flake = false;
};
sops-nix = {
# <https://github.com/Mic92/sops-nix>
# used to distribute secrets to my hosts
url = "github:Mic92/sops-nix";
inputs.nixpkgs.follows = "nixpkgs";
# inputs.nixpkgs.follows = "nixpkgs";
inputs.nixpkgs.follows = "nixpkgs-unpatched";
};
uninsane-dot-org = {
# provides the package to deploy <https://uninsane.org>, used only when building the servo host
url = "git+https://git.uninsane.org/colin/uninsane";
inputs.nixpkgs.follows = "nixpkgs";
# inputs.nixpkgs.follows = "nixpkgs";
inputs.nixpkgs.follows = "nixpkgs-unpatched";
};
};
outputs = {
self,
nixpkgs,
nixpkgs-unpatched,
mobile-nixos,
sops-nix,
@@ -53,48 +76,97 @@
...
}@inputs:
let
nixpkgsCompiledBy = local: nixpkgs.legacyPackages."${local}";
inherit (builtins) attrNames elem listToAttrs map mapAttrs;
# redefine some nixpkgs `lib` functions to avoid the infinite recursion
# of if we tried to use patched `nixpkgs.lib` as part of the patching process.
mapAttrs' = f: set:
listToAttrs (map (attr: f attr set.${attr}) (attrNames set));
optionalAttrs = cond: attrs: if cond then attrs else {};
# mapAttrs but without the `name` argument
mapAttrValues = f: mapAttrs (_: f);
evalHost = { name, local, target }:
let
# XXX: we'd prefer to use `nixosSystem = (nixpkgsCompiledBy target).nixos`
# but it doesn't propagate config to the underlying pkgs, meaning it doesn't let you use
# non-free packages even after setting nixpkgs.allowUnfree.
# XXX: patch using the target -- not local -- otherwise the target will
# need to emulate the host in order to rebuild!
nixosSystem = import ((nixpkgsCompiledBy target).path + "/nixos/lib/eval-config.nix");
in
(nixosSystem {
# we use pkgs built for and *by* the target, i.e. emulation, by default.
# cross compilation only happens on explicit access to `pkgs.cross`
system = target;
modules = [
(import ./hosts/instantiate.nix { localSystem = local; hostName = name; })
self.nixosModules.default
self.nixosModules.passthru
{
nixpkgs.overlays = [
self.overlays.default
self.overlays.passthru
self.overlays.pins
];
}
];
});
in {
nixosConfigurations = {
servo = evalHost { name = "servo"; local = "x86_64-linux"; target = "x86_64-linux"; };
desko = evalHost { name = "desko"; local = "x86_64-linux"; target = "x86_64-linux"; };
lappy = evalHost { name = "lappy"; local = "x86_64-linux"; target = "x86_64-linux"; };
moby = evalHost { name = "moby"; local = "aarch64-linux"; target = "aarch64-linux"; };
# special cross-compiled variant, to speed up deploys from an x86 box to the arm target
# note that these *do* produce different store paths, because the closure for the tools used to cross compile
# v.s. emulate differ.
# so deploying foo-cross and then foo incurs some rebuilding.
moby-cross = evalHost { name = "moby"; local = "x86_64-linux"; target = "aarch64-linux"; };
rescue = evalHost { name = "rescue"; local = "x86_64-linux"; target = "x86_64-linux"; };
# rather than apply our nixpkgs patches as a flake input, do that here instead.
# this (temporarily?) resolves the bad UX wherein a subflake residing in the same git
# repo as the main flake causes the main flake to have an unstable hash.
nixpkgs = (import ./nixpatches/flake.nix).outputs {
self = nixpkgs;
nixpkgs = nixpkgs-unpatched;
} // {
# provide values that nixpkgs ordinarily sources from the flake.lock file,
# inaccessible to it here because of the import-from-derivation.
# rev and shortRev seem to not always exist (e.g. if the working tree is dirty),
# so those are made conditional.
#
# these values impact the name of a produced nixos system. having date/rev in the
# `readlink /run/current-system` store path helps debuggability.
inherit (self) lastModifiedDate lastModified;
} // optionalAttrs (self ? rev) {
inherit (self) rev;
} // optionalAttrs (self ? shortRev) {
inherit (self) shortRev;
};
nixpkgsCompiledBy = system: nixpkgs.legacyPackages."${system}";
evalHost = { name, local, target }: nixpkgs.lib.nixosSystem {
system = target;
modules = [
{
nixpkgs = (if (local != null) then {
buildPlatform = local;
} else {}) // {
# TODO: does the earlier `system` arg to nixosSystem make its way here?
hostPlatform.system = target;
};
# nixpkgs.buildPlatform = local; # set by instantiate.nix instead
# nixpkgs.config.replaceStdenv = { pkgs }: pkgs.ccacheStdenv;
}
(import ./hosts/instantiate.nix { hostName = name; })
self.nixosModules.default
self.nixosModules.passthru
{
nixpkgs.overlays = [
self.overlays.passthru
self.overlays.sane-all
];
}
];
};
in {
nixosConfigurations =
let
hosts = {
servo = { name = "servo"; local = "x86_64-linux"; target = "x86_64-linux"; };
desko = { name = "desko"; local = "x86_64-linux"; target = "x86_64-linux"; };
lappy = { name = "lappy"; local = "x86_64-linux"; target = "x86_64-linux"; };
moby = { name = "moby"; local = "x86_64-linux"; target = "aarch64-linux"; };
rescue = { name = "rescue"; local = "x86_64-linux"; target = "x86_64-linux"; };
};
# cross-compiled builds: instead of emulating the host, build using a cross-compiler.
# - these are faster to *build* than the emulated variants (useful when tweaking packages),
# - but fewer of their packages can be found in upstream caches.
cross = mapAttrValues evalHost hosts;
emulated = mapAttrValues
({name, local, target}: evalHost {
inherit name target;
local = null;
})
hosts;
prefixAttrs = prefix: attrs: mapAttrs'
(name: value: {
name = prefix + name;
inherit value;
})
attrs;
in
(prefixAttrs "cross-" cross) //
(prefixAttrs "emulated-" emulated) // {
# prefer native builds for these machines:
inherit (emulated) servo desko lappy rescue;
# prefer cross-compiled builds for these machines:
inherit (cross) moby;
};
# unofficial output
# this produces a EFI-bootable .img file (GPT with a /boot partition and a system (/ or /nix) partition).
# after building this:
@@ -109,27 +181,30 @@
# - if fs wasn't resized automatically, then `sudo btrfs filesystem resize max /`
# - checkout this flake into /etc/nixos AND UPDATE THE FS UUIDS.
# - `nixos-rebuild --flake './#<host>' switch`
imgs = builtins.mapAttrs (_: host-dfn: host-dfn.config.system.build.img) self.nixosConfigurations;
imgs = mapAttrValues (host: host.config.system.build.img) self.nixosConfigurations;
host-pkgs = builtins.mapAttrs (_: host-dfn: host-dfn.config.system.build.pkgs) self.nixosConfigurations;
# unofficial output
host-pkgs = mapAttrValues (host: host.config.system.build.pkgs) self.nixosConfigurations;
host-programs = mapAttrValues (host: mapAttrValues (p: p.package) host.config.sane.programs) self.nixosConfigurations;
overlays = rec {
default = pkgs;
pkgs = import ./overlays/pkgs.nix;
pins = import ./overlays/pins.nix; # TODO: move to `nixpatches/` input
passthru =
overlays = {
# N.B.: `nix flake check` requires every overlay to take `final: prev:` at defn site,
# hence the weird redundancy.
default = final: prev: self.overlays.pkgs final prev;
sane-all = final: prev: import ./overlays/all.nix final prev;
disable-flakey-tests = final: prev: import ./overlays/disable-flakey-tests.nix final prev;
pkgs = final: prev: import ./overlays/pkgs.nix final prev;
pins = final: prev: import ./overlays/pins.nix final prev;
preferences = final: prev: import ./overlays/preferences.nix final prev;
optimizations = final: prev: import ./overlays/optimizations.nix final prev;
passthru = final: prev:
let
stable =
if inputs ? "nixpkgs-stable" then (
next: prev: {
stable = inputs.nixpkgs-stable.legacyPackages."${prev.stdenv.hostPlatform.system}";
}
) else (next: prev: {});
mobile = (import "${mobile-nixos}/overlay/overlay.nix");
uninsane = uninsane-dot-org.overlay;
in
next: prev:
(stable next prev) // (mobile next prev) // (uninsane next prev);
(mobile final prev)
// (uninsane final prev)
;
};
nixosModules = rec {
@@ -153,36 +228,246 @@
aarch64-linux = allPkgsFor "aarch64-linux";
};
# extract only our own packages from the full set
packages = builtins.mapAttrs
(_: full: full.sane // { inherit (full) sane uninsane-dot-org; })
self.legacyPackages;
# extract only our own packages from the full set.
# because of `nix flake check`, we flatten the package set and only surface x86_64-linux packages.
packages = mapAttrs
(system: allPkgs:
allPkgs.lib.filterAttrs (name: pkg:
# keep only packages which will pass `nix flake check`, i.e. keep only:
# - derivations (not package sets)
# - packages that build for the given platform
(! elem name [ "feeds" "pythonPackagesExtensions" ])
&& (allPkgs.lib.meta.availableOn allPkgs.stdenv.hostPlatform pkg)
)
(
# expose sane packages and chosen inputs (uninsane.org)
(import ./pkgs { pkgs = allPkgs; }) // {
inherit (allPkgs) uninsane-dot-org;
}
)
)
# self.legacyPackages;
{ inherit (self.legacyPackages) x86_64-linux; }
;
apps."x86_64-linux" =
let
pkgs = self.legacyPackages."x86_64-linux";
in {
update-feeds = {
sanePkgs = import ./pkgs { inherit pkgs; };
deployScript = host: addr: action: pkgs.writeShellScript "deploy-${host}" ''
nix build '.#nixosConfigurations.${host}.config.system.build.toplevel' --out-link ./result-${host} $@
sudo nix sign-paths -r -k /run/secrets/nix_serve_privkey $(readlink ./result-${host})
# XXX: this triggers another config eval & (potentially) build.
# if the config changed between these invocations, the above signatures might not apply to the deployed config.
# let the user handle that edge case by re-running this whole command
nixos-rebuild --flake '.#${host}' ${action} --target-host colin@${addr} --use-remote-sudo $@
'';
# pkg updating.
# a cleaner alternative lives here: <https://discourse.nixos.org/t/how-can-i-run-the-updatescript-of-personal-packages/25274/2>
mkUpdater = attrPath: {
type = "app";
program = "${pkgs.feeds.passthru.updateScript}";
program = let
pkg = pkgs.lib.getAttrFromPath attrPath sanePkgs;
strAttrPath = pkgs.lib.concatStringsSep "." attrPath;
commandArgv = pkg.updateScript.command or pkg.updateScript;
command = pkgs.lib.escapeShellArgs commandArgv;
in builtins.toString (pkgs.writeShellScript "update-${strAttrPath}" ''
export UPDATE_NIX_NAME=${pkg.name}
export UPDATE_NIX_PNAME=${pkg.pname}
export UPDATE_NIX_OLD_VERSION=${pkg.version}
export UPDATE_NIX_ATTR_PATH=${strAttrPath}
${command}
'');
};
mkUpdatersNoAliases = opts: basePath: pkgs.lib.concatMapAttrs
(name: pkg:
if pkg.recurseForDerivations or false then {
"${name}" = mkUpdaters opts (basePath ++ [ name ]);
} else if pkg.updateScript or null != null then {
"${name}" = mkUpdater (basePath ++ [ name ]);
} else {}
)
(pkgs.lib.getAttrFromPath basePath sanePkgs);
mkUpdaters = { ignore ? [] }@opts: basePath:
let
updaters = mkUpdatersNoAliases opts basePath;
invokeUpdater = name: pkg:
let
fullPath = basePath ++ [ name ];
doUpdateByDefault = !builtins.elem fullPath ignore;
# in case `name` has a `.` in it, we have to quote it
escapedPath = builtins.map (p: ''"${p}"'') fullPath;
updatePath = builtins.concatStringsSep "." ([ "update" "pkgs" ] ++ escapedPath);
in pkgs.lib.optionalString doUpdateByDefault (
pkgs.lib.escapeShellArgs [
"nix" "run" ".#${updatePath}"
]
);
in {
type = "app";
program = builtins.toString (pkgs.writeShellScript
(builtins.concatStringsSep "-" (["update"] ++ basePath))
(builtins.concatStringsSep
"\n"
(pkgs.lib.mapAttrsToList invokeUpdater updaters)
)
);
} // updaters;
in {
help = {
type = "app";
program = let
helpMsg = builtins.toFile "nixos-config-help-message" ''
commands:
- `nix run '.#help'`
- show this message
- `nix run '.#update.pkgs'`
- updates every package
- `nix run '.#update.feeds'`
- updates metadata for all feeds
- `nix run '.#init-feed' <url>`
- `nix run '.#deploy-{lappy,moby,moby-test,servo}' [nixos-rebuild args ...]`
- `nix run '.#check'`
- make sure all systems build; NUR evaluates
'';
in builtins.toString (pkgs.writeShellScript "nixos-config-help" ''
cat ${helpMsg}
echo ""
echo "complete flake structure:"
nix flake show --option allow-import-from-derivation true
'');
};
update.pkgs = mkUpdaters { ignore = [ ["feeds"] ]; } [];
update.feeds = mkUpdaters {} [ "feeds" ];
init-feed = {
# use like `nix run '.#init-feed' uninsane.org`
type = "app";
program = "${pkgs.feeds.passthru.initFeedScript}";
program = "${pkgs.feeds.init-feed}";
};
deploy-lappy = {
type = "app";
program = ''${deployScript "lappy" "lappy" "switch"}'';
};
deploy-moby-test = {
type = "app";
program = ''${deployScript "moby" "moby-hn" "test"}'';
};
deploy-moby = {
type = "app";
program = ''${deployScript "moby" "moby-hn" "switch"}'';
};
deploy-servo = {
type = "app";
program = ''${deployScript "servo" "servo" "switch"}'';
};
sync-moby = {
# copy music from the current device to moby
# TODO: should i actually sync from /mnt/servo-media/Music instead of the local drive?
type = "app";
program = builtins.toString (pkgs.writeShellScript "sync-to-moby" ''
sudo mount /mnt/moby-home
${pkgs.sane-scripts.sync-music}/bin/sane-sync-music ~/Music /mnt/moby-home/Music
'');
};
sync-lappy = {
# copy music from servo to lappy
# can run this from any device that has ssh access to lappy
type = "app";
program = builtins.toString (pkgs.writeShellScript "sync-to-lappy" ''
sudo mount /mnt/lappy-home
${pkgs.sane-scripts.sync-music}/bin/sane-sync-music /mnt/servo-media/Music /mnt/lappy-home/Music
'');
};
check = {
type = "app";
program = builtins.toString (pkgs.writeShellScript "check-all" ''
nix run '.#check.nur'
RC0=$?
nix run '.#check.host-configs'
RC1=$?
echo "nur: $RC0"
echo "host-configs: $RC1"
exit $(($RC0 | $RC1))
'');
};
check.nur = {
# `nix run '.#check-nur'`
# validates that my repo can be included in the Nix User Repository
type = "app";
program = builtins.toString (pkgs.writeShellScript "check-nur" ''
cd ${./.}/integrations/nur
NIX_PATH= NIXPKGS_ALLOW_UNSUPPORTED_SYSTEM=1 nix-env -f . -qa \* --meta --xml \
--allowed-uris https://static.rust-lang.org \
--option restrict-eval true \
--option allow-import-from-derivation true \
--drv-path --show-trace \
-I nixpkgs=$(nix-instantiate --find-file nixpkgs) \
-I ../../ \
| tee # tee to prevent interactive mode
'');
};
check.host-configs = {
type = "app";
program = let
checkHost = host: ''
nix build '.#nixosConfigurations.${host}.config.system.build.toplevel' --out-link ./result-${host} -j2 $@
RC_${host}=$?
'';
in builtins.toString (pkgs.writeShellScript
"check-host-configs"
''
${checkHost "desko"}
${checkHost "lappy"}
${checkHost "servo"}
${checkHost "moby"}
${checkHost "rescue"}
echo "desko: $RC_desko"
echo "lappy: $RC_lappy"
echo "servo: $RC_servo"
echo "moby: $RC_moby"
echo "rescue: $RC_rescue"
exit $(($RC_desko | $RC_lappy | $RC_servo | $RC_moby | $RC_rescue))
''
);
};
};
templates = {
python-data = {
env.python-data = {
# initialize with:
# - `nix flake init -t '/home/colin/dev/nixos/#python-data'`
# - `nix flake init -t '/home/colin/dev/nixos/#env.python-data'`
# then enter with:
# - `nix develop`
path = ./templates/python-data;
path = ./templates/env/python-data;
description = "python environment for data processing";
};
pkgs.rust-inline = {
# initialize with:
# - `nix flake init -t '/home/colin/dev/nixos/#pkgs.rust-inline'`
path = ./templates/pkgs/rust-inline;
description = "rust package and development environment (inline rust sources)";
};
pkgs.rust = {
# initialize with:
# - `nix flake init -t '/home/colin/dev/nixos/#pkgs.rust'`
path = ./templates/pkgs/rust;
description = "rust package fit to ship in nixpkgs";
};
pkgs.make = {
# initialize with:
# - `nix flake init -t '/home/colin/dev/nixos/#pkgs.make'`
path = ./templates/pkgs/make;
description = "default Makefile-based derivation";
};
};
};
}

7
hosts/README.md Normal file
View File

@@ -0,0 +1,7 @@
## directory structure
- by-name/<hostname>: configuration which is evaluated _only_ for the given hostname
- common/: configuration which applies to all hosts
- modules/: nixpkgs-style modules which may be used by multiple hosts, but configured separately per host.
- ideally no module here has effect unless `enable`d
- however, `enable` may default to true
- and in practice some of these modules surely aren't fully "disableable"

View File

@@ -4,15 +4,29 @@
./fs.nix
];
# sane.guest.enable = true;
# services.distccd.enable = true;
# sane.programs.distcc.enableFor.user.guest = true;
sops.secrets.colin-passwd.neededForUsers = true;
sane.roles.build-machine.enable = true;
sane.roles.ac = true;
sane.roles.client = true;
sane.roles.dev-machine = true;
sane.services.wg-home.enable = true;
sane.services.wg-home.ip = config.sane.hosts.by-name."desko".wg-home.ip;
sane.services.duplicity.enable = true;
sane.services.nixserve.enable = true;
sane.services.nixserve.sopsFile = ../../../secrets/desko.yaml;
sane.persist.enable = true;
sane.services.nixserve.secretKeyFile = config.sops.secrets.nix_serve_privkey.path;
sane.gui.sway.enable = true;
sane.programs.iphoneUtils.enableFor.user.colin = true;
sane.programs.steam.enableFor.user.colin = true;
sane.programs.guiApps.suggestedPrograms = [ "desktopGuiApps" ];
sane.programs.consoleUtils.suggestedPrograms = [ "consoleMediaUtils" "desktopConsoleUtils" ];
# sane.programs.devPkgs.enableFor.user.colin = true;
boot.loader.efi.canTouchEfiVariables = false;
sane.image.extraBootFiles = [ pkgs.bootpart-uefi-x86_64 ];
@@ -20,13 +34,9 @@
# needed to use libimobiledevice/ifuse, for iphone sync
services.usbmuxd.enable = true;
sops.secrets.colin-passwd = {
sopsFile = ../../../secrets/desko.yaml;
neededForUsers = true;
};
# don't enable wifi by default: it messes with connectivity.
systemd.services.iwd.enable = false;
systemd.services.wpa_supplicant.enable = false;
# default config: https://man.archlinux.org/man/snapper-configs.5
# defaults to something like:
@@ -35,28 +45,11 @@
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";
SUBVOLUME = "/nix";
# TODO: ALLOW_USERS doesn't seem to work. still need `sudo snapper -c nix list`
extraConfig = ''
ALLOW_USERS = "colin";
'';
ALLOW_USERS = [ "colin" ];
};
sops.secrets.duplicity_passphrase = {
sopsFile = ../../../secrets/desko.yaml;
};
programs.steam = {
enable = true;
# not sure if needed: stole this whole snippet from the wiki
remotePlay.openFirewall = true; # Open ports in the firewall for Steam Remote Play
dedicatedServer.openFirewall = true; # Open ports in the firewall for Source Dedicated Server
};
sane.user.persist.plaintext = [
".steam"
".local/share/Steam"
];
# docs: https://nixos.org/manual/nixos/stable/options.html#opt-system.stateVersion
system.stateVersion = "21.05";
}

View File

@@ -2,17 +2,10 @@
{
sane.persist.root-on-tmpfs = true;
# we need a /tmp for building large nix things.
# 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" = {
device = "none";
fsType = "tmpfs";
options = [
"mode=777"
"size=64G"
"defaults"
];
};
fileSystems."/tmp".options = [ "size=64G" ];
fileSystems."/nix" = {
# device = "/dev/disk/by-uuid/985a0a32-da52-4043-9df7-615adec2e4ff";
device = "/dev/disk/by-uuid/0ab0770b-7734-4167-88d9-6e4e20bb2a56";

View File

@@ -2,23 +2,26 @@
{
imports = [
./fs.nix
./polyfill.nix
];
sane.roles.client = true;
sane.roles.dev-machine = true;
sane.services.wg-home.enable = true;
sane.services.wg-home.ip = config.sane.hosts.by-name."lappy".wg-home.ip;
# sane.guest.enable = true;
sane.gui.sway.enable = true;
sane.persist.enable = true;
sane.nixcache.enable = true;
boot.loader.efi.canTouchEfiVariables = false;
sane.image.extraBootFiles = [ pkgs.bootpart-uefi-x86_64 ];
sops.secrets.colin-passwd = {
sopsFile = ../../../secrets/lappy.yaml;
neededForUsers = true;
};
sane.programs.guiApps.suggestedPrograms = [
"desktopGuiApps"
"stepmania"
];
sane.programs.consoleUtils.suggestedPrograms = [ "consoleMediaUtils" "desktopConsoleUtils" ];
sops.secrets.colin-passwd.neededForUsers = true;
# default config: https://man.archlinux.org/man/snapper-configs.5
# defaults to something like:
@@ -27,12 +30,10 @@
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";
SUBVOLUME = "/nix";
ALLOW_USERS = [ "colin" ];
};
# TODO: only here for debugging
# services.ipfs.enable = true;
# docs: https://nixos.org/manual/nixos/stable/options.html#opt-system.stateVersion
system.stateVersion = "21.05";
}

View File

@@ -2,15 +2,6 @@
{
sane.persist.root-on-tmpfs = true;
# we need a /tmp of default size (half RAM) for building large nix things
fileSystems."/tmp" = {
device = "none";
fsType = "tmpfs";
options = [
"mode=777"
"defaults"
];
};
fileSystems."/nix" = {
device = "/dev/disk/by-uuid/75230e56-2c69-4e41-b03e-68475f119980";

View File

@@ -0,0 +1,43 @@
# doesn't actually *enable* anything,
# but sets up any modules such that if they *were* enabled, they'll act as expected.
{ pkgs, ... }:
{
sane.gui.sxmo = {
greeter = "greetd-sway-gtkgreet";
noidle = true; #< power button requires 1s hold, which makes it impractical to be dealing with.
settings = {
# XXX: make sure the user is part of the `input` group!
SXMO_LISGD_INPUT_DEVICE = "/dev/input/by-id/usb-Wacom_Co._Ltd._Pen_and_multitouch_sensor-event-if00";
# these identifiers are from `swaymsg -t get_inputs`
SXMO_VOLUME_BUTTON = "1:1:AT_Translated_Set_2_keyboard";
# SXMO_VOLUME_BUTTON = "none";
# N.B.: thinkpad's power button requires a full second press to do anything
SXMO_POWER_BUTTON = "0:1:Power_Button";
# SXMO_POWER_BUTTON = "none";
SXMO_DISABLE_LEDS = "1";
SXMO_UNLOCK_IDLE_TIME = "120"; # default
# sxmo tries to determine device type from /proc/device-tree/compatible,
# but that doesn't seem to exist on NixOS? (or maybe it just doesn't exist
# on non-aarch64 builds).
# the device type informs (at least):
# - SXMO_WIFI_MODULE
# - SXMO_RTW_SCAN_INTERVAL
# - SXMO_SYS_FILES
# - SXMO_TOUCHSCREEN_ID
# - SXMO_MONITOR
# - SXMO_ALSA_CONTROL_NAME
# - SXMO_SWAY_SCALE
# see <repo:mil/sxmo-utils:scripts/deviceprofiles>
# SXMO_DEVICE_NAME = "pine64,pinephone-1.2";
# if sxmo doesn't know the device, it can't decide whether to use one_button or three_button mode
# and so it just wouldn't handle any button inputs (sxmo_hook_inputhandler.sh not on path)
SXMO_DEVICE_NAME = "three_button_touchscreen";
};
package = (pkgs.sxmo-utils-latest.override { preferSystemd = true; }).overrideAttrs (base: {
postPatch = (base.postPatch or "") + ''
# after volume-button navigation mode, restore full keyboard functionality
cp ${./xkb_mobile_normal_buttons} ./configs/xkb/xkb_mobile_normal_buttons
'';
});
};
}

View File

@@ -0,0 +1,7 @@
xkb_keymap {
xkb_keycodes { include "evdev+aliases(qwerty)" };
xkb_types { include "complete" };
xkb_compat { include "complete" };
xkb_symbols { include "pc+us+inet(evdev)" };
xkb_geometry { include "pc(pc105)" };
};

View File

@@ -1,54 +1,95 @@
# Pinephone
# other setups to reference:
# - <https://hamblingreen.gitlab.io/2022/03/02/my-pinephone-setup.html>
# - sxmo Arch user. lots of app recommendations
#
# wikis, resources, ...:
# - Linux Phone Apps: <https://linuxphoneapps.org/>
# - massive mobile-friendly app database
# - Mobian wiki: <https://wiki.mobian-project.org/doku.php?id=start>
# - recommended apps, chatrooms
{ config, pkgs, lib, ... }:
{
imports = [
./firmware.nix
./bootloader.nix
./fs.nix
./gps.nix
./kernel.nix
./polyfill.nix
];
sane.roles.client = true;
sane.zsh.showDeadlines = false; # unlikely to act on them when in shell
sane.services.wg-home.enable = true;
sane.services.wg-home.ip = config.sane.hosts.by-name."moby".wg-home.ip;
# cross-compiled documentation is *slow*.
# no obvious way to natively compile docs (2022/09/29).
# entrypoint is nixos/modules/misc/documentation.nix
# doc building happens in nixos/doc/manual/default.nix
# TODO: we could *maybe* inject pkgs.buildPackages.xyz = cross.buildPackages.xyz?
documentation.nixos.enable = false;
sane.wowlan.enable = true;
sane.wowlan.patterns = [
{ ipv4.destPort = 22; } # wake on SSH
{ ipv4.srcPort = 2587; } # wake on `ntfy-sh` push from servo
{ arp.queryIp = [ 10 78 79 54 ]; } # wake when somebody is doing an ARP query against us
];
# XXX colin: phosh doesn't work well with passwordless login,
# so set this more reliable default password should anything go wrong
users.users.colin.initialPassword = "147147";
services.getty.autologinUser = "root"; # allows for emergency maintenance?
sops.secrets.colin-passwd = {
sopsFile = ../../../secrets/moby.yaml;
neededForUsers = true;
};
sops.secrets.colin-passwd.neededForUsers = true;
sane.web-browser = {
# compromise impermanence for the sake of usability
persistCache = "private";
persistData = "private";
sane.gui.sxmo.enable = true;
sane.programs.guiApps.suggestedPrograms = [ "handheldGuiApps" ];
# sane.programs.consoleUtils.enableFor.user.colin = false;
# sane.programs.guiApps.enableFor.user.colin = false;
sane.programs.blueberry.enableFor.user.colin = false; # bluetooth manager: doesn't cross compile!
sane.programs.sequoia.enableFor.user.colin = false;
sane.programs.tuiApps.enableFor.user.colin = false; # visidata, others, don't compile well
# disabled for faster deploys
sane.programs.soundconverter.enableFor.user.colin = false;
sane.programs.eg25-control.enableFor.user.colin = true;
# i don't do crypto stuff on moby
addons.ether-metamask.enable = false;
# addons.sideberry.enable = false;
};
sane.programs.ntfy-sh.config.autostart = true;
sane.programs.dino.config.autostart = true;
# sane.programs.calls.config.autostart = true;
sane.user.persist.plaintext = [
".config/pulse" # persist pulseaudio volume
];
sane.programs.firefox.mime.priority = 300; # prefer other browsers when possible
# HACK/TODO: make `programs.P.env.VAR` behave according to `mime.priority`
sane.programs.firefox.env = lib.mkForce {};
sane.programs.epiphany.env.BROWSER = "epiphany";
sane.programs.firefox.enableFor.user.colin = false; # use epiphany instead
sane.nixcache.enable = true;
sane.persist.enable = true;
sane.gui.phosh.enable = true;
# note the .conf.d approach: using ~/.config/pipewire/pipewire.conf directly breaks all audio,
# presumably because that deletes the defaults entirely whereas the .conf.d approach selectively overrides defaults
sane.user.fs.".config/pipewire/pipewire.conf.d/10-fix-dino-mic-cutout.conf".symlink.text = ''
# config docs: <https://gitlab.freedesktop.org/pipewire/pipewire/-/wikis/Config-PipeWire#properties>
# useful to run `pw-top` to see that these settings are actually having effect,
# and `pw-metadata` to see if any settings conflict (e.g. max-quantum < min-quantum)
#
# restart pipewire after editing these files:
# - `systemctl --user restart pipewire`
# - pipewire users will likely stop outputting audio until they are also restarted
#
# there's seemingly two buffers for the mic (see: <https://gitlab.freedesktop.org/pipewire/pipewire/-/wikis/FAQ#pipewire-buffering-explained>)
# 1. Pipewire buffering out of the driver and into its own member.
# 2. Pipewire buffering into Dino.
# the latter is fixed at 10ms by Dino, difficult to override via runtime config.
# the former defaults low (e.g. 512 samples)
# this default configuration causes the mic to regularly drop out entirely for a couple seconds at a time during a call,
# presumably because the system can't keep up (pw-top shows incrementing counter in ERR column).
# `pw-metadata -n settings 0 clock.force-quantum 1024` reduces to about 1 error per second.
# `pw-metadata -n settings 0 clock.force-quantum 2048` reduces to 1 error every < 10s.
# pipewire default config includes `clock.power-of-two-quantum = true`
context.properties = {
default.clock.min-quantum = 2048
default.clock.max-quantum = 8192
}
'';
# sane.programs.mpv.enableFor.user.colin = true;
boot.loader.efi.canTouchEfiVariables = false;
# /boot space is at a premium. default was 20.
# even 10 can be too much
# TODO: compress moby kernels!
boot.loader.generic-extlinux-compatible.configurationLimit = 8;
# mobile.bootloader.enable = false;
# mobile.boot.stage-1.enable = false;
@@ -65,12 +106,16 @@
# `cat /proc/meminfo` to see CmaTotal/CmaFree if interested in tuning this.
boot.kernelParams = [ "cma=512M" ];
# hardware.firmware makes the referenced files visible to the kernel, for whenever a driver explicitly asks for them.
# these files are visible from userspace by following `/sys/module/firmware_class/parameters/path`
#
# mobile-nixos' /lib/firmware includes:
# rtl_bt (bluetooth)
# anx7688-fw.bin (USB-C -> HDMI bridge)
# anx7688-fw.bin (USB-C chip: power negotiation, HDMI/dock)
# ov5640_af.bin (camera module)
# hardware.firmware = [ config.mobile.device.firmware ];
hardware.firmware = [ pkgs.rtl8723cs-firmware ];
# hardware.firmware = [ pkgs.rtl8723cs-firmware ];
hardware.firmware = [ pkgs.linux-firmware-megous ];
system.stateVersion = "21.11";
@@ -83,14 +128,48 @@
# enable rotation sensor
hardware.sensor.iio.enable = true;
# from https://gitlab.manjaro.org/manjaro-arm/packages/community/phosh/alsa-ucm-pinephone
# mobile-nixos does this same thing, with *slightly different settings*.
# i trust manjaro more because the guy maintaining that is actively trying to upstream into alsa-ucm-conf.
# an alternative may be to build a custom alsa with the PinePhone config patch applied:
# - <https://github.com/alsa-project/alsa-ucm-conf/pull/134>
# that would make this be not device-specific
environment.variables.ALSA_CONFIG_UCM2 = "${./ucm2}";
systemd.services.pulseaudio.environment.ALSA_CONFIG_UCM2 = "${./ucm2}";
# inject specialized alsa configs via the environment.
# specifically, this gets the pinephone headphones & internal earpiece working.
# see pkgs/patched/alsa-ucm-conf for more info.
environment.variables.ALSA_CONFIG_UCM2 = "/run/current-system/sw/share/alsa/ucm2";
environment.pathsToLink = [ "/share/alsa/ucm2" ];
environment.systemPackages = [ pkgs.alsa-ucm-conf-sane ];
systemd = let
ucm-env = config.environment.variables.ALSA_CONFIG_UCM2;
in {
# cribbed from <repo:nixos/mobile-nixos:modules/quirks/audio.nix>
hardware.opengl.driSupport = true;
# pipewire
user.services.pipewire.environment.ALSA_CONFIG_UCM2 = ucm-env;
user.services.pipewire-pulse.environment.ALSA_CONFIG_UCM2 = ucm-env;
user.services.wireplumber.environment.ALSA_CONFIG_UCM2 = ucm-env;
services.pipewire.environment.ALSA_CONFIG_UCM2 = ucm-env;
services.pipewire-pulse.environment.ALSA_CONFIG_UCM2 = ucm-env;
services.wireplumber.environment.ALSA_CONFIG_UCM2 = ucm-env;
# pulseaudio
# user.services.pulseaudio.environment.ALSA_CONFIG_UCM2 = ucm-env;
# services.pulseaudio.environment.ALSA_CONFIG_UCM2 = ucm-env;
# TODO: move elsewhere...
services.ModemManager.serviceConfig = {
# N.B.: the extra "" in ExecStart serves to force upstream ExecStart to be ignored
ExecStart = [ "" "${pkgs.modemmanager}/bin/ModemManager --debug" ];
# --debug sets DEBUG level logging: so reset
ExecStartPost = [ "${pkgs.modemmanager}/bin/mmcli --set-logging=INFO" ];
};
};
services.udev.extraRules = let
chmod = "${pkgs.coreutils}/bin/chmod";
chown = "${pkgs.coreutils}/bin/chown";
in ''
# make Pinephone flashlight writable by user.
# taken from postmarketOS: <repo:postmarketOS/pmaports:device/main/device-pine64-pinephone/60-flashlight.rules>
SUBSYSTEM=="leds", DEVPATH=="*/*:flash", RUN+="${chmod} g+w /sys%p/brightness /sys%p/flash_strobe", RUN+="${chown} :video /sys%p/brightness /sys%p/flash_strobe"
# make Pinephone front LEDs writable by user.
SUBSYSTEM=="leds", DEVPATH=="*/*:indicator", RUN+="${chmod} g+w /sys%p/brightness", RUN+="${chown} :video /sys%p/brightness"
'';
}

View File

@@ -0,0 +1,69 @@
# pinephone GPS happens in EG25 modem
# serial control interface to modem is /dev/ttyUSB2
# after enabling GPS, readout is /dev/ttyUSB1
#
# minimal process to enable modem and GPS:
# - `echo 1 > /sys/class/modem-power/modem-power/device/powered`
# - `screen /dev/ttyUSB2 115200`
# - `AT+QGPSCFG="nmeasrc",1`
# - `AT+QGPS=1`
# this process is automated by my `eg25-control` program and services (`eg25-control-powered`, `eg25-control-gps`)
# - see the `modules/` directory further up this repository.
#
# now, something like `gpsd` can directly read from /dev/ttyUSB1,
# or geoclue can query the GPS directly through modem-manager
#
# initial GPS fix can take 15+ minutes.
# meanwhile, services like eg25-manager or eg25-control-freshen-agps can speed this up by uploading assisted GPS data to the modem.
#
# support/help:
# - geoclue, gnome-maps
# - irc: #gnome-maps on irc.gimp.org
# - Matrix: #gnome-maps:gnome.org (unclear if bridged to IRC)
#
# programs to pair this with:
# - `satellite-gtk`: <https://codeberg.org/tpikonen/satellite>
# - shows/tracks which satellites the GPS is connected to; useful to understand fix characteristics
# - `gnome-maps`: uses geoclue, has route planning
# - `mepo`: uses gpsd, minimalist, flaky, and buttons are kinda hard to activate on mobile
# - puremaps?
# - osmin?
#
# known/outstanding bugs:
# - `systemctl start eg25-control-gps` can the hang the whole system (2023/10/06)
# - i think it's actually `eg25-control-powered` which does this (started by the gps)
# - best guess is modem draws so much power at launch that other parts of the system see undervoltage
# - workaround is to hard power-cycle the system. the modem may not bring up after reboot: leave unpowered for 60s and boot again.
#
# future work:
# - integrate with [wigle](https://www.wigle.net/) for offline equivalent to Mozilla Location Services
{ config, lib, ... }:
{
# test gpsd with `gpspipe -w -n 10 2> /dev/null | grep -m 1 TPV | jq '.lat, .lon' | tr '\n' ' '`
# ^ should return <lat> <long>
services.gpsd.enable = true;
services.gpsd.devices = [ "/dev/ttyUSB1" ];
# test geoclue2 by building `geoclue2-with-demo-agent`
# and running "${geoclue2-with-demo-agent}/libexec/geoclue-2.0/demos/where-am-i"
# note that geoclue is dbus-activated, and auto-stops after 60s with no caller
services.geoclue2.enable = true;
services.geoclue2.appConfig.where-am-i = {
# this is the default "agent", shipped by geoclue package: allow it to use location
isAllowed = true;
isSystem = false;
# XXX: setting users != [] might be causing `where-am-i` to time out
users = [
# restrict to only one set of users. empty array (default) means "allow any user to access geolocation".
(builtins.toString config.users.users.colin.uid)
];
};
systemd.services.geoclue.after = lib.mkForce []; #< defaults to network-online, but not all my sources require network
users.users.geoclue.extraGroups = [
"dialout" # TODO: figure out if dialout is required. that's for /dev/ttyUSB1, but geoclue probably doesn't read that?
];
sane.services.eg25-control.enable = true;
sane.programs.where-am-i.enableFor.user.colin = true;
}

View File

@@ -1,146 +1,71 @@
{ lib, pkgs, ... }:
{ pkgs, ... }:
let
# use the last commit on the 5.18 branch (5.18.14)
# manjaro's changes between kernel patch versions tend to be minimal if any.
manjaroBase = "https://gitlab.manjaro.org/manjaro-arm/packages/core/linux/-/raw/25bd828cd47b1c6e09fcbcf394a649b89d2876dd";
manjaroPatch = name: sha256: {
inherit name;
patch = pkgs.fetchpatch {
inherit name;
url = "${manjaroBase}/${name}?inline=false";
inherit sha256;
};
};
dmesg = "${pkgs.util-linux}/bin/dmesg";
grep = "${pkgs.gnugrep}/bin/grep";
modprobe = "${pkgs.kmod}/bin/modprobe";
ensureHWReady = ''
# common boot failure:
# blank screen (no backlight even), with the following log:
# ```syslog
# sun8i-dw-hdmi 1ee0000.hdmi: Couldn't get the HDMI PHY
# ...
# sun4i-drm display-engine: Couldn't bind all pipelines components
# ...
# sun8i-dw-hdmi: probe of 1ee0000.hdmi failed with error -17
# ```
#
# in particular, that `probe ... failed` occurs *only* on failed boots
# (the other messages might sometimes occur even on successful runs?)
#
# reloading the sun8i hdmi driver usually gets the screen on, showing boot text.
# then restarting display-manager.service gets us to the login.
#
# NB: the above log is default level. though less specific, there's a `err` level message that also signals this:
# sun4i-drm display-engine: failed to bind 1ee0000.hdmi (ops sun8i_dw_hdmi_ops [sun8i_drm_hdmi]): -17
# NB: this is the most common, but not the only, failure mode for `display-manager`.
# another error seems characterized by these dmesg logs, in which reprobing sun8i_drm_hdmi does not fix:
# ```syslog
# sun6i-mipi-dsi 1ca0000.dsi: Couldn't get the MIPI D-PHY
# sun4i-drm display-engine: Couldn't bind all pipelines components
# sun6i-mipi-dsi 1ca0000.dsi: Couldn't register our component
# ```
# the idea for patching off Manjaro's kernel comes from jakewaksbaum:
# - https://git.sr.ht/~jakewaksbaum/pi/tree/af20aae5653545d6e67a459b59ee3e1ca8a680b0/item/kernel/default.nix
# - he later abandoned this, i think because he's using the Pinephone Pro which received mainline support.
manjaroPatches = [
(manjaroPatch
"1001-arm64-dts-allwinner-add-hdmi-sound-to-pine-devices.patch"
"sha256-DApd791A+AxB28Ven/MVAyuyVphdo8KQDx8O7oxVPnc="
)
# these patches below are critical to enable wifi (RTL8723CS)
# - the alternative is a wholly forked kernel by megi/megous:
# - https://xnux.eu/howtos/build-pinephone-kernel.html#toc-how-to-build-megi-s-pinehpone-kernel
# - i don't know if these patches are based on megi's or original
(manjaroPatch
"2001-Bluetooth-Add-new-quirk-for-broken-local-ext-features.patch"
"sha256-CExhJuUWivegxPdnzKINEsKrMFx/m/1kOZFmlZ2SEOc="
)
(manjaroPatch
"2002-Bluetooth-btrtl-add-support-for-the-RTL8723CS.patch"
"sha256-dDdvOphTcP/Aog93HyH+L9m55laTgtjndPSE4/rnzUA="
)
(manjaroPatch
"2004-arm64-dts-allwinner-enable-bluetooth-pinetab-pinepho.patch"
"sha256-o43P3WzXyHK1PF+Kdter4asuyGAEKO6wf5ixcco2kCQ="
)
# XXX: this one has a Makefile, which hardcodes /sbin/depmod:
# - drivers/staging/rtl8723cs/Makefile
# - not sure if this is problematic?
(manjaroPatch
"2005-staging-add-rtl8723cs-driver.patch"
"sha256-6ywm3dQQ5JYl60CLKarxlSUukwi4QzqctCj3tVgzFbo="
)
];
# pinephone uses the linux dtb at arch/arm64/boot/dts/allwinner/sun50i-a64-pinephone.dtsi
# - this includes sun50i-a64.dtsi
# - and sun50i-a64-cpu-opp.dtsi
# - no need to touch the allwinner-h6 stuff: that's the SBC pine product
# - i think it's safe to ignore sun9i stuff, but i don't know what it is
kernelConfig = with lib.kernel; {
# NB: nix adds the CONFIG_ prefix to each of these.
# if you add the prefix yourself nix will IGNORE YOUR CONFIG.
RTL8723CS = module;
BT_HCIUART_3WIRE = yes;
BT_HCIUART_RTL = yes;
RTL8XXXU_UNTESTED = yes;
BT_BNEP_MC_FILTER = yes;
BT_BNEP_PROTO_FILTER = yes;
BT_HS = yes;
BT_LE = yes;
# relevant configs inherited from nixos defaults (or above additions):
# CONFIG_BT=m
# CONFIG_BT_BREDR=y
# CONFIG_BT_RFCOMM=m
# CONFIG_BT_RFCOMM_TTY=y
# CONFIG_BT_BNEP=m
# CONFIG_BT_HIDP=m
# CONFIG_BT_RTL=m
# CONFIG_BT_HCIBTUSB=m
# CONFIG_BT_HCIBTUSB_BCM=y
# CONFIG_BT_HCIBTUSB_RTL=y
# CONFIG_BT_HCIUART=m
# CONFIG_BT_HCIUART_SERDEV=y
# CONFIG_BT_HCIUART_H4=y
# CONFIG_BT_HCIUART_LL=y
# CONFIG_RTL_CARDS=m
# CONFIG_RTLWIFI=m
# CONFIG_RTLWIFI_PCI=m
# CONFIG_RTLWIFI_USB=m
# CONFIG_RTLWIFI_DEBUG=y
# CONFIG_RTL8723_COMMON=m
# CONFIG_RTLBTCOEXIST=m
# CONFIG_RTL8XXXU=m
# CONFIG_RTLLIB=m
# consider adding (from mobile-nixos):
# maybe: CONFIG_BT_HCIUART_3WIRE=y
# maybe: CONFIG_BT_HCIUART_RTL=y
# maybe: CONFIG_RTL8XXXU_UNTESTED=y
# consider adding (from manjaro):
# CONFIG_BT_6LOWPAN=m (not listed as option in nixos kernel)
# these are referenced in the rtl8723 source, but not known to config (and not in mobile-nixos config
# maybe: CONFIG_RTL_ODM_WLAN_DRIVER
# maybe: CONFIG_RTL_TRIBAND_SUPPORT
# maybe: CONFIG_SDIO_HCI
# maybe: CONFIG_USB_HCI
};
# create a kernelPatch which overrides nixos' defconfig with extra options
patchDefconfig = config: {
# defconfig options. this method comes from here:
# - https://discourse.nixos.org/t/the-correct-way-to-override-the-latest-kernel-config/533/9
name = "sane-moby-defconfig";
patch = null;
extraStructuredConfig = config;
};
if (${dmesg} --kernel --level err --color=never --notime | ${grep} -q 'sun4i-drm display-engine: failed to bind 1ee0000.hdmi')
then
echo "reprobing sun8i_drm_hdmi"
# if a command here fails it errors the whole service, so prefer to log instead
${modprobe} -r sun8i_drm_hdmi || echo "failed to unload sun8i_drm_hdmi"
${modprobe} sun8i_drm_hdmi || echo "failed to load sub8i_drm_hdmi"
fi
'';
in
{
# use Megi's kernel:
# even with the Manjaro patches, stock 5.18 has a few issues on Pinephone:
# - no battery charging
# - phone rotation sensor is off by 90 degrees
# - ambient light sensor causes screen brightness to be shakey
# - phosh greeter may not appear after wake from sleep
boot.kernelPackages = pkgs.cross.linuxPackagesFor pkgs.cross.linux-megous;
boot.kernelPatches = [
(patchDefconfig (kernelConfig //
(with lib.kernel; {
# disabling the sun5i_eink driver avoids this compilation error:
# CC [M] drivers/video/fbdev/sun5i-eink-neon.o
# aarch64-unknown-linux-gnu-gcc: error: unrecognized command line option '-mfloat-abi=softfp'
# aarch64-unknown-linux-gnu-gcc: error: unrecognized command line option '-mfpu=neon'
# make[3]: *** [../scripts/Makefile.build:289: drivers/video/fbdev/sun5i-eink-neon.o] Error 1
FB_SUN5I_EINK = no;
# used by the pinephone pro, but fails to compile with:
# ../drivers/media/i2c/ov8858.c:1834:27: error: implicit declaration of function 'compat_ptr'
VIDEO_OV8858 = no;
})
))
];
# alternatively, use nixos' kernel and add the stuff we want:
# # cross-compilation optimization:
# boot.kernelPackages =
# let p = (import nixpkgs { localSystem = "x86_64-linux"; });
# in p.pkgsCross.aarch64-multiplatform.linuxPackages_5_18;
# # non-cross:
# # boot.kernelPackages = pkgs.linuxPackages_5_18;
boot.kernelPackages = pkgs.linuxPackagesFor pkgs.linux-megous;
# boot.kernelPackages = pkgs.linuxPackagesFor pkgs.linux-manjaro;
# boot.kernelPackages = pkgs.linuxPackagesFor pkgs.linux_latest;
# alternatively, apply patches directly to stock nixos kernel:
# boot.kernelPatches = manjaroPatches ++ [
# (patchDefconfig kernelConfig)
# ];
# configure nixos to build a compressed kernel image, since it doesn't usually do that for aarch64 target.
# without this i run out of /boot space in < 10 generations
nixpkgs.hostPlatform.linux-kernel = {
# defaults:
name = "aarch64-multiplatform";
baseConfig = "defconfig";
DTB = true;
autoModules = true;
preferBuiltin = true;
# extraConfig = ...
# ^-- raspberry pi stuff: we don't need it.
# target = "Image"; # <-- default
target = "Image.gz"; # <-- compress the kernel image
# target = "zImage"; # <-- confuses other parts of nixos :-(
};
services.xserver.displayManager.job.preStart = ensureHWReady;
systemd.services.greetd.preStart = ensureHWReady;
}

View File

@@ -0,0 +1,168 @@
# this file configures preferences per program, without actually enabling any programs.
# the goal is to separate the place where we decide *what* to use (i.e. `sane.programs.firefox.enable = true` -- at the toplevel)
# from where we specific how that thing should behave *if* it's in use.
#
# NixOS backgrounds:
# - <https://github.com/NixOS/nixos-artwork>
# - <https://github.com/NixOS/nixos-artwork/issues/50> (colorful; unmerged)
# - <https://github.com/NixOS/nixos-artwork/pull/60/files> (desktop-oriented; clean; unmerged)
# - <https://itsfoss.com/content/images/2023/04/nixos-tutorials.png>
{ lib, pkgs, sane-lib, ... }:
{
sane.programs.firefox.config = {
# compromise impermanence for the sake of usability
persistCache = "private";
persistData = "private";
# i don't do crypto stuff on moby
addons.ether-metamask.enable = false;
# sidebery UX doesn't make sense on small screen
addons.sidebery.enable = false;
};
sane.programs.swaynotificationcenter.config = {
backlight = "backlight"; # /sys/class/backlight/*backlight*/brightness
};
sane.gui.sxmo = {
nogesture = true;
settings = {
### hardware: touch screen
SXMO_LISGD_INPUT_DEVICE = "/dev/input/by-path/platform-1c2ac00.i2c-event";
# vol and power are detected correctly by upstream
### preferences
# notable bemenu options:
# - see `bemenu --help` for all
# -P, --prefix text to show before highlighted item.
# --scrollbar display scrollbar. (none (default), always, autohide)
# -H, --line-height defines the height to make each menu line (0 = default height). (wx)
# -M, --margin defines the empty space on either side of the menu. (wx)
# -W, --width-factor defines the relative width factor of the menu (from 0 to 1). (wx)
# -B, --border defines the width of the border in pixels around the menu. (wx)
# -R --border-radius defines the radius of the border around the menu (0 = no curved borders).
# --ch defines the height of the cursor (0 = scales with line height). (wx)
# --cw defines the width of the cursor. (wx)
# --hp defines the horizontal padding for the entries in single line mode. (wx)
# --fn defines the font to be used ('name [size]'). (wx)
# --tb defines the title background color. (wx)
# --tf defines the title foreground color. (wx)
# --fb defines the filter background color. (wx)
# --ff defines the filter foreground color. (wx)
# --nb defines the normal background color. (wx)
# --nf defines the normal foreground color. (wx)
# --hb defines the highlighted background color. (wx)
# --hf defines the highlighted foreground color. (wx)
# --fbb defines the feedback background color. (wx)
# --fbf defines the feedback foreground color. (wx)
# --sb defines the selected background color. (wx)
# --sf defines the selected foreground color. (wx)
# --ab defines the alternating background color. (wx)
# --af defines the alternating foreground color. (wx)
# --scb defines the scrollbar background color. (wx)
# --scf defines the scrollbar foreground color. (wx)
# --bdr defines the border color. (wx)
#
# colors are specified as `#RRGGBB`
# defaults:
# --ab "#222222"
# --af "#bbbbbb"
# --bdr "#005577"
# --border 3
# --cb "#222222"
# --center
# --cf "#bbbbbb"
# --fb "#222222"
# --fbb "#eeeeee"
# --fbf "#222222"
# --ff "#bbbbbb"
# --fixed-height
# --fn 'Sxmo 14'
# --hb "#005577"
# --hf "#eeeeee"
# --line-height 20
# --list 16
# --margin 40
# --nb "#222222"
# --nf "#bbbbbb"
# --no-overlap
# --no-spacing
# --sb "#323232"
# --scb "#005577"
# --scf "#eeeeee"
# --scrollbar autohide
# --tb "#005577"
# --tf "#eeeeee"
# --wrap
BEMENU_OPTS = let
bg = "#1d1721"; # slight purple
fg0 = "#d8d8d8"; # inactive text (light grey)
fg1 = "#ffffff"; # active text (white)
accent0 = "#1f5e54"; # darker but saturated teal
accent1 = "#418379"; # teal (matches nixos-bg)
accent2 = "#5b938a"; # brighter but muted teal
in lib.concatStringsSep " " [
"--wrap --scrollbar autohide --fixed-height"
"--center --margin 45"
"--no-spacing"
# XXX: font size doesn't seem to take effect (would prefer larger)
"--fn 'monospace 14' --line-height 22 --border 3"
"--bdr '${accent0}'" # border
"--scf '${accent2}' --scb '${accent0}'" # scrollbar
"--tb '${accent0}' --tf '${fg0}'" # title
"--fb '${accent0}' --ff '${fg1}'" # filter (i.e. text that's been entered)
"--hb '${accent1}' --hf '${fg1}'" # selected item
"--nb '${bg}' --nf '${fg0}'" # normal lines (even)
"--ab '${bg}' --af '${fg0}'" # alternated lines (odd)
"--cf '${accent0}' --cb '${accent0}'" # cursor (not very useful)
];
DEFAULT_COUNTRY = "US";
SXMO_AUTOROTATE = "1"; # enable auto-rotation at launch. has no meaning in stock/upstream sxmo-utils
# BEMENU lines (wayland DMENU):
# - camera is 9th entry
# - flashlight is 10th entry
# - config is 14th entry. inside that:
# - autorotate is 11th entry
# - system menu is 19th entry
# - close is 20th entry
# - power is 15th entry
# - close is 16th entry
SXMO_BEMENU_LANDSCAPE_LINES = "11"; # default 8
SXMO_BEMENU_PORTRAIT_LINES = "16"; # default 16
SXMO_LOCK_IDLE_TIME = "15"; # how long between screenoff -> lock -> back to screenoff (default: 8)
# gravity: how far to tilt the device before the screen rotates
# for a given setting, normal <-> invert requires more movement then left <-> right
# i.e. the settingd doesn't feel completely symmetric
# SXMO_ROTATION_GRAVITY default is 16374
# SXMO_ROTATION_GRAVITY = "12800"; # uncomfortably high
# SXMO_ROTATION_GRAVITY = "12500"; # kinda uncomfortable when walking
SXMO_ROTATION_GRAVITY = "12000";
SXMO_SCREENSHOT_DIR = "/home/colin/Pictures"; # default: "$HOME"
# test new scales by running `swaymsg -- output DSI-1 scale x.y`
# SXMO_SWAY_SCALE = "1.5"; # hard to press gPodder icons
SXMO_SWAY_SCALE = "1.8";
# SXMO_SWAY_SCALE = "2";
SXMO_WORKSPACE_WRAPPING = "5"; # how many workspaces. default: 4
# wvkbd layers:
# - full
# - landscape
# - special (e.g. coding symbols like ~)
# - emoji
# - nav
# - simple (like landscape, but no parens/tab/etc; even fewer chars)
# - simplegrid (simple, but grid layout)
# - dialer (digits)
# - cyrillic
# - arabic
# - persian
# - greek
# - georgian
WVKBD_LANDSCAPE_LAYERS = "landscape,special,emoji";
WVKBD_LAYERS = "full,special,emoji";
};
};
}

View File

@@ -1,4 +1,4 @@
{ config, pkgs, ... }:
{ pkgs, ... }:
{
imports = [
./fs.nix
@@ -7,6 +7,8 @@
boot.loader.generic-extlinux-compatible.enable = true;
boot.loader.efi.canTouchEfiVariables = false;
sane.image.extraBootFiles = [ pkgs.bootpart-uefi-x86_64 ];
# sane.persist.enable = false; # TODO: disable (but run `nix flake check` to ensure it works!)
sane.nixcache.enable = false; # don't want to be calling out to dead machines that we're *trying* to rescue
# docs: https://nixos.org/manual/nixos/stable/options.html#opt-system.stateVersion
system.stateVersion = "21.05";

View File

@@ -4,7 +4,6 @@
imports = [
./fs.nix
./net.nix
./secrets.nix
./services
];
@@ -15,10 +14,22 @@
signaldctl.enableFor.user.colin = true;
};
sane.persist.enable = true;
sane.roles.ac = true;
sane.roles.build-machine.enable = true;
sane.roles.build-machine.emulation = false;
sane.zsh.showDeadlines = false; # ~/knowledge doesn't always exist
sane.programs.consoleUtils.suggestedPrograms = [
"desktopConsoleUtils"
"sane-scripts.stop-all-servo"
];
sane.services.dyn-dns.enable = true;
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.nixcache.substituters.servo = false;
sane.nixcache.substituters.desko = false;
# sane.services.duplicity.enable = true; # TODO: re-enable after HW upgrade
# automatically log in at the virtual consoles.

View File

@@ -2,15 +2,9 @@
{
sane.persist.root-on-tmpfs = true;
# we need a /tmp for building large nix things
fileSystems."/tmp" = {
device = "none";
fsType = "tmpfs";
options = [
"mode=777"
"defaults"
];
};
# increase /tmp space (defaults to 50% of RAM) for building large nix things.
# even the stock `nixpkgs.linux` consumes > 16 GB of tmp
fileSystems."/tmp".options = [ "size=32G" ];
fileSystems."/nix" = {
device = "/dev/disk/by-uuid/cc81cca0-3cc7-4d82-a00c-6243af3e7776";
@@ -44,29 +38,58 @@
sane.persist.sys.plaintext = [
# TODO: this is overly broad; only need media and share directories to be persisted
{ user = "colin"; group = "users"; directory = "/var/lib/uninsane"; }
{ user = "colin"; group = "users"; path = "/var/lib/uninsane"; }
];
# force some problematic directories to always get correct permissions:
sane.fs."/var/lib/uninsane/media".dir.acl = {
user = "colin"; group = "media"; mode = "0775";
};
sane.fs."/var/lib/uninsane/media/archive".dir = {};
sane.fs."/var/lib/uninsane/media/archive/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.
'';
sane.fs."/var/lib/uninsane/media/Books".dir = {};
sane.fs."/var/lib/uninsane/media/Books/Audiobooks".dir = {};
sane.fs."/var/lib/uninsane/media/Books/Books".dir = {};
sane.fs."/var/lib/uninsane/media/Books/Visual".dir = {};
sane.fs."/var/lib/uninsane/media/collections".dir = {};
sane.fs."/var/lib/uninsane/media/datasets".dir = {};
sane.fs."/var/lib/uninsane/media/freeleech".dir = {};
sane.fs."/var/lib/uninsane/media/Music".dir = {};
sane.fs."/var/lib/uninsane/media/Pictures".dir = {};
sane.fs."/var/lib/uninsane/media/Videos".dir = {};
sane.fs."/var/lib/uninsane/media/Videos/Film".dir = {};
sane.fs."/var/lib/uninsane/media/Videos/Shows".dir = {};
sane.fs."/var/lib/uninsane/media/Videos/Talks".dir = {};
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.
'';
# make sure large media is stored to the HDD
sane.persist.sys.ext = [
{
user = "colin";
group = "users";
mode = "0777";
directory = "/var/lib/uninsane/media/Videos";
path = "/var/lib/uninsane/media/Videos";
}
{
user = "colin";
group = "users";
mode = "0777";
directory = "/var/lib/uninsane/media/freeleech";
path = "/var/lib/uninsane/media/freeleech";
}
{
user = "colin";
group = "users";
mode = "0777";
path = "/var/lib/uninsane/media/datasets";
}
];
# in-memory compressed RAM (seems to be dynamically sized)
# zramSwap = {
# enable = true;
# };
# btrfs doesn't easily support swapfiles
# swapDevices = [
# { device = "/nix/persist/swapfile"; size = 4096; }

View File

@@ -3,6 +3,12 @@
{
networking.domain = "uninsane.org";
sane.ports.openFirewall = true;
sane.ports.openUpnp = true;
# view refused packets with: `sudo journalctl -k`
# networking.firewall.logRefusedPackets = true;
# The global useDHCP flag is deprecated, therefore explicitly set to false here.
# Per-interface useDHCP will be mandatory in the future, so this generated config
# replicates the default behaviour.
@@ -11,9 +17,6 @@
# XXX colin: probably don't need this. wlan0 won't be populated unless i touch a value in networking.interfaces.wlan0
networking.wireless.enable = false;
# networking.firewall.enable = false;
networking.firewall.enable = true;
# this is needed to forward packets from the VPN to the host
boot.kernel.sysctl."net.ipv4.ip_forward" = 1;
@@ -33,6 +36,14 @@
# - getent ahostsv4 www.google.com
# - try fix: <https://serverfault.com/questions/765989/connect-to-3rd-party-vpn-server-but-dont-use-it-as-the-default-route/766290#766290>
services.resolved.enable = true;
# 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
@@ -145,9 +156,9 @@
# we also bridge DNS traffic
${in-ns} ${iptables} -A PREROUTING -t nat -p udp --dport 53 -m iprange --dst-range ${vpn-ip} \
-j DNAT --to-destination ${veth-host-ip}:53
-j DNAT --to-destination ${veth-host-ip}
${in-ns} ${iptables} -A PREROUTING -t nat -p tcp --dport 53 -m iprange --dst-range ${vpn-ip} \
-j DNAT --to-destination ${veth-host-ip}:53
-j DNAT --to-destination ${veth-host-ip}
# in order to access DNS in this netns, we need to route it to the VPN's nameservers
# - alternatively, we could fix DNS servers like 1.1.1.1.

View File

@@ -1,41 +0,0 @@
{ ... }:
{
sops.secrets."ddns_afraid" = {
sopsFile = ../../../secrets/servo.yaml;
};
sops.secrets."ddns_he" = {
sopsFile = ../../../secrets/servo.yaml;
};
sops.secrets."dovecot_passwd" = {
sopsFile = ../../../secrets/servo.yaml;
};
sops.secrets."duplicity_passphrase" = {
sopsFile = ../../../secrets/servo.yaml;
};
sops.secrets."freshrss_passwd" = {
sopsFile = ../../../secrets/servo.yaml;
};
sops.secrets."matrix_synapse_secrets" = {
sopsFile = ../../../secrets/servo.yaml;
};
sops.secrets."mautrix_signal_env" = {
sopsFile = ../../../secrets/servo/mautrix_signal_env.bin;
};
sops.secrets."mediawiki_pw" = {
sopsFile = ../../../secrets/servo.yaml;
};
sops.secrets."pleroma_secrets" = {
sopsFile = ../../../secrets/servo.yaml;
};
sops.secrets."wg_ovpns_privkey" = {
sopsFile = ../../../secrets/servo.yaml;
};
}

View File

@@ -0,0 +1,34 @@
{ config, lib, ... }:
let
cweb-cfg = config.services.calibre-web;
inherit (cweb-cfg) user group;
inherit (cweb-cfg.listen) ip port;
svc-dir = "/var/lib/${cweb-cfg.dataDir}";
in
# XXX: disabled because of runtime errors like:
# > File "/nix/store/c7jqvx980nlg9xhxi065cba61r2ain9y-calibre-web-0.6.19/lib/python3.10/site-packages/calibreweb/cps/db.py", line 926, in speaking_language
# > languages = self.session.query(Languages) \
# > AttributeError: 'NoneType' object has no attribute 'query'
lib.mkIf false
{
sane.persist.sys.plaintext = [
{ inherit user group; mode = "0700"; path = svc-dir; }
];
services.calibre-web.enable = true;
services.calibre-web.listen.ip = "127.0.0.1";
# XXX: externally populate `${svc-dir}/metadata.db` (once) from
# <https://github.com/janeczku/calibre-web/blob/master/library/metadata.db>
# i don't know why you have to do this??
# services.calibre-web.options.calibreLibrary = svc-dir;
services.nginx.virtualHosts."calibre.uninsane.org" = {
addSSL = true;
enableACME = true;
locations."/" = {
proxyPass = "http://${ip}:${builtins.toString port}";
};
};
sane.dns.zones."uninsane.org".inet.CNAME."calibre" = "native";
}

View File

@@ -6,7 +6,7 @@ lib.mkIf false
systemd.services.ddns-afraid = {
description = "update dynamic DNS entries for freedns.afraid.org";
serviceConfig = {
EnvironmentFile = config.sops.secrets.ddns_afraid.path;
EnvironmentFile = config.sops.secrets."ddns_afraid.env".path;
# TODO: ProtectSystem = "strict";
# TODO: ProtectHome = "full";
# TODO: PrivateTmp = true;

View File

@@ -6,7 +6,7 @@ lib.mkIf false
systemd.services.ddns-he = {
description = "update dynamic DNS entries for HurricaneElectric";
serviceConfig = {
EnvironmentFile = config.sops.secrets.ddns_he.path;
EnvironmentFile = config.sops.secrets."ddns_he.env".path;
# TODO: ProtectSystem = "strict";
# TODO: ProtectHome = "full";
# TODO: PrivateTmp = true;

View File

@@ -1,22 +1,28 @@
{ ... }:
{
imports = [
./calibre.nix
./ddns-afraid.nix
./ddns-he.nix
./email
./ejabberd.nix
./freshrss.nix
./export
./gitea.nix
./goaccess.nix
./ipfs.nix
./jackett.nix
./jellyfin.nix
./kiwix-serve.nix
./komga.nix
./lemmy.nix
./matrix
./navidrome.nix
./nixserve.nix
./nginx.nix
./nixserve.nix
./ntfy.nix
./pict-rs.nix
./pleroma.nix
./postfix.nix
./postgres.nix
./prosody.nix
./transmission.nix

View File

@@ -14,36 +14,105 @@
#
# compliance tests:
# - <https://compliance.conversations.im/server/uninsane.org/#xep0352>
#
# administration:
# - `sudo -u ejabberd ejabberdctl help`
#
# federation/support matrix:
# - avatars
# - nixnet.services + dino: works in MUCs but not DMs (as of 2023 H1)
# - movim.eu + dino: works in DMs, MUCs untested (as of 2023/08/29)
# - calls
# - local + dino: audio, video, works in DMs (as of 2023/08/29)
# - movim.eu + dino: audio, video, works in DMs, no matter which side initiates (as of 2023/08/30)
# - +native-cell-number@cheogram.com + dino: audio works in DMs, no matter which side initiates (as of 2023/09/01)
# - can receive calls even if sender isn't in my roster
# - this is presumably using JMP.chat's SIP servers, which then convert it to XMPP call
#
# bugs:
# - 2023/09/01: will randomly stop federating. `systemctl restart ejabberd` fixes, but takes 10 minutes.
{ config, lib, pkgs, ... }:
# XXX: avatar support works in MUCs but not DMs
# lib.mkIf false
let
# TODO: this range could be larger, but right now that's costly because each element is its own UPnP forward
# TURN port range (inclusive)
turnPortLow = 49152;
turnPortHigh = 49167;
turnPortRange = lib.range turnPortLow turnPortHigh;
in
{
sane.persist.sys.plaintext = [
{ user = "ejabberd"; group = "ejabberd"; directory = "/var/lib/ejabberd"; }
{ user = "ejabberd"; group = "ejabberd"; path = "/var/lib/ejabberd"; }
];
networking.firewall.allowedTCPPorts = [
3478 # STUN/TURN
5222 # XMPP client -> server
5223 # XMPPS client -> server (XMPP over TLS)
5269 # XMPP server -> server
5270 # XMPPS server -> server (XMPP over TLS)
5280 # bosh
5281 # bosh (https) ??
5349 # STUN/TURN (TLS)
5443 # web services (file uploads, websockets, admin)
];
networking.firewall.allowedUDPPorts = [
3478 # STUN/TURN
];
networking.firewall.allowedTCPPortRanges = [{
from = 49152; # TURN
to = 65535;
}];
networking.firewall.allowedUDPPortRanges = [{
from = 49152; # TURN
to = 65535;
}];
sane.ports.ports = lib.mkMerge ([
{
"3478" = {
protocol = [ "tcp" "udp" ];
visibleTo.lan = true;
visibleTo.wan = true;
description = "colin-xmpp-stun-turn";
};
"5222" = {
protocol = [ "tcp" ];
visibleTo.lan = true;
visibleTo.wan = true;
description = "colin-xmpp-client-to-server";
};
"5223" = {
protocol = [ "tcp" ];
visibleTo.lan = true;
visibleTo.wan = true;
description = "colin-xmpps-client-to-server"; # XMPP over TLS
};
"5269" = {
protocol = [ "tcp" ];
visibleTo.wan = true;
description = "colin-xmpp-server-to-server";
};
"5270" = {
protocol = [ "tcp" ];
visibleTo.wan = true;
description = "colin-xmpps-server-to-server"; # XMPP over TLS
};
"5280" = {
protocol = [ "tcp" ];
visibleTo.lan = true;
visibleTo.wan = true;
description = "colin-xmpp-bosh";
};
"5281" = {
protocol = [ "tcp" ];
visibleTo.lan = true;
visibleTo.wan = true;
description = "colin-xmpp-bosh-https";
};
"5349" = {
protocol = [ "tcp" ];
visibleTo.lan = true;
visibleTo.wan = true;
description = "colin-xmpp-stun-turn-over-tls";
};
"5443" = {
protocol = [ "tcp" ];
visibleTo.lan = true;
visibleTo.wan = true;
description = "colin-xmpp-web-services"; # file uploads, websockets, admin
};
}
] ++ (builtins.map
(port: {
"${builtins.toString port}" = let
count = port - turnPortLow + 1;
numPorts = turnPortHigh - turnPortLow + 1;
in {
protocol = [ "tcp" "udp" ];
visibleTo.lan = true;
visibleTo.wan = true;
description = "colin-xmpp-turn-${builtins.toString count}-of-${builtins.toString numPorts}";
};
})
turnPortRange
));
# provide access to certs
# TODO: this should just be `acme`. then we also add nginx to the `acme` group.
@@ -75,9 +144,9 @@
useACMEHost = "uninsane.org";
};
sane.services.trust-dns.zones."uninsane.org".inet = {
sane.dns.zones."uninsane.org".inet = {
# XXX: SRV records have to point to something with a A/AAAA record; no CNAMEs
A."xmpp" = "%NATIVE%";
A."xmpp" = "%ANATIVE%";
CNAME."muc.xmpp" = "xmpp";
CNAME."pubsub.xmpp" = "xmpp";
CNAME."upload.xmpp" = "xmpp";
@@ -110,284 +179,285 @@
services.ejabberd.enable = true;
services.ejabberd.configFile = "/var/lib/ejabberd/ejabberd.yaml";
systemd.services.ejabberd.preStart = let
config-in = pkgs.writeTextFile {
name = "ejabberd.yaml.in";
text = ''
hosts:
- uninsane.org
config-in = pkgs.writeText "ejabberd.yaml.in" (lib.generators.toYAML {} {
hosts = [ "uninsane.org" ];
# none | emergency | alert | critical | error | warning | notice | info | debug
loglevel = "debug";
acme.auto = false;
certfiles = [ "/var/lib/acme/uninsane.org/full.pem" ];
# ca_file = "${pkgs.cacert.unbundled}/etc/ssl/certs/";
# ca_file = "${pkgs.cacert}/etc/ssl/certs/ca-bundle.crt";
# none | emergency | alert | critical | error | warning | notice | info | debug
loglevel: debug
# loglevel: info
# loglevel: notice
pam_userinfotype = "jid";
acl = {
admin.user = [ "colin@uninsane.org" ];
local.user_regexp = "";
loopback.ip = [ "127.0.0.0/8" "::1/128" ];
};
acme:
auto: false
certfiles:
- /var/lib/acme/uninsane.org/full.pem
# ca_file: ${pkgs.cacert.unbundled}/etc/ssl/certs/
# ca_file: ${pkgs.cacert}/etc/ssl/certs/ca-bundle.crt
access_rules = {
local.allow = "local";
c2s_access.allow = "all";
announce.allow = "admin";
configure.allow = "admin";
muc_create.allow = "local";
pubsub_createnode_access.allow = "all";
trusted_network.allow = "loopback";
};
pam_userinfotype: jid
# docs: <https://docs.ejabberd.im/admin/configuration/basic/#shaper-rules>
shaper_rules = {
# setting this to above 1 may break outgoing messages
# - maybe some servers rate limit? or just don't understand simultaneous connections?
max_s2s_connections = 1;
max_user_sessions = 10;
max_user_offline_messages = 5000;
c2s_shaper.fast = "all";
s2s_shaper.med = "all";
};
acl:
admin:
user:
- "colin@uninsane.org"
local:
user_regexp: ""
loopback:
ip:
- 127.0.0.0/8
- ::1/128
# docs: <https://docs.ejabberd.im/admin/configuration/basic/#shapers>
# this limits the bytes/sec.
# for example, burst: 3_000_000 and rate: 100_000 means:
# - each client has a BW budget that accumulates 100kB/sec and is capped at 3 MB
shaper.fast = 1000000;
shaper.med = 500000;
# shaper.fast.rate = 1000000;
# shaper.fast.burst_size = 10000000;
# shaper.med.rate = 500000;
# shaper.med.burst_size = 5000000;
access_rules:
local:
allow: local
c2s_access:
allow: all
announce:
allow: admin
configure:
allow: admin
muc_create:
allow: local
pubsub_createnode_access:
allow: all
trusted_network:
allow: loopback
# see: <https://docs.ejabberd.im/admin/configuration/listen/>
# s2s_use_starttls = true;
s2s_use_starttls = "optional";
# lessens 504: remote-server-timeout errors
# see: <https://github.com/processone/ejabberd/issues/3105#issuecomment-562182967>
negotiation_timeout = 60;
# docs: <https://docs.ejabberd.im/admin/configuration/basic/#shaper-rules>
shaper_rules:
# setting this to above 1 may break outgoing messages
# - maybe some servers rate limit? or just don't understand simultaneous connections?
max_s2s_connections: 1
max_user_sessions: 10
max_user_offline_messages: 5000
c2s_shaper:
fast: all
s2s_shaper:
med: all
listen = [
{
port = 5222;
module = "ejabberd_c2s";
shaper = "c2s_shaper";
starttls = true;
access = "c2s_access";
}
{
port = 5223;
module = "ejabberd_c2s";
shaper = "c2s_shaper";
tls = true;
access = "c2s_access";
}
{
port = 5269;
module = "ejabberd_s2s_in";
shaper = "s2s_shaper";
}
{
port = 5270;
module = "ejabberd_s2s_in";
shaper = "s2s_shaper";
tls = true;
}
{
port = 5443;
module = "ejabberd_http";
tls = true;
request_handlers = {
"/admin" = "ejabberd_web_admin"; # TODO: ensure this actually works
"/api" = "mod_http_api"; # ejabberd API endpoint (to control server)
"/bosh" = "mod_bosh";
"/upload" = "mod_http_upload";
"/ws" = "ejabberd_http_ws";
# "/.well-known/host-meta" = "mod_host_meta";
# "/.well-known/host-meta.json" = "mod_host_meta";
};
}
{
# STUN+TURN TCP
# note that the full port range should be forwarded ("not NAT'd")
# `use_turn=true` enables both TURN *and* STUN
port = 3478;
module = "ejabberd_stun";
transport = "tcp";
use_turn = true;
turn_min_port = turnPortLow;
turn_max_port = turnPortHigh;
turn_ipv4_address = "%ANATIVE%";
}
{
# STUN+TURN UDP
port = 3478;
module = "ejabberd_stun";
transport = "udp";
use_turn = true;
turn_min_port = turnPortLow;
turn_max_port = turnPortHigh;
turn_ipv4_address = "%ANATIVE%";
}
{
# STUN+TURN TLS over TCP
port = 5349;
module = "ejabberd_stun";
transport = "tcp";
tls = true;
certfile = "/var/lib/acme/uninsane.org/full.pem";
use_turn = true;
turn_min_port = turnPortLow;
turn_max_port = turnPortHigh;
turn_ipv4_address = "%ANATIVE%";
}
];
# docs: <https://docs.ejabberd.im/admin/configuration/basic/#shapers>
# this limits the bytes/sec.
# for example, burst: 3_000_000 and rate: 100_000 means:
# - each client has a BW budget that accumulates 100kB/sec and is capped at 3 MB
shaper:
fast: 1000000
med: 500000
# fast:
# - rate: 1000000
# - burst_size: 10000000
# med:
# - rate: 500000
# - burst_size: 5000000
# TODO: enable mod_fail2ban
# TODO(low): look into mod_http_fileserver for serving macros?
modules = {
# mod_adhoc = {};
# mod_announce = {
# access = "admin";
# };
# allows users to set avatars in vCard
# - <https://docs.ejabberd.im/admin/configuration/modules/#mod-avatar>
mod_avatar = {};
mod_caps = {}; # for mod_pubsub
mod_carboncopy = {}; # allows multiple clients to receive a user's message
# queues messages when recipient is offline, including PEP and presence messages.
# compliance test suggests this be enabled
mod_client_state = {};
# see: <https://docs.ejabberd.im/admin/configuration/listen/>
# s2s_use_starttls: true
s2s_use_starttls: optional
# lessens 504: remote-server-timeout errors
# see: <https://github.com/processone/ejabberd/issues/3105#issuecomment-562182967>
negotiation_timeout: 60
listen:
-
port: 5222
module: ejabberd_c2s
shaper: c2s_shaper
starttls: true
access: c2s_access
-
port: 5223
module: ejabberd_c2s
shaper: c2s_shaper
tls: true
access: c2s_access
-
port: 5269
module: ejabberd_s2s_in
shaper: s2s_shaper
-
port: 5270
module: ejabberd_s2s_in
shaper: s2s_shaper
tls: true
-
port: 5443
module: ejabberd_http
tls: true
request_handlers:
/admin: ejabberd_web_admin # TODO: ensure this actually works
/api: mod_http_api # ejabberd API endpoint (to control server)
/bosh: mod_bosh
/upload: mod_http_upload
/ws: ejabberd_http_ws
# /.well-known/host-meta: mod_host_meta
# /.well-known/host-meta.json: mod_host_meta
-
# STUN+TURN TCP
# note that the full port range should be forwarded ("not NAT'd")
# `use_turn=true` enables both TURN *and* STUN
port: 3478
module: ejabberd_stun
transport: tcp
use_turn: true
turn_min_port: 49152
turn_max_port: 65535
turn_ipv4_address: %NATIVE%
-
# STUN+TURN UDP
port: 3478
module: ejabberd_stun
transport: udp
use_turn: true
turn_min_port: 49152
turn_max_port: 65535
turn_ipv4_address: %NATIVE%
-
# STUN+TURN TLS over TCP
port: 5349
module: ejabberd_stun
transport: tcp
tls: true
certfile: /var/lib/acme/uninsane.org/full.pem
use_turn: true
turn_min_port: 49152
turn_max_port: 65535
turn_ipv4_address: %NATIVE%
# TODO: enable mod_fail2ban
# TODO(low): look into mod_http_fileserver for serving macros?
modules:
# mod_adhoc: {}
# mod_announce:
# access: admin
# allows users to set avatars in vCard
# - <https://docs.ejabberd.im/admin/configuration/modules/#mod-avatar>
mod_avatar: {}
mod_caps: {} # for mod_pubsub
mod_carboncopy: {} # allows multiple clients to receive a user's message
# queues messages when recipient is offline, including PEP and presence messages.
# compliance test suggests this be enabled
mod_client_state: {}
# mod_conversejs: TODO: enable once on 21.12
# allows clients like Dino to discover where to upload files
mod_disco:
server_info:
-
modules: all
name: abuse-addresses
urls:
- "mailto:admin.xmpp@uninsane.org"
- "xmpp:colin@uninsane.org"
-
modules: all
name: admin-addresses
urls:
- "mailto:admin.xmpp@uninsane.org"
- "xmpp:colin@uninsane.org"
mod_http_upload:
host: upload.xmpp.uninsane.org
hosts:
- upload.xmpp.uninsane.org
put_url: "https://@HOST@:5443/upload"
dir_mode: "0750"
file_mode: "0750"
rm_on_unregister: false
# allow discoverability of BOSH and websocket endpoints
# TODO: enable once on ejabberd 22.05 (presently 21.04)
# mod_host_meta: {}
mod_jidprep: {} # probably not needed: lets clients normalize jids
mod_last: {} # allow other users to know when i was last online
mod_mam:
# Mnesia is limited to 2GB, better to use an SQL backend
# For small servers SQLite is a good fit and is very easy
# to configure. Uncomment this when you have SQL configured:
# db_type: sql
assume_mam_usage: true
default: always
mod_muc:
access:
- allow
access_admin:
- allow: admin
access_create: muc_create
access_persistent: muc_create
access_mam:
- allow
history_size: 100 # messages to show new participants
host: muc.xmpp.uninsane.org
hosts:
- muc.xmpp.uninsane.org
default_room_options:
anonymous: false
lang: en
persistent: true
mam: true
mod_muc_admin: {}
mod_offline: # store messages for a user when they're offline (TODO: understand multi-client workflow?)
access_max_user_messages: max_user_offline_messages
store_groupchat: true
mod_ping: {}
mod_privacy: {} # deprecated, but required for `ejabberctl export_piefxis`
mod_private: {} # allow local clients to persist arbitrary data on my server
# push notifications to services integrated with e.g. Apple/Android.
# default is for a maximum amount of PII to be withheld, since these push notifs
# generally traverse 3rd party services. can opt to include message body, etc, though.
mod_push: {}
# i don't fully understand what this does, but it seems aimed at making push notifs more reliable.
mod_push_keepalive: {}
mod_roster:
versioning: true
# docs: <https://docs.ejabberd.im/admin/configuration/modules/#mod-s2s-dialback>
# s2s dialback to verify inbound messages
# unclear to what degree the XMPP network requires this
mod_s2s_dialback: {}
mod_shared_roster: {} # creates groups for @all, @online, and anything manually administered?
mod_stream_mgmt:
resend_on_timeout: if_offline # resend undelivered messages if the origin client is offline
# fallback for when DNS-based STUN discovery is unsupported.
# - see: <https://xmpp.org/extensions/xep-0215.html>
# docs: <https://docs.ejabberd.im/admin/configuration/modules/#mod-stun-disco>
# people say to just keep this defaulted (i guess ejabberd knows to return its `host` option of uninsane.org?)
mod_stun_disco: {}
# docs: <https://docs.ejabberd.im/admin/configuration/modules/#mod-vcard>
mod_vcard:
allow_return_all: true # all users are discoverable (?)
host: vjid.xmpp.uninsane.org
hosts:
- vjid.xmpp.uninsane.org
search: true
mod_vcard_xupdate: {} # needed for avatars
# docs: <https://docs.ejabberd.im/admin/configuration/modules/#mod-pubsub>
mod_pubsub: # needed for avatars
access_createnode: pubsub_createnode_access
host: pubsub.xmpp.uninsane.org
hosts:
- pubsub.xmpp.uninsane.org
ignore_pep_from_offline: false
last_item_cache: true
plugins:
- pep
- flat
force_node_config:
# ensure client bookmarks are private
storage:bookmarks:
access_model: whitelist
urn:xmpp:avatar:data:
access_model: open
urn:xmpp:avatar:metadata:
access_model: open
mod_version: {}
'';
};
# mod_conversejs: TODO: enable once on 21.12
# allows clients like Dino to discover where to upload files
mod_disco.server_info = [
{
modules = "all";
name = "abuse-addresses";
urls = [
"mailto:admin.xmpp@uninsane.org"
"xmpp:colin@uninsane.org"
];
}
{
modules = "all";
name = "admin-addresses";
urls = [
"mailto:admin.xmpp@uninsane.org"
"xmpp:colin@uninsane.org"
];
}
];
mod_http_upload = {
host = "upload.xmpp.uninsane.org";
hosts = [ "upload.xmpp.uninsane.org" ];
put_url = "https://@HOST@:5443/upload";
dir_mode = "0750";
file_mode = "0750";
rm_on_unregister = false;
};
# allow discoverability of BOSH and websocket endpoints
# TODO: enable once on ejabberd 22.05 (presently 21.04)
# mod_host_meta = {};
mod_jidprep = {}; # probably not needed: lets clients normalize jids
mod_last = {}; # allow other users to know when i was last online
mod_mam = {
# Mnesia is limited to 2GB, better to use an SQL backend
# For small servers SQLite is a good fit and is very easy
# to configure. Uncomment this when you have SQL configured:
# db_type: sql
assume_mam_usage = true;
default = "always";
};
mod_muc = {
access = [ "allow" ];
access_admin = { allow = "admin"; };
access_create = "muc_create";
access_persistent = "muc_create";
access_mam = [ "allow" ];
history_size = 100; # messages to show new participants
host = "muc.xmpp.uninsane.org";
hosts = [ "muc.xmpp.uninsane.org" ];
default_room_options = {
anonymous = false;
lang = "en";
persistent = true;
mam = true;
};
};
mod_muc_admin = {};
mod_offline = {
# store messages for a user when they're offline (TODO: understand multi-client workflow?)
access_max_user_messages = "max_user_offline_messages";
store_groupchat = true;
};
mod_ping = {};
mod_privacy = {}; # deprecated, but required for `ejabberctl export_piefxis`
mod_private = {}; # allow local clients to persist arbitrary data on my server
# push notifications to services integrated with e.g. Apple/Android.
# default is for a maximum amount of PII to be withheld, since these push notifs
# generally traverse 3rd party services. can opt to include message body, etc, though.
mod_push = {};
# i don't fully understand what this does, but it seems aimed at making push notifs more reliable.
mod_push_keepalive = {};
mod_roster = {
versioning = true;
};
# docs: <https://docs.ejabberd.im/admin/configuration/modules/#mod-s2s-dialback>
# s2s dialback to verify inbound messages
# unclear to what degree the XMPP network requires this
mod_s2s_dialback = {};
mod_shared_roster = {}; # creates groups for @all, @online, and anything manually administered?
mod_stream_mgmt = {
# resend undelivered messages if the origin client is offline
resend_on_timeout = "if_offline";
};
# fallback for when DNS-based STUN discovery is unsupported.
# - see: <https://xmpp.org/extensions/xep-0215.html>
# docs: <https://docs.ejabberd.im/admin/configuration/modules/#mod-stun-disco>
# people say to just keep this defaulted (i guess ejabberd knows to return its `host` option of uninsane.org?)
mod_stun_disco = {};
# docs: <https://docs.ejabberd.im/admin/configuration/modules/#mod-vcard>
mod_vcard = {
allow_return_all = true; # all users are discoverable (?)
host = "vjid.xmpp.uninsane.org";
hosts = [ "vjid.xmpp.uninsane.org" ];
search = true;
};
mod_vcard_xupdate = {}; # needed for avatars
# docs: <https://docs.ejabberd.im/admin/configuration/modules/#mod-pubsub>
mod_pubsub = {
#^ needed for avatars
access_createnode = "pubsub_createnode_access";
host = "pubsub.xmpp.uninsane.org";
hosts = [ "pubsub.xmpp.uninsane.org" ];
ignore_pep_from_offline = false;
last_item_cache = true;
plugins = [
"pep"
"flat"
];
force_node_config = {
# ensure client bookmarks are private
"storage:bookmarks:" = {
"access_model" = "whitelist";
};
"urn:xmpp:avatar:data" = {
"access_model" = "open";
};
"urn:xmpp:avatar:metadata" = {
"access_model" = "open";
};
};
};
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/%NATIVE%/$ip/" ${config-in} > /var/lib/ejabberd/ejabberd.yaml.new
${sed} "s/%ANATIVE%/$ip/g" ${config-in} > /var/lib/ejabberd/ejabberd.yaml.new
mv /var/lib/ejabberd/ejabberd.yaml{.new,}
'';

View File

@@ -0,0 +1,37 @@
# nix configs to reference:
# - <https://gitlab.com/simple-nixos-mailserver/nixos-mailserver>
# - <https://github.com/nix-community/nur-combined/-/tree/master/repos/eh5/machines/srv-m/mail-rspamd.nix>
# - postfix / dovecot / rspamd / stalwart-jmap / sogo
#
# rspamd:
# - nixos: <https://nixos.wiki/wiki/Rspamd>
# - guide: <https://rspamd.com/doc/quickstart.html>
# - non-nixos example: <https://dataswamp.org/~solene/2021-07-13-smtpd-rspamd.html>
#
#
# my rough understanding of the pieces:
# - postfix handles SMTP protocol with the rest of the world.
# - dovecot implements IMAP protocol.
# - client auth (i.e. validate that user@uninsane.org is who they claim)
# - "folders" (INBOX, JUNK) are internal to dovecot?
# or where do folders live, on-disk?
#
# - non-local clients (i.e. me) interact with BOTH postfix and dovecot, but primarily dovecot:
# - mail reading is done via IMAP (so, dovecot)
# - mail sending is done via SMTP/submission port (so, postfix)
# - but postfix delegates authorization of that outgoing mail to dovecot, on the server side
#
# - local clients (i.e. sendmail) interact only with postfix
{ ... }:
{
imports = [
./dovecot.nix
./postfix.nix
];
#### SPAM FILTERING
# services.rspamd.enable = true;
# services.rspamd.postfix.enable = true;
}

View File

@@ -0,0 +1,142 @@
# dovecot config options: <https://doc.dovecot.org/configuration_manual/>
#
# sieve docs:
# - sieve language examples: <https://doc.dovecot.org/configuration_manual/sieve/examples/>
# - sieve protocol/language: <https://proton.me/support/sieve-advanced-custom-filters>
{ config, lib, pkgs, ... }:
{
sane.ports.ports."143" = {
protocol = [ "tcp" ];
visibleTo.lan = true;
visibleTo.wan = true;
description = "colin-imap-imap.uninsane.org";
};
sane.ports.ports."993" = {
protocol = [ "tcp" ];
visibleTo.lan = true;
visibleTo.wan = true;
description = "colin-imaps-imap.uninsane.org";
};
# exists only to manage certs for dovecot
services.nginx.virtualHosts."imap.uninsane.org" = {
enableACME = true;
};
sane.dns.zones."uninsane.org".inet = {
CNAME."imap" = "native";
};
sops.secrets."dovecot_passwd" = {
owner = config.users.users.dovecot2.name;
# TODO: debug why mail can't be sent without this being world-readable
mode = "0444";
};
# inspired by https://gitlab.com/simple-nixos-mailserver/nixos-mailserver/
services.dovecot2.enable = true;
# services.dovecot2.enableLmtp = true;
services.dovecot2.sslServerCert = "/var/lib/acme/imap.uninsane.org/fullchain.pem";
services.dovecot2.sslServerKey = "/var/lib/acme/imap.uninsane.org/key.pem";
services.dovecot2.enablePAM = false;
# sieve scripts require me to set a user for... idk why?
services.dovecot2.mailUser = "colin";
services.dovecot2.mailGroup = "users";
users.users.colin.isSystemUser = lib.mkForce false;
services.dovecot2.extraConfig =
let
passwdFile = config.sops.secrets.dovecot_passwd.path;
in
''
passdb {
driver = passwd-file
args = ${passwdFile}
}
userdb {
driver = passwd-file
args = ${passwdFile}
}
# allow postfix to query our auth db
service auth {
unix_listener auth {
mode = 0660
user = postfix
group = postfix
}
}
auth_mechanisms = plain login
# accept incoming messaging from postfix
# service lmtp {
# unix_listener dovecot-lmtp {
# mode = 0600
# user = postfix
# group = postfix
# }
# }
# plugin {
# sieve_plugins = sieve_imapsieve
# }
mail_debug = yes
auth_debug = yes
# verbose_ssl = yes
'';
services.dovecot2.mailboxes = {
# special-purpose mailboxes: "All" "Archive" "Drafts" "Flagged" "Junk" "Sent" "Trash"
# RFC6154 describes these special mailboxes: https://www.ietf.org/rfc/rfc6154.html
# how these boxes are treated is 100% up to the client and server to decide.
# client behavior:
# iOS
# - Drafts: ?
# - Sent: works
# - Trash: works
# - Junk: works ("mark" -> "move to Junk")
# aerc
# - Drafts: works
# - Sent: works
# - Trash: no; deleted messages are actually deleted
# use `:move trash` instead
# - Junk: ?
# Sent mailbox: all sent messages are copied to it. unclear if this happens server-side or client-side.
Drafts = { specialUse = "Drafts"; auto = "create"; };
Sent = { specialUse = "Sent"; auto = "create"; };
Trash = { specialUse = "Trash"; auto = "create"; };
Junk = { specialUse = "Junk"; auto = "create"; };
};
services.dovecot2.mailPlugins = {
perProtocol = {
# imap.enable = [
# "imap_sieve"
# ];
lda.enable = [
"sieve"
];
# lmtp.enable = [
# "sieve"
# ];
};
};
services.dovecot2.modules = [
pkgs.dovecot_pigeonhole # enables sieve execution (?)
];
services.dovecot2.sieveScripts = {
# if any messages fail to pass (or lack) DKIM, move them to Junk
# XXX the key name ("after") is only used to order sieve execution/ordering
after = builtins.toFile "ensuredkim.sieve" ''
require "fileinto";
if not header :contains "Authentication-Results" "dkim=pass" {
fileinto "Junk";
stop;
}
'';
};
}

View File

@@ -1,7 +1,6 @@
# DOCS:
# - dovecot config: <https://doc.dovecot.org/configuration_manual/>
# postfix config options: <https://www.postfix.org/postconf.5.html>
{ config, lib, ... }:
{ lib, pkgs, ... }:
let
submissionOptions = {
@@ -21,37 +20,40 @@ in
{
sane.persist.sys.plaintext = [
# TODO: mode? could be more granular
{ user = "opendkim"; group = "opendkim"; directory = "/var/lib/opendkim"; }
{ user = "root"; group = "root"; directory = "/var/lib/postfix"; }
{ user = "root"; group = "root"; directory = "/var/spool/mail"; }
{ user = "opendkim"; group = "opendkim"; path = "/var/lib/opendkim"; }
{ user = "root"; group = "root"; path = "/var/lib/postfix"; }
{ user = "root"; group = "root"; path = "/var/spool/mail"; }
# *probably* don't need these dirs:
# "/var/lib/dhparams" # https://github.com/NixOS/nixpkgs/blob/master/nixos/modules/security/dhparams.nix
# "/var/lib/dovecot"
];
networking.firewall.allowedTCPPorts = [
25 # SMTP
143 # IMAP
465 # SMTPS
587 # SMTPS/submission
993 # IMAPS
];
# exists only to manage certs for dovecot
services.nginx.virtualHosts."imap.uninsane.org" = {
enableACME = true;
sane.ports.ports."25" = {
protocol = [ "tcp" ];
visibleTo.ovpn = true;
description = "colin-smtp-mx.uninsane.org";
};
sane.ports.ports."465" = {
protocol = [ "tcp" ];
visibleTo.ovpn = true;
description = "colin-smtps-mx.uninsane.org";
};
sane.ports.ports."587" = {
protocol = [ "tcp" ];
visibleTo.ovpn = true;
description = "colin-smtps-submission-mx.uninsane.org";
};
# exists only to manage certs for Postfix
services.nginx.virtualHosts."mx.uninsane.org" = {
enableACME = true;
};
sane.services.trust-dns.zones."uninsane.org".inet = {
sane.dns.zones."uninsane.org".inet = {
MX."@" = "10 mx.uninsane.org.";
# XXX: RFC's specify that the MX record CANNOT BE A CNAME
A."mx" = "185.157.162.178";
CNAME."imap" = "native";
# Sender Policy Framework:
# +mx => mail passes if it originated from the MX
@@ -62,7 +64,7 @@ in
# DKIM public key:
TXT."mx._domainkey" =
"v=DKIM1; k=rsa; p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCkSyMufc2KrRx3j17e/LyB+3eYSBRuEFT8PUka8EDX04QzCwDPdkwgnj3GNDvnB5Ktb05Cf2SJ/S1OLqNsINxJRWtkVfZd/C339KNh9wrukMKRKNELL9HLUw0bczOI4gKKFqyrRE9qm+4csCMAR79Te9FCjGV/jVnrkLdPT0GtFwIDAQAB"
"v=DKIM1;k=rsa;p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCkSyMufc2KrRx3j17e/LyB+3eYSBRuEFT8PUka8EDX04QzCwDPdkwgnj3GNDvnB5Ktb05Cf2SJ/S1OLqNsINxJRWtkVfZd/C339KNh9wrukMKRKNELL9HLUw0bczOI4gKKFqyrRE9qm+4csCMAR79Te9FCjGV/jVnrkLdPT0GtFwIDAQAB"
;
# DMARC fields <https://datatracker.ietf.org/doc/html/rfc7489>:
@@ -95,18 +97,40 @@ in
@uninsane.org colin
'';
services.postfix.extraConfig = ''
services.postfix.config = {
# smtpd_milters = local:/run/opendkim/opendkim.sock
# milter docs: http://www.postfix.org/MILTER_README.html
# mail filters for receiving email and authorized SMTP clients
# mail filters for receiving email and from authorized SMTP clients (i.e. via submission)
# smtpd_milters = inet:185.157.162.190:8891
smtpd_milters = unix:/run/opendkim/opendkim.sock
# 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
non_smtpd_milters = $smtpd_milters
milter_default_action = accept
inet_protocols = ipv4
smtp_tls_security_level = may
'';
non_smtpd_milters = "$smtpd_milters";
# what to do when a milter exits unexpectedly:
milter_default_action = "accept";
inet_protocols = "ipv4";
smtp_tls_security_level = "may";
# hand received mail over to dovecot so that it can run sieves & such
mailbox_command = ''${pkgs.dovecot}/libexec/dovecot/dovecot-lda -f "$SENDER" -a "$RECIPIENT"'';
# hand received mail over to dovecot
# virtual_alias_maps = [
# "hash:/etc/postfix/virtual"
# ];
# mydestination = "";
# virtual_mailbox_domains = [ "localhost" "uninsane.org" ];
# # virtual_mailbox_maps = "hash:/etc/postfix/virtual";
# virtual_transport = "lmtp:unix:/run/dovecot2/dovecot-lmtp";
# anti-spam options: <https://www.postfix.org/SMTPD_ACCESS_README.html>
# reject_unknown_sender_domain: causes postfix to `dig <sender> MX` and make sure that exists.
# but may cause problems receiving mail from google & others who load-balance?
# - <https://unix.stackexchange.com/questions/592131/how-to-reject-email-from-unknown-domains-with-postfix-on-centos>
# smtpd_sender_restrictions = reject_unknown_sender_domain
};
services.postfix.enableSubmission = true;
services.postfix.submissionOptions = submissionOptions;
@@ -121,6 +145,8 @@ in
};
#### OPENDKIM
services.opendkim.enable = true;
# services.opendkim.domains = "csl:uninsane.org";
services.opendkim.domains = "uninsane.org";
@@ -144,59 +170,6 @@ in
UMask = lib.mkForce "0011";
};
# inspired by https://gitlab.com/simple-nixos-mailserver/nixos-mailserver/
services.dovecot2.enable = true;
services.dovecot2.mailboxes = {
# special-purpose mailboxes: "All" "Archive" "Drafts" "Flagged" "Junk" "Sent" "Trash"
# RFC6154 describes these special mailboxes: https://www.ietf.org/rfc/rfc6154.html
# how these boxes are treated is 100% up to the client and server to decide.
# client behavior:
# iOS
# - Drafts: ?
# - Sent: works
# - Trash: works
# aerc
# - Drafts: works
# - Sent: works
# - Trash: no; deleted messages are actually deleted
# use `:move trash` instead
# Sent mailbox: all sent messages are copied to it. unclear if this happens server-side or client-side.
Drafts = { specialUse = "Drafts"; auto = "create"; };
Sent = { specialUse = "Sent"; auto = "create"; };
Trash = { specialUse = "Trash"; auto = "create"; };
};
services.dovecot2.sslServerCert = "/var/lib/acme/imap.uninsane.org/fullchain.pem";
services.dovecot2.sslServerKey = "/var/lib/acme/imap.uninsane.org/key.pem";
services.dovecot2.enablePAM = false;
services.dovecot2.extraConfig =
let
passwdFile = config.sops.secrets.dovecot_passwd.path;
in
''
passdb {
driver = passwd-file
args = ${passwdFile}
}
userdb {
driver = passwd-file
args = ${passwdFile}
}
# allow postfix to query our auth db
service auth {
unix_listener auth {
mode = 0660
user = postfix
group = postfix
}
}
auth_mechanisms = plain login
mail_debug = yes
auth_debug = yes
# verbose_ssl = yes
'';
#### OUTGOING MESSAGE REWRITING:
services.postfix.enableHeaderChecks = true;
@@ -218,10 +191,4 @@ in
# pattern = "/^Subject:.*activate your account/";
# }
];
sops.secrets."dovecot_passwd" = {
owner = config.users.users.dovecot2.name;
# TODO: debug why mail can't be sent without this being world-readable
mode = "0444";
};
}

View File

@@ -0,0 +1,53 @@
{ config, ... }:
{
imports = [
./nfs.nix
./sftpgo.nix
];
users.groups.export = {};
fileSystems."/var/export/media" = {
# everything in here could be considered publicly readable (based on the viewer's legal jurisdiction)
device = "/var/lib/uninsane/media";
options = [ "rbind" ];
};
# fileSystems."/var/export/playground" = {
# device = config.fileSystems."/mnt/persist/ext".device;
# fsType = "btrfs";
# options = [
# "subvol=export-playground"
# "compress=zstd"
# "defaults"
# ];
# };
# N.B.: the backing directory should be manually created here **as a btrfs subvolume** and with a quota.
# - `sudo btrfs subvolume create /mnt/persist/ext/persist/var/export/playground`
# - `sudo btrfs quota enable /mnt/persist/ext/persist/var/export/playground`
# - `sudo btrfs quota rescan -sw /mnt/persist/ext/persist/var/export/playground`
# to adjust the limits (which apply at the block layer, i.e. post-compression):
# - `sudo btrfs qgroup limit 20G /mnt/persist/ext/persist/var/export/playground`
# to query the quota/status:
# - `sudo btrfs qgroup show -re /var/export/playground`
sane.persist.sys.ext = [
{ user = "root"; group = "export"; mode = "0775"; path = "/var/export/playground"; }
];
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
'';
};
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).
- share files
- write poetry
- be a friendly troll
'';
};
}

View File

@@ -0,0 +1,110 @@
# docs:
# - <https://nixos.wiki/wiki/NFS>
# - <https://wiki.gentoo.org/wiki/Nfs-utils>
# system files:
# - /etc/exports
# system services:
# - nfs-server.service
# - nfs-idmapd.service
# - nfs-mountd.service
# - nfsdcld.service
# - rpc-statd.service
# - rpcbind.service
#
# TODO: force files to be 755, or 750.
# - could maybe be done with some mount option?
{ config, lib, ... }:
{
services.nfs.server.enable = true;
# see which ports NFS uses with:
# - `rpcinfo -p`
sane.ports.ports."111" = {
protocol = [ "tcp" "udp" ];
visibleTo.lan = true;
description = "NFS server portmapper";
};
sane.ports.ports."2049" = {
protocol = [ "tcp" ];
visibleTo.lan = true;
description = "NFS server";
};
sane.ports.ports."4000" = {
protocol = [ "udp" ];
visibleTo.lan = true;
description = "NFS server status daemon";
};
sane.ports.ports."4001" = {
protocol = [ "tcp" "udp" ];
visibleTo.lan = true;
description = "NFS server lock daemon";
};
sane.ports.ports."4002" = {
protocol = [ "tcp" "udp" ];
visibleTo.lan = true;
description = "NFS server mount daemon";
};
# NFS4 allows these to float, but NFS3 mandates specific ports, so fix them for backwards compat.
services.nfs.server.lockdPort = 4001;
services.nfs.server.mountdPort = 4002;
services.nfs.server.statdPort = 4000;
# format:
# fspoint visibility(options)
# options:
# - see: <https://wiki.gentoo.org/wiki/Nfs-utils#Exports>
# - see [man 5 exports](https://linux.die.net/man/5/exports)
# - insecure: require clients use src port > 1024
# - rw, ro (default)
# - async, sync (default)
# - no_subtree_check (default), subtree_check: verify not just that files requested by the client live
# in the expected fs, but also that they live under whatever subdirectory of that fs is exported.
# - no_root_squash, root_squash (default): map requests from uid 0 to user `nobody`.
# - crossmnt: reveal filesystems that are mounted under this endpoint
# - fsid: must be zero for the root export
# - fsid=root is alias for fsid=0
# - mountpoint[=/path]: only export the directory if it's a mountpoint. used to avoid exporting failed mounts.
# - all_squash: rewrite all client requests such that they come from anonuid/anongid
# - any files a user creates are owned by local anonuid/anongid.
# - users can read any local file which anonuid/anongid would be able to read.
# - users can't chown to/away from anonuid/anongid.
# - users can chmod files they own, to anything (making them unreadable to non-`nfsuser` export users, like FTP).
# - `stat` remains unchanged, returning the real UIDs/GIDs to the client.
# - thus programs which check `uid` or `gid` before trying an operation may incorrectly conclude they can't perform some op.
#
# 10.0.0.0/8 to export both to LAN (readonly, unencrypted) and wg vpn (read-write, encrypted)
services.nfs.server.exports =
let
fmtExport = { export, baseOpts, extraLanOpts ? [], extraVpnOpts ? [] }:
let
always = [ "subtree_check" ];
lanOpts = always ++ baseOpts ++ extraLanOpts;
vpnOpts = always ++ baseOpts ++ extraVpnOpts;
in "${export} 10.78.79.0/22(${lib.concatStringsSep "," lanOpts}) 10.0.10.0/24(${lib.concatStringsSep "," vpnOpts})";
in lib.concatStringsSep "\n" [
(fmtExport {
export = "/var/export";
baseOpts = [ "crossmnt" "fsid=root" ];
extraLanOpts = [ "ro" ];
extraVpnOpts = [ "rw" "no_root_squash" ];
})
(fmtExport {
export = "/var/export/playground";
baseOpts = [
"mountpoint"
"all_squash"
"rw"
"anonuid=${builtins.toString config.users.users.nfsuser.uid}"
"anongid=${builtins.toString config.users.groups.export.gid}"
];
})
];
users.users.nfsuser = {
description = "virtual user for anonymous NFS operations";
group = "export";
isSystemUser = true;
};
}

View File

@@ -0,0 +1,179 @@
# docs:
# - <https://github.com/drakkan/sftpgo>
# - config options: <https://github.com/drakkan/sftpgo/blob/main/docs/full-configuration.md>
# - config defaults: <https://github.com/drakkan/sftpgo/blob/main/sftpgo.json>
# - nixos options: <repo:nixos/nixpkgs:nixos/modules/services/web-apps/sftpgo.nix>
# - nixos example: <repo:nixos/nixpkgs:nixos/tests/sftpgo.nix>
#
# sftpgo is a FTP server that also supports WebDAV, SFTP, and web clients.
#
# TODO: change umask so sftpgo-created files default to 644.
# - it does indeed appear that the 600 is not something sftpgo is explicitly doing.
{ config, lib, pkgs, sane-lib, ... }:
let
# user permissions:
# - see <repo:drakkan/sftpgo:internal/dataprovider/user.go>
# - "*" = grant all permissions
# - read-only perms:
# - "list" = list files and directories
# - "download"
# - rw perms:
# - "upload"
# - "overwrite" = allow uploads to replace existing files
# - "delete" = delete files and directories
# - "delete_files"
# - "delete_dirs"
# - "rename" = rename files and directories
# - "rename_files"
# - "rename_dirs"
# - "create_dirs"
# - "create_symlinks"
# - "chmod"
# - "chown"
# - "chtimes" = change atime/mtime (access and modification times)
#
# home_dir:
# - it seems (empirically) that a user can't cd above their home directory.
# though i don't have a reference for that in the docs.
authResponseSuccess = {
status = 1;
username = "anonymous";
expiration_date = 0;
home_dir = "/var/export";
# uid/gid 0 means to inherit sftpgo uid.
# - i.e. users can't read files which Linux user `sftpgo` can't read
# - uploaded files belong to Linux user `sftpgo`
# other uid/gid values aren't possible for localfs backend, unless i let sftpgo use `sudo`.
uid = 0;
gid = 0;
# uid = 65534;
# gid = 65534;
max_sessions = 0;
# quota_*: 0 means to not use SFTP's quota system
quota_size = 0;
quota_files = 0;
permissions = {
"/" = [ "list" "download" ];
"/playground" = [
# read-only:
"list"
"download"
# write:
"upload"
"overwrite"
"delete"
"rename"
"create_dirs"
"create_symlinks"
# intentionally omitted:
# "chmod"
# "chown"
# "chtimes"
];
};
upload_bandwidth = 0;
download_bandwidth = 0;
filters = {
allowed_ip = [];
denied_ip = [];
};
public_keys = [];
# other fields:
# ? groups
# ? virtual_folders
};
authResponseFail = {
username = "";
};
authSuccessJson = pkgs.writeText "sftp-auth-success.json" (builtins.toJSON authResponseSuccess);
authFailJson = pkgs.writeText "sftp-auth-fail.json" (builtins.toJSON authResponseFail);
unwrappedAuthProgram = pkgs.static-nix-shell.mkBash {
pname = "sftpgo_external_auth_hook";
src = ./.;
pkgs = [ "coreutils" ];
};
authProgram = pkgs.writeShellScript "sftpgo-auth-hook" ''
${unwrappedAuthProgram}/bin/sftpgo_external_auth_hook ${authFailJson} ${authSuccessJson}
'';
in
{
# Client initiates a FTP "control connection" on port 21.
# - this handles the client -> server commands, and the server -> client status, but not the actual data
# - file data, directory listings, etc need to be transferred on an ephemeral "data port".
# - 50000-50100 is a common port range for this.
sane.ports.ports = {
"21" = {
protocol = [ "tcp" ];
visibleTo.lan = true;
description = "colin-FTP server";
};
} // (sane-lib.mapToAttrs
(port: {
name = builtins.toString port;
value = {
protocol = [ "tcp" ];
visibleTo.lan = true;
description = "colin-FTP server data port range";
};
})
(lib.range 50000 50100)
);
services.sftpgo = {
enable = true;
group = "export";
settings = {
ftpd = {
bindings = [
{
# binding this means any wireguard client can connect
address = "10.0.10.5";
port = 21;
debug = true;
}
{
# binding this means any LAN client can connect
address = "10.78.79.51";
port = 21;
debug = true;
}
];
# active mode is susceptible to "bounce attacks", without much benefit over passive mode
disable_active_mode = true;
hash_support = true;
passive_port_range = {
start = 50000;
end = 50100;
};
banner = ''
Welcome, friends, to Colin's read-only FTP server! Also available via NFS on the same host.
Username: "anonymous"
Password: "anonymous"
CONFIGURE YOUR CLIENT FOR "PASSIVE" mode, e.g. `ftp --passive uninsane.org`
Please let me know if anything's broken or not as it should be. Otherwise, browse and DL freely :)
'';
};
data_provider = {
driver = "memory";
external_auth_hook = "${authProgram}";
# track_quota:
# - 0: disable quota tracking
# - 1: quota is updated on every upload/delete, even if user has no quota restriction
# - 2: quota is updated on every upload/delete, but only if user/folder has a quota restriction (default, i think)
# track_quota = 2;
};
};
};
users.users.sftpgo.extraGroups = [ "export" ];
systemd.services.sftpgo.serviceConfig = {
ReadOnlyPaths = [ "/var/export" ];
ReadWritePaths = [ "/var/export/playground" ];
};
}

View File

@@ -0,0 +1,23 @@
#!/usr/bin/env nix-shell
#!nix-shell -i bash -p coreutils
# vim: set filetype=bash :
#
# available environment variables:
# - SFTPGO_AUTHD_USERNAME
# - SFTPGO_AUTHD_USER
# - SFTPGO_AUTHD_IP
# - SFTPGO_AUTHD_PROTOCOL = { "DAV", "FTP", "HTTP", "SSH" }
# - SFTPGO_AUTHD_PASSWORD
# - SFTPGO_AUTHD_PUBLIC_KEY
# - SFTPGO_AUTHD_KEYBOARD_INTERACTIVE
# - SFTPGO_AUTHD_TLS_CERT
#
#
# call with <script_name> /path/to/fail/response.json /path/to/success/response.json
if [ "$SFTPGO_AUTHD_USERNAME" = "anonymous" ]; then
cat "$2"
else
cat "$1"
fi

View File

@@ -16,7 +16,7 @@
mode = "0400";
};
sane.persist.sys.plaintext = [
{ user = "freshrss"; group = "freshrss"; directory = "/var/lib/freshrss"; }
{ user = "freshrss"; group = "freshrss"; path = "/var/lib/freshrss"; }
];
services.freshrss.enable = true;
@@ -59,5 +59,5 @@
# the routing is handled by services.freshrss.virtualHost
};
sane.services.trust-dns.zones."uninsane.org".inet.CNAME."rss" = "native";
sane.dns.zones."uninsane.org".inet.CNAME."rss" = "native";
}

View File

@@ -1,18 +1,16 @@
# config options: <https://docs.gitea.io/en-us/administration/config-cheat-sheet/>
{ config, pkgs, lib, ... }:
{
sane.persist.sys.plaintext = [
# TODO: mode? could be more granular
{ user = "git"; group = "gitea"; directory = "/var/lib/gitea"; }
{ user = "git"; group = "gitea"; path = "/var/lib/gitea"; }
];
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.domain = "git.uninsane.org";
services.gitea.rootUrl = "https://git.uninsane.org/";
services.gitea.settings.session.COOKIE_SECURE = true;
# services.gitea.disableRegistration = true;
# gitea doesn't create the git user
@@ -27,9 +25,13 @@
};
services.gitea.settings = {
# options: "Trace", "Debug", "Info", "Warn", "Error", "Critical"
log.LEVEL = "Warn";
server = {
# options: "home", "explore", "organizations", "login" or URL fragment (or full URL)
LANDING_PAGE = "explore";
DOMAIN = "git.uninsane.org";
ROOT_URL = "https://git.uninsane.org/";
};
service = {
# timeout for email approval. 5760 = 4 days
@@ -44,6 +46,7 @@
ENABLE_CAPTCHA = true;
NOREPLY_ADDRESS = "noreply.anonymous.git@uninsane.org";
};
session.COOKIE_SECURE = true;
repository = {
DEFAULT_BRANCH = "master";
};
@@ -58,6 +61,8 @@
};
#"ui.meta" = ... to customize html author/description/etc
mailer = {
# alternative is to use nixos-level config:
# services.gitea.mailerPasswordFile = ...
ENABLED = true;
MAILER_TYPE = "sendmail";
FROM = "notify.git@uninsane.org";
@@ -69,8 +74,6 @@
FORMAT = "RFC3339";
};
};
# options: "Trace", "Debug", "Info", "Warn", "Error", "Critical"
services.gitea.settings.log.LEVEL = "Warn";
systemd.services.gitea.serviceConfig = {
# nix default is AF_UNIX AF_INET AF_INET6.
@@ -95,5 +98,12 @@
};
};
sane.services.trust-dns.zones."uninsane.org".inet.CNAME."git" = "native";
sane.dns.zones."uninsane.org".inet.CNAME."git" = "native";
sane.ports.ports."22" = {
protocol = [ "tcp" ];
visibleTo.lan = true;
visibleTo.wan = true;
description = "colin-git@git.uninsane.org";
};
}

View File

@@ -64,5 +64,5 @@
};
};
sane.services.trust-dns.zones."uninsane.org".inet.CNAME."sink" = "native";
sane.dns.zones."uninsane.org".inet.CNAME."sink" = "native";
}

View File

@@ -12,7 +12,7 @@ lib.mkIf false # i don't actively use ipfs anymore
{
sane.persist.sys.plaintext = [
# TODO: mode? could be more granular
{ user = "261"; group = "261"; directory = "/var/lib/ipfs"; }
{ user = "261"; group = "261"; path = "/var/lib/ipfs"; }
];
networking.firewall.allowedTCPPorts = [ 4001 ];
@@ -34,7 +34,7 @@ lib.mkIf false # i don't actively use ipfs anymore
};
};
sane.services.trust-dns.zones."uninsane.org".inet.CNAME."ipfs" = "native";
sane.dns.zones."uninsane.org".inet.CNAME."ipfs" = "native";
# services.ipfs.enable = true;
services.kubo.localDiscovery = true;

View File

@@ -3,7 +3,7 @@
{
sane.persist.sys.plaintext = [
# TODO: mode? we only need this to save Indexer creds ==> migrate to config?
{ user = "root"; group = "root"; directory = "/var/lib/jackett"; }
{ user = "root"; group = "root"; path = "/var/lib/jackett"; }
];
services.jackett.enable = true;
@@ -24,9 +24,10 @@
locations."/" = {
# proxyPass = "http://ovpns.uninsane.org:9117";
proxyPass = "http://10.0.1.6:9117";
recommendedProxySettings = true;
};
};
sane.services.trust-dns.zones."uninsane.org".inet.CNAME."jackett" = "native";
sane.dns.zones."uninsane.org".inet.CNAME."jackett" = "native";
}

View File

@@ -1,16 +1,76 @@
# 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, ... }:
# TODO: re-enable after migrating media dir to /var/lib/uninsane/media
# else it's too spammy
lib.mkIf false
{
networking.firewall.allowedUDPPorts = [
1900 7359 # DLNA: https://jellyfin.org/docs/general/networking/index.html
];
# 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.plaintext = [
# TODO: mode? could be more granular
{ user = "jellyfin"; group = "jellyfin"; directory = "/var/lib/jellyfin"; }
{ user = "jellyfin"; group = "jellyfin"; mode = "0700"; path = "/var/lib/jellyfin"; }
];
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
@@ -61,7 +121,7 @@ lib.mkIf false
};
};
sane.services.trust-dns.zones."uninsane.org".inet.CNAME."jelly" = "native";
sane.dns.zones."uninsane.org".inet.CNAME."jelly" = "native";
services.jellyfin.enable = true;
}

View File

@@ -13,5 +13,5 @@
locations."/".proxyPass = "http://127.0.0.1:8013";
};
sane.services.trust-dns.zones."uninsane.org".inet.CNAME."w" = "native";
sane.dns.zones."uninsane.org".inet.CNAME."w" = "native";
}

View File

@@ -0,0 +1,22 @@
{ config, ... }:
let
svc-cfg = config.services.komga;
inherit (svc-cfg) user group port stateDir;
in
{
sane.persist.sys.plaintext = [
{ inherit user group; mode = "0700"; path = stateDir; }
];
services.komga.enable = true;
services.komga.port = 11319; # chosen at random
services.nginx.virtualHosts."komga.uninsane.org" = {
addSSL = true;
enableACME = true;
locations."/" = {
proxyPass = "http://127.0.0.1:${builtins.toString port}";
};
};
sane.dns.zones."uninsane.org".inet.CNAME."komga" = "native";
}

View File

@@ -0,0 +1,85 @@
# docs:
# - <repo:LemmyNet/lemmy:docker/federation/nginx.conf>
# - <repo:LemmyNet/lemmy:docker/nginx.conf>
# - <repo:LemmyNet/lemmy-ansible:templates/nginx.conf>
{ 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.overrideAttrs (upstream: {
# as of v 0.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.
postPatch = (upstream.postPatch or "") + ''
substituteInPlace src/validate.rs \
--replace '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.serviceConfig = {
# fix to use a normal user so we can configure perms correctly
DynamicUser = mkForce false;
User = "lemmy";
Group = "lemmy";
};
systemd.services.lemmy.environment = {
RUST_BACKTRACE = "full";
# 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";
#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-max-frame-count" (builtins.toString (30*60*60))
"--media-process-timeout 120"
"--media-enable-full-video true" # allow audio
]);
}

View File

@@ -1,54 +1,63 @@
# docs: https://nixos.wiki/wiki/Matrix
# docs: https://nixos.org/manual/nixos/stable/index.html#module-services-matrix-synapse
# docs: <https://nixos.wiki/wiki/Matrix>
# docs: <https://nixos.org/manual/nixos/stable/index.html#module-services-matrix-synapse>
# example config: <https://github.com/matrix-org/synapse/blob/develop/docs/sample_config.yaml>
{ config, lib, pkgs, ... }:
{
imports = [
./discord-puppet.nix
# ./irc.nix
./irc.nix
./signal.nix
];
# allow synapse to read the registration files of its appservices
users.users.matrix-synapse.extraGroups = [ "mautrix-signal" ];
sane.persist.sys.plaintext = [
{ user = "matrix-synapse"; group = "matrix-synapse"; directory = "/var/lib/matrix-synapse"; }
{ user = "matrix-synapse"; group = "matrix-synapse"; path = "/var/lib/matrix-synapse"; }
];
services.matrix-synapse.enable = true;
# this changes the default log level from INFO to WARN.
# maybe there's an easier way?
services.matrix-synapse.settings.log_config = ./synapse-log_level.yaml;
services.matrix-synapse.settings.server_name = "uninsane.org";
services.matrix-synapse.settings = {
# this changes the default log level from INFO to WARN.
# maybe there's an easier way?
log_config = ./synapse-log_level.yaml;
server_name = "uninsane.org";
# services.matrix-synapse.enable_registration_captcha = true;
# services.matrix-synapse.enable_registration_without_verification = true;
services.matrix-synapse.settings.enable_registration = true;
# services.matrix-synapse.registration_shared_secret = "<shared key goes here>";
# services.matrix-synapse.enable_registration_captcha = true;
# services.matrix-synapse.enable_registration_without_verification = 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.
# we change this because the server is situated behind nginx.
services.matrix-synapse.settings.listeners = [
{
port = 8008;
bind_addresses = [ "127.0.0.1" ];
type = "http";
tls = false;
x_forwarded = true;
resources = [
{
names = [ "client" "federation" ];
compress = false;
}
];
}
];
# default for listeners is port = 8448, tls = true, x_forwarded = false.
# we change this because the server is situated behind nginx.
listeners = [
{
port = 8008;
bind_addresses = [ "127.0.0.1" ];
type = "http";
tls = false;
x_forwarded = true;
resources = [
{
names = [ "client" "federation" ];
compress = false;
}
];
}
];
services.matrix-synapse.settings.admin_contact = "admin.matrix@uninsane.org";
services.matrix-synapse.settings.registrations_require_3pid = [ "email" ];
ip_range_whitelist = [
# to communicate with ntfy.uninsane.org push notifs.
# TODO: move this to some non-shared loopback device: we don't want Matrix spouting http requests to *anything* on this machine
"10.78.79.51"
];
x_forwarded = true; # because we proxy matrix behind nginx
max_upload_size = "100M"; # default is "50M"
admin_contact = "admin.matrix@uninsane.org";
registrations_require_3pid = [ "email" ];
};
services.matrix-synapse.extraConfigFiles = [
config.sops.secrets.matrix_synapse_secrets.path
config.sops.secrets."matrix_synapse_secrets.yaml".path
];
# services.matrix-synapse.extraConfigFiles = [builtins.toFile "matrix-synapse-extra-config" ''
@@ -97,6 +106,10 @@
locations."/" = {
proxyPass = "http://127.0.0.1:8008";
extraConfig = ''
# allow uploading large files (matrix enforces a separate limit, downstream)
client_max_body_size 512m;
'';
};
# redirect browsers to the web client.
# i don't think native matrix clients ever fetch the root.
@@ -127,13 +140,13 @@
};
};
sane.services.trust-dns.zones."uninsane.org".inet = {
sane.dns.zones."uninsane.org".inet = {
CNAME."matrix" = "native";
CNAME."web.matrix" = "native";
};
sops.secrets."matrix_synapse_secrets" = {
sops.secrets."matrix_synapse_secrets.yaml" = {
owner = config.users.users.matrix-synapse.name;
};
}

View File

@@ -1,7 +1,12 @@
{ lib, ... }:
# XXX mx-discord-puppet uses nodejs_14 which is EOL
# - mx-discord-puppet is abandoned upstream _and_ in nixpkgs
# - recommended to use mautrix-discord: <https://github.com/NixOS/nixpkgs/pull/200462>
lib.mkIf false
{
sane.persist.sys.plaintext = [
{ user = "matrix-synapse"; group = "matrix-synapse"; directory = "/var/lib/mx-puppet-discord"; }
{ user = "matrix-synapse"; group = "matrix-synapse"; path = "/var/lib/mx-puppet-discord"; }
];
services.matrix-synapse.settings.app_service_config_files = [

View File

@@ -0,0 +1,13 @@
diff --git a/src/irc/ConnectionInstance.ts b/src/irc/ConnectionInstance.ts
index 688036ca..3373fa27 100644
--- a/src/irc/ConnectionInstance.ts
+++ b/src/irc/ConnectionInstance.ts
@@ -149,7 +149,7 @@ export class ConnectionInstance {
if (this.dead) {
return Promise.resolve();
}
- ircReason = ircReason || reason;
+ ircReason = "bye"; // don't reveal through the IRC quit message that we're a bridge
log.info(
"disconnect()ing %s@%s - %s", this.nick, this.domain, reason
);

View File

@@ -0,0 +1,50 @@
diff --git a/config.schema.yml b/config.schema.yml
index 2e71c8d6..42ba8ba1 100644
--- a/config.schema.yml
+++ b/config.schema.yml
@@ -433,7 +433,7 @@ properties:
type: "boolean"
realnameFormat:
type: "string"
- enum: ["mxid","reverse-mxid"]
+ enum: ["mxid","reverse-mxid","localpart"]
ipv6:
type: "object"
properties:
diff --git a/src/irc/IdentGenerator.ts b/src/irc/IdentGenerator.ts
index 7a2b5cf1..50f7815a 100644
--- a/src/irc/IdentGenerator.ts
+++ b/src/irc/IdentGenerator.ts
@@ -74,6 +74,9 @@ export class IdentGenerator {
else if (server.getRealNameFormat() === "reverse-mxid") {
realname = IdentGenerator.sanitiseRealname(IdentGenerator.switchAroundMxid(matrixUser));
}
+ else if (server.getRealNameFormat() == "localpart") {
+ realname = IdentGenerator.sanitiseRealname(matrixUser.localpart);
+ }
else {
throw Error('Invalid value for realNameFormat');
}
diff --git a/src/irc/IrcServer.ts b/src/irc/IrcServer.ts
index 2af73ab4..895b9783 100644
--- a/src/irc/IrcServer.ts
+++ b/src/irc/IrcServer.ts
@@ -101,7 +101,7 @@ export interface IrcServerConfig {
};
lineLimit: number;
userModes?: string;
- realnameFormat?: "mxid"|"reverse-mxid";
+ realnameFormat?: "mxid"|"reverse-mxid"|"localpart";
pingTimeoutMs: number;
pingRateMs: number;
kickOn: {
@@ -289,7 +289,7 @@ export class IrcServer {
return this.config.ircClients.userModes || "";
}
- public getRealNameFormat(): "mxid"|"reverse-mxid" {
+ public getRealNameFormat(): "mxid"|"reverse-mxid"|"localpart" {
return this.config.ircClients.realnameFormat || "mxid";
}

View File

@@ -1,21 +1,123 @@
# config docs:
# - <https://github.com/matrix-org/matrix-appservice-irc/blob/develop/config.sample.yaml>
# probably want to remove that.
{ config, lib, ... }:
let
ircServer = { name, additionalAddresses ? [], sasl ? true, port ? 6697 }: let
lowerName = lib.toLower name;
in {
# XXX sasl: appservice doesn't support NickServ identification (only SASL, or PASS if sasl = false)
inherit name additionalAddresses sasl port;
ssl = true;
botConfig = {
# bot has no presence in IRC channel; only real Matrix users
enabled = false;
# this is the IRC username/nickname *of the bot* (not visible in channels): not of the end-user.
# the irc username/nick of a mapped Matrix user is determined further down in `ircClients` section.
# if `enabled` is false, then this name probably never shows up on the IRC side (?)
nick = "uninsane";
username = "uninsane";
joinChannelsIfNoUsers = false;
};
dynamicChannels = {
enabled = true;
aliasTemplate = "#irc_${lowerName}_$CHANNEL";
published = false; # false => irc rooms aren't listed in homeserver public rooms list
federate = false; # false => Matrix users from other homeservers can't join IRC channels
};
ircClients = {
nickTemplate = "$LOCALPARTsane"; # @colin:uninsane.org (Matrix) -> colinsane (IRC)
realnameFormat = "reverse-mxid"; # @colin:uninsane.org (Matrix) -> org.uninsane:colin (IRC)
# realnameFormat = "localpart"; # @colin:uninsane.org (Matrix) -> colin (IRC) -- but requires the mxid patch below
# by default, Matrix will convert messages greater than (3) lines into a pastebin-like URL to send to IRC.
lineLimit = 20;
# Rizon in particular allows only 4 connections from one IP before a 30min ban.
# that's effectively reduced to 2 during a netsplit, or maybe during a restart.
# - https://wiki.rizon.net/index.php?title=Connection/Session_Limit_Exemptions
# especially, misconfigurations elsewhere in this config may cause hundreds of connections
# so this is a safeguard.
maxClients = 2;
# don't have the bridge disconnect me from IRC when idle.
idleTimeout = 0;
concurrentReconnectLimit = 2;
reconnectIntervalMs = 60000;
kickOn = {
# remove Matrix user from room when...
channelJoinFailure = false;
ircConnectionFailure = false;
userQuit = true;
};
};
matrixClients = {
userTemplate = "@irc_${lowerName}_$NICK"; # the :uninsane.org part is appended automatically
};
# this will let this user message the appservice with `!join #<IRCChannel>` and the rest "Just Works"
"@colin:uninsane.org" = "admin";
membershipLists = {
enabled = true;
global = {
ircToMatrix = {
initial = true;
incremental = true;
requireMatrixJoined = false;
};
matrixToIrc = {
initial = true;
incremental = true;
};
};
ignoreIdleUsersOnStartup = {
enabled = false; # false => always bridge users, even if idle
};
};
# sync room description?
bridgeInfoState = {
enabled = true;
initial = true;
};
# for per-user IRC password:
# - invite @irc_${lowerName}_NickServ:uninsane.org to a DM and type `help` => register
# - invite the matrix-appservice-irc user to a DM and type `!help` => add PW to database
# to validate that i'm authenticated on the IRC network, DM @irc_${lowerName}_NickServ:uninsane.org:
# - send: `STATUS colinsane`
# - response should be `3`: "user recognized as owner via password identification"
# passwordEncryptionKeyPath = "/path/to/privkey"; # appservice will generate its own if unspecified
};
in
{
nixpkgs.overlays = [
(next: prev: {
matrix-appservice-irc = prev.matrix-appservice-irc.overrideAttrs (super: {
patches = super.patches or [] ++ [
./irc-no-reveal-bridge.patch
# ./irc-no-reveal-mxid.patch
];
});
})
];
sane.persist.sys.plaintext = [
# TODO: mode?
# user and group are both "matrix-appservice-irc"
{ user = "993"; group = "992"; directory = "/var/lib/matrix-appservice-irc"; }
{ user = "matrix-appservice-irc"; group = "matrix-appservice-irc"; path = "/var/lib/matrix-appservice-irc"; }
];
# XXX: matrix-appservice-irc PreStart tries to chgrp the registration.yml to matrix-synapse,
# which requires matrix-appservice-irc to be of that group
users.users.matrix-appservice-irc.extraGroups = [ "matrix-synapse" ];
# weird race conditions around registration.yml mean we want matrix-synapse to be of matrix-appservice-irc group too.
users.users.matrix-synapse.extraGroups = [ "matrix-appservice-irc" ];
services.matrix-synapse.settings.app_service_config_files = [
"/var/lib/matrix-appservice-irc/registration.yml" # auto-created by irc appservice
];
# note: Rizon allows only FOUR simultaneous IRC connections per IP: https://wiki.rizon.net/index.php?title=Connection/Session_Limit_Exemptions
# Rizon supports CertFP for auth: https://wiki.rizon.net/index.php?title=CertFP
services.matrix-appservice-irc.enable = true;
services.matrix-appservice-irc.registrationUrl = "http://127.0.0.1:8009";
# settings documented here: https://github.com/matrix-org/matrix-appservice-irc/blob/develop/config.sample.yaml
services.matrix-appservice-irc.settings = {
homeserver = {
url = "http://127.0.0.1:8008";
@@ -28,70 +130,39 @@
ircService = {
servers = {
"irc.rizon.net" = {
name = "Rizon";
port = 6697; # SSL port
ssl = true;
sasl = true; # appservice doesn't support NickServ identification
botConfig = {
# bot has no presence in IRC channel; only real Matrix users
enabled = false;
# nick = "UninsaneDotOrg";
nick = "uninsane";
username = "uninsane";
};
dynamicChannels = {
enabled = true;
aliasTemplate = "#irc_rizon_$CHANNEL";
};
ircClients = {
nickTemplate = "$LOCALPARTsane";
# by default, Matrix will convert messages greater than (3) lines into a pastebin-like URL to send to IRC.
lineLimit = 20;
};
matrixClients = {
userTemplate = "@irc_rizon_$NICK"; # the :uninsane.org part is appended automatically
};
# this will let this user message the appservice with `!join #<IRCChannel>` and the rest "Just Works"
"@colin:uninsane.org" = "admin";
membershipLists = {
enabled = true;
global = {
ircToMatrix = {
initial = true;
incremental = true;
requireMatrixJoined = false;
};
matrixToIrc = {
initial = true;
incremental = true;
};
};
};
# sync room description?
bridgeInfoState = {
enabled = true;
initial = true;
};
# hardcoded mappings, for when dynamicChannels fails us. TODO: probably safe to remove these.
# mappings = {
# "#chat" = {
# roomIds = [ "!GXJSOTdbtxRboGtDep:uninsane.org" ];
# };
# # BakaBT requires account registration, which i think means my user needs to be added before the appservice user
# "#BakaBT" = {
# roomIds = [ "!feZKttuYuHilqPFSkD:uninsane.org" ];
# };
# };
# for per-user IRC password:
# invite @irc_rizon_NickServ:uninsane.org to a DM and type `help` => register
# invite the matrix-appservice-irc user to a DM and type `!help` => add PW to database
# passwordEncryptionKeyPath = "/path/to/privkey"; # appservice will generate its own if unspecified
"irc.esper.net" = ircServer {
name = "esper";
sasl = false;
# notable channels:
# - #merveilles
};
"irc.libera.chat" = ircServer {
name = "libera";
sasl = false;
# notable channels:
# - #hare
# - #mnt-reform
};
"irc.myanonamouse.net" = ircServer {
name = "MyAnonamouse";
additionalAddresses = [ "irc2.myanonamouse.net" ];
sasl = false;
};
"irc.oftc.net" = ircServer {
name = "oftc";
sasl = false;
# notable channels:
# - #sxmo
# - #sxmo-offtopic
};
"irc.rizon.net" = ircServer { name = "Rizon"; };
};
};
};
systemd.services.matrix-appservice-irc.serviceConfig = {
# XXX 2023/06/20: nixos specifies this + @aio and @memlock as forbidden
# 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";
};
}

View File

@@ -3,10 +3,13 @@
{ config, pkgs, ... }:
{
sane.persist.sys.plaintext = [
{ user = "mautrix-signal"; group = "mautrix-signal"; directory = "/var/lib/mautrix-signal"; }
{ user = "signald"; group = "signald"; directory = "/var/lib/signald"; }
{ user = "mautrix-signal"; group = "mautrix-signal"; path = "/var/lib/mautrix-signal"; }
{ user = "signald"; group = "signald"; path = "/var/lib/signald"; }
];
# allow synapse to read the registration file
users.users.matrix-synapse.extraGroups = [ "mautrix-signal" ];
services.signald.enable = true;
services.mautrix-signal.enable = true;
services.mautrix-signal.environmentFile =
@@ -27,7 +30,6 @@
};
sops.secrets."mautrix_signal_env" = {
format = "binary";
mode = "0440";
owner = config.users.users.mautrix-signal.name;
group = config.users.users.matrix-synapse.name;

View File

@@ -2,7 +2,7 @@
{
sane.persist.sys.plaintext = [
{ user = "navidrome"; group = "navidrome"; directory = "/var/lib/navidrome"; }
{ user = "navidrome"; group = "navidrome"; path = "/var/lib/navidrome"; }
];
services.navidrome.enable = true;
services.navidrome.settings = {
@@ -36,5 +36,5 @@
locations."/".proxyPass = "http://127.0.0.1:4533";
};
sane.services.trust-dns.zones."uninsane.org".inet.CNAME."music" = "native";
sane.dns.zones."uninsane.org".inet.CNAME."music" = "native";
}

View File

@@ -13,7 +13,19 @@ let
in
{
networking.firewall.allowedTCPPorts = [ 80 443 ];
sane.ports.ports."80" = {
protocol = [ "tcp" ];
visibleTo.lan = true;
visibleTo.wan = true;
visibleTo.ovpn = true; # so that letsencrypt can procure a cert for the mx record
description = "colin-http-uninsane.org";
};
sane.ports.ports."443" = {
protocol = [ "tcp" ];
visibleTo.lan = true;
visibleTo.wan = true;
description = "colin-https-uninsane.org";
};
services.nginx.enable = true;
services.nginx.appendConfig = ''
@@ -89,7 +101,8 @@ in
};
# allow ActivityPub clients to discover how to reach @user@uninsane.org
# TODO: waiting on https://git.pleroma.social/pleroma/pleroma/-/merge_requests/3361/
# 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;
@@ -122,8 +135,8 @@ in
sane.persist.sys.plaintext = [
# TODO: mode?
{ user = "acme"; group = "acme"; directory = "/var/lib/acme"; }
{ user = "colin"; group = "users"; directory = "/var/www/sites"; }
{ user = "acme"; group = "acme"; path = "/var/lib/acme"; }
{ user = "colin"; group = "users"; path = "/var/www/sites"; }
];
# let's encrypt default chain looks like:

View File

@@ -14,8 +14,8 @@
'';
};
sane.services.trust-dns.zones."uninsane.org".inet.CNAME."nixcache" = "native";
sane.dns.zones."uninsane.org".inet.CNAME."nixcache" = "native";
sane.services.nixserve.enable = true;
sane.services.nixserve.sopsFile = ../../../../secrets/servo.yaml;
sane.services.nixserve.secretKeyFile = config.sops.secrets.nix_serve_privkey.path;
}

View File

@@ -0,0 +1,98 @@
# ntfy: UnifiedPush notification delivery system
# - used to get push notifications out of Matrix and onto a Phone (iOS, Android, or a custom client)
#
# config options:
# - <https://docs.ntfy.sh/config/#config-options>
#
# usage:
# - ntfy sub https://ntfy.uninsane.org/TOPIC
# - ntfy pub https://ntfy.uninsane.org/TOPIC "my message"
# in production, TOPIC is a shared secret between the publisher (Matrix homeserver) and the subscriber (phone)
#
# administering:
# - sudo -u ntfy-sh ntfy access
#
# debugging:
# - make sure that the keepalives are good:
# - on the subscriber machine, run `lsof -i4` to find the port being used
# - `sudo tcpdump tcp port <p>`
# - shouldn't be too spammy
#
# matrix integration:
# - the user must manually point synapse to the ntfy endpoint:
# - `curl --header "Authorization: <your_token>" --data '{ "app_display_name": "sane-nix moby", "app_id": "ntfy.uninsane.org", "data": { "url": "https://ntfy.uninsane.org/_matrix/push/v1/notify", "format": "event_id_only" }, "device_display_name": "sane-nix moby", "kind": "http", "lang": "en-US", "profile_tag": "", "pushkey": "https://ntfy.uninsane.org/TOPIC" }' localhost:8008/_matrix/client/v3/pushers/set`
# where the token is grabbed from Element's help&about page when logged in
# - to remove, send this `curl` with `"kind": null`
{ config, lib, pkgs, ... }:
let
# subscribers need a non-443 public port to listen on as a way to easily differentiate this traffic
# at the IP layer, to enable e.g. wake-on-lan.
altPort = 2587;
in
{
sane.persist.sys.plaintext = [
# not 100% necessary to persist this, but ntfy does keep a 12hr (by default) cache
# for pushing notifications to users who become offline.
# ACLs also live here.
{ user = "ntfy-sh"; group ="ntfy-sh"; path = "/var/lib/ntfy-sh"; }
];
services.ntfy-sh.enable = true;
services.ntfy-sh.settings = {
base-url = "https://ntfy.uninsane.org";
behind-proxy = true; # not sure if needed
# keepalive interval is a ntfy-specific keepalive thing, where it sends actual data down the wire.
# it's not simple TCP keepalive.
# defaults to 45s.
# note that the client may still do its own TCP-level keepalives, typically every 30s
keepalive-interval = "15m";
log-level = "trace"; # trace, debug, info (default), warn, error
auth-default-access = "deny-all";
};
systemd.services.ntfy-sh.serviceConfig.DynamicUser = lib.mkForce false;
systemd.services.ntfy-sh.preStart = ''
# make this specific topic read-write by world
# it would be better to use the token system, but that's extra complexity for e.g.
# how do i plumb a secret into the Matrix notification pusher
#
# 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
'';
sops.secrets."ntfy-sh-topic" = {
mode = "0440";
owner = config.users.users.ntfy-sh.name;
group = config.users.users.ntfy-sh.name;
};
services.nginx.virtualHosts."ntfy.uninsane.org" = {
forceSSL = true;
enableACME = true;
listen = [
{ addr = "0.0.0.0"; port = altPort; ssl = true; }
{ addr = "0.0.0.0"; port = 443; ssl = true; }
{ addr = "0.0.0.0"; port = 80; ssl = false; }
];
locations."/" = {
proxyPass = "http://127.0.0.1:2586";
proxyWebsockets = true; #< support websocket upgrades. without that, `ntfy sub` hangs silently
recommendedProxySettings = true; #< adds headers so ntfy logs include the real IP
extraConfig = ''
# absurdly long timeout (86400s=24h) so that we never hang up on clients.
# make sure the client is smart enough to detect a broken proxy though!
proxy_read_timeout 86400s;
'';
};
};
sane.dns.zones."uninsane.org".inet.CNAME."ntfy" = "native";
sane.ports.ports."${builtins.toString altPort}" = {
protocol = [ "tcp" ];
visibleTo.lan = true;
visibleTo.wan = true;
description = "colin-ntfy.uninsane.org";
};
}

View File

@@ -0,0 +1,23 @@
# pict-rs is an image database/store used by Lemmy.
# i don't explicitly activate it here -- just adjust its defaults to be a bit friendlier
{ config, lib, ... }:
let
cfg = config.services.pict-rs;
in
{
sane.persist.sys.plaintext = lib.mkIf cfg.enable [
{ user = "pict-rs"; group = "pict-rs"; path = cfg.dataDir; }
];
systemd.services.pict-rs.serviceConfig = {
# fix to use a normal user so we can configure perms correctly
DynamicUser = lib.mkForce false;
User = "pict-rs";
Group = "pict-rs";
};
users.groups.pict-rs = {};
users.users.pict-rs = {
group = "pict-rs";
isSystemUser = true;
};
}

View File

@@ -1,14 +1,21 @@
# docs:
# - https://github.com/NixOS/nixpkgs/blob/master/nixos/modules/services/networking/pleroma.nix
# - https://docs.pleroma.social/backend/configuration/cheatsheet/
# - <https://github.com/NixOS/nixpkgs/blob/master/nixos/modules/services/networking/pleroma.nix>
# - <https://docs.pleroma.social/backend/configuration/cheatsheet/>
# example config:
# - <https://git.pleroma.social/pleroma/pleroma/-/blob/develop/config/config.exs>
#
# to run it in a oci-container: https://github.com/barrucadu/nixfiles/blob/master/services/pleroma.nix
# to run it in a oci-container: <https://github.com/barrucadu/nixfiles/blob/master/services/pleroma.nix>
#
# admin frontend: <https://fed.uninsane.org/pleroma/admin>
{ config, pkgs, ... }:
let
logLevel = "warn";
# logLevel = "debug";
in
{
sane.persist.sys.plaintext = [
# TODO: mode? could be more granular
{ user = "pleroma"; group = "pleroma"; directory = "/var/lib/pleroma"; }
{ user = "pleroma"; group = "pleroma"; path = "/var/lib/pleroma"; }
];
services.pleroma.enable = true;
services.pleroma.secretConfigFile = config.sops.secrets.pleroma_secrets.path;
@@ -56,6 +63,7 @@
database: "pleroma",
hostname: "localhost",
pool_size: 10,
prepare: :named,
parameters: [
plan_cache_mode: "force_custom_plan"
]
@@ -96,10 +104,22 @@
backends: [{ExSyslogger, :ex_syslogger}]
config :logger, :ex_syslogger,
level: :warn
# level: :debug
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
# 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: [
@@ -148,6 +168,7 @@
# inherit kTLS;
locations."/" = {
proxyPass = "http://127.0.0.1:4000";
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
@@ -166,23 +187,24 @@
add_header Referrer-Policy same-origin;
add_header X-Download-Options noopen;
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;
# 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;
'';
};
};
sane.services.trust-dns.zones."uninsane.org".inet.CNAME."fed" = "native";
sane.dns.zones."uninsane.org".inet.CNAME."fed" = "native";
sops.secrets."pleroma_secrets" = {
owner = config.users.users.pleroma.name;

View File

@@ -1,12 +1,39 @@
{ ... }:
{ pkgs, ... }:
let
GiB = n: MiB 1024*n;
MiB = n: KiB 1024*n;
KiB = n: 1024*n;
in
{
sane.persist.sys.plaintext = [
# TODO: mode?
{ user = "postgres"; group = "postgres"; directory = "/var/lib/postgresql"; }
{ user = "postgres"; group = "postgres"; path = "/var/lib/postgresql"; }
];
services.postgresql.enable = true;
# services.postgresql.dataDir = "/opt/postgresql/13";
# HOW TO UPDATE:
# postgres version updates are manual and require intervention.
# - `sane-stop-all-servo`
# - `systemctl start postgresql`
# - as `sudo su postgres`:
# - `cd /var/log/postgresql`
# - `pg_dumpall > state.sql`
# - `echo placeholder > <new_version>` # to prevent state from being created earlier than we want
# - then, atomically:
# - update the `services.postgresql.package` here
# - `dataDir` is atomically updated to match package; don't touch
# - `nixos-rebuild --flake . switch ; sane-stop-all-servo`
# - `sudo rm -rf /var/lib/postgresql/<new_version>`
# - `systemctl start postgresql`
# - as `sudo su postgres`:
# - `cd /var/lib/postgreql`
# - `psql -f state.sql`
# - restart dependent services (maybe test one at a time)
services.postgresql.package = pkgs.postgresql_15;
# XXX colin: for a proper deploy, we'd want to include something for Pleroma here too.
# services.postgresql.initialScript = pkgs.writeText "synapse-init.sql" ''
# CREATE ROLE "matrix-synapse" WITH LOGIN PASSWORD '<password goes here>';
@@ -17,10 +44,33 @@
# LC_CTYPE = "C";
# '';
# TODO: perf tuning
# 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 = { ... }
services.postgresql.settings = {
# DB Version: 15
# OS Type: linux
# DB Type: web
# Total Memory (RAM): 32 GB
# CPUs num: 12
# Data Storage: ssd
max_connections = 200;
shared_buffers = "8GB";
effective_cache_size = "24GB";
maintenance_work_mem = "2GB";
checkpoint_completion_target = 0.9;
wal_buffers = "16MB";
default_statistics_target = 100;
random_page_cost = 1.1;
effective_io_concurrency = 200;
work_mem = "10485kB";
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;
};
# daily backups to /var/backup
services.postgresqlBackup.enable = true;

View File

@@ -10,14 +10,31 @@
lib.mkIf false
{
sane.persist.sys.plaintext = [
{ user = "prosody"; group = "prosody"; directory = "/var/lib/prosody"; }
];
networking.firewall.allowedTCPPorts = [
5222 # XMPP client -> server
5269 # XMPP server -> server
5280 # bosh
5281 # Prosody HTTPS port (necessary?)
{ user = "prosody"; group = "prosody"; path = "/var/lib/prosody"; }
];
sane.ports.ports."5222" = {
protocol = [ "tcp" ];
visibleTo.lan = true;
visibleTo.wan = true;
description = "colin-xmpp-client-to-server";
};
sane.ports.ports."5269" = {
protocol = [ "tcp" ];
visibleTo.wan = true;
description = "colin-xmpp-server-to-server";
};
sane.ports.ports."5280" = {
protocol = [ "tcp" ];
visibleTo.lan = true;
visibleTo.wan = true;
description = "colin-xmpp-bosh";
};
sane.ports.ports."5281" = {
protocol = [ "tcp" ];
visibleTo.lan = true;
visibleTo.wan = true;
description = "colin-xmpp-prosody-https"; # necessary?
};
# provide access to certs
users.users.prosody.extraGroups = [ "nginx" ];

View File

@@ -1,12 +1,27 @@
{ pkgs, ... }:
{ config, pkgs, ... }:
{
sane.persist.sys.plaintext = [
# TODO: mode? we need this specifically for the stats tracking in .config/
{ user = "transmission"; group = "transmission"; directory = "/var/lib/transmission"; }
{ user = "transmission"; group = config.users.users.transmission.group; path = "/var/lib/transmission"; }
];
users.users.transmission.extraGroups = [ "media" ];
services.transmission.enable = true;
services.transmission.package = pkgs.transmission_4; #< 2023/09/06: nixpkgs `transmission` defaults to old 3.00
#v setting `group` this way doesn't tell transmission to `chown` the files it creates
# it's a nixpkgs setting which just runs the transmission daemon as this group
services.transmission.group = "media";
# transmission will by default not allow the world to read its files.
services.transmission.downloadDirPermissions = "775";
services.transmission.extraFlags = [
"--log-level=debug"
];
services.transmission.settings = {
# message-level = 3; #< enable for debug logging. 0-3, default is 2.
# 0.0.0.0 => allow rpc from any host: we gate it via firewall and auth requirement
rpc-bind-address = "0.0.0.0";
#rpc-host-whitelist = "bt.uninsane.org";
#rpc-whitelist = "*.*.*.*";
@@ -17,9 +32,8 @@
rpc-password = "{503fc8928344f495efb8e1f955111ca5c862ce0656SzQnQ5";
rpc-whitelist-enabled = false;
# download-dir = "/opt/uninsane/media/";
# hopefully, make the downloads world-readable
umask = 0;
# umask = 0; #< default is 2: i.e. deny writes from world
# force peer connections to be encrypted
encryption = 2;
@@ -27,7 +41,7 @@
# units in kBps
speed-limit-down = 3000;
speed-limit-down-enabled = true;
speed-limit-up = 300;
speed-limit-up = 600;
speed-limit-up-enabled = true;
# see: https://git.zknt.org/mirror/transmission/commit/cfce6e2e3a9b9d31a9dafedd0bdc8bf2cdb6e876?lang=bg-BG
@@ -35,17 +49,18 @@
download-dir = "/var/lib/uninsane/media";
incomplete-dir = "/var/lib/uninsane/media/incomplete";
# transmission regularly fails to move stuff from the incomplete dir to the main one, so disable:
# TODO: uncomment this line!
incomplete-dir-enabled = false;
};
# transmission will by default not allow the world to read its files.
services.transmission.downloadDirPermissions = "775";
systemd.services.transmission.after = [ "wireguard-wg-ovpns.service" ];
systemd.services.transmission.partOf = [ "wireguard-wg-ovpns.service" ];
systemd.services.transmission.serviceConfig = {
# run this behind the OVPN static VPN
NetworkNamespacePath = "/run/netns/ovpns";
LogLevelMax = "warning";
Restart = "on-failure";
RestartSec = "30s";
};
# service to automatically backup torrents i add to transmission
@@ -75,6 +90,6 @@
};
};
sane.services.trust-dns.zones."uninsane.org".inet.CNAME."bt" = "native";
sane.dns.zones."uninsane.org".inet.CNAME."bt" = "native";
}

View File

@@ -1,17 +1,26 @@
{ config, pkgs, ... }:
# TODO: split this file apart into smaller files to make it easier to understand
{ config, lib, pkgs, ... }:
let
nativeAddrs = lib.mapAttrs (_name: builtins.head) config.sane.dns.zones."uninsane.org".inet.A;
bindOvpn = "10.0.1.5";
in lib.mkMerge [
{
sane.services.trust-dns.enable = true;
services.trust-dns.enable = true;
sane.services.trust-dns.listenAddrsIPv4 = [
# specify each address explicitly, instead of using "*".
# this ensures responses are sent from the address at which the request was received.
"192.168.0.5"
"10.0.1.5"
];
sane.services.trust-dns.quiet = true;
# don't bind to IPv6 until i explicitly test that stack
services.trust-dns.settings.listen_addrs_ipv6 = [];
services.trust-dns.quiet = true;
# services.trust-dns.debug = true;
sane.services.trust-dns.zones."uninsane.org".TTL = 900;
sane.ports.ports."53" = {
protocol = [ "udp" "tcp" ];
visibleTo.lan = true;
visibleTo.wan = true;
description = "colin-dns-hosting";
};
sane.dns.zones."uninsane.org".TTL = 900;
# SOA record structure: <https://en.wikipedia.org/wiki/SOA_record#Structure>
# SOA MNAME RNAME (... rest)
@@ -21,26 +30,30 @@
# Refresh = how frequently secondary NS should query master
# Retry = how long secondary NS should wait until re-querying master after a failure (must be < Refresh)
# Expire = how long secondary NS should continue to reply to queries after master fails (> Refresh + Retry)
sane.services.trust-dns.zones."uninsane.org".inet = {
sane.dns.zones."uninsane.org".inet = {
SOA."@" = ''
ns1.uninsane.org. admin-dns.uninsane.org. (
2022122101 ; Serial
2023092101 ; Serial
4h ; Refresh
30m ; Retry
7d ; Expire
5m) ; Negative response TTL
'';
TXT."rev" = "2022122101";
TXT."rev" = "2023092101";
CNAME."native" = "%CNAMENATIVE%";
A."@" = "%ANATIVE%";
A."servo.wan" = "%AWAN%";
A."servo.lan" = config.sane.hosts.by-name."servo".lan-ip;
A."servo.hn" = config.sane.hosts.by-name."servo".wg-home.ip;
# XXX NS records must also not be CNAME
# it's best that we keep this identical, or a superset of, what org. lists as our NS.
# so, org. can specify ns2/ns3 as being to the VPN, with no mention of ns1. we provide ns1 here.
A."ns1" = "%NATIVE%";
A."ns1" = "%ANATIVE%";
A."ns2" = "185.157.162.178";
A."ns3" = "185.157.162.178";
A."ovpns" = "185.157.162.178";
A."native" = "%NATIVE%";
A."@" = "%NATIVE%";
NS."@" = [
"ns1.uninsane.org."
"ns2.uninsane.org."
@@ -48,20 +61,146 @@
];
};
sane.services.trust-dns.zones."uninsane.org".file =
"/var/lib/trust-dns/uninsane.org.zone";
services.trust-dns.settings.zones = [ "uninsane.org" ];
systemd.services.trust-dns.preStart = let
sed = "${pkgs.gnused}/bin/sed";
zone-dir = "/var/lib/trust-dns";
zone-out = "${zone-dir}/uninsane.org.zone";
zone-template = pkgs.writeText "uninsane.org.zone.in" config.sane.services.trust-dns.generatedZones."uninsane.org";
in ''
# make WAN records available to trust-dns
mkdir -p ${zone-dir}
ip=$(cat '${config.sane.services.dyn-dns.ipPath}')
${sed} s/%NATIVE%/$ip/ ${zone-template} > ${zone-out}
# TODO: can i transform this into some sort of service group?
# have `systemctl restart trust-dns.service` restart all the individual services?
systemd.services.trust-dns.serviceConfig = {
DynamicUser = lib.mkForce false;
User = "trust-dns";
Group = "trust-dns";
wantedBy = lib.mkForce [];
};
systemd.services.trust-dns.enable = false;
users.groups.trust-dns = {};
users.users.trust-dns = {
group = "trust-dns";
isSystemUser = true;
};
# sane.services.dyn-dns.restartOnChange = [ "trust-dns.service" ];
networking.nat.enable = true;
networking.nat.extraCommands = ''
# redirect incoming DNS requests from LAN addresses
# to the LAN-specialized DNS service
# N.B.: use the `nixos-*` chains instead of e.g. PREROUTING
# because they get cleanly reset across activations or `systemctl restart firewall`
# instead of accumulating cruft
iptables -t nat -A nixos-nat-pre -p udp --dport 53 \
-m iprange --src-range 10.78.76.0-10.78.79.255 \
-j DNAT --to-destination :1053
iptables -t nat -A nixos-nat-pre -p tcp --dport 53 \
-m iprange --src-range 10.78.76.0-10.78.79.255 \
-j DNAT --to-destination :1053
'';
sane.services.dyn-dns.restartOnChange = [ "trust-dns.service" ];
sane.ports.ports."1053" = {
# because the NAT above redirects in nixos-nat-pre, LAN requests behave as though they arrived on the external interface at the redirected port.
# TODO: try nixos-nat-post instead?
# TODO: or, don't NAT from port 53 -> port 1053, but rather nat from LAN addr to a loopback addr.
# - this is complicated in that loopback is a different interface than eth0, so rewriting the destination address would cause the packets to just be dropped by the interface
protocol = [ "udp" "tcp" ];
visibleTo.lan = true;
description = "colin-redirected-dns-for-lan-namespace";
};
}
{
systemd.services =
let
sed = "${pkgs.gnused}/bin/sed";
stateDir = "/var/lib/trust-dns";
zoneTemplate = pkgs.writeText "uninsane.org.zone.in" config.sane.dns.zones."uninsane.org".rendered;
zoneDirFor = flavor: "${stateDir}/${flavor}";
zoneFor = flavor: "${zoneDirFor flavor}/uninsane.org.zone";
mkTrustDnsService = opts: flavor: let
flags = let baseCfg = config.services.trust-dns; in
(lib.optional baseCfg.debug "--debug") ++ (lib.optional baseCfg.quiet "--quiet");
flagsStr = builtins.concatStringsSep " " flags;
anative = nativeAddrs."servo.${flavor}";
toml = pkgs.formats.toml { };
configTemplate = opts.config or (toml.generate "trust-dns-${flavor}.toml" (
(
lib.filterAttrsRecursive (_: v: v != null) config.services.trust-dns.settings
) // {
listen_addrs_ipv4 = opts.listen or [ anative ];
}
));
configFile = "${stateDir}/${flavor}-config.toml";
port = opts.port or 53;
in {
description = "trust-dns Domain Name Server (serving ${flavor})";
unitConfig.Documentation = "https://trust-dns.org/";
preStart = ''
wan=$(cat '${config.sane.services.dyn-dns.ipPath}')
${sed} s/%AWAN%/$wan/ ${configTemplate} > ${configFile}
'' + lib.optionalString (!opts ? config) ''
mkdir -p ${zoneDirFor flavor}
${sed} \
-e s/%CNAMENATIVE%/servo.${flavor}/ \
-e s/%ANATIVE%/${anative}/ \
-e s/%AWAN%/$wan/ \
${zoneTemplate} > ${zoneFor flavor}
'';
serviceConfig = config.systemd.services.trust-dns.serviceConfig // {
ExecStart = ''
${pkgs.trust-dns}/bin/trust-dns \
--port ${builtins.toString port} \
--zonedir ${zoneDirFor flavor}/ \
--config ${configFile} ${flagsStr}
'';
};
after = [ "network.target" ];
wantedBy = [ "multi-user.target" ];
};
in {
trust-dns-wan = mkTrustDnsService { listen = [ nativeAddrs."servo.lan" bindOvpn ]; } "wan";
trust-dns-lan = mkTrustDnsService { port = 1053; } "lan";
trust-dns-hn = mkTrustDnsService { port = 1053; } "hn";
trust-dns-hn-resolver = mkTrustDnsService {
config = pkgs.writeText "hn-resolver-config.toml" ''
# i host a resolver in the wireguard VPN so that clients can resolve DNS through the VPN.
# (that's what this file achieves).
#
# one would expect this resolver could host the authoritative zone for `uninsane.org`, and then forward everything else to the system resolver...
# and while that works for `dig`, it breaks for `nslookup` (and so `ssh`, etc).
#
# DNS responses include a flag for if the responding server is the authority of the zone queried.
# it seems that default Linux stub resolvers either:
# - expect DNSSEC when the response includes that bit, or
# - expect A records to be in the `answer` section instead of `additional` section.
# or perhaps something more nuanced. but for `nslookup` to be reliable, it has to talk to an
# instance of trust-dns which is strictly a resolver, with no authority.
# hence, this config: a resolver which forwards to the actual authority.
listen_addrs_ipv4 = ["${nativeAddrs."servo.hn"}"]
listen_addrs_ipv6 = []
[[zones]]
zone = "uninsane.org"
zone_type = "Forward"
stores = { type = "forward", name_servers = [{ socket_addr = "${nativeAddrs."servo.hn"}:1053", protocol = "udp", trust_nx_responses = true }] }
[[zones]]
# forward the root zone to the local 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-resolver";
};
sane.services.dyn-dns.restartOnChange = [
"trust-dns-wan.service"
"trust-dns-lan.service"
"trust-dns-hn.service"
# "trust-dns-hn-resolver.service" # doesn't need restart because it doesn't know about WAN IP
];
}
]

View File

@@ -1,22 +0,0 @@
{ config, ... }:
let
mkCrossFrom = localSystem: pkgs: import pkgs.path {
inherit localSystem;
crossSystem = pkgs.stdenv.hostPlatform.system;
inherit (config.nixpkgs) config overlays;
};
in
{
# the configuration of which specific package set `pkgs.cross` refers to happens elsewhere;
# here we just define them all.
nixpkgs.overlays = [
(next: prev: {
# non-emulated packages build *from* local *for* target.
# for large packages like the linux kernel which are expensive to build under emulation,
# the config can explicitly pull such packages from `pkgs.cross` to do more efficient cross-compilation.
crossFrom."x86_64-linux" = mkCrossFrom "x86_64-linux" next;
crossFrom."aarch64-linux" = mkCrossFrom "aarch64-linux" next;
})
];
}

View File

@@ -1,74 +1,79 @@
{ pkgs, ... }:
{ lib, pkgs, ... }:
{
imports = [
./cross.nix
./feeds.nix
./fs.nix
./hardware.nix
./hardware
./home
./i2p.nix
./hosts.nix
./ids.nix
./machine-id.nix
./net.nix
./nix-path
./persist.nix
./programs.nix
./programs
./secrets.nix
./ssh.nix
./users.nix
./users
./vpn.nix
];
sane.nixcache.enable-trusted-keys = true;
sane.programs.sysadminUtils.enableFor.system = true;
sane.programs.consoleUtils.enableFor.user.colin = true;
# 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";
sane.nixcache.enable = lib.mkDefault true;
sane.persist.enable = lib.mkDefault true;
sane.programs.sysadminUtils.enableFor.system = lib.mkDefault true;
sane.programs.consoleUtils.enableFor.user.colin = lib.mkDefault true;
nixpkgs.config.allowUnfree = true;
nixpkgs.config.allowBroken = true; # NIXPKGS_ALLOW_BROKEN
# time.timeZone = "America/Los_Angeles";
time.timeZone = "Etc/UTC"; # DST is too confusing for me => use a stable timezone
# allow `nix flake ...` command
# TODO: is this still required?
nix.extraOptions = ''
experimental-features = nix-command flakes
'';
# allow `nix-shell` (and probably nix-index?) to locate our patched and custom packages
nix.nixPath = [
"nixpkgs=${pkgs.path}"
"nixpkgs-overlays=${../..}/overlays"
];
# hardlinks identical files in the nix store to save 25-35% disk space.
# unclear _when_ this occurs. it's not a service.
# does the daemon continually scan the nix store?
# does the builder use some content-addressed db to efficiently dedupe?
nix.settings.auto-optimise-store = true;
fonts = {
enableDefaultFonts = true;
fonts = with pkgs; [ font-awesome twitter-color-emoji hack-font ];
fontconfig.enable = true;
fontconfig.defaultFonts = {
emoji = [ "Font Awesome 6 Free" "Twitter Color Emoji" ];
monospace = [ "Hack" ];
serif = [ "DejaVu Serif" ];
sansSerif = [ "DejaVu Sans" ];
};
systemd.services.nix-daemon.serviceConfig = {
# the nix-daemon manages nix builders
# kill nix-daemon subprocesses when systemd-oomd detects an out-of-memory condition
# see:
# - nixos PR that enabled systemd-oomd: <https://github.com/NixOS/nixpkgs/pull/169613>
# - systemd's docs on these properties: <https://www.freedesktop.org/software/systemd/man/systemd.resource-control.html#ManagedOOMSwap=auto%7Ckill>
#
# systemd's docs warn that without swap, systemd-oomd might not be able to react quick enough to save the system.
# see `man oomd.conf` for further tunables that may help.
#
# alternatively, apply this more broadly with `systemd.oomd.enableSystemSlice = true` or `enableRootSlice`
# TODO: also apply this to the guest user's slice (user-1100.slice)
# TODO: also apply this to distccd
ManagedOOMMemoryPressure = "kill";
ManagedOOMSwap = "kill";
};
system.activationScripts.nixClosureDiff = {
supportsDryActivation = true;
text = ''
# show which packages changed versions or are new/removed in this upgrade
# source: <https://github.com/luishfonseca/dotfiles/blob/32c10e775d9ec7cc55e44592a060c1c9aadf113e/modules/upgrade-diff.nix>
${pkgs.nvd}/bin/nvd --nix-bin-dir=${pkgs.nix}/bin diff /run/current-system "$systemConfig"
'';
};
# disable non-required packages like nano, perl, rsync, strace
environment.defaultPackages = [];
# programs.vim.defaultEditor = true;
environment.variables = {
EDITOR = "vim";
# git claims it should use EDITOR, but it doesn't!
GIT_EDITOR = "vim";
# TODO: these should be moved to `home.sessionVariables` (home-manager)
# Electron apps should use native wayland backend:
# https://nixos.wiki/wiki/Slack#Wayland
# Discord under sway crashes with this.
# NIXOS_OZONE_WL = "1";
# LIBGL_ALWAYS_SOFTWARE = "1";
};
# dconf docs: <https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/7/html/desktop_migration_and_administration_guide/profiles>
# this lets programs temporarily write user-level dconf settings (aka gsettings).
# they're written to ~/.config/dconf/user, unless `DCONF_PROFILE` is set to something other than the default of /etc/dconf/profile/user
# find keys/values with `dconf dump /`
programs.dconf.enable = true;
programs.dconf.packages = [
@@ -81,6 +86,7 @@
'';
})
];
# sane.programs.glib.enableFor.user.colin = true; # for `gsettings`
# link debug symbols into /run/current-system/sw/lib/debug
# hopefully picked up by gdb automatically?

View File

@@ -1,3 +1,13 @@
# where to find good stuff?
# - podcasts w/ a community: <https://lemmyverse.net/communities?query=podcast>
# - podcast rec thread: <https://lemmy.ml/post/1565858>
#
# candidates:
# - The Nonlinear Library (podcast): <https://forum.effectivealtruism.org/posts/JTZTBienqWEAjGDRv/listen-to-more-ea-content-with-the-nonlinear-library>
# - has ~10 posts per day, text-to-speech; i would need better tagging before adding this
# - <https://www.metaculus.com/questions/11102/introducing-the-metaculus-journal-podcast/>
# - dead since 2022/10 - 2023/03
{ lib, sane-data, ... }:
let
hourly = { freq = "hourly"; };
@@ -50,24 +60,42 @@ let
(fromDb "lexfridman.com/podcast" // rat)
## Astral Codex Ten
(fromDb "sscpodcast.libsyn.com" // rat)
## Less Wrong Curated
(fromDb "feeds.libsyn.com/421877" // rat)
## Econ Talk
(fromDb "feeds.simplecast.com/wgl4xEgL" // rat)
## Cory Doctorow -- both podcast & text entries
(fromDb "craphound.com" // pol)
## Maggie Killjoy -- referenced by Cory Doctorow
(fromDb "omny.fm/shows/cool-people-who-did-cool-stuff" // pol)
## also Maggie Killjoy
(fromDb "feeds.megaphone.fm/behindthebastards" // pol)
## Jennifer Briney
(fromDb "congressionaldish.libsyn.com" // pol)
(fromDb "werenotwrong.fireside.fm" // pol)
(fromDb "politicalorphanage.libsyn.com" // pol)
# (mkPod "https://podcasts.la.utexas.edu/this-is-democracy/feed/podcast/" // pol // weekly)
## Civboot -- https://anchor.fm/civboot
(fromDb "anchor.fm/s/34c7232c/podcast/rss" // tech)
## Emerge: making sense of what's next -- <https://www.whatisemerging.com/emergepodcast>
(mkPod "https://anchor.fm/s/21bc734/podcast/rss" // pol // infrequent)
(fromDb "feeds.feedburner.com/80000HoursPodcast" // rat)
## Daniel Huberman on sleep
(fromDb "feeds.megaphone.fm/hubermanlab" // uncat)
## Multidisciplinary Association for Psychedelic Studies
(fromDb "mapspodcast.libsyn.com" // uncat)
(fromDb "allinchamathjason.libsyn.com" // pol)
(fromDb "acquired.libsyn.com" // tech)
# The Intercept - Deconstructed; also available: <rss.acast.com/deconstructed>
(fromDb "rss.prod.firstlook.media/deconstructed/podcast.rss" // pol)
(fromDb "feeds.transistor.fm/acquired" // tech)
## ACQ2 - more "Acquired" episodes
(fromDb "acquiredlpbonussecretsecret.libsyn.com" // tech)
# The Intercept - Deconstructed
(fromDb "rss.acast.com/deconstructed")
# (fromDb "rss.prod.firstlook.media/deconstructed/podcast.rss" // pol) #< possible URL rot
## The Daily
(mkPod "https://feeds.simplecast.com/54nAGcIl" // pol // daily)
# The Intercept - Intercepted; also available: <https://rss.acast.com/intercepted-with-jeremy-scahill>
(fromDb "rss.prod.firstlook.media/intercepted/podcast.rss" // pol)
# The Intercept - Intercepted
(fromDb "rss.acast.com/intercepted-with-jeremy-scahill")
# (fromDb "rss.prod.firstlook.media/intercepted/podcast.rss" // pol) #< possible URL rot
(fromDb "podcast.posttv.com/itunes/post-reports.xml" // pol)
## Eric Weinstein
(fromDb "rss.art19.com/the-portal" // rat)
@@ -85,25 +113,48 @@ let
(fromDb "feeds.megaphone.fm/recodedecode" // tech)
## Matrix (chat) Live
(fromDb "feed.podbean.com/matrixlive/feed.xml" // tech)
(fromDb "cast.postmarketos.org" // tech)
(fromDb "podcast.thelinuxexp.com" // tech)
## Michael Malice - Your Welcome -- also available here: <https://origin.podcastone.com/podcast?categoryID2=2232>
(fromDb "rss.art19.com/your-welcome" // pol)
# (fromDb "rss.art19.com/your-welcome" // pol)
(fromDb "seattlenice.buzzsprout.com" // pol)
## Sci-Fi? has Peter Watts; author of No Moods, Ads or Cutesy Fucking Icons (rifters.com)
(fromDb "talesfromthebridge.buzzsprout.com" // tech)
## UnNamed Reverse Engineering Podcast
(fromDb "reverseengineering.libsyn.com/rss" // tech)
## The Witch Trials of J.K. Rowling
## - <https://www.thefp.com/witchtrials>
(mkPod "https://feeds.megaphone.fm/RUNMED9919162779" // pol // infrequent)
## Atlas Obscura
(fromDb "feeds.simplecast.com/xKJ93w_w" // uncat)
## Ezra Klein Show
(fromDb "feeds.simplecast.com/82FI35Px" // pol)
## Wireshark Podcast o_0
(fromDb "sharkbytes.transistor.fm" // tech)
## 3/4 German; 1/4 eps are English
(fromDb "omegataupodcast.net" // tech)
## Lateral with Tom Scott
(mkPod "https://audioboom.com/channels/5097784.rss" // tech)
];
texts = [
# AGGREGATORS (> 1 post/day)
(fromDb "lwn.net" // tech)
(fromDb "lesswrong.com" // rat)
(fromDb "econlib.org" // pol)
# (fromDb "lesswrong.com" // rat)
# (fromDb "econlib.org" // pol)
# AGGREGATORS (< 1 post/day)
(fromDb "palladiummag.com" // uncat)
(fromDb "profectusmag.com" // uncat)
(fromDb "semiaccurate.com" // tech)
(mkText "https://linuxphoneapps.org/blog/atom.xml" // tech // infrequent)
(fromDb "tuxphones.com" // tech)
(fromDb "spectrum.ieee.org" // tech)
# (fromDb "theregister.com" // tech)
(fromDb "thisweek.gnome.org" // tech)
# more nixos stuff here, but unclear how to subscribe: <https://nixos.org/blog/categories.html>
(mkText "https://nixos.org/blog/announcements-rss.xml" // tech // infrequent)
(mkText "https://nixos.org/blog/stories-rss.xml" // tech // weekly)
## n.b.: quality RSS list here: <https://forum.merveilles.town/thread/57/share-your-rss-feeds%21-6/>
(mkText "https://forum.merveilles.town/rss.xml" // pol // infrequent)
@@ -111,9 +162,14 @@ let
(fromDb "rifters.com/crawl" // uncat)
# DEVELOPERS
(fromDb "blog.jmp.chat" // tech)
(fromDb "uninsane.org" // tech)
(fromDb "ascii.textfiles.com" // tech) # Jason Scott
(fromDb "xn--gckvb8fzb.com" // tech)
(fromDb "amosbbatto.wordpress.com" // tech)
(fromDb "fasterthanli.me" // tech)
(fromDb "mg.lol" // tech)
(fromDb "drewdevault.com" // tech)
# (fromDb "drewdevault.com" // tech)
## Ken Shirriff
(fromDb "righto.com" // tech)
## shared blog by a few NixOS devs, notably onny
@@ -128,9 +184,14 @@ let
(fromDb "ianthehenry.com" // tech)
(fromDb "bitbashing.io" // tech)
(fromDb "idiomdrottning.org" // uncat)
(mkText "http://boginjr.com/feed" // tech // infrequent)
(mkText "https://anish.lakhwara.com/home.html" // tech // weekly)
(fromDb "jefftk.com" // tech)
(fromDb "pomeroyb.com" // tech)
# (mkText "https://til.simonwillison.net/tils/feed.atom" // tech // weekly)
# TECH PROJECTS
(fromDb "blog.rust-lang.org" // tech)
# (TECH; POL) COMMENTATORS
## Matt Webb -- engineering-ish, but dreamy
@@ -147,7 +208,8 @@ let
(fromDb "lynalden.com" // pol)
(fromDb "austinvernon.site" // tech)
(mkSubstack "oversharing" // pol // daily)
(mkSubstack "doomberg" // tech // weekly)
(mkSubstack "byrnehobart" // pol // infrequent)
# (mkSubstack "doomberg" // tech // weekly) # articles are all pay-walled
## David Rosenthal
(fromDb "blog.dshr.org" // pol)
## Matt Levine
@@ -155,6 +217,7 @@ let
(fromDb "stpeter.im/atom.xml" // pol)
## Peter Saint-Andre -- side project of stpeter.im
(fromDb "philosopher.coach" // rat)
(fromDb "morningbrew.com/feed" // pol)
# RATIONALITY/PHILOSOPHY/ETC
(mkSubstack "samkriss" // humor // infrequent)
@@ -173,10 +236,16 @@ let
(fromDb "sideways-view.com" // rat)
## Sean Carroll
(fromDb "preposterousuniverse.com" // rat)
(mkSubstack "eliqian" // rat // weekly)
(mkText "https://acoup.blog/feed" // rat // weekly)
(fromDb "mindingourway.com" // rat)
## mostly dating topics. not advice, or humor, but looking through a social lens
(fromDb "putanumonit.com" // rat)
# LOCAL
(fromDb "capitolhillseattle.com" // pol)
# CODE
# (mkText "https://github.com/Kaiteki-Fedi/Kaiteki/commits/master.atom" // tech // infrequent)
];
@@ -184,8 +253,10 @@ let
images = [
(fromDb "smbc-comics.com" // img // humor)
(fromDb "xkcd.com" // img // humor)
(fromDb "turnoff.us" // img // humor)
(fromDb "pbfcomics.com" // img // humor)
# (mkImg "http://dilbert.com/feed" // humor // daily)
(fromDb "poorlydrawnlines.com/feed" // img // humor)
# ART
(fromDb "miniature-calendar.com" // img // art // daily)

View File

@@ -1,74 +1,143 @@
{ pkgs, ... }:
# docs
# - x-systemd options: <https://www.freedesktop.org/software/systemd/man/systemd.mount.html>
let sshOpts = rec {
fsType = "fuse.sshfs";
optionsBase = [
"x-systemd.automount"
"_netdev"
"user"
"identityfile=/home/colin/.ssh/id_ed25519"
"allow_other"
"default_permissions"
];
optionsColin = optionsBase ++ [
"transform_symlinks"
"idmap=user"
"uid=1000"
"gid=100"
];
{ lib, pkgs, sane-lib, ... }:
optionsRoot = optionsBase ++ [
# 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"
];
};
let
fsOpts = rec {
common = [
"_netdev"
"noatime"
"user" # allow any user with access to the device to mount the fs
"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
];
auto = [ "x-systemd.automount" ];
noauto = [ "noauto" ]; # don't mount as part of remote-fs.target
wg = [
"x-systemd.requires=wireguard-wg-home.service"
"x-systemd.after=wireguard-wg-home.service"
];
ssh = common ++ [
"identityfile=/home/colin/.ssh/id_ed25519"
"allow_other"
"default_permissions"
];
sshColin = ssh ++ [
"transform_symlinks"
"idmap=user"
"uid=1000"
"gid=100"
];
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
# soft = on "major timeout", report I/O error to userspace
# 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.
nfs = common ++ [
# "actimeo=10"
"bg"
"retrans=4"
"retry=0"
"soft"
"timeo=15"
"nofail" # don't fail remote-fs.target when this mount fails (not an option for sshfs else would be common)
];
};
remoteHome = host: {
fileSystems."/mnt/${host}-home" = {
device = "colin@${host}:/home/colin";
fsType = "fuse.sshfs";
options = fsOpts.sshColin ++ fsOpts.noauto;
noCheck = true;
};
sane.fs."/mnt/${host}-home" = sane-lib.fs.wantedDir;
};
in
{
environment.pathsToLink = [
# needed to achieve superuser access for user-mounted filesystems (see optionsRoot above)
# we can only link whole directories here, even though we're only interested in pkgs.openssh
"/libexec"
];
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";
fileSystems."/mnt/servo-media-wan" = {
device = "colin@uninsane.org:/var/lib/uninsane/media";
inherit (sshOpts) fsType;
options = sshOpts.optionsColin;
noCheck = true;
};
fileSystems."/mnt/servo-media-lan" = {
device = "colin@servo:/var/lib/uninsane/media";
inherit (sshOpts) fsType;
options = sshOpts.optionsColin;
noCheck = true;
};
fileSystems."/mnt/servo-root-wan" = {
device = "colin@uninsane.org:/";
inherit (sshOpts) fsType;
options = sshOpts.optionsRoot;
noCheck = true;
};
fileSystems."/mnt/servo-root-lan" = {
device = "colin@servo:/";
inherit (sshOpts) fsType;
options = sshOpts.optionsRoot;
noCheck = true;
};
fileSystems."/mnt/desko-home" = {
device = "colin@desko:/home/colin";
inherit (sshOpts) fsType;
options = sshOpts.optionsColin;
noCheck = true;
};
fileSystems."/mnt/desko-root" = {
device = "colin@desko:/";
inherit (sshOpts) fsType;
options = sshOpts.optionsRoot;
noCheck = true;
};
# 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.systemPackages = [
pkgs.sshfs-fuse
];
}
# fileSystems."/mnt/servo-nfs" = {
# device = "servo-hn:/";
# noCheck = true;
# fsType = "nfs";
# options = fsOpts.nfs ++ fsOpts.auto ++ fsOpts.wg;
# };
fileSystems."/mnt/servo-nfs/media" = {
device = "servo-hn:/media";
noCheck = true;
fsType = "nfs";
options = fsOpts.nfs ++ fsOpts.auto ++ fsOpts.wg;
};
fileSystems."/mnt/servo-nfs/playground" = {
device = "servo-hn:/playground";
noCheck = true;
fsType = "nfs";
options = fsOpts.nfs ++ fsOpts.auto ++ fsOpts.wg;
};
# fileSystems."/mnt/servo-media-nfs" = {
# device = "servo-hn:/media";
# noCheck = true;
# fsType = "nfs";
# options = fsOpts.common ++ fsOpts.auto;
# };
sane.fs."/mnt/servo-media" = sane-lib.fs.wantedSymlinkTo "/mnt/servo-nfs/media";
environment.pathsToLink = [
# needed to achieve superuser access for user-mounted filesystems (see optionsRoot above)
# we can only link whole directories here, even though we're only interested in pkgs.openssh
"/libexec"
];
environment.systemPackages = [
pkgs.sshfs-fuse
];
}
(remoteHome "desko")
(remoteHome "lappy")
(remoteHome "moby")
]

View File

@@ -1,6 +1,10 @@
{ lib, pkgs, ... }:
{
imports = [
./x86_64.nix
];
boot.initrd.supportedFilesystems = [ "ext4" "btrfs" "ext2" "ext3" "vfat" ];
# useful emergency utils
boot.initrd.extraUtilsCommands = ''
@@ -23,10 +27,28 @@
# non-free firmware
hardware.enableRedistributableFirmware = true;
services.fwupd.enable = true;
# powertop will default to putting USB devices -- including HID -- to sleep after TWO SECONDS
powerManagement.powertop.enable = false;
# linux CPU governor: <https://www.kernel.org/doc/Documentation/cpu-freq/governors.txt>
# - options:
# - "powersave" => force CPU to always run at lowest supported frequency
# - "performance" => force CPU to always run at highest frequency
# - "ondemand" => adjust frequency based on load
# - "conservative" (ondemand but slower to adjust)
# - "schedutil"
# - "userspace"
# - not all options are available for all platforms
# - intel (intel_pstate) appears to manage scaling w/o intervention/control from the OS.
# - AMD (acpi-cpufreq) appears to manage scaling via the OS *or* HW. but the ondemand defaults never put it to max hardware frequency.
# - qualcomm (cpufreq-dt) appears to manage scaling *only* via the OS. ondemand governor exercises the full range.
# - query details with `sudo cpupower frequency-info`
powerManagement.cpuFreqGovernor = "ondemand";
services.logind.extraConfig = ''
# dont shutdown when power button is short-pressed
HandlePowerKey=ignore
'';
# services.snapper.configs = {
# root = {

View File

@@ -9,17 +9,7 @@
# efi_pstore evivars
];
# enable cross compilation
boot.binfmt.emulatedSystems = [ "aarch64-linux" ];
# nixpkgs.config.allowUnsupportedSystem = true;
# nixpkgs.crossSystem.system = "aarch64-linux";
powerManagement.cpuFreqGovernor = "powersave";
hardware.cpu.amd.updateMicrocode = true; # desktop
hardware.cpu.intel.updateMicrocode = true; # laptop
hardware.opengl.driSupport = true;
# For 32 bit applications
hardware.opengl.driSupport32Bit = true;
};
}

View File

@@ -1,11 +0,0 @@
# Terminal UI mail client
{ config, sane-lib, ... }:
{
sops.secrets."aerc_accounts" = {
owner = config.users.users.colin.name;
sopsFile = ../../../secrets/universal/aerc_accounts.conf;
format = "binary";
};
sane.user.fs.".config/aerc/accounts.conf" = sane-lib.fs.wantedSymlinkTo config.sops.secrets.aerc_accounts.path;
}

View File

@@ -1,23 +1,9 @@
{ ... }:
{
imports = [
./aerc.nix
./firefox.nix
./gfeeds.nix
./git.nix
./gpodder.nix
./keyring.nix
./kitty.nix
./libreoffice.nix
./keyring
./mime.nix
./mpv.nix
./neovim.nix
./newsflash.nix
./splatmoji.nix
./ssh.nix
./sublime-music.nix
./vlc.nix
./xdg-dirs.nix
./zsh
];
}

View File

@@ -1,203 +0,0 @@
# common settings to toggle (at runtime, in about:config):
# > security.ssl.require_safe_negotiation
# librewolf is a forked firefox which patches firefox to allow more things
# (like default search engines) to be configurable at runtime.
# many of the settings below won't have effect without those patches.
# see: https://gitlab.com/librewolf-community/settings/-/blob/master/distribution/policies.json
{ config, lib, pkgs, sane-lib, ...}:
with lib;
let
cfg = config.sane.web-browser;
# allow easy switching between firefox and librewolf with `defaultSettings`, below
librewolfSettings = {
browser = pkgs.librewolf-unwrapped;
# browser = pkgs.librewolf-unwrapped.overrideAttrs (drv: {
# # this allows side-loading unsigned addons
# MOZ_REQUIRE_SIGNING = false;
# });
libName = "librewolf";
dotDir = ".librewolf";
cacheDir = ".cache/librewolf"; # TODO: is it?
desktop = "librewolf.desktop";
};
firefoxSettings = {
browser = pkgs.firefox-esr-unwrapped;
libName = "firefox";
dotDir = ".mozilla/firefox";
cacheDir = ".cache/mozilla";
desktop = "firefox.desktop";
};
defaultSettings = firefoxSettings;
# defaultSettings = librewolfSettings;
addon = name: extid: hash: pkgs.fetchFirefoxAddon {
inherit name hash;
url = "https://addons.mozilla.org/firefox/downloads/latest/${name}/latest.xpi";
# extid can be found by unar'ing the above xpi, and copying browser_specific_settings.gecko.id field
fixedExtid = extid;
};
localAddon = pkg: pkgs.fetchFirefoxAddon {
inherit (pkg) name;
src = "${pkg}/share/mozilla/extensions/\\{ec8030f7-c20a-464f-9b0e-13a3a9e97384\\}/${pkg.extid}.xpi";
fixedExtid = pkg.extid;
};
package = pkgs.wrapFirefox cfg.browser.browser {
# inherit the default librewolf.cfg
# it can be further customized via ~/.librewolf/librewolf.overrides.cfg
inherit (pkgs.librewolf-unwrapped) extraPrefsFiles;
inherit (cfg.browser) libName;
extraNativeMessagingHosts = [ pkgs.browserpass ];
# extraNativeMessagingHosts = [ pkgs.gopass-native-messaging-host ];
nixExtensions = concatMap (ext: optional ext.enable ext.package) (attrValues cfg.addons);
extraPolicies = {
NoDefaultBookmarks = true;
SearchEngines = {
Default = "DuckDuckGo";
};
AppUpdateURL = "https://localhost";
DisableAppUpdate = true;
OverrideFirstRunPage = "";
OverridePostUpdatePage = "";
DisableSystemAddonUpdate = true;
DisableFirefoxStudies = true;
DisableTelemetry = true;
DisableFeedbackCommands = true;
DisablePocket = true;
DisableSetDesktopBackground = false;
# remove many default search providers
# XXX this seems to prevent the `nixExtensions` from taking effect
# Extensions.Uninstall = [
# "google@search.mozilla.org"
# "bing@search.mozilla.org"
# "amazondotcom@search.mozilla.org"
# "ebay@search.mozilla.org"
# "twitter@search.mozilla.org"
# ];
# XXX doesn't seem to have any effect...
# docs: https://github.com/mozilla/policy-templates#homepage
# Homepage = {
# HomepageURL = "https://uninsane.org/";
# StartPage = "homepage";
# };
# NewTabPage = true;
};
};
addonOpts = types.submodule {
options = {
package = mkOption {
type = types.package;
};
enable = mkOption {
type = types.bool;
};
};
};
in
{
options = {
sane.web-browser.browser = mkOption {
default = defaultSettings;
type = types.attrs;
};
sane.web-browser.persistData = mkOption {
description = "optional store name to which persist browsing data (like history)";
type = types.nullOr types.str;
default = null;
};
sane.web-browser.persistCache = mkOption {
description = "optional store name to which persist browser cache";
type = types.nullOr types.str;
default = "cryptClearOnBoot";
};
sane.web-browser.addons = mkOption {
type = types.attrsOf addonOpts;
default = {
# get names from:
# - ~/ref/nix-community/nur-combined/repos/rycee/pkgs/firefox-addons/generated-firefox-addons.nix
# `wget ...xpi`; `unar ...xpi`; `cat */manifest.json | jq '.browser_specific_settings.gecko.id'`
# browserpass-ce.package = addon "browserpass-ce" "browserpass@maximbaz.com" "sha256-sXgUBbRvMnRpeIW1MTkmTcoqtW/8RDXAkxAq1evFkpc=";
browserpass-extension.package = localAddon pkgs.browserpass-extension;
# TODO: build bypass-paywalls from source? it's mysteriously disappeared from the Mozilla store.
# bypass-paywalls-clean.package = addon "bypass-paywalls-clean" "{d133e097-46d9-4ecc-9903-fa6a722a6e0e}" "sha256-oUwdqdAwV3DezaTtOMx7A/s4lzIws+t2f08mwk+324k=";
ether-metamask.package = addon "ether-metamask" "webextension@metamask.io" "sha256-G+MwJDOcsaxYSUXjahHJmkWnjLeQ0Wven8DU/lGeMzA=";
i2p-in-private-browsing.package = addon "i2p-in-private-browsing" "i2ppb@eyedeekay.github.io" "sha256-dJcJ3jxeAeAkRvhODeIVrCflvX+S4E0wT/PyYzQBQWs=";
sidebery.package = addon "sidebery" "{3c078156-979c-498b-8990-85f7987dd929}" "sha256-YONfK/rIjlsrTgRHIt3km07Q7KnpIW89Z9r92ZSCc6w=";
sponsorblock.package = addon "sponsorblock" "sponsorBlocker@ajay.app" "sha256-hRsvLaAsVm3dALsTrJqHTNgRFAQcU7XSaGhr5G6+mFs=";
ublacklist.package = addon "ublacklist" "@ublacklist" "sha256-RqY5iHzbL2qizth7aguyOKWPyINXmrwOlf/OsfqAS48=";
ublock-origin.package = addon "ublock-origin" "uBlock0@raymondhill.net" "sha256-a/ivUmY1P6teq9x0dt4CbgHt+3kBsEMMXlOfZ5Hx7cg=";
browserpass-extension.enable = lib.mkDefault true;
# bypass-paywalls-clean.enable = lib.mkDefault true;
ether-metamask.enable = lib.mkDefault true;
i2p-in-private-browsing.enable = lib.mkDefault config.services.i2p.enable;
sidebery.enable = lib.mkDefault true;
sponsorblock.enable = lib.mkDefault true;
ublacklist.enable = lib.mkDefault true;
ublock-origin.enable = lib.mkDefault true;
};
};
};
config = {
sane.programs.web-browser = {
inherit package;
# TODO: define the persistence & fs config here
};
sane.programs.guiApps.suggestedPrograms = [ "web-browser" ];
# uBlock filter list configuration.
# specifically, enable the GDPR cookie prompt blocker.
# data.toOverwrite.filterLists is additive (i.e. it supplements the default filters)
# this configuration method is documented here:
# - <https://github.com/gorhill/uBlock/issues/2986#issuecomment-364035002>
# the specific attribute path is found via scraping ublock code here:
# - <https://github.com/gorhill/uBlock/blob/master/src/js/storage.js>
# - <https://github.com/gorhill/uBlock/blob/master/assets/assets.json>
sane.user.fs."${cfg.browser.dotDir}/managed-storage/uBlock0@raymondhill.net.json" = sane-lib.fs.wantedText ''
{
"name": "uBlock0@raymondhill.net",
"description": "ignored",
"type": "storage",
"data": {
"toOverwrite": "{\"filterLists\": [\"fanboy-cookiemonster\"]}"
}
}
'';
sane.user.fs."${cfg.browser.dotDir}/${cfg.browser.libName}.overrides.cfg" = sane-lib.fs.wantedText ''
// if we can't query the revocation status of a SSL cert because the issuer is offline,
// treat it as unrevoked.
// see: <https://librewolf.net/docs/faq/#im-getting-sec_error_ocsp_server_error-what-can-i-do>
defaultPref("security.OCSP.require", false);
'';
# flush the cache to disk to avoid it taking up too much tmp
sane.user.persist.byPath."${cfg.browser.cacheDir}" = lib.mkIf (cfg.persistCache != null) {
store = cfg.persistCache;
};
sane.user.persist.byPath."${cfg.browser.dotDir}/default" = lib.mkIf (cfg.persistData != null) {
store = cfg.persistData;
};
sane.user.fs."${cfg.browser.dotDir}/default" = sane-lib.fs.wantedDir;
# instruct Firefox to put the profile in a predictable directory (so we can do things like persist just it).
# XXX: the directory *must* exist, even if empty; Firefox will not create the directory itself.
sane.user.fs."${cfg.browser.dotDir}/profiles.ini" = sane-lib.fs.wantedText ''
[Profile0]
Name=default
IsRelative=1
Path=default
Default=1
[General]
StartWithLastProfile=1
'';
};
}

View File

@@ -1,42 +0,0 @@
# gnome feeds RSS viewer
{ config, lib, sane-lib, ... }:
let
feeds = sane-lib.feeds;
all-feeds = config.sane.feeds;
wanted-feeds = feeds.filterByFormat ["text" "image"] all-feeds;
in {
sane.user.fs.".config/org.gabmus.gfeeds.json" = sane-lib.fs.wantedText (
builtins.toJSON {
# feed format is a map from URL to a dict,
# with dict["tags"] a list of string tags.
feeds = sane-lib.mapToAttrs (feed: {
name = feed.url;
value.tags = [ feed.cat feed.freq ];
}) wanted-feeds;
dark_reader = false;
new_first = true;
# windowsize = {
# width = 350;
# height = 650;
# };
max_article_age_days = 90;
enable_js = false;
max_refresh_threads = 3;
# saved_items = {};
# read_items = [];
show_read_items = true;
full_article_title = true;
# views: "webview", "reader", "rsscont"
default_view = "rsscont";
open_links_externally = true;
full_feed_name = false;
refresh_on_startup = true;
tags = lib.unique (
(builtins.catAttrs "cat" wanted-feeds) ++ (builtins.catAttrs "freq" wanted-feeds)
);
open_youtube_externally = false;
media_player = "vlc"; # default: mpv
}
);
}

View File

@@ -1,18 +0,0 @@
{ lib, pkgs, sane-lib, ... }:
let
mkCfg = lib.generators.toINI { };
in
{
sane.user.fs.".config/git/config" = sane-lib.fs.wantedText (mkCfg {
user.name = "Colin";
user.email = "colin@uninsane.org";
alias.co = "checkout";
# difftastic docs:
# - <https://difftastic.wilfred.me.uk/git.html>
diff.tool = "difftastic";
difftool.prompt = false;
"difftool \"difftastic\"".cmd = ''${pkgs.difftastic}/bin/difft "$LOCAL" "$REMOTE"'';
# now run `git difftool` to use difftastic git
});
}

View File

@@ -1,12 +0,0 @@
# gnome feeds RSS viewer
{ config, sane-lib, ... }:
let
feeds = sane-lib.feeds;
all-feeds = config.sane.feeds;
wanted-feeds = feeds.filterByFormat ["podcast"] all-feeds;
in {
sane.user.fs.".config/gpodderFeeds.opml" = sane-lib.fs.wantedText (
feeds.feedsToOpml wanted-feeds
);
}

View File

@@ -1,11 +0,0 @@
{ config, sane-lib, ... }:
{
sane.user.persist.private = [ ".local/share/keyrings" ];
sane.user.fs."private/.local/share/keyrings/default" = {
generated.script.script = builtins.readFile ../../../scripts/init-keyring;
# TODO: is this `wantedBy` needed? can we inherit it?
wantedBy = [ config.sane.fs."/home/colin/private".unit ];
};
}

View File

@@ -0,0 +1,17 @@
{ config, pkgs, sane-lib, ... }:
let
init-keyring = pkgs.static-nix-shell.mkBash {
pname = "init-keyring";
src = ./.;
};
in
{
sane.user.persist.private = [ ".local/share/keyrings" ];
sane.user.fs."private/.local/share/keyrings/default" = {
generated.command = [ "${init-keyring}/bin/init-keyring" ];
wantedBy = [ config.sane.fs."/home/colin/private".unit ];
wantedBeforeBy = [ ]; # don't created this as part of `multi-user.target`
};
}

View File

@@ -1,4 +1,5 @@
#!/bin/sh
#!/usr/bin/env nix-shell
#!nix-shell -i bash
# initializes the default libsecret keyring (used by gnome-keyring) if not already initialized.
# this initializes it to be plaintext/unencrypted.

View File

@@ -1,68 +0,0 @@
{ pkgs, sane-lib, ... }:
{
sane.user.fs.".config/kitty/kitty.conf" = sane-lib.fs.wantedText ''
# docs: https://sw.kovidgoyal.net/kitty/conf/
# disable terminal bell (when e.g. you backspace too many times)
enable_audio_bell no
map ctrl+n new_os_window_with_cwd
include ${pkgs.kitty-themes}/themes/PaperColor_dark.conf
'';
# THEME CHOICES:
# docs: https://github.com/kovidgoyal/kitty-themes
# theme = "1984 Light"; # dislike: awful, harsh blues/teals
# theme = "Adventure Time"; # dislike: harsh (dark)
# theme = "Atom One Light"; # GOOD: light theme. all color combos readable. not a huge fan of the blue.
# theme = "Belafonte Day"; # dislike: too low contrast for text colors
# theme = "Belafonte Night"; # better: dark theme that's easy on the eyes. all combos readable. low contrast.
# theme = "Catppuccin"; # dislike: a bit pale/low-contrast (dark)
# theme = "Desert"; # mediocre: colors are harsh
# theme = "Earthsong"; # BEST: dark theme. readable, good contrast. unique, but decent colors.
# theme = "Espresso Libre"; # better: dark theme. readable, but meh colors
# theme = "Forest Night"; # decent: very pastel. it's workable, but unconventional and muted/flat.
# theme = "Gruvbox Material Light Hard"; # mediocre light theme.
# theme = "kanagawabones"; # better: dark theme. colors are too background-y
# theme = "Kaolin Dark"; # dislike: too dark
# theme = "Kaolin Breeze"; # mediocre: not-too-harsh light theme, but some parts are poor contrast
# theme = "Later This Evening"; # mediocre: not-too-harsh dark theme, but cursor is poor contrast
# theme = "Material"; # decent: light theme, few colors.
# theme = "Mayukai"; # decent: not-too-harsh dark theme. the teal is a bit straining
# theme = "Nord"; # mediocre: pale background, low contrast
# theme = "One Half Light"; # better: not-too-harsh light theme. contrast could be better
# theme = "PaperColor Dark"; # BEST: dark theme, very readable still the colors are background-y
# theme = "Parasio Dark"; # dislike: too low contrast
# theme = "Pencil Light"; # better: not-too-harsh light theme. decent contrast.
# theme = "Pnevma"; # dislike: too low contrast
# theme = "Piatto Light"; # better: readable light theme. pleasing colors. powerline prompt is hard to read.
# theme = "Rosé Pine Dawn"; # GOOD: light theme. all color combinations are readable. it is very mild -- may need to manually tweak contrast. tasteful colors
# theme = "Rosé Pine Moon"; # GOOD: dark theme. tasteful colors. but background is a bit intense
# theme = "Sea Shells"; # mediocre. not all color combos are readable
# theme = "Solarized Light"; # mediocre: not-too-harsh light theme; GREAT background; but some colors are low contrast
# theme = "Solarized Dark Higher Contrast"; # better: dark theme, decent colors
# theme = "Sourcerer"; # mediocre: ugly colors
# theme = "Space Gray"; # mediocre: too muted
# theme = "Space Gray Eighties"; # better: all readable, decent colors
# theme = "Spacemacs"; # mediocre: too muted
# theme = "Spring"; # mediocre: readable light theme, but the teal is ugly.
# theme = "Srcery"; # better: highly readable. colors are ehhh
# theme = "Substrata"; # decent: nice colors, but a bit flat.
# theme = "Sundried"; # mediocre: the solar text makes me squint
# theme = "Symfonic"; # mediocre: the dark purple has low contrast to the black bg.
# theme = "Tango Light"; # dislike: teal is too grating
# theme = "Tokyo Night Day"; # medicore: too muted
# theme = "Tokyo Night"; # better: tasteful. a bit flat
# theme = "Tomorrow"; # GOOD: all color combinations are readable. contrast is slightly better than Rose. on the blander side
# theme = "Treehouse"; # dislike: the orange is harsh on my eyes.
# theme = "Urple"; # dislike: weird palette
# theme = "Warm Neon"; # decent: not-too-harsh dark theme. the green is a bit unattractive
# theme = "Wild Cherry"; # GOOD: dark theme: nice colors. a bit flat
# theme = "Xcodedark"; # dislike: bad palette
# theme = "citylights"; # decent: dark theme. some parts have just a bit low contrast
# theme = "neobones_light"; # better light theme. the background is maybe too muted
# theme = "vimbones";
# theme = "zenbones_dark"; # mediocre: readable, but meh colors
# theme = "zenbones_light"; # decent: light theme. all colors are readable. contrast is passable but not excellent. highlight color is BAD
# theme = "zenwritten_dark"; # mediocre: looks same as zenbones_dark
}

View File

@@ -1,14 +0,0 @@
{ sane-lib, ... }:
{
# libreoffice: disable first-run stuff
sane.user.fs.".config/libreoffice/4/user/registrymodifications.xcu" = sane-lib.fs.wantedText ''
<?xml version="1.0" encoding="UTF-8"?>
<oor:items xmlns:oor="http://openoffice.org/2001/registry" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<item oor:path="/org.openoffice.Office.Common/Misc"><prop oor:name="FirstRun" oor:op="fuse"><value>false</value></prop></item>
<item oor:path="/org.openoffice.Office.Common/Misc"><prop oor:name="ShowTipOfTheDay" oor:op="fuse"><value>false</value></prop></item>
</oor:items>
'';
# <item oor:path="/org.openoffice.Setup/Product"><prop oor:name="LastTimeDonateShown" oor:op="fuse"><value>1667693880</value></prop></item>
# <item oor:path="/org.openoffice.Setup/Product"><prop oor:name="LastTimeGetInvolvedShown" oor:op="fuse"><value>1667693880</value></prop></item>
}

View File

@@ -1,42 +1,28 @@
{ config, sane-lib, ...}:
{ config, lib, ...}:
let
www = config.sane.web-browser.browser.desktop;
pdf = "org.gnome.Evince.desktop";
md = "obsidian.desktop";
thumb = "org.gnome.gThumb.desktop";
video = "vlc.desktop";
# audio = "mpv.desktop";
audio = "vlc.desktop";
# ProgramConfig -> { "<mime-type>" = { priority, desktop }; }
weightedMimes = prog: builtins.mapAttrs (_key: desktop: { priority = prog.mime.priority; desktop = desktop; }) prog.mime.associations;
# [ { "<mime-type>" = { priority, desktop } ]; } ] -> { "<mime-type>" = [ { priority, desktop } ... ]; }
mergeMimes = mimes: lib.foldAttrs (item: acc: [item] ++ acc) [] mimes;
# [ { priority, desktop } ... ] -> Self
sortOneMimeType = associations: builtins.sort (l: r: assert l.priority != r.priority; l.priority < r.priority) associations;
sortMimes = mimes: builtins.mapAttrs (_k: sortOneMimeType) mimes;
removePriorities = mimes: builtins.mapAttrs (_k: associations: builtins.map (a: a.desktop) associations) mimes;
# [ ProgramConfig ]
enabledPrograms = builtins.filter (p: p.enabled) (builtins.attrValues config.sane.programs);
# [ { "<mime-type>" = { prority, desktop } ]
enabledWeightedMimes = builtins.map weightedMimes enabledPrograms;
in
{
# the xdg mime type for a file can be found with:
# - `xdg-mime query filetype path/to/thing.ext`
# the default handler for a mime type can be found with:
# - `xdg-mime query default <mimetype>` (e.g. x-scheme-handler/http)
#
# we can have single associations or a list of associations.
# there's also options to *remove* [non-default] associations from specific apps
xdg.mime.enable = true;
xdg.mime.defaultApplications = {
# AUDIO
"audio/flac" = audio;
"audio/mpeg" = audio;
"audio/x-vorbis+ogg" = audio;
# IMAGES
"image/heif" = thumb; # apple codec
"image/png" = thumb;
"image/jpeg" = thumb;
# VIDEO
"video/mp4" = video;
"video/quicktime" = video;
"video/x-matroska" = video;
# HTML
"text/html" = www;
"x-scheme-handler/http" = www;
"x-scheme-handler/https" = www;
"x-scheme-handler/about" = www;
"x-scheme-handler/unknown" = www;
# RICH-TEXT DOCUMENTS
"application/pdf" = pdf;
"text/markdown" = md;
};
xdg.mime.defaultApplications = removePriorities (sortMimes (mergeMimes enabledWeightedMimes));
}

View File

@@ -1,10 +0,0 @@
{ sane-lib, ... }:
{
# format is <key>=%<length>%<value>
sane.user.fs.".config/mpv/mpv.conf" = sane-lib.fs.wantedText ''
save-position-on-quit=%3%yes
keep-open=%3%yes
'';
}

View File

@@ -1,19 +0,0 @@
# borrows from:
# - default config: <https://github.com/cspeterson/splatmoji/blob/master/splatmoji.config>
# - wayland: <https://github.com/cspeterson/splatmoji/issues/32#issuecomment-830862566>
{ pkgs, sane-lib, ... }:
{
sane.user.persist.plaintext = [ ".local/state/splatmoji" ];
sane.user.fs.".config/splatmoji/splatmoji.config" = sane-lib.fs.wantedText ''
history_file=~/.local/state/splatmoji/history
history_length=5
# TODO: wayland equiv
paste_command=xdotool key ctrl+v
# rofi_command=${pkgs.wofi}/bin/wofi --dmenu --insensitive --cache-file /dev/null
rofi_command=${pkgs.fuzzel}/bin/fuzzel -d -i -w 60
xdotool_command=${pkgs.wtype}/bin/wtype
# TODO: wayland equiv
xsel_command=xsel -b -i
'';
}

View File

@@ -1,24 +1,29 @@
{ config, lib, sane-lib, ... }:
# TODO: this should be moved to users/colin.nix
{ config, lib, ... }:
with lib;
let
host = config.networking.hostName;
user-pubkey = config.sane.ssh.pubkeys."colin@${host}".asUserKey;
host-keys = filter (k: k.user == "root") (attrValues config.sane.ssh.pubkeys);
known-hosts-text = concatStringsSep
user-pubkey-full = config.sane.ssh.pubkeys."colin@${host}" or {};
user-pubkey = user-pubkey-full.asUserKey or null;
host-keys = lib.filter (k: k.user == "root") (lib.attrValues config.sane.ssh.pubkeys);
known-hosts-text = lib.concatStringsSep
"\n"
(map (k: k.asHostKey) host-keys)
(builtins.map (k: k.asHostKey) host-keys)
;
in
{
# ssh key is stored in private storage
sane.user.persist.private = [ ".ssh/id_ed25519" ];
sane.user.fs.".ssh/id_ed25519.pub" = sane-lib.fs.wantedText user-pubkey;
sane.user.fs.".ssh/known_hosts" = sane-lib.fs.wantedText known-hosts-text;
sane.user.persist.private = [
{ type = "file"; path = ".ssh/id_ed25519"; }
];
sane.user.fs.".ssh/id_ed25519.pub" = lib.mkIf (user-pubkey != null) {
symlink.text = user-pubkey;
};
sane.user.fs.".ssh/known_hosts".symlink.text = known-hosts-text;
users.users.colin.openssh.authorizedKeys.keys =
let
user-keys = filter (k: k.user == "colin") (attrValues config.sane.ssh.pubkeys);
user-keys = lib.filter (k: k.user == "colin") (lib.attrValues config.sane.ssh.pubkeys);
in
map (k: k.asUserKey) user-keys;
builtins.map (k: k.asUserKey) user-keys;
}

View File

@@ -1,11 +0,0 @@
{ config, sane-lib, ... }:
{
# TODO: this should only be shipped on gui platforms
sops.secrets."sublime_music_config" = {
owner = config.users.users.colin.name;
sopsFile = ../../../secrets/universal/sublime_music_config.json.bin;
format = "binary";
};
sane.user.fs.".config/sublime-music/config.json" = sane-lib.fs.wantedSymlinkTo config.sops.secrets.sublime_music_config.path;
}

View File

@@ -1,20 +0,0 @@
{ config, lib, sane-lib, ... }:
let
feeds = sane-lib.feeds;
all-feeds = config.sane.feeds;
wanted-feeds = feeds.filterByFormat ["podcast"] all-feeds;
podcast-urls = lib.concatStringsSep "|" (
builtins.map (feed: feed.url) wanted-feeds
);
in
{
sane.user.fs.".config/vlc/vlcrc" = sane-lib.fs.wantedText ''
[podcast]
podcast-urls=${podcast-urls}
[core]
metadata-network-access=0
[qt]
qt-privacy-ask=0
'';
}

View File

@@ -1,9 +1,9 @@
{ lib, sane-lib, ...}:
{ ... }:
{
# XDG defines things like ~/Desktop, ~/Downloads, etc.
# these clutter the home, so i mostly don't use them.
sane.user.fs.".config/user-dirs.dirs" = sane-lib.fs.wantedText ''
sane.user.fs.".config/user-dirs.dirs".symlink.text = ''
XDG_DESKTOP_DIR="$HOME/.xdg/Desktop"
XDG_DOCUMENTS_DIR="$HOME/dev"
XDG_DOWNLOAD_DIR="$HOME/tmp"
@@ -16,5 +16,5 @@
# prevent `xdg-user-dirs-update` from overriding/updating our config
# see <https://manpages.ubuntu.com/manpages/bionic/man5/user-dirs.conf.5.html>
sane.user.fs.".config/user-dirs.conf" = sane-lib.fs.wantedText "enabled=False";
sane.user.fs.".config/user-dirs.conf".symlink.text = "enabled=False";
}

View File

@@ -1,143 +0,0 @@
{ pkgs, sane-lib, ... }:
let
# powerlevel10k prompt config
# p10k.zsh is the auto-generated config, and i overwrite those defaults here, below.
p10k-overrides = ''
# powerlevel10k launches a gitstatusd daemon to accelerate git prompt queries.
# this keeps open file handles for any git repo i touch for 60 minutes (by default).
# that prevents unmounting whatever device the git repo is on -- particularly problematic for ~/private.
# i can disable gitstatusd and get slower fallback git queries:
# - either universally
# - or selectively by path
# see: <https://github.com/romkatv/powerlevel10k/issues/246>
typeset -g POWERLEVEL9K_VCS_DISABLED_DIR_PATTERN='(/home/colin/private/*|/home/colin/knowledge/*)'
# typeset -g POWERLEVEL9K_DISABLE_GITSTATUS=true
# show user@host also when logged into the current machine.
# default behavior is to show it only over ssh.
typeset -g POWERLEVEL9K_CONTEXT_{DEFAULT,SUDO}_CONTENT_EXPANSION='$P9K_CONTENT'
'';
prezto-init = ''
source ${pkgs.zsh-autosuggestions}/share/zsh-autosuggestions/zsh-autosuggestions.zsh
source ${pkgs.zsh-syntax-highlighting}/share/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh
source ${pkgs.zsh-prezto}/share/zsh-prezto/init.zsh
'';
in
{
sane.user.persist.plaintext = [
# we don't need to full zsh dir -- just the history file --
# but zsh will sometimes backup the history file and we get fewer errors if we do proper mounts instead of symlinks.
# TODO: should be private?
".local/share/zsh"
# cache gitstatus otherwise p10k fetched it from the net EVERY BOOT
".cache/gitstatus"
];
# zsh/prezto complains if zshrc doesn't exist; but it does allow an "empty" file.
sane.user.fs.".config/zsh/.zshrc" = sane-lib.fs.wantedText "# ";
# enable zsh completions
environment.pathsToLink = [ "/share/zsh" ];
programs.zsh = {
enable = true;
histFile = "$HOME/.local/share/zsh/history";
shellAliases = {
":q" = "exit";
# common typos
"cd.." = "cd ..";
"cd../" = "cd ../";
};
setOptions = [
# defaults:
"HIST_IGNORE_DUPS"
"SHARE_HISTORY"
"HIST_FCNTL_LOCK"
# disable `rm *` confirmations
"rmstarsilent"
];
# .zshenv config:
shellInit = ''
ZDOTDIR=$HOME/.config/zsh
'';
# .zshrc config:
interactiveShellInit =
(builtins.readFile ./p10k.zsh)
+ p10k-overrides
+ prezto-init
+ ''
# zmv is a way to do rich moves/renames, with pattern matching/substitution.
# see for an example: <https://filipe.kiss.ink/zmv-zsh-rename/>
autoload -Uz zmv
HISTORY_IGNORE='(sane-shutdown *|sane-reboot *|rm *)'
# extra aliases
# TODO: move to `shellAliases` config?
function nd() {
mkdir -p "$1";
pushd "$1";
}
# auto-cd into any of these dirs by typing them and pressing 'enter':
hash -d 3rd="/home/colin/dev/3rd"
hash -d dev="/home/colin/dev"
hash -d knowledge="/home/colin/knowledge"
hash -d nixos="/home/colin/nixos"
hash -d nixpkgs="/home/colin/dev/3rd/nixpkgs"
hash -d ref="/home/colin/ref"
hash -d secrets="/home/colin/knowledge/secrets"
hash -d tmp="/home/colin/tmp"
hash -d uninsane="/home/colin/dev/uninsane"
hash -d Videos="/home/colin/Videos"
'';
syntaxHighlighting.enable = true;
vteIntegration = true;
};
# enable a command-not-found hook to show nix packages that might provide the binary typed.
programs.nix-index.enable = true;
programs.command-not-found.enable = false; #< mutually exclusive with nix-index
# prezto = oh-my-zsh fork; controls prompt, auto-completion, etc.
# see: https://github.com/sorin-ionescu/prezto
# i believe this file is auto-sourced by the prezto init.zsh script.
sane.user.fs.".config/zsh/.zpreztorc" = sane-lib.fs.wantedText ''
zstyle ':prezto:*:*' color 'yes'
# modules (they ship with prezto):
# ENVIRONMENT: configures jobs to persist after shell exit; other basic niceties
# TERMINAL: auto-titles terminal (e.g. based on cwd)
# EDITOR: configures shortcuts like Ctrl+U=undo, Ctrl+L=clear
# HISTORY: `history-stat` alias, setopts for good history defaults
# DIRECTORY: sets AUTO_CD, adds `d` alias to list directory stack, and `1`-`9` to cd that far back the stack
# SPECTRUM: helpers for term colors and styling. used by prompts? might be unnecessary
# UTILITY: configures aliases like `ll`, `la`, disables globbing for things like rsync
# adds aliases like `get` to fetch a file. also adds `http-serve` alias??
# COMPLETION: tab completion. requires `utility` module prior to loading
# TODO: enable AUTO_PARAM_SLASH
zstyle ':prezto:load' pmodule \
'environment' \
'terminal' \
'editor' \
'history' \
'directory' \
'spectrum' \
'utility' \
'completion' \
'prompt'
# default keymap. try also `vicmd` (vim normal mode, AKA "cmd mode") or `vi`.
zstyle ':prezto:module:editor' key-bindings 'emacs'
zstyle ':prezto:module:prompt' theme 'powerlevel10k'
# disable `mv` confirmation (and `rm`, too, unfortunately)
zstyle ':prezto:module:utility' safe-ops 'no'
'';
}

File diff suppressed because it is too large Load Diff

39
hosts/common/hosts.nix Normal file
View File

@@ -0,0 +1,39 @@
{ lib, ... }:
{
# TODO: this should be populated per-host
sane.hosts.by-name."desko" = {
ssh.user_pubkey = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIPU5GlsSfbaarMvDA20bxpSZGWviEzXGD8gtrIowc1pX";
ssh.host_pubkey = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIFw9NoRaYrM6LbDd3aFBc4yyBlxGQn8HjeHd/dZ3CfHk";
wg-home.pubkey = "17PMZssYi0D4t2d0vbmhjBKe1sGsE8kT8/dod0Q2CXc=";
wg-home.ip = "10.0.10.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."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";
ssh.host_pubkey = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIO1N/IT3nQYUD+dBlU1sTEEVMxfOyMkrrDeyHcYgnJvw";
wg-home.pubkey = "I7XIR1hm8bIzAtcAvbhWOwIAabGkuEvbWH/3kyIB1yA=";
wg-home.ip = "10.0.10.48";
lan-ip = "10.78.79.54";
};
sane.hosts.by-name."servo" = {
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=";
wg-home.ip = "10.0.10.5";
wg-home.endpoint = "uninsane.org:51820";
lan-ip = "10.78.79.51";
};
}

View File

@@ -1,4 +0,0 @@
{ ... }:
{
# services.i2p.enable = true;
}

View File

@@ -1,4 +1,6 @@
# TODO: migrate to nixpkgs `config.ids.uids`
# - note that nixpkgs' `config.ids.uids` is strictly a database: it doesn't set anything by default
# whereas our impl sets the gid/uid of the user/group specified if they exist.
{ ... }:
{
@@ -13,6 +15,8 @@
sane.ids.acme.gid = 996;
sane.ids.pleroma.uid = 997;
sane.ids.acme.uid = 998;
sane.ids.matrix-appservice-irc.uid = 993;
sane.ids.matrix-appservice-irc.gid = 992;
# greetd (used by sway)
sane.ids.greeter.uid = 999;
@@ -28,6 +32,23 @@
sane.ids.mautrix-signal.gid = 2404;
sane.ids.navidrome.uid = 2405;
sane.ids.navidrome.gid = 2405;
sane.ids.calibre-web.uid = 2406;
sane.ids.calibre-web.gid = 2406;
sane.ids.komga.uid = 2407;
sane.ids.komga.gid = 2407;
sane.ids.lemmy.uid = 2408;
sane.ids.lemmy.gid = 2408;
sane.ids.pict-rs.uid = 2409;
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.export.gid = 2412;
sane.ids.nfsuser.uid = 2413;
sane.ids.media.gid = 2414;
sane.ids.ntfy-sh.uid = 2415;
sane.ids.ntfy-sh.gid = 2415;
sane.ids.colin.uid = 1000;
sane.ids.guest.uid = 1100;
@@ -36,11 +57,12 @@
sane.ids.sshd.uid = 2001; # 997
sane.ids.sshd.gid = 2001; # 997
sane.ids.polkituser.gid = 2002; # 998
# sane.ids.systemd-coredump.gid = 2003; # 996 # 2023/02/12: upstream now specifies this as 151
sane.ids.systemd-coredump.gid = 2003; # 996 # 2023/02/12-2023/02/28: upstream temporarily specified this as 151
sane.ids.nscd.uid = 2004;
sane.ids.nscd.gid = 2004;
sane.ids.systemd-oom.uid = 2005;
sane.ids.systemd-oom.gid = 2005;
sane.ids.wireshark.gid = 2006;
# found on graphical hosts
sane.ids.nm-iodine.uid = 2101; # desko/moby/lappy
@@ -64,4 +86,8 @@
sane.ids.rtkit.gid = 2307;
# phosh
sane.ids.feedbackd.gid = 2308;
# new moby users
sane.ids.eg25-control.uid = 2309;
sane.ids.eg25-control.gid = 2309;
}

View File

@@ -1,4 +1,4 @@
{ config, lib, pkgs, ... }:
{ lib, ... }:
{
# the default backend is "wpa_supplicant".
@@ -11,13 +11,37 @@
# - `man iwd.config` for global config
# - `man iwd.network` for per-SSID config
# use `iwctl` to control
networking.networkmanager.wifi.backend = "iwd";
networking.wireless.iwd.enable = true;
networking.wireless.iwd.settings = {
# auto-connect to a stronger network if signal drops below this value
# bedroom -> bedroom connection is -35 to -40 dBm
# bedroom -> living room connection is -60 dBm
General.RoamThreshold = "-52"; # default -70
General.RoamThreshold5G = "-52"; # default -76
};
# networking.networkmanager.wifi.backend = "iwd";
# networking.wireless.iwd.enable = true;
# networking.wireless.iwd.settings = {
# # auto-connect to a stronger network if signal drops below this value
# # bedroom -> bedroom connection is -35 to -40 dBm
# # bedroom -> living room connection is -60 dBm
# General.RoamThreshold = "-52"; # default -70
# General.RoamThreshold5G = "-52"; # default -76
# };
# plugins mostly add support for establishing different VPN connections.
# the default plugin set includes mostly proprietary VPNs:
# - fortisslvpn (Fortinet)
# - iodine (DNS tunnels)
# - l2tp
# - openconnect (Cisco Anyconnect / Juniper / ocserv)
# - openvpn
# - vpnc (Cisco VPN)
# - sstp
#
# 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.firewall.allowedUDPPorts = [
1900 # to received UPnP advertisements. required by sane-ip-check-upnp
];
# keyfile.path = where networkmanager should look for connection credentials
networking.networkmanager.extraConfig = ''
[keyfile]
path=/var/lib/NetworkManager/system-connections
'';
}

View File

@@ -0,0 +1,13 @@
{ pkgs, ... }:
{
# allow `nix-shell` (and probably nix-index?) to locate our patched and custom packages
nix.nixPath = [
"nixpkgs=${pkgs.path}"
# 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
# to avoid switching so much during development
"nixpkgs-overlays=/home/colin/dev/nixos/hosts/common/nix-path/overlay"
];
}

View File

@@ -0,0 +1,4 @@
# XXX: NIX_PATH=...:nixpkgs-overlays=... will import every overlay in the directory
# so we prefer to give it a directory with just this *one* overlay, otherwise it imports conflicting overlays
# and gets stuck in a loop until it OOMs
import ../../../../overlays/all.nix

View File

@@ -6,13 +6,11 @@
sane.persist.stores.private.prefix = "/home/colin";
sane.persist.sys.plaintext = [
# TODO: these should be private.. somehow
"/var/log"
"/var/backup" # for e.g. postgres dumps
# TODO: move elsewhere
"/var/lib/alsa" # preserve output levels, default devices
"/var/lib/colord" # preserve color calibrations (?)
"/var/lib/machines" # maybe not needed, but would be painful to add a VM and forget.
"/var/lib/systemd/backlight" # backlight brightness
];
sane.persist.sys.cryptClearOnBoot = [
"/var/lib/systemd/coredump"
];
}

View File

@@ -1,329 +0,0 @@
{ lib, pkgs, ... }:
let
inherit (builtins) attrNames concatLists;
inherit (lib) mapAttrs mapAttrsToList mkDefault mkMerge optional;
sysadminPkgs = {
inherit (pkgs // {
# XXX can't `inherit` a nested attr, so we move them to the toplevel
"cacert.unbundled" = pkgs.cacert.unbundled;
})
btrfs-progs
"cacert.unbundled" # some services require unbundled /etc/ssl/certs
cryptsetup
dig
efibootmgr
fatresize
fd
file
gawk
git
gptfdisk
hdparm
htop
iftop
inetutils # for telnet
iotop
iptables
jq
killall
lsof
nano
netcat
nethogs
nmap
openssl
parted
pciutils
powertop
pstree
ripgrep
screen
smartmontools
socat
strace
tcpdump
tree
usbutils
wget
;
};
consolePkgs = {
inherit (pkgs)
backblaze-b2
cdrtools
dmidecode
duplicity
efivar
flashrom
fwupd
ghostscript # TODO: imagemagick wrapper should add gs to PATH
gnupg
gocryptfs
gopass
gopass-jsonapi
ifuse
imagemagick
ipfs
kitty # TODO: move to GUI, but `ssh servo` from kitty sets `TERM=xterm-kitty` in the remove and breaks things
libimobiledevice
libsecret # for managing user keyrings
lm_sensors # for sensors-detect
lshw
ffmpeg
memtester
networkmanager
nixpkgs-review
# nixos-generators
# nettools
nmon
oathToolkit # for oathtool
# ponymix
pulsemixer
python3
rsync
# python3Packages.eyeD3 # music tagging
sane-scripts
sequoia
snapper
sops
sox
speedtest-cli
sqlite # to debug sqlite3 databases
ssh-to-age
sudo
# tageditor # music tagging
unar
visidata
w3m
wireguard-tools
# youtube-dl
yt-dlp
;
};
guiPkgs = {
inherit (pkgs // (with pkgs; {
# XXX can't `inherit` a nested attr, so we move them to the toplevel
# TODO: could use some "flatten attrs" helper instead
"gnome.cheese" = gnome.cheese;
"gnome.dconf-editor" = gnome.dconf-editor;
"gnome.file-roller" = gnome.file-roller;
"gnome.gnome-disk-utility" = gnome.gnome-disk-utility;
"gnome.gnome-maps" = gnome.gnome-maps;
"gnome.nautilus" = gnome.nautilus;
"gnome.gnome-system-monitor" = gnome.gnome-system-monitor;
"gnome.gnome-terminal" = gnome.gnome-terminal;
"gnome.gnome-weather" = gnome.gnome-weather;
"libsForQt5.plasmatube" = libsForQt5.plasmatube;
}))
aerc # email client
audacity
celluloid # mpv frontend
chromium
clinfo
dino
electrum
element-desktop
emote
evince # works on phosh
# { pkg = fluffychat-moby; dir = [ ".local/share/chat.fluffy.fluffychat" ]; } # TODO: ship normal fluffychat on non-moby?
foliate # e-book reader
font-manager
# XXX by default fractal stores its state in ~/.local/share/<UUID>.
# after logging in, manually change ~/.local/share/keyrings/... to point it to some predictable subdir.
# then reboot (so that libsecret daemon re-loads the keyring...?)
# { pkg = fractal-latest; private = [ ".local/share/fractal" ]; }
# { pkg = fractal-next; private = [ ".local/share/fractal" ]; }
gajim # XMPP client
gimp # broken on phosh
"gnome.cheese"
"gnome.dconf-editor"
gnome-feeds # RSS reader (with claimed mobile support)
"gnome.file-roller"
"gnome.gnome-disk-utility"
"gnome.gnome-maps" # works on phosh
"gnome.nautilus"
# gnome-podcasts
"gnome.gnome-system-monitor"
"gnome.gnome-terminal" # works on phosh
"gnome.gnome-weather"
gpodder-configured
gthumb
inkscape
kdenlive
kid3 # audio tagging
krita
libreoffice-fresh # XXX colin: maybe don't want this on mobile
lollypop
mpv
networkmanagerapplet
newsflash
nheko
obsidian
pavucontrol
# picard # music tagging
playerctl
"libsForQt5.plasmatube" # Youtube player
soundconverter
# sublime music persists any downloaded albums here.
# it doesn't obey a conventional ~/Music/{Artist}/{Album}/{Track} notation, so no symlinking
# config (e.g. server connection details) is persisted in ~/.config/sublime-music/config.json
# possible to pass config as a CLI arg (sublime-music -c config.json)
# { pkg = sublime-music; dir = [ ".local/share/sublime-music" ]; }
sublime-music-mobile
tdesktop # broken on phosh
tokodon
vlc
# pleroma client (Electron). input is broken on phosh. TODO(2023/02/02): fix electron19 input (insecure)
# whalebird
xdg-utils # for xdg-open
xterm # broken on phosh
;
};
x86GuiPkgs = {
inherit (pkgs)
discord
# kaiteki # Pleroma client
# gnome.zenity # for kaiteki (it will use qarma, kdialog, or zenity)
# gpt2tc # XXX: unreliable mirror
# TODO(unpin): handbrake is broken on aarch64-linux 2023/01/29
handbrake
logseq
losslesscut-bin
makemkv
monero-gui
signal-desktop
spotify
tor-browser-bundle-bin
zecwallet-lite
;
};
# define -- but don't enable -- the packages in some attrset.
# use `mkDefault` for the package here so we can customize some of them further down this file
declarePkgs = pkgsAsAttrs: mapAttrs (_n: p: {
package = mkDefault p;
}) pkgsAsAttrs;
in
{
config = {
sane.programs = mkMerge [
(declarePkgs sysadminPkgs)
(declarePkgs consolePkgs)
(declarePkgs guiPkgs)
(declarePkgs x86GuiPkgs)
{
# link the various package sets into their own meta packages
sysadminUtils = {
package = null;
suggestedPrograms = attrNames sysadminPkgs;
};
consoleUtils = {
package = null;
suggestedPrograms = attrNames consolePkgs;
};
guiApps = {
package = null;
suggestedPrograms = (attrNames guiPkgs)
++ optional (pkgs.system == "x86_64-linux") "x86GuiApps";
};
x86GuiApps = {
package = null;
suggestedPrograms = attrNames x86GuiPkgs;
};
}
{
# nontrivial package definitions
imagemagick.package = pkgs.imagemagick.override {
ghostscriptSupport = true;
};
dino.private = [ ".local/share/dino" ];
# creds, but also 200 MB of node modules, etc
discord = {
package = pkgs.discord.override {
# XXX 2022-07-31: fix to allow links to open in default web-browser:
# https://github.com/NixOS/nixpkgs/issues/78961
nss = pkgs.nss_latest;
};
private = [ ".config/discord" ];
};
# creds/session keys, etc
element-desktop.private = [ ".config/Element" ];
# `emote` will show a first-run dialog based on what's in this directory.
# mostly, it just keeps a LRU of previously-used emotes to optimize display order.
# TODO: package [smile](https://github.com/mijorus/smile) for probably a better mobile experience.
emote.dir = [ ".local/share/Emote" ];
# XXX: we preserve the whole thing because if we only preserve gPodder/Downloads
# then startup is SLOW during feed import, and we might end up with zombie eps in the dl dir.
gpodder-configured.dir = [ "gPodder" ];
# actual monero blockchain (not wallet/etc; safe to delete, just slow to regenerate)
# XXX: is it really safe to persist this? it doesn't have info that could de-anonymize if captured?
monero-gui.dir = [ ".bitmonero" ];
mpv.dir = [ ".config/mpv/watch_later" ];
# not strictly necessary, but allows caching articles; offline use, etc.
newsflash.dir = [ ".local/share/news-flash" ];
nheko.private = [
".config/nheko" # config file (including client token)
".cache/nheko" # media cache
".local/share/nheko" # per-account state database
];
# settings (electron app)
obsidian.dir = [ ".config/obsidian" ];
# creds, media
signal-desktop.private = [ ".config/Signal" ];
# creds, widevine .so download. TODO: could easily manage these statically.
spotify.dir = [ ".config/spotify" ];
# sublime music persists any downloaded albums here.
# it doesn't obey a conventional ~/Music/{Artist}/{Album}/{Track} notation, so no symlinking
# config (e.g. server connection details) is persisted in ~/.config/sublime-music/config.json
# possible to pass config as a CLI arg (sublime-music -c config.json)
# { pkg = sublime-music; dir = [ ".local/share/sublime-music" ]; }
sublime-music-mobile.dir = [ ".local/share/sublime-music" ];
tdesktop.private = [ ".local/share/TelegramDesktop" ];
tokodon.private = [ ".cache/KDE/tokodon" ];
# hardenedMalloc solves a crash at startup
# TODO 2023/02/02: is this safe to remove yet?
tor-browser-bundle-bin.package = pkgs.tor-browser-bundle-bin.override {
useHardenedMalloc = false;
};
# vlc remembers play position in ~/.config/vlc/vlc-qt-interface.conf
vlc.dir = [ ".config/vlc" ];
whalebird.private = [ ".config/Whalebird" ];
# zcash coins. safe to delete, just slow to regenerate (10-60 minutes)
zecwallet-lite.private = [ ".zcash" ];
}
];
# XXX: this might not be necessary. try removing this and cacert.unbundled (servo)?
environment.etc."ssl/certs".source = "${pkgs.cacert.unbundled}/etc/ssl/certs/*";
};
}

View File

@@ -0,0 +1,9 @@
# Terminal UI mail client
{ ... }:
{
sane.programs.aerc = {
secrets.".config/aerc/accounts.conf" = ../../../secrets/common/aerc_accounts.conf.bin;
mime.associations."x-scheme-handler/mailto" = "aerc.desktop";
};
}

View File

@@ -0,0 +1,24 @@
# alacritty terminal emulator
# - config options: <https://github.com/alacritty/alacritty/blob/master/extra/man/alacritty.5.scd>
# - `man 5 alacritty`
# - defaults: <https://github.com/alacritty/alacritty/releases> -> alacritty.yml
# - irc: #alacritty on libera.chat
{ lib, ... }:
{
sane.programs.alacritty = {
env.TERMINAL = lib.mkDefault "alacritty";
# note: alacritty will switch to .toml config in 13.0 release
# - run `alacritty migrate` to convert the yaml to toml
fs.".config/alacritty/alacritty.yml".symlink.text = ''
font:
size: 14
key_bindings:
- { key: N, mods: Control, action: CreateNewWindow }
- { key: PageUp, mods: Control, action: ScrollPageUp }
- { key: PageDown, mods: Control, action: ScrollPageDown }
- { key: PageUp, mods: Control|Shift, action: ScrollPageUp }
- { key: PageDown, mods: Control|Shift, action: ScrollPageDown }
'';
};
}

View File

@@ -0,0 +1,272 @@
{ config, lib, pkgs, ... }:
let
declPackageSet = pkgs: {
package = null;
suggestedPrograms = pkgs;
};
in
{
sane.programs = {
# PACKAGE SETS
"sane-scripts.backup" = declPackageSet [
"sane-scripts.backup-ls"
"sane-scripts.backup-restore"
];
"sane-scripts.bittorrent" = declPackageSet [
"sane-scripts.bt-add"
"sane-scripts.bt-rm"
"sane-scripts.bt-search"
"sane-scripts.bt-show"
];
"sane-scripts.dev" = declPackageSet [
"sane-scripts.dev-cargo-loop"
"sane-scripts.git-init"
];
"sane-scripts.cli" = declPackageSet [
"sane-scripts.deadlines"
"sane-scripts.find-dotfiles"
"sane-scripts.ip-check"
"sane-scripts.ip-reconnect"
"sane-scripts.private-change-passwd"
"sane-scripts.private-do"
"sane-scripts.private-init"
"sane-scripts.private-lock"
"sane-scripts.private-unlock"
"sane-scripts.rcp"
"sane-scripts.reboot"
"sane-scripts.reclaim-boot-space"
"sane-scripts.reclaim-disk-space"
"sane-scripts.secrets-dump"
"sane-scripts.secrets-unlock"
"sane-scripts.secrets-update-keys"
"sane-scripts.shutdown"
"sane-scripts.ssl-dump"
"sane-scripts.sudo-redirect"
"sane-scripts.sync-from-servo"
"sane-scripts.vpn"
"sane-scripts.which"
"sane-scripts.wipe-browser"
];
"sane-scripts.sys-utils" = declPackageSet [
"sane-scripts.ip-port-forward"
"sane-scripts.sync-music"
];
sysadminUtils = declPackageSet [
"btrfs-progs"
"cacert.unbundled" # some services require unbundled /etc/ssl/certs
"cryptsetup"
"dig"
"dtc" # device tree [de]compiler
"efibootmgr"
"ethtool"
"fatresize"
"fd"
"file"
# "fwupd"
"gawk"
"git"
"gptfdisk"
"hdparm"
"htop"
"iftop"
"inetutils" # for telnet
"iotop"
"iptables"
"iw"
"jq"
"killall"
"lsof"
"miniupnpc"
"nano"
# "ncdu" # ncurses disk usage. doesn't cross compile (zig)
"neovim"
"netcat"
"nethogs"
"nmap"
"openssl"
"parted"
"pciutils"
"powertop"
"pstree"
"ripgrep"
"screen"
"smartmontools"
"socat"
"strace"
"subversion"
"tcpdump"
"tree"
"usbutils"
"wget"
"wirelesstools" # iwlist
];
sysadminExtraUtils = declPackageSet [
"backblaze-b2"
"duplicity"
"sane-scripts.backup"
"sqlite" # to debug sqlite3 databases
];
# TODO: split these into smaller groups.
# - moby doesn't want a lot of these.
# - categories like
# - dev?
# - debugging?
consoleUtils = declPackageSet [
"alsaUtils" # for aplay, speaker-test
"binutils" # for strings; though this brings 80MB of unrelated baggage too
# "cdrtools"
"clinfo"
"dmidecode"
"dtrx" # `unar` alternative, "Do The Right eXtraction"
"efivar"
# "flashrom"
"git" # needed as a user package, for config.
# "gnupg"
# "gocryptfs"
# "gopass"
# "gopass-jsonapi"
"helix" # text editor
"libsecret" # for managing user keyrings. TODO: what needs this? lift into the consumer
"lm_sensors" # for sensors-detect. TODO: what needs this? lift into the consumer
"lshw"
# "memtester"
"neovim" # needed as a user package, for swap persistence
# "nettools"
# "networkmanager"
# "nixos-generators"
"nmon"
# "node2nix"
# "oathToolkit" # for oathtool
# "ponymix"
"pulsemixer"
"python3"
# "python3Packages.eyeD3" # music tagging
"ripgrep" # needed as a user package so that its user-level config file can be installed
"rsync"
"sane-scripts.bittorrent"
"sane-scripts.cli"
"snapper"
"sops"
"speedtest-cli"
# "ssh-to-age"
"sudo"
# "tageditor" # music tagging
# "unar"
"unzip"
"wireguard-tools"
"xdg-terminal-exec"
"xdg-utils" # for xdg-open
# "yarn"
"zsh"
];
desktopConsoleUtils = declPackageSet [
"gh" # MS GitHub cli
"nix-index"
"nixpkgs-review"
"sane-scripts.dev"
"sequoia"
];
consoleMediaUtils = declPackageSet [
"ffmpeg"
"imagemagick"
"sox"
"yt-dlp"
];
tuiApps = declPackageSet [
"aerc" # email client
"msmtp" # sendmail
"offlineimap" # email mailbox sync
"sfeed" # RSS fetcher
"visidata" # TUI spreadsheet viewer/editor
"w3m" # web browser
];
iphoneUtils = declPackageSet [
"ifuse"
"ipfs"
"libimobiledevice"
"sane-scripts.sync-from-iphone"
];
devPkgs = declPackageSet [
"cargo"
"clang"
"nodejs"
"rustc"
"tree-sitter"
];
# INDIVIDUAL PACKAGE DEFINITIONS
cargo.persist.plaintext = [ ".cargo" ];
# creds, but also 200 MB of node modules, etc
discord.persist.private = [ ".config/discord" ];
# `emote` will show a first-run dialog based on what's in this directory.
# mostly, it just keeps a LRU of previously-used emotes to optimize display order.
# TODO: package [smile](https://github.com/mijorus/smile) for probably a better mobile experience.
emote.persist.plaintext = [ ".local/share/Emote" ];
fluffychat-moby.persist.plaintext = [ ".local/share/chat.fluffy.fluffychat" ];
font-manager.package = pkgs.font-manager.override {
# build without the "Google Fonts" integration feature, to save closure / avoid webkitgtk_4_0
withWebkit = false;
};
# MS GitHub stores auth token in .config
# TODO: we can populate gh's stuff statically; it even lets us use the same oauth across machines
gh.persist.private = [ ".config/gh" ];
"gnome.gnome-maps".persist.plaintext = [ ".cache/shumate" ];
"gnome.gnome-maps".persist.private = [ ".local/share/maps-places.json" ];
# actual monero blockchain (not wallet/etc; safe to delete, just slow to regenerate)
# XXX: is it really safe to persist this? it doesn't have info that could de-anonymize if captured?
monero-gui.persist.plaintext = [ ".bitmonero" ];
mumble.persist.private = [ ".local/share/Mumble" ];
# settings (electron app)
obsidian.persist.plaintext = [ ".config/obsidian" ];
# creds, media
signal-desktop.persist.private = [ ".config/Signal" ];
# printer/filament settings
slic3r.persist.plaintext = [ ".Slic3r" ];
# creds, widevine .so download. TODO: could easily manage these statically.
spotify.persist.plaintext = [ ".config/spotify" ];
tdesktop.persist.private = [ ".local/share/TelegramDesktop" ];
tokodon.persist.private = [ ".cache/KDE/tokodon" ];
# hardenedMalloc solves an "unable to connect to Tor" error when pressing the "connect" button
# - still required as of 2023/07/14
tor-browser-bundle-bin.package = pkgs.tor-browser-bundle-bin.override {
useHardenedMalloc = false;
};
whalebird.persist.private = [ ".config/Whalebird" ];
yarn.persist.plaintext = [ ".cache/yarn" ];
# zcash coins. safe to delete, just slow to regenerate (10-60 minutes)
zecwallet-lite.persist.private = [ ".zcash" ];
};
programs.feedbackd = lib.mkIf config.sane.programs.feedbackd.enabled {
enable = true;
};
}

View File

@@ -0,0 +1,61 @@
# GNOME calls
# - <https://gitlab.gnome.org/GNOME/calls>
# - both a dialer and a call handler.
# - uses callaudiod dbus package.
#
# initial JMP.chat configuration:
# - message @cheogram.com "reset sip account" (this is not destructive, despite the name)
# - the bot will reply with auto-generated username/password plus a SIP server endpoint.
# just copy those into gnome-calls' GUI configurator
# - now gnome-calls can do outbound calls. inbound calls requires more chatting with the help bot
#
# my setup here is still very WIP.
# open questions:
# - can i receive calls even with GUI closed?
# - e.g. activated by callaudiod?
# - looks like `gnome-calls --daemon` does that?
{ config, lib, ... }:
let
cfg = config.sane.programs.calls;
in
{
sane.programs.calls = {
configOption = with lib; mkOption {
default = {};
type = types.submodule {
options.autostart = mkOption {
type = types.bool;
default = false;
};
};
};
persist.private = [
# ".cache/folks" # contact avatars?
# ".config/calls"
".local/share/calls" # call "records"
# .local/share/folks # contacts?
];
secrets.".config/calls/sip-account.cfg" = ../../../secrets/common/gnome_calls_sip-account.cfg.bin;
suggestedPrograms = [
"feedbackd" # needs `phone-incoming-call`, in particular
];
services.gnome-calls = {
# TODO: prevent gnome-calls from daemonizing when started manually
description = "gnome-calls daemon to monitor incoming SIP calls";
wantedBy = lib.mkIf cfg.config.autostart [ "default.target" ];
serviceConfig = {
# add --verbose for more debugging
ExecStart = "${cfg.package}/bin/gnome-calls --daemon";
Type = "simple";
Restart = "always";
RestartSec = "10s";
};
environment.G_MESSAGES_DEBUG = "all";
};
};
programs.calls = lib.mkIf cfg.enabled {
enable = true;
};
}

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