Commit Graph
2320 Commits
Author SHA1 Message Date
Ryan Yin 2ac1b30768 docs(agents): restructure script validation minimums 2026-09-14 19:27:57 +08:00
Ryan Yin d30cfe1543 docs(agents): relax the one-logical-change commit rule 2026-09-14 19:24:52 +08:00
Ryan Yin 88636130c1 docs(agents): refine secrets, commit, tooling, and shell rules
- allow file-path secret references and require approval for breaking changes
- relax the commit subject limit and allow rewriting unpublished local history
- refine tooling plus shell and script selection/validation guidance
2026-09-14 19:19:34 +08:00
Ryan Yin b0aac75019 chore(flake): update pyclipsync input 2026-09-14 13:27:44 +08:00
Ryan Yin 8d108ee035 docs(agents): add herdr skill and record config TODOs 2026-09-14 13:18:57 +08:00
Ryan Yin c8642fcac4 feat(herdr): declare config in home-manager and persist state 2026-09-14 13:18:57 +08:00
Ryan Yin 77e31bd4cb fix(idols-ai): keep network config across S3 resume
The r8169 NIC drops carrier on S3 resume, and systemd-networkd reacts by reconfiguring enp130s0: it dropped the static address/default route and deleted foreign routing policy rules (mihomo's 9000-9010 and Tailscale's 5210-5270). clash's TUN then lost its outbound interface and networking stayed broken until clash was restarted.

- IgnoreCarrierLoss=10s keeps the static address/route across the short carrier loss.
- ManageForeignRoutingPolicyRules=false stops networkd from deleting the TUN/VPN ip rules during the reconfiguration.
2026-09-14 10:54:33 +08:00
Ryan Yin b9610c47e0 fix(hypridle): skip lock while media is playing
The lock listener ignores inhibitors but had no playback condition, so it locked the screen at its timeout even during active media playback (screen-off already skipped via playerctl). Add the same playerctl condition to the lock listener.
2026-09-13 23:56:16 +08:00
Ryan Yin e81767c7b4 fix(hypridle): stop claiming org.freedesktop.ScreenSaver
niri already owns the org.freedesktop.ScreenSaver interface and feeds its inhibitors into the compositor idle notifier, so hypridle's own registration always fails with 'Another service is already providing...'. Set ignore_dbus_inhibit = true so hypridle no longer tries to claim it; D-Bus inhibits are still handled by niri.
2026-09-13 23:56:14 +08:00
Ryan Yin 7131041107 feat(hypridle): define config in home-manager with per-host timeouts
Replace the static hypridle.conf with services.hypridle.settings and add required timeout options so each host tunes its own values:

- idols-ai (PC): 15 min keyboard, 20 min screen-off, 30 min lock.
- 12kingdoms-shoukei (laptop): 3 / 6 / 20 min (previous values).

The options have no defaults because the right values depend on the machine. Update the home-manager eval test to inspect the settings option instead of the old config file text.
2026-09-13 23:45:42 +08:00
Ryan Yin cdfa332970 feat(easyeffects): set autogain target per host
Desktop speakers on idols-ai use the EBU R128 broadcast standard (-23 dB), while the quiet built-in laptop speakers on 12kingdoms-shoukei keep -12 dB. Move the target out of the shared preset so each host sets its own value.
2026-09-13 23:22:19 +08:00
Ryan Yin 88ed9ee432 feat(easyeffects): declare autogain and limiter output preset
Declare the output chain via services.easyeffects.extraPresets and load it with preset.output, replacing the GUI-only configuration that did not survive the tmpfs root.

autogain target is set to -12 dB (EasyEffects defaults to -23, which is too quiet for playback); the limiter acts as a transparent -1 dB safety net via threshold=-1 and gain-boost=false.
2026-09-12 23:38:41 +08:00
Ryan Yin d06543819d fix(nixpak): expose Asahi GPU metadata and quiet D-Bus logs 2026-09-11 14:29:59 +08:00
Ryan Yin a71472012c docs(agents): generalize shell rule and state safety priority
Emphasize safety precedence in the intro, and replace the narrow Bash pipeline ban with a trigger-based rule: keep POSIX shell as glue and move to Nushell or Python once quoting, error handling, parsing, types, retries, or portability are involved.
2026-09-11 14:25:20 +08:00
Ryan Yin aab819f733 flake.lock: Update
Flake lock file updates:

• Updated input 'llm-agents':
    'github:numtide/llm-agents.nix/3fb1593' (2026-09-05)
  → 'github:numtide/llm-agents.nix/e320800' (2026-09-10)
• Updated input 'llm-agents/nixpkgs':
    'github:NixOS/nixpkgs/5545adf' (2026-09-03)
  → 'github:NixOS/nixpkgs/5052d7c' (2026-09-09)
