Commit graph

92 commits

Author SHA1 Message Date
35f3e4cec1
security: distrust two Mozilla root CAs
Blacklist "Comodo AAA Services root" and "emSign ECC Root CA - G3"
so they are left out of /etc/ssl/certs/ca-certificates.crt.

Mozilla already distrusted the Comodo root for serverAuth (it was only
trusted for email), so emSign ECC G3 is the only root this removes for
TLS. Apps that ship their own trust store (NSS in browsers, certifi,
Java cacerts) are not affected.

Assisted-by: Claude:opus-5-5
2026-10-21 13:52:31 +04:00
285933d22c
networking: recover the WWAN modem after a cold boot
After a cold boot the EM160R-GL often drops off the PCIe link 10-20s
after probe ("Unable to change power state from D3cold to D0", config
space reads all-ones) and never brings up its wwan ports. Until now
only a hibernate/resume cycle brought it back.

An ACPI _RST through the PCI reset attribute does the same at runtime.
The rescan after it catches the firmware mid-boot, under the generic
Qualcomm ID 17cb:0304, which has no FCC unlock script, so ModemManager
fails with "Couldn't set operating mode". A second rescan once the
firmware is up gets 1eac:100d back and the modem enables normally.

The service does nothing if wwan ports show up within 60s of boot.
The recovery sequence was verified by hand on 7.2.11; the service has
not yet run it on a real cold boot.

Assisted-by: Claude:opus-5-5
2026-10-20 20:37:11 +04:00
518d2cc3a2
packages: add forgejo-cli
fj is the CLI for the Forgejo instances at dev.narayana.im and
dev.another.im, where gh does not work.

Assisted-by: Claude:opus-5-5
2026-10-20 20:37:11 +04:00
1be968b6b5
boot: switch to the latest kernel for the NPU
The in-tree amdxdna driver on LTS 6.18 is too old for FastFlowLM:
flm validate reports kernel_ok=false and the driver loads NPU firmware
1.0.0.63, while FLM needs 1.1.0.0 or newer. The 7.x driver loads
npu_7.sbin (1.1.2.64), and /dev/accel/accel0 is present on 7.2.11.

Assisted-by: Claude:opus-5-5
2026-10-20 20:37:11 +04:00
3b8ca06406
flake: update inputs
nixpkgs moves from 2026-08-04 to 2026-10-17. Also updated: anotherim,
lanzaboote, nix-amd-ai, nix-flatpak and sops-nix, plus their
transitive inputs.

Assisted-by: Claude:opus-5-5
2026-10-20 20:37:10 +04:00
26ae7ab44a
packages: allow discord-ptb-unwrapped and fastflowlm as unfree
With the updated inputs both are checked by the unfree predicate and
evaluation stops on them: discord-ptb now pulls in a separate
-unwrapped package, and nix-amd-ai marked its FastFlowLM NPU runtime
unfree in 2026-10.

Assisted-by: Claude:opus-5-5
2026-10-20 20:37:10 +04:00
577f8af2b8
packages: take the system from stdenv.hostPlatform
pkgs.system is a deprecated alias in nixpkgs and warns on evaluation;
stdenv.hostPlatform.system is the replacement.

Assisted-by: Claude:opus-5-5
2026-10-20 20:37:00 +04:00
44a2600217
litecoin: build against the default openssl
nixpkgs dropped openssl_3 as end of life, so evaluating litecoin.nix
fails after the next input update. The default openssl is 3.5, which
the build already works with.

Assisted-by: Claude:opus-5-5
2026-10-20 20:36:55 +04:00
ebc58d2b2a
patches: add traced mutter touch-cancel patches
Two local-test variants for mutter!5375: the NULL-check fix with
g_message traces, and Jonas Ådahl's proposal to forget a cancelled
touch sequence. They log which path cancelled the touch, to answer
how a resize reaches touch_can_grab_surface() with no focus surface.
Not applied yet; desktop.nix still uses mutter-touch-cancelled-grab.

Assisted-by: Claude:opus-5-5
2026-10-20 12:10:06 +04:00
0bd3a0ed81
desktop: add an xfce-x11 boot specialisation
A second boot entry with Xfce on Xorg via LightDM, matching the
desktop where another.im's typing jitter shows up (2026-10-19), to
reproduce it here. GDM in GNOME 50 no longer starts Xorg sessions,
hence LightDM. The default entry is untouched.

Assisted-by: Claude:opus-5-5
2026-10-20 12:10:06 +04:00
41be44e568
power: update resume_offset for the current swapfile
resume_offset must name the swapfile's first physical extent for
hibernation to resume from it; the old value no longer matched.

Assisted-by: Claude:opus-5-5
2026-10-20 12:10:06 +04:00
f4a352aeaa
shell: drop the nrs alias
It ran git add -A, so a rebuild swept every unrelated change in
/etc/nixos into one "Update: <date>" commit and pushed it. Rebuild
and commit separately instead.

