Compare commits

...

3696 Commits

Author SHA1 Message Date
Colin 41bc4ac7b4 callaudiod: fix repo URL 2024-05-18 08:10:34 +00:00
Colin 6365a58c3e sanebox: avert a subshell in `removeSubpaths` 2024-05-18 08:10:34 +00:00
Colin 3361f2bbe7 zsh: port to sane.programs 2024-05-18 08:10:34 +00:00
Colin c987f13ef0 calls: split callaudiod out and run it manually 2024-05-18 07:14:42 +00:00
Colin ee36f2f052 sway: fix display names 2024-05-18 06:57:24 +00:00
Colin 09457bee5a sway: position gnome-calls on workspace 1 2024-05-18 06:55:39 +00:00
Colin 278631b59e calls: sandbox 2024-05-18 06:52:53 +00:00
Colin 4d09cce1aa calls: fix latency so moby doesnt underrun 2024-05-18 06:47:26 +00:00
Colin b2f2f88dc6 calls: exit on UI close 2024-05-18 06:32:23 +00:00
Colin cbbddee152 modules/programs: add ~/.config/FOO and ~/.local/share/FOO to the sandbox where applicable 2024-05-18 06:32:07 +00:00
Colin 68275eeb85 rmDbusServices: preserve package `meta` 2024-05-18 06:31:44 +00:00
Colin 7bb7a24b22 sanebox: tidy up the quoting in a few more edge-cases 2024-05-18 00:00:03 +00:00
Colin 795786f46b sanebox: prefer `case` statments over if/elif/elif... constructs 2024-05-17 23:32:51 +00:00
Colin 26aa68ee59 sanebox: replace short-circuit eval idiom with if/else 2024-05-17 23:21:36 +00:00
Colin 85c0e72bf1 sanebox: remove unnecessary quotes in case statement 2024-05-17 23:15:00 +00:00
Colin bf98da0061 sanebox: remove extraneous quotes
probably some still remain
2024-05-17 23:01:24 +00:00
Colin 76434b6970 sanebox: make it more obvious what we substitute at build-time 2024-05-17 22:27:55 +00:00
Colin 0698d4be24 landlock-sandboxer: define meta.mainProgram 2024-05-17 22:26:55 +00:00
Colin afb9d273ab servo: re-enable slskd 2024-05-17 22:00:46 +00:00
Colin 0003d79324 sane-tag-music: add a `print-missing` subcommand 2024-05-17 09:41:50 +00:00
Colin e9bfc6cebd sane-tag-music: fix help message formatting 2024-05-17 09:20:33 +00:00
Colin aeed9ffd5b sane-sync-music: prune directories left empty by sync 2024-05-17 08:59:36 +00:00
Colin 9c27b8e864 swaync: sort icons 2024-05-17 08:42:35 +00:00
Colin af34d395fc swaync: fix Discord icon 2024-05-17 07:18:23 +00:00
Colin 008b659a10 swaync: reorder icons 2024-05-17 05:49:28 +00:00
Colin 1ce2839df9 swaync: clean up icons a bit more 2024-05-17 05:45:15 +00:00
Colin 022d15c2c7 swaync: increase font size of service icons 2024-05-17 03:42:32 +00:00
Colin 908a2ca6c3 swaync: fix a bug that i couldnt see all icons on the same row 2024-05-17 03:21:41 +00:00
Colin 614eebfdc0 todo.md: document a sandbox link cache bug 2024-05-17 03:21:11 +00:00
Colin 42fb79b025 swaync: improve gnome-calls icon 2024-05-17 00:49:40 +00:00
Colin 4265ea9b99 calls: auto-start 2024-05-17 00:41:32 +00:00
Colin a7d376778e gnome-calls: re-enable 2024-05-17 00:36:56 +00:00
Colin 157af52112 feeds: add Grumpy.website 2024-05-16 19:25:22 +00:00
Colin c7838486d3 nixpkgs: 2024-05-14 -> 2024-05-16, nixpkgs-wayland
```
• Updated input 'nixpkgs-next-unpatched':
    'github:nixos/nixpkgs/a47743431bb52c25eecbeda1bb2350902478befe' (2024-05-14)
  → 'github:nixos/nixpkgs/1887e39d7e68bb191eb804c0f976ad25b3980595' (2024-05-16)
• Updated input 'nixpkgs-unpatched':
    'github:nixos/nixpkgs/18198ef6f41074a6b42318dacb6fa4712b893ba4' (2024-05-14)
  → 'github:nixos/nixpkgs/977a49df312d89b7dfbb3579bf13b7dfe23e7878' (2024-05-16)
• Updated input 'nixpkgs-wayland':
    'github:nix-community/nixpkgs-wayland/ce959368cbc8202181f37a464c825d54720b6b68' (2024-05-14)
  → 'github:nix-community/nixpkgs-wayland/5e2c5345f3204c867c9d4183cbb68069d0f7a951' (2024-05-16)
• Updated input 'nixpkgs-wayland/nix-eval-jobs':
    'github:nix-community/nix-eval-jobs/63154bdfb22091041b307d17863bdc0e01a32a00' (2024-05-09)
  → 'github:nix-community/nix-eval-jobs/bb95091f6c6f38f6cfc215a1797a2dd466312c8b' (2024-05-15)
```
2024-05-16 09:46:40 +00:00
Colin 1ac5b56f34 todo.md: task to fix ip netns sandboxing 2024-05-16 09:42:05 +00:00
Colin 5924d092f4 coturn: expand documentation 2024-05-16 09:41:53 +00:00
Colin 63cbcb0896 todo.md: add a few improvements to make 2024-05-16 04:39:35 +00:00
Colin 7cff078698 todo.md: remove completed items 2024-05-16 04:10:09 +00:00
Colin a5f6aae6f5 desko: use stock systemd resolver
i need a backup system to use when things are broken, and this helps with debugging as well
2024-05-16 03:12:30 +00:00
Colin fd94422982 distcc: purge 2024-05-16 02:51:38 +00:00
Colin 55a7119e3f ccache: purge 2024-05-16 02:51:03 +00:00
Colin d258d4ddd5 desko: re-enable firewall 2024-05-16 02:49:03 +00:00
Colin c39aab34e0 refactor: nix_serve_privkey -> nix_signing_key 2024-05-16 02:48:16 +00:00
Colin 9d725a0974 servo: disable unused nixcache.uninsane.org 2024-05-16 02:46:23 +00:00
Colin 4a15339e0e desko: re-introduce the nix_serve key, which is actually needed for SSH deployements, not just nix-serve 2024-05-16 02:43:32 +00:00
Colin df4ef0ce5a desko: disable nix-serve 2024-05-16 02:35:27 +00:00
Colin 3bb5546aaf systemd-logind: fix to not sleep when i close the lid (again) 2024-05-16 02:13:02 +00:00
Colin 4de3c6d664 sanebox: fix tab typo when parsing the link cache 2024-05-16 00:15:57 +00:00
Colin b5502ea401 sanebox: remove --sanebox-cache-symlink flag 2024-05-15 23:59:38 +00:00
Colin 1211023c55 modules/programs: remove dead code from per-user profiles 2024-05-15 23:58:10 +00:00
Colin b4229ecb1e sanebox: load the link cache from a static /etc path instead of via CLI args 2024-05-15 23:55:15 +00:00
Colin 348837ff4a programs: sandboxing: replace profiles with raw CLI args 2024-05-15 09:13:20 +00:00
Colin 17eaa7446a sanebox: remove all profile-related features except for direct, path-based profile loading 2024-05-15 09:13:20 +00:00
Colin 530664294a programs: sandbox: always specify --sanebox-profile-dir instead of loading from XDG_DATA_DIRS 2024-05-15 08:54:16 +00:00
Colin b649071d98 programs: sandboxing: make the profiles be generic across users
this is a step toward making the profile not even be dynamically loaded, since its content is no longer dynamic :)
2024-05-15 08:48:09 +00:00
Colin ea2653b7ce programs: sandboxing: pass home- and runtime-relative paths to the sandboxer, instead of making absolute first 2024-05-15 08:20:09 +00:00
Colin d97f0f7300 sanebox: implement --sanebox-home-path and --sanebox-run-path flags 2024-05-15 08:05:00 +00:00
Colin ee43fcdb89 rename LG TV -> Cuddlevision 2024-05-15 07:50:38 +00:00
Colin 4c1b1282d6 modules/programs: sandbox: be compatible with systemd resolved again 2024-05-15 02:57:40 +00:00
Colin bc73a16475 networkmanager: fix to be compatible when systemd-resolved is enabled 2024-05-15 02:57:40 +00:00
Colin adfaa7f9c1 sane-sandboxed -> sanebox 2024-05-15 01:41:40 +00:00
Colin f9a6873ee9 signal-desktop: remove NIXOS_OZONE_WL=1 hack (no longer required) 2024-05-15 00:10:00 +00:00
Colin 66f73c92bd trust-dns: asSystemResolver: listen also on ipv6 address 2024-05-14 23:38:01 +00:00
Colin d5e8974a4a refactor: trust-dns: listenAddrs -> listenAddrsIpv4 2024-05-14 23:22:50 +00:00
Colin e040a5b0c5 servo: trust-dns: remove hn-resolver
my hosts run their own recursive DNS resolvers now, so there's no need for the wireguard VPN to provide them with that
2024-05-14 23:20:19 +00:00
Colin d2ac88d66d nixpatches: upstream the gnome-keyring cross compilation patch 2024-05-14 23:12:59 +00:00
Colin b534af5203 signal-desktop: use nixpkgs' nodejs instead of the signal pin
it still seems stable
2024-05-14 23:12:41 +00:00
Colin b06b75441c signal-desktop: 7.0.0 -> 7.8.0 2024-05-14 23:05:00 +00:00
Colin 1f405fb2ba element-desktop: update electron_28 -> electron_29 2024-05-14 22:32:56 +00:00
Colin ffe9dcedf7 koreader: 2024.03 -> 2024.04 2024-05-14 22:12:23 +00:00
Colin fc649de64c fractal: remove dead code 2024-05-14 20:56:50 +00:00
Colin 1210696e3a fractal: re-enable jpeg decoding 2024-05-14 20:56:37 +00:00
Colin 47ced34c84 fractal: 6-unstable-2024-01-31 -> 7 2024-05-14 20:15:27 +00:00
Colin ae7034d942 nixpkgs: 2024-05-13 -> 2024-05-14; nixpkgs-wayland
```
• Updated input 'nixpkgs-next-unpatched':
    'github:nixos/nixpkgs/eda36d7cf3391ad06097009b08822fb74acd5e00' (2024-05-13)
  → 'github:nixos/nixpkgs/a47743431bb52c25eecbeda1bb2350902478befe' (2024-05-14)
• Updated input 'nixpkgs-unpatched':
    'github:nixos/nixpkgs/0a949cf2618e8eab83aa008f1f8e03db137ed36c' (2024-05-13)
  → 'github:nixos/nixpkgs/18198ef6f41074a6b42318dacb6fa4712b893ba4' (2024-05-14)
• Updated input 'nixpkgs-wayland':
    'github:nix-community/nixpkgs-wayland/ed18785b8816fa878bdd9df7f2e8722695401ef8' (2024-05-13)
  → 'github:nix-community/nixpkgs-wayland/ce959368cbc8202181f37a464c825d54720b6b68' (2024-05-14)
```
2024-05-14 18:04:22 +00:00
Colin f3cf9e0bed trust-dns: set it to NOT be the system resolver for servo
trust-dns recursor is too beta for servo
2024-05-14 09:03:10 +00:00
Colin 3a7c9022af trust-dns: bump StartLimitBurst so systemd doesnt abort the service too early 2024-05-14 08:50:37 +00:00
Colin 2a199bf373 trust-dns: recursor: merge DHCP DNS servers from all non-downed connections
otherwise overwriting the toml configs gets messy, when interfaces come up in unpredictable order
2024-05-14 08:25:59 +00:00
Colin 53198128e8 trust-dns: hook NetworkManager for state changes
there may be some edgecases to sort out around e.g. first-run,
but so far it seems to be importing the DHCP search zones :)
2024-05-14 07:42:41 +00:00
Colin bee3eea040 modules/programs: sandbox: remove no-longer-needed /run/systemd/resolve from sandbox 2024-05-14 04:18:29 +00:00
Colin 1e202baa8a networkmanager: tune config
mostly just pruning unused features
2024-05-14 04:18:29 +00:00
Colin 39eb1d150a dns: deploy trust-dns as the default recursive resolver
outstanding issues: native.uninsane.org doesn't resolve. appears possibly to be an issue with following CNAMEs
2024-05-14 04:18:29 +00:00
Colin 68e6666819 trust-dns: use my patched version 2024-05-14 04:18:29 +00:00
Colin 447e1feb9c sway: fix Super+L shortcut to actually lock 2024-05-14 04:17:05 +00:00
Colin 26e3c3e5b7 s6-rc: fix `persist.byStore.persist` typo 2024-05-14 04:16:50 +00:00
Colin 38c038f4f7 sane-sandboxed: fix typo in linkCache queries, which would otherwise break for paths containing spaces 2024-05-14 01:22:08 +00:00
Colin 3557994cbb gnome-clocks: fix sound an sandboxing artifacts 2024-05-14 01:21:37 +00:00
Colin f3106ee316 programs: maxBuildCost: fix to actually build everything by default 2024-05-13 22:57:40 +00:00
Colin bef0099eec scripts/clean: fix to cleanup more dangling `result` symlinks 2024-05-13 22:45:33 +00:00
Colin 67434caf45 scripts: add a script to clean the git dir 2024-05-13 22:45:33 +00:00
Colin be84ab1f45 programs: set `buildCost=1` for assorted low-priority programs 2024-05-13 22:45:33 +00:00
Colin 43d32641f3 programs: buildCost: introduce a new level between `min` and `light` 2024-05-13 22:45:33 +00:00
Colin 9bf0dbabae gnome.seahorse: disable 2024-05-13 22:45:33 +00:00
Colin 8c7880774e monero-gui: disable 2024-05-13 22:45:33 +00:00
Colin 5774aa4a8f zulip: dont ship 2024-05-13 22:45:33 +00:00
Colin 6c6d11578e cross: fix `curl-impersonate-chome` build 2024-05-13 22:45:33 +00:00
Colin f33e960bdf cross: gnome-keyring: patch via nixpkgs patch instead of override 2024-05-13 22:45:33 +00:00
Colin 14202a5bcc neovim: wrap in such a way as to avoid cross-compilation-specific patching 2024-05-13 22:45:33 +00:00
Colin 3d2babf2bb overlays/cross: sync upstreaming status 2024-05-13 22:45:33 +00:00
Colin 9d51b2ecc7 nixpatches: stop applying patches i dont need 2024-05-13 22:45:33 +00:00
Colin 0b855efb5f nixpkgs: bump; nixpkgs-wayland: bump
```
• Updated input 'nixpkgs-next-unpatched':
    'github:nixos/nixpkgs/6a217e9b1d39415076c7a6cfc44be5e935e7a839' (2024-05-13)
  → 'github:nixos/nixpkgs/eda36d7cf3391ad06097009b08822fb74acd5e00' (2024-05-13)
• Updated input 'nixpkgs-unpatched':
    'github:nixos/nixpkgs/6bc8c8a7ac13182ee24a5e2caab7ad739f1c55c5' (2024-05-13)
  → 'github:nixos/nixpkgs/0a949cf2618e8eab83aa008f1f8e03db137ed36c' (2024-05-13)
• Updated input 'nixpkgs-wayland':
    'github:nix-community/nixpkgs-wayland/5f7272dff81558143f93e2cb32189a52ef965892' (2024-05-13)
  → 'github:nix-community/nixpkgs-wayland/ed18785b8816fa878bdd9df7f2e8722695401ef8' (2024-05-13)
```
2024-05-13 22:45:33 +00:00
Colin 2ae286ff75 nixpkgs: 2024-05-08 -> 2024-05-13, nixpkgs-wayland, sops-nix
```
• Updated input 'nixpkgs-next-unpatched':
    'github:nixos/nixpkgs/c8e3f684443d7c2875ff169f6ef2533534105e7b' (2024-05-08)
  → 'github:nixos/nixpkgs/6a217e9b1d39415076c7a6cfc44be5e935e7a839' (2024-05-13)
• Updated input 'nixpkgs-unpatched':
    'github:nixos/nixpkgs/a751e2faa2fc94c1337c32aaf6a6e417afe90be9' (2024-05-08)
  → 'github:nixos/nixpkgs/6bc8c8a7ac13182ee24a5e2caab7ad739f1c55c5' (2024-05-13)
• Updated input 'nixpkgs-wayland':
    'github:nix-community/nixpkgs-wayland/7dc8fb2aa7db995ac1ce2a8f2f8d8784b2af591c' (2024-05-08)
  → 'github:nix-community/nixpkgs-wayland/5f7272dff81558143f93e2cb32189a52ef965892' (2024-05-13)
• Updated input 'nixpkgs-wayland/lib-aggregate':
    'github:nix-community/lib-aggregate/26fabca301e1133abd3d9192b1bcb6fb45b30f1d' (2024-05-05)
  → 'github:nix-community/lib-aggregate/09883ca828e8cfaacdb09e29190a7b84ad1d9925' (2024-05-12)
• Updated input 'nixpkgs-wayland/lib-aggregate/nixpkgs-lib':
    'github:nix-community/nixpkgs.lib/4b620020fd73bdd5104e32c702e65b60b6869426' (2024-05-05)
  → 'github:nix-community/nixpkgs.lib/58e03b95f65dfdca21979a081aa62db0eed6b1d8' (2024-05-12)
• Updated input 'nixpkgs-wayland/nix-eval-jobs':
    'github:nix-community/nix-eval-jobs/7b6640f2a10701bf0db16aff048070f400e8ea7c' (2024-04-23)
  → 'github:nix-community/nix-eval-jobs/63154bdfb22091041b307d17863bdc0e01a32a00' (2024-05-09)
• Updated input 'nixpkgs-wayland/nix-eval-jobs/nixpkgs':
    'github:NixOS/nixpkgs/1e1dc66fe68972a76679644a5577828b6a7e8be4' (2024-04-22)
  → 'github:NixOS/nixpkgs/ad7efee13e0d216bf29992311536fce1d3eefbef' (2024-05-06)
• Updated input 'sops-nix':
    'github:Mic92/sops-nix/893e3df091f6838f4f9d71c61ab079d5c5dedbd1' (2024-05-06)
  → 'github:Mic92/sops-nix/b6cb5de2ce57acb10ecdaaf9bbd62a5ff24fa02e' (2024-05-12)
• Updated input 'sops-nix/nixpkgs-stable':
    'github:NixOS/nixpkgs/b980b91038fc4b09067ef97bbe5ad07eecca1e76' (2024-05-04)
  → 'github:NixOS/nixpkgs/8e47858badee5594292921c2668c11004c3b0142' (2024-05-11)
```
2024-05-13 22:45:33 +00:00
Colin a05fa53ee1 curlftpfs: EXPERIMENT: double the connect timeout to see if this reduces dropped conns 2024-05-13 07:52:43 +00:00
Colin 46d95805e9 programs: simplify sandbox symlink closure code 2024-05-13 07:49:00 +00:00
Colin 9346a066d1 sane-sandboxed: fix typo in `derefOnce` 2024-05-13 06:49:43 +00:00
Colin 567531727e sane-sandboxed: fix typos in `normPath` 2024-05-13 06:32:13 +00:00
Colin 6c65e4b313 sane-sandboxed: be a little more careful with out vars 2024-05-13 04:00:15 +00:00
Colin e6b13adb61 sane-open: associate `rofi-applications.desktop` with keyboard 2024-05-13 03:19:03 +00:00
Colin bd3e06982b sane-sandboxed: tweak symlink caching to allow /run/current-system to be bind-mounted instead of symlinked 2024-05-13 02:11:47 +00:00
Colin 660ba94c7c sane-sandboxed: introduce a symlink cache to reduce `readlink` calls even more
it's all a bit silly. i still do a bunch of -L tests: i just avoid the costly readlink fork :|
2024-05-13 01:31:30 +00:00
Colin 11ddce043d sane-sandboxed: reduce forking (use out vars) 2024-05-12 22:35:05 +00:00
Colin 980fe6b33c sane-sandboxed: use `local` where applicable 2024-05-12 22:15:34 +00:00
Colin 016df3ff74 sane-open: launch some .desktop files even when they point outside ~/.local/share/applications
an unfortunate reality is that symlinks tend to get dereferenced too
early by other programs.
2024-05-12 22:13:28 +00:00
Colin d827235d31 sane-sandboxed: be more strict internally about keeping `paths` var as absolute-paths 2024-05-12 21:44:33 +00:00
Colin f7a25d1421 sane-sandboxed: bwrap: expose symlinks to the sandbox directly, instead of binding
some things (e.g. `sane-open`) require the symlink, and lose too much
info when working only with the bind. having the sandboxed environment
stay similar to the out env sould make debugging things simpler
2024-05-12 21:42:31 +00:00
Colin d148b19767 sane-sandboxed: expand symlinks before binding them into the sandbox 2024-05-12 21:41:49 +00:00
Colin 89135d08cb rofi: file browser: include an entry to open the app launcher 2024-05-12 19:46:51 +00:00
Colin 15a5afd2c4 sane-open: special-case how i open .desktop files to be compatible with portals 2024-05-12 19:46:03 +00:00
Colin e63e359417 sane-open: fix so we can launch read-only files 2024-05-12 17:50:11 +00:00
Colin 3c1a74998e applications: hide .desktop files which arent meant to be user-visible 2024-05-12 17:43:07 +00:00
Colin eadf85f66d sane-open: associate as the default launcher for .desktop files 2024-05-12 17:41:00 +00:00
Colin 536eb2154a sane-open: add auto-keyboard action for a few more apps 2024-05-12 17:23:08 +00:00
Colin e62365436c sane-cast: implement `--device` option to choose a specific device non-interactively 2024-05-11 00:40:38 +00:00
Colin 4b04c283b6 fcitx5: temporarily disable 2024-05-10 17:51:37 +00:00
Colin def5816003 sane-vpn: fix "regions" printing to print all regions 2024-05-10 09:07:59 +00:00
Colin 6f2ae56126 sane-cast: add an --always-ask option 2024-05-10 07:01:16 +00:00
Colin a40f05260a unl0kr: simplify the crash edge-case handling 2024-05-09 08:42:41 +00:00
Colin 2b539fafcd unl0kr: handle some crashy edgecases 2024-05-09 08:38:22 +00:00
Colin 954c5c8344 trust-dns: fix so it starts as part of boot 2024-05-09 07:19:17 +00:00
Colin 2a8ecf0423 nixpkgs: 2024-04-28 -> 2024-05-08; nixpkgs-wayland, sops-nix
```
• Updated input 'nixpkgs-next-unpatched':
    'github:nixos/nixpkgs/0e395f4da1693e39239ffac7abf73a0a6931c961' (2024-04-28)
  → 'github:nixos/nixpkgs/c8e3f684443d7c2875ff169f6ef2533534105e7b' (2024-05-08)
• Updated input 'nixpkgs-unpatched':
    'github:nixos/nixpkgs/93909e9c7b05634ad924ff97c259ae0859b81756' (2024-04-28)
  → 'github:nixos/nixpkgs/a751e2faa2fc94c1337c32aaf6a6e417afe90be9' (2024-05-08)
• Updated input 'nixpkgs-wayland':
    'github:nix-community/nixpkgs-wayland/4e58e2cf22d11426ed2f997551f3650de0639e3a' (2024-04-28)
  → 'github:nix-community/nixpkgs-wayland/7dc8fb2aa7db995ac1ce2a8f2f8d8784b2af591c' (2024-05-08)
• Updated input 'nixpkgs-wayland/lib-aggregate':
    'github:nix-community/lib-aggregate/49d9b510614b9bd137e067eb31445a8feca83313' (2024-04-28)
  → 'github:nix-community/lib-aggregate/26fabca301e1133abd3d9192b1bcb6fb45b30f1d' (2024-05-05)
• Updated input 'nixpkgs-wayland/lib-aggregate/nixpkgs-lib':
    'github:nix-community/nixpkgs.lib/ade4fb7bbf04cd52bc1705734d5dc67755d77ec9' (2024-04-28)
  → 'github:nix-community/nixpkgs.lib/4b620020fd73bdd5104e32c702e65b60b6869426' (2024-05-05)
• Updated input 'sops-nix':
    'github:Mic92/sops-nix/f1b0adc27265274e3b0c9b872a8f476a098679bd' (2024-04-23)
  → 'github:Mic92/sops-nix/893e3df091f6838f4f9d71c61ab079d5c5dedbd1' (2024-05-06)
• Updated input 'sops-nix/nixpkgs-stable':
    'github:NixOS/nixpkgs/74574c38577914733b4f7a775dd77d24245081dd' (2024-04-20)
  → 'github:NixOS/nixpkgs/b980b91038fc4b09067ef97bbe5ad07eecca1e76' (2024-05-04)
```
2024-05-09 05:26:23 +00:00
Colin a056ca84be todo.md: fix multiple-schlocks bug 2024-05-07 15:26:08 +00:00
Colin 8d8bf00a34 s6-rc: use `s6-rc stop` instead of exiting 125 in the no-restart branch of "restartCondition = on-failure"
exiting 125 stops the service, but does NOT put it in the down state, preventing it from being re-started
2024-05-07 15:24:14 +00:00
Colin f58bcb4767 swaylock, schlock: convert to services 2024-05-07 15:02:46 +00:00
Colin 4f56acc316 s6-rc: implement `restartCondition` to allow restarting of the service only on failure 2024-05-07 15:01:40 +00:00
Colin fdf1b20368 s6-rc: propagate service status out of `run` script 2024-05-07 12:50:09 +00:00
Colin c12691a3a0 todo.md: document multi-instance schlock issue 2024-05-06 17:31:54 +00:00
Colin 06bfa05ec1 todo.md: complete swaync modem toggle perm bug 2024-05-06 17:29:41 +00:00
Colin 32e06ce998 programs: gnome-disk-utility: grant sandbox access to ~/tmp 2024-05-06 05:15:28 +00:00
Colin c0a7b831cd sane-open: more robust auto-application/file detection 2024-05-05 05:19:07 +00:00
Colin 8c04023eba sway: fix sane-open integration to not mistake it as a file 2024-05-05 05:04:25 +00:00
Colin cf3cfc5249 sane-open: add debug logging 2024-05-05 05:03:22 +00:00
Colin a1625ea41d programs: ship zulip 2024-05-04 08:28:48 +00:00
Colin 2cedd2beb4 readme: fix renamed `users.nix` -> `users/default.nix` 2024-05-02 10:30:41 +00:00
Colin 6544b9aca4 doc: dns: fix typo 2024-05-02 10:27:38 +00:00
Colin 08a9b838e5 sane-input-handler: fix log bog 2024-04-30 19:22:37 +00:00
Colin b7dd40e558 sane-open-desktop -> sane-open and have it auto-open/close the keyboard based on what an app wants 2024-04-30 19:22:37 +00:00
Colin 7f2abf7e6e sane-input-handler: fix missing newline when logging 2024-04-30 15:30:39 +00:00
Colin 825812e511 sane-input-handler: reset rofi directory to ~ when using the app + fsbrowser 2024-04-30 15:29:00 +00:00
Colin 69e5495cc9 sane-input-handler: set keyboard as appropriate for file/app browser 2024-04-30 15:16:59 +00:00
Colin b422f15b59 sane-input-handler: swap volup tap/hold actions 2024-04-30 14:38:17 +00:00
Colin 889b332ade trust-dns: split the parts which are generalizable into their own file
i can try to build this into a recursive resolver for *all* my hosts
2024-04-30 14:35:56 +00:00
Colin 46d1a49f0f servo: enable `sane-cast` program 2024-04-29 21:50:03 +00:00
Colin 1b156dcb0a networkmanager: fix eval error when not enabled 2024-04-29 05:58:32 +00:00
Colin efd2f14a13 nixpkgs: 2024-04-27 -> 2024-04-28; nixpkgs-wayland
```
• Updated input 'nixpkgs-next-unpatched':
    'github:nixos/nixpkgs/19c30e016f04874d60ed0922bf58be4aa9a15e53' (2024-04-27)
  → 'github:nixos/nixpkgs/0e395f4da1693e39239ffac7abf73a0a6931c961' (2024-04-28)
• Updated input 'nixpkgs-unpatched':
    'github:nixos/nixpkgs/77759bd39047f1b92f12b26b55029f0cc2c88093' (2024-04-27)
  → 'github:nixos/nixpkgs/93909e9c7b05634ad924ff97c259ae0859b81756' (2024-04-28)
• Updated input 'nixpkgs-wayland':
    'github:nix-community/nixpkgs-wayland/ff41a88e80aaf3ae1561cc6a54636fc46f9214de' (2024-04-27)
  → 'github:nix-community/nixpkgs-wayland/4e58e2cf22d11426ed2f997551f3650de0639e3a' (2024-04-28)
• Updated input 'nixpkgs-wayland/lib-aggregate':
    'github:nix-community/lib-aggregate/3b32a98eb3053f8c8ca55497d1881443ef2996e6' (2024-04-21)
  → 'github:nix-community/lib-aggregate/49d9b510614b9bd137e067eb31445a8feca83313' (2024-04-28)
• Updated input 'nixpkgs-wayland/lib-aggregate/nixpkgs-lib':
    'github:nix-community/nixpkgs.lib/6882347415e352cfc9c277cc01f73e0f5cb7b93c' (2024-04-21)
  → 'github:nix-community/nixpkgs.lib/ade4fb7bbf04cd52bc1705734d5dc67755d77ec9' (2024-04-28)
```
2024-04-29 04:16:33 +00:00
Colin d4d06d037c replace pipewire ffadoSupport toggle with a patch to fix cross compilation 2024-04-28 15:07:28 +00:00
Colin 9525c09c41 cross: remove obsoleted gpodder patch 2024-04-27 17:10:50 +00:00
Colin e5876a1e5b nixpkgs: 2024-04-26 -> 2024-04-27; nixpkgs-wayland -> 2024-04-27
```
• Updated input 'nixpkgs-next-unpatched':
    'github:nixos/nixpkgs/7d3f4eadec32d447a5f20d87fa309f00986cb288' (2024-04-26)
  → 'github:nixos/nixpkgs/19c30e016f04874d60ed0922bf58be4aa9a15e53' (2024-04-27)
• Updated input 'nixpkgs-unpatched':
    'github:nixos/nixpkgs/0b868df4ced96400774414f5baf30b696215b98f' (2024-04-26)
  → 'github:nixos/nixpkgs/77759bd39047f1b92f12b26b55029f0cc2c88093' (2024-04-27)
• Updated input 'nixpkgs-wayland':
    'github:nix-community/nixpkgs-wayland/ca9d278400c170935a95dd75e7e2537c2afd1cb7' (2024-04-26)
  → 'github:nix-community/nixpkgs-wayland/ff41a88e80aaf3ae1561cc6a54636fc46f9214de' (2024-04-27)
```
2024-04-27 16:18:28 +00:00
Colin 1757ea4492 cross: upstream eyeD3 patch 2024-04-27 13:31:47 +00:00
Colin 39d31c3ffd swaync-service-dispatcher: add `-b` to block on service state query, to avoid incorrect responses when run in parallel 2024-04-27 12:32:12 +00:00
Colin c50ef59102 swaync: fix service state tracking for oneshot services 2024-04-27 12:13:34 +00:00
Colin 5fc4ca6dad modemmanager: ship udev rules 2024-04-27 12:01:01 +00:00
Colin 35c7527946 modemmanager: fix so it's active on boot 2024-04-27 11:54:08 +00:00
Colin 7e8a014f37 NetworkManager: use the upstream service file 2024-04-27 10:58:21 +00:00
Colin 4ce951bbed wpa_supplicant: re-enable 2024-04-27 10:34:25 +00:00
Colin f784550b9b networkmanager: migrate from nixpkgs service to my own 2024-04-27 09:51:55 +00:00
Colin 1f2bbd4aec refactor: split modemmanager stuff into own file 2024-04-27 08:32:15 +00:00
Colin 2389757581 firefox-extensions.browserpass-extension: 3.7.2-2023-06-18 -> 3.8.0 2024-04-27 08:32:05 +00:00
Colin 9021ab9f05 s6: fix oneshot service runner
the runner previously couldn't find the 'live' directory, where the service state lives. now it can
2024-04-27 08:05:54 +00:00
Colin 547d71c19a nixpkgs: 2024-04-24 -> 2024-04-26, nixpkgs-wayland
```
• Updated input 'nixpkgs-next-unpatched':
    'github:nixos/nixpkgs/acba655f267a49327f2cea95003f17b8540909c0' (2024-04-24)
  → 'github:nixos/nixpkgs/7d3f4eadec32d447a5f20d87fa309f00986cb288' (2024-04-26)
• Updated input 'nixpkgs-unpatched':
    'github:nixos/nixpkgs/1eb9a6980dee3970850f47ba8139c7402f54a9a0' (2024-04-24)
  → 'github:nixos/nixpkgs/0b868df4ced96400774414f5baf30b696215b98f' (2024-04-26)
• Updated input 'nixpkgs-wayland':
    'github:nix-community/nixpkgs-wayland/80659e4b2805654de851996e682b063a5d7eea5e' (2024-04-24)
  → 'github:nix-community/nixpkgs-wayland/ca9d278400c170935a95dd75e7e2537c2afd1cb7' (2024-04-26)
```
2024-04-27 06:33:24 +00:00
Colin 79bba42768 s6-rc: fix oneshot services to generate `up`, not `run` 2024-04-27 06:33:24 +00:00
Colin 8dd4fe06f3 s6: longshot -> longrun (typo) 2024-04-27 05:22:35 +00:00
Colin 19115dfb65 eg25-control: port to s6 (hopefully) 2024-04-26 21:44:13 +00:00
Colin 4c0ae75b00 todo.md: more context for the uosc volume issue 2024-04-26 17:21:32 +00:00
Colin 34842c00fe moby: make the modem powerable by the user, without root
this should allow migrating eg25-control to a user service
2024-04-26 17:19:38 +00:00
Colin 46a513b263 feeds: subscribe to SamuelDR 2024-04-26 17:19:38 +00:00
Colin 6129fbf2b3 lemmy: upstream the proxy headers 2024-04-26 16:44:43 +00:00
Colin 242541304e todo.md: document a few moby bugs around modem 2024-04-26 13:05:34 +00:00
Colin f3d2dee470 lemmy: fix federation (broke due to invalid HTTP signatures) 2024-04-26 10:31:47 +00:00
Colin 3d207ab7bb coturn: allocate 256 ports instead of 16 2024-04-26 08:47:52 +00:00
Colin 95447eb765 goaccess: fix missing state dir 2024-04-26 08:47:09 +00:00
Colin 593268f620 coturn: run inside ovpns namespace 2024-04-26 08:01:34 +00:00
Colin 5c98a51cd6 dino: build without echo cancelation
this reduces CPU load on moby; it may also have implications for incoming call audio though, still sorting that out
2024-04-26 05:11:43 +00:00
Colin 4453bde815 dino: increase buffering 20ms -> 100ms (closer to 82ms, actually) 2024-04-25 11:28:22 +00:00
Colin 7843f9650a feeds: subscribe to The Amp Hour (podcast) 2024-04-25 05:54:10 +00:00
Colin 82dce71b9c feeds: add microarch.club podcast 2024-04-25 05:51:52 +00:00
Colin 8a981c3ca9 hackgregator: init at 2024-12-05
N.B.: it uses appstream/bwrap, and hence much be run with capsh --caps=
2024-04-25 03:56:57 +00:00
Colin 9c00c2c5cc zsh: add `exit` aliases: `ecit`, `exi5` 2024-04-25 01:51:45 +00:00
Colin aad645f2c5 nixpkgs: 2024-04-22 -> 2024-04-24; nixpkgs-wayland; sops-nix
```
• Updated input 'nixpkgs-next-unpatched':
    'github:nixos/nixpkgs/fe2b7d6a922c875221671df6aa360b6e73d47e2f' (2024-04-22)
  → 'github:nixos/nixpkgs/acba655f267a49327f2cea95003f17b8540909c0' (2024-04-24)
• Updated input 'nixpkgs-unpatched':
    'github:nixos/nixpkgs/8a3f95b79ba3083cfff90752296ef8a52a6bec9a' (2024-04-22)
  → 'github:nixos/nixpkgs/1eb9a6980dee3970850f47ba8139c7402f54a9a0' (2024-04-24)
• Updated input 'nixpkgs-wayland':
    'github:nix-community/nixpkgs-wayland/f01c36f09cc5c2d77cbab4475528e06d6641bff4' (2024-04-22)
  → 'github:nix-community/nixpkgs-wayland/80659e4b2805654de851996e682b063a5d7eea5e' (2024-04-24)
• Updated input 'nixpkgs-wayland/nix-eval-jobs':
    'github:nix-community/nix-eval-jobs/6b03a93296faf174b97546fd573c8b379f523a8d' (2024-01-14)
  → 'github:nix-community/nix-eval-jobs/7b6640f2a10701bf0db16aff048070f400e8ea7c' (2024-04-23)
• Updated input 'nixpkgs-wayland/nix-eval-jobs/flake-parts':
    'github:hercules-ci/flake-parts/34fed993f1674c8d06d58b37ce1e0fe5eebcb9f5' (2023-12-01)
  → 'github:hercules-ci/flake-parts/9126214d0a59633752a136528f5f3b9aa8565b7d' (2024-04-01)
• Updated input 'nixpkgs-wayland/nix-eval-jobs/nix-github-actions':
    'github:nix-community/nix-github-actions/93e39cc1a087d65bcf7a132e75a650c44dd2b734' (2023-11-28)
  → 'github:nix-community/nix-github-actions/5163432afc817cf8bd1f031418d1869e4c9d5547' (2023-12-29)
• Updated input 'nixpkgs-wayland/nix-eval-jobs/nixpkgs':
    'github:NixOS/nixpkgs/d6863cbcbbb80e71cecfc03356db1cda38919523' (2023-12-21)
  → 'github:NixOS/nixpkgs/1e1dc66fe68972a76679644a5577828b6a7e8be4' (2024-04-22)
• Updated input 'nixpkgs-wayland/nix-eval-jobs/treefmt-nix':
    'github:numtide/treefmt-nix/2961375283668d867e64129c22af532de8e77734' (2023-12-19)
  → 'github:numtide/treefmt-nix/49dc4a92b02b8e68798abd99184f228243b6e3ac' (2024-04-01)
• Updated input 'sops-nix':
    'github:Mic92/sops-nix/4371a1301c4d36cc791069d90ae522613a3a335e' (2024-04-22)
  → 'github:Mic92/sops-nix/f1b0adc27265274e3b0c9b872a8f476a098679bd' (2024-04-23)
```
2024-04-24 22:19:36 +00:00
Colin d01e49f566 pipewire: switch back to `bwrap` sandboxing and document limitations 2024-04-24 13:14:35 +00:00
Colin 7447d4879e pipewire: man: link to docs 2024-04-24 10:33:23 +00:00
Colin 215864e3d4 pipewire: reduce realtime priority so it doesnt crash moby gpu driver 2024-04-24 09:36:22 +00:00
Colin 0cbb81cfea WIP: pipewire: trying to tune so lima doesnt crash 2024-04-24 09:20:13 +00:00
Colin 9d7816a1cd koreader: fix sandboxing so that i can open links again 2024-04-24 01:02:02 +00:00
Colin 461aa5ede0 htop: include "PRIORITY" column 2024-04-23 12:01:15 +00:00
Colin b5874f4b49 sane-cast: fix casting for relative paths to mp4-only devices 2024-04-23 09:12:53 +00:00
Colin 10fc7bbb84 curlftpfs: document sandbox attempt 2024-04-23 09:08:05 +00:00
Colin 87e3f2a9ef pipewire: split rtkit into own file, and use defaults from pipewire project 2024-04-23 09:08:05 +00:00
Colin 5006692594 linux-megous: 6.7-20240306 -> 6.8-20240405 2024-04-23 09:08:05 +00:00
Colin 9481131daf pipewire: sandbox with landlock (so that rtkit integration works) and split rtkit into own file 2024-04-23 09:08:05 +00:00
Colin ae418fb2d1 valgrind: mark as not sandboxable 2024-04-23 09:08:05 +00:00
Colin c174eddddf wireplumber: sandbox such that it gets higher sched priority 2024-04-23 09:08:05 +00:00
Colin 6d74c6616c pipewire: shrink the mount sandbox 2024-04-23 09:08:05 +00:00
Colin 7db40fbf47 sane-cast: add a menu for choosing which device to cast to whenever there are multiple 2024-04-23 08:10:05 +00:00
Colin 152a5d4c92 sane-cast: integrate with mpv 2024-04-23 07:52:48 +00:00
Colin e33b7d7701 sane-cast: init 2024-04-23 07:37:17 +00:00
Colin 01e176d902 libjxl: fix hash 2024-04-23 05:42:24 +00:00
Colin fd771cdb2c fs: mount media/torrents instead of media/freeleech (the latter was removed) 2024-04-23 01:25:57 +00:00
Colin 243e8b831b libjxl cross patch: push upstream 2024-04-22 23:40:06 +00:00
Colin 9a8b4395f1 nixpkgs: 2024-04-19 -> 2024-04-22; nixpkgs-wayland, sops-nix
```
• Updated input 'nixpkgs-next-unpatched':
    'github:nixos/nixpkgs/6ad1fe08582fcdfedb2cb7c31b4a016a227bd38a' (2024-04-19)
  → 'github:nixos/nixpkgs/fe2b7d6a922c875221671df6aa360b6e73d47e2f' (2024-04-22)
• Updated input 'nixpkgs-unpatched':
    'github:nixos/nixpkgs/40d15ed86dd08eff6a29e0a9abc416001d19cd67' (2024-04-19)
  → 'github:nixos/nixpkgs/8a3f95b79ba3083cfff90752296ef8a52a6bec9a' (2024-04-22)
• Updated input 'nixpkgs-wayland':
    'github:nix-community/nixpkgs-wayland/ab0f8d391a960764348935e6497fc62ba0d2378d' (2024-04-19)
  → 'github:nix-community/nixpkgs-wayland/f01c36f09cc5c2d77cbab4475528e06d6641bff4' (2024-04-22)
• Updated input 'nixpkgs-wayland/lib-aggregate':
    'github:nix-community/lib-aggregate/f347ed9a1cab12c27541ed4d173e2f2d5c9bc0bb' (2024-04-14)
  → 'github:nix-community/lib-aggregate/3b32a98eb3053f8c8ca55497d1881443ef2996e6' (2024-04-21)
• Updated input 'nixpkgs-wayland/lib-aggregate/nixpkgs-lib':
    'github:nix-community/nixpkgs.lib/361d8a4f443bbfab20bd6d222f9022b8c6665906' (2024-04-14)
  → 'github:nix-community/nixpkgs.lib/6882347415e352cfc9c277cc01f73e0f5cb7b93c' (2024-04-21)
• Updated input 'sops-nix':
    'github:Mic92/sops-nix/b94c6edbb8355756c53efc8ca3874c63622f287a' (2024-04-18)
  → 'github:Mic92/sops-nix/4371a1301c4d36cc791069d90ae522613a3a335e' (2024-04-22)
• Updated input 'sops-nix/nixpkgs-stable':
    'github:NixOS/nixpkgs/8494ae076b7878d61a7d2d25e89a847fe8f8364c' (2024-04-18)
  → 'github:NixOS/nixpkgs/74574c38577914733b4f7a775dd77d24245081dd' (2024-04-20)
```
2024-04-22 22:44:15 +00:00
Colin 4c7cd06212 go2tv: clarify compatibility 2024-04-22 12:45:55 +00:00
Colin d0de6a9254 sftpgo: reduce the passive port range
hopefully this eases the load on the upstream firewall's UPNP service
2024-04-22 12:08:23 +00:00
Colin 12f2798140 servo: sftpgo: move to own directory 2024-04-22 12:05:16 +00:00
Colin bd92076291 fontconfig: populate the cache directory even when cross compiling 2024-04-22 09:47:20 +00:00
Colin 9cbe774c5a sane-input-handler: fix power_hold -> power_tap_1_hold when inhibited by rofi 2024-04-22 06:27:33 +00:00
Colin b4653b20a2 moby: button map: move vol{up,down}_hold to only act in power-off, else they may falsely trigger during other power-on actions 2024-04-22 05:13:29 +00:00
Colin 2c011df252 moby: tweak button mappings
- power hold: toggle media
- power x1 -> hold: kill

now nothing in screenoff uses power x2, which means we can get to
screen-on without waiting for any timeout.
2024-04-22 05:10:35 +00:00
Colin 9d472bb290 sane-input-handler: clean up suggestedPrograms 2024-04-22 04:13:56 +00:00
Colin 95b21cbed9 moby: update improve button mappings
- power + volup: screenshot
- power + voldown: camera
- volup_hold: file browser
- remove modal media controls
2024-04-22 04:05:52 +00:00
Colin 82007c9b40 bonsai: store the config in ~/.config to allow easier online editing 2024-04-22 04:05:15 +00:00
Colin 50c72de4f9 megapixels: fix folder icon to actually open ~/Pictures/Photos 2024-04-22 00:16:46 +00:00
Colin 36237a3201 megapixels: remove unnecessary `~/tmp` directory from sandbox 2024-04-22 00:16:14 +00:00
Colin eb9df628e6 megapixels: remove unnecessary ~/.local/share/applications from sandbox 2024-04-21 23:49:29 +00:00
Colin 6e04e288ea todo.md: document rofi crashes 2024-04-21 23:21:43 +00:00
Colin a92960d778 megapixels: place photos in ~/Pictures/Photos instead of directly in ~/Pictures 2024-04-21 23:13:49 +00:00
Colin ef9b0e9309 megapixels: fix .dng -> .jpg conversion 2024-04-21 21:59:05 +00:00
Colin 350e00e0cd firefox: decrease scrollbar width 20px -> 14px 2024-04-21 21:08:07 +00:00
Colin e924363dfb sysvol: 2024-02-08 -> 2024-04-11
it no longer flashes the volume on init
2024-04-21 20:43:03 +00:00
Colin b12f31652c todo.md: update `blast` items 2024-04-21 11:15:22 +00:00
Colin b77e811ad4 blast-to-default: leverage sane-die-with-parent 2024-04-21 11:09:23 +00:00
Colin a000a722ba mpv: fix so sane-sysvol doesnt hang exit 2024-04-21 10:08:46 +00:00
Colin 4dde01245e mpv: sane_sysvol: fix non_blocking_popen to use metatables and be more readable 2024-04-21 03:47:01 +00:00
Colin f50c0a98c2 sane-sysvol -> sane_sysvol, sane-cast -> sane_cast
when a script contains a dash, mpv silently renames *parts* of it to _, which causes confusion
2024-04-21 00:27:30 +00:00
Colin 0625bfdd10 mpv: sane-cast: fix crash due to missing `table.concat` function 2024-04-21 00:24:46 +00:00
Colin 4dfee58d09 sops: fix sandbox path 2024-04-20 21:43:13 +00:00
Colin a7b8eb179b pipewire: move the clock quantum config into sane.programs proper
this ensures it's available in the sandbox
2024-04-20 09:09:05 +00:00
Colin f10bb6c86c sftpgo: adjust file mode to be compatible with Kodi 2024-04-20 08:07:00 +00:00
Colin a59a7b5346 feeds: podcasts: add Tech Tales 2024-04-19 21:46:03 +00:00
Colin 1bd715e57e nixpkgs: 2024-04-18 -> 2024-04-19; nixpkgs-wayland, sops-nix
```
• Updated input 'nixpkgs-next-unpatched':
    'github:nixos/nixpkgs/19d2eb80a0e23daf1c4a8cf25b1011fbdb2260fb' (2024-04-18)
  → 'github:nixos/nixpkgs/6ad1fe08582fcdfedb2cb7c31b4a016a227bd38a' (2024-04-19)
• Updated input 'nixpkgs-unpatched':
    'github:nixos/nixpkgs/457c34178411e0072e59564ee7986e86255a6eff' (2024-04-18)
  → 'github:nixos/nixpkgs/40d15ed86dd08eff6a29e0a9abc416001d19cd67' (2024-04-19)
• Updated input 'nixpkgs-wayland':
    'github:nix-community/nixpkgs-wayland/7867aa617c6eb205b1ac1b71d98cd18a2561bb18' (2024-04-17)
  → 'github:nix-community/nixpkgs-wayland/ab0f8d391a960764348935e6497fc62ba0d2378d' (2024-04-19)
• Updated input 'sops-nix':
    'github:Mic92/sops-nix/cc535d07cbcdd562bcca418e475c7b1959cefa4b' (2024-04-15)
  → 'github:Mic92/sops-nix/b94c6edbb8355756c53efc8ca3874c63622f287a' (2024-04-18)
• Updated input 'sops-nix/nixpkgs-stable':
    'github:NixOS/nixpkgs/c27f3b6d8e29346af16eecc0e9d54b1071eae27e' (2024-04-13)
  → 'github:NixOS/nixpkgs/8494ae076b7878d61a7d2d25e89a847fe8f8364c' (2024-04-18)
```
2024-04-19 20:33:48 +00:00
Colin b7d2020f10 sane-tag-music: fix --help message 2024-04-19 07:29:20 +00:00
Colin 317996b609 clightning-sane: document the `status` command more 2024-04-19 07:29:20 +00:00
Colin e197f6f54d clightning-sane: fix build 2024-04-19 07:29:20 +00:00
Colin 135f63480b clightning-sane: add a help message 2024-04-19 07:29:20 +00:00
Colin d9ffa5bb5a wike: fix sandboxing for 3.0 2024-04-19 01:26:58 +00:00
Colin f59f13588f jackett/transmission/slskd: validate public IP address before starting 2024-04-18 20:05:59 +00:00
Colin c668a895d4 static-nix-shell: populate meta.mainProgram 2024-04-18 20:00:47 +00:00
Colin 9442a87311 sane-ip-check: add an --expect option to abort if IP address is not as expected 2024-04-18 19:46:16 +00:00
Colin 3bd56fb565 sane-ip-check: refactor: split out a `main` function 2024-04-18 19:42:16 +00:00
Colin bdc3b1ed0e sane-ip-check: port argument parsing to argparse 2024-04-18 19:40:44 +00:00
Colin 40af93a7fb feeds: add apenwarr 2024-04-18 17:29:50 +00:00
Colin cd4fc97bde nixpkgs: 2024-04-17 -> 2024-04-18; nixpkgs-wayland
```
• Updated input 'nixpkgs-next-unpatched':
    'github:nixos/nixpkgs/73f2b40dfc3413958695ae66fca3a52ee68451d6' (2024-04-17)
  → 'github:nixos/nixpkgs/19d2eb80a0e23daf1c4a8cf25b1011fbdb2260fb' (2024-04-18)
• Updated input 'nixpkgs-unpatched':
    'github:nixos/nixpkgs/2528b053e7c482baa8cd93cdce81172c3f0a3cee' (2024-04-17)
  → 'github:nixos/nixpkgs/457c34178411e0072e59564ee7986e86255a6eff' (2024-04-18)
• Updated input 'nixpkgs-wayland':
    'github:nix-community/nixpkgs-wayland/b0260157fccc94f4fe5a09fb3a1b1f62a87ae397' (2024-04-17)
  → 'github:nix-community/nixpkgs-wayland/7867aa617c6eb205b1ac1b71d98cd18a2561bb18' (2024-04-17)
```
2024-04-18 06:56:13 +00:00
Colin a36ff517e7 servo: slskd: disable 2024-04-18 06:55:56 +00:00
Colin 3642ead646 trust-dns: 0.24.0 -> 0.24.1 2024-04-18 06:03:34 +00:00
Colin 60c370df3f sftpgo: fix domain name in banner 2024-04-18 05:01:57 +00:00
Colin d80852c6c1 sftpgo: re-enable password login 2024-04-18 04:58:59 +00:00
Colin 62b3047fff sftpgo: support FTPS 2024-04-18 04:34:41 +00:00
Colin de2c3a30ff programs: ship lftp ftp client 2024-04-18 04:17:10 +00:00
Colin c08280589d lsof: fix sandboxing 2024-04-17 23:43:42 +00:00
Colin 9a9ffcbea9 transmission: fix faulty "find" expression (thanks shellcheck!) 2024-04-17 23:32:00 +00:00
Colin 733efcfaf7 servo: nginx: forceSSL for anything media related 2024-04-17 22:49:24 +00:00
Colin b34d984572 servo: transmission: remove noisy files upon torrent completion 2024-04-17 20:47:00 +00:00
Colin e2b58e1b77 servo: transmission: be extra strict about requiring VPN 2024-04-17 19:52:11 +00:00
Colin b7e5bc5972 servo: sftpgo: disable external access 2024-04-17 19:41:57 +00:00
Colin 831b4ad72a nixpkgs: 2024-04-16 -> 2024-04-17; nixpkgs-wayland -> 2024-04-17
```
• Updated input 'nixpkgs-next-unpatched':
    'github:nixos/nixpkgs/097ced11fa37dec3146e0480026c0c10d7d35e6f' (2024-04-16)
  → 'github:nixos/nixpkgs/73f2b40dfc3413958695ae66fca3a52ee68451d6' (2024-04-17)
• Updated input 'nixpkgs-unpatched':
    'github:nixos/nixpkgs/7f1c8f1b9071c77b81b62e3be62ef5e3d0c578ad' (2024-04-16)
  → 'github:nixos/nixpkgs/2528b053e7c482baa8cd93cdce81172c3f0a3cee' (2024-04-17)
• Updated input 'nixpkgs-wayland':
    'github:nix-community/nixpkgs-wayland/a03b8253e5cedb72a0957f7d534ad2702d7a54f0' (2024-04-15)
  → 'github:nix-community/nixpkgs-wayland/b0260157fccc94f4fe5a09fb3a1b1f62a87ae397' (2024-04-17)
```
2024-04-17 09:54:45 +00:00
Colin 54cefa247a dino: record another bug 2024-04-17 09:53:08 +00:00
Colin e3898449b7 sane-tag-music: allow manually specifying the track number 2024-04-17 09:45:10 +00:00
Colin e5bad6a74c sane-tag-music: fixup track numbers 2024-04-17 07:56:52 +00:00
Colin 254343a6af todo.md: sync 2024-04-17 02:26:09 +00:00
Colin 28bfd75114 sane-tag-music: split into two operations 2024-04-17 02:25:54 +00:00
Colin b7fd5e78cc swaync: show volume-per-app (TODO: stylize it better) 2024-04-17 01:37:03 +00:00
Colin 79985ff009 dino: docs: update notes about BUGS 2024-04-16 20:50:00 +00:00
Colin 62f5b9276f pwvucontrol: whitelist DRI inside the sandbox, for better perf 2024-04-16 20:49:33 +00:00
Colin 276844af0b sane-tag-music: update docs 2024-04-16 19:56:58 +00:00
Colin 13c1f01a6b servo: pleroma: migrate port 4000 -> 4040
port 4000 is used by NFS
2024-04-16 18:57:54 +00:00
Colin 5f281f57de servo: transmission: inline nested torrent directories 2024-04-16 18:25:41 +00:00
Colin 089e434e3f servo: transmission: fix group permissions of media when copying them to public dir 2024-04-16 16:31:10 +00:00
Colin b068b50d7c sane-bt: require specifying a title when torrenting films 2024-04-16 16:05:39 +00:00
Colin 14911868e4 nixpkgs: 2024-04-14 -> 2024-04-16; nixpkgs-wayland, sops-nix, uninsane-dot-org
```
• Updated input 'nixpkgs-next-unpatched':
    'github:nixos/nixpkgs/2d0506704b7d92cc610412b176b515fe1a782095' (2024-04-14)
  → 'github:nixos/nixpkgs/097ced11fa37dec3146e0480026c0c10d7d35e6f' (2024-04-16)
• Updated input 'nixpkgs-unpatched':
    'github:nixos/nixpkgs/bc59f72803cf40fb50f05cb73068d85b5ce21297' (2024-04-14)
  → 'github:nixos/nixpkgs/7f1c8f1b9071c77b81b62e3be62ef5e3d0c578ad' (2024-04-16)
• Updated input 'nixpkgs-wayland':
    'github:nix-community/nixpkgs-wayland/b816217ba4fc77d19ca033ab8f13b35ba0331e91' (2024-04-13)
  → 'github:nix-community/nixpkgs-wayland/a03b8253e5cedb72a0957f7d534ad2702d7a54f0' (2024-04-15)
• Updated input 'nixpkgs-wayland/lib-aggregate':
    'github:nix-community/lib-aggregate/2737d0204685c3274390229a09eb8f7eaa1a9e89' (2024-04-07)
  → 'github:nix-community/lib-aggregate/f347ed9a1cab12c27541ed4d173e2f2d5c9bc0bb' (2024-04-14)
• Updated input 'nixpkgs-wayland/lib-aggregate/nixpkgs-lib':
    'github:nix-community/nixpkgs.lib/3c62b6a12571c9a7f65ab037173ee153d539905f' (2024-04-07)
  → 'github:nix-community/nixpkgs.lib/361d8a4f443bbfab20bd6d222f9022b8c6665906' (2024-04-14)
• Updated input 'sops-nix':
    'github:Mic92/sops-nix/226062b47fe0e2130ba3ee9f4f1c880dc815cf87' (2024-04-14)
  → 'github:Mic92/sops-nix/cc535d07cbcdd562bcca418e475c7b1959cefa4b' (2024-04-15)
• Updated input 'uninsane-dot-org':
    'git+https://git.uninsane.org/colin/uninsane?ref=refs/heads/master&rev=b9502e6f190752d327f8cee7fa4b139094bd7c16' (2024-03-25)
  → 'git+https://git.uninsane.org/colin/uninsane?ref=refs/heads/master&rev=af8420d1c256d990b5e24de14ad8592a5d85bf77' (2024-04-15)
```
2024-04-16 04:59:59 +00:00
Colin 539fe48947 swaync: cleanup 2024-04-16 04:14:07 +00:00
Colin 259c3af526 swaync-fbcli: fix CPU pegging when canceling a phone ringer 2024-04-16 02:18:51 +00:00
Colin 6b5e0e57bc swaync: unify the *DEBUG variables 2024-04-15 21:29:17 +00:00
Colin b55c903a81 todo.md: made it so unl0kr starts with keyboard 2024-04-15 21:11:20 +00:00
Colin 4f06f0dc5e unl0kr: disable animations 2024-04-15 21:10:55 +00:00
Colin c0dde0e540 unl0kr: populate config file with upstream defaults 2024-04-15 21:05:21 +00:00
Colin 6779063578 todo.md: sync 2024-04-15 19:57:58 +00:00
Colin 2eea562d1f sandbox: remove unused "binMap" option 2024-04-15 19:56:33 +00:00
Colin 0385c09f23 sane-sandboxed: split out into an actual package 2024-04-15 18:57:22 +00:00
Colin bd57b95598 swaync-fbcli: fix so that the child actually exits when killed (critical is to use SIGINT) 2024-04-15 18:32:50 +00:00
Colin 465da7c939 swaync-fbcli: migrate an "echo" to a "log" 2024-04-15 18:22:30 +00:00
Colin 44f76e656a swaync-fbcli: fix that pkill expression wouldn't work for wrapped binaries 2024-04-15 18:21:27 +00:00
Colin 824046aca1 swaync-fbcli: fix CPU pegging 2024-04-15 18:09:21 +00:00
Colin 827c50ff43 swaync: cleanup the swaync-fbcli helper 2024-04-15 18:00:51 +00:00
Colin 0230291bb2 swaync: move the pkill logic into swaync-fbcli 2024-04-15 17:46:40 +00:00
Colin 3d3618256d swaync: split the fbcli wrapper into its own file 2024-04-15 17:46:40 +00:00
Colin 590cb2dd7f feeds: sort the list 2024-04-15 16:21:31 +00:00
Colin d9dcab544c feeds: unsubscribe from Profectus 2024-04-15 16:20:17 +00:00
Colin 4ee0f0c659 feeds: disable TheSideView 2024-04-15 14:59:50 +00:00
Colin 7692ab0b3e firefox-extensions.sidebery: build from source 2024-04-15 05:25:19 +00:00
Colin 2af5bb3d78 i-still-dont-care-about-cookies: enable 2024-04-15 03:36:49 +00:00
Colin e72a0a4300 firefox extensions: support more manifest formats 2024-04-15 03:36:27 +00:00
Colin 6b0cbf684f sidebery: 5.2.0.1 -> 5.2.0.7 2024-04-15 03:36:03 +00:00
Colin 62af314238 firefox-extensions.i-still-dont-care-about-cookies: init at 1.1.4 2024-04-15 03:02:19 +00:00
Colin e8745b4312 firefox-extensions: ublock, metamask -> latest 2024-04-15 02:35:49 +00:00
Colin 5a10173ba3 schlock: fix to run on modern sway 2024-04-15 02:07:20 +00:00
Colin 2d8fe1d3e5 bonsai: tune niceness to hopefully be more responsive 2024-04-15 01:46:32 +00:00
Colin 0741d87bcb rofi: theme so that i can read more text on narrow moby display 2024-04-15 00:04:10 +00:00
Colin 2587c27f89 font-manager: fix sandboxing 2024-04-14 21:55:52 +00:00
Colin 2d74d0725d feeds: podcasts: add Money Stuff 2024-04-14 20:39:53 +00:00
Colin b0d1d2e1af coppwr: remove (it's been upstreamed into nixpkgs) 2024-04-14 16:16:46 +00:00
Colin 61dc79a2ea cross: remove upstreamed webkitgtk patch 2024-04-14 16:08:48 +00:00
Colin 7804236499 xdg-terminal-exec: remove upstreamed patched 2024-04-14 14:16:50 +00:00
Colin f908762cf8 nixpkgs: 2024-04-06 -> 2024-04-14; nixpkgs-wayland, sops-nix
```
• Updated input 'nixpkgs-next-unpatched':
    'github:nixos/nixpkgs/7c74352f2f7eca1925729f5c9c80cb89df8e74a2' (2024-04-06)
  → 'github:nixos/nixpkgs/2d0506704b7d92cc610412b176b515fe1a782095' (2024-04-14)
• Updated input 'nixpkgs-unpatched':
    'github:nixos/nixpkgs/c58702222e0a29fd01cc42d70737d699995f6389' (2024-04-06)
  → 'github:nixos/nixpkgs/bc59f72803cf40fb50f05cb73068d85b5ce21297' (2024-04-14)
• Updated input 'nixpkgs-wayland':
    'github:nix-community/nixpkgs-wayland/9b77653338f52da4b498abdf4835efb6ff6e453e' (2024-04-04)
  → 'github:nix-community/nixpkgs-wayland/b816217ba4fc77d19ca033ab8f13b35ba0331e91' (2024-04-13)
• Updated input 'nixpkgs-wayland/lib-aggregate':
    'github:nix-community/lib-aggregate/9c06929b83e57c18d125f1105ba6a423f24083d2' (2024-03-31)
  → 'github:nix-community/lib-aggregate/2737d0204685c3274390229a09eb8f7eaa1a9e89' (2024-04-07)
• Updated input 'nixpkgs-wayland/lib-aggregate/nixpkgs-lib':
    'github:nix-community/nixpkgs.lib/90b1a963ff84dc532db92f678296ff2499a60a87' (2024-03-31)
  → 'github:nix-community/nixpkgs.lib/3c62b6a12571c9a7f65ab037173ee153d539905f' (2024-04-07)
• Updated input 'sops-nix':
    'github:Mic92/sops-nix/99b1e37f9fc0960d064a7862eb7adfb92e64fa10' (2024-03-31)
  → 'github:Mic92/sops-nix/226062b47fe0e2130ba3ee9f4f1c880dc815cf87' (2024-04-14)
• Updated input 'sops-nix/nixpkgs-stable':
    'github:NixOS/nixpkgs/2b4e3ca0091049c6fbb4908c66b05b77eaef9f0c' (2024-03-30)
  → 'github:NixOS/nixpkgs/c27f3b6d8e29346af16eecc0e9d54b1071eae27e' (2024-04-13)
```
2024-04-14 14:15:02 +00:00
Colin feb36d19ac programs: ship cups 2024-04-14 03:33:55 +00:00
Colin 06185ac870 todo.md: add a way to exit mpv fullscreen on moby 2024-04-13 20:30:30 +00:00
Colin a8915661a7 style: refine the base pink color for mpv and sway/waybar
this matches swaync a little better. mpv had to be made lighter, i think because of transparency stuff. probably sway/waybar could be made normal lightness
2024-04-13 20:29:24 +00:00
Colin d57aa473ac overlays/pkgs-debug: cleanup 2024-04-13 20:29:24 +00:00
Colin a28b7d5616 todo.md: more mobile games, mpv improvements 2024-04-13 20:29:24 +00:00
Colin dd58ba8b00 gvfs: enable as part of nautilus, not sway 2024-04-13 20:29:24 +00:00
Colin a21508b6ba todo.md: fix schlock (moby) 2024-04-13 20:29:24 +00:00
Colin 94cff99f53 todo.md: ftps support 2024-04-13 20:29:24 +00:00
Colin 8aa8d773de cherry-pick orc update to fix Dino calls 2024-04-13 20:29:24 +00:00
Colin 0a888e205e programs: ship objdump 2024-04-13 20:29:24 +00:00
Colin 898dc89c8f overlays: add `pkgsDebug` for building packages with debug symbols and such 2024-04-13 20:29:24 +00:00
Colin 4b22fd95bf introduce 'moby-min' host variant for the quickest deployment (no webkitgtk) 2024-04-13 20:29:24 +00:00
Colin 527a9e7612 feeds: add The Side View 2024-04-10 04:47:34 +00:00
Colin 3686e6e508 feeds: subscribe to Future of Coding 2024-04-10 03:06:30 +00:00
Colin cda50db23b loupe: associate with avif filetype 2024-04-09 19:22:59 +00:00
Colin 344e24fcd2 todo.md: ssh doesnt give the right linux capabilities 2024-04-09 18:38:04 +00:00
Colin 9be6960bbf sway: disable shortcuts for creating sub-splits
i'm just always accidentally triggering them
2024-04-09 16:24:02 +00:00
Colin a45aabfb72 sway: todo: load background from a more traditional path 2024-04-09 16:19:56 +00:00
Colin 602bf59843 todo.md: disable sway sub-layouts 2024-04-09 16:15:27 +00:00
Colin 895d7f6f20 todo.md: note that mpv exit hangs because of sane-sysvol 2024-04-09 16:13:43 +00:00
Colin 876103ff7b mpv: remove legacy ao=alsa and volume-max config 2024-04-09 16:10:05 +00:00
Colin 46cda87d5e notejot: fix sandboxing 2024-04-09 15:44:01 +00:00
Colin d728dfcd70 mpv: uosc: tweak the maximize button to actually act as a fullscreen toggle 2024-04-09 10:14:40 +00:00
Colin 19fcd0318c mpv: remove the double-click-to-fullscreen shortcut 2024-04-09 10:09:17 +00:00
Colin 030f6d1a99 mpv: fix so pseudo-gui mode doesnt break logging 2024-04-09 09:58:16 +00:00
Colin 86b495cb9f mpv: sane-sysvol: integrate with uosc mute button 2024-04-09 08:05:00 +00:00
Colin c897f4fa4b mpv: sane-sysvol: fix pipewire mute to reflect onto uosc volume level
ideally it would actually show up as the mute parameter!
2024-04-09 08:05:00 +00:00
Colin 8181a0664d mpv: sane-sysvol: remove the unused id tracking 2024-04-09 08:05:00 +00:00
Colin c37e94493f mpv: sane-sysvol: optimize 2024-04-09 08:05:00 +00:00
Colin b9e107510d mpv: sane-sysvol: dont force system volume to zero on init 2024-04-09 08:05:00 +00:00
Colin 976ae65529 todo.md: remove deprecated use of 'crypt' 2024-04-09 08:05:00 +00:00
Colin 0f4c1ccfe3 mpv: update input.conf for sane-cast rename 2024-04-09 08:05:00 +00:00
Colin 9d9413c790 mpv: announce pipewire volume changes so uosc can listen for them 2024-04-09 08:05:00 +00:00
Colin 64c28ae657 mpv: don't need to force uosc volume state to 0 by default; nil is OK 2024-04-09 08:05:00 +00:00
Colin d221625eb3 todo.md: add work around signal, mpv 2024-04-09 08:05:00 +00:00
Colin 1f4c885748 mpv: sane-sysvol script: init
it's a one-way volume control, but that's a start
2024-04-09 08:05:00 +00:00
Colin 0545b178af mpv: rename plugin: sane -> sane-cast 2024-04-09 08:04:51 +00:00
Colin fe4b6c36c4 feeds: subscribe to jwz.org 2024-04-09 03:55:25 +00:00
Colin fce3436c88 servo: expose Milkbags to the internet :) 2024-04-08 06:55:09 +00:00
Colin 03bec6aab2 coppwr: init at 1.5.1-unstable-2024-03-28 (4e7239d4bd5b2f24f7ebec0a02c1054648a4425c) 2024-04-06 23:42:25 +00:00
Colin 3aba91b360 mpv: fix race condition in uosc/ao-volume monitoring 2024-04-06 23:41:59 +00:00
Colin 907933612d htop: statically populate config 2024-04-06 23:41:59 +00:00
Colin 0db546bf82 nixpkgs: 2024-04-05 -> 2024-04-06
```
• Updated input 'nixpkgs-next-unpatched':
    'github:nixos/nixpkgs/9a0c25978d78416219718437fd7e618668d9ad74' (2024-04-05)
  → 'github:nixos/nixpkgs/7c74352f2f7eca1925729f5c9c80cb89df8e74a2' (2024-04-06)
• Updated input 'nixpkgs-unpatched':
    'github:nixos/nixpkgs/3541c7628de9414f999ced044c95a284584f4ec1' (2024-04-05)
  → 'github:nixos/nixpkgs/c58702222e0a29fd01cc42d70737d699995f6389' (2024-04-06)
```
2024-04-06 10:20:03 +00:00
Colin b4877a488e discord: add media into sandbox 2024-04-06 09:36:55 +00:00
Colin 4b3975367a fix warnings: remove xdg-desktop-portal patch; fix mautrix-meta enable logic 2024-04-05 21:40:42 +00:00
Colin 38c8d96e5a nixpkgs: 2024-04-04 -> 2024-04-05; nixpkgs-wayland -> 2024-04-04
```
• Updated input 'nixpkgs-next-unpatched':
    'github:nixos/nixpkgs/1ea9e4ecab5010d29f557f7a1f8bb26ad3afd686' (2024-04-04)
  → 'github:nixos/nixpkgs/9a0c25978d78416219718437fd7e618668d9ad74' (2024-04-05)
• Updated input 'nixpkgs-unpatched':
    'github:nixos/nixpkgs/e52ada4e6beea931c244bf8cc4a75d8a07d62373' (2024-04-04)
  → 'github:nixos/nixpkgs/3541c7628de9414f999ced044c95a284584f4ec1' (2024-04-05)
• Updated input 'nixpkgs-wayland':
    'github:nix-community/nixpkgs-wayland/30aa5f8c558cd8a699f9a9227cf7310f291f1e29' (2024-04-03)
  → 'github:nix-community/nixpkgs-wayland/9b77653338f52da4b498abdf4835efb6ff6e453e' (2024-04-04)
```
2024-04-05 09:28:25 +00:00
Colin 28110c3e85 fix system hang during vim ctrl+z (disable io_uring in libuv) 2024-04-05 07:29:55 +00:00
Colin 43aa498ff9 mpv: fix uosc touch controls 2024-04-05 07:29:15 +00:00
Colin f7e4504764 pict-rs: remove no-transcoding patch (it doesnt apply anymore) 2024-04-04 19:09:12 +00:00
Colin 4942fa8a38 nixpkgs: 2024-04-02 -> 2024-04-04
```
• Updated input 'nixpkgs-next-unpatched':
    'github:nixos/nixpkgs/7a5ee8d0c786f9fd789b5bb07245d2a8b12193a4' (2024-04-02)
  → 'github:nixos/nixpkgs/1ea9e4ecab5010d29f557f7a1f8bb26ad3afd686' (2024-04-04)
• Updated input 'nixpkgs-unpatched':
    'github:nixos/nixpkgs/7ab59131642a42b92f4d6554173ef9a35cbb39f0' (2024-04-02)
  → 'github:nixos/nixpkgs/e52ada4e6beea931c244bf8cc4a75d8a07d62373' (2024-04-04)
• Updated input 'nixpkgs-wayland':
    'github:nix-community/nixpkgs-wayland/8c4df2153c615554b516ba698f5f7bd64f7bf520' (2024-03-31)
  → 'github:nix-community/nixpkgs-wayland/30aa5f8c558cd8a699f9a9227cf7310f291f1e29' (2024-04-03)
```
2024-04-04 06:27:24 +00:00
Colin 7ab148ea58 servo: migrate /var/media to be 100% on zfs pool 2024-04-04 06:20:50 +00:00
Colin 0dfeec3260 mpv-uosc: 5.2.0 -> 5.2.0-unstable-2024-03-13 2024-04-04 06:19:15 +00:00
Colin eb2317a743 mpv: 0.37.0 -> 0.37.0-unstable-2024-03-31 2024-04-04 06:19:15 +00:00
Colin 1a0ef28377 sane-bt-add: document how to *move* a torrent 2024-04-03 11:00:54 +00:00
Colin 7c3ad85d75 sane-bt-add: fix sandboxing 2024-04-03 09:48:21 +00:00
Colin 7766e1cec1 sane_bt: save torrents to /var/media/torrents by default 2024-04-03 09:48:21 +00:00
Colin 158e674f83 sane_bt.py: fix dict typo 2024-04-03 09:48:21 +00:00
Colin 410097480f docs: servo: fs: fix setfacl typo 2024-04-03 09:48:10 +00:00
Colin f5fadbe4cf transmission: place torrents in a separate directory, and copy them to the main media directory on completion 2024-04-03 09:48:10 +00:00
Colin a0550660e7 feeds: add The Corresponding Source podcast 2024-04-02 22:10:36 +00:00
Colin bad6c353ed sane-bt: refactor 2024-04-02 20:53:01 +00:00
Colin a814832e48 feeds: add Hacker Public Radio podcast 2024-04-02 19:34:42 +00:00
Colin a4312f1494 nixpkgs: 2024-04-01 -> 2024-04-02
```
• Updated input 'nixpkgs-next-unpatched':
    'github:nixos/nixpkgs/409234ba0c73ce2cee676f14b68a88e2b5a52af8' (2024-04-01)
  → 'github:nixos/nixpkgs/7a5ee8d0c786f9fd789b5bb07245d2a8b12193a4' (2024-04-02)
• Updated input 'nixpkgs-unpatched':
    'github:nixos/nixpkgs/e7de14ea98fe984aa73a5a6b2f540ca817471106' (2024-04-01)
  → 'github:nixos/nixpkgs/7ab59131642a42b92f4d6554173ef9a35cbb39f0' (2024-04-02)
```
2024-04-02 09:46:40 +00:00
Colin 747032d9a4 dino: run with higher scheduling priority 2024-04-02 09:02:44 +00:00
Colin 9b2e35b93f pipewire: ship rtkit and unlock better scheduling priority 2024-04-02 09:02:06 +00:00
Colin d2751237c1 xdg-desktop-portal-wlr: propery document its dependency on pipewire 2024-04-02 09:01:35 +00:00
Colin ae87160de3 dino: 0.4.3 -> 0.4.3-unstable-2024-04-01 2024-04-02 04:57:11 +00:00
Colin a90a213cc0 apps: gui: disable under-used "blanket" noise generator 2024-04-02 04:18:53 +00:00
Colin 24c04b8fc0 docs: xdg-desktop-portal: link to Door Knocker debugging tool 2024-04-02 04:18:53 +00:00
Colin d0b022d1c6 libnice: 0.1.21 -> 0.1.22 2024-04-02 04:18:35 +00:00
Colin 9d9791814a audacity: fix sandboxing 2024-04-02 02:56:51 +00:00
Colin b85d4b20f8 nixpkgs: 2024-03-31 -> 2024-04-01, nixpkgs-wayland
```
• Updated input 'nixpkgs-next-unpatched':
    'github:nixos/nixpkgs/6b7b5776bef8eed645f63725ce31fa0946f997ff' (2024-03-31)
  → 'github:nixos/nixpkgs/409234ba0c73ce2cee676f14b68a88e2b5a52af8' (2024-04-01)
• Updated input 'nixpkgs-unpatched':
    'github:nixos/nixpkgs/7848d6f048d38c42a8aeeff7fe7d36916ffb8284' (2024-03-31)
  → 'github:nixos/nixpkgs/e7de14ea98fe984aa73a5a6b2f540ca817471106' (2024-04-01)
• Updated input 'nixpkgs-wayland':
    'github:nix-community/nixpkgs-wayland/11544449e6b696e209463aae094e736368eef757' (2024-03-30)
  → 'github:nix-community/nixpkgs-wayland/8c4df2153c615554b516ba698f5f7bd64f7bf520' (2024-03-31)
• Updated input 'nixpkgs-wayland/lib-aggregate':
    'github:nix-community/lib-aggregate/120535dff702c551ec76a125a181d90131407264' (2024-03-24)
  → 'github:nix-community/lib-aggregate/9c06929b83e57c18d125f1105ba6a423f24083d2' (2024-03-31)
• Updated input 'nixpkgs-wayland/lib-aggregate/nixpkgs-lib':
    'github:nix-community/nixpkgs.lib/b2a1eeef8c185f6bd27432b053ff09d773244cbc' (2024-03-24)
  → 'github:nix-community/nixpkgs.lib/90b1a963ff84dc532db92f678296ff2499a60a87' (2024-03-31)
```
2024-04-01 07:42:47 +00:00
Colin 331e673589 common/fs: mount /mnt/servo/media/* directories more granularly
this benefits sandboxing
2024-04-01 07:31:25 +00:00
Colin bbb93600b7 /mnt/servo/*: mount in a way which doesn't block sandboxes 2024-04-01 06:00:17 +00:00
Colin c0de54c11a curlftpfs: exit on timeout error 2024-04-01 04:02:32 +00:00
Colin 0d29722443 common/fs: refactor and DRY 2024-04-01 02:12:06 +00:00
Colin 1c2a375b6d common/fs: split curlftpfs into sane.programs
this makes it easier to build outside of /etc/fstab context, and opens a future path to sandboxing
2024-04-01 00:50:14 +00:00
Colin b6840a3ed4 curlftpfs: build via my own repo 2024-04-01 00:43:07 +00:00
Colin 74e994598e feeds: add David Revoy 2024-03-31 20:28:41 +00:00
Colin 856b6fcd7a feeds: add Willow 2024-03-31 18:20:49 +00:00
Colin 2404fb66f3 nixpkgs: 2024-03-26 -> 2024-0-31; nixpkgs-wayland, sops
```
• Updated input 'nixpkgs-next-unpatched':
    'github:nixos/nixpkgs/c904e6bf24e582e4fe28e988b7cdb7e9fda595c3' (2024-03-26)
  → 'github:nixos/nixpkgs/6b7b5776bef8eed645f63725ce31fa0946f997ff' (2024-03-31)
• Updated input 'nixpkgs-unpatched':
    'github:nixos/nixpkgs/da0502af1164c4fd04ebcd3acde1e378a861bd19' (2024-03-26)
  → 'github:nixos/nixpkgs/7848d6f048d38c42a8aeeff7fe7d36916ffb8284' (2024-03-31)
• Updated input 'nixpkgs-wayland':
    'github:nix-community/nixpkgs-wayland/7274c73cf5708ed3a814edc9605463ec4a116619' (2024-03-25)
  → 'github:nix-community/nixpkgs-wayland/11544449e6b696e209463aae094e736368eef757' (2024-03-30)
• Updated input 'sops-nix':
    'github:Mic92/sops-nix/405987a66cce9a4a82f321f11b205982a7127c88' (2024-03-24)
  → 'github:Mic92/sops-nix/99b1e37f9fc0960d064a7862eb7adfb92e64fa10' (2024-03-31)
• Updated input 'sops-nix/nixpkgs-stable':
    'github:NixOS/nixpkgs/ac6bdf6181666ebb4f90dd20f31e2fa66ede6b68' (2024-03-23)
  → 'github:NixOS/nixpkgs/2b4e3ca0091049c6fbb4908c66b05b77eaef9f0c' (2024-03-30)
```
2024-03-31 06:30:10 +00:00
Colin cd6a91e995 sway: tune sandboxing 2024-03-31 05:59:10 +00:00
Colin 89d4b0ae0b s6-rc: don't tee to /dev/stderr, as i don't want any logs going to the console and interfering with text entry 2024-03-31 05:20:33 +00:00
Colin ade680d9d2 unl0kr: remove legacy wayland stuff (it's handled by s6 now) 2024-03-31 05:20:33 +00:00
Colin 6d4a43fa0d sway: warn when needed runtime dirs dont exist 2024-03-31 05:20:20 +00:00
Colin d3ad661970 servo: zfs: enable reflink support 2024-03-31 03:48:34 +00:00
Colin c9632b05f9 linux-megous: fix config so that it boots to graphics again
see: <https://github.com/NixOS/nixpkgs/pull/298332>
2024-03-31 03:24:33 +00:00
Colin 1e7de43da8 docs: sway: mention that hotplugging is broken 2024-03-31 03:24:33 +00:00
Colin eff37765ae sane.image: fix so `imgs.moby` includes a working bootloader 2024-03-31 03:24:33 +00:00
Colin a65673847a superTux, superTuxKard: don't ship on moby
i don't use it there; it wastes deploy time
2024-03-31 03:24:33 +00:00
Colin 930c5e2412 delfin: don't ship
i don't use it; it wastes deploy time
2024-03-31 03:24:33 +00:00
Colin aff2a78ec3 sane-reclaim-boot-space: fix "self.format_attr" typo 2024-03-31 03:23:49 +00:00
Colin f01758503c linux-megous: orange-pi-6.7-20240211-1928 -> orange-pi-6.7-20240306-2359
still getting PHY issues with it, but it boots to ssh
2024-03-29 18:18:37 +00:00
Colin e855be4796 hosts/common: port /mnt/servo/* from NFS -> FTP
fuse ftp seems to be easier to debug than kernel nfs so far
2024-03-28 23:15:05 +00:00
Colin 701e10b121 hosts/common/fs: optimize NFS options 2024-03-28 23:15:05 +00:00
Colin eadb2057d9 sane-wipe: port from systemd -> s6 2024-03-28 23:15:05 +00:00
Colin 5ed29ceb47 servo: /var/media: fixup permissions so everything is r/w by "media" group, including sftpgo 2024-03-28 23:14:40 +00:00
Colin 725ab13628 servo: nfs: allow UDP NFSv3 connections 2024-03-27 00:54:58 +00:00
Colin 32e691b85b feeds: add Hardcore Software by Steven Sinofsky 2024-03-26 14:08:13 +00:00
Colin 0108502055 feedbackd: fix so it depends on pipewire before launch 2024-03-26 13:48:13 +00:00
Colin 6c5b32aac2 s6-rc: fix so the service manager knows about readiness notifications again 2024-03-26 13:34:38 +00:00
Colin f59dd99470 s6-rc: init services in the "down" state 2024-03-26 12:55:40 +00:00
Colin 55c8a98c33 s6-rc: pre-compute more stuff as nix exprs; don't even run s6-rc-init 2024-03-26 12:36:46 +00:00
Colin 7bb67391ae nixpkgs: remove obsoleted patches 2024-03-26 11:16:43 +00:00
Colin c6a1f310a0 servo: net: actually assert that ovpns exists if we fail to add it 2024-03-26 11:13:10 +00:00
Colin 1d494513a9 slskd: document common errors/flakiness 2024-03-26 11:04:21 +00:00
Colin fb79ca4c8e programs: iproute: use a less restrictive sandbox 2024-03-26 10:54:29 +00:00
Colin 3cf42db7dc slskd: fix for more recent nixpkgs 2024-03-26 10:47:20 +00:00
Colin aba5eee837 nixpkgs: 2024-03-25 -> 2024-03-26; others
```
• Updated input 'nixpkgs-next-unpatched':
    'github:nixos/nixpkgs/8794d573a4fdd15b0002135cebf65a8f5d9adb6c' (2024-03-25)
  → 'github:nixos/nixpkgs/c904e6bf24e582e4fe28e988b7cdb7e9fda595c3' (2024-03-26)
• Updated input 'nixpkgs-unpatched':
    'github:nixos/nixpkgs/0d2dc20762f21c3e43fc2acc03f9552adbc392bc' (2024-03-25)
  → 'github:nixos/nixpkgs/da0502af1164c4fd04ebcd3acde1e378a861bd19' (2024-03-26)
• Updated input 'nixpkgs-wayland':
    'github:nix-community/nixpkgs-wayland/59f7ad2c27737a7ea7ad16a48c95631f159ef822' (2024-03-24)
  → 'github:nix-community/nixpkgs-wayland/7274c73cf5708ed3a814edc9605463ec4a116619' (2024-03-25)
• Updated input 'uninsane-dot-org':
    'git+https://git.uninsane.org/colin/uninsane?ref=refs/heads/master&rev=9a3b2d74c3e6d177fd1317d03f4e3eecca7beb7b' (2024-03-19)
  → 'git+https://git.uninsane.org/colin/uninsane?ref=refs/heads/master&rev=b9502e6f190752d327f8cee7fa4b139094bd7c16' (2024-03-25)
```
2024-03-26 09:44:45 +00:00
Colin 5cd9f34884 s6-rc: remove more unnecessarily files from live dir 2024-03-26 00:45:24 +00:00
Colin 2cabe51956 s6-rc: remove a couple more unused files from the live dir 2024-03-26 00:22:14 +00:00
Colin cb8e9b7a23 s6-rc: make it so, once started, other programs can start/stop services but NOT edit/create them 2024-03-26 00:11:02 +00:00
Colin 4eb6b5735e users/s6-rc: allow `startS6 ""` 2024-03-25 16:46:51 +00:00
Colin 5d3899959b users/s6-rc: split out `compiled` var 2024-03-25 14:56:41 +00:00
Colin ad951ad919 users/s6-rc: add symlink capabilities to my fs abstraction 2024-03-25 14:46:43 +00:00
Colin 5ecabc57bf feeds: add low<-tech magazine 2024-03-25 13:13:41 +00:00
Colin 48a4c1bd26 feeds: add nixpkgs.news 2024-03-25 13:13:03 +00:00
Colin 1f47c5ba2e nixpkgs: 2024-03-23 -> 2024-03-25; nixpkgs-wayland; sops-nix
```
• Updated input 'nixpkgs-next-unpatched':
    'github:nixos/nixpkgs/f4a0cee9233d6db356a0bdab307e865327a9b96b' (2024-03-23)
  → 'github:nixos/nixpkgs/8794d573a4fdd15b0002135cebf65a8f5d9adb6c' (2024-03-25)
• Updated input 'nixpkgs-unpatched':
    'github:nixos/nixpkgs/499583c00280ed90686b058e38a68fc9be2f4c4c' (2024-03-23)
  → 'github:nixos/nixpkgs/0d2dc20762f21c3e43fc2acc03f9552adbc392bc' (2024-03-25)
• Updated input 'nixpkgs-wayland':
    'github:nix-community/nixpkgs-wayland/0d291a959d01bb5d2bd2e20689b78258fa842cca' (2024-03-23)
  → 'github:nix-community/nixpkgs-wayland/59f7ad2c27737a7ea7ad16a48c95631f159ef822' (2024-03-24)
• Updated input 'nixpkgs-wayland/lib-aggregate':
    'github:nix-community/lib-aggregate/f890211817b941d9ed9de48d62ba8553fa2c20f3' (2024-03-17)
  → 'github:nix-community/lib-aggregate/120535dff702c551ec76a125a181d90131407264' (2024-03-24)
• Updated input 'nixpkgs-wayland/lib-aggregate/nixpkgs-lib':
    'github:nix-community/nixpkgs.lib/fa827dda806c5aa98f454da4c567991ab8ce422c' (2024-03-17)
  → 'github:nix-community/nixpkgs.lib/b2a1eeef8c185f6bd27432b053ff09d773244cbc' (2024-03-24)
• Updated input 'sops-nix':
    'github:Mic92/sops-nix/83b68a0e8c94b72cdd0a6e547a14ca7eb1c03616' (2024-03-17)
  → 'github:Mic92/sops-nix/405987a66cce9a4a82f321f11b205982a7127c88' (2024-03-24)
• Updated input 'sops-nix/nixpkgs-stable':
    'github:NixOS/nixpkgs/6dc11d9859d6a18ab0c5e5829a5b8e4810658de3' (2024-03-16)
  → 'github:NixOS/nixpkgs/ac6bdf6181666ebb4f90dd20f31e2fa66ede6b68' (2024-03-23)
```
2024-03-25 00:23:58 +00:00
Colin febedb9323 nits: update `--replace` uses to `--replace-{fail,quiet}` as appropriate 2024-03-24 12:49:18 +00:00
Colin aed5ea4b2e static-nix-shell: dont fail build if "nix-shell" occurs in the file as a non-directive 2024-03-24 12:28:23 +00:00
Colin 4e74ba5bab swaync-service-dispatcher: fix start/stop inversion 2024-03-24 12:22:54 +00:00
Colin 03fbb780b2 sane.programs: sandbox: refactor extraRuntimePaths computation 2024-03-24 12:03:38 +00:00
Colin 9c0b175260 swaync: allow toggling of s6 services 2024-03-24 11:54:12 +00:00
Colin e62be121e2 users/services: s6: fix so `s6-rc stop` can actually kill processes 2024-03-24 11:48:41 +00:00
Colin 774066e53c swaync: factor out a "service-dispatcher" 2024-03-24 09:21:07 +00:00
Colin 86400f45d6 swaync: port to s6 2024-03-24 08:56:06 +00:00
Colin ddef2d0bfc swaync: rename: print-is-active -> print-systemd-active 2024-03-24 08:54:27 +00:00
Colin 0172aa0b69 swaync: refactor 2024-03-24 08:54:27 +00:00
Colin ce991c8887 swaync: refactor 2024-03-24 08:54:27 +00:00
Colin 92d8d42997 swaync: split the buttons out of the main config file 2024-03-24 08:54:27 +00:00
Colin 1c4ef84ec7 swaync: remove legacy sxmo-specific notification visibility rules 2024-03-24 08:54:27 +00:00
Colin a820ae57c0 swaync: remove sxmo timer rules 2024-03-24 08:54:27 +00:00
Colin 89f913cadc xdg-desktop-portal: 1.18.2 -> 1.18.2-unstable-2024-03-11
this will *hopefully* improve stability
2024-03-24 08:08:48 +00:00
Colin d14fda2e62 engrampa: remove custom patch (upstream released a new version) 2024-03-24 07:46:22 +00:00
Colin f680a4a25c engrampa: patch the package via sane.programs, not nixpkgs overlay 2024-03-24 07:44:30 +00:00
Colin 7c461cee2f pkgs: remove gnome-control-center (unused) 2024-03-24 07:38:22 +00:00
Colin 47d37b4ce5 xdg-desktop-portal: enable logging 2024-03-24 07:19:33 +00:00
Colin a1cc045837 waybar: update persistent_workspaces -> persistent-workspaces
the former is deprecated
2024-03-24 06:17:43 +00:00
Colin 72dd556b72 assorted: fix meta.homepage URLs for nur packages 2024-03-24 03:54:09 +00:00
Colin ff9e1111b3 nixpkgs: 2024-03-22 -> 2024-03-23
```
• Updated input 'nixpkgs-next-unpatched':
    'github:nixos/nixpkgs/5132e88bc7caad27f4cf28cbaa7b04c915e2c261' (2024-03-22)
  → 'github:nixos/nixpkgs/f4a0cee9233d6db356a0bdab307e865327a9b96b' (2024-03-23)
• Updated input 'nixpkgs-unpatched':
    'github:nixos/nixpkgs/e5d75daa715cbaee8b989f58884a31c0be00a8a0' (2024-03-22)
  → 'github:nixos/nixpkgs/499583c00280ed90686b058e38a68fc9be2f4c4c' (2024-03-23)
• Updated input 'nixpkgs-wayland':
    'github:nix-community/nixpkgs-wayland/61e42f8f6c9b0c2b557a4c978ea11874d3761083' (2024-03-22)
  → 'github:nix-community/nixpkgs-wayland/0d291a959d01bb5d2bd2e20689b78258fa842cca' (2024-03-23)
```
2024-03-23 21:49:57 +00:00
Colin 7f8cae42ff s6: migrate to /run/user/$id/s6 2024-03-23 21:33:08 +00:00
Colin 5b83d4d944 s6-rc: patch to use /run/user/$id/s6 as the default live dir 2024-03-23 20:52:42 +00:00
Colin f16a68f5bb element-desktop: use native wayland, not Xwayland 2024-03-23 18:51:41 +00:00
Colin 6646a21089 nixpatches: fix handbrake hash 2024-03-23 18:02:45 +00:00
Colin 4bf43d884a nixpkgs: minor bump
```
• Updated input 'nixpkgs-next-unpatched':
    'github:nixos/nixpkgs/86b5ff8306a63bb266590018b21d2ae502a74880' (2024-03-22)
  → 'github:nixos/nixpkgs/5132e88bc7caad27f4cf28cbaa7b04c915e2c261' (2024-03-22)
• Updated input 'nixpkgs-unpatched':
    'github:nixos/nixpkgs/6e147dce88054c47dd90c0be8c33500e023f8261' (2024-03-22)
  → 'github:nixos/nixpkgs/e5d75daa715cbaee8b989f58884a31c0be00a8a0' (2024-03-22)
• Updated input 'nixpkgs-wayland':
    'github:nix-community/nixpkgs-wayland/7d053c33b7a130ddada43ba09b089244390b3a23' (2024-03-19)
  → 'github:nix-community/nixpkgs-wayland/61e42f8f6c9b0c2b557a4c978ea11874d3761083' (2024-03-22)
```
2024-03-23 18:01:51 +00:00
Colin 46fe6c690b sway: fix WAYLAND_DISPLAY to be relative 2024-03-23 17:59:37 +00:00
Colin dd7b1dae5f sway: remove unnecessary pidspace sandbox exception
i guess this was from when SWAYSOCK was named after the pid?
2024-03-23 17:35:39 +00:00
Colin 2e58353b0e refactor: users/services: have `waitExists` support waiting on multiple paths 2024-03-23 17:28:29 +00:00
Colin f65d3d04dc sway: do the WAYLAND_DISPLAY moving inside sway config itself 2024-03-23 17:09:57 +00:00
Colin 6102a0301d sway: move $WAYLAND_DISPLAY into a subdir to make it easier to sandbox 2024-03-23 16:37:22 +00:00
Colin 39de5b84c2 sway: fix readiness check 2024-03-23 15:54:20 +00:00
Colin 5205251f6f programs: xwayland: sandbox it without exposing net access 2024-03-23 15:33:23 +00:00
Colin 8c48adefa5 pipewire: move sockets into a subdirectory for easier sandboxing 2024-03-23 13:34:13 +00:00
Colin db2801c652 sway: don't launch s6 from within the sway session 2024-03-23 13:11:14 +00:00
Colin 4418c16967 users/services: s6: push bundle dependencies down onto the actual atomic services 2024-03-23 13:04:12 +00:00
Colin 8008fd35cb modules/users: allow `readiness.pathExists` 2024-03-23 13:03:11 +00:00
Colin 36ea5b53ad sway: place SWAYSOCK in a subdirectory 2024-03-23 11:33:58 +00:00
Colin 552d14b1b5 nixpatches: fix hashes 2024-03-23 09:29:34 +00:00
Colin c404c8b2ae xdg-terminal-exec: fix bad interaction with TERMINAL 2024-03-23 09:28:26 +00:00
Colin d129ae2c03 koreader-from-src: remove a bunch of old cruft
this is beginning to look upstream-ready :)
2024-03-22 20:16:33 +00:00
Colin 58341b75f2 koreader-from-src: popen-noshell,turbo: populate more directly 2024-03-22 20:05:22 +00:00
Colin 373388c5b8 koreader-from-src: mupdf: populate more directly 2024-03-22 19:54:13 +00:00
Colin 8d45aad534 xdg-dirs: populate env vars at login
otherwise i believe they dont actually take effect?
2024-03-22 19:31:04 +00:00
Colin a783bc9577 koreader-from-src: minizip: populate in a simpler manner 2024-03-22 19:24:19 +00:00
Colin 267d374b19 xdg-dirs: specify XDG_SCREENSHOTS_DIR 2024-03-22 19:23:14 +00:00
Colin e67ce7576b koreader-from-src: lunasvg: populate in a simpler way 2024-03-22 19:16:45 +00:00
Colin ce770dbea9 koreader: lodepng: provide in a more direct manner 2024-03-22 18:59:17 +00:00
Colin e7a65abd0b koreader-from-src: libk2pdfopt: populate in a more direct manner 2024-03-22 18:53:23 +00:00
Colin 702a6cc7fa koreader: kobo-usbms: link into build environment in a simpler fashion 2024-03-22 18:28:19 +00:00
Colin f889543aa5 koreader-from-src: fbink: provide the sources more directly 2024-03-22 18:21:26 +00:00
Colin 98073f5e19 koreader-from-src: inject tesseract sources via make args 2024-03-22 17:58:41 +00:00
Colin 96c330813f xterm: remove
xdg-terminal-exec updated recently, and it seems to prefer xterm over alacritty for some reason
2024-03-22 17:28:26 +00:00
Colin a6d9c62bcf lemonade: 2023.10.29 -> 2024.03.20
not much changed
2024-03-22 17:27:20 +00:00
Colin 8ff34d8518 koreader: migrate `leptonica` dep away from the `sources` hack
i hope that by using the makefile vars i can eventually get rid of the
"stamp" nonsense.
2024-03-22 17:16:19 +00:00
Colin e11dd0ecb0 firefox-extensions: update to latest 2024-03-22 16:27:23 +00:00
Colin 3b6dfea2d0 koreader-from-src: notes about updating leptonica 2024-03-22 15:53:17 +00:00
Colin 22254db74c koreader-from-src: cleanup (remove unused "machineAgnostic" and "package" third-party dependency options) 2024-03-22 14:42:37 +00:00
Colin a316c87db6 koreader-from-src: use nixpkgs nanosvg (or, most of it) 2024-03-22 14:29:23 +00:00
Colin fe2fb40565 koreader-from-src: don't vendor lj-wpaclient (unused) 2024-03-22 13:40:09 +00:00
Colin cd63fdb510 koreader: cleanup 2024-03-22 12:12:14 +00:00
Colin 1e25f37774 nixpkgs: 2024-03-21 -> 2024-03-22
```
• Updated input 'nixpkgs-next-unpatched':
    'github:nixos/nixpkgs/33cddc79aa062e243c59d3ac36b8b938f267748a' (2024-03-21)
  → 'github:nixos/nixpkgs/86b5ff8306a63bb266590018b21d2ae502a74880' (2024-03-22)
• Updated input 'nixpkgs-unpatched':
    'github:nixos/nixpkgs/783b241f949bea90e3347ce516ad8af84bde3126' (2024-03-21)
  → 'github:nixos/nixpkgs/6e147dce88054c47dd90c0be8c33500e023f8261' (2024-03-22)
```
2024-03-22 11:56:51 +00:00
Colin cdac23211c nixpkgs: 2024-03-13 -> 2024-03-21; others
```
• Updated input 'nixpkgs-next-unpatched':
    'github:nixos/nixpkgs/4ee0840ba2ecc50458ab1677d108afcd691f4815' (2024-03-13)
  → 'github:nixos/nixpkgs/33cddc79aa062e243c59d3ac36b8b938f267748a' (2024-03-21)
• Updated input 'nixpkgs-unpatched':
    'github:nixos/nixpkgs/2dbc8f62d8af7a1ab962e4b20d12b25ddcb86ced' (2024-03-13)
  → 'github:nixos/nixpkgs/783b241f949bea90e3347ce516ad8af84bde3126' (2024-03-21)
• Updated input 'nixpkgs-wayland':
    'github:nix-community/nixpkgs-wayland/771cb198c281db6918829651f194bf4db32e342d' (2024-03-13)
  → 'github:nix-community/nixpkgs-wayland/7d053c33b7a130ddada43ba09b089244390b3a23' (2024-03-19)
• Updated input 'nixpkgs-wayland/lib-aggregate':
    'github:nix-community/lib-aggregate/45b75bf534592c0c1c881a1c447f7fdb37a87eaf' (2024-03-11)
  → 'github:nix-community/lib-aggregate/f890211817b941d9ed9de48d62ba8553fa2c20f3' (2024-03-17)
• Updated input 'nixpkgs-wayland/lib-aggregate/nixpkgs-lib':
    'github:nix-community/nixpkgs.lib/630ebdc047ca96d8126e16bb664c7730dc52f6e6' (2024-03-10)
  → 'github:nix-community/nixpkgs.lib/fa827dda806c5aa98f454da4c567991ab8ce422c' (2024-03-17)
• Updated input 'sops-nix':
    'github:Mic92/sops-nix/e52d8117b330f690382f1d16d81ae43daeb4b880' (2024-03-11)
  → 'github:Mic92/sops-nix/83b68a0e8c94b72cdd0a6e547a14ca7eb1c03616' (2024-03-17)
• Updated input 'sops-nix/nixpkgs-stable':
    'github:NixOS/nixpkgs/b17375d3bb7c79ffc52f3538028b2ec06eb79ef8' (2024-03-10)
  → 'github:NixOS/nixpkgs/6dc11d9859d6a18ab0c5e5829a5b8e4810658de3' (2024-03-16)
• Updated input 'uninsane-dot-org':
    'git+https://git.uninsane.org/colin/uninsane?ref=refs/heads/master&rev=bb10cd8853d05191e4d62947d93687c462e92c30' (2024-02-15)
  → 'git+https://git.uninsane.org/colin/uninsane?ref=refs/heads/master&rev=9a3b2d74c3e6d177fd1317d03f4e3eecca7beb7b' (2024-03-19)
```
2024-03-21 18:03:37 +00:00
Colin e6c00e6215 users/services: implement dbus readiness checks for s6-rc 2024-03-21 17:16:11 +00:00
Colin fff9d69e3e users/services: s6-rc: implement readiness polling 2024-03-21 17:16:11 +00:00
Colin 4fa7e6113d users/services: s6: `exec` into the run/finish commands 2024-03-21 17:16:11 +00:00
Colin 16ca71188f users/services: simplify the before/after/wantedBy criteria, to match s6 concepts 2024-03-21 17:16:11 +00:00
Colin c5c37e79ac users/services: actually remove the systemd backend 2024-03-21 17:16:11 +00:00
Colin d2f6648bce users/services: refactor: replace ExecStart/ExecStopPost with command/cleanupCommand
note that this completely breaks the systemd backend (though easily fixable if wanted)
2024-03-21 17:16:11 +00:00
Colin 5c9c7f8073 modules/users/s6-rc: add per-service logging 2024-03-21 17:16:11 +00:00
Colin 218072b2fe refactor: modules/users/s6-rc.nix 2024-03-21 17:16:11 +00:00
Colin d4f217a4f5 refactor: modules/users/s6-rc.nix 2024-03-21 17:16:11 +00:00
Colin 40f6f88a64 users/services: s6: remove broken `log` stuff
apparently the /log shorthand is only applicable to base `s6-supervise`,
and not `s6-rc`. "pipeline"s are the s6-rc equivalent:
<https://wiki.gentoo.org/wiki/S6-rc#Longrun_pipelining>
2024-03-21 17:16:11 +00:00
Colin fbbb09322a users/services: s6-rc: support ExecStopPost option 2024-03-21 17:16:11 +00:00
Colin e7153ce4a1 users/services: remove ExecStartPre option 2024-03-21 17:16:11 +00:00
Colin b13e7c38c7 users/services: remove `script` option 2024-03-21 17:16:11 +00:00
Colin 058c95bb2c sysvol: remove autostart option (assume true) 2024-03-21 17:16:11 +00:00
Colin 9b793ef4b8 programs: services: no need to fully-qualify paths anymore (s6 doesn't require) 2024-03-21 17:16:11 +00:00
Colin 1417497001 users/services: remove serviceConfig.Type option 2024-03-21 17:16:11 +00:00
Colin db12e03f64 users/services: remove `oneshot` service type 2024-03-21 17:16:11 +00:00
Colin dee4866737 users/services: remove `ConditionEnvironment` option 2024-03-21 17:16:11 +00:00
Colin 81a6c53c26 users/services: remove RemainAfterExit option 2024-03-21 17:16:11 +00:00
Colin 9afd9725d1 users: services: remove no-longer-needed `Restart` and `RestartSec` options 2024-03-21 17:16:11 +00:00
Colin 384bc9e816 xdg-desktop-portal: fix to not over-escape $HOME in s6 service definition 2024-03-21 17:16:11 +00:00
Colin 452619dbfc s6: log when a service starts up
it still seems to be all logging into a single file though?
2024-03-21 17:16:11 +00:00
Colin 6c6e10e470 s6: install manpages 2024-03-21 17:16:11 +00:00
Colin dcdf58e1ab sway: simplify wrapper 2024-03-21 17:16:11 +00:00
Colin 48b2280f2e feedbackd: fix over-escaping of $HOME 2024-03-21 17:16:11 +00:00
Colin 8bedc860ae s6: add some minimal logging
the root s6 call seems to be doing some logging, notably feedbackd; still don't know where the other logs are going
2024-03-21 17:16:11 +00:00
Colin cbecdc4a95 s6: use `exec` in the `run` trampoline, to forward file descriptors and keep a cleaner process tree 2024-03-21 17:16:11 +00:00
Colin e1001f57c5 modules/users: remove no-longer-need `environment` option 2024-03-21 17:16:11 +00:00
Colin 291e704477 programs: replace systemd-specific 'environment' option with generic 'env'
note, these services no longer work with systemd, because systemd expects absolute paths
2024-03-21 17:16:11 +00:00
Colin d199e9df99 programs: wob (and wob-audio): remove
i don't use it, and its service file was no longer compatible with s6 (it used 'environment')
2024-03-21 17:16:11 +00:00
Colin 2336767059 port service manager to s6
still a lot of cleanup to do (e.g. support dbus service types), but it boots to a usable desktop
2024-03-21 17:16:11 +00:00
Colin 63af94383b sane-input-handler: only inhibit controls if screen is on 2024-03-21 17:16:11 +00:00
Colin 05b37669e3 s6-rc: fix service `run` file to have expected format 2024-03-21 17:16:11 +00:00
Colin ea9768c6ab modules/users: prototype s6 integration: ~/.config/s6/{sources,compiled} 2024-03-21 17:16:11 +00:00
Colin 38353dbc29 modules/users: remove unused `requiredBy` service option 2024-03-21 17:16:11 +00:00
Colin ef4a8e1989 modules: users: split services -> fs mapping into own `systemd.nix` file 2024-03-21 17:16:11 +00:00
Colin acc9a9cb48 modules/users: make it a directory 2024-03-21 17:16:11 +00:00
Colin 0335b89a12 fractal: stop persisting old directories 2024-03-21 17:16:01 +00:00
Colin 0a6b0cbec7 gtkcord4: rename to dissent 2024-03-21 17:16:01 +00:00
Colin df2310d590 gnome-keyring: ensure the keyring directory is created before entering the sandbox 2024-03-21 17:16:01 +00:00
Colin 70b5c57b50 modules/programs: enforce (or rather document) a stricter schema
this should make it easier to switch to a different service manager
2024-03-21 17:16:01 +00:00
Colin c28ac38652 modules/users: refactor to remove `inherit`s 2024-03-21 17:16:01 +00:00
Colin 52133fde30 delfin: 0.4.1 -> 0.4.2 2024-03-21 13:51:46 +00:00
Colin 098cd2051e sftpgo: expose to the WAN 2024-03-14 13:11:44 +00:00
Colin 691a7d7ff7 sftpgo: configure for credential-gated r/w access 2024-03-14 13:11:44 +00:00
Colin c7c2785ad8 sftpgo_external_auth_hook: refactor 2024-03-14 13:11:44 +00:00
Colin 4c1a7fc910 sftpgo: port auth program to python 2024-03-14 13:11:44 +00:00
Colin 3c43fba878 feeds: add NativLang per Ben's rec 2024-03-14 07:53:19 +00:00
Colin 7904957544 give self cap_sys_nice 2024-03-14 07:02:57 +00:00
Colin b25df1d997 sane-sandboxed: fix capabilities example 2024-03-14 01:36:46 +00:00
Colin d08f318e4b pmos: move to correct section 2024-03-13 23:51:24 +00:00
Colin f655c31d77 Merge branch 'dev' 2024-03-13 23:48:48 +00:00
Colin 288d57e5d5 feeds: subscribe to pmOS blog 2024-03-13 23:20:45 +00:00
Colin f669f2bfe8 procmail: merged into staging-next 2024-03-13 23:12:37 +00:00
Colin 5554ad9fe2 nixpkgs: 2024-03-12 -> 2024-03-13
```
• Updated input 'nixpkgs-next-unpatched':
    'github:nixos/nixpkgs/2e2cc05898bbe54a8004801ea300525b231d24e2' (2024-03-12)
  → 'github:nixos/nixpkgs/4ee0840ba2ecc50458ab1677d108afcd691f4815' (2024-03-13)
• Updated input 'nixpkgs-unpatched':
    'github:nixos/nixpkgs/21adc4f16a8ab151fec83b9d9368cd62d9de86bc' (2024-03-12)
  → 'github:nixos/nixpkgs/2dbc8f62d8af7a1ab962e4b20d12b25ddcb86ced' (2024-03-13)
• Updated input 'nixpkgs-wayland':
    'github:nix-community/nixpkgs-wayland/0f9388d3a9daa597ad87b870de236fb45e24ba63' (2024-03-12)
  → 'github:nix-community/nixpkgs-wayland/771cb198c281db6918829651f194bf4db32e342d' (2024-03-13)
```
2024-03-13 15:37:50 +00:00
Colin 6595d177be gimp: fix sandboxing 2024-03-13 11:36:57 +00:00
Colin d194abb4bf swaync: stylize the actual notifications 2024-03-13 11:29:05 +00:00
Colin eaf45e2366 swaync: re-theme (pink/black) 2024-03-13 11:07:17 +00:00
Colin 66e04857b6 swaync: fix dimensions to be compatible with pinephone 2024-03-13 08:29:23 +00:00
Colin fa0dcdc5be swaync: splie style.css out to own file 2024-03-13 08:18:34 +00:00
Colin 23b87a283a swaync: move to own directory 2024-03-13 08:17:14 +00:00
Colin 849ca59f68 swaync: fix styling of toggle buttons 2024-03-13 08:16:47 +00:00
Colin 5e1a6062af swaync: ensure it starts *after* pipewire-pulse so that the mpris plugin can function 2024-03-13 07:53:45 +00:00
Colin 8dacb93861 fontconfig: remove no-longer-needed cache; disable Font Awesome (emoji seem well-covered by Noto Color Emoji) 2024-03-13 05:28:57 +00:00
Colin eafabe87c4 xdg-desktop-portal: tell systemd the BusName of the service so that it won't consider it started until after said bus name is acquired
this partially fixes an error in sandboxed gtk apps where they would try to connect to org.freedesktop.portal to query settings, and then fall back to bad default fonts when the endpoint errored (because xdp-gtk wasn't ready)
2024-03-13 05:27:43 +00:00
Colin 4510352c07 sane-sandboxed: implement --sane-sandbox-no-portal flag 2024-03-13 04:49:48 +00:00
Colin 430592632c sane-sandboxed: add a help message 2024-03-13 04:49:48 +00:00
Colin ac22b36d78 dconf: invoke it ourselves instead of letting dbus do it for us 2024-03-13 04:49:48 +00:00
Colin 4439491bf0 dconf: fix over-restrictive sandboxing (because previously it was being run unsandboxed...) 2024-03-13 04:49:48 +00:00
Colin 56aca78d84 make-sandboxed: also sandbox the `.lib` output of a package 2024-03-13 04:49:48 +00:00
Colin 546482dc80 dconf: disable GIO_EXTRA_MODULES patch 2024-03-13 02:41:39 +00:00
Colin 2f07fff084 dconf: migrate to `sane.programs` 2024-03-13 02:33:02 +00:00
Colin 294563c655 dbus: fix to only search /run/current-system/sw/share/dbus-1 for service files 2024-03-13 02:04:02 +00:00
Colin f6c3557b8c nixpkgs: 2024-03-11 -> 2024-03-12
```
• Updated input 'nixpkgs-next-unpatched':
    'github:nixos/nixpkgs/ec7a981885b5ede88eabf9bb3516706107de00b2' (2024-03-11)
  → 'github:nixos/nixpkgs/2e2cc05898bbe54a8004801ea300525b231d24e2' (2024-03-12)
• Updated input 'nixpkgs-unpatched':
    'github:nixos/nixpkgs/0fbcc4b2e8571f4af39be41752581ea09dd9ab06' (2024-03-11)
  → 'github:nixos/nixpkgs/21adc4f16a8ab151fec83b9d9368cd62d9de86bc' (2024-03-12)
• Updated input 'nixpkgs-wayland':
    'github:nix-community/nixpkgs-wayland/27a56d7435094f141bf5adfe9cfe155932597935' (2024-03-11)
  → 'github:nix-community/nixpkgs-wayland/0f9388d3a9daa597ad87b870de236fb45e24ba63' (2024-03-12)
• Updated input 'nixpkgs-wayland/lib-aggregate':
    'github:nix-community/lib-aggregate/b8a148b163687c9be602b63c6b0b7bc81eecb015' (2024-03-10)
  → 'github:nix-community/lib-aggregate/45b75bf534592c0c1c881a1c447f7fdb37a87eaf' (2024-03-11)
• Updated input 'nixpkgs-wayland/lib-aggregate/flake-utils':
    'github:numtide/flake-utils/d465f4819400de7c8d874d50b982301f28a84605' (2024-02-28)
  → 'github:numtide/flake-utils/b1d9ab70662946ef0850d488da1c9019f3a9752a' (2024-03-11)
• Updated input 'sops-nix':
    'github:Mic92/sops-nix/f8d5c8baa83fe620a28c0db633be9db3e34474b4' (2024-03-10)
  → 'github:Mic92/sops-nix/e52d8117b330f690382f1d16d81ae43daeb4b880' (2024-03-11)
```
2024-03-12 12:46:24 +00:00
Colin 7513811111 blast: minor cleanups 2024-03-12 12:06:57 +00:00
Colin eabd113262 mpv: blast: shut it down properly even when sandboxed
it only cost everything. also, blast doesnt reliably clean up its pseudo devices
2024-03-12 11:51:15 +00:00
Colin 01fa9919fd mpv: route casting through a lua script
this lets me use `subcprocess` instead of `run`, and so the command terminate alongside mpv
2024-03-12 05:01:45 +00:00
Colin 56a2c4e49f mpv: split conf files out of main nix code 2024-03-12 03:32:07 +00:00
Colin bf953fbdb5 mpv: move to own dir 2024-03-12 03:27:20 +00:00
Colin 4f2d0f2e56 mpv: tune uosc options 2024-03-12 03:05:56 +00:00
Colin 500c989e61 nixpkgs: 2024-03-10 -> 2024-03-11
```
• Updated input 'nixpkgs-next-unpatched':
    'github:nixos/nixpkgs/85e4390bb2db2543b65a61a6fb601819ba331399' (2024-03-10)
  → 'github:nixos/nixpkgs/ec7a981885b5ede88eabf9bb3516706107de00b2' (2024-03-11)
• Updated input 'nixpkgs-unpatched':
    'github:nixos/nixpkgs/c916d4cbac62b2d8b70a3940d3471dbd0c57d2f4' (2024-03-10)
  → 'github:nixos/nixpkgs/0fbcc4b2e8571f4af39be41752581ea09dd9ab06' (2024-03-11)
• Updated input 'nixpkgs-wayland':
    'github:nix-community/nixpkgs-wayland/8af78a7dfb3a2041235c116cc9cc92f5a6d3a20c' (2024-03-11)
  → 'github:nix-community/nixpkgs-wayland/27a56d7435094f141bf5adfe9cfe155932597935' (2024-03-11)
```
2024-03-11 12:23:03 +00:00
Colin 08ee0375cc mpv: blast-to-default: remove unnecessary xdg-terminal-exec indirection 2024-03-11 12:07:08 +00:00
Colin afd1a42ec7 mpv: refer to xdg-terminal-exec by name, not full path 2024-03-11 11:56:53 +00:00
Colin 21691fc2fd mpv: add a menu option to cast just the audio, via Blast 2024-03-11 11:43:53 +00:00
Colin c1edf96ce0 blast-ugjka: introduce a helper `blast-to-default` program 2024-03-11 11:43:29 +00:00
Colin 21714849cf sway: get Celeste to run in fullscreen again 2024-03-11 08:04:21 +00:00
Colin 379f3ef9e0 zsh: deref alias: make the result writable 2024-03-11 08:01:27 +00:00
Colin c07c23a9f8 ibus: remove cross patches (i don't use the package anymore) 2024-03-11 07:55:53 +00:00
Colin f44a4c84ee moby: don't ship fcitx5 (doesn't cross compile) 2024-03-11 07:54:49 +00:00
Colin 6822dad9c0 splatmoji: remove from config 2024-03-11 07:53:48 +00:00
Colin 9f8e42ef92 fcitx5: enable 2024-03-11 07:44:21 +00:00
Colin bda374db13 sway: ship the nightly version 2024-03-11 05:53:14 +00:00
Colin 180a217744 cleanup: remove unnecessary `config = { ... }` scope 2024-03-11 04:31:11 +00:00
Colin f13ece2212 sway: tune resize more shortcuts; enable natural scrolling 2024-03-11 04:30:28 +00:00
Colin 00ab28fcac delfin: 0.4.0 -> 0.4.1 2024-03-11 00:13:13 +00:00
Colin bb18f7355a firefox-extensions: update to latest 2024-03-11 00:00:49 +00:00
Colin 0905a658ad rofi: cherry-pick my patches instead of pinning to a fork
wayland upstream released 1.7.5+wayland3, which is compatible with my patches
2024-03-10 23:43:34 +00:00
Colin 90b9d00f37 swaync: remove mpris icon patch (upstreamed) 2024-03-10 23:16:33 +00:00
Colin 40effc08d6 fractal-nixified: 6 -> 6-unstable-2024-01-31
brings ability to enable/disable read and typing receipts
2024-03-10 23:15:02 +00:00
Colin 73a2c9d923 nixpkgs: update ~10hrs to remove now-upstreamed conky patch
```
• Updated input 'nixpkgs-next-unpatched':
    'github:nixos/nixpkgs/32f638e62d638c9a0011c0162ed1be4a13d00ea9' (2024-03-10)
  → 'github:nixos/nixpkgs/85e4390bb2db2543b65a61a6fb601819ba331399' (2024-03-10)
• Updated input 'nixpkgs-unpatched':
    'github:nixos/nixpkgs/9fc2bd0eef6d2651638656c82fbe0b7a40478c3b' (2024-03-10)
  → 'github:nixos/nixpkgs/c916d4cbac62b2d8b70a3940d3471dbd0c57d2f4' (2024-03-10)
```
2024-03-10 22:31:33 +00:00
Colin d93380938d nixpkgs: 2024-03-09 -> 2024-03-10; sops-nix -> 2024-03-10
```
• Updated input 'nixpkgs-next-unpatched':
    'github:nixos/nixpkgs/8baf388f460b92102ea1a8e2ece55f1f1260fbfa' (2024-03-09)
  → 'github:nixos/nixpkgs/32f638e62d638c9a0011c0162ed1be4a13d00ea9' (2024-03-10)
• Updated input 'nixpkgs-unpatched':
    'github:nixos/nixpkgs/52d9c7906c26317adc3524d44bdd98b953e20ba1' (2024-03-09)
  → 'github:nixos/nixpkgs/9fc2bd0eef6d2651638656c82fbe0b7a40478c3b' (2024-03-10)
• Updated input 'sops-nix':
    'github:Mic92/sops-nix/25dd60fdd08fcacee2567a26ba6b91fe098941dc' (2024-03-06)
  → 'github:Mic92/sops-nix/f8d5c8baa83fe620a28c0db633be9db3e34474b4' (2024-03-10)
• Updated input 'sops-nix/nixpkgs-stable':
    'github:NixOS/nixpkgs/66d65cb00b82ffa04ee03347595aa20e41fe3555' (2024-03-03)
  → 'github:NixOS/nixpkgs/b17375d3bb7c79ffc52f3538028b2ec06eb79ef8' (2024-03-10)
```
2024-03-10 13:36:58 +00:00
Colin 573a50fedc doc: pipewire: mention some debug env vars 2024-03-10 04:59:51 +00:00
Colin f8797a77ff blast: ship it!
TODO: integrate into mpv :)
2024-03-10 04:09:34 +00:00
Colin 92115709f6 blast-ugjka: init at 0.6.2
it works! at least, with the Sony TV, LG TV is detected but might need some finessing
2024-03-10 02:35:10 +00:00
Colin e6111c9d5e firefox: hide the bookmarks menuabar 2024-03-10 01:59:46 +00:00
Colin 975df698a4 pa-dlna: init at 0.7
it detects my TVs and adds them as sinks, but i can't the TVs to actually output anything
2024-03-10 01:55:29 +00:00
Colin ce8c4a4f6f remove dead binfmt code 2024-03-10 01:05:33 +00:00
Colin df33576090 todo.md: remove completed xdg-desktop-portal item 2024-03-10 01:03:23 +00:00
Colin 4d6eb705eb mpv: link to some useful extensions 2024-03-10 01:02:54 +00:00
Colin fd70b6acbf rofi: tune maximum height 2024-03-09 23:34:43 +00:00
Colin 1d3576b892 sxmo-utils: mark as broken/unmaintained 2024-03-09 21:09:32 +00:00
Colin 30d49dc3c3 feeds: update Anish's URL 2024-03-09 20:51:15 +00:00
Colin 8e0031e770 feeds: update Byrne Hobart's feed URL 2024-03-09 20:49:01 +00:00
Colin 7a50fcf566 feeds: unsubscribe webcurious.co.uk (defunct) 2024-03-09 20:46:08 +00:00
Colin c453dbac8e lwn.net: update feed URL 2024-03-09 20:42:03 +00:00
Colin 053b8cf737 nixpkgs: 2024-03-08 -> 2024-03-09
```
• Updated input 'nixpkgs-next-unpatched':
    'github:nixos/nixpkgs/f391672e1727b933cf6933154817fe236c6f84c7' (2024-03-08)
  → 'github:nixos/nixpkgs/8baf388f460b92102ea1a8e2ece55f1f1260fbfa' (2024-03-09)
• Updated input 'nixpkgs-unpatched':
    'github:nixos/nixpkgs/baf89057836e5f9928696526b85774ea529c749d' (2024-03-08)
  → 'github:nixos/nixpkgs/52d9c7906c26317adc3524d44bdd98b953e20ba1' (2024-03-09)
```
2024-03-09 08:54:18 +00:00
Colin 8af962c3a6 mpv: auto-populate internal playlist with other files in the same directory, on launch
so now i can listen to whole albums by opening any file from within them.
and for shows the next episode will automatically launch.
2024-03-09 03:02:09 +00:00
Colin 9ea39799a5 zsh: fix `c` alias 2024-03-09 03:01:37 +00:00
Colin e695459b40 geary-gtk4: init (broken!) 2024-03-09 00:58:44 +00:00
Colin f2e760710d sysvol: tune its position 2024-03-08 23:06:37 +00:00
Colin dc70ed8bd8 pipewire: wait for sockets to appear before considering it active
this fixes race around consumers like sysvol starting too early
2024-03-08 22:44:59 +00:00
Colin b41c249830 disable vlc
i don't use it; it forces a bunch of extra qt builds
2024-03-08 18:53:25 +00:00
Colin 8f986e4616 nixpkgs: 2024-03-07 -> 2024-03-08
```
• Updated input 'nixpkgs-next-unpatched':
    'github:nixos/nixpkgs/5e0cda94371075bead6d953e8a60a717ec022524' (2024-03-07)
  → 'github:nixos/nixpkgs/f391672e1727b933cf6933154817fe236c6f84c7' (2024-03-08)
• Updated input 'nixpkgs-unpatched':
    'github:nixos/nixpkgs/90714b18a06ddad90159cc312814f1871509e10e' (2024-03-07)
  → 'github:nixos/nixpkgs/baf89057836e5f9928696526b85774ea529c749d' (2024-03-08)
```
2024-03-08 13:15:25 +00:00
Colin 2b73ebb4c1 sysvol: don't start until after pipewire is ready 2024-03-08 12:55:33 +00:00
Colin bffcaa668e sysvol: wrap with required gtk4 environment variables 2024-03-08 12:54:41 +00:00
Colin ebb037bd48 sysvol: fix cross compilation 2024-03-08 12:25:32 +00:00
Colin df98ef30e0 sysvol: integrate as a service (sane.programs) 2024-03-08 11:53:13 +00:00
Colin e45d4d6ae7 sysvol: init at 0-unstable-2024-02-08 2024-03-08 10:10:50 +00:00
Colin f3568b3ffc sway: port volume controls: pulse -> pipewire 2024-03-08 09:56:15 +00:00
Colin 9eaf4d71b2 sway: use simpler `assign` notation where applicable 2024-03-08 09:53:07 +00:00
Colin 3200188a32 sway: factor/generalize the TV workspace/output assignment 2024-03-08 09:50:35 +00:00
Colin a4ab60b836 sway: auto-fullscreen everything on the TV 2024-03-08 09:42:07 +00:00
Colin 3282b40e9b doc: sway: consider how to auto-fullscreen mpv on external display 2024-03-08 09:31:08 +00:00
Colin 39411164af zsh: add `deref` function to turn a symlink into a real file 2024-03-08 08:50:28 +00:00
Colin c0a94995a5 docs: note limitations of schlock 2024-03-08 08:16:11 +00:00
Colin f4b5d3a70a sway: position certain apps (mpv, Celeste) on external displays by default 2024-03-08 06:27:16 +00:00
Colin 07373b5e6b sway: configure TV output 2024-03-08 06:23:33 +00:00
Colin 7281b94e23 deadd-notification-center: add to sane.programs
this is the bare, nearly-default config. i may come back to this,
or explore fixing swaync up into shape. deadd looks possibly a bit more
limited; needs much more effort to style.
2024-03-08 04:06:18 +00:00
Colin 0e83742096 sway: allow config reloading 2024-03-08 03:44:33 +00:00
Colin 7d8205352c moby: use screen scale of 2.0 in portrait AND landscape 2024-03-08 02:21:47 +00:00
Colin c4994162e1 mpv: fix go2tv sandbox interaction 2024-03-08 02:06:23 +00:00
Colin 24a211bd3d sane-input-handler: remove keyboard launch fallback
it'll never work, because of sandboxing
2024-03-08 01:18:39 +00:00
Colin 3cf651b212 nixpkgs: 2024-03-06 -> 2024-03-07
```
• Updated input 'nixpkgs-next-unpatched':
    'github:nixos/nixpkgs/09c267dae0dae6585ddbc98bd2301bd8153ac177' (2024-03-06)
  → 'github:nixos/nixpkgs/5e0cda94371075bead6d953e8a60a717ec022524' (2024-03-07)
• Updated input 'nixpkgs-unpatched':
    'github:nixos/nixpkgs/a85303aef29c6a9000a259ed21c9c14a1aa3859e' (2024-03-06)
  → 'github:nixos/nixpkgs/90714b18a06ddad90159cc312814f1871509e10e' (2024-03-07)
```
2024-03-08 01:12:05 +00:00
Colin cb1c76a0db wvkbd-mk: init 2024-03-08 01:06:13 +00:00
Colin 27c12edec0 wvkbd: change default key border 2 -> 1 px
since moby is scaled 2x, it's actually 2 px *in practice*
2024-03-08 00:45:45 +00:00
Colin b41320ffb3 megapixels: fix sandbox-related crash 2024-03-08 00:16:29 +00:00
Colin ac41cfcd42 wvkbd: tune height (by guess) 2024-03-08 00:01:23 +00:00
Colin 62cbc65f12 epiphany: fix sandboxing 2024-03-07 23:24:33 +00:00
Colin ccb856faf5 sane-input-handler: power -> vol to rotate display 2024-03-07 23:22:07 +00:00
Colin d7f4438371 nixpatches: update procmail cross hash 2024-03-07 23:21:38 +00:00
Colin f44c3f2e1f moby: auto-screenoff: bump timeout from 150s -> 300s 2024-03-07 23:14:03 +00:00
Colin bb300a4eb5 swayidle: dont enable screenoff action by default 2024-03-07 11:18:34 +00:00
Colin fd4842ab5b swayidle: auto screenoff 2024-03-07 10:59:44 +00:00
Colin 1cdc3b8bda moby: enable `schlock` screen locker 2024-03-07 10:37:18 +00:00
Colin 531ea11b3d schlock: fix cross build 2024-03-07 10:36:51 +00:00
Colin 041ce0654e schlock: sandbox + auto-launch via .desktop file 2024-03-07 10:32:40 +00:00
Colin 526a02bb73 schlock: ship a .desktop file 2024-03-07 10:25:41 +00:00
Colin 1d0458ab10 schlock: ship as sane.programs 2024-03-07 10:10:39 +00:00
Colin 4358f9471e schlock: init
it works! super jank; doesn't accept keyboard input, fails-open on
crash.
2024-03-07 09:36:53 +00:00
Colin cb3a1fb3fe swaylock-mobile: init (i won't likely use it though) 2024-03-07 01:42:43 +00:00
Colin 72d52f9239 sxmo_swaylock: init at unstable-2023-04-26 (but i won't likely use it) 2024-03-07 01:34:53 +00:00
Colin 219fe67f34 systemd: reduce shutdown timeout from "20" to "10" sec (40s IRL) 2024-03-07 01:01:06 +00:00
Colin b36d224b85 swaylock-plugin: init (but i likely won't be using it) 2024-03-07 01:00:44 +00:00
Colin 90e3c33536 feeds: subscribe to slatecave.net 2024-03-06 22:40:57 +00:00
Colin a9419b7351 swayidle: sandbox 2024-03-06 21:33:11 +00:00
Colin f0d0343b32 sway: lappy: fix output name 2024-03-06 21:18:43 +00:00
Colin bd27f3a015 swayidle: enable; pair with swaylock 2024-03-06 20:55:01 +00:00
Colin 6a3e632335 sway: remove config for old external displays i no longer use 2024-03-06 19:03:13 +00:00
Colin a4c4b0575c sway: map touch inputs to their correct display 2024-03-06 19:02:23 +00:00
Colin 4730a65008 nixpkgs: 2024-03-05 -> 2024-03-06
```
• Updated input 'nixpkgs-next-unpatched':
    'github:nixos/nixpkgs/16bca48d251761297746d5bb7b9e47a3c6564c5a' (2024-03-05)
  → 'github:nixos/nixpkgs/09c267dae0dae6585ddbc98bd2301bd8153ac177' (2024-03-06)
• Updated input 'nixpkgs-unpatched':
    'github:nixos/nixpkgs/b3ed737064bc4cc0312081b6937fa2bb48d62afa' (2024-03-05)
  → 'github:nixos/nixpkgs/a85303aef29c6a9000a259ed21c9c14a1aa3859e' (2024-03-06)
• Updated input 'sops-nix':
    'github:Mic92/sops-nix/291aad29b59ceda517a06e59809f35cb0bb17c6b' (2024-03-04)
  → 'github:Mic92/sops-nix/25dd60fdd08fcacee2567a26ba6b91fe098941dc' (2024-03-06)
```
2024-03-06 09:54:23 +00:00
Colin 63d95edcbe zsh: fix `c` alias 2024-03-06 09:47:33 +00:00
Colin 687e72897b xdg-desktop-portal: don't always prompt the user for how to open every file 2024-03-06 06:25:36 +00:00
Colin 0e84744115 todo.md: xdg-desktop-portal improvements 2024-03-06 06:25:14 +00:00
Colin 1ee38d3aec todo.md: remove completed items 2024-03-06 05:28:18 +00:00
Colin 5f4e421ab9 sane-wipe: fix sandboxing 2024-03-06 05:11:24 +00:00
Colin 471339d237 hosts (all): remove sxmo-related polyfills 2024-03-06 05:07:30 +00:00
Colin 085232f18c wvkbd: configure layers 2024-03-06 05:07:30 +00:00
Colin 18c7fc17fd alacritty: configure font size per-host 2024-03-06 05:07:30 +00:00
Colin a7567dfbe6 ship celeste64 2024-03-06 04:56:39 +00:00
Colin bc0660b623 PDF viewer: evince -> zathura 2024-03-06 04:51:01 +00:00
Colin cf86b4a67c xterm: move to pcGuiApps 2024-03-06 04:38:05 +00:00
Colin d39bed46b5 rofi: allow access to Books 2024-03-06 01:39:48 +00:00
Colin 525450e21a fix backlight persistence 2024-03-06 00:58:11 +00:00
Colin a4ee820921 /var/lib/colord: don't persist
files haven't changed in over a year; i assume it's legacy
2024-03-05 23:53:41 +00:00
Colin 4b5d6b16e1 alacritty: ignore media keys 2024-03-05 23:25:31 +00:00
Colin 41a141dba6 servo: disable navidrome 2024-03-05 18:48:25 +00:00
Colin d5811f142d notifyActive activation script -> apply only to GUI systems
else i get warnings on every servo activation
2024-03-05 18:46:43 +00:00
Colin 4d6d79cc81 servo: /var/lib/uninsane/media -> /var/media 2024-03-05 18:44:30 +00:00
Colin 53d76920e4 servo: persist more specifically the /var/lib/uninsane/media directory 2024-03-05 18:39:23 +00:00
Colin db892273ac nixpatches: fix imagemagick cross fix hash 2024-03-05 18:37:09 +00:00
Colin 65e206afde nixpkgs: 2024-03-04 -> 2024-03-05
```
• Updated input 'nixpkgs-next-unpatched':
    'github:nixos/nixpkgs/1a3380fec6e3c2d539e58c4be6a4a094d7d14aea' (2024-03-04)
  → 'github:nixos/nixpkgs/16bca48d251761297746d5bb7b9e47a3c6564c5a' (2024-03-05)
• Updated input 'nixpkgs-unpatched':
    'github:nixos/nixpkgs/4c0862ebf8e474315767c5210c3d0a336625f318' (2024-03-04)
  → 'github:nixos/nixpkgs/b3ed737064bc4cc0312081b6937fa2bb48d62afa' (2024-03-05)
• Updated input 'sops-nix':
    'github:Mic92/sops-nix/075df9d85ee70cfb53e598058045e1738f05e273' (2024-03-03)
  → 'github:Mic92/sops-nix/291aad29b59ceda517a06e59809f35cb0bb17c6b' (2024-03-04)
```
2024-03-05 10:09:39 +00:00
Colin 6765fe8d7d wob: rename sxmo.wobsock -> wob.sock 2024-03-05 10:00:45 +00:00
Colin 955119e07b wob-audio: fix, by finishing the port to pipewire
also rewrote it in Python because bash can't do floating point math
2024-03-05 09:32:37 +00:00
Colin daddf9314a gpodder: fix .desktop file(s) 2024-03-05 02:58:21 +00:00
Colin e59123fd62 cozy: fix patch hash 2024-03-05 02:58:14 +00:00
Colin d43cc6c61c alsa-ucm-conf: fold the Pinephone patches into sane.programs.alsa-ucm-conf & distribute to all hosts 2024-03-05 00:28:07 +00:00
Colin a8bc77d40c nixpkgs sourceInfo patching: move to nixpatches/
previously i was using the sourceInfo of the flake, which is kinda wrong: and it would force a _new_ nixpkgs for every time i commit to my own repo -- not just when i bump it
2024-03-05 00:06:08 +00:00
Colin dfc768e2e6 flake: place builds strictly in build/ directory 2024-03-04 23:47:31 +00:00
Colin 3544b4b132 nixpkgs: 2024-03-03 -> 2024-03-04
```
• Updated input 'nixpkgs-next-unpatched':
    'github:nixos/nixpkgs/6a2985393fcc1dfabc6d36af148ca761a807e002' (2024-03-03)
  → 'github:nixos/nixpkgs/1a3380fec6e3c2d539e58c4be6a4a094d7d14aea' (2024-03-04)
• Updated input 'nixpkgs-unpatched':
    'github:nixos/nixpkgs/286977c08ddf540b4c6bebd8cd96fe30070bcb46' (2024-03-03)
  → 'github:nixos/nixpkgs/4c0862ebf8e474315767c5210c3d0a336625f318' (2024-03-04)
```
2024-03-04 09:41:23 +00:00
Colin c86afca795 cozy: patch via sane.programs, not overlay 2024-03-04 09:26:25 +00:00
Colin 5f3ef37050 cozy: 1.2.1 -> 1.3.0 2024-03-04 08:57:52 +00:00
Colin 3b8252fe43 delfin: doc improvements 2024-03-04 08:28:50 +00:00
Colin 1e6e4d2644 cozy: doc improvements 2024-03-04 08:28:35 +00:00
Colin 60c447b6c4 signal-desktop: 6.44.0 -> 7.0.0 2024-03-04 08:26:59 +00:00
Colin 4fc2ffef56 koreader-from-src: 2024.01 -> 2024.03 2024-03-04 08:19:41 +00:00
Colin 9416ef1ff6 firefox-extensions: update 2024-03-04 08:18:48 +00:00
Colin b1dff9bfa8 steam: fix controllers to work in the sandbox 2024-03-03 20:03:20 +00:00
Colin 0003acc091 nixpkgs: 2024-03-02 -> 2024-03-03
```
• Updated input 'nixpkgs-next-unpatched':
    'github:nixos/nixpkgs/aefac840b87e8e0ab658fa5080539e292ad8a9ba' (2024-03-02)
  → 'github:nixos/nixpkgs/6a2985393fcc1dfabc6d36af148ca761a807e002' (2024-03-03)
• Updated input 'nixpkgs-unpatched':
    'github:nixos/nixpkgs/df41961bd4b7e838cb997543ea1297f4cbd7da15' (2024-03-02)
  → 'github:nixos/nixpkgs/286977c08ddf540b4c6bebd8cd96fe30070bcb46' (2024-03-03)
• Updated input 'sops-nix':
    'github:Mic92/sops-nix/a1c8de14f60924fafe13aea66b46157f0150f4cf' (2024-02-26)
  → 'github:Mic92/sops-nix/075df9d85ee70cfb53e598058045e1738f05e273' (2024-03-03)
• Updated input 'sops-nix/nixpkgs-stable':
    'github:NixOS/nixpkgs/89a2a12e6c8c6a56c72eb3589982c8e2f89c70ea' (2024-02-25)
  → 'github:NixOS/nixpkgs/66d65cb00b82ffa04ee03347595aa20e41fe3555' (2024-03-03)
```
2024-03-03 10:11:16 +00:00
Colin 0630037f86 steam: sandbox
controllers are untested, probably need to be added; graphics and sound work fine
2024-03-03 10:10:14 +00:00
Colin 9513680538 sway: enable net access in the sandbox (for Xwayland) 2024-03-03 10:09:29 +00:00
Colin 0affeb098a rofi: optimize sizing 2024-03-03 07:36:33 +00:00
Colin 979d07d693 wob: port pulseaudio -> pipewire 2024-03-03 07:22:03 +00:00
Colin fd072883dc sane-input-handler: port pulseaudio -> pipewire native 2024-03-03 07:13:23 +00:00
Colin ed87792f9b sed: sandbox 2024-03-03 07:06:00 +00:00
Colin 8821b3ca7d procps: sandbox 2024-03-03 06:55:17 +00:00
Colin 5e5a1fbaae rofi: allow to use more space on moby when keyboard is active 2024-03-03 04:46:12 +00:00
Colin d2f470dc74 wvkbd: sandbox 2024-03-03 04:44:23 +00:00
Colin 7933ef41a2 unl0kr: simplify this code 2024-03-03 04:43:44 +00:00
Colin 6b45589e54 wireplumber: ensure ALSA_UCM_CONF2 env var is on PATH
this is critical for pipewire/wireplumber to work on moby
2024-03-03 04:43:11 +00:00
Colin b04357c9de nix.conf: dont ship NIX_PATH for light deploys
it's like 150 MiB
2024-03-03 03:53:13 +00:00
Colin 4b04cbc078 mpv: couple app volume to system volume 2024-03-03 03:22:28 +00:00
Colin 1498e364b2 doc: mimeo: mention jaro as alternative 2024-03-03 03:16:10 +00:00
Colin 0aaa3eaaeb mpv: remove legacy vo=wlshim hack 2024-03-02 23:46:52 +00:00
Colin 3ac6b92c18 /etc/nix/registry.json: don't generate for -light builds (it links back to src) 2024-03-02 23:42:58 +00:00
Colin c747855810 bonsai: sandbox 2024-03-02 22:34:38 +00:00
Colin 711865018d /etc/nixos: don't link on '*-light' builds 2024-03-02 22:13:04 +00:00
Colin f33fcc2018 nixpatches: update hashes 2024-03-02 21:23:44 +00:00
Colin 96ec0106ee sane-input-handler: leverage sane-open-desktop instead of making direct gdbus calls 2024-03-02 21:20:47 +00:00
Colin 0c4d7761d3 sane-input-handler: sandbox 2024-03-02 21:20:47 +00:00
Colin fe10640821 wob-pulse: sandbox 2024-03-02 20:57:44 +00:00
Colin 1f208083be mpvScripts.uosc: 5.1.1 -> 5.2.0 2024-03-02 20:39:04 +00:00
Colin 6ec3126321 moby: fix display driver reload check to run before unl0kr
this should fix the no-graphics-on-boot bug i'm seeing. it was previously fixed for lightdm and greetd: just not unl0kr
2024-03-02 19:50:50 +00:00
Colin 8029744c90 modules/programs: don't expose *all* of /run/secrets/home to every program
this was actually causing a lot of bwrap errors because that directory's not user-readable

turns out any program which already uses programs.xyz.secrets gets the /run/secrets mounts for free via symlink following
2024-03-02 18:51:39 +00:00
Colin 1fcf0bfcb1 swaync: fix signal-desktop check to be --user 2024-03-02 18:33:35 +00:00
Colin a3ae650273 dialect: fix so it works inside a sandbox 2024-03-02 18:25:13 +00:00
Colin 7e0bef549f nixpkgs: 2024-03-01 -> 2024-03-02
```
• Updated input 'nixpkgs-next-unpatched':
    'github:nixos/nixpkgs/ee743c92310804de4b4505ff0ac40b4f3f4f49de' (2024-03-01)
  → 'github:nixos/nixpkgs/aefac840b87e8e0ab658fa5080539e292ad8a9ba' (2024-03-02)
• Updated input 'nixpkgs-unpatched':
    'github:nixos/nixpkgs/f7fca9d98b0ec282f4b0d63f1fc2e38caf4ea55a' (2024-03-01)
  → 'github:nixos/nixpkgs/df41961bd4b7e838cb997543ea1297f4cbd7da15' (2024-03-02)
```
2024-03-02 07:52:21 +00:00
Colin 3b603519ff fuzzel: sandbox (well, i probably dont even have it on my system anymore :P) 2024-03-02 07:43:42 +00:00
Colin f69ca166f4 sway: sandbox 2024-03-02 07:41:51 +00:00
Colin a45e42910d make-sandboxed: generalize runCommand patch to handle any derivation, called with or without callPackage 2024-03-02 07:11:45 +00:00
Colin 3dd1d18dcd less: sandbox 2024-03-02 07:11:45 +00:00
Colin 28cb705bd4 grim: sandbox 2024-03-02 07:11:45 +00:00
Colin 7fa1dbc5d5 slurp: sandbox 2024-03-02 07:11:45 +00:00
Colin 8b7575c205 swappy: sandbox 2024-03-02 07:11:45 +00:00
Colin 52e9902fa1 sane-screenshot: give it permissions to my screenshots dir (derp) 2024-03-02 06:14:05 +00:00
Colin ab765a81af sway: integrate sane-screenshot as the PrintScreen shortcut 2024-03-02 06:14:05 +00:00
Colin a7bd831ad8 sane-screenshot: port to sane.programs 2024-03-02 06:14:05 +00:00
Colin 063d99dd73 todo.md: task to remove /run/wrappers 2024-03-02 05:42:26 +00:00
Colin 0d48c462cb sane-screenshot: init 2024-03-02 02:04:48 +00:00
Colin f4ec09f010 rofi: remember the last selected directory 2024-03-02 00:35:29 +00:00
Colin a7ef9fc0b8 todo.md: task for better app integrations 2024-03-02 00:21:56 +00:00
Colin a40cefc8a5 pipewire: speculatively add /dev/video* 2024-03-02 00:14:47 +00:00
Colin f55bb3518f wireplumber: add missing /dev/video2 which is on moby 2024-03-02 00:14:21 +00:00
Colin 3d16aa62ea sway: let the pinephone default to it's normal scaling
it's actually pretty nice at 2.0 scaling with my current apps. i'll need to tweak swaync, conky, wvkbd, etc. later.
2024-03-01 23:53:31 +00:00
Colin 2548cfeadc xdg-desktop-portal-wlr: fix crashing due to over-restrictive sandbox 2024-03-01 21:17:31 +00:00
Colin 90acbf716d Videos/gPodder: allow access from mpv and rofi 2024-03-01 21:02:04 +00:00
Colin 4d98593b3f todo.md: sync 2024-03-01 20:48:56 +00:00
Colin db89ac88f0 sane-sandboxed: add new `--sane-sandbox-keep-namespace all` option 2024-03-01 20:48:56 +00:00
Colin bba149c670 zsh: new `c` helper to change into a dir and list it 2024-03-01 20:09:20 +00:00
Colin c056984003 zsh: alias exiy -> exit 2024-03-01 19:56:09 +00:00
Colin 2324d75165 switch psmisc -> killall
otherwise a really shitty `pstree` makes its way onto my PATH
2024-03-01 18:50:20 +00:00
Colin 9296b7731b rofi: add a .desktop file to rofi-snippets 2024-03-01 18:07:52 +00:00
Colin 75e9ce509e static-nix-shell: add support for extra nativeBuildInputs 2024-03-01 18:07:07 +00:00
Colin 95c95d6f53 splatmoji: actually install the .desktop files 2024-03-01 18:03:45 +00:00
Colin fca23e661a xdg-desktop-portal: disable debug logging 2024-03-01 17:50:49 +00:00
Colin 9a7ebbd9d3 rofi: configure window height/location 2024-03-01 17:18:40 +00:00
Colin 56b00d998e rofi: theme
i still need to figure out how to make it wider for moby
2024-03-01 16:40:09 +00:00
Colin 01ef182073 waybar: theme the indicator style
i don't know if it's perfect, but it is better
2024-03-01 15:32:52 +00:00
Colin b6daeddfa2 waybar: show different modules for moby v.s. others 2024-03-01 15:25:42 +00:00
Colin c6e956f3d2 waybar: fix `button.urgent` color to match sway's `client.urgent` 2024-03-01 15:03:14 +00:00
Colin f9510e5d24 nixpkgs: 2024-02-29 -> 2024-03-01
```
• Updated input 'nixpkgs-next-unpatched':
    'github:nixos/nixpkgs/e894afb6c101fea0771b47d7827bef022e89ee1e' (2024-02-29)
  → 'github:nixos/nixpkgs/ee743c92310804de4b4505ff0ac40b4f3f4f49de' (2024-03-01)
• Updated input 'nixpkgs-unpatched':
    'github:nixos/nixpkgs/d29fabd630000579f744d04639d625828ba412bf' (2024-02-29)
  → 'github:nixos/nixpkgs/f7fca9d98b0ec282f4b0d63f1fc2e38caf4ea55a' (2024-03-01)
```
2024-03-01 07:31:58 +00:00
Colin 2e737c2ab1 moby: sxmo -> sway
still several things need to be improved, but the groundwork is there
2024-03-01 07:26:26 +00:00
Colin 82368eb45a sway: desko: fix monitor layout
i guess my monitor's name changed... 👀
2024-03-01 07:19:00 +00:00
Colin 65fb9e1d57 rofi: allow access to more servo media paths 2024-03-01 07:14:41 +00:00
Colin b02ae7ef74 moby: polyfill an OK sway layout 2024-03-01 05:20:28 +00:00
Colin 37ddb2ae17 waybar: fix font size to be more usable on moby 2024-03-01 04:46:06 +00:00
Colin 81e02e2885 sway: moby: fix layout/scale preferences 2024-03-01 04:38:26 +00:00
Colin 4a3f59468c sway: launch gui apps via sane-open-desktop instead of inline
this will allow for sandboxing, in the future
2024-03-01 04:19:19 +00:00
Colin daab5939e7 rofi: split `sane-open-desktop` out as a helper 2024-03-01 04:19:19 +00:00
Colin e7430c41f9 refactor: sway-config: for readability 2024-03-01 03:29:52 +00:00
Colin 5849e75577 sway-config: remove dead window specializations 2024-03-01 03:21:47 +00:00
Colin 296123651c sway: fold `sway-config.nix` into `default.nix` 2024-03-01 03:18:37 +00:00
Colin 7f0d5e7810 sane-input-handler: explain why i setsid 2024-03-01 03:11:06 +00:00
Colin 7af928a6d2 sway: direct inputs to bonsai WITHOUT swallowing them 2024-03-01 03:10:44 +00:00
Colin b73569d675 wvkbd: fix service typo 2024-02-29 22:04:42 +00:00
Colin 50ee15ef2b send sway-related cross patches upstream 2024-02-29 21:35:02 +00:00
Colin 9764d5f095 sway/waybar: decrease cross-specific patches
cava cross compiles now (yay); sndio is actually required by waybar if cava is enabled, so remove the disable
2024-02-29 18:56:54 +00:00
Colin 43386f3ba5 nixpkgs: update; couple cross-compiling patches have merged upstream
```
• Updated input 'nixpkgs-next-unpatched':
    'github:nixos/nixpkgs/0852bff4370133e3a62b0cc7d14d193b928a7c59' (2024-02-29)
  → 'github:nixos/nixpkgs/e894afb6c101fea0771b47d7827bef022e89ee1e' (2024-02-29)
• Updated input 'nixpkgs-unpatched':
    'github:nixos/nixpkgs/9f21aa90cb8c078969543956d88c19696b646743' (2024-02-29)
  → 'github:nixos/nixpkgs/d29fabd630000579f744d04639d625828ba412bf' (2024-02-29)
```
2024-02-29 18:22:35 +00:00
Colin a3a6278a59 notifyActive: don't depend on sway
it was a little silly to be shipping sway on headless systems
2024-02-29 17:32:19 +00:00
Colin 083f743c1f remove nixpkgs `less` defaults and manage PAGER myself
this lets me avoid the lesspipe cross failures, notably
2024-02-29 15:18:51 +00:00
Colin 626ad97005 nixpkgs: 2024-02-27 -> 2024-02-29
```
• Updated input 'nixpkgs-next-unpatched':
    'github:nixos/nixpkgs/6daf4de0662e1d895d220a4a4ddb356eb000abe9' (2024-02-27)
  → 'github:nixos/nixpkgs/0852bff4370133e3a62b0cc7d14d193b928a7c59' (2024-02-29)
• Updated input 'nixpkgs-unpatched':
    'github:nixos/nixpkgs/5bd8df40204f47a12263f3614c72cd5b6832a9a0' (2024-02-27)
  → 'github:nixos/nixpkgs/9f21aa90cb8c078969543956d88c19696b646743' (2024-02-29)
```
2024-02-29 06:42:18 +00:00
Colin 6253d1799a port sxmo_hook_inputhandler.sh -> sane-input-handler
this one can run outside the SXMO environment.
major thing missing at the moment is that rofi doesn't get volume
control inputs because bonsai out-competes it for exclusive control.
2024-02-29 01:26:38 +00:00
Colin d8a8038cae xdg-terminal-exec: define a .desktop file 2024-02-29 00:17:26 +00:00
Colin 7fd56b63cb rofi: better patch for the DT_UNKNOWN edgecase 2024-02-28 21:41:59 +00:00
Colin 7a65bd36c7 rofi: patch the filebrowser to reliably list entries on remote filesystems
see: <https://github.com/davatorium/rofi/issues/1954>
2024-02-28 21:18:19 +00:00
Colin bd4eeeeb3b nixpatches: imagemagick closure fix: mark as merged upstream 2024-02-28 18:27:15 +00:00
Colin 7c22b59b9d sane-which: handle relative symlinks 2024-02-28 18:16:08 +00:00
Colin 9e504676bd sane-which: only print the first 30 lines for text files 2024-02-28 18:09:38 +00:00
Colin b515127101 sane-which: follow nix wrappers 2024-02-28 18:09:24 +00:00
Colin 40e30cf2f8 programs: make sandbox.wrapperType default to "wrappedDerivation" and remove everywhere i manually set that 2024-02-28 17:39:00 +00:00
Colin 812c0c8029 packages: reduce the number of packages which are using inplace sandbox wrapping 2024-02-28 17:35:40 +00:00
Colin 7ca5ae84b7 flake: deploy: abort on error 2024-02-28 17:34:45 +00:00
Colin a4248fd5cc make-sandboxed: don't try to wrap directories
whoops. test -x is true for directories
2024-02-28 16:28:25 +00:00
Colin 70229e0839 rofi: persist the filebrowsercache 2024-02-28 15:41:52 +00:00
Colin cd303a76bc rofi: disable "run" from combi
they wouldn't work, since i only 'xdg-open' the entries
2024-02-28 15:32:12 +00:00
Colin e43aa3bb8b splatmoji: fix sandboxing so rofi can read its config/cache 2024-02-28 15:19:53 +00:00
Colin 6c2d80715c rofi-snippets: fix sandboxing so rofi can read its config/cache 2024-02-28 15:15:02 +00:00
Colin db8456f152 flake: provide a "benchmark" target 2024-02-28 15:10:45 +00:00
Colin d912190db5 sway: split snippets into own program (rofi-snippets) 2024-02-28 14:44:05 +00:00
Colin c380f61bea fix "rescue" host to eval again 2024-02-28 14:19:45 +00:00
Colin ff8cfc9372 flake: fix `check.nur` target 2024-02-28 13:47:51 +00:00
Colin b302113fc0 modules/programs: require manual definition; don't auto-populate attrset
this greatly decreases nix eval time
2024-02-28 13:35:09 +00:00
Colin 9749ff0442 sane.gui.phosh: remove 2024-02-28 13:35:05 +00:00
Colin 0d97191f74 sane-wipe-browser: dont call pkill with sudo 2024-02-28 13:35:00 +00:00
Colin 3816393e06 rofi: try integrating rofi-emoji (failed) 2024-02-28 01:28:05 +00:00
Colin 4c6c470c86 sway: snippets: port from fuzzel -> rofi 2024-02-28 01:26:22 +00:00
Colin 409a4db232 splatmoji: use rofi instead of fuzzel
will be best if i can port everything to one dmenu helper
2024-02-28 01:18:51 +00:00
Colin c73684557e overlays: remove dead `optimizations` overlay (old ccache stuff) 2024-02-28 00:19:29 +00:00
Colin 44067f6570 cross: document the state of gnome-keyring 2024-02-28 00:05:23 +00:00
Colin 466e7a9ecd cross: libshumate: push patch upstream 2024-02-27 23:58:49 +00:00
Colin 6b2d189771 cross: graphicsmagick: push patch upstream 2024-02-27 23:46:05 +00:00
Colin 6ef729bbaf assorted: prefer runCommandLocal over runCommand where it makes sense 2024-02-27 22:26:56 +00:00
Colin 8f424dcd5a programs: sandboxing: link /etc into sandboxed programs
this is crucial for e.g. swaync, to find its resource files.
maybe a good idea to link *every* package directory which i also link
into /run/current-system.
2024-02-27 22:25:17 +00:00
Colin 7fb7f72bc0 cross: remove modemmanager patch; it compiles OOTB :)
thanks Cole!
2024-02-27 22:08:12 +00:00
Colin 67536e3c1f programs: assorted: correct sandbox paths now that Pictures/Videos/Books are categorized
i don't like this Pictures/ approach though. i may reconsolidate some of those
2024-02-27 21:37:20 +00:00
Colin 715de37954 rofi: fix files to be opened with xdg-open 2024-02-27 21:20:12 +00:00
Colin c8035abddf fs: Books: persist subdirectories individually
TODO: KOReader will need to be updated for this
2024-02-27 20:48:38 +00:00
Colin ef1cdac6b4 fs: split Pictures into separate persisted directory
TODO: update camera and screenshot apps to be aware of these directories
2024-02-27 20:46:25 +00:00
Colin e37a7d85b3 ~/Videos: don't persist ALL videos: just ~/Videos/local
otherwise, ~/Videos/servo is a symlink which the programs module doesn't know how to traverse (and hence, sandbox).
2024-02-27 20:45:56 +00:00
Colin 36f6c72183 rofi: sandbox, and launch apps via xdg-open or gdbus 2024-02-27 18:35:15 +00:00
Colin 20a1aeb5b3 programs: add gdbus as a standalone program, separate from the rest of glib 2024-02-27 18:28:24 +00:00
Colin 9ba0833d5f todo.md: remove completed/obsoleted tasks 2024-02-27 17:40:42 +00:00
Colin 15f353f883 overlays: remove disable-flakey-tests: everything there only applied to emulated builds, which i no longer do 2024-02-27 17:34:22 +00:00
Colin 27af0002c8 nixpatches: remove obsoleted j4-menu-desktop build fix 2024-02-27 17:32:56 +00:00
Colin 9265252e04 nixpatches: remove stale commented-out patches 2024-02-27 17:29:17 +00:00
Colin 11a53c402d nixpatches: procure procmail cross fix from nixpkgs PR 2024-02-27 17:24:20 +00:00
Colin 464f439f4a nixpatches: remove ccache cross fix
i assume this was only needed when i was using binfmt?? anyways it doesn't apply cleanly
2024-02-27 17:04:44 +00:00
Colin a4dbf18d7a nixpatches: remove upstreamed "allow i2p to build on aarch64" patch 2024-02-27 17:04:40 +00:00
Colin 1579e089e9 cross: remove superfluous spandsp fix
it was upstreamed to nixpkgs 2.5 years ago:
<https://github.com/NixOS/nixpkgs/pull/134698>

meanwhile, my patch was added in 46dabcd33f
2023-03-07: "cross compilation: speculatively compile spandsp with ac_cv_func_malloc_0_nonnull"

this was at a time when nixpkgs spandsp had version 3 and 0.0.6,
and *possibly* only 0.0.6 had the fix.
the fix was added to version 3 in nixpkgs
88cbe74d05cac6e037e934ee7fbe8b1f0d164f25, dated 2023-02-26.
2024-02-27 16:54:59 +00:00
Colin 4ce0c23c19 cross: comment out/remove a few more cross fixes for packages i don't plan to use 2024-02-27 16:44:47 +00:00
Colin 9710d55c6a cross: comment out/remove cross fixes for packages i don't plan to use anytime soon 2024-02-27 16:20:55 +00:00
Colin 4b014af4b1 cross: disable unneeded libei patch 2024-02-27 16:11:59 +00:00
Colin 4379addf9e plumb my configured sway through to everywhere that wants `pkgs.sway`.
kinda ugly. this lets me avoid having multiple versions of sway on my
system.
2024-02-27 16:11:10 +00:00
Colin 5c7eceeb55 grimshot: move to own file 2024-02-27 14:54:53 +00:00
Colin 50aa16df81 cross compilation: remove unused patches; note upstreaming status 2024-02-27 14:53:26 +00:00
Colin b1e943c9bb swaynotificationcenter: push cross fix upstream 2024-02-27 11:59:36 +00:00
Colin be5fae369f swaynotificationcenter: fix cross compilation 2024-02-27 11:32:48 +00:00
Colin 40e22533fb swaynotificationcenter: update config/patches to be compatible with 0.10.0 2024-02-27 11:19:29 +00:00
Colin 03c5f82dbf flake: fix sourceInfo propagation (and hence, nixosConfiguration naming!) 2024-02-27 10:34:20 +00:00
Colin e90bbfe551 nixpkgs: 2024-02-25 -> 2024-02-27
```
• Updated input 'nixpkgs-next-unpatched':
    'github:nixos/nixpkgs/f42891a2fa716dcab10336a1b7313993430568ea' (2024-02-25)
  → 'github:nixos/nixpkgs/6daf4de0662e1d895d220a4a4ddb356eb000abe9' (2024-02-27)
• Updated input 'nixpkgs-unpatched':
    'github:nixos/nixpkgs/8e474340ed0592ca21c1398d88dd89bf7100e881' (2024-02-25)
  → 'github:nixos/nixpkgs/5bd8df40204f47a12263f3614c72cd5b6832a9a0' (2024-02-27)
• Updated input 'sops-nix':
    'github:Mic92/sops-nix/2874fbbe4a65bd2484b0ad757d27a16107f6bc17' (2024-02-25)
  → 'github:Mic92/sops-nix/a1c8de14f60924fafe13aea66b46157f0150f4cf' (2024-02-26)
```
2024-02-27 01:24:07 +00:00
Colin 92033c8414 rofi: place druncache into rofi cache dir 2024-02-27 01:21:27 +00:00
Colin 16f0424631 rofi: patch so that i can use `-run-command "my-launcher {app_id}.desktop"`
this plus xdg-desktop-portal's DynamicLauncher should provide a way to sandbox everything
2024-02-27 01:03:21 +00:00
Colin 6fd1ce1f61 rofi: port cache from plaintext to cryptClearOnBoot
because i don't think it has any invalidation logic
2024-02-26 23:04:50 +00:00
Colin a7c325c8e1 xdg-desktop-portal: link `applications` so that DynamicLauncher portal can work 2024-02-26 22:31:48 +00:00
Colin fc7814e6cd docs: mime: document `gio launch` 2024-02-26 22:29:15 +00:00
Colin 245e6c93cd docs: xdg-desktop-portal: document notable dbus endpoints 2024-02-26 22:29:03 +00:00
Colin ec073592ed sway: use rofi app launcher instead of fuzzel 2024-02-26 21:22:03 +00:00
Colin 617525a317 programs: add rofi (dmenu-style launcher/file browser) 2024-02-26 21:21:30 +00:00
Colin 1098d121b4 firefox-extensions.sidebery: 5.0.0 -> 5.1.1.7 2024-02-26 18:07:45 +00:00
Colin 821c631b1d firefox-extensions.sponsorblock: 5.5.5 -> 5.5.6 2024-02-26 18:03:44 +00:00
Colin 96347ad7ac firefox-extensions.bypass-paywalls-clean: 3.5.5.0 -> 3.5.7.0 2024-02-26 18:02:10 +00:00
Colin 4f933cc0fa fix "update.pkgs" script 2024-02-26 18:01:47 +00:00
Colin 03615ce244 nixpkgs: 2024-02-24 -> 2024-02-25; sops-nix -> 2024-02-25
```
• Updated input 'nixpkgs-next-unpatched':
    'github:nixos/nixpkgs/a3e2b0de906a8fe0143c2783199abdc132dee56a' (2024-02-24)
  → 'github:nixos/nixpkgs/f42891a2fa716dcab10336a1b7313993430568ea' (2024-02-25)
• Updated input 'nixpkgs-unpatched':
    'github:nixos/nixpkgs/b66514c14e85cd7d853d6dbbf1a421ba232eff10' (2024-02-24)
  → 'github:nixos/nixpkgs/8e474340ed0592ca21c1398d88dd89bf7100e881' (2024-02-25)
• Updated input 'sops-nix':
    'github:Mic92/sops-nix/f6b80ab6cd25e57f297fe466ad689d8a77057c11' (2024-02-21)
  → 'github:Mic92/sops-nix/2874fbbe4a65bd2484b0ad757d27a16107f6bc17' (2024-02-25)
• Updated input 'sops-nix/nixpkgs-stable':
    'github:NixOS/nixpkgs/69405156cffbdf2be50153f13cbdf9a0bea38e49' (2024-02-17)
  → 'github:NixOS/nixpkgs/89a2a12e6c8c6a56c72eb3589982c8e2f89c70ea' (2024-02-25)
```
2024-02-26 17:35:34 +00:00
Colin 7d613d90d8 nixcache: disable my own substituters by default 2024-02-26 17:35:34 +00:00
Colin afd52014d1 sane-reclaim-disk-space: note to run as root 2024-02-26 15:25:12 +00:00
Colin dd6e1c5e38 flake: fix "deploy" commands to bypass substituters, and address deprecated nix path signing 2024-02-26 15:01:14 +00:00
Colin d0d7994c2f sxmo: remove 'greeter' option 2024-02-26 07:27:33 +00:00
Colin b5da7a86fa libkiwix: 12.1.1 -> 13.1.0 2024-02-26 06:10:37 +00:00
Colin f2e1bb6b86 programs: python3-repl: sandbox 2024-02-25 18:52:55 +00:00
Colin fe0f6988bd programs: disable `wine` (unused) 2024-02-25 18:42:25 +00:00
Colin c402a265cd programs: stepmania: sandbox 2024-02-25 18:26:32 +00:00
Colin d5643a6a5d assorted static-nix-shell packages: use `srcRoot` 2024-02-25 17:37:38 +00:00
Colin e757e35065 static-nix-shell: add a `srcRoot` argument which allows more precisely specifying the source files and avoiding unnecessary rebuilds 2024-02-25 17:37:10 +00:00
Colin 953dd98b0f refactor: static-nix-shell: remove unused options 2024-02-25 17:28:00 +00:00
Colin c9c1181242 programs: wireplumber: sandbox 2024-02-25 17:11:48 +00:00
Colin f9888fe8d6 programs: sane-private-init: sandbox 2024-02-25 16:46:10 +00:00
Colin 036145e6ba programs: sane-private-change-passwd: sandbox
note that this is entirely untested
2024-02-25 16:35:13 +00:00
Colin 5b647a1a90 programs: sane-private-change-passwd: rewrite based on how my system looks today
i haven't tested this
2024-02-25 16:28:57 +00:00
Colin 7c486492c8 programs: pipewire: port sandbox to bwrap and restrict further 2024-02-25 15:19:57 +00:00
Colin 890b41f563 programs: pipewire: sandbox
still need to sandbox wireplumber
2024-02-25 14:34:11 +00:00
Colin ca36fe1b96 programs: gnome.seahorse: sandbox 2024-02-25 12:03:42 +00:00
Colin d2df668c9e modules/programs: sane-sandboxed: replace --sane-sandbox-keep-pidspace with --sane-sandbox-keep-namespace <pid|cgroup|ipc|uts> 2024-02-25 12:00:00 +00:00
Colin b7921ac41b refactor: programs: sort 2024-02-25 11:53:49 +00:00
Colin c304367e21 programs: gnome-maps: sandbox 2024-02-25 11:51:50 +00:00
Colin 2ad33a49df refactor: pipewire: remove dead code 2024-02-25 10:38:42 +00:00
Colin 0b4efd2ab2 pipewire: migrate services to sane.programs to completely disable socket activation
see: https://github.com/NixOS/nixpkgs/issues/291318
2024-02-25 10:36:21 +00:00
Colin 0745e9fc06 refactor: programs: split gnome-maps into own file 2024-02-25 09:06:32 +00:00
Colin e0267b5669 programs: pipewire: disable socket activation 2024-02-25 08:55:59 +00:00
Colin b3c7aac8c5 programs: wike: sandbox: enable DRI to fix graphical glitches 2024-02-25 08:38:10 +00:00
Colin c788596c45 programs: sane-private-do: grant net access
crucial for e.g. sane-private-do git push
2024-02-25 08:25:13 +00:00
Colin f807d7c0a2 modules/programs: sane-sandboxed: bwrap: don't virtualize {/dev,/proc,/tmp} if explicitly asked to bind them instead
this is necessary for some programs which want a near-maximial sandbox, like
launchers or shells, or more specifically, `sane-private-do`.
2024-02-25 08:15:39 +00:00
Colin 6ab5dd8a8f modules/persist: ensure that the mountpoint for the private store is created at boot 2024-02-25 07:51:24 +00:00
Colin 52b8cd0209 modules/persist: ensure backing directory is created *before* we mount 2024-02-25 07:22:50 +00:00
Colin 6865331b48 programs: sandbox sane-scripts.private-do 2024-02-25 05:41:27 +00:00
Colin dd00a2fe6e sane-private-do: run a shell by default, and leave the mount in its original state on exit 2024-02-25 05:41:27 +00:00
Colin 4ee02151f4 sane-private-{lock,unlock}: just defer to `mount` 2024-02-25 05:19:44 +00:00
Colin 00bf2f79cc ssh: clean up /etc/ssh/host_keys persistence 2024-02-25 05:19:44 +00:00
Colin 04a6055d06 remove /libexec from environment.pathsToLink 2024-02-25 05:12:44 +00:00
Colin 15a7793f0d bonsai: 1.0.2 -> 1.1.0 2024-02-25 01:59:01 +00:00
Colin f714bd8281 programs: jq: sandbox 2024-02-25 01:59:01 +00:00
Colin 73b2594d9b programs: sandboxing: distinguish between "existingFileOrParent" and "existingOrParent" 2024-02-25 01:59:01 +00:00
Colin a55dc5332d modules/programs: sane-sandboxed: introduce "existingOrParent" autodetect-cli option
some programs will want this, to create directories by name; e.g. archive managers
2024-02-25 01:48:10 +00:00
Colin 86108518da modules/programs: sane-sandboxed: add a new "existingFile" option for the cli autodetect 2024-02-25 01:43:39 +00:00
Colin 0f1ad0f3c9 fs: auto-mount /mnt/<host>/home and enable "follow_symlinks" option 2024-02-24 16:04:04 +00:00
Colin bcd7a6f646 nixpkgs: 2024-02-22 -> 2024-02-24
```
• Updated input 'nixpkgs-next-unpatched':
    'github:nixos/nixpkgs/024149d718e25378f4decfeeb614b88208c2f700' (2024-02-22)
  → 'github:nixos/nixpkgs/a3e2b0de906a8fe0143c2783199abdc132dee56a' (2024-02-24)
• Updated input 'nixpkgs-unpatched':
    'github:nixos/nixpkgs/a7fa133a1e973c127e9c83e2c8e3407ae3797099' (2024-02-22)
  → 'github:nixos/nixpkgs/b66514c14e85cd7d853d6dbbf1a421ba232eff10' (2024-02-24)
```
2024-02-24 12:21:27 +00:00
Colin 92c2eb8383 nixpatches: update the icu cross fix 2024-02-24 12:14:29 +00:00
Colin 879d01ac2e modules/ssh: note that theres a better store to place the ssh host_keys in 2024-02-24 12:14:14 +00:00
Colin 0448df51e3 modules/programs: sane-sandboxed: add a --sane-sandbox-dry-run flag 2024-02-24 12:00:58 +00:00
Colin 8e3eed7d51 modules/programs: sane-sandboxed: factor out the actual execution of the sandbox/program into the toplevel
this will make it easier to intercept
2024-02-24 11:57:42 +00:00
Colin 88a70b41f1 modules/programs: handle more symlink forms when calculating a program's sandbox closure 2024-02-24 11:47:39 +00:00
Colin 6f59254a22 modules/programs: fix symlink following 2024-02-24 05:36:44 +00:00
Colin 4023960dc0 README: MANUAL MIGRATION: move "plaintext" store to /nix/persist/plaintext
to migrate the data:
```sh
$ sudo mkdir /nix/persist/plaintext
$ sudo mv /nix/persist/{etc,home,var} /nix/persist/plaintext
$ sudo ln -s plaintext/etc /nix/persist/etc  #< temporarily; if deploying over ssh
$ switch
$ reboot
$ sudo rm /nix/persist/etc  #< if you did the symlink earlier
```
2024-02-23 18:02:17 +00:00
Colin fff9f9d49a README: MANUAL MIGRATION: move "private" store to /nix/persist/private
to migrate the data, first unmount `~/private` (`sane-private-lock`), then:
```sh
$ sudo mv /nix/persist/home/colin/private /nix/persist
$ switch
$ reboot
```
2024-02-23 16:01:09 +00:00
Colin eecb98e2ee programs: bonsai: fix eval error 2024-02-23 16:00:32 +00:00
Colin 5838603953 programs: sane-private-unlock: unbreak
it still doesn't work inside a sandbox, because 'mount' requires suid
2024-02-23 15:59:56 +00:00
Colin c6ebcfe66e servo: port legacy /var/lib users over to "method = bind" persistence
i may wittle these down in the future
2024-02-23 15:49:54 +00:00
Colin d7402ae170 persist: stores: make naming more consistent 2024-02-23 14:57:20 +00:00
Colin bd7ca20361 desko: fs: remove dead code 2024-02-23 14:45:57 +00:00
Colin f5ef1e96ca lappy: fs: remove dead code 2024-02-23 14:44:49 +00:00
Colin 6267e7f966 tidy up small persist/private nitpicks 2024-02-23 14:44:38 +00:00
Colin 120a41b169 persistence: split /var/log persistence into dedicated "initrd" store 2024-02-23 14:42:47 +00:00
Colin aa0991bd6c persistence: cleanup so it all works well with symlink-based stores 2024-02-23 13:09:44 +00:00
Colin af2f97d61e fs: ensure-file: don't error if the file already exists 2024-02-23 11:29:14 +00:00
Colin 5b8f13d9cc fs: notice when a fs entry is set to two incompatible types (e.g. symlink + dir) and error 2024-02-23 11:24:32 +00:00
Colin 62b39bf01e firefox: integrate the "persist" config into "sane.programs" 2024-02-23 11:23:41 +00:00
Colin 0d8307e877 programs: gnome-keyring: sandbox
and now secrets are readable again. they were broken for the last ~10 commits :)
2024-02-23 09:49:35 +00:00
Colin 9b1a2ae9bb programs: mpv: remove useless "extraRuntimePaths = []" override 2024-02-23 09:32:19 +00:00
Colin b8b805765b programs: gnome-keyring-daemon: remove the SUID wrapper
it's not actually mandated. just, when enabled, gkd will `mlock` its
secrets into memory. but i don't use swap anyway. plus, i'll enable that
momentarily anyway (though systemd will probably not understand the
capablity)
2024-02-23 09:28:41 +00:00
Colin 84eae20765 gnome-keyring: don't integrate with PAM
PAM integration is only required if the keyring is encrypted on-disk
2024-02-23 09:15:30 +00:00
Colin 4a10c5f729 gnome-keyring: start as systemd service explicitly, not as implicit dbus service 2024-02-23 09:09:54 +00:00
Colin c2696c1cd9 gnome-keyring: use sane.fs abstractions to write out the keyrings 2024-02-23 08:57:41 +00:00
Colin c23e4dc9c7 servo: note why i use file.text instead of symlink.text here 2024-02-23 08:14:27 +00:00
Colin ea6f45555c gnome-keyring: simplify the scripts (untested) 2024-02-23 08:14:09 +00:00
Colin 687db545b4 gnome-keyring: move persistence and init script to sane.programs 2024-02-23 07:22:07 +00:00
Colin 24d1d13d0a programs: simplify sandboxing of file browsers/etc now that private data lives on a different mount 2024-02-23 07:06:29 +00:00
Colin 2ada436634 home: remove ~/private symlink; move to .persist/private and add related aliases 2024-02-23 07:06:29 +00:00
Colin e5ad0862fb refactor: move ~/ fs definitions into hosts/common/home, not users/ 2024-02-23 07:06:29 +00:00
Colin 057b9e3fed replace links/references to ~/private/FOO with just ~/FOO 2024-02-23 07:06:29 +00:00
Colin 1bcfccf7e3 refactor: persist ~/knowledge formally instead of relying on the symlink 2024-02-23 07:06:29 +00:00
Colin 170eeeacc4 programs: dereference not just the leaf, but any part of the path, when determining a program's sandbox closure 2024-02-23 07:06:29 +00:00
Colin a402822084 move "private" store to /mnt/persist/private instead of ~/private
this will allow me to add all of ~ to a sandbox without giving all of ~/private
2024-02-23 07:06:29 +00:00
Colin 80ecdcc4f9 persist: plaintext: consider "/mnt/persist/plaintext" as the logical root, and abstract away "/nix/persist" 2024-02-23 07:06:29 +00:00
Colin 0864790bb7 docs: modules/persist: document the "origin" store parameter 2024-02-23 07:06:29 +00:00
Colin 478747a96e modules/persist: change default mounting method to symlink
this changes the plaintext and cryptClearOnBoot stores: private was already symlink-based.
this isn't strictly necessary: the rationale is:
1. `mount` syscall *requires* CAP_SYS_ADMIN (i.e. superuser/suid).
   that's causing problems with sandboxing, particularly ~/private.
   that doesn't affect other stores *yet*, but it may in the future.
2. visibility. i.e. it makes *clear* where anything is persisted.
   if `realpath` doesn't evaluate to `/nix/persist`, then it's not
   persisted.
2024-02-23 07:06:29 +00:00
Colin 771dc2e1ce fs: allow common /mnt points to be mounted by me without sudo 2024-02-23 07:06:29 +00:00
Colin 4a316d4b91 bonsai: lift out of sxmo 2024-02-23 07:06:29 +00:00
Colin 0ff8154e96 icu: fix cross compilation 2024-02-23 07:04:39 +00:00
Colin af03b3f6e8 xwayland: sandbox 2024-02-23 01:05:24 +00:00
Colin 5819f07181 programs: xwayland: sandbox 2024-02-22 22:12:03 +00:00
Colin 122f3fa5cc sway: remove xwayland-specific placement of Signal
it breaks non-xwayland sway config parsing, and Signal is native Wayland now anyway even with Xwayland running'
2024-02-22 22:01:48 +00:00
Colin ece612ea70 nixpkgs: 2024-02-21 -> 2024-02-22
```
• Updated input 'nixpkgs-next-unpatched':
    'github:nixos/nixpkgs/97c19bdc7ecbe44755084a52acf38e17bdf2bc71' (2024-02-21)
  → 'github:nixos/nixpkgs/024149d718e25378f4decfeeb614b88208c2f700' (2024-02-22)
• Updated input 'nixpkgs-unpatched':
    'github:nixos/nixpkgs/0e74ca98a74bc7270d28838369593635a5db3260' (2024-02-21)
  → 'github:nixos/nixpkgs/a7fa133a1e973c127e9c83e2c8e3407ae3797099' (2024-02-22)
• Updated input 'sops-nix':
    'github:Mic92/sops-nix/acfcce2a36da17ebb724d2e100d47881880c2e48' (2024-02-20)
  → 'github:Mic92/sops-nix/f6b80ab6cd25e57f297fe466ad689d8a77057c11' (2024-02-21)
```
2024-02-22 07:07:29 +00:00
Colin f27f994090 systemd: fix the timeout for the user service manager 2024-02-22 00:24:05 +00:00
Colin 473999c001 sway: re-enable networkmanager 2024-02-21 23:46:25 +00:00
Colin d1de9efde1 sway: port xwayland use to sane.programs API 2024-02-21 23:32:10 +00:00
Colin 50c3f04714 pipewire: remove dead alsa comments 2024-02-21 23:26:40 +00:00
Colin 49bad8f186 sway: split pipewire persisted file into pipewire.nix 2024-02-21 23:26:25 +00:00
Colin fd9f500e97 sway: split pipewire config into separate sane.programs.pipewire 2024-02-21 23:23:52 +00:00
Colin 386651044e sway: port to sane.programs API 2024-02-21 23:18:57 +00:00
Colin 55a6c828f2 sway: lift portal/menu reset into polyunfill.nix 2024-02-21 22:09:53 +00:00
Colin 7ecebd7521 sway: treat fontconfig as an ordinary sane.programs 2024-02-21 22:08:45 +00:00
Colin 7b299176e3 sway: simplify the wrapper 2024-02-21 22:06:10 +00:00
Colin 4da9cb5ac8 sway: simplify the wrapper... slightly 2024-02-21 21:42:48 +00:00
Colin f068da709f sway: compile with xwayland only if we plan to use it at runtime
else it's just extra weight
2024-02-21 21:05:41 +00:00
Colin 5b21257e4f gui: sway: remove `useGreeter` option (provide a greeter always, via suggestedPrograms) 2024-02-21 20:59:34 +00:00
Colin d77a12ce7b unl0kr: remove the "afterLogin" option and choose automatically which desktop to launch 2024-02-21 20:47:48 +00:00
Colin 153d2a1047 GSK_RENDERER: don't set globally, but just for the apps which _actually_ require it
this way i can avoid conflicts around apps which don't expect this to be set (e.g. delfin)
2024-02-21 16:56:56 +00:00
Colin 2a528a5d8e sane-sandboxed: leave a note about future mount work 2024-02-21 16:08:42 +00:00
Colin b8f090be93 programs: delfin: add required mpris permissions 2024-02-21 13:27:19 +00:00
Colin b16902bec1 delfin: downgrade 0.4.1 -> 0.4.0
0.4.1 doesn't cross compile because of rust requirement. 0.4.0 does
2024-02-21 13:26:54 +00:00
Colin c919372324 delfin: add option to build in debug mode, and with debug patches 2024-02-21 12:09:48 +00:00
Colin 60371585e4 delfin: 0.4.0 -> 0.4.1 2024-02-21 09:04:49 +00:00
Colin 20cb850fb5 nixpkgs: 2024-02-18 -> 2024-02-21
```
• Updated input 'nixpkgs-next-unpatched':
    'github:nixos/nixpkgs/d076cde70cbceca9315a11bdc609ddfcec9dfbca' (2024-02-18)
  → 'github:nixos/nixpkgs/97c19bdc7ecbe44755084a52acf38e17bdf2bc71' (2024-02-21)
• Updated input 'nixpkgs-unpatched':
    'github:nixos/nixpkgs/9511a7b219df1f8d8f5c2a58c4870fde169fe397' (2024-02-18)
  → 'github:nixos/nixpkgs/0e74ca98a74bc7270d28838369593635a5db3260' (2024-02-21)
• Updated input 'sops-nix':
    'github:Mic92/sops-nix/ffed177a9d2c685901781c3c6c9024ae0ffc252b' (2024-02-18)
  → 'github:Mic92/sops-nix/acfcce2a36da17ebb724d2e100d47881880c2e48' (2024-02-20)
```
2024-02-21 00:35:14 +00:00
Colin c6470918de types.string -> types.str 2024-02-21 00:25:44 +00:00
Colin c0f374bd80 programs: sane-secrets-dump: don't leak secrets onto proc/cmdline 2024-02-21 00:24:31 +00:00
Colin 5a0760a571 programs: sandbox oathtools 2024-02-21 00:03:48 +00:00
Colin 757ab79724 programs: dconf: sandbox 2024-02-20 23:43:25 +00:00
Colin 81148b7b42 programs: explicitly depend on dconf instead of manually persisting dconf's dirs 2024-02-20 23:39:27 +00:00
Colin 429d0c53e7 programs: ripgrep: sandbox with bwrap instead of landlock
this provides network isolation
2024-02-20 23:32:54 +00:00
Colin 6cf1bc5a28 programs: grep: sandbox 2024-02-20 23:32:28 +00:00
Colin 768b340c93 findutils: sandbox
use bwrap instead of landlock for the dumb preference that i can disable
net
2024-02-20 23:31:58 +00:00
Colin d9901aa161 programs: sane-secrets-*: sandbox 2024-02-20 23:31:39 +00:00
Colin be2098c18a programs: sane-vpn: sandbox 2024-02-20 23:05:24 +00:00
Colin ee7d99289a sane-vpn: allow shorthands like "sane-vpn up us" instead of full ovpnd-us 2024-02-20 23:01:53 +00:00
Colin bb569b1668 sane-vpn: port away from systemd so that i can use it as an ordinary user (no sudo) 2024-02-20 22:21:02 +00:00
Colin 34524ea3e4 modules/vpn: fix the vpn-* systemd services 2024-02-20 20:40:46 +00:00
Colin 71025329e7 programs: sane-dev-cargo-loop: sandbox 2024-02-20 19:26:38 +00:00
Colin ca4d1e3b9d programs: sane-tag-music: sandbox 2024-02-20 19:26:18 +00:00
Colin 284b698015 sane-reclaim-boot-space: fix, and sandbox
well i didn't get to test this thoroughly: might still have problems
2024-02-20 19:16:36 +00:00
Colin bc50daf685 nix.settings: port to structured attrs 2024-02-20 18:35:03 +00:00
Colin 47dcfb9cba fix `nix.settings.nix-path` to actually take effect
now i can `nix-shell` again! nix-path takes precedence over `NIX_PATH`
env var.
2024-02-20 17:54:25 +00:00
Colin 2bd99f6e51 remove no-longer-needed nix trusted-users setting
well, it *seems* to work, at least!
2024-02-20 13:43:41 +00:00
Colin 8beac8df2f programs: sandbox sane-shutdown, sane-reboot 2024-02-20 13:43:05 +00:00
Colin 58db553c84 programs: unl0kr: sandbox 2024-02-20 13:29:56 +00:00
Colin 2ea3776d84 programs: sane-sync-from-servo: remove
this was obsoleted by the top-level flake `sync` scripts
2024-02-20 13:16:21 +00:00
Colin d596d005ca systemd: configure a 25s stop timeout for the user manager too (hopefully) 2024-02-20 13:11:47 +00:00
Colin e92db138ef systemd: allow ordinary users to invoke shutdown/reboot 2024-02-20 12:25:04 +00:00
Colin 5fed127c23 refactor: split systemd config into own file 2024-02-20 12:18:28 +00:00
Colin db49f0461c refactor: move nix stuff out of common/default.nix -> common/nix/default.nix 2024-02-20 12:16:00 +00:00
Colin 73bb7827c0 refactor: nix-path/ -> nix/ 2024-02-20 12:13:52 +00:00
Colin a624571b22 move glib program recommendation into programs/assorted.nix 2024-02-20 12:11:26 +00:00
Colin 53cbe5c8da dconf: split into own `sane.programs` definition 2024-02-20 12:09:52 +00:00
Colin 46de7b7e0d move environment.defaultPackages clearing into polyunfill.nix 2024-02-20 11:54:39 +00:00
Colin d7be5da483 warnings.nix: port to a proper module 2024-02-20 11:19:12 +00:00
Colin 902e351085 hack: silence the warning about using hashedPasswordFile *and* initialPassword
see: <https://github.com/NixOS/nixpkgs/pull/287506>

i'll factor this into something more general, later
2024-02-20 11:11:07 +00:00
Colin 9e8e1d82a6 flake: add a deploy.self-light target 2024-02-20 10:24:33 +00:00
Colin a05184f956 programs: neovim: fix nvim-treesitter typo 2024-02-20 10:23:52 +00:00
Colin 36ad2d5421 programs: unl0kr: auto-derive the user option 2024-02-20 07:21:22 +00:00
Colin b0f62830a5 unl0kr: port to `sane.programs` 2024-02-20 07:14:30 +00:00
Colin f970679266 sxmo: remove symlinks for legacy sxmo_hook_{poweroff,reboot}.sh 2024-02-20 06:49:42 +00:00
Colin c7f4661c1c programs: htop: persist config 2024-02-20 05:38:45 +00:00
Colin e8306831c5 programs: qemu: mark as slowToBuild 2024-02-20 05:34:47 +00:00
Colin 41b1a013d7 programs: sane-sudo-redirect: disable sandbox 2024-02-19 17:09:27 +00:00
Colin f785ccd351 programs: sane-reclaim-disk-space: sandbox 2024-02-19 17:06:22 +00:00
Colin 48744dcaaa programs: sane-ip-reconnect: remove (unused) 2024-02-19 17:05:27 +00:00
Colin 9373864b60 programs: sane-git-init: remove (unused) 2024-02-19 16:53:59 +00:00
Colin c16c9dfe0b programs: sandbox a bunch of sane scripts 2024-02-19 16:51:53 +00:00
Colin 292a411fb3 linux-megous: 6.7.2 (20240127-1717) -> 6.7.4 (20240211-1928) 2024-02-19 16:37:11 +00:00
Colin 2d17826731 programs: eza: sandbox with bwrap instead of landlock 2024-02-19 15:32:40 +00:00
Colin 34dedcff57 modules/programs: sane-sandboxed: fix normPath handling of paths containing special characters like [ 2024-02-19 15:32:23 +00:00
Colin de297f22be programs: split sane-scripts out of assorted.nix 2024-02-19 14:19:10 +00:00
Colin 4b47b76461 programs: sfeed: sandbox 2024-02-19 14:14:59 +00:00
Colin 3effd59c9b xdg-desktop-portal-{gtk,wlr}: start via service manager, with ordered deps, instead of letting dbus activate it for us
that gets more reliable environment importing, etc
2024-02-19 13:44:23 +00:00
Colin a3d0691d99 trivial-builders: add rmDbusServicesInPlace for when the symlink method isnt applicable 2024-02-19 13:43:22 +00:00
Colin 44647e0d36 programs: forkstat: sandbox 2024-02-19 13:15:15 +00:00
Colin da1053d635 programs: configure auto-launching programs to only start *after* graphical-session.target
this ensures they really have their environment
2024-02-19 12:58:08 +00:00
Colin 273b1b84e3 systemd: reduce the stop job timeout 2024-02-19 12:58:08 +00:00
Colin 0b6b98bba6 sway: add a safeguard to catch if the systemd environ race condition is re-introduced 2024-02-19 12:58:08 +00:00
Colin 8886177c23 xdg-desktop-portal: fix it to find all the portal configs again
maybe i broke this when i simplified XDG_CONFIG_DIRS? not sure
2024-02-19 12:58:08 +00:00
Colin 7e343bfc05 sway: fix race condition around dbus/systemd environment importing 2024-02-19 10:52:51 +00:00
Colin f72bdb6f3a activationScripts: notify on deploy: fix to work with new SWAYSOCK name 2024-02-19 08:21:23 +00:00
Colin 5666a05ef0 strip out a bunch of unused nixpkgs defaults 2024-02-19 06:20:13 +00:00
Colin 05daf738fc nixpkgs: 2024-02-17 -> 2024-02-18
```
• Updated input 'nixpkgs-next-unpatched':
    'github:nixos/nixpkgs/6caa6affcc4774c81467ed08fa3ec35da40fd1d9' (2024-02-17)
  → 'github:nixos/nixpkgs/d076cde70cbceca9315a11bdc609ddfcec9dfbca' (2024-02-18)
• Updated input 'nixpkgs-unpatched':
    'github:nixos/nixpkgs/28d6a724f54085377102db7c3278ba82a0a5255f' (2024-02-17)
  → 'github:nixos/nixpkgs/9511a7b219df1f8d8f5c2a58c4870fde169fe397' (2024-02-18)
• Updated input 'sops-nix':
    'github:Mic92/sops-nix/48afd3264ec52bee85231a7122612e2c5202fa74' (2024-02-13)
  → 'github:Mic92/sops-nix/ffed177a9d2c685901781c3c6c9024ae0ffc252b' (2024-02-18)
• Updated input 'sops-nix/nixpkgs-stable':
    'github:NixOS/nixpkgs/d8cd80616c8800feec0cab64331d7c3d5a1a6d98' (2024-02-10)
  → 'github:NixOS/nixpkgs/69405156cffbdf2be50153f13cbdf9a0bea38e49' (2024-02-17)
```
2024-02-18 19:05:04 +00:00
Colin 35b4cc779f megapixels: switch to bwrap, to support Loupe image viewer 2024-02-18 18:46:37 +00:00
Colin c7d111a318 megapixels: 1.7.0 -> 1.8.0 2024-02-18 18:27:47 +00:00
Colin 7e5eb6324d megapixels: sandbox
it's iffy... 1.8.0 is released, which can be sandboxed w/o sys/dev/char or ~/.local/share/applications, but seems to be even flakier
2024-02-18 17:44:49 +00:00
Colin 95cb5624ca modules/programs: sane-sandboxed: fix but that --sane-sandbox-path / wasnt being canonicalized 2024-02-18 13:53:53 +00:00
Colin 55c305812d WIP: megapixels: sandbox 2024-02-18 13:53:18 +00:00
Colin 600f6eb56c modules/programs: sane-sandboxed: remove all remaining forks/subshells
launchtime for firefox in bwrap is about 65ms; 35ms for --sane-sandbox-method none
2024-02-18 13:15:04 +00:00
Colin fd6f8493a7 modules/programs: sane-sandboxed: remove all forking from normPath
reduces time for librewolf benchmark from 90ms -> 65ms. there's still _some_ forking in this script, but it's constant now.
2024-02-18 12:25:03 +00:00
Colin f10f1ee7b1 modules/programs: sane-sandboxed: optimize "normPath" to not invoke subshells
each subshell causes like 5ms just on my laptop, which really adds up.
this implementation still forks internally, but doesn't exec.
runtime decreases from 150ms -> 90ms for
`time librewolf --sane-sandbox-replace-cli true`
2024-02-18 12:08:23 +00:00
Colin 67395bdcd3 programs: ship forkstat 2024-02-18 11:58:30 +00:00
Colin 90ceeede74 programs: flare-signal: disable (unused) 2024-02-18 07:07:29 +00:00
Colin 32a704b1b8 moby: disable unused "calls" program
i may have future use for it, but as-is currently it's not worth the difficulty of sandboxing
2024-02-18 07:07:29 +00:00
Colin a591be98d4 programs: portfolio-filemanager: sandbox 2024-02-18 07:07:29 +00:00
Colin 82e028e37d programs: nautilus: assign a mime priority 2024-02-18 07:07:29 +00:00
Colin a531676d0d mime: include an error message when two file associations have identical mime priority 2024-02-18 07:07:29 +00:00
Colin 7f7543ee78 programs: planify: sandbox 2024-02-18 07:07:29 +00:00
Colin 8d0e3e0db3 programs: notejot: sandbox 2024-02-18 07:07:29 +00:00
Colin bf352d184c programs: tangram: sandbox 2024-02-18 07:07:29 +00:00
Colin 81a6600f54 programs: xarchiver: sandbox 2024-02-18 07:07:29 +00:00
Colin 9fde167e71 firefox-extensions.open-in-mpv: build from source
this ensures that the extension and the native component stay in sync
2024-02-18 06:14:49 +00:00
Colin 4e180e11df open-in-mpv: update the non-browser component to 2.2.0
i _suppose_ i should keep these in sync... hmm
2024-02-18 06:02:00 +00:00
Colin 902166e45a sxmo-utils: 2024-01-01 -> 2024-02-05 2024-02-18 04:57:20 +00:00
Colin 797bc4e188 delfin: 0.3.0 -> 0.4.0
i can't upstream this until i figure out why both versions fail to open media for me (portal stuff?)
2024-02-18 04:54:35 +00:00
Colin 536f0aedc3 open-in-mpv: remove my patch which has been upstreamed, previously required to use xdg-open 2024-02-18 04:52:27 +00:00
Colin b855df902f firefox-extensions: metamask,open-in-mpv,sponsorblock,ublacklist: update to latest 2024-02-18 04:50:03 +00:00
Colin 80ce49c579 firefox-extensions.bypass-paywalls-clean: 3.5.3.0 -> 3.5.5.0 2024-02-18 04:49:18 +00:00
Colin 408059420d snippets: prefer the repology link which specifically shows my outdated packages 2024-02-18 04:15:05 +00:00
Colin a3102c9395 pkgs overlay: prefer my own packages, if theyre newer than whats in nixpkgs
this gives me an easier way to test updates for the packages i maintain than a workflow based on patching nixpkgs
2024-02-18 04:07:23 +00:00
Colin 6760fcf1f4 snippets: remove home-manager; add repology 2024-02-18 03:43:32 +00:00
Colin a90898491e flake: fix "preDeploy" action mishandling null 2024-02-18 01:24:05 +00:00
Colin 059940d8e7 nixpkgs: 2024-02-16 -> 2024-02-17
```
• Updated input 'nixpkgs-next-unpatched':
    'github:nixos/nixpkgs/0ec5bef772dc12003df7a55f7be1f7b8809f8b48' (2024-02-16)
  → 'github:nixos/nixpkgs/6caa6affcc4774c81467ed08fa3ec35da40fd1d9' (2024-02-17)
• Updated input 'nixpkgs-unpatched':
    'github:nixos/nixpkgs/1225df86908f6f5b23553e9d77da4df4bfdd58ef' (2024-02-16)
  → 'github:nixos/nixpkgs/28d6a724f54085377102db7c3278ba82a0a5255f' (2024-02-17)
```
2024-02-17 17:18:38 +00:00
Colin 98aafead94 programs: wob: add missing "coreutils" dep
it *should* be acquired via user's PATH, but wob-pulse can start before sway imports PATH to systemd
2024-02-17 16:38:22 +00:00
Colin cef2591425 modules/programs: sane-sandboxed: capshonly/landlock: don't request capabilities we know won't be granted 2024-02-17 16:30:18 +00:00
Colin f8663cd827 programs: monero-gui: sandbox 2024-02-17 16:06:58 +00:00
Colin af1ee1734d programs: wireguard-tools: sandbox 2024-02-17 15:54:16 +00:00
Colin 5375cab716 programs: ntfy-sh: sandbox 2024-02-17 15:47:47 +00:00
Colin 162b3f5674 imagemagick: don't add 'ghostscript' package to path 2024-02-17 15:45:50 +00:00
Colin a729f91d21 programs: jq: add working sandbox criteria, but don't enable yet
i need to handle the extremely common `cat foo | jq .` without adding
`.` to the sandbox
2024-02-17 15:36:41 +00:00
Colin a273b559e2 programs: gnome-disk-utility: sandbox 2024-02-17 15:36:28 +00:00
Colin 785b375671 programs: smartmontools (smartctl): sandbox 2024-02-17 15:36:13 +00:00
Colin 24cba0c856 programs: xq: remove 2024-02-17 15:30:23 +00:00
Colin df1db5d01c programs: sox: sandbox 2024-02-17 15:27:22 +00:00
Colin 6749b64bca programs: nautilus: add mounted media to the sandbox 2024-02-17 15:26:49 +00:00
Colin d3e4bdfcd5 programs: gdisk: fix sandboxing 2024-02-17 15:26:16 +00:00
Colin 799cd4373f programs: socat: disable 2024-02-17 15:11:12 +00:00
Colin 2efa6d1e27 programs: mepo: sandbox 2024-02-17 15:08:21 +00:00
Colin a1470956a5 programs: gdisk: sandbox 2024-02-17 14:57:33 +00:00
Colin 556c20bc04 programs: vulkan-tools: sandbox 2024-02-17 14:53:22 +00:00
Colin cf5f58dda6 programs: nmap: sandbox 2024-02-17 14:51:26 +00:00
Colin fd30f7abbc dev-machines: disable broken ldd-aarch64 program 2024-02-17 14:47:28 +00:00
Colin 6f8c299c69 programs: xdg-desktop-portal: log more 2024-02-17 14:40:56 +00:00
Colin bbf7aac062 programs: gnome-frog: sandbox 2024-02-17 14:40:42 +00:00
Colin 7d1fd2f30a programs: nvme-cli: sandbox 2024-02-17 14:40:29 +00:00
Colin 472987f164 programs: gimp: fix sandboxing failure 2024-02-17 13:43:35 +00:00
Colin 784c2145f3 programs: iputils: sandbox 2024-02-17 03:33:05 +00:00
Colin 4ced02b0b2 modules/programs: make-sandboxed: fix incorrect "priority" attribute 2024-02-17 03:32:49 +00:00
Colin 0000afb315 programs: make `nixosBuiltins` package set more precise 2024-02-17 03:08:14 +00:00
Colin 31fa21bd20 programs: host/iproute2/iw/nettools/wirelesstools: sandbox 2024-02-17 03:05:58 +00:00
Colin 9510817604 programs: document nixosBuiltins programs 2024-02-17 02:40:28 +00:00
Colin 4a84de3ee4 programs: inetutils/iptables: sandbox 2024-02-17 02:32:57 +00:00
Colin ab42a4cc5a programs: qemu: disable sandbox 2024-02-17 01:43:58 +00:00
Colin f6537b083a programs: discord: add dbus to sandbox 2024-02-17 01:42:22 +00:00
Colin 5ff1d014b8 servo: transmission: fix user agent 2024-02-17 01:35:40 +00:00
Colin fa41e6c402 nixpkgs: 2024-02-14 -> 2024-02-16; uninsane-dot-org -> 2024-02-15
```
• Updated input 'nixpkgs-next-unpatched':
    'github:nixos/nixpkgs/52e165035c897a7b41ff26bc235f8d841e9d3850' (2024-02-14)
  → 'github:nixos/nixpkgs/0ec5bef772dc12003df7a55f7be1f7b8809f8b48' (2024-02-16)
• Updated input 'nixpkgs-unpatched':
    'github:nixos/nixpkgs/c0a130d16b170f4820c3d2ed294a7aaabf451bfd' (2024-02-14)
  → 'github:nixos/nixpkgs/1225df86908f6f5b23553e9d77da4df4bfdd58ef' (2024-02-16)
• Updated input 'uninsane-dot-org':
    'git+https://git.uninsane.org/colin/uninsane?ref=refs/heads/master&rev=4a1fa488e64e6c87c6c951e3fafb2684692f64d3' (2024-01-01)
  → 'git+https://git.uninsane.org/colin/uninsane?ref=refs/heads/master&rev=bb10cd8853d05191e4d62947d93687c462e92c30' (2024-02-15)
```
2024-02-16 15:34:19 +00:00
Colin 1b4306e649 programs: switch bridge-utils, btrfs-progs from landlock -> bwrap
landlock can't isolate net yet, so bwrap gives better sandboxing
2024-02-16 15:32:41 +00:00
Colin af8a8358bd programs: hdparm: sandbox 2024-02-16 15:32:41 +00:00
Colin 464c6c56c5 programs: btrfs-progs: sandbox 2024-02-16 15:32:41 +00:00
Colin 8e314e8b73 programs: bridge-utils: sandbox 2024-02-16 15:32:41 +00:00
Colin 198029f95f programs: netcat: sandbox 2024-02-16 15:32:41 +00:00
Colin 1d646459ab programs: pulsemixer: sandbox 2024-02-16 15:32:41 +00:00
Colin 8f3bab3636 programs: sort 2024-02-16 15:32:41 +00:00
Colin a909a93c29 programs: strings: fix sandboxing 2024-02-16 15:32:41 +00:00
Colin 6aaa724abf programs: strings: sandbox 2024-02-16 14:57:25 +00:00
Colin a1c721d5b4 programs: binutils-unwrapped -> strings: distribute just the binary i care about 2024-02-16 14:57:25 +00:00
Colin 4002a57e03 servo: transmission: advertise as 3.00 to deal with old trackers 2024-02-16 12:58:08 +00:00
Colin 74a0b0d125 gitea: serve phone-case-cq/ build files as proper html/js content type 2024-02-16 12:07:28 +00:00
Colin cd3b4dde7b programs: nix-index: sandbox 2024-02-16 11:39:05 +00:00
Colin a9d384688a programs: alsaUtils: sandbox 2024-02-16 11:28:43 +00:00
Colin fffd6f4204 programs: pciutils: sandbox 2024-02-16 11:12:47 +00:00
Colin 324485d105 programs: networkmanagerapplet: sandbox 2024-02-16 11:07:24 +00:00
Colin 7cb8b144b2 programs: sandbox fatresize 2024-02-16 10:45:56 +00:00
Colin c2bb97e7e6 programs: ethtool: sandbox 2024-02-16 10:38:39 +00:00
Colin 3cbdc03369 programs: zeal: disable sandboxing 2024-02-16 10:32:49 +00:00
Colin 5c7fa591a0 programs: sandbox: dtrx/e2fsprogs/efibootmgr/electrum 2024-02-16 10:32:18 +00:00
Colin 18c54e8b04 programs: sandbox cryptsetup and ddrescue (latter is untested, probably lacking!) 2024-02-16 10:05:24 +00:00
Colin 1416856fb6 programs: blueberry: sandbox 2024-02-16 07:58:00 +00:00
Colin 2a5bc6f612 programs: util-linux: disable sandbox 2024-02-16 07:37:59 +00:00
Colin c56a6a8c24 programs: disable libcap_ng since it cant sandbox 2024-02-16 07:32:34 +00:00
Colin f5a4bdedaf programs: libcap_ng (netcap): disable sandbox 2024-02-16 07:32:05 +00:00
Colin 114a45f347 programs: pstree: sandbox 2024-02-16 06:57:45 +00:00
Colin d53344d527 programs: killall: sandbox 2024-02-16 06:57:32 +00:00
Colin 561447de70 programs: shattered-pixel-dungeon: sandbox 2024-02-16 06:57:03 +00:00
Colin b6f918c32f TODO.md: update sandboxing tasks 2024-02-16 06:18:11 +00:00
Colin 9cc12fab5d programs: gpodder: fix to work in sandbox (add dbus) 2024-02-16 06:07:46 +00:00
Colin 5cda3b2805 programs: firefox/fractal: document portal filechooser limitations 2024-02-16 05:49:56 +00:00
Colin 4afd56ff4c programs: powertop: fix capabilities typo in sandbox definition 2024-02-16 05:49:13 +00:00
Colin 029ba43bd6 modules/programs: sane-sandboxed: invoke "capsh" with the --no-new-privs argument 2024-02-16 05:48:50 +00:00
Colin 00e4078300 programs: disable lemoa. it's broken and development doesn't seem to be progressing 2024-02-16 05:34:24 +00:00
Colin 94b4f78e39 programs: lemoa: sandbox 2024-02-16 05:32:22 +00:00
Colin 3fd89ec91b programs: sandbox powertop 2024-02-16 05:28:17 +00:00
Colin 4085828575 programs: sandbox parted 2024-02-16 05:28:07 +00:00
Colin 1a972927b6 programs: sandbox nethogs, nmon, nixpkgs-review 2024-02-16 05:27:50 +00:00
Colin 5f3ec42f57 programs: sandbox lsof with capsh only
can't get it to sandbox any more aggressively with either landlock or
bwrap
2024-02-16 04:55:18 +00:00
Colin 28aaeb051f programs: disable sandboxing for strace and screen 2024-02-16 04:51:52 +00:00
Colin 9d252d095e programs: htop/iotop/iftop: sandbox 2024-02-16 04:51:18 +00:00
Colin 4e5e4219ec programs: usbutils: sandbox 2024-02-16 04:03:47 +00:00
Colin 824dd7c1f5 programs: endless-sky: sandbox with bwrap 2024-02-16 04:00:27 +00:00
Colin b840a0d61c programs: space-cadet-pinball: sandbox w/ bwrap 2024-02-16 03:58:09 +00:00
Colin 36bcecfd68 programs: sort 2024-02-16 03:53:53 +00:00
Colin c3a5fb9394 programs: wdisplays: sandbox with bwrap 2024-02-16 03:53:27 +00:00
Colin 30507c3564 programs: soundconverter: sandbox with bwrap 2024-02-16 03:51:23 +00:00
Colin 2b66ffc58a programs: feedbackd: sandbox w/ bwrap 2024-02-16 03:49:59 +00:00
Colin 48d96c1f36 programs: hase: sandbox with bwrap
couldn't test the net feature, because hase servers have since gone
offline :((
2024-02-16 03:48:59 +00:00
Colin cdf61755a3 programs: splatmoji: document the sandboxing approach 2024-02-16 03:46:48 +00:00
Colin dd1dc69530 packages: remove unused kid3 2024-02-16 03:39:45 +00:00
Colin 481f54ea2f packages: disable unused packages: makemkv, mumble, openscad 2024-02-16 03:20:17 +00:00
Colin 511752fab5 programs: xdg-desktop-portal{-gtk,-wlr}: enable sandbox 2024-02-16 03:17:19 +00:00
Colin 40ed7cff1b programs: git: fix failing sandbox build 2024-02-16 03:16:46 +00:00
Colin 5e7f914354 programs: superTux: fix failing sandbox build 2024-02-16 03:16:28 +00:00
Colin 8c9c6ec979 modules/programs: make-sandboxed: support /libexec binaries 2024-02-16 03:15:45 +00:00
Colin 0dec8b6d5b programs: fontconfig: sandbox 2024-02-15 18:26:45 +00:00
Colin 7eaffc9fa0 programs: w3m: enable sandbox 2024-02-15 18:25:48 +00:00
Colin b7c1a6331d programs: mate.engrampa: enable sandbox 2024-02-15 18:24:27 +00:00
Colin d6868d58e6 xdg-desktop-portal: disable sandbox 2024-02-15 18:23:40 +00:00
Colin 1edb1fc8b6 modules/programs: sane-sandboxed: avoid adding the sandbox implementation to $PATH 2024-02-15 17:58:22 +00:00
Colin 52d768a162 programs: xterm: mark as not needing a sandbox 2024-02-15 17:26:55 +00:00
Colin 7a685d8de9 programs: inkscape: sandbox with bwrap 2024-02-15 17:26:37 +00:00
Colin 838c6d7dc8 programs: swaync: sandbox 2024-02-15 16:38:38 +00:00
Colin 8d20dcadd1 modules/programs: sane-sandboxed: add --sane-sandbox-keep-pidspace flag 2024-02-15 15:05:28 +00:00
Colin 9d706df5b5 programs: waybar: narrow the /run/user paths to just sway-ipc.sock 2024-02-15 14:40:01 +00:00
Colin 06f1f1e9ea sway: give SWAYSOCK a consistent name 2024-02-15 14:38:54 +00:00
Colin 2fbbe7fd78 sway: remove unused "sane.gui.sway.package" option 2024-02-15 14:38:10 +00:00
Colin 24d23f7903 programs: bemenu: fix sandboxing 2024-02-15 14:33:20 +00:00
Colin 0394aa65e9 sway: simplify config 2024-02-15 14:25:45 +00:00
Colin 5090c4e88c sway: define without using nixos "programs.sway"
motivation was to leverage 'sane.programs.sway.env' to statically configure SWAYSOCK. i think that's still the right way: we'll see
2024-02-15 14:25:27 +00:00
Colin 081114da65 programs: waybar: sandbox in a way that works well for moby too 2024-02-15 13:16:18 +00:00
Colin c943442c94 modules/programs: sane-sandboxed: add --sane-sandbox-method none for benchmarking 2024-02-15 13:13:39 +00:00
Colin 02b7586ffa programs: komikku: add dbus to the sandbox to fix it 2024-02-15 11:58:08 +00:00
Colin 02dd629616 modules/programs: sane-sandboxed: rework so portal env vars arent set when sandbox is disabled
and by setting them only at launch time we aid introspectability/debugging
2024-02-15 11:57:36 +00:00
Colin 25dcb7f89a programs: open-in-mpv: document that upstream merged my PR 2024-02-15 11:38:37 +00:00
Colin 88f1d63b6e firefox: properly integrate xdg-desktop-portal for opening media 2024-02-15 11:36:50 +00:00
Colin d36e269edd programs: loupe: remove the dbus services to make it work with Firefox 2024-02-15 11:36:24 +00:00
Colin 40af8b95fd pkgs.rmDbusServices: also remove dbus properties from .desktop files 2024-02-15 11:35:52 +00:00
Colin 582a003739 programs: waybar: fix battery indicator within sandbox 2024-02-15 10:35:24 +00:00
Colin df60be8c61 open-in-mpv: sandbox with bwrap 2024-02-15 09:49:03 +00:00
Colin e8b4c36442 programs: nautilus: specify inode/directory mime association 2024-02-15 09:48:26 +00:00
Colin 2f699737f5 firefox: fix open-in-mpv integration
two parts: add open-in-mpv's config to firefox's sandbox; patch open-in-mpv to forward to xdg-open
2024-02-15 09:14:57 +00:00
Colin 4a3d24be3f waybar: migrate all config to "sane.programs" 2024-02-15 07:18:12 +00:00
Colin 10feb319fe sway: lift waybar to own file and sandbox it 2024-02-15 02:33:40 +00:00
Colin fde1e5d872 README: add a graphic 2024-02-15 01:01:31 +00:00
Colin b2fcf6fdfd programs: messengers (fractal, signal, dino, tuba): add media libraries to the sandbox 2024-02-15 00:49:24 +00:00
Colin dcc2eb265d programs: re-enable sandbox for tumiki-fighters and losslesscut (X applications) 2024-02-15 00:09:40 +00:00
Colin 5f1036118f modules/programs: sandboxing: add a "whitelistX" option 2024-02-15 00:09:16 +00:00
Colin 8ac4869f10 gpodder-adaptive: fix meta.position and thereby fix NUR eval
idk why it broke. seems that attrset members (passthru.*) don't preserve their position anymore
2024-02-14 23:39:18 +00:00
Colin 226425bbef nixpkgs: 2024-02-13 -> 2024-02-14; sops-nix -> 2024-02-13
```
• Updated input 'nixpkgs-next-unpatched':
    'github:nixos/nixpkgs/013603a52da98fe4abf15a5700479a58fa5899a5' (2024-02-13)
  → 'github:nixos/nixpkgs/52e165035c897a7b41ff26bc235f8d841e9d3850' (2024-02-14)
• Updated input 'nixpkgs-unpatched':
    'github:nixos/nixpkgs/40a7b182e0a00245d69f6b8c1dfd3ea4bfc6257c' (2024-02-13)
  → 'github:nixos/nixpkgs/c0a130d16b170f4820c3d2ed294a7aaabf451bfd' (2024-02-14)
• Updated input 'sops-nix':
    'github:Mic92/sops-nix/695275c349bb27f91b2b06cb742510899c887b81' (2024-02-12)
  → 'github:Mic92/sops-nix/48afd3264ec52bee85231a7122612e2c5202fa74' (2024-02-13)
```
2024-02-14 22:50:47 +00:00
Colin 518c3afd07 programs: sandbox: disable losslesscut/tumiki-fighters sandbox until i can figure out Xwayland 2024-02-14 14:37:59 +00:00
Colin 90dee85664 programs: sort alphabetically 2024-02-14 14:28:22 +00:00
Colin 26fc283fd9 programs: losslesscut: sandbox 2024-02-14 14:26:56 +00:00
Colin d0430ce1e9 programs: pavucontrol/pwvucontrol: enable audio devices inside the sandbox 2024-02-14 14:26:56 +00:00
Colin 368a52b91e programs: speedtest-cli: sandbox with bwrap 2024-02-14 14:26:56 +00:00
Colin d90dacee1f programs: grimshot: sandbox with bwrap 2024-02-14 14:17:41 +00:00
Colin a6e2b3bc5c programs: xdg-terminal-exec: disable sandbox 2024-02-14 14:11:35 +00:00
Colin 8863a3c674 programs: wob: sandbox with bwrap 2024-02-14 14:10:20 +00:00
Colin fa8d6dbb9f programs: wob: fix config substitution 2024-02-14 14:04:54 +00:00
Colin e5e79a6b60 programs: FileMimeInfo: disable sandbox 2024-02-14 13:54:21 +00:00
Colin 95f7eeeb5c programs: libnotify: sandbox with bwrap 2024-02-14 13:49:48 +00:00
Colin 29d638c68b programs: dig: sandbox with bwrap 2024-02-14 13:47:44 +00:00
Colin 7d22a5466f programs: zsh: fix "switch" function to be friendly to sandboxing 2024-02-14 13:45:56 +00:00
Colin b747742e23 flake: implement "deploy.self" app as replacement for nixos-rebuild switch 2024-02-14 13:45:15 +00:00
Colin 5907d9fa42 Revert "xdg-desktop-portal-gtk: build without support for notifications"
This reverts commit c9e02bfd8a.

disable notifications at this level did not cause fractal (gtk app) to
send its notifications to swaync. instead, it still tried to deliver to
the Portal, where the Portal wasn't expecting anything and just returned
an error to fractal.

setting `GNOTIFICATION_BACKEND = "freedesktop"` seems to be the correct
way to get gtk apps to behave as desired with their notifications.
2024-02-14 11:09:37 +00:00
Colin 67fe8d4666 swaync: propagate `GNOTIFICATION_BACKEND = "freedesktop"` to all users 2024-02-14 11:09:20 +00:00
Colin 22ca253ae0 modules/programs: better document the `env` option 2024-02-14 11:08:43 +00:00
Colin c9e02bfd8a xdg-desktop-portal-gtk: build without support for notifications 2024-02-14 10:51:18 +00:00
Colin 03b58b3cab programs: vim: support system copy/paste inside of sandbox 2024-02-14 09:11:31 +00:00
Colin ae01c17c05 programs: splatmoji: fix to work inside a sandbox again 2024-02-14 09:11:12 +00:00
Colin 677e6e679b programs: sandbox {s,}waylock lockscreen 2024-02-14 08:48:03 +00:00
Colin 3eb47a9a8d programs: swaylock: *partially* sandbox with capsh 2024-02-14 05:46:36 +00:00
Colin f11e443678 programs: waylock: *partially* sandbox with capsh 2024-02-14 05:46:28 +00:00
Colin 9faf1bb52c README: document the sandboxing feature of my "programs" module 2024-02-14 05:24:48 +00:00
Colin e599724811 README: use consistent tab width (2 spaces) 2024-02-14 05:18:43 +00:00
Colin c0b03950dc README: format links to local files in a way that markdown will render them 2024-02-14 05:16:59 +00:00
Colin 8f8ec090c4 programs: add "waylock" 2024-02-14 05:01:33 +00:00
Colin e174eaeff0 programs: loupe: fix sandboxing 2024-02-14 04:32:10 +00:00
Colin 8b32f2f231 modules/programs: add support for 'autodetectCliPaths = parent' 2024-02-14 04:31:59 +00:00
Colin f12b7afa1e programs: mimeo: dont sandbox 2024-02-14 01:51:26 +00:00
Colin 080bd856ec programs: sandboxing: only permit wayland socket access to those specific apps which require it 2024-02-14 01:49:49 +00:00
Colin 548a95a7e1 modules/programs: sandboxing: unshare ipc/cgroup/uts by default 2024-02-14 01:48:59 +00:00
Colin 2d7c5b9fa5 programs: mpv: explicitly add Videos/servo, Books/servo to sandbox 2024-02-13 15:38:57 +00:00
Colin e696cb96b6 nixpkgs: 2024-02-12 -> 2024-02-13
```
• Updated input 'nixpkgs-next-unpatched':
    'github:nixos/nixpkgs/f176844192a0b4ab719dffd91fcf356fc24ccbff' (2024-02-12)
  → 'github:nixos/nixpkgs/013603a52da98fe4abf15a5700479a58fa5899a5' (2024-02-13)
• Updated input 'nixpkgs-unpatched':
    'github:nixos/nixpkgs/b05b56d24858cfbc2064bda18d00a242bed5ddfb' (2024-02-12)
  → 'github:nixos/nixpkgs/40a7b182e0a00245d69f6b8c1dfd3ea4bfc6257c' (2024-02-13)
```
2024-02-13 12:54:00 +00:00
Colin 83cb29aeeb xdg-utils: re-add `mimetype` package 2024-02-13 12:31:04 +00:00
Colin 34b148f6cc modules/programs: allow specifying perlPackages members as programs, as i do with python3Packages, etc 2024-02-13 12:31:04 +00:00
Colin 44c2f8bcc0 cross: xdg-utils: build xdg-screensaver, and simplify a bit 2024-02-13 12:31:04 +00:00
Colin 9c18aa2765 cross: fix xdg-utils 2024-02-13 12:31:04 +00:00
Colin 4458a74e4c nixpkgs: 2024-02-09 -> 2024-02-12; sops-nix -> 2024-02-12
```
• Updated input 'nixpkgs-next-unpatched':
    'github:nixos/nixpkgs/b38903da74d4fa07bd7045e89bb31e6d4cc13548' (2024-02-09)
  → 'github:nixos/nixpkgs/f176844192a0b4ab719dffd91fcf356fc24ccbff' (2024-02-12)
• Updated input 'nixpkgs-unpatched':
    'github:nixos/nixpkgs/410b90f31644cc71ffc145261d76a351012aac66' (2024-02-09)
  → 'github:nixos/nixpkgs/b05b56d24858cfbc2064bda18d00a242bed5ddfb' (2024-02-12)
• Updated input 'sops-nix':
    'github:Mic92/sops-nix/2168851d58595431ee11ebfc3a49d60d318b7312' (2024-02-08)
  → 'github:Mic92/sops-nix/695275c349bb27f91b2b06cb742510899c887b81' (2024-02-12)
• Updated input 'sops-nix/nixpkgs-stable':
    'github:NixOS/nixpkgs/bc6cb3d59b7aab88e967264254f8c1aa4c0284e9' (2024-02-08)
  → 'github:NixOS/nixpkgs/d8cd80616c8800feec0cab64331d7c3d5a1a6d98' (2024-02-10)
```
2024-02-13 12:31:04 +00:00
Colin 1a18ed533b programs: don't include dbus in the sandbox by default 2024-02-13 11:58:33 +00:00
Colin 18eec98cae programs: brightnessctl: switch to landlock 2024-02-13 11:58:33 +00:00
Colin 82c386a6a4 programs: tor-browser-bundle-bin -> tor-browser
they're the same (aliased), only my programs API expects 'tor-browser' specifically
2024-02-13 11:58:33 +00:00
Colin 634dc318cd programs: spotify: remove old/unused firejail config 2024-02-13 11:15:30 +00:00
Colin 6eaaeeb91a programs: remove audio from the sandbox by default 2024-02-13 11:14:38 +00:00
Colin 94be4a7551 programs: wob: fix service definition (Exec -> ExecStart) 2024-02-13 11:03:18 +00:00
Colin b4a20da78a programs: brightnessctl: sandbox 2024-02-13 10:55:44 +00:00
Colin bb68506839 modules/programs: add separate "user" v.s. "system" options for whitelistDbus 2024-02-13 10:55:10 +00:00
Colin 77e2af0ed9 programs: krita: enable sandbox 2024-02-13 10:36:42 +00:00
Colin 126f3e4922 programs: sandboxing: restrict /run/user dir to just dbus/pipewire/pulse/wayland, by default 2024-02-13 10:28:30 +00:00
Colin 73afceb8c6 modules/programs: sandbox: add `whitelistWayland` option 2024-02-13 10:24:35 +00:00
Colin 371af5939e programs: mpv: tighten the /run/user portion of the sandbox 2024-02-12 15:24:07 +00:00
Colin 27fd81ad80 modules/programs: add new options for whitelisting audio/dbus 2024-02-12 15:23:35 +00:00
Colin d82b4b0f62 modules/programs: sane-sandboxed: reorder the --sane-sandbox-profile-dir arg so it takes precedence 2024-02-12 14:56:48 +00:00
Colin 7b28023e08 modules/programs: re-introduce the "withEmbeddedSandboxer" passthru attr 2024-02-12 14:27:48 +00:00
Colin 2b9db897a1 implement `sane.defaultUser` attr 2024-02-12 14:27:32 +00:00
Colin 6124cb9b36 modules/programs: sane-sandboxed: search for profiles in XDG_DATA_DIRS, not NIX_PROFILES 2024-02-12 13:16:48 +00:00
Colin b0394d877d modules/programs: rename allowedRootPaths -> allowedPaths
now that allowedHomePaths doesn't exist
2024-02-12 13:00:10 +00:00
Colin 14d8230821 modules/programs: sane-sandboxed: remove --sane-sandbox-home-path argument and plumbing
no longer needed, and mixing this with root paths is liable to cause troubles at this point, around symlink dereferencing/canonicalization/etc
2024-02-12 12:57:54 +00:00
Colin e94e338040 programs: handbrake: remove unneeded Pictures/servo-macros from sandbox 2024-02-12 12:54:41 +00:00
Colin 354ce378f6 programs: assorted: convert /mnt/servo "extraPaths" into "extraHomePaths" where possible 2024-02-12 12:54:16 +00:00
Colin a90b5b53db modules/programs: sandboxing: dereference symlinks and also include those in the sandbox 2024-02-12 12:48:02 +00:00
Colin eee3e138ff modules/programs: sandboxing: allow specifying individual /run/user/$uid paths to expose to the sandbox 2024-02-12 12:18:59 +00:00
Colin f61cd17e99 modules/programs: sandboxing: specialize profiles per-user by expanding $HOME 2024-02-12 12:08:58 +00:00
Colin 3e0b0a0f02 modules/programs: make-sandboxed: lift profile creation logic out to the toplevel 2024-02-12 11:52:33 +00:00
Colin 2ee34e9af3 modules/profiles: remove sandbox.embedProfile option
with upcoming refactors, this setting would force a different package to be installed per user, which doesn't mesh with the existing sane.programs infra
2024-02-12 11:35:59 +00:00
Colin f9a998eb92 programs: koreader: remove "sandbox.embedProfile = true"
i guess this was set while i was debugging
2024-02-12 11:33:55 +00:00
Colin 7c05d221d6 modules/programs: split "make-sandbox-profile" out of "make-sandboxed" 2024-02-12 11:20:40 +00:00
Colin 93012664e5 modules/programs: simplify how sandbox profiles make it into system packages 2024-02-12 10:52:44 +00:00
Colin c424f7ac3b sane-sandboxed: load all profiles, not just the first one we find
this allows some amount of overriding, or splitting profiles between system and user dirs
2024-02-12 10:40:15 +00:00
Colin 088b6f1b9a sane-sandboxed: load profiles via $NIX_PROFILES env var 2024-02-12 10:37:26 +00:00
Colin 96575acf3a programs: sane-sandboxed: move parseArgsExtra to outer scope; improve docs 2024-02-12 10:28:14 +00:00
Colin 1e05119adc mpv: fix loading of album art within sandbox 2024-02-12 08:59:46 +00:00
Colin e81df0ac86 modules/programs: enforce that user services don't accidentally override PATH 2024-02-12 08:44:55 +00:00
Colin b19492ba23 programs: mpv: add .config/mpv to sandbox paths 2024-02-12 08:26:51 +00:00
Colin 8b26fa1303 programs: wob: split the script into an actual package 2024-02-12 08:26:51 +00:00
Colin c0883dc777 sway: refactor: store sway-portals.conf in the user dir instead of system-wide
it's a user service, so prefer to configure it via user/home conf dirs
2024-02-12 07:13:39 +00:00
Colin 6b3a71aadf programs: xdg-desktop-portal: dont show app chooser for apps which are the default association 2024-02-12 07:12:04 +00:00
Colin 8d0d20757e gui: fold xdg-desktop-portal.nix back into sway config 2024-02-12 01:38:05 +00:00
Colin 66ca822ac1 remove xdg-desktop-portal-gtk service; xdg-desktop-portal knows how to start that itself 2024-02-12 01:33:34 +00:00
Colin db7a414030 xdg-desktop-portal(s): dont install globally 2024-02-12 01:16:17 +00:00
Colin 87050a0500 feeds: add "FullTimeNix" podcast :) 2024-02-12 00:09:49 +00:00
Colin bf53e3628a xdg-utils: cleanup 2024-02-11 23:57:50 +00:00
Colin d35f938806 mime.nix: fix cross build 2024-02-11 23:44:55 +00:00
Colin d719eb0f11 programs: gPodder: enable Videos/gPodder in sandbox 2024-02-11 23:37:16 +00:00
Colin 0861edd7f9 modules/programs: remove ~/.config/mimeo from sandbox defaults 2024-02-11 23:35:27 +00:00
Colin b6bf8720c9 modules/programs: implement --sane-sandbox-portal flag for apps which want to use the portal to open other apps 2024-02-11 23:32:24 +00:00
Colin 0fbc10fce3 mime: store mime associations in ~/.local/share/applications instead of /run/current-system/sw/share/applications to facilitate sandboxing 2024-02-11 23:31:43 +00:00
Colin 772f1070e7 xdg-desktop-portal: configure myself, to unblock future portal-related work 2024-02-11 23:29:07 +00:00
Colin 50c6e406bc programs: disable zecwallet-lite 2024-02-09 20:23:56 +00:00
Colin 41020b2c0d nixpkgs: 2024-02-08 -> 2024-02-09
```
• Updated input 'nixpkgs-next-unpatched':
    'github:nixos/nixpkgs/74098fff8838394e2cdf78012bbc7f5bf835197e' (2024-02-08)
  → 'github:nixos/nixpkgs/b38903da74d4fa07bd7045e89bb31e6d4cc13548' (2024-02-09)
• Updated input 'nixpkgs-unpatched':
    'github:nixos/nixpkgs/075bf9cffe5b04d39874747239022de9aec5cdcd' (2024-02-08)
  → 'github:nixos/nixpkgs/410b90f31644cc71ffc145261d76a351012aac66' (2024-02-09)
• Updated input 'sops-nix':
    'github:Mic92/sops-nix/23f61b897c00b66855074db471ba016e0cda20dd' (2024-02-04)
  → 'github:Mic92/sops-nix/2168851d58595431ee11ebfc3a49d60d318b7312' (2024-02-08)
• Updated input 'sops-nix/nixpkgs-stable':
    'github:NixOS/nixpkgs/9a333eaa80901efe01df07eade2c16d183761fa3' (2024-01-22)
  → 'github:NixOS/nixpkgs/bc6cb3d59b7aab88e967264254f8c1aa4c0284e9' (2024-02-08)
```
2024-02-09 10:39:27 +00:00
Colin 590a239f7d programs: gpodder: sandbox with bwrap
which we can do, now that xdg-open works correctly within sandboxes
2024-02-09 10:31:42 +00:00
Colin bcbc57f5ef programs: get xdg-open to work from within sandboxes
note that implementation may have a quirk that applications launched via the portal cannot themselves "xdg-open" through the portal, because of the environment variable manipulation.

not sure how best to address that.
2024-02-09 10:27:30 +00:00
Colin 0d3adcdc5c modules: users: have user services inherit PATH from environment rather than forcibly overwriting it 2024-02-09 09:50:26 +00:00
Colin d19907a38d sway: enable OpenURI interface in xdg-desktop-portal 2024-02-09 05:57:02 +00:00
Colin 9ac0e0e4fc modules/programs: put things in a pid namespace by default 2024-02-08 23:36:59 +00:00
Colin c9af5bf9b4 programs: sandboxing: enable net isolation for most sandboxed programs 2024-02-08 21:51:32 +00:00
Colin bc85169e3d programs: sandboxer: allow disable net access 2024-02-08 21:07:34 +00:00
Colin 7b9b3344a0 nixpkgs: 2024-02-07 -> 2024-02-08
```
• Updated input 'nixpkgs-next-unpatched':
    'github:nixos/nixpkgs/966fd30804ad0e400fa3502e9f848bfad63b1852' (2024-02-07)
  → 'github:nixos/nixpkgs/74098fff8838394e2cdf78012bbc7f5bf835197e' (2024-02-08)
• Updated input 'nixpkgs-unpatched':
    'github:nixos/nixpkgs/be4596f17b30403478c629b27d87fd914a2b9f8a' (2024-02-07)
  → 'github:nixos/nixpkgs/075bf9cffe5b04d39874747239022de9aec5cdcd' (2024-02-08)
```
2024-02-08 11:09:25 +00:00
Colin f6ca6210f9 feeds: link to podcastindex.org 2024-02-07 21:47:19 +00:00
Colin 19cfc86d1a nixpkgs: 2024-02-06 -> 2024-02-07
```
• Updated input 'nixpkgs-next-unpatched':
    'github:nixos/nixpkgs/952bd699447d82d69f4b15d994d5dc232e7addfb' (2024-02-06)
  → 'github:nixos/nixpkgs/966fd30804ad0e400fa3502e9f848bfad63b1852' (2024-02-07)
• Updated input 'nixpkgs-unpatched':
    'github:nixos/nixpkgs/8ad5408ea36be34ae262b04c8e913a95f8248fc7' (2024-02-06)
  → 'github:nixos/nixpkgs/be4596f17b30403478c629b27d87fd914a2b9f8a' (2024-02-07)
```
2024-02-07 09:45:02 +00:00
Colin 227d159c66 sway: map Super+Shift+PageUp/Down to next/prev track 2024-02-06 23:52:53 +00:00
Colin a6becb8c42 sway: add Super+space to toggle media 2024-02-06 23:22:24 +00:00
Colin 2a5398beb3 sway: simplify brightness_up_cmd
sxmo just uses brightnessctl internally, plus a call to 'notify'

i don't really need the notification, and if i did i could implement wob support on both desktop and mobile
2024-02-06 23:10:01 +00:00
Colin 0f12ed68f7 sway: simplify config templating 2024-02-06 23:04:44 +00:00
Colin 0c050d1953 programs: fuzzel: fix overly-aggressive sandboxing 2024-02-06 20:10:29 +00:00
Colin 2fc1fe7510 modules/programs: make-sandboxed: fix that /share/* was being linked into top-level /; better way to enforce sandboxing of /share entries 2024-02-06 19:55:55 +00:00
Colin 8d705af7a0 nixpkgs: 2024-02-04 -> 2024-02-06
```
• Updated input 'nixpkgs-next-unpatched':
    'github:nixos/nixpkgs/259981b0af5c285bb3cc7146de1da1b5af92236d' (2024-02-04)
  → 'github:nixos/nixpkgs/952bd699447d82d69f4b15d994d5dc232e7addfb' (2024-02-06)
• Updated input 'nixpkgs-unpatched':
    'github:nixos/nixpkgs/2be0b5db83fbea4a838f753994e8ebd35af91968' (2024-02-04)
  → 'github:nixos/nixpkgs/8ad5408ea36be34ae262b04c8e913a95f8248fc7' (2024-02-06)
```
2024-02-06 06:18:59 +00:00
Colin e91ec2c35e todo.md: task to consolidate ~/dev and ~/ref 2024-02-06 06:08:06 +00:00
Colin 5fbf66fb15 programs: loupe: sandbox with bwrap 2024-02-06 06:05:32 +00:00
Colin 97d50629e9 programs: handbrake: sandbox with landlock 2024-02-06 05:48:54 +00:00
Colin 5f8699fcef rearrange /mnt structure for host-based subdirs
e.g. /mnt/servo/media, /mnt/desko/home, etc
2024-02-06 05:48:11 +00:00
Colin 7ce957c3af gtk: set GSK_RENDERER=cairo to fix a bug somewhere in moby's render stack 2024-02-06 05:02:02 +00:00
Colin d7612d5034 modules/programs: make-sandboxed: avoid deep-copying all of /share when sandboxing
saves like 1 GiB of closure. but i haven't thoroughly tested this
2024-02-06 05:02:02 +00:00
Colin 5ff7bf0c69 programs: fuzzel: sandbox 2024-02-06 02:34:46 +00:00
Colin 2495200b67 tidy: programs: wget: remove warning about the sandbox being untested 2024-02-06 01:34:40 +00:00
Colin 4c499629f5 programs: vvvvvv: sandbox with bwrap 2024-02-06 01:34:04 +00:00
Colin 7b9f54dd54 programs: superTux: sandbox with bwrap 2024-02-06 01:16:36 +00:00
Colin bda932c3df programs: supertuxkart: sandbox with bwrap 2024-02-06 01:10:39 +00:00
Colin 3f96f4af82 sway: refer to fewer programs in the config by absolute path
this aids in sandboxing and swapping stuff in/out at runtime
2024-02-05 23:40:18 +00:00
Colin 1c4e2f97fe swaylock: mark sandboxing as unsupported 2024-02-05 23:36:35 +00:00
Colin 594a729968 feeds: remove balaji 2024-02-05 22:48:09 +00:00
Colin 5c8bb55cec todo.md: better sandboxing around /mnt/servo-media 2024-02-05 22:33:42 +00:00
Colin 6eb2a3d67f programs: handbrake: sandbox with bwrap 2024-02-05 22:28:15 +00:00
Colin ddc41bc9d8 programs: pavucontrol/pwvucontrol: sandbox with bwrap 2024-02-05 22:15:48 +00:00
Colin 7d833ebf76 programs: kdenlive: sandbox with bwrap 2024-02-05 22:07:37 +00:00
Colin bfc0eadfaa programs: hitori: sandbox with bwrap 2024-02-05 21:52:57 +00:00
Colin ff1cbcc16b programs: gnome-clocks,gnome-calendar: sandbox with bwrap 2024-02-05 21:46:27 +00:00
Colin fd81e35c31 todo.md: package blurble game! 2024-02-05 21:46:09 +00:00
Colin 9a8d8a20bd programs: frozen-bubble: persist data and sandbox with bwrap 2024-02-05 21:32:58 +00:00
Colin cd1d22e7b9 programs: gnome-calculator: sandbox with bwrap 2024-02-05 20:58:38 +00:00
Colin 2c0e93826d programs: gimp: sandbox with bwrap 2024-02-05 20:53:05 +00:00
Colin cab346f3ad programs: delfin: sandbox with bwrap 2024-02-05 20:44:47 +00:00
Colin 568a72f6a4 gpodder-configured: remove unused derivation inputs 2024-02-05 20:22:27 +00:00
Colin a2decaff9c programs: bemenu: sandbox with landlock 2024-02-05 18:41:52 +00:00
Colin 23411ed973 todo.md: make dconf stuff less monolithic 2024-02-05 18:33:03 +00:00
Colin 8ef9f7a485 epiphany: persist dconf settings; reduce sandboxer errors 2024-02-05 18:31:38 +00:00
Colin 12846732b9 programs: blanket: sandbox with bwrap 2024-02-05 18:26:21 +00:00
Colin e84079e84c programs: firefox: allow sandbox access to ~/dev 2024-02-05 18:17:49 +00:00
Colin 45ffd9246d programs: brave: sandbox with bwrap 2024-02-05 18:17:28 +00:00
Colin ed3935318d feeds: subscribe to non-paywalled Matt Levine 2024-02-05 16:41:38 +00:00
Colin 8052f62796 programs: sane-wipe browser: also clear epiphany artifacts 2024-02-05 16:31:19 +00:00
Colin 413903d03c make-sandboxed: also embed profiles for the withEmbeddedSandboxer passthru pkg 2024-02-05 08:26:40 +00:00
Colin 6d1eae2200 programs: gnome-2048: sandbox with bwrap 2024-02-05 08:26:06 +00:00
Colin 4d51c34ad2 programs: allow `sane.strictSandboxing = "warn"` 2024-02-05 05:28:02 +00:00
Colin bc50a8c489 nixpkgs: 2024-02-03 -> 2024-02-04; sops-nix -> 2024-02-04
```
• Updated input 'nixpkgs-next-unpatched':
    'github:nixos/nixpkgs/94db8d8c016a54feeaaf2643e2ce42bf4cc29286' (2024-02-03)
  → 'github:nixos/nixpkgs/259981b0af5c285bb3cc7146de1da1b5af92236d' (2024-02-04)
• Updated input 'nixpkgs-unpatched':
    'github:nixos/nixpkgs/79a13f1437e149dc7be2d1290c74d378dad60814' (2024-02-03)
  → 'github:nixos/nixpkgs/2be0b5db83fbea4a838f753994e8ebd35af91968' (2024-02-04)
• Updated input 'sops-nix':
    'github:Mic92/sops-nix/73bf36912e31a6b21af6e0f39218e067283c67ef' (2024-01-28)
  → 'github:Mic92/sops-nix/23f61b897c00b66855074db471ba016e0cda20dd' (2024-02-04)
```
2024-02-04 22:55:03 +00:00
Colin ee8e33b795 koreader: remove dead patching code
it still builds (in 3:00 minutes), huh
2024-02-04 22:08:12 +00:00
Colin 8afb6406a1 koreader: remove dead code/build inputs 2024-02-04 22:02:03 +00:00
Colin 7ac1ee66ad koreader: use nixpkgs' luasocket and luasec 2024-02-04 21:30:30 +00:00
Colin 8a47eb92ed koreader: use nixpkgs' lua-rapidjson 2024-02-04 21:30:30 +00:00
Colin b87934d5f8 koreader: use nixpkgs lpeg and remove vendor-external-projects.patch 2024-02-04 20:37:10 +00:00
Colin 293eab8225 koreader: use modern openssl 2024-02-04 20:05:02 +00:00
Colin abdbb83e10 koreader: replace vendored dependencies with their nixpkgs equivalents much more effectively
the old method was still causing everything to be re-compiled within koreader, rather than linking against the nix store.

decreases build time to about 3m on a desktop
2024-02-04 19:39:32 +00:00
Colin 4a96fa233a koreader: 2023.10 -> 2024.01 2024-02-04 02:51:27 +00:00
Colin 4bd73ddca3 koreader-from-src: build even more from source 2024-02-03 23:58:41 +00:00
Colin dc74bca06a programs: vim: add private/knowledge to sandbox 2024-02-03 23:53:53 +00:00
Colin 42523b75a8 programs: gdb: disable sandboxing 2024-02-03 23:53:34 +00:00
Colin 79736a4a0a koreader-from-src: tidy 2024-02-03 16:30:03 +00:00
Colin 111946eb1d programs: vim, imagemagick: fix sandboxing to consider uncreated files 2024-02-03 14:07:53 +00:00
Colin 09f3bfc944 flake: make "nix run .#deploy" deploy to all hosts 2024-02-03 02:55:13 +00:00
Colin b8fc75ebd6 nixpkgs: 2024-02-02 -> 2024-02-03
```
• Updated input 'nixpkgs-next-unpatched':
    'github:nixos/nixpkgs/1bfd22b6448ac4d407510bd37fe16d87a9dcb41b' (2024-02-02)
  → 'github:nixos/nixpkgs/94db8d8c016a54feeaaf2643e2ce42bf4cc29286' (2024-02-03)
• Updated input 'nixpkgs-unpatched':
    'github:nixos/nixpkgs/eef63ea04722d812a09a5974ed18c9761088a6e1' (2024-02-02)
  → 'github:nixos/nixpkgs/79a13f1437e149dc7be2d1290c74d378dad60814' (2024-02-03)
```
2024-02-03 02:15:09 +00:00
Colin 8de015f098 flake: preDeploy: fix host/addr mixup 2024-02-03 02:15:05 +00:00
Colin 6da85f6d8f flake: add a preDeploy target 2024-02-03 02:04:41 +00:00
Colin 2dc6da476b flake: deploy app: remove the last call to nixos-rebuild 2024-02-03 01:42:54 +00:00
Colin 453f40d0a8 flake: sync photos from moby with "nix run .#sync.moby" 2024-02-03 00:54:04 +00:00
Colin 14b20fd9c2 programs: komikku: fix sandboxing 2024-02-03 00:52:17 +00:00
Colin 2df1b20f02 programs: epiphany: simplify the sandboxing 2024-02-03 00:44:23 +00:00
Colin 56e7e9a7cc remove unused "default.nix.cmp" file
should have never been checked in
2024-02-03 00:18:33 +00:00
Colin 2f9fad503c programs: fix sandboxing errors for programs which create files (notably: ffmpeg) 2024-02-03 00:17:54 +00:00
Colin 3439ca34b8 sane-sandboxed: add more autodetect options, and a "withEmbeddedSandboxer" package output (for dev) 2024-02-03 00:17:24 +00:00
Colin 24e6e6cacc firefox-extensions.sidebery: downgrade 5.1.1 -> 5.0.0
release format is inconsistent; would need to build from-source to reliably use the latest version(s)
2024-02-02 23:26:14 +00:00
Colin 0ee9f2026c sane-sandboxed: hopefully fix a problem with path normalization for paths with spaces 2024-02-02 22:56:43 +00:00
Colin 5e3c2636db programs: make-sandboxed: handle packages which use relative links in bin (like spotify) 2024-02-02 22:38:36 +00:00
Colin cd0a046776 dovecot: remove dead code 2024-02-02 20:47:55 +00:00
Colin 27edee0bbf dovecot2: fix sieves 2024-02-02 20:47:20 +00:00
Colin 56734fe5da mpv: add /dev/dri to the sandbox 2024-02-02 19:18:30 +00:00
Colin 832a572d56 firefox-extensions: bump to latest 2024-02-02 19:17:04 +00:00
Colin 3c96f6d418 programs: koreader: enable DRI in the sandbox, and use wrappedDerivation 2024-02-02 17:22:57 +00:00
Colin 86b23e8183 programs: fractal: enable DRI in sandbox 2024-02-02 17:19:35 +00:00
Colin 2bb9115f35 modules/programs: sandboxing: add "whitelistDri" option for gfx-intensive apps 2024-02-02 17:18:51 +00:00
Colin 065d045640 fix so sway inherits program env vars 2024-02-02 15:36:06 +00:00
Colin d3eaa69261 lappy/desko: auto-start signal-desktop 2024-02-02 14:22:08 +00:00
Colin 6151eee8d5 programs (assorted): fix wantedBy = "default.target" to be more specific
now GUI apps aren't stuck in a restart loop until sway starts

in particular, signal-desktop can actually be autostarted
2024-02-02 14:21:57 +00:00
Colin 483a1d1780 sway: signal on launch to systemd that the graphical-session.target is ready
this allows auto-launching of other services which require a compositor (i.e. messaging apps)
2024-02-02 14:20:30 +00:00
Colin 567c7993b6 modules/programs: sandbox: allow mimeo config in any sandbox 2024-02-02 12:52:36 +00:00
Colin f6eeab5650 nixpkgs: 2024-02-01 -> 2024-02-02
```
• Updated input 'nixpkgs-next-unpatched':
    'github:nixos/nixpkgs/06002f375e1d20f1481abcb696a50f232202e7ac' (2024-02-01)
  → 'github:nixos/nixpkgs/1bfd22b6448ac4d407510bd37fe16d87a9dcb41b' (2024-02-02)
• Updated input 'nixpkgs-unpatched':
    'github:nixos/nixpkgs/fbba9b8f0b6364928f60ef1b97e686b569cdb64e' (2024-02-01)
  → 'github:nixos/nixpkgs/eef63ea04722d812a09a5974ed18c9761088a6e1' (2024-02-02)
```
2024-02-02 01:07:32 +00:00
Colin 2824671bde tune nix deploy parameters (specifically for moby)
this is experimental; hard to understand immediately how significant are the effects
2024-02-02 00:50:25 +00:00
Colin efcaef2c35 lappy/desko/servo: downgrade kernel 6.7 -> 6.6 (latest supported by zfs) 2024-02-01 16:21:46 +00:00
Colin 25707eb79e servo: address deprecation warning: dovecot2.sieveScripts -> sieve.scripts 2024-02-01 15:47:56 +00:00
Colin 18679cd8c3 fix deprecation warnings: overrideScope' -> overrideScope 2024-02-01 15:44:46 +00:00
Colin 09923b60ea moby: disable desko as nixcache 2024-02-01 15:41:43 +00:00
Colin 3100189172 purge supercap
i no longer have access to dispatch build jobs to it :((((
2024-02-01 15:36:37 +00:00
Colin 715ac42f13 remove samba from closure
current samba hangs during configurePhase. this is not the first time samba has failed to build. nor the third. purge it.
2024-02-01 15:28:40 +00:00
Colin a9810e7343 re-ship linux 6.7 to lappy/desko/servo
now that landlock-sandboxer builds against the correct linux headers,
this can actually work.
2024-02-01 13:54:44 +00:00
Colin 4f352c5725 landlock-sandboxer: build against headers which match the sandboxer source 2024-02-01 13:53:39 +00:00
Colin 17f35a3619 linux-megous: 6.6.0 -> 6.7.2 2024-02-01 12:51:53 +00:00
Colin 89d4f3eec3 nixpkgs: 2024-01-29 -> 2024-02-01
```
• Updated input 'nixpkgs-next-unpatched':
    'github:nixos/nixpkgs/aa476d3e0de89aeb67950a1bc76b4fd576c24505' (2024-01-29)
  → 'github:nixos/nixpkgs/06002f375e1d20f1481abcb696a50f232202e7ac' (2024-02-01)
• Updated input 'nixpkgs-unpatched':
    'github:nixos/nixpkgs/a31b9bd76009c73a2f932fbdaa7145ac4a79544f' (2024-01-29)
  → 'github:nixos/nixpkgs/fbba9b8f0b6364928f60ef1b97e686b569cdb64e' (2024-02-01)
```
2024-02-01 11:32:36 +00:00
Colin 44419d71a5 lemmy-lemonade: init at 2023.10.29 2024-02-01 11:32:07 +00:00
Colin 02e597a862 fractal-nixified: 5 -> 6 2024-02-01 10:57:01 +00:00
Colin 00f995aec9 fixup landlock-sandboxer to work well for all systems
downgrade lappy/desko/servo back to default linux; zfs doesn't support latest

build landlock-sandboxer against the specific kernel being deployed; it's less noisy that way
2024-01-31 21:19:10 +00:00
Colin 368eb2c29b programs: git: whitelist more repo roots 2024-01-31 21:17:48 +00:00
Colin 5f793523d1 ship linux 6.7 to lappy/desko/servo 2024-01-31 20:33:15 +00:00
Colin 33bee7ac2e unl0kr: be a little more robust against bad password entry 2024-01-31 20:32:26 +00:00
Colin 84af8aca3c unl0kr: remove debugging code 2024-01-31 20:10:57 +00:00
Colin a0f00313a7 moby: disable signal-desktop autostart 2024-01-31 20:09:03 +00:00
Colin 6603115192 moby: disable getty auto-login
i think this interacts badly with unl0kr style logins, though
honestly kinda hard to tell if that was a fluke or real.
2024-01-31 19:47:24 +00:00
Colin ac968e1589 sxmo: allow the option to disable greeter entirely 2024-01-31 19:46:37 +00:00
Colin 2d4fc4f274 landlock-sandboxer: build against latest compatible linux 2024-01-31 17:45:46 +00:00
Colin 1d72e13a98 sxmo: launch via unl0kr by default 2024-01-31 17:40:36 +00:00
Colin d9667653e7 docs: sway: point out that one can launch sway directly from a TTY 2024-01-31 16:29:27 +00:00
Colin 8c6bf07102 todo.md: sync 2024-01-31 16:28:56 +00:00
Colin 634520a1e9 unl0kr: fix cross compilation 2024-01-31 16:23:55 +00:00
Colin 13be5a1731 unl0kr: fix LOGIN_TIMEOUT to be infinite 2024-01-31 15:43:30 +00:00
Colin 30288cd67f user: add CAP_NET_ADMIN,CAP_NET_RAW even outside of systemd session
in fact, *only* outside of systemd session because they broke ambient caps in 255
2024-01-31 15:42:43 +00:00
Colin 87e2509af4 doc: cozy: mention that upstream has merged the patch i apply 2024-01-31 15:36:54 +00:00
Colin 8736ca478b programs: firefox: allow access to servo image-macros 2024-01-31 15:36:09 +00:00
Colin cb3960fb21 programs: git: fix access to ~/private/knowledge 2024-01-31 15:35:21 +00:00
Colin 6e24a1ff28 programs: re-enable sops 2024-01-31 15:30:15 +00:00
Colin 91eae95b32 modules.gui.gnome: fix build 2024-01-31 15:29:49 +00:00
Colin f5c88853ee sway: replace "greetd" with "unl0kr"-based login process 2024-01-31 15:20:27 +00:00
Colin 0009e5ca4c programs: sandboxing: use wrapperType="wrappedDerivation" where applicable 2024-01-29 15:21:16 +00:00
Colin 0403d5c03e nixpkgs: 2024-01-28 -> 2024-01-29
```
• Updated input 'nixpkgs-next-unpatched':
    'github:nixos/nixpkgs/a86d1125195505d4ea8997b12507b9c623511256' (2024-01-28)
  → 'github:nixos/nixpkgs/aa476d3e0de89aeb67950a1bc76b4fd576c24505' (2024-01-29)
• Updated input 'nixpkgs-unpatched':
    'github:nixos/nixpkgs/f58fe0f36dbbef39b3f5ec8542a02dece7c9559b' (2024-01-28)
  → 'github:nixos/nixpkgs/a31b9bd76009c73a2f932fbdaa7145ac4a79544f' (2024-01-29)
```
2024-01-29 13:49:54 +00:00
Colin db6ba61429 programs: sandbox more apps with wrapperType=wrappedDerivation 2024-01-29 13:45:57 +00:00
Colin 881d2f79ed modules/programs: add "unchecked" passthru to aid debugging 2024-01-29 13:36:01 +00:00
Colin 47abdfb831 modules/programs: patch dbus-1 files to use sandboxed binaries 2024-01-29 13:09:43 +00:00
Colin 3831c6f087 TODO: fold 2024-01-29 13:07:44 +00:00
Colin d3f7a036ce ripgrep: move options out of assorted.nix into its own file 2024-01-29 12:57:56 +00:00
Colin 0454abacd9 komikku: sandbox 2024-01-29 12:56:08 +00:00
Colin 4f8d476ebf modules/programs: patch old /nix/store paths in .desktop files 2024-01-29 12:56:08 +00:00
Colin 1cb2c5225f programs: use wrapperType=wrappedDerivation where possible 2024-01-29 12:07:04 +00:00
Colin 7af970f38c modules/programs: extend wrapperType="wrappedDerivation" to handle common share/ items 2024-01-29 11:59:38 +00:00
Colin 6f86e61a00 firefox: fix build
zip was giving some complaints... i'm not sure why, i think it still works
2024-01-29 09:57:35 +00:00
Colin 3ea3776281 nixpkgs: 2024-01-27 -> 2024-01-28
```
• Updated input 'nixpkgs-next-unpatched':
    'github:nixos/nixpkgs/ef4dd61b7d53af44b060473308c50fa3b34d5681' (2024-01-27)
  → 'github:nixos/nixpkgs/a86d1125195505d4ea8997b12507b9c623511256' (2024-01-28)
• Updated input 'nixpkgs-unpatched':
    'github:nixos/nixpkgs/c002c6aa977ad22c60398daaa9be52f2203d0006' (2024-01-27)
  → 'github:nixos/nixpkgs/f58fe0f36dbbef39b3f5ec8542a02dece7c9559b' (2024-01-28)
• Updated input 'sops-nix':
    'github:Mic92/sops-nix/4606d9b1595e42ffd9b75b9e69667708c70b1d68' (2024-01-24)
  → 'github:Mic92/sops-nix/73bf36912e31a6b21af6e0f39218e067283c67ef' (2024-01-28)
• Updated input 'sops-nix/nixpkgs-stable':
    'github:NixOS/nixpkgs/a1982c92d8980a0114372973cbdfe0a307f1bdea' (2024-01-12)
  → 'github:NixOS/nixpkgs/9a333eaa80901efe01df07eade2c16d183761fa3' (2024-01-22)
```
2024-01-29 09:57:35 +00:00
Colin a7eb8dd6fa nixpkgs: 2024-01-22 -> 2024-01-27
```
• Updated input 'nixpkgs-next-unpatched':
    'github:nixos/nixpkgs/dceddd03df4f840ea28c65887c199495793fb322' (2024-01-22)
  → 'github:nixos/nixpkgs/ef4dd61b7d53af44b060473308c50fa3b34d5681' (2024-01-27)
• Updated input 'nixpkgs-unpatched':
    'github:nixos/nixpkgs/8cccce637e19577815de54c5ecc3132dff965aee' (2024-01-22)
  → 'github:nixos/nixpkgs/c002c6aa977ad22c60398daaa9be52f2203d0006' (2024-01-27)
• Updated input 'sops-nix':
    'github:Mic92/sops-nix/ae171b54e76ced88d506245249609f8c87305752' (2024-01-21)
  → 'github:Mic92/sops-nix/4606d9b1595e42ffd9b75b9e69667708c70b1d68' (2024-01-24)
```

this breaks sway login for lappy. not obvious why.
2024-01-29 09:57:35 +00:00
Colin c1a1f51ca2 git: fix git-upload-pack (used on the remote when doing git pull) 2024-01-29 09:57:27 +00:00
Colin 32824cfade modules/programs: sandbox in a manner that's more compatible with link-heavy apps like busybox, git, etc 2024-01-29 09:56:30 +00:00
Colin 51fc61b211 sane-sandboxed: cleanup 2024-01-29 09:14:43 +00:00
Colin 7b9795ea3d modules/programs: implement `embedWrapper` option 2024-01-29 09:13:49 +00:00
Colin 5f3e481fe4 sane-sandboxed: refactor and avoid passing duplicate/subpaths into the sandbox 2024-01-29 07:15:02 +00:00
Colin 86219d7006 sane-sandboxed: simplify: consolidate homePaths and rootPaths into just "paths" 2024-01-29 05:43:10 +00:00
Colin 381da74e6c users: enable pam_cap for "login" program 2024-01-28 17:55:19 +00:00
Colin 24c70c3683 feeds: switch acoup.blog to the database type feed
at some point my feed script became capable of understanding his RSS :)
2024-01-28 12:37:38 +00:00
Colin bfec531fa2 sandbox a bunch more apps 2024-01-28 11:43:05 +00:00
Colin de11edffa5 programs/assorted: remove more unused programs 2024-01-28 11:34:33 +00:00
Colin 294f167df0 sane-sandboxed: fix CLI escaping with capsh 2024-01-28 11:11:07 +00:00
Colin e536e3c718 programs/assorted.nix: remove unused tree-sitter package 2024-01-28 11:03:09 +00:00
Colin 17d14dbac2 programs/assorted.nix: uninstall some programs i don't frequently use 2024-01-28 10:40:57 +00:00
Colin 94981ef335 vim: sandbox 2024-01-28 10:39:08 +00:00
Colin 3cd244be76 git: sandbox with bwrap 2024-01-28 10:36:19 +00:00
Colin f100595257 modules/programs: properly forward autodetectCliPaths to the sandboxer 2024-01-28 10:31:07 +00:00
Colin e84da827c2 sane-sandboxed: fix typo in add-pwd flag 2024-01-28 09:17:12 +00:00
Colin 42f9fa029d modules/programs: fix that whitelistPwd wasnt passed into the sandbox profile 2024-01-28 09:04:27 +00:00
Colin 40fee97b06 modules/programs: make-sandboxed: disallowReferences to the fake sane-sandboxed used during checkPhase 2024-01-28 08:58:13 +00:00
Colin 3cc8292d8b modules/programs: make-sandboxed: support packages with checkPhase by bypassing the sandbox 2024-01-28 07:45:08 +00:00
Colin 9261d30a34 modules/programs: reformatting 2024-01-28 05:58:08 +00:00
Colin 3eb3a8db5a modules/programs: add a `whitelistPwd` option to grant the program access to the directory it was called from 2024-01-28 05:57:30 +00:00
Colin 97129268f0 modules/programs: sandbox: add "capshonly" as a valid sandbox.method 2024-01-28 05:57:11 +00:00
Colin fa39a965ca TODO: investigate sane.programs as a contributor to nixos-rebuild times 2024-01-28 05:55:32 +00:00
Colin 7da979503b bubblewrap: explicitly disable sandboxing 2024-01-27 17:20:40 +00:00
Colin 3b32c26026 zsh: explicitly disable sandboxing 2024-01-27 17:20:24 +00:00
Colin cad25306e7 alacritty: explicitly disable sandbox 2024-01-27 17:20:11 +00:00
Colin 4d7414c941 programs: introduce and use "autodetectCliPaths" nix config 2024-01-27 17:19:48 +00:00
Colin b29b8bdec7 wireshark: specify capabilities via sandbox.capabilities config 2024-01-27 17:12:40 +00:00
Colin a7d081bfcb modules/programs: add a sane.strictSandboxing option 2024-01-27 17:11:07 +00:00
Colin 5ca208d07f modules/programs: sandbox: add enable flag and capabilities structured config 2024-01-27 17:08:27 +00:00
Colin 6c605944c5 pkgs: firefox-extensions: update to latest 2024-01-27 15:50:47 +00:00
Colin 02b6e17449 nicotine-plus: disable
now i have no firejail programs; no more setuid wrapper in /run/wrappers :)
2024-01-27 15:37:43 +00:00
Colin 770db96ec6 go2tv: sandbox with bwrap 2024-01-27 15:31:08 +00:00
Colin ff356fdd49 playerctl: sandbox with bwrap 2024-01-27 15:18:56 +00:00
Colin eec89e2cc1 librewolf: sandbox with bwrap 2024-01-27 15:16:53 +00:00
Colin d69d8f64f3 tor-browser: sandbox with bwrap; remove useHardenedMalloc patch 2024-01-27 15:04:22 +00:00
Colin 4ee2562202 programs: tidy: prefer "sandbox.extraHomePaths" over "fs" for external deps 2024-01-27 14:54:17 +00:00
Colin 08b1ece56e programs: gnome-weather: sandbox with bwrap 2024-01-27 14:53:38 +00:00
Colin 26b978dcf2 modules/programs: sandbox: fix "inline" -> "inplace" typo 2024-01-27 14:42:25 +00:00
Colin b22c2e094c koreader: sandbox with bwrap 2024-01-27 14:39:22 +00:00
Colin b40775f97c koreader-from-src: document FTP configuration 2024-01-27 14:39:02 +00:00
Colin a27a72646c koreader-from-src: fix non-cross build 2024-01-27 14:38:52 +00:00
Colin 100ddad40e wike: link to issue about state directory 2024-01-27 14:27:02 +00:00
Colin d8b6d419b6 modules/programs: sandboxing: add `wrapperType = "wrappedDerivation"` to wrap without rebuilding the whole package 2024-01-27 14:26:41 +00:00
Colin 1bde38bf72 cozy: sandbox with bwrap 2024-01-27 13:11:22 +00:00
Colin a06c81643c sane-sandboxed: don't error if ~ files aren't available to be bound 2024-01-27 12:48:58 +00:00
Colin 15fd7bf4a5 sane-sandboxed: implement a "capshonly" backend 2024-01-27 12:39:36 +00:00
Colin 0a25ef544f wike: sandbox with bwrap 2024-01-27 12:29:58 +00:00
Colin a6b824d3c4 modules/programs/sandbox: add an "embedProfile" option to source sandbox settings from the package instead of the system 2024-01-27 12:23:25 +00:00
Colin 79ee47bada firefox: get away with linking slightly less into the sandbox 2024-01-27 11:41:18 +00:00
Colin be06e61bfb programs: geary: fix sandboxing
this is an UGLY one. geary itself uses bwrap, and that fails if it's sandboxed AT ALL in landlock (i.e. even with just / landlocked as RW).

maybe this has to do with what landlock-sandboxer considers 'read/write' to be, and there's actually more file ops i need to enable on /
2024-01-27 11:28:08 +00:00
Colin 3b4884fcf1 sane-sandbox: fix secret binding 2024-01-27 11:26:10 +00:00
Colin 4319dc58eb programs: landlock: restrict the capabilities of sandboxed processes 2024-01-27 09:49:51 +00:00
Colin 3122434908 programs: add an option to configure extra home paths to make accessible in the sandbox 2024-01-27 09:11:32 +00:00
Colin dae7785ee2 wireshark: remove dead code 2024-01-27 09:04:08 +00:00
Colin d54f8b1e93 programs: fix so environment variables make it onto user sessions 2024-01-27 09:02:55 +00:00
Colin 27f3b2bd76 firefox: allow ~/tmp and ~/Pictures access 2024-01-27 06:00:46 +00:00
Colin b417f60769 sane-sandboxed: try binding /proc/self in landlock. still doesnt work well 2024-01-27 05:59:40 +00:00
Colin df2d5b6d01 sane-sandboxed: fixup /dev/std* for wireshark 2024-01-27 05:12:43 +00:00
Colin 3e6278fa21 wireshark: sandbox with landlock instead of firejail
and remove the SUID wrapper, yay!
2024-01-27 04:44:21 +00:00
Colin a66b257644 sane-sandboxed: better support for landlock and SANE_SANDBOX_PREPEND/APPEND 2024-01-27 04:43:42 +00:00
Colin ef66d2ec72 sane-sandboxed: add support for landlock backend 2024-01-27 03:39:26 +00:00
Colin e21dbd507d landlock-sandboxer: init 2024-01-26 16:52:33 +00:00
Colin 64878bee67 sane-sandboxed: add SANE_SANDBOX_PREPEND, SANE_SANDBOX_APPEND env vars 2024-01-26 09:14:18 +00:00
Colin 557a080ffc TODO.md: try landlocked for sandboxing, instead of bubblewrap 2024-01-26 09:13:46 +00:00
Colin 8ecb17ed3e programs: enable libcap_ng/netcap 2024-01-26 09:13:20 +00:00
Colin c4874c85b1 bubblewrap: debugging 2024-01-26 09:13:00 +00:00
Colin 563a75e9b2 users: launch entire systemd --user namespace with cap_net_admin, cap_net_raw
this should make sandboxing wireshark *much* easier, and same with things which require net namespaces, in the future
2024-01-25 15:05:35 +00:00
Colin 7f002b8718 programs: sane-sandboxed: implement --sane-sandbox-cap for capabilities setting 2024-01-24 06:34:11 +00:00
Colin 79e2bd2913 epiphany: sandbox with bwrap
this is the first app which *requires* DRI/DRM to function correctly. maybe this effects anything webkitgtk (like wike)?
2024-01-24 06:25:20 +00:00
Colin 95161b55cd spot: sandbox with bwrap 2024-01-24 05:47:04 +00:00
Colin d91759068c element-desktop: sandbox with bwrap 2024-01-24 05:37:46 +00:00
Colin c23c496066 programs: tuba: sandbox with bwrap
it complains "Fontconfig error: No writable cache directories"
seeeeeveral times. not sure if that's new or not. no obvious
consequences.
2024-01-24 05:34:10 +00:00
Colin 824630f7d1 programs: sandboxing: document /dev/dri a bit more 2024-01-24 05:28:27 +00:00
Colin f8e8d23857 vlc: sandbox with bwrap instead of firejail 2024-01-24 05:19:20 +00:00
Colin 8484bb7978 docs: mime: document how to show the nix mime associations 2024-01-24 05:00:35 +00:00
Colin 57105c6861 sane-sandboxed: autodetect: handle file:/// URIs 2024-01-24 05:00:08 +00:00
Colin 3758044e7b sane-sandboxed: better handle "--" 2024-01-24 04:59:24 +00:00
Colin bfaf098c31 sane-sandboxed: fix handling of `--` (which previously smushed arguments) 2024-01-24 02:52:01 +00:00
Colin 0e99b296bc animatch: remove the (unused) .config directory 2024-01-24 02:18:58 +00:00
Colin 089f86d5e4 programs: make /usr/bin/env available in the sandbox
enables KOReader to run
2024-01-24 01:48:02 +00:00
Colin d0e1241bd1 animatch: fix to run on wayland w/o Xwayland, and enable bwrap sandbox 2024-01-24 01:43:33 +00:00
Colin c1a0a08b76 gtkcord4: sandbox with bwrap 2024-01-24 00:12:12 +00:00
Colin e8748ce0a0 servo: lemmy: pict-rs: port the media-enable-full-video -> media-video-allow-audio CLI flag 2024-01-23 17:12:13 +00:00
Colin 7cf9b342cc gpodder: fixup GPODDER_DOWNLOAD_DIR to be more friendly to sandboxing 2024-01-23 16:44:47 +00:00
Colin 8739851f48 evince: port sandbox from firejail to bwrap 2024-01-23 16:44:13 +00:00
Colin d945b43f6b signal-desktop: switch sandbox from firejail -> bwrap 2024-01-23 16:42:48 +00:00
Colin fcc3ea1e39 todo: update containerization tasks 2024-01-23 16:41:06 +00:00
Colin 7722acecee sway: obtain deps via "config.sane.programs", so that i get the sandboxed version of e.g. splatmoji 2024-01-23 16:32:42 +00:00
Colin bdd70f8fa2 sane-sandboxed: ignore the executable path when autodetecting media 2024-01-23 16:32:06 +00:00
Colin 571a0a9d06 gui: disable unused abaddon app 2024-01-23 16:30:06 +00:00
Colin ccf4f66dd9 programs: dialect: sandbox with bubblewrap 2024-01-23 16:23:14 +00:00
Colin b38e5403a5 splatmoji: sandbox 2024-01-23 16:01:27 +00:00
Colin 09af041745 g4music: ensure it can access the Music dir in its sandbox 2024-01-23 16:00:21 +00:00
Colin cb5131746f programs: audacity: sandbox with bubblewrap 2024-01-23 15:59:50 +00:00
Colin 2fbd0f8ee1 nixpatches: apply bonsai refactor PR 2024-01-23 15:50:32 +00:00
Colin bfd5630e21 programs: sandbox: omit media dirs by default, and implement --sane-sandbox-autodetect for programs which are liable to load data from paths 2024-01-23 15:48:12 +00:00
Colin 026f5dee4d programs: g4music: sandbox with bwrap 2024-01-23 15:06:45 +00:00
Colin b59be8338a firefox: fix up sandboxing of ssh/sops 2024-01-23 14:57:57 +00:00
Colin ab4bbc2224 programs: remove explicit firejail installation; let sane.programs decide when to install it sys-wide 2024-01-23 14:57:33 +00:00
Colin 156fcd1bf2 aerc: enable bwrap sandbox 2024-01-23 14:57:33 +00:00
Colin 576d2c32f0 programs: support secrets even when sandboxed 2024-01-23 14:57:33 +00:00
Colin bb63a594ab conky: fixup needed paths for bwrap 2024-01-23 14:57:33 +00:00
Colin 25739ec2ba programs: sane-sandboxed: avoid reading firejail profiles when the backend isnt firejail
this should provide a marginal perf gain
2024-01-23 14:57:33 +00:00
Colin f148334b58 programs: port extraFirejailConfig to extraConfig 2024-01-23 14:57:33 +00:00
Colin da537ea8ea fractal: switch from firejail -> bwrap 2024-01-23 14:13:09 +00:00
Colin 18d224dc34 dino: switch from firejail to bwrap 2024-01-23 14:12:52 +00:00
Colin 3a6ee8708e programs: sane-sandboxed: dont error if network mountpoints are offline 2024-01-23 13:13:31 +00:00
Colin 983bf93d8f programs: sane-sandboxed: make the profile handle arguments with spaces 2024-01-23 12:47:25 +00:00
Colin 40cc8f5d1c programs: sane-sandboxed: make more debuggable 2024-01-23 12:27:23 +00:00
Colin cce03a5dc8 programs: sandbox: use --dev-bind-try for root paths; fixes mpv on moby 2024-01-23 12:18:32 +00:00
Colin 38fd171713 spotify: sandbox with bwrap instead of firejail 2024-01-23 12:12:56 +00:00
Colin 84c78d9256 conky: sandbox with bwrap instead of firejail 2024-01-23 12:11:22 +00:00
Colin 973203d85e programs: mpv: sandbox with bwrap instead of firejail 2024-01-23 11:37:37 +00:00
Colin f9174dd2aa programs: firefox: sandbox with bwrap instead of firejail 2024-01-23 11:37:19 +00:00
Colin 98dfc3aa5a programs: sandbox: allow all programs to access media
hopefully this is just a stopgap
2024-01-23 11:36:58 +00:00
Colin 27b56b1a12 programs: sane-sandbox: implement a cleaner debugshell and test API 2024-01-23 11:19:52 +00:00
Colin 6e9220d2bb programs: allow programs to specify "sandbox.method = "bwrap"" for bubblewrap sandboxing 2024-01-23 10:44:13 +00:00
Colin 0ddcfcaa23 sane-sandboxed: retrieve profiles from /share/sane-sandboxed/profiles so they can be customized without mass rebuilds 2024-01-23 08:01:23 +00:00
Colin a4cb6645b4 programs: indirect firejail access through sane-sandboxed 2024-01-23 04:02:31 +00:00
Colin 2492ed2ca7 programs: introduce a sane-sandboxed helper
not yet used, but will be soon
2024-01-23 02:29:33 +00:00
Colin f49d2a1e0e programs: split "makeSandboxed" into its own file 2024-01-23 01:23:14 +00:00
Colin 0dc3f4f7f2 modules/programs: move to subdir
this will help me factor out helpers
2024-01-23 01:02:04 +00:00
Colin 0bed4d0ada mpv: disable firejail sandboxing (it fails on moby) 2024-01-23 01:01:21 +00:00
Colin f3e8af3fdb doc: libreoffice: mention "still" v.s. "fresh" variants 2024-01-23 01:00:34 +00:00
Colin af542ec05f docs: gnome-keyring: point out that system gnome-keyring doesn't inherit my sandboxing 2024-01-23 01:00:06 +00:00
Colin 399a1d2052 steam: use wrapped package as system steam 2024-01-23 00:59:23 +00:00
Colin bb6e5611d4 docs: conky: point out that un-sandboxed conky is used by sxmo-utils 2024-01-23 00:58:56 +00:00
Colin d5901afb8e programs: firejail: specify profile via : (clarifies to firejail that its an identifier and not a path); invoke firejail via name instead of absolute path 2024-01-22 23:58:54 +00:00
Colin c11f5a1401 wireshark: fix security.wrappers when wireshark is disabled 2024-01-22 23:58:04 +00:00
Colin 5b220f3fec wireshark: enable firejail isolation 2024-01-22 13:12:10 +00:00
Colin 8bf41ea858 programs: fix missing newline in firejail config concatenation 2024-01-22 13:11:47 +00:00
Colin df861a3ef0 programs: firejail: inject custom firejail config through /etc/firejail
this improves rebuild times, and makes it easier for packages to inject their own free-form config
2024-01-22 11:12:18 +00:00
Colin d6754b6cac evince: sandbox with firejail 2024-01-22 10:20:29 +00:00
Colin b03d7f7fb0 geary: test the firejail profile; it's not ready 2024-01-22 10:04:18 +00:00
Colin 008b186479 audacity: test the firejail profile; it's not ready 2024-01-22 10:04:03 +00:00
Colin 914f9b3703 vlc: sandbox with firejail 2024-01-22 09:47:24 +00:00
Colin ed7ec4a371 conky: sandbox with firejail 2024-01-22 09:31:00 +00:00
Colin 2d338201a5 signal-desktop: sandbox with firejail
TODO: fix URL opening / xdg-open
2024-01-22 09:30:34 +00:00
Colin a8aad1f98f dino: sandbox with firejail
TODO: fix URL opening / xdg-open
2024-01-22 09:30:13 +00:00
Colin 2d06b93118 fractal: sandbox with firejail
TODO: seems this broke link opening? (xdg-open?)
2024-01-22 09:28:50 +00:00
Colin 60547204a8 sane.programs: firejail: support wrapping "runCommand" packages 2024-01-22 09:16:25 +00:00
Colin 3d763a0021 tor-browser-bundle-bin -> tor-browser
upstream nixpgs just has tor-browser-bundle-bin as an alias for tor-browser
2024-01-22 08:13:37 +00:00
Colin ad474873e2 dovecot: fix unparseable config
upstream/nixpkgs is doing some shit, ugh
2024-01-22 08:09:37 +00:00
Colin dd35136ac0 firejail: fix so /run/wrappers are available inside a jail 2024-01-22 07:18:50 +00:00
Colin cfe6e9c20a nixpkgs: 2024-01-19 -> 2024-01-22
```
• Updated input 'nixpkgs-next-unpatched':
    'github:nixos/nixpkgs/331c78971299375240001d946861951b6cc98176' (2024-01-19)
  → 'github:nixos/nixpkgs/dceddd03df4f840ea28c65887c199495793fb322' (2024-01-22)
• Updated input 'nixpkgs-unpatched':
    'github:nixos/nixpkgs/bbec4099302591a41304d360e3bab805e5ccc0be' (2024-01-19)
  → 'github:nixos/nixpkgs/8cccce637e19577815de54c5ecc3132dff965aee' (2024-01-22)
• Updated input 'sops-nix':
    'github:Mic92/sops-nix/87755331580fdf23df7e39b46d63ac88236bf42c' (2024-01-15)
  → 'github:Mic92/sops-nix/ae171b54e76ced88d506245249609f8c87305752' (2024-01-21)
```
2024-01-22 04:05:59 +00:00
Colin 0f3f0933b1 mpv: sandbox with firejail 2024-01-22 03:50:28 +00:00
Colin f8440e3811 go2tv: allow more ports through the firewall 2024-01-22 03:50:04 +00:00
Colin 829460a076 todo: update firejail/sandboxing tasks 2024-01-22 02:04:32 +00:00
Colin 9ecd0adcbe firefox: sandbox with firejail
TODO: get it so open-in-mpv launches an mpv that has access to ~/.config/mpv

i guess this is the 'firejail url problem'
2024-01-21 23:59:15 +00:00
Colin ad92a2e158 programs: abort when no firejail profile is found for a program.
in the future, i can whitelist specific binaries to omit their firejail
profiles.
2024-01-21 04:32:49 +00:00
Colin 5f5891d241 programs: apply firejail profile to programs which are net isolated 2024-01-21 04:28:48 +00:00
Colin cf475c4696 nicotine-plus: remove distro-specific symlink 2024-01-21 03:56:33 +00:00
Colin 992194a1f0 programs: achieve network sandboxing without "sane-vpn do" 2024-01-21 03:51:12 +00:00
Colin bad6a7bfee programs: implement "default vpn" with native nix code instead of sane-vpn 2024-01-21 01:04:31 +00:00
Colin 66d5e204be vpn: enforce "id" restrictions 2024-01-21 00:57:46 +00:00
Colin ce35330923 vpn.nix: factor into a proper module
this will allow for better integration with 'sane.programs'
2024-01-21 00:49:34 +00:00
Colin bdab1aa7e3 firefox-extensions: update to latest 2024-01-20 21:30:15 +00:00
Colin 080c8dbe3d sane-bt-search: try to install some logging for a sporadic error 2024-01-20 21:19:18 +00:00
Colin a31fe44624 sane-bt-add: handle https:// URIs which forward to magnet: 2024-01-20 21:18:58 +00:00
Colin 59187a0ec0 programs: allow running binaries in a netns-style firejail 2024-01-20 11:11:12 +00:00
Colin 03fbf42680 servo: lemmy: pict-rs: fix broken CLI argument 2024-01-20 03:15:06 +00:00
Colin f3b2a98874 firejail: fix cross compilation 2024-01-20 03:14:32 +00:00
Colin 2e9084c9ef nixpkgs: 2024-01-14 -> 2024-01-19; sops-nix -> 2024-01-15
```
• Updated input 'nixpkgs-next-unpatched':
    'github:nixos/nixpkgs/724e39ebb9b8eda97f17d423f66fbc5a991f4f8d' (2024-01-14)
  → 'github:nixos/nixpkgs/331c78971299375240001d946861951b6cc98176' (2024-01-19)
• Updated input 'nixpkgs-unpatched':
    'github:nixos/nixpkgs/6c08fe3ccf437d8b26bec010fd925ddd6bb0d0d5' (2024-01-14)
  → 'github:nixos/nixpkgs/bbec4099302591a41304d360e3bab805e5ccc0be' (2024-01-19)
• Updated input 'sops-nix':
    'github:Mic92/sops-nix/70dd0d521f7849338e487a219c1a07c429a66d77' (2024-01-14)
  → 'github:Mic92/sops-nix/87755331580fdf23df7e39b46d63ac88236bf42c' (2024-01-15)
```
2024-01-20 03:14:32 +00:00
Colin 0907240fda sane-vpn: implement the "do" command, to run a program in a netns 2024-01-19 22:55:26 +00:00
Colin 7d670facd4 feeds: sort 2024-01-19 21:38:45 +00:00
Colin 61e5704fd6 feeds: unsub LW
too verbose, and too many of y'all turned into authoritarians
2024-01-19 21:38:14 +00:00
Colin fd0723169f nix-serve: fix coredump loop 2024-01-19 21:34:45 +00:00
Colin a725d42bf5 ip_forward: consolidate the options to fix servo build 2024-01-19 21:34:18 +00:00
Colin c03cea2d4e net/vpn.nix: cleanup dead code 2024-01-19 09:58:13 +00:00
Colin f43d6bff92 route VPN traffic such that i can configure any app to selectively use the VPN
e.g. firejail --net=br-ovpnd-us-mi --noprofile --dns=46.227.67.134 getent ahostsv4 uninsane.org
2024-01-19 09:54:01 +00:00
Colin 43a8ca90a7 feeds: add Cat and Girl 2024-01-16 19:12:25 +00:00
Colin dac6046828 firefox-extensions: update to latest 2024-01-16 19:10:32 +00:00
Colin e2a6ae22dc sxmo-utils: 2024-12-28 -> 2024-01-01 2024-01-16 19:10:08 +00:00
Colin f2ee43d1ef delfin: 0.2.1 -> 0.3.0 2024-01-16 19:09:50 +00:00
Colin 3d80b46570 lemoa: 0.5.0 -> 0.5.1 2024-01-16 19:09:38 +00:00
Colin e7d383604a signal-desktop-from-src: 6.42.0 -> 6.44.0 2024-01-16 19:09:25 +00:00
Colin 7d504892be servo: dovecot: fix broken sieve 2024-01-16 06:28:25 +00:00
Colin d7a2bf9d26 servo: remove networking.useDHCP=false override
seems likely that the change to systemd-networkd renamed the ethernet interface, and so eth0.useDHCP wasn't right. this change seems to restore networking
2024-01-16 06:09:19 +00:00
Colin d6184a7b6d sane-vpn: update to be compatible with newer systemd-network vpn implementation 2024-01-16 03:36:37 +00:00
Colin 851c15aa6d vpn: port ovpnd connections to use systemd-network
this should allow better integration with e.g. systemd-run, in future
2024-01-16 03:20:40 +00:00
Colin c45898f903 WIP: wg-dev 2024-01-15 04:15:17 +00:00
Colin 0efec20904 hosts/common/net/vpn: remove unused "extraOptions" argument 2024-01-15 03:52:31 +00:00
Colin 2f04b563d1 nixpkgs: 2024-01-11 -> 2024-01-14
```
• Updated input 'nixpkgs-next-unpatched':
    'github:nixos/nixpkgs/06797d4df4baaa51b229081083a88b92dac3ff7c' (2024-01-11)
  → 'github:nixos/nixpkgs/724e39ebb9b8eda97f17d423f66fbc5a991f4f8d' (2024-01-14)
• Updated input 'nixpkgs-unpatched':
    'github:nixos/nixpkgs/51f399ec47c082d678261883095bb8ad552e6500' (2024-01-11)
  → 'github:nixos/nixpkgs/6c08fe3ccf437d8b26bec010fd925ddd6bb0d0d5' (2024-01-14)
• Updated input 'sops-nix':
    'github:Mic92/sops-nix/c0b3a5af90fae3ba95645bbf85d2b64880addd76' (2024-01-10)
  → 'github:Mic92/sops-nix/70dd0d521f7849338e487a219c1a07c429a66d77' (2024-01-14)
• Updated input 'sops-nix/nixpkgs-stable':
    'github:NixOS/nixpkgs/70bdadeb94ffc8806c0570eb5c2695ad29f0e421' (2024-01-03)
  → 'github:NixOS/nixpkgs/a1982c92d8980a0114372973cbdfe0a307f1bdea' (2024-01-12)
```
2024-01-15 01:32:07 +00:00
Colin 5b9c58dbc6 hosts/common: use servo-style dns on all machines
it'll be handy as i want to place individual applications inside VPNs/namespaces
2024-01-15 01:16:22 +00:00
Colin a7964c4f0c hosts/common: net: split upnp config into own file 2024-01-15 01:12:09 +00:00
Colin 006a7e9f72 consolidate net-related stuff into hosts/common/net/ directory 2024-01-15 01:11:13 +00:00
Colin 3856710faf net: annotate the UPNP rule 2024-01-15 01:08:10 +00:00
Colin 6cbc0bedf3 ddns-he (HurricaneElectric): remove
it's unused for a year
2024-01-15 00:55:10 +00:00
Colin fbc0c7615a ddns-afraid (afraid.org): remove
it's unused for a year
2024-01-15 00:54:41 +00:00
Colin 34bcdb5128 firefox: disable kinetic scrolling 2024-01-14 20:34:14 +00:00
Colin a5c6e41622 feeds: subscribe to POD OF JAKE 2024-01-14 05:20:28 +00:00
Colin 02e03227d8 servo: try to integrate peerswap with clightning, but it fails 2024-01-14 04:33:12 +00:00
Colin faa0a7c9ea peerswap: init at unstable-20240111 2024-01-14 02:55:32 +00:00
Colin 812a02bc6b feeds: add The Dollop podcast 2024-01-14 00:49:29 +00:00
Colin 27898ecdc8 feeds: unsubscribe from Louis Rossman
his channel is kinda just the same idea  played over and over
2024-01-14 00:36:52 +00:00
Colin 1c2324cca4 servo: clightning-sane: status command: show profits from fees 2024-01-13 16:43:49 +00:00
Colin 70f059eaac feeds: subscribe to Jack Stauber 2024-01-13 16:43:41 +00:00
Colin bac72be730 servo: clightning-sane: status command: show in/out payment sums 2024-01-13 15:53:48 +00:00
Colin 99858c1384 servo: clightning-sane: centralize metric reporting, fix so we blacklist our own channels less frequently 2024-01-13 04:47:20 +00:00
Colin 103a300e77 servo: clightning-sane: implement an autobalance subcommand 2024-01-13 03:04:24 +00:00
Colin 6b5cdd7508 servo: clightning-sane: log before we give up 2024-01-13 01:10:52 +00:00
Colin 2f1e354400 servo: clightning-sane: drop caches after so many failures 2024-01-12 23:54:06 +00:00
Colin 585a87130c servo: clightning-sane: remove unused loop_once_with_retries method 2024-01-12 23:31:30 +00:00
Colin 0e68533776 servo: clightning-sane: introduce parallelism 2024-01-12 23:30:52 +00:00
Colin 882cc5bfd0 servo: clightning-sane: rename Balancer -> LoopRouter 2024-01-12 21:36:20 +00:00
Colin 91847a9a8e servo: clightning-sane: factor "loop" action into own subroutine 2024-01-12 21:28:20 +00:00
Colin 5c649ff216 servo: clightning-sane: include peer_id in status --full 2024-01-12 20:56:00 +00:00
Colin abdd224211 servo: clightning-sane: increase CLTV 9->18 2024-01-12 20:55:32 +00:00
Colin 0c72c59190 servo: clightning-sane: handle closed channels in status listing 2024-01-12 20:28:57 +00:00
Colin 432170a69e servo: clightning-sane: rename ppm in/out to theirs/mine 2024-01-12 19:31:39 +00:00
Colin 805b37a9a5 servo: clightning-sane: add a --full option for more info 2024-01-12 19:24:50 +00:00
Colin 87a0bda011 servo: clightning-sane: perform rebalance operation in a loop 2024-01-12 19:17:07 +00:00
Colin 5d2c6e1978 servo: clightning-sane: mark channels which cant be rebalanced freely 2024-01-12 18:43:58 +00:00
Colin abafbd811b servo: clightning-sane: minor bugfixes 2024-01-12 18:30:49 +00:00
Colin aca50d9946 servo: clightning-sane: add a "status" subcommand 2024-01-12 17:42:44 +00:00
Colin bd4f4dab81 servo: clightning-sane: factor out a subcommands interface 2024-01-12 15:42:12 +00:00
Colin aebd11ea82 alacritty: port config: yaml to toml 2024-01-12 03:24:55 +00:00
Colin fa6906fdf9 cross: fix appstream/eyed3 failures from nixpkgs update 2024-01-12 03:24:55 +00:00
Colin cec21375a5 servo: disable mautrix-signal 2024-01-12 03:24:55 +00:00
Colin 0428f64afa nixpkgs: 2024-01-10 -> 2024-01-11
```
• Updated input 'nixpkgs-next-unpatched':
    'github:nixos/nixpkgs/2f9e98ccf3283a34ce9301c7ee4ca18d219d829d' (2024-01-10)
  → 'github:nixos/nixpkgs/06797d4df4baaa51b229081083a88b92dac3ff7c' (2024-01-11)
• Updated input 'nixpkgs-unpatched':
    'github:nixos/nixpkgs/32afa5e024e45885dacadf1c8ad65e9ebc51a901' (2024-01-10)
  → 'github:nixos/nixpkgs/51f399ec47c082d678261883095bb8ad552e6500' (2024-01-11)
```
2024-01-12 03:24:55 +00:00
Colin e0864edefc nixpkgs: 2024-01-10 -> 2024-01-10
```
• Updated input 'nixpkgs-next-unpatched':
    'github:nixos/nixpkgs/0231e3ccf485b7b110f0e0e55be6a711cb0093fb' (2024-01-10)
  → 'github:nixos/nixpkgs/2f9e98ccf3283a34ce9301c7ee4ca18d219d829d' (2024-01-10)
• Updated input 'nixpkgs-unpatched':
    'github:nixos/nixpkgs/a962df01db9bff000df83733bf6d7ef60a855057' (2024-01-10)
  → 'github:nixos/nixpkgs/32afa5e024e45885dacadf1c8ad65e9ebc51a901' (2024-01-10)
• Updated input 'sops-nix':
    'github:Mic92/sops-nix/0ded57412079011f1210c2fcc10e112427d4c0e6' (2024-01-08)
  → 'github:Mic92/sops-nix/c0b3a5af90fae3ba95645bbf85d2b64880addd76' (2024-01-10)
```
2024-01-12 03:24:55 +00:00
Colin 7460fd283c nixpkgs: 2024-01-09 -> 2024-01-10
```
• Updated input 'nixpkgs-next-unpatched':
    'github:nixos/nixpkgs/fcff3d7883a38ef71832899085ba365658c96867' (2024-01-09)
  → 'github:nixos/nixpkgs/0231e3ccf485b7b110f0e0e55be6a711cb0093fb' (2024-01-10)
• Updated input 'nixpkgs-unpatched':
    'github:nixos/nixpkgs/519c93eda20a7c361e6159d853bf33b1e6236141' (2024-01-09)
  → 'github:nixos/nixpkgs/a962df01db9bff000df83733bf6d7ef60a855057' (2024-01-10)
```
2024-01-12 03:24:55 +00:00
Colin 7a7dee1630 nixpkgs: 2023-12-29 -> 2024-01-09; sops-nix; uninsane-dot-org
```
• Updated input 'nixpkgs-next-unpatched':
    'github:nixos/nixpkgs/f50aae4fb10dd51bd6ffcce0eb96d02b608a9595' (2023-12-29)
  → 'github:nixos/nixpkgs/fcff3d7883a38ef71832899085ba365658c96867' (2024-01-09)
• Updated input 'nixpkgs-unpatched':
    'github:nixos/nixpkgs/04df6aa7bad237aeeb69f603e1f4ec1a2c28a4da' (2023-12-29)
  → 'github:nixos/nixpkgs/519c93eda20a7c361e6159d853bf33b1e6236141' (2024-01-09)
• Updated input 'sops-nix':
    'github:Mic92/sops-nix/e523e89763ff45f0a6cf15bcb1092636b1da9ed3' (2023-12-24)
  → 'github:Mic92/sops-nix/0ded57412079011f1210c2fcc10e112427d4c0e6' (2024-01-08)
• Updated input 'sops-nix/nixpkgs-stable':
    'github:NixOS/nixpkgs/7790e078f8979a9fcd543f9a47427eeaba38f268' (2023-12-23)
  → 'github:NixOS/nixpkgs/70bdadeb94ffc8806c0570eb5c2695ad29f0e421' (2024-01-03)
• Updated input 'uninsane-dot-org':
    'git+https://git.uninsane.org/colin/uninsane?ref=refs/heads/master&rev=b21e6899490f25fa450fb9e3efa0c8774bcee0d3' (2023-12-31)
  → 'git+https://git.uninsane.org/colin/uninsane?ref=refs/heads/master&rev=4a1fa488e64e6c87c6c951e3fafb2684692f64d3' (2024-01-01)
```
2024-01-12 03:24:55 +00:00
Colin 913403aac6 servo: clightning-sane: tidy 2024-01-12 01:25:56 +00:00
Colin 432a66bf5f servo: clightning: initialize a script for rebalancing with peers 2024-01-11 23:11:33 +00:00
Colin e2a43ddfa0 servo: clightning: allow group members to run lightning-cli 2024-01-11 15:59:32 +00:00
Colin b2ba204ca1 nixpatches: update hashes (?) 2024-01-11 15:58:44 +00:00
Colin 892b045342 pyln-client: init at 23.11.2 2024-01-11 00:38:08 +00:00
Colin 8644e6705a servo: decrease ZFS cache size 2024-01-11 00:20:52 +00:00
Colin 3f60206eef servo: clightning: tune config 2024-01-10 23:40:17 +00:00
Colin 568ead4bd7 servo: lightning: tune config 2024-01-10 21:01:36 +00:00
Colin 14241d54c9 flake: fix packages output to eval (even though its dumb and i just use hostPkgs.<machine>.<xyz>) 2024-01-10 11:48:20 +00:00
Colin e4d75c5f38 servo: clightning: disable features which are incompatible with lnd 2024-01-10 11:18:54 +00:00
Colin c42dda1bab servo: clightning: document more parts of the config 2024-01-09 16:19:48 +00:00
Colin 3295ae3b74 servo: clightning: update config 2024-01-09 16:13:08 +00:00
Colin e63438bedf feeds: disable The Linux Experience 2024-01-09 00:45:18 +00:00
Colin 25422da9ba servo: tune clightning config 2024-01-09 00:42:37 +00:00
Colin 37583d8c9c clightning: tune fees, logging 2024-01-06 18:08:51 +00:00
Colin 62b3863722 servo: clightning: enable experimental features 2024-01-06 09:13:17 +00:00
Colin b11f03bd18 servo: clightning: docs 2024-01-05 22:09:32 +00:00
Colin 63620fa058 servo: clightning: node personalization and docs 2024-01-04 21:55:13 +00:00
Colin cecb114810 clightning: harden 2024-01-04 18:47:40 +00:00
Colin 4ce93f74c6 wob: add debug logging 2024-01-04 17:07:47 +00:00
Colin 09b806d7a7 go2tv: document youtube workarounds 2024-01-04 16:26:25 +00:00
Colin 2f31100c3f servo: ship go2tv 2024-01-04 16:25:50 +00:00
Colin ca3f97ec51 docs: go2tv: elaborate seeking limitations 2024-01-04 16:25:49 +00:00
Colin 7378d6c5b2 bitcoind: host behind tor 2024-01-04 16:25:49 +00:00
Colin 276de5d662 tor: fix /var/lib/tor directory permissions 2024-01-04 16:25:49 +00:00
Colin 6f449cf35f clightning: document some places to find nodes for channels 2024-01-04 16:25:49 +00:00
Colin daf046861c wob: implement as part of sway instead of exclusive to sxmo 2024-01-04 13:08:20 +00:00
Colin 43498c62f9 clightning: integrate with tor 2024-01-03 18:29:16 +00:00
Colin 22f5853741 firefox: remove unused functions 2024-01-03 14:59:59 +00:00
Colin fe217f6667 firefox: disable ctrl+shift+c shortcut more broadly 2024-01-03 14:59:27 +00:00
Colin 41ae86f40f servo: enable clightning 2024-01-03 13:56:42 +00:00
Colin 6d52c8ecf8 servo: split tor/i2p into own files 2024-01-03 13:56:14 +00:00
Colin 75b649543a firefox: enable ctrl-shift-c-should-copy extension 2024-01-03 13:42:58 +00:00
Colin 1261a6f452 firefox-extensions.ctrl-shift-c-should-copy: init at unstable-2023-03-04 2024-01-03 13:33:32 +00:00
Colin 041855dbc7 zsh: fix broken <del> and <ctrl>+<arrow> keybindings 2024-01-03 13:07:29 +00:00
Colin 3e52956a3a servo: clightning: integrate, but do not enable 2024-01-02 18:32:34 +00:00
Colin d8f4158bc6 servo: consolidate blockchains under cryptocurrencies directory 2024-01-02 18:16:58 +00:00
Colin 36638e80a3 bitcoin: add myself as an authenticated rpcuser 2024-01-02 18:11:46 +00:00
Colin 28d0a72c62 define (but dont activate) a clighting bitcoin service 2024-01-02 14:29:52 +00:00
Colin 6471524f4a programs: zecwallet-lite: move to own file 2024-01-01 15:17:51 +00:00
Colin 61b2b8f2cd nixpatches: cleanup 2024-01-01 14:46:37 +00:00
Colin 02aae4bb8b conky: start upstreaming it 2024-01-01 14:38:08 +00:00
Colin 3efecb9560 sxmo_hook_block_suspend: re-introduce exponential backoff 2024-01-01 13:03:26 +00:00
Colin 8d0707699c mpv/vlc: associate with flv video type 2024-01-01 11:48:18 +00:00
Colin 318774a2a0 sxmo_suspend: fix that "sxmo_jobs periodic_blink" would hang post-wakeup 2024-01-01 11:48:03 +00:00
Colin b14e997a43 sxmo: remove sxmo_hook_screenoff.sh override
generally, i can get away with the defaults and patch my alternative into sxmo_suspend.sh more reliably/simply
2024-01-01 10:33:24 +00:00
Colin b949438be5 sxmo_suspend.sh: stop, and resume, the sxmo LED blinking
then later i can remove the custom screenoff hook
2024-01-01 10:01:48 +00:00
Colin 6ee9e8e405 sxmo_hook_screenoff: decrease the blink frequency even more
if i was smarter i'd just disable the periodic blinking right before entering sleep
2024-01-01 07:24:08 +00:00
Colin 09ee8e6efc sxmo_hook_block_suspend: forward only to the next script, not all next scripts 2024-01-01 07:01:09 +00:00
Colin 49527edaa9 sxmo_suspend.sh: fix rtcwake to use sudo 2024-01-01 06:38:43 +00:00
Colin 92d193ffe3 sxmo_hook_block_suspend: fix recursion counter 2024-01-01 06:19:30 +00:00
Colin 4805510073 sxmo-utils: ship with gojq 2024-01-01 06:15:31 +00:00
Colin 6fe195e2dd sxmo: block suspend if go2tv is active 2024-01-01 04:56:39 +00:00
Colin c54df8d9c4 hare-ev: 2023-10-31 -> 2023-12-04 2024-01-01 03:56:45 +00:00
Colin 6d8b6c61a2 feeds: sort 2024-01-01 03:56:25 +00:00
Colin 822653ec10 feeds: vitalik.ca -> vitalik.eth.limo 2024-01-01 03:48:06 +00:00
Colin 68502ca944 feeds: add webcurious.co.uk link aggregator 2024-01-01 03:46:52 +00:00
Colin 103d11a87c net: fix broken firewall/ipset setup 2023-12-31 14:25:36 +00:00
Colin 0028c41bdc uninsane-dot-org: update 2023-12-31 12:22:23 +00:00
Colin a4fe002607 sway: always render KOReader titlebar 2023-12-30 11:57:33 +00:00
Colin b54ab9391b sxmo-utils: add Notejot app 2023-12-30 11:41:36 +00:00
Colin 0c7612c83f sxmo-utils: 2023-12-17 -> 2023-12-28
this should fix spurious screenoff -> unlock transitions (thanks Aren!)
2023-12-30 11:31:36 +00:00
Colin f9361af41c go2tv: remove firewall fix and allow SSDP at the iptables layer 2023-12-30 06:16:17 +00:00
Colin 3cd3ebed51 nixpkgs -> latest 2023-12-30 05:34:23 +00:00
Colin 4ad209020a disable chatty (doesnt cross compile) 2023-12-30 05:34:02 +00:00
Colin 556327740b nixpkgs: 2023-12-26 -> 2023-12-29
```
• Updated input 'nixpkgs-next-unpatched':
    'github:nixos/nixpkgs/0db7618e46243d3710ff2b8040aca5f6e0102900' (2023-12-26)
  → 'github:nixos/nixpkgs/bd7fd36fe22e0de1162f1623f1736517c1506164' (2023-12-29)
• Updated input 'nixpkgs-unpatched':
    'github:nixos/nixpkgs/d956588517edbcde71781bd8ac3a9947a9fc55a6' (2023-12-26)
  → 'github:nixos/nixpkgs/f46c267fc63f01c75fa9f6d9fb8345e6a1ed0063' (2023-12-29)
```
2023-12-29 15:52:32 +00:00
Colin b0ddb1b31c conky: use the same percent symbol even in battery_estimate 2023-12-28 17:43:34 +00:00
Colin 70ee98736a conky/battery_estimate: handle the static state better 2023-12-28 17:35:33 +00:00
Colin 5de06cef35 conky: fix text substitutions 2023-12-28 17:07:29 +00:00
Colin 4f3706622c conky/battery_estimate: render stylized 2023-12-28 03:05:27 +00:00
Colin 104e76de47 conky/battery_estimate: render h/m indicators as superscript 2023-12-28 01:53:43 +00:00
Colin 1df99978bb conky/battery_estimte: select icon based on battery percentage 2023-12-28 01:11:51 +00:00
Colin 3846322f12 conky/battery_estimate: support new-style Thinkpad batteries 2023-12-28 00:41:23 +00:00
Colin 623b2c6611 conky/battery_estimate: add debugging 2023-12-28 00:35:48 +00:00
Colin cb4d73f959 nixpkgs: 2023-12-23 -> 2023-12-26
```
• Updated input 'nixpkgs-next-unpatched':
    'github:nixos/nixpkgs/2125288b9266cde9e3333a6787525bc151918742' (2023-12-23)
  → 'github:nixos/nixpkgs/0db7618e46243d3710ff2b8040aca5f6e0102900' (2023-12-26)
• Updated input 'nixpkgs-unpatched':
    'github:nixos/nixpkgs/d8aba6fe4067abdd8b1a7f398f2b90f21c608530' (2023-12-23)
  → 'github:nixos/nixpkgs/d956588517edbcde71781bd8ac3a9947a9fc55a6' (2023-12-26)
• Updated input 'sops-nix':
    'github:Mic92/sops-nix/f7db64b88dabc95e4f7bee20455f418e7ab805d4' (2023-12-18)
  → 'github:Mic92/sops-nix/e523e89763ff45f0a6cf15bcb1092636b1da9ed3' (2023-12-24)
• Updated input 'sops-nix/nixpkgs-stable':
    'github:NixOS/nixpkgs/a19a71d1ee93226fd71984359552affbc1cd3dc3' (2023-12-17)
  → 'github:NixOS/nixpkgs/7790e078f8979a9fcd543f9a47427eeaba38f268' (2023-12-23)
```
2023-12-27 00:34:48 +00:00
Colin 58febf51bd remove most useDHCP=false settings
networking.useDHCP was deprecated, and then later undeprecated: it's safe to keep it defaulted
2023-12-24 02:17:06 +00:00
Colin b254379fb1 firefox-extensions: update to latest 2023-12-23 21:31:13 +00:00
Colin 835d933719 nixpkgs: 2023-12-22 -> 2023-12-23
```
• Updated input 'nixpkgs-next-unpatched':
    'github:nixos/nixpkgs/21e572254ecbbb9d55be98841b279d21ee5754b6' (2023-12-22)
  → 'github:nixos/nixpkgs/2125288b9266cde9e3333a6787525bc151918742' (2023-12-23)
• Updated input 'nixpkgs-unpatched':
    'github:nixos/nixpkgs/66bda599f409f9834c6fd6abc602e452a5c16b61' (2023-12-22)
  → 'github:nixos/nixpkgs/d8aba6fe4067abdd8b1a7f398f2b90f21c608530' (2023-12-23)
```
2023-12-23 21:18:25 +00:00
Colin 31130d90bc nixpatches: fix broken hash 2023-12-23 12:44:17 +00:00
Colin 237c493252 slskd: fix Restart option 2023-12-23 10:23:17 +00:00
Colin 18e7acd9e7 slskd: restart even on non-failure exit 2023-12-23 05:39:22 +00:00
Colin 906026e333 nixpkgs: 2023-12-21 -> 2023-12-22
```
• Updated input 'nixpkgs-next-unpatched':
    'github:nixos/nixpkgs/63fbe1a992e6030fbf444ac9d6b629ec76ab86ad' (2023-12-21)
  → 'github:nixos/nixpkgs/21e572254ecbbb9d55be98841b279d21ee5754b6' (2023-12-22)
• Updated input 'nixpkgs-unpatched':
    'github:nixos/nixpkgs/490828bce1b0cdfe328adc7f6280a519d7e68ed4' (2023-12-21)
  → 'github:nixos/nixpkgs/66bda599f409f9834c6fd6abc602e452a5c16b61' (2023-12-22)
```
2023-12-22 19:07:32 +00:00
Colin 9e24fba5ee document that loupe is an image viewer 2023-12-21 22:58:23 +00:00
Colin 12edd60969 nixpkgs: bump 2023-12-21
```
• Updated input 'nixpkgs-next-unpatched':
    'github:nixos/nixpkgs/459873d8d6492b492ca7f9b03d5a50117099abfa' (2023-12-21)
  → 'github:nixos/nixpkgs/63fbe1a992e6030fbf444ac9d6b629ec76ab86ad' (2023-12-21)
• Updated input 'nixpkgs-unpatched':
    'github:nixos/nixpkgs/38bbf09b10659db891af01288bd99a5e8e8d7861' (2023-12-21)
  → 'github:nixos/nixpkgs/490828bce1b0cdfe328adc7f6280a519d7e68ed4' (2023-12-21)
```
2023-12-21 20:03:06 +00:00
Colin 0f429caaca nixpkgs: 2023-12-20 -> 2023-12-21
```
• Updated input 'nixpkgs-next-unpatched':
    'github:nixos/nixpkgs/7749fa1e8c5e2f6a003fd4d3a2ed52924c4a7217' (2023-12-20)
  → 'github:nixos/nixpkgs/459873d8d6492b492ca7f9b03d5a50117099abfa' (2023-12-21)
• Updated input 'nixpkgs-unpatched':
    'github:nixos/nixpkgs/9ee63abe2cbeea5bf15f319a0a5aaf0919fe22e8' (2023-12-20)
  → 'github:nixos/nixpkgs/38bbf09b10659db891af01288bd99a5e8e8d7861' (2023-12-21)
```
2023-12-21 18:41:55 +00:00
Colin 940f1140a3 disable webkit for erlang 2023-12-21 05:22:45 +00:00
Colin dbb6773634 audacity: disable first-run splashscreen 2023-12-21 04:08:05 +00:00
Colin 245a0544bc audacity: ship w/o the webkitgtk dependency 2023-12-21 03:10:38 +00:00
Colin cbd65f0816 argyllcms: build without qemu 2023-12-21 01:44:36 +00:00
Colin f8ea711f6a cross compilation: remove dead code 2023-12-21 00:20:42 +00:00
Colin ace94cf4d6 cross: use newer jbig2dec fix; send dconf upstream 2023-12-20 22:32:07 +00:00
Colin 829fde4336 bonsai: grab from upstream PR 2023-12-20 09:24:41 +00:00
Colin ba8774d6e5 hare-ev: remove (upstreamed) 2023-12-20 09:21:11 +00:00
Colin 7597853cda nixpkgs: 2023-12-19 -> 2023-12-20
```
• Updated input 'nixpkgs-next-unpatched':
    'github:nixos/nixpkgs/7467ab39493e17abc28c7f66179feb0a69a3dbd4' (2023-12-19)
  → 'github:nixos/nixpkgs/7749fa1e8c5e2f6a003fd4d3a2ed52924c4a7217' (2023-12-20)
• Updated input 'nixpkgs-unpatched':
    'github:nixos/nixpkgs/63dd8e1d2e81aaecb7de9b70ca143a607b19a3b9' (2023-12-19)
  → 'github:nixos/nixpkgs/9ee63abe2cbeea5bf15f319a0a5aaf0919fe22e8' (2023-12-20)
```
2023-12-20 09:08:42 +00:00
Colin 21077c0e34 cross: document rustPlatform cross compilation woes 2023-12-20 08:00:40 +00:00
Colin b6a45656af gui: add planify app 2023-12-19 22:31:14 +00:00
Colin 33d2f0895f signal-desktop-from-src: 6.40.0 -> 6.42.0 2023-12-19 20:53:33 +00:00
Colin 5cd92279b7 firefox-extensions: update to latest 2023-12-19 19:40:24 +00:00
Colin 4085f60018 firefox-extensions.bypass-paywalls-clean: 3.4.6.0 -> 3.4.7.0 2023-12-19 19:40:08 +00:00
Colin 3faee78717 docs: cross: update upstreaming status 2023-12-19 19:39:38 +00:00
Colin e96e07ac21 lemoa: todo: fold 2023-12-19 19:39:11 +00:00
Colin 0c34aec8ec lemoa: 0.4.0 -> 0.5.0 2023-12-19 18:08:16 +00:00
Colin 9d04037bec hare-ev: remove unnecessary rec 2023-12-19 17:44:04 +00:00
Colin 6af44bfd86 delfin: add an updateScript 2023-12-19 17:43:07 +00:00
Colin 5ceefa4d6d nixpkgs: 2023-12-18 -> 2023-12-19; uninsane-dot-org -> 2023-12-18
```
• Updated input 'nixpkgs-next-unpatched':
    'github:nixos/nixpkgs/ab47e6046f991dc98641ffbd9f881afcd304cfca' (2023-12-18)
  → 'github:nixos/nixpkgs/7467ab39493e17abc28c7f66179feb0a69a3dbd4' (2023-12-19)
• Updated input 'nixpkgs-unpatched':
    'github:nixos/nixpkgs/f61b7ce80fcc95be72c5c4fea19fba928072af8b' (2023-12-18)
  → 'github:nixos/nixpkgs/63dd8e1d2e81aaecb7de9b70ca143a607b19a3b9' (2023-12-19)
• Updated input 'sops-nix':
    'github:Mic92/sops-nix/21f2b8f123a1601fef3cf6bbbdf5171257290a77' (2023-12-17)
  → 'github:Mic92/sops-nix/f7db64b88dabc95e4f7bee20455f418e7ab805d4' (2023-12-18)
• Updated input 'uninsane-dot-org':
    'git+https://git.uninsane.org/colin/uninsane?ref=refs/heads/master&rev=ee722a13732b8d03bae56be8147333d144a02126' (2023-12-10)
  → 'git+https://git.uninsane.org/colin/uninsane?ref=refs/heads/master&rev=41354f754107376f5c9265eae89d07275f0305de' (2023-12-18)
• Removed input 'uninsane-dot-org/flake-utils'
• Removed input 'uninsane-dot-org/flake-utils/systems'
```
2023-12-19 16:44:22 +00:00
Colin f618925190 gui: ship openscad 2023-12-19 08:04:20 +00:00
Colin 68ae723543 nixos-prebuild: disable 2023-12-19 01:58:59 +00:00
Colin e4123759f5 nginx: only auto-index /share 2023-12-19 00:12:27 +00:00
Colin 5e727a83b3 slskd: disable debug logging 2023-12-18 18:09:58 +00:00
Colin dc288d9aa7 sane_ssdp: reduce verbosity 2023-12-18 18:00:12 +00:00
Colin 8d49c423ca transmission: disable debug logging 2023-12-18 17:58:04 +00:00
Colin c056564c9c nixpkgs: 2023-12-17 -> 2023-12-18
```
• Updated input 'nixpkgs-next-unpatched':
    'github:nixos/nixpkgs/ec02adf37f19c5dcd891ebf9f175ebb1c4fba80a' (2023-12-17)
  → 'github:nixos/nixpkgs/ab47e6046f991dc98641ffbd9f881afcd304cfca' (2023-12-18)
• Updated input 'nixpkgs-unpatched':
    'github:nixos/nixpkgs/91a00709aebb3602f172a0bf47ba1ef013e34835' (2023-12-17)
  → 'github:nixos/nixpkgs/f61b7ce80fcc95be72c5c4fea19fba928072af8b' (2023-12-18)
```
2023-12-18 16:39:25 +00:00
Colin efb2815fa5 uninsane.org: simplify the /share routing (and generalize it to other subdirectories) 2023-12-18 06:03:49 +00:00
Colin 577d149728 sxmo-utils: 2023-12-09 -> 2023-12-17 2023-12-18 00:05:14 +00:00
Colin 45c2bfaaeb nixpkgs: 2023-12-16 -> 2023-12-17
```
• Updated input 'nixpkgs-next-unpatched':
    'github:nixos/nixpkgs/029c707186e2b00f9e98f590b9a019320ccc21d7' (2023-12-16)
  → 'github:nixos/nixpkgs/ec02adf37f19c5dcd891ebf9f175ebb1c4fba80a' (2023-12-17)
• Updated input 'nixpkgs-unpatched':
    'github:nixos/nixpkgs/ceb8e4efd95627c0a86f106ba2afcd207ad5c6b3' (2023-12-16)
  → 'github:nixos/nixpkgs/91a00709aebb3602f172a0bf47ba1ef013e34835' (2023-12-17)
• Updated input 'sops-nix':
    'github:Mic92/sops-nix/d806e546f96c88cd9f7d91c1c19ebc99ba6277d9' (2023-12-10)
  → 'github:Mic92/sops-nix/21f2b8f123a1601fef3cf6bbbdf5171257290a77' (2023-12-17)
• Updated input 'sops-nix/nixpkgs-stable':
    'github:NixOS/nixpkgs/b8f33c044e51de6dde3ad80a9676945e0e4e3227' (2023-12-09)
  → 'github:NixOS/nixpkgs/a19a71d1ee93226fd71984359552affbc1cd3dc3' (2023-12-17)
```
2023-12-18 00:02:23 +00:00
Colin 16d4c9cdf2 nixpkgs: 2023-12-15 -> 2023-12-16
```
• Updated input 'nixpkgs-next-unpatched':
    'github:nixos/nixpkgs/9ad53b7aaf2b9e9e0d7e36ff4f8a779bf9b0195f' (2023-12-15)
  → 'github:nixos/nixpkgs/029c707186e2b00f9e98f590b9a019320ccc21d7' (2023-12-16)
• Updated input 'nixpkgs-unpatched':
    'github:nixos/nixpkgs/8a205497ba6f6938b7b516c184b7cf326ab15548' (2023-12-15)
  → 'github:nixos/nixpkgs/ceb8e4efd95627c0a86f106ba2afcd207ad5c6b3' (2023-12-16)
```
2023-12-17 21:26:41 +00:00
Colin 1063a89541 powerbutton/lid-switch: tune the desired actions 2023-12-17 21:08:16 +00:00
Colin fd0f709d50 git: remove a/ b/ prefixes from diffs 2023-12-17 20:48:31 +00:00
Colin 5edd10c332 move kiwix data to /var/lib/kiwix and persist 2023-12-16 03:05:15 +00:00
Colin 5c36ee79be kiwix: wikipedia snapshot: 2022-05 -> 2023-11 2023-12-16 01:54:34 +00:00
Colin b2bf9d63a3 mpv: don't assume xdg-terminal-exec is on PATH 2023-12-16 00:43:43 +00:00
Colin e297df011d xdg-terminal-exec: remove (it exists upstream now) 2023-12-16 00:41:51 +00:00
Colin bcac00d766 mpv: uosc: add a "cast" option to the menu 2023-12-16 00:39:36 +00:00
Colin c256d7ded5 koreader: implement copy-to-clipboard 2023-12-15 20:53:04 +00:00
Colin 7ba39ea831 koreader: document how to configure 2023-12-15 20:05:06 +00:00
Colin 28f90e4421 sxmo: lengthen voldown hold time before revealing terminal 2023-12-15 19:12:26 +00:00
Colin 5d66a1e6a5 hare-json: remove. it's been upstreamed as hareThirdParty.hare-json 2023-12-15 17:59:09 +00:00
Colin 1522eccfb3 nixpkgs: 2023-12-14 -> 2023-12-15
```
• Updated input 'nixpkgs-next-unpatched':
    'github:nixos/nixpkgs/248d12a902bfc36134176f31beba87b1fe30a3c1' (2023-12-14)
  → 'github:nixos/nixpkgs/9ad53b7aaf2b9e9e0d7e36ff4f8a779bf9b0195f' (2023-12-15)
• Updated input 'nixpkgs-unpatched':
    'github:nixos/nixpkgs/fd7914c96f7c006047e0154dd239aa2396478094' (2023-12-14)
  → 'github:nixos/nixpkgs/8a205497ba6f6938b7b516c184b7cf326ab15548' (2023-12-15)
```
2023-12-15 17:40:44 +00:00
Colin 728604e036 gui hosts: ship delfin 2023-12-15 08:44:32 +00:00
Colin 58d4f0d512 delfin: fix cross build 2023-12-15 08:43:10 +00:00
Colin 1f7fc8700e delfin: fix icons 2023-12-15 08:30:20 +00:00
Colin a933f8b512 delfin: persist server settings 2023-12-15 08:17:07 +00:00
Colin 83b83841d6 delfin: init at 0.2.1 2023-12-15 08:08:11 +00:00
Colin ef8a8bc246 go2tv: document known-good format matrix 2023-12-15 03:22:03 +00:00
Colin 136ddda055 nautilus: enable the A/V pane 2023-12-15 02:57:25 +00:00
Colin 5fbf2166f1 moby: enable go2tv/catt 2023-12-15 02:33:18 +00:00
Colin ba7bc3bd03 go2tv: docs: show that some mp4s work w/o transcoding 2023-12-15 02:32:44 +00:00
Colin 311412c5ee go2tv: configure firewall as needed 2023-12-15 00:50:58 +00:00
Colin d18e94ea87 feeds: subscribe to linmob.net 2023-12-14 22:20:30 +00:00
Colin 6a548366cd sway: enable gvfs to support remote filesystems 2023-12-14 21:59:42 +00:00
Colin 54d2e875f6 koreader: disable image-based feeds; text only 2023-12-14 20:51:09 +00:00
Colin c5cc0e90a3 wob: theme 2023-12-14 20:49:48 +00:00
Colin 50ce8da68c sxmo: remove sxmo-set-permissions job. upstream refactored it to not exist and they use doas now instead 2023-12-14 19:17:38 +00:00
Colin 3449bfc2a9 sxmo: bonsai: tune timings: powerhold: 1000ms -> 900ms; volhold: 400ms -> 600ms
this should improve: (1) awkwardly long power hold until window is killed, (2) accidentally seeking the media player when i meant to only adjust volume
2023-12-14 19:12:08 +00:00
Colin 18d301d9dd cross: dino: remove patch which has been upstreame into nixpkgs 2023-12-14 19:08:08 +00:00
Colin 357bf7f4ca nixpkgs: 2023-12-13 -> 2023-12-14
```
• Updated input 'nixpkgs-next-unpatched':
    'github:nixos/nixpkgs/022a4231437548b719eb9e5b8bae1a7f6117fa93' (2023-12-13)
  → 'github:nixos/nixpkgs/1aca249f1846b6bb7a156b809c312de58945c85a' (2023-12-14)
• Updated input 'nixpkgs-unpatched':
    'github:nixos/nixpkgs/8556109c1f04574ad59dcb0c4882f44eb27ea581' (2023-12-13)
  → 'github:nixos/nixpkgs/8e23dec5ac5ebc36057e980d4e6a3eb6a44da74b' (2023-12-14)
```
2023-12-14 18:50:36 +00:00
Colin f763448d6f go2tv: docs: firewall 2023-12-14 10:56:07 +00:00
Colin deb828e98a programs: enable go2tv 2023-12-14 10:39:33 +00:00
Colin cbca41accf permit moby to ssh into my devices 2023-12-14 10:35:36 +00:00
Colin ac22e07388 sxmo: bring wob service in-house 2023-12-14 10:33:33 +00:00
Colin cb0d9e077b programs: enable catt 2023-12-14 08:41:16 +00:00
Colin 58105e9b62 fix open-in-mpv extension 2023-12-14 07:26:50 +00:00
Colin 32fb79d43d dino: auto-start 2023-12-14 01:57:32 +00:00
Colin f129afdae8 flare-signal: document linking/registration issue 2023-12-14 01:56:54 +00:00
Colin 29cde5e724 firefox: support Element and Nheko URIs 2023-12-13 23:14:04 +00:00
Colin 3467a5df48 feeds: subscribe Origin Stories 2023-12-13 22:31:58 +00:00
Colin 694dd59e27 feeds: subscribe bitsaboutmoney 2023-12-13 22:29:22 +00:00
Colin 540b3e4af2 firefox: auto-dispatch mpv:// URI handlers 2023-12-13 21:41:06 +00:00
Colin e0211646b2 firefox: extraNativeMessagingHosts -> nativeMessagingHosts 2023-12-13 21:34:59 +00:00
Colin 94dcb0f08a firefox: ship open-in-mpv extension 2023-12-13 21:34:34 +00:00
Colin 0b38ed2f2a firefox: docs: clarify fxCast behavior 2023-12-13 20:58:45 +00:00
Colin 15622251ef firefox: define the fx_cast addon 2023-12-13 20:51:57 +00:00
Colin 4eb79a4a5c gui: ship pwvucontrol 2023-12-13 20:43:16 +00:00
Colin 9f54413d46 pwvucontrol: support cross compilation 2023-12-13 20:02:48 +00:00
Colin f467898a04 sync TODO 2023-12-13 17:41:31 +00:00
Colin 413c8a4fef sponsorblock: re-disable the first-launch nag 2023-12-13 17:37:48 +00:00
Colin d4440736dd nixpkgs: 2023-12-12 -> 2023-12-13
```
• Updated input 'nixpkgs-next-unpatched':
    'github:nixos/nixpkgs/a3eee1a84ec0aadb7f567175d79574d63dcecff2' (2023-12-12)
  → 'github:nixos/nixpkgs/022a4231437548b719eb9e5b8bae1a7f6117fa93' (2023-12-13)
• Updated input 'nixpkgs-unpatched':
    'github:nixos/nixpkgs/47bca5bb0209496389f3a70d2e388c5531831d60' (2023-12-12)
  → 'github:nixos/nixpkgs/8556109c1f04574ad59dcb0c4882f44eb27ea581' (2023-12-13)
```
2023-12-13 16:27:18 +00:00
Colin bb1ceaed12 gui: disable newsflash
it doesn't cross compile. also, gnome-feeds would be a better implementation if i can get the package updated
2023-12-13 16:27:18 +00:00
Colin 51a90136ea sxmo-utils: default preferSystemd to true
this probably removes some duplicate sxmo-utils packages from my install
2023-12-13 16:27:18 +00:00
Colin e7cfa19897 sxmo-utils: use xdg-open in sxmo_open.sh 2023-12-13 16:27:18 +00:00
Colin 41411e005f flare-signal-nixified: document experience with 10.1-xx seies 2023-12-13 08:10:50 +00:00
Colin c22119f69b flare-signal-nixified: enable primary device registration 2023-12-13 07:17:17 +00:00
Colin 354a4e523b flare-signal-nixified: 0.10.1-beta.4 -> 0.10.1-beta.6 2023-12-13 07:01:16 +00:00
Colin b34b8a249c nixpatches: link but dont apply gnome-feeds update 2023-12-13 03:47:20 +00:00
Colin 508257da87 newsflash: enable podcasts/videos; document 2023-12-13 03:45:07 +00:00
Colin fadcf7d7c1 mpv: youtube: associate with another URL variant 2023-12-13 03:44:57 +00:00
Colin 7f43360120 newsflash: enable 2023-12-13 03:06:08 +00:00
Colin f9a8389f58 gui: switch from gthumb to loupe for image viewing 2023-12-13 02:29:43 +00:00
Colin f77a18a655 cross: enable Loupe for cross compilation 2023-12-13 02:00:43 +00:00
Colin 7e4d6853f5 cross: glycin-loaders: simplify 2023-12-13 01:48:26 +00:00
Colin 5615c7cf6e cross: glycin-loader: fix compilation 2023-12-13 01:40:36 +00:00
Colin 54c51a5636 fractal-latest: remove old comments 2023-12-12 21:02:09 +00:00
Colin 1119726c64 docs: koreader: dictionary installation 2023-12-12 20:56:46 +00:00
Colin 101a2bc3af hare-ev: 2023-10-30 -> 2023-12-04 2023-12-12 20:45:46 +00:00
Colin f4bfaf3581 firefox-extensions: update to latest 2023-12-12 20:44:56 +00:00
Colin e8dfc1dc71 sxmo-utils: 2023-11-26 -> 2023-12-09 2023-12-12 20:44:27 +00:00
Colin ef26b9085c nixpatches: remove merged numpy patch 2023-12-12 20:37:55 +00:00
Colin 85d9c11733 sxmo: add an option to disable wob 2023-12-12 19:00:43 +00:00
Colin 6d41f1f1db sxmo: re-enable audio
SXMO_NO_AUDIO disables too much. i just want to not launch the daemons, and customizing sxmo_hook_start is enough for that
2023-12-12 18:59:31 +00:00
Colin f9434215db nixpkgs: 2023-12-11 -> 2023-12-12
```
• Updated input 'nixpkgs-next-unpatched':
    'github:nixos/nixpkgs/43f7188eba3bc2eb73031bf8f9ad1a02224b6be1' (2023-12-12)
  → 'github:nixos/nixpkgs/a3eee1a84ec0aadb7f567175d79574d63dcecff2' (2023-12-12)
• Updated input 'nixpkgs-unpatched':
    'github:nixos/nixpkgs/a8dac2fa64af92360f126d2e20f47cd4ccf1c905' (2023-12-11)
  → 'github:nixos/nixpkgs/47bca5bb0209496389f3a70d2e388c5531831d60' (2023-12-12)
```
2023-12-12 18:40:06 +00:00
Colin 83d402eb77 nixos-prebuild: fix typo 2023-12-12 18:39:46 +00:00
Colin cec48e0270 nixpkgs: 2023-12-11 -> 2023-12-12
```
• Updated input 'nixpkgs-next-unpatched':
    'github:nixos/nixpkgs/f81605387c494a302c16901ac6459e877c45f913' (2023-12-11)
  → 'github:nixos/nixpkgs/43f7188eba3bc2eb73031bf8f9ad1a02224b6be1' (2023-12-12)
• Updated input 'nixpkgs-unpatched':
    'github:nixos/nixpkgs/e97b3e4186bcadf0ef1b6be22b8558eab1cdeb5d' (2023-12-11)
  → 'github:nixos/nixpkgs/a59c7364955e5f32798d0314fbb6aae347ff064d' (2023-12-12)
```
2023-12-12 09:34:52 +00:00
Colin 322038ca21 flake.nix: expose the patched nixpkgs as an output, for debugging 2023-12-12 09:34:28 +00:00
Colin 6395e60f17 nixpatches: fix date check to be based on when upstream nixpkgs was updated, not this repo 2023-12-12 09:34:28 +00:00
Colin 7969eb12d6 cross: partially fix glycin-loaders 2023-12-12 09:34:28 +00:00
Colin f942e2c5a9 nixpatches: revise numpy master merge date 2023-12-12 09:34:28 +00:00
Colin 089f676c4a gui: switch back to gthumb; loupe does not cross compile yet 2023-12-12 08:44:08 +00:00
Colin d2012b4e40 notejot: fix store typo 2023-12-12 07:55:18 +00:00
Colin a319017567 gui: switch from gthumb to loupe 2023-12-12 07:38:13 +00:00
Colin a669c9c88b gui: add Loupe image viewer specialization 2023-12-12 07:36:21 +00:00
Colin 8391e500c9 gui: handheld: ship notejot 2023-12-12 07:31:00 +00:00
Colin 5f27c8fddf servo: nixos-prebuild: cleanup garbage better 2023-12-12 06:47:47 +00:00
Colin a4ae41e627 servo: nixos-prebuild: dont ship jobs to other builders 2023-12-12 06:44:08 +00:00
Colin a5126ae8fb cross: re-enable jbig2dec fix (turns out it is necessary) 2023-12-12 06:20:43 +00:00
Colin f33776e0ed flake: check.nur: simplify nixpkgs path 2023-12-12 03:53:54 +00:00
Colin 189eccb01e nixpatches: improve patch conditionality 2023-12-12 03:22:25 +00:00
Colin 4336d68e6f flake: fix CLI argument quoting 2023-12-12 02:16:06 +00:00
Colin 4f45adb063 gui: disable slic3r 2023-12-12 02:16:06 +00:00
Colin e6b16624c3 ntfy-waiter: fix port typo in service description 2023-12-12 02:15:01 +00:00
Colin e87d2f545c sftpgo: fix systemd after/wants typo 2023-12-12 02:14:45 +00:00
Colin 69bc219efa ports: fix systemd RandomizedDelaySec typo 2023-12-12 02:14:27 +00:00
Colin e4f1cfb53f servo: deploy a service which periodically rebuilds my nix config to populate the cache 2023-12-12 02:13:59 +00:00
Colin f1e59061d7 flake: check.hostConfigs: build *-light first even for -next 2023-12-11 23:00:15 +00:00
Colin cd312e41d4 flake: remove check.hostConfigs variants 2023-12-11 22:51:58 +00:00
Colin 1bd2d0dfc1 flake: remove separate nixpkgs-staging and staging-next 2023-12-11 22:33:38 +00:00
Colin 49235a4d83 flake: add check.hostConfigsNext 2023-12-11 22:23:14 +00:00
Colin e7826e0648 flake: add host outputs for nixpkgs-staging and nixpkgs-staging-next 2023-12-11 22:15:35 +00:00
Colin e7edb4739f flake.nix: fix for better caching on non-cross builds 2023-12-11 21:24:33 +00:00
Colin 4a622c558e signal-desktop-from-src: fix nodejs to 18.x 2023-12-11 21:07:42 +00:00
Colin bfe69a4708 flake: fix patching process to assume less about nixpkgs internals 2023-12-11 21:07:17 +00:00
Colin 688b4edf13 mpv: handle shorthand youtu.be URLs too 2023-12-11 16:19:51 +00:00
Colin 7ca2e5f539 nixpkgs: 2023-12-10 -> 2023-12-11; uninsane-dot-org
```
• Updated input 'nixpkgs-unpatched':
    'github:nixos/nixpkgs/64292b08dc5d1538d7ab88817a90b2713c34c8a0' (2023-12-10)
  → 'github:nixos/nixpkgs/e97b3e4186bcadf0ef1b6be22b8558eab1cdeb5d' (2023-12-11)
• Updated input 'uninsane-dot-org':
    'git+https://git.uninsane.org/colin/uninsane?ref=refs/heads/master&rev=8f7a3f3f7ce95f21131f94418c522062a8dc2055' (2023-12-09)
  → 'git+https://git.uninsane.org/colin/uninsane?ref=refs/heads/master&rev=ee722a13732b8d03bae56be8147333d144a02126' (2023-12-10)
```
2023-12-11 06:23:43 +00:00
Colin 4c5fb74c7d feeds: subscribe to kosmosghost 2023-12-11 04:55:47 +00:00
Colin ad82bb2630 mimeo: fix infinite loop when dispatching non-specialized http/s URLs 2023-12-11 04:52:49 +00:00
Colin 008a6192d4 mpv: associate with https://youtube.com/... 2023-12-11 04:52:49 +00:00
Colin f4d4c7a92a sxmo-utils: remove gojq and just use normal jq 2023-12-11 04:44:45 +00:00
Colin 0a41192eb1 sxmo-utils: remove gojq requirement 2023-12-11 03:27:58 +00:00
Colin f044fcb584 gnome-frog: fix cross compilation 2023-12-11 03:27:46 +00:00
Colin 9e2c0a7112 megapixels: simplify zbar fix 2023-12-11 03:27:29 +00:00
Colin d2e1441d1f sane-clone: grab package data from ~/nixos instead of nixpkgs
this way i can clone my own packages
2023-12-10 17:28:30 +00:00
Colin abbd28a634 git: add an "amend" alias 2023-12-10 17:01:58 +00:00
Colin b309402784 nixpkgs: update; sops-nix: 2023-12-04 -> 2023-12-10
```
• Updated input 'nixpkgs-unpatched':
    'github:nixos/nixpkgs/852e0ea0e8e1bd174bf1af9706f6b855319a5f1d' (2023-12-10)
  → 'github:nixos/nixpkgs/64292b08dc5d1538d7ab88817a90b2713c34c8a0' (2023-12-10)
• Updated input 'sops-nix':
    'github:Mic92/sops-nix/e91ece6d2cf5a0ae729796b8f0dedceab5107c3d' (2023-12-04)
  → 'github:Mic92/sops-nix/d806e546f96c88cd9f7d91c1c19ebc99ba6277d9' (2023-12-10)
• Updated input 'sops-nix/nixpkgs-stable':
    'github:NixOS/nixpkgs/dc01248a9c946953ad4d438b0a626f5c987a93e4' (2023-12-03)
  → 'github:NixOS/nixpkgs/b8f33c044e51de6dde3ad80a9676945e0e4e3227' (2023-12-09)
```
2023-12-10 16:50:24 +00:00
Colin a7d3ac95aa nginx: uninsane.org: redirect common feed URIs to the canonical feed 2023-12-10 16:31:30 +00:00
Colin 255da2b976 docs: gtkcord4: explain how to disable notif sounds 2023-12-10 16:26:26 +00:00
Colin 8cdb4aa53d docs: feedbackd: show how to trigger a sound 2023-12-10 16:25:13 +00:00
Colin 4d5b462b2c swaync: add rules to help with debugging 2023-12-10 16:18:55 +00:00
Colin f7a318c937 modules/users: fix services to specify PATH with correct precedence 2023-12-10 15:18:26 +00:00
Colin eb5b9b083c mpv-uosc-latest: remove (no longer needed)
nixpkgs mpv-uosc was recently updated, seems to work well out-of-the-box
2023-12-10 02:32:33 +00:00
Colin e0d9a59d10 nixpkgs: 2023-12-09 -> 2023-12-10
```
• Updated input 'nixpkgs-unpatched':
    'github:nixos/nixpkgs/61b691834e5ce9590c44690e73392ee7e001d45a' (2023-12-09)
  → 'github:nixos/nixpkgs/852e0ea0e8e1bd174bf1af9706f6b855319a5f1d' (2023-12-10)
```
2023-12-10 02:13:59 +00:00
Colin 119ac4cf95 cross: start upstreaming wob patch 2023-12-09 20:20:10 +00:00
Colin f53d0e16ff cross: start upstreaming dino patch 2023-12-09 20:11:36 +00:00
Colin 5321ccc980 uninsane-dot-org: mobile-linux-push-notifications: fix src-port -> dest-port typo 2023-12-09 18:28:28 +00:00
Colin e8a6fa3506 uninsane-dot-org: mobile-linux-push-notifications: fix link typo 2023-12-09 18:22:58 +00:00
Colin 26e1cc2a7a uninsane-dot-org: revise linux-mobile-notifications for sxmo integration 2023-12-09 18:16:32 +00:00
Colin cec4b4b78e sway: fix app_id for gtkcord4 2023-12-09 16:48:17 +00:00
Colin 7ce3cb79c9 switch from abaddon -> gtkcord4 as default discord client 2023-12-09 16:45:40 +00:00
Colin 4c553b1525 gtkcord4: fix to Default_keyring instead of login.keyring 2023-12-09 16:42:27 +00:00
Colin 84ec809fb5 gui: ship gnome.seahorse 2023-12-09 15:02:00 +00:00
Colin f49e466ce8 flake: add a "hostSystems" target 2023-12-09 14:11:37 +00:00
Colin 402baa1011 uninsane-dot-org: 2023-12-03 -> 2023-12-09; nixpkgs 2023-12-09 14:01:51 +00:00
Colin 01de6f84cf feeds: subscribe to Louis Rossmann 2023-12-09 08:14:16 +00:00
Colin e1e9047664 nixpkgs: 2023-12-08 -> 2023-12-09
```
• Updated input 'nixpkgs-unpatched':
    'github:nixos/nixpkgs/c89d45747b4ba510caa6b2704b574484b6f93e96' (2023-12-08)
  → 'github:nixos/nixpkgs/d02151974acd5d2e1a47cee3245d97e130c3ecfa' (2023-12-09)
```
2023-12-09 05:51:01 +00:00
Colin 0be9831b0c cross: update upstreaming status 2023-12-08 22:49:18 +00:00
Colin 1db9d4d10b roles/build-machine: re-enable big-parallel 2023-12-08 20:20:55 +00:00
Colin ccef9d1414 nixpkgs: update
```
• Updated input 'nixpkgs-unpatched':
    'github:nixos/nixpkgs/f63903a90faf6cce169eb2bcc93fb45c457b1d31' (2023-12-08)
  → 'github:nixos/nixpkgs/c89d45747b4ba510caa6b2704b574484b6f93e96' (2023-12-08)
```
2023-12-08 20:14:44 +00:00
Colin 8b09599c5e sane-sync-music: update files if mtime differs
*presumably* most tagging software updates the mtime when tags change, but i didn't actually check
2023-12-08 15:07:12 +00:00
Colin 368099e95a cross: ostree: apply Mindavi's PR feedback 2023-12-08 15:00:29 +00:00
Colin 34342b7f48 sync.moby: reduce job count 2023-12-08 14:52:11 +00:00
Colin fcc7ebf5c1 sync.desko: fix mountpoint typo 2023-12-08 12:24:00 +00:00
Colin 114bdb30e8 flake: sync-*: refactor 2023-12-08 10:25:01 +00:00
Colin 4caf61387e sane-sync-music: add --compress and --compat options 2023-12-08 10:24:48 +00:00
Colin ab020327f4 nixpkgs: 2023-12-07 -> 2023-12-08
```
• Updated input 'nixpkgs-unpatched':
    'github:nixos/nixpkgs/449c6fb06be60edd4233bb9fe748a0754df185b1' (2023-12-07)
  → 'github:nixos/nixpkgs/f63903a90faf6cce169eb2bcc93fb45c457b1d31' (2023-12-08)
```
2023-12-08 04:26:09 +00:00
Colin bacad0f111 sane-sync-music: add a --force-copy flag 2023-12-07 19:00:51 +00:00
Colin 9619c6d2e1 sane-sync-music: refactor to facilitate future tweaks 2023-12-07 18:49:01 +00:00
Colin 07c7050335 docs: sane-sync-music: document a bug 2023-12-07 18:17:21 +00:00
Colin 24a6fba008 sane-tag-music: remove prefer-path flag to force 2023-12-07 18:08:41 +00:00
Colin 51c53b2103 sane-tag-music: allow manually specifying tags via CLI 2023-12-07 18:08:41 +00:00
Colin 4ae01aa353 sane-tag-music: auto-create id3 tags for MP3 files 2023-12-07 18:08:41 +00:00
Colin 0db1e3728a sway: dont ship custom gtk icons
the GNOME 45 update makes it so default adwaita icons are reliable on moby
2023-12-07 17:56:56 +00:00
Colin 83c7657951 sane-tag-music: better handle track names for compilation albums 2023-12-07 17:29:10 +00:00
Colin e20386299f sane-tag-music: add a --force flag 2023-12-07 17:29:10 +00:00
Colin d6e43effde sane-tag-music: better handle verbose track names 2023-12-07 17:29:10 +00:00
Colin bbe8f4a852 sane-tag-music: support opus, aac (limited) 2023-12-07 17:29:10 +00:00
Colin 8c98e38053 sane-tag-music: better handling of "Various Artists" 2023-12-07 17:29:10 +00:00
Colin 96a36d4d6b sane-tag-music: support ogg files 2023-12-07 17:29:10 +00:00
Colin 366a9cea0d fractal: ship optimized build 2023-12-07 16:39:36 +00:00
Colin e810774202 fractal,flare: note that release is incompatible with cross compilation 2023-12-07 16:39:36 +00:00
Colin f2de781cbc nixpkgs: update
```
• Updated input 'nixpkgs-unpatched':
    'github:nixos/nixpkgs/17411d69e415b5f4910f9a66f89dc6a1866cb410' (2023-12-07)
  → 'github:nixos/nixpkgs/449c6fb06be60edd4233bb9fe748a0754df185b1' (2023-12-07)
```
2023-12-07 16:39:36 +00:00
Colin 7f08ad01db sane-tag-music: handle more character encoding edgecases 2023-12-07 15:52:28 +00:00
Colin 2c66d8cad0 sane-tag-music: don't crash when file opening fails 2023-12-07 15:51:51 +00:00
Colin fc4803f3fd sane-tag-music: fix bug that song would be extracted into a list of chars 2023-12-07 15:51:17 +00:00
Colin 5a6d1dd3c2 sane-tag-music: don't write empty tags 2023-12-07 13:55:45 +00:00
Colin ba42ff7469 sane-tag-music: support mp3 2023-12-07 13:55:45 +00:00
Colin a6cc698c69 signal-desktop-from-src: simplify build process 2023-12-07 13:49:07 +00:00
Colin 19b0a62fee flake: support cross deployments from non-binfmt machines 2023-12-07 13:49:07 +00:00
Colin 1a6ce11b07 disable binfmt emulation on my build machines 2023-12-07 13:49:07 +00:00
Colin 49d8578b83 signal-desktop-from-src: build without emulation 2023-12-07 13:49:07 +00:00
Colin 53c0cd570a update todos: moby: install games 2023-12-07 13:49:07 +00:00
Colin 4d84bdafed koreader: cross-compile without binfmt 2023-12-07 13:49:07 +00:00
Colin 059cd38e7b cross: comment out the firefox hacks
they're unused and broken anyway
2023-12-07 13:49:07 +00:00
Colin 8f89d11435 cross: fix wob compilation 2023-12-07 13:49:07 +00:00
Colin 243f78ff0e nixpkgs: 2023-12-06 -> 2023-12-07
```
• Updated input 'nixpkgs-unpatched':
    'github:nixos/nixpkgs/2bea1bc0f98bb316e26d1a5a17df58fce54ca8c4' (2023-12-06)
  → 'github:nixos/nixpkgs/17411d69e415b5f4910f9a66f89dc6a1866cb410' (2023-12-07)

```
2023-12-07 13:49:07 +00:00
Colin 21be1b392e servo: switch external storage to zfs pool 2023-12-07 08:57:26 +00:00
Colin 8b71e6ac5a sane-stop-all-servo: update with newer services 2023-12-07 05:36:09 +00:00
Colin f5f6298284 re-enable flare-signal 2023-12-06 19:27:47 +00:00
Colin c8370bc290 cross: tried to get cinny to cross-compile, not quite there 2023-12-06 19:26:18 +00:00
Colin abc0ac88d3 flare-signal-nixified: cross-compile without emulation 2023-12-06 19:25:09 +00:00
Colin 9da604c0af fractal-nixified: fix build 2023-12-06 19:22:45 +00:00
Colin 801da9d321 cross: add a `cantBinfmt` option to force a package to be built on a non-binfmt machine 2023-12-06 19:20:39 +00:00
Colin ac3b0b873b transmission: increase speed limits 2023-12-06 18:03:08 +00:00
Colin 9beee146f2 feeds: sort Youtube feeds 2023-12-06 16:49:40 +00:00
Colin 2d06401f3c feeds: subscribe to Tom Scott 2023-12-06 16:19:37 +00:00
Colin 2db56f2499 feeds: subscribe to TheB1M 2023-12-06 16:18:03 +00:00
Colin 63ea6d7002 feeds: subscribe to Exurb1a 2023-12-06 16:16:29 +00:00
Colin 3e2523cc2c feeds: subscribe to Cold Fusion 2023-12-06 16:15:25 +00:00
Colin ad3f5e305e feeds: subscribe to Vox
don't @ me
2023-12-06 16:13:08 +00:00
Colin aa5b9e3db3 user services: wrap with user PATH
notably, this alllows Fractal to open links with the preferred browser
2023-12-06 16:09:07 +00:00
Colin 46123719e9 feeds: subscribe to Vihart 2023-12-06 16:09:07 +00:00
Colin 16bce990c6 feeds: subscribe to PolyMatter 2023-12-06 16:09:07 +00:00
Colin d55e387187 feeds: subscribe to Vsauce 2023-12-06 16:09:06 +00:00
Colin e75c3375dc feeds: subscribe to Channel5 News 2023-12-06 16:08:50 +00:00
Colin b1c7cb367a feeds: subcsribe to hbomberguy 2023-12-06 15:47:39 +00:00
Colin d63d660ec2 feeds: subscribe to ContraPoints 2023-12-06 15:45:43 +00:00
Colin f24a0a84b5 gpodder: ship on all systems
it's more useful on desko/lappy now that i can ship Youtube feeds.
2023-12-06 15:36:41 +00:00
Colin 9704dcc997 feeds: add support for video; subscribe to videos in gpodder 2023-12-06 15:36:05 +00:00
Colin 80875d6312 feeds: subscribe to Technology Connections 2023-12-06 15:35:38 +00:00
Colin 79f4c9f98c flare-signal-nixified: support defaultCrateOverrides 2023-12-06 14:22:16 +00:00
Colin e2735e151e cross: make `buildInQemu` more flexible to non-stdenv builders 2023-12-06 14:08:46 +00:00
Colin afb4a88830 moby: enable dialect 2023-12-06 14:00:34 +00:00
Colin 84dc8cfd23 cross: build dialect so that it doesn't depend on build binaries at runtime 2023-12-06 13:56:39 +00:00
Colin 6ef52677ee nixpkgs: 2023-12-05 -> 2023-12-06
```
• Updated input 'nixpkgs-unpatched':
    'github:nixos/nixpkgs/3532bd963c2a1417e7d5d9a13b90f3ab8e6b6538' (2023-12-05)
  → 'github:nixos/nixpkgs/2bea1bc0f98bb316e26d1a5a17df58fce54ca8c4' (2023-12-06)
```
2023-12-06 01:45:09 +00:00
Colin 73c0e9a742 cross: update error message for fractal 2023-12-05 17:02:33 +00:00
Colin 7ff259073e swaync: decrease mpris icon size 64 -> 48px 2023-12-05 17:01:57 +00:00
Colin 2bf10c60ee swaynotificationcenter: fix mpris icon height even when it fails to load an icon 2023-12-05 16:57:24 +00:00
Colin 72f4b43b54 sxmo: better input mappings 2023-12-05 15:12:08 +00:00
Colin e1ced7a7fe sxmo_hook_inputhandler.sh: remove unused VOL_INCR_2 variable 2023-12-05 10:08:16 +00:00
Colin f41b1cf3b5 sxmo: enable powertoggle -> volup/down for seeking even when screen is on
it's not currently mapped to anything else, so...
2023-12-05 10:04:01 +00:00
Colin 70693c2052 sxmo: simplify shortcuts
remove power -> volup DE menu map -- it's accessible via sysmenu now

replace power -> voldown terminal map with just voldown hold
2023-12-05 10:02:19 +00:00
Colin f61d7d0f7d sxmo: decrease power-button timeout 2023-12-05 08:54:18 +00:00
Colin 3d7ea75bfc sxmo: simplify XDG_SESSION_TYPE fix 2023-12-05 08:50:19 +00:00
Colin f350d7949c sxmo: fix missing XDG_SESSION_TYPE env var 2023-12-05 08:06:14 +00:00
Colin 10c21714ef tangram: build without emulation 2023-12-05 06:02:38 +00:00
Colin 2dbae69d50 komikku: build without emulation 2023-12-05 05:16:40 +00:00
Colin 4cc5eed884 feeds: subscribe to srslywrong.com 2023-12-05 04:25:25 +00:00
Colin 9967868e80 nixpkgs: update
```
• Updated input 'nixpkgs-unpatched':
    'github:nixos/nixpkgs/d90955124ff3af2d469bf10000b09b9d7dfc5240' (2023-12-04)
  → 'github:nixos/nixpkgs/3532bd963c2a1417e7d5d9a13b90f3ab8e6b6538'
```
2023-12-05 02:04:40 +00:00
Colin bb79752101 cross: gnome-online-accounts: disable unnecessary needsBinfmt
perhaps this was fixed in gnome 44 -> gnome 45
2023-12-04 17:50:12 +00:00
Colin ebd24e5999 cross: evolution-data-server: build w/o binfmt/qemu 2023-12-04 17:50:12 +00:00
Colin 7a3fa88559 cross: gnome.mutter: build without binfmt/qemu 2023-12-04 17:50:12 +00:00
Colin cff4fdc5f5 feeds: unsubscribe from Daniel Huberman 2023-12-04 12:36:10 +00:00
Colin e7fc52ff20 cross: build neovim w/o binfmt/qemu 2023-12-04 11:26:28 +00:00
Colin b061aff76e IOCTL_... errrors: track mesa 23.3.1 PR which SHOULD fix them? 2023-12-04 11:07:59 +00:00
Colin b14214761b cross: get jbig2dec to build without binfmt/qemu 2023-12-04 11:07:53 +00:00
Colin 9bd684a971 cross: waybar: build without binfmt/qemu 2023-12-04 08:57:57 +00:00
Colin 89286be9e1 cross: tidy: remove explicit "final." 2023-12-04 07:42:11 +00:00
Colin 991a6a7552 cross: build libpanel w/o binfmt/qemu 2023-12-04 07:26:56 +00:00
Colin 04af5558b5 ibus: cross compile without binfmt/qemu 2023-12-04 06:59:00 +00:00
Colin 3ee487ca94 cross: fix flatpak to not require binfmt/qemu 2023-12-04 05:05:26 +00:00
Colin 20352ff170 calls: cross compile without binfmt/qemu 2023-12-04 04:24:53 +00:00
Colin 819894ccbf dino: compile without binfmt/qemu 2023-12-04 04:02:07 +00:00
Colin aa46c4cb8f chatty: remove redundant evolution-data-server override: its done in overlays/preferences.nix 2023-12-04 02:09:52 +00:00
Colin 1c75977da7 firefox-extensions: update bypass-paywalls-clean, ublacklist, ublock-origin 2023-12-04 01:47:35 +00:00
Colin c099483305 cross: mark as needsBinfmtOrQemu those packages which can build in either 2023-12-04 01:47:35 +00:00
Colin 959e200837 cross: remove upstreamed vulkan-tools fix 2023-12-04 00:38:54 +00:00
Colin d9f0bdb089 nixpkgs, sops-nix, uninsane-dot-org -> 2023-12-04
```
• Updated input 'nixpkgs-unpatched':
    'github:nixos/nixpkgs/0616776a5e4072e9455e3966d1fce58feefa7a58' (2023-12-03)
  → 'github:nixos/nixpkgs/d90955124ff3af2d469bf10000b09b9d7dfc5240' (2023-12-04)
• Updated input 'sops-nix':
    'github:Mic92/sops-nix/e19071f9958c8da4f4347d3d78790d97e98ba22f' (2023-12-02)
  → 'github:Mic92/sops-nix/8bca48cb9a12bbd8766f359ad00336924e91b7f7' (2023-12-03)
• Updated input 'sops-nix/nixpkgs-stable':
    'github:NixOS/nixpkgs/dfb95385d21475da10b63da74ae96d89ab352431' (2023-11-25)
  → 'github:NixOS/nixpkgs/dc01248a9c946953ad4d438b0a626f5c987a93e4' (2023-12-03)
• Updated input 'uninsane-dot-org':
    'git+https://git.uninsane.org/colin/uninsane?ref=refs/heads/master&rev=8a4273489d945f21d7e0ca6aac952460c7d4c391' (2023-11-09)
  → 'git+https://git.uninsane.org/colin/uninsane?ref=refs/heads/master&rev=f865fdd262e249bb1b829900f99cbb67f21a0365' (2023-12-03)
```
2023-12-04 00:34:27 +00:00
Colin b50d723158 servo: nginx: remove "root" in uninsane share path 2023-12-03 15:53:29 +00:00
Colin 14739af1b9 servo: nginx: dont follow symlinks in the /share directory 2023-12-03 15:51:01 +00:00
Colin 747511c6a8 waybar: link to a better playerctl integration 2023-12-03 15:19:55 +00:00
Colin c96f9cd4de ibus: 1.5.29-rc1 -> 1.5.29
TODO: cleanup this patch and then send to nixpkgs :)
2023-12-03 14:41:56 +00:00
Colin 31da2f10c9 sane-wipe: support dino 2023-12-03 14:40:14 +00:00
Colin 9e51d7f150 sane-wipe-*: consolidate into one sane-wipe binary 2023-12-03 14:25:35 +00:00
Colin b1b1f8d659 cross: vulkan-tools: link to upstream PR 2023-12-03 14:02:57 +00:00
Colin 0c0e7881b1 signal-desktop: document a known bug 2023-12-03 13:58:30 +00:00
Colin 6c2f07aab1 cross: disable gnome-2048 fix in light of vala fix being upstreamed (still in staging) 2023-12-03 13:46:01 +00:00
Colin 84d2b31c51 cross: fix vulkan-tools compilation 2023-12-03 13:29:44 +00:00
Colin 2f23d916f5 sxmo: disable xwayland 2023-12-03 13:03:57 +00:00
Colin d413f4a782 gtkcord4: partially re-enable 2023-12-03 13:01:52 +00:00
Colin c2080cfe1e sway: position Signal on the correct desktop even when run without Xwayland 2023-12-03 13:00:29 +00:00
Colin c687d059c5 signal-desktop: support wayland even when running as a service 2023-12-03 13:00:29 +00:00
Colin a131358c36 signal-desktop: support wayland 2023-12-03 13:00:29 +00:00
Colin 0ba012fd7c guis: ship vulkan-tools 2023-12-03 13:00:29 +00:00
Colin b43a693a1e nginx: render directory listings for uninsane.org/share 2023-12-03 09:00:45 +00:00
Colin 6f4072efdd servo: enable bitcoind 2023-12-03 08:49:24 +00:00
Colin 908984c285 cross: mark mutter as needs binfmt 2023-12-03 02:10:34 +00:00
Colin 8772aaec65 zfs: dont ship on moby 2023-12-03 00:58:49 +00:00
Colin f3d605bb63 cross: fix fractal-nixified dep which needs binfmt 2023-12-03 00:40:08 +00:00
Colin 6741e0b9e1 nixpkgs: -> tip; sops-nix: 2023-11-27 -> 2023-12-02
```
• Updated input 'nixpkgs-unpatched':
    'github:nixos/nixpkgs/eb18da27b9cb7e2006574cd962f8a22baf2955f1' (2023-12-02)
  → 'github:nixos/nixpkgs/0616776a5e4072e9455e3966d1fce58feefa7a58' (2023-12-03)
• Updated input 'sops-nix':
    'github:Mic92/sops-nix/b1edbf5c0464b4cced90a3ba6f999e671f0af631' (2023-11-27)
  → 'github:Mic92/sops-nix/e19071f9958c8da4f4347d3d78790d97e98ba22f' (2023-12-02)
```
2023-12-03 00:22:07 +00:00
Colin a9f932408c servo: add zfs dataset 2023-12-02 17:38:00 +00:00
Colin a00e6984d9 nixpkgs: 2023-12-01 -> 2023-12-02
```
• Updated input 'nixpkgs-unpatched':
    'github:nixos/nixpkgs/7c12c8615307e2677a5f769e27ddb0ab4e36a940' (2023-12-01)
  → 'github:nixos/nixpkgs/eb18da27b9cb7e2006574cd962f8a22baf2955f1' (2023-12-02)
```
2023-12-02 00:12:16 +00:00
Colin b4738438b1 nixpkgs: 2023-11-30 -> 2023-12-01
```
• Updated input 'nixpkgs-unpatched':
    'github:nixos/nixpkgs/8d0f0ca32319439fe9940b1de917dbbdcb8e6f3d' (2023-11-30)
  → 'github:nixos/nixpkgs/7c12c8615307e2677a5f769e27ddb0ab4e36a940' (2023-12-01)
```
2023-12-01 16:19:05 +00:00
Colin 416c2f2f39 feeds: remove Hard Fork 2023-12-01 15:35:15 +00:00
Colin 589f86010f fix that servo had too low of a inotify watch limit for wan.txt path unit to work 2023-12-01 13:18:05 +00:00
Colin 76a7c19996 waybar-sxmo-status: fix volume 2023-12-01 12:51:55 +00:00
Colin 3fa676e169 sxmo: waybar: include the volume sxmo status (i.e. microphone/headphones) 2023-12-01 08:45:31 +00:00
Colin 3193028c48 sxmo_hook_start: dont start the statusbar items 2023-12-01 07:56:43 +00:00
Colin ba823e8283 sxmo: waybar: provide status more granularly 2023-12-01 07:43:20 +00:00
Colin 55f4ef9a4f firefox-extensions.metamask: 11.6.2 -> 11.6.3 2023-12-01 04:33:03 +00:00
Colin 200b0dcf7c sxmo: better integrate the status components into waybar
maybe i'll remove all the sxmo-specific logic eventually: it seems generalizable
2023-12-01 03:28:32 +00:00
Colin 181f9597c2 Merge branch 'dev' 2023-12-01 01:52:12 +00:00
Colin e55c264c29 activationScripts: fix error messages which would occur on boot, for scripts which only want to run during upgrades 2023-12-01 01:51:37 +00:00
Colin dfbae7e7b5 notify user when nixos deploy/activation completes 2023-12-01 01:29:37 +00:00
Colin 98fa50d0eb nixpkgs: 2023-11-29 -> 2023-11-30
```
• Updated input 'nixpkgs-unpatched':
    'github:nixos/nixpkgs/6711380ae7874005d707d7d03830bd5eee40b43b' (2023-11-29)
  → 'github:nixos/nixpkgs/8d0f0ca32319439fe9940b1de917dbbdcb8e6f3d' (2023-11-30)
```
2023-11-30 23:53:17 +00:00
Colin 9503658dec sane-tag-music: handle tracks with soundcloud ID at end of title 2023-11-30 13:59:08 +00:00
Colin 3c9bf681b2 sane-tag-music: better handle compilation albums 2023-11-30 13:23:55 +00:00
Colin c1b20675c1 sane-tag-music: handle more path schemas 2023-11-30 12:53:04 +00:00
Colin 5703caac19 remove unused scripts/ensure-perms script 2023-11-30 12:53:04 +00:00
Colin 7abf7459f9 signal-desktop-from-src: 6.38.0 -> 6.40.0 2023-11-30 09:58:25 +00:00
Colin b14c6ecd5b firefox-extensions: update to latest 2023-11-30 09:47:09 +00:00
Colin 455127219d flake: rename check.host-configs -> check.hostConfigs 2023-11-30 01:40:50 +00:00
Colin e235014bde cross: lift defaultCrateOverrides patches to toplevel 2023-11-30 01:40:02 +00:00
Colin ed1bf899b6 fractal: annotate crates which require binfmt for cross compilation 2023-11-30 01:36:53 +00:00
Colin 36c7f77a98 nixpkgs: 2023-11-28 -> 2023-11-29
```
• Updated input 'nixpkgs-unpatched':
    'github:nixos/nixpkgs/c9702bf40b036c0f1d3d5b0aaf3eee2bf920124c' (2023-11-28)
  → 'github:nixos/nixpkgs/6711380ae7874005d707d7d03830bd5eee40b43b' (2023-11-29)
```
2023-11-30 00:50:35 +00:00
Colin 996b4f8366 sane-tag-music: update tags even if file had no existing tags 2023-11-29 13:05:05 +00:00
Colin 39d94b34d7 sane-tag-music: better handle singles 2023-11-29 12:57:16 +00:00
Colin 6edc6841bf sane-tag-music: support directory/tree operations 2023-11-29 12:52:35 +00:00
Colin b2806bd649 sxmo: ship codemadness-frontends 0.6 2023-11-29 12:31:36 +00:00
Colin 936118b8cb sane-tag-music: init 2023-11-29 12:29:58 +00:00
Colin 120f251590 sxmo-utils: enable sxmo_youtube.sh script 2023-11-29 10:16:00 +00:00
Colin d9962e1b03 codemadness-frontends: fix cross compilation 2023-11-29 10:15:39 +00:00
Colin 1396eb2c58 codemadness-frontends: init at 0.8 2023-11-29 09:51:42 +00:00
Colin 12daa9830e pkgs/default.nix: fix sorting 2023-11-29 04:29:40 +00:00
Colin 3e5e1477b9 pipeline: init at 1.14.1
note that this doesn't cross compile, because of stupid fucking rust build.rs scripts

thanks, openssl-sys
2023-11-29 04:28:19 +00:00
Colin c100f55f1c mpv: associate with opus mimetype 2023-11-29 01:14:15 +00:00
Colin 5a0c0dff41 nixpkgs: 2023-11-27 -> 2023-11-28, sops-nix -> 2023-11-27
```
• Updated input 'nixpkgs-unpatched':
    'github:nixos/nixpkgs/927a9655a267b2b92ece7363efc4f74bf7b2612d' (2023-11-27)
  → 'github:nixos/nixpkgs/c9702bf40b036c0f1d3d5b0aaf3eee2bf920124c' (2023-11-28)
• Updated input 'sops-nix':
    'github:Mic92/sops-nix/4be58d802693d7def8622ff34d36714f8db40371' (2023-11-26)
  → 'github:Mic92/sops-nix/b1edbf5c0464b4cced90a3ba6f999e671f0af631' (2023-11-27)
```
2023-11-28 14:16:22 +00:00
Colin 8fc5e3611e slskd: fix that the nixos module unconditionall enables nginx 2023-11-28 14:08:08 +00:00
Colin 3c3fe16569 servo: enable Soulseek 2023-11-28 11:46:47 +00:00
Colin 8eb83bb283 sane-ssl-dump: remove
i never used it
2023-11-28 09:12:39 +00:00
Colin e559f1b960 docs: comment nixpkgs.config options 2023-11-28 08:05:19 +00:00
Colin 24a485c213 ripgrep: send cross compilation patch upstream 2023-11-28 00:33:13 +00:00
Colin 413669d118 cross: avoid building samba
i was already trying to avoid it, just missed some spots
2023-11-28 00:33:13 +00:00
Colin 1729f29374 cross: fix ripgrep 2023-11-28 00:33:13 +00:00
Colin e58833da3b nixpkgs: 2023-11-27 -> 2023-11-27
```
• Updated input 'nixpkgs-unpatched':
    'github:nixos/nixpkgs/494d8bcc83c99f1c5668cfd5f042b11a0d753749' (2023-11-27)
  → 'github:nixos/nixpkgs/927a9655a267b2b92ece7363efc4f74bf7b2612d' (2023-11-27)
```
2023-11-28 00:33:13 +00:00
Colin e5d4b57d9e overlays/cross: remove dead commented out code 2023-11-28 00:33:13 +00:00
Colin 1d61834a95 cross: remove upstreamed mpv patch 2023-11-28 00:33:13 +00:00
Colin b74f55cf54 nixpkgs: 2023-11-26 -> 2023-11-27
```
• Updated input 'nixpkgs-unpatched':
    'github:nixos/nixpkgs/013f0a99e56eeb1cfb44764fc0d419306b84bbe4' (2023-11-26)
  → 'github:nixos/nixpkgs/494d8bcc83c99f1c5668cfd5f042b11a0d753749' (2023-11-27)
```
2023-11-28 00:33:13 +00:00
Colin eb07a416b4 nixcache: disable big-parallel for servo 2023-11-28 00:33:13 +00:00
Colin ca277567f4 snippets.txt: remove double-spaces 2023-11-27 11:31:52 +00:00
Colin 68c2f8f333 fetchFromGitLab: passthru owner and repo 2023-11-27 10:26:44 +00:00
Colin ae5dee394c sane-clone: simplify to not use jq 2023-11-27 10:22:45 +00:00
Colin a94c460a95 sane-clone: note that fetchFromGitLab doesnt pass attrs through in quite the same way 2023-11-27 09:48:59 +00:00
Colin 78bf5caf00 cross: fix iotas
i don't know if it's actually runnable. it complains about aspell/gtkspellcheck not finding any dictionary, when i emulate it. but if this is a problem on non-emulated host, i expect it's not specific to cross compilation
2023-11-27 09:48:37 +00:00
Colin c5dbda67ad bonsai: fix cross compilation 2023-11-27 09:19:13 +00:00
Colin 2260fbaec5 bonsai/hare-ev/hare-json: sync with nixpkgs PR 2023-11-27 09:19:13 +00:00
Colin 4d2fecec13 geary: add my other email account 2023-11-27 07:56:26 +00:00
Colin 101677688e trust-dns: note that --debug doesnt act as expected 2023-11-27 06:53:48 +00:00
Colin ca8fefe0c6 sxmo: persist SMS messages 2023-11-27 06:46:57 +00:00
Colin 3e8d7ef8e3 sane-wipe-browser: also wipe Brave 2023-11-27 06:45:41 +00:00
Colin 71aed74e20 nixcache: disable supercap 2023-11-27 01:48:19 +00:00
Colin 712e2c2d12 monero: forward port 18080 2023-11-27 01:48:19 +00:00
Colin 892ba7d63e sxmo: disable sway-autoscaler
1: gnome-maps 45 scales way better. 2: the autoscaler seems to not be working anymore (app_id changed?)
2023-11-26 22:03:57 +00:00
Colin 96ca2a6585 sxmo-utils: 2023-11-07 -> 2023-11-26 2023-11-26 22:02:47 +00:00
Colin 3ebf6470c1 nixpkgs: 2023-11-26 -> 2023-11-26
```
• Updated input 'nixpkgs-unpatched':
    'github:nixos/nixpkgs/c6c20c63b4c1f715f602ecc46e21521e7825c2fb' (2023-11-26)
  → 'github:nixos/nixpkgs/013f0a99e56eeb1cfb44764fc0d419306b84bbe4' (2023-11-26)
```
2023-11-26 21:58:03 +00:00
Colin f8db994129 nixpkgs: 2023-11-25 -> 2023-11-26; sops-nix -> 2023-11-26
```
• Updated input 'nixpkgs-unpatched':
    'github:nixos/nixpkgs/e6e261526ebe0762e1fb7a80cd320d09602ade5a' (2023-11-25)
  → 'github:nixos/nixpkgs/c6c20c63b4c1f715f602ecc46e21521e7825c2fb' (2023-11-26)
• Updated input 'sops-nix':
    'github:Mic92/sops-nix/49a87c6c827ccd21c225531e30745a9a6464775c' (2023-11-19)
  → 'github:Mic92/sops-nix/4be58d802693d7def8622ff34d36714f8db40371' (2023-11-26)
• Updated input 'sops-nix/nixpkgs-stable':
    'github:NixOS/nixpkgs/decdf666c833a325cb4417041a90681499e06a41' (2023-11-18)
  → 'github:NixOS/nixpkgs/dfb95385d21475da10b63da74ae96d89ab352431' (2023-11-25)
```
2023-11-26 12:33:32 +00:00
Colin dcb74234a6 wine: persist pb powerbomber 2023-11-26 12:18:08 +00:00
Colin ac7c0709e8 monero: enable i2p/tor 2023-11-26 10:11:52 +00:00
Colin 7d8595233c servo: enable monero service 2023-11-26 10:11:52 +00:00
Colin 5452286493 games: ship hitori 2023-11-26 09:22:40 +00:00
Colin 5528b6d87d games: ship `wine`
launch games with `wine some-game.exe`
2023-11-26 09:20:48 +00:00
Colin 6ae3e61d1d sxmo: doc: dedupe_lisgd 2023-11-26 07:01:13 +00:00
Colin a9093a6a69 snippets: fix comment formatting 2023-11-26 06:35:49 +00:00
Colin 3dcf7a1204 snippets: add link 2023-11-26 06:35:31 +00:00
Colin c2c63d400f sxmo: bonsai: dont ship service file if sxmo isnt enabled 2023-11-26 02:31:59 +00:00
Colin 8f9c9efca1 feeds: econlib: update feed URL 2023-11-26 02:17:36 +00:00
Colin 1cb83032a1 feeds: postmarketOS: update feed url 2023-11-26 02:17:23 +00:00
Colin eba9253efe firefox-extensions: bump 2023-11-26 02:16:55 +00:00
Colin 9bd0537854 flake: fix "update" for my newer overlay schema 2023-11-26 02:16:25 +00:00
Colin 9491190ce4 bonsai: 1.0.0 -> 1.0.2; hare-json/hare-ev deps also updated
nixpkgs has a new version of hare which supports these
2023-11-26 01:21:02 +00:00
Colin 9b70d8884d refactor: expose "pkgs.sane.*" even for pkgs which wouldnt be visible in the toplevel scope 2023-11-26 01:20:17 +00:00
Colin 9824094fdc nixpkgs: 2023-11-24 -> 2023-11-25
```
• Updated input 'nixpkgs-unpatched':
    'github:nixos/nixpkgs/869da636fea368dccc4331355894778f64c4a9bb' (2023-11-24)
  → 'github:nixos/nixpkgs/e6e261526ebe0762e1fb7a80cd320d09602ade5a' (2023-11-25)
```
2023-11-25 10:41:25 +00:00
Colin 361be1e5d1 fractal-latest: 2023-09-14 -> 2023-11-24 2023-11-25 09:01:41 +00:00
Colin 1d38aa62de fractal: persist the new(est) state dir
hope it stops moving around soon lol
2023-11-25 08:57:50 +00:00
Colin d8a4702f1e bonsai: disable auto-updater 2023-11-25 08:57:50 +00:00
Colin 75124f18c0 firefox-extensions: update 2023-11-25 08:57:50 +00:00
Colin f54df71d2a fractal-nixified: unstable-2023-09-14 (350a65cb0) -> 5 (2023-11-24)
this gets me the libadwaita/gtk4 updates from gnome 45.
2023-11-25 08:57:50 +00:00
Colin b40b29350a linux-megous: orange-pi-6.5-20230914-1327 -> orange-pi-6.6-20231103-1422 2023-11-25 08:57:42 +00:00
Colin 6a9b8b558a cross: mark tangram, gnome-online-accounts as needs binfmt 2023-11-25 06:27:20 +00:00
Colin 58f17eac2d cross: mark calls as needs binfmt 2023-11-25 05:55:17 +00:00
Colin 41709b6eac cross: mark fractal-nixified as needs binfmt 2023-11-25 05:54:06 +00:00
Colin f9f247df39 cross: annotate which packages require binfmt 2023-11-25 05:05:05 +00:00
Colin 4c4a8a0897 neovim: port to wrapNeovimUnstable 2023-11-25 05:02:48 +00:00
Colin 10aea555dd neovim: simplify implementation 2023-11-25 04:46:24 +00:00
Colin 43f7f07d0e cross: mark argyllcms, jbig2dec as needsBinfmt 2023-11-25 00:13:49 +00:00
Colin 3bde4a70ca docs: nix store ping when user doesnt have perms 2023-11-24 22:38:58 +00:00
Colin b9fefdab80 nixcache: fix so supercap can be used as a remote builder w/o any of the others 2023-11-24 22:21:08 +00:00
Colin 2ac2aa4e6c tuba: 0.4.1 -> 0.5.0 2023-11-24 21:57:29 +00:00
Colin 8f526cd2b5 tuba: remove workaround (fixed via gnome 45 update) 2023-11-24 21:41:07 +00:00
Colin 6382ac22cb zsh: new alias to aid cloning an OS package 2023-11-24 21:40:16 +00:00
Colin e1845d37da zsh: order aliases alphabetically 2023-11-24 21:39:52 +00:00
Colin 9ccbfd8bf0 sane-clone: init
script to "git clone" a nix packages source code
2023-11-24 21:29:15 +00:00
Colin 37a95b97f6 nixpkgs: 2023-11-21 -> 2023-11-24
```
• Updated input 'nixpkgs-unpatched':
    'github:nixos/nixpkgs/72edcc748a92377d0568c9536ece114dbabb948c' (2023-11-21)
  → 'github:nixos/nixpkgs/869da636fea368dccc4331355894778f64c4a9bb' (2023-11-24)
```
2023-11-24 09:17:21 +00:00
Colin 4e0845eb9c cross: koreader-from-src: mark as needsBinfmt 2023-11-24 09:17:17 +00:00
Colin dc8b79b721 sync todo.md 2023-11-24 08:20:03 +00:00
Colin dd0ab41396 refactor: move builders-user-substitutes to be near the other nix extraOptions 2023-11-24 08:13:37 +00:00
Colin c3c3cff6ca enable supercap as remote builder 2023-11-24 08:06:17 +00:00
Colin 1f26b36fb8 hosts/modules/hostnames.nix -> hosts/common/hostnames.nix 2023-11-24 07:37:14 +00:00
Colin e990d5a645 hosts: add supercap 2023-11-24 07:35:58 +00:00
Colin 121e86013e feeds: add Hard Fork podcast 2023-11-23 05:57:23 +00:00
Colin e0a1dcd51f refactor: remove modules/data/keys.nix 2023-11-23 03:56:00 +00:00
Colin 758281f772 modules/feeds: remove unused parameter 2023-11-23 03:37:18 +00:00
Colin fe19065a6a rename working -> .working 2023-11-23 03:29:04 +00:00
Colin a9ba9b77ad enable servo as a remote builder 2023-11-23 02:21:01 +00:00
Colin 23f4b2e2e4 nixserve: dependency-inject the pubkey
this is in modules/ dir; shouldn't have that kind of data in it
2023-11-23 02:14:18 +00:00
Colin 2d65282643 nixremote: define the user as part of the nixserve module 2023-11-23 02:08:45 +00:00
Colin 0bd9125484 remote builder: simplify auth 2023-11-23 02:06:54 +00:00
Colin 175144663d desko: dont use ourself as remote substituter/builder 2023-11-23 02:02:19 +00:00
Colin 77a0a36bb8 enable remote-building for lappy/moby 2023-11-23 01:59:37 +00:00
Colin f26b64c660 nixremote: fix up perms 2023-11-23 01:44:27 +00:00
Colin 3ff9c0ad0c add a "nixremote" user for remote bulding (experimental; builds arent actually enabled yet) 2023-11-23 01:27:28 +00:00
Colin 3eb6ce6ff6 cross: apply vala targetOffset fix 2023-11-22 22:11:27 +00:00
Colin 845b4b219d cross: update upstreaming status 2023-11-22 22:03:34 +00:00
Colin ffe53086fb cross: update upstreaming notes 2023-11-22 10:22:11 +00:00
Colin 5c34c807c5 cross: remove unused networkmanager-fortisslvpn 2023-11-22 09:52:30 +00:00
Colin de2a33580a cross: update upstreaming/blocker notes 2023-11-22 08:33:09 +00:00
Colin 08a875d862 cross: remove workaround for obex_data_server, which cross compiles cleanly now 2023-11-22 08:05:14 +00:00
Colin 7eeebd632d cross: libpanel: annotate with upstreaming status 2023-11-22 05:02:43 +00:00
Colin a72e9b1a3e cross: remove fixes for packages i dont use 2023-11-22 05:01:34 +00:00
Colin 56808821da overlays/cross: disable the unused qt5 stuff; it's not clear it even still works 2023-11-22 03:53:27 +00:00
Colin b53eca6323 cross: annotate xdg-desktop-portal upstreaming status 2023-11-22 03:52:36 +00:00
Colin 5a1edb51ef preferences: re-enable pipewire patch. it's still needed 2023-11-22 03:52:15 +00:00
Colin b03328b54f chatty-latest: fix build
evolution-data-server no longer propagates libsecret: upstream nixpkgs applied this patch as well
2023-11-22 03:50:39 +00:00
Colin 4e2615f321 xdg-desktop-portal: fix cross compilation 2023-11-22 03:36:50 +00:00
Colin 1e14654d95 libpanel: fix cross compilation 2023-11-22 03:36:36 +00:00
Colin 0519db4d2c overlays/preferences: disable python stuff no longer needed by komikku 2023-11-22 02:21:23 +00:00
Colin 5b9e4df03b overlays/cross: remove upstreamed dead-code 2023-11-22 02:21:00 +00:00
Colin 2dbde57f46 overlays/disable-flakey-tests: remove unneeded libwacom patch 2023-11-22 01:42:33 +00:00
Colin d51b7eb124 overlays/disable-flakey-tests: remove unneeded gupnp patch 2023-11-22 01:30:06 +00:00
Colin bfcc071d94 overlays/disable-flakey-tests: remove unnecessary visidata patch 2023-11-22 01:26:38 +00:00
Colin 72e1ab6ad6 nixpatches: remove dead mepo patch (merged upstream) 2023-11-22 01:11:49 +00:00
Colin d54efbaacf overlays/preferences: remove unneeded pipewire specialization 2023-11-22 00:54:05 +00:00
Colin 7d2f166d67 prefs: remove unnecessary electrum patch 2023-11-22 00:36:48 +00:00
Colin aff3e1aee8 disable gtkcord4 2023-11-22 00:25:14 +00:00
Colin 9343447c03 nixpkgs: 2023-11-19 -> 2023-11-21
switch to `master` branch for the GNOME changes

```
• Updated input 'nixpkgs-unpatched':
    'github:nixos/nixpkgs/e4ad989506ec7d71f7302cc3067abd82730a4beb' (2023-11-19)
  → 'github:nixos/nixpkgs/72edcc748a92377d0568c9536ece114dbabb948c' (2023-11-21)
```
2023-11-22 00:00:52 +00:00
Colin beb13b8f84 gnome 44 -> 45 2023-11-21 23:12:19 +00:00
Colin 70b273a0d2 sxmo: include WM menu in the system menu 2023-11-21 22:39:31 +00:00
Colin fc2bf35588 sway-autoscaler: tune gnome-maps scale 2023-11-21 08:59:34 +00:00
Colin 05893ad661 moby: auto-start Signal 2023-11-21 08:28:15 +00:00
Colin fdc9df6b91 sway-autoscaler: cleanup 2023-11-21 08:25:01 +00:00
Colin c6d68e1450 sway: reposition displays 2023-11-21 08:18:35 +00:00
Colin d294be9f35 sxmo: auto-scale the environment to accomodate non-mobile-friendly apps
this is hacky, but it hopefully makes gnome-maps usable, quickly.
an alternative fix would be to theme gnome-maps.
it's likely also that it becomes more mobile-friendly in the gnome 45
release.
2023-11-21 08:14:52 +00:00
Colin 98ea4d2dfe abaddon: depend on gnome-keyring 2023-11-21 06:05:52 +00:00
Colin 6a950b4e97 abaddon: integrate with swaync services buttons 2023-11-21 03:32:59 +00:00
Colin 70292e4f8e abaddon: dont show the "view members" pane, by default 2023-11-21 03:06:58 +00:00
Colin 67f8b82740 gitea: track upstream auth fix PR 2023-11-21 02:44:42 +00:00
Colin e9eb139b80 gitea: fix database permissions 2023-11-21 02:27:00 +00:00
Colin 61d5b9f048 abaddon: disable platform override (upstream has merged support for aarch64) 2023-11-21 00:37:02 +00:00
Colin c5c86c3964 abaddon: configure for autoconnect 2023-11-21 00:36:43 +00:00
Colin 0f233f3a22 gitea: fix database creation error (from latest nixpkgs update) 2023-11-20 10:48:27 +00:00
Colin 166bd70a1f nixpkgs: 2023-11-17 -> 2023-11-19; sops-nix -> 2023-11-19
```
• Updated input 'nixpkgs-unpatched':
    'github:nixos/nixpkgs/c757e9bd77b16ca2e03c89bf8bc9ecb28e0c06ad' (2023-11-17)
  → 'github:nixos/nixpkgs/e4ad989506ec7d71f7302cc3067abd82730a4beb' (2023-11-19)
• Updated input 'sops-nix':
    'github:Mic92/sops-nix/0e3a94167dcd10a47b89141f35b2ff9e04b34c46' (2023-11-14)
  → 'github:Mic92/sops-nix/49a87c6c827ccd21c225531e30745a9a6464775c' (2023-11-19)
• Updated input 'sops-nix/nixpkgs-stable':
    'github:NixOS/nixpkgs/9502d0245983bb233da8083b55d60d96fd3c29ff' (2023-11-12)
  → 'github:NixOS/nixpkgs/decdf666c833a325cb4417041a90681499e06a41' (2023-11-18)
```
2023-11-20 10:02:56 +00:00
Colin 776b4a6c02 doc: consider ideal input mapping a bit more 2023-11-20 09:21:44 +00:00
Colin 75dcc60be5 sxmo/bonsai: simplify bindings: remove power x 3 in favor of powerhold 2023-11-20 09:12:43 +00:00
Colin 53034a6ff4 bonsai: simplify the nix code for volume handling 2023-11-20 09:07:51 +00:00
Colin 1ea6df9e6c sxmo/bonsai: rework mappings so vol-up/vol-down (app menu/keyboard) trigger instantly w/o timeout 2023-11-20 08:44:10 +00:00
Colin a98a14da3d sxmo: map power hold to just a single power press
less risky than accidentally killing a window (power x3)
2023-11-20 07:36:46 +00:00
Colin 629cb8776e sxmo: map volup_three/voldown_three to seek controls when screenoff 2023-11-20 07:35:23 +00:00
Colin 96a63d0e89 sxmo: friendly format with which to define bonsai map 2023-11-20 07:25:21 +00:00
Colin c7b065eed9 sxmo_hook_inputhandler: set volume directly
now that i'm using SXMO_NO_AUDIO, i can't use sxmo_audio.sh
2023-11-20 06:57:51 +00:00
Colin 89b0b8884b sxmo: set SXMO_STATES=unlock screenoff 2023-11-20 06:53:59 +00:00
Colin 644983d27a bonsaid: configure via nix 2023-11-20 06:46:44 +00:00
Colin 04d3ea97f3 flake: add a hostConfigs output 2023-11-20 06:29:51 +00:00
Colin 11baf471a4 desko: open firewall for nix-serve 2023-11-20 04:58:13 +00:00
Colin 505c2d83f2 sxmo-utils: add missing upower dependency 2023-11-20 04:49:38 +00:00
Colin f84ab9a4d1 sxmo: fix that sxmo_state_switch.sh was renamed upstream 2023-11-20 02:36:42 +00:00
Colin 0127b61901 sxmo: fix that upstream renamed sxmo_dameons.sh -> sxmo_jobs.sh 2023-11-20 02:31:55 +00:00
Colin b7247f6082 sxmo.bonsaid: make it a proper nix module 2023-11-20 02:31:23 +00:00
Colin 9cc72c09dc sxmo: split bonsai out to own file 2023-11-20 01:55:15 +00:00
Colin d763f3b912 nix.extraOptions: tune 2023-11-20 01:37:26 +00:00
Colin f8899aada0 sane.programs.animatch: move to own file 2023-11-19 23:58:00 +00:00
Colin 2e983267d4 sxmo-utils: 2023-10-10 -> 2023-11-07 2023-11-19 23:55:41 +00:00
Colin df0c63b300 sxmo-utils: obtain via `fetchFromSourcehut` 2023-11-19 23:53:37 +00:00
Colin 1db2031b76 sxmo-utils: rename from sxmo-utils-latest 2023-11-19 23:44:48 +00:00
Colin 2720ccc1fc sxmo-utils.stable: remove
i don't use this. upstream doesn't tag releases enough for it to be useful.
2023-11-19 23:40:56 +00:00
Colin f2aea2c201 phog: 0.1.5 -> 0.1.6 2023-11-19 23:35:00 +00:00
Colin 6b9c5f518e koreader-from-src: 2023-10-18 -> 2023.10 (i.e. end-of-month commit) 2023-11-19 23:04:39 +00:00
Colin 6d6d2320bd cross: fix mutter build 2023-11-19 11:06:51 +00:00
Colin a1298d6cda nixpkgs 2023-11-14 -> 2023-11-17
```
• Updated input 'nixpkgs-unpatched':
    'github:nixos/nixpkgs/bf744fe90419885eefced41b3e5ae442d732712d' (2023-11-14)
  → 'github:nixos/nixpkgs/c757e9bd77b16ca2e03c89bf8bc9ecb28e0c06ad' (2023-11-17)
```
2023-11-19 10:57:50 +00:00
Colin 52b59bcde8 feeds: add Mic92 (nix dev) 2023-11-19 10:55:51 +00:00
Colin 256c85ba5c abaddon: refer to upstream PR for platforms fix 2023-11-19 03:24:46 +00:00
Colin 5e484719c2 swaync: sound alerts for abaddon (discord) 2023-11-19 03:14:22 +00:00
Colin 6b88379b01 abaddon: 0.1.12 -> 0.1.13
this resolves the warning on launch about the build id not being found
2023-11-19 03:13:44 +00:00
Colin 7b29624776 abaddon: force to workspace 1 2023-11-19 03:02:14 +00:00
Colin 18f8825cd5 flake: fix deploy so the -light and -test variants work 2023-11-19 02:53:38 +00:00
Colin 3d94d02960 flake: fix deploy script map 2023-11-19 02:41:00 +00:00
Colin 1f8886684f ship abaddon discord client 2023-11-19 02:37:51 +00:00
Colin 29f1da873b sane-weather: enable alternate NWS provider (metar API has changed) 2023-11-19 02:07:07 +00:00
Colin 97ec517a1e conky: battery_estimate: fix formatting 2023-11-19 01:51:15 +00:00
Colin 2fccaf684c conky: show battery on lappy, and not on desko 2023-11-19 01:50:14 +00:00
Colin 008063e645 flake: check target builds hosts in a specific order 2023-11-19 01:36:34 +00:00
Colin 867c949604 todo: removed x86GuiApps 2023-11-19 01:36:29 +00:00
Colin 7a1af6ee5c firefox: mark as *not* slow to build
this ensures it's always in the base desktop build. otherwise, i never build any browser for desko-light
2023-11-18 23:00:40 +00:00
Colin 0893c90c51 refactor how i decide which programs go on which machine (leverage "roles" like pc and handheld) 2023-11-18 22:56:53 +00:00
Colin 3c7ebb5385 hosts/modules/gui: refactor package sets 2023-11-18 22:20:38 +00:00
Colin 91c2f6fc95 implement sane.programs.slowToBuild and {moby,desko,lappy}-light targets
i'm not sure this is the exact right abstraction, but it's a starting point
2023-11-18 22:06:42 +00:00
Colin ead08fbb5d disable nheko 2023-11-18 22:06:37 +00:00
Colin 3ad6a15f56 firefox: reduce scrollbar size :-( 2023-11-18 22:06:34 +00:00
Colin 12adb9f10a element-desktop: use electron-bin instead of from-source electron 2023-11-18 22:06:30 +00:00
Colin 7b2932b02b firefox-extensions: update to latest 2023-11-18 22:06:26 +00:00
Colin 57a47da12c swaync: audibly notify on gtkcord4 notification 2023-11-18 19:19:33 +00:00
Colin 84a51faa70 todo.md: document some nix-related bugs 2023-11-18 00:24:16 +00:00
Colin ad495301c0 feeds: add Jeff Geerling 2023-11-18 00:23:58 +00:00
Colin 43bd745228 sway: fix broken brightness_down_cmd 2023-11-17 22:46:44 +00:00
Colin fea056d9be todo.md: fix swaync mpris art 2023-11-17 09:36:07 +00:00
Colin 2f320db5e2 gtkcord4: add swaync icon and user service 2023-11-17 09:18:14 +00:00
Colin 130268491c ship gtkcord4 2023-11-17 08:27:19 +00:00
Colin caf95675d6 packages: persist data for unofficial discord clients 2023-11-17 08:26:36 +00:00
Colin b23281e9dc swaync: make the service buttons more compact 2023-11-17 04:06:26 +00:00
Colin 850354b7d7 integrate Signal into swaync and sway/autostart 2023-11-17 04:05:59 +00:00
Colin 5c7851e4d9 signal-desktop-from-src: fix SOURCE_EPOCH_DATE to prevent "build to old" runtime error 2023-11-17 03:22:27 +00:00
Colin d85dbf1d33 animatch: correctly persist progress (?) 2023-11-17 01:24:04 +00:00
Colin 93ea668db3 install more desktop games 2023-11-17 00:13:34 +00:00
Colin 5f426b3efd ship vvvvvv game 2023-11-16 20:50:40 +00:00
Colin 4b6a18e4e7 programs: split games into own category; re-enable shattered-pixel-dungeon 2023-11-16 20:26:37 +00:00
Colin 35629a2a07 nixpkgs: 2023-11-12 -> 2023-11-14
```
• Updated input 'nixpkgs-unpatched':
    'github:nixos/nixpkgs/e44462d6021bfe23dfb24b775cc7c390844f773d' (2023-11-12)
  → 'github:nixos/nixpkgs/bf744fe90419885eefced41b3e5ae442d732712d' (2023-11-14)
```
2023-11-16 20:17:30 +00:00
Colin 50651d1c03 animatch: provide via upstream 2023-11-16 20:17:20 +00:00
Colin 412667dd0e nixpatches: remove gnustep patch (invalid ref) 2023-11-16 20:12:53 +00:00
Colin c46a5089a6 animatch: simplify build 2023-11-16 07:39:49 +00:00
Colin 1b3f902dc2 signal-desktop-from-src: use non-builtins fetchurl to fix purity (and NUR build) 2023-11-16 07:24:39 +00:00
Colin bfcb4f92e8 add todo item: remove x86GuiApps 2023-11-16 00:38:06 +00:00
Colin 13dda2e533 programs: ship animatch 2023-11-16 00:36:31 +00:00
Colin 29c5811b68 animatch: init at 1.0.3 2023-11-16 00:32:02 +00:00
Colin 8111757357 firefox-extensions: update (bypass-paywalls-clean, ublacklist, ether-metamask) 2023-11-15 23:20:40 +00:00
Colin 93ff8f25a1 signal-desktop-from-src: 6.36.0 -> 6.38.0
apparently after pairing, both versions give the message that they're 'too old'
2023-11-15 23:12:55 +00:00
Colin bb810ac75a signal-desktop: fix directory persistence 2023-11-15 23:07:25 +00:00
Colin 87b78d1c89 signal-desktop-from-src: remove unused package.json 2023-11-15 22:41:05 +00:00
Colin bc56f78fd2 signal-desktop-from-src: clean up the package 2023-11-15 22:40:13 +00:00
Colin 41ac63f445 signal-desktop-from-src: remove lockfile from repo 2023-11-15 21:41:29 +00:00
Colin b538044d9a nvme-cli: dont ship on moby 2023-11-15 20:41:41 +00:00
Colin 02882dd781 nixpkgs: 2023-10-29 -> 2023-11-12; sops-nix -> 2023-11-14; uninsane-dot-org
```
• Updated input 'nixpkgs-unpatched':
    'github:nixos/nixpkgs/0cbe9f69c234a7700596e943bfae7ef27a31b735' (2023-10-29)
  → 'github:nixos/nixpkgs/e44462d6021bfe23dfb24b775cc7c390844f773d' (2023-11-12)
• Updated input 'sops-nix':
    'github:Mic92/sops-nix/632c3161a6cc24142c8e3f5529f5d81042571165' (2023-10-29)
  → 'github:Mic92/sops-nix/0e3a94167dcd10a47b89141f35b2ff9e04b34c46' (2023-11-14)
• Updated input 'sops-nix/nixpkgs-stable':
    'github:NixOS/nixpkgs/d87c5d8c41c9b3b39592563242f3a448b5cc4bc9' (2023-10-29)
  → 'github:NixOS/nixpkgs/9502d0245983bb233da8083b55d60d96fd3c29ff' (2023-11-12)
• Updated input 'uninsane-dot-org':
    'git+https://git.uninsane.org/colin/uninsane?ref=refs/heads/master&rev=2419750ca98fc04af42c91e50c49a29c68d465d2' (2023-10-30)
  → 'git+https://git.uninsane.org/colin/uninsane?ref=refs/heads/master&rev=8a4273489d945f21d7e0ca6aac952460c7d4c391' (2023-11-09)
• Updated input 'uninsane-dot-org/flake-utils':
    'github:numtide/flake-utils/dbabf0ca0c0c4bce6ea5eaf65af5cb694d2082c7' (2023-06-25)
  → 'github:numtide/flake-utils/ff7b65b44d01cf9ba6a71320833626af21126384' (2023-09-12)
```
2023-11-15 07:16:20 +00:00
Colin a24d5581f1 nixpatches: build latest zcash 2023-11-15 07:13:33 +00:00
Colin 3125acc95c nixpatches: assorted minor updates 2023-11-15 07:12:46 +00:00
Colin d4c7cfcdf8 ship signal-desktop-from-src 2023-11-15 07:07:58 +00:00
Colin 6ff01649d6 signal-desktop-from-src: build with electron_27-bin 2023-11-15 07:07:44 +00:00
Colin dfe724ff52 shattered-pixel-dungeon: persist save file 2023-11-15 05:53:14 +00:00
Colin 6c759c226a cross: docs: mention that libgnome-games-support has been merged 2023-11-15 05:52:46 +00:00
Colin d22c2ea56a sxmo: re-enable xwayland
this fixes signal-desktop :)
2023-11-15 05:51:32 +00:00
Colin 319bfe205d signal-desktop-from-src: support cross compilation 2023-11-15 05:50:23 +00:00
Colin c4367644dd sane-vpn: add usage/help 2023-11-14 23:29:34 +00:00
Colin 69464c2405 snippets: update dead links 2023-11-14 22:43:09 +00:00
Colin 1da78d093f ship gnome-2048 game 2023-11-14 03:36:15 +00:00
Colin 70ccbb3f59 signal-desktop-from-src: working build 2023-11-14 02:18:28 +00:00
Colin 214f24805e swaync: disable vpn::hn action 2023-11-14 01:31:30 +00:00
Colin 37f6c9c3bf swaync: improve service icons slightly more 2023-11-14 00:46:39 +00:00
Colin c0ba6dc9f5 swaync: change GPS icon to an actual icon 2023-11-14 00:39:24 +00:00
Colin 92159f2a3d dino: simplify service description 2023-11-14 00:39:24 +00:00
Colin 3855fb5eb6 geary: integrate with swaync and auto-start 2023-11-14 00:39:24 +00:00
Colin 5b3a716819 todo.md: add more apps to install 2023-11-14 00:39:24 +00:00
Colin 48b6045ba3 gui: ship superTux, superTuxKart 2023-11-14 00:39:24 +00:00
Colin fd965177ff gui: ship gnome-calendar 2023-11-14 00:39:24 +00:00
Colin b34d332a32 gui: ship gnome-clocks 2023-11-14 00:39:24 +00:00
Colin 23db2bf1bf gui: ship gnome-calculator 2023-11-14 00:39:24 +00:00
Colin 5996e1f301 servo: fix sane.persist ext store 2023-11-13 05:27:14 +00:00
Colin 70a61386b8 add todo for biblioteca doc viewer 2023-11-13 00:14:21 +00:00
Colin 53df000ba6 zsh: increase history size 2023-11-12 22:16:33 +00:00
Colin 802294ec9c moby: disable dialect program 2023-11-11 02:07:36 +00:00
Colin ed4e289209 moby: fix cross-compilation of dialect/wike 2023-11-10 23:05:12 +00:00
Colin 796977713d cross compilation: fix spot build 2023-11-10 22:12:00 +00:00
Colin 1f0f84f2f0 programs: add dialect, spot, wike, xq 2023-11-10 19:29:43 +00:00
Colin 4e328ae0a3 todo: fix fractal link opener 2023-11-10 18:52:03 +00:00
Colin b572d6d27b new todo: RSS paywall bypass 2023-11-10 17:34:15 +00:00
Colin cd79be5414 feeds: remove unused fields 2023-11-10 17:27:51 +00:00
Colin 28dbf10a30 todo.md: remove completed items 2023-11-10 16:25:51 +00:00
Colin 96cabc30bc move /etc/nix/source -> /etc/nixos 2023-11-09 17:29:41 +00:00
Colin f5376f2dbb desko: update disk UUIDs 2023-11-09 16:10:11 +00:00
Colin 8b25bc96a4 rescue: enable root-on-tmpfs, and consolidate those definitions 2023-11-09 00:15:30 +00:00
Colin 6acd363f55 sane.persist.root-on-tmpfs -> sane.root-on-tmpfs 2023-11-09 00:15:04 +00:00
Colin 539ee010ab hosts: ship a copy of this repo in /etc/nix/source 2023-11-08 23:56:31 +00:00
Colin 5202c572fb firefox-extensions: update to latest 2023-11-08 23:44:27 +00:00
Colin 5630b6d8d7 swaync: fix build (github patch changed) 2023-11-08 21:56:46 +00:00
Colin 23c46079a9 image: allow configuring the sector size 2023-11-08 16:42:25 +00:00
Colin df9ffcb7b1 zsh: auto-detect guiIntegrations feature 2023-11-08 15:33:15 +00:00
Colin f4f1917ed6 rescue: remove extraneous generic-extlinux-compatible option 2023-11-08 15:33:15 +00:00
Colin 851b2cec88 rescue: disable persistence 2023-11-08 15:33:15 +00:00
Colin 28d4a4b065 persistence: move stores behind a byStore attr to support disabling persistence altogether (for e.g. rescue image) 2023-11-08 15:33:15 +00:00
Colin 7c5f5bd604 programs: add nvme, e2fsprogs to sysadminTools 2023-11-08 14:36:27 +00:00
Colin 7e4899832d wg-home: fix type error 2023-11-08 13:24:10 +00:00
Colin 226c4ba818 rescue: auto-login user 2023-11-08 13:18:30 +00:00
Colin 76b6b71879 mobile-nixos: pin to 2023-09-15 2023-11-08 12:13:50 +00:00
Colin 4951520584 flake: integrate rescue image building into the "check" target 2023-11-08 11:39:45 +00:00
Colin e30d452254 flake: add help for building the rescue image 2023-11-08 11:35:32 +00:00
Colin 18a7598f62 programs: xdg-terminal-exec: move to gui programs 2023-11-08 11:31:49 +00:00
Colin 4d3e482174 zsh: remove vteIntegration from rescue image 2023-11-08 11:26:55 +00:00
Colin 68556222e2 fix rescue host build 2023-11-08 11:16:56 +00:00
Colin 2275fc20cd nixpatches: update hashes 2023-11-08 10:56:18 +00:00
Colin 7c247a6d39 initrd: add more helper (debugging) tools 2023-11-08 10:55:47 +00:00
Colin 1483dac941 cross: explain the webkitgtk situation better 2023-11-08 10:55:13 +00:00
Colin e1a8c94ab9 programs: ship ddrescue 2023-11-06 23:57:48 +00:00
Colin b0e66056ec WIP: signal-desktop-from-src: use node headers from electron.bin 2023-11-05 20:03:38 +00:00
Colin 08dd4ca641 sane-bt-add: leave a TODO for fixing InvalidSchema exceptions 2023-11-05 20:03:03 +00:00
Colin f6eadd3696 devPkgs: add requests to python 2023-11-05 20:02:40 +00:00
Colin b59685cc9d signal-desktop-from-src: get more working
no longer complains about ABI mismatches
2023-11-05 14:49:40 +00:00
Colin c30e131aa7 signal-desktop-from-src: closer to working 2023-11-04 14:52:09 +00:00
Colin 5adf6c0194 snippets.txt: add billshare 2023-11-03 12:26:57 +00:00
Colin 6b7507384c sftpo: restart on failure (e.g. when it fails to bind address 2023-11-03 07:21:21 +00:00
Colin e97d844380 signal-desktop-from-src: link in ringrtc, better-sqlite3
now it launches, but hangs at splashscreen
2023-11-02 15:52:23 +00:00
Colin 0628bd7880 ublock-origin: 1.52.3b17 -> 1.53.1b1 2023-11-02 10:35:54 +00:00
Colin bee3b664c9 signal-desktop-from-src: remove comments which are no longer helpful 2023-11-02 10:25:49 +00:00
Colin 15cade99e7 signal-desktop-from-src: clean up a bit
still doesn't run, but the build process is cleaner
2023-11-02 10:24:23 +00:00
Colin 4150fab10b signal-desktop-from-src: get building (but it crashes at launch) 2023-11-02 09:10:08 +00:00
Colin 25e314c02e blogs: follow artemis.sh 2023-11-01 04:38:04 +00:00
Colin ed0528fafa firefox: enable oversized scrollbars 2023-11-01 04:32:59 +00:00
Colin c5ad11a243 nixpkgs: 2023-10-26 -> 2023-10-29; sops-nix; uninsane-dot-org
```
• Updated input 'nixpkgs-unpatched':
    'github:nixos/nixpkgs/63678e9f3d3afecfeafa0acead6239cdb447574c' (2023-10-26)
  → 'github:nixos/nixpkgs/0cbe9f69c234a7700596e943bfae7ef27a31b735' (2023-10-29)
• Updated input 'sops-nix':
    'github:Mic92/sops-nix/014e44d334a39481223a5d163530d4c4ca2e75cb' (2023-10-25)
  → 'github:Mic92/sops-nix/632c3161a6cc24142c8e3f5529f5d81042571165' (2023-10-29)
• Updated input 'sops-nix/nixpkgs-stable':
    'github:NixOS/nixpkgs/fb000224952bf7749a9e8b3779104ef7ea4465c8' (2023-10-21)
  → 'github:NixOS/nixpkgs/d87c5d8c41c9b3b39592563242f3a448b5cc4bc9' (2023-10-29)
• Updated input 'uninsane-dot-org':
    'git+https://git.uninsane.org/colin/uninsane?ref=refs/heads/master&rev=dea3e5cdd747ac321447ef00fa1e51423676aeda' (2023-10-08)
  → 'git+https://git.uninsane.org/colin/uninsane?ref=refs/heads/master&rev=2419750ca98fc04af42c91e50c49a29c68d465d2' (2023-10-30)
```
2023-10-31 14:24:39 +00:00
Colin 68de71084b flare-signal: leave more notes; disable 2023-10-31 07:57:30 +00:00
Colin 713bbffd7d new script: sane-wipe-flare 2023-10-31 06:54:53 +00:00
Colin 028689cf86 flakey tests: dont check gjs or tracker when emulating 2023-10-31 06:30:45 +00:00
Colin 5d34139da6 sane-deadlines: ceil the day countdown 2023-10-31 04:22:54 +00:00
Colin 626fe1946d flare-signal: get a better cross-compiled build (via emulation) 2023-10-31 01:33:42 +00:00
Colin 6d8f9edfd0 flare-signal: document problems 2023-10-30 14:02:24 +00:00
Colin 745362e05e ship flare-signal on all GUI platforms 2023-10-30 11:02:51 +00:00
Colin 000bae364e flare-signal: support cross compilation 2023-10-30 11:02:01 +00:00
Colin 3667484e80 fractal-nixified: doc: explain postPatch purpose 2023-10-30 10:48:22 +00:00
Colin c459eb0118 flare-signal-nixified: working build 2023-10-30 10:47:58 +00:00
Colin 1c483992da flare-signal-nixified: init at 0.10.0 (deps build; flare itself does not) 2023-10-30 08:04:07 +00:00
Colin 55680b68b2 configure new program: flare (Signal GTK4 client) 2023-10-30 04:40:55 +00:00
Colin b3f5bf4e80 koreader: disable isConnected patch 2023-10-30 01:52:47 +00:00
Colin 51995a7d95 update firefox-extension 2023-10-28 21:19:08 +00:00
Colin 462f9d3ab3 swaync: tune style and add 5g toggle to moby 2023-10-28 11:43:26 +00:00
Colin fd00eaede8 net: add LTE connection details 2023-10-28 10:34:36 +00:00
Colin 85421f82c1 koreader: add a symlink for easier RSS browsing 2023-10-28 01:49:16 +00:00
Colin e86d6934fd nixpkgs: 2023-10-24 -> 2023-10-26
```
• Updated input 'nixpkgs-unpatched':
    'github:nixos/nixpkgs/8efd5d1e283604f75a808a20e6cde0ef313d07d4' (2023-10-24)
  → 'github:nixos/nixpkgs/63678e9f3d3afecfeafa0acead6239cdb447574c' (2023-10-26)
```
2023-10-28 00:14:39 +00:00
Colin db028dcfe2 fix servo build (IFD in iproute2) 2023-10-27 13:50:11 +00:00
Colin ad2fef5b48 fix build from earlier nixpkgs update 2023-10-27 13:29:26 +00:00
Colin 66524685a9 koreader-from-src: build without emulation 2023-10-27 11:37:40 +00:00
Colin 1d7c54b20e todo.md: remove obsolete sxmo PATH task 2023-10-27 08:42:00 +00:00
Colin d68cc761cc koreader-from-src: don't interrupt RSS sync on image DL failure 2023-10-27 08:41:02 +00:00
Colin 25c13705cd sane-bt-add: trim trailing space from the input URL 2023-10-26 10:38:28 +00:00
Colin 55e2aaf3a1 nixpkgs: 2023-10-19 -> 2023-10-24; sops-nix -> 2023-10-25; mobile-nixos
```
• Updated input 'mobile-nixos':
    'github:nixos/mobile-nixos/7cee346c3f8e73b25b1cfbf7a086a7652c11e0f3' (2023-10-01)
  → 'github:nixos/mobile-nixos/0251d0ae920a9882fd8527dc3fd9e3e54f122b2e' (2023-10-25)
• Updated input 'nixpkgs-unpatched':
    'github:nixos/nixpkgs/7c9cc5a6e5d38010801741ac830a3f8fd667a7a0' (2023-10-19)
  → 'github:nixos/nixpkgs/8efd5d1e283604f75a808a20e6cde0ef313d07d4' (2023-10-24)
• Updated input 'sops-nix':
    'github:Mic92/sops-nix/51186b8012068c417dac7c31fb12861726577898' (2023-10-15)
  → 'github:Mic92/sops-nix/014e44d334a39481223a5d163530d4c4ca2e75cb' (2023-10-25)
• Updated input 'sops-nix/nixpkgs-stable':
    'github:NixOS/nixpkgs/0e1cff585c1a85aeab059d3109f66134a8f76935' (2023-10-15)
  → 'github:NixOS/nixpkgs/fb000224952bf7749a9e8b3779104ef7ea4465c8' (2023-10-21)
```
2023-10-25 23:41:46 +00:00
Colin 94f2096219 remove outdated overlays which fixed tests which are no longer flakey 2023-10-25 14:44:20 +00:00
Colin 8f5f3933c1 cross: gvfs: update patch 2023-10-25 08:25:38 +00:00
Colin e2d72f9e54 cross: snapper: push patches upstream 2023-10-24 17:01:08 +00:00
Colin fc84aa88ee cross: remove upstreamed spdlog; add notes for upstream status of more packages 2023-10-24 16:53:55 +00:00
Colin 841fb4bf7a cross: hspell: push upstream 2023-10-24 16:53:24 +00:00
Colin 5f789b3db2 cross: gvfs: push upstream 2023-10-24 16:17:31 +00:00
Colin 49fbe5f4fa cross: gcr: push upstream 2023-10-24 15:28:48 +00:00
Colin ec4b974f3d matrix-synapse: auto-register the ntfy-sh push gateway at launch 2023-10-24 14:47:59 +00:00
Colin 84ad85a81e mpv: types.string -> types.str 2023-10-24 13:07:16 +00:00
Colin 1af7450610 cross: gspell: push upstream 2023-10-24 13:06:52 +00:00
Colin 21912f0c4f overlays: gupnp: re-enable tests on x86 2023-10-24 12:32:05 +00:00
Colin 05513da298 rename host-pkgs -> hostPkgs 2023-10-24 12:25:39 +00:00
Colin 30486f4b4e geary: fix a typo 2023-10-24 10:29:40 +00:00
Colin 974ca87983 cross: remove upstreamed overlays 2023-10-24 10:28:01 +00:00
Colin bb217ecd7b gsound: push cross compilation patch upstream 2023-10-24 10:27:33 +00:00
Colin ed92fafdf6 todo.md: dont sleep when phone is ringing 2023-10-24 09:53:09 +00:00
Colin 228fd2353a cross compilation: support gnome.geary 2023-10-24 09:47:10 +00:00
Colin 69ac75131c apps: add geary 2023-10-24 04:50:31 +00:00
Colin 275f1ba49f trust-dns: 0.23.0 -> 0.24.0 2023-10-24 02:36:08 +00:00
Colin 501e79006c new script: sane-wipe-fractal 2023-10-24 00:41:05 +00:00
Colin 1ced3db806 moby: document more DRM_IOCTL_MODE_CREATE_DUMB 2023-10-24 00:15:13 +00:00
Colin d1513b5816 moby: try out a scale of 1.6 2023-10-23 10:21:04 +00:00
Colin a225b7e5f5 mpv: switch to wlshm vo backend on moby; default for desko 2023-10-23 08:36:43 +00:00
Colin e7768572e5 fractal: update docs for fixing broken cache 2023-10-22 23:21:35 +00:00
Colin a26a398181 todo.md: matrix/ntfy integrations 2023-10-22 23:21:20 +00:00
Colin c59e9b09fc matrix: document push notification configuration 2023-10-22 14:47:52 +00:00
Colin 81c8af54a1 sxmo_suspend: deploy with verbose until i know its all working well 2023-10-22 13:01:33 +00:00
Colin 2d9ac4ca1e todo.md: remove stale items 2023-10-22 13:00:36 +00:00
Colin a9f56d9216 sxmo_suspend.sh: be precise about which IP address we listen to for notifications 2023-10-22 12:53:32 +00:00
Colin fb33ac6d1b sxmo_suspend: fix reversed getpeername -> getsockname 2023-10-22 12:36:57 +00:00
Colin eaed914c8b sxmo_suspend: fix typo in getpeername 2023-10-22 12:14:57 +00:00
Colin b10425f6b6 ntfy-waiter: never drop notifications, but rather sleep until client is ready to receive them 2023-10-22 12:10:52 +00:00
Colin 7541d5466e ntfy-waiter: add a todo for not dropping notifications (!) 2023-10-22 11:48:01 +00:00
Colin 644084f176 moby: disable ntfy-sh now that i've got a less racy notification method 2023-10-22 11:46:58 +00:00
Colin baca7931ad static-nix-shell: add `extraMakeWrapperArgs` option 2023-10-22 11:45:44 +00:00
Colin 2ee7af064d sxmo_suspend.sh: be more precise in the wake condition 2023-10-22 11:28:10 +00:00
Colin e1a80d6752 ntfy-waiter: forbid duplicate connections from the same IP
this is sort of a bandaid; it's still a bit iffy
2023-10-22 11:18:54 +00:00
Colin 523e859ee4 ntfy-waiter: more verbosity/debugging 2023-10-22 11:08:48 +00:00
Colin 230ca20017 sxmo_suspend.sh: explicitly shutdown the socket 2023-10-22 11:00:21 +00:00
Colin 30529182b0 sxmo_suspend.sh: allow mocking enough at runtime to run on desko 2023-10-22 10:28:17 +00:00
Colin 2947e6635d ntfy-waiter: move target from network -> default 2023-10-22 10:11:45 +00:00
Colin 3e1e7d49f8 sxmo_suspend.sh: open a ntfy socket 2023-10-22 10:08:59 +00:00
Colin 4894a68c62 sxmo_suspend: refactor 2023-10-22 09:45:38 +00:00
Colin bd2775ded2 sxmo_suspend.sh: make the suspend time configurable 2023-10-22 09:41:36 +00:00
Colin 88ea557cd5 sxmo_suspend.sh: port to Python 2023-10-22 09:36:08 +00:00
Colin 3e8ad5b899 ntfy: implement a wrapper which converts ntfy subscriptions into a more specific wakeup signal 2023-10-22 06:11:49 +00:00
Colin fafe7242f7 ntfy: refactor into multiple files 2023-10-22 04:16:24 +00:00
Colin 1a01a40e85 ntfy: move to own directory 2023-10-22 04:13:37 +00:00
Colin f2f721234d nginx: link to docs 2023-10-22 04:12:34 +00:00
Colin ea19eac1c9 update firefox-extensions: ether-metamask 11.2.0 -> 11.3.0; i2p 1.52.3b16 -> 1.52.3b17 2023-10-21 21:49:21 +00:00
Colin ed1d4398a1 nixpkgs: 2023-10-16 -> 2023-10-19
```
• Updated input 'nixpkgs-unpatched':
    'github:nixos/nixpkgs/ca012a02bf8327be9e488546faecae5e05d7d749' (2023-10-16)
  → 'github:nixos/nixpkgs/7c9cc5a6e5d38010801741ac830a3f8fd667a7a0' (2023-10-19)
```
2023-10-21 11:50:37 +00:00
Colin 12e106ee2a moby: test a lima GPU timeout bugfix 2023-10-21 11:49:43 +00:00
Colin d13007fc12 moby: migrate boot args from default.nix -> kernel.nix 2023-10-21 11:49:43 +00:00
Colin 2fa00b4c73 postfix: fix connectivity issues 2023-10-21 11:48:45 +00:00
Colin c1e17a0693 nixpatches: try & abandon trust-dns updates 2023-10-21 10:15:03 +00:00
Colin cd617cc034 coturn: document routability concerns 2023-10-20 23:22:34 +00:00
Colin 5607bae49b devPkgs: add lua 2023-10-20 23:07:02 +00:00
Colin f70c467971 prosody: push to ntfy on incoming call 2023-10-20 23:06:44 +00:00
Colin 6cb5edbfff prosody: mod_sane_ntfy: hook to detect jingle calls 2023-10-20 10:39:57 +00:00
Colin 5a844762c2 prosody: ship a proof-of-concept hello world module 2023-10-20 10:25:42 +00:00
Colin de9b1e6197 prosody: docs: not about watch:stanzas 2023-10-20 10:17:20 +00:00
Colin f43bb446c8 prosody: move to own directory 2023-10-20 10:16:23 +00:00
Colin fa8e014eae nixcache: fix typo 2023-10-20 06:22:59 +00:00
Colin 6191542805 nix-serve: port 5000 -> 5001; prosody: enable proxy65 on port 5000 2023-10-20 04:48:30 +00:00
Colin b8f13cd965 prosody/coturn: debugging (this config works with JMP.chat) 2023-10-20 03:14:36 +00:00
Colin ee2b1f245e koreader-from-src: 2023.06 -> unstable-2023-10-18 2023-10-20 00:44:03 +00:00
Colin f11f91b9fc sane-bt-search: increase default result count 5 -> 12 2023-10-19 00:35:55 +00:00
Colin 296a48caf1 podcasts: unsub Trash Future (sorry, Cory) 2023-10-19 00:26:54 +00:00
Colin f58bfb3c42 fractal: document a state corruption bug/fix 2023-10-18 22:16:28 +00:00
Colin cbaaa984b6 phog: 0.1.4 -> 0.1.5 2023-10-18 22:11:26 +00:00
Colin 6e4f0af012 gpodder-adaptive: 3.11.3+1 -> 3.11.4+1 2023-10-18 22:11:07 +00:00
Colin 3942ae0f1b feeds: subscribe to Benjamin Mako 2023-10-18 21:57:56 +00:00
Colin fa65b0b92e feeds: add Samana Harihareswara 2023-10-18 21:53:51 +00:00
Colin ca998dc2be firefox-extensions: update (bypass-paywalls-clean, ether-metamask, sponsorblock, ublacklist 2023-10-18 21:46:48 +00:00
Colin b6a2107b1c sane-bt-search: support filtering for books, in general 2023-10-18 21:46:11 +00:00
Colin 697ae02797 podcasts: The Daily: port to db 2023-10-18 21:37:12 +00:00
Colin ab35a46e5f podcasts: sub Tech Wont Save Us, Trash Future 2023-10-18 21:35:36 +00:00
Colin a6179b8234 feeds: unsub Emerge, Lateral, Witch Trials 2023-10-18 21:18:52 +00:00
Colin d90aa693f9 podcasts: sort 2023-10-18 21:17:35 +00:00
Colin b23c3cbf61 podcasts: move comments to the same line as the definition
this will facilitate sorting
2023-10-18 21:17:11 +00:00
Colin 55ad5dcc01 flake: check.host-configs: be more verbose 2023-10-18 06:00:07 +00:00
Colin 90b1215a89 s/types.string/types.str/ 2023-10-17 22:46:02 +00:00
Colin a218ddb202 nixpkgs: 2023-10-11 -> 2023-10-16; sops-nix -> 2023-10-15
```
• Updated input 'nixpkgs-unpatched':
    'github:nixos/nixpkgs/5e4c2ada4fcd54b99d56d7bd62f384511a7e2593' (2023-10-11)
  → 'github:nixos/nixpkgs/ca012a02bf8327be9e488546faecae5e05d7d749' (2023-10-16)
• Updated input 'sops-nix':
    'github:Mic92/sops-nix/f995ea159252a53b25fa99824f2891e3b479d511' (2023-10-11)
  → 'github:Mic92/sops-nix/51186b8012068c417dac7c31fb12861726577898' (2023-10-15)
• Updated input 'sops-nix/nixpkgs-stable':
    'github:NixOS/nixpkgs/2f3b6b3fcd9fa0a4e6b544180c058a70890a7cc1' (2023-10-07)
  → 'github:NixOS/nixpkgs/0e1cff585c1a85aeab059d3109f66134a8f76935' (2023-10-15)
```
2023-10-17 22:43:07 +00:00
Colin 8dc7eff545 epiphany: mention WEBKIT_USE_SINGLE_WEB_PROCESS envvar 2023-10-17 22:42:15 +00:00
Colin 77b4e7ff09 slightly better prosody + coturn integration
still not able to receive incoming calls, but i pass more prosody self-checks
2023-10-17 09:43:55 +00:00
Colin 827d9626d6 ports: actually forward `ovpns` ports into the root namespace 2023-10-17 09:42:13 +00:00
Colin cdfcf1a46d sftpgo: dont activate until we have network 2023-10-17 09:41:07 +00:00
Colin e8c4555be7 prosody: partial integration with coturn
still missing something, which breaks inbound calls
2023-10-17 01:16:59 +00:00
Colin 0092ccacbe ejabberd: ensure coturn isnt running 2023-10-17 01:16:36 +00:00
Colin 184e37e2dc derived-secrets: make the mode configurable
this should probably be moved into sane.fs proper at some point
2023-10-17 01:16:08 +00:00
Colin 8859b4cf8a programs: persist data better for spotify, brave, tor 2023-10-16 19:18:47 +00:00
Colin 5a2382f61c prosody: remove dead code 2023-10-16 08:05:00 +00:00
Colin f6c56969bc xmpp: switch from ejabberd to prosody 2023-10-16 07:56:47 +00:00
Colin 1f0fad62a7 fractal-nixified: add missing "gst-plugins-good" dependency
this is necessary to play mp4. should be sent to upstream nixpkgs fractal-next package too
2023-10-16 00:40:14 +00:00
Colin 5b633d20bc fractal-nixified: add convenient "optimized" and "unoptimized" passthru attributes
override isn't exposed to 'nix build ...', so this gives a way to build the variants from CLI
2023-10-16 00:21:18 +00:00
Colin a918aa0c2f sxmo: suspend: dont wake on ARP unless absolutely necessary
it *should* be handled by the WiFi chip's ARP offload
2023-10-15 06:52:41 +00:00
Colin 93a265f34a sxmo: fix typo: avoid wakelock if wowlan_bits are 0x0 2023-10-14 21:54:44 +00:00
Colin b818972597 sxmo: decrease the LED blink frequency further, to 8s 2023-10-14 10:24:35 +00:00
Colin 476b481fd7 moby: dont ship the rtl8723cs *bluetooth* firmware
it seems to conflict with Wake on Lan
2023-10-14 10:20:47 +00:00
Colin 631235e56b moby: sxmo_suspend: comment for future work to wake on Dino activity 2023-10-14 10:19:57 +00:00
Colin ea4063340d moby: prioritize headset audio out 2023-10-14 10:19:31 +00:00
Colin f2ad69af1f linux-megous: disable keep-power-in-suspend patch 2023-10-14 09:44:57 +00:00
Colin e34ca0fec9 rtl8723cs-wowlan: support wake on UDP 2023-10-14 02:59:22 +00:00
Colin 43464e658f rtl8723cs-wowlan: factor the Ip frame out of Tcp frame
that'll make it easier to support UDP in future
2023-10-14 02:56:02 +00:00
Colin 56070547b1 nixpkgs: 2023-10-09 -> 2023-10-11
```
• Updated input 'nixpkgs-unpatched':
    'github:nixos/nixpkgs/f99e5f03cc0aa231ab5950a15ed02afec45ed51a' (2023-10-09)
  → 'github:nixos/nixpkgs/5e4c2ada4fcd54b99d56d7bd62f384511a7e2593' (2023-10-11)
• Updated input 'sops-nix':
    'github:Mic92/sops-nix/6b32358c22d2718a5407d39a8236c7bd9608f447' (2023-10-09)
  → 'github:Mic92/sops-nix/f995ea159252a53b25fa99824f2891e3b479d511' (2023-10-11)
```
2023-10-13 19:10:44 +00:00
Colin 0593971917 linux-megous: test some wowlan patches 2023-10-13 10:29:16 +00:00
Colin b77650219a sxmo_suspend: wake on a broadcast ARP query 2023-10-13 06:15:51 +00:00
Colin ad1ebc0ed3 rtl8723cs-wowlan: implement --dest-mac flag 2023-10-13 06:13:19 +00:00
Colin ae64493564 sxmo_suspend: match packet destination IP for TCP packets 2023-10-13 05:56:26 +00:00
Colin 1272b941c2 rtl8723cs-wowlan: tcp: add dest-ip option 2023-10-13 05:55:10 +00:00
Colin 3d63c33669 rtl8723cs-wowlan: fix get_ipaddrs to handle multiple "hostname" binaries on PATH 2023-10-13 05:45:40 +00:00
Colin fcbc558de9 sxmo_suspend.sh: fix "time_start" typo 2023-10-13 05:43:30 +00:00
Colin b180adcf48 RealtimeKit: disable 2023-10-13 03:35:00 +00:00
Colin 342c9bbbef sxmo_suspend: track wifi IRQ count 2023-10-13 02:28:29 +00:00
Colin 233faaadac zsh: better l/ll aliases with eza 2023-10-12 22:11:05 +00:00
Colin aaf9dbac1e ship gdb, mercurial 2023-10-12 01:59:28 +00:00
Colin b7d90c3b6d cross: graphicsmagick: remove reference to build coreutils 2023-10-12 01:11:27 +00:00
Colin a4b54cd9c1 rpm: 4.18.1 -> 4.19.0 2023-10-12 00:00:54 +00:00
Colin d6c5580fc3 rtl8723cs-wowlan: remove dependency on moreutils 2023-10-11 22:36:47 +00:00
Colin 7d63960e6f cross: doc: clarify that moreutils isnt ever going to cross 2023-10-11 22:32:01 +00:00
Colin 8dc1cbbbd2 programs: ship binutils-unwrapped instead of binutils
it has better cross compilation properties
2023-10-11 22:15:28 +00:00
Colin 6253995f6c moby: cross: avoid runtime dependency on binutils wrapper via dtrx 2023-10-11 22:06:59 +00:00
Colin 835397ad29 hspell: remove references to build perl from the output 2023-10-11 20:58:09 +00:00
Colin 042e6ae3f9 sxmo-utils-latest: 2023-10-10 -> 2023-10-11 2023-10-11 20:31:43 +00:00
Colin 5b5cfc40a8 cross: fix broken refs in snapper build 2023-10-11 20:24:49 +00:00
Colin 3cf636f681 cross: remove dated libavif hack
it builds upstream now
2023-10-11 19:44:44 +00:00
Colin a5281c7f98 cross: document more runtime closure problems 2023-10-11 19:41:49 +00:00
Colin 30c7fd8b09 nixpatches: assign a version so that "nixpatches-patched-uninsane" package formats friendlier 2023-10-11 19:12:29 +00:00
Colin 710e4cc066 nixpkgs: 2023-10-06 -> 2023-10-09
```
• Updated input 'nixpkgs-unpatched':
    'github:nixos/nixpkgs/87828a0e03d1418e848d3dd3f3014a632e4a4f64' (2023-10-06)
  → 'github:nixos/nixpkgs/f99e5f03cc0aa231ab5950a15ed02afec45ed51a' (2023-10-09)
• Updated input 'sops-nix':
    'github:Mic92/sops-nix/d7380c38d407eaf06d111832f4368ba3486b800e' (2023-10-08)
  → 'github:Mic92/sops-nix/6b32358c22d2718a5407d39a8236c7bd9608f447' (2023-10-09)
```
2023-10-11 10:08:11 +00:00
Colin 8b4a0a916b noop: test but dont actually enable pre-emption 2023-10-11 10:08:11 +00:00
Colin 5cfde63d5d wowlan: document theory on wake failure 2023-10-11 10:01:15 +00:00
Colin 1cf442dffd sway: build without wrapperFeatures.gtk 2023-10-11 09:59:10 +00:00
Colin 6cda5cf49b moby: remove some build artifacts from the host/runtime closure 2023-10-11 09:58:44 +00:00
Colin 0a3e6b34c7 sxmo_hook_postwake.sh: prevent rapid re-entry into sleep 2023-10-11 07:53:41 +00:00
Colin 322ef2c333 mpv: fix cross compilation to have no build deps in closure 2023-10-11 06:46:32 +00:00
Colin 6ff72c83ae patch: mesa: dont depend on build python 2023-10-11 06:19:06 +00:00
Colin dc40395136 linux-megous: build with SCHED_DEBUG=y 2023-10-11 05:39:47 +00:00
Colin 28a2042664 gPodder: store data in ~/.local/share/gPodder, not ~/gPodder 2023-10-11 05:14:20 +00:00
Colin 7aa3f1f989 cross: fix moreutils build 2023-10-11 02:55:33 +00:00
Colin 08c92151eb rtl8723cs-wowlan: automatically derive the IP address to watch for ARP packets on 2023-10-11 02:44:34 +00:00
Colin 5a753583bf sxmo: reduce the screenoff LED frequency 2s -> 5s
this should hopefully allow entering sleep more reliably
2023-10-11 02:41:12 +00:00
Colin c3d0b6b486 sxmo-utils-latest: 2023-10-05 -> 2023-10-10 2023-10-11 01:30:43 +00:00
Colin ff89819940 sxmo_suspend.sh: notes about wowlan and blocking suspend here 2023-10-11 00:58:49 +00:00
Colin 9a69d8bd0d ship eza (ls substitute) 2023-10-10 22:08:58 +00:00
Colin 091e525846 enable rtkit/RealtimeKit 2023-10-10 21:45:19 +00:00
Colin 6dd1d5759b wowlan: document a new failure mode/workaround 2023-10-10 21:33:34 +00:00
Colin f3162544f7 firefox-extensions: update 2023-10-10 20:51:06 +00:00
Colin 1bf829dcf0 sxmo_suspend: rework time accounting to be more similar to upstream 2023-10-10 10:05:09 +00:00
Colin 760326b38b sxmo_suspend.sh: switch from sudo -> doas
idk, some path problem with sudo ending up in /etc/profiles/per-user/colin/bin/sudo
2023-10-10 09:50:13 +00:00
Colin 0293773e64 sxmo_suspend.sh: output formatting improvements 2023-10-10 09:47:41 +00:00
Colin 6b6a9504e4 sxmo_suspend.sh: invoke rtl8723cs-wowlan with expected permissions 2023-10-10 09:39:38 +00:00
Colin 2de947d96e wowlan: move the implementation into sxmo_suspend.sh instead of a systemd service 2023-10-10 09:26:48 +00:00
Colin c493fcfd7f rtl8723cs-wowlan: iwprv -> iwpriv typo fix 2023-10-10 08:38:40 +00:00
Colin 85e5d30b0f wowlan module: port to rtl8723cs-wowlan python script 2023-10-10 08:34:02 +00:00
Colin 330864c866 moby: ship rtl8723cs-wowlan script 2023-10-10 08:03:45 +00:00
Colin 29dde0240b wowlan: define a script which can set the patterns at runtime
this will be a little easier to debug on the device itself
2023-10-10 08:03:45 +00:00
Colin 114df5efab wowlan: enable CONFIG_ARP_KEEP_ALIVE (experimental) 2023-10-10 05:24:57 +00:00
Colin e28e60769a sxmo: postwake: show the human-readable wakeup reason 2023-10-10 03:21:23 +00:00
Colin bc8cf58b5a sxmo: inputhandler: map powerx3 from screenoff state 2023-10-10 00:02:31 +00:00
Colin d740dbe049 sxmo-utils: fix some forgotten superd users to systemd 2023-10-09 22:18:07 +00:00
Colin 0eb8244897 sxmo: doc: link to Aren's SXMO fork 2023-10-09 22:05:37 +00:00
Colin 69fe55961f sxmo: link poweroff/reboot hooks into user hooks dir 2023-10-09 20:37:51 +00:00
Colin aa18af8635 sxmo-utils: apply documentation-related patches 2023-10-09 20:25:48 +00:00
Colin d47ed3dec9 nixpkgs: 2023-10-03 -> 2023-10-06; sops-nix -> 2023-10-08; uninsane-dot-org
```
• Updated input 'nixpkgs-unpatched':
    'github:nixos/nixpkgs/81e8f48ebdecf07aab321182011b067aafc78896' (2023-10-03)
  → 'github:nixos/nixpkgs/87828a0e03d1418e848d3dd3f3014a632e4a4f64' (2023-10-06)
• Updated input 'sops-nix':
    'github:Mic92/sops-nix/746c7fa1a64c1671a4bf287737c27fdc7101c4c2' (2023-10-03)
  → 'github:Mic92/sops-nix/d7380c38d407eaf06d111832f4368ba3486b800e' (2023-10-08)
• Updated input 'sops-nix/nixpkgs-stable':
    'github:NixOS/nixpkgs/dbe90e63a36762f1fbde546e26a84af774a32455' (2023-10-01)
  → 'github:NixOS/nixpkgs/2f3b6b3fcd9fa0a4e6b544180c058a70890a7cc1' (2023-10-07)
• Updated input 'uninsane-dot-org':
    'git+https://git.uninsane.org/colin/uninsane?ref=refs/heads/master&rev=1f588493031168d92a1e60705f26aaf4b2cdc07e' (2023-10-03)
  → 'git+https://git.uninsane.org/colin/uninsane?ref=refs/heads/master&rev=dea3e5cdd747ac321447ef00fa1e51423676aeda' (2023-10-08)
```
2023-10-09 08:21:41 +00:00
Colin 045b5f0294 sxmo: finish porting to systemd (everything tested works now) 2023-10-09 00:25:03 +00:00
Colin 45e5752a05 journald: dont compress the journal 2023-10-09 00:25:03 +00:00
Colin 2b39cfb57e sxmo-utils: add deps via PATH suffix, not prefix
that makes them overridable by the user, more easily
2023-10-09 00:25:03 +00:00
Colin 1ffaa232d8 sxmo: bemenu: configure via package override, not profile
this is just easier to integrate, rather than ensuring everywhere gets
the env var
2023-10-09 00:25:03 +00:00
Colin a9ddfb2752 WIP: sxmo: port to systemd 2023-10-09 00:25:03 +00:00
Colin 4682ca32e2 wowlan: document another failure 2023-10-09 00:25:03 +00:00
Colin b8ae4a284d linux-megous: revert LPS patch until i know its really an improvement 2023-10-09 00:25:03 +00:00
Colin f3c60ad136 sxmo: revert the sxmo_log patch: tee is good enough 2023-10-09 00:25:03 +00:00
Colin 3c6c70ba9f sxmo: suspend: dump wowlan_last_wake_reason on wakeup 2023-10-09 00:25:03 +00:00
Colin c0feffef1e sxmo: simplify suspend hook and cap suspend time to just 5min 2023-10-09 00:25:03 +00:00
Colin 6e80d4dfdf sxmo: inline the sxmo_suspend.sh script
this is exactly how it presently appears upstream (less shebang/comment changes)
2023-10-09 00:25:03 +00:00
Colin 1f73573fe3 stepmania: include link to nix definition in the game dir 2023-10-08 02:41:00 +00:00
Colin b6d2fbdf6d sxmo-utils-latest: 2023-09-22 -> 2023-10-05 2023-10-08 01:45:11 +00:00
Colin cf553b1386 wowlan: more documentation 2023-10-08 00:00:26 +00:00
Colin e40cbaf1cf wowlan: document more about disconnections detection 2023-10-07 21:51:33 +00:00
Colin 19b8c0c923 wowlan: document known issues 2023-10-07 21:29:55 +00:00
Colin 22e9a48edc gpodder-adaptive: 3.11.2+1 -> 3.11.3+1 2023-10-07 21:29:36 +00:00
Colin a6b1c23e2b remove no-longer-needed qemu override 2023-10-07 21:10:29 +00:00
Colin 4a498ef1a9 dino: docs: leave myself a TODO about niceness/priority 2023-10-07 08:27:35 +00:00
Colin 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
Colin 7a75cad65f Dino: bump input latency to 20ms 2023-10-07 08:09:50 +00:00
Colin 168fcce157 stepmania: configure directories 2023-10-07 05:50:58 +00:00
Colin 03d3ea4965 moby: ship the geoclue where-am-i helper on PATH 2023-10-07 04:34:15 +00:00
Colin e5125065d6 eg25-control: add a timeout to how long a power-on can take 2023-10-07 04:27:14 +00:00
Colin bc3ad7dfa5 moby: gps: restrict geoclue to only my user 2023-10-07 04:27:14 +00:00
Colin 2097c3ad77 moby: gps: document some findings 2023-10-07 04:25:44 +00:00
Colin 56838a4867 swaync: don't show GPS on non-gps-enabled devices (i.e. desktop/laptop) 2023-10-07 04:14:42 +00:00
Colin d35fe126e3 doc: dino: document findings in adjusting Dino mic buffer 2023-10-07 01:30:45 +00:00
Colin a6ea5da7a1 moby: disable legacy PulseAudio stuff 2023-10-07 01:27:16 +00:00
Colin 98a6671e95 moby: decrease the amount of samples Dino drops while in a call 2023-10-07 00:58:11 +00:00
Colin 243a4c6f0d moby: gps: document some maps programs 2023-10-07 00:21:40 +00:00
Colin e84be3a7b2 sxmo: link all default hooks into user dir 2023-10-07 00:21:13 +00:00
Colin 5fdd6881a0 sxmo-utils: update Dino suspend blocker patch 2023-10-07 00:20:49 +00:00
Colin 67192d89a9 sxmo-utils: suspend: block if Dino is in a call 2023-10-06 20:42:49 +00:00
Colin 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
Colin 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
Colin a586611aa0 docs: moby: gps: link to geoclue/gnome-maps support channels 2023-10-05 08:05:35 +00:00
Colin d7120a14f4 moby: gps: fixup geoclue notes 2023-10-04 05:36:22 +00:00
Colin 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
Colin d89287af11 switch icon theme to Pop 2023-10-03 20:21:20 +00:00
Colin b14daac0f8 komikku: 1.23.0 -> 1.24.2 2023-10-03 20:11:19 +00:00
Colin f65aaf8852 gtk: add a bunch more icon theme options 2023-10-03 20:10:09 +00:00
Colin 5a84c9a585 fractal-nixified: plumb an "optimize" argument to toggle between slow and fast build 2023-10-03 16:31:28 +00:00
Colin 464fca9679 eg25-control: actually, dont dump /dev/ttyUSB1 2023-10-03 01:13:37 +00:00
Colin 6c6e1ee84b moby: add gps-related services to the "dialout" group 2023-10-03 01:01:06 +00:00
Colin 41d8c6681f sway: disable --debug flag 2023-10-03 00:47:33 +00:00
Colin 4dbb656a34 eg25-control: dump fix data as part of --dump-debug-info 2023-10-03 00:40:32 +00:00
Colin 8c4caab995 linux-megous: 6.4.15 -> 6.5.3 2023-10-03 00:29:42 +00:00
Colin 83586ce483 trust-dns: cleanup some typos 2023-10-02 22:33:54 +00:00
Colin e20c4d01e6 trust-dns: fix missing "mkdir" during service startup 2023-10-02 22:12:09 +00:00
Colin 01cad7b702 trust-dns: perform more specialization via structured config instead of sed 2023-10-02 22:02:46 +00:00
Colin 48715546e2 trust-dns: split into separate (restartable) services 2023-10-02 21:30:51 +00:00
Colin 00b59f6985 firefox-extensions: update ublacklist, sponsorblock, ether-metamask 2023-10-02 07:49:21 +00:00
Colin d82d3e55cb firefox-extensions.bypass-paywalls-clean: 3.3.5.0 -> 3.3.6.0 2023-10-02 07:48:01 +00:00
Colin 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
Colin 2de6c01262 fractal: launch on boot 2023-10-02 06:12:24 +00:00
Colin bbdc6f3aa9 eg25-control: treat some GPS config failures as non-fatal 2023-10-02 06:12:12 +00:00
Colin 16ee30b696 sxmo-utils: kill-window patch: fetch from mail list 2023-10-02 05:39:58 +00:00
Colin 9c341c87d8 gnome-maps: fix missing gapplication runtime dep 2023-10-02 05:30:09 +00:00
Colin 67a9134130 moby: switch default browser back to epiphany 2023-10-02 05:10:00 +00:00
Colin fe6d2f04c5 sxmo-utils: add a Kill Window option to the wmmenu 2023-10-02 04:53:00 +00:00
Colin d138c99c61 sxmo-utils: fix j4-dmenu-desktop not found when trying to view all apps 2023-10-02 04:37:50 +00:00
Colin 290d6a8da5 gnome-maps: ship on lappy/desko/moby 2023-10-02 04:07:21 +00:00
Colin 09ed98c973 cross: support gnome-maps 2023-10-02 04:06:34 +00:00
Colin bc7dee6a80 swaync: enable audible notifications for Fractal Matrix client 2023-10-02 03:48:20 +00:00
Colin 4c708baf63 remove Videos/servo-incomplete symlink 2023-10-02 03:23:44 +00:00
Colin cc16fe85b0 fractal: ship the nixified build by default 2023-10-02 03:20:55 +00:00
Colin 7d63132c48 fractal-nixified: massively reduce build time (via unoptimized build) 2023-10-02 03:20:43 +00:00
Colin 5acd704ae7 docs: overlays/cross: mention cdylib fractal workaround 2023-10-01 22:43:14 +00:00
Colin 0c0948e8e1 fractal-nixified: tidy up 2023-10-01 22:40:56 +00:00
Colin 6283384522 fractal-nixified: sort dependencies 2023-10-01 22:19:37 +00:00
Colin b70fc6841f fractal-nixified: support cross compilation 2023-10-01 22:17:25 +00:00
Colin 97dd84ed71 tuba: document an alternative fix 2023-10-01 18:47:47 +00:00
Colin 7a6981253b fractal-nixified: remove some unecessary dependencies 2023-10-01 05:02:50 +00:00
Colin 9e78ec221b fractal-nixified: avoid double meson build 2023-10-01 04:42:29 +00:00
Colin 4a8d7ca1c3 alsa-ucm-conf-sane: route audio to the internal speaker by default 2023-10-01 04:26:54 +00:00
Colin b9f31c6f4b devPkgs: add cargo, rustc 2023-10-01 03:47:45 +00:00
Colin cd3bed023a fractal-nixified: it builds! 2023-10-01 03:15:53 +00:00
Colin 0ad6b2bc1b fractal-nixified: get gst-plugin-gtk4 to cross build 2023-09-30 23:42:01 +00:00
Colin 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
Colin 285dd6a1c9 fractal-nixified: get libshumate-sys and sourceview5-sys to compile 2023-09-30 20:28:31 +00:00
Colin 1c5e2843a1 fractal-nixified: get libspa crate to build 2023-09-30 20:19:28 +00:00
Colin ce9b30767f fractal-nixified: add a bunch of crateOverrides to get *closer* to a complete build 2023-09-30 07:07:40 +00:00
Colin 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
Colin 832ca52ccf fractal-nixified: regenerate with more recent crate2nix 2023-09-30 03:57:03 +00:00
Colin c70176bfb2 WIP: fractal: build with crate2nix 2023-09-30 02:57:52 +00:00
Colin cb3cf57465 cargo: when enabled, persist ~/.cargo 2023-09-30 02:57:30 +00:00
Colin dfaeb7b7de sxmo_hook_inputhandler: document proposed input changes 2023-09-30 01:42:45 +00:00
Colin d3818b5e44 fractal: enable, and persist the right directories 2023-09-29 22:08:13 +00:00
Colin 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
Colin 38fa73cfb7 feeds: unsubscribe from Michael Malice 2023-09-29 18:25:08 +00:00
Colin 43fc050eed feeds: subscribe to FasterThanLime 2023-09-29 18:23:14 +00:00
Colin f3423d45bd fractal-latest: reduce build time from 2hr+ to 5 minutes 2023-09-29 18:21:59 +00:00
Colin 56866c1ac1 servo: fix lemmy-ui build 2023-09-29 15:39:27 +00:00
Colin 99ea6a59c5 remove unused GUI apps: cantata, gajim, dconf-editor, obsidian, rhythmbox 2023-09-29 02:04:06 +00:00
Colin 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
Colin bdf049d9e4 moby: wowlan: also wake on ARP requests (experimental) 2023-09-28 20:55:18 +00:00
Colin 9205e076c5 modules/wowlan: move options to "ipv4" attrset for future protocol expansion 2023-09-28 20:09:04 +00:00
Colin 60e5f6b41b fractal-latest: 2023-07-28 -> unstable-2023-09-14 2023-09-28 06:52:56 +00:00
Colin 3aa85c96b2 sxmo_hook_rotate.sh: fix bash syntax error 2023-09-28 00:18:43 +00:00
Colin 2f71d80c38 firefox-extensions: repeat myself less when wrapping 2023-09-27 23:25:07 +00:00
Colin 558a9f4cd0 todo.md: sync 2023-09-27 22:54:04 +00:00
Colin 9a6915a0ed firefox-extensions: deprecate "fetchAddon" 2023-09-27 22:30:28 +00:00
Colin d0feca0d57 firefox-extensions: ether-metamask: port to fetchVersionedAddon 2023-09-27 22:26:55 +00:00
Colin 36e9f0bcde firefox-extensions: i2p-in-private-browsing: port to fetchVersionedAddon 2023-09-27 22:24:46 +00:00
Colin a17fc1c76e firefox-extensions.ublock-origin: 1.52.0 -> 1.52.3b0 2023-09-27 22:22:14 +00:00
Colin 84d8fb5339 firefox-extensions: ublock-origin: port to fetchVersionedAddon 2023-09-27 22:21:42 +00:00
Colin 2b9373e0fc firefox-extensions: sidebery: port to fetchVersionedAddon 2023-09-27 22:17:02 +00:00
Colin 2992d0db6b firefox-extensions: ublacklist: port to github release fetcher 2023-09-27 22:13:43 +00:00
Colin 71b70712f8 firefox-extensions: factor out the github addon fetcher 2023-09-27 22:06:38 +00:00
Colin 10c7fc8e91 sxmo: exit fullscreen on screen rotation 2023-09-27 21:42:55 +00:00
Colin 48971bb237 sponsorblock: 5.4.19 -> 5.4.21 2023-09-27 19:10:14 +00:00
Colin 387b49a8b5 flake.nix: support list-type updateScripts (e.g. `nix-update-script {}`) 2023-09-27 19:10:14 +00:00
Colin bc9bacb08f sponsorblock: fetch from github instead of Mozilla store 2023-09-27 19:10:14 +00:00
Colin d44cf620c1 firefox-extensions: remove completed TODO 2023-09-27 18:48:16 +00:00
Colin 14cef8eb6c bypass-paywalls-clean: 3.3.4.0 -> 3.3.5.0 2023-09-27 18:40:25 +00:00
Colin 0bbe3e14c1 flake: show flake targets as part of "help" 2023-09-27 18:38:06 +00:00
Colin 6df63d825a sane-bt-search: clean up the jackett URLs 2023-09-27 18:34:04 +00:00
Colin 10e6436c34 sane-bt-add: accept https:// urls and extract actual torrents from them 2023-09-27 18:34:04 +00:00
Colin 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
Colin 9a16b1cda7 ntfy: add a lengthy proxy_read_timeout to prevent hangups 2023-09-27 18:25:36 +00:00
Colin ebbef901c1 wowlan: document VPN shortcomings 2023-09-27 01:32:50 +00:00
Colin 1ef203ee07 wowlan: docs: caveats 2023-09-27 01:30:06 +00:00
Colin ca645ed23d wowlan: remove the version/ip header length match 2023-09-27 01:26:51 +00:00
Colin 742ed50960 moby: configure wake-on-lan 2023-09-27 01:04:53 +00:00
Colin a60af4990a sway: hide window bar when only one window on workspace 2023-09-26 20:36:30 +00:00
Colin 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
Colin 36d8158414 zsh: alias annoying lsof/tcpdump defaults 2023-09-26 14:38:06 +00:00
Colin 642afd6f34 ntfy: subscribe to the non-443 port 2023-09-26 13:52:10 +00:00
Colin fad9c8f483 ntfy: run on a non-443 port 2023-09-26 13:51:27 +00:00
Colin 40a8fc50d9 sxmo-utils: apply patch to launch apps via swaymsg exec 2023-09-26 00:15:28 +00:00
Colin 21838afc0d feeds: subscribe to turnoff.us 2023-09-25 23:09:56 +00:00
Colin 8821c4edd7 sxmo-timer: connect to swaync so that it alerts on completion 2023-09-25 20:56:22 +00:00
Colin a265dd28dd ntfy-sh: configure auth, simplify proxying 2023-09-25 17:34:50 +00:00
Colin 14bc8a1732 ship a trivial service which subscribes to push notifications (ntfy-sh) 2023-09-25 16:56:41 +00:00
Colin 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
Colin 691f009656 clean up documentation 2023-09-25 13:35:50 +00:00
Colin 68f1af090e have nix flake .#check do both NUR and system builds 2023-09-25 13:09:02 +00:00
Colin 6412778b98 feeds: unsubscribe from The Register 2023-09-25 12:09:56 +00:00
Colin de12a2200e feeds: add amosbbatto 2023-09-25 12:09:38 +00:00
Colin 2600d6223c tuba: fix FileDialog 2023-09-24 23:36:05 +00:00
Colin 1ed1d8403d tuba: ship a friendly alias 2023-09-24 21:38:20 +00:00
Colin 5e34d9e44d sane-scripts.sane-deadlines: fix missing sed dependency 2023-09-24 20:21:13 +00:00
Colin 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
Colin 74309f8fa4 sxmo: fix missing bin/ typo 2023-09-24 18:13:49 +00:00
Colin 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
Colin c7c90a9fa3 sxmo-utils: doc: why we include xdg-user-dirs 2023-09-24 17:48:35 +00:00
Colin e5d843b21f sxmo: add missing deps to custom hooks 2023-09-24 17:48:18 +00:00
Colin 3ab943ab0b phog: remove DesktopNames==null workaround 2023-09-24 17:24:29 +00:00
Colin e8d2aeb3a6 phog: 0.1.3 -> 0.1.4 2023-09-24 17:16:01 +00:00
Colin 28220ea8b4 flake: plumb date/rev into built nixos system images 2023-09-24 15:30:12 +00:00
Colin 9f47a29b43 mpv: update watch_later dir
see: <https://github.com/mpv-player/mpv/pull/10838>
2023-09-24 13:15:45 +00:00
Colin 46bb39332f lemoa: add an updateScript 2023-09-24 13:02:57 +00:00
Colin e8bf83274f flake: have update.pkgs not update the feeds by default 2023-09-24 12:36:17 +00:00
Colin 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
Colin 0e238ff2dd fix pkgs.feeds update scripts 2023-09-24 12:11:28 +00:00
Colin d0cbfaed44 flake: add aliases for bulk package updating 2023-09-24 10:50:02 +00:00
Colin 791dc59ba2 flake: expose update script for every package that has one 2023-09-24 10:27:32 +00:00
Colin 457197f85b gpodder-adaptive: 3.11.1+1 -> 3.11.2+1 and add an updateScript 2023-09-24 08:16:19 +00:00
Colin 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
Colin 865777b7ba enable ntfy (and manually integrate with matrix) 2023-09-23 21:09:04 +00:00
Colin 7b38ec3f8f docs: irc: mention mnt-reform channel location 2023-09-23 11:20:45 +00:00
Colin f8448d7d2f sxmo: fix sxmo_init ordering so my hooks are loaded and scale set properly 2023-09-23 11:20:20 +00:00
Colin ba638c1533 sxmo-utils: 2023-09-09 -> 2023-09-22 2023-09-23 10:11:49 +00:00
Colin 130901d7f7 sxmo: fix inputhandler hook loic errors 2023-09-23 09:36:16 +00:00
Colin 07c3fd8941 sxmo: override the postwake handler 2023-09-23 09:17:21 +00:00
Colin 2d98bbf4d6 sxmo: ship a custom inputhandler 2023-09-23 09:13:26 +00:00
Colin 08acd9714f swaync: fix perms for jingle toggle 2023-09-22 23:10:50 +00:00
Colin 57c3abf2e1 cozy: disable reporting/telemetry 2023-09-22 22:51:05 +00:00
Colin 2f12fd8ae7 ejabberd: port config to structured nix attrs 2023-09-22 22:50:51 +00:00
Colin 69ab1c1b8f servo-vpn: resolve DNS through the VPN 2023-09-22 19:49:35 +00:00
Colin a2f4dc0b6c nfs4 patch: fix so moby can still build 2023-09-22 19:48:51 +00:00
Colin 6d7ff7ea86 fix trust-dns to resolve when invoked from VPN 2023-09-22 18:54:12 +00:00
Colin 00d831e755 wg-home: fix DNS forwarding
ugh, this is a mess, but it seems to work
2023-09-22 14:36:56 +00:00
Colin 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
Colin 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
Colin 6222998303 firefox-extensions: update all binary extensions 2023-09-22 09:45:24 +00:00
Colin 8d0678457e patch broken NFS mounting 2023-09-22 09:33:05 +00:00
Colin 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
Colin e28cf3ebb5 swaync: fix SIP/jingle indicators to use systemctl --user 2023-09-21 20:37:11 +00:00
Colin 4ea0256c56 swaync: ignore "Modem crashed!" notifications/warnings 2023-09-21 20:21:38 +00:00
Colin bf52b65dd5 Dino: fix to workspace 1 2023-09-21 20:03:19 +00:00
Colin 6de9b87f16 swaync: add entry for SIP/jingle call receiving 2023-09-21 19:53:02 +00:00
Colin 2b48adfbef gnome-calls: don't auto-start 2023-09-21 19:44:11 +00:00
Colin 7f944ad4a1 dino: autostart (on moby) 2023-09-21 19:40:12 +00:00
Colin 50045432fa libkiwix: 12.0.0 -> 12.1.1 2023-09-20 09:41:18 +00:00
Colin cd4b700962 wg-home: docs: link to Arch wiki on wireguard docs 2023-09-20 09:34:26 +00:00
Colin b98934693c programs: ship binutils (for "strings") 2023-09-20 06:42:23 +00:00
Colin 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
Colin dfbe5c5210 swaync: add a button to toggle VPN 2023-09-19 16:25:17 +00:00
Colin f3ed9a3452 sane-vpn: support "vpn-servo" 2023-09-19 16:09:56 +00:00
Colin 57e35eeab1 vpn-servo: allow coexistence with wg-home 2023-09-19 16:03:20 +00:00
Colin e3e2af46a1 define a new "vpn-servo" which allows routing all traffic out of servo, via wireguard 2023-09-19 15:52:24 +00:00
Colin 3a30b891be sane-vpn-{up,down}: consolidate 2023-09-19 15:41:54 +00:00
Colin b69424983f hosts.nix: split the data out of modules/ and into common/ 2023-09-19 15:32:31 +00:00
Colin 37313183f5 engrampa: fix eval error
note that the package doesn't actually build correctly. :s
2023-09-19 14:37:03 +00:00
Colin 86453b6873 todo.md: new item to prettify sane-bt-search 2023-09-19 14:23:32 +00:00
Colin c1d62bdbc2 wg-quick: allow clients to contact the internet 2023-09-19 12:36:57 +00:00
Colin bbe633ef2e wg-home: refactor: don't 'use' lib/builtins 2023-09-19 12:09:21 +00:00
Colin 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
Colin 9d1ebd38ce wg-home: don't infer role from ip address, but set it explicitly 2023-09-19 11:38:51 +00:00
Colin 9dfcacf8a3 todo.md: add some apps to install on moby 2023-09-19 10:10:22 +00:00
Colin 247b272986 ship nm-connection-editor 2023-09-19 10:09:24 +00:00
Colin 072506c5d9 ship ethtool 2023-09-19 10:09:24 +00:00
Colin 05bbc5d18f moby: switch to linux-megous-firmware for firmware 2023-09-19 10:09:24 +00:00
Colin e51ca61bfe rtl8723cs-firmware: leave note about mobile-nixos approach 2023-09-19 10:09:24 +00:00
Colin d3ad280731 package megi's linux firmware 2023-09-19 10:09:24 +00:00
Colin 85b043af37 WIP: enable wake on wlan 2023-09-19 10:09:24 +00:00
Colin 0342594728 programs: ship iw 2023-09-19 10:09:24 +00:00
Colin 56e7484721 nixpatches: update g4music/font-manager hashes 2023-09-18 10:10:23 +00:00
Colin cd61a530cb sxmo: fix multi-user.service -> multi-user.target typo 2023-09-17 08:44:31 +00:00
Colin f4c0e06b62 docs: gnome-calls: mention ~/.cache/folks dir 2023-09-17 05:57:21 +00:00
Colin b4d748d87f gnome-calls: run as daemon after log-on 2023-09-17 05:53:05 +00:00
Colin 107c07915e ship gnome-calls 2023-09-17 05:00:15 +00:00
Colin f493f005a9 lappy: switch back to sway 2023-09-16 15:11:01 +00:00
Colin fbafbd0d52 todo.md: new item for reducing phog closure 2023-09-16 15:01:49 +00:00
Colin 9215da61a3 todo.md: remove completed eg25-control items 2023-09-16 15:00:17 +00:00
Colin 61428a5c8b unify fonts across sway and sxmo 2023-09-16 14:59:12 +00:00
Colin 77906fb58b font-manager: re-enable 2023-09-16 12:44:31 +00:00
Colin a79d021123 font-manager: build without webkit 2023-09-16 12:44:09 +00:00
Colin d85f5d88cd docs: cross: fractal-next: leave notes about present failure mode 2023-09-16 12:04:31 +00:00
Colin 518d63c08d tokodon: remove
this is upstream now; my own build file was already a no-op
2023-09-16 09:23:08 +00:00
Colin b254f0716b engrampa: add a warning to make sure i tend this once upstream updates 2023-09-16 09:21:57 +00:00
Colin 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
Colin 38f839fb60 servo: fix over-broad "passwordFile" fix 2023-09-16 08:42:05 +00:00
Colin 09cee559eb mpv: improve MIME priority; re-enable youtube support 2023-09-16 08:36:08 +00:00
Colin f64af6675b p10k/powerlevel10k: remove (unused)
i use starship now
2023-09-16 08:33:02 +00:00
Colin 9d71a08841 kitty: remove configs (unused)
i use alacritty now
2023-09-16 08:26:39 +00:00
Colin 321cc62ca0 passwordFile -> hashedPasswordFile to fix deprecation warning 2023-09-16 08:17:48 +00:00
Colin 92bf5c3be2 fix g4music build 2023-09-16 08:15:00 +00:00
Colin 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
Colin 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
Colin 81c16ec479 swaync/feedbackd: activate ringer on incoming dino call 2023-09-16 05:06:41 +00:00
Colin 254da7e17b swaync: document env vars 2023-09-16 02:55:36 +00:00
Colin 400739cd83 feedbackd: add debug logging 2023-09-16 02:55:23 +00:00
Colin 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
Colin c3a6943b7e swaync: replace feedbackd button with gps button 2023-09-15 16:51:43 +00:00
Colin 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
Colin c73246d7c6 sane-bt-search: fix tracker typos 2023-09-15 11:14:29 +00:00
Colin e03ae48ef6 docs: feedbackd: note about default.json 2023-09-15 10:44:29 +00:00
Colin cd1cfdd5db swaync: fix to also proxy notifs from Purisms Chatty app 2023-09-15 10:35:30 +00:00
Colin d87015836e swaync: integrate with feedbackd for notification sounds 2023-09-15 10:20:18 +00:00
Colin 71c01795f4 moby: eg25-control-freshen-agps: fix to actually run hourly 2023-09-15 07:35:05 +00:00
Colin 2291c89dbc moby: eg25-control: fixup perms & add service that DLs new agps data when stale 2023-09-15 04:47:12 +00:00
Colin 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
Colin a0e6efb409 eg25-control: better cache timestamp handling (just use os.stat) 2023-09-15 03:37:18 +00:00
Colin bd18a6871c eg25-control: add --ensure-agps-cache operation 2023-09-15 03:33:00 +00:00
Colin 0f3f566d25 eg25-control: use fs timestamp when caching 2023-09-15 02:53:35 +00:00
Colin 92451d1e28 eg25-control: cache the location assistance data 2023-09-15 02:35:31 +00:00
Colin a0c2ed38e6 eg25-control: allow finer-grained service control 2023-09-15 01:38:50 +00:00
Colin 649e5a2cab sway: persist pipewire/wireplumber audio volumes 2023-09-13 12:57:18 +00:00
Colin f2e51ef742 todo.md: swaync: theme 2023-09-13 10:14:07 +00:00
Colin cf4c27a74c swaynotificationcenter: support pulseaudio even on cross builds 2023-09-13 10:11:11 +00:00
Colin 4cff9f99cb alsa-ucm-conf-sane: reduce Internal Speaker playback priority 2023-09-13 09:35:01 +00:00
Colin 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
Colin 9ad1be40b2 persist: stores: crypt: remove unrecognized nodev flag 2023-09-13 06:07:04 +00:00
Colin 910d0fa59e persist: remove the nosuid flag since gocryptfs cant parse it here 2023-09-13 05:13:43 +00:00
Colin f54d5a68ff trust-dns: 0.22.1 -> 0.23.0 2023-09-13 02:53:06 +00:00
Colin a359350d7e sxmo-utils.latest: 2023-08-29 -> 2023-09-09 2023-09-12 10:29:10 +00:00
Colin 7bef6b4089 modules: users/programs: cleaner option passthrough 2023-09-12 05:44:53 +00:00
Colin 8011e78e21 persist: cryptClearOnBoot: note rare (but predictable) bug during redeploy 2023-09-12 04:58:56 +00:00
Colin 8a6fcd92ae programs: port to programs.services interface 2023-09-12 04:45:38 +00:00
Colin 3e33313bf0 programs: add a "services" option which forwards into the user config 2023-09-12 04:44:07 +00:00
Colin 6138291a8d users: add a "services" option via which to configure per-user systemd services 2023-09-12 04:43:23 +00:00
Colin 6addf5a3b2 fs: symlink: add an option by which to control the symlink target name 2023-09-12 04:41:32 +00:00
Colin 2ead0201ab todo.md: add task for moby battery readout 2023-09-12 00:07:34 +00:00
Colin 56ad2370dc colin: add to systemd-journal group 2023-09-12 00:06:00 +00:00
Colin 3157ceb88b swaync: dont ship dbus files 2023-09-11 23:03:57 +00:00
Colin df2a2fe427 mako: simplify with a rmDbusServices helper 2023-09-11 22:56:54 +00:00
Colin c55ea59c4f ship unzip, for when dtrx fails 2023-09-11 22:31:54 +00:00
Colin 9cb28e037d firefox: sponsorblock: fix to really not show popup on first-run 2023-09-11 22:30:28 +00:00
Colin 90eeb380ef firefox-extensions: upadte sponsorblock, ublacklist 2023-09-11 22:21:25 +00:00
Colin 9472a5c5d4 todo.md: sort moby tasks 2023-09-11 01:30:29 +00:00
Colin 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
Colin 3f10fbdf4d sway: remove deprecated "types.string" 2023-09-10 12:57:10 +00:00
Colin c5ccc0ab34 eg25-control: mention atinout as a way to send AT commands 2023-09-10 12:56:56 +00:00
Colin 664bd473c3 linux-megous: try making more modules be builtin 2023-09-10 12:56:37 +00:00
Colin 8ef0926614 cross: build in qemu using stock linux
this allows faster iteration of linux-megous kernel
2023-09-10 11:59:47 +00:00
Colin 2298d1bfaa linux-megous: 6.4.7 -> 6.4.15 2023-09-10 11:47:05 +00:00
Colin 08857dd143 sane-bt-search: rank miobt/subsplease 2023-09-10 11:46:39 +00:00
Colin b26f7a5d2b sysadminUtils: ship dtc (device tree de/compiler) 2023-09-10 09:49:31 +00:00
Colin 4e997591dd snippets: update 2023-09-10 00:49:02 +00:00
Colin fad3972554 sway: waybar: fix media to better handle multiple players 2023-09-10 00:01:39 +00:00
Colin 755f844294 doc: sway/wlroots patch: explain the xdg_activation_v1 situation 2023-09-09 10:52:07 +00:00
Colin fd18da52a8 overlays/preferences: remove dead dino code (it never worked) 2023-09-09 09:32:21 +00:00
Colin cc78c3c36e sway: patch to temporarily allow any window to request activation (fix for notifications) 2023-09-09 09:32:00 +00:00
Colin 75009f6816 doc: sxmo: explain why we need nerdfonts 2023-09-09 07:44:31 +00:00
Colin 59f82cea27 doc: element: leave notes for if element fails to render, again 2023-09-09 07:11:25 +00:00
Colin 0da8d282fe feeds: add Andrew Heaton - Political Orphanage 2023-09-09 02:33:48 +00:00
Colin 6b4bd5ea28 feeds: remove Useful Idiots
the only ungated content is just idle chitchat
2023-09-09 02:20:02 +00:00
Colin 93ceef0163 sane-bt-search: fix bakabt URIs 2023-09-09 00:05:22 +00:00
Colin eab0d656d3 docs: cpuFreqGovernor: explain which hardware this config affects 2023-09-08 23:37:21 +00:00
Colin 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
Colin 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
Colin b65eca7dcf sxmo: fix so the sway session launched via phog includes debug logging 2023-09-08 10:59:31 +00:00
Colin 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
Colin b2393d4715 opengl: enable more broadly
this reduces the amount of sxmo-specific config
2023-09-07 10:47:17 +00:00
Colin c86037e5d0 sway: don't enable greetd by default 2023-09-07 10:45:23 +00:00
Colin d7751fb300 sway: remove unused installConfigs option 2023-09-07 10:33:28 +00:00
Colin 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
Colin 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
Colin ea26899735 docs: swaync: show how to view interactive style 2023-09-07 09:09:47 +00:00
Colin f8d807225f swaync: fix backlight controls for moby 2023-09-07 08:54:43 +00:00
Colin 4c08609824 swaync: ship as own service 2023-09-07 07:34:22 +00:00
Colin ccb11a4ecf swaync: fix broken black-on-black text 2023-09-07 07:33:15 +00:00
Colin 7f8ce68182 transmission: disable the incomplete dir 2023-09-07 06:14:11 +00:00
Colin edf936820a transmission: fix permission-related errors 2023-09-07 06:14:11 +00:00
Colin c6ab274dcf sxmo: waybar: add swaync 2023-09-07 01:27:30 +00:00
Colin 4d0c1811a3 neovim: associate with json/txt/md 2023-09-07 00:11:33 +00:00
Colin ccb6f33b2f swaync: tune config; ignore certain sxmo notifications 2023-09-07 00:11:14 +00:00
Colin 4484fd243e docs: swaynotificationcenter: show how to reveal the notification center 2023-09-06 10:22:56 +00:00
Colin 7f1cdae91a sxmo: remove mako & other programs which are managed by sway now 2023-09-06 10:14:59 +00:00
Colin b763009821 cross: fix swaynotificationcenter compilation 2023-09-06 09:56:46 +00:00
Colin f392c0c02b swaync: tune parameters a bit 2023-09-06 09:20:00 +00:00
Colin 027086dd48 waybar: add divider to swaync 2023-09-06 09:19:50 +00:00
Colin 6eeca57694 waybar: add swaync notifications center 2023-09-06 09:13:34 +00:00
Colin cc9ff2a2b0 swaynotificationcenter: port text blob to structured nix config 2023-09-06 09:03:19 +00:00
Colin 507753b3dc .gitignore: ignore some more things 2023-09-06 08:59:58 +00:00
Colin 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
Colin 6f5132633f sway: disable unused `status_cmd` 2023-09-06 08:19:52 +00:00
Colin 1076289490 sway: enable xwayland (but not for sxmo) 2023-09-06 08:19:52 +00:00
Colin 743f669b8c mako: disable the dbus service so our systemd service can take control 2023-09-06 08:19:52 +00:00
Colin c12fc4bd57 todo.md: remove completed mpv item 2023-09-06 08:19:52 +00:00
Colin 9ab82904e6 mpv: remove power-button -> close mpv mapping 2023-09-06 08:19:51 +00:00
Colin 45df0954f4 sway: improve waybar text size 2023-09-06 08:19:51 +00:00
Colin de685236a0 sway: waybar: fix default min-width setting (to aid moby) 2023-09-06 01:55:14 +00:00
Colin 2aa8033a5f sway: remove defaulted bar options 2023-09-06 01:18:35 +00:00
Colin 12b2fb6dfd mako: deploy as systemd service 2023-09-06 00:57:47 +00:00
Colin aa5eb3988d sway: fix broken `@status@` substitution 2023-09-06 00:51:13 +00:00
Colin 5efeb6ca50 lappy: sxmo: set noidle 2023-09-06 00:46:08 +00:00
Colin 18eaebb7fc mako: don't dismiss notifications when touched 2023-09-05 18:21:26 +00:00
Colin 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
Colin 51ecf1b54b sxmo: fix sxmo_hook_init.sh -> sxmo_hook_start.sh 2023-09-05 17:31:33 +00:00
Colin d1741c60dc sxmo: clean up our hook injections 2023-09-05 17:21:02 +00:00
Colin f62c844aaf modules: fs: allow symlink target to be a `path` 2023-09-05 17:21:02 +00:00
Colin 409baf0321 moby: lift background into sway config 2023-09-05 16:13:23 +00:00
Colin 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
Colin 233a81c7d8 sxmo: more logging around power_button/volume_button 2023-09-05 09:14:32 +00:00
Colin aca67b997a sxmo: dont start conky manually (let sway do it) 2023-09-05 08:48:18 +00:00
Colin 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
Colin 14b0d1bd37 sway: tidy up media key handling to not interfere with sxmo hooks 2023-09-05 04:51:12 +00:00
Colin 578162a266 sxmo: fix waybar height 2023-09-05 04:32:00 +00:00
Colin ab776d7fc8 sxmo: fold the sway config fully into sane.gui.sway 2023-09-05 04:25:58 +00:00
Colin cd9f05b8e1 sxmo: merge waybar configs into sway 2023-09-05 03:43:32 +00:00
Colin 2bf978f845 sway: waybar: disable sway/mode (it doesnt seem to do anything...) 2023-09-05 03:09:32 +00:00
Colin b89212bcbd refactor: waybar: sort these items 2023-09-05 01:19:06 +00:00
Colin 5498694729 sway: tidy waybar items and add memory 2023-09-05 01:18:55 +00:00
Colin 7b5bf2969a sway: switch theming to be consistent with SXMO, for future merging 2023-09-05 01:05:59 +00:00
Colin e198c49a96 refactor: sway: make snip_cmd be an actual shell script 2023-09-05 00:29:38 +00:00
Colin 7f5811db9a refactor: sway: split config template into own file 2023-09-05 00:28:38 +00:00
Colin 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
Colin 59ac2061af sxmo: minor docs improvement 2023-09-04 11:33:14 +00:00
Colin 905934cad2 moby: disable blueberry app, since it doesnt compile 2023-09-04 11:31:07 +00:00
Colin 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
Colin 680ab2c189 lappy: fix sxmo polyfill 2023-09-04 10:01:29 +00:00
Colin 10095e3ce5 sxmo: rename greeter option: {,->greetd-}sway-gtkgreet 2023-09-04 01:06:57 +00:00
Colin 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
Colin 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
Colin 6a83e0ce6c WIP: sxmo: ship notifications-related dependencies 2023-09-03 08:48:43 +00:00
Colin 72960aa963 cross: fix flatpak compilation 2023-09-03 08:46:50 +00:00
Colin 5f4f047769 cross: fix ostree compilation 2023-09-03 07:45:21 +00:00
Colin a880ba254b sway: remove some unneeded config options 2023-09-02 10:37:09 +00:00
Colin 4d75c3d97a ejabberd: document more compat & how to admin 2023-09-02 08:36:32 +00:00
Colin 90511ed765 ejabberd: support matrix: clarify client support 2023-09-02 08:36:32 +00:00
Colin aa3b85511f ejabberd: docs: update federation/support matrix 2023-09-02 08:36:32 +00:00
Colin 5d90cbcc98 programs: ship gajim on desko 2023-09-02 07:21:16 +00:00
Colin 0525f99813 moby: ship dino 2023-09-02 05:13:01 +00:00
Colin 769019f2f5 greetd: types.string -> types.str 2023-09-02 01:36:11 +00:00
Colin dcaba0f0ee secrets: fix build when host has no secrets 2023-09-02 01:34:32 +00:00
Colin d33b6eec59 flake: add a check-host-configs target to ensure all hosts are buildable 2023-09-02 01:25:20 +00:00
Colin 20aef83496 greetd: refactor: session{Name,Cmd,User} into session attrset 2023-09-02 00:54:05 +00:00
Colin 3cc4a1ea19 sxmo: port to greetd abstraction 2023-09-02 00:49:44 +00:00
Colin a41fefa906 consolidate greetd stuff out of sway 2023-09-02 00:07:46 +00:00
Colin 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
Colin 63fab5899b common: mount /mnt/servo-nfs/playground 2023-09-01 10:10:28 +00:00
Colin 357b6ef06e nfs: expose playground as a read/write dir 2023-09-01 10:08:29 +00:00
Colin 4fdf74fdbe export: enforce a quota 2023-09-01 03:37:33 +00:00
Colin 15e09573d5 exports: consolidate nfs and sftpgo mounts into /var/export 2023-09-01 01:23:35 +00:00
Colin d6479ca148 nfs/sftpgo: combine into "exports" nix directory 2023-09-01 00:39:22 +00:00
Colin cf9558f166 WIP: sftp: define playground as a btrfs subvolume 2023-09-01 00:35:43 +00:00
Colin 68bce9c8b7 ports: if they fail to forward, retry after some interval 2023-09-01 00:30:32 +00:00
Colin 913201b9cd sane-bt-search: add TPB to TRACKER_RANKS 2023-08-31 23:38:29 +00:00
Colin 3f748164e4 ftp: add a playground directory 2023-08-31 12:56:30 +00:00
Colin ded5d94d69 modules: fs: add a "text" type to populate static text files when symlinks wont do 2023-08-31 12:56:30 +00:00
Colin 815a8b52b6 refactor: sftpgo: define permissions via nix config 2023-08-31 12:56:30 +00:00
Colin 639a4cfe50 ftp: grant read access to LAN 2023-08-31 12:56:30 +00:00
Colin b2af4e8983 nixpkgs: disable phog patch 2023-08-31 12:56:09 +00:00
Colin ff39fc5d95 ports: make upnp service files more human-readable 2023-08-31 01:02:48 +00:00
Colin 9fea007d4f cross: support gnome "calls" package 2023-08-31 00:52:28 +00:00
Colin 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
Colin ec6f90eb44 mpv: fix "DRM_IOCTL_MODE_CREATE_DUMB failed" bug 2023-08-30 10:32:31 +00:00
Colin bbe583637f mpv: uosc: 2023-07-26 -> 2023-08-29 2023-08-30 06:33:09 +00:00
Colin 29eab151a1 lemoa: 0.3 -> 0.4 2023-08-30 05:34:04 +00:00
Colin a7c5daf8a5 sxmo: sway-config: leave a todo for deploying via /etc/sway/config.d 2023-08-30 01:56:32 +00:00
Colin a23dea03a9 sxmo: sway config: pull defaults from upstream sxmo-utils 2023-08-30 01:54:30 +00:00
Colin 45e5f3ecca dino: document how to start calls 2023-08-30 01:50:06 +00:00
Colin 8bcba8802f sxmo-utils: 2023-08-22 -> 2023-08-29 2023-08-30 01:49:48 +00:00
Colin 3e2e0ccc1c nixpatches: note to split xdg-utils patch 2023-08-29 21:26:43 +00:00
Colin 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
Colin e72e847147 sops-nix: 2023-08-27 -> 2023-08-28 2023-08-29 21:26:43 +00:00
Colin 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
Colin 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
Colin a045eaa181 sxmo: persist the fontconfig and mesa_shader_cache directories for faster boot 2023-08-29 10:35:14 +00:00
Colin b83b2ce0cc sxmo-utils: begin to push Makefile patches upstream 2023-08-29 10:32:56 +00:00
Colin 377aec7e07 sxmo-utils: re-add lost patch to the stable variant 2023-08-29 10:09:30 +00:00
Colin 9d50a6669a sxmo-utils-latest: 2023-08-11 -> 2023-08-22 2023-08-29 10:00:42 +00:00
Colin bded6c9562 todo.md: new entry for getting sxmo youtube script working 2023-08-29 09:44:52 +00:00
Colin 5520c74921 sxmo-utils: add missing wl-clipboard dependency (for sxmo_screenshot.sh) 2023-08-29 09:44:30 +00:00
Colin 589c005bc4 sxmo-utils: add missing slurp dependency 2023-08-29 09:17:09 +00:00
Colin d64a213ec2 sxmo-utils: add missing wtype package 2023-08-29 08:49:25 +00:00
Colin 18c940962e sxmo-utils: fix incorrect PREFIX
this should help the appscripts (screenshotting and the like)
2023-08-29 07:59:43 +00:00
Colin e01b1f35fc sxmo-utils: simplifiy the install phase 2023-08-29 07:35:42 +00:00
Colin 60030860e5 todo.md: sxmo: better dependency/PATH handling 2023-08-29 07:35:42 +00:00
Colin 90894087e5 sxmo: apply SXMO_DISABLE_CONFIGVERSION_CHECK earlier 2023-08-29 07:35:42 +00:00
Colin bdcccbd894 ejabberd: forward TURN ports over UPnP 2023-08-29 07:22:48 +00:00
Colin b64cf408fb chatty: persist all of ~/.purple 2023-08-29 06:13:24 +00:00
Colin eaca5b9889 cross: record more upstreaming status 2023-08-29 00:18:07 +00:00
Colin 1c265b2073 cross: update upstreaming status 2023-08-28 23:33:42 +00:00
Colin fa98ba86bc sxmo: default SXMO_DISABLE_CONFIGVERSION_CHECK to on 2023-08-28 21:53:43 +00:00
Colin 53aee9e651 cross: libgweather/tuba: grab from upstream PRs 2023-08-28 12:04:03 +00:00
Colin d4a305f5bb cross: tuba: grab from nixpkgs fork 2023-08-28 11:52:39 +00:00
Colin fd39efe31f sxmo-utils: sxmo_hook_apps: fix some typod apps 2023-08-28 11:15:25 +00:00
Colin 3b2f4b6f72 preferences: phog: fix eval typo 2023-08-28 11:15:05 +00:00
Colin 9a16942b16 cross: send brightnessctl, libgweather (partially) upstream 2023-08-28 11:14:51 +00:00
Colin fe47d68fd3 sxmo-utils: disable configversion checking
this is not yet deployed -- might not work 100%
2023-08-28 10:32:37 +00:00
Colin deaee833cf cross: move phog patch to preferences.nix 2023-08-28 10:08:50 +00:00
Colin 8d03881109 cross compilation: disable kitty patch (no longer needed) 2023-08-28 10:06:24 +00:00
Colin e476adfdf5 todo.md: add entry for fixing fonts in wvkbd 2023-08-28 09:56:24 +00:00
Colin 4201aa7466 gui: sxmo: default to sxmo-utils-latest variant of the package 2023-08-28 09:56:02 +00:00
Colin a85d594c89 sxmo-utils: add a few more apps i use 2023-08-28 09:55:34 +00:00
Colin 7b98cd3d50 todo.md: remove completed phog item 2023-08-28 09:37:01 +00:00
Colin d256a0b647 todo.md: upstreaming to non-nixpkgs 2023-08-28 09:36:11 +00:00
Colin c87ba7f670 snippets: add link to sxmo-devel maillist 2023-08-28 09:26:41 +00:00
Colin e4e5df80f1 sxmo-utils: factor out commons and create a package for sxmo-utils-latest 2023-08-28 09:26:30 +00:00
Colin 02f409451d chatty: persist .purple/chatty 2023-08-28 09:01:29 +00:00
Colin 9f2c7b90ce snippets.txt: more uninsane services; Johoe mempool 2023-08-28 08:52:33 +00:00
Colin 559c551752 re-enable dino XMPP client 2023-08-28 08:48:35 +00:00
Colin 304482cc9b moby: ModemManager: make quieter 2023-08-28 08:09:19 +00:00
Colin ad9db91812 moby: ship eg25-control on user profile 2023-08-28 08:03:27 +00:00
Colin 1c7997e1ef rename eg25-control-defaults.service -> eg25-control 2023-08-28 08:03:14 +00:00
Colin 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
Colin 562008f3c0 sxmo: default to greetd + sway + phog greeter 2023-08-26 19:57:43 +00:00
Colin 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
Colin dc64193a62 moby: generalize sun4i init failure to displayManager *and* greetd 2023-08-26 19:57:43 +00:00
Colin a7f8089ed8 sane-bt-search: link to jargon definitions 2023-08-26 19:25:23 +00:00
Colin 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
Colin c056191de1 sxmo: try some alternate greeters 2023-08-26 12:28:25 +00:00
Colin f2a597f698 moby: sxmo: phog: provide an identifier in the syslog 2023-08-26 10:06:36 +00:00
Colin 7b637f976b moby: sxmo: fix phog to log its output 2023-08-26 09:40:07 +00:00
Colin 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
Colin 0f9dfb9f8a sxmo-utils: add missing xrdb dependency 2023-08-25 23:37:05 +00:00
Colin ab7f2fb1ec sxmo: switch back to lightdm-mobile greeter 2023-08-25 23:36:47 +00:00
Colin a892c364c6 sxmo-utils: cherry-pick upstream light -> brightnessctl patch 2023-08-25 22:33:48 +00:00
Colin a5c829fa96 moby: switch to phog by default 2023-08-25 13:29:49 +00:00
Colin e844cf5970 phog: fix hardcoded paths 2023-08-25 13:29:29 +00:00
Colin 999c6fd880 preferences: remove a dead todo 2023-08-25 12:14:03 +00:00
Colin 2aa4bdd5a6 cross compilation: fix brightnessctl 2023-08-25 12:13:39 +00:00
Colin 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
Colin 0fd1ec861b sxmo-utils: add missing brightnessctl dep 2023-08-25 12:04:28 +00:00
Colin 37d0473b7f cross: enable gnome-clocks, gnome-shell, squeekboard, better libgweather 2023-08-25 12:03:35 +00:00
Colin aaca46c485 cross: get ibus to cross-compile 2023-08-25 12:01:49 +00:00
Colin 30a6a1c1c2 new todo: fix mpv blank UI bug 2023-08-25 01:34:19 +00:00
Colin 2c39ac3015 phoc: remove patches; they've been upstreamed 2023-08-25 01:33:34 +00:00
Colin cc6a0dd8b3 phoc: fix patching style to be better overridable 2023-08-25 01:32:45 +00:00
Colin fbf62f0531 moby: add experimental support for phog greeter 2023-08-25 01:25:07 +00:00
Colin c96b951895 todo.md: moby: switch to phog greeter 2023-08-24 21:31:28 +00:00
Colin 34294341d7 libgweather: update nws patch with PR feedback 2023-08-24 11:41:31 +00:00
Colin cdc8885e60 sane-weather: leave notes for future work 2023-08-24 11:23:33 +00:00
Colin 41416cd184 moby: conky: tune weather display 2023-08-24 11:17:36 +00:00
Colin 3c32246d9a sane-weather: default to METAR only 2023-08-24 11:06:24 +00:00
Colin 6862d084ac sane-weather: format the temperature better 2023-08-24 11:06:05 +00:00
Colin 6eb3626203 ship gnome-weather to all GUI platforms 2023-08-24 11:00:38 +00:00
Colin 5f808eab5c libgweather: push NWS segfault fix upstream 2023-08-24 10:35:54 +00:00
Colin fe15c0b097 sane-weather: switch to METAR + NWS
NWS gets us hourly forecasts
2023-08-24 09:20:36 +00:00
Colin e4fbe9d03c sane-weather: reoder the operations list 2023-08-24 09:20:36 +00:00
Colin de09d54c64 sane-weather: make the location configurable 2023-08-24 09:20:36 +00:00
Colin 5bf117fc05 sane-weather: document some functions/classes 2023-08-24 09:20:36 +00:00
Colin f734797628 libgweather: fix null string comparison in nws backend 2023-08-24 09:20:36 +00:00
Colin 236470dc33 cross compilation fixes for previous nixpkgs update 2023-08-24 05:56:47 +00:00
Colin 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
Colin 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
Colin a43ccaac64 conky: display temperature 2023-08-23 13:38:11 +00:00
Colin 91c02aec9a sane-weather: enable cross compilation 2023-08-23 13:31:45 +00:00
Colin 681d3d5520 sane-weather: more diagnostics 2023-08-23 11:55:30 +00:00
Colin f945dc42fa sane-weather: init
for now, all it does is print the current temperature; no caching
2023-08-23 11:14:13 +00:00
Colin cc6f33b928 sxmo-utils: add missing curl, libxml2 deps 2023-08-23 06:18:24 +00:00
Colin 2f83e73139 sxmo: sway: default to tabbed workspaces 2023-08-22 10:03:07 +00:00
Colin 53ccb96234 sxmo: sway: theme "urgent" titlebars to match mpv colors 2023-08-22 10:00:13 +00:00
Colin a0d6139e50 add todos around moby GPS 2023-08-22 08:53:55 +00:00
Colin 90abadf7c4 eg25-control: document typical jitter 2023-08-22 08:51:10 +00:00
Colin 7f1e959ece moby: gps: grant geoclue access to all users 2023-08-22 08:49:04 +00:00
Colin 794df4d762 moby: geoclue: restrict to just "colin" user 2023-08-22 07:20:31 +00:00
Colin d6b262a28e moby: enable geoclue service 2023-08-22 07:15:14 +00:00
Colin 0cc518e523 todo.md: reflow 4-space tabs to 2-space 2023-08-22 06:41:26 +00:00
Colin 8780dff794 add lemonade, new-server-as-remote-builder to todo 2023-08-22 06:40:46 +00:00
Colin 0f881006e7 eg25-control: don't abort when AGPS download fails 2023-08-22 04:59:30 +00:00
Colin 5d349ce042 moby: init GPS during boot 2023-08-22 04:53:40 +00:00
Colin 940711878b eg25-control: make own package 2023-08-22 04:41:54 +00:00
Colin 75048efcf3 eg25_gps_init.py: allow CLI config of modem control points 2023-08-22 04:36:37 +00:00
Colin 8cc5199d9b FIXUP 2023-08-22 04:35:51 +00:00
Colin 3f60bacd38 eg25_gps_init: allow finer CLI control 2023-08-22 04:32:11 +00:00
Colin 8fb705dde4 eg25-gps-init: document the SIM requirement 2023-08-21 19:39:55 +00:00
Colin 79777cd4ae eg25-gps-init: improve docs 2023-08-21 11:14:16 +00:00
Colin fabd1e3b64 eg25-gps-init: fixup docs 2023-08-21 10:42:27 +00:00
Colin 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
Colin 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
Colin a518e56cf1 feeds: leave note to where to find podcasts that have a lemmy community 2023-08-21 01:14:55 +00:00
Colin 6cc7655180 feeds: add Tom Scott's podcast 2023-08-21 01:13:19 +00:00
Colin 0a15aad6d7 sane-bt-search: rename "source" sort to "tracker" 2023-08-20 09:14:45 +00:00
Colin 1d8bee2856 sane-bt-search: add a flag to sort by tracker reputation 2023-08-20 09:14:19 +00:00
Colin 6894d5828b sane-bt-search: refactor: move filter logic off of Torrent class 2023-08-20 08:53:06 +00:00
Colin 35bc222552 sane-bt-search: allow showing only videos 2023-08-20 08:49:04 +00:00
Colin 16b5b6840f sane-bt-search: refactor: make filtering easier to extend 2023-08-20 08:45:10 +00:00
Colin 1a7837d740 flake: add a sync-lappy command 2023-08-20 07:46:55 +00:00
Colin 607bfbe452 fs: add /mnt/lappy-home 2023-08-20 06:26:20 +00:00
Colin c2b85bd6b8 refactor: break out a helper in fs.nix for mounting remote home dirs 2023-08-20 06:20:28 +00:00
Colin c3bc0ec645 fs: remove desko-root mount
i don't use it in practice
2023-08-20 06:11:17 +00:00
Colin 89b5e8145d lemmy: pict-rs: remove unused options 2023-08-20 05:01:24 +00:00
Colin 0edab7ed64 lemmy: port to new pict-rs and enable video 2023-08-20 05:00:35 +00:00
Colin 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
Colin 9ddac508e2 sane-bt-search: port to argparse 2023-08-19 23:32:11 +00:00
Colin 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
Colin 8be1f43c23 g4music: m4a support: acquire from upstream PR 2023-08-18 20:07:26 +00:00
Colin 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
Colin 7bd6c0c14d WIP: moby: launch ModemManager in debug mode
this lets me use mmcli --command=...
2023-08-18 10:05:32 +00:00
Colin 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
Colin e7e86cae95 modemmanager: undo patching
once i insert a SIM, it's able to understand the modem...
2023-08-18 02:17:09 +00:00
Colin b083ce87be eg25-manager: disable 2023-08-17 10:56:32 +00:00
Colin 17b90fc697 eg25-manager: configure without modemmanager support 2023-08-17 08:34:32 +00:00
Colin 4fc59fa2ac modemmanager: experimental patch to not fail the whole modem if there's no sim 2023-08-17 08:34:18 +00:00
Colin e87cda2e55 g4music: add mp4 support 2023-08-17 01:51:25 +00:00
Colin 2c4d30b5ec postgresql: tune db parameters
fixes pleroma timeouts
2023-08-17 01:28:37 +00:00
Colin d0af645af8 pleroma: add missing "prepare: :named" config 2023-08-17 01:28:33 +00:00
Colin a1f79dc18a komikku: use unpatched upstream now that my fix is in a release 2023-08-17 00:01:15 +00:00
Colin ff65a697a9 nixpatches: apply outstanding komikku, komga update PRs 2023-08-16 22:49:45 +00:00
Colin ef881b1392 podcasts: subscribe to Useful Idiots 2023-08-16 22:03:40 +00:00
Colin debea8fa5b podcasts: subscribe to Behind the Bastards 2023-08-16 21:58:51 +00:00
Colin 8a9acbaeea podcasts: subscribe to We're Not Wrong 2023-08-16 21:58:07 +00:00
Colin 8869ec7bca podcasts: subscribe to omegatau 2023-08-16 21:54:55 +00:00
Colin dc0268736a g4music: remove (use upstream) 2023-08-16 21:25:25 +00:00
Colin 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
Colin 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
Colin 6a2603a4ea dev-machine: disable zeal (requires qtwebengine) 2023-08-16 11:29:43 +00:00
Colin 69efecb2ef postgresql: update 13 -> 15 2023-08-16 11:09:22 +00:00
Colin 056e6d358e moby: switch back to megi kernel (manjaro kernel has graphical glitches) 2023-08-16 10:59:58 +00:00
Colin 793baf0e0f cross: remove upstreamed tracker patches 2023-08-16 10:54:36 +00:00
Colin 721899258a cross: point playerctl patch to upstream PR 2023-08-16 10:54:07 +00:00
Colin 4f9d84cd82 cross: fix playerctl build 2023-08-16 10:34:13 +00:00
Colin a462180d3c sane-stop-all-servo: add signald, pict-rs 2023-08-16 10:34:13 +00:00
Colin 58f2d87959 sane-stop-all-servo: add missing mautrix-signal and lemmy-ui services 2023-08-16 10:34:13 +00:00
Colin a50b8e6373 moby: split the old linux-manjaro config into its own package & update it 2023-08-16 10:10:42 +00:00
Colin 4ec947d549 eg25-manager: set RestartSec to make the restart loops less painful 2023-08-16 09:09:13 +00:00
Colin 6751a74063 moby: kernel: better docs 2023-08-16 09:08:35 +00:00
Colin 6118a18200 gthumb: associate with gif and webp 2023-08-15 20:48:51 +00:00
Colin d223d4be06 cross: try to fix webkitgtk build 2023-08-15 10:56:07 +00:00
Colin ab7ec9bd74 cross: remove dead overrides for upstreamed packages 2023-08-15 10:55:18 +00:00
Colin 7b70b5ec86 linux-megous: build WITHOUT modem_power module, for better eg25-manager compatibility 2023-08-15 10:49:07 +00:00
Colin db99043753 eg25-manager.service: remove modem_power module & point to the right UART 2023-08-15 10:46:18 +00:00
Colin 8f87e49606 cross: fix comment typos 2023-08-15 05:38:11 +00:00
Colin 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
Colin 1b5c870798 sane-scripts.sync-music: add to a package set (sane-scripts.sys-utils) 2023-08-15 01:47:45 +00:00
Colin a5162651b7 zsh: re-enable lost keybindings like ctrl+r and ctrl+a 2023-08-15 01:47:12 +00:00
Colin b9868512d6 switch TERMINAL from kitty -> alacritty 2023-08-15 01:46:57 +00:00
Colin 8432d9c9ed sway: be terminal agnostic 2023-08-15 01:46:40 +00:00
Colin 5d4f94f218 add alacritty program/config 2023-08-15 01:46:22 +00:00
Colin 7e9d5d99c7 g4music: obtain via nixpkgs PR 2023-08-14 20:19:22 +00:00
Colin 487e64b09b nixos/dconf patch: point to upstream PR 2023-08-14 20:13:19 +00:00
Colin 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
Colin 5fb3a6be81 desko: disable jellyfin (just use mounted fs, avoid qtwebengine...) 2023-08-14 10:27:10 +00:00
Colin 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
Colin f8b559bef1 g4music: docs on how to get it rendering correctly 2023-08-14 10:21:13 +00:00
Colin 7d9d0ce8b5 g4music: wrapGAppsHook -> wrapGAppsHook4 2023-08-14 10:20:54 +00:00
Colin 7857f123a4 new `nix run '.#sync-moby'` command to synchronize music onto my mobile phone 2023-08-14 08:20:06 +00:00
Colin e3ba156fe1 fs: define /mnt/moby-home 2023-08-14 08:10:17 +00:00
Colin 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
Colin e5520437a5 sane-sync-music: init 2023-08-14 08:02:29 +00:00
Colin c6211fe48f ship g4music 2023-08-14 06:17:22 +00:00
Colin 54d6c9008d g4music: init at 3.2 2023-08-14 06:13:22 +00:00
Colin 05e5edcce3 mpv: fix bug where GUI would be missing for some podcasts 2023-08-14 05:52:16 +00:00
Colin 3249baccfa mopidy: remove dead service code 2023-08-13 10:20:50 +00:00
Colin 274682cf85 mopidy: comment for how to disable spotify backend 2023-08-13 10:17:43 +00:00
Colin 31a700f6a7 mcg: support cross compilation 2023-08-13 09:39:04 +00:00
Colin 91a6fc32ef desktop: ship rhythmbox music player 2023-08-13 09:27:01 +00:00
Colin 135b87a091 mcg: init at 3.2.1 2023-08-13 09:24:17 +00:00
Colin 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
Colin 7a612b701d cross: emulateBuildMachine -> buildInQemu 2023-08-13 07:41:45 +00:00
Colin c69fb690f1 cantata: fix to be in desktopGuiApps (because it needs qt) 2023-08-12 09:05:27 +00:00
Colin 1ef73dd69d mopidy: get spotify, jellyfin working 2023-08-12 09:00:33 +00:00
Colin 54afa1aec5 cross compiling: update status/notes 2023-08-12 08:26:18 +00:00
Colin 72c3c939e2 programs: ship cantata & mopidy for music playing (desktop) 2023-08-12 08:26:18 +00:00
Colin 67d8e89556 WIP: enable `mopidy` music server 2023-08-12 08:26:18 +00:00
Colin 07408813db python310Packages.keyring: re-enable cryptography dependency (it cross compiles now) 2023-08-12 08:03:16 +00:00
Colin 436760a592 python310Packages.keyring: fix cross compilation 2023-08-12 07:58:15 +00:00
Colin 5c758df032 gpodder-adaptive: fix cross compilation 2023-08-12 04:14:47 +00:00
Colin d12a41bfa9 gpodder-adaptive: fix pname 2023-08-12 03:51:22 +00:00
Colin 8ec22b6320 mepo: fix autoPatchelfHook placement so it cross compiles 2023-08-12 02:44:14 +00:00
Colin 95d04467a8 cross: delete binfmt experiment (it will never work); comment out broken proot attempt 2023-08-11 23:28:37 +00:00
Colin dd53de96fe cross: tune linuxMinimal 2023-08-11 23:25:26 +00:00
Colin 8089334ea9 cross: fix dconf-system-config 2023-08-11 23:06:25 +00:00
Colin 5bbb3678ed helix: support cross compilation 2023-08-11 23:01:46 +00:00
Colin 4e7ffe3140 cross compilation: simplify emulateBuilderQemu & use linux-megous as kernel when available 2023-08-11 22:27:35 +00:00
Colin d2842484fd cross: do emulation with a smaller linux image (experimental) 2023-08-11 22:27:35 +00:00
Colin 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
Colin a283d1ee21 linux-megous: simplify the package definition & build w/o debug info 2023-08-11 21:34:19 +00:00
Colin 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
Colin 8a0efb3e40 servo: bump /tmp space to 32 GB 2023-08-11 07:10:25 +00:00
Colin b013123669 moby: note for future self about a new display-manager failure case 2023-08-11 05:01:48 +00:00
Colin 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
Colin 8ad4ee4341 bonsai: support cross compilation 2023-08-10 07:41:12 +00:00
Colin 664b21e5f1 enable eg25-manager (experimental) 2023-08-10 07:27:38 +00:00
Colin 163a7af328 fix pillow compilation 2023-08-10 05:51:01 +00:00
Colin 4adeae6d85 firefox-extensions.sponsorblock: support cross compilation 2023-08-09 23:22:32 +00:00
Colin 9168803008 seaborn (visidata dep): fix build 2023-08-09 21:08:32 +00:00
Colin 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
Colin cc35317b54 bonsai: update PR to use PREFIX instead of DESTDIR 2023-08-09 03:16:55 +00:00
Colin 006070d08f cross: confirm that qt5 module emulation is actually necessary 2023-08-08 22:09:35 +00:00
Colin 19f6a98d31 nixpatches: note that i sent the mepo patch upstream 2023-08-08 07:03:45 +00:00
Colin 301abbe155 gtk{3,4}: acquire schema compilation patches via upstream PR 2023-08-08 01:53:48 +00:00
Colin dab3a2d0a9 mate.engrampa: acquire cross compilation patch from upstream pr 2023-08-08 01:51:55 +00:00
Colin 3a00e93dc3 cross: fix mepo to cross compile again 2023-08-08 01:51:55 +00:00
Colin 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
Colin b9259ff8b9 gtk{3,4}: tidy schema compilation patches 2023-08-08 01:51:55 +00:00
Colin e2ed37196f browserpass-extension: emulate 2023-08-07 10:41:32 +00:00
Colin b343d5d83a firefox-extensions.browserpass-extensions: enable module access via passthru 2023-08-07 10:26:29 +00:00
Colin 9bbff0d7a7 firefox-extensions.bypass-paywalls-clean: fix cross compilation by using the build-time zip 2023-08-07 10:26:24 +00:00
Colin 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
Colin 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
Colin b7f23a032c eg25-manager: init at 0.4.6 2023-08-07 08:05:34 +00:00
Colin 68be1ba2a1 gtk{3,4}: compile schemas even on cross builds 2023-08-07 08:05:07 +00:00
Colin 5a6bb475c4 conky: support cross-compilation/wayland via nixpkgs patch stack 2023-08-07 07:33:01 +00:00
Colin 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
Colin 07c0878d11 sxmo-utils: force the scripts to run under busybox instead of default /bin/sh 2023-08-07 03:44:07 +00:00
Colin b993479ada sxmo-utils: use busybox 2023-08-07 03:44:07 +00:00
Colin 8dc568d52e ship mate.engrampa as archive manager (after getting it to cross compile) 2023-08-07 03:43:37 +00:00
Colin 44ee7cd3db conky: build without emulation 2023-08-06 20:59:42 +00:00
Colin 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
Colin 9bb26e0199 nixpatches: update xdg-utils cross patch 2023-08-06 09:42:25 +00:00
Colin 8d772074ba gupnp: acquire cross patch from upstream nixpkgs PR 2023-08-06 09:16:43 +00:00
Colin 18c6ad0663 cross: mepo: fix ld-linux path 2023-08-06 08:53:59 +00:00
Colin 24a91acd0a firefox-extensions: update hashes for sponsorblock, ublock-origin 2023-08-06 08:33:18 +00:00
Colin 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
Colin 2b5365d774 packages: only build nheko on desktop 2023-08-06 08:15:05 +00:00
Colin e377a9f05b cross: emulateBuildMachine: bump RAM limit & add helper `overrideAttrs` fn 2023-08-06 08:13:46 +00:00
Colin 2f53e94cc9 mepo_1_1: remove package
i can just use normal `mepo` now.
2023-08-06 08:11:27 +00:00
Colin 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
Colin a4860c3963 cross: allow makeWrapper in emulated builds 2023-08-06 01:51:55 +00:00
Colin 4b072ecbe5 cross: support browserpass-extension w/o emulation 2023-08-06 01:51:14 +00:00
Colin 3423f103fc firefox-extensions: tidy the wrapping and dont double-wrap 2023-08-06 01:50:40 +00:00
Colin c3bb776149 cross: qt5.qtbase: build in qemu, not binfmt (holy cow, it actually builds this way) 2023-08-05 12:08:22 +00:00
Colin d31aac4d19 tangram: build the blueprint compiler via qemu, not binfmt 2023-08-05 12:03:05 +00:00
Colin 378e72ceb7 cross: automatically convert nativeBuildInputs into their host equivalent 2023-08-05 11:53:14 +00:00
Colin d86be97ced cross: fix emulateBuilder to use build bash in the vmRunCommand 2023-08-05 09:54:56 +00:00
Colin 44388b132a cross: fix `enableParallelBuilding` to work 2023-08-05 09:54:56 +00:00
Colin cd6b112d33 build bonsai/hare/qbe without relying on binfmt emulation 2023-08-05 09:54:56 +00:00
Colin 8eb6be863a cross: koreader: build luajit from emulated stdenv, instead of grabbing it from the emulated packageset 2023-08-05 09:54:14 +00:00
Colin 3b5ff938ce flake: apply nixpatches/list.nix using the build patcher, not the emulated host patcher 2023-08-05 09:32:50 +00:00
Colin 2685c91dd9 cross: build mepo without emulating as many packages 2023-08-05 00:42:07 +00:00
Colin 169354bd33 sxmo-utils: fix udev rule 2023-08-04 22:39:30 +00:00
Colin cc1889d2dd mpvScripts.mpris: acquire cross compilation patch via nixpkgs PR 2023-08-04 08:16:06 +00:00
Colin 22ffcb1b55 remove fwupd to reduce cross-compilation patches 2023-08-04 07:47:00 +00:00
Colin 76abbac6f6 fwupd: define as a sane.program 2023-08-04 07:35:13 +00:00
Colin 12e15b6456 wvkbd: fetch cross-compilation fix via nixpkgs PR 2023-08-04 07:27:11 +00:00
Colin 8c2a4a31bf cross compilation: remove dead code 2023-08-04 07:21:15 +00:00
Colin 1fcfa04447 remove python.pkgs.cryptography as it doesn't cross compile (yet) 2023-08-04 07:19:30 +00:00
Colin f3af31c727 cross: comment out packages i haven't used for an extended time 2023-08-04 05:20:20 +00:00
Colin 21e22096b1 uninsane-dot-org: 2023-07-25 -> 2023-08-03 2023-08-04 04:59:56 +00:00
Colin c9383da414 cross: get bonsai to build w/o emulating anything other than stdenv 2023-08-04 04:07:06 +00:00
Colin b82bb13f4f gssapi cross fix: pull from nixpkgs pr 2023-08-04 00:39:02 +00:00
Colin 346a68884b cross: fix qt5.overrideScope' deprecation wraning 2023-08-03 23:47:26 +00:00
Colin eb04129959 cross: emulate hare/harec at the consumer level 2023-08-03 23:46:29 +00:00
Colin 2e93f58795 update cross-compilation PR URIs 2023-08-03 22:12:10 +00:00
Colin 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
Colin 6877507ae0 xdg-utils: patch cross compilation via nixpkgs PR 2023-08-03 12:30:31 +00:00
Colin 8757f86c57 gupnp: patch via nixpkgs PR 2023-08-03 12:06:40 +00:00
Colin 633997f452 gupnp: update patch to point to nixpkgs PR 2023-08-03 11:38:43 +00:00
Colin ff9163b365 iio-sensor-proxy: fix cross via nixpkgs PR 2023-08-03 10:34:50 +00:00
Colin edd86e3981 upower: fix cross via nixpkgs PR 2023-08-03 10:28:21 +00:00
Colin c9b60788b5 update bonsai/hare-ev/hare-json patches 2023-08-03 09:49:19 +00:00
Colin 66dad1e519 libgnt patch: use nixpkgs PR 2023-08-03 09:23:26 +00:00
Colin 687ceba474 libkiwix: downgrade to 12.0.0 again 2023-08-03 08:47:15 +00:00
Colin 6e85f26964 gupnp: fix via upstream PR 2023-08-03 08:46:36 +00:00
Colin 40dc8d698e libkiwix: 12.0.0 -> 12.1.0 2023-08-03 06:10:23 +00:00
Colin 350f7e32f8 desko: disable dino/gajim XMPP clients until i need them again 2023-08-03 06:10:03 +00:00
Colin 3a5b72a258 moby: ship chatty 2023-08-03 06:10:03 +00:00
Colin b40ac95b5c cross: get `chatty-latest` to cross compile 2023-08-03 06:10:03 +00:00
Colin c1a8d1aa18 sane-bt-search: document the --h265 option 2023-08-03 05:28:32 +00:00
Colin 03d7806adf flakey-tests: leave a note about libqmi 2023-08-03 00:39:44 +00:00
Colin 9d06bfb544 cross: compile tangram with less emulation 2023-08-03 00:39:18 +00:00
Colin 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
Colin 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
Colin dcf97b70e1 programs: use the `declPackageSet` helper 2023-08-02 21:20:50 +00:00
Colin 44059b34c7 don't ship unused sane-scripts 2023-08-02 21:09:16 +00:00
Colin 561802ec41 cross: add links to upstream PRs/issues 2023-08-02 20:30:24 +00:00
Colin b464e60a77 chatty: build w/o samba 2023-08-02 20:30:06 +00:00
Colin b73b4b0439 chatty: persist the share directory 2023-08-02 11:36:49 +00:00
Colin 991685d149 chatty-latest: add glib-networking to fix TLS 2023-08-02 11:13:11 +00:00
Colin 4d7111feef chatty: try a newer build (still fails homeserver handshake) 2023-08-02 10:49:44 +00:00
Colin bd8cec311e cleanup: guiApps syntax 2023-08-02 08:35:36 +00:00
Colin fd174a0475 gui: ship nheko on moby again 2023-08-02 08:33:58 +00:00
Colin 3e83a1956c cross: try to fix fractal compilation (no luck) 2023-08-02 08:31:48 +00:00
Colin 57f272c9ba sway: expose needed env vars to user dbus services (xdg-desktop-portal) 2023-08-02 08:23:14 +00:00
Colin 186c09594d sway: remove default packages (unused) 2023-08-02 08:19:56 +00:00
Colin c74ba4e733 sway: enable xdg-desktop-portal-gtk
it's failing to start though
2023-08-02 08:16:05 +00:00
Colin 8a126d0a64 programs: explicitly declare dependencies on gnome-keyring 2023-08-02 07:40:57 +00:00
Colin 2e04a512b3 programs: get a semi-working build of chatty (need to set `xdg.portal`?) 2023-08-02 07:15:33 +00:00
Colin b4c83987f9 overlays: split the pipewire ffado tweak into a `preferences` overlay 2023-08-02 06:38:46 +00:00
Colin cc09832187 cross: fix libshumate build (used by fractal) 2023-08-02 06:25:53 +00:00
Colin 33b41482e2 cross: use upstream iio-sensor-proxy fix 2023-08-02 06:24:59 +00:00
Colin 6e523e7162 fractal: fix fractal-latest, and persist data directory 2023-08-02 06:24:00 +00:00
Colin 995c586fd9 nixpatches: remove upstreamed gpodder xdg-utils patch 2023-08-01 22:50:20 +00:00
Colin 3aa5852cf2 alsa-project as a scope: push patch upstream 2023-08-01 22:48:02 +00:00
Colin 8efad09cf4 cross: remove unused qt stuff 2023-08-01 22:47:43 +00:00
Colin 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
Colin 1082ab22bf cross: work to upstream a few more things (deployed & working) 2023-08-01 21:48:25 +00:00
Colin 5b2598bcaa cross: upstream a bunch of stuff (still waiting on build...) 2023-08-01 08:07:27 +00:00
Colin 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
Colin 7ab5cfa698 cross: update gcr_4 blockers 2023-07-31 10:31:12 +00:00
Colin 8a367b718d moby: replace file-roller with xarchiver 2023-07-31 09:59:15 +00:00
Colin 4e37f2c651 cross: annotate upstreaming status 2023-07-31 08:17:32 +00:00
Colin 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
Colin 6f835db8f3 cross: don't unnecessarily emulate pkgsi686Linux.tbb 2023-07-31 03:13:26 +00:00
Colin 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
Colin 381a111944 cross: remove explicit emulation of packages i no longer use on arm 2023-07-31 03:06:54 +00:00
Colin 3138482ed9 cross: remove ununsed emulation-based compilation fixes 2023-07-31 02:54:32 +00:00
Colin 1796d3c259 sxmo-utils: call out (but dont apply) the lock-state perf patch 2023-07-31 02:22:16 +00:00
Colin b565a719fb sxmo-utils: fetch upstreamed xkb path patch instead of using local patch 2023-07-31 02:13:15 +00:00
Colin f7ac46fd30 refactor: don't hardcode the libreoffice 'fresh' variant 2023-07-31 02:03:19 +00:00
Colin 61cf801983 nixpatches: use the dtrx from upstream PR 2023-07-31 01:59:53 +00:00
Colin ae9a81919f replace unar with dtrx
the former is costly to (cross-)compile
2023-07-31 01:13:15 +00:00
Colin 9ca8c74ed7 feeds: add wireshark podcast 2023-07-31 00:11:47 +00:00
Colin fd58896c0c cross: no longer emulate perl packages 2023-07-31 00:03:21 +00:00
Colin d2a46e88f6 gui: disable chromium 2023-07-31 00:02:09 +00:00
Colin 5cd05d8762 programs: split consoleUtils into separate normal/desktop sets 2023-07-30 11:59:38 +00:00
Colin a35f3e238d jellyfin: switch back to stock qt5 upstream 2023-07-30 11:30:17 +00:00
Colin 039d685e3c flake: deploy-moby: deploy to the wireguard address, to handle when the device is docked 2023-07-30 11:23:02 +00:00
Colin da42b3ddd7 sxmo: address `fonts.fonts` -> `fonts.packages` deprecation warning 2023-07-30 02:26:17 +00:00
Colin 51eaf83be8 komikku: downgrade to nixpkgs source, keeping my upstreamed patch 2023-07-30 01:49:12 +00:00
Colin d8a6a1df41 cross fixes 2023-07-30 01:48:29 +00:00
Colin 36176abdf3 libwacom, pipewire: fix build/remove qt5 dep 2023-07-30 01:45:37 +00:00
Colin 085c38ea47 moby: ship `portfolio` instead of `nautilus` file browser 2023-07-30 01:44:49 +00:00
Colin 9adaece9d6 sane.programs.nheko: split to own file 2023-07-30 01:44:08 +00:00
Colin df8e572a8f sane.programs.megapixels: ship w/o qt deps 2023-07-30 01:43:35 +00:00
Colin d39b698066 sane.programs.fractal: split to separate file 2023-07-30 01:42:58 +00:00
Colin 83c483395c fractal-lated: bump 2023-07-30 01:41:47 +00:00
Colin 2e08321016 cross: leave notes for what blocks each fix from being upstreamed 2023-07-29 10:57:55 +00:00
Colin abf80d765c cross: fix nautilus; reduce emulation for tracker{,-miners} 2023-07-29 10:57:05 +00:00
Colin 8c0b215832 overlays: disable-flakey-tests: remove dead code 2023-07-28 10:49:05 +00:00
Colin 28c9bd3cac overlays: disable-flakey-tests: remove ell/libwacom (not flakey); add elfutils 2023-07-28 10:49:05 +00:00
Colin e1e40332f7 cross: reduce gtk-related emulation (esp wrapGAppsHook) 2023-07-28 10:49:05 +00:00
Colin 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
Colin 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
Colin f59da7ad0f feeds: add minding our way 2023-07-28 01:14:28 +00:00
Colin 183457444c feeds: add Ezra Klein show 2023-07-28 01:08:19 +00:00
Colin 28a91723b8 feeds: add Atlas Obscura podcast 2023-07-28 01:06:15 +00:00
Colin 9b53a28920 lemmy-server: remove useless override 2023-07-28 00:57:08 +00:00
Colin 49e33d7238 mpv-uosc-latest: warn once next release hits nixpkgs 2023-07-28 00:55:37 +00:00
Colin 6572557b5b flake: add `help` program 2023-07-28 00:49:44 +00:00
Colin e18fb2ce4e mpv: change reverse seek from 30s to 10s 2023-07-28 00:34:49 +00:00
Colin 027e7cb074 cross: fix mpvScripts.mpris compilation 2023-07-27 12:16:23 +00:00
Colin 13ae0b798c mpv-uosc-latest: fix fonts 2023-07-27 12:16:09 +00:00
Colin d8675b544a mpv: uosc: fix for touchscreen support 2023-07-27 11:45:28 +00:00
Colin 5bf5d82d30 mpv: add the mpris plugin 2023-07-27 05:47:21 +00:00
Colin 0c92f3695a mpv: switch to uosc interface 2023-07-26 12:36:01 +00:00
Colin 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
Colin 7f13c482e5 cross compilation: support clapper 2023-07-26 08:51:51 +00:00
Colin 7b21ede5c4 moby: enable gpsd 2023-07-25 12:05:41 +00:00
Colin 219bb02cb8 refactor: moby: cleaner way to disable gestures 2023-07-25 10:56:29 +00:00
Colin 2df59f7c7d moby: rename firmware.nix -> bootloader.nix 2023-07-25 10:52:58 +00:00
Colin 11a7370a76 moby: sxmo: dont auto-start gestures daemon 2023-07-24 21:46:23 +00:00
Colin 44e3b01e7c moby: sxmo: waybar: remove the 2px shadows 2023-07-24 21:11:48 +00:00
Colin c7f0e5c8b5 moby: sxmo: waybar: use consistent left/right padding 2023-07-24 21:11:08 +00:00
Colin 7ce33340f9 moby: sxmo: style titlebars 2023-07-24 10:50:08 +00:00
Colin 8f77b1db94 moby: sxmo: swaybar: decrease animations 0.3s -> 0.2s 2023-07-24 09:36:21 +00:00
Colin f4cac0c158 moby: sxmo: swaybar: shrink from 32 px -> 28 px 2023-07-24 09:33:02 +00:00
Colin 04106e660e moby: sxmo: stylize the waybar to match other colors 2023-07-24 08:13:56 +00:00
Colin 6ed550b813 moby: theme bemenu to match desktop background 2023-07-24 03:33:50 +00:00
Colin 1cfd0fab6a sxmo: patch over duplicated lisgd services 2023-07-24 01:36:13 +00:00
Colin 5a31a0b415 koreader-from-src: clean up some dead code/comments 2023-07-23 23:44:33 +00:00
Colin 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
Colin 86964f6fde koreader: ship the from-src build 2023-07-23 21:00:43 +00:00
Colin 3121a6a7e9 cross: koreader-from-src: fix by emulating luajit 2023-07-23 11:37:18 +00:00
Colin c353f06832 koreader-from-src: support cross compilation (cross luajit fails due to table.pack == nil) 2023-07-23 01:29:20 +00:00
Colin b6a878757c sane-bt-search: implement --h265 flag 2023-07-22 21:56:00 +00:00
Colin c862b559e7 sane-bt-search: error on bad `--top=N` usage 2023-07-22 21:55:24 +00:00
Colin 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
Colin 512b5d78d4 moby: update bg, and add the blur/fade to the image instead of to conky 2023-07-22 10:56:06 +00:00
Colin 0479a43f2d koreader-from-src: remove some unneeded buildInputs 2023-07-22 09:32:15 +00:00
Colin 307e93de3b koreader: RSS: specify download_full_article=true by default 2023-07-22 08:55:05 +00:00
Colin 13d623201e koreader-from-src: it runs! 2023-07-22 08:44:11 +00:00
Colin f223af584d koreader: build to install
launch doesn't work because it fails to load libSDL.so
2023-07-22 06:03:54 +00:00
Colin 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
Colin e29361f05e koreader-from-src: get glib input working 2023-07-22 06:03:54 +00:00
Colin 439eeeeb45 koreader-from-src: get lua-Spore, libzmq, czmq, libffi deps passing 2023-07-22 06:03:54 +00:00
Colin 6a6276c2e0 koreader-from-src: get deps compiling: lua-htmlparser, lpeg 2023-07-22 06:03:54 +00:00
Colin e5d311188e koreader-from-src: get a few more dependencies to succeed 2023-07-22 06:03:54 +00:00
Colin 98ef5d77c3 koreader-from-src: get mupdf to build 2023-07-22 06:03:54 +00:00
Colin f3edafd11c koreader-from-src: add most remaining sources 2023-07-22 06:03:54 +00:00
Colin 2fdf95cea6 koreader-from-src: add more sources 2023-07-22 06:03:54 +00:00
Colin 7b8af3e719 koreader-from-src: remove deepClone and keepDotGit options 2023-07-22 06:03:54 +00:00
Colin 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
Colin 0be20351a1 koreader-from-src: add fribidi source 2023-07-22 06:03:54 +00:00
Colin 519ee152b9 koreader-from-src: sort the thirdparty sources alphabetically 2023-07-22 06:03:54 +00:00
Colin 5baba0378f koreader-from-src: add curl, zstd sources 2023-07-22 06:03:54 +00:00
Colin 3ac193f9b4 koreader-from-src: specify thirdparty sources as attrs instead of list 2023-07-22 06:03:54 +00:00
Colin 8b72338f3a koreader-from-src: add sources for libk2pdfopt 2023-07-22 06:03:54 +00:00
Colin c82e445e07 koreader-from-src: add sources for tesseract/leptonica 2023-07-22 06:03:54 +00:00
Colin 5ce0805046 koreader-from-src: nit: tidy fetchgit impl 2023-07-22 06:03:54 +00:00
Colin 7e5904c073 koreader-from-src: add libpng dep 2023-07-22 06:03:54 +00:00
Colin cc50ad172c koreader-from-src: vendor zlib 2023-07-22 06:03:54 +00:00
Colin 29a4466750 koreader-from-src: get further into the build; split sources into own file 2023-07-22 06:03:54 +00:00
Colin ba9eebcda8 koreader-from-src: tidy up 2023-07-22 06:03:54 +00:00
Colin 44ba0adacc koreader-from-src: advance the build past luajit (the following jpeg dep fails) 2023-07-22 06:03:54 +00:00
Colin 695ff8d057 WIP: build koreader from source 2023-07-22 06:03:54 +00:00
Colin c71136c315 sxmo: conky: tune the shade colors 2023-07-21 23:07:52 +00:00
Colin e7d5b14ab0 sxmo: battery_estimate: improve edge cases 2023-07-21 22:51:24 +00:00
Colin 6d216c14fa moby: conky: update config to work better with nixos bg 2023-07-21 22:46:59 +00:00
Colin f037e0b5a4 sxmo: update docs links 2023-07-21 22:46:14 +00:00
Colin 75fe6226c8 moby: use librewolf as default browser again 2023-07-21 21:29:48 +00:00
Colin 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
Colin bc46dc310d sxmo: define a background 2023-07-21 21:28:26 +00:00
Colin 94bae57411 gthumb: add svg mime association 2023-07-21 20:00:45 +00:00
Colin bd16aaa884 sxmo-utils: fix so auto-rotate does not restart gestures 2023-07-21 10:17:21 +00:00
Colin 777d1a1588 add todo: pkgs.impure-cached set 2023-07-21 09:13:15 +00:00
Colin a73937c32c complete a todo: webkitgtk mem use/swap 2023-07-21 09:10:13 +00:00
Colin ee284901ff firefox-extensions: bypass-paywalls-clean: disable nag pages 2023-07-18 22:38:30 +00:00
Colin 0cb81bb86f browserpass-extension: nit: remove unused parameter 2023-07-18 22:08:27 +00:00
Colin 10bdd3c05a firefox: ship bypass-paywalls-clean extension 2023-07-18 22:08:27 +00:00
Colin 5ed33d90cf moby: fix sidebery disable type 2023-07-18 20:06:36 +00:00
Colin 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
Colin ad16e50081 sxmo: configure screenshot directory 2023-07-18 10:40:54 +00:00
Colin 9f6760a37f moby: doc: add resources 2023-07-18 10:39:44 +00:00
Colin ef203c3215 sxmo-utils: use makeBinaryWrapper for better perf 2023-07-18 10:18:15 +00:00
Colin e3b7896169 zsh/starship: improve padding on ssh line 2023-07-18 10:17:13 +00:00
Colin 91f47f863d zsh: factor out the colors to avoid repeating them 2023-07-18 10:14:13 +00:00
Colin 532a78e2b2 desko: disable wpa_supplicant 2023-07-18 10:02:25 +00:00
Colin 11a4b7006e upnp-forwards: fix timer to actually run every hour 2023-07-18 09:54:06 +00:00
Colin a907fa1ca7 flake: rework so deploy scripts can be run in parallel 2023-07-18 09:10:25 +00:00
Colin 90279efebb sxmo-utils: add missing `grim` dep (for wayland screenshots) 2023-07-18 08:29:42 +00:00
Colin 5c1eaf273e zsh/starship: fix bg color for ssh prompt 2023-07-18 08:28:53 +00:00
Colin f12737b1f9 starship: try some other status symbols (but stay as is) 2023-07-18 03:51:03 +00:00
Colin 254b248bf3 starship: configure bg color for username section 2023-07-18 03:41:45 +00:00
Colin 431b1054e6 complete starship/zsh perf todo 2023-07-18 03:32:31 +00:00
Colin e6b5223e2e zsh: starship: theme 2023-07-18 03:26:51 +00:00
Colin d583d5db4f cross: emulate less of gnustep 2023-07-18 02:50:35 +00:00
Colin 1709f64a69 zsh/starship: fix init 2023-07-18 02:17:44 +00:00
Colin 23e95ba2ba modules: fs: symlink.text: allow specifying it multiple times 2023-07-18 02:17:25 +00:00
Colin 1dfd894568 cross: gnustep: emulate only `gnustep.base` 2023-07-18 01:32:50 +00:00
Colin 13d3a5ba6b cross: silence `qt.overrideScope'` warning 2023-07-18 01:32:06 +00:00
Colin 2716c0398b zsh: switch to starship prompt 2023-07-18 01:30:53 +00:00
Colin 0ba1a9f984 zsh: factor p10k stuff out of the main module; minimal support for starship prompt 2023-07-18 01:28:30 +00:00
Colin 1ddd79fdf0 complete todos: sway super; firefox first run prompts 2023-07-18 00:43:58 +00:00
Colin 761d60a7f4 cross: fix browserpass-extension compilation 2023-07-17 22:28:05 +00:00
Colin 82f141c0df firefox-extensions: make it a scope 2023-07-17 22:27:49 +00:00
Colin 6ce10b00af firefox-extensions: refactor to be more amenable to overrides 2023-07-17 22:19:29 +00:00
Colin ff17ed599d firefox: disable metamask 2023-07-17 21:33:15 +00:00
Colin 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
Colin 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
Colin 2b9de91540 firefox-extensions: make the patching logic even more pluggable 2023-07-17 20:47:55 +00:00
Colin 0175adbf27 firefox-extensions: make the patching logic more pluggable 2023-07-17 20:41:04 +00:00
Colin 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
Colin 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
Colin 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
Colin 88153fe7a1 lemoa: 0.2.0 -> 0.3.0 2023-07-17 06:12:46 +00:00
Colin ad67f7b13e browserpass-extension: move to firefox-extensions scope 2023-07-17 05:25:12 +00:00
Colin 40cc0367d8 zsh: switch(): add keep-going flag 2023-07-17 05:22:12 +00:00
Colin a10e31257a sxmo-utils: sxmo_rotate: don't restart lisgd on sway 2023-07-17 05:21:46 +00:00
Colin d7929ed06a firefox: generalize the facility to remove permissions from an extension 2023-07-17 03:57:42 +00:00
Colin 2c96ecfd0d firefox-extensions: factor out into own file 2023-07-17 03:12:04 +00:00
Colin 7c9664270d sane-wipe-browser: also kill browser processes that might be sticking around in ram 2023-07-17 01:55:32 +00:00
Colin 6f5c5a5113 browserpass-extension: disable startup/install notification 2023-07-17 01:55:32 +00:00
Colin ebcc0c269e trust-dns: remove from this repo
it's fully upstreamed into nixpkgs now
2023-07-16 12:27:23 +00:00
Colin 57681bfa6d moby: re-enable firefox, but still default to epiphany 2023-07-16 12:26:31 +00:00
Colin 9058caac1d moby: firefox: disable sideberry 2023-07-16 12:25:42 +00:00
Colin 60650f82fe firefox: switch back to the default UI -- not pmos-mobile 2023-07-16 12:25:12 +00:00
Colin 11b4d2d66a doc: mime: show how to go from scheme -> .desktop association 2023-07-16 12:17:54 +00:00
Colin 0111d4220e nixos/trust-dns: add myself as maintainer 2023-07-16 04:13:19 +00:00
Colin 83b76dc47e moby: fix occasional blank screen on boot 2023-07-16 00:37:09 +00:00
Colin c7ca3ad563 wifi: add new network 2023-07-15 22:40:18 +00:00
Colin 1c891f45df wifi: add new network 2023-07-15 22:36:53 +00:00
Colin 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
Colin 3bbbb6c714 sxmo-utils: sxmo_wmmenu: respect SXMO_WORKSPACE_WRAPPING 2023-07-15 22:10:15 +00:00
Colin 8788a8c67a servo: upnp-forwards.timer: fix to invoke upnp-forwards.target instead of upnp-forwards.service 2023-07-15 22:08:55 +00:00
Colin 6ae73bdf87 lemmy-server: 0.18.1 -> 0.18.2 2023-07-15 21:04:19 +00:00
Colin 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
Colin 20b8e2934c moby: don't ship firefox 2023-07-15 10:11:45 +00:00
Colin 088286d8f7 mime: support multiple implementors of the same association, with different priorities 2023-07-15 10:11:31 +00:00
Colin 29b53d934f trust-dns: apply PR feedback 2023-07-15 09:07:57 +00:00
Colin 77e5f82b31 programs: rename web-browser -> firefox 2023-07-15 08:51:36 +00:00
Colin 55d64eb598 programs: factor out a `sane.programs.<foo>.mime` schema 2023-07-15 08:44:18 +00:00
Colin d459dd0f85 net: switch from iwd back to stock NetworkManager/wpa_supplicant 2023-07-15 07:16:10 +00:00
Colin 9594c03d66 net: port iwd secrets to a .json file that i can make backend agnostic 2023-07-15 06:38:50 +00:00
Colin 7391ce0b05 programs: move the guiApps category up to hosts/modules/gui 2023-07-15 01:02:41 +00:00
Colin 2822dd6137 programs: update tor-browser bug info 2023-07-15 00:44:24 +00:00
Colin e5cca42717 servo: fix sane.nixcache path 2023-07-15 00:40:31 +00:00
Colin 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
Colin 0ed9394fff sway: define the secret snippets more idiomatically 2023-07-15 00:23:14 +00:00
Colin e6a989bc92 nginx/pleroma: correct an old todo 2023-07-15 00:08:05 +00:00
Colin 2385984152 duplicity: restrict readability 2023-07-15 00:02:22 +00:00
Colin 809c9f74c3 phosh: remove dead code 2023-07-14 23:59:35 +00:00
Colin 44b15ba8ed users: apply default permissions to any user who goes through the sane.users module 2023-07-14 23:56:01 +00:00
Colin ab7068c819 lappy: remove some dead ipfs code 2023-07-14 23:44:47 +00:00
Colin 746af067dc moby: increase menu lines in landscape mode 2023-07-14 23:41:52 +00:00
Colin 918febe884 nixpkgs: 2023-07-12 -> 2023-07-13 2023-07-14 22:58:19 +00:00
Colin b5d1baf3ee zramSwap: increase capacity to 100% of uncompressed RAM 2023-07-14 22:57:19 +00:00
Colin 2f5c33b2b4 nixcache: tidy up substituter config 2023-07-14 22:33:33 +00:00
Colin fdc18821ca servo: matrix-appservice-irc: remove completed todo 2023-07-14 22:11:59 +00:00
Colin 2a537cd3b1 splatmoji: port fully to wayland 2023-07-14 22:09:43 +00:00
Colin 9aa4e6c0f2 remove completed todo's 2023-07-14 21:35:25 +00:00
Colin 6b1baefaa7 moby: link to some config references 2023-07-14 06:48:02 +00:00
Colin 85483cde79 moby: allow `video` group to write to front-facing LEDs 2023-07-14 06:47:32 +00:00
Colin 8feafbb615 pinephone: fix flashlight permissions, the proper way (udev) 2023-07-14 05:55:44 +00:00
Colin e1bb0de76f sxmo: fix pinephone LED permissions 2023-07-14 00:30:53 +00:00
Colin d7fb1b615a feeds: add boginjr.com 2023-07-14 00:02:37 +00:00
Colin 8aa2712956 feeds: disable LessWrong (too noisy/too AI) and SimonWillison (too bro) 2023-07-13 23:48:50 +00:00
Colin 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
Colin e5072c8837 linux-megous: update docs 2023-07-13 23:36:22 +00:00
Colin 992ae37ccf sxmo: cleanup use of sane-lib.fs.wantedText 2023-07-13 22:20:26 +00:00
Colin 1642734aa3 hosts/common: cleanup uses of `sane-lib.fs.wantedText` 2023-07-13 22:19:18 +00:00
Colin a8382fed12 hosts/common: move /var/lib/private defn into fs.nix 2023-07-13 22:18:45 +00:00
Colin cfa50500ac hosts/common: remove commented-out code 2023-07-13 22:09:53 +00:00
Colin d3d9b30f29 consolidate /tmp fs into hosts/modules/roles 2023-07-13 22:04:28 +00:00
Colin 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
Colin 76347309bc sxmo: disable Xwayland 2023-07-13 10:50:40 +00:00
Colin 1347199a87 sxmo: group these statements more logically 2023-07-13 10:50:40 +00:00
Colin c8a59d9986 trust-dns: grab from nixpkgs PR 2023-07-13 10:49:12 +00:00
Colin 41f4d8e85a trust-dns: specify zone via shorthand 2023-07-13 10:04:20 +00:00
Colin e38bf42506 trust-dns: migrate module to nixpkgs repo 2023-07-13 09:57:11 +00:00
Colin ffec91a52c moby: disable zsh deadlines 2023-07-13 08:12:05 +00:00
Colin f54f972056 vlc: move persisted data to ~/private, and add .cache/vlc, for artwork 2023-07-13 07:20:13 +00:00
Colin f2eba95dfc users/colin: persist some notable cache directories 2023-07-13 07:17:27 +00:00
Colin 8b3521d08f fixup sxmo persistence (prev two commits don't build 2023-07-13 07:17:09 +00:00
Colin 5e07882568 sxmo: back the superd log directory with a store 2023-07-13 06:58:48 +00:00
Colin abb4492897 sxmo: persist the /var/lib/lightdm directory 2023-07-13 06:56:03 +00:00
Colin 427e6bb696 /root: back by a physical store 2023-07-13 06:50:46 +00:00
Colin 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
Colin fe5be03e0a readme: mention the `doc/` folder 2023-07-13 06:35:11 +00:00
Colin 0875b6fd22 readme: suggest how to send patches 2023-07-13 06:34:19 +00:00
Colin 527607e38f desko: use `sane.programs.steam` 2023-07-13 06:27:54 +00:00
Colin 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
Colin 5090340189 sxmo: battery_estimate: zero-pad the minutes 2023-07-13 02:02:25 +00:00
Colin 7dc0899784 sxmo: conky: tune config 2023-07-13 02:00:15 +00:00
Colin 19b697cc52 conky-config: remove trailing whitespace 2023-07-13 01:36:24 +00:00
Colin cd011d845a sxmo: include superd on path 2023-07-13 01:35:37 +00:00
Colin 67a52eca86 sxmo: conky: include battery estimate 2023-07-13 01:35:31 +00:00
Colin 29bf9d410f sxmo: customize the conky display 2023-07-13 01:35:23 +00:00
Colin 694a5383cb sane-bt-search: ignore the uhd tag 2023-07-13 01:35:12 +00:00
Colin 96b3896017 sane-vpn-up/down: fix sane-ip-check invocation to not use UPNP 2023-07-13 01:33:52 +00:00
Colin 4a7398da2f trust-dns: finish hardening 2023-07-13 01:33:31 +00:00
Colin ceef95cbe3 fix komikku patch hash 2023-07-13 00:59:30 +00:00
Colin 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
Colin 545babe86c sxmo: document waybar-config defaults 2023-07-12 11:36:50 +00:00
Colin ba7078527a sway: fix config symlink 2023-07-12 11:34:41 +00:00
Colin c2b2d5eaa9 sxmo: switch to waybar 2023-07-12 11:28:54 +00:00
Colin 58be04b632 cross: get waybar to compile 2023-07-12 10:27:08 +00:00
Colin f0d396543f sxmo: set mod key to alt instead of logo 2023-07-12 10:10:03 +00:00
Colin 6d21c917d5 sxmo: import the default sway config 2023-07-12 10:03:58 +00:00
Colin ec277d1347 sxmo: move to subdirectory 2023-07-12 09:42:23 +00:00
Colin f5264508eb komikku: fix cross compilation 2023-07-12 09:16:32 +00:00
Colin 0d6a10bc3a komikku: don't crash when crop_borders fails to find borders 2023-07-12 08:58:35 +00:00
Colin 33c6330cbc gui: delete plasma-mobile 2023-07-12 08:25:09 +00:00
Colin ece02f35c6 gui: delete plasma 2023-07-12 08:24:55 +00:00
Colin d4e6001431 moby: increase workspaces from 4 -> 5 2023-07-12 08:24:13 +00:00
Colin cded837255 moby: sort sxmo prefs alphabetically 2023-07-12 08:24:13 +00:00
Colin 2ae187ea62 komikku: update to latest rev 2023-07-12 08:24:13 +00:00
Colin e317cc4c12 refactor: sway: fix config indentation 2023-07-12 08:24:01 +00:00
Colin 83275ed0b6 komikku: 1.21.1 -> 1.22.0 2023-07-12 07:51:42 +00:00
Colin e5a81f0a45 moby: update env tunables 2023-07-12 06:45:47 +00:00
Colin e4d0cabd13 conky: enable Wayland support; 1.18.0 -> 1.19.2 2023-07-12 02:09:34 +00:00
Colin a2a2db1611 cross: Tangram: reduce emulated inputs 2023-07-12 01:25:46 +00:00
Colin 586b181714 snippets: update firewall address 2023-07-12 00:13:10 +00:00
Colin a51817625a sandboxing todo: mention nixpak 2023-07-11 22:26:12 +00:00
Colin 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
Colin 4cc4c3293b programs: don't ship ncdu 2023-07-11 21:12:25 +00:00
Colin 615e9befb3 document some dconf findings 2023-07-11 10:05:46 +00:00
Colin 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
Colin 17951be995 tangram: persist dconf files
with this, saved tabs are *actually* saved
2023-07-11 10:02:47 +00:00
Colin 281116bc7d document how to ship programs 2023-07-11 08:11:48 +00:00
Colin 70fcf179d5 programs: ship ncdu 2023-07-11 08:11:10 +00:00
Colin 3f81370879 install-iwd: allow the paths to be omitted 2023-07-11 07:32:54 +00:00
Colin f71fd4565b sane-ip-reconnect: be more resilient to errors 2023-07-11 07:24:46 +00:00
Colin 79fca6c5e5 sane-ip-reconnect: add type annotations to compound types 2023-07-11 07:13:16 +00:00
Colin 3bbc4aecbb fix derived secrets (all were failing) 2023-07-11 05:15:56 +00:00
Colin 464db2c118 complete UPNP service split todo 2023-07-11 01:57:47 +00:00
Colin 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
Colin 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
Colin 8bd7fa8a3f sway: use Super modifier instead of Alt
this allows applications to use the Alt key
2023-07-11 00:55:17 +00:00
Colin 41aa13621d add a TODO for using Starship prompt 2023-07-11 00:55:17 +00:00
Colin f765e3d030 sane-ip-check: also store the upnp gateway 2023-07-11 00:55:04 +00:00
Colin 798f467128 sane_bt: add return type annotations 2023-07-10 22:42:39 +00:00
Colin 35431f5b53 sane_ssdp: add more type annotations 2023-07-10 22:41:06 +00:00
Colin 0bc1082596 Merge branch 'staging/nixpkgs-2023-07-09' 2023-07-10 22:32:44 +00:00
Colin c23cb8470f sane-bt-search: document `--manga` flag 2023-07-10 21:53:55 +00:00
Colin 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
Colin abc9f4c464 moby: sxmo: switch SXMO_SWAY_SCALE back to default of 2 2023-07-10 09:07:17 +00:00
Colin e92b621e09 sxmo: configure user prefs via ~/.config/sxmo/profile
rather than the system environment
2023-07-10 09:07:16 +00:00
Colin d593349717 sane-ip-reconnect: repopulate secrets if necessary
sometimes iwd just... deletes them
2023-07-10 09:06:23 +00:00
Colin 452260f7c7 trust-dns: don't run as root 2023-07-10 09:00:37 +00:00
Colin b648aca505 trust-dns: link to docs in service file 2023-07-10 08:12:07 +00:00
Colin 8c4af55f82 trust-dns: apply some hardening (still need more) 2023-07-10 08:00:45 +00:00
Colin 384428756d tangram/epiphany: preserve desktop files when patching 2023-07-10 06:49:27 +00:00
Colin 069f7b4616 sxmo: use ~/.config/sxmo/profile instead of system environment, for settings 2023-07-10 06:08:17 +00:00
Colin c44756874a git: add todo for using toGitINI 2023-07-10 06:07:47 +00:00
Colin 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
Colin 5188ddf398 keyrings: answer a todo 2023-07-10 01:21:57 +00:00
Colin db93bd42ed moby: ship megapixels camera app 2023-07-10 01:18:40 +00:00
Colin b76d326da3 megapixels: fix cross compilation 2023-07-10 01:14:00 +00:00
Colin 3fa3091143 sxmo-utils: fix Tangram icon 2023-07-09 22:13:46 +00:00
Colin 81f527070f build machines: disable ccache 2023-07-09 18:55:37 +00:00
Colin 445bc08a0c desko: disable guest account 2023-07-09 18:49:36 +00:00
Colin 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
Colin 3c309b65af programs: ship tangram to gui platforms 2023-07-09 11:17:54 +00:00
Colin c751268f62 epiphany: leave a note about missing .desktop files 2023-07-09 11:17:07 +00:00
Colin 1bd815d2ef tangram: disable sandbox (same reason as with epiphany) 2023-07-09 11:16:08 +00:00
Colin b3db579deb add todos for sway/firefox/helix 2023-07-09 10:50:37 +00:00
Colin b152794cb6 get tangram to cross compile 2023-07-09 10:50:01 +00:00
Colin 96ddc9513d sxmo-utils: apply upstreamed patches via fetchpatch instead of storing in-repo 2023-07-09 07:48:10 +00:00
Colin 158f978f19 sxmo-utils: add icon for Tangram 2023-07-09 07:29:10 +00:00
Colin 963e59070d programs: define persistence for Tangram 2023-07-09 07:20:38 +00:00
Colin 5e66bad3dd epiphany: fix to launch on moby 2023-07-09 03:13:17 +00:00
Colin a3a3da4c62 implement a ldd-aarch64 package & ship it for dev hosts 2023-07-09 00:32:22 +00:00
Colin 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
Colin 640d9be83d derived-secrets: fix broken encoding 2023-07-08 11:20:28 +00:00
Colin db72f5e11f fs: generated.script.scriptArgs -> generated.command 2023-07-08 11:15:23 +00:00
Colin 8753e5e0c6 fs: remove legacy `generated.script.script` option 2023-07-08 11:15:23 +00:00
Colin 558b35fee0 prepare fs.generated.script users to not assume a shell 2023-07-08 11:15:23 +00:00
Colin 3ce2716fbe fs: factor out the ensureSymlink/ensureDir/ensurePerms scripts 2023-07-08 10:35:10 +00:00
Colin e9293dbe07 fs: fix raciness that was causing `ensure-xyz` services to run multiple times per boot 2023-07-08 09:08:59 +00:00
Colin f18d624fd9 fs: avoid creating a new script for every fs entry 2023-07-08 09:00:49 +00:00
Colin 43aadef3b3 remove completed items from todo.md; add moby related improvements 2023-07-08 03:03:05 +00:00
Colin 6e3e45a9f6 fontconfig: re-enable
i'm not sure why this failed with lib.mkDefault
2023-07-08 02:27:21 +00:00
Colin 36dbf696e7 fontconfig: only enable for system, not user 2023-07-08 02:23:50 +00:00
Colin e57efbcb21 zsh: fix history file persistence 2023-07-08 02:22:29 +00:00
Colin 8f57394cd2 persist: create the backing path as a dependency of the VFS path 2023-07-08 02:08:18 +00:00
Colin 01b8a28a52 programs.fs: remove extraneous `wantedBeforeBy` clause
it's provided by `sane.user.fs`
2023-07-08 02:06:44 +00:00
Colin b42207882e programs.persist: fix to allow any options that underlying persist allows 2023-07-08 02:06:18 +00:00
Colin b8ccc271fc mepo: fix savestate to be persisted as a file -- not a directory 2023-07-08 01:35:36 +00:00
Colin 95c105367c ~/.ssh/id_ed25519: correctly persist as a file -- not a directory 2023-07-08 01:35:23 +00:00
Colin 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
Colin 8e4dc0c6ae helix: render whitespace 2023-07-08 00:54:51 +00:00
Colin a257d8d1a1 helix: enable soft line wrapping 2023-07-08 00:27:12 +00:00
Colin 38411617ef fontconfig: only ship on GUI systems 2023-07-07 23:44:45 +00:00
Colin c21efa005f show package changes during nixos-rebuild switch 2023-07-07 23:34:12 +00:00
Colin 24a3c22edc revoke ssh access from servo/moby into any other system (by default) 2023-07-07 21:15:00 +00:00
Colin 54b74498b6 helix: don't persist the grammars directory anymore 2023-07-07 11:05:13 +00:00
Colin 05f375a5f8 neovim: try to ship nix-shell highlighting (fail) 2023-07-07 10:45:41 +00:00
Colin 975bdd64cb helix: ship nix-shell syntax highlighting 2023-07-07 10:43:13 +00:00
Colin 62907acedc tree-sitter-nix-shell: init at 0.1.0 2023-07-07 08:33:15 +00:00
Colin 7004fb8f4e sane-bt-search: clean up type annotations (thanks Ben for the tips!) 2023-07-07 07:12:48 +00:00
Colin 5aeb6a5525 sane-bt-search: fix: parse `--top` as an integer 2023-07-07 07:11:47 +00:00
Colin ad4631a5a8 sane-bt-search: add (limited) ability to search by category 2023-07-07 07:08:17 +00:00
Colin 799cbccdbe desko: disable devPkgs 2023-07-07 06:30:19 +00:00
Colin 1f82679f62 add a deploy-servo nix script, like deploy-moby 2023-07-06 22:40:25 +00:00
Colin d318d61895 sxmo-utils: send a couple more patches upstream 2023-07-06 20:16:50 +00:00
Colin 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
Colin 8fa9815b10 sane-bt-search: fix usage for top flag 2023-07-06 20:16:50 +00:00
Colin b7a77375b2 pleroma: block FB/IG/Meta's threads.net instance 2023-07-05 21:36:55 +00:00
Colin 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
Colin 5c75f8c0e3 add todo for port 53 forward 2023-07-05 09:07:20 +00:00
Colin 07d7994176 pleroma: simplify proxy settings & make log level configurable 2023-07-05 09:04:50 +00:00
Colin 9e7930cb6e nixpatches: fix hashes 2023-07-05 09:04:50 +00:00
Colin 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
Colin 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
Colin 43740c3b9b neovim: nit: fix "tex" -> "viml" typo 2023-07-04 10:28:44 +00:00
Colin 2131e638aa desko: enable some dev-related packages
useful as i hack on Helix
2023-07-04 10:27:59 +00:00
Colin 8bd2ad0456 zsh: add `switch` function 2023-07-04 03:31:13 +00:00
Colin 61cbdc2c85 add `helix` text editor 2023-07-04 03:28:54 +00:00
Colin ebf6f46948 persist ~/Books 2023-07-03 22:38:30 +00:00
Colin 29e03d59f3 sxmo: cleaner terminal and keyboard config computation 2023-07-03 22:27:29 +00:00
Colin e6cdd5450c moby: specify wvkbd layers explicitly 2023-07-03 22:19:50 +00:00
Colin 32e20cdda0 programs: enable epiphany web browser for all gui platforms 2023-07-03 08:16:40 +00:00
Colin 8600934755 programs: more cleanup 2023-07-03 08:03:55 +00:00
Colin 787b58b284 programs: reorder package groups 2023-07-03 07:58:02 +00:00
Colin acf89a041e modules/programs: cleanup `with` statements 2023-07-03 07:55:05 +00:00
Colin 9340d5f391 programs: remove explicit default definitions 2023-07-03 07:49:44 +00:00
Colin 9f1d61c781 programs: remove quadratic behavior 2023-07-03 07:16:24 +00:00
Colin 83e48eabad WIP: decrease quadratic operations in modules/programs.nix 2023-07-03 07:04:57 +00:00
Colin 9b9273b725 programs: call out some quadratic behavior; i can try to fix it in the future 2023-07-03 06:41:48 +00:00
Colin ccaff668c1 sane-lib: path: fix `from` bug; tidy 2023-07-03 05:28:53 +00:00
Colin 4c44101a83 add a todo for theming adwaita 2023-07-03 05:08:26 +00:00
Colin 85b7596763 enable cross-compilation of epiphany web browser 2023-07-03 03:00:46 +00:00
Colin dfbf30912f add a todo for shipping camera app on moby 2023-07-02 23:16:59 +00:00
Colin 27964c9c40 moby: mark kernel compression todo item as complete 2023-07-02 23:14:18 +00:00
Colin 262592b26a programs: better way to ship jellyfin-media-player only on desktops 2023-07-02 23:12:12 +00:00
Colin 7b0e4caa16 programs: ship `blanket` ambient noise generator 2023-07-02 23:10:05 +00:00
Colin 9546908dbf remove unused sane-mount-* helpers 2023-07-02 23:01:56 +00:00
Colin 3961923599 scripts: move these to more appropriate places 2023-07-02 22:49:17 +00:00
Colin 6b55faec0c install-bluetooth: port to nix-shell 2023-07-02 22:42:52 +00:00
Colin 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
Colin a62852072e sane-reclaim-disk-space: include `delete-older-than 30d` argument 2023-07-02 11:59:37 +00:00
Colin 83f2438739 moby: fix gtk icons 2023-07-02 11:58:57 +00:00
Colin bad0e9cc53 gui: remove dead code 2023-07-02 11:35:03 +00:00
Colin 9aea0945a5 gtk: fix icons, and apply Tokyonight as default theme 2023-07-02 11:33:01 +00:00
Colin cce87eb6fb WIP: theme gtk apps 2023-07-02 09:37:07 +00:00
Colin 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
Colin 154711432f pleroma: link to docs 2023-07-02 04:33:34 +00:00
Colin b8460b7524 refine moby todos 2023-07-02 03:00:46 +00:00
Colin fa427ad7ea add todo for offline uninsane.org 2023-07-02 02:54:07 +00:00
Colin 7be7d5d938 sxmo-utils: add lemoa app listing (and change Tuba icon) 2023-07-02 01:52:26 +00:00
Colin 7c5ab7d253 ship lemoa on gui hosts 2023-07-02 01:40:36 +00:00
Colin 48adaa832e lemoa: 0.1.0 -> 0.2.0 2023-07-01 23:39:50 +00:00
Colin 38b44a31e4 sxmo-utils: link to upstreamed patches 2023-07-01 00:58:43 +00:00
Colin 9ad72af979 add todo for better email 2023-07-01 00:57:36 +00:00
Colin 2a2ce34bd8 git: sendemail: always annotate and confirm 2023-07-01 00:55:43 +00:00
Colin b2e70c0210 programs: ship msmtp sendmail implementation 2023-07-01 00:28:59 +00:00
Colin 3d4cbbf005 git: add `br` -> `branch` alias 2023-06-30 23:13:56 +00:00
Colin b18bdc4e3e sxmo-utils: fix typo in gthumb app 2023-06-30 21:17:12 +00:00
Colin 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
Colin f25dbdd4d2 aerc: change name to match git name 2023-06-30 11:09:10 +00:00
Colin 3da58f1d41 kitty: set the TERMINAL env var by default 2023-06-30 11:02:53 +00:00
Colin 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
Colin 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
Colin daabe09bb4 overlays: disable webkitgtk "separateDebugInfo = false;" override 2023-06-30 03:45:27 +00:00
Colin 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
Colin ef9f62ed13 sxmo-utils: fix cozy appname 2023-06-29 23:21:24 +00:00
Colin 2c49dfa642 refactor: remove overlays/pins.nix 2023-06-29 22:47:51 +00:00
Colin 6ddc943a39 add todos for sxmo module & zsh optimizations 2023-06-29 22:45:25 +00:00
Colin 5c50243d23 git: allow common `dif` typo 2023-06-29 22:45:07 +00:00
Colin 556600e54b zsh: disable command suggestions 2023-06-29 22:43:49 +00:00
Colin 5db9c4f558 nix-index/nix-locate: re-enable 2023-06-29 21:24:32 +00:00
Colin e22fb2f4f5 mime associations: add aerc for email (but... it doesnt work from gui) 2023-06-29 21:08:50 +00:00
Colin 71971a050c sxmo-utils: ship app icon for gThumb 2023-06-29 20:37:30 +00:00
Colin ac97accd32 moby: ship gThumb 2023-06-29 20:23:53 +00:00
Colin f391e467c2 networkmanager: remove the default plugins 2023-06-29 10:58:18 +00:00
Colin 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
Colin 4c5333c9ed desko/lappy: don't ship font-manager
with this i no longer ship webkitgtk4_0
2023-06-29 09:45:15 +00:00
Colin 6fdb7059e3 gthumb: build without webkitgtk 2023-06-29 09:43:17 +00:00
Colin 28f7823077 nixpatches: fix nmap/lua54 hash 2023-06-29 09:14:15 +00:00
Colin 9e972d21b4 Merge branch 'master' of git.uninsane.org:colin/nix-files 2023-06-29 09:12:24 +00:00
Colin 42f194f447 keyring: fix bad dep ordering that prevented ~/private from being mounted 2023-06-29 09:11:22 +00:00
Colin dbd312e9bd guest: enable access to shelvacu 2023-06-29 09:11:22 +00:00
Colin 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
Colin 97ce93cac6 fs: allow mounting /mnt/* as ordinary user 2023-06-28 10:50:39 +00:00
Colin 56c637d4d3 enable systemd-oomd on nix builds 2023-06-28 10:47:53 +00:00
Colin 89160f68e8 mention systemd-run in app containerization todo 2023-06-28 10:30:57 +00:00
Colin 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
Colin c19a0af6d7 desko: enable distccd 2023-06-28 04:16:20 +00:00
Colin 038d252f7d guest: allow external configuration of authorized ssh keys 2023-06-28 03:53:19 +00:00
Colin 68cda2006b cleanup/refactor users 2023-06-28 03:46:29 +00:00
Colin ddf79e54e9 users: split `colin` and `guest` apart 2023-06-28 03:34:15 +00:00
Colin ac5e2cc023 users.nix: move to subdir 2023-06-28 03:21:05 +00:00
Colin 48eece548f add todo: gitea CI 2023-06-28 03:09:54 +00:00
Colin 8e16cd6d32 feeds: link to a place where i might find more 2023-06-28 03:09:23 +00:00
Colin 6676935ee1 feeds: add The Linux Experiment 2023-06-28 03:05:45 +00:00
Colin c09b2d0d63 elaborate todo about securing programs 2023-06-28 01:08:53 +00:00
Colin f12672b197 linux-megous: note about stability 2023-06-28 00:20:14 +00:00
Colin 8717a91467 programs: git: add alias for diff summary 2023-06-28 00:20:02 +00:00
Colin b43b8a3a22 zsh: disable "command not found" corrections 2023-06-27 22:41:27 +00:00
Colin c1df32695b build-machine: increase the number of nix build users 2023-06-27 22:41:23 +00:00
Colin b98eca1d84 add TODO: remove overlays/pins.nix 2023-06-27 22:41:20 +00:00
Colin 7bc718bf15 dev-machine: don't ship docs until i resume development 2023-06-27 22:41:16 +00:00
Colin dbb1d16617 web-browser: update extension hashes 2023-06-27 22:41:14 +00:00
Colin 771f482d84 EDITOR, GIT_EDITOR: lift into vim.nix 2023-06-27 10:26:11 +00:00
Colin 40ec4d6ce0 programs: allow programs to ship system-level environment variables 2023-06-27 10:24:48 +00:00
Colin b90bc1058d git: add aliases: cp -> cherry-pick; rb -> rebase 2023-06-27 08:54:17 +00:00
Colin 0fcddf8970 web-browser: leave myself a todo for cleaning up prefs 2023-06-27 08:10:01 +00:00
Colin cffb54c293 sxmo: give a little more time before transitioning from screen lock -> screen off 2023-06-27 08:10:01 +00:00
Colin 36c181c147 matrix-irc: fix oftc connection 2023-06-27 08:08:27 +00:00
Colin cdbd3c2fd8 lemoa: remove excess buildInputs 2023-06-27 07:12:32 +00:00
Colin 530163c853 nixpatches: fix mepo hash
probably most of these hashes are outdated, after switching to fetchpatch2
2023-06-27 06:41:03 +00:00
Colin 516459b351 lemoa: unstable-2023-06-25 -> 0.1.0 2023-06-27 06:36:45 +00:00
Colin 05e37a4557 formatting 2023-06-27 01:59:49 +00:00
Colin 4006765387 cross: fix firefox-pmos-mobile cross compilation 2023-06-27 01:59:04 +00:00
Colin db0ce6eadd web-browser: don't apply librewolf prefs to firefox deployments 2023-06-26 23:22:45 +00:00
Colin f188229379 nixpatches: switch to fetchpatch2
fewer edgecases
2023-06-26 10:12:00 +00:00
Colin f0d7d6877b web-browser: clean up some dead comments, defaults 2023-06-26 10:11:22 +00:00
Colin 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
Colin acd803d5bc patches: import firefox-pmos-mobile 2023-06-26 10:09:32 +00:00
Colin 59111b95b3 sane-wipe-browser: also wipe firefox 2023-06-26 08:04:45 +00:00
Colin b5feeb1792 complete TODO: fix NUR evaluation 2023-06-26 01:27:53 +00:00
Colin 325398ec28 sane-scripts: rename nix-shell-scripts -> sane-bin 2023-06-26 01:27:35 +00:00
Colin 9b3ee537a8 flake: add "check-nur" app to validate that my repo passes NUR checks 2023-06-26 01:26:13 +00:00
Colin 7aa0c5e3ea pkgs: fix python3Packages.sane-lib eval outside of flake (i.e. NUR) 2023-06-26 01:25:46 +00:00
Colin 8c586bd0db cargo-docset: remove. it's been upstreamed 2023-06-26 01:12:29 +00:00
Colin ec0e8ce38b pkgs: fix error that prevented gpodder-adaptive-configured from being evaluated on its own 2023-06-26 01:09:27 +00:00
Colin be0d5fd7c2 gpodder-configured: name the package based on the input gPodder pname 2023-06-26 01:08:30 +00:00
Colin 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
Colin 054af010bd add new TODO: neovim LSP 2023-06-26 00:32:47 +00:00
Colin ee5a2ff986 neovim: fix auto-indent for nix files 2023-06-26 00:32:47 +00:00
Colin cb7f84e2b7 neovim: order plugins lexicographically 2023-06-26 00:32:47 +00:00
Colin e5124fd0d6 lemoa: init at unstable-2023-06-25 2023-06-26 00:32:45 +00:00
Colin 0751e748ea feeds: add PostmarketOS podcast 2023-06-25 22:22:32 +00:00
Colin afce50b56d jellyfin-media-player-qt6: bump 2023-06-25 22:04:54 +00:00
Colin 71e0942cc2 git: configure `git stash show` to actually... SHOW the stash
OMFG
2023-06-25 21:45:47 +00:00
763 changed files with 87575 additions and 14234 deletions

2
.gitignore vendored
View File

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

150
README.md
View File

@ -1,53 +1,76 @@
![hello](doc/hello.gif)
# .❄≡We|_c0m3 7o m`/ f14k≡❄.
## What's Here
this is the top-level repo from which i configure/deploy all my NixOS machines:
- desktop
- laptop
- server
- mobile phone
- mobile phone (Pinephone)
i enjoy a monorepo approach. this repo references [nixpkgs][nixpkgs], a couple 3rd party
nix modules like [sops][sops], the sources for [uninsane.org][uninsane-org], and that's
about it. custom derivations and modules (some of which i try to upstream) live
directly here; even the sources for those packages is often kept here too.
everything outside of [hosts/](./hosts/) and [secrets/](./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/](./hosts/) will require [sops][sops].
you might specifically be interested in these files (elaborated further in #key-points-of-interest):
- ~~[`sxmo-utils`](./pkgs/additional/sxmo-utils/default.nix)~~
- ~~[example SXMO deployment](./hosts/modules/gui/sxmo/default.nix)~~
- these files will remain until my config settles down, but i no longer use or maintain SXMO.
- [my implementation of impermanence](./modules/persist/default.nix)
- my way of deploying dotfiles/configuring programs per-user:
- [modules/fs/](./modules/fs/default.nix)
- [modules/programs/](./modules/programs/default.nix)
- [modules/users/](./modules/users/default.nix)
[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.
- 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)
- 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.
- 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.
- 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.
- 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).
- 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 are referenced by other things in this repo.
- these aren't generally user-facing, but they're factored out so that they can
be invoked directly when i need to debug.
- 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
- 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.
- 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
@ -55,47 +78,47 @@ directly here; even the sources for those packages is often kept here too.
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.
- 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"`
- 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/`
- like nixpkgs' `programs` options, but allows both system-wide or per-user deployment.
- allows `fs` and `persist` config values to be gated behind program deployment:
- e.g. `/home/<user>/.mozilla/firefox` is persisted only for users who
`sane.programs.firefox.enableFor.user."<user>" = true;`
- allows aggressive sandboxing any program:
- `sane.programs.firefox.sandbox.method = "bwrap"; # sandbox with bubblewrap`
- `sane.programs.firefox.sandbox.whitelistWayland = true; # allow it to render a wayland window`
- `sane.programs.firefox.sandbox.extraHomePaths = [ "Downloads" ]; # allow it read/write access to ~/Downloads`
- integrated with `fs` and `persist` modules so that programs' config files and persisted data stores are linked into the sandbox w/o any extra involvement.
- `modules/users/`
- convenience layer atop the above modules so that you can just write
`fs.".config/git"` instead of `fs."/home/colin/.config/git"`
- per-user services managed by [s6-rc](https://www.skarnet.org/software/s6-rc/)
some things in here could easily find broader use. if you would find benefit in
them being factored out of my config, message me and we could work to make that happen.
[home-manager]: https://github.com/nix-community/home-manager
## 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)
## Mirrors
this repo exists in a few known locations:
@ -106,3 +129,6 @@ this repo exists in a few known locations:
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.

163
TODO.md
View File

@ -1,76 +1,149 @@
## BUGS
- fix NUR evaluation
- why i need to manually restart `wireguard-wg-ovpns` on servo periodically
- else DNS fails
- moby: megapixels doesn't load in sandbox
- when moby wlan is explicitly set down (via ip link set wlan0 down), /var/lib/trust-dns/dhcp-configs doesn't get reset
- trust-dns: can't recursively resolve api.mangadex.org
- and *sometimes* apple.com fails
- sandbox: `ip netns exec ovpns bash`: doesn't work
- sandbox: link cache means that if i update ~/.config/... files inline, sandboxed programs still see the old version
- mpv: no way to exit fullscreen video on moby
- uosc hides controls on FS, and touch doesn't support unhiding
- Signal restart loop drains battery
- decrease s6 restart time?
- `ssh` access doesn't grant same linux capabilities as login
- ringer (i.e. dino incoming call) doesn't prevent moby from sleeping
- sway mouse/kb hotplug doesn't work
- sysvol (volume overlay): when casting with `blast`, sysvol doesn't react to volume changes
## REFACTORING:
- REMOVE DEPRECATED `crypt` from sftpgo_auth_hook
- consolidate ~/dev and ~/ref
- ~/dev becomes a link to ~/ref/cat/mine
- fold hosts/common/home/ssh.nix -> hosts/common/users/colin.nix
### 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
- user secrets could just use `gocryptfs`, like with ~/private?
- can gocryptfs support nested filesystems, each with different perms (for desko, moby, etc)?
### roles
- allow any host to take the role of `uninsane.org`
- will make it easier to test new services?
- will make it easier to test new services?
### upstreaming
- split out a trust-dns module
- see: <https://github.com/NixOS/nixpkgs/pull/205866#issuecomment-1575753054>
- 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>
## IMPROVEMENTS:
- systemd/journalctl: use a less shit pager
- there's an env var for it: SYSTEMD_PAGER? and a flag for journalctl
### 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.
- best to do this after i know for sure i have good backups
- /mnt/desko/home, etc, shouldn't include secrets (~/private)
- 95% of its use is for remote media access and stuff which isn't in VCS (~/records)
- port all sane.programs to be sandboxed
- enforce that all `environment.packages` has a sandbox profile (or explicitly opts out)
- revisit "non-sandboxable" apps and check that i'm not actually just missing mountpoints
- LL_FS_RW=/ isn't enough -- need all mount points like `=/:/proc:/sys:...`.
- ensure non-bin package outputs are linked for sandboxed apps
- i.e. `outputs.man`, `outputs.debug`, `outputs.doc`, ...
- lock down dbus calls within the sandbox
- otherwise anyone can `systemd-run --user ...` to potentially escape a sandbox
- <https://github.com/flatpak/xdg-dbus-proxy>
- remove `.ssh` access from Firefox!
- limit access to `~/knowledge/secrets` through an agent that requires GUI approval, so a firefox exploit can't steal all my logins
- port sanebox to a compiled language (hare?)
- it adds like 50-70ms launch time _on my laptop_. i'd hate to know how much that is on the pinephone.
- remove /run/wrappers from the sandbox path
- they're mostly useless when using no-new-privs, just an opportunity to forget to specify deps
- make dconf stuff less monolithic
- i.e. per-app dconf profiles for those which need it. possible static config.
- canaries for important services
- e.g. daily email checks; daily backup checks
- e.g. daily email checks; daily backup checks
- integrate `nix check` into Gitea actions?
### user experience
- firefox/librewolf: don't show browserpass/sponsorblock/metamask "first run" on every boot
- rofi: sort items case-insensitively
- xdg-desktop-portal shouldn't kill children on exit
- *maybe* a job for `setsid -f`?
- replace starship prompt with something more efficient
- watch `forkstat`: it does way too much
- cleanup waybar so that it's not invoking playerctl every 2 seconds
- install apps:
- display QR codes for WiFi endpoints: <https://linuxphoneapps.org/apps/noappid.wisperwind.wifi2qr/>
- shopping list (not in nixpkgs): <https://linuxphoneapps.org/apps/ro.hume.cosmin.shoppinglist/>
- offline Wikipedia (or, add to `wike`)
- offline docs viewer (gtk): <https://github.com/workbenchdev/Biblioteca>
- some type of games manager/launcher
- Gnome Highscore (retro games)?: <https://gitlab.gnome.org/World/highscore>
- better maps for mobile (Osmin (QtQuick)? Pure Maps (Qt/Kirigami)? Gnome Maps is improved in 45)
- note-taking app: <https://linuxphoneapps.org/categories/note-taking/>
- OSK overlay specifically for mobile gaming
- i.e. mock joysticks, for use with SuperTux and SuperTuxKart
- install mobile-friendly games:
- Shattered Pixel Dungeon (nixpkgs `shattered-pixel-dungeon`; doesn't cross-compile b/c openjdk/libIDL) <https://github.com/ebolalex/shattered-pixel-dungeon>
- UnCiv (Civ V clone; nixpkgs `unciv`; doesn't cross-compile): <https://github.com/yairm210/UnCiv>
- Simon Tatham's Puzzle Collection (not in nixpkgs) <https://git.tartarus.org/?p=simon/puzzles.git>
- Shootin Stars (Godot; not in nixpkgs) <https://gitlab.com/greenbeast/shootin-stars>
- numberlink (generic name for Flow Free). not packaged in Nix
- Neverball (https://neverball.org/screenshots.php). nix: as `neverball`
- blurble (https://linuxphoneapps.org/games/app.drey.blurble/). nix: not as of 2024-02-05
- Trivia Quiz (https://linuxphoneapps.org/games/io.github.nokse22.trivia-quiz/)
- sane-sync-music: remove empty dirs
#### moby
- fix cpuidle (gets better power consumption): <https://xnux.eu/log/077.html>
- moby: tune keyboard layout
- 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
- moby: replace jellyfin-desktop with jellyfin-vue?
- allows (maybe) to cache media for offline use
- "newer" jellyfin client
- not packaged for nix
- moby/sxmo: display numerical vol percentage in topbar
- moby: theme GTK apps (i.e. non-adwaita styles)
- especially, make the menubar collapsible
- try Gradience tool specifically for theming adwaita? <https://linuxphoneapps.org/apps/com.github.gradienceteam.gradience/>
#### non-moby
- RSS: integrate a paywall bypass
- e.g. self-hosted [ladder](https://github.com/everywall/ladder) (like 12ft.io)
- neovim: set up language server (lsp; rnix-lsp; nvim-lspconfig)
- neovim: integrate LLMs
- Helix: make copy-to-system clipboard be the default
- firefox/librewolf: persist history
- 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)
- 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.programs`: auto-populate defaults with everything from `pkgs`
- `sane.persist`: auto-create parent dirs in ~/private
- currently if the application doesn't autocreate dirs leading to its destination, then ~/private storage fails
- this might be why librewolf on mobile is still amnesiac
- zsh: disable "command not found" corrections
- 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
- 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?
- fix OOM for large builds like webkitgtk
- these use significant /tmp space.
- either place /tmp on encrypted-cleared-at-boot storage
- which probably causes each CPU load for the encryption
- or have nix builds use a subdir of /tmp like /tmp/nix/...
- and place that on non-encrypted clear-on-boot (with very lax writeback/swappiness to minimize writes)
- **or set up encrypted swap**
- encrypted swap could remove the need for my encrypted-cleared-at-boot stuff
- debug nixos-rebuild times
- add `pkgs.impure-cached.<foo>` package set to build things with ccache enabled
- every package here can be auto-generated, and marked with some env var so that it doesn't pollute the pure package set
- would be super handy for package prototyping!
## NEW FEATURES:
- migrate MAME cabinet to nix
- boot it from PXE from servo?
- boot it from PXE from servo?
- enable IPv6

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 /`

BIN
doc/hello.gif Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 127 KiB

View File

@ -1,12 +1,52 @@
{
"nodes": {
"flake-utils": {
"flake-compat": {
"locked": {
"lastModified": 1678901627,
"narHash": "sha256-U02riOqrKKzwjsxc/400XnElV+UtPUQWpANPlyazjH0=",
"lastModified": 1688025799,
"narHash": "sha256-ktpB4dRtnksm9F5WawoIkEneh1nrEvuxb5lJFt1iOyw=",
"owner": "nix-community",
"repo": "flake-compat",
"rev": "8bf105319d44f6b9f0d764efa4fdef9f1cc9ba1c",
"type": "github"
},
"original": {
"owner": "nix-community",
"repo": "flake-compat",
"type": "github"
}
},
"flake-parts": {
"inputs": {
"nixpkgs-lib": [
"nixpkgs-wayland",
"nix-eval-jobs",
"nixpkgs"
]
},
"locked": {
"lastModified": 1712014858,
"narHash": "sha256-sB4SWl2lX95bExY2gMFG5HIzvva5AVMJd4Igm+GpZNw=",
"owner": "hercules-ci",
"repo": "flake-parts",
"rev": "9126214d0a59633752a136528f5f3b9aa8565b7d",
"type": "github"
},
"original": {
"owner": "hercules-ci",
"repo": "flake-parts",
"type": "github"
}
},
"flake-utils": {
"inputs": {
"systems": "systems"
},
"locked": {
"lastModified": 1710146030,
"narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=",
"owner": "numtide",
"repo": "flake-utils",
"rev": "93a2b84fc4b70d9e089d029deacc3583435c2ed6",
"rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a",
"type": "github"
},
"original": {
@ -15,92 +55,193 @@
"type": "github"
}
},
"lib-aggregate": {
"inputs": {
"flake-utils": "flake-utils",
"nixpkgs-lib": "nixpkgs-lib"
},
"locked": {
"lastModified": 1715515815,
"narHash": "sha256-yaLScMHNFCH6SbB0HSA/8DWDgK0PyOhCXoFTdHlWkhk=",
"owner": "nix-community",
"repo": "lib-aggregate",
"rev": "09883ca828e8cfaacdb09e29190a7b84ad1d9925",
"type": "github"
},
"original": {
"owner": "nix-community",
"repo": "lib-aggregate",
"type": "github"
}
},
"mobile-nixos": {
"flake": false,
"locked": {
"lastModified": 1683422260,
"narHash": "sha256-79zaClbubRkBNlJ04OSADILuLQHH48N5fu296hEWYlw=",
"lastModified": 1694749521,
"narHash": "sha256-MiVokKlpcJmfoGuWAMeW1En7gZ5hk0rCQArYm6P9XCc=",
"owner": "nixos",
"repo": "mobile-nixos",
"rev": "ba4638836e94a8f16d1d1f9e8c0530b86078029c",
"rev": "d25d3b87e7f300d8066e31d792337d9cd7ecd23b",
"type": "github"
},
"original": {
"owner": "nixos",
"ref": "d25d3b87e7f300d8066e31d792337d9cd7ecd23b",
"repo": "mobile-nixos",
"type": "github"
}
},
"nix-serve": {
"nix-eval-jobs": {
"inputs": {
"nixpkgs": "nixpkgs"
"flake-parts": "flake-parts",
"nix-github-actions": "nix-github-actions",
"nixpkgs": "nixpkgs",
"treefmt-nix": "treefmt-nix"
},
"locked": {
"lastModified": 1687251388,
"narHash": "sha256-E9cVlgeCvzPbA/G3mCDCzz8TdRwXyGYzIjmwcvIfghg=",
"owner": "edolstra",
"repo": "nix-serve",
"rev": "d6df5bd8584f37e22cff627db2fc4058a4aab5ee",
"lastModified": 1715804156,
"narHash": "sha256-GtIHP86Cz1kD9xZO/cKbNQACHKdoT9WFbLJAq6W2EDY=",
"owner": "nix-community",
"repo": "nix-eval-jobs",
"rev": "bb95091f6c6f38f6cfc215a1797a2dd466312c8b",
"type": "github"
},
"original": {
"owner": "edolstra",
"repo": "nix-serve",
"owner": "nix-community",
"repo": "nix-eval-jobs",
"type": "github"
}
},
"nix-github-actions": {
"inputs": {
"nixpkgs": [
"nixpkgs-wayland",
"nix-eval-jobs",
"nixpkgs"
]
},
"locked": {
"lastModified": 1703863825,
"narHash": "sha256-rXwqjtwiGKJheXB43ybM8NwWB8rO2dSRrEqes0S7F5Y=",
"owner": "nix-community",
"repo": "nix-github-actions",
"rev": "5163432afc817cf8bd1f031418d1869e4c9d5547",
"type": "github"
},
"original": {
"owner": "nix-community",
"repo": "nix-github-actions",
"type": "github"
}
},
"nixpkgs": {
"locked": {
"lastModified": 1606086654,
"narHash": "sha256-VFl+3eGIMqNp7cyOMJ6TjM/+UcsLKtodKoYexrlTJMI=",
"lastModified": 1715037484,
"narHash": "sha256-OUt8xQFmBU96Hmm4T9tOWTu4oCswCzoVl+pxSq/kiFc=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "19db3e5ea2777daa874563b5986288151f502e27",
"rev": "ad7efee13e0d216bf29992311536fce1d3eefbef",
"type": "github"
},
"original": {
"id": "nixpkgs",
"ref": "nixos-20.09",
"type": "indirect"
"owner": "NixOS",
"ref": "nixpkgs-unstable",
"repo": "nixpkgs",
"type": "github"
}
},
"nixpkgs-lib": {
"locked": {
"lastModified": 1715474941,
"narHash": "sha256-CNCqCGOHdxuiVnVkhTpp2WcqSSmSfeQjubhDOcgwGjU=",
"owner": "nix-community",
"repo": "nixpkgs.lib",
"rev": "58e03b95f65dfdca21979a081aa62db0eed6b1d8",
"type": "github"
},
"original": {
"owner": "nix-community",
"repo": "nixpkgs.lib",
"type": "github"
}
},
"nixpkgs-next-unpatched": {
"locked": {
"lastModified": 1715839255,
"narHash": "sha256-IKUEASEZKDqOC/q6RP54O3Dz3C2+BBi+VtnIbhBpBbw=",
"owner": "nixos",
"repo": "nixpkgs",
"rev": "1887e39d7e68bb191eb804c0f976ad25b3980595",
"type": "github"
},
"original": {
"owner": "nixos",
"ref": "staging-next",
"repo": "nixpkgs",
"type": "github"
}
},
"nixpkgs-stable": {
"locked": {
"lastModified": 1687031877,
"narHash": "sha256-yMFcVeI+kZ6KD2QBrFPNsvBrLq2Gt//D0baHByMrjFY=",
"lastModified": 1715458492,
"narHash": "sha256-q0OFeZqKQaik2U8wwGDsELEkgoZMK7gvfF6tTXkpsqE=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "e2e2059d19668dab1744301b8b0e821e3aae9c99",
"rev": "8e47858badee5594292921c2668c11004c3b0142",
"type": "github"
},
"original": {
"owner": "NixOS",
"ref": "release-23.05",
"ref": "release-23.11",
"repo": "nixpkgs",
"type": "github"
}
},
"nixpkgs-unpatched": {
"locked": {
"lastModified": 1687412861,
"narHash": "sha256-Z/g0wbL68C+mSGerYS2quv9FXQ1RRP082cAC0Bh4vcs=",
"lastModified": 1715851096,
"narHash": "sha256-ed72tDlrU4/PBWPYoxPk+HFazU3Yny0stTjlGZ7YeMA=",
"owner": "nixos",
"repo": "nixpkgs",
"rev": "e603dc5f061ca1d8a19b3ede6a8cf9c9fcba6cdc",
"rev": "977a49df312d89b7dfbb3579bf13b7dfe23e7878",
"type": "github"
},
"original": {
"owner": "nixos",
"ref": "nixos-unstable",
"ref": "master",
"repo": "nixpkgs",
"type": "github"
}
},
"nixpkgs-wayland": {
"inputs": {
"flake-compat": "flake-compat",
"lib-aggregate": "lib-aggregate",
"nix-eval-jobs": "nix-eval-jobs",
"nixpkgs": [
"nixpkgs-unpatched"
]
},
"locked": {
"lastModified": 1715843614,
"narHash": "sha256-qveerNXc6yF2digoKDR9Hj/o0n8Y3bW/yET6sRochv0=",
"owner": "nix-community",
"repo": "nixpkgs-wayland",
"rev": "5e2c5345f3204c867c9d4183cbb68069d0f7a951",
"type": "github"
},
"original": {
"owner": "nix-community",
"repo": "nixpkgs-wayland",
"type": "github"
}
},
"root": {
"inputs": {
"mobile-nixos": "mobile-nixos",
"nix-serve": "nix-serve",
"nixpkgs-next-unpatched": "nixpkgs-next-unpatched",
"nixpkgs-unpatched": "nixpkgs-unpatched",
"nixpkgs-wayland": "nixpkgs-wayland",
"sops-nix": "sops-nix",
"uninsane-dot-org": "uninsane-dot-org"
}
@ -113,11 +254,11 @@
"nixpkgs-stable": "nixpkgs-stable"
},
"locked": {
"lastModified": 1687398569,
"narHash": "sha256-e/umuIKFcFtZtWeX369Hbdt9r+GQ48moDmlTcyHWL28=",
"lastModified": 1715482972,
"narHash": "sha256-y1uMzXNlrVOWYj1YNcsGYLm4TOC2aJrwoUY1NjQs9fM=",
"owner": "Mic92",
"repo": "sops-nix",
"rev": "2ff6973350682f8d16371f8c071a304b8067f192",
"rev": "b6cb5de2ce57acb10ecdaaf9bbd62a5ff24fa02e",
"type": "github"
},
"original": {
@ -126,19 +267,55 @@
"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"
}
},
"treefmt-nix": {
"inputs": {
"nixpkgs": [
"nixpkgs-wayland",
"nix-eval-jobs",
"nixpkgs"
]
},
"locked": {
"lastModified": 1711963903,
"narHash": "sha256-N3QDhoaX+paWXHbEXZapqd1r95mdshxToGowtjtYkGI=",
"owner": "numtide",
"repo": "treefmt-nix",
"rev": "49dc4a92b02b8e68798abd99184f228243b6e3ac",
"type": "github"
},
"original": {
"owner": "numtide",
"repo": "treefmt-nix",
"type": "github"
}
},
"uninsane-dot-org": {
"inputs": {
"flake-utils": "flake-utils",
"nixpkgs": [
"nixpkgs-unpatched"
]
},
"locked": {
"lastModified": 1686876043,
"narHash": "sha256-71SNPU2aeeJx29JSeW4JCJb8HXAuZRvL7sbh+c3wgkk=",
"lastModified": 1713198740,
"narHash": "sha256-8SUaqMJdAkMOI9zhvlToL7eCr5Sl+2o2pDQ7nq+HoJU=",
"ref": "refs/heads/master",
"rev": "0e0aa12aca143639f158b3a5c0c00349fcc2166c",
"revCount": 199,
"rev": "af8420d1c256d990b5e24de14ad8592a5d85bf77",
"revCount": 239,
"type": "git",
"url": "https://git.uninsane.org/colin/uninsane"
},

557
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.
#
#
@ -23,81 +25,107 @@
# 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.
# - master auto-merged into staging and staging-next
# - 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.
# - nixos-unstable: for everyday development; it provides good caching
# - master: temporarily if i'm otherwise cherry-picking lots of already-applied patches
# - staging-next: if testing stuff that's been PR'd into staging, i.e. base library updates.
# - staging: maybe if no staging-next -> master PR has been cut yet?
#
# <https://github.com/nixos/nixpkgs/tree/nixos-unstable>
nixpkgs-unpatched.url = "github:nixos/nixpkgs?ref=nixos-unstable";
# nixpkgs-unpatched.url = "github:nixos/nixpkgs?ref=staging-next";
# nixpkgs-unpatched.url = "github:nixos/nixpkgs?ref=staging";
# nixpkgs-unpatched.url = "github:nixos/nixpkgs?ref=nixos-unstable";
nixpkgs-unpatched.url = "github:nixos/nixpkgs?ref=master";
# nixpkgs-unpatched.url = "github:nixos/nixpkgs?ref=nixos-staging";
# nixpkgs-unpatched.url = "github:nixos/nixpkgs?ref=nixos-staging-next";
nixpkgs-next-unpatched.url = "github:nixos/nixpkgs?ref=staging-next";
nixpkgs-wayland = {
url = "github:nix-community/nixpkgs-wayland";
inputs.nixpkgs.follows = "nixpkgs-unpatched";
};
mobile-nixos = {
# <https://github.com/nixos/mobile-nixos>
url = "github:nixos/mobile-nixos";
# only used for building disk images, not relevant after deployment
# TODO: replace with something else. commit `0f3ac0bef1aea70254a3bae35e3cc2561623f4c1`
# replaces the imageBuilder with a "new implementation from celun" and wildly breaks my use.
# pinning to d25d3b... is equivalent to holding at 2023-09-15
url = "github:nixos/mobile-nixos?ref=d25d3b87e7f300d8066e31d792337d9cd7ecd23b";
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-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-unpatched";
};
nix-serve = {
# <https://github.com/edolstra/nix-serve>
url = "github:edolstra/nix-serve";
};
};
outputs = {
self,
nixpkgs-unpatched,
nixpkgs-next-unpatched ? nixpkgs-unpatched,
nixpkgs-wayland,
mobile-nixos,
sops-nix,
uninsane-dot-org,
nix-serve,
...
}@inputs:
let
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);
# 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;
patchNixpkgs = variant: nixpkgs: (import ./nixpatches/flake.nix).outputs {
inherit variant nixpkgs;
self = patchNixpkgs variant nixpkgs;
};
nixpkgsCompiledBy = system: nixpkgs.legacyPackages."${system}";
nixpkgs' = patchNixpkgs "master" nixpkgs-unpatched;
nixpkgsCompiledBy = system: nixpkgs'.legacyPackages."${system}";
evalHost = { name, local, target }: nixpkgs.lib.nixosSystem {
evalHost = { name, local, target, variant ? null, nixpkgs ? nixpkgs' }: nixpkgs.lib.nixosSystem {
system = target;
modules = [
(import ./hosts/instantiate.nix { localSystem = local; hostName = name; })
{
nixpkgs.buildPlatform.system = local;
}
(optionalAttrs (local != target) {
# XXX(2023/12/11): cache.nixos.org uses `system = ...` instead of `hostPlatform.system`, and that choice impacts the closure of every package.
# so avoid specifying hostPlatform.system on non-cross builds, so i can use upstream caches.
nixpkgs.hostPlatform.system = target;
})
(optionalAttrs (variant == "light") {
sane.maxBuildCost = 2;
})
(optionalAttrs (variant == "min") {
sane.maxBuildCost = 0;
})
(import ./hosts/instantiate.nix { hostName = name; })
self.nixosModules.default
self.nixosModules.passthru
{
@ -106,48 +134,29 @@
self.overlays.sane-all
];
}
({ lib, ... }: {
# TODO: does the earlier `system` arg to nixosSystem make its way here?
nixpkgs.hostPlatform.system = target;
# nixpkgs.buildPlatform = local; # set by instantiate.nix instead
# nixpkgs.config.replaceStdenv = { pkgs }: pkgs.ccacheStdenv;
})
];
};
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;
};
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"; };
desko-light = { name = "desko"; local = "x86_64-linux"; target = "x86_64-linux"; variant = "light"; };
lappy = { name = "lappy"; local = "x86_64-linux"; target = "x86_64-linux"; };
lappy-light = { name = "lappy"; local = "x86_64-linux"; target = "x86_64-linux"; variant = "light"; };
lappy-min = { name = "lappy"; local = "x86_64-linux"; target = "x86_64-linux"; variant = "min"; };
moby = { name = "moby"; local = "x86_64-linux"; target = "aarch64-linux"; };
moby-light = { name = "moby"; local = "x86_64-linux"; target = "aarch64-linux"; variant = "light"; };
moby-min = { name = "moby"; local = "x86_64-linux"; target = "aarch64-linux"; variant = "min"; };
rescue = { name = "rescue"; local = "x86_64-linux"; target = "x86_64-linux"; };
};
hostsNext = mapAttrs' (h: v: {
name = "${h}-next";
value = v // { nixpkgs = patchNixpkgs "staging-next" nixpkgs-next-unpatched; };
}) hosts;
in mapAttrValues evalHost (
hosts // hostsNext
);
# unofficial output
# this produces a EFI-bootable .img file (GPT with a /boot partition and a system (/ or /nix) partition).
@ -166,41 +175,38 @@
imgs = mapAttrValues (host: host.config.system.build.img) 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;
hostConfigs = mapAttrValues (host: host.config) self.nixosConfigurations;
hostSystems = mapAttrValues (host: host.config.system.build.toplevel) self.nixosConfigurations;
hostPkgs = mapAttrValues (host: host.config.system.build.pkgs) self.nixosConfigurations;
hostPrograms = mapAttrValues (host: mapAttrValues (p: p.package) host.config.sane.programs) self.nixosConfigurations;
patched.nixpkgs = nixpkgs';
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;
optimizations = final: prev: import ./overlays/optimizations.nix final prev;
preferences = final: prev: import ./overlays/preferences.nix final prev;
passthru = final: prev:
let
stable =
if inputs ? "nixpkgs-stable" then (
final': prev': {
stable = inputs.nixpkgs-stable.legacyPackages."${prev'.stdenv.hostPlatform.system}";
}
) else (final': prev': {});
mobile = (import "${mobile-nixos}/overlay/overlay.nix");
uninsane = uninsane-dot-org.overlay;
# nix-serve' = nix-serve.overlay;
nix-serve' = next: prev: {
# XXX(2023/03/02): upstream isn't compatible with modern `nix`. probably the perl bindings.
# - we use the package built against `nixpkgs` specified in its flake rather than use its overlay,
# to get around this.
inherit (nix-serve.packages."${next.system}") nix-serve;
uninsane = uninsane-dot-org.overlays.default;
wayland = final: prev: {
# default is to dump the packages into `waylandPkgs` *and* the toplevel.
# but i just want the `waylandPkgs` set
inherit (nixpkgs-wayland.overlays.default final prev)
waylandPkgs
new-wayland-protocols #< 2024/03/10: nixpkgs-wayland assumes this will be in the toplevel
;
};
in
(stable final prev)
// (mobile final prev)
// (uninsane final prev)
// (nix-serve' final prev)
;
(mobile final prev)
// (uninsane final prev)
// (wayland final prev)
;
};
nixosModules = rec {
@ -227,54 +233,395 @@
# 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:
(system: passthruPkgs: passthruPkgs.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)
&& (passthruPkgs.lib.meta.availableOn passthruPkgs.stdenv.hostPlatform pkg)
)
(
# expose sane packages and chosen inputs (uninsane.org)
(import ./pkgs { pkgs = allPkgs; }) // {
inherit (allPkgs) uninsane-dot-org;
(import ./pkgs { pkgs = passthruPkgs; }) // {
inherit (passthruPkgs) uninsane-dot-org;
}
)
)
# self.legacyPackages;
{ inherit (self.legacyPackages) x86_64-linux; }
{
x86_64-linux = (nixpkgsCompiledBy "x86_64-linux").appendOverlays [
self.overlays.passthru
];
}
;
apps."x86_64-linux" =
let
pkgs = self.legacyPackages."x86_64-linux";
deployScript = action: pkgs.writeShellScript "deploy-moby" ''
nixos-rebuild --flake '.#moby' build $@
sudo nix sign-paths -r -k /run/secrets/nix_serve_privkey $(readlink ./result)
nixos-rebuild --flake '.#moby' ${action} --target-host colin@moby --use-remote-sudo $@
sanePkgs = import ./pkgs { inherit pkgs; };
deployScript = host: addr: action: pkgs.writeShellScript "deploy-${host}" ''
set -e
host="${host}"
addr="${addr}"
action="${if action != null then action else ""}"
runOnTarget() {
# run the command ($@) on the machine we're deploying to.
# if that's a remote machine, then do it via ssh, else local shell.
if [ -n "$addr" ]; then
ssh "$addr" "$@"
else
"$@"
fi
}
nix build ".#nixosConfigurations.$host.config.system.build.toplevel" --out-link "./build/result-$host" "$@"
storePath="$(readlink ./build/result-$host)"
# mimic `nixos-rebuild --target-host`, in effect:
# - nix-copy-closure ...
# - nix-env --set ...
# - switch-to-configuration <boot|dry-activate|switch|test|>
# avoid the actual `nixos-rebuild` for a few reasons:
# - fewer nix evals
# - more introspectability and debuggability
# - sandbox friendliness (especially: `git` doesn't have to be run as root)
if [ -n "$addr" ]; then
sudo nix store sign -r -k /run/secrets/nix_signing_key "$storePath"
# add more `-v` for more verbosity (up to 5).
# builders-use-substitutes false: optimizes so that the remote machine doesn't try to get paths from its substituters.
# we already have all paths here, and the remote substitution is slow to check and SERIOUSLY flaky on moby in particular.
nix copy -vv --option builders-use-substitutes false --to "ssh-ng://$addr" "$storePath"
fi
if [ -n "$action" ]; then
runOnTarget sudo nix-env -p /nix/var/nix/profiles/system --set "$storePath"
runOnTarget sudo "$storePath/bin/switch-to-configuration" "$action"
fi
'';
in {
update-feeds = {
deployApp = host: addr: action: {
type = "app";
program = "${pkgs.feeds.updateScript}";
program = ''${deployScript host addr action}'';
};
# pkg updating.
# a cleaner alternative lives here: <https://discourse.nixos.org/t/how-can-i-run-the-updatescript-of-personal-packages/25274/2>
# mkUpdater :: [ String ] -> { type = "app"; program = path; }
mkUpdater = attrPath: {
type = "app";
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 ? [], flakePrefix ? [] }@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 "." (flakePrefix ++ escapedPath);
in pkgs.lib.optionalString doUpdateByDefault (
pkgs.lib.escapeShellArgs [
"nix" "run" ".#${updatePath}"
]
);
in {
type = "app";
# top-level app just invokes the updater of everything one layer below it
program = builtins.toString (pkgs.writeShellScript
(builtins.concatStringsSep "-" (flakePrefix ++ 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.{desko,lappy,moby,servo}[-light|-test]' [nix args ...]`
- build and deploy the host
- `nix run '.#preDeploy.{desko,lappy,moby,servo}[-light]' [nix args ...]`
- copy closures to a host, but don't activate it
- or `nix run '.#preDeploy'` to target all hosts
- `nix run '.#check'`
- make sure all systems build; NUR evaluates
- `nix run '.#bench'`
- benchmark the eval time of common targets this flake provides
specific build targets of interest:
- `nix build '.#imgs.rescue'`
'';
in builtins.toString (pkgs.writeShellScript "nixos-config-help" ''
cat ${helpMsg}
echo ""
echo "complete flake structure:"
nix flake show --option allow-import-from-derivation true
'');
};
# wrangle some names to get package updaters which refer back into the flake, but also conditionally ignore certain paths (e.g. sane.feeds).
# TODO: better design
update = rec {
_impl.pkgs.sane = mkUpdaters { flakePrefix = [ "update" "_impl" "pkgs" ]; ignore = [ [ "sane" "feeds" ] ]; } [ "sane" ];
pkgs = _impl.pkgs.sane;
_impl.feeds.sane.feeds = mkUpdaters { flakePrefix = [ "update" "_impl" "feeds" ]; } [ "sane" "feeds" ];
feeds = _impl.feeds.sane.feeds;
};
init-feed = {
# use like `nix run '.#init-feed' uninsane.org`
type = "app";
program = "${pkgs.feeds.initFeedScript}";
program = "${pkgs.feeds.init-feed}";
};
deploy-moby-test = {
# `nix run '.#deploy-moby-test'`
deploy = {
desko = deployApp "desko" "desko" "switch";
desko-light = deployApp "desko-light" "desko" "switch";
lappy = deployApp "lappy" "lappy" "switch";
lappy-light = deployApp "lappy-light" "lappy" "switch";
lappy-min = deployApp "lappy-min" "lappy" "switch";
moby = deployApp "moby" "moby" "switch";
moby-light = deployApp "moby-light" "moby" "switch";
moby-min = deployApp "moby-min" "moby" "switch";
moby-test = deployApp "moby" "moby" "test";
servo = deployApp "servo" "servo" "switch";
# like `nixos-rebuild --flake . switch`
self = deployApp "$(hostname)" "" "switch";
self-light = deployApp "$(hostname)-light" "" "switch";
self-min = deployApp "$(hostname)-min" "" "switch";
type = "app";
program = ''${deployScript "test"}'';
program = builtins.toString (pkgs.writeShellScript "deploy-all" ''
nix run '.#deploy.lappy'
nix run '.#deploy.moby'
nix run '.#deploy.desko'
nix run '.#deploy.servo'
'');
};
deploy-moby = {
# `nix run '.#deploy-moby-switch'`
preDeploy = {
# build the host and copy the runtime closure to that host, but don't activate it.
desko = deployApp "desko" "desko" null;
desko-light = deployApp "desko-light" "desko" null;
lappy = deployApp "lappy" "lappy" null;
lappy-light = deployApp "lappy-light" "lappy" null;
lappy-min = deployApp "lappy-min" "lappy" null;
moby = deployApp "moby" "moby" null;
moby-light = deployApp "moby-light" "moby" null;
moby-min = deployApp "moby-min" "moby" null;
servo = deployApp "servo" "servo" null;
type = "app";
program = ''${deployScript "switch"}'';
program = builtins.toString (pkgs.writeShellScript "predeploy-all" ''
# copy the -min/-light variants first; this might be run while waiting on a full build. or the full build failed.
nix run '.#preDeploy.moby-min' -- "$@"
nix run '.#preDeploy.lappy-min' -- "$@"
nix run '.#preDeploy.moby-light' -- "$@"
nix run '.#preDeploy.lappy-light' -- "$@"
nix run '.#preDeploy.desko-light' -- "$@"
nix run '.#preDeploy.lappy' -- "$@"
nix run '.#preDeploy.servo' -- "$@"
nix run '.#preDeploy.moby' -- "$@"
nix run '.#preDeploy.desko' -- "$@"
'');
};
sync = {
type = "app";
program = builtins.toString (pkgs.writeShellScript "sync-all" ''
RC_lappy=$(nix run '.#sync.lappy' -- "$@")
RC_moby=$(nix run '.#sync.moby' -- "$@")
RC_desko=$(nix run '.#sync.desko' -- "$@")
echo "lappy: $RC_lappy"
echo "moby: $RC_moby"
echo "desko: $RC_desko"
'');
};
sync.desko = {
# copy music from servo to desko
# can run this from any device that has ssh access to desko and servo
type = "app";
program = builtins.toString (pkgs.writeShellScript "sync-to-desko" ''
sudo mount /mnt/desko/home
${pkgs.sane-scripts.sync-music}/bin/sane-sync-music --compat /mnt/servo/media/Music /mnt/desko/home/Music "$@"
'');
};
sync.lappy = {
# copy music from servo to lappy
# can run this from any device that has ssh access to lappy and servo
type = "app";
program = builtins.toString (pkgs.writeShellScript "sync-to-lappy" ''
sudo mount /mnt/lappy/home
${pkgs.sane-scripts.sync-music}/bin/sane-sync-music --compress --compat /mnt/servo/media/Music /mnt/lappy/home/Music "$@"
'');
};
sync.moby = {
# copy music from servo to moby
# can run this from any device that has ssh access to moby and servo
type = "app";
program = builtins.toString (pkgs.writeShellScript "sync-to-moby" ''
sudo mount /mnt/moby/home
sudo mount /mnt/desko/home
${pkgs.rsync}/bin/rsync -arv --exclude servo-macros /mnt/moby/home/Pictures/ /mnt/desko/home/Pictures/moby/
# N.B.: limited by network/disk -> reduce job count to improve pause/resume behavior
${pkgs.sane-scripts.sync-music}/bin/sane-sync-music --compress --compat --jobs 4 /mnt/servo/media/Music /mnt/moby/home/Music "$@"
'');
};
check = {
type = "app";
program = builtins.toString (pkgs.writeShellScript "check-all" ''
nix run '.#check.nur'
RC0=$?
nix run '.#check.hostConfigs'
RC1=$?
nix run '.#check.rescue'
RC2=$?
echo "nur: $RC0"
echo "hostConfigs: $RC1"
echo "rescue: $RC2"
exit $(($RC0 | $RC1 | $RC2))
'');
};
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=${nixpkgs-unpatched} \
-I nixpkgs-overlays=${./.}/hosts/common/nix/overlay \
-I ../../ \
| tee # tee to prevent interactive mode
'');
};
check.hostConfigs = {
type = "app";
program = let
checkHost = host: let
shellHost = pkgs.lib.replaceStrings [ "-" ] [ "_" ] host;
in ''
nix build -v '.#nixosConfigurations.${host}.config.system.build.toplevel' --out-link ./build/result-${host} -j2 "$@"
RC_${shellHost}=$?
'';
in builtins.toString (pkgs.writeShellScript
"check-host-configs"
''
# build minimally-usable hosts first, then their full image.
# this gives me a minimal image i can deploy or copy over, early.
${checkHost "lappy-min"}
${checkHost "moby-min"}
${checkHost "desko-light"}
${checkHost "moby-light"}
${checkHost "lappy-light"}
${checkHost "desko"}
${checkHost "lappy"}
${checkHost "servo"}
${checkHost "moby"}
${checkHost "rescue"}
# still want to build the -light variants first so as to avoid multiple simultaneous webkitgtk builds
${checkHost "desko-light-next"}
${checkHost "moby-light-next"}
${checkHost "desko-next"}
${checkHost "lappy-next"}
${checkHost "servo-next"}
${checkHost "moby-next"}
${checkHost "rescue-next"}
echo "desko: $RC_desko"
echo "lappy: $RC_lappy"
echo "servo: $RC_servo"
echo "moby: $RC_moby"
echo "rescue: $RC_rescue"
echo "desko-next: $RC_desko_next"
echo "lappy-next: $RC_lappy_next"
echo "servo-next: $RC_servo_next"
echo "moby-next: $RC_moby_next"
echo "rescue-next: $RC_rescue_next"
# i don't really care if the -next hosts fail. i build them mostly to keep the cache fresh/ready
exit $(($RC_desko | $RC_lappy | $RC_servo | $RC_moby | $RC_rescue))
''
);
};
check.rescue = {
type = "app";
program = builtins.toString (pkgs.writeShellScript "check-rescue" ''
nix build -v '.#imgs.rescue' --out-link ./build/result-rescue-img -j2
'');
};
bench = {
type = "app";
program = builtins.toString (pkgs.writeShellScript "bench" ''
doBench() {
attrPath="$1"
shift
echo -n "benchmarking eval of '$attrPath'... "
/run/current-system/sw/bin/time -f "%e sec" -o /dev/stdout \
nix eval --no-eval-cache --quiet --raw ".#$attrPath" --apply 'result: if result != null then "" else "unexpected null"' $@ 2> /dev/null
}
if [ -n "$1" ]; then
doBench "$@"
else
doBench hostConfigs
doBench hostConfigs.lappy
doBench hostConfigs.lappy.sane.programs
doBench hostConfigs.lappy.sane.users.colin
doBench hostConfigs.lappy.sane.fs
doBench hostConfigs.lappy.environment.systemPackages
fi
'');
};
};

View File

@ -4,22 +4,33 @@
./fs.nix
];
sane.services.trust-dns.asSystemResolver = false; # TEMPORARY: TODO: re-enable trust-dns
# sane.programs.devPkgs.enableFor.user.colin = true;
# sane.guest.enable = true;
# don't enable wifi by default: it messes with connectivity.
# systemd.services.iwd.enable = false;
# systemd.services.wpa_supplicant.enable = false;
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.roles.pc = 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.secretKeyFile = config.sops.secrets.nix_serve_privkey.path;
sane.gui.sway.enable = true;
sane.nixcache.remote-builders.desko = false;
sane.programs.cups.enableFor.user.colin = true;
sane.programs.sway.enableFor.user.colin = 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" ];
sane.programs."gnome.geary".config.autostart = true;
sane.programs.signal-desktop.config.autostart = true;
boot.loader.efi.canTouchEfiVariables = false;
sane.image.extraBootFiles = [ pkgs.bootpart-uefi-x86_64 ];
@ -27,9 +38,6 @@
# needed to use libimobiledevice/ifuse, for iphone sync
services.usbmuxd.enable = true;
# don't enable wifi by default: it messes with connectivity.
systemd.services.iwd.enable = false;
# default config: https://man.archlinux.org/man/snapper-configs.5
# defaults to something like:
# - hourly snapshots
@ -42,17 +50,6 @@
ALLOW_USERS = [ "colin" ];
};
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

@ -1,21 +1,12 @@
{ ... }:
{
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";
device = "/dev/disk/by-uuid/845d85bf-761d-431b-a406-e6f20909154f";
fsType = "btrfs";
options = [
"compress=zstd"
@ -24,8 +15,7 @@
};
fileSystems."/boot" = {
# device = "/dev/disk/by-uuid/CAA7-E7D2";
device = "/dev/disk/by-uuid/41B6-BAEF";
device = "/dev/disk/by-uuid/5049-9AFD";
fsType = "vfat";
};
}

View File

@ -2,24 +2,24 @@
{
imports = [
./fs.nix
./polyfill.nix
];
sane.roles.client = true;
sane.roles.dev-machine = true;
sane.roles.pc = true;
sane.services.wg-home.enable = true;
sane.services.wg-home.ip = config.sane.hosts.by-name."lappy".wg-home.ip;
# sane.guest.enable = true;
sane.gui.sway.enable = true;
boot.loader.efi.canTouchEfiVariables = false;
sane.image.extraBootFiles = [ pkgs.bootpart-uefi-x86_64 ];
sane.programs.guiApps.suggestedPrograms = [
"desktopGuiApps"
"stepmania"
];
sane.programs.consoleUtils.suggestedPrograms = [ "consoleMediaUtils" ];
sane.programs.cups.enableFor.user.colin = true;
sane.programs.stepmania.enableFor.user.colin = true;
sane.programs.sway.enableFor.user.colin = true;
sane.programs."gnome.geary".config.autostart = true;
sane.programs.signal-desktop.config.autostart = true;
sops.secrets.colin-passwd.neededForUsers = true;
@ -34,9 +34,6 @@
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

@ -1,17 +1,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";
fsType = "btrfs";
@ -25,24 +14,4 @@
device = "/dev/disk/by-uuid/BD79-D6BB";
fsType = "vfat";
};
# fileSystems."/nix" = {
# device = "/dev/disk/by-uuid/5a7fa69c-9394-8144-a74c-6726048b129f";
# fsType = "btrfs";
# };
# fileSystems."/boot" = {
# device = "/dev/disk/by-uuid/4302-1685";
# fsType = "vfat";
# };
# fileSystems."/" = {
# device = "none";
# fsType = "tmpfs";
# options = [
# "mode=755"
# "size=1G"
# "defaults"
# ];
# };
}

View File

@ -1,38 +0,0 @@
# 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 = "sway";
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";
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";
};
package = pkgs.sxmo-utils.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,22 @@
# tow-boot: <https://tow-boot.org>
# docs (pinephone specific): <https://github.com/Tow-Boot/Tow-Boot/tree/development/boards/pine64-pinephoneA64>
# LED and button behavior is defined here: <https://github.com/Tow-Boot/Tow-Boot/blob/development/modules/tow-boot/phone-ux.nix>
# - hold VOLDOWN: enter recovery mode
# - LED will turn aqua instead of yellow
# - recovery mode would ordinarily allow a selection of entries, but for pinephone i guess it doesn't do anything?
# - hold VOLUP: force it to load the OS from eMMC?
# - LED will turn blue instead of yellow
# boot LEDs:
# - yellow = entered tow-boot
# - 10 red flashes => poweroff means tow-boot couldn't boot into the next stage (i.e. distroboot)
# - distroboot: <https://source.denx.de/u-boot/u-boot/-/blob/v2022.04/doc/develop/distro.rst>)
{ config, pkgs, ... }:
{
# we need space in the GPT header to place tow-boot.
# only actually need 1 MB, but better to over-allocate than under-allocate
sane.image.extraGPTPadding = 16 * 1024 * 1024;
sane.image.firstPartGap = 0;
sane.image.installBootloader = ''
dd if=${pkgs.tow-boot-pinephone}/Tow-Boot.noenv.bin of=$out/nixos.img bs=1024 seek=8 conv=notrunc
'';
}

View File

@ -1,75 +1,105 @@
# 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.roles.handheld = true;
sane.programs.zsh.config.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;
# 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?
# services.getty.autologinUser = "root"; # allows for emergency maintenance?
sops.secrets.colin-passwd.neededForUsers = true;
sane.programs.web-browser.config = {
# compromise impermanence for the sake of usability
persistCache = "private";
persistData = "private";
# sane.gui.sxmo.enable = true;
sane.programs.sway.enableFor.user.colin = true;
sane.programs.swaylock.enableFor.user.colin = false; #< not usable on touch
sane.programs.schlock.enableFor.user.colin = true;
sane.programs.swayidle.config.actions.screenoff.delay = 300;
sane.programs.swayidle.config.actions.screenoff.enable = true;
sane.programs.sane-input-handler.enableFor.user.colin = true;
sane.programs.blueberry.enableFor.user.colin = false; # bluetooth manager: doesn't cross compile!
sane.programs.fcitx5.enableFor.user.colin = false; # does not cross compile
sane.programs.mercurial.enableFor.user.colin = false; # does not cross compile
sane.programs.nvme-cli.enableFor.system = false; # does not cross compile (libhugetlbfs)
# i don't do crypto stuff on moby
addons.ether-metamask.enable = false;
# addons.sideberry.enable = false;
# enabled for easier debugging
sane.programs.eg25-control.enableFor.user.colin = true;
sane.programs.rtl8723cs-wowlan.enableFor.user.colin = true;
# sane.programs.ntfy-sh.config.autostart = true;
sane.programs.dino.config.autostart = true;
# sane.programs.signal-desktop.config.autostart = true; # TODO: enable once electron stops derping.
# sane.programs."gnome.geary".config.autostart = true;
# sane.programs.calls.config.autostart = true;
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.pipewire.config = {
# tune so Dino doesn't drop audio
# 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`
min-quantum = 2048;
max-quantum = 8192;
};
sane.user.persist.plaintext = [
# TODO: make this just generally conditional upon pulse being enabled?
".config/pulse" # persist pulseaudio volume
];
sane.gui.sxmo.enable = true;
# sane.programs.consoleUtils.enableFor.user.colin = false;
# sane.programs.guiApps.enableFor.user.colin = false;
sane.programs.sequoia.enableFor.user.colin = false;
sane.programs.tuiApps.enableFor.user.colin = false; # visidata, others, don't compile well
# disabled for faster deploys (gthumb depends on webkitgtk, particularly)
sane.programs.soundconverter.enableFor.user.colin = false;
sane.programs.gthumb.enableFor.user.colin = false;
sane.programs.jellyfin-media-player.enableFor.user.colin = false;
# 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;
# boot.initrd.systemd.enable = false;
# boot.initrd.services.swraid.enable = false; # attempt to fix dm_mod stuff
# disable proximity sensor.
# the filtering/calibration is bad that it causes the screen to go fully dark at times.
boot.blacklistedKernelModules = [ "stk3310" ];
# without this some GUI apps fail: `DRM_IOCTL_MODE_CREATE_DUMB failed: Cannot allocate memory`
# this is because they can't allocate enough video ram.
# the default CMA seems to be 32M.
# i was running fine with 256MB from 2022/07-ish through 2022/12-ish, but then the phone quit reliably coming back from sleep: maybe a memory leak?
# `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.override {
# rtl_bt = false probably means no bluetooth connectivity.
# N.B.: DON'T RE-ENABLE without first confirming that wake-on-lan works during suspend (rtcwake).
# it seems the rtl_bt stuff ("bluetooth coexist") might make wake-on-LAN radically more flaky.
rtl_bt = false;
})
];
system.stateVersion = "21.11";
@ -82,30 +112,15 @@
# enable rotation sensor
hardware.sensor.iio.enable = true;
# 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>
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"
# pulseaudio
user.services.pulseaudio.environment.ALSA_CONFIG_UCM2 = ucm-env;
services.pulseaudio.environment.ALSA_CONFIG_UCM2 = ucm-env;
# 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;
};
hardware.opengl.driSupport = true;
# 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

@ -1,12 +0,0 @@
{ config, pkgs, ... }:
{
# we need space in the GPT header to place tow-boot.
# only actually need 1 MB, but better to over-allocate than under-allocate
sane.image.extraGPTPadding = 16 * 1024 * 1024;
sane.image.firstPartGap = 0;
system.build.img = pkgs.runCommand "nixos_full-disk-image.img" {} ''
cp -v ${config.system.build.img-without-firmware}/nixos.img $out
chmod +w $out
dd if=${pkgs.tow-boot-pinephone}/Tow-Boot.noenv.bin of=$out bs=1024 seek=8 conv=notrunc
'';
}

View File

@ -1,7 +1,6 @@
{ ... }:
{
sane.persist.root-on-tmpfs = true;
fileSystems."/nix" = {
device = "/dev/disk/by-uuid/1f1271f8-53ce-4081-8a29-60a4a6b5d6f9";
fsType = "btrfs";

View File

@ -0,0 +1,68 @@
# 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.programs.where-am-i.enableFor.user.colin = true;
}

View File

@ -1,71 +1,56 @@
{ 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="
)
];
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.linuxPackagesFor pkgs.linux-megous;
# boot.kernelPackages = pkgs.linuxPackagesFor pkgs.linux-manjaro;
# boot.kernelPackages = pkgs.linuxPackagesFor pkgs.linux_latest;
# 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;
# 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";
@ -80,4 +65,27 @@ in
target = "Image.gz"; # <-- compress the kernel image
# target = "zImage"; # <-- confuses other parts of nixos :-(
};
# disable proximity sensor.
# the filtering/calibration is bad that it causes the screen to go fully dark at times.
boot.blacklistedKernelModules = [ "stk3310" ];
boot.kernelParams = [
# without this some GUI apps fail: `DRM_IOCTL_MODE_CREATE_DUMB failed: Cannot allocate memory`
# this is because they can't allocate enough video ram.
# see related nixpkgs issue: <https://github.com/NixOS/nixpkgs/issues/260222>
# TODO(2023/12/03): remove once mesa 23.3.1 lands: <https://github.com/NixOS/nixpkgs/pull/265740>
#
# the default CMA seems to be 32M.
# i was running fine with 256MB from 2022/07-ish through 2022/12-ish, but then the phone quit reliably coming back from sleep (phosh): maybe a memory leak?
# `cat /proc/meminfo` to see CmaTotal/CmaFree if interested in tuning this.
"cma=512M"
# 2023/10/20: potential fix for the lima (GPU) timeout bugs:
# - <https://gitlab.com/postmarketOS/pmaports/-/issues/805#note_890467824>
"lima.sched_timeout_ms=2000"
];
# services.xserver.displayManager.job.preStart = ensureHWReady;
# systemd.services.greetd.preStart = ensureHWReady;
systemd.services.unl0kr.preStart = ensureHWReady;
}

View File

@ -1,25 +1,45 @@
{ pkgs, sane-lib, ... }:
{
sane.gui.sxmo = {
settings = {
# touch screen
SXMO_LISGD_INPUT_DEVICE = "/dev/input/by-path/platform-1c2ac00.i2c-event";
# vol and power are detected correctly by upstream
# 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>
# preferences
# N.B. some deviceprofiles explicitly set SXMO_SWAY_SCALE, overwriting what we put here.
SXMO_SWAY_SCALE = "1.5";
SXMO_ROTATION_GRAVITY = "12800";
DEFAULT_COUNTRY = "US";
BROWSWER = "librewolf";
};
package = pkgs.sxmo-utils.overrideAttrs (base: {
postPatch = (base.postPatch or "") + ''
cat <<EOF >> ./configs/default_hooks/sxmo_hook_start.sh
# rotate UI based on physical display angle by default
sxmo_daemons.sh start autorotate sxmo_autorotate.sh
EOF
'';
});
{ 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.programs.alacritty.config.fontSize = 9;
sane.programs.sway.config = {
font = "pango:monospace 10";
mod = "Mod1"; # prefer Alt
workspace_layout = "tabbed";
};
sane.programs.waybar.config = {
fontSize = 14;
height = 26;
persistWorkspaces = [ "1" "2" "3" "4" "5" ];
modules.media = false;
modules.network = false;
modules.perf = false;
modules.windowTitle = false;
# TODO: show modem state
};
}

View File

@ -4,12 +4,15 @@
./fs.nix
];
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.persist.enable = false; # what we mean here is that the image is immutable; `/` is still tmpfs.
sane.nixcache.enable = false; # don't want to be calling out to dead machines that we're *trying* to rescue
# auto-login at shell
services.getty.autologinUser = "colin";
# users.users.colin.initialPassword = "colin";
# docs: https://nixos.org/manual/nixos/stable/options.html#opt-system.stateVersion
system.stateVersion = "21.05";
}

View File

@ -1,7 +1,7 @@
{ ... }:
{
fileSystems."/" = {
fileSystems."/nix" = {
device = "/dev/disk/by-uuid/44445555-6666-7777-8888-999900001111";
fsType = "ext4";
};

View File

@ -14,14 +14,22 @@
signaldctl.enableFor.user.colin = 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.zsh.config.showDeadlines = false; # ~/knowledge doesn't always exist
sane.programs.consoleUtils.suggestedPrograms = [
"consoleMediaUtils" # notably, for go2tv / casting
"pcConsoleUtils"
"sane-scripts.stop-all-servo"
];
sane.services.dyn-dns.enable = true;
sane.services.trust-dns.asSystemResolver = false; # TODO: enable once it's all working well
sane.services.wg-home.enable = true;
sane.services.wg-home.enableWan = 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.remote-builders.desko = false;
sane.nixcache.remote-builders.servo = false;
# sane.services.duplicity.enable = true; # TODO: re-enable after HW upgrade
# automatically log in at the virtual consoles.

View File

@ -1,16 +1,70 @@
# zfs docs:
# - <https://nixos.wiki/wiki/ZFS>
# - <repo:nixos/nixpkgs:nixos/modules/tasks/filesystems/zfs.nix>
#
# zfs check health: `zpool status`
#
# zfs pool creation (requires `boot.supportedFilesystems = [ "zfs" ];`
# - 1. identify disk IDs: `ls -l /dev/disk/by-id`
# - 2. pool these disks: `zpool create -f -m legacy pool raidz ata-ST4000VN008-2DR166_WDH0VB45 ata-ST4000VN008-2DR166_WDH17616 ata-ST4000VN008-2DR166_WDH0VC8Q ata-ST4000VN008-2DR166_WDH17680`
# - legacy documented: <https://superuser.com/questions/790036/what-is-a-zfs-legacy-mount-point>
# - 3. enable acl support: `zfs set acltype=posixacl pool`
#
# import pools: `zpool import pool`
# show zfs datasets: `zfs list` (will be empty if haven't imported)
# show zfs properties (e.g. compression): `zfs get all pool`
# set zfs properties: `zfs set compression=on pool`
{ ... }:
{
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"
];
# hostId: not used for anything except zfs guardrail?
# [hex(ord(x)) for x in 'serv']
networking.hostId = "73657276";
boot.supportedFilesystems = [ "zfs" ];
# boot.zfs.enabled = true;
boot.zfs.forceImportRoot = false;
# scrub all zfs pools weekly:
services.zfs.autoScrub.enable = true;
boot.extraModprobeConfig = ''
### zfs_arc_max tunable:
# ZFS likes to use half the ram for its own cache and let the kernel push everything else to swap.
# so, reduce its cache size
# see: <https://askubuntu.com/a/1290387>
# see: <https://serverfault.com/a/1119083>
# see: <https://openzfs.github.io/openzfs-docs/Performance%20and%20Tuning/Module%20Parameters.html#zfs-arc-max>
# for all tunables, see: `man 4 zfs`
# to update these parameters without rebooting:
# - `echo '4294967296' | sane-sudo-redirect /sys/module/zfs/parameters/zfs_arc_max`
### zfs_bclone_enabled tunable
# this allows `cp --reflink=always FOO BAR` to work. i.e. shallow copies.
# it's unstable as of 2.2.3. led to *actual* corruption in 2.2.1, but hopefully better by now.
# - <https://github.com/openzfs/zfs/issues/405>
# note that `du -h` won't *always* show the reduced size for reflink'd files (?).
# `zpool get all | grep clone` seems to be the way to *actually* see how much data is being deduped
options zfs zfs_arc_max=4294967296 zfs_bclone_enabled=1
'';
# to be able to mount the pool like this, make sure to tell zfs to NOT manage it itself.
# otherwise local-fs.target will FAIL and you will be dropped into a rescue shell.
# - `zfs set mountpoint=legacy pool`
# if done correctly, the pool can be mounted before this `fileSystems` entry is created:
# - `sudo mount -t zfs pool /mnt/persist/pool`
fileSystems."/mnt/pool" = {
device = "pool";
fsType = "zfs";
options = [ "acl" ]; #< not sure if this `acl` flag is actually necessary. it mounts without it.
};
# services.zfs.zed = ... # TODO: zfs can send me emails when disks fail
sane.programs.sysadminUtils.suggestedPrograms = [ "zfs" ];
sane.persist.stores."ext" = {
origin = "/mnt/pool/persist";
storeDescription = "external HDD storage";
defaultMethod = "bind"; #< TODO: change to "symlink"?
};
# 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";
@ -27,7 +81,7 @@
};
# slow, external storage (for archiving, etc)
fileSystems."/mnt/persist/ext" = {
fileSystems."/mnt/usb-hdd" = {
device = "/dev/disk/by-uuid/aa272cff-0fcc-498e-a4cb-0d95fb60631b";
fsType = "btrfs";
options = [
@ -35,37 +89,47 @@
"defaults"
];
};
sane.fs."/mnt/usb-hdd".mount = {};
sane.persist.stores."ext" = {
origin = "/mnt/persist/ext/persist";
storeDescription = "external HDD storage";
};
sane.fs."/mnt/persist/ext".mount = {};
# FIRST TIME SETUP FOR MEDIA DIRECTORY:
# - set the group stick bit: `sudo find /var/media -type d -exec chmod g+s {} +`
# - this ensures new files/dirs inherit the group of their parent dir (instead of the user who creates them)
# - ensure everything under /var/media is mounted with `-o acl`, to support acls
# - ensure all files are rwx by group: `setfacl --recursive --modify d:g::rwx /var/media`
# - alternatively, `d:g:media:rwx` to grant `media` group even when file has a different owner, but that's a bit complex
sane.persist.sys.byStore.ext = [{
path = "/var/media";
user = "colin";
group = "media";
mode = "0775";
}];
sane.fs."/var/media/archive".dir = {};
# this is file.text instead of symlink.text so that it may be read over a remote mount (where consumers might not have any /nix/store/.../README.md path)
sane.fs."/var/media/archive/README.md".file.text = ''
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/media/Books".dir = {};
sane.fs."/var/media/Books/Audiobooks".dir = {};
sane.fs."/var/media/Books/Books".dir = {};
sane.fs."/var/media/Books/Visual".dir = {};
sane.fs."/var/media/collections".dir = {};
# sane.fs."/var/media/datasets".dir = {};
sane.fs."/var/media/freeleech".dir = {};
sane.fs."/var/media/Music".dir = {};
sane.fs."/var/media/Pictures".dir = {};
sane.fs."/var/media/Videos".dir = {};
sane.fs."/var/media/Videos/Film".dir = {};
sane.fs."/var/media/Videos/Shows".dir = {};
sane.fs."/var/media/Videos/Talks".dir = {};
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"; }
];
# 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";
}
{
user = "colin";
group = "users";
mode = "0777";
directory = "/var/lib/uninsane/media/freeleech";
}
];
# in-memory compressed RAM (seems to be dynamically sized)
# zramSwap = {
# enable = true;
# };
# this is file.text instead of symlink.text so that it may be read over a remote mount (where consumers might not have any /nix/store/.../README.md path)
sane.fs."/var/lib/uninsane/datasets/README.md".file.text = ''
this directory may seem redundant with ../media/datasets. it isn't.
this directory exists on SSD, allowing for speedy access to specific datasets when necessary.
the contents should be a subset of what's in ../media/datasets.
'';
# btrfs doesn't easily support swapfiles
# swapDevices = [

View File

@ -1,220 +1,184 @@
{ config, pkgs, ... }:
{ config, lib, pkgs, ... }:
let
portOpts = with lib; types.submodule {
options = {
visibleTo.ovpn = mkOption {
type = types.bool;
default = false;
};
};
};
in
{
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.
networking.useDHCP = false;
networking.interfaces.eth0.useDHCP = true;
# 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;
# this is needed to forward packets from the VPN to the host
boot.kernel.sysctl."net.ipv4.ip_forward" = 1;
# unless we add interface-specific settings for each VPN, we have to define nameservers globally.
# networking.nameservers = [
# "1.1.1.1"
# "9.9.9.9"
# ];
# use systemd's stub resolver.
# /etc/resolv.conf isn't sophisticated enough to use different servers per net namespace (or link).
# instead, running the stub resolver on a known address in the root ns lets us rewrite packets
# in the ovnps namespace to use the provider's DNS resolvers.
# a weakness is we can only query 1 NS at a time (unless we were to clone the packets?)
# there also seems to be some cache somewhere that's shared between the two namespaces.
# i think this is a libc thing. might need to leverage proper cgroups to _really_ kill it.
# - 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
# stub resolver (just forwards upstream) lives on 127.0.0.54
"127.0.0.53"
];
# nscd -- the Name Service Caching Daemon -- caches DNS query responses
# in a way that's unaware of my VPN routing, so routes are frequently poor against
# services which advertise different IPs based on geolocation.
# nscd claims to be usable without a cache, but in practice i can't get it to not cache!
# nsncd is the Name Service NON-Caching Daemon. it's a drop-in that doesn't cache;
# this is OK on the host -- because systemd-resolved caches. it's probably sub-optimal
# in the netns and we query upstream DNS more often than needed. hm.
# TODO: run a separate recursive resolver in each namespace.
services.nscd.enableNsncd = true;
# services.resolved.extraConfig = ''
# # docs: `man resolved.conf`
# # DNS servers to use via the `wg-ovpns` interface.
# # i hope that from the root ns, these aren't visible.
# DNS=46.227.67.134%wg-ovpns 192.165.9.158%wg-ovpns
# FallbackDNS=1.1.1.1 9.9.9.9
# '';
# OVPN CONFIG (https://www.ovpn.com):
# DOCS: https://nixos.wiki/wiki/WireGuard
# if you `systemctl restart wireguard-wg-ovpns`, make sure to also restart any other services in `NetworkNamespacePath = .../ovpns`.
# TODO: why not create the namespace as a seperate operation (nix config for that?)
networking.wireguard.enable = true;
networking.wireguard.interfaces.wg-ovpns = let
ip = "${pkgs.iproute2}/bin/ip";
in-ns = "${ip} netns exec ovpns";
iptables = "${pkgs.iptables}/bin/iptables";
veth-host-ip = "10.0.1.5";
veth-local-ip = "10.0.1.6";
vpn-ip = "185.157.162.178";
# DNS = 46.227.67.134, 192.165.9.158, 2a07:a880:4601:10f0:cd45::1, 2001:67c:750:1:cafe:cd45::1
vpn-dns = "46.227.67.134";
in {
privateKeyFile = config.sops.secrets.wg_ovpns_privkey.path;
# wg is active only in this namespace.
# run e.g. ip netns exec ovpns <some command like ping/curl/etc, it'll go through wg>
# sudo ip netns exec ovpns ping www.google.com
interfaceNamespace = "ovpns";
ips = [
"185.157.162.178/32"
];
peers = [
{
publicKey = "SkkEZDCBde22KTs/Hc7FWvDBfdOCQA4YtBEuC3n5KGs=";
endpoint = "185.157.162.10:9930";
# alternatively: use hostname, but that presents bootstrapping issues (e.g. if host net flakes)
# endpoint = "vpn36.prd.amsterdam.ovpn.com:9930";
allowedIPs = [ "0.0.0.0/0" ];
# nixOS says this is important for keeping NATs active
persistentKeepalive = 25;
# re-executes wg this often. docs hint that this might help wg notice DNS/hostname changes.
# so, maybe that helps if we specify endpoint as a domain name
# dynamicEndpointRefreshSeconds = 30;
# when refresh fails, try it again after this period instead.
# TODO: not avail until nixpkgs upgrade
# dynamicEndpointRefreshRestartSeconds = 5;
}
];
preSetup = "" + ''
${ip} netns add ovpns || echo "ovpns already exists"
'';
postShutdown = "" + ''
${in-ns} ip link del ovpns-veth-b || echo "couldn't delete ovpns-veth-b"
${ip} link del ovpns-veth-a || echo "couldn't delete ovpns-veth-a"
${ip} netns delete ovpns || echo "couldn't delete ovpns"
# restore rules/routes
${ip} rule del from ${veth-host-ip} lookup ovpns pref 50 || echo "couldn't delete init -> ovpns rule"
${ip} route del default via ${veth-local-ip} dev ovpns-veth-a proto kernel src ${veth-host-ip} metric 1002 table ovpns || echo "couldn't delete init -> ovpns route"
${ip} rule add from all lookup local pref 0
${ip} rule del from all lookup local pref 100
'';
postSetup = "" + ''
# DOCS:
# - some of this approach is described here: <https://josephmuia.ca/2018-05-16-net-namespaces-veth-nat/>
# - iptables primer: <https://danielmiessler.com/study/iptables/>
# create veth pair
${ip} link add ovpns-veth-a type veth peer name ovpns-veth-b
${ip} addr add ${veth-host-ip}/24 dev ovpns-veth-a
${ip} link set ovpns-veth-a up
# mv veth-b into the ovpns namespace
${ip} link set ovpns-veth-b netns ovpns
${in-ns} ip addr add ${veth-local-ip}/24 dev ovpns-veth-b
${in-ns} ip link set ovpns-veth-b up
# make it so traffic originating from the host side of the veth
# is sent over the veth no matter its destination.
${ip} rule add from ${veth-host-ip} lookup ovpns pref 50
# for traffic originating at the host veth to the WAN, use the veth as our gateway
# not sure if the metric 1002 matters.
${ip} route add default via ${veth-local-ip} dev ovpns-veth-a proto kernel src ${veth-host-ip} metric 1002 table ovpns
# give the default route lower priority
${ip} rule add from all lookup local pref 100
${ip} rule del from all lookup local pref 0
# bridge HTTP traffic:
# any external port-80 request sent to the VPN addr will be forwarded to the rootns.
# this exists so LetsEncrypt can procure a cert for the MX over http.
# TODO: we could use _acme_challence.mx.uninsane.org CNAME to avoid this forwarding
# - <https://community.letsencrypt.org/t/where-does-letsencrypt-resolve-dns-from/37607/8>
${in-ns} ${iptables} -A PREROUTING -t nat -p tcp --dport 80 -m iprange --dst-range ${vpn-ip} \
-j DNAT --to-destination ${veth-host-ip}:80
# 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}
${in-ns} ${iptables} -A PREROUTING -t nat -p tcp --dport 53 -m iprange --dst-range ${vpn-ip} \
-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.
${in-ns} ${iptables} -A OUTPUT -t nat -p udp --dport 53 -m iprange --dst-range 127.0.0.53 \
-j DNAT --to-destination ${vpn-dns}:53
'';
options = with lib; {
sane.ports.ports = mkOption {
# add the `visibleTo.ovpn` option
type = types.attrsOf portOpts;
};
};
# create a new routing table that we can use to proxy traffic out of the root namespace
# through the ovpns namespace, and to the WAN via VPN.
networking.iproute2.rttablesExtraConfig = ''
5 ovpns
'';
networking.iproute2.enable = true;
config = {
networking.domain = "uninsane.org";
sane.ports.openFirewall = true;
sane.ports.openUpnp = true;
# unless we add interface-specific settings for each VPN, we have to define nameservers globally.
# networking.nameservers = [
# "1.1.1.1"
# "9.9.9.9"
# ];
# services.resolved.extraConfig = ''
# # docs: `man resolved.conf`
# # DNS servers to use via the `wg-ovpns` interface.
# # i hope that from the root ns, these aren't visible.
# DNS=46.227.67.134%wg-ovpns 192.165.9.158%wg-ovpns
# FallbackDNS=1.1.1.1 9.9.9.9
# '';
# OVPN CONFIG (https://www.ovpn.com):
# DOCS: https://nixos.wiki/wiki/WireGuard
# if you `systemctl restart wireguard-wg-ovpns`, make sure to also restart any other services in `NetworkNamespacePath = .../ovpns`.
# TODO: why not create the namespace as a seperate operation (nix config for that?)
networking.wireguard.enable = true;
networking.wireguard.interfaces.wg-ovpns = let
ip = "${pkgs.iproute2}/bin/ip";
in-ns = "${ip} netns exec ovpns";
iptables = "${pkgs.iptables}/bin/iptables";
veth-host-ip = "10.0.1.5";
veth-local-ip = "10.0.1.6";
vpn-ip = "185.157.162.178";
# DNS = 46.227.67.134, 192.165.9.158, 2a07:a880:4601:10f0:cd45::1, 2001:67c:750:1:cafe:cd45::1
vpn-dns = "46.227.67.134";
bridgePort = port: proto: ''
${in-ns} ${iptables} -A PREROUTING -t nat -p ${proto} --dport ${port} -m iprange --dst-range ${vpn-ip} \
-j DNAT --to-destination ${veth-host-ip}
'';
bridgeStatements = lib.foldlAttrs
(acc: port: portCfg: acc ++ (builtins.map (bridgePort port) portCfg.protocol))
[]
config.sane.ports.ports;
in {
privateKeyFile = config.sops.secrets.wg_ovpns_privkey.path;
# wg is active only in this namespace.
# run e.g. ip netns exec ovpns <some command like ping/curl/etc, it'll go through wg>
# sudo ip netns exec ovpns ping www.google.com
interfaceNamespace = "ovpns";
ips = [
"185.157.162.178/32"
];
peers = [
{
publicKey = "SkkEZDCBde22KTs/Hc7FWvDBfdOCQA4YtBEuC3n5KGs=";
endpoint = "185.157.162.10:9930";
# alternatively: use hostname, but that presents bootstrapping issues (e.g. if host net flakes)
# endpoint = "vpn36.prd.amsterdam.ovpn.com:9930";
allowedIPs = [ "0.0.0.0/0" ];
# nixOS says this is important for keeping NATs active
persistentKeepalive = 25;
# re-executes wg this often. docs hint that this might help wg notice DNS/hostname changes.
# so, maybe that helps if we specify endpoint as a domain name
# dynamicEndpointRefreshSeconds = 30;
# when refresh fails, try it again after this period instead.
# TODO: not avail until nixpkgs upgrade
# dynamicEndpointRefreshRestartSeconds = 5;
}
];
preSetup = ''
${ip} netns add ovpns || (test -e /run/netns/ovpns && echo "ovpns already exists")
'';
postShutdown = ''
${in-ns} ip link del ovpns-veth-b || echo "couldn't delete ovpns-veth-b"
${ip} link del ovpns-veth-a || echo "couldn't delete ovpns-veth-a"
${ip} netns delete ovpns || echo "couldn't delete ovpns"
# restore rules/routes
${ip} rule del from ${veth-host-ip} lookup ovpns pref 50 || echo "couldn't delete init -> ovpns rule"
${ip} route del default via ${veth-local-ip} dev ovpns-veth-a proto kernel src ${veth-host-ip} metric 1002 table ovpns || echo "couldn't delete init -> ovpns route"
${ip} rule add from all lookup local pref 0
${ip} rule del from all lookup local pref 100
'';
postSetup = ''
# DOCS:
# - some of this approach is described here: <https://josephmuia.ca/2018-05-16-net-namespaces-veth-nat/>
# - iptables primer: <https://danielmiessler.com/study/iptables/>
# create veth pair
${ip} link add ovpns-veth-a type veth peer name ovpns-veth-b
${ip} addr add ${veth-host-ip}/24 dev ovpns-veth-a
${ip} link set ovpns-veth-a up
# mv veth-b into the ovpns namespace
${ip} link set ovpns-veth-b netns ovpns
${in-ns} ip addr add ${veth-local-ip}/24 dev ovpns-veth-b
${in-ns} ip link set ovpns-veth-b up
# make it so traffic originating from the host side of the veth
# is sent over the veth no matter its destination.
${ip} rule add from ${veth-host-ip} lookup ovpns pref 50
# for traffic originating at the host veth to the WAN, use the veth as our gateway
# not sure if the metric 1002 matters.
${ip} route add default via ${veth-local-ip} dev ovpns-veth-a proto kernel src ${veth-host-ip} metric 1002 table ovpns
# give the default route lower priority
${ip} rule add from all lookup local pref 100
${ip} rule del from all lookup local pref 0
# 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.
${in-ns} ${iptables} -A OUTPUT -t nat -p udp --dport 53 -m iprange --dst-range 127.0.0.53 \
-j DNAT --to-destination ${vpn-dns}:53
'' + (lib.concatStringsSep "\n" bridgeStatements);
};
# create a new routing table that we can use to proxy traffic out of the root namespace
# through the ovpns namespace, and to the WAN via VPN.
networking.iproute2.rttablesExtraConfig = ''
5 ovpns
'';
networking.iproute2.enable = true;
# HURRICANE ELECTRIC CONFIG:
# networking.sits = {
# hurricane = {
# remote = "216.218.226.238";
# local = "192.168.0.5";
# # local = "10.0.0.5";
# # remote = "10.0.0.1";
# # local = "10.0.0.22";
# dev = "eth0";
# ttl = 255;
# };
# };
# networking.interfaces."hurricane".ipv6 = {
# addresses = [
# # mx.uninsane.org (publically routed /64)
# {
# address = "2001:470:b:465::1";
# prefixLength = 128;
# }
# # client addr
# # {
# # address = "2001:470:a:466::2";
# # prefixLength = 64;
# # }
# ];
# routes = [
# {
# address = "::";
# prefixLength = 0;
# # via = "2001:470:a:466::1";
# }
# ];
# };
# HURRICANE ELECTRIC CONFIG:
# networking.sits = {
# hurricane = {
# remote = "216.218.226.238";
# local = "192.168.0.5";
# # local = "10.0.0.5";
# # remote = "10.0.0.1";
# # local = "10.0.0.22";
# dev = "eth0";
# ttl = 255;
# };
# };
# networking.interfaces."hurricane".ipv6 = {
# addresses = [
# # mx.uninsane.org (publically routed /64)
# {
# address = "2001:470:b:465::1";
# prefixLength = 128;
# }
# # client addr
# # {
# # address = "2001:470:a:466::2";
# # prefixLength = 64;
# # }
# ];
# routes = [
# {
# address = "::";
# prefixLength = 0;
# # via = "2001:470:a:466::1";
# }
# ];
# };
# # after configuration, we want the hurricane device to look like this:
# # hurricane: flags=209<UP,POINTOPOINT,RUNNING,NOARP> mtu 1480
# # inet6 2001:470:a:450::2 prefixlen 64 scopeid 0x0<global>
# # inet6 fe80::c0a8:16 prefixlen 64 scopeid 0x20<link>
# # sit txqueuelen 1000 (IPv6-in-IPv4)
# # test with:
# # curl --interface hurricane http://[2607:f8b0:400a:80b::2004]
# # ping 2607:f8b0:400a:80b::2004
# # after configuration, we want the hurricane device to look like this:
# # hurricane: flags=209<UP,POINTOPOINT,RUNNING,NOARP> mtu 1480
# # inet6 2001:470:a:450::2 prefixlen 64 scopeid 0x0<global>
# # inet6 fe80::c0a8:16 prefixlen 64 scopeid 0x20<link>
# # sit txqueuelen 1000 (IPv6-in-IPv4)
# # test with:
# # curl --interface hurricane http://[2607:f8b0:400a:80b::2004]
# # ping 2607:f8b0:400a:80b::2004
};
}

View File

@ -12,8 +12,8 @@ in
# > AttributeError: 'NoneType' object has no attribute 'query'
lib.mkIf false
{
sane.persist.sys.plaintext = [
{ inherit user group; mode = "0700"; directory = svc-dir; }
sane.persist.sys.byStore.plaintext = [
{ inherit user group; mode = "0700"; path = svc-dir; method = "bind"; }
];
services.calibre-web.enable = true;
@ -24,7 +24,7 @@ lib.mkIf false
# services.calibre-web.options.calibreLibrary = svc-dir;
services.nginx.virtualHosts."calibre.uninsane.org" = {
addSSL = true;
forceSSL = true;
enableACME = true;
locations."/" = {
proxyPass = "http://${ip}:${builtins.toString port}";

View File

@ -0,0 +1,144 @@
# TURN/STUN NAT traversal service
# commonly used to establish realtime calls with prosody, or possibly matrix/synapse
#
# - <https://github.com/coturn/coturn/>
# - `man turnserver`
# - config docs: <https://github.com/coturn/coturn/blob/master/examples/etc/turnserver.conf>
#
# N.B. during operation it's NORMAL to see "error 401".
# during session creation:
# - client sends Allocate request
# - server replies error 401, providing a realm and nonce
# - client uses realm + nonce + shared secret to construct an auth key & call Allocate again
# - server replies Allocate Success Response
# - source: <https://stackoverflow.com/a/66643135>
#
# N.B. this safest implementation routes all traffic THROUGH A VPN
# - that adds a lot of latency, but in practice turns out to be inconsequential.
# i guess ICE allows clients to prefer the other party's lower-latency server, in practice?
# - still, this is the "safe" implementation because STUN works with IP addresses instead of domain names:
# 1. client A queries the STUN server to determine its own IP address/port.
# 2. client A tells client B which IP address/port client A is visible on.
# 3. client B contacts that IP address/port
# this only works so long as the IP address/port which STUN server sees client A on is publicly routable.
# that is NOT the case when the STUN server and client A are on the same LAN
# even if client A contacts the STUN server via its WAN address with port reflection enabled.
# hence, there's no obvious way to put the STUN server on the same LAN as either client and expect the rest to work.
# - there an old version which *half worked*, which is:
# - run the turn server in the root namespace.
# - bind the turn server to the veth connecting it to the VPN namespace (so it sends outgoing traffic to the right place).
# - NAT the turn port range from VPN into root namespace (so it receives incomming traffic).
# - this approach would fail the prosody conversations.im check, but i didn't notice *obvious* call routing errors.
#
# debugging:
# - log messages like 'usage: realm=<turn.uninsane.org>, username=<1715915193>, rp=14, rb=1516, sp=8, sb=684'
# - rp = received packets
# - rb = received bytes
# - sp = sent packets
# - sb = sent bytes
{ lib, ... }:
let
# TURN port range (inclusive).
# default coturn behavior is to use the upper quarter of all ports. i.e. 49152 - 65535.
# i believe TURN allocations expire after either 5 or 10 minutes of inactivity.
turnPortLow = 49152; # 49152 = 0xc000
turnPortHigh = turnPortLow + 256;
turnPortRange = lib.range turnPortLow turnPortHigh;
in
{
# the port definitions are only needed if running in the root net namespace
# sane.ports.ports = lib.mkMerge ([
# {
# "3478" = {
# # this is the "control" port.
# # i.e. no client data is forwarded through it, but it's where clients request tunnels.
# protocol = [ "tcp" "udp" ];
# # visibleTo.lan = true;
# # visibleTo.wan = true;
# visibleTo.ovpn = true; # forward traffic from the VPN to the root NS
# description = "colin-stun-turn";
# };
# "5349" = {
# # the other port 3478 also supports TLS/DTLS, but presumably clients wanting TLS will default 5349
# protocol = [ "tcp" ];
# # visibleTo.lan = true;
# # visibleTo.wan = true;
# visibleTo.ovpn = true;
# description = "colin-stun-turn-over-tls";
# };
# }
# ] ++ (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;
# visibleTo.ovpn = true;
# description = "colin-turn-${builtins.toString count}-of-${builtins.toString numPorts}";
# };
# })
# turnPortRange
# ));
services.nginx.virtualHosts."turn.uninsane.org" = {
# allow ACME to procure a cert via nginx for this domain
enableACME = true;
};
sane.dns.zones."uninsane.org".inet = {
# CNAME."turn" = "servo.wan";
# CNAME."turn" = "ovpns";
# CNAME."turn" = "native";
# XXX: SRV records have to point to something with a A/AAAA record; no CNAMEs
A."turn" = "%AOVPNS%";
# A."turn" = "%AWAN%";
SRV."_stun._udp" = "5 50 3478 turn";
SRV."_stun._tcp" = "5 50 3478 turn";
SRV."_stuns._tcp" = "5 50 5349 turn";
SRV."_turn._udp" = "5 50 3478 turn";
SRV."_turn._tcp" = "5 50 3478 turn";
SRV."_turns._tcp" = "5 50 5349 turn";
};
sane.derived-secrets."/var/lib/coturn/shared_secret.bin" = {
encoding = "base64";
# TODO: make this not globally readable
acl.mode = "0644";
};
sane.fs."/var/lib/coturn/shared_secret.bin".wantedBeforeBy = [ "coturn.service" ];
# provide access to certs
users.users.turnserver.extraGroups = [ "nginx" ];
services.coturn.enable = true;
services.coturn.realm = "turn.uninsane.org";
services.coturn.cert = "/var/lib/acme/turn.uninsane.org/fullchain.pem";
services.coturn.pkey = "/var/lib/acme/turn.uninsane.org/key.pem";
#v disable to allow unauthenticated access (or set `services.coturn.no-auth = true`)
services.coturn.use-auth-secret = true;
services.coturn.static-auth-secret-file = "/var/lib/coturn/shared_secret.bin";
services.coturn.lt-cred-mech = true; #< XXX: use-auth-secret overrides lt-cred-mech
services.coturn.min-port = turnPortLow;
services.coturn.max-port = turnPortHigh;
# services.coturn.secure-stun = true;
services.coturn.extraConfig = lib.concatStringsSep "\n" [
"verbose"
# "Verbose" #< even MORE verbosity than "verbose" (it's TOO MUCH verbosity really)
"no-multicast-peers" # disables sending to IPv4 broadcast addresses (e.g. 224.0.0.0/3)
# "listening-ip=10.0.1.5" "external-ip=185.157.162.178" #< 2024/04/25: works, if running in root namespace
"listening-ip=185.157.162.178" "external-ip=185.157.162.178"
# old attempts:
# "external-ip=185.157.162.178/10.0.1.5"
# "listening-ip=10.78.79.51" # can be specified multiple times; omit for *
# "external-ip=97.113.128.229/10.78.79.51"
# "external-ip=97.113.128.229"
# "mobility" # "mobility with ICE (MICE) specs support" (?)
];
systemd.services.coturn.serviceConfig.NetworkNamespacePath = "/run/netns/ovpns";
}

View File

@ -0,0 +1,83 @@
# as of 2023/12/02: complete blockchain is 530 GiB (on-disk size may be larger)
#
# ports:
# - 8333: for node-to-node communications
# - 8332: rpc (client-to-node)
#
# rpc setup:
# - generate a password
# - use: <https://github.com/bitcoin/bitcoin/blob/master/share/rpcauth/rpcauth.py>
# (rpcauth.py is not included in the `'.#bitcoin'` package result)
# - `wget https://raw.githubusercontent.com/bitcoin/bitcoin/master/share/rpcauth/rpcauth.py`
# - `python ./rpcauth.py colin`
# - copy the hash here. it's SHA-256, so safe to be public.
# - add "rpcuser=colin" and "rpcpassword=<output>" to secrets/servo/bitcoin.conf (i.e. ~/.bitcoin/bitcoin.conf)
# - bitcoin.conf docs: <https://github.com/bitcoin/bitcoin/blob/master/doc/bitcoin-conf.md>
# - validate with `bitcoin-cli -netinfo`
{ config, lib, pkgs, sane-lib, ... }:
let
# wrapper to run bitcoind with the tor onion address as externalip (computed at runtime)
_bitcoindWithExternalIp = with pkgs; writeShellScriptBin "bitcoind" ''
externalip="$(cat /var/lib/tor/onion/bitcoind/hostname)"
exec ${bitcoind}/bin/bitcoind "-externalip=$externalip" "$@"
'';
# the package i provide to services.bitcoind ends up on system PATH, and used by other tools like clightning.
# therefore, even though services.bitcoind only needs `bitcoind` binary, provide all the other bitcoin-related binaries (notably `bitcoin-cli`) as well:
bitcoindWithExternalIp = with pkgs; symlinkJoin {
name = "bitcoind-with-external-ip";
paths = [ _bitcoindWithExternalIp bitcoind ];
};
in
{
sane.persist.sys.byStore.ext = [
{ user = "bitcoind-mainnet"; group = "bitcoind-mainnet"; path = "/var/lib/bitcoind-mainnet"; method = "bind"; }
];
# sane.ports.ports."8333" = {
# # this allows other nodes and clients to download blocks from me.
# protocol = [ "tcp" ];
# visibleTo.wan = true;
# description = "colin-bitcoin";
# };
services.tor.relay.onionServices.bitcoind = {
version = 3;
map = [{
# by default tor will route public tor port P to 127.0.0.1:P.
# so if this port is the same as clightning would natively use, then no further config is needed here.
# see: <https://2019.www.torproject.org/docs/tor-manual.html.en#HiddenServicePort>
port = 8333;
# target.port; target.addr; #< set if tor port != clightning port
}];
# allow "tor" group (i.e. bitcoind-mainnet) to read /var/lib/tor/onion/bitcoind/hostname
settings.HiddenServiceDirGroupReadable = true;
};
services.bitcoind.mainnet = {
enable = true;
package = bitcoindWithExternalIp;
rpc.users.colin = {
# see docs at top of file for how to generate this
passwordHMAC = "30002c05d82daa210550e17a182db3f3$6071444151281e1aa8a2729f75e3e2d224e9d7cac3974810dab60e7c28ffaae4";
};
extraConfig = ''
# don't load the wallet, and disable wallet RPC calls
disablewallet=1
# proxy all outbound traffic through Tor
proxy=127.0.0.1:9050
'';
};
users.users.bitcoind-mainnet.extraGroups = [ "tor" ];
systemd.services.bitcoind-mainnet.serviceConfig.RestartSec = "30s"; #< default is 0
sane.users.colin.fs.".bitcoin/bitcoin.conf" = sane-lib.fs.wantedSymlinkTo config.sops.secrets."bitcoin.conf".path;
sops.secrets."bitcoin.conf" = {
mode = "0600";
owner = "colin";
group = "users";
};
sane.programs.bitcoind.enableFor.user.colin = true; # for debugging/administration: `bitcoin-cli`
}

View File

@ -0,0 +1,782 @@
#!/usr/bin/env nix-shell
#!nix-shell -i python3 -p "python3.withPackages (ps: [ ps.pyln-client ])"
"""
clightning-sane: helper to perform common Lightning node admin operations:
- view channel balances
- rebalance channels
COMMON OPERATIONS:
- view channel balances: `clightning-sane status`
- rebalance channels to improve routability (without paying any fees): `clightning-sane autobalance`
FULL OPERATION:
- `clightning-sane status --full`
- `P$`: represents how many msats i've captured in fees from this channel.
- `COST`: rough measure of how much it's "costing" me to let my channel partner hold funds on his side of the channel.
this is based on the notion that i only capture fees from outbound transactions, and so the channel partner holding all liquidity means i can't capture fees on that liquidity.
"""
# pyln-client docs: <https://github.com/ElementsProject/lightning/tree/master/contrib/pyln-client>
# terminology:
# - "scid": "Short Channel ID", e.g. 123456x7890x0
# from this id, we can locate the actual channel, its peers, and its parameters
import argparse
import logging
import math
import sys
import time
from concurrent.futures import ThreadPoolExecutor
from dataclasses import dataclass
from enum import Enum
from pyln.client import LightningRpc, Millisatoshi, RpcError
logger = logging.getLogger(__name__)
RPC_FILE = "/var/lib/clightning/bitcoin/lightning-rpc"
# CLTV (HLTC delta) of the final hop
# set this too low and you might get inadvertent channel closures (?)
CLTV = 18
# for every sequentally failed transaction, delay this much before trying again.
# note that the initial route building process can involve 10-20 "transient" failures, as it discovers dead channels.
TX_FAIL_BACKOFF = 0.8
MAX_SEQUENTIAL_JOB_FAILURES = 200
class LoopError(Enum):
""" error when trying to loop sats, or when unable to calculate a route for the loop """
TRANSIENT = "TRANSIENT" # try again, we'll maybe find a different route
NO_ROUTE = "NO_ROUTE"
class RouteError(Enum):
""" error when calculated a route """
HAS_BASE_FEE = "HAS_BASE_FEE"
NO_ROUTE = "NO_ROUTE"
class Metrics:
looped_msat: int = 0
sendpay_fail: int = 0
sendpay_succeed: int = 0
own_bad_channel: int = 0
no_route: int = 0
in_ch_unsatisfiable: int = 0
def __repr__(self) -> str:
return f"looped:{self.looped_msat}, tx:{self.sendpay_succeed}, tx_fail:{self.sendpay_fail}, own_bad_ch:{self.own_bad_channel}, no_route:{self.no_route}, in_ch_restricted:{self.in_ch_unsatisfiable}"
@dataclass
class TxBounds:
max_msat: int
min_msat: int = 0
def __repr__(self) -> str:
return f"TxBounds({self.min_msat} <= msat <= {self.max_msat})"
def is_satisfiable(self) -> bool:
return self.min_msat <= self.max_msat
def raise_max_to_be_satisfiable(self) -> "Self":
if self.max_msat < self.min_msat:
logger.debug(f"raising max_msat to be consistent: {self.max_msat} -> {self.min_msat}")
return TxBounds(self.min_msat, self.min_msat)
return TxBounds(min_msat=self.min_msat, max_msat=self.max_msat)
def intersect(self, other: "TxBounds") -> "Self":
return TxBounds(
min_msat=max(self.min_msat, other.min_msat),
max_msat=min(self.max_msat, other.max_msat),
)
def restrict_to_htlc(self, ch: "LocalChannel", why: str = "") -> "Self":
"""
apply min/max HTLC size restrictions of the given channel.
"""
if ch:
why = why or ch.directed_scid_to_me
if why: why = f"{why}: "
new_min, new_max = self.min_msat, self.max_msat
if ch.htlc_minimum_to_me > self.min_msat:
new_min = ch.htlc_minimum_to_me
logger.debug(f"{why}raising min_msat due to HTLC requirements: {self.min_msat} -> {new_min}")
if ch.htlc_maximum_to_me < self.max_msat:
new_max = ch.htlc_maximum_to_me
logger.debug(f"{why}lowering max_msat due to HTLC requirements: {self.max_msat} -> {new_max}")
return TxBounds(min_msat=new_min, max_msat=new_max)
def restrict_to_zero_fees(self, ch: "LocalChannel"=None, base: int=0, ppm: int=0, why:str = "") -> "Self":
"""
restrict tx size such that PPM fees are zero.
if the channel has a base fee, then `max_msat` is forced to 0.
"""
if ch:
why = why or ch.directed_scid_to_me
self = self.restrict_to_zero_fees(base=ch.to_me["base_fee_millisatoshi"], ppm=ch.to_me["fee_per_millionth"], why=why)
if why: why = f"{why}: "
new_max = self.max_msat
ppm_max = math.ceil(1000000 / ppm) - 1 if ppm != 0 else new_max
if ppm_max < new_max:
logger.debug(f"{why}decreasing max_msat due to fee ppm: {new_max} -> {ppm_max}")
new_max = ppm_max
if base != 0:
logger.debug(f"{why}free route impossible: channel has base fees")
new_max = 0
return TxBounds(min_msat=self.min_msat, max_msat=new_max)
class LocalChannel:
def __init__(self, channels: list, rpc: "RpcHelper"):
assert 0 < len(channels) <= 2, f"unexpected: channel count: {channels}"
out = None
in_ = None
for c in channels:
if c["source"] == rpc.self_id:
assert out is None, f"unexpected: multiple channels from self: {channels}"
out = c
if c["destination"] == rpc.self_id:
assert in_ is None, f"unexpected: multiple channels to self: {channels}"
in_ = c
# assert out is not None, f"no channel from self: {channels}"
# assert in_ is not None, f"no channel to self: {channels}"
if out and in_:
assert out["destination"] == in_["source"], f"channel peers are asymmetric?! {channels}"
assert out["short_channel_id"] == in_["short_channel_id"], f"channel ids differ?! {channels}"
self.from_me = out
self.to_me = in_
self.remote_node = rpc.node(self.remote_peer)
self.peer_ch = rpc.peerchannel(self.scid, self.remote_peer)
self.forwards_from_me = rpc.rpc.listforwards(out_channel=self.scid, status="settled")["forwards"]
def __repr__(self) -> str:
return self.to_str(with_scid=True, with_bal_ratio=True, with_cost=False, with_ppm_theirs=False)
def to_str(
self,
with_peer_id:bool = False,
with_scid:bool = False,
with_bal_msat:bool = False,
with_bal_ratio:bool = False,
with_cost:bool = False,
with_ppm_theirs:bool = False,
with_ppm_mine:bool = False,
with_profits:bool = True,
with_payments:bool = False,
) -> str:
base_flag = "*" if not self.online or self.base_fee_to_me != 0 else ""
alias = f"({self.remote_alias}){base_flag}"
peerid = f" {self.remote_peer}" if with_peer_id else ""
scid = f" scid:{self.scid:>13}" if with_scid else ""
bal = f" S:{int(self.sendable):11}/R:{int(self.receivable):11}" if with_bal_msat else ""
ratio = f" MINE:{(100*self.send_ratio):>8.4f}%" if with_bal_ratio else ""
payments = f" OUT:{int(self.out_fulfilled_msat):>11}/IN:{int(self.in_fulfilled_msat):>11}" if with_payments else ""
profits = f" P$:{int(self.fees_lifetime_mine):>8}" if with_profits else ""
cost = f" COST:{self.opportunity_cost_lent:>8}" if with_cost else ""
ppm_theirs = self.ppm_to_me if self.to_me else "N/A"
ppm_theirs = f" PPM_THEIRS:{ppm_theirs:>6}" if with_ppm_theirs else ""
ppm_mine = self.ppm_from_me if self.from_me else "N/A"
ppm_mine = f" PPM_MINE:{ppm_mine:>6}" if with_ppm_mine else ""
return f"channel{alias:30}{peerid}{scid}{bal}{ratio}{payments}{profits}{cost}{ppm_theirs}{ppm_mine}"
@property
def online(self) -> bool:
return self.from_me and self.to_me
@property
def remote_peer(self) -> str:
if self.from_me:
return self.from_me["destination"]
else:
return self.to_me["source"]
@property
def remote_alias(self) -> str:
return self.remote_node["alias"]
@property
def scid(self) -> str:
if self.from_me:
return self.from_me["short_channel_id"]
else:
return self.to_me["short_channel_id"]
@property
def htlc_minimum_to_me(self) -> Millisatoshi:
return self.to_me["htlc_minimum_msat"]
@property
def htlc_minimum_from_me(self) -> Millisatoshi:
return self.from_me["htlc_minimum_msat"]
@property
def htlc_minimum(self) -> Millisatoshi:
return max(self.htlc_minimum_to_me, self.htlc_minimum_from_me)
@property
def htlc_maximum_to_me(self) -> Millisatoshi:
return self.to_me["htlc_maximum_msat"]
@property
def htlc_maximum_from_me(self) -> Millisatoshi:
return self.from_me["htlc_maximum_msat"]
@property
def htlc_maximum(self) -> Millisatoshi:
return min(self.htlc_maximum_to_me, self.htlc_maximum_from_me)
@property
def direction_to_me(self) -> int:
return self.to_me["direction"]
@property
def direction_from_me(self) -> int:
return self.from_me["direction"]
@property
def directed_scid_to_me(self) -> str:
return f"{self.scid}/{self.direction_to_me}"
@property
def directed_scid_from_me(self) -> str:
return f"{self.scid}/{self.direction_from_me}"
@property
def delay_them(self) -> str:
return self.to_me["delay"]
@property
def delay_me(self) -> str:
return self.from_me["delay"]
@property
def ppm_to_me(self) -> int:
return self.to_me["fee_per_millionth"]
@property
def ppm_from_me(self) -> int:
return self.from_me["fee_per_millionth"]
# return self.peer_ch["fee_proportional_millionths"]
@property
def base_fee_to_me(self) -> int:
return self.to_me["base_fee_millisatoshi"]
@property
def receivable(self) -> int:
return self.peer_ch["receivable_msat"]
@property
def sendable(self) -> int:
return self.peer_ch["spendable_msat"]
@property
def in_fulfilled_msat(self) -> Millisatoshi:
return self.peer_ch["in_fulfilled_msat"]
@property
def out_fulfilled_msat(self) -> Millisatoshi:
return self.peer_ch["out_fulfilled_msat"]
@property
def fees_lifetime_mine(self) -> Millisatoshi:
return sum(fwd["fee_msat"] for fwd in self.forwards_from_me)
@property
def send_ratio(self) -> float:
cap = self.receivable + self.sendable
return self.sendable / cap
@property
def opportunity_cost_lent(self) -> int:
""" how much msat did we gain by pushing their channel to its current balance? """
return int(self.receivable * self.ppm_from_me / 1000000)
class RpcHelper:
def __init__(self, rpc: LightningRpc):
self.rpc = rpc
self.self_id = rpc.getinfo()["id"]
def localchannel(self, scid: str) -> LocalChannel:
listchan = self.rpc.listchannels(scid)
# this assertion would probably indicate a typo in the scid
assert listchan and listchan.get("channels", []) != [], f"bad listchannels for {scid}: {listchan}"
return LocalChannel(listchan["channels"], self)
def node(self, id: str) -> dict:
nodes = self.rpc.listnodes(id)["nodes"]
assert len(nodes) == 1, f"unexpected: multiple nodes for {id}: {nodes}"
return nodes[0]
def peerchannel(self, scid: str, peer_id: str) -> dict:
peerchannels = self.rpc.listpeerchannels(peer_id)["channels"]
channels = [c for c in peerchannels if c["short_channel_id"] == scid]
assert len(channels) == 1, f"expected exactly 1 channel, got: {channels}"
return channels[0]
def try_getroute(self, *args, **kwargs) -> dict | None:
""" wrapper for getroute which returns None instead of error if no route exists """
try:
route = self.rpc.getroute(*args, **kwargs)
except RpcError as e:
logger.debug(f"rpc failed: {e}")
return None
else:
route = route["route"]
if route == []: return None
return route
class LoopRouter:
def __init__(self, rpc: RpcHelper, metrics: Metrics = None):
self.rpc = rpc
self.metrics = metrics or Metrics()
self.bad_channels = [] # list of directed scid
self.nonzero_base_channels = [] # list of directed scid
def drop_caches(self) -> None:
logger.info("LoopRouter.drop_caches()")
self.bad_channels = []
def _get_directed_scid(self, scid: str, direction: int) -> dict:
channels = self.rpc.rpc.listchannels(scid)["channels"]
channels = [c for c in channels if c["direction"] == direction]
assert len(channels) == 1, f"expected exactly 1 channel: {channels}"
return channels[0]
def loop_once(self, out_scid: str, in_scid: str, bounds: TxBounds) -> LoopError|int:
out_ch = self.rpc.localchannel(out_scid)
in_ch = self.rpc.localchannel(in_scid)
if out_ch.directed_scid_from_me in self.bad_channels or in_ch.directed_scid_to_me in self.bad_channels:
logger.info(f"loop {out_scid} -> {in_scid} failed in our own channel")
self.metrics.own_bad_channel += 1
return LoopError.TRANSIENT
# bounds = bounds.restrict_to_htlc(out_ch) # htlc bounds seem to be enforced only in the outward direction
bounds = bounds.restrict_to_htlc(in_ch)
bounds = bounds.restrict_to_zero_fees(in_ch)
if not bounds.is_satisfiable():
self.metrics.in_ch_unsatisfiable += 1
return LoopError.NO_ROUTE
logger.debug(f"route with bounds {bounds}")
route = self.route(out_ch, in_ch, bounds)
logger.debug(f"route: {route}")
if route == RouteError.NO_ROUTE:
self.metrics.no_route += 1
return LoopError.NO_ROUTE
elif route == RouteError.HAS_BASE_FEE:
# try again with a different route
return LoopError.TRANSIENT
amount_msat = route[0]["amount_msat"]
invoice_id = f"loop-{time.time():.6f}".replace(".", "_")
invoice_desc = f"bal {out_scid}:{in_scid}"
invoice = self.rpc.rpc.invoice("any", invoice_id, invoice_desc)
logger.debug(f"invoice: {invoice}")
payment = self.rpc.rpc.sendpay(route, invoice["payment_hash"], invoice_id, amount_msat, invoice["bolt11"], invoice["payment_secret"])
logger.debug(f"sent: {payment}")
try:
wait = self.rpc.rpc.waitsendpay(invoice["payment_hash"])
logger.debug(f"result: {wait}")
except RpcError as e:
self.metrics.sendpay_fail += 1
err_data = e.error["data"]
err_scid, err_dir = err_data["erring_channel"], err_data["erring_direction"]
err_directed_scid = f"{err_scid}/{err_dir}"
logger.debug(f"ch failed, adding to excludes: {err_directed_scid}; {e.error}")
self.bad_channels.append(err_directed_scid)
return LoopError.TRANSIENT
else:
self.metrics.sendpay_succeed += 1
self.metrics.looped_msat += int(amount_msat)
return int(amount_msat)
def route(self, out_ch: LocalChannel, in_ch: LocalChannel, bounds: TxBounds) -> list[dict] | RouteError:
exclude = [
# ensure the payment doesn't cross either channel in reverse.
# note that this doesn't preclude it from taking additional trips through self, with other peers.
# out_ch.directed_scid_to_me,
# in_ch.directed_scid_from_me,
# alternatively, never route through self. this avoids a class of logic error, like what to do with fees i charge "myself".
self.rpc.self_id
] + self.bad_channels + self.nonzero_base_channels
out_peer = out_ch.remote_peer
in_peer = in_ch.remote_peer
route_or_bounds = bounds
while isinstance(route_or_bounds, TxBounds):
old_bounds = route_or_bounds
route_or_bounds = self._find_partial_route(out_peer, in_peer, old_bounds, exclude=exclude)
if route_or_bounds == old_bounds:
return RouteError.NO_ROUTE
if isinstance(route_or_bounds, RouteError):
return route_or_bounds
route = self._add_route_endpoints(route_or_bounds, out_ch, in_ch)
return route
def _find_partial_route(self, out_peer: str, in_peer: str, bounds: TxBounds, exclude: list[str]=[]) -> list[dict] | RouteError | TxBounds:
route = self.rpc.try_getroute(in_peer, amount_msat=bounds.max_msat, riskfactor=0, fromid=out_peer, exclude=exclude, cltv=CLTV)
if route is None:
logger.debug(f"no route for {bounds.max_msat}msat {out_peer} -> {in_peer}")
return RouteError.NO_ROUTE
send_msat = route[0]["amount_msat"]
if send_msat != Millisatoshi(bounds.max_msat):
logger.debug(f"found route with non-zero fee: {send_msat} -> {bounds.max_msat}. {route}")
error = None
for hop in route:
hop_scid = hop["channel"]
hop_dir = hop["direction"]
directed_scid = f"{hop_scid}/{hop_dir}"
ch = self._get_directed_scid(hop_scid, hop_dir)
if ch["base_fee_millisatoshi"] != 0:
self.nonzero_base_channels.append(directed_scid)
error = RouteError.HAS_BASE_FEE
bounds = bounds.restrict_to_zero_fees(ppm=ch["fee_per_millionth"], why=directed_scid)
return bounds.raise_max_to_be_satisfiable() if error is None else error
return route
def _add_route_endpoints(self, route, out_ch: LocalChannel, in_ch: LocalChannel):
inbound_hop = dict(
id=self.rpc.self_id,
channel=in_ch.scid,
direction=in_ch.direction_to_me,
amount_msat=route[-1]["amount_msat"],
delay=route[-1]["delay"],
style="tlv",
)
route = self._add_route_delay(route, in_ch.delay_them) + [ inbound_hop ]
outbound_hop = dict(
id=out_ch.remote_peer,
channel=out_ch.scid,
direction=out_ch.direction_from_me,
amount_msat=route[0]["amount_msat"],
delay=route[0]["delay"] + out_ch.delay_them,
style="tlv",
)
route = [ outbound_hop ] + route
return route
def _add_route_delay(self, route: list[dict], delay: int) -> list[dict]:
return [ dict(hop, delay=hop["delay"] + delay) for hop in route ]
@dataclass
class LoopJob:
out: str # scid
in_: str # scid
amount: int
@dataclass
class LoopJobIdle:
sec: int = 10
class LoopJobDone(Enum):
COMPLETED = "COMPLETED"
ABORTED = "ABORTED"
class AbstractLoopRunner:
def __init__(self, looper: LoopRouter, bounds: TxBounds, parallelism: int):
self.looper = looper
self.bounds = bounds
self.parallelism = parallelism
self.bounds_map = {} # map (out:str, in_:str) -> TxBounds. it's a cache so we don't have to try 10 routes every time.
def pop_job(self) -> LoopJob | LoopJobIdle | LoopJobDone:
raise NotImplemented # abstract method
def finished_job(self, job: LoopJob, progress: int|LoopError) -> None:
raise NotImplemented # abstract method
def run_to_completion(self, exit_on_any_completed:bool = False) -> None:
self.exiting = False
self.exit_on_any_completed = exit_on_any_completed
if self.parallelism == 1:
# run inline to aid debugging
self._worker_thread()
else:
with ThreadPoolExecutor(max_workers=self.parallelism) as executor:
_ = list(executor.map(lambda _i: self._try_invoke(self._worker_thread), range(self.parallelism)))
def drop_caches(self) -> None:
logger.info("AbstractLoopRunner.drop_caches()")
self.looper.drop_caches()
self.bounds_map = {}
def _try_invoke(self, f, *args) -> None:
"""
try to invoke `f` with the provided `args`, and log if it fails.
this overcomes the issue that background tasks which fail via Exception otherwise do so silently.
"""
try:
f(*args)
except Exception as e:
logger.error(f"task failed: {e}")
def _worker_thread(self) -> None:
while not self.exiting:
job = self.pop_job()
logger.debug(f"popped job: {job}")
if isinstance(job, LoopJobDone):
return self._worker_finished(job)
if isinstance(job, LoopJobIdle):
logger.debug(f"idling for {job.sec}")
time.sleep(job.sec)
continue
result = self._execute_job(job)
logger.debug(f"finishing job {job} with {result}")
self.finished_job(job, result)
def _execute_job(self, job: LoopJob) -> LoopError|int:
bounds = self.bounds_map.get((job.out, job.in_), self.bounds)
bounds = bounds.intersect(TxBounds(max_msat=job.amount))
if not bounds.is_satisfiable():
logger.debug(f"TxBounds for job are unsatisfiable; skipping: {bounds} {job}")
return LoopError.NO_ROUTE
amt_looped = self.looper.loop_once(job.out, job.in_, bounds)
if amt_looped in (0, LoopError.NO_ROUTE, LoopError.TRANSIENT):
return amt_looped
logger.info(f"looped {amt_looped} from {job.out} -> {job.in_}")
bounds = bounds.intersect(TxBounds(max_msat=amt_looped))
self.bounds_map[(job.out, job.in_)] = bounds
return amt_looped
def _worker_finished(self, job: LoopJobDone) -> None:
if job == LoopJobDone.COMPLETED and self.exit_on_any_completed:
logger.debug(f"worker completed -> exiting pool")
self.exiting = True
class LoopPairState:
# TODO: use this in MultiLoopBalancer, or stop shoving state in here and put it on LoopBalancer instead.
def __init__(self, out: str, in_: str, amount: int):
self.out = out
self.in_ = in_
self.amount_target = amount
self.amount_looped = 0
self.amount_outstanding = 0
self.tx_fail_count = 0
self.route_fail_count = 0
self.last_job_start_time = None
self.failed_tx_throttler = 0 # increase by one every time we fail, decreases more gradually, when we succeed
class LoopBalancer(AbstractLoopRunner):
def __init__(self, out: str, in_: str, amount: int, looper: LoopRouter, bounds: TxBounds, parallelism: int=1):
super().__init__(looper, bounds, parallelism)
self.state = LoopPairState(out, in_, amount)
def pop_job(self) -> LoopJob | LoopJobIdle | LoopJobDone:
if self.state.tx_fail_count + 10*self.state.route_fail_count >= MAX_SEQUENTIAL_JOB_FAILURES:
logger.info(f"giving up ({self.state.out} -> {self.state.in_}): {self.state.tx_fail_count} tx failures, {self.state.route_fail_count} route failures")
return LoopJobDone.ABORTED
if self.state.tx_fail_count + self.state.route_fail_count > 0:
# N.B.: last_job_start_time is guaranteed to have been set by now
idle_until = self.state.last_job_start_time + TX_FAIL_BACKOFF*self.state.failed_tx_throttler
idle_for = idle_until - time.time()
if self.state.amount_outstanding != 0 or idle_for > 0:
# when we hit transient failures, restrict to just one job in flight at a time.
# this is aimed for the initial route building, where multiple jobs in flight is just useless,
# but it's not a bad idea for network blips, etc, either.
logger.info(f"throttling ({self.state.out} -> {self.state.in_}) for {idle_for:.0f}: {self.state.tx_fail_count} tx failures, {self.state.route_fail_count} route failures")
return LoopJobIdle(idle_for) if idle_for > 0 else LoopJobIdle()
amount_avail = self.state.amount_target - self.state.amount_looped - self.state.amount_outstanding
if amount_avail < self.bounds.min_msat:
if self.state.amount_outstanding == 0: return LoopJobDone.COMPLETED
return LoopJobIdle() # sending out another job would risk over-transferring
amount_this_job = min(amount_avail, self.bounds.max_msat)
self.state.amount_outstanding += amount_this_job
self.state.last_job_start_time = time.time()
return LoopJob(out=self.state.out, in_=self.state.in_, amount=amount_this_job)
def finished_job(self, job: LoopJob, progress: int) -> None:
self.state.amount_outstanding -= job.amount
if progress == LoopError.NO_ROUTE:
self.state.route_fail_count += 1
self.state.failed_tx_throttler += 10
elif progress == LoopError.TRANSIENT:
self.state.tx_fail_count += 1
self.state.failed_tx_throttler += 1
else:
self.state.amount_looped += progress
self.state.tx_fail_count = 0
self.state.route_fail_count = 0
self.state.failed_tx_throttler = max(0, self.state.failed_tx_throttler - 0.2)
logger.info(f"loop progressed ({job.out} -> {job.in_}) {progress}: {self.state.amount_looped} of {self.state.amount_target}")
class MultiLoopBalancer(AbstractLoopRunner):
"""
multiplexes jobs between multiple LoopBalancers.
note that the child LoopBalancers don't actually execute the jobs -- just produce them.
"""
def __init__(self, looper: LoopRouter, bounds: TxBounds, parallelism: int=1):
super().__init__(looper, bounds, parallelism)
self.loops = []
# job_index: increments on every job so we can grab jobs evenly from each LoopBalancer.
# in that event that producers are idling, it can actually increment more than once,
# so don't take this too literally
self.job_index = 0
def add_loop(self, out: LocalChannel, in_: LocalChannel, amount: int) -> None:
"""
start looping sats from out -> in_
"""
assert not any(l.state.out == out.scid and l.state.in_ == in_.scid for l in self.loops), f"tried to add duplicate loops from {out} -> {in_}"
logger.info(f"looping from ({out}) to ({in_})")
self.loops.append(LoopBalancer(out.scid, in_.scid, amount, self.looper, self.bounds, self.parallelism))
def pop_job(self) -> LoopJob | LoopJobIdle | LoopJobDone:
# N.B.: this can be called in parallel, so try to be consistent enough to not crash
idle_job = None
abort_job = None
for i, _ in enumerate(self.loops):
loop = self.loops[(self.job_index + i) % len(self.loops)]
self.job_index += 1
job = loop.pop_job()
if isinstance(job, LoopJob):
return job
if isinstance(job, LoopJobIdle):
idle_job = LoopJobIdle(min(job.sec, idle_job.sec)) if idle_job is not None else job
if job == LoopJobDone.ABORTED:
abort_job = job
# either there's a task to idle, or we have to terminate.
# if terminating, terminate ABORTED if any job aborted, else COMPLETED
if idle_job is not None: return idle_job
if abort_job is not None: return abort_job
return LoopJobDone.COMPLETED
def finished_job(self, job: LoopJob, progress: int) -> None:
# this assumes (enforced externally) that we have only one loop for a given out/in_ pair
for l in self.loops:
if l.state.out == job.out and l.state.in_ == job.in_:
l.finished_job(job, progress)
logger.info(f"total: {self.looper.metrics}")
def balance_loop(rpc: RpcHelper, out: str, in_: str, amount_msat: int, min_msat: int, max_msat: int, parallelism: int):
looper = LoopRouter(rpc)
bounds = TxBounds(min_msat=min_msat, max_msat=max_msat)
balancer = LoopBalancer(out, in_, amount_msat, looper, bounds, parallelism)
balancer.run_to_completion()
def autobalance_once(rpc: RpcHelper, metrics: Metrics, bounds: TxBounds, parallelism: int) -> bool:
"""
autobalances all channels.
returns True if channels are balanced (or as balanced as can be); False if in need of further balancing
"""
looper = LoopRouter(rpc, metrics)
balancer = MultiLoopBalancer(looper, bounds, parallelism)
channels = []
for peerch in rpc.rpc.listpeerchannels()["channels"]:
try:
channels.append(rpc.localchannel(peerch["short_channel_id"]))
except:
logger.info(f"NO CHANNELS for {peerch['peer_id']}")
channels = [ch for ch in channels if ch.online and ch.base_fee_to_me == 0]
give_to = [ ch for ch in channels if ch.send_ratio > 0.95 ]
take_from = [ ch for ch in channels if ch.send_ratio < 0.20 ]
if give_to == [] and take_from == []:
return True
for to in give_to:
for from_ in take_from:
balancer.add_loop(to, from_, 10000000)
balancer.run_to_completion(exit_on_any_completed=True)
return False
def autobalance(rpc: RpcHelper, min_msat: int, max_msat: int, parallelism: int):
bounds = TxBounds(min_msat=min_msat, max_msat=max_msat)
metrics = Metrics()
while not autobalance_once(rpc, metrics, bounds, parallelism):
pass
def show_status(rpc: RpcHelper, full: bool=False):
"""
show a table of channel balances between peers.
"""
for peerch in rpc.rpc.listpeerchannels()["channels"]:
try:
ch = rpc.localchannel(peerch["short_channel_id"])
except:
print(f"{peerch['peer_id']} scid:{peerch['short_channel_id']} state:{peerch['state']} NO CHANNELS")
else:
print(ch.to_str(with_scid=True, with_bal_ratio=True, with_payments=True, with_cost=full, with_ppm_theirs=True, with_ppm_mine=True, with_peer_id=full))
def main():
logging.basicConfig()
logger.setLevel(logging.INFO)
parser = argparse.ArgumentParser(description=__doc__)
parser.add_argument("--verbose", action="store_true", help="more logging")
parser.add_argument("--min-msat", default="999", help="min transaction size")
parser.add_argument("--max-msat", default="1000000", help="max transaction size")
parser.add_argument("--jobs", default="1", help="how many HTLCs to keep in-flight at once")
subparsers = parser.add_subparsers(help="action")
status_parser = subparsers.add_parser("status")
status_parser.set_defaults(action="status")
status_parser.add_argument("--full", action="store_true", help="more info per channel")
loop_parser = subparsers.add_parser("loop")
loop_parser.set_defaults(action="loop")
loop_parser.add_argument("out", help="peer id to send tx through")
loop_parser.add_argument("in_", help="peer id to receive tx through")
loop_parser.add_argument("amount", help="total amount of msat to loop")
autobal_parser = subparsers.add_parser("autobalance")
autobal_parser.set_defaults(action="autobalance")
args = parser.parse_args()
if args.verbose:
logger.setLevel(logging.DEBUG)
rpc = RpcHelper(LightningRpc(RPC_FILE))
if args.action == "status":
show_status(rpc, full=args.full)
if args.action == "loop":
balance_loop(rpc, out=args.out, in_=args.in_, amount_msat=int(args.amount), min_msat=int(args.min_msat), max_msat=int(args.max_msat), parallelism=int(args.jobs))
if args.action == "autobalance":
autobalance(rpc, min_msat=int(args.min_msat), max_msat=int(args.max_msat), parallelism=int(args.jobs))
if __name__ == '__main__':
main()

View File

@ -0,0 +1,135 @@
# clightning is an implementation of Bitcoin's Lightning Network.
# as such, this assumes that `services.bitcoin` is enabled.
# docs:
# - tor clightning config: <https://docs.corelightning.org/docs/tor>
# - `lightning-cli` and subcommands: <https://docs.corelightning.org/reference/lightning-cli>
# - `man lightningd-config`
#
# management/setup/use:
# - guide: <https://github.com/ElementsProject/lightning>
#
# debugging:
# - `lightning-cli getlog debug`
# - `lightning-cli listpays` -> show payments this node sent
# - `lightning-cli listinvoices` -> show payments this node received
#
# first, acquire peers:
# - `lightning-cli connect id@host`
# where `id` is the node's pubkey, and `host` is perhaps an ip:port tuple, or a hash.onion:port tuple.
# for testing, choose any node listed on <https://1ml.com>
# - `lightning-cli listpeers`
# should show the new peer, with `connected: true`
#
# then, fund the clightning wallet
# - `lightning-cli newaddr`
#
# then, open channels
# - `lightning-cli connect ...`
# - `lightning-cli fundchannel <node_id> <amount_in_satoshis>`
#
# who to federate with?
# - a lot of the larger nodes allow hands-free channel creation
# - either inbound or outbound, sometimes paid
# - find nodes on:
# - <https://terminal.lightning.engineering/>
# - <https://1ml.com>
# - tor nodes: <https://1ml.com/node?order=capacity&iponionservice=true>
# - <https://lightningnetwork.plus>
# - <https://mempool.space/lightning>
# - <https://amboss.space>
# - a few tor-capable nodes which allow channel creation:
# - <https://c-otto.de/>
# - <https://cyberdyne.sh/>
# - <https://yalls.org/about/>
# - <https://coincept.com/>
# - more resources: <https://www.lopp.net/lightning-information.html>
# - node routability: https://hashxp.org/lightning/node/<id>
# - especially, acquire inbound liquidity via lightningnetwork.plus's swap feature
# - most of the opportunities are gated behind a minimum connection or capacity requirement
#
# tune payment parameters
# - `lightning-cli setchannel <id> [feebase] [feeppm] [htlcmin] [htlcmax] [enforcedelay] [ignorefeelimits]`
# - e.g. `lightning-cli setchannel all 0 10`
# - it's suggested that feebase=0 simplifies routing.
#
# teardown:
# - `lightning-cli withdraw <bc1... dest addr> <amount in satoshis> [feerate]`
#
# sanity:
# - `lightning-cli listfunds`
#
# to receive a payment (do as `clightning` user):
# - `lightning-cli invoice <amount in millisatoshi> <label> <description>`
# - specify amount as `any` if undetermined
# - then give the resulting bolt11 URI to the payer
# to send a payment:
# - `lightning-cli pay <bolt11 URI>`
# - or `lightning-cli pay <bolt11 URI> [amount_msat] [label] [riskfactor] [maxfeepercent] ...`
# - amount_msat must be "null" if the bolt11 URI specifies a value
# - riskfactor defaults to 10
# - maxfeepercent defaults to 0.5
# - label is a human-friendly label for my records
{ config, pkgs, ... }:
{
sane.persist.sys.byStore.ext = [
{ user = "clightning"; group = "clightning"; mode = "0710"; path = "/var/lib/clightning"; method = "bind"; }
];
# `lightning-cli` finds its RPC file via `~/.lightning/bitcoin/lightning-rpc`, to message the daemon
sane.user.fs.".lightning".symlink.target = "/var/lib/clightning";
# see bitcoin.nix for how to generate this
services.bitcoind.mainnet.rpc.users.clightning.passwordHMAC =
"befcb82d9821049164db5217beb85439$2c31ac7db3124612e43893ae13b9527dbe464ab2d992e814602e7cb07dc28985";
sane.services.clightning.enable = true;
sane.services.clightning.proxy = "127.0.0.1:9050"; # proxy outgoing traffic through tor
# sane.services.clightning.publicAddress = "statictor:127.0.0.1:9051";
sane.services.clightning.getPublicAddressCmd = "cat /var/lib/tor/onion/clightning/hostname";
services.tor.relay.onionServices.clightning = {
version = 3;
map = [{
# by default tor will route public tor port P to 127.0.0.1:P.
# so if this port is the same as clightning would natively use, then no further config is needed here.
# see: <https://2019.www.torproject.org/docs/tor-manual.html.en#HiddenServicePort>
port = 9735;
# target.port; target.addr; #< set if tor port != clightning port
}];
# allow "tor" group (i.e. clightning) to read /var/lib/tor/onion/clightning/hostname
settings.HiddenServiceDirGroupReadable = true;
};
# must be in "tor" group to read /var/lib/tor/onion/*/hostname
users.users.clightning.extraGroups = [ "tor" ];
systemd.services.clightning.after = [ "tor.service" ];
# lightning-config contains fields from here:
# - <https://docs.corelightning.org/docs/configuration>
# secret config includes:
# - bitcoin-rpcpassword
# - alias=nodename
# - rgb=rrggbb
# - fee-base=<millisatoshi>
# - fee-per-satoshi=<ppm>
# - feature configs (i.e. experimental-xyz options)
sane.services.clightning.extraConfig = ''
log-level=debug:lightningd
# peerswap:
# - config example: <https://github.com/fort-nix/nix-bitcoin/pull/462/files#diff-b357d832705b8ce8df1f41934d613f79adb77c4cd5cd9e9eb12a163fca3e16c6>
# XXX: peerswap crashes clightning on launch. stacktrace is useless.
# plugin=${pkgs.peerswap}/bin/peerswap
# peerswap-db-path=/var/lib/clightning/peerswap/swaps
# peerswap-policy-path=...
'';
sane.services.clightning.extraConfigFiles = [ config.sops.secrets."lightning-config".path ];
sops.secrets."lightning-config" = {
mode = "0640";
owner = "clightning";
group = "clightning";
};
sane.programs.clightning.enableFor.user.colin = true; # for debugging/admin: `lightning-cli`
}

View File

@ -0,0 +1,10 @@
{ ... }:
{
imports = [
./bitcoin.nix
./clightning.nix
./i2p.nix
./monero.nix
./tor.nix
];
}

View File

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

View File

@ -0,0 +1,31 @@
# as of 2023/11/26: complete downloaded blockchain should be 200GiB on disk, give or take.
{ ... }:
{
sane.persist.sys.byStore.ext = [
# /var/lib/monero/lmdb is what consumes most of the space
{ user = "monero"; group = "monero"; path = "/var/lib/monero"; method = "bind"; }
];
services.monero.enable = true;
services.monero.limits.upload = 5000; # in kB/s
services.monero.extraConfig = ''
# see: monero doc/ANONYMITY_NETWORKS.md
#
# "If any anonymity network is enabled, transactions being broadcast that lack a valid 'context'
# (i.e. the transaction did not come from a P2P connection) will only be sent to peers on anonymity networks."
#
# i think this means that setting tx-proxy here ensures any transactions sent locally to my node (via RPC)
# will be sent over an anonymity network.
tx-proxy=i2p,127.0.0.1:9000
tx-proxy=tor,127.0.0.1:9050
'';
# monero ports: <https://monero.stackexchange.com/questions/604/what-ports-does-monero-use-rpc-p2p-etc>
# - 18080 = "P2P" monero node <-> monero node connections
# - 18081 = "RPC" monero client -> monero node connections
sane.ports.ports."18080" = {
protocol = [ "tcp" ];
visibleTo.wan = true;
description = "colin-monero-p2p";
};
}

View File

@ -0,0 +1,25 @@
# tor settings: <https://2019.www.torproject.org/docs/tor-manual.html.en>
{ lib, ... }:
{
# tor hidden service hostnames aren't deterministic, so persist.
# might be able to get away with just persisting /var/lib/tor/onion, not sure.
sane.persist.sys.byStore.plaintext = [
{ user = "tor"; group = "tor"; mode = "0710"; path = "/var/lib/tor"; method = "bind"; }
];
# tor: `tor.enable` doesn't start a relay, exit node, proxy, etc. it's minimal.
# tor.client.enable configures a torsocks proxy, accessible *only* to localhost.
# at 127.0.0.1:9050
services.tor.enable = true;
services.tor.client.enable = true;
# in order for services to read /var/lib/tor/onion/*/hostname, they must be able to traverse /var/lib/tor,
# and /var/lib/tor must have g+x.
# DataDirectoryGroupReadable causes tor to use g+rx, technically more than we need, but all the files are 600 so it's fine.
services.tor.settings.DataDirectoryGroupReadable = true;
# StateDirectoryMode defaults to 0700, and thereby prevents the onion hostnames from being group readable
systemd.services.tor.serviceConfig.StateDirectoryMode = lib.mkForce "0710";
users.users.tor.homeMode = "0710"; # home mode defaults to 0700, causing readability problems, enforced by nixos "users" activation script
services.tor.settings.SafeLogging = false; # show actual .onion names in the syslog, else debugging is impossible
}

View File

@ -1,27 +0,0 @@
{ config, lib, pkgs, ... }:
# using manual ddns now
lib.mkIf false
{
systemd.services.ddns-afraid = {
description = "update dynamic DNS entries for freedns.afraid.org";
serviceConfig = {
EnvironmentFile = config.sops.secrets."ddns_afraid.env".path;
# TODO: ProtectSystem = "strict";
# TODO: ProtectHome = "full";
# TODO: PrivateTmp = true;
};
script = let
curl = "${pkgs.curl}/bin/curl -4";
in ''
${curl} "https://freedns.afraid.org/dynamic/update.php?$AFRAID_KEY"
'';
};
systemd.timers.ddns-afraid = {
wantedBy = [ "multi-user.target" ];
timerConfig = {
OnStartupSec = "2min";
OnUnitActiveSec = "10min";
};
};
}

View File

@ -1,30 +0,0 @@
{ config, lib, pkgs, ... }:
# we use manual DDNS now
lib.mkIf false
{
systemd.services.ddns-he = {
description = "update dynamic DNS entries for HurricaneElectric";
serviceConfig = {
EnvironmentFile = config.sops.secrets."ddns_he.env".path;
# TODO: ProtectSystem = "strict";
# TODO: ProtectHome = "full";
# TODO: PrivateTmp = true;
};
# HE DDNS API is documented: https://dns.he.net/docs.html
script = let
crl = "${pkgs.curl}/bin/curl -4";
in ''
${crl} "https://he.uninsane.org:$HE_PASSPHRASE@dyn.dns.he.net/nic/update?hostname=he.uninsane.org"
${crl} "https://native.uninsane.org:$HE_PASSPHRASE@dyn.dns.he.net/nic/update?hostname=native.uninsane.org"
${crl} "https://uninsane.org:$HE_PASSPHRASE@dyn.dns.he.net/nic/update?hostname=uninsane.org"
'';
};
systemd.timers.ddns-he = {
wantedBy = [ "multi-user.target" ];
timerConfig = {
OnStartupSec = "2min";
OnUnitActiveSec = "10min";
};
};
}

View File

@ -2,12 +2,12 @@
{
imports = [
./calibre.nix
./ddns-afraid.nix
./ddns-he.nix
./coturn.nix
./cryptocurrencies
./email
./ejabberd.nix
./freshrss.nix
./ftp
./export
./gitea.nix
./goaccess.nix
./ipfs.nix
@ -18,13 +18,14 @@
./lemmy.nix
./matrix
./navidrome.nix
./nfs.nix
./nixserve.nix
./nginx.nix
./nixos-prebuild.nix
./ntfy
./pict-rs.nix
./pleroma.nix
./postgres.nix
./prosody.nix
./prosody
./slskd.nix
./transmission.nix
./trust-dns.nix
./wikipedia.nix

View File

@ -14,76 +14,111 @@
#
# 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
# XXX(2023/10/15): disabled in favor of Prosody.
# everything configured below was fine: used ejabberd for several months.
lib.mkIf false
{
sane.persist.sys.plaintext = [
{ user = "ejabberd"; group = "ejabberd"; directory = "/var/lib/ejabberd"; }
sane.persist.sys.byStore.plaintext = [
{ user = "ejabberd"; group = "ejabberd"; path = "/var/lib/ejabberd"; method = "bind"; }
];
sane.ports.ports."3478" = {
protocol = [ "tcp" "udp" ];
visibleTo.lan = true;
visibleTo.wan = true;
description = "colin-xmpp-stun-turn";
};
sane.ports.ports."5222" = {
protocol = [ "tcp" ];
visibleTo.lan = true;
visibleTo.wan = true;
description = "colin-xmpp-client-to-server";
};
sane.ports.ports."5223" = {
protocol = [ "tcp" ];
visibleTo.lan = true;
visibleTo.wan = true;
description = "colin-xmpps-client-to-server"; # XMPP over TLS
};
sane.ports.ports."5269" = {
protocol = [ "tcp" ];
visibleTo.wan = true;
description = "colin-xmpp-server-to-server";
};
sane.ports.ports."5270" = {
protocol = [ "tcp" ];
visibleTo.wan = true;
description = "colin-xmpps-server-to-server"; # XMPP over TLS
};
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-bosh-https";
};
sane.ports.ports."5349" = {
protocol = [ "tcp" ];
visibleTo.lan = true;
visibleTo.wan = true;
description = "colin-xmpp-stun-turn-over-tls";
};
sane.ports.ports."5443" = {
protocol = [ "tcp" ];
visibleTo.lan = true;
visibleTo.wan = true;
description = "colin-xmpp-web-services"; # file uploads, websockets, admin
};
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
));
# TODO: forward these TURN ports!
networking.firewall.allowedTCPPortRanges = [{
from = 49152; # TURN
to = 49408;
}];
networking.firewall.allowedUDPPortRanges = [{
from = 49152; # TURN
to = 49408;
}];
# this ejabberd config uses builtin STUN/TURN server, so hack to ensure no other implementation fights for ports
services.coturn.enable = false;
# provide access to certs
# TODO: this should just be `acme`. then we also add nginx to the `acme` group.
@ -150,284 +185,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: %ANATIVE%
-
# STUN+TURN UDP
port: 3478
module: ejabberd_stun
transport: udp
use_turn: true
turn_min_port: 49152
turn_max_port: 65535
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: 49152
turn_max_port: 65535
turn_ipv4_address: %ANATIVE%
# 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/%ANATIVE%/$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

@ -22,6 +22,13 @@
# - but postfix delegates authorization of that outgoing mail to dovecot, on the server side
#
# - local clients (i.e. sendmail) interact only with postfix
#
# debugging: general connectivity issues
# - test that inbound port 25 is unblocked:
# - `curl https://canyouseeme.org/ --data 'port=25&IP=185.157.162.178' | grep 'see your service'`
# - and retry with port 465, 587
# - i think this API requires the queried IP match the source IP
# - if necessary, `systemctl stop postfix` and `sudo nc -l 185.157.162.178 25`, then try https://canyouseeme.org
{ ... }:
{

View File

@ -127,10 +127,11 @@
services.dovecot2.modules = [
pkgs.dovecot_pigeonhole # enables sieve execution (?)
];
services.dovecot2.sieveScripts = {
services.dovecot2.sieve = {
extensions = [ "fileinto" ];
# 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" ''
scripts.after = builtins.toFile "ensuredkim.sieve" ''
require "fileinto";
if not header :contains "Authentication-Results" "dkim=pass" {
@ -139,4 +140,6 @@
}
'';
};
systemd.services.dovecot2.serviceConfig.RestartSec = lib.mkForce "15s"; # nixos defaults this to 1s
}

View File

@ -18,31 +18,35 @@ let
};
in
{
sane.persist.sys.plaintext = [
sane.persist.sys.byStore.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"; method = "bind"; }
{ user = "root"; group = "root"; path = "/var/lib/postfix"; method = "bind"; }
{ user = "root"; group = "root"; path = "/var/spool/mail"; method = "bind"; }
# *probably* don't need these dirs:
# "/var/lib/dhparams" # https://github.com/NixOS/nixpkgs/blob/master/nixos/modules/security/dhparams.nix
# "/var/lib/dovecot"
];
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";
};
# XXX(2023/10/20): opening these ports in the firewall has the OPPOSITE effect as intended.
# these ports are only routable so long as they AREN'T opened.
# probably some cursed interaction with network namespaces introduced after 2023/10/10.
# sane.ports.ports."25" = {
# protocol = [ "tcp" ];
# # XXX visibleTo.lan effectively means "open firewall, but don't configure any NAT/forwarding"
# visibleTo.lan = true;
# description = "colin-smtp-mx.uninsane.org";
# };
# sane.ports.ports."465" = {
# protocol = [ "tcp" ];
# visibleTo.lan = true;
# description = "colin-smtps-mx.uninsane.org";
# };
# sane.ports.ports."587" = {
# protocol = [ "tcp" ];
# visibleTo.lan = true;
# description = "colin-smtps-submission-mx.uninsane.org";
# };
# exists only to manage certs for Postfix
services.nginx.virtualHosts."mx.uninsane.org" = {

View File

@ -0,0 +1,53 @@
{ config, ... }:
{
imports = [
./nfs.nix
./sftpgo
];
users.groups.export = {};
fileSystems."/var/export/media" = {
# everything in here could be considered publicly readable (based on the viewer's legal jurisdiction)
device = "/var/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.byStore.ext = [
{ user = "root"; group = "export"; mode = "0775"; path = "/var/export/playground"; method = "bind"; }
];
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,134 @@
# 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" "udp" ];
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;
services.nfs.extraConfig = ''
[nfsd]
# XXX: NFS over UDP REQUIRES SPECIAL CONFIG TO AVOID DATA LOSS.
# see `man 5 nfs`: "Using NFS over UDP on high-speed links".
# it's actually just a general property of UDP over IPv4 (IPv6 fixes it).
# both the client and the server should configure a shorter-than-default IPv4 fragment reassembly window to mitigate.
# OTOH, tunneling NFS over Wireguard also bypasses this weakness, because a mis-assembled packet would not have a valid signature.
udp=y
[exports]
# all export paths are relative to rootdir.
# for NFSv4, the export with fsid=0 behaves as `/` publicly,
# but NFSv3 implements no such feature.
# using `rootdir` instead of relying on `fsid=0` allows consistent export paths regardless of NFS proto version
rootdir=/var/export
'';
# 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 = "/";
baseOpts = [ "crossmnt" "fsid=root" ];
extraLanOpts = [ "ro" ];
extraVpnOpts = [ "rw" "no_root_squash" ];
})
(fmtExport {
# provide /media as an explicit export. NFSv4 can transparently mount a subdir of an export, but NFSv3 can only mount paths which are exports.
export = "/media";
baseOpts = [ "crossmnt" ]; # TODO: is crossmnt needed here?
extraLanOpts = [ "ro" ];
extraVpnOpts = [ "rw" "no_root_squash" ];
})
(fmtExport {
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,167 @@
# 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.
{ config, lib, pkgs, sane-lib, ... }:
let
external_auth_hook = pkgs.static-nix-shell.mkPython3Bin {
pname = "external_auth_hook";
srcRoot = ./.;
};
# 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.
# 50000 is used by soulseek.
passiveStart = 50050;
passiveEnd = 50070;
in
{
sane.ports.ports = {
"21" = {
protocol = [ "tcp" ];
visibleTo.lan = true;
# visibleTo.wan = true;
description = "colin-FTP server";
};
"990" = {
protocol = [ "tcp" ];
visibleTo.lan = true;
visibleTo.wan = true;
description = "colin-FTPS server";
};
} // (sane-lib.mapToAttrs
(port: {
name = builtins.toString port;
value = {
protocol = [ "tcp" ];
visibleTo.lan = true;
visibleTo.wan = true;
description = "colin-FTP server data port range";
};
})
(lib.range passiveStart passiveEnd)
);
# use nginx/acme to produce a cert for FTPS
services.nginx.virtualHosts."ftp.uninsane.org" = {
addSSL = true;
enableACME = true;
};
sane.dns.zones."uninsane.org".inet.CNAME."ftp" = "native";
services.sftpgo = {
enable = true;
group = "export";
package = lib.warnIf (lib.versionOlder "2.5.6" pkgs.sftpgo.version) "sftpgo update: safe to use nixpkgs' sftpgo but keep my own `patches`" pkgs.buildGoModule {
inherit (pkgs.sftpgo) name ldflags nativeBuildInputs doCheck subPackages postInstall passthru meta;
version = "2.5.6-unstable-2024-04-18";
src = pkgs.fetchFromGitHub {
# need to use > 2.5.6 for sftpgo_safe_fileinfo.patch to apply
owner = "drakkan";
repo = "sftpgo";
rev = "950cf67e4c03a12c7e439802cabbb0b42d4ee5f5";
hash = "sha256-UfiFd9NK3DdZ1J+FPGZrM7r2mo9xlKi0dsSlLEinYXM=";
};
vendorHash = "sha256-n1/9A2em3BCtFX+132ualh4NQwkwewMxYIMOphJEamg=";
patches = (pkgs.sftpgo.patches or []) ++ [
# fix for compatibility with kodi:
# ftp LIST operation returns entries over-the-wire like:
# - dgrwxrwxr-x 1 ftp ftp 9 Apr 9 15:05 Videos
# however not all clients understand all mode bits (like that `g`, indicating SGID / group sticky bit).
# instead, only send mode bits which are well-understood.
# the full set of bits, from which i filter, is found here: <https://pkg.go.dev/io/fs#FileMode>
./safe_fileinfo.patch
];
};
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 (also WAN traffic forwarded from the gateway)
address = "10.78.79.51";
port = 21;
debug = true;
}
{
# binding this means any wireguard client can connect
address = "10.0.10.5";
port = 990;
debug = true;
tls_mode = 2; # 2 = "implicit FTPS": client negotiates TLS before any FTP command.
}
{
# binding this means any LAN client can connect (also WAN traffic forwarded from the gateway)
address = "10.78.79.51";
port = 990;
debug = true;
tls_mode = 2; # 2 = "implicit FTPS": client negotiates TLS before any FTP command.
}
];
# active mode is susceptible to "bounce attacks", without much benefit over passive mode
disable_active_mode = true;
hash_support = true;
passive_port_range = {
start = passiveStart;
end = passiveEnd;
};
certificate_file = "/var/lib/acme/ftp.uninsane.org/full.pem";
certificate_key_file = "/var/lib/acme/ftp.uninsane.org/key.pem";
banner = ''
Welcome, friends, to Colin's FTP server! Also available via NFS on the same host, but LAN-only.
Read-only access (LAN-restricted):
Username: "anonymous"
Password: "anonymous"
CONFIGURE YOUR CLIENT FOR "PASSIVE" MODE, e.g. `ftp --passive ftp.uninsane.org`.
Please let me know if anything's broken or not as it should be. Otherwise, browse and transfer freely :)
'';
};
data_provider = {
driver = "memory";
external_auth_hook = "${external_auth_hook}/bin/external_auth_hook";
# 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"
"media"
"nginx" # to access certs
];
systemd.services.sftpgo = {
after = [ "network-online.target" ];
wants = [ "network-online.target" ];
serviceConfig = {
ReadWritePaths = [ "/var/export" ];
Restart = "always";
RestartSec = "20s";
UMask = lib.mkForce "0002";
};
};
}

View File

@ -0,0 +1,157 @@
#!/usr/bin/env nix-shell
#!nix-shell -i python3 -p "python3.withPackages (ps: [ ])"
# vim: set filetype=python :
#
# 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
#
# 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.
import crypt
import json
import os
from hmac import compare_digest
authFail = dict(username="")
PERM_RO = [ "list", "download" ]
PERM_RW = [
# read-only:
"list",
"download",
# write:
"upload",
"overwrite",
"delete",
"rename",
"create_dirs",
"create_symlinks",
# intentionally omitted:
# "chmod",
# "chown",
# "chtimes",
]
TRUSTED_CREDS = [
# /etc/shadow style creds.
# mkpasswd -m sha-512
# $<method>$<salt>$<hash>
"$6$Zq3c2u4ghUH4S6EP$pOuRt13sEKfX31OqPbbd1LuhS21C9MICMc94iRdTAgdAcJ9h95gQH/6Jf6Ie4Obb0oxQtojRJ1Pd/9QHOlFMW." #< m. rocket boy
]
def mkAuthOk(username: str, permissions: dict[str, list[str]]) -> dict:
return dict(
status = 1,
username = username,
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 = permissions,
upload_bandwidth = 0,
download_bandwidth = 0,
filters = dict(
allowed_ip = [],
denied_ip = [],
),
public_keys = [],
# other fields:
# ? groups
# ? virtual_folders
)
def isLan(ip: str) -> bool:
return ip.startswith("10.78.76.") \
or ip.startswith("10.78.77.") \
or ip.startswith("10.78.78.") \
or ip.startswith("10.78.79.")
def isWireguard(ip: str) -> bool:
return ip.startswith("10.0.10.")
def isTrustedCred(password: str) -> bool:
for cred in TRUSTED_CREDS:
_, method, salt, hash_ = cred.split("$")
# assert method == "6", f"unrecognized crypt entry: {cred}"
if crypt.crypt(password, f"${method}${salt}") == cred:
return True
return False
def getAuthResponse(ip: str, username: str, password: str) -> dict:
"""
return a sftpgo auth response either denying the user or approving them
with a set of permissions.
"""
if isTrustedCred(password) and username != "colin":
# allow r/w access from those with a special token
return mkAuthOk(username, permissions = {
"/": PERM_RW,
"/playground": PERM_RW,
})
if isWireguard(ip):
# allow any user from wireguard
return mkAuthOk(username, permissions = {
"/": PERM_RW,
"/playground": PERM_RW,
})
if isLan(ip):
if username == "anonymous":
# allow anonymous users on the LAN
return mkAuthOk("anonymous", permissions = {
"/": PERM_RO,
"/playground": PERM_RW,
})
return authFail
def main():
ip = os.environ.get("SFTPGO_AUTHD_IP", "")
username = os.environ.get("SFTPGO_AUTHD_USERNAME", "")
password = os.environ.get("SFTPGO_AUTHD_PASSWORD", "")
resp = getAuthResponse(ip, username, password)
print(json.dumps(resp))
if __name__ == "__main__":
main()

View File

@ -0,0 +1,32 @@
diff --git a/internal/ftpd/handler.go b/internal/ftpd/handler.go
index 036c3977..33211261 100644
--- a/internal/ftpd/handler.go
+++ b/internal/ftpd/handler.go
@@ -169,7 +169,7 @@ func (c *Connection) Stat(name string) (os.FileInfo, error) {
}
return nil, err
}
- return fi, nil
+ return vfs.NewFileInfo(name, fi.IsDir(), fi.Size(), fi.ModTime(), false), nil
}
// Name returns the name of this connection
@@ -315,7 +315,17 @@ func (c *Connection) ReadDir(name string) (ftpserver.DirLister, error) {
}, nil
}
- return c.ListDir(name)
+ lister, err := c.ListDir(name)
+ if err != nil {
+ return nil, err
+ }
+ return &patternDirLister{
+ DirLister: lister,
+ pattern: "*",
+ lastCommand: c.clientContext.GetLastCommand(),
+ dirName: name,
+ connectionPath: c.clientContext.Path(),
+ }, nil
}
// GetHandle implements ClientDriverExtentionFileTransfer

View File

@ -15,8 +15,8 @@
owner = config.users.users.freshrss.name;
mode = "0400";
};
sane.persist.sys.plaintext = [
{ user = "freshrss"; group = "freshrss"; directory = "/var/lib/freshrss"; }
sane.persist.sys.byStore.plaintext = [
{ user = "freshrss"; group = "freshrss"; path = "/var/lib/freshrss"; method = "bind"; }
];
services.freshrss.enable = true;

View File

@ -1,70 +0,0 @@
# 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>
#
# sftpgo is a FTP server that also supports WebDAV, SFTP, and web clients.
{ lib, pkgs, sane-lib, ... }:
let
authProgram = pkgs.static-nix-shell.mkBash {
pname = "sftpgo_external_auth_hook";
src = ./.;
};
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;
settings = {
ftpd = {
bindings = [{
address = "10.0.10.5";
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.
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}/bin/sftpgo_external_auth_hook";
};
};
};
}

View File

@ -1,55 +0,0 @@
#!/usr/bin/env nix-shell
#!nix-shell -i bash
# 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
#
# 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.
# TODO: don't reuse /var/nfs/export here. formalize this some other way.
if [ "$SFTPGO_AUTHD_USERNAME" = "anonymous" ]; then
echo '{'
echo ' "status":1,'
echo ' "username":"anonymous","expiration_date":0,'
echo ' "home_dir":"/var/nfs/export","uid":65534,"gid":65534,"max_sessions":0,"quota_size":0,"quota_files":100000,'
echo ' "permissions":{'
echo ' "/":["list", "download"]'
echo ' },'
echo ' "upload_bandwidth":0,"download_bandwidth":0,'
echo ' "filters":{"allowed_ip":[],"denied_ip":[]},"public_keys":[]'
echo '}'
else
echo '{"username":""}'
fi

View File

@ -2,9 +2,9 @@
{ config, pkgs, lib, ... }:
{
sane.persist.sys.plaintext = [
sane.persist.sys.byStore.plaintext = [
# TODO: mode? could be more granular
{ user = "git"; group = "gitea"; directory = "/var/lib/gitea"; }
{ user = "git"; group = "gitea"; path = "/var/lib/gitea"; method = "bind"; }
];
services.gitea.enable = true;
services.gitea.user = "git"; # default is 'gitea'
@ -13,6 +13,10 @@
services.gitea.appName = "Perfectly Sane Git";
# services.gitea.disableRegistration = true;
services.gitea.database.createDatabase = false; #< silence warning which wants db user and name to be equal
# TODO: remove this after merge: <https://github.com/NixOS/nixpkgs/pull/268849>
services.gitea.database.socket = "/run/postgresql"; #< would have been set if createDatabase = true
# gitea doesn't create the git user
users.users.git = {
description = "Gitea Service";
@ -96,6 +100,24 @@
locations."/" = {
proxyPass = "http://127.0.0.1:3000";
};
# gitea serves all `raw` files as content-type: plain, but i'd like to serve them as their actual content type.
# or at least, enough to make specific pages viewable (serving unoriginal content as arbitrary content type is dangerous).
locations."~ ^/colin/phone-case-cq/raw/.*.html" = {
proxyPass = "http://127.0.0.1:3000";
extraConfig = ''
proxy_hide_header Content-Type;
default_type text/html;
add_header Content-Type text/html;
'';
};
locations."~ ^/colin/phone-case-cq/raw/.*.js" = {
proxyPass = "http://127.0.0.1:3000";
extraConfig = ''
proxy_hide_header Content-Type;
default_type text/html;
add_header Content-Type text/javascript;
'';
};
};
sane.dns.zones."uninsane.org".inet.CNAME."git" = "native";

View File

@ -20,7 +20,7 @@
--ignore-panel=HOSTS \
--ws-url=wss://sink.uninsane.org:443/ws \
--port=7890 \
-o /var/lib/uninsane/sink/index.html
-o /var/lib/goaccess/index.html
'';
ExecReload = "${pkgs.coreutils}/bin/kill -HUP $MAINPID";
Type = "simple";
@ -28,17 +28,19 @@
RestartSec = "10s";
# hardening
WorkingDirectory = "/tmp";
# TODO: run as `goaccess` user and add `goaccess` user to group `nginx`.
NoNewPrivileges = true;
PrivateDevices = "yes";
PrivateTmp = true;
ProtectHome = "read-only";
ProtectSystem = "strict";
SystemCallFilter = "~@clock @cpu-emulation @debug @keyring @memlock @module @mount @obsolete @privileged @reboot @resources @setuid @swap @raw-io";
ReadOnlyPaths = "/";
ReadWritePaths = [ "/proc/self" "/var/lib/uninsane/sink" ];
PrivateDevices = "yes";
ProtectKernelModules = "yes";
ProtectKernelTunables = "yes";
ProtectSystem = "strict";
ReadOnlyPaths = [ "/var/log/nginx" ];
ReadWritePaths = [ "/proc/self" "/var/lib/goaccess" ];
StateDirectory = "goaccess";
SystemCallFilter = "~@clock @cpu-emulation @debug @keyring @memlock @module @mount @obsolete @privileged @reboot @resources @setuid @swap @raw-io";
WorkingDirectory = "/var/lib/goaccess";
};
after = [ "network.target" ];
wantedBy = [ "multi-user.target" ];
@ -49,7 +51,7 @@
addSSL = true;
enableACME = true;
# inherit kTLS;
root = "/var/lib/uninsane/sink";
root = "/var/lib/goaccess";
locations."/ws" = {
proxyPass = "http://127.0.0.1:7890";

View File

@ -10,9 +10,9 @@
lib.mkIf false # i don't actively use ipfs anymore
{
sane.persist.sys.plaintext = [
sane.persist.sys.byStore.plaintext = [
# TODO: mode? could be more granular
{ user = "261"; group = "261"; directory = "/var/lib/ipfs"; }
{ user = "261"; group = "261"; path = "/var/lib/ipfs"; method = "bind"; }
];
networking.firewall.allowedTCPPorts = [ 4001 ];

View File

@ -1,9 +1,9 @@
{ ... }:
{ lib, pkgs, ... }:
{
sane.persist.sys.plaintext = [
sane.persist.sys.byStore.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"; method = "bind"; }
];
services.jackett.enable = true;
@ -12,6 +12,8 @@
systemd.services.jackett.serviceConfig = {
# run this behind the OVPN static VPN
NetworkNamespacePath = "/run/netns/ovpns";
ExecStartPre = [ "${lib.getExe pkgs.sane-scripts.ip-check} --no-upnp --expect 185.157.162.178" ]; # abort if public IP is not as expected
# patch jackett to listen on the public interfaces
# ExecStart = lib.mkForce "${pkgs.jackett}/bin/Jackett --NoUpdates --DataFolder /var/lib/jackett/.config/Jackett --ListenPublic";
};

View File

@ -40,8 +40,8 @@
description = "colin-jellyfin-https-lan";
};
sane.persist.sys.plaintext = [
{ user = "jellyfin"; group = "jellyfin"; mode = "0700"; directory = "/var/lib/jellyfin"; }
sane.persist.sys.byStore.plaintext = [
{ user = "jellyfin"; group = "jellyfin"; mode = "0700"; path = "/var/lib/jellyfin"; method = "bind"; }
];
sane.fs."/var/lib/jellyfin/config/logging.json" = {
# "Emby.Dlna" logging: <https://jellyfin.org/docs/general/networking/dlna>
@ -75,7 +75,7 @@
# Jellyfin multimedia server
# this is mostly taken from the official jellfin.org docs
services.nginx.virtualHosts."jelly.uninsane.org" = {
addSSL = true;
forceSSL = true;
enableACME = true;
# inherit kTLS;

View File

@ -1,9 +1,19 @@
# how to update wikipedia snapshot:
# - browse for later snapshots:
# - <https://mirror.accum.se/mirror/wikimedia.org/other/kiwix/zim/wikipedia>
# - DL directly, or via rsync (resumable):
# - `rsync --progress --append-verify rsync://mirror.accum.se/mirror/wikimedia.org/other/kiwix/zim/wikipedia/wikipedia_en_all_maxi_2022-05.zim .`
{ ... }:
{
sane.persist.sys.byStore.ext = [
{ user = "colin"; group = "users"; path = "/var/lib/kiwix"; method = "bind"; }
];
sane.services.kiwix-serve = {
enable = true;
port = 8013;
zimPaths = [ "/var/lib/uninsane/www-archive/wikipedia_en_all_maxi_2022-05.zim" ];
zimPaths = [ "/var/lib/kiwix/wikipedia_en_all_maxi_2023-11.zim" ];
};
services.nginx.virtualHosts."w.uninsane.org" = {

View File

@ -4,15 +4,15 @@ let
inherit (svc-cfg) user group port stateDir;
in
{
sane.persist.sys.plaintext = [
{ inherit user group; mode = "0700"; directory = stateDir; }
sane.persist.sys.byStore.plaintext = [
{ inherit user group; mode = "0700"; path = stateDir; method = "bind"; }
];
services.komga.enable = true;
services.komga.port = 11319; # chosen at random
services.nginx.virtualHosts."komga.uninsane.org" = {
addSSL = true;
forceSSL = true;
enableACME = true;
locations."/" = {
proxyPass = "http://127.0.0.1:${builtins.toString port}";

View File

@ -3,13 +3,28 @@
# - <repo:LemmyNet/lemmy:docker/nginx.conf>
# - <repo:LemmyNet/lemmy-ansible:templates/nginx.conf>
{ config, lib, ... }:
{ 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?
#^ i guess the "backend" port is used for federation?
pict-rs = pkgs.pict-rs;
# pict-rs = pkgs.pict-rs.overrideAttrs (upstream: {
# # as of v0.4.2, all non-GIF video is forcibly transcoded.
# # that breaks lemmy, because of the request latency.
# # and it eats up hella CPU.
# # pict-rs is iffy around video altogether: mp4 seems the best supported.
# # XXX: this patch no longer applies after 0.5.10 -> 0.5.11 update.
# # git log is hard to parse, but *suggests* that video is natively supported
# # better than in the 0.4.2 days, e.g. 5fd59fc5b42d31559120dc28bfef4e5002fb509e
# # "Change commandline flag to allow disabling video, since it is enabled by default"
# postPatch = (upstream.postPatch or "") + ''
# substituteInPlace src/validate.rs \
# --replace 'if transcode_options.needs_reencode() {' 'if false {'
# '';
# });
in {
services.lemmy = {
enable = true;
@ -56,4 +71,20 @@ in {
};
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-video-max-frame-count" (builtins.toString (30*60*60))
"--media-process-timeout 120"
"--media-video-allow-audio" # allow audio
]);
}

View File

@ -1,6 +1,16 @@
# 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>
#
# ENABLING PUSH NOTIFICATIONS (with UnifiedPush/ntfy):
# - Matrix "pushers" API spec: <https://spec.matrix.org/latest/client-server-api/#post_matrixclientv3pushersset>
# - first, view notification settings:
# - obtain your client's auth token. e.g. Element -> profile -> help/about -> access token.
# - `curl --header 'Authorization: Bearer <your_access_token>' localhost:8008/_matrix/client/v3/pushers | jq .`
# - enable a new notification destination:
# - `curl --header "Authorization: Bearer <your_access_token>" --data '{ "app_display_name": "<topic>", "app_id": "ntfy.uninsane.org", "data": { "url": "https://ntfy.uninsane.org/_matrix/push/v1/notify", "format": "event_id_only" }, "device_display_name": "<topic>", "kind": "http", "lang": "en-US", "profile_tag": "", "pushkey": "<topic>" }' localhost:8008/_matrix/client/v3/pushers/set`
# - delete a notification destination by setting `kind` to `null` (otherwise, request is identical to above)
#
{ config, lib, pkgs, ... }:
{
@ -10,67 +20,73 @@
./signal.nix
];
sane.persist.sys.plaintext = [
{ user = "matrix-synapse"; group = "matrix-synapse"; directory = "/var/lib/matrix-synapse"; }
sane.persist.sys.byStore.plaintext = [
{ user = "matrix-synapse"; group = "matrix-synapse"; path = "/var/lib/matrix-synapse"; method = "bind"; }
];
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.x_forwarded = true; # because we proxy matrix behind nginx
services.matrix-synapse.settings.max_upload_size = "100M"; # default is "50M"
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"
];
services.matrix-synapse.settings.admin_contact = "admin.matrix@uninsane.org";
services.matrix-synapse.settings.registrations_require_3pid = [ "email" ];
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.yaml".path
];
# services.matrix-synapse.extraConfigFiles = [builtins.toFile "matrix-synapse-extra-config" ''
# admin_contact: "admin.matrix@uninsane.org"
# registrations_require_3pid:
# - email
# email:
# smtp_host: "mx.uninsane.org"
# smtp_port: 587
# smtp_user: "matrix-synapse"
# smtp_pass: "${secrets.matrix-synapse.smtp_pass}"
# require_transport_security: true
# enable_tls: true
# notif_from: "%(app)s <notify.matrix@uninsane.org>"
# app_name: "Uninsane Matrix"
# enable_notifs: true
# validation_token_lifetime: 96h
# invite_client_location: "https://web.matrix.uninsane.org"
# subjects:
# email_validation: "[%(server_name)s] Validate your email"
# ''];
systemd.services.matrix-synapse.postStart = ''
ACCESS_TOKEN=$(${pkgs.coreutils}/bin/cat ${config.sops.secrets.matrix_access_token.path})
TOPIC=$(${pkgs.coreutils}/bin/cat ${config.sops.secrets.ntfy-sh-topic.path})
echo "ensuring ntfy push gateway"
${pkgs.curl}/bin/curl \
--header "Authorization: Bearer $ACCESS_TOKEN" \
--data "{ \"app_display_name\": \"ntfy-adapter\", \"app_id\": \"ntfy.uninsane.org\", \"data\": { \"url\": \"https://ntfy.uninsane.org/_matrix/push/v1/notify\", \"format\": \"event_id_only\" }, \"device_display_name\": \"ntfy-adapter\", \"kind\": \"http\", \"lang\": \"en-US\", \"profile_tag\": \"\", \"pushkey\": \"$TOPIC\" }" \
localhost:8008/_matrix/client/v3/pushers/set
echo "registered push gateways:"
${pkgs.curl}/bin/curl \
--header "Authorization: Bearer $ACCESS_TOKEN" \
localhost:8008/_matrix/client/v3/pushers \
| ${pkgs.jq}/bin/jq .
'';
# new users may be registered on the CLI:
# register_new_matrix_user -c /nix/store/8n6kcka37jhmi4qpd2r03aj71pkyh21s-homeserver.yaml http://localhost:8008
@ -141,4 +157,9 @@
sops.secrets."matrix_synapse_secrets.yaml" = {
owner = config.users.users.matrix-synapse.name;
};
sops.secrets."matrix_access_token" = {
owner = config.users.users.matrix-synapse.name;
};
# provide access to ntfy-sh-topic secret
users.users.matrix-synapse.extraGroups = [ "ntfy-sh" ];
}

View File

@ -5,8 +5,8 @@
# - 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"; }
sane.persist.sys.byStore.plaintext = [
{ user = "matrix-synapse"; group = "matrix-synapse"; path = "/var/lib/mx-puppet-discord"; method = "bind"; }
];
services.matrix-synapse.settings.app_service_config_files = [

View File

@ -1,16 +1,14 @@
# config docs:
# - <https://github.com/matrix-org/matrix-appservice-irc/blob/develop/config.sample.yaml>
# TODO: /quit message for bridged users reveals to IRC users that i'm using a bridge;
# probably want to remove that.
{ config, lib, ... }:
let
ircServer = { name, additionalAddresses ? [], sasl ? true }: 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 = 6697;
inherit name additionalAddresses sasl port;
ssl = true;
botConfig = {
# bot has no presence in IRC channel; only real Matrix users
@ -103,9 +101,9 @@ in
})
];
sane.persist.sys.plaintext = [
sane.persist.sys.byStore.plaintext = [
# TODO: mode?
{ user = "matrix-appservice-irc"; group = "matrix-appservice-irc"; directory = "/var/lib/matrix-appservice-irc"; }
{ user = "matrix-appservice-irc"; group = "matrix-appservice-irc"; path = "/var/lib/matrix-appservice-irc"; method = "bind"; }
];
# XXX: matrix-appservice-irc PreStart tries to chgrp the registration.yml to matrix-synapse,
@ -143,6 +141,7 @@ in
sasl = false;
# notable channels:
# - #hare
# - #mnt-reform
};
"irc.myanonamouse.net" = ircServer {
name = "MyAnonamouse";
@ -151,6 +150,7 @@ in
};
"irc.oftc.net" = ircServer {
name = "oftc";
sasl = false;
# notable channels:
# - #sxmo
# - #sxmo-offtopic

View File

@ -1,10 +1,12 @@
# config options:
# - <https://github.com/mautrix/signal/blob/master/mautrix_signal/example-config.yaml>
{ config, pkgs, ... }:
{ config, lib, pkgs, ... }:
lib.mkIf false # disabled 2024/01/11: i don't use it, and pkgs.mautrix-signal had some API changes
{
sane.persist.sys.plaintext = [
{ user = "mautrix-signal"; group = "mautrix-signal"; directory = "/var/lib/mautrix-signal"; }
{ user = "signald"; group = "signald"; directory = "/var/lib/signald"; }
sane.persist.sys.byStore.plaintext = [
{ user = "mautrix-signal"; group = "mautrix-signal"; path = "/var/lib/mautrix-signal"; method = "bind"; }
{ user = "signald"; group = "signald"; path = "/var/lib/signald"; method = "bind"; }
];
# allow synapse to read the registration file

View File

@ -1,15 +1,16 @@
{ lib, ... }:
lib.mkIf false #< i don't actively use navidrome
{
sane.persist.sys.plaintext = [
{ user = "navidrome"; group = "navidrome"; directory = "/var/lib/navidrome"; }
sane.persist.sys.byStore.plaintext = [
{ user = "navidrome"; group = "navidrome"; path = "/var/lib/navidrome"; method = "bind"; }
];
services.navidrome.enable = true;
services.navidrome.settings = {
# docs: https://www.navidrome.org/docs/usage/configuration-options/
Address = "127.0.0.1";
Port = 4533;
MusicFolder = "/var/lib/uninsane/media/Music";
MusicFolder = "/var/media/Music";
CovertArtPriority = "*.jpg, *.JPG, *.png, *.PNG, embedded";
AutoImportPlaylists = false;
ScanSchedule = "@every 1h";

View File

@ -1,67 +0,0 @@
# docs:
# - <https://nixos.wiki/wiki/NFS>
# - <https://wiki.gentoo.org/wiki/Nfs-utils>
{ ... }:
{
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
# - mountpoint[=/path]: only export the directory if it's a mountpoint. used to avoid exporting failed mounts.
#
# 10.0.0.0/8 to export (readonly) both to LAN (unencrypted) and wg vpn (encrypted)
services.nfs.server.exports = ''
/var/nfs/export 10.78.79.0/22(ro,crossmnt,fsid=0,subtree_check) 10.0.10.0/24(rw,no_root_squash,crossmnt,fsid=0,subtree_check)
'';
fileSystems."/var/nfs/export/media" = {
# everything in here could be considered publicly readable (based on the viewer's legal jurisdiction)
device = "/var/lib/uninsane/media";
options = [ "rbind" ];
};
}

View File

@ -1,4 +1,5 @@
# docs: https://nixos.wiki/wiki/Nginx
# docs: <https://nixos.wiki/wiki/Nginx>
# docs: <https://nginx.org/en/docs/>
{ config, lib, pkgs, ... }:
let
@ -53,8 +54,10 @@ in
services.nginx.recommendedOptimisation = true;
# web blog/personal site
# alternative way to link stuff into the share:
# sane.fs."/var/www/sites/uninsane.org/share/Ubunchu".mount.bind = "/var/media/Books/Visual/HiroshiSeo/Ubunchu";
# sane.fs."/var/media/Books/Visual/HiroshiSeo/Ubunchu".dir = {};
services.nginx.virtualHosts."uninsane.org" = publog {
root = "${pkgs.uninsane-dot-org}/share/uninsane-dot-org";
# a lot of places hardcode https://uninsane.org,
# and then when we mix http + non-https, we get CORS violations
# and things don't look right. so force SSL.
@ -64,9 +67,38 @@ in
# for OCSP stapling
sslTrustedCertificate = "${pkgs.cacert}/etc/ssl/certs/ca-bundle.crt";
# uninsane.org/share/foo => /var/lib/uninsane/root/share/foo.
# yes, nginx does not strip the prefix when evaluating against the root.
locations."/share".root = "/var/lib/uninsane/root";
locations."/" = {
root = "${pkgs.uninsane-dot-org}/share/uninsane-dot-org";
tryFiles = "$uri $uri/ @fallback";
};
# unversioned files
locations."@fallback" = {
root = "/var/www/sites/uninsane.org";
};
# uninsane.org/share/foo => /var/www/sites/uninsane.org/share/foo.
# special-cased to enable directory listings
locations."/share" = {
root = "/var/www/sites/uninsane.org";
extraConfig = ''
# autoindex => render directory listings
autoindex on;
# don't follow any symlinks when serving files
# otherwise it allows a directory escape
disable_symlinks on;
'';
};
locations."/share/Milkbags/" = {
alias = "/var/media/Videos/Milkbags/";
extraConfig = ''
# autoindex => render directory listings
autoindex on;
# don't follow any symlinks when serving files
# otherwise it allows a directory escape
disable_symlinks on;
'';
};
# allow matrix users to discover that @user:uninsane.org is reachable via matrix.uninsane.org
locations."= /.well-known/matrix/server".extraConfig =
@ -101,11 +133,25 @@ 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;
# };
# redirect common feed URIs to the canonical feed
locations."= /atom".extraConfig = "return 301 /atom.xml;";
locations."= /feed".extraConfig = "return 301 /atom.xml;";
locations."= /feed.xml".extraConfig = "return 301 /atom.xml;";
locations."= /rss".extraConfig = "return 301 /atom.xml;";
locations."= /rss.xml".extraConfig = "return 301 /atom.xml;";
locations."= /blog/atom".extraConfig = "return 301 /atom.xml;";
locations."= /blog/atom.xml".extraConfig = "return 301 /atom.xml;";
locations."= /blog/feed".extraConfig = "return 301 /atom.xml;";
locations."= /blog/feed.xml".extraConfig = "return 301 /atom.xml;";
locations."= /blog/rss".extraConfig = "return 301 /atom.xml;";
locations."= /blog/rss.xml".extraConfig = "return 301 /atom.xml;";
};
@ -132,10 +178,9 @@ in
security.acme.acceptTerms = true;
security.acme.defaults.email = "admin.acme@uninsane.org";
sane.persist.sys.plaintext = [
# TODO: mode?
{ user = "acme"; group = "acme"; directory = "/var/lib/acme"; }
{ user = "colin"; group = "users"; directory = "/var/www/sites"; }
sane.persist.sys.byStore.plaintext = [
{ user = "acme"; group = "acme"; path = "/var/lib/acme"; method = "bind"; }
{ user = "colin"; group = "users"; path = "/var/www/sites"; method = "bind"; }
];
# let's encrypt default chain looks like:

View File

@ -0,0 +1,26 @@
{ lib, pkgs, ... }:
lib.optionalAttrs false # disabled until i can be sure it's not gonna OOM my server in the middle of the night
{
systemd.services.nixos-prebuild = {
description = "build a nixos image with all updated deps";
path = with pkgs; [ coreutils git nix ];
script = ''
working=$(mktemp -d /tmp/nixos-prebuild.XXXXXX)
pushd "$working"
git clone https://git.uninsane.org/colin/nix-files.git \
&& cd nix-files \
&& nix flake update \
|| true
RC=$(nix run "$working/nix-files#check" -- -j1 --cores 5 --builders "")
popd
rm -rf "$working"
exit "$RC"
'';
};
systemd.timers.nixos-prebuild = {
wantedBy = [ "multi-user.target" ];
timerConfig.OnCalendar = "11,23:00:00";
};
}

View File

@ -1,21 +0,0 @@
{ config, ... }:
{
services.nginx.virtualHosts."nixcache.uninsane.org" = {
addSSL = true;
enableACME = true;
# inherit kTLS;
# serverAliases = [ "nixcache" ];
locations."/".extraConfig = ''
proxy_pass http://localhost:${toString config.services.nix-serve.port};
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
'';
};
sane.dns.zones."uninsane.org".inet.CNAME."nixcache" = "native";
sane.services.nixserve.enable = true;
sane.services.nixserve.secretKeyFile = config.sops.secrets.nix_serve_privkey.path;
}

View File

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

View File

@ -0,0 +1,92 @@
# 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.byStore.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"; method = "bind"; }
];
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
'';
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,151 @@
#!/usr/bin/env nix-shell
#!nix-shell -i python3 -p "python3.withPackages (ps: [ ])" -p ntfy-sh
import argparse
import logging
import os
import socket
import subprocess
import sys
import threading
import time
logger = logging.getLogger(__name__)
LISTEN_QUEUE = 3
WAKE_MESSAGE = b'notification\n'
class Client:
def __init__(self, sock, addr_info, live_after: float):
self.live_after = live_after
self.sock = sock
self.addr_info = addr_info
def __cmp__(self, other: 'Client'):
return cmp(self.addr_info, other.addr_info)
def try_notify(self, message: bytes) -> bool:
"""
returns true if we send a packet to notify client.
fals otherwise (e.g. the socket is dead).
"""
ttl = self.live_after - time.time()
if ttl > 0:
logger.debug(f"sleeping {ttl:.2f}s until client {self.addr_info} is ready to receive notification")
time.sleep(ttl)
try:
self.sock.sendall(message)
except Exception as e:
logger.warning(f"failed to notify client {self.addr_info} {e}")
return False
else:
logger.info(f"successfully notified {self.addr_info}: {message}")
return True
class Adapter:
def __init__(self, host: str, port: int, silence: int, topic: str):
self.host = host
self.port = port
self.silence = silence
self.topic = topic
self.clients = set()
def log_clients(self):
clients_str = '\n'.join(f' {c.addr_info}' for c in self.clients)
logger.debug(f"clients alive ({len(self.clients)}):\n{clients_str}")
def add_client(self, client: Client):
# it's a little bit risky to keep more than one client at the same IP address,
# because it's possible a notification comes in and we ring the old connection,
# even when the new connection says "don't ring yet".
for c in set(self.clients):
if c.addr_info[0] == client.addr_info[0]:
logger.info(f"purging old client before adding new one at same address: {c.addr_info} -> {client.addr_info}")
self.clients.remove(c)
logger.info(f"accepted client at {client.addr_info}")
self.clients.add(client)
def listener_loop(self):
logger.info(f"listening for connections on {self.host}:{self.port}")
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.bind((self.host, self.port))
s.listen(LISTEN_QUEUE)
while True:
conn, addr_info = s.accept()
self.add_client(Client(conn, addr_info, live_after = time.time() + self.silence))
def notify_clients(self, message: bytes = WAKE_MESSAGE):
# notify every client, and drop any which have disconnected.
# note that we notify based on age (oldest -> youngest)
# because notifying young clients might entail sleeping until they're ready.
clients = sorted(self.clients, key=lambda c: (c.live_after, c.addr_info))
dead_clients = [
c for c in clients if not c.try_notify(message)
]
for c in dead_clients:
self.clients.remove(c)
self.log_clients()
def notify_loop(self):
logger.info("waiting for notification events")
ntfy_proc = subprocess.Popen(
[
"ntfy",
"sub",
f"https://ntfy.uninsane.org/{self.topic}"
],
stdout=subprocess.PIPE
)
for line in iter(ntfy_proc.stdout.readline, b''):
logger.debug(f"received notification: {line}")
self.notify_clients()
def get_topic() -> str:
return open('/run/secrets/ntfy-sh-topic', 'rt').read().strip()
def run_forever(callable):
try:
callable()
except Exception as e:
logger.error(f"{callable} failed: {e}")
else:
logger.error(f"{callable} unexpectedly returned")
# sys.exit(1)
os._exit(1) # sometimes `sys.exit()` doesn't actually exit...
def main():
logging.basicConfig()
logging.getLogger().setLevel(logging.DEBUG)
parser = argparse.ArgumentParser(description="accept connections and notify the other end upon ntfy activity, with a guaranteed amount of silence")
parser.add_argument('--verbose', action='store_true')
parser.add_argument('--host', type=str, default='')
parser.add_argument('--port', type=int)
parser.add_argument('--silence', type=int, help="number of seconds to remain silent upon accepting a connection")
args = parser.parse_args()
if args.verbose:
logging.getLogger().setLevel(logging.DEBUG)
else:
logging.getLogger().setLevel(logging.INFO)
adapter = Adapter(args.host, args.port, args.silence, get_topic())
listener_loop = threading.Thread(target=run_forever, name="listener_loop", args=(adapter.listener_loop,))
notify_loop = threading.Thread(target=run_forever, name="notify_loop", args=(adapter.notify_loop,))
# TODO: this method of exiting seems to sometimes leave the listener behind (?)
# preventing anyone else from re-binding the port.
listener_loop.start()
notify_loop.start()
listener_loop.join()
notify_loop.join()
if __name__ == '__main__':
main()

View File

@ -0,0 +1,72 @@
# service which adapts ntfy-sh into something suitable specifically for the Pinephone's
# wake-on-lan (WoL) feature.
# notably, it provides a mechanism by which the caller can be confident of an interval in which
# zero traffic will occur on the TCP connection, thus allowing it to enter sleep w/o fear of hitting
# race conditions in the Pinephone WoL feature.
{ config, lib, pkgs, ... }:
let
cfg = config.sane.ntfy-waiter;
portLow = 5550;
portHigh = 5559;
portRange = lib.range portLow portHigh;
numPorts = portHigh - portLow + 1;
mkService = port: let
silence = port - portLow;
flags = lib.optional cfg.verbose "--verbose";
cli = [
"${cfg.package}/bin/ntfy-waiter"
"--port"
"${builtins.toString port}"
"--silence"
"${builtins.toString silence}"
] ++ flags;
in {
"ntfy-waiter-${builtins.toString silence}" = {
# TODO: run not as root (e.g. as ntfy-sh)
description = "wait for notification, with ${builtins.toString silence} seconds of guaranteed silence";
serviceConfig = {
Type = "simple";
Restart = "always";
RestartSec = "5s";
ExecStart = lib.concatStringsSep " " cli;
};
after = [ "network.target" ];
wantedBy = [ "default.target" ];
};
};
in
{
options = with lib; {
sane.ntfy-waiter.enable = mkOption {
type = types.bool;
default = true;
};
sane.ntfy-waiter.verbose = mkOption {
type = types.bool;
default = true;
};
sane.ntfy-waiter.package = mkOption {
type = types.package;
default = pkgs.static-nix-shell.mkPython3Bin {
pname = "ntfy-waiter";
srcRoot = ./.;
pkgs = [ "ntfy-sh" ];
};
description = ''
exposed to provide an attr-path by which one may build the package for manual testing.
'';
};
};
config = lib.mkIf cfg.enable {
sane.ports.ports = lib.mkMerge (lib.forEach portRange (port: {
"${builtins.toString port}" = {
protocol = [ "tcp" ];
visibleTo.lan = true;
visibleTo.wan = true;
description = "colin-notification-waiter-${builtins.toString (port - portLow + 1)}-of-${builtins.toString numPorts}";
};
}));
systemd.services = lib.mkMerge (builtins.map mkService portRange);
};
}

View File

@ -5,8 +5,8 @@ let
cfg = config.services.pict-rs;
in
{
sane.persist.sys.plaintext = lib.mkIf cfg.enable [
{ user = "pict-rs"; group = "pict-rs"; directory = cfg.dataDir; }
sane.persist.sys.byStore.plaintext = lib.mkIf cfg.enable [
{ user = "pict-rs"; group = "pict-rs"; path = cfg.dataDir; method = "bind"; }
];
systemd.services.pict-rs.serviceConfig = {

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"; }
sane.persist.sys.byStore.plaintext = [
{ user = "pleroma"; group = "pleroma"; path = "/var/lib/pleroma"; method = "bind"; }
];
services.pleroma.enable = true;
services.pleroma.secretConfigFile = config.sops.secrets.pleroma_secrets.path;
@ -18,7 +25,7 @@
config :pleroma, Pleroma.Web.Endpoint,
url: [host: "fed.uninsane.org", scheme: "https", port: 443],
http: [ip: {127, 0, 0, 1}, port: 4000]
http: [ip: {127, 0, 0, 1}, port: 4040]
# secret_key_base: "{secrets.pleroma.secret_key_base}",
# signing_salt: "{secrets.pleroma.signing_salt}"
@ -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: [
@ -147,7 +167,8 @@
enableACME = true;
# inherit kTLS;
locations."/" = {
proxyPass = "http://127.0.0.1:4000";
proxyPass = "http://127.0.0.1:4040";
recommendedProxySettings = true;
# documented: https://git.pleroma.social/pleroma/pleroma/-/blob/develop/installation/pleroma.nginx
extraConfig = ''
# XXX colin: this block is in the nixos examples: i don't understand all of it
@ -166,17 +187,18 @@
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;
'';
};

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 = [
sane.persist.sys.byStore.plaintext = [
# TODO: mode?
{ user = "postgres"; group = "postgres"; directory = "/var/lib/postgresql"; }
{ user = "postgres"; group = "postgres"; path = "/var/lib/postgresql"; method = "bind"; }
];
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

@ -1,81 +0,0 @@
# example configs:
# - <https://github.com/kittywitch/nixfiles/blob/main/services/prosody.nix>
# create users with:
# - `sudo -u prosody prosodyctl adduser colin@uninsane.org`
{ lib, ... }:
# XXX disabled: doesn't send messages to nixnet.social (only receives them).
# nixnet runs ejabberd, so revisiting that.
lib.mkIf false
{
sane.persist.sys.plaintext = [
{ user = "prosody"; group = "prosody"; directory = "/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" ];
security.acme.certs."uninsane.org".extraDomainNames = [
"conference.xmpp.uninsane.org"
"upload.xmpp.uninsane.org"
];
services.prosody = {
enable = true;
admins = [ "colin@uninsane.org" ];
# allowRegistration = false;
# extraConfig = ''
# s2s_require_encryption = true
# c2s_require_encryption = true
# '';
extraModules = [ "private" "vcard" "privacy" "compression" "component" "muc" "pep" "adhoc" "lastactivity" "admin_adhoc" "blocklist"];
ssl.cert = "/var/lib/acme/uninsane.org/fullchain.pem";
ssl.key = "/var/lib/acme/uninsane.org/key.pem";
muc = [
{
domain = "conference.xmpp.uninsane.org";
}
];
uploadHttp.domain = "upload.xmpp.uninsane.org";
virtualHosts = {
localhost = {
domain = "localhost";
enabled = true;
};
"xmpp.uninsane.org" = {
domain = "uninsane.org";
enabled = true;
ssl.cert = "/var/lib/acme/uninsane.org/fullchain.pem";
ssl.key = "/var/lib/acme/uninsane.org/key.pem";
};
};
};
}

View File

@ -0,0 +1,289 @@
# example configs:
# - official: <https://prosody.im/doc/example_config>
# - nixos: <https://github.com/kittywitch/nixfiles/blob/main/services/prosody.nix>
# config options:
# - <https://prosody.im/doc/configure>
#
# modules:
# - main: <https://prosody.im/doc/modules>
# - community: <https://modules.prosody.im/index.html>
#
# debugging:
# - logging:
# - enable `stanza_debug` module
# - enable `log.debug = "*syslog"` in extraConfig
# - interactive:
# - `telnet localhost 5582` (this is equal to `prosodyctl shell` -- but doesn't hang)
# - `watch:stanzas(target_spec, filter)` -> to log stanzas, for version > 0.12
# - console docs: <https://prosody.im/doc/console>
# - can modify/inspect arbitrary internals (lua) by prefixing line with `> `
# - e.g. `> _G` to print all globals
#
# sanity checks:
# - `sudo -u prosody -g prosody prosodyctl check connectivity`
# - `sudo -u prosody -g prosody prosodyctl check turn`
# - `sudo -u prosody -g prosody prosodyctl check turn -v --ping=stun.conversations.im`
# - checks that my stun/turn server is usable by clients of conversations.im (?)
# - `sudo -u prosody -g prosody prosodyctl check` (dns, config, certs)
#
#
# create users with:
# - `sudo -u prosody prosodyctl adduser colin@uninsane.org`
#
#
# federation/support matrix:
# - nixnet.services (runs ejabberd):
# - WORKS: sending and receiving PMs and calls (2023/10/15)
# - N.B.: it didn't originally work; was solved by disabling the lua-unbound DNS option & forcing the system/local resolver
# - cheogram (XMPP <-> SMS gateway):
# - WORKS: sending and receiving PMs, images (2023/10/15)
# - PARTIAL: calls (xmpp -> tel works; tel -> xmpp fails)
# - maybe i need to setup stun/turn
#
# TODO:
# - enable push notifications (mod_cloud_notify)
# - optimize coturn (e.g. move off of the VPN!)
# - ensure muc is working
# - enable file uploads
# - "upload.xmpp.uninsane.org:http_upload: URL: <https://upload.xmpp.uninsane.org:5281/upload> - Ensure this can be reached by users"
# - disable or fix bosh (jabber over http):
# - "certmanager: No certificate/key found for client_https port 0"
{ lib, pkgs, ... }:
let
# enables very verbose logging
enableDebug = false;
in
{
sane.persist.sys.byStore.plaintext = [
{ user = "prosody"; group = "prosody"; path = "/var/lib/prosody"; method = "bind"; }
];
sane.ports.ports."5000" = {
protocol = [ "tcp" ];
visibleTo.lan = true;
visibleTo.wan = true;
description = "colin-xmpp-prosody-fileshare-proxy65";
};
sane.ports.ports."5222" = {
protocol = [ "tcp" ];
visibleTo.lan = true;
visibleTo.wan = true;
description = "colin-xmpp-client-to-server";
};
sane.ports.ports."5223" = {
protocol = [ "tcp" ];
visibleTo.lan = true;
visibleTo.wan = true;
description = "colin-xmpps-client-to-server"; # XMPP over TLS
};
sane.ports.ports."5269" = {
protocol = [ "tcp" ];
visibleTo.wan = true;
description = "colin-xmpp-server-to-server";
};
sane.ports.ports."5270" = {
protocol = [ "tcp" ];
visibleTo.wan = true;
description = "colin-xmpps-server-to-server"; # XMPP over TLS
};
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?
};
users.users.prosody.extraGroups = [
"nginx" # provide access to certs
"ntfy-sh" # access to secret ntfy topic
];
security.acme.certs."uninsane.org".extraDomainNames = [
"xmpp.uninsane.org"
"conference.xmpp.uninsane.org"
"upload.xmpp.uninsane.org"
];
# exists so the XMPP server's cert can obtain altNames for all its resources
services.nginx.virtualHosts."xmpp.uninsane.org" = {
useACMEHost = "uninsane.org";
};
services.nginx.virtualHosts."conference.xmpp.uninsane.org" = {
useACMEHost = "uninsane.org";
};
services.nginx.virtualHosts."upload.xmpp.uninsane.org" = {
useACMEHost = "uninsane.org";
};
sane.dns.zones."uninsane.org".inet = {
# XXX: SRV records have to point to something with a A/AAAA record; no CNAMEs
A."xmpp" = "%ANATIVE%";
CNAME."conference.xmpp" = "xmpp";
CNAME."upload.xmpp" = "xmpp";
# _Service._Proto.Name TTL Class SRV Priority Weight Port Target
# - <https://xmpp.org/extensions/xep-0368.html>
# something's requesting the SRV records for conference.xmpp, so let's include it
# nothing seems to request XMPP SRVs for the other records (except @)
# lower numerical priority field tells clients to prefer this method
SRV."_xmpps-client._tcp.conference.xmpp" = "3 50 5223 xmpp";
SRV."_xmpps-server._tcp.conference.xmpp" = "3 50 5270 xmpp";
SRV."_xmpp-client._tcp.conference.xmpp" = "5 50 5222 xmpp";
SRV."_xmpp-server._tcp.conference.xmpp" = "5 50 5269 xmpp";
SRV."_xmpps-client._tcp" = "3 50 5223 xmpp";
SRV."_xmpps-server._tcp" = "3 50 5270 xmpp";
SRV."_xmpp-client._tcp" = "5 50 5222 xmpp";
SRV."_xmpp-server._tcp" = "5 50 5269 xmpp";
};
# help Prosody find its certificates.
# pointing it to /var/lib/acme doesn't quite work because it expects the private key
# to be named `privkey.pem` instead of acme's `key.pem`
# <https://prosody.im/doc/certificates#automatic_location>
sane.fs."/etc/prosody/certs/uninsane.org/fullchain.pem" = {
symlink.target = "/var/lib/acme/uninsane.org/fullchain.pem";
wantedBeforeBy = [ "prosody.service" ];
};
sane.fs."/etc/prosody/certs/uninsane.org/privkey.pem" = {
symlink.target = "/var/lib/acme/uninsane.org/key.pem";
wantedBeforeBy = [ "prosody.service" ];
};
services.prosody = {
enable = true;
package = pkgs.prosody.override {
# XXX(2023/10/15): build without lua-unbound support.
# this forces Prosody to fall back to the default Lua DNS resolver, which seems more reliable.
# fixes errors like "unbound.queryXYZUV: Resolver error: out of memory"
# related: <https://issues.prosody.im/1737#comment-11>
lua.withPackages = selector: pkgs.lua.withPackages (p:
selector (p // { luaunbound = null; })
);
# withCommunityModules = [ "turncredentials" ];
};
admins = [ "colin@uninsane.org" ];
# allowRegistration = false; # defaults to false
muc = [
{
domain = "conference.xmpp.uninsane.org";
}
];
uploadHttp.domain = "upload.xmpp.uninsane.org";
virtualHosts = {
# "Prosody requires at least one enabled VirtualHost to function. You can
# safely remove or disable 'localhost' once you have added another."
# localhost = {
# domain = "localhost";
# enabled = true;
# };
"xmpp.uninsane.org" = {
domain = "uninsane.org";
enabled = true;
};
};
## modules:
# these are enabled by default, via <repo:nixos/nixpkgs:/pkgs/servers/xmpp/prosody/default.nix>
# - cloud_notify
# - http_upload
# - vcard_muc
# these are enabled by the module defaults (services.prosody.modules.<foo>)
# - admin_adhoc
# - blocklist
# - bookmarks
# - carbons
# - cloud_notify
# - csi
# - dialback
# - disco
# - http_files
# - mam
# - pep
# - ping
# - private
# - XEP-0049: let clients store arbitrary (private) data on the server
# - proxy65
# - XEP-0065: allow server to proxy file transfers between two clients who are behind NAT
# - register
# - roster
# - saslauth
# - smacks
# - time
# - tls
# - uptime
# - vcard_legacy
# - version
extraPluginPaths = [ ./modules ];
extraModules = [
# admin_shell: allows `prosodyctl shell` to work
# see: <https://prosody.im/doc/modules/mod_admin_shell>
# see: <https://prosody.im/doc/console>
"admin_shell"
"admin_telnet" #< needed by admin_shell
# lastactivity: XEP-0012: allow users to query how long another user has been idle for
# - not sure why i enabled this; think it was in someone's config i referenced
"lastactivity"
# allows prosody to share TURN/STUN secrets with XMPP clients to provide them access to the coturn server.
# see: <https://prosody.im/doc/coturn>
"turn_external"
# legacy coturn integration
# see: <https://modules.prosody.im/mod_turncredentials.html>
# "turncredentials"
"sane_ntfy"
] ++ lib.optionals enableDebug [
"stanza_debug" #< logs EVERY stanza as debug: <https://prosody.im/doc/modules/mod_stanza_debug>
];
extraConfig = ''
local function readAll(file)
local f = assert(io.open(file, "rb"))
local content = f:read("*all")
f:close()
-- remove trailing newline
return string.gsub(content, "%s+", "")
end
-- logging docs:
-- - <https://prosody.im/doc/logging>
-- - <https://prosody.im/doc/advanced_logging>
-- levels: debug, info, warn, error
log = {
${if enableDebug then "debug" else "info"} = "*syslog";
}
-- see: <https://prosody.im/doc/certificates#automatic_location>
-- try to solve: "certmanager: Error indexing certificate directory /etc/prosody/certs: cannot open /etc/prosody/certs: No such file or directory"
-- only, this doesn't work because prosody doesn't like acme's naming scheme
-- certificates = "/var/lib/acme"
c2s_direct_tls_ports = { 5223 }
s2s_direct_tls_ports = { 5270 }
turn_external_host = "turn.uninsane.org"
turn_external_secret = readAll("/var/lib/coturn/shared_secret.bin")
-- turn_external_user = "prosody"
-- legacy mod_turncredentials integration
-- turncredentials_host = "turn.uninsane.org"
-- turncredentials_secret = readAll("/var/lib/coturn/shared_secret.bin")
ntfy_binary = "${pkgs.ntfy-sh}/bin/ntfy"
ntfy_topic = readAll("/run/secrets/ntfy-sh-topic")
-- s2s_require_encryption = true
-- c2s_require_encryption = true
'';
};
}

View File

@ -0,0 +1,52 @@
-- simple proof-of-concept Prosody module
-- module development guide: <https://prosody.im/doc/developers/modules>
-- module API docs: <https://prosody.im/doc/developers/moduleapi>
--
-- much of this code is lifted from Prosody's own `mod_cloud_notify`
local jid = require"util.jid";
local ntfy = module:get_option_string("ntfy_binary", "ntfy");
local ntfy_topic = module:get_option_string("ntfy_topic", "xmpp");
module:log("info", "initialized");
local function is_urgent(stanza)
if stanza.name == "message" then
if stanza:get_child("propose", "urn:xmpp:jingle-message:0") then
return true, "jingle call";
end
end
end
local function publish_ntfy(message)
-- message should be the message to publish
local ntfy_url = string.format("https://ntfy.uninsane.org/%s", ntfy_topic)
local cmd = string.format("%s pub %q %q", ntfy, ntfy_url, message)
module.log("debug", "invoking ntfy: %s", cmd)
local success, reason, code = os.execute(cmd)
if not success then
module:log("warn", "ntfy failed: %s => %s %d", cmd, reason, code)
end
end
local function archive_message_added(event)
-- event is: { origin = origin, stanza = stanza, for_user = store_user, id = id }
local stanza = event.stanza;
local to = stanza.attr.to;
to = to and jid.split(to) or event.origin.username;
-- only notify if the stanza destination is the mam user we store it for
if event.for_user == to then
local is_urgent_stanza, urgent_reason = is_urgent(event.stanza);
if is_urgent_stanza then
module:log("info", "urgent push for %s (%s)", to, urgent_reason);
publish_ntfy(urgent_reason)
end
end
end
module:hook("archive-message-added", archive_message_added);

View File

@ -0,0 +1,80 @@
# Soulseek daemon (p2p file sharing with an emphasis on Music)
# docs: <https://github.com/slskd/slskd/blob/master/docs/config.md>
#
# config precedence (higher precedence overrules lower precedence):
# - Default Values < Environment Variables < YAML Configuraiton File < Command Line Arguments
#
# debugging:
# - soulseek is just *flaky*. if you see e.g. DNS errors, even though you can't replicate them via `dig` or `getent ahostsv4`, just give it 10 minutes to work out:
# - "Soulseek.AddressException: Failed to resolve address 'vps.slsknet.org': Resource temporarily unavailable"
{ config, lib, pkgs, ... }:
{
sane.persist.sys.byStore.plaintext = [
{ user = "slskd"; group = "media"; path = "/var/lib/slskd"; method = "bind"; }
];
sops.secrets."slskd_env" = {
owner = config.users.users.slskd.name;
mode = "0400";
};
users.users.slskd.extraGroups = [ "media" ];
sane.ports.ports."50300" = {
protocol = [ "tcp" ];
# not visible to WAN: i run this in a separate netns
visibleTo.ovpn = true;
description = "colin-soulseek";
};
sane.dns.zones."uninsane.org".inet.CNAME."soulseek" = "native";
services.nginx.virtualHosts."soulseek.uninsane.org" = {
forceSSL = true;
enableACME = true;
locations."/" = {
proxyPass = "http://10.0.1.6:5030";
proxyWebsockets = true;
};
};
services.slskd.enable = true;
services.slskd.domain = null; # i'll manage nginx for it
services.slskd.group = "media";
# env file, for auth (SLSKD_SLSK_PASSWORD, SLSKD_SLSK_USERNAME)
services.slskd.environmentFile = config.sops.secrets.slskd_env.path;
services.slskd.settings = {
soulseek.diagnostic_level = "Debug"; # one of "None"|"Warning"|"Info"|"Debug"
shares.directories = [
# folders to share
# syntax: <https://github.com/slskd/slskd/blob/master/docs/config.md#directories>
# [Alias]/path/on/disk
# NOTE: Music library is quick to scan; videos take a solid 10min to scan.
# TODO: re-enable the other libraries
# "[Audioooks]/var/media/Books/Audiobooks"
# "[Books]/var/media/Books/Books"
# "[Manga]/var/media/Books/Visual"
# "[games]/var/media/games"
"[Music]/var/media/Music"
# "[Film]/var/media/Videos/Film"
# "[Shows]/var/media/Videos/Shows"
];
# directories.downloads = "..." # TODO
# directories.incomplete = "..." # TODO
# what unit is this? kbps??
global.upload.speed_limit = 32000;
web.logging = true;
# debug = true;
flags.no_logo = true; # don't show logo at start
# flags.volatile = true; # store searches and active transfers in RAM (completed transfers still go to disk). rec for btrfs/zfs
};
systemd.services.slskd.serviceConfig = {
# run this behind the OVPN static VPN
NetworkNamespacePath = "/run/netns/ovpns";
ExecStartPre = [ "${lib.getExe pkgs.sane-scripts.ip-check} --no-upnp --expect 185.157.162.178" ]; # abort if public IP is not as expected
Restart = lib.mkForce "always"; # exits "success" when it fails to connect to soulseek server
RestartSec = "60s";
};
}

View File

@ -1,13 +1,112 @@
{ pkgs, ... }:
{ config, lib, pkgs, ... }:
let
# 2023/09/06: nixpkgs `transmission` defaults to old 3.00
# 2024/02/15: some torrent trackers whitelist clients; everyone is still on 3.00 for some reason :|
# some do this via peer-id (e.g. baka); others via user-agent (e.g. MAM).
# peer-id format is essentially the same between 3.00 and 4.x (just swap the MAJOR/MINOR/PATCH numbers).
# user-agent format has changed. `Transmission/3.00` (old) v.s. `TRANSMISSION/MAJ.MIN.PATCH` (new).
realTransmission = pkgs.transmission_4;
realVersion = {
major = lib.versions.major realTransmission.version;
minor = lib.versions.minor realTransmission.version;
patch = lib.versions.patch realTransmission.version;
};
package = realTransmission.overrideAttrs (upstream: {
# `cmakeFlags = [ "-DTR_VERSION_MAJOR=3" ]`, etc, doesn't seem to take effect.
postPatch = (upstream.postPatch or "") + ''
substituteInPlace CMakeLists.txt \
--replace-fail 'TR_VERSION_MAJOR "${realVersion.major}"' 'TR_VERSION_MAJOR "3"' \
--replace-fail 'TR_VERSION_MINOR "${realVersion.minor}"' 'TR_VERSION_MINOR "0"' \
--replace-fail 'TR_VERSION_PATCH "${realVersion.patch}"' 'TR_VERSION_PATCH "0"' \
--replace-fail 'set(TR_USER_AGENT_PREFIX "''${TR_SEMVER}")' 'set(TR_USER_AGENT_PREFIX "3.00")'
'';
});
download-dir = "/var/media/torrents";
torrent-done = pkgs.writeShellApplication {
name = "torrent-done";
runtimeInputs = with pkgs; [
acl
coreutils
findutils
rsync
util-linux
];
text = ''
destructive() {
if [ -n "''${TR_DRY_RUN-}" ]; then
echo "$*"
else
"$@"
fi
}
if [[ "$TR_TORRENT_DIR" =~ ^.*freeleech.*$ ]]; then
# freeleech torrents have no place in my permanent library
echo "freeleech: nothing to do"
exit 0
fi
if ! [[ "$TR_TORRENT_DIR" =~ ^${download-dir}/.*$ ]]; then
echo "unexpected torrent dir, aborting: $TR_TORRENT_DIR"
exit 0
fi
REL_DIR="''${TR_TORRENT_DIR#${download-dir}/}"
MEDIA_DIR="/var/media/$REL_DIR"
destructive mkdir -p "$(dirname "$MEDIA_DIR")"
destructive rsync -arv "$TR_TORRENT_DIR/" "$MEDIA_DIR/"
# make the media rwx by anyone in the group
destructive find "$MEDIA_DIR" -type d -exec setfacl --recursive --modify d:g::rwx,o::rx {} \;
destructive find "$MEDIA_DIR" -type d -exec chmod g+rw,a+rx {} \;
# if there's a single directory inside the media dir, then inline that
subdirs=("$MEDIA_DIR"/*)
if [ ''${#subdirs} -eq 1 ]; then
dirname="''${subdirs[0]}"
if [ -d "$dirname" ]; then
mv "$dirname"/* "$MEDIA_DIR/" && rmdir "$dirname"
fi
fi
# remove noisy files:
find "$MEDIA_DIR/" -type f \(\
-iname 'www.YTS.*.jpg' \
-o -iname 'WWW.YIFY*.COM.jpg' \
-o -iname 'YIFY*.com.txt' \
-o -iname 'YTS*.com.txt' \
\) -exec rm {} \;
# dedupe the whole media library.
# yeah, a bit excessive: move this to a cron job if that's problematic.
destructive hardlink /var/media --reflink=always --ignore-time --verbose
'';
};
in
{
sane.persist.sys.plaintext = [
sane.persist.sys.byStore.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"; method = "bind"; }
];
users.users.transmission.extraGroups = [ "media" ];
services.transmission.enable = true;
services.transmission.package = package;
#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 = {
rpc-bind-address = "0.0.0.0";
# DOCUMENTATION/options list: <https://github.com/transmission/transmission/blob/main/docs/Editing-Configuration-Files.md#options>
# message-level = 3; #< enable for debug logging. 0-3, default is 2.
# 10.0.1.6 => allow rpc only from the root servo ns. it'll tunnel things to the net, if need be.
rpc-bind-address = "10.0.1.6";
#rpc-host-whitelist = "bt.uninsane.org";
#rpc-whitelist = "*.*.*.*";
rpc-authentication-required = true;
@ -17,35 +116,54 @@
rpc-password = "{503fc8928344f495efb8e1f955111ca5c862ce0656SzQnQ5";
rpc-whitelist-enabled = false;
# download-dir = "/opt/uninsane/media/";
# force behind ovpns in case the NetworkNamespace fails somehow
bind-address-ipv4 = "185.157.162.178";
port-forwarding-enabled = false;
# 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;
# units in kBps
speed-limit-down = 3000;
speed-limit-down = 12000;
speed-limit-down-enabled = true;
speed-limit-up = 600;
speed-limit-up = 800;
speed-limit-up-enabled = true;
# see: https://git.zknt.org/mirror/transmission/commit/cfce6e2e3a9b9d31a9dafedd0bdc8bf2cdb6e876?lang=bg-BG
anti-brute-force-enabled = false;
download-dir = "/var/lib/uninsane/media";
incomplete-dir = "/var/lib/uninsane/media/incomplete";
inherit download-dir;
incomplete-dir = "${download-dir}/incomplete";
# transmission regularly fails to move stuff from the incomplete dir to the main one, so disable:
incomplete-dir-enabled = false;
# env vars available in script:
# - TR_APP_VERSION - Transmission's short version string, e.g. `4.0.0`
# - TR_TIME_LOCALTIME
# - TR_TORRENT_BYTES_DOWNLOADED - Number of bytes that were downloaded for this torrent
# - TR_TORRENT_DIR - Location of the downloaded data
# - TR_TORRENT_HASH - The torrent's info hash
# - TR_TORRENT_ID
# - TR_TORRENT_LABELS - A comma-delimited list of the torrent's labels
# - TR_TORRENT_NAME - Name of torrent (not filename)
# - TR_TORRENT_TRACKERS - A comma-delimited list of the torrent's trackers' announce URLs
script-torrent-done-enabled = true;
script-torrent-done-filename = "${torrent-done}/bin/torrent-done";
};
# 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";
ExecStartPre = [ "${lib.getExe pkgs.sane-scripts.ip-check} --no-upnp --expect 185.157.162.178" ]; # abort if public IP is not as expected
Restart = "on-failure";
RestartSec = "30s";
BindPaths = [ "/var/media" ]; #< so it can move completed torrents into the media library
};
# service to automatically backup torrents i add to transmission
@ -76,5 +194,10 @@
};
sane.dns.zones."uninsane.org".inet.CNAME."bt" = "native";
sane.ports.ports."51413" = {
protocol = [ "tcp" "udp" ];
visibleTo.ovpn = true;
description = "colin-bittorrent";
};
}

View File

@ -1,15 +1,19 @@
# TODO: split this file apart into smaller files to make it easier to understand
{ config, lib, pkgs, ... }:
let
dyn-dns = config.sane.services.dyn-dns;
nativeAddrs = lib.mapAttrs (_name: builtins.head) config.sane.dns.zones."uninsane.org".inet.A;
bindOvpn = "10.0.1.5";
in
{
sane.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.
config.sane.hosts.by-name."servo".lan-ip
"10.0.1.5"
];
sane.services.trust-dns.quiet = true;
sane.ports.ports."53" = {
protocol = [ "udp" "tcp" ];
visibleTo.lan = true;
visibleTo.wan = true;
visibleTo.ovpn = true;
description = "colin-dns-hosting";
};
sane.dns.zones."uninsane.org".TTL = 900;
@ -24,18 +28,19 @@
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" = "2023052901";
TXT."rev" = "2023092101";
CNAME."native" = "%CNAMENATIVE%";
A."@" = "%ANATIVE%";
A."wan" = "%AWAN%";
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.
@ -51,49 +56,8 @@
];
};
# we need trust-dns to load our zone by relative path instead of /nix/store path
# because we generate it at runtime.
sane.services.trust-dns.zones."uninsane.org".file = lib.mkForce "uninsane.org.zone";
sane.services.trust-dns.zonedir = null;
services.trust-dns.settings.zones = [ "uninsane.org" ];
sane.services.trust-dns.package =
let
sed = "${pkgs.gnused}/bin/sed";
zone-dir = "/var/lib/trust-dns";
zone-wan = "${zone-dir}/wan/uninsane.org.zone";
zone-lan = "${zone-dir}/lan/uninsane.org.zone";
zone-template = pkgs.writeText "uninsane.org.zone.in" config.sane.services.trust-dns.zones."uninsane.org".text;
in pkgs.writeShellScriptBin "named" ''
# compute wan/lan values
mkdir -p ${zone-dir}/{ovpn,wan,lan}
wan=$(cat '${config.sane.services.dyn-dns.ipPath}')
lan=${config.sane.hosts.by-name."servo".lan-ip}
# create specializations that resolve native.uninsane.org to different CNAMEs
${sed} s/%AWAN%/$wan/ ${zone-template} \
| ${sed} s/%CNAMENATIVE%/wan/ \
| ${sed} s/%ANATIVE%/$wan/ \
> ${zone-wan}
${sed} s/%AWAN%/$wan/ ${zone-template} \
| ${sed} s/%CNAMENATIVE%/servo.lan/ \
| ${sed} s/%ANATIVE%/$lan/ \
> ${zone-lan}
# launch the different interfaces, separately
${pkgs.trust-dns}/bin/named --port 53 --zonedir ${zone-dir}/wan/ $@ &
WANPID=$!
${pkgs.trust-dns}/bin/named --port 1053 --zonedir ${zone-dir}/lan/ $@ &
LANPID=$!
# wait until any of the processes exits, then kill them all and exit error
while kill -0 $WANPID $LANPID ; do
sleep 5
done
kill $WANPID $LANPID
exit 1
'';
sane.services.dyn-dns.restartOnChange = [ "trust-dns.service" ];
networking.nat.enable = true;
networking.nat.extraCommands = ''
@ -109,12 +73,87 @@
-m iprange --src-range 10.78.76.0-10.78.79.255 \
-j DNAT --to-destination :1053
'';
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";
};
sane.services.trust-dns.enable = true;
sane.services.trust-dns.instances = let
mkSubstitutions = flavor: {
"%AWAN%" = "$(cat '${dyn-dns.ipPath}')";
"%CNAMENATIVE%" = "servo.${flavor}";
"%ANATIVE%" = nativeAddrs."servo.${flavor}";
"%AOVPNS%" = "185.157.162.178";
};
in
{
wan = {
substitutions = mkSubstitutions "wan";
listenAddrsIpv4 = [
nativeAddrs."servo.lan"
bindOvpn
];
};
lan = {
substitutions = mkSubstitutions "lan";
listenAddrsIpv4 = [ nativeAddrs."servo.lan" ];
port = 1053;
};
hn = {
substitutions = mkSubstitutions "hn";
listenAddrsIpv4 = [ nativeAddrs."servo.hn" ];
port = 1053;
};
# hn-resolver = {
# # don't need %AWAN% here because we forward to the hn instance.
# listenAddrsIpv4 = [ nativeAddrs."servo.hn" ];
# extraConfig = {
# zones = [
# {
# zone = "uninsane.org";
# zone_type = "Forward";
# stores = {
# type = "forward";
# name_servers = [
# {
# socket_addr = "${nativeAddrs."servo.hn"}:1053";
# protocol = "udp";
# trust_nx_responses = true;
# }
# ];
# };
# }
# {
# # 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;
# }
# ];
# };
# }
# ];
# };
# };
};
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,103 +1,49 @@
{ lib, pkgs, ... }:
{ config, lib, pkgs, ... }:
{
imports = [
./feeds.nix
./fs.nix
./hardware.nix
./hardware
./home
./hosts.nix
./ids.nix
./machine-id.nix
./net.nix
./nix-path
./net
./nix
./persist.nix
./polyunfill.nix
./programs
./secrets.nix
./ssh.nix
./users.nix
./vpn.nix
./systemd.nix
./users
];
sane.nixcache.enable-trusted-keys = true;
sane.nixcache.enable = lib.mkDefault true;
sane.persist.enable = lib.mkDefault true;
sane.root-on-tmpfs = lib.mkDefault true;
sane.programs.sysadminUtils.enableFor.system = lib.mkDefault true;
sane.programs.consoleUtils.enableFor.user.colin = lib.mkDefault 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";
nixpkgs.config.allowUnfree = true;
nixpkgs.config.allowBroken = true; # NIXPKGS_ALLOW_BROKEN
nixpkgs.config.allowUnfree = true; # NIXPKGS_ALLOW_UNFREE=1
nixpkgs.config.allowBroken = true; # NIXPKGS_ALLOW_BROKEN=1
# 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
'';
# 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 noto-fonts-emoji hack-font ];
fontconfig.enable = true;
fontconfig.defaultFonts = {
emoji = [ "Font Awesome 6 Free" "Noto Color Emoji" ];
monospace = [ "Hack" ];
serif = [ "DejaVu Serif" ];
sansSerif = [ "DejaVu Sans" ];
};
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>
# modified to not error on boot (when /run/current-system doesn't exist)
if [ -d /run/current-system ]; then
${pkgs.nvd}/bin/nvd --nix-bin-dir=${pkgs.nix}/bin diff /run/current-system "$systemConfig"
fi
'';
};
# XXX: twitter-color-emoji doesn't cross-compile; but not-fonts-emoji does
# 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" ];
# };
# };
# 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>
# find keys/values with `dconf dump /`
programs.dconf.enable = true;
programs.dconf.packages = [
(pkgs.writeTextFile {
name = "dconf-user-profile";
destination = "/etc/dconf/profile/user";
text = ''
user-db:user
system-db:site
'';
})
];
# link debug symbols into /run/current-system/sw/lib/debug
# hopefully picked up by gdb automatically?
environment.enableDebugInfo = true;

View File

@ -1,3 +1,8 @@
# where to find good stuff?
# - universal search/directory: <https://podcastindex.org>
# - 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
@ -46,6 +51,8 @@ let
else
"infrequent"
));
} // lib.optionalAttrs (lib.hasPrefix "https://www.youtube.com/" raw.url) {
format = "video";
} // lib.optionalAttrs (raw.is_podcast or false) {
format = "podcast";
} // lib.optionalAttrs (raw.title or "" != "") {
@ -53,191 +60,201 @@ let
};
podcasts = [
(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)
(fromDb "congressionaldish.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 "acquiredlpbonussecretsecret.libsyn.com" // tech) # ACQ2 - more "Acquired" episodes
(fromDb "allinchamathjason.libsyn.com" // 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
(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)
(fromDb "anchor.fm/s/34c7232c/podcast/rss" // tech) # Civboot -- https://anchor.fm/civboot
(fromDb "anchor.fm/s/2da69154/podcast/rss" // tech) # POD OF JAKE -- https://podofjake.com/
(fromDb "cast.postmarketos.org" // tech)
(fromDb "congressionaldish.libsyn.com" // pol) # Jennifer Briney
(fromDb "craphound.com" // pol) # Cory Doctorow -- both podcast & text entries
(fromDb "darknetdiaries.com" // tech)
## Radiolab -- also available here, but ONLY OVER HTTP: <http://feeds.wnyc.org/radiolab>
(fromDb "feeds.feedburner.com/radiolab" // pol)
## Sam Harris
(fromDb "wakingup.libsyn.com" // pol)
## 99% Invisible -- also available here: <https://feeds.simplecast.com/BqbsxVfO>
(fromDb "feeds.99percentinvisible.org/99percentinvisible" // pol)
(fromDb "rss.acast.com/ft-tech-tonic" // tech)
(fromDb "feed.podbean.com/matrixlive/feed.xml" // tech) # Matrix (chat) Live
(fromDb "feeds.99percentinvisible.org/99percentinvisible" // pol) # 99% Invisible -- also available here: <https://feeds.simplecast.com/BqbsxVfO>
(fromDb "feeds.feedburner.com/80000HoursPodcast" // rat)
(fromDb "feeds.feedburner.com/dancarlin/history" // rat)
(fromDb "feeds.feedburner.com/radiolab" // pol) # Radiolab -- also available here, but ONLY OVER HTTP: <http://feeds.wnyc.org/radiolab>
(fromDb "feeds.megaphone.fm/behindthebastards" // pol) # also Maggie Killjoy
(fromDb "feeds.megaphone.fm/recodedecode" // tech) # The Verge - Decoder
(fromDb "feeds.simplecast.com/54nAGcIl" // pol) # The Daily
(fromDb "feeds.simplecast.com/82FI35Px" // pol) # Ezra Klein Show
(fromDb "feeds.simplecast.com/wgl4xEgL" // rat) # Econ Talk
(fromDb "feeds.simplecast.com/xKJ93w_w" // uncat) # Atlas Obscura
(fromDb "feeds.transistor.fm/acquired" // tech)
(fromDb "fulltimenix.com" // tech)
(fromDb "futureofcoding.org/episodes" // tech)
(fromDb "hackerpublicradio.org" // tech)
(fromDb "lexfridman.com/podcast" // rat)
(fromDb "mapspodcast.libsyn.com" // uncat) # Multidisciplinary Association for Psychedelic Studies
(fromDb "microarch.club" // tech)
(fromDb "omegataupodcast.net" // tech) # 3/4 German; 1/4 eps are English
(fromDb "omny.fm/shows/cool-people-who-did-cool-stuff" // pol) # Maggie Killjoy -- referenced by Cory Doctorow
(fromDb "omny.fm/shows/money-stuff-the-podcast") # Matt Levine
(fromDb "omny.fm/shows/the-dollop-with-dave-anthony-and-gareth-reynolds") # The Dollop history/comedy
(fromDb "originstories.libsyn.com" // uncat)
(fromDb "podcast.posttv.com/itunes/post-reports.xml" // pol)
(fromDb "politicalorphanage.libsyn.com" // pol)
(fromDb "reverseengineering.libsyn.com/rss" // tech) # UnNamed Reverse Engineering Podcast
(fromDb "rss.acast.com/deconstructed") # The Intercept - Deconstructed
(fromDb "rss.acast.com/ft-tech-tonic" // tech)
(fromDb "rss.acast.com/intercepted-with-jeremy-scahill") # The Intercept - Intercepted
(fromDb "rss.art19.com/60-minutes" // pol)
## The Verge - Decoder
(fromDb "feeds.megaphone.fm/recodedecode" // tech)
## Matrix (chat) Live
(fromDb "feed.podbean.com/matrixlive/feed.xml" // 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/the-portal" // rat) # Eric Weinstein
(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)
(fromDb "srslywrong.com" // pol)
(fromDb "sharkbytes.transistor.fm" // tech) # Wireshark Podcast o_0
(fromDb "sscpodcast.libsyn.com" // rat) # Astral Codex Ten
(fromDb "talesfromthebridge.buzzsprout.com" // tech) # Sci-Fi? has Peter Watts; author of No Moods, Ads or Cutesy Fucking Icons (rifters.com)
(fromDb "theamphour.com" // tech)
(fromDb "techtalesshow.com" // tech) # Corbin Davenport
(fromDb "techwontsave.us" // pol) # rec by Cory Doctorow
(fromDb "wakingup.libsyn.com" // pol) # Sam Harris
(fromDb "werenotwrong.fireside.fm" // pol)
(mkPod "https://sfconservancy.org/casts/the-corresponding-source/feeds/ogg/" // tech)
# (fromDb "feeds.libsyn.com/421877" // rat) # Less Wrong Curated
# (fromDb "feeds.megaphone.fm/hubermanlab" // uncat) # Daniel Huberman on sleep
# (fromDb "feeds.simplecast.com/l2i9YnTd" // tech // pol) # Hard Fork (NYtimes tech)
# (fromDb "podcast.thelinuxexp.com" // tech) # low-brow linux/foss PR announcements
# (fromDb "rss.art19.com/your-welcome" // pol) # Michael Malice - Your Welcome -- also available here: <https://origin.podcastone.com/podcast?categoryID2=2232>
# (fromDb "rss.prod.firstlook.media/deconstructed/podcast.rss" // pol) #< possible URL rot
# (fromDb "rss.prod.firstlook.media/intercepted/podcast.rss" // pol) #< possible URL rot
# (fromDb "trashfuturepodcast.podbean.com" // pol) # rec by Cory Doctorow, but way rambly
# (mkPod "https://anchor.fm/s/21bc734/podcast/rss" // pol // infrequent) # Emerge: making sense of what's next -- <https://www.whatisemerging.com/emergepodcast>
# (mkPod "https://audioboom.com/channels/5097784.rss" // tech) # Lateral with Tom Scott
# (mkPod "https://feeds.megaphone.fm/RUNMED9919162779" // pol // infrequent) # The Witch Trials of J.K. Rowling: <https://www.thefp.com/witchtrials>
# (mkPod "https://podcasts.la.utexas.edu/this-is-democracy/feed/podcast/" // pol // weekly)
];
texts = [
# AGGREGATORS (> 1 post/day)
(fromDb "lwn.net" // tech)
(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)
## No Moods, Ads or Cutesy Fucking Icons
(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 "mg.lol" // tech)
# (fromDb "drewdevault.com" // tech)
## Ken Shirriff
(fromDb "righto.com" // tech)
## shared blog by a few NixOS devs, notably onny
(fromDb "project-insanity.org" // tech)
## Vitalik Buterin
(fromDb "vitalik.ca" // tech)
## ian (Sanctuary)
(fromDb "sagacioussuricata.com" // tech)
## Bunnie Juang
(fromDb "bunniestudios.com" // tech)
(fromDb "blog.danieljanus.pl" // tech)
(fromDb "ianthehenry.com" // tech)
(fromDb "bitbashing.io" // tech)
(fromDb "idiomdrottning.org" // uncat)
(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
(fromDb "interconnected.org/home/feed" // rat)
(fromDb "edwardsnowden.substack.com" // pol // text)
## Julia Evans
(mkText "https://jvns.ca/atom.xml" // tech // weekly)
(mkText "http://benjaminrosshoffman.com/feed" // pol // weekly)
## Ben Thompson
(mkText "https://www.stratechery.com/rss" // pol // weekly)
## Balaji
(fromDb "balajis.com" // pol)
(fromDb "ben-evans.com/benedictevans" // pol)
(fromDb "lynalden.com" // pol)
(fromDb "austinvernon.site" // tech)
(mkSubstack "oversharing" // pol // daily)
(mkSubstack "byrnehobart" // pol // infrequent)
# (mkSubstack "doomberg" // tech // weekly) # articles are all pay-walled
## David Rosenthal
(fromDb "blog.dshr.org" // pol)
## Matt Levine
(mkText "https://www.bloomberg.com/opinion/authors/ARbTQlRLRjE/matthew-s-levine.rss" // pol // weekly)
(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)
(fromDb "unintendedconsequenc.es" // rat)
(fromDb "acoup.blog/feed") # history, states. author: <https://historians.social/@bretdevereaux/following>
(fromDb "amosbbatto.wordpress.com" // tech)
(fromDb "anish.lakhwara.com" // tech)
(fromDb "apenwarr.ca/log/rss.php" // tech) # CEO of tailscale
(fromDb "applieddivinitystudies.com" // rat)
(fromDb "slimemoldtimemold.com" // rat)
(fromDb "richardcarrier.info" // rat)
(fromDb "gwern.net" // rat)
## Jason Crawford
(fromDb "rootsofprogress.org" // rat)
## Robin Hanson
(fromDb "overcomingbias.com" // rat)
## Scott Alexander
(mkSubstack "astralcodexten" // rat // daily)
## Paul Christiano
(fromDb "sideways-view.com" // rat)
## Sean Carroll
(fromDb "preposterousuniverse.com" // rat)
(mkSubstack "eliqian" // rat // weekly)
(mkText "https://acoup.blog/feed" // rat // weekly)
## mostly dating topics. not advice, or humor, but looking through a social lens
(fromDb "putanumonit.com" // rat)
# LOCAL
(fromDb "artemis.sh" // tech)
(fromDb "ascii.textfiles.com" // tech) # Jason Scott
(fromDb "austinvernon.site" // tech)
(fromDb "ben-evans.com/benedictevans" // pol)
(fromDb "bitbashing.io" // tech)
(fromDb "bitsaboutmoney.com" // uncat)
(fromDb "blog.danieljanus.pl" // tech)
(fromDb "blog.dshr.org" // pol) # David Rosenthal
(fromDb "blog.jmp.chat" // tech)
(fromDb "blog.rust-lang.org" // tech)
(fromDb "blog.thalheim.io" // tech) # Mic92
(fromDb "bunniestudios.com" // tech) # Bunnie Juang
(fromDb "capitolhillseattle.com" // pol)
(fromDb "edwardsnowden.substack.com" // pol // text)
(fromDb "fasterthanli.me" // tech)
(fromDb "gwern.net" // rat)
(fromDb "hardcoresoftware.learningbyshipping.com" // tech) # Steven Sinofsky
(fromDb "harihareswara.net" // tech // pol) # rec by Cory Doctorow
(fromDb "ianthehenry.com" // tech)
(fromDb "idiomdrottning.org" // uncat)
(fromDb "interconnected.org/home/feed" // rat) # Matt Webb -- engineering-ish, but dreamy
(fromDb "jeffgeerling.com" // tech)
(fromDb "jefftk.com" // tech)
(fromDb "jwz.org/blog" // tech // pol) # DNA lounge guy, loooong-time blogger
(fromDb "kill-the-newsletter.com/feeds/joh91bv7am2pnznv.xml" // pol) # Matt Levine - Money Stuff
(fromDb "kosmosghost.github.io/index.xml" // tech)
(fromDb "linmob.net" // tech)
(fromDb "lwn.net" // tech)
(fromDb "lynalden.com" // pol)
(fromDb "mako.cc/copyrighteous" // tech // pol) # rec by Cory Doctorow
(fromDb "mg.lol" // tech)
(fromDb "mindingourway.com" // rat)
(fromDb "morningbrew.com/feed" // pol)
(fromDb "nixpkgs.news" // tech)
(fromDb "overcomingbias.com" // rat) # Robin Hanson
(fromDb "palladiummag.com" // uncat)
(fromDb "philosopher.coach" // rat) # Peter Saint-Andre -- side project of stpeter.im
(fromDb "pomeroyb.com" // tech)
(fromDb "postmarketos.org/blog" // tech)
(fromDb "preposterousuniverse.com" // rat) # Sean Carroll
(fromDb "project-insanity.org" // tech) # shared blog by a few NixOS devs, notably onny
(fromDb "putanumonit.com" // rat) # mostly dating topics. not advice, or humor, but looking through a social lens
(fromDb "richardcarrier.info" // rat)
(fromDb "rifters.com/crawl" // uncat) # No Moods, Ads or Cutesy Fucking Icons
(fromDb "righto.com" // tech) # Ken Shirriff
(fromDb "rootsofprogress.org" // rat) # Jason Crawford
(fromDb "samuel.dionne-riel.com" // tech) # SamuelDR
(fromDb "sagacioussuricata.com" // tech) # ian (Sanctuary)
(fromDb "semiaccurate.com" // tech)
(fromDb "sideways-view.com" // rat) # Paul Christiano
(fromDb "slatecave.net" // tech)
(fromDb "slimemoldtimemold.com" // rat)
(fromDb "spectrum.ieee.org" // tech)
(fromDb "stpeter.im/atom.xml" // pol)
(fromDb "thediff.co" // pol) # Byrne Hobart
(fromDb "thisweek.gnome.org" // tech)
(fromDb "tuxphones.com" // tech)
(fromDb "uninsane.org" // tech)
(fromDb "unintendedconsequenc.es" // rat)
(fromDb "vitalik.eth.limo" // tech) # Vitalik Buterin
(fromDb "willow.phantoma.online") # wizard@xyzzy.link
(fromDb "xn--gckvb8fzb.com" // tech)
(mkSubstack "astralcodexten" // rat // daily) # Scott Alexander
(mkSubstack "eliqian" // rat // weekly)
(mkSubstack "oversharing" // pol // daily)
(mkSubstack "samkriss" // humor // infrequent)
(mkText "http://benjaminrosshoffman.com/feed" // pol // weekly)
(mkText "http://boginjr.com/feed" // tech // infrequent)
(mkText "https://forum.merveilles.town/rss.xml" // pol // infrequent) #quality RSS list here: <https://forum.merveilles.town/thread/57/share-your-rss-feeds%21-6/>
(mkText "https://jvns.ca/atom.xml" // tech // weekly) # Julia Evans
(mkText "https://linuxphoneapps.org/blog/atom.xml" // tech // infrequent)
(mkText "https://nixos.org/blog/announcements-rss.xml" // tech // infrequent) # more nixos stuff here, but unclear how to subscribe: <https://nixos.org/blog/categories.html>
(mkText "https://nixos.org/blog/stories-rss.xml" // tech // weekly)
(mkText "https://solar.lowtechmagazine.com/posts/index.xml" // tech // weekly)
(mkText "https://www.stratechery.com/rss" // pol // weekly) # Ben Thompson
# CODE
# (fromDb "balajis.com" // pol) # Balaji
# (fromDb "drewdevault.com" // tech)
# (fromDb "econlib.org" // pol)
# (fromDb "lesswrong.com" // rat)
# (fromDb "profectusmag.com" // pol) # some conservative/libertarian think tank
# (fromDb "thesideview.co" // uncat) # spiritual journal; RSS items are stubs
# (fromDb "theregister.com" // tech)
# (fromDb "vitalik.ca" // tech) # moved to vitalik.eth.limo
# (fromDb "webcurious.co.uk" // uncat) # link aggregator; defunct?
# (mkSubstack "doomberg" // tech // weekly) # articles are all pay-walled
# (mkText "https://github.com/Kaiteki-Fedi/Kaiteki/commits/master.atom" // tech // infrequent)
# (mkText "https://til.simonwillison.net/tils/feed.atom" // tech // weekly)
# (mkText "https://www.bloomberg.com/opinion/authors/ARbTQlRLRjE/matthew-s-levine.rss" // pol // weekly) # Matt Levine (preview/paywalled)
];
videos = [
(fromDb "youtube.com/@Channel5YouTube" // pol)
(fromDb "youtube.com/@ColdFusion")
(fromDb "youtube.com/@ContraPoints" // pol)
(fromDb "youtube.com/@Exurb1a")
(fromDb "youtube.com/@hbomberguy")
(fromDb "youtube.com/@JackStauber")
(fromDb "youtube.com/@NativLang")
(fromDb "youtube.com/@PolyMatter")
(fromDb "youtube.com/@TechnologyConnections" // tech)
(fromDb "youtube.com/@TheB1M")
(fromDb "youtube.com/@TomScottGo")
(fromDb "youtube.com/@Vihart")
(fromDb "youtube.com/@Vox")
(fromDb "youtube.com/@Vsauce")
# (fromDb "youtube.com/@rossmanngroup" // pol // tech) # Louis Rossmann
];
images = [
(fromDb "smbc-comics.com" // img // humor)
(fromDb "xkcd.com" // img // humor)
(fromDb "pbfcomics.com" // img // humor)
# (mkImg "http://dilbert.com/feed" // humor // daily)
(fromDb "poorlydrawnlines.com/feed" // img // humor)
# ART
(fromDb "catandgirl.com" // img // humor)
(fromDb "davidrevoy.com" // img // art)
(fromDb "grumpy.website" // img // humor)
(fromDb "miniature-calendar.com" // img // art // daily)
(fromDb "pbfcomics.com" // img // humor)
(fromDb "poorlydrawnlines.com/feed" // img // humor)
(fromDb "smbc-comics.com" // img // humor)
(fromDb "turnoff.us" // img // humor)
(fromDb "xkcd.com" // img // humor)
];
in
{
sane.feeds = texts ++ images ++ podcasts;
sane.feeds = texts ++ images ++ podcasts ++ videos;
assertions = builtins.map
(p: {

View File

@ -1,133 +1,236 @@
# docs
# - x-systemd options: <https://www.freedesktop.org/software/systemd/man/systemd.mount.html>
# - fuse options: `man mount.fuse`
{ pkgs, sane-lib, ... }:
{ config, lib, pkgs, sane-lib, utils, ... }:
let fsOpts = rec {
common = [
"_netdev"
"noatime"
"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"
];
let
fsOpts = rec {
common = [
"_netdev"
"noatime"
# user: allow any user with access to the device to mount the fs.
# note that this requires a suid `mount` binary; see: <https://zameermanji.com/blog/2022/8/5/using-fuse-without-root-on-linux/>
"user"
"x-systemd.requires=network-online.target"
"x-systemd.after=network-online.target"
"x-systemd.mount-timeout=10s" # how long to wait for mount **and** how long to wait for unmount
];
# x-systemd.automount: mount the fs automatically *on first access*.
# creates a `path-to-mount.automount` systemd unit.
automount = [ "x-systemd.automount" ];
# noauto: don't mount as part of remote-fs.target.
# N.B.: `remote-fs.target` is a dependency of multi-user.target, itself of graphical.target.
# hence, omitting `noauto` can slow down boots.
noauto = [ "noauto" ];
# lazyMount: defer mounting until first access from userspace.
# see: `man systemd.automount`, `man automount`, `man autofs`
lazyMount = noauto ++ automount;
wg = [
"x-systemd.requires=wireguard-wg-home.service"
"x-systemd.after=wireguard-wg-home.service"
];
ssh = common ++ [
"user"
"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>
fuse = [
"allow_other" # allow users other than the one who mounts it to access it. needed, if systemd is the one mounting this fs (as root)
# allow_root: allow root to access files on this fs (if mounted by non-root, else it can always access them).
# N.B.: if both allow_root and allow_other are specified, then only allow_root takes effect.
# "allow_root"
# default_permissions: enforce local permissions check. CRUCIAL if using `allow_other`.
# w/o this, permissions mode of sshfs is like:
# - sshfs runs all remote commands as the remote user.
# - if a local user has local permissions to the sshfs mount, then their file ops are sent blindly across the tunnel.
# - `allow_other` allows *any* local user to access the mount, and hence any local user can now freely become the remote mapped user.
# with default_permissions, sshfs doesn't tunnel file ops from users until checking that said user could perform said op on an equivalent local fs.
"default_permissions"
];
fuseColin = fuse ++ [
"uid=1000"
"gid=100"
];
# 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)
];
};
ssh = common ++ fuse ++ [
"identityfile=/home/colin/.ssh/id_ed25519"
# i *think* idmap=user means that `colin` on `localhost` and `colin` on the remote are actually treated as the same user, even if their uid/gid differs?
# i.e., local colin's id is translated to/from remote colin's id on every operation?
"idmap=user"
];
sshColin = ssh ++ fuseColin ++ [
# follow_symlinks: remote files which are symlinks are presented to the local system as ordinary files (as the target of the symlink).
# if the symlink target does not exist, the presentation is unspecified.
# symlinks which point outside the mount ARE followed. so this is more capable than `transform_symlinks`
"follow_symlinks"
# symlinks on the remote fs which are absolute paths are presented to the local system as relative symlinks pointing to the expected data on the remote fs.
# only symlinks which would point inside the mountpoint are translated.
"transform_symlinks"
];
# sshRoot = ssh ++ [
# # we don't transform_symlinks because that breaks the validity of remote /nix stores
# "sftp_server=/run/wrappers/bin/sudo\\040/run/current-system/sw/libexec/sftp-server"
# ];
# in the event of hunt NFS mounts, consider:
# - <https://unix.stackexchange.com/questions/31979/stop-broken-nfs-mounts-from-locking-a-directory>
# NFS options: <https://linux.die.net/man/5/nfs>
# actimeo=n = how long (in seconds) to cache file/dir attributes (default: 3-60s)
# bg = retry failed mounts in the background
# retry=n = for how many minutes `mount` will retry NFS mount operation
# intr = allow Ctrl+C to abort I/O (it will error with `EINTR`)
# soft = on "major timeout", report I/O error to userspace
# softreval = on "major timeout", service the request using known-stale cache results instead of erroring -- if such cache data exists
# retrans=n = how many times to retry a NFS request before giving userspace a "server not responding" error (default: 3)
# timeo=n = number of *deciseconds* to wait for a response before retrying it (default: 600)
# note: client uses a linear backup, so the second request will have double this timeout, then triple, etc.
# proto=udp = encapsulate protocol ops inside UDP packets instead of a TCP session.
# requires `nfsvers=3` and a kernel compiled with `NFS_DISABLE_UDP_SUPPORT=n`.
# UDP might be preferable to TCP because the latter is liable to hang for ~100s (kernel TCP timeout) after a link drop.
# however, even UDP has issues with `umount` hanging.
#
# N.B.: don't change these without first testing the behavior of sandboxed apps on a flaky network.
nfs = common ++ [
# "actimeo=5"
# "bg"
"retrans=1"
"retry=0"
# "intr"
"soft"
"softreval"
"timeo=30"
"nofail" # don't fail remote-fs.target when this mount fails (not an option for sshfs else would be common)
# "proto=udp" # default kernel config doesn't support NFS over UDP: <https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1964093> (see comment 11).
# "nfsvers=3" # NFSv4+ doesn't support UDP at *all*. it's ok to omit nfsvers -- server + client will negotiate v3 based on udp requirement. but omitting causes confusing mount errors when the server is *offline*, because the client defaults to v4 and thinks the udp option is a config error.
# "x-systemd.idle-timeout=10" # auto-unmount after this much inactivity
];
# manually perform a ftp mount via e.g.
# curlftpfs -o ftpfs_debug=2,user=anonymous:anonymous,connect_timeout=10 -f -s ftp://servo-hn /mnt/my-ftp
ftp = common ++ fuseColin ++ [
# "ftpfs_debug=2"
"user=colin:ipauth"
# connect_timeout=10: casting shows to T.V. fails partway through about half the time
"connect_timeout=20"
];
};
remoteHome = host: {
sane.programs.sshfs-fuse.enableFor.system = true;
fileSystems."/mnt/${host}/home" = {
device = "colin@${host}:/home/colin";
fsType = "fuse.sshfs";
options = fsOpts.sshColin ++ fsOpts.lazyMount;
noCheck = true;
};
sane.fs."/mnt/${host}/home" = sane-lib.fs.wanted {
dir.acl.user = "colin";
dir.acl.group = "users";
dir.acl.mode = "0700";
};
};
remoteServo = subdir: {
sane.programs.curlftpfs.enableFor.system = true;
sane.fs."/mnt/servo/${subdir}" = sane-lib.fs.wanted {
dir.acl.user = "colin";
dir.acl.group = "users";
dir.acl.mode = "0750";
};
fileSystems."/mnt/servo/${subdir}" = {
device = "ftp://servo-hn:/${subdir}";
noCheck = true;
fsType = "fuse.curlftpfs";
options = fsOpts.ftp ++ fsOpts.noauto ++ fsOpts.wg;
# fsType = "nfs";
# options = fsOpts.nfs ++ fsOpts.lazyMount ++ fsOpts.wg;
};
systemd.services."automount-servo-${utils.escapeSystemdPath subdir}" = let
fs = config.fileSystems."/mnt/servo/${subdir}";
in {
# this is a *flaky* network mount, especially on moby.
# if done as a normal autofs mount, access will eternally block when network is dropped.
# notably, this would block *any* sandboxed app which allows media access, whether they actually try to use that media or not.
# a practical solution is this: mount as a service -- instead of autofs -- and unmount on timeout error, in a restart loop.
# until the ftp handshake succeeds, nothing is actually mounted to the vfs, so this doesn't slow down any I/O when network is down.
description = "automount /mnt/servo/${subdir} in a fault-tolerant and non-blocking manner";
after = [ "network-online.target" ];
requires = [ "network-online.target" ];
wantedBy = [ "default.target" ];
serviceConfig.Type = "simple";
serviceConfig.ExecStart = lib.escapeShellArgs [
"/usr/bin/env"
"PATH=/run/current-system/sw/bin"
"mount.${fs.fsType}"
"-f" # foreground (i.e. don't daemonize)
"-s" # single-threaded (TODO: it's probably ok to disable this?)
"-o"
(lib.concatStringsSep "," (lib.filter (o: !lib.hasPrefix "x-systemd." o) fs.options))
fs.device
"/mnt/servo/${subdir}"
];
# not sure if this configures a linear, or exponential backoff.
# but the first restart will be after `RestartSec`, and the n'th restart (n = RestartSteps) will be RestartMaxDelaySec after the n-1'th exit.
serviceConfig.Restart = "always";
serviceConfig.RestartSec = "10s";
serviceConfig.RestartMaxDelaySec = "120s";
serviceConfig.RestartSteps = "5";
};
};
in
{
# 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-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";
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";
fsType = "fuse.sshfs";
options = fsOpts.sshColin ++ fsOpts.noauto;
noCheck = true;
};
sane.fs."/mnt/servo-media-wan" = sane-lib.fs.wantedDir;
fileSystems."/mnt/servo-media-lan" = {
device = "colin@servo:/var/lib/uninsane/media";
fsType = "fuse.sshfs";
options = fsOpts.sshColin ++ fsOpts.noauto;
noCheck = true;
};
sane.fs."/mnt/servo-media-lan" = sane-lib.fs.wantedDir;
fileSystems."/mnt/servo-root-wan" = {
device = "colin@uninsane.org:/";
fsType = "fuse.sshfs";
options = fsOpts.sshRoot ++ fsOpts.noauto;
noCheck = true;
};
sane.fs."/mnt/servo-root-wan" = sane-lib.fs.wantedDir;
fileSystems."/mnt/servo-root-lan" = {
device = "colin@servo:/";
fsType = "fuse.sshfs";
options = fsOpts.sshRoot ++ fsOpts.noauto;
noCheck = true;
};
sane.fs."/mnt/servo-root-lan" = sane-lib.fs.wantedDir;
fileSystems."/mnt/desko-home" = {
device = "colin@desko:/home/colin";
fsType = "fuse.sshfs";
options = fsOpts.sshColin ++ fsOpts.noauto;
noCheck = true;
};
sane.fs."/mnt/desko-home" = sane-lib.fs.wantedDir;
fileSystems."/mnt/desko-root" = {
device = "colin@desko:/";
fsType = "fuse.sshfs";
options = fsOpts.sshRoot ++ fsOpts.noauto;
noCheck = true;
};
sane.fs."/mnt/desko-root" = sane-lib.fs.wantedDir;
# in-memory compressed RAM
# defaults to compressing at most 50% size of RAM
# claimed compression ratio is about 2:1
# - but on moby w/ zstd default i see 4-7:1 (ratio lowers as it fills)
# note that idle overhead is about 0.05% of capacity (e.g. 2B per 4kB page)
# docs: <https://www.kernel.org/doc/Documentation/blockdev/zram.txt>
#
# to query effectiveness:
# `cat /sys/block/zram0/mm_stat`. whitespace separated fields:
# - *orig_data_size* (bytes)
# - *compr_data_size* (bytes)
# - mem_used_total (bytes)
# - mem_limit (bytes)
# - mem_used_max (bytes)
# - *same_pages* (pages which are e.g. all zeros (consumes no additional mem))
# - *pages_compacted* (pages which have been freed thanks to compression)
# - huge_pages (incompressible)
#
# see also:
# - `man zramctl`
zramSwap.enable = true;
# how much ram can be swapped into the zram device.
# this shouldn't be higher than the observed compression ratio.
# the default is 50% (why?)
# 100% should be "guaranteed" safe so long as the data is even *slightly* compressible.
# but it decreases working memory under the heaviest of loads by however much space the compressed memory occupies (e.g. 50% if 2:1; 25% if 4:1)
zramSwap.memoryPercent = 100;
environment.pathsToLink = [
# needed to achieve superuser access for user-mounted filesystems (see optionsRoot above)
# we can only link whole directories here, even though we're only interested in pkgs.openssh
"/libexec"
];
# environment.pathsToLink = [
# # needed to achieve superuser access for user-mounted filesystems (see sshRoot above)
# # we can only link whole directories here, even though we're only interested in pkgs.openssh
# "/libexec"
# ];
environment.systemPackages = [
pkgs.sshfs-fuse
];
}
programs.fuse.userAllowOther = true; #< necessary for `allow_other` or `allow_root` options.
}
(remoteHome "desko")
(remoteHome "lappy")
(remoteHome "moby")
# this granularity of servo media mounts is necessary to support sandboxing:
# for flaky mounts, we can only bind the mountpoint itself into the sandbox,
# so it's either this or unconditionally bind all of media/.
(remoteServo "media/archive")
(remoteServo "media/Books")
(remoteServo "media/collections")
# (remoteServo "media/datasets")
(remoteServo "media/games")
(remoteServo "media/Music")
(remoteServo "media/Pictures/macros")
(remoteServo "media/torrents")
(remoteServo "media/Videos")
(remoteServo "playground")
]

View File

@ -1,45 +0,0 @@
{ lib, pkgs, ... }:
{
boot.initrd.supportedFilesystems = [ "ext4" "btrfs" "ext2" "ext3" "vfat" ];
# useful emergency utils
boot.initrd.extraUtilsCommands = ''
copy_bin_and_libs ${pkgs.btrfs-progs}/bin/btrfstune
'';
boot.kernelParams = [ "boot.shell_on_fail" ];
# other kernelParams:
# "boot.trace"
# "systemd.log_level=debug"
# "systemd.log_target=console"
# hack in the `boot.shell_on_fail` arg since that doesn't always seem to work.
boot.initrd.preFailCommands = "allowShell=1";
# default: 4 (warn). 7 is debug
boot.consoleLogLevel = 7;
boot.loader.grub.enable = lib.mkDefault false;
boot.loader.generic-extlinux-compatible.enable = lib.mkDefault true;
# 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;
services.logind.extraConfig = ''
# dont shutdown when power button is short-pressed
HandlePowerKey=ignore
'';
# services.snapper.configs = {
# root = {
# subvolume = "/";
# extraConfig = {
# ALLOW_USERS = "colin";
# };
# };
# };
# services.snapper.snapshotInterval = "daily";
}

View File

@ -0,0 +1,99 @@
{ config, lib, pkgs, ... }:
{
imports = [
./x86_64.nix
];
boot.initrd.supportedFilesystems = [ "ext4" "btrfs" "ext2" "ext3" "vfat" ];
# useful emergency utils
boot.initrd.extraUtilsCommands = ''
copy_bin_and_libs ${pkgs.btrfs-progs}/bin/btrfstune
copy_bin_and_libs ${pkgs.util-linux}/bin/{cfdisk,lsblk,lscpu}
copy_bin_and_libs ${pkgs.gptfdisk}/bin/{cgdisk,gdisk}
copy_bin_and_libs ${pkgs.smartmontools}/bin/smartctl
copy_bin_and_libs ${pkgs.e2fsprogs}/bin/resize2fs
'' + lib.optionalString pkgs.stdenv.hostPlatform.isx86_64 ''
copy_bin_and_libs ${pkgs.nvme-cli}/bin/nvme # doesn't cross compile
'';
boot.kernelParams = [
"boot.shell_on_fail"
#v experimental full pre-emption for hopefully better call/audio latency on moby.
# also toggleable at runtime via /sys/kernel/debug/sched/preempt
# defaults to preempt=voluntary
# "preempt=full"
];
# other kernelParams:
# "boot.trace"
# "systemd.log_level=debug"
# "systemd.log_target=console"
# moby has to run recent kernels (defined elsewhere).
# meanwhile, kernel variation plays some minor role in things like sandboxing (landlock) and capabilities.
# simpler to keep near the latest kernel on all devices,
# and also makes certain that any weird system-level bugs i see aren't likely to be stale kernel bugs.
# servo needs zfs though, which doesn't support every kernel.
boot.kernelPackages = lib.mkDefault pkgs.zfs.latestCompatibleLinuxPackages;
# TODO: remove after linux 6.9. see: <https://github.com/axboe/liburing/issues/1113>
# - <https://github.com/neovim/neovim/issues/28149>
# - <https://git.kernel.dk/cgit/linux/commit/?h=io_uring-6.9&id=e5444baa42e545bb929ba56c497e7f3c73634099>
# when removing, try starting and suspending (ctrl+z) two instances of neovim simultaneously.
# if the system doesn't freeze, then this is safe to remove.
# added 2024-04-04
sane.user.fs.".profile".symlink.text = lib.mkBefore ''
export UV_USE_IO_URING=0
'';
# hack in the `boot.shell_on_fail` arg since that doesn't always seem to work.
boot.initrd.preFailCommands = "allowShell=1";
# default: 4 (warn). 7 is debug
boot.consoleLogLevel = 7;
boot.loader.grub.enable = lib.mkDefault false;
boot.loader.generic-extlinux-compatible.enable = lib.mkDefault true;
# non-free firmware
hardware.enableRedistributableFirmware = true;
# default is 252274, which is too low particularly for servo.
# manifests as spurious "No space left on device" when trying to install watches,
# e.g. in dyn-dns by `systemctl start dyn-dns-watcher.path`.
# see: <https://askubuntu.com/questions/828779/failed-to-add-run-systemd-ask-password-to-directory-watch-no-space-left-on-dev>
boot.kernel.sysctl."fs.inotify.max_user_watches" = 1048576;
# 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";
# see: `man logind.conf`
# dont shutdown when power button is short-pressed (commonly done an accident, or by cats).
# but do on long-press: useful to gracefully power-off server.
services.logind.powerKey = "lock";
services.logind.powerKeyLongPress = "poweroff";
services.logind.lidSwitch = "lock";
# services.snapper.configs = {
# root = {
# subvolume = "/";
# extraConfig = {
# ALLOW_USERS = "colin";
# };
# };
# };
# services.snapper.snapshotInterval = "daily";
}

View File

@ -9,12 +9,7 @@
# efi_pstore evivars
];
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,7 +1,7 @@
{ ... }:
{
imports = [
./keyring.nix
./fs.nix
./mime.nix
./ssh.nix
./xdg-dirs.nix

45
hosts/common/home/fs.nix Normal file
View File

@ -0,0 +1,45 @@
{ config, lib, ... }:
{
sane.user.persist.byStore.plaintext = [
"archive"
"dev"
# TODO: records should be private
"records"
"ref"
"tmp"
"use"
"Books/local"
"Music"
"Pictures/albums"
"Pictures/cat"
"Pictures/from"
"Pictures/Screenshots" #< XXX: something is case-sensitive about this?
"Pictures/Photos"
"Videos/local"
# these are persisted simply to save on RAM.
# ~/.cache/nix can become several GB.
# mesa_shader_cache is < 10 MB.
# TODO: integrate with sane.programs.sandbox?
".cache/mesa_shader_cache"
".cache/nix"
];
sane.user.persist.byStore.private = [
"knowledge"
];
# convenience
sane.user.fs = let
persistEnabled = config.sane.persist.enable;
in {
".persist/private" = lib.mkIf persistEnabled { symlink.target = config.sane.persist.stores.private.origin; };
".persist/plaintext" = lib.mkIf persistEnabled { symlink.target = config.sane.persist.stores.plaintext.origin; };
".persist/ephemeral" = lib.mkIf persistEnabled { symlink.target = config.sane.persist.stores.cryptClearOnBoot.origin; };
"nixos".symlink.target = "dev/nixos";
"Books/servo".symlink.target = "/mnt/servo/media/Books";
"Videos/servo".symlink.target = "/mnt/servo/media/Videos";
"Pictures/servo-macros".symlink.target = "/mnt/servo/media/Pictures/macros";
};
}

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

@ -1,43 +1,94 @@
{ config, sane-lib, ...}:
# TODO: move into modules/users.nix
{ config, lib, pkgs, ...}:
let
www = config.sane.programs.web-browser.config.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 ]
enabledPrograms = builtins.filter
(p: p.enabled)
(builtins.attrValues config.sane.programs);
# [ ProgramConfig ]
enabledProgramsWithPackage = builtins.filter (p: p.package != null) enabledPrograms;
# [ { "<mime-type>" = { prority, desktop } ]
enabledWeightedMimes = builtins.map weightedMimes enabledPrograms;
# 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: lib.throwIf
(l.priority == r.priority)
"${l.desktop} and ${r.desktop} share a preferred mime type with identical priority ${builtins.toString l.priority} (and so the desired association is ambiguous)"
(l.priority < r.priority)
)
associations;
sortMimes = mimes: builtins.mapAttrs (_k: sortOneMimeType) mimes;
# { "<mime-type>"} = [ { priority, desktop } ... ]; } -> { "<mime-type>" = [ "<desktop>" ... ]; }
removePriorities = mimes: builtins.mapAttrs
(_k: associations: builtins.map (a: a.desktop) associations)
mimes;
# { "<mime-type>" = [ "<desktop>" ... ]; } -> { "<mime-type>" = "<desktop1>;<desktop2>;..."; }
formatDesktopLists = mimes: builtins.mapAttrs
(_k: desktops: lib.concatStringsSep ";" desktops)
mimes;
mimeappsListPkg = pkgs.writeTextDir "share/applications/mimeapps.list" (
lib.generators.toINI { } {
"Default Applications" = formatDesktopLists (removePriorities (sortMimes (mergeMimes enabledWeightedMimes)));
}
);
localShareApplicationsPkg = (pkgs.symlinkJoin {
name = "user-local-share-applications";
paths = builtins.map
(p: "${p.package}")
(enabledProgramsWithPackage ++ [ { package=mimeappsListPkg; } ]);
}).overrideAttrs (orig: {
# like normal symlinkJoin, but don't error if the path doesn't exist
buildCommand = ''
mkdir -p $out/share/applications
for i in $(cat $pathsPath); do
if [ -e "$i/share/applications" ]; then
${pkgs.buildPackages.xorg.lndir}/bin/lndir -silent $i/share/applications $out/share/applications
fi
done
runHook postBuild
'';
postBuild = ''
# rebuild `mimeinfo.cache`, used by file openers to show the list of *all* apps, not just the user's defaults.
${pkgs.buildPackages.desktop-file-utils}/bin/update-desktop-database $out/share/applications
'';
});
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)
# the nix-configured handler can be found `nix-repl > :lf . > hostConfigs.desko.xdg.mime.defaultApplications`
#
# glib/gio is queried via glib.bin output:
# - `gio mime x-scheme-handler/https`
# - `gio open <path_or_url>`
# - `gio launch </path/to/app.desktop>`
#
# 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/webm" = 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;
};
# N.B.: don't use nixos' `xdg.mime` option becaue that caues `/share/applications` to be linked into the whole system,
# which limits what i can do around sandboxing. getting the default associations to live in ~/ makes it easier to expose
# the associations to apps selectively.
# xdg.mime.enable = true;
# xdg.mime.defaultApplications = removePriorities (sortMimes (mergeMimes enabledWeightedMimes));
sane.user.fs.".local/share/applications".symlink.target = "${localShareApplicationsPkg}/share/applications";
}

View File

@ -1,26 +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-full = config.sane.ssh.pubkeys."colin@${host}" or {};
user-pubkey = user-pubkey-full.asUserKey or null;
host-keys = filter (k: k.user == "root") (attrValues config.sane.ssh.pubkeys);
known-hosts-text = concatStringsSep
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" =
mkIf (user-pubkey != null) (sane-lib.fs.wantedText user-pubkey);
sane.user.fs.".ssh/known_hosts" = sane-lib.fs.wantedText known-hosts-text;
sane.user.persist.byStore.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,20 +1,33 @@
{ 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 ''
# note that several of these are not actually standardized anywhere.
# some are even non-conventional, like:
# - XDG_PHOTOS_DIR: only works because i patch e.g. megapixels
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"
XDG_MUSIC_DIR="$HOME/Music"
XDG_PHOTOS_DIR="$HOME/Pictures/Photos"
XDG_PICTURES_DIR="$HOME/Pictures"
XDG_PUBLICSHARE_DIR="$HOME/.xdg/Public"
XDG_SCREENSHOTS_DIR="$HOME/Pictures/Screenshots"
XDG_TEMPLATES_DIR="$HOME/.xdg/Templates"
XDG_VIDEOS_DIR="$HOME/Videos"
'';
# 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";
sane.user.fs.".profile".symlink.text = ''
# configure XDG_<type>_DIR preferences (e.g. for downloads, screenshots, etc)
# surround with `set -o allexport` since user-dirs.dirs doesn't `export` its vars
set -a
source $HOME/.config/user-dirs.dirs
set +a
'';
}

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

@ -42,6 +42,23 @@
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.monero.uid = 2416;
sane.ids.monero.gid = 2416;
sane.ids.slskd.uid = 2417;
sane.ids.slskd.gid = 2417;
sane.ids.bitcoind-mainnet.uid = 2418;
sane.ids.bitcoind-mainnet.gid = 2418;
sane.ids.clightning.uid = 2419;
sane.ids.clightning.gid = 2419;
sane.ids.nix-serve.uid = 2420;
sane.ids.nix-serve.gid = 2420;
sane.ids.colin.uid = 1000;
sane.ids.guest.uid = 1100;
@ -56,6 +73,8 @@
sane.ids.systemd-oom.uid = 2005;
sane.ids.systemd-oom.gid = 2005;
sane.ids.wireshark.gid = 2006;
sane.ids.nixremote.uid = 2007;
sane.ids.nixremote.gid = 2007;
# found on graphical hosts
sane.ids.nm-iodine.uid = 2101; # desko/moby/lappy
@ -79,4 +98,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,27 +0,0 @@
{ lib, ... }:
{
# the default backend is "wpa_supplicant".
# wpa_supplicant reliably picks weak APs to connect to.
# see: <https://gitlab.freedesktop.org/NetworkManager/NetworkManager/-/issues/474>
# iwd is an alternative that shouldn't have this problem
# docs:
# - <https://nixos.wiki/wiki/Iwd>
# - <https://iwd.wiki.kernel.org/networkmanager>
# - `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.firewall.allowedUDPPorts = [
1900 # to received UPnP advertisements. required by sane-ip-check-upnp
];
}

View File

@ -0,0 +1,64 @@
{ lib, ... }:
{
imports = [
./dns.nix
./hostnames.nix
./upnp.nix
./vpn.nix
];
systemd.network.enable = true;
networking.useNetworkd = true;
# view refused/dropped packets with: `sudo journalctl -k`
# networking.firewall.logRefusedPackets = true;
# networking.firewall.logRefusedUnicastsOnly = false;
networking.firewall.logReversePathDrops = true;
# linux will drop inbound packets if it thinks a reply to that packet wouldn't exit via the same interface (rpfilter).
# that heuristic fails for complicated VPN-style routing, especially with SNAT.
# networking.firewall.checkReversePath = false; # or "loose" to keep it partially.
# networking.firewall.enable = false; #< set false to debug
# this is needed to forward packets from the VPN to the host.
# this is required separately by servo and by any `sane-vpn` users,
# however Nix requires this be set centrally, in only one location (i.e. here)
boot.kernel.sysctl."net.ipv4.ip_forward" = 1;
# the default backend is "wpa_supplicant".
# wpa_supplicant reliably picks weak APs to connect to.
# see: <https://gitlab.freedesktop.org/NetworkManager/NetworkManager/-/issues/474>
# iwd is an alternative that shouldn't have this problem
# docs:
# - <https://nixos.wiki/wiki/Iwd>
# - <https://iwd.wiki.kernel.org/networkmanager>
# - `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
# };
# 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 [];
# keyfile.path = where networkmanager should look for connection credentials
networking.networkmanager.settings.keyfile.path = "/var/lib/NetworkManager/system-connections";
}

74
hosts/common/net/dns.nix Normal file
View File

@ -0,0 +1,74 @@
# things to consider when changing these parameters:
# - temporary VPN access (`sane-vpn up ...`)
# - servo `ovpns` namespace (it *relies* on /etc/resolv.conf mentioning 127.0.0.53)
# - jails: `firejail --net=br-ovpnd-us --noprofile --dns=46.227.67.134 ping 1.1.1.1`
#
# components:
# - /etc/nsswitch.conf:
# - glibc uses this to provide `getaddrinfo`, i.e. host -> ip address lookup
# call directly with `getent ahostsv4 www.google.com`
# - `nss` (a component of glibc) is modular: names mentioned in that file are `dlopen`'d (i think that's the mechanism)
# in NixOS, that means _they have to be on LDPATH_.
# - `nscd` is used by NixOS simply to proxy nss requests.
# here, /etc/nsswitch.conf consumers contact nscd via /var/run/nscd/socket.
# in this way, only `nscd` needs to have the nss modules on LDPATH.
# - /etc/resolv.conf
# - contains the DNS servers for a system.
# - historically, NetworkManager would update this file as you switch networks.
# - modern implementations hardcodes `127.0.0.53` and then systemd-resolved proxies everything (and caches).
#
# namespacing:
# - each namespace can use a different /etc/resolv.conf to specify different DNS servers (see `firejail --dns=...`)
# - nscd breaks namespacing: the host nscd is unaware of the guest's /etc/resolv.conf, and so directs the guest's DNS requests to the host's servers.
# - this is fixed by either `firejail --blacklist=/var/run/nscd/socket`, or disabling nscd altogether.
{ config, lib, ... }:
lib.mkMerge [
{
sane.services.trust-dns.enable = lib.mkDefault config.sane.services.trust-dns.asSystemResolver;
sane.services.trust-dns.asSystemResolver = lib.mkDefault true;
}
(lib.mkIf (!config.sane.services.trust-dns.asSystemResolver) {
# use systemd's stub resolver.
# /etc/resolv.conf isn't sophisticated enough to use different servers per net namespace (or link).
# instead, running the stub resolver on a known address in the root ns lets us rewrite packets
# in servo's ovnps namespace to use the provider's DNS resolvers.
# a weakness is we can only query 1 NS at a time (unless we were to clone the packets?)
# TODO: rework servo's netns to use `firejail`, which is capable of spoofing /etc/resolv.conf.
services.resolved.enable = true; #< to disable, set ` = lib.mkForce false`, as other systemd features default to enabling `resolved`.
# without DNSSEC:
# - dig matrix.org => works
# - curl https://matrix.org => works
# with default DNSSEC:
# - dig matrix.org => works
# - curl https://matrix.org => fails
# i don't know why. this might somehow be interfering with the DNS run on this device (trust-dns)
services.resolved.dnssec = "false";
networking.nameservers = [
# use systemd-resolved resolver
# full resolver (which understands /etc/hosts) lives on 127.0.0.53
# stub resolver (just forwards upstream) lives on 127.0.0.54
"127.0.0.53"
];
})
{
# nscd -- the Name Service Caching Daemon -- caches DNS query responses
# in a way that's unaware of my VPN routing, so routes are frequently poor against
# services which advertise different IPs based on geolocation.
# nscd claims to be usable without a cache, but in practice i can't get it to not cache!
# nsncd is the Name Service NON-Caching Daemon. it's a drop-in that doesn't cache;
# this is OK on the host -- because systemd-resolved caches. it's probably sub-optimal
# in the netns and we query upstream DNS more often than needed. hm.
# services.nscd.enableNsncd = true;
# disabling nscd LOSES US SOME FUNCTIONALITY. in particular, only the glibc-builtin modules are accessible via /etc/resolv.conf.
# - dns: glibc-bultin
# - files: glibc-builtin
# - myhostname: systemd
# - mymachines: systemd
# - resolve: systemd
# in practice, i see no difference with nscd disabled.
# disabling nscd VASTLY simplifies netns and process isolation. see explainer at top of file.
services.nscd.enable = false;
system.nssModules = lib.mkForce [];
}
]

View File

@ -0,0 +1,15 @@
{ config, lib, ... }:
{
# give each host a shortname that all the other hosts know, to allow easy comms.
networking.hosts = lib.mkMerge (builtins.map
(host: let
cfg = config.sane.hosts.by-name."${host}";
in {
"${cfg.lan-ip}" = [ host ];
} // lib.optionalAttrs (cfg.wg-home.ip != null) {
"${cfg.wg-home.ip}" = [ "${host}-hn" ];
})
(builtins.attrNames config.sane.hosts.by-name)
);
}

20
hosts/common/net/upnp.nix Normal file
View File

@ -0,0 +1,20 @@
{ pkgs, ... }:
{
networking.firewall.allowedUDPPorts = [
# to receive UPnP advertisements. required by sane-ip-check.
# N.B. sane-ip-check isn't query/response based. it needs to receive on port 1900 -- not receive responses FROM port 1900.
1900
];
networking.firewall.extraCommands = with pkgs; ''
# after an outgoing SSDP query to the multicast address, open FW for incoming responses.
# necessary for anything DLNA, especially go2tv
# source: <https://serverfault.com/a/911286>
# context: <https://github.com/alexballas/go2tv/issues/72>
# ipset -! means "don't fail if set already exists"
${ipset}/bin/ipset create -! upnp hash:ip,port timeout 10
${iptables}/bin/iptables -A OUTPUT -d 239.255.255.250/32 -p udp -m udp --dport 1900 -j SET --add-set upnp src,src --exist
${iptables}/bin/iptables -A INPUT -p udp -m set --match-set upnp dst,dst -j ACCEPT
'';
}

56
hosts/common/net/vpn.nix Normal file
View File

@ -0,0 +1,56 @@
# to add a new OVPN VPN:
# - generate a privkey `wg genkey`
# - add this key to `sops secrets/universal.yaml`
# - upload pubkey to OVPN.com (`cat wg.priv | wg pubkey`)
# - generate config @ OVPN.com
# - copy the Address, PublicKey, Endpoint from OVPN's config
{ config, lib, pkgs, ... }:
let
def-ovpn = name: { endpoint, publicKey, addrV4, id }: {
sane.vpn."ovpnd-${name}" = {
inherit endpoint publicKey addrV4 id;
privateKeyFile = config.sops.secrets."wg/ovpnd_${name}_privkey".path;
dns = [
"46.227.67.134"
"192.165.9.158"
];
};
sops.secrets."wg/ovpnd_${name}_privkey" = {
# needs to be readable by systemd-network or else it says "Ignoring network device" and doesn't expose it to networkctl.
owner = "systemd-network";
};
};
in lib.mkMerge [
(def-ovpn "us" {
endpoint = "vpn31.prd.losangeles.ovpn.com:9929";
publicKey = "VW6bEWMOlOneta1bf6YFE25N/oMGh1E1UFBCfyggd0k=";
id = 1;
addrV4 = "172.27.237.218";
# addrV6 = "fd00:0000:1337:cafe:1111:1111:ab00:4c8f";
})
# TODO: us-atl disabled until i can give it a different link-local address and wireguard key than us-mi
# (def-ovpn "us-atl" {
# endpoint = "vpn18.prd.atlanta.ovpn.com:9929";
# publicKey = "Dpg/4v5s9u0YbrXukfrMpkA+XQqKIFpf8ZFgyw0IkE0=";
# address = [
# "172.21.182.178/32"
# "fd00:0000:1337:cafe:1111:1111:cfcb:27e3/128"
# ];
# })
(def-ovpn "us-mi" {
endpoint = "vpn34.prd.miami.ovpn.com:9929";
publicKey = "VtJz2irbu8mdkIQvzlsYhU+k9d55or9mx4A2a14t0V0=";
id = 2;
addrV4 = "172.21.182.178";
# addrV6 = "fd00:0000:1337:cafe:1111:1111:cfcb:27e3";
})
(def-ovpn "ukr" {
endpoint = "vpn96.prd.kyiv.ovpn.com:9929";
publicKey = "CjZcXDxaaKpW8b5As1EcNbI6+42A6BjWahwXDCwfVFg=";
id = 3;
addrV4 = "172.18.180.159";
# addrV6 = "fd00:0000:1337:cafe:1111:1111:ec5c:add3";
})
]

View File

@ -1,13 +0,0 @@
{ 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"
];
}

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