2026-09-10 14:33:11 +08:00
Ryan Yin 9fa975887d docs(agents): clarify authorization reuse and task baselines 2026-09-05 14:17:31 +08:00
Ryan Yin 26717b613b fix(agents): continue rule installation after target errors 2026-09-05 13:34:13 +08:00
Ryan Yin a3bbb70508 fix(agents): preserve existing rules during symlink installation 2026-09-05 13:34:13 +08:00
Ryan Yin 33b17baeff docs(agents): clarify rule scope and remove permission templates 2026-09-05 13:34:13 +08:00
Ryan Yin 3f74be246c flake.lock: Update
Flake lock file updates:

• Updated input 'llm-agents':
    'github:numtide/llm-agents.nix/c48d91c89868c53dd0b51bf840977cc83f2544fb?narHash=sha256-dn%2BN26nSI4WqryWWBUfClz6qSpFHGNGJmc9M46usr70%3D' (2026-09-03)
  → 'github:numtide/llm-agents.nix/3fb159317088e458defde4dd2a94078e3713645c?narHash=sha256-Lyx03e2AOG%2BMaXfzV92S9PL%2B2tBluyc800Oy9RCHbmc%3D' (2026-09-05)
• Updated input 'llm-agents/flake-parts':
    'github:hercules-ci/flake-parts/f16b25b8c3d2809b87925d0b76652d7821a75c68?narHash=sha256-lbrI1UYVpFgKSsyrU9oeF7FHfnu8nLD9ja0ou9f2rxk%3D' (2026-09-01)
  → 'github:hercules-ci/flake-parts/31729ca8cbdb4fa927b34e5f4353e6a83f39e993?narHash=sha256-glZLQlzIn1fXH6PazR2iUmTo7kzzyYSshrWhLS9TqCU%3D' (2026-09-03)
• Updated input 'llm-agents/nixpkgs':
    'github:NixOS/nixpkgs/9387b3fcc0c23c86661636da63faabad4235a0a6?narHash=sha256-7aqErvrAEz/5OcPA5p3M%2BtVOqeYc4oJXkNIPXfCqxAw%3D' (2026-09-02)
  → 'github:NixOS/nixpkgs/5545adfad2e98de106a5544ca7067e03010410bd?narHash=sha256-JIHQ6xNAN53cdo6zZ72LRcQ9lpvnABCnNE4hldJ5uZU%3D' (2026-09-03)
2026-09-05 13:01:56 +08:00
Ryan Yin 324e5d8820 feat(moonlight): persist client data 2026-09-04 20:21:52 +08:00
Ryan Yin 74f009e734 feat(sunshine): add clipboard bridge for streamed sessions 2026-09-04 20:21:52 +08:00
Ryan Yin 04ceef6ee7 flake.lock: Update
Flake lock file updates:

• Updated input 'llm-agents':
    'github:numtide/llm-agents.nix/5fae695' (2026-08-23)
  → 'github:numtide/llm-agents.nix/c48d91c' (2026-09-03)
• Updated input 'llm-agents/bun2nix':
    'github:nix-community/bun2nix/0f2a1f0' (2026-07-21)
  → 'github:Mic92/bun2nix/5765b06' (2026-08-29)
• Updated input 'llm-agents/flake-parts':
    'github:hercules-ci/flake-parts/427bf4b' (2026-08-01)
  → 'github:hercules-ci/flake-parts/f16b25b' (2026-09-01)
• Updated input 'llm-agents/nixpkgs':
    'github:NixOS/nixpkgs/391b592' (2026-08-20)
  → 'github:NixOS/nixpkgs/9387b3f' (2026-09-02)