Assisted-by: Claude:opus-5-5
2026-10-20 12:10:05 +04:00
d67a91f633
packages: add linode-cli
Lets servers on Linode (Akamai) be created and managed from the
console, next to hcloud for Hetzner, e.g. throwaway test hosts spun up
by Claude Code.

Assisted-by: Claude:opus-5-5
2026-10-20 12:10:04 +04:00
35ff354595
packages: add the AppIndicator extension for tray icons
GNOME draws no StatusNotifierItem tray without it, so apps that keep
running in the tray could not offer it: another.im's "Stay connected
when closed" stayed greyed out ("Needs a tray icon, which this desktop
cannot show"). The extension's tray also needs gnome-settings-daemon's
udev rules (NixOS wiki, GNOME: "Systray Icons"). It is enabled in the
user's own extension list, beside the TLP switcher.

Assisted-by: Claude:opus-5-5
2026-10-16 13:52:57 +04:00
23b3b3ff39
packages: run KUnifiedPush as the UnifiedPush distributor
another.im (and any UnifiedPush app) is woken by its server for each
message only while a distributor runs on the session bus; GNOME has
none, so the app reported "no UnifiedPush distributor" and missed
messages once quit. KUnifiedPush's distributor needs no Plasma and
uses KDE's ntfy server by default.

Its unit ships in share/systemd/user, which systemd.packages does not
read, so the user service is written out here as the package's own
(26.04), started with the graphical session.

Assisted-by: Claude:opus-5-5
2026-10-16 13:52:56 +04:00
827465ca59
security: keep rootless podman storage on /mnt/data
Container images and build caches (anotherim-js's build images alone
are several GB each) had filled the root filesystem, and a NDK unzip
in an image build failed with the disk full. Point
rootless_storage_path at the data disk. Existing storage was moved
there with its libpod database paths rewritten.

Assisted-by: Claude:opus-5
2026-10-16 05:41:54 +04:00
bb58347c93
power: allow manual fan control on the ThinkPad
thinkpad_acpi ignores writes to /proc/acpi/ibm/fan unless loaded
with fan_control=1. Enable it so the fan can be set to a level (0-7)
or full-speed by hand; the firmware stays in charge while the level
is "auto". Applies from the next boot or a reload of the module.

Assisted-by: Claude:opus-5
2026-10-16 05:41:54 +04:00
9cb57e0daa
packages: use an Android phone's NFC as a smart card reader
Register vsmartcard's vpcd with pcscd as "Virtual PCD", so the
Remote Smart Card Reader app on a phone can serve the ID card over
NFC as a PC/SC reader. Over USB the link is an adb port reverse
(adb reverse tcp:35963 tcp:35963), hence android-tools.

Assisted-by: Claude:opus-5
2026-10-16 05:41:54 +04:00
6545594a4d
packages: add aider-chat
An AI pair-programming CLI to use beside Claude Code. It talks to
OpenRouter through the ~/.local/bin/aider wrapper, which holds the
model and key settings outside the store.

Assisted-by: Claude:opus-5
2026-10-16 05:41:53 +04:00
819072c2a0
desktop: point the mutter touch patch at upstream !5375
The crash is mutter issue #4871, a regression from !5057, and
!5375 ("wayland/touch: Do not crash on empty focus surface") carries
the same NULL check as our patch. Say so in the overlay and the
patch, so it is clear when the patch can go.

Assisted-by: Claude:opus-5
2026-10-13 08:24:00 +04:00
57106b1fbe
programs: use the GNOME pinentry for gpg-agent
With pinentry-curses the passphrase prompt needs a terminal, so a
signed commit made from an editor or any tool without one fails with
"gpg: signing failed: No such file or directory". pinentry-gnome3
asks in a GNOME dialog instead (and still falls back to curses
without a display).

Assisted-by: Claude:opus-5
2026-10-13 08:24:00 +04:00
1320decc26
desktop: patch mutter crash on grabs by cancelled touches
meta_wayland_touch_cancel() clears focus_surface on active touches
but keeps their serials until the finger lifts. A client asking for
a move/resize grab with such a serial (anotherim-js's resize edges
by touch) makes touch_can_grab_surface() dereference NULL and takes
down gnome-shell (four crashes on 2026-10-13, same address).

Carry a one-line NULL check until nixpkgs' mutter has a fix; it is
not upstream as of mutter 50.2 / main.

Assisted-by: Claude:opus-5
2026-10-13 06:31:49 +04:00
1d1f5600eb
security: enable core dumps and on-demand debug symbols
gnome-shell keeps segfaulting in libmutter, and with the PAM core
limit at 0 systemd-coredump threw every dump away, so there was no
backtrace to work from. Raise the limit to unlimited; dumps land
root-owned in /var/lib/systemd/coredump, readable only by their
owner. Enable nixseparatedebuginfod2 so gdb/coredumpctl can fetch
symbols for store paths on demand.

