Commit Graph
1019 Commits
Author SHA1 Message Date
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 7661be6a69 fix: refine shoukei idle screen off 2026-09-03 23:26:03 +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 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 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 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
Ryan Yin 7364d5aa1b feat(home): add pyclipsync clipboard sync service for niri
xwayland-satellite has no compositor-level clipboard bridging, so X11
clients (WeChat/QQ) and Wayland clients cannot see each other's clipboard.
Add the pyclipsync flake input and enable its home-manager module, which
installs the daemon as a systemd user service bound to the graphical session.
2026-08-25 17:31:03 +08:00
Ryan Yin c33b68c7bb fix(home): let atuin own Ctrl-R, disable fzf history widget 2026-08-24 00:33:30 +08:00
Ryan Yin b2e19840d0 fix(home): disable catppuccin theme for removed gemini-cli 2026-08-24 00:33:24 +08:00
Ryan Yin 7cba098b07 fix(home): replace deprecated stdenv.is* with hostPlatform.is* 2026-08-24 00:33:22 +08:00
Ryan Yin 3c361f316f fix(home): explicitly enable home.pointerCursor 2026-08-24 00:33:02 +08:00
Ryan Yin 9df14d8c39 chore(obs): comment out unused plugins
Keep only the plugins actually in use (screen capture, gstreamer,
input-overlay, multi-rtmp, source-clone, pipewire audio, vaapi);
disable the rest (teleport, droidcam, vkcapture, shaderfilter,
record, livesplit, looking-glass, vintage-filter, command-source,
move-transition, backgroundremoval, 3d-effect).
2026-08-23 20:06:33 +08:00
Ryan Yin 598bb470db fix(nushell): import argx & lg with prefix to avoid shadowing builtins
`use modules/argx *` glob-imports argx's `parse` command into the global
scope, shadowing nushell's builtin `parse`. Any script sourced afterwards
that relies on the builtin (e.g. fzf's nushell integration, which uses
`parse --regex`) then fails to parse with `unknown flag`.

Use prefixed imports for `argx` and `lg` instead of `*`: both modules are
still registered for the kubernetes module's submodules (which call
`argx parse` / `lg level`), there are no bare `parse`/`main`/`level` call
sites, and the builtin `parse` stays available.
2026-08-23 20:06:33 +08:00
Ryan Yin 78fc64e136 fix(neovim): disable nixvim manpage on broken nixpkgs pin 2026-08-16 15:40:12 +08:00
Ryan Yin 9842a8a17f feat(nushell): add lsa & dus wrappers to prevent column truncation
`lsa` (ls -al) and `dus` (du) render the table at a fixed width of 350 so
columns like size/apparent/physical are never dropped to "..." when the
natural table is wider than the terminal.
2026-08-15 20:35:15 +08:00
Ryan Yin 495c366938 fix(xdg): order autostart apps after xdg-desktop-portal
At login the xdg-autostart-generator starts apps at
graphical-session.target, racing the portal user services. Sandboxed
apps (nixpak firefox/telegram) end up with broken FileChooser/OpenURI
until manually restarted.

Add a template drop-in on app-@autostart.service that makes every
autostart app wait for the portal stack.
2026-08-15 00:47:59 +08:00
Ryan Yin a804c56263 chore: add qrtool & herdr 2026-08-07 14:15:26 +08:00
Ryan Yin c0f50a7d4a fix(bambu-studio): adjust HiDPI text scaling 2026-08-05 09:14:33 +08:00
Ryan Yin 6f100d94a9 feat(gh): persist user-managed configuration 2026-08-04 17:45:24 +08:00
Ryan Yin cce15300d6 feat(niri): reorganize workspaces 2026-08-03 22:42:37 +08:00
Ryan Yin 20dac3bb84 docs(zoom-us): screen capture mode 2026-08-01 10:28:01 +08:00
Ryan Yin 071212e40f feat(niri): reorganize workspace layout 2026-07-31 12:06:27 +08:00
Ryan Yin ac96c62cbe fix(niri): position Zoom toolbar at bottom 2026-07-31 11:07:07 +08:00
Ryan Yin e43ae1625c fix(niri): handle Zoom auxiliary windows 2026-07-31 11:01:38 +08:00
Ryan Yin 8bb2adc436 feat(home): enable easyeffects for loudness normalization
Fix inconsistent volume across bilibili videos at the PipeWire level:
the easyeffects daemon auto-starts at login; an autogain + limiter
chain can be applied per-app (e.g. only to the browser).

Signed-off-by: Ryan Yin <xiaoyin_c@qq.com>
2026-07-26 11:29:09 +08:00
Ryan Yin f80580772a feat(blender): build 5.2 LTS with CUDA and OptiX 2026-07-24 14:34:25 +08:00
Ryan Yin 9ee947dc0a fix: clash-verge-rev ui by upgrade 2026-07-23 11:22:06 +08:00
Ryan Yin ac7755e5ee chore: add kimi-code 2026-07-17 10:39:53 +08:00
Ryan Yin 2868b72019 fix(home): move nix.package fallback to darwin module 2026-07-10 12:54:25 +08:00
Ryan Yin e22af008bf chore: upgrade slicer app 2026-07-10 12:40:12 +08:00
Ryan Yin 9315055bac fix(darwin): unblock home-manager activation 2026-07-10 12:28:47 +08:00
Ryan Yin 6c84c9e85b feat: add bambu studio 2026-07-10 10:04:18 +08:00
Ryan Yin d5822550b4 fix(catppuccin): use cache for themed ports 2026-07-09 17:02:28 +08:00
Ryan Yin 410b3c5312 chore: remove useless comments 2026-07-06 23:04:16 +08:00
Ryan Yin 0e5f1801cf feat(nixos): add orca-slicer
Signed-off-by: Ryan Yin <xiaoyin_c@qq.com>
2026-06-25 22:19:14 +08:00
Ryan Yin eaacb0f9e7 chore: update zed-editor settings, remove unused packages(java,zig,etc) 2026-06-12 22:30:04 +08:00
Ryan Yin 86f316cfdb fix: shoukei - noctalia - adjust brightness 2026-06-12 15:55:51 +08:00
Ryan Yin e18f94dca1 chore: claude-code: use work credentials 2026-06-12 14:10:20 +08:00
Ryan Yin e6245cad17 chore(darwin): install some packages via nix instead of brew 2026-06-12 14:04:13 +08:00
Ryan Yin fc1abca4f0 feat: gcp - add plugins 2026-06-10 16:27:57 +08:00
Ryan Yin c546358888 chore: zed-editor - adjust fonts for idols-ai 2026-06-05 17:17:02 +08:00