2026-09-03 23:26:21 +08:00
Ryan Yin 83833bf871 fix: use valid shoukei logind keys 2026-09-03 23:26:03 +08:00
Ryan Yin 7661be6a69 fix: refine shoukei idle screen off 2026-09-03 23:26:03 +08:00
Ryan Yin 1ec29059ad fix(sunshine): stabilize remote Niri sessions 2026-09-01 22:32:19 +08:00
Ryan Yin f766dcc24f fix(security): tighten desktop remote access 2026-09-01 20:20:51 +08:00
Ryan Yin 13436c0c31 fix(security): remove container daemon group access 2026-09-01 19:17:39 +08:00
Ryan Yin dc261e2934 docs(agents): focus global rules and script validation 2026-09-01 18:33:26 +08:00
ryan4yin | 二花 9db935bc87 fix(sunshine): use Intel rendering and recover remote Niri sessions (#268)
- render Niri on the Intel iGPU while retaining NVIDIA-connected physical outputs
- encode Sunshine streams with Intel VAAPI and wait for a Niri output before startup
- load VKMS persistently for headless sessions and configure `Virtual-1` at 2560x1600@60
- let Moonlight request the stream bitrate instead of enforcing a 20 Mbps host cap
- remove unsupported Dynamic Boost and global NVIDIA session overrides
- grant Sunshine access to virtual input devices
- add a Nushell recovery helper that starts a temporary greetd/Niri session from SSH
- identify and safely replace normal, standalone, or previous transient Niri sessions
- launch the transient service in the background and verify greetd, Niri, and Sunshine before returning
- ignore local `.worktrees` directories and keep eval regression coverage focused on structural behavior
2026-09-01 03:40:48 -06:00
Ryan Yin 6f40483462 feat(hypridle): power off monitors at 15min idle 2026-08-31 20:06:01 +08:00
Ryan Yin e1a9424350 feat(terminal): hide title bars in foot and ghostty
Signed-off-by: Ryan Yin <xiaoyin_c@qq.com>
2026-08-31 18:36:32 +08:00
Ryan Yin 9822dafa89 docs(agents): refine global agent rules 2026-08-31 18:35:17 +08:00
Ryan Yin bed0359a0d docs(agents): standardize global rule semantics 2026-08-31 16:37:07 +08:00
Ryan Yin 12a9bee134 docs(agents): enforce Nushell for local pipelines 2026-08-31 16:14:05 +08:00
Ryan Yin 6538c50662 feat(shoukei): enable wluma ambient-light auto brightness
- read Asahi aop-sensors ALS via iio and drive eDP-1 backlight
- drop PrivateUsers for wluma so it can reach the real user D-Bus session
- remove hypridle 10min screen-dim listener: its brightnessctl writes fight
  wluma and get learned as manual adjustments
2026-08-31 15:33:15 +08:00
Ryan Yin d0cd00069d fix(security): sync gnome login keyring password on passwd
Enable gnomeKeyring for the passwd PAM service so pam_gnome_keyring
updates the login keyring password when the login password changes.
Fixes 'Unlock Login Keyring' prompt desync after changing the password
via passwd (greetd session unlock alone does not update the keyring).
2026-08-31 15:28:00 +08:00
Ryan Yin 01622bf6d6 docs(agents): clarify shell and script guidance 2026-08-31 13:54:03 +08:00
Ryan Yin de35352e48 docs(agents): refine global command guidance 2026-08-31 12:35:09 +08:00
Ryan Yin 82bb638fc2 fix(niri): match clash-verge app-id case-insensitively
The running clash-verge-rev reports app_id "clash-verge" (lowercase), so the
anchored ^Clash-verge$ pattern never matched and the window opened on whatever
workspace was focused (1terminal). Match case-insensitively.

Change-Id: Iddabdbd66597a7325bdb08cb31434c1ee710dc3e
2026-08-31 00:06:56 +08:00
Ryan Yin 20953a9eb2 fix: document clash fake-IP6 hang, force IPv4 for github ssh 2026-08-30 23:21:53 +08:00
Ryan Yin c6bbb69b3d fix(shoukei): muvm failed to build currently 2026-08-30 23:02:51 +08:00
Ryan Yin 0ba7562ce9 flake.lock: Update
Flake lock file updates:

• Updated input 'my-asahi-firmware':
    'git+ssh://git@github.com/ryan4yin/asahi-firmware.git?ref=refs/heads/main&rev=2c54750244b152ab7a23f92d061260f0d7b2350b&shallow=1' (2026-08-25)
  → 'git+ssh://git@github.com/ryan4yin/asahi-firmware.git?ref=refs/heads/main&rev=ca21cc53d539ebcb43ef7611fa764b73947df762&shallow=1' (2026-08-30)
2026-08-30 22:57:09 +08:00
Ryan Yin 099752e89f fix(shoukei): restore tuigreet login, autologin bypassed the lock screen
greetd ran the niri session directly, so exiting the session (e.g.
logout from the lock screen) made greetd immediately restart the
desktop with no authentication.
2026-08-30 21:47:57 +08:00
Ryan Yin 776021562e flake.lock: Update
Flake lock file updates:

• Updated input 'my-asahi-firmware':
    'git+ssh://git@github.com/ryan4yin/asahi-firmware.git?ref=refs/heads/main&rev=981583c8e101967ef6a66388ade54cab751f3a02&shallow=1' (2025-07-12)
  → 'git+ssh://git@github.com/ryan4yin/asahi-firmware.git?ref=refs/heads/main&rev=2c54750244b152ab7a23f92d061260f0d7b2350b&shallow=1' (2026-08-25)
2026-08-30 20:44:49 +08:00
Ryan Yin a0d55a298e feat(remote-desktop): enable Sunshine on ai and Moonlight on darwin 2026-08-30 12:57:09 +08:00
Ryan Yin a7f7cb68f0 fix(apparmor): use inherit exec modifier in sudo complain profile
The broad 'file /** rwlkUx' rule conflicts with rix exec rules pulled in
via nested abstractions (xdg-open): AppArmor 5.0 rejects merged rules
with differing exec modifiers, failing apparmor.service on first load.
2026-08-30 12:57:09 +08:00
Ryan Yin 2cd3a1cee4 refactor(home): share XDG base configuration 2026-08-30 12:45:24 +08:00
ryan4yin | 二花 16e48e5740 fix(darwin): remove unused aerospace configuration (#267) 2026-08-29 17:32:24 +08:00
Ryan Yin f08b45d2bc feat(editors): restore vscode alongside zed for build123d workflows
- linux: programs.vscode via pkgs-master with gnome-libsecret password store
- darwin: visual-studio-code cask + aerospace window rules
- idols-ai: persist .vscode and .config/Code (Settings Sync handles extensions)
- xdg: code.desktop editor association and vscode:// scheme handler
2026-08-29 17:05:44 +08:00