The user manager inherits the limit at its first login, so it takes
a reboot (or a full logout) to apply.

Assisted-by: Claude:opus-5
2026-10-13 06:31:49 +04:00
42a0ba7c81
flake: bump inputs (nixpkgs 2026-07-11 -> 2026-08-04); anotherim needs sqlcipher, curl
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-03 21:35:54 +04:00
4f8fdae825
shell: add claude-work wrapper for the second Claude Code profile
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-03 21:35:53 +04:00
9e96418d3d
desktop: force micmute LED off, detach audio-micmute trigger
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-03 21:35:53 +04:00
573fd9c595
networking: cake shaping on WWAN link via NM dispatcher (bufferbloat)
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-03 21:35:53 +04:00
0223e1a6c5
power: suspend-then-hibernate on external power too
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-03 21:35:52 +04:00
eca8b7779e
networking: disable EM160R-GL wakeup and runtime PM to stop s2idle wake loop
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-03 21:35:52 +04:00
2b9b333f24
boot: back to LTS kernel (6.18), NPU/FLM caveat documented
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-03 21:35:52 +04:00
9a9e9dc13e
readme: add Assisted-by 2026-07-14 12:44:17 +04:00
d8ee05c70e
flake: bump nixpkgs (2026-06-16 -> 2026-07-11) 2026-07-14 12:27:56 +04:00
c6258a77e4
ssh: private host aliases via sops-provisioned include 2026-07-14 12:24:34 +04:00
45d23c5875
wireguard: wg0/wg2 configs from sops 2026-07-14 12:24:33 +04:00
8458e0645d
xray: config via sops, private routes spliced into sing-box at runtime 2026-07-14 12:24:33 +04:00
a7ec82579c
sops: introduce sops-nix (age), ssh keys from encrypted tarball, .example secrets 2026-07-14 12:24:21 +04:00
8be13b680f
litecoin: install desktop entry and icon for litecoin-qt 2026-07-11 22:36:01 +04:00
8ee7f83377
gaming: enable gamescope 2026-07-11 22:36:01 +04:00
2eb1008ec0
power: zram swap ahead of disk swapfile for large model loads 2026-07-11 22:36:01 +04:00
22746bcc25
ollama: model store to /mnt/data, gfx1151 rocBLAS workaround, load tuning 2026-07-11 22:36:00 +04:00
8d823f4da2
lemonade: XDNA2 NPU LLM serving via nix-amd-ai 2026-07-11 22:36:00 +04:00
fb5770d1ce
boot: kernel 7.x for FLM NPU firmware, raise amdgpu GTT to 56 GiB 2026-07-11 22:35:57 +04:00
584f67273f
flake: track lanzaboote master, bump inputs 2026-06-29 05:14:13 +03:00
a9948a39f4
packages: nodejs_20 -> nodejs_22 2026-06-29 05:13:59 +03:00
9e6122428c
networking: drop wwan-autoconnect, let NetworkManager manage modem 2026-06-29 05:13:42 +03:00
17066b5842
litecoin: vendored Litecoin Core 0.21.5.5 (MWEB) 2026-06-29 05:12:24 +03:00
8066567957
packages: add rclone
Cloud-storage sync CLI (Google Drive, S3, etc.).
2026-06-02 14:07:44 +03:00
554487a136
hostel-wifi: hardened profile for untrusted networks (disabled by default)
Add modules/hostel-wifi.nix: per-SSID MAC randomization (iwd), disable
mDNS/LLMNR/NetBIOS, reject hostile IPv6 RAs, firewall LAN-side probing,
an nftables killswitch target allowing only tunnel egress + captive-portal
endpoints, NTS-secured time via chrony, and a captive-portal helper.
Import left commented out; toggle via 'untrusted on|off'.
2026-06-02 14:07:38 +03:00
f31ecbf6e6
ollama: local LLM serving with ROCm on Krackan Point (gfx1151)
Enable ollama-rocm bound to 127.0.0.1:11434 with gfx1151 (RDNA 3.5)
overrides, flash attention, q8_0 KV cache, and preload qwen3:14b.
2026-06-02 14:07:29 +03:00
a72fb75811
power: stabilize suspend-then-hibernate on P14s G6 AMD
acpi.ec_no_wakeup=1 stops EC interrupts from thrashing s2idle, and a
dconf system-db override disables gsd-power's sleep handlers so logind
owns all sleep/idle policy (gsd was re-waking before HibernateDelaySec).
Split lid/suspend policy by power source (s-t-h on battery, plain suspend
on AC), map power key to hibernate, drop HibernateDelaySec to 15min while
re-validating thermals, and disable USB-device wakeup via udev.
2026-06-02 14:07:07 +03:00