Compare commits

...

226 Commits

Author SHA1 Message Date
Ryan Yin 7216201bd6 docs: add desktop screenshots 2026-01-05 13:28:32 +08:00
Ryan Yin eda3221ac0 chore: noctalia - show cpu/mem usage in detail mode 2026-01-04 19:26:43 +08:00
Ryan Yin 909b8ffe06 chore: noctalia - add desktop widgets 2026-01-04 19:00:36 +08:00
Ryan Yin e1ef5587fd chore: update yazi config 2026-01-04 16:45:44 +08:00
Ryan Yin 6c228998e7 chore: noctalia - upgrade & settings adjustment 2026-01-04 16:33:41 +08:00
Ryan Yin ab8cacb04e flake.lock: Update
Flake lock file updates:

• Updated input 'nixpkgs-patched':
    'github:ryan4yin/nixpkgs/9da7f1cf7f8a6e2a7cb3001b048546c92a8258b4?narHash=sha256-SlybxLZ1/e4T2lb1czEtWVzDCVSTvk9WLwGhmxFmBxI%3D' (2025-11-11)
  → 'github:ryan4yin/nixpkgs/fd9662e1991b624a72e5e545963136906c5c1adf?narHash=sha256-uIZvxuyjwKJkcGFD/DEdmHuwjyjwkk6SkkR/5Z/cpdw%3D' (2026-01-04)
2026-01-04 16:18:10 +08:00
Ryan Yin 26c7076816 chore: noctalia - do not show cpu temporature 2026-01-04 13:30:55 +08:00
Ryan Yin 6853991712 docs: update desktop screenshots
Signed-off-by: Ryan Yin <xiaoyin_c@qq.com>
2026-01-04 11:36:06 +08:00
Ryan Yin 6db329c55d chore: noctalia - folders & images 2026-01-04 10:48:38 +08:00
Ryan Yin e83b7a867f refactor: auto start apps on login via xdg-autostart (#242)
Signed-off-by: Ryan Yin <xiaoyin_c@qq.com>
2026-01-03 11:03:14 -06:00
Ryan Yin e3fb563b79 fix: noctalia - brightness adjustment - apple silicon 2026-01-04 00:16:25 +08:00
Ryan Yin 74c8912897 refactor: replace gammastep by noctalia-shell, update README (#241) 2026-01-03 10:06:22 -06:00
Ryan Yin fb7a0cd178 feat: replace waybar/mako/anyrun/wlogout/swaylock with noctolia-shell, remove hyprland (#240) 2026-01-03 09:36:54 -06:00
Ryan Yin 847adc7d63 feat: add power management service 2026-01-03 20:16:37 +08:00
Ryan Yin 94e431abfc fix: error - only one wireless daemon is allowed at the time, speed up wechat download 2026-01-02 22:37:38 +08:00
Ryan Yin f4f3ff347c flake.lock: Update
Flake lock file updates:

• Updated input 'nixpkgs-master':
    'github:nixos/nixpkgs/6a81c8cfb009e8dbd462d8c75f49a121efcb6e17?narHash=sha256-XqmvlUkYpaQzV2CksGR8MzjeqTBKkB3gSf26pYoNqWw%3D' (2025-12-25)
  → 'github:nixos/nixpkgs/eaf3f6b552c15b55d516e8cdca6579f7ec902865?narHash=sha256-bgO3UKGjkqbwQTgHInJIEJeqmV%2Bv8pSWxCPKUl64igk%3D' (2026-01-02)
2026-01-02 21:54:41 +08:00
Ryan Yin ff3cd9111f flake.lock: Update
Flake lock file updates:

• Updated input 'nixpkgs':
    'github:nixos/nixpkgs/a6531044f6d0bef691ea18d4d4ce44d0daa6e816?narHash=sha256-3xY8CZ4rSnQ0NqGhMKAy5vgC%2B2IVK0NoVEzDoOh4DA4%3D' (2025-12-21)
  → 'github:NixOS/nixpkgs/0744ef1b047f07d31d9962d757ffe38ec14a4d41?narHash=sha256-SosfgQSqVmOkqVgNYJnxW5FvoIQX4grOcpIKNrIwz4o%3D' (2025-12-29)
2026-01-02 21:53:21 +08:00
Ryan Yin f6266d72e6 feat: persistent mozc's config & antigravity's data 2026-01-02 20:57:33 +08:00
Ryan Yin bc1bbf3318 fix: git aliases 2025-12-29 21:57:50 +08:00
Ryan Yin e9906c9322 feat: add antigravity
Signed-off-by: Ryan Yin <xiaoyin_c@qq.com>
2025-12-27 17:12:08 +08:00
Ryan Yin 72d14c7c9b Merge pull request #239 from ryan4yin/update
feat: update inputs, remove asahi's mesa workaround
2025-12-25 13:17:21 +08:00
Ryan Yin 9f4ff5a8a3 feat: update inputs, remove asahi's mesa workaround 2025-12-25 13:12:43 +08:00
Ryan Yin 38354330ea flake.lock: Update
Flake lock file updates:

• Updated input 'aagl':
    'github:ezKEa/aagl-gtk-on-nix/e272196d003064dfb177ed9cae6a12021b806048?narHash=sha256-aB2OhrotdYU8w3uQLio5a/IiyAQvzywOKr81oldqxss%3D' (2025-11-26)
  → 'github:ezKEa/aagl-gtk-on-nix/1dc0259e0dd6c3eba5ff96b7f597b6cf5627c62c?narHash=sha256-DzRLGukYRf%2BcnGyF9ukg/1n4mtgG3hKBrzE1fHCNZ2w%3D' (2025-12-22)
• Updated input 'catppuccin':
    'github:catppuccin/nix/931c6465c3eac4709684dbc320bca243252927df?narHash=sha256-jPpxBhrBOAKrXPxdrdXnq4w7x3UIkUZjarNLNYkb7Zo%3D' (2025-11-24)
  → 'github:catppuccin/nix/de1b60ca45a578f59f7d84c8d338b346017b2161?narHash=sha256-l8x0gU8mnYaGMl%2BgWrsSHKBJlZWD8KXJfHTkRlFiPI0%3D' (2025-12-17)
• Updated input 'ghostty':
    'github:ghostty-org/ghostty/d9529947a40e16f8e7efd8a1f680d01ff99f213b?narHash=sha256-bTElYF0d4XEGK9pT4I22%2BXSGZIN26lWEvk5D06cyZak%3D' (2025-11-26)
  → 'github:ghostty-org/ghostty/4af425e11c5547090caa20f9ad358dd30bfecbe9?narHash=sha256-Dk8zpqQfr%2BQjYH0SrZMVJh6%2BJ3iulIY/eZz7hP7tNjA%3D' (2025-12-24)
• Updated input 'ghostty/flake-compat':
    'github:edolstra/flake-compat/9100a0f413b0c601e0533d1d94ffd501ce2e7885?narHash=sha256-CIVLLkVgvHYbgI2UpXvIIBJ12HWgX%2BfjA8Xf8PUmqCY%3D' (2025-05-12)
  → 'github:edolstra/flake-compat/f387cd2afec9419c8ee37694406ca490c3f34ee5?narHash=sha256-XKUZz9zewJNUj46b4AJdiRZJAvSZ0Dqj2BNfXvFlJC4%3D' (2025-10-27)
• Added input 'ghostty/home-manager':
    'github:nix-community/home-manager/4fb695d10890e9fc6a19deadf85ff79ffb78da86?narHash=sha256-CPM7zm6csUx7vSfKvzMDIjepEJv1u/usmaT7zydzbuI%3D' (2025-08-21)
• Added input 'ghostty/home-manager/nixpkgs':
    follows 'ghostty/nixpkgs'
• Updated input 'ghostty/nixpkgs':
    'https://releases.nixos.org/nixpkgs/nixpkgs-25.11pre877938.82c2e0d6dde5/nixexprs.tar.xz?narHash=sha256-sV6pJNzFkiPc6j9Bi9JuHBnWdVhtKB/mHgVmMPvDFlk%3D' (1980-01-01)
  → 'https://releases.nixos.org/nixpkgs/nixpkgs-25.11pre896415.1d4c88323ac3/nixexprs.tar.xz?narHash=sha256-gI9PpaoX4/f28HkjcTbFVpFhtOxSDtOEdFaHZrdETe0%3D' (2025-11-15)
• Updated input 'ghostty/zig':
    'github:mitchellh/zig-overlay/365085b6652259753b598d43b723858184980bbe?narHash=sha256-/zj5GYO5PKhBWGzbHbqT%2BehY8EghuABdQ2WGfCwZpCQ%3D' (2025-10-14)
  → 'github:mitchellh/zig-overlay/64f8b42cfc615b2cf99144adf2b7728c7847c72a?narHash=sha256-sGv/NHCmEnJivguGwB5w8LRmVqr1P72OjS%2BNzcJsssE%3D' (2025-11-16)
• Updated input 'ghostty/zon2nix/nixpkgs':
    'https://releases.nixos.org/nixos/unstable/nixos-25.11pre864002.8eaee1103447/nixexprs.tar.xz?narHash=sha256-XDY3A83bclygHDtesRoaRTafUd80Q30D/Daf9KSG6bs%3D' (2025-09-20)
  → follows 'ghostty/nixpkgs'
• Updated input 'helix':
    'github:mattwparas/helix/92bc3db129c639b4133a0a117cc8f3943b840886?narHash=sha256-HoGhLWTqiwr2GCUPSen7f20snqxyTGWhcd84VClHmI4%3D' (2025-11-24)
  → 'github:mattwparas/helix/a01f45b75ac20f8fa5ec7fd9f3c32e3ae8ab5d34?narHash=sha256-xDVuEKcBIY4cA7g9UwI8keimoHxQz/%2BfUXY7DA8EcsA%3D' (2025-12-08)
• Updated input 'home-manager':
    'github:nix-community/home-manager/89c9508bbe9b40d36b3dc206c2483ef176f15173?narHash=sha256-rB45jv4uwC90vM9UZ70plfvY/2Kdygs%2BzlQ07dGQFk4%3D' (2025-12-17)
  → 'github:nix-community/home-manager/7eca7f7081036a7b740090994c9ec543927f89a7?narHash=sha256-hHKQhHkXxuPJwLkI8wdu826GLV5AcuW9/HVdc9eBnTU%3D' (2025-12-24)
• Updated input 'nix-darwin':
    'github:lnl7/nix-darwin/e95de00a471d07435e0527ff4db092c84998698e?narHash=sha256-HN84sByg9FhJnojkGGDSrcjcbeioFWoNXfuyYfJ1kBE%3D' (2025-11-26)
  → 'github:lnl7/nix-darwin/c2b36207f2c396c79dbed9d40536db221bd4e363?narHash=sha256-N/sxS27%2Bt9nGvGWqwwAceSMW/Y5ddcypS/aiTnZ7ScA%3D' (2025-12-23)
• Updated input 'nix-gaming':
    'github:fufexan/nix-gaming/80e0aed8c6dd00c9fa41f82c808a8972632e3016?narHash=sha256-N6DsDLb8oDBWQ%2BQAq7qKmgk4jhW9AkzHjvXiUiT//Cw%3D' (2025-11-26)
  → 'github:fufexan/nix-gaming/4e3926b98be61b018915ded9f8f8706a4ce1a267?narHash=sha256-fvzdJMWM3Nisav0AYbCO9yQ0LbM2Od8Ulp6YBw2r3Ac%3D' (2025-12-24)
• Updated input 'nix-gaming/flake-parts':
    'github:hercules-ci/flake-parts/2cccadc7357c0ba201788ae99c4dfa90728ef5e0?narHash=sha256-LlLt2Jo/gMNYAwOgdRQBrsRoOz7BPRkzvNaI/fzXi2Q%3D' (2025-11-21)
  → 'github:hercules-ci/flake-parts/a34fae9c08a15ad73f295041fec82323541400a9?narHash=sha256-XswHlK/Qtjasvhd1nOa1e8MgZ8GS//jBoTqWtrS1Giw%3D' (2025-12-15)
• Updated input 'nix-gaming/flake-parts/nixpkgs-lib':
    'github:nix-community/nixpkgs.lib/719359f4562934ae99f5443f20aa06c2ffff91fc?narHash=sha256-b0yj6kfvO8ApcSE%2BQmA6mUfu8IYG6/uU28OFn4PaC8M%3D' (2025-10-29)
  → 'github:nix-community/nixpkgs.lib/2075416fcb47225d9b68ac469a5c4801a9c4dd85?narHash=sha256-k00uTP4JNfmejrCLJOwdObYC9jHRrr/5M/a/8L2EIdo%3D' (2025-12-14)
• Updated input 'nixos-generators':
    'github:nix-community/nixos-generators/032decf9db65efed428afd2fa39d80f7089085eb?narHash=sha256-PeSkNMvkpEvts%2B9DjFiop1iT2JuBpyknmBUs0Un0a4I%3D' (2025-07-07)
  → 'github:nix-community/nixos-generators/032a1878682fafe829edfcf5fdfad635a2efe748?narHash=sha256-NHF7QWa0ZPT8hsJrvijREW3%2BnifmF2rTXgS2v0tpcEA%3D' (2025-11-27)
• Updated input 'nixpak':
    'github:nixpak/nixpak/fd7e8f5d315158089ffbc34cc20792e43be6e666?narHash=sha256-gFjePmr09rRoAUfih4eeHX7aU3GTBUeaZvglKV%2B1ztI%3D' (2025-11-20)
  → 'github:nixpak/nixpak/51f7e5693113653be96f2606ec8ba0e2ea10936b?narHash=sha256-al5IYCT3vLDDFuEyOoOx5FIeZ00T/d%2BJ1QPK1LMXPCI%3D' (2025-12-23)
• Updated input 'nixpak/flake-parts':
    'github:hercules-ci/flake-parts/52a2caecc898d0b46b2b905f058ccc5081f842da?narHash=sha256-8oNVE8TrD19ulHinjaqONf9QWCKK%2Bw4url56cdStMpM%3D' (2025-11-12)
  → 'github:hercules-ci/flake-parts/a34fae9c08a15ad73f295041fec82323541400a9?narHash=sha256-XswHlK/Qtjasvhd1nOa1e8MgZ8GS//jBoTqWtrS1Giw%3D' (2025-12-15)
• Updated input 'nixpak/hercules-ci-effects':
    'github:hercules-ci/hercules-ci-effects/b0585849abe7d02a774a853f7952d07bb910fd9e?narHash=sha256-jZi%2B9yKmeTMsJ4ZNqRei/wL16%2BQwYGrCl4EJ3QHfoDU%3D' (2025-11-15)
  → 'github:hercules-ci/hercules-ci-effects/edcbb19948b6caf1700434e369fde6ff9e6a3c93?narHash=sha256-UQhfCggNGDc7eam%2BEittlYmeW89CZVT1KkFIHZWBH7k%3D' (2025-12-15)
• Updated input 'nixpkgs':
    'github:NixOS/nixpkgs/0254eab410b90ef2420c1059f908ae777e3b02f9?narHash=sha256-/US2Ei9JHXHVBAxV4FX49Q7H5s4UNBrIiOA6Xjzgq44%3D' (2025-12-06)
  → 'github:nixos/nixpkgs/a6531044f6d0bef691ea18d4d4ce44d0daa6e816?narHash=sha256-3xY8CZ4rSnQ0NqGhMKAy5vgC%2B2IVK0NoVEzDoOh4DA4%3D' (2025-12-21)
• Updated input 'nixpkgs-2505':
    'github:nixos/nixpkgs/6c8f0cca84510cc79e09ea99a299c9bc17d03cb6?narHash=sha256-M5aFEFPppI4UhdOxwdmceJ9bDJC4T6C6CzCK1E2FZyo%3D' (2025-12-01)
  → 'github:nixos/nixpkgs/a6c3a6141ec1b367c58ead3f7f846c772a25f4e5?narHash=sha256-vS6LSOMDOB3s%2BL6tqw9IGujxnmUAZQnEG%2BVi640LayI%3D' (2025-12-22)
• Updated input 'nixpkgs-darwin':
    'github:nixos/nixpkgs/dc205f7b4fdb04c8b7877b43edb7b73be7730081?narHash=sha256-sUoHmPr/EwXzRMpv1u/kH%2BdXuvJEyyF2Q7muE%2Bt0EU4%3D' (2025-11-25)
  → 'github:nixos/nixpkgs/8142186f001295e5a3239f485c8a49bf2de2695a?narHash=sha256-acLU/ag9VEoKkzOD202QASX25nG1eArXg5A0mHjKgxM%3D' (2025-12-23)
• Updated input 'nixpkgs-master':
    'github:nixos/nixpkgs/e50ab9bb181f9fb3ce00e7a6007c70ddaa007203?narHash=sha256-acPMRCAPgPykzkwATwD1EfF7xgmbraAvIJyCeR6bKxc%3D' (2025-12-18)
  → 'github:nixos/nixpkgs/6a81c8cfb009e8dbd462d8c75f49a121efcb6e17?narHash=sha256-XqmvlUkYpaQzV2CksGR8MzjeqTBKkB3gSf26pYoNqWw%3D' (2025-12-25)
• Updated input 'nixpkgs-stable':
    'github:nixos/nixpkgs/a320ce8e6e2cc6b4397eef214d202a50a4583829?narHash=sha256-6zddwDs2n%2Bn01l%2B1TG6PlyokDdXzu/oBmEejcH5L5%2BA%3D' (2025-11-24)
  → 'github:nixos/nixpkgs/76701a179d3a98b07653e2b0409847499b2a07d3?narHash=sha256-5G1NDO2PulBx1RoaA6U1YoUDX0qZslpPxv%2Bn5GX6Qto%3D' (2025-12-23)
• Updated input 'nur-ryan4yin':
    'github:ryan4yin/nur-packages/89e4e49bc0279d5c379526b16360e20ca901e226?narHash=sha256-/E/H334pr4qo8bdTLjYahL7Tx3HMMJvKmNHDbhjq3Dc%3D' (2025-11-25)
  → 'github:ryan4yin/nur-packages/420e007374a83784ce915f0d0bffd670f302ee1b?narHash=sha256-23X12PirpI3HhJZVm2Z/9BTbEHlXjJxizB6Mot7qeLU%3D' (2025-12-14)
• Updated input 'pre-commit-hooks':
    'github:cachix/git-hooks.nix/50b9238891e388c9fdc6a5c49e49c42533a1b5ce?narHash=sha256-QlcnByMc8KBjpU37rbq5iP7Cp97HvjRP0ucfdh%2BM4Qc%3D' (2025-11-24)
  → 'github:cachix/git-hooks.nix/b68b780b69702a090c8bb1b973bab13756cc7a27?narHash=sha256-t3T/xm8zstHRLx%2BpIHxVpQTiySbKqcQbK%2Br%2B01XVKc0%3D' (2025-12-16)
2025-12-25 12:40:13 +08:00
Ryan Yin bda311ad9a chore: use glm 4.7 for claude code 2025-12-24 11:45:06 +08:00
Ryan Yin 2bc25074a6 feat: apple touchbar - remove search key 2025-12-19 16:20:47 +08:00
Ryan Yin 219a7a6e0b feat: apple touchbar - add f1 f2 & f12 2025-12-19 16:19:19 +08:00
Ryan Yin 85394e25f4 fix: waybar - style for wireplumber.source 2025-12-19 16:04:16 +08:00
Ryan Yin a0fc2040a9 Keybindings and waybar (#238)
* feat: niri & hyprland - adjust keybindings
* feat: waybar - add micphone icon, use WirePlumber, etc
2025-12-19 01:52:39 -06:00
Ryan Yin b7f5aed4b8 docs: how to update nixos-unstable 2025-12-19 10:15:42 +08:00
Ryan Yin 6a23332ce1 chore: niri - hotkey-overlay skip-at-startup 2025-12-19 10:09:18 +08:00
Ryan Yin 12decc32b6 fix: niri keybinding for wlogout 2025-12-19 10:06:04 +08:00
Ryan Yin e7e9a43dbb flake.lock: Update
Flake lock file updates:

• Updated input 'mysecrets':
    'git+ssh://git@github.com/ryan4yin/nix-secrets.git?ref=refs/heads/main&rev=76c00cee0b7749518eef167a842a6c7a6d245a4e&shallow=1' (2025-10-21)
  → 'git+ssh://git@github.com/ryan4yin/nix-secrets.git?ref=refs/heads/main&rev=cfe34c222cf7ee4290438c97e6cc734aa7792346&shallow=1' (2025-12-18)
2025-12-19 09:57:01 +08:00
Ryan Yin 29760ddb27 refactor: update niri, write config in kdl, remove niri-flake (#237)
• Updated input 'nixpkgs':
  → 'github:NixOS/nixpkgs/0254eab410b90ef2420c1059f908ae777e3b02f9?narHash=sha256-/US2Ei9JHXHVBAxV4FX49Q7H5s4UNBrIiOA6Xjzgq44%3D' (2025-12-06)

• Updated input 'home-manager':
    'github:nix-community/home-manager/f4cb25928fafa9ae68660fe71f730fc820a59028?narHash=sha256-5xOuutXM7UPTUcn3uDAD8UlPQsXmqPrX81cXoDOAGcA%3D' (2025-11-26)
  → 'github:nix-community/home-manager/89c9508bbe9b40d36b3dc206c2483ef176f15173?narHash=sha256-rB45jv4uwC90vM9UZ70plfvY/2Kdygs%2BzlQ07dGQFk4%3D' (2025-12-17)

• Updated input 'nixpkgs-master':
    'github:nixos/nixpkgs/6812bcfd614abedbdb3f68d7b6554eda6ca3e014?narHash=sha256-sNF/PZcuzYBHKRBkerEiPf5mkZM15A3fWD%2BlqpwKc60%3D' (2025-12-15)
  → 'github:nixos/nixpkgs/e50ab9bb181f9fb3ce00e7a6007c70ddaa007203?narHash=sha256-acPMRCAPgPykzkwATwD1EfF7xgmbraAvIJyCeR6bKxc%3D' (2025-12-18)

Signed-off-by: Ryan Yin <xiaoyin_c@qq.com>
2025-12-18 19:56:46 -06:00
Ryan Yin 307f5a490c feat: fcitx5 - add new group for internaional chars input
Signed-off-by: Ryan Yin <xiaoyin_c@qq.com>
2025-12-17 19:18:52 +08:00
Ryan Yin 2e53101fb7 feat: fcitx5 - add japanese ime 2025-12-17 15:50:35 +08:00
Ryan Yin b6c1456f46 chore: update nixpkgs-master 2025-12-15 16:48:33 +08:00
Ryan Yin cdf4ab580f flake.lock: Update
Flake lock file updates:

• Updated input 'nixpkgs-master':
    'github:nixos/nixpkgs/5c46f3bd98147c8d82366df95bbef2cab3a967ea?narHash=sha256-nXv6xb7cq%2BXpjBYIjWEGTLCqQetxJu6zvVlrqHMsCOA%3D' (2025-11-26)
  → 'github:nixos/nixpkgs/6812bcfd614abedbdb3f68d7b6554eda6ca3e014?narHash=sha256-sNF/PZcuzYBHKRBkerEiPf5mkZM15A3fWD%2BlqpwKc60%3D' (2025-12-15)
2025-12-15 16:42:05 +08:00
Ryan Yin fdcc3be59d chore: update claude models 2025-12-03 14:09:06 +08:00
Ryan Yin 3c2ad0bec2 feat(darwin): set terminal font size to 15 2025-12-01 11:13:42 +08:00
Ryan Yin 81dbc5b8de feat(darwin): adjust terminal font size 2025-12-01 10:57:39 +08:00
Ryan Yin 618f26017c feat(darwin): aerosapce - adjust windows 2025-12-01 10:14:53 +08:00
Ryan Yin 4163d09af8 feat: optimizing swap on zram 2025-11-28 19:21:36 +08:00
Ryan Yin 13031e30c2 chore: upgrade code-cursor, avoid compile zed-editor from source 2025-11-27 11:08:10 +08:00
Ryan Yin 3d2a2d50af fix: foot - do not resize the window on font resizing 2025-11-27 11:06:06 +08:00
Ryan Yin 3bf1b986cf feat: upgrade nixpkgs stable to 25.11, update nixos-apple-silicon, gh… (#236)
* feat: upgrade nixpkgs stable to 25.11, update nixos-apple-silicon, ghostty, anyrun, etc
* fix: asahi-nixos - revert mesa to 25.2.6
* fix: disable gitui - it's broken on aarch64-darwin currently

---------

Signed-off-by: Ryan Yin <xiaoyin_c@qq.com>
2025-11-26 20:54:44 -06:00
Ryan Yin 7cf0e96efa feat: helix with steel, preserve steel's package 2025-11-23 16:16:02 +08:00
Ryan Yin 87a1d56247 feat: helix - add steel as the plugin system
fix: evaluation warning - 'system' has been renamed to/replaced by 'stdenv.hostPlatform.system'

Signed-off-by: Ryan Yin <xiaoyin_c@qq.com>
2025-11-23 13:40:26 +08:00
Ryan Yin def33a486b fix: vscode - password-store (#235)
* feat: vscode + code-cursor, fix password-store, update

Signed-off-by: Ryan Yin <xiaoyin_c@qq.com>
2025-11-16 07:47:47 -06:00
Ryan Yin 62bac83db4 fix: README - badge 2025-11-12 07:23:28 -06:00
Ryan Yin e0d0ff9203 flake.lock: Update (#233)
* flake.lock: Update

Flake lock file updates:

• Updated input 'aagl':
    'github:ezKEa/aagl-gtk-on-nix/944f9903859ad16db762fbe573fb6f05f7367e16?narHash=sha256-SeDqOZQoARl/xxEMdej09IScCf77SEQfRAjED7lBgMY%3D' (2025-09-22)
  → 'github:ezKEa/aagl-gtk-on-nix/1172be1377bc65581004f4d5927b58c5c7d96639?narHash=sha256-OAXK4p7WIYUcp8xx9m0RZUpV6XUDEhkoM4efI8dzPiU%3D' (2025-11-03)
• Updated input 'aagl/flake-compat':
    'github:edolstra/flake-compat/9100a0f413b0c601e0533d1d94ffd501ce2e7885?narHash=sha256-CIVLLkVgvHYbgI2UpXvIIBJ12HWgX%2BfjA8Xf8PUmqCY%3D' (2025-05-12)
  → 'github:edolstra/flake-compat/f387cd2afec9419c8ee37694406ca490c3f34ee5?narHash=sha256-XKUZz9zewJNUj46b4AJdiRZJAvSZ0Dqj2BNfXvFlJC4%3D' (2025-10-27)
• Updated input 'aagl/rust-overlay':
    'github:oxalica/rust-overlay/d2bac276ac7e669a1f09c48614538a37e3eb6d0f?narHash=sha256-kx2uELmVnAbiekj/YFfWR26OXqXedImkhe2ocnbumTA%3D' (2025-09-22)
  → 'github:oxalica/rust-overlay/59c45eb69d9222a4362673141e00ff77842cd219?narHash=sha256-myRIDh%2BPxaREz%2Bz9LzbqBJF%2BSnTFJwkthKDX9zMyddY%3D' (2025-10-30)
• Updated input 'catppuccin':
    'github:catppuccin/nix/2e0aacdd6abbecd1b1c0511a2fcd1460a6bc6645?narHash=sha256-yqh6EEhlpVWRoKl85o1s%2BQZ72UHWTvornnc3C0Ls484%3D' (2025-09-19)
  → 'github:catppuccin/nix/728cb0a667ce37bb0c68557dba819c7fb54ff1c8?narHash=sha256-KGoSj8qMOOPaNE48RTtuNBbqOvKLTeklnRHWWvE/TXo%3D' (2025-11-07)
• Updated input 'ghostty':
    'github:ghostty-org/ghostty/f97518cc100599186846282457be520fda11f467?narHash=sha256-y0B40QQ//4fpTAUfhZjoDEiUejhb2hXl5LcpNenRpYM%3D' (2025-09-23)
  → 'github:ghostty-org/ghostty/bed219c132f1940a23eba50cdd7a40e4c2718149?narHash=sha256-sic0p21KmUz/u9KsdVTIfZRDDRg9brTWs2IDb4F%2By48%3D' (2025-11-10)
• Updated input 'ghostty/nixpkgs':
    'https://releases.nixos.org/nixos/25.05/nixos-25.05.802491.7c43f080a7f2/nixexprs.tar.xz?narHash=sha256-zRDR%2BEbbeObu4V2X5QCd2Bk5eltfDlCr5yvhBwUT6pY%3D' (2025-05-25)
  → 'https://releases.nixos.org/nixpkgs/nixpkgs-25.11pre877938.82c2e0d6dde5/nixexprs.tar.xz?narHash=sha256-sV6pJNzFkiPc6j9Bi9JuHBnWdVhtKB/mHgVmMPvDFlk%3D' (1980-01-01)
• Updated input 'ghostty/zig':
    'github:mitchellh/zig-overlay/aafb1b093fb838f7a02613b719e85ec912914221?narHash=sha256-3i0IL3s18hdDlbsf0/E%2B5kyPRkZwGPbSFngq5eToiAA%3D' (2025-05-26)
  → 'github:mitchellh/zig-overlay/365085b6652259753b598d43b723858184980bbe?narHash=sha256-/zj5GYO5PKhBWGzbHbqT%2BehY8EghuABdQ2WGfCwZpCQ%3D' (2025-10-14)
• Updated input 'home-manager':
    'github:nix-community/home-manager/676c0159ed51d10489a249ecdc61e115c2a90d03?narHash=sha256-XhSTUBFOtuumxAUVxTVD5k7nE/FgK11YUxAgzNQcmLU%3D' (2025-09-24)
  → 'github:nix-community/home-manager/37a3d97f2873e0f68711117c34d04b7c7ead8f4e?narHash=sha256-t2U/GLLXHa2%2BkJkwnFNRVc2fEJ/lUfyZXBE5iKzJdcs%3D' (2025-11-10)
• Updated input 'niri':
    'github:sodiboo/niri-flake/6e26dd2cece5430571b45ffe3d97213431b3e86f?narHash=sha256-/f1k6oL2UqpDxe0MasJyLpXJj80Az/TxBbEf4hinmgI%3D' (2025-09-23)
  → 'github:sodiboo/niri-flake/44c5a2c19b7b22d1b2375ef95f656291a0af3a1b?narHash=sha256-eu8Gkb/y/5pRS3Ml/sg3oeUtFFzlJMpDrJRgPgOXz38%3D' (2025-11-10)
• Updated input 'niri/niri-unstable':
    'github:YaLTeR/niri/3850739e445b95a73c2466a718ccaf3a9a406c06?narHash=sha256-EQecFZ5VZtNjN/yzDA/RV13fK3EdLPblcf9p5wVNACo%3D' (2025-09-23)
  → 'github:YaLTeR/niri/978c4e6c8afc0199e2cbd9037bdc7c41fbbab2a3?narHash=sha256-LCddK36/6u73jed1yuqbu6JKWIITsc42qoM883DgwJg%3D' (2025-11-10)
• Updated input 'niri/nixpkgs':
    'github:NixOS/nixpkgs/554be6495561ff07b6c724047bdd7e0716aa7b46?narHash=sha256-pHpxZ/IyCwoTQPtFIAG2QaxuSm8jWzrzBGjwQZIttJc%3D' (2025-09-21)
  → 'github:NixOS/nixpkgs/b6a8526db03f735b89dd5ff348f53f752e7ddc8e?narHash=sha256-rXXuz51Bq7DHBlfIjN7jO8Bu3du5TV%2B3DSADBX7/9YQ%3D' (2025-11-08)
• Updated input 'niri/nixpkgs-stable':
    'github:NixOS/nixpkgs/d1d883129b193f0b495d75c148c2c3a7d95789a0?narHash=sha256-zMTCFGe8aVGTEr2RqUi/QzC1nOIQ0N1HRsbqB4f646k%3D' (2025-09-23)
  → 'github:NixOS/nixpkgs/c2448301fb856e351aab33e64c33a3fc8bcf637d?narHash=sha256-HiRDeUOD1VLklHeOmaKDzf%2B8Hb7vSWPVFcWwaTrpm%2BU%3D' (2025-11-10)
• Updated input 'niri/xwayland-satellite-unstable':
    'github:Supreeeme/xwayland-satellite/03368548ba745e17a85bd631613a59cb2d8469a4?narHash=sha256-sB2GAOjhjoWnjU6A/uHNJiY6O3UeztV5pJAN2g1FkXU%3D' (2025-09-22)
  → 'github:Supreeeme/xwayland-satellite/6338574bc5c036487486acde264f38f39ea15fad?narHash=sha256-Z1TKiux8K09a93w4PFDFsj8HFugXNy3iCC3Z8MpR5Rk%3D' (2025-11-10)
• Updated input 'nix-darwin':
    'github:lnl7/nix-darwin/25381509d5c91bbf3c30e23abc6d8476d2143cd1?narHash=sha256-yGA6MV0E4JSEXqLTb4ZZkmdJZcoQ8HUzihRRX12Bvpg%3D' (2025-09-21)
  → 'github:lnl7/nix-darwin/5125a3cd414dc98bbe2c528227aa6b62ee61f733?narHash=sha256-/QLk1bzmbcqJt9sU43%2By/3tHtXhAy0l8Ck0MoO2%2BevQ%3D' (2025-11-08)
• Updated input 'nix-gaming':
    'github:fufexan/nix-gaming/6418c314274a8ce27078402ab1fbac7c06da7a36?narHash=sha256-Ff5IFCEABf3CStKvf8MqJe7jwrHk2J8swdYTrwOj9dk%3D' (2025-09-24)
  → 'github:fufexan/nix-gaming/eefca17cb40462878ee1c46ac6910b2ec21adaa8?narHash=sha256-M4rbwlO4peCHRvA%2BWNYCmg8je4YBF7kSY9tG%2Bp1kEKo%3D' (2025-11-11)
• Updated input 'nix-gaming/flake-parts':
    'github:hercules-ci/flake-parts/4524271976b625a4a605beefd893f270620fd751?narHash=sha256-%2BuWLQZccFHwqpGqr2Yt5VsW/PbeJVTn9Dk6SHWhNRPw%3D' (2025-09-01)
  → 'github:hercules-ci/flake-parts/26d05891e14c88eb4a5d5bee659c0db5afb609d8?narHash=sha256-xxdepIcb39UJ94%2BYydGP221rjnpkDZUlykKuF54PsqI%3D' (2025-11-06)
• Updated input 'nix-gaming/flake-parts/nixpkgs-lib':
    'github:nix-community/nixpkgs.lib/a73b9c743612e4244d865a2fdee11865283c04e6?narHash=sha256-x2rJ%2BOvzq0sCMpgfgGaaqgBSwY%2BLST%2BWbZ6TytnT9Rk%3D' (2025-08-10)
  → 'github:nix-community/nixpkgs.lib/719359f4562934ae99f5443f20aa06c2ffff91fc?narHash=sha256-b0yj6kfvO8ApcSE%2BQmA6mUfu8IYG6/uU28OFn4PaC8M%3D' (2025-10-29)
• Updated input 'nixpak':
    'github:nixpak/nixpak/17df00be4383dbf88c42ed1fa519cc6dd71df042?narHash=sha256-eGksZmv1ie834yfgJW0z85eZZo10A/JE%2B6dhHNWQajQ%3D' (2025-09-18)
  → 'github:nixpak/nixpak/e4bcce21a735a07c409b696b31c17f6640ca0aa2?narHash=sha256-riBOo30D8DhqQobcIYAC6sDl9PHBUq9ukjS4NjnjEM4%3D' (2025-11-06)
• Updated input 'nixpak/flake-parts':
    'github:hercules-ci/flake-parts/4524271976b625a4a605beefd893f270620fd751?narHash=sha256-%2BuWLQZccFHwqpGqr2Yt5VsW/PbeJVTn9Dk6SHWhNRPw%3D' (2025-09-01)
  → 'github:hercules-ci/flake-parts/0010412d62a25d959151790968765a70c436598b?narHash=sha256-z5PlZ47j50VNF3R%2BIMS9LmzI5fYRGY/Z5O5tol1c9I4%3D' (2025-11-01)
• Updated input 'nixpak/hercules-ci-effects':
    'github:hercules-ci/hercules-ci-effects/1a3667d33e247ad35ca250698d63f49a5453d824?narHash=sha256-ENUhCRWgSX4ni751HieNuQoq06dJvApV/Nm89kh%2B/A0%3D' (2025-09-16)
  → 'github:hercules-ci/hercules-ci-effects/7db2b867219a26781437d840ce457b75b7645154?narHash=sha256-pLE7U5gOtlA/2wbKCsVRYf5DqMQ5TWBCrCfZGytDDeo%3D' (2025-10-23)
• Updated input 'nixpkgs':
    'github:nixos/nixpkgs/554be6495561ff07b6c724047bdd7e0716aa7b46?narHash=sha256-pHpxZ/IyCwoTQPtFIAG2QaxuSm8jWzrzBGjwQZIttJc%3D' (2025-09-21)
  → 'github:nixos/nixpkgs/b6a8526db03f735b89dd5ff348f53f752e7ddc8e?narHash=sha256-rXXuz51Bq7DHBlfIjN7jO8Bu3du5TV%2B3DSADBX7/9YQ%3D' (2025-11-08)
• Updated input 'nixpkgs-darwin':
    'github:nixos/nixpkgs/a1f79a1770d05af18111fbbe2a3ab2c42c0f6cd0?narHash=sha256-5rdAi7CTvM/kSs6fHe1bREIva5W3TbImsto%2BdxG4mBo%3D' (2025-09-21)
  → 'github:nixos/nixpkgs/e1ebeec86b771e9d387dd02d82ffdc77ac753abc?narHash=sha256-g/da4FzvckvbiZT075Sb1/YDNDr%2BtGQgh4N8i5ceYMg%3D' (2025-11-07)
• Updated input 'nixpkgs-master':
    'github:nixos/nixpkgs/2a8c7895537748fb6d8f0a14c08a482ffe549441?narHash=sha256-MFd2bpd3V/Nr2UhFE0uhF/21JNi5GrbCXqwCFCt4Mlg%3D' (2025-11-01)
  → 'github:nixos/nixpkgs/31fa703ba440e16d86d31598dc0601b117769b91?narHash=sha256-QiSTsHcXiu2O84iPhedQde/62TlUWwj%2BjqoYNpE%2BQ28%3D' (2025-11-11)
• Updated input 'nixpkgs-stable':
    'github:nixos/nixpkgs/d1d883129b193f0b495d75c148c2c3a7d95789a0?narHash=sha256-zMTCFGe8aVGTEr2RqUi/QzC1nOIQ0N1HRsbqB4f646k%3D' (2025-09-23)
  → 'github:nixos/nixpkgs/c2448301fb856e351aab33e64c33a3fc8bcf637d?narHash=sha256-HiRDeUOD1VLklHeOmaKDzf%2B8Hb7vSWPVFcWwaTrpm%2BU%3D' (2025-11-10)
• Updated input 'nu_scripts':
    'github:nushell/nu_scripts/0b97c5e1444b13db7c263bee646dea1e1ffe4ddb?narHash=sha256-tKMLaSNniylbo9f0wdUzUZm059RPqyFQlxMtiTPIkWQ%3D' (2025-10-15)
  → 'github:nushell/nu_scripts/449dd3d06598714c2ba0ee3fa3556e24d034c624?narHash=sha256-4ibgz7y1fsBn2aDuptqpdLd4Wdfx2sKGs7wVRJxCWW0%3D' (2025-11-02)
• Updated input 'pre-commit-hooks':
    'github:cachix/git-hooks.nix/54df955a695a84cd47d4a43e08e1feaf90b1fd9b?narHash=sha256-ytw7ROXaWZ7OfwHrQ9xvjpUWeGVm86pwnEd1QhzawIo%3D' (2025-09-17)
  → 'github:cachix/git-hooks.nix/8e7576e79b88c16d7ee3bbd112c8d90070832885?narHash=sha256-j%2BrNQ119ffYUkYt2YYS6rnd6Jh/crMZmbqpkGLXaEt0%3D' (2025-11-06)

* fix: adb and fastboot's udev rules are now integrated within systemd

* fix: programs.git - renamed options

* fix: package rename

* fix: comment out joplin-desktop - Electron version 36.9.5 is EOL

* fix: rust-overlay - aagl & lanzaboote

* fix: nu_scripts
2025-11-10 22:45:53 -06:00
Ryan Yin 1385a34f1a fix: nu_scripts 2025-11-11 12:45:04 +08:00
Ryan Yin 744fbf9ce5 fix: rust-overlay - aagl & lanzaboote 2025-11-11 11:59:40 +08:00
Ryan Yin a23073bfee fix: comment out joplin-desktop - Electron version 36.9.5 is EOL 2025-11-11 11:09:49 +08:00
Ryan Yin 60d1909055 fix: package rename 2025-11-11 11:06:20 +08:00
Ryan Yin cd4389a40f fix: programs.git - renamed options 2025-11-11 10:59:04 +08:00
Ryan Yin d0035905e1 fix: adb and fastboot's udev rules are now integrated within systemd 2025-11-11 10:58:30 +08:00
Ryan Yin fdf66fbae0 flake.lock: Update
Flake lock file updates:

• Updated input 'aagl':
    'github:ezKEa/aagl-gtk-on-nix/944f9903859ad16db762fbe573fb6f05f7367e16?narHash=sha256-SeDqOZQoARl/xxEMdej09IScCf77SEQfRAjED7lBgMY%3D' (2025-09-22)
  → 'github:ezKEa/aagl-gtk-on-nix/1172be1377bc65581004f4d5927b58c5c7d96639?narHash=sha256-OAXK4p7WIYUcp8xx9m0RZUpV6XUDEhkoM4efI8dzPiU%3D' (2025-11-03)
• Updated input 'aagl/flake-compat':
    'github:edolstra/flake-compat/9100a0f413b0c601e0533d1d94ffd501ce2e7885?narHash=sha256-CIVLLkVgvHYbgI2UpXvIIBJ12HWgX%2BfjA8Xf8PUmqCY%3D' (2025-05-12)
  → 'github:edolstra/flake-compat/f387cd2afec9419c8ee37694406ca490c3f34ee5?narHash=sha256-XKUZz9zewJNUj46b4AJdiRZJAvSZ0Dqj2BNfXvFlJC4%3D' (2025-10-27)
• Updated input 'aagl/rust-overlay':
    'github:oxalica/rust-overlay/d2bac276ac7e669a1f09c48614538a37e3eb6d0f?narHash=sha256-kx2uELmVnAbiekj/YFfWR26OXqXedImkhe2ocnbumTA%3D' (2025-09-22)
  → 'github:oxalica/rust-overlay/59c45eb69d9222a4362673141e00ff77842cd219?narHash=sha256-myRIDh%2BPxaREz%2Bz9LzbqBJF%2BSnTFJwkthKDX9zMyddY%3D' (2025-10-30)
• Updated input 'catppuccin':
    'github:catppuccin/nix/2e0aacdd6abbecd1b1c0511a2fcd1460a6bc6645?narHash=sha256-yqh6EEhlpVWRoKl85o1s%2BQZ72UHWTvornnc3C0Ls484%3D' (2025-09-19)
  → 'github:catppuccin/nix/728cb0a667ce37bb0c68557dba819c7fb54ff1c8?narHash=sha256-KGoSj8qMOOPaNE48RTtuNBbqOvKLTeklnRHWWvE/TXo%3D' (2025-11-07)
• Updated input 'ghostty':
    'github:ghostty-org/ghostty/f97518cc100599186846282457be520fda11f467?narHash=sha256-y0B40QQ//4fpTAUfhZjoDEiUejhb2hXl5LcpNenRpYM%3D' (2025-09-23)
  → 'github:ghostty-org/ghostty/bed219c132f1940a23eba50cdd7a40e4c2718149?narHash=sha256-sic0p21KmUz/u9KsdVTIfZRDDRg9brTWs2IDb4F%2By48%3D' (2025-11-10)
• Updated input 'ghostty/nixpkgs':
    'https://releases.nixos.org/nixos/25.05/nixos-25.05.802491.7c43f080a7f2/nixexprs.tar.xz?narHash=sha256-zRDR%2BEbbeObu4V2X5QCd2Bk5eltfDlCr5yvhBwUT6pY%3D' (2025-05-25)
  → 'https://releases.nixos.org/nixpkgs/nixpkgs-25.11pre877938.82c2e0d6dde5/nixexprs.tar.xz?narHash=sha256-sV6pJNzFkiPc6j9Bi9JuHBnWdVhtKB/mHgVmMPvDFlk%3D' (1980-01-01)
• Updated input 'ghostty/zig':
    'github:mitchellh/zig-overlay/aafb1b093fb838f7a02613b719e85ec912914221?narHash=sha256-3i0IL3s18hdDlbsf0/E%2B5kyPRkZwGPbSFngq5eToiAA%3D' (2025-05-26)
  → 'github:mitchellh/zig-overlay/365085b6652259753b598d43b723858184980bbe?narHash=sha256-/zj5GYO5PKhBWGzbHbqT%2BehY8EghuABdQ2WGfCwZpCQ%3D' (2025-10-14)
• Updated input 'home-manager':
    'github:nix-community/home-manager/676c0159ed51d10489a249ecdc61e115c2a90d03?narHash=sha256-XhSTUBFOtuumxAUVxTVD5k7nE/FgK11YUxAgzNQcmLU%3D' (2025-09-24)
  → 'github:nix-community/home-manager/37a3d97f2873e0f68711117c34d04b7c7ead8f4e?narHash=sha256-t2U/GLLXHa2%2BkJkwnFNRVc2fEJ/lUfyZXBE5iKzJdcs%3D' (2025-11-10)
• Updated input 'niri':
    'github:sodiboo/niri-flake/6e26dd2cece5430571b45ffe3d97213431b3e86f?narHash=sha256-/f1k6oL2UqpDxe0MasJyLpXJj80Az/TxBbEf4hinmgI%3D' (2025-09-23)
  → 'github:sodiboo/niri-flake/44c5a2c19b7b22d1b2375ef95f656291a0af3a1b?narHash=sha256-eu8Gkb/y/5pRS3Ml/sg3oeUtFFzlJMpDrJRgPgOXz38%3D' (2025-11-10)
• Updated input 'niri/niri-unstable':
    'github:YaLTeR/niri/3850739e445b95a73c2466a718ccaf3a9a406c06?narHash=sha256-EQecFZ5VZtNjN/yzDA/RV13fK3EdLPblcf9p5wVNACo%3D' (2025-09-23)
  → 'github:YaLTeR/niri/978c4e6c8afc0199e2cbd9037bdc7c41fbbab2a3?narHash=sha256-LCddK36/6u73jed1yuqbu6JKWIITsc42qoM883DgwJg%3D' (2025-11-10)
• Updated input 'niri/nixpkgs':
    'github:NixOS/nixpkgs/554be6495561ff07b6c724047bdd7e0716aa7b46?narHash=sha256-pHpxZ/IyCwoTQPtFIAG2QaxuSm8jWzrzBGjwQZIttJc%3D' (2025-09-21)
  → 'github:NixOS/nixpkgs/b6a8526db03f735b89dd5ff348f53f752e7ddc8e?narHash=sha256-rXXuz51Bq7DHBlfIjN7jO8Bu3du5TV%2B3DSADBX7/9YQ%3D' (2025-11-08)
• Updated input 'niri/nixpkgs-stable':
    'github:NixOS/nixpkgs/d1d883129b193f0b495d75c148c2c3a7d95789a0?narHash=sha256-zMTCFGe8aVGTEr2RqUi/QzC1nOIQ0N1HRsbqB4f646k%3D' (2025-09-23)
  → 'github:NixOS/nixpkgs/c2448301fb856e351aab33e64c33a3fc8bcf637d?narHash=sha256-HiRDeUOD1VLklHeOmaKDzf%2B8Hb7vSWPVFcWwaTrpm%2BU%3D' (2025-11-10)
• Updated input 'niri/xwayland-satellite-unstable':
    'github:Supreeeme/xwayland-satellite/03368548ba745e17a85bd631613a59cb2d8469a4?narHash=sha256-sB2GAOjhjoWnjU6A/uHNJiY6O3UeztV5pJAN2g1FkXU%3D' (2025-09-22)
  → 'github:Supreeeme/xwayland-satellite/6338574bc5c036487486acde264f38f39ea15fad?narHash=sha256-Z1TKiux8K09a93w4PFDFsj8HFugXNy3iCC3Z8MpR5Rk%3D' (2025-11-10)
• Updated input 'nix-darwin':
    'github:lnl7/nix-darwin/25381509d5c91bbf3c30e23abc6d8476d2143cd1?narHash=sha256-yGA6MV0E4JSEXqLTb4ZZkmdJZcoQ8HUzihRRX12Bvpg%3D' (2025-09-21)
  → 'github:lnl7/nix-darwin/5125a3cd414dc98bbe2c528227aa6b62ee61f733?narHash=sha256-/QLk1bzmbcqJt9sU43%2By/3tHtXhAy0l8Ck0MoO2%2BevQ%3D' (2025-11-08)
• Updated input 'nix-gaming':
    'github:fufexan/nix-gaming/6418c314274a8ce27078402ab1fbac7c06da7a36?narHash=sha256-Ff5IFCEABf3CStKvf8MqJe7jwrHk2J8swdYTrwOj9dk%3D' (2025-09-24)
  → 'github:fufexan/nix-gaming/eefca17cb40462878ee1c46ac6910b2ec21adaa8?narHash=sha256-M4rbwlO4peCHRvA%2BWNYCmg8je4YBF7kSY9tG%2Bp1kEKo%3D' (2025-11-11)
• Updated input 'nix-gaming/flake-parts':
    'github:hercules-ci/flake-parts/4524271976b625a4a605beefd893f270620fd751?narHash=sha256-%2BuWLQZccFHwqpGqr2Yt5VsW/PbeJVTn9Dk6SHWhNRPw%3D' (2025-09-01)
  → 'github:hercules-ci/flake-parts/26d05891e14c88eb4a5d5bee659c0db5afb609d8?narHash=sha256-xxdepIcb39UJ94%2BYydGP221rjnpkDZUlykKuF54PsqI%3D' (2025-11-06)
• Updated input 'nix-gaming/flake-parts/nixpkgs-lib':
    'github:nix-community/nixpkgs.lib/a73b9c743612e4244d865a2fdee11865283c04e6?narHash=sha256-x2rJ%2BOvzq0sCMpgfgGaaqgBSwY%2BLST%2BWbZ6TytnT9Rk%3D' (2025-08-10)
  → 'github:nix-community/nixpkgs.lib/719359f4562934ae99f5443f20aa06c2ffff91fc?narHash=sha256-b0yj6kfvO8ApcSE%2BQmA6mUfu8IYG6/uU28OFn4PaC8M%3D' (2025-10-29)
• Updated input 'nixpak':
    'github:nixpak/nixpak/17df00be4383dbf88c42ed1fa519cc6dd71df042?narHash=sha256-eGksZmv1ie834yfgJW0z85eZZo10A/JE%2B6dhHNWQajQ%3D' (2025-09-18)
  → 'github:nixpak/nixpak/e4bcce21a735a07c409b696b31c17f6640ca0aa2?narHash=sha256-riBOo30D8DhqQobcIYAC6sDl9PHBUq9ukjS4NjnjEM4%3D' (2025-11-06)
• Updated input 'nixpak/flake-parts':
    'github:hercules-ci/flake-parts/4524271976b625a4a605beefd893f270620fd751?narHash=sha256-%2BuWLQZccFHwqpGqr2Yt5VsW/PbeJVTn9Dk6SHWhNRPw%3D' (2025-09-01)
  → 'github:hercules-ci/flake-parts/0010412d62a25d959151790968765a70c436598b?narHash=sha256-z5PlZ47j50VNF3R%2BIMS9LmzI5fYRGY/Z5O5tol1c9I4%3D' (2025-11-01)
• Updated input 'nixpak/hercules-ci-effects':
    'github:hercules-ci/hercules-ci-effects/1a3667d33e247ad35ca250698d63f49a5453d824?narHash=sha256-ENUhCRWgSX4ni751HieNuQoq06dJvApV/Nm89kh%2B/A0%3D' (2025-09-16)
  → 'github:hercules-ci/hercules-ci-effects/7db2b867219a26781437d840ce457b75b7645154?narHash=sha256-pLE7U5gOtlA/2wbKCsVRYf5DqMQ5TWBCrCfZGytDDeo%3D' (2025-10-23)
• Updated input 'nixpkgs':
    'github:nixos/nixpkgs/554be6495561ff07b6c724047bdd7e0716aa7b46?narHash=sha256-pHpxZ/IyCwoTQPtFIAG2QaxuSm8jWzrzBGjwQZIttJc%3D' (2025-09-21)
  → 'github:nixos/nixpkgs/b6a8526db03f735b89dd5ff348f53f752e7ddc8e?narHash=sha256-rXXuz51Bq7DHBlfIjN7jO8Bu3du5TV%2B3DSADBX7/9YQ%3D' (2025-11-08)
• Updated input 'nixpkgs-darwin':
    'github:nixos/nixpkgs/a1f79a1770d05af18111fbbe2a3ab2c42c0f6cd0?narHash=sha256-5rdAi7CTvM/kSs6fHe1bREIva5W3TbImsto%2BdxG4mBo%3D' (2025-09-21)
  → 'github:nixos/nixpkgs/e1ebeec86b771e9d387dd02d82ffdc77ac753abc?narHash=sha256-g/da4FzvckvbiZT075Sb1/YDNDr%2BtGQgh4N8i5ceYMg%3D' (2025-11-07)
• Updated input 'nixpkgs-master':
    'github:nixos/nixpkgs/2a8c7895537748fb6d8f0a14c08a482ffe549441?narHash=sha256-MFd2bpd3V/Nr2UhFE0uhF/21JNi5GrbCXqwCFCt4Mlg%3D' (2025-11-01)
  → 'github:nixos/nixpkgs/31fa703ba440e16d86d31598dc0601b117769b91?narHash=sha256-QiSTsHcXiu2O84iPhedQde/62TlUWwj%2BjqoYNpE%2BQ28%3D' (2025-11-11)
• Updated input 'nixpkgs-stable':
    'github:nixos/nixpkgs/d1d883129b193f0b495d75c148c2c3a7d95789a0?narHash=sha256-zMTCFGe8aVGTEr2RqUi/QzC1nOIQ0N1HRsbqB4f646k%3D' (2025-09-23)
  → 'github:nixos/nixpkgs/c2448301fb856e351aab33e64c33a3fc8bcf637d?narHash=sha256-HiRDeUOD1VLklHeOmaKDzf%2B8Hb7vSWPVFcWwaTrpm%2BU%3D' (2025-11-10)
• Updated input 'nu_scripts':
    'github:nushell/nu_scripts/0b97c5e1444b13db7c263bee646dea1e1ffe4ddb?narHash=sha256-tKMLaSNniylbo9f0wdUzUZm059RPqyFQlxMtiTPIkWQ%3D' (2025-10-15)
  → 'github:nushell/nu_scripts/449dd3d06598714c2ba0ee3fa3556e24d034c624?narHash=sha256-4ibgz7y1fsBn2aDuptqpdLd4Wdfx2sKGs7wVRJxCWW0%3D' (2025-11-02)
• Updated input 'pre-commit-hooks':
    'github:cachix/git-hooks.nix/54df955a695a84cd47d4a43e08e1feaf90b1fd9b?narHash=sha256-ytw7ROXaWZ7OfwHrQ9xvjpUWeGVm86pwnEd1QhzawIo%3D' (2025-09-17)
  → 'github:cachix/git-hooks.nix/8e7576e79b88c16d7ee3bbd112c8d90070832885?narHash=sha256-j%2BrNQ119ffYUkYt2YYS6rnd6Jh/crMZmbqpkGLXaEt0%3D' (2025-11-06)
2025-11-11 10:47:15 +08:00
Ryan Yin 125bce3bc2 fix: cuda12.8-cuda_cudart-12.8.90 is marked as broken 2025-11-02 16:21:24 +08:00
Ryan Yin 6ae7fee541 feat: gaming - add bbe 2025-11-02 16:13:04 +08:00
Ryan Yin 8d1c70cc72 docs: gaming 2025-11-02 16:13:04 +08:00
Ryan Yin de05214ec5 chore: nixpaks - update dbus policies
Signed-off-by: Ryan Yin <xiaoyin_c@qq.com>
2025-11-01 21:26:01 +08:00
Ryan Yin 34fdd92351 feat: comment out nixpkgs-unstable, we use unstable by default (#232)
* feat: comment out nixpkgs-unstable, we use unstable by default

Signed-off-by: Ryan Yin <xiaoyin_c@qq.com>

* fix: typo...

---------

Signed-off-by: Ryan Yin <xiaoyin_c@qq.com>
2025-11-01 07:21:57 -06:00
Ryan Yin 0c2dcc0734 feat: update nixpkgs-patched & nixpaks-common 2025-11-01 20:01:22 +08:00
Ryan Yin 2f47f7dc76 flake.lock: Update
Flake lock file updates:

• Updated input 'nixpkgs-patched':
    'github:ryan4yin/nixpkgs/b599843bad24621dcaa5ab60dac98f9b0eb1cabe?narHash=sha256-tLdkkC6XnsY9EOZW9TlpesTclELy8W7lL2ClL%2Bnma8o%3D' (2025-09-08)
  → 'github:ryan4yin/nixpkgs/08dacfca559e1d7da38f3cf05f1f45ee9bfd213c?narHash=sha256-o9KF3DJL7g7iYMZq9SWgfS1BFlNbsm6xplRjVlOCkXI%3D' (2025-10-28)
2025-11-01 20:00:08 +08:00
Ryan Yin 082327c693 chore: ~/.claude.json - bindmount 2025-11-01 18:33:09 +08:00
Ryan Yin 1436c6c069 chore: nixpaks 2025-11-01 16:34:00 +08:00
Ryan Yin b034b383d7 feat: add flameshot 2025-11-01 15:00:10 +08:00
Ryan Yin 863f6a31f7 feat: upgrade code-cursor
Signed-off-by: Ryan Yin <xiaoyin_c@qq.com>
2025-11-01 13:54:17 +08:00
Ryan Yin 0cdc201974 fix: claude-code 2025-11-01 12:10:52 +08:00
Ryan Yin 40b782d94b fix: niri - screencapture 2025-11-01 11:41:29 +08:00
Ryan Yin 23de363622 feat: add jc
Signed-off-by: Ryan Yin <xiaoyin_c@qq.com>
2025-11-01 10:30:25 +08:00
Ryan Yin 2195a599d6 feat: update model for claude-code 2025-10-21 13:17:51 +08:00
Ryan Yin c58e76574e feat: update model for claude-code 2025-10-21 09:45:02 +08:00
Ryan Yin 7fbd31a70a fix: fontconfig serif & sans (#230) 2025-10-19 09:28:09 +08:00
Ryan Yin e8a227dcb7 feat(nixos): hyprland - gestures 2025-10-18 20:02:45 +08:00
Ryan Yin 74420b4161 fix(nixos): hyprland - enable polkit-gnome to get auth work 2025-10-18 19:55:30 +08:00
Ryan Yin aabe1c65fa fix: nixos-installer - use nixos-unstable (#228)
Signed-off-by: Ryan Yin <xiaoyin_c@qq.com>
2025-10-16 21:16:58 -06:00
Ryan Yin b25d30dd62 chore: nixos-installer - update flake.nix 2025-10-16 15:22:17 +08:00
Ryan Yin 57cd863aa5 feat: remove determinate nix 2025-10-16 13:23:36 +08:00
Ryan Yin 492708cfc7 feat: nixos-apple-silicon - build full NixOS kernel to enable BTF/BPF 2025-10-16 13:15:35 +08:00
Ryan Yin a5bd9c1d09 chore: use nu_scripts from git 2025-10-16 10:14:45 +08:00
Ryan Yin 73642f6686 refactor: install core cli tools at system-level 2025-10-15 12:48:58 +08:00
Ryan Yin d06fdb3076 feat: add procs - replacement of ps 2025-10-15 11:13:26 +08:00
Ryan Yin 956a997eb8 feat(nixos): add systemctl-tui 2025-10-15 10:57:55 +08:00
Ryan Yin f9bb934218 fix(home/base/tui/shell): nushell - use both git-completions & git-aliases 2025-10-15 10:49:53 +08:00
Ryan Yin 0029bdc8c7 feat: gcloud aliases (#226) 2025-10-14 19:49:14 -06:00
Ryan Yin 18946a0814 chore: remove mihomo-party 2025-10-02 11:50:46 +08:00
Ryan Yin 5479ea26cd feat: add netbird for homelab, keep tailscale for work (#225) 2025-10-02 11:49:05 +08:00
Ryan Yin 7885d10e29 refactor: grafana - add more datasources, rewrite in nix 2025-09-26 23:46:54 +08:00
Ryan Yin 935a1dccda feat: grafana - add more plugins 2025-09-26 21:37:23 +08:00
Ryan Yin 958f5878c1 chore: alertmanager - adjust group labels 2025-09-26 19:12:45 +08:00
Ryan Yin 5e727543c1 feat: Grafana Dashboards & VMAlert (#224)
* chore: grafana - remove useless dashboards
* fix: alertmanager - metrics
* fix: victoria-metrics - job filter
* feat: add recoding rules
* fix: grafana - add or update uid for all dashboards
* fix: vmalert - remoteWrite
2025-09-26 19:10:32 +08:00
Ryan Yin 38f9a3e1bb fix: vmalert - remoteWrite 2025-09-26 19:07:04 +08:00
Ryan Yin 902f558995 fix: grafana - add or update uid for all dashboards 2025-09-26 18:56:06 +08:00
Ryan Yin 2961a9591a feat: add recoding rules 2025-09-26 18:56:06 +08:00
Ryan Yin a8ac95ebad chore: grafana - remove useless dashboards
fix: alertmanager - metrics
fix: victoria-metrics - job filter
2025-09-26 18:36:29 +08:00
Ryan Yin 3ac0cea3cc fix: time zone in nixpak 2025-09-26 14:12:42 +08:00
Ryan Yin 58e333a23b chore: starship - disable aws & gcp module 2025-09-26 11:31:48 +08:00
Ryan Yin ba86a02fca feat: starship - enable kubernetes & os, adjust settings 2025-09-26 11:19:15 +08:00
Ryan Yin 7b28c08ab6 feat: block qqpatch.gtimg.cn by resolve it to 127.0.0.1 2025-09-26 10:27:09 +08:00
Ryan Yin 6f09e34c21 fix: qemu-user-static on aarch64 - disable pie 2025-09-24 14:35:26 +08:00
Ryan Yin 553e8d16e5 fix(WIP): qemu-user-static - too many GOT entries for -fpic, please recompile with -fPIC 2025-09-24 14:19:27 +08:00
Ryan Yin ebce6504c6 flake.lock: Update
Flake lock file updates:

• Updated input 'aagl':
    'github:ezKEa/aagl-gtk-on-nix/8e105b0850a1c9bc81affcae689db92f35d28595?narHash=sha256-yHMlD/8m4RQOrFwtaaZUfKn6hr0i3DhkoD%2BGzcd2qns%3D' (2025-09-13)
  → 'github:ezKEa/aagl-gtk-on-nix/944f9903859ad16db762fbe573fb6f05f7367e16?narHash=sha256-SeDqOZQoARl/xxEMdej09IScCf77SEQfRAjED7lBgMY%3D' (2025-09-22)
• Updated input 'aagl/rust-overlay':
    'github:oxalica/rust-overlay/6db0fb0e9cec2e9729dc52bf4898e6c135bb8a0f?narHash=sha256-afOx8AG0KYtw7mlt6s6ahBBy7eEHZwws3iCRoiuRQS4%3D' (2025-08-07)
  → 'github:oxalica/rust-overlay/d2bac276ac7e669a1f09c48614538a37e3eb6d0f?narHash=sha256-kx2uELmVnAbiekj/YFfWR26OXqXedImkhe2ocnbumTA%3D' (2025-09-22)
• Updated input 'blender-bin':
    'github:edolstra/nix-warez/0873f0bab56b6af0953db620b0fb2ec517513a7e?dir=blender&narHash=sha256-%2BaNWKYKUXgjcBIv5zqDM8Hta4CmB4FRTNX3vq68d6Vo%3D' (2025-09-12)
  → 'github:edolstra/nix-warez/f49a87422539d748a34b9f3b07a7b8ced7242dff?dir=blender&narHash=sha256-GlScQnoFgaFLQ9cd4llbJSisR0LjafjMAkBZQV7m4uk%3D' (2025-09-18)
• Updated input 'catppuccin':
    'github:catppuccin/nix/039cd59357bc6fdd8d9848717069fbc9ee609a73?narHash=sha256-dzKGtCdGbW7v95MS6pxb97u025JP24QsqCLE5bHAumI%3D' (2025-09-15)
  → 'github:catppuccin/nix/2e0aacdd6abbecd1b1c0511a2fcd1460a6bc6645?narHash=sha256-yqh6EEhlpVWRoKl85o1s%2BQZ72UHWTvornnc3C0Ls484%3D' (2025-09-19)
• Updated input 'ghostty':
    'github:ghostty-org/ghostty/0f0a61c38dbebbd70979afbd3df81bf143efca9d?narHash=sha256-4yQjtJnX3tyDASjZTVRZWOBADrjJCaXMESFzM2uMvXQ%3D' (2025-09-16)
  → 'github:ghostty-org/ghostty/f97518cc100599186846282457be520fda11f467?narHash=sha256-y0B40QQ//4fpTAUfhZjoDEiUejhb2hXl5LcpNenRpYM%3D' (2025-09-23)
• Updated input 'ghostty/zon2nix':
    'github:jcollie/zon2nix/dc78177e2ad28d5a407c9e783ee781bd559d7dd5?narHash=sha256-4XyJ6fmKd9wgJ7vHUQuULYy5ps2gUgkkDk/PrJb2OPY%3D' (2025-09-06)
  → 'github:jcollie/zon2nix/bf983aa90ff169372b9fa8c02e57ea75e0b42245?narHash=sha256-WgaDgvIZMPvlZcZrpPMjkaalTBnGF2lTG%2B62znXctWM%3D' (2025-09-20)
• Updated input 'ghostty/zon2nix/nixpkgs':
    'https://releases.nixos.org/nixos/unstable-small/nixos-25.11pre850642.73e96df7cff5/nixexprs.tar.xz?narHash=sha256-VYK7aDAv8H1enXn1ECRHmGbeY6RqLnNwUJkOwloIsko%3D' (2025-08-23)
  → 'https://releases.nixos.org/nixos/unstable/nixos-25.11pre864002.8eaee1103447/nixexprs.tar.xz?narHash=sha256-XDY3A83bclygHDtesRoaRTafUd80Q30D/Daf9KSG6bs%3D' (2025-09-20)
• Updated input 'home-manager':
    'github:nix-community/home-manager/fb928abb67bd4df99040721ed48c3b42e24b1d08?narHash=sha256-D0KVKNgWSDVjYFgPLEtSQvSKchTBT0YqSbNlH7OQ%2Bbo%3D' (2025-09-17)
  → 'github:nix-community/home-manager/676c0159ed51d10489a249ecdc61e115c2a90d03?narHash=sha256-XhSTUBFOtuumxAUVxTVD5k7nE/FgK11YUxAgzNQcmLU%3D' (2025-09-24)
• Updated input 'niri':
    'github:sodiboo/niri-flake/addd500206b992b1c9211e0dfecb70c1d0c9821a?narHash=sha256-5BUDFG%2BHnB4ZBLZSxbQ5tuueOVQDkSHi/8tUsJWlXl8%3D' (2025-09-16)
  → 'github:sodiboo/niri-flake/6e26dd2cece5430571b45ffe3d97213431b3e86f?narHash=sha256-/f1k6oL2UqpDxe0MasJyLpXJj80Az/TxBbEf4hinmgI%3D' (2025-09-23)
• Updated input 'niri/niri-unstable':
    'github:YaLTeR/niri/08f5c6fecb3c5c81d63a0bf7248c85ae3299a4a5?narHash=sha256-yDFq5/uwQV9NetcKduw0A/3XmGN/Z3ovMCTZkUv0B6Y%3D' (2025-09-16)
  → 'github:YaLTeR/niri/3850739e445b95a73c2466a718ccaf3a9a406c06?narHash=sha256-EQecFZ5VZtNjN/yzDA/RV13fK3EdLPblcf9p5wVNACo%3D' (2025-09-23)
• Updated input 'niri/nixpkgs':
    'github:NixOS/nixpkgs/c23193b943c6c689d70ee98ce3128239ed9e32d1?narHash=sha256-hLEO2TPj55KcUFUU1vgtHE9UEIOjRcH/4QbmfHNF820%3D' (2025-09-13)
  → 'github:NixOS/nixpkgs/554be6495561ff07b6c724047bdd7e0716aa7b46?narHash=sha256-pHpxZ/IyCwoTQPtFIAG2QaxuSm8jWzrzBGjwQZIttJc%3D' (2025-09-21)
• Updated input 'niri/nixpkgs-stable':
    'github:NixOS/nixpkgs/9a094440e02a699be5c57453a092a8baf569bdad?narHash=sha256-Vp9K5ol6h0J90jG7Rm4RWZsCB3x7v5VPx588TQ1dkfs%3D' (2025-09-14)
  → 'github:NixOS/nixpkgs/d1d883129b193f0b495d75c148c2c3a7d95789a0?narHash=sha256-zMTCFGe8aVGTEr2RqUi/QzC1nOIQ0N1HRsbqB4f646k%3D' (2025-09-23)
• Updated input 'niri/xwayland-satellite-unstable':
    'github:Supreeeme/xwayland-satellite/970728d0d9d1eada342bb8860af214b601139e58?narHash=sha256-TIvyWzRt1miQj6Cf5Wy8Qz43XIZX7c4vTVwRLAT5S4Y%3D' (2025-09-06)
  → 'github:Supreeeme/xwayland-satellite/03368548ba745e17a85bd631613a59cb2d8469a4?narHash=sha256-sB2GAOjhjoWnjU6A/uHNJiY6O3UeztV5pJAN2g1FkXU%3D' (2025-09-22)
• Updated input 'nix-darwin':
    'github:lnl7/nix-darwin/830b3f0b50045cf0bcfd4dab65fad05bf882e196?narHash=sha256-MhDltfXesGH8VkGv3hmJ1QEKl1ChTIj9wmGAFfWj/Wk%3D' (2025-09-09)
  → 'github:lnl7/nix-darwin/25381509d5c91bbf3c30e23abc6d8476d2143cd1?narHash=sha256-yGA6MV0E4JSEXqLTb4ZZkmdJZcoQ8HUzihRRX12Bvpg%3D' (2025-09-21)
• Updated input 'nix-gaming':
    'github:fufexan/nix-gaming/17db183a6a2ba1217bbfc123b47d4b5ee70b256a?narHash=sha256-wmlDAkOrwX9cvhXQa7wekGr/5G6SfE2D5KlvuvSEEXc%3D' (2025-09-14)
  → 'github:fufexan/nix-gaming/6418c314274a8ce27078402ab1fbac7c06da7a36?narHash=sha256-Ff5IFCEABf3CStKvf8MqJe7jwrHk2J8swdYTrwOj9dk%3D' (2025-09-24)
• Updated input 'nixpak':
    'github:nixpak/nixpak/7e7c4f735a766a359c10e59a6e99f4964eefa82f?narHash=sha256-SQKn77oAyNcxumJrOIGZbCN/FDKgUqq5vHzV4ehGJFw%3D' (2025-09-11)
  → 'github:nixpak/nixpak/17df00be4383dbf88c42ed1fa519cc6dd71df042?narHash=sha256-eGksZmv1ie834yfgJW0z85eZZo10A/JE%2B6dhHNWQajQ%3D' (2025-09-18)
• Updated input 'nixpak/hercules-ci-effects':
    'github:hercules-ci/hercules-ci-effects/99e03e72e3f7e13506f80ef9ebaedccb929d84d0?narHash=sha256-AavrbMltJKcC2Fx0lfJoZfmy7g87ebXU0ddVenhajLA%3D' (2025-08-15)
  → 'github:hercules-ci/hercules-ci-effects/1a3667d33e247ad35ca250698d63f49a5453d824?narHash=sha256-ENUhCRWgSX4ni751HieNuQoq06dJvApV/Nm89kh%2B/A0%3D' (2025-09-16)
• Updated input 'nixpkgs':
    'github:nixos/nixpkgs/c23193b943c6c689d70ee98ce3128239ed9e32d1?narHash=sha256-hLEO2TPj55KcUFUU1vgtHE9UEIOjRcH/4QbmfHNF820%3D' (2025-09-13)
  → 'github:nixos/nixpkgs/554be6495561ff07b6c724047bdd7e0716aa7b46?narHash=sha256-pHpxZ/IyCwoTQPtFIAG2QaxuSm8jWzrzBGjwQZIttJc%3D' (2025-09-21)
• Updated input 'nixpkgs-darwin':
    'github:nixos/nixpkgs/08b8f92ac6354983f5382124fef6006cade4a1c1?narHash=sha256-TjqVmbpoCqWywY9xIZLTf6ANFvDCXdctCjoYuYPYdMI%3D' (2025-09-16)
  → 'github:nixos/nixpkgs/a1f79a1770d05af18111fbbe2a3ab2c42c0f6cd0?narHash=sha256-5rdAi7CTvM/kSs6fHe1bREIva5W3TbImsto%2BdxG4mBo%3D' (2025-09-21)
• Updated input 'nixpkgs-ollama':
    'github:nixos/nixpkgs/c23193b943c6c689d70ee98ce3128239ed9e32d1?narHash=sha256-hLEO2TPj55KcUFUU1vgtHE9UEIOjRcH/4QbmfHNF820%3D' (2025-09-13)
  → 'github:nixos/nixpkgs/554be6495561ff07b6c724047bdd7e0716aa7b46?narHash=sha256-pHpxZ/IyCwoTQPtFIAG2QaxuSm8jWzrzBGjwQZIttJc%3D' (2025-09-21)
• Updated input 'nixpkgs-stable':
    'github:nixos/nixpkgs/9a094440e02a699be5c57453a092a8baf569bdad?narHash=sha256-Vp9K5ol6h0J90jG7Rm4RWZsCB3x7v5VPx588TQ1dkfs%3D' (2025-09-14)
  → 'github:nixos/nixpkgs/d1d883129b193f0b495d75c148c2c3a7d95789a0?narHash=sha256-zMTCFGe8aVGTEr2RqUi/QzC1nOIQ0N1HRsbqB4f646k%3D' (2025-09-23)
• Updated input 'nixpkgs-unstable':
    'github:nixos/nixpkgs/c23193b943c6c689d70ee98ce3128239ed9e32d1?narHash=sha256-hLEO2TPj55KcUFUU1vgtHE9UEIOjRcH/4QbmfHNF820%3D' (2025-09-13)
  → 'github:nixos/nixpkgs/554be6495561ff07b6c724047bdd7e0716aa7b46?narHash=sha256-pHpxZ/IyCwoTQPtFIAG2QaxuSm8jWzrzBGjwQZIttJc%3D' (2025-09-21)
• Updated input 'pre-commit-hooks':
    'github:cachix/git-hooks.nix/302af509428169db34f268324162712d10559f74?narHash=sha256-4DpXmct/2rcLgScT1CXOLr0TUeIlrBB1rnFqCOf5MUw%3D' (2025-09-15)
  → 'github:cachix/git-hooks.nix/54df955a695a84cd47d4a43e08e1feaf90b1fd9b?narHash=sha256-ytw7ROXaWZ7OfwHrQ9xvjpUWeGVm86pwnEd1QhzawIo%3D' (2025-09-17)
2025-09-24 11:53:41 +08:00
Ryan Yin e3a33fdf03 fix: podman cross platform - binfmt 2025-09-24 11:47:23 +08:00
Ryan Yin 16c8b893d3 fix: niri - touchpad - disable on typing 2025-09-20 17:45:13 +08:00
Ryan Yin 9509c15ac3 fix: telegram - for niri to recognize the app ID(WIP) 2025-09-19 23:04:05 +08:00
Ryan Yin 6a74052413 chore: updte renamed package 2025-09-19 09:19:42 +08:00
Ryan Yin 205b1466de feat: nixpak telegram-desktop, move data to flatpak's appDataDir ~/.var 2025-09-19 00:32:10 +08:00
Ryan Yin 8b2b43d28a feat: optimize nixpaks 2025-09-19 00:04:31 +08:00
Ryan Yin 0c6e5dc32e refactor: aquamarine - enable tailscale 2025-09-18 22:59:22 +08:00
Ryan Yin 95abfef3a9 feat: update alertmanager message template 2025-09-18 21:52:58 +08:00
Ryan Yin 070aeae8db feat: gaming (#223)
* refactor: configure gaming suite via options, use pkgs-x64
* fix: gaming on apple silicon (not work yet)
2025-09-17 13:54:27 +08:00
Ryan Yin 35f9816db9 Merge pull request #222 from ryan4yin/flake-update
chore: flake update, replace lix with dix
2025-09-17 13:41:18 +08:00
Ryan Yin 9f97c659d6 fix: lix is broken, use dix instead 2025-09-17 13:38:04 +08:00
Ryan Yin d6954ea964 flake.lock: Update
Flake lock file updates:

• Updated input 'blender-bin':
    'github:edolstra/nix-warez/8ae661516ca53314cfad8a8d3ab41e2274fdc168?dir=blender' (2025-08-22)
  → 'github:edolstra/nix-warez/0873f0bab56b6af0953db620b0fb2ec517513a7e?dir=blender' (2025-09-12)
• Updated input 'catppuccin':
    'github:catppuccin/nix/d75e3fe67f49728cb5035bc791f4b9065ff3a2c9' (2025-09-08)
  → 'github:catppuccin/nix/039cd59357bc6fdd8d9848717069fbc9ee609a73' (2025-09-15)
• Updated input 'ghostty':
    'github:ghostty-org/ghostty/0dc324607d289fcf5588fb9da4bd2c5459353974' (2025-09-09)
  → 'github:ghostty-org/ghostty/0f0a61c38dbebbd70979afbd3df81bf143efca9d' (2025-09-16)
• Updated input 'home-manager':
    'github:nix-community/home-manager/17a10049486f6698fca32097d8f52c0c895542b0' (2025-09-14)
  → 'github:nix-community/home-manager/6efc49be7c6115a0e07b3a2fa042cd41d9195545' (2025-09-17)
• Updated input 'niri':
    'github:sodiboo/niri-flake/ef694b996daeeb8684c0adfaa9b7067a6e709054' (2025-09-09)
  → 'github:sodiboo/niri-flake/addd500206b992b1c9211e0dfecb70c1d0c9821a' (2025-09-16)
• Updated input 'niri/niri-unstable':
    'github:YaLTeR/niri/bdee1a657699a77bc4cdb050f7355f37f64c45a6' (2025-09-08)
  → 'github:YaLTeR/niri/08f5c6fecb3c5c81d63a0bf7248c85ae3299a4a5' (2025-09-16)
• Updated input 'niri/nixpkgs':
    'github:NixOS/nixpkgs/b599843bad24621dcaa5ab60dac98f9b0eb1cabe' (2025-09-08)
  → 'github:NixOS/nixpkgs/c23193b943c6c689d70ee98ce3128239ed9e32d1' (2025-09-13)
• Updated input 'niri/nixpkgs-stable':
    'github:NixOS/nixpkgs/d179d77c139e0a3f5c416477f7747e9d6b7ec315' (2025-09-09)
  → 'github:NixOS/nixpkgs/9a094440e02a699be5c57453a092a8baf569bdad' (2025-09-14)
• Updated input 'nix-gaming':
    'github:fufexan/nix-gaming/cae14b9ee74180bda2c1f312958fe710b4267fce' (2025-09-09)
  → 'github:fufexan/nix-gaming/17db183a6a2ba1217bbfc123b47d4b5ee70b256a' (2025-09-14)
• Updated input 'nixpak':
    'github:nixpak/nixpak/0cd505152f03cc703550b01c6eab7ed95bca5339' (2025-09-04)
  → 'github:nixpak/nixpak/7e7c4f735a766a359c10e59a6e99f4964eefa82f' (2025-09-11)
• Updated input 'nixpkgs':
    'github:nixos/nixpkgs/b599843bad24621dcaa5ab60dac98f9b0eb1cabe' (2025-09-08)
  → 'github:nixos/nixpkgs/c23193b943c6c689d70ee98ce3128239ed9e32d1' (2025-09-13)
• Updated input 'nixpkgs-darwin':
    'github:nixos/nixpkgs/ca77296380960cd497a765102eeb1356eb80fed0' (2025-09-05)
  → 'github:nixos/nixpkgs/08b8f92ac6354983f5382124fef6006cade4a1c1' (2025-09-16)
• Updated input 'nixpkgs-ollama':
    'github:nixos/nixpkgs/b599843bad24621dcaa5ab60dac98f9b0eb1cabe' (2025-09-08)
  → 'github:nixos/nixpkgs/c23193b943c6c689d70ee98ce3128239ed9e32d1' (2025-09-13)
• Updated input 'nixpkgs-stable':
    'github:nixos/nixpkgs/d179d77c139e0a3f5c416477f7747e9d6b7ec315' (2025-09-09)
  → 'github:nixos/nixpkgs/9a094440e02a699be5c57453a092a8baf569bdad' (2025-09-14)
• Updated input 'nixpkgs-unstable':
    'github:nixos/nixpkgs/b599843bad24621dcaa5ab60dac98f9b0eb1cabe' (2025-09-08)
  → 'github:nixos/nixpkgs/c23193b943c6c689d70ee98ce3128239ed9e32d1' (2025-09-13)
• Updated input 'pre-commit-hooks':
    'github:cachix/git-hooks.nix/ab82ab08d6bf74085bd328de2a8722c12d97bd9d' (2025-09-07)
  → 'github:cachix/git-hooks.nix/302af509428169db34f268324162712d10559f74' (2025-09-15)
2025-09-17 13:24:39 +08:00
Ryan Yin 755596484b docs: add comments for proton & winetriks 2025-09-16 23:29:16 +08:00
Ryan Yin d729ca1377 refacotor: python packages 2025-09-16 12:09:02 +08:00
Ryan Yin 918403b098 feat: gaming - docs, persistent data, add lutris, heroic & star rail 2025-09-14 23:57:27 +08:00
Ryan Yin 1b663c757b fix: node_exporter - exclude also run/credentials/.+ & run/user/.+ 2025-09-14 11:28:12 +08:00
Ryan Yin a5b57cd16e fix: alert - exclude also /persistent-prefixed paths 2025-09-14 11:09:48 +08:00
Ryan Yin 48a9d7c507 fix: idols-aquamarine - alert (#221)
* fix: idols-aquamarine - alert

* feat: add dashboards for victoriametrics

* fix: node_exporter - exclude docker/podman/kubelet mounts and /home/ryan bindmounts

* fix: alert - add coredns, comment out some useless alert rules
2025-09-14 10:48:38 +08:00
Ryan Yin 7a82b8085a fix: alert - add coredns, comment out some useless alert rules 2025-09-14 10:40:12 +08:00
Ryan Yin c8182216ae fix: node_exporter - exclude docker/podman/kubelet mounts and /home/ryan bindmounts 2025-09-14 10:15:20 +08:00
Ryan Yin e5b9a4917e feat: add dashboards for victoriametrics 2025-09-14 09:44:09 +08:00
Ryan Yin f771ec76a0 fix: idols-aquamarine - alert 2025-09-14 09:28:50 +08:00
Ryan Yin 01b69e810e fix: downgrade kubernetes-helm due to regression in 3.18.x, related to schema validation 2025-09-12 19:47:23 +08:00
Ryan Yin 7f112010c2 feat: update alert rules 2025-09-12 11:50:17 +08:00
Ryan Yin e902a9bdb1 feat: update anyrun & use gtk4 css, revert nvidia to prod driver (#220)
fix: nvidia: revert to prod driver to fix GTK4 apps hang on close
2025-09-11 10:41:09 +08:00
Ryan Yin 07d6a5e102 fix: anyrun - The package should come from the same flake as all the plugins 2025-09-10 22:48:57 +08:00
Ryan Yin b6796f9592 flake.lock: Update
Flake lock file updates:

• Updated input 'catppuccin':
    'github:catppuccin/nix/842da43be0d00d7cf4c26faf279bc71a614c259b' (2025-08-28)
  → 'github:catppuccin/nix/d75e3fe67f49728cb5035bc791f4b9065ff3a2c9' (2025-09-08)
• Updated input 'ghostty':
    'github:ghostty-org/ghostty/a51a956bdb15a3868abf688f5679da4ea897b845' (2025-08-31)
  → 'github:ghostty-org/ghostty/0dc324607d289fcf5588fb9da4bd2c5459353974' (2025-09-09)
• Updated input 'ghostty/zon2nix':
    'github:jcollie/zon2nix/d9dc9ef1ab9ae45b5c9d80c6a747cc9968ee0c60' (2025-08-24)
  → 'github:jcollie/zon2nix/dc78177e2ad28d5a407c9e783ee781bd559d7dd5' (2025-09-06)
• Removed input 'ghostty/zon2nix/flake-utils'
• Updated input 'home-manager':
    'github:nix-community/home-manager/99a69bdf8a3c6bf038c4121e9c4b6e99706a187a' (2025-08-30)
  → 'github:nix-community/home-manager/3c97248d6f896232355735e34bb518ae9f130c5d' (2025-09-10)
• Updated input 'niri':
    'github:sodiboo/niri-flake/01285d6ffb9214e6e524cfb7a4752a3c20be6b2b' (2025-08-30)
  → 'github:sodiboo/niri-flake/ef694b996daeeb8684c0adfaa9b7067a6e709054' (2025-09-09)
• Updated input 'niri/niri-unstable':
    'github:YaLTeR/niri/01be0e65f4eb91a9cd624ac0b76aaeab765c7294' (2025-08-30)
  → 'github:YaLTeR/niri/bdee1a657699a77bc4cdb050f7355f37f64c45a6' (2025-09-08)
• Updated input 'niri/nixpkgs':
    'github:NixOS/nixpkgs/d7600c775f877cd87b4f5a831c28aa94137377aa' (2025-08-30)
  → 'github:NixOS/nixpkgs/b599843bad24621dcaa5ab60dac98f9b0eb1cabe' (2025-09-08)
• Updated input 'niri/nixpkgs-stable':
    'github:NixOS/nixpkgs/41d292bfc37309790f70f4c120b79280ce40af16' (2025-08-29)
  → 'github:NixOS/nixpkgs/d179d77c139e0a3f5c416477f7747e9d6b7ec315' (2025-09-09)
• Updated input 'niri/xwayland-satellite-unstable':
    'github:Supreeeme/xwayland-satellite/1d156aa8d30b124ff770488e5e34289a08ff4207' (2025-08-30)
  → 'github:Supreeeme/xwayland-satellite/970728d0d9d1eada342bb8860af214b601139e58' (2025-09-06)
• Updated input 'nix-darwin':
    'github:lnl7/nix-darwin/8df64f819698c1fee0c2969696f54a843b2231e8' (2025-08-22)
  → 'github:lnl7/nix-darwin/830b3f0b50045cf0bcfd4dab65fad05bf882e196' (2025-09-09)
• Updated input 'nix-gaming':
    'github:fufexan/nix-gaming/4c92760b8d12d0d36e8e189d890d1c01a7ae646e' (2025-08-31)
  → 'github:fufexan/nix-gaming/cae14b9ee74180bda2c1f312958fe710b4267fce' (2025-09-09)
• Updated input 'nix-gaming/flake-parts':
    'github:hercules-ci/flake-parts/af66ad14b28a127c5c0f3bbb298218fc63528a18' (2025-08-06)
  → 'github:hercules-ci/flake-parts/4524271976b625a4a605beefd893f270620fd751' (2025-09-01)
• Updated input 'nix-gaming/flake-parts/nixpkgs-lib':
    'github:nix-community/nixpkgs.lib/0f36c44e01a6129be94e3ade315a5883f0228a6e' (2025-07-27)
  → 'github:nix-community/nixpkgs.lib/a73b9c743612e4244d865a2fdee11865283c04e6' (2025-08-10)
• Updated input 'nixpak':
    'github:nixpak/nixpak/d73116f6b9eb8cd5f1acc1a3dc9e9979ba5c3131' (2025-08-28)
  → 'github:nixpak/nixpak/0cd505152f03cc703550b01c6eab7ed95bca5339' (2025-09-04)
• Updated input 'nixpak/flake-parts':
    'github:hercules-ci/flake-parts/af66ad14b28a127c5c0f3bbb298218fc63528a18' (2025-08-06)
  → 'github:hercules-ci/flake-parts/4524271976b625a4a605beefd893f270620fd751' (2025-09-01)
• Updated input 'nixpkgs':
    'github:nixos/nixpkgs/d7600c775f877cd87b4f5a831c28aa94137377aa' (2025-08-30)
  → 'github:nixos/nixpkgs/b599843bad24621dcaa5ab60dac98f9b0eb1cabe' (2025-09-08)
• Updated input 'nixpkgs-darwin':
    'github:nixos/nixpkgs/a918bb3594dd243c2f8534b3be01b3cb4ed35fd1' (2025-08-30)
  → 'github:nixos/nixpkgs/ca77296380960cd497a765102eeb1356eb80fed0' (2025-09-05)
• Updated input 'nixpkgs-ollama':
    'github:nixos/nixpkgs/d7600c775f877cd87b4f5a831c28aa94137377aa' (2025-08-30)
  → 'github:nixos/nixpkgs/b599843bad24621dcaa5ab60dac98f9b0eb1cabe' (2025-09-08)
• Updated input 'nixpkgs-patched':
    'github:ryan4yin/nixpkgs/361887dbb55312dd449193578200beedb6688fcf' (2025-09-01)
  → 'github:ryan4yin/nixpkgs/b599843bad24621dcaa5ab60dac98f9b0eb1cabe' (2025-09-08)
• Updated input 'nixpkgs-stable':
    'github:nixos/nixpkgs/41d292bfc37309790f70f4c120b79280ce40af16' (2025-08-29)
  → 'github:nixos/nixpkgs/d179d77c139e0a3f5c416477f7747e9d6b7ec315' (2025-09-09)
• Updated input 'nixpkgs-unstable':
    'github:nixos/nixpkgs/d7600c775f877cd87b4f5a831c28aa94137377aa' (2025-08-30)
  → 'github:nixos/nixpkgs/b599843bad24621dcaa5ab60dac98f9b0eb1cabe' (2025-09-08)
• Updated input 'pre-commit-hooks':
    'github:cachix/git-hooks.nix/e891a93b193fcaf2fc8012d890dc7f0befe86ec2' (2025-08-23)
  → 'github:cachix/git-hooks.nix/ab82ab08d6bf74085bd328de2a8722c12d97bd9d' (2025-09-07)
• Updated input 'preservation':
    'github:nix-community/preservation/286737ba485f30c1687c833e66f5901a6c8dc019' (2025-07-01)
  → 'github:nix-community/preservation/93416f4614ad2dfed5b0dcf12f27e57d27a5ab11' (2025-09-09)
2025-09-10 21:48:50 +08:00
Ryan Yin 4c04c8e3a3 Merge pull request #219 from ryan4yin/anyrun
polish: anyrun - update config & css style
2025-09-10 21:48:09 +08:00
Ryan Yin e14c197e8f fix: qq with inputmethod 2025-09-01 14:45:32 +08:00
Ryan Yin a1d51ffe0c fix: qq with input method https://patch-diff.githubusercontent.com/raw/NixOS/nixpkgs/pull/439070.patch 2025-09-01 14:28:06 +08:00
Ryan Yin 8d7b622430 fix: nixos/logind: migrate to settings option 2025-09-01 14:04:13 +08:00
Ryan Yin da1e7253da docs: flypy - user customized words, fix typos 2025-09-01 14:00:24 +08:00
Ryan Yin 123d90a8dd fix: niri - windowrule for chromium 2025-09-01 10:01:55 +08:00
Ryan Yin 2483ee2707 fix: update nixos-appli-silicon 2025-09-01 09:50:12 +08:00
Ryan Yin 3eec0b94a0 feat: preservation - add sunshine & obs-studio 2025-08-31 13:26:21 +08:00
Ryan Yin ac68092d88 chore: flake update & adjustment (#218)
* flake.lock: Update

Flake lock file updates:

• Updated input 'anyrun':
    'github:Kirottu/anyrun/0c3fa788227d29cf8b0184e553c83021bcebad7c' (2025-08-17)
  → 'github:Kirottu/anyrun/af1ffe4f17921825ff2a773995604dce2b2df3cd' (2025-08-19)
• Updated input 'anyrun/flake-parts':
    'github:hercules-ci/flake-parts/c621e8422220273271f52058f618c94e405bb0f5' (2025-04-01)
  → 'github:hercules-ci/flake-parts/af66ad14b28a127c5c0f3bbb298218fc63528a18' (2025-08-06)
• Updated input 'blender-bin':
    'github:edolstra/nix-warez/e8b2b3214f07970e45ec3fc98d957b0507a3564a?dir=blender' (2025-08-01)
  → 'github:edolstra/nix-warez/8ae661516ca53314cfad8a8d3ab41e2274fdc168?dir=blender' (2025-08-22)
• Updated input 'catppuccin':
    'github:catppuccin/nix/a2ef20ed6fb921073c2d1b1929447c3bd88f595e' (2025-08-16)
  → 'github:catppuccin/nix/842da43be0d00d7cf4c26faf279bc71a614c259b' (2025-08-28)
• Updated input 'ghostty':
    'github:ghostty-org/ghostty/11d56235f9e4a227b794a87a503785ef9f3349ed' (2025-08-15)
  → 'github:ghostty-org/ghostty/a51a956bdb15a3868abf688f5679da4ea897b845' (2025-08-31)
• Updated input 'ghostty/zon2nix':
    'github:jcollie/zon2nix/56c159be489cc6c0e73c3930bd908ddc6fe89613' (2025-03-16)
  → 'github:jcollie/zon2nix/d9dc9ef1ab9ae45b5c9d80c6a747cc9968ee0c60' (2025-08-24)
• Updated input 'ghostty/zon2nix/nixpkgs':
    follows 'ghostty/nixpkgs'
  → 'https://releases.nixos.org/nixos/unstable-small/nixos-25.11pre850642.73e96df7cff5/nixexprs.tar.xz?narHash=sha256-VYK7aDAv8H1enXn1ECRHmGbeY6RqLnNwUJkOwloIsko%3D' (2025-08-23)
• Updated input 'home-manager':
    'github:nix-community/home-manager/8b4ac149687e8520187a66f05e9d4eafebf96522' (2025-08-17)
  → 'github:nix-community/home-manager/99a69bdf8a3c6bf038c4121e9c4b6e99706a187a' (2025-08-30)
• Updated input 'niri':
    'github:sodiboo/niri-flake/9aa137af01f05386e5bb5050e983750017007a66' (2025-08-17)
  → 'github:sodiboo/niri-flake/01285d6ffb9214e6e524cfb7a4752a3c20be6b2b' (2025-08-30)
• Updated input 'niri/niri-stable':
    'github:YaLTeR/niri/8ba57fcf25d2fc9565131684a839d58703f1dae7' (2025-05-25)
  → 'github:YaLTeR/niri/01be0e65f4eb91a9cd624ac0b76aaeab765c7294' (2025-08-30)
• Updated input 'niri/niri-unstable':
    'github:YaLTeR/niri/a6febb86aa5af0df7bf2792ca027ef95a503d599' (2025-08-17)
  → 'github:YaLTeR/niri/01be0e65f4eb91a9cd624ac0b76aaeab765c7294' (2025-08-30)
• Updated input 'niri/nixpkgs':
    'github:NixOS/nixpkgs/fbcf476f790d8a217c3eab4e12033dc4a0f6d23c' (2025-08-14)
  → 'github:NixOS/nixpkgs/d7600c775f877cd87b4f5a831c28aa94137377aa' (2025-08-30)
• Updated input 'niri/nixpkgs-stable':
    'github:NixOS/nixpkgs/ad7196ae55c295f53a7d1ec39e4a06d922f3b899' (2025-08-15)
  → 'github:NixOS/nixpkgs/41d292bfc37309790f70f4c120b79280ce40af16' (2025-08-29)
• Updated input 'niri/xwayland-satellite-stable':
    'github:Supreeeme/xwayland-satellite/3ba30b149f9eb2bbf42cf4758d2158ca8cceef73' (2025-05-29)
  → 'github:Supreeeme/xwayland-satellite/388d291e82ffbc73be18169d39470f340707edaa' (2025-08-18)
• Updated input 'niri/xwayland-satellite-unstable':
    'github:Supreeeme/xwayland-satellite/5a184d435927c3423f0ad189ea2b490578450fb7' (2025-08-15)
  → 'github:Supreeeme/xwayland-satellite/1d156aa8d30b124ff770488e5e34289a08ff4207' (2025-08-30)
• Updated input 'nix-darwin':
    'github:lnl7/nix-darwin/7220b01d679e93ede8d7b25d6f392855b81dd475' (2025-08-15)
  → 'github:lnl7/nix-darwin/8df64f819698c1fee0c2969696f54a843b2231e8' (2025-08-22)
• Updated input 'nix-gaming':
    'github:fufexan/nix-gaming/f2bf778502254d8852402a83ae346fd803095ccc' (2025-08-17)
  → 'github:fufexan/nix-gaming/4c92760b8d12d0d36e8e189d890d1c01a7ae646e' (2025-08-31)
• Updated input 'nixos-apple-silicon/flake-compat':
    'github:nix-community/flake-compat/8bf105319d44f6b9f0d764efa4fdef9f1cc9ba1c' (2023-06-29)
  → 'github:nix-community/flake-compat/0f158086a2ecdbb138cd0429410e44994f1b7e4b' (2025-05-02)
• Updated input 'nixpak':
    'github:nixpak/nixpak/ae70d05017be7e0aa6c1cf5f267fe6953eb027e6' (2025-08-14)
  → 'github:nixpak/nixpak/d73116f6b9eb8cd5f1acc1a3dc9e9979ba5c3131' (2025-08-28)
• Updated input 'nixpak/hercules-ci-effects':
    'github:hercules-ci/hercules-ci-effects/5f2e09654b2e70ba643e41609d9f9b6640f22113' (2025-07-15)
  → 'github:hercules-ci/hercules-ci-effects/99e03e72e3f7e13506f80ef9ebaedccb929d84d0' (2025-08-15)
• Updated input 'nixpkgs':
    'github:nixos/nixpkgs/fbcf476f790d8a217c3eab4e12033dc4a0f6d23c' (2025-08-14)
  → 'github:nixos/nixpkgs/d7600c775f877cd87b4f5a831c28aa94137377aa' (2025-08-30)
• Updated input 'nixpkgs-darwin':
    'github:nixos/nixpkgs/32f313e49e42f715491e1ea7b306a87c16fe0388' (2025-08-15)
  → 'github:nixos/nixpkgs/a918bb3594dd243c2f8534b3be01b3cb4ed35fd1' (2025-08-30)
• Updated input 'nixpkgs-ollama':
    'github:nixos/nixpkgs/fbcf476f790d8a217c3eab4e12033dc4a0f6d23c' (2025-08-14)
  → 'github:nixos/nixpkgs/d7600c775f877cd87b4f5a831c28aa94137377aa' (2025-08-30)
• Updated input 'nixpkgs-stable':
    'github:nixos/nixpkgs/ad7196ae55c295f53a7d1ec39e4a06d922f3b899' (2025-08-15)
  → 'github:nixos/nixpkgs/41d292bfc37309790f70f4c120b79280ce40af16' (2025-08-29)
• Updated input 'nixpkgs-unstable':
    'github:nixos/nixpkgs/fbcf476f790d8a217c3eab4e12033dc4a0f6d23c' (2025-08-14)
  → 'github:nixos/nixpkgs/d7600c775f877cd87b4f5a831c28aa94137377aa' (2025-08-30)
• Updated input 'pre-commit-hooks':
    'github:cachix/git-hooks.nix/9c52372878df6911f9afc1e2a1391f55e4dfc864' (2025-08-05)
  → 'github:cachix/git-hooks.nix/e891a93b193fcaf2fc8012d890dc7f0befe86ec2' (2025-08-23)

* chore: niri xwayland-satellite integration

* feat: ssh - `programs.ssh` default values will be removed in the future

* fix: comment out all fgpa tools - nextpnr failed to build
2025-08-31 13:23:13 +08:00
Ryan Yin 601816a5ee fix: comment out all fgpa tools - nextpnr failed to build 2025-08-31 13:15:28 +08:00
Ryan Yin 3a21601778 feat: ssh - programs.ssh default values will be removed in the future 2025-08-31 13:08:57 +08:00
Ryan Yin d1eadc6f40 chore: niri xwayland-satellite integration 2025-08-31 13:04:04 +08:00
Ryan Yin 3c90833fb4 flake.lock: Update
Flake lock file updates:

• Updated input 'anyrun':
    'github:Kirottu/anyrun/0c3fa788227d29cf8b0184e553c83021bcebad7c' (2025-08-17)
  → 'github:Kirottu/anyrun/af1ffe4f17921825ff2a773995604dce2b2df3cd' (2025-08-19)
• Updated input 'anyrun/flake-parts':
    'github:hercules-ci/flake-parts/c621e8422220273271f52058f618c94e405bb0f5' (2025-04-01)
  → 'github:hercules-ci/flake-parts/af66ad14b28a127c5c0f3bbb298218fc63528a18' (2025-08-06)
• Updated input 'blender-bin':
    'github:edolstra/nix-warez/e8b2b3214f07970e45ec3fc98d957b0507a3564a?dir=blender' (2025-08-01)
  → 'github:edolstra/nix-warez/8ae661516ca53314cfad8a8d3ab41e2274fdc168?dir=blender' (2025-08-22)
• Updated input 'catppuccin':
    'github:catppuccin/nix/a2ef20ed6fb921073c2d1b1929447c3bd88f595e' (2025-08-16)
  → 'github:catppuccin/nix/842da43be0d00d7cf4c26faf279bc71a614c259b' (2025-08-28)
• Updated input 'ghostty':
    'github:ghostty-org/ghostty/11d56235f9e4a227b794a87a503785ef9f3349ed' (2025-08-15)
  → 'github:ghostty-org/ghostty/a51a956bdb15a3868abf688f5679da4ea897b845' (2025-08-31)
• Updated input 'ghostty/zon2nix':
    'github:jcollie/zon2nix/56c159be489cc6c0e73c3930bd908ddc6fe89613' (2025-03-16)
  → 'github:jcollie/zon2nix/d9dc9ef1ab9ae45b5c9d80c6a747cc9968ee0c60' (2025-08-24)
• Updated input 'ghostty/zon2nix/nixpkgs':
    follows 'ghostty/nixpkgs'
  → 'https://releases.nixos.org/nixos/unstable-small/nixos-25.11pre850642.73e96df7cff5/nixexprs.tar.xz?narHash=sha256-VYK7aDAv8H1enXn1ECRHmGbeY6RqLnNwUJkOwloIsko%3D' (2025-08-23)
• Updated input 'home-manager':
    'github:nix-community/home-manager/8b4ac149687e8520187a66f05e9d4eafebf96522' (2025-08-17)
  → 'github:nix-community/home-manager/99a69bdf8a3c6bf038c4121e9c4b6e99706a187a' (2025-08-30)
• Updated input 'niri':
    'github:sodiboo/niri-flake/9aa137af01f05386e5bb5050e983750017007a66' (2025-08-17)
  → 'github:sodiboo/niri-flake/01285d6ffb9214e6e524cfb7a4752a3c20be6b2b' (2025-08-30)
• Updated input 'niri/niri-stable':
    'github:YaLTeR/niri/8ba57fcf25d2fc9565131684a839d58703f1dae7' (2025-05-25)
  → 'github:YaLTeR/niri/01be0e65f4eb91a9cd624ac0b76aaeab765c7294' (2025-08-30)
• Updated input 'niri/niri-unstable':
    'github:YaLTeR/niri/a6febb86aa5af0df7bf2792ca027ef95a503d599' (2025-08-17)
  → 'github:YaLTeR/niri/01be0e65f4eb91a9cd624ac0b76aaeab765c7294' (2025-08-30)
• Updated input 'niri/nixpkgs':
    'github:NixOS/nixpkgs/fbcf476f790d8a217c3eab4e12033dc4a0f6d23c' (2025-08-14)
  → 'github:NixOS/nixpkgs/d7600c775f877cd87b4f5a831c28aa94137377aa' (2025-08-30)
• Updated input 'niri/nixpkgs-stable':
    'github:NixOS/nixpkgs/ad7196ae55c295f53a7d1ec39e4a06d922f3b899' (2025-08-15)
  → 'github:NixOS/nixpkgs/41d292bfc37309790f70f4c120b79280ce40af16' (2025-08-29)
• Updated input 'niri/xwayland-satellite-stable':
    'github:Supreeeme/xwayland-satellite/3ba30b149f9eb2bbf42cf4758d2158ca8cceef73' (2025-05-29)
  → 'github:Supreeeme/xwayland-satellite/388d291e82ffbc73be18169d39470f340707edaa' (2025-08-18)
• Updated input 'niri/xwayland-satellite-unstable':
    'github:Supreeeme/xwayland-satellite/5a184d435927c3423f0ad189ea2b490578450fb7' (2025-08-15)
  → 'github:Supreeeme/xwayland-satellite/1d156aa8d30b124ff770488e5e34289a08ff4207' (2025-08-30)
• Updated input 'nix-darwin':
    'github:lnl7/nix-darwin/7220b01d679e93ede8d7b25d6f392855b81dd475' (2025-08-15)
  → 'github:lnl7/nix-darwin/8df64f819698c1fee0c2969696f54a843b2231e8' (2025-08-22)
• Updated input 'nix-gaming':
    'github:fufexan/nix-gaming/f2bf778502254d8852402a83ae346fd803095ccc' (2025-08-17)
  → 'github:fufexan/nix-gaming/4c92760b8d12d0d36e8e189d890d1c01a7ae646e' (2025-08-31)
• Updated input 'nixos-apple-silicon/flake-compat':
    'github:nix-community/flake-compat/8bf105319d44f6b9f0d764efa4fdef9f1cc9ba1c' (2023-06-29)
  → 'github:nix-community/flake-compat/0f158086a2ecdbb138cd0429410e44994f1b7e4b' (2025-05-02)
• Updated input 'nixpak':
    'github:nixpak/nixpak/ae70d05017be7e0aa6c1cf5f267fe6953eb027e6' (2025-08-14)
  → 'github:nixpak/nixpak/d73116f6b9eb8cd5f1acc1a3dc9e9979ba5c3131' (2025-08-28)
• Updated input 'nixpak/hercules-ci-effects':
    'github:hercules-ci/hercules-ci-effects/5f2e09654b2e70ba643e41609d9f9b6640f22113' (2025-07-15)
  → 'github:hercules-ci/hercules-ci-effects/99e03e72e3f7e13506f80ef9ebaedccb929d84d0' (2025-08-15)
• Updated input 'nixpkgs':
    'github:nixos/nixpkgs/fbcf476f790d8a217c3eab4e12033dc4a0f6d23c' (2025-08-14)
  → 'github:nixos/nixpkgs/d7600c775f877cd87b4f5a831c28aa94137377aa' (2025-08-30)
• Updated input 'nixpkgs-darwin':
    'github:nixos/nixpkgs/32f313e49e42f715491e1ea7b306a87c16fe0388' (2025-08-15)
  → 'github:nixos/nixpkgs/a918bb3594dd243c2f8534b3be01b3cb4ed35fd1' (2025-08-30)
• Updated input 'nixpkgs-ollama':
    'github:nixos/nixpkgs/fbcf476f790d8a217c3eab4e12033dc4a0f6d23c' (2025-08-14)
  → 'github:nixos/nixpkgs/d7600c775f877cd87b4f5a831c28aa94137377aa' (2025-08-30)
• Updated input 'nixpkgs-stable':
    'github:nixos/nixpkgs/ad7196ae55c295f53a7d1ec39e4a06d922f3b899' (2025-08-15)
  → 'github:nixos/nixpkgs/41d292bfc37309790f70f4c120b79280ce40af16' (2025-08-29)
• Updated input 'nixpkgs-unstable':
    'github:nixos/nixpkgs/fbcf476f790d8a217c3eab4e12033dc4a0f6d23c' (2025-08-14)
  → 'github:nixos/nixpkgs/d7600c775f877cd87b4f5a831c28aa94137377aa' (2025-08-30)
• Updated input 'pre-commit-hooks':
    'github:cachix/git-hooks.nix/9c52372878df6911f9afc1e2a1391f55e4dfc864' (2025-08-05)
  → 'github:cachix/git-hooks.nix/e891a93b193fcaf2fc8012d890dc7f0befe86ec2' (2025-08-23)
2025-08-31 12:55:50 +08:00
Ryan Yin fcc90318f2 chore: nixos user groups 2025-08-31 12:51:14 +08:00
Ryan Yin ccec1d4c29 fix: wallpaper.service/start deleted to break ordering cycle starting with app-nm-applet@autostart.service/start 2025-08-31 12:18:38 +08:00
Ryan Yin c56593516d fix: wireshark 2025-08-27 17:12:51 +08:00
Ryan Yin 8e356dd6fc refactor: steam (#217) 2025-08-22 16:16:35 +08:00
Ryan Yin 7a1a9644c6 fix: steam 2025-08-22 11:55:51 +08:00
Ryan Yin eb38e7c6af docs: readme - remove xorg 2025-08-22 09:50:54 +08:00
Ryan Yin 1099cc7ab0 docs: readme for niri 2025-08-22 09:49:34 +08:00
Ryan Yin d21131deca feat: add tokei 2025-08-21 17:53:00 +08:00
Ryan Yin 497823f9a3 docs: home/ 2025-08-21 15:59:43 +08:00
Ryan Yin 76ca2dbb65 docs: hosts 2025-08-21 15:40:28 +08:00
Ryan Yin e685d4416e docs: hosts 2025-08-21 15:39:19 +08:00
Ryan Yin cb47adb6b3 feat: update docs via LLM (#216) 2025-08-21 15:32:50 +08:00
Ryan Yin a9bc0ebdb8 feat: kubie 2025-08-21 14:30:55 +08:00
Ryan Yin 1a3b80b608 chore: remove unused fcitx5-chinese-addons 2025-08-21 00:23:52 +08:00
Ryan Yin 7a6f4fb3ea feat: add shoukei into my main ssh keys 2025-08-20 23:08:37 +08:00
Ryan Yin 5c236517bc feat: refactor, update settings for sunshine (#215) 2025-08-20 22:12:43 +08:00
Ryan Yin bccd5475df feat: niri - update keybindigs 2025-08-20 20:35:24 +08:00
Ryan Yin c199f11582 feat: niri - update window rules 2025-08-20 20:25:34 +08:00
Ryan Yin 0a27530c11 fix: niri - add support for xwayland 2025-08-20 20:14:55 +08:00
Ryan Yin 41d521e6f5 docs: niri - screenshot 2025-08-20 19:32:38 +08:00
Ryan Yin b7f12a6ff2 fix: niri - settings per host (#214) 2025-08-20 14:55:08 +08:00
Ryan Yin 155c02ed66 docs: README - update 2025-08-20 13:21:35 +08:00
Ryan Yin 8a2c5ba577 docs: README - add niri 2025-08-20 13:08:43 +08:00
Ryan Yin f904a672d4 Merge pull request #213 from ryan4yin/niri-spawn-at-startup
feat: niri - more settings
2025-08-20 13:02:23 +08:00
Ryan Yin 379fdd5b46 refactor: niri settings 2025-08-20 12:56:04 +08:00
Ryan Yin 21090c93e8 feat: environment variables for wayland & nvidia 2025-08-20 12:39:43 +08:00
Ryan Yin 2b914efbb1 feat: niri - waybar opacity 2025-08-20 12:23:50 +08:00
Ryan Yin 7b1bab3c9b feat: niri - spawn at startup 2025-08-20 12:12:19 +08:00
Ryan Yin d517d74bf7 feat: shoukei - add Lid & PowerKey settings (#207) 2025-08-20 02:21:07 +08:00
Ryan Yin d83cfcf681 docs: nixos-apple-silicon 2025-08-20 02:10:07 +08:00
Ryan Yin a9d08f15a2 Merge pull request #212 from ryan4yin/niri
feat: add new wayland compositor - niri
2025-08-20 02:00:31 +08:00
Ryan Yin ce4588d0c2 feat: niri - define configs via home-manager 2025-08-20 01:59:42 +08:00
Ryan Yin 69eee64e7e feat: add new wayland compositor - niri 2025-08-20 00:03:25 +08:00
Ryan Yin 09fbea3f77 chore: adjust keyboard backlight via hypridle 2025-08-20 00:00:18 +08:00
Ryan Yin 64a7b2c6cf chore: power management 2025-08-19 23:56:19 +08:00
Ryan Yin c8bc396e89 chore: replace iotop with iotop-c 2025-08-19 23:54:14 +08:00
Ryan Yin 035c07d658 chore: update nixos-appli-silicon, update asahi options 2025-08-19 23:30:19 +08:00
Ryan Yin 30d73dabf1 refactor: justfile - nixos-swtich/darwin-switch (#211) 2025-08-18 21:22:23 +08:00
Ryan Yin adc49e7f6e docs: grafana dashboards 2025-08-18 13:29:39 +08:00
Ryan Yin 74b19dd7dc feat: idols-aquamarine - use default kernel for stability 2025-08-17 17:39:47 +08:00
Ryan Yin 329f03c1e2 fix: remove duplicated values with catppuccin-nix 2025-08-17 17:23:17 +08:00
Ryan Yin 99cf8d6ac6 flake.lock: Update
Flake lock file updates:

• Updated input 'anyrun':
    'github:Kirottu/anyrun/25367153f225a59c5ce5746583e39a71ff052f09' (2025-05-27)
  → 'github:Kirottu/anyrun/0c3fa788227d29cf8b0184e553c83021bcebad7c' (2025-08-17)
• Updated input 'blender-bin':
    'github:edolstra/nix-warez/69acfebb3740542936f71775bcdf322dc328a655?dir=blender' (2025-07-16)
  → 'github:edolstra/nix-warez/e8b2b3214f07970e45ec3fc98d957b0507a3564a?dir=blender' (2025-08-01)
• Updated input 'catppuccin':
    'github:catppuccin/nix/b32de96c3c5384c83b0f4d741ec58a7f97c9ab11' (2025-07-28)
  → 'github:catppuccin/nix/a2ef20ed6fb921073c2d1b1929447c3bd88f595e' (2025-08-16)
• Updated input 'ghostty':
    'github:ghostty-org/ghostty/92c1f4b0b9c6fde6d8f79109de71bf4e30831e86' (2025-07-28)
  → 'github:ghostty-org/ghostty/11d56235f9e4a227b794a87a503785ef9f3349ed' (2025-08-15)
• Updated input 'home-manager':
    'github:nix-community/home-manager/25deca893974aae98c9be151fb47d6284c053470' (2025-07-29)
  → 'github:nix-community/home-manager/8b4ac149687e8520187a66f05e9d4eafebf96522' (2025-08-17)
• Updated input 'nix-darwin':
    'github:lnl7/nix-darwin/e04a388232d9a6ba56967ce5b53a8a6f713cdfcf' (2025-06-30)
  → 'github:lnl7/nix-darwin/7220b01d679e93ede8d7b25d6f392855b81dd475' (2025-08-15)
• Updated input 'nix-gaming':
    'github:fufexan/nix-gaming/ceb9d44f09b0db02332873247a50210a486959ff' (2025-07-27)
  → 'github:fufexan/nix-gaming/f2bf778502254d8852402a83ae346fd803095ccc' (2025-08-17)
• Updated input 'nix-gaming/flake-parts':
    'github:hercules-ci/flake-parts/644e0fc48951a860279da645ba77fe4a6e814c5e' (2025-07-21)
  → 'github:hercules-ci/flake-parts/af66ad14b28a127c5c0f3bbb298218fc63528a18' (2025-08-06)
• Updated input 'nix-gaming/flake-parts/nixpkgs-lib':
    'github:nix-community/nixpkgs.lib/14a40a1d7fb9afa4739275ac642ed7301a9ba1ab' (2025-06-29)
  → 'github:nix-community/nixpkgs.lib/0f36c44e01a6129be94e3ade315a5883f0228a6e' (2025-07-27)
• Updated input 'nixpak':
    'github:nixpak/nixpak/fedd4b59b7c8f18be508dee9d89985a8501982d0' (2025-07-24)
  → 'github:nixpak/nixpak/ae70d05017be7e0aa6c1cf5f267fe6953eb027e6' (2025-08-14)
• Updated input 'nixpak/flake-parts':
    'github:hercules-ci/flake-parts/644e0fc48951a860279da645ba77fe4a6e814c5e' (2025-07-21)
  → 'github:hercules-ci/flake-parts/af66ad14b28a127c5c0f3bbb298218fc63528a18' (2025-08-06)
• Updated input 'nixpkgs':
    'github:nixos/nixpkgs/dc9637876d0dcc8c9e5e22986b857632effeb727' (2025-07-28)
  → 'github:nixos/nixpkgs/fbcf476f790d8a217c3eab4e12033dc4a0f6d23c' (2025-08-14)
• Updated input 'nixpkgs-darwin':
    'github:nixos/nixpkgs/648f70160c03151bc2121d179291337ad6bc564b' (2025-07-28)
  → 'github:nixos/nixpkgs/32f313e49e42f715491e1ea7b306a87c16fe0388' (2025-08-15)
• Updated input 'nixpkgs-ollama':
    'github:nixos/nixpkgs/dc9637876d0dcc8c9e5e22986b857632effeb727' (2025-07-28)
  → 'github:nixos/nixpkgs/fbcf476f790d8a217c3eab4e12033dc4a0f6d23c' (2025-08-14)
• Updated input 'nixpkgs-stable':
    'github:nixos/nixpkgs/13e8d35b7d6028b7198f8186bc0347c6abaa2701' (2025-07-26)
  → 'github:nixos/nixpkgs/ad7196ae55c295f53a7d1ec39e4a06d922f3b899' (2025-08-15)
• Updated input 'nixpkgs-unstable':
    'github:nixos/nixpkgs/dc9637876d0dcc8c9e5e22986b857632effeb727' (2025-07-28)
  → 'github:nixos/nixpkgs/fbcf476f790d8a217c3eab4e12033dc4a0f6d23c' (2025-08-14)
• Updated input 'pre-commit-hooks':
    'github:cachix/git-hooks.nix/16ec914f6fb6f599ce988427d9d94efddf25fe6d' (2025-06-24)
  → 'github:cachix/git-hooks.nix/9c52372878df6911f9afc1e2a1391f55e4dfc864' (2025-08-05)
• Updated input 'pre-commit-hooks/flake-compat':
    'github:edolstra/flake-compat/0f9255e01c2351cc7d116c072cb317785dd33b33' (2023-10-04)
  → 'github:edolstra/flake-compat/9100a0f413b0c601e0533d1d94ffd501ce2e7885' (2025-05-12)
2025-08-17 17:19:50 +08:00
Ryan Yin d222dc05a9 feat: add kubectl-cnpg 2025-08-17 16:42:07 +08:00
Ryan Yin 84b30c0233 fix: cloudnative-pg dashboard - conflicted label - cluster 2025-08-17 16:25:38 +08:00
Ryan Yin ebf1b6b4d0 feat: add grafana dashboard for cnpg 2025-08-17 03:20:16 +08:00
Ryan Yin 6e246c38b6 fix: loki-logs dashboard 2025-08-16 23:34:16 +08:00
Ryan Yin f5e2f1832a chore: systemd-journal - reduce disk usage 2025-08-16 22:12:08 +08:00
Ryan Yin d53ab3b4e3 fix: grafana loki-logs dashboard 2025-08-16 21:42:30 +08:00
Ryan Yin f9368749b5 feat: start clash-verge on login 2025-08-11 00:42:10 +08:00
Ryan Yin 3c409bd83a feat: use mainGateway for idols-ai, rename defaultGateway to proxyGateway 2025-08-11 00:32:08 +08:00
Ryan Yin 01448b6e0e feat: install clash verge on all nixos desktop hosts 2025-08-11 00:18:29 +08:00
Ryan Yin e54af73cb2 feat: shoukei - scale monitor to 1.33 times 2025-08-10 13:27:20 +08:00
Ryan Yin 7da0b208e6 feat: waybar network - use bytes instead of bits 2025-08-10 13:23:56 +08:00
Ryan Yin 0fe704c32a chore: shoukei - disable sunshine for security 2025-08-09 13:47:04 +08:00
Ryan Yin 273bfd2ac8 feat: shoukei - add clash verge rev 2025-08-06 15:54:02 +08:00
Ryan Yin 09a01ff947 fix: hyprlock is broken on asahi kernel, replace it with swaylock 2025-08-06 14:11:48 +08:00
Ryan Yin 1ef015cb16 fix: comment out git-aliases.nu 2025-08-02 13:10:21 +08:00
Ryan Yin 52dfcea713 fix: hyprland - disable tap related features to avoid palm rejection. 2025-07-30 12:24:24 +08:00
Ryan Yin 863f124b08 Merge pull request #209 from ryan4yin/nixfmt
nixfmt
2025-07-30 12:20:52 +08:00
Ryan Yin 7a78b1831c feat: justfile - format nix files 2025-07-30 12:19:15 +08:00
Ryan Yin 13bb77108c feat: format via 'ls **/*.nix | each { |it| nixfmt $it.name }' 2025-07-30 12:17:24 +08:00
Ryan Yin d10b30b06b chore: remove platformio - not used currently 2025-07-30 10:57:05 +08:00
Ryan Yin 4d218e314c chore: install ai stuff(ollama) & games(steam) only on idols-ai 2025-07-30 10:57:05 +08:00
Ryan Yin 87229f9a31 chore: rename pre-commit-hooks.nix to git-hooks.nix 2025-07-30 10:57:05 +08:00
Ryan Yin bc163b8157 feat: replace alejandra with nixfmt(rfc-style) 1.0.0 2025-07-30 10:57:05 +08:00
Ryan Yin 30fefb0f5f flake.lock: Update
Flake lock file updates:

• Updated input 'blender-bin':
    'github:edolstra/nix-warez/85d76721132cc6631bbaa8c950d4d0f3aa4003fd?dir=blender' (2025-05-04)
  → 'github:edolstra/nix-warez/69acfebb3740542936f71775bcdf322dc328a655?dir=blender' (2025-07-16)
• Updated input 'catppuccin':
    'github:catppuccin/nix/5f431aac1a4038c385e6de2d2384d943e4802d61' (2025-07-11)
  → 'github:catppuccin/nix/b32de96c3c5384c83b0f4d741ec58a7f97c9ab11' (2025-07-28)
• Updated input 'ghostty':
    'github:ghostty-org/ghostty/4aa28988a6ddd9aa8b3402e4bab05ad02a0c12c6' (2025-07-11)
  → 'github:ghostty-org/ghostty/92c1f4b0b9c6fde6d8f79109de71bf4e30831e86' (2025-07-28)
• Updated input 'ghostty/zig/flake-compat':
    follows 'ghostty'
  → follows 'ghostty/flake-compat'
• Updated input 'home-manager':
    'github:nix-community/home-manager/fab659b346c0d4252208434c3c4b3983a4b38fec' (2025-07-11)
  → 'github:nix-community/home-manager/25deca893974aae98c9be151fb47d6284c053470' (2025-07-29)
• Updated input 'nix-gaming':
    'github:fufexan/nix-gaming/62f976ed47de88323770646a9a92e4912d33585f' (2025-07-11)
  → 'github:fufexan/nix-gaming/ceb9d44f09b0db02332873247a50210a486959ff' (2025-07-27)
• Updated input 'nix-gaming/flake-parts':
    'github:hercules-ci/flake-parts/77826244401ea9de6e3bac47c2db46005e1f30b5' (2025-07-01)
  → 'github:hercules-ci/flake-parts/644e0fc48951a860279da645ba77fe4a6e814c5e' (2025-07-21)
• Updated input 'nixpak':
    'github:nixpak/nixpak/19942ded45bd73c74dbb44642406da0569f639a8' (2025-07-10)
  → 'github:nixpak/nixpak/fedd4b59b7c8f18be508dee9d89985a8501982d0' (2025-07-24)
• Updated input 'nixpak/flake-parts':
    'github:hercules-ci/flake-parts/77826244401ea9de6e3bac47c2db46005e1f30b5' (2025-07-01)
  → 'github:hercules-ci/flake-parts/644e0fc48951a860279da645ba77fe4a6e814c5e' (2025-07-21)
• Updated input 'nixpak/hercules-ci-effects':
    'github:hercules-ci/hercules-ci-effects/231726642197817d20310b9d39dd4afb9e899489' (2025-05-23)
  → 'github:hercules-ci/hercules-ci-effects/5f2e09654b2e70ba643e41609d9f9b6640f22113' (2025-07-15)
• Updated input 'nixpkgs':
    'github:nixos/nixpkgs/9807714d6944a957c2e036f84b0ff8caf9930bc0' (2025-07-08)
  → 'github:nixos/nixpkgs/dc9637876d0dcc8c9e5e22986b857632effeb727' (2025-07-28)
• Updated input 'nixpkgs-darwin':
    'github:nixos/nixpkgs/9b008d60392981ad674e04016d25619281550a9d' (2025-07-08)
  → 'github:nixos/nixpkgs/648f70160c03151bc2121d179291337ad6bc564b' (2025-07-28)
• Updated input 'nixpkgs-ollama':
    'github:nixos/nixpkgs/9807714d6944a957c2e036f84b0ff8caf9930bc0' (2025-07-08)
  → 'github:nixos/nixpkgs/dc9637876d0dcc8c9e5e22986b857632effeb727' (2025-07-28)
• Updated input 'nixpkgs-stable':
    'github:nixos/nixpkgs/88983d4b665fb491861005137ce2b11a9f89f203' (2025-07-08)
  → 'github:nixos/nixpkgs/13e8d35b7d6028b7198f8186bc0347c6abaa2701' (2025-07-26)
• Updated input 'nixpkgs-unstable':
    'github:nixos/nixpkgs/fc02ee70efb805d3b2865908a13ddd4474557ecf' (2025-07-23)
  → 'github:nixos/nixpkgs/dc9637876d0dcc8c9e5e22986b857632effeb727' (2025-07-28)
• Updated input 'polybar-themes':
    'github:adi1090x/polybar-themes/ccf23ef328f1e988650487c40678c6953038e2b2' (2025-06-26)
  → 'github:adi1090x/polybar-themes/e6326ff356b296256b7fac9c5bcc42a1ef4a4d5b' (2025-07-26)
2025-07-30 10:57:05 +08:00
Ryan Yin 8124b9ffa9 feat: neovim - use nixd as nix lsp 2025-07-30 10:57:05 +08:00
Ryan Yin 77c9514b88 feat: gnome-keyring - add gui app 2025-07-29 13:47:14 +08:00
Ryan Yin bc2523302d fix: waybar - network & battery 2025-07-28 19:59:58 +08:00
Ryan Yin 31c1139dbd feat: replace cppnix with lix 2025-07-28 14:26:09 +08:00
Ryan Yin 32fa706f9f feat: apple touchbar - add keys 2025-07-26 17:03:29 +08:00
Ryan Yin 18cabc994c feat: shoukei - add x64 support via binfmt 2025-07-26 17:03:29 +08:00
Ryan Yin 4bb92855e7 fix: aarch64-linux - start chromium & telegram on startup 2025-07-26 17:03:29 +08:00
Ryan Yin fa7bfabf48 doc: apple touchbar 2025-07-25 22:49:53 +08:00
Ryan Yin 9bd5c5b727 fix: apple silicon (#205)
* fix: pavucontrol on apple-silicon

* fix: apple-silicon - touchbar
2025-07-25 22:37:50 +08:00
Ryan Yin 88f85bb5d7 feat: hyprland - use chromium on aarch64-linux 2025-07-25 13:55:31 +08:00
Ryan Yin 70154b0652 feat: use chromium on aarch64-linux 2025-07-25 13:53:19 +08:00
Ryan Yin e226d4b28f chore: add static ip for shoukei 2025-07-25 13:48:04 +08:00
Ryan Yin 58dc1d49f6 docs: README - minor changes 2025-07-25 12:32:00 +08:00
Ryan Yin 90f36202a9 docs: mkpasswd - add link to man page 2025-07-17 23:09:16 +08:00
Ryan Yin 9548fef641 docs: mkpasswd 2025-07-17 23:07:33 +08:00
Ryan Yin e0fe69b887 feat: add security tools 2025-07-17 22:42:21 +08:00
Ryan Yin d3c4fd6aa3 feat: preservation - add nix cache to reduce ram usage 2025-07-17 20:21:38 +08:00
389 changed files with 25198 additions and 9362 deletions
+2 -2
View File
@@ -25,9 +25,9 @@ jobs:
steps: steps:
- name: Checkout repository - name: Checkout repository
uses: actions/checkout@v4 uses: actions/checkout@v5
- name: Install nix - name: Install nix
uses: cachix/install-nix-action@v24 uses: cachix/install-nix-action@v31
with: with:
install_url: https://nixos.org/nix/install install_url: https://nixos.org/nix/install
extra_nix_config: | extra_nix_config: |
+1
View File
@@ -8,3 +8,4 @@ logs/
core* core*
!core/ !core/
!core.nix !core.nix
!coredns*
+12 -1
View File
@@ -1,10 +1,21 @@
[files] [files]
# Respect .ignore files.
ignore-dot = true ignore-dot = true
# Respect ignore files.
ignore-files = true ignore-files = true
extend-exclude = ["themes/", "data/", "static-surprises/", "resources/"] # Typos-specific ignore globs (gitignore syntax).
# NOTE: This setting is ignored when you pass the path directly on the command line, as cachix/git-hooks.nix does.
# To ignore those files, you must also exclude those directories via git-hooks.hooks.typos.settings.exclude.
extend-exclude = [
"data/",
"rime-data/",
]
[default] [default]
# Check binary files as text.
binary = false binary = false
# Verify spelling in file names.
check-filename = true
# ignore some special identifiers(sha256, mac address, crypto keys, etc) # ignore some special identifiers(sha256, mac address, crypto keys, etc)
extend-ignore-re = [ extend-ignore-re = [
"iterm2", "iterm2",
+18 -68
View File
@@ -77,7 +77,7 @@ shell:
[group('nix')] [group('nix')]
fmt: fmt:
# format the nix files in this repo # format the nix files in this repo
nix fmt ls **/*.nix | each { |it| nixfmt $it.name }
# Show all the auto gc roots in the nix store # Show all the auto gc roots in the nix store
[group('nix')] [group('nix')]
@@ -100,7 +100,12 @@ repair-store *paths:
# Update all Nixpkgs inputs # Update all Nixpkgs inputs
[group('nix')] [group('nix')]
up-nix: up-nix:
nix flake update nixpkgs nixpkgs-stable nixpkgs-unstable nixpkgs-darwin nixpkgs-ollama nix flake update --commit-lock-file nixpkgs-stable nixpkgs-master nixpkgs-darwin nixpkgs-patched
# override nixpkgs's commit hash
[group('nix')]
override-pkgs hash:
nix flake update --commit-lock-file nixpkgs --override-input nixpkgs github:NixOS/nixpkgs/{{hash}}
############################################################################ ############################################################################
# #
@@ -108,19 +113,21 @@ up-nix:
# #
############################################################################ ############################################################################
# Deploy the nixosConfiguration by hostname match
[linux] [linux]
[group('desktop')] [group('homelab')]
hypr mode="default": local mode="default":
#!/usr/bin/env nu #!/usr/bin/env nu
use {{utils_nu}} *; use {{utils_nu}} *;
nixos-switch ai-hyprland {{mode}} nixos-switch (hostname) {{mode}}
# Deploy the niri nixosConfiguration by hostname match
[linux] [linux]
[group('desktop')] [group('desktop')]
s-hypr mode="default": niri mode="default":
#!/usr/bin/env nu #!/usr/bin/env nu
use {{utils_nu}} *; use {{utils_nu}} *;
nixos-switch shoukei-hyprland {{mode}} nixos-switch $"(hostname)-niri" {{mode}}
############################################################################ ############################################################################
# #
@@ -141,23 +148,15 @@ darwin-rollback:
use {{utils_nu}} *; use {{utils_nu}} *;
darwin-rollback darwin-rollback
# Depoly to fern(macOS host) # Deploy the darwinConfiguration by hostname match
[macos] [macos]
[group('desktop')] [group('desktop')]
fe mode="default": local mode="default":
#!/usr/bin/env nu #!/usr/bin/env nu
use {{utils_nu}} *; use {{utils_nu}} *;
darwin-build "fern" {{mode}}; darwin-build (hostname) {{mode}};
darwin-switch "fern" {{mode}} darwin-switch (hostname) {{mode}}
# Depoly to frieren(macOS host)
[macos]
[group('desktop')]
fr mode="default":
#!/usr/bin/env nu
use {{utils_nu}} *;
darwin-build "frieren" {{mode}};
darwin-switch "frieren" {{mode}}
# Reset launchpad to force it to reindex Applications # Reset launchpad to force it to reindex Applications
[macos] [macos]
@@ -178,13 +177,6 @@ reset-launchpad:
col tag: col tag:
colmena apply --on '@{{tag}}' --verbose --show-trace colmena apply --on '@{{tag}}' --verbose --show-trace
[linux]
[group('homelab')]
local name mode="default":
#!/usr/bin/env nu
use {{utils_nu}} *;
nixos-switch {{name}} {{mode}}
# Build and upload a vm image # Build and upload a vm image
[linux] [linux]
[group('homelab')] [group('homelab')]
@@ -204,37 +196,16 @@ lab:
shoryu: shoryu:
colmena apply --on '@kubevirt-shoryu' --verbose --show-trace colmena apply --on '@kubevirt-shoryu' --verbose --show-trace
[linux]
[group('homelab')]
shoryu-local mode="default":
#!/usr/bin/env nu
use {{utils_nu}} *;
nixos-switch kubevirt-shoryu {{mode}}
[linux] [linux]
[group('homelab')] [group('homelab')]
shushou: shushou:
colmena apply --on '@kubevirt-shushou' --verbose --show-trace colmena apply --on '@kubevirt-shushou' --verbose --show-trace
[linux]
[group('homelab')]
shushou-local mode="default":
#!/usr/bin/env nu
use {{utils_nu}} *;
nixos-switch kubevirt-shushou {{mode}}
[linux] [linux]
[group('homelab')] [group('homelab')]
youko: youko:
colmena apply --on '@kubevirt-youko' --verbose --show-trace colmena apply --on '@kubevirt-youko' --verbose --show-trace
[linux]
[group('homelab')]
youko-local mode="default":
#!/usr/bin/env nu
use {{utils_nu}} *;
nixos-switch kubevirt-youko {{mode}}
############################################################################ ############################################################################
# #
# Commands for other Virtual Machines # Commands for other Virtual Machines
@@ -256,37 +227,16 @@ upload-idols mode="default":
aqua: aqua:
colmena apply --on '@aqua' --verbose --show-trace colmena apply --on '@aqua' --verbose --show-trace
[linux]
[group('homelab')]
aqua-local mode="default":
#!/usr/bin/env nu
use {{utils_nu}} *;
nixos-switch aquamarine {{mode}}
[linux] [linux]
[group('homelab')] [group('homelab')]
ruby: ruby:
colmena apply --on '@ruby' --verbose --show-trace colmena apply --on '@ruby' --verbose --show-trace
[linux]
[group('homelab')]
ruby-local mode="default":
#!/usr/bin/env nu
use {{utils_nu}} *;
nixos-switch ruby {{mode}}
[linux] [linux]
[group('homelab')] [group('homelab')]
kana: kana:
colmena apply --on '@kana' --verbose --show-trace colmena apply --on '@kana' --verbose --show-trace
[linux]
[group('homelab')]
kana-local mode="default":
#!/usr/bin/env nu
use {{utils_nu}} *;
nixos-switch kana {{mode}}
############################################################################ ############################################################################
# #
# Kubernetes related commands # Kubernetes related commands
+45 -56
View File
@@ -8,9 +8,9 @@
<a href="https://github.com/ryan4yin/nix-config/stargazers"> <a href="https://github.com/ryan4yin/nix-config/stargazers">
<img alt="Stargazers" src="https://img.shields.io/github/stars/ryan4yin/nix-config?style=for-the-badge&logo=starship&color=C9CBFF&logoColor=D9E0EE&labelColor=302D41"></a> <img alt="Stargazers" src="https://img.shields.io/github/stars/ryan4yin/nix-config?style=for-the-badge&logo=starship&color=C9CBFF&logoColor=D9E0EE&labelColor=302D41"></a>
<a href="https://nixos.org/"> <a href="https://nixos.org/">
<img src="https://img.shields.io/badge/NixOS-25.05-informational.svg?style=for-the-badge&logo=nixos&color=F2CDCD&logoColor=D9E0EE&labelColor=302D41"></a> <img src="https://img.shields.io/badge/NixOS-25.11-informational.svg?style=for-the-badge&logo=nixos&color=F2CDCD&logoColor=D9E0EE&labelColor=302D41"></a>
<a href="https://github.com/ryan4yin/nixos-and-flakes-book"> <a href="https://github.com/ryan4yin/nixos-and-flakes-book">
<img src="https://img.shields.io/static/v1?label=Nix Flakes&message=learning&style=for-the-badge&logo=nixos&color=DDB6F2&logoColor=D9E0EE&labelColor=302D41"></a> <img src="https://img.shields.io/badge/Nix%20Flakes-learning-informational.svg?style=for-the-badge&logo=nixos&color=F2CDCD&logoColor=D9E0EE&labelColor=302D41"></a>
</a> </a>
</p> </p>
@@ -23,7 +23,7 @@
This repository is home to the nix code that builds my systems: This repository is home to the nix code that builds my systems:
1. NixOS Desktops: NixOS with home-manager, hyprland, agenix, etc. 1. NixOS Desktops: NixOS with home-manager, niri, agenix, etc.
2. macOS Desktops: nix-darwin with home-manager, share the same home-manager configuration with 2. macOS Desktops: nix-darwin with home-manager, share the same home-manager configuration with
NixOS Desktops. NixOS Desktops.
3. NixOS Servers: virtual machines running on Proxmox/KubeVirt, with various services, such as 3. NixOS Servers: virtual machines running on Proxmox/KubeVirt, with various services, such as
@@ -54,36 +54,36 @@ You don't have to go through the pain I've experienced again! Check out my
## Components ## Components
| | NixOS(Wayland) | | | NixOS(Wayland) |
| --------------------------- | ------------------------------------------------------------------------------------------------------------------- | | -------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------- |
| **Window Manager** | [Hyprland][Hyprland] | | **Window Manager** | [Niri][Niri] |
| **Terminal Emulator** | [Zellij][Zellij] + [Kitty][Kitty] | | **Terminal Emulator** | [Zellij][Zellij] + [foot][foot]/[Kitty][Kitty]/[Alacritty][Alacritty]/[Ghostty][Ghostty] |
| **Bar** | [Waybar][Waybar] | | **Status Bar** / **Notifier** / **Launcher** / **lockscreens** | [noctalia-shell][noctalia-shell] |
| **Application Launcher** | [anyrun][anyrun] | | **Display Manager** | [tuigreet][tuigreet] |
| **Notification Daemon** | [Mako][Mako] | | **Color Scheme** | [catppuccin-nix][catppuccin-nix] |
| **Display Manager** | [GDM][GDM] | | **network management tool** | [NetworkManager][NetworkManager] |
| **Color Scheme** | [Catppuccin][Catppuccin] | | **Input method framework** | [Fcitx5][Fcitx5] + [rime][rime] + [小鹤音形 flypy][flypy] |
| **network management tool** | [NetworkManager][NetworkManager] | | **System resource monitor** | [Btop][Btop] |
| **Input method framework** | [Fcitx5][Fcitx5] | | **File Manager** | [Yazi][Yazi] + [thunar][thunar] |
| **System resource monitor** | [Btop][Btop] | | **Shell** | [Nushell][Nushell] + [Starship][Starship] |
| **File Manager** | [Yazi][Yazi] + [thunar][thunar] | | **Media Player** | [mpv][mpv] |
| **Shell** | [Nushell][Nushell] + [Starship][Starship] | | **Text Editor** | [Neovim][Neovim] |
| **Media Player** | [mpv][mpv] | | **Fonts** | [Nerd fonts][Nerd fonts] |
| **Text Editor** | [Neovim][Neovim] | | **Image Viewer** | [imv][imv] |
| **Fonts** | [Nerd fonts][Nerd fonts] | | **Screenshot Software** | Niri's builtin function |
| **Image Viewer** | [imv][imv] | | **Screen Recording** | [OBS][OBS] |
| **Screenshot Software** | [hyprshot][hyprshot] | | **Filesystem & Encryption** | tmpfs as `/`, [Btrfs][Btrfs] subvolumes on a [LUKS][LUKS] encrypted partition for persistent, unlock via passphrase |
| **Screen Recording** | [OBS][OBS] | | **Secure Boot** | [lanzaboote][lanzaboote] |
| **Filesystem & Encryption** | tmpfs on `/`, [Btrfs][Btrfs] subvolumes on a [LUKS][LUKS] encrypted partition for persistent, unlock via passphrase |
| **Secure Boot** | [lanzaboote][lanzaboote] |
Wallpapers: https://github.com/ryan4yin/wallpapers Wallpapers: https://github.com/ryan4yin/wallpapers
## Hyprland + AstroNvim ## Screenshots
![](./_img/hyprland_2023-07-29_1.webp) ![desktop](./_img/2026-01-05_niri-noctalia_desktop.webp)
![](./_img/hyprland_2023-07-29_2.webp) ![overview](./_img/2026-01-04_niri-noctalia_overview.webp)
![nvim](./_img/2026-01-04_niri-noctalia_nvim.webp)
## Neovim ## Neovim
@@ -109,17 +109,15 @@ For NixOS:
> To deploy this flake from NixOS's official ISO image (purest installation method), please refer to > To deploy this flake from NixOS's official ISO image (purest installation method), please refer to
> [./nixos-installer/](./nixos-installer/) > [./nixos-installer/](./nixos-installer/)
> Need to restart the machine when switching between `wayland` and `xorg`.
```bash ```bash
# deploy one of the configuration based on the hostname # deploy one of the configuration based on the hostname
sudo nixos-rebuild switch --flake .#ai-hyprland sudo nixos-rebuild switch --flake .#ai-niri
# deploy via `just`(a command runner with similar syntax to make) & Justfile # Deploy the niri nixosConfiguration by hostname match
just hypr # deploy my pc with hyprland compositor just niri
# or we can deploy with details # or we can deploy with details
just hypr debug just niri debug
``` ```
For macOS: For macOS:
@@ -132,11 +130,11 @@ nix-shell -p just nushell
# 3. comment home-manager's code in lib/macosSystem.nix to speed up the first deployment. # 3. comment home-manager's code in lib/macosSystem.nix to speed up the first deployment.
# 4. comment out the proxy settings in scripts/darwin_set_proxy.py if the proxy is not ready yet. # 4. comment out the proxy settings in scripts/darwin_set_proxy.py if the proxy is not ready yet.
# deploy fern's configuration(Apple Silicon) # Deploy the darwinConfiguration by hostname match
just fe just local
# deploy with details # deploy with details
just fe debug just local debug
``` ```
> [What y'all will need when Nix drives you to drink.](https://www.youtube.com/watch?v=Eni9PPPPBpg) > [What y'all will need when Nix drives you to drink.](https://www.youtube.com/watch?v=Eni9PPPPBpg)
@@ -155,52 +153,43 @@ Other dotfiles that inspired me:
- [davidtwco/veritas](https://github.com/davidtwco/veritas) - [davidtwco/veritas](https://github.com/davidtwco/veritas)
- [gvolpe/nix-config](https://github.com/gvolpe/nix-config) - [gvolpe/nix-config](https://github.com/gvolpe/nix-config)
- [Ruixi-rebirth/flakes](https://github.com/Ruixi-rebirth/flakes) - [Ruixi-rebirth/flakes](https://github.com/Ruixi-rebirth/flakes)
- [fufexan/dotfiles](https://github.com/fufexan/dotfiles): gtk theme, xdg, git, media, anyrun, - [fufexan/dotfiles](https://github.com/fufexan/dotfiles): gtk theme, xdg, git, media, etc.
etc.
- [nix-community/srvos](https://github.com/nix-community/srvos): a collection of opinionated and - [nix-community/srvos](https://github.com/nix-community/srvos): a collection of opinionated and
sharable NixOS configurations for servers sharable NixOS configurations for servers
- Modularized NixOS Configuration - Modularized NixOS Configuration
- [hlissner/dotfiles](https://github.com/hlissner/dotfiles) - [hlissner/dotfiles](https://github.com/hlissner/dotfiles)
- [viperML/dotfiles](https://github.com/viperML/dotfiles) - [viperML/dotfiles](https://github.com/viperML/dotfiles)
- Hyprland(wayland)
- [notwidow/hyprland](https://github.com/notwidow/hyprland): This is where I start my hyprland
journey.
- [HeinzDev/Hyprland-dotfiles](https://github.com/HeinzDev/Hyprland-dotfiles): Refer to the waybar
configuration here.
- [Zeioth/zeioth-hyprland-config](https://github.com/Zeioth/zeioth-hyprland-config)
- [linuxmobile/kaku](https://github.com/linuxmobile/kaku)
- Neovim/AstroNvim - Neovim/AstroNvim
- [maxbrunet/dotfiles](https://github.com/maxbrunet/dotfiles): astronvim with nix flakes. - [maxbrunet/dotfiles](https://github.com/maxbrunet/dotfiles): astronvim with nix flakes.
- Misc - Misc
- [1amSimp1e/dots](https://github.com/1amSimp1e/dots) - [1amSimp1e/dots](https://github.com/1amSimp1e/dots)
[Hyprland]: https://github.com/hyprwm/Hyprland [Niri]: https://github.com/YaLTeR/niri
[Kitty]: https://github.com/kovidgoyal/kitty [Kitty]: https://github.com/kovidgoyal/kitty
[foot]: https://codeberg.org/dnkl/foot
[Alacritty]: https://github.com/alacritty/alacritty
[Ghostty]: https://github.com/ghostty-org/ghostty
[Nushell]: https://github.com/nushell/nushell [Nushell]: https://github.com/nushell/nushell
[Starship]: https://github.com/starship/starship [Starship]: https://github.com/starship/starship
[Waybar]: https://github.com/Alexays/Waybar
[polybar]: https://github.com/polybar/polybar
[rofi]: https://github.com/davatorium/rofi
[anyrun]: https://github.com/Kirottu/anyrun
[Dunst]: https://github.com/dunst-project/dunst
[Fcitx5]: https://github.com/fcitx/fcitx5 [Fcitx5]: https://github.com/fcitx/fcitx5
[rime]: https://wiki.archlinux.org/title/Rime
[flypy]: https://flypy.cc/
[Btop]: https://github.com/aristocratos/btop [Btop]: https://github.com/aristocratos/btop
[mpv]: https://github.com/mpv-player/mpv [mpv]: https://github.com/mpv-player/mpv
[Zellij]: https://github.com/zellij-org/zellij [Zellij]: https://github.com/zellij-org/zellij
[Neovim]: https://github.com/neovim/neovim [Neovim]: https://github.com/neovim/neovim
[AstroNvim]: https://github.com/AstroNvim/AstroNvim [AstroNvim]: https://github.com/AstroNvim/AstroNvim
[Hyprshot]: https://github.com/Gustash/Hyprshot
[imv]: https://sr.ht/~exec64/imv/ [imv]: https://sr.ht/~exec64/imv/
[OBS]: https://obsproject.com [OBS]: https://obsproject.com
[Mako]: https://github.com/emersion/mako
[Nerd fonts]: https://github.com/ryanoasis/nerd-fonts [Nerd fonts]: https://github.com/ryanoasis/nerd-fonts
[catppuccin]: https://github.com/catppuccin/catppuccin [catppuccin-nix]: https://github.com/catppuccin/nix
[NetworkManager]: https://wiki.gnome.org/Projects/NetworkManager [NetworkManager]: https://wiki.gnome.org/Projects/NetworkManager
[wl-clipboard]: https://github.com/bugaevc/wl-clipboard [wl-clipboard]: https://github.com/bugaevc/wl-clipboard
[GDM]: https://wiki.archlinux.org/title/GDM [tuigreet]: https://github.com/apognu/tuigreet
[thunar]: https://gitlab.xfce.org/xfce/thunar [thunar]: https://gitlab.xfce.org/xfce/thunar
[Yazi]: https://github.com/sxyazi/yazi [Yazi]: https://github.com/sxyazi/yazi
[Catppuccin]: https://github.com/catppuccin/catppuccin [Catppuccin]: https://github.com/catppuccin/catppuccin
[Btrfs]: https://btrfs.readthedocs.io [Btrfs]: https://btrfs.readthedocs.io
[LUKS]: https://wiki.archlinux.org/title/Dm-crypt/Encrypting_an_entire_system [LUKS]: https://wiki.archlinux.org/title/Dm-crypt/Encrypting_an_entire_system
[lanzaboote]: https://github.com/nix-community/lanzaboote [lanzaboote]: https://github.com/nix-community/lanzaboote
[noctalia-shell]: https://github.com/noctalia-dev/noctalia-shell
Binary file not shown.

After

Width:  |  Height:  |  Size: 463 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 581 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 588 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 450 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 320 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 359 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 382 KiB

BIN
View File
Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

+18 -2
View File
@@ -3,5 +3,21 @@
This is my private Private Key Infrastructure (PKI) / Certificate Authority (CA) for my personal This is my private Private Key Infrastructure (PKI) / Certificate Authority (CA) for my personal
use. It is used to issue certificates for my own servers and services. use. It is used to issue certificates for my own servers and services.
All the private keys are ignored by git, and will be stored in my private secrets repo ## Current Structure
[../secrets](../secrets/)
- **ecc-ca.crt** - ECC CA certificate file
- **ecc-ca.srl** - CA serial number file for certificate tracking
- **ecc-csr.conf** - OpenSSL configuration file for certificate signing requests
- **ecc-server.crt** - Server certificate signed by the ECC CA
- **gen-certs.sh** - Shell script to generate certificates automatically
## Security Notes
All private keys (`.key` files) are ignored by git and stored in a private secrets repository. The
public certificates and configuration files are committed to this repository for reference.
## Usage
Run `./gen-certs.sh` to generate new certificates using the ECC CA configuration.
See [../secrets](../secrets/) for the corresponding private key management.
Generated
+383 -290
View File
File diff suppressed because it is too large Load Diff
+38 -28
View File
@@ -16,14 +16,14 @@
nixConfig = { nixConfig = {
# substituers will be appended to the default substituters when fetching packages # substituers will be appended to the default substituters when fetching packages
extra-substituters = [ extra-substituters = [
"https://anyrun.cachix.org"
# "https://nix-gaming.cachix.org" # "https://nix-gaming.cachix.org"
# "https://nixpkgs-wayland.cachix.org" # "https://nixpkgs-wayland.cachix.org"
# "https://install.determinate.systems"
]; ];
extra-trusted-public-keys = [ extra-trusted-public-keys = [
"anyrun.cachix.org-1:pqBobmOjI7nKlsUMV25u9QHa9btJK65/C8vnO3p346s="
# "nix-gaming.cachix.org-1:nbjlureqMbRAxR1gJ/f3hxemL9svXaZF/Ees8vCUUs4=" # "nix-gaming.cachix.org-1:nbjlureqMbRAxR1gJ/f3hxemL9svXaZF/Ees8vCUUs4="
# "nixpkgs-wayland.cachix.org-1:3lwxaILxMRkVhehr5StQprHdEo4IrE8sRho9R9HOLYA=" # "nixpkgs-wayland.cachix.org-1:3lwxaILxMRkVhehr5StQprHdEo4IrE8sRho9R9HOLYA="
# "cache.flakehub.com-3:hJuILl5sVK4iKm86JzgdXW12Y2Hwd5G07qKtHTOcDCM="
]; ];
}; };
@@ -34,15 +34,20 @@
# which represents the GitHub repository URL + branch/commit-id/tag. # which represents the GitHub repository URL + branch/commit-id/tag.
# Official NixOS package source, using nixos's unstable branch by default # Official NixOS package source, using nixos's unstable branch by default
# Find git commit hash with build status here(3 jobs per day):
# https://hydra.nixos.org/jobset/nixpkgs/unstable
# update via nix flake update nixpkgs --override-input nixpkgs github:NixOS/nixpkgs/<commit-hash>
nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable"; nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable";
# nixpkgs-unstable.url = "github:nixos/nixpkgs/nixos-unstable-small"; nixpkgs-stable.url = "github:nixos/nixpkgs/nixos-25.11";
nixpkgs-unstable.url = "github:nixos/nixpkgs/nixos-unstable"; nixpkgs-2505.url = "github:nixos/nixpkgs/nixos-25.05";
nixpkgs-stable.url = "github:nixos/nixpkgs/nixos-25.05";
nixpkgs-ollama.url = "github:nixos/nixpkgs/nixos-unstable"; # nixpkgs with some custom patches
nixpkgs-patched.url = "github:ryan4yin/nixpkgs/nixos-unstable-patched";
# get some latest packages from the master branch
nixpkgs-master.url = "github:nixos/nixpkgs/master";
# for macos # for macos
# nixpkgs-darwin.url = "github:nixos/nixpkgs/nixpkgs-25.05-darwin"; # nixpkgs-darwin.url = "github:nixos/nixpkgs/nixpkgs-25.11-darwin";
nixpkgs-darwin.url = "github:nixos/nixpkgs/nixpkgs-unstable"; nixpkgs-darwin.url = "github:nixos/nixpkgs/nixpkgs-unstable";
nix-darwin = { nix-darwin = {
url = "github:lnl7/nix-darwin"; url = "github:lnl7/nix-darwin";
@@ -52,7 +57,7 @@
# home-manager, used for managing user configuration # home-manager, used for managing user configuration
home-manager = { home-manager = {
url = "github:nix-community/home-manager/master"; url = "github:nix-community/home-manager/master";
# url = "github:nix-community/home-manager/release-25.05"; # url = "github:nix-community/home-manager/release-25.11";
# The `follows` keyword in inputs is used for inheritance. # The `follows` keyword in inputs is used for inheritance.
# Here, `inputs.nixpkgs` of home-manager is kept consistent with the `inputs.nixpkgs` of the current flake, # Here, `inputs.nixpkgs` of home-manager is kept consistent with the `inputs.nixpkgs` of the current flake,
@@ -67,7 +72,7 @@
}; };
lanzaboote = { lanzaboote = {
url = "github:nix-community/lanzaboote/v0.4.2"; url = "github:nix-community/lanzaboote/v0.4.3";
inputs.nixpkgs.follows = "nixpkgs"; inputs.nixpkgs.follows = "nixpkgs";
}; };
@@ -75,14 +80,6 @@
url = "github:nix-community/preservation"; url = "github:nix-community/preservation";
}; };
# community wayland nixpkgs
# nixpkgs-wayland.url = "github:nix-community/nixpkgs-wayland";
# anyrun - a wayland launcher
anyrun = {
url = "github:Kirottu/anyrun";
inputs.nixpkgs.follows = "nixpkgs";
};
# generate iso/qcow2/docker/... image from nixos configuration # generate iso/qcow2/docker/... image from nixos configuration
nixos-generators = { nixos-generators = {
url = "github:nix-community/nixos-generators"; url = "github:nix-community/nixos-generators";
@@ -97,11 +94,6 @@
inputs.nixpkgs.follows = "nixpkgs"; inputs.nixpkgs.follows = "nixpkgs";
}; };
nix-gaming = {
url = "github:fufexan/nix-gaming";
inputs.nixpkgs.follows = "nixpkgs";
};
disko = { disko = {
url = "github:nix-community/disko/v1.11.0"; url = "github:nix-community/disko/v1.11.0";
inputs.nixpkgs.follows = "nixpkgs"; inputs.nixpkgs.follows = "nixpkgs";
@@ -109,7 +101,7 @@
# add git hooks to format nix code before commit # add git hooks to format nix code before commit
pre-commit-hooks = { pre-commit-hooks = {
url = "github:cachix/pre-commit-hooks.nix"; url = "github:cachix/git-hooks.nix";
inputs.nixpkgs.follows = "nixpkgs"; inputs.nixpkgs.follows = "nixpkgs";
}; };
@@ -129,7 +121,7 @@
}; };
ghostty = { ghostty = {
url = "github:ghostty-org/ghostty"; url = "github:ghostty-org/ghostty/tip"; # Latest Continuous Release
}; };
blender-bin = { blender-bin = {
@@ -138,15 +130,33 @@
}; };
nixos-apple-silicon = { nixos-apple-silicon = {
# 2025-07-04 # asahi-6.17.7-2
url = "github:nix-community/nixos-apple-silicon/eba4b40c816e5aff8951ae231ac237e8aab8ec1d"; url = "github:nix-community/nixos-apple-silicon";
inputs.nixpkgs.follows = "nixpkgs"; inputs.nixpkgs.follows = "nixpkgs";
}; };
helix = {
# Helix with steel as plugin system
# https://github.com/helix-editor/helix/pull/8675
url = "github:mattwparas/helix/steel-event-system";
inputs.nixpkgs.follows = "nixpkgs";
};
# -------------- Gaming ---------------------
nix-gaming = {
url = "github:fufexan/nix-gaming";
inputs.nixpkgs.follows = "nixpkgs";
};
aagl = {
url = "github:ezKEa/aagl-gtk-on-nix/release-25.11";
# inputs.nixpkgs.follows = "nixpkgs";
};
######################## Some non-flake repositories ######################################### ######################## Some non-flake repositories #########################################
polybar-themes = { nu_scripts = {
url = "github:adi1090x/polybar-themes"; url = "github:ryan4yin/nu_scripts";
flake = false; flake = false;
}; };
+46 -14
View File
@@ -12,14 +12,53 @@
1. Accessing the network when they don't need to. 1. Accessing the network when they don't need to.
1. Accessing hardware devices they don't need. 1. Accessing hardware devices they don't need.
## Current Status ## Current Structure
1. **System Level**: ### 1. **System Level**
- [ ] AppArmor
- [ ] Kernel & System Hardening - **AppArmor** (`apparmor/`): AppArmor profiles and configuration
1. **Per-App Level**: - **Kernel & System Hardening** (`profiles/`): System-wide hardening profiles
- Nixpak (Bubblewrap, running at user-level)
- Firejail (a SUID program, meaning it's running as root) ### 2. **Per-App Level**
- **Nixpak** (`nixpaks/`): Bubblewrap-based sandboxing for applications
- Firefox configuration
- QQ (Chinese messaging app) configuration
- Modular system with reusable components
- **Firejail** (legacy): SUID-based sandboxing (not used)
- **Bubblewrap** (`bwraps/`): Direct bubblewrap configurations
- WeChat sandboxing configuration
## Current Implementation Status
| Component | Status | Notes |
| ----------------- | --------- | ------------------------------ |
| AppArmor Profiles | 🚧 WIP | Basic structure in place |
| Nixpak Firefox | ✅ Active | Firefox sandboxing via nixpak |
| Nixpak QQ | ✅ Active | QQ application sandboxing |
| Bubblewrap WeChat | ✅ Active | WeChat specific sandboxing |
| System Profiles | 🚧 WIP | Hardened system configurations |
## Directory Structure
```
hardening/
├── README.md
├── apparmor/ # AppArmor security profiles
│ └── default.nix
├── bwraps/ # Direct bubblewrap configurations
│ ├── default.nix
│ └── wechat.nix
├── nixpaks/ # Nixpak application sandboxing
│ ├── default.nix
│ ├── firefox.nix
│ ├── qq.nix
│ └── modules/ # Reusable nixpak modules
│ ├── gui-base.nix
│ └── network.nix
└── profiles/ # System hardening profiles
└── default.nix
```
## Kernel Hardening ## Kernel Hardening
@@ -69,13 +108,6 @@ provide a much higher level of security.
- [Paranoid NixOS Setup - xeiaso](https://xeiaso.net/blog/paranoid-nixos-2021-07-18/) - [Paranoid NixOS Setup - xeiaso](https://xeiaso.net/blog/paranoid-nixos-2021-07-18/)
- [nix-mineral](https://github.com/cynicsketch/nix-mineral): NixOS module for convenient system - [nix-mineral](https://github.com/cynicsketch/nix-mineral): NixOS module for convenient system
hardening. hardening.
- nixpak configs:
- https://github.com/pokon548/OysterOS/tree/b97604d89953373d6316286b96f6a964af2c398d/desktop/application
- https://github.com/segment-tree/my-nixos/tree/ceb6041f73bd9edcb78a8818b27a28f7c629193b/hm/me/apps/nixpak
- https://github.com/Keksgesicht/nixos-config/tree/91cc77d8d6b598da7c4dbed143e0009c2dea6940/packages/nixpak
- https://github.com/bluskript/nix-config/blob/7ecb6a7254c1ac4969072f4c4febdc19f8b83b30/pkgs/nixpak/default.nix
- firejail configs:
- https://github.com/stelcodes/nixos-config/blob/f8967c82a5e5f3d128eb1aaf7498b5f918f719ec/packages/overlay.nix#L261
- apparmor configs: - apparmor configs:
- https://github.com/zramctl/dotfiles/blob/4fe177f6984154960942bb47d5a375098ec6ed6a/modules/nixos/security/apparmor.nix#L4 - https://github.com/zramctl/dotfiles/blob/4fe177f6984154960942bb47d5a375098ec6ed6a/modules/nixos/security/apparmor.nix#L4
- https://git.grimmauld.de/Grimmauld/grimm-nixos-laptop/src/branch/main/hardening - https://git.grimmauld.de/Grimmauld/grimm-nixos-laptop/src/branch/main/hardening
+2 -1
View File
@@ -2,7 +2,8 @@
config, config,
pkgs, pkgs,
... ...
}: { }:
{
services.dbus.apparmor = "enabled"; services.dbus.apparmor = "enabled";
security.apparmor = { security.apparmor = {
enable = true; enable = true;
+1 -1
View File
@@ -2,7 +2,7 @@
nixpkgs.overlays = [ nixpkgs.overlays = [
(_: super: { (_: super: {
bwraps = { bwraps = {
wechat = super.callPackage ./wechat.nix {}; wechat = super.callPackage ./wechat.nix { };
}; };
}) })
]; ];
+58 -55
View File
@@ -10,22 +10,25 @@
appimageTools, appimageTools,
fetchurl, fetchurl,
stdenvNoCC, stdenvNoCC,
}: let }:
let
pname = "wechat"; pname = "wechat";
# https://github.com/NixOS/nixpkgs/blob/nixos-unstable/pkgs/by-name/we/wechat/package.nix # https://github.com/NixOS/nixpkgs/blob/nixos-unstable/pkgs/by-name/we/wechat/package.nix
sources = { sources = {
aarch64-linux = { aarch64-linux = {
version = "4.0.1.11"; version = "4.1.0.13";
src = fetchurl { src = fetchurl {
url = "https://web.archive.org/web/20250512112413if_/https://dldir1v6.qq.com/weixin/Universal/Linux/WeChatLinux_arm64.AppImage"; # url = "https://web.archive.org/web/20251209092116if_/https://dldir1v6.qq.com/weixin/Universal/Linux/WeChatLinux_arm64.AppImage";
hash = "sha256-Rg+FWNgOPC02ILUskQqQmlz1qNb9AMdvLcRWv7NQhGk="; url = "https://dldir1v6.qq.com/weixin/Universal/Linux/WeChatLinux_arm64.AppImage";
hash = "sha256-/d5crM6IGd0k0fSlBSQx4TpIVX/8iib+an0VMkWMNdw=";
}; };
}; };
x86_64-linux = { x86_64-linux = {
version = "4.0.1.11"; version = "4.1.0.13";
src = fetchurl { src = fetchurl {
url = "https://web.archive.org/web/20250512110825if_/https://dldir1v6.qq.com/weixin/Universal/Linux/WeChatLinux_x86_64.AppImage"; # url = "https://web.archive.org/web/20251219062558if_/https://dldir1v6.qq.com/weixin/Universal/Linux/WeChatLinux_x86_64.AppImage";
hash = "sha256-gBWcNQ1o1AZfNsmu1Vi1Kilqv3YbR+wqOod4XYAeVKo="; url = "https://dldir1v6.qq.com/weixin/Universal/Linux/WeChatLinux_x86_64.AppImage";
hash = "sha256-+r5Ebu40GVGG2m2lmCFQ/JkiDsN/u7XEtnLrB98602w=";
}; };
}; };
}; };
@@ -41,58 +44,58 @@
''; '';
}; };
in in
appimageTools.wrapAppImage { appimageTools.wrapAppImage {
inherit pname version; inherit pname version;
src = appimageContents; src = appimageContents;
extraInstallCommands = '' extraInstallCommands = ''
mkdir -p $out/share/applications mkdir -p $out/share/applications
cp ${appimageContents}/wechat.desktop $out/share/applications/ cp ${appimageContents}/wechat.desktop $out/share/applications/
mkdir -p $out/share/pixmaps mkdir -p $out/share/pixmaps
cp ${appimageContents}/wechat.png $out/share/pixmaps/ cp ${appimageContents}/wechat.png $out/share/pixmaps/
substituteInPlace $out/share/applications/wechat.desktop --replace-fail AppRun wechat substituteInPlace $out/share/applications/wechat.desktop --replace-fail AppRun wechat
''; '';
# Add these root paths to FHS sandbox to prevent WeChat from accessing them by default # Add these root paths to FHS sandbox to prevent WeChat from accessing them by default
# Adapted from https://aur.archlinux.org/cgit/aur.git/tree/wechat-universal.sh?h=wechat-universal-bwrap # Adapted from https://aur.archlinux.org/cgit/aur.git/tree/wechat-universal.sh?h=wechat-universal-bwrap
extraPreBwrapCmds = '' extraPreBwrapCmds = ''
XDG_DOCUMENTS_DIR="''${XDG_DOCUMENTS_DIR:-$(xdg-user-dir DOCUMENTS)}" XDG_DOCUMENTS_DIR="''${XDG_DOCUMENTS_DIR:-$(xdg-user-dir DOCUMENTS)}"
if [[ -z "''${XDG_DOCUMENTS_DIR}" ]]; then if [[ -z "''${XDG_DOCUMENTS_DIR}" ]]; then
echo 'Error: Failed to get XDG_DOCUMENTS_DIR, refuse to continue' echo 'Error: Failed to get XDG_DOCUMENTS_DIR, refuse to continue'
exit 1 exit 1
fi fi
WECHAT_DATA_DIR="''${XDG_DOCUMENTS_DIR}/WeChat_Data" WECHAT_DATA_DIR="''${XDG_DOCUMENTS_DIR}/WeChat_Data"
# Using ''${WECHAT_DATA_DIR} as Wechat Data folder # Using ''${WECHAT_DATA_DIR} as Wechat Data folder
WECHAT_HOME_DIR="''${WECHAT_DATA_DIR}/home" WECHAT_HOME_DIR="''${WECHAT_DATA_DIR}/home"
WECHAT_FILES_DIR="''${WECHAT_DATA_DIR}/xwechat_files" WECHAT_FILES_DIR="''${WECHAT_DATA_DIR}/xwechat_files"
mkdir -p "''${WECHAT_FILES_DIR}" mkdir -p "''${WECHAT_FILES_DIR}"
mkdir -p "''${WECHAT_HOME_DIR}" mkdir -p "''${WECHAT_HOME_DIR}"
ln -snf "''${WECHAT_FILES_DIR}" "''${WECHAT_HOME_DIR}/xwechat_files" ln -snf "''${WECHAT_FILES_DIR}" "''${WECHAT_HOME_DIR}/xwechat_files"
''; '';
extraBwrapArgs = [ extraBwrapArgs = [
"--tmpfs /home" "--tmpfs /home"
"--tmpfs /root" "--tmpfs /root"
# format: --bind <host-path> <sandbox-path> # format: --bind <host-path> <sandbox-path>
"--bind \${WECHAT_HOME_DIR} \${HOME}" "--bind \${WECHAT_HOME_DIR} \${HOME}"
"--bind \${WECHAT_FILES_DIR} \${WECHAT_FILES_DIR}" "--bind \${WECHAT_FILES_DIR} \${WECHAT_FILES_DIR}"
"--chdir \${HOME}" "--chdir \${HOME}"
# wechat-universal only supports xcb # wechat-universal only supports xcb
"--setenv QT_QPA_PLATFORM xcb" "--setenv QT_QPA_PLATFORM xcb"
"--setenv QT_AUTO_SCREEN_SCALE_FACTOR 1" "--setenv QT_AUTO_SCREEN_SCALE_FACTOR 1"
# use fcitx as IME # use fcitx as IME
"--setenv QT_IM_MODULE fcitx" "--setenv QT_IM_MODULE fcitx"
"--setenv GTK_IM_MODULE fcitx" "--setenv GTK_IM_MODULE fcitx"
]; ];
chdirToPwd = false; chdirToPwd = false;
unshareNet = false; unshareNet = false;
unshareIpc = true; unshareIpc = true;
unsharePid = true; unsharePid = true;
unshareUts = true; unshareUts = true;
unshareCgroup = true; unshareCgroup = true;
privateTmp = true; privateTmp = true;
} }
+8 -10
View File
@@ -1,8 +1,10 @@
{ {
pkgs, pkgs,
pkgs-master,
nixpak, nixpak,
... ...
}: let }:
let
callArgs = { callArgs = {
mkNixPak = nixpak.lib.nixpak { mkNixPak = nixpak.lib.nixpak {
inherit (pkgs) lib; inherit (pkgs) lib;
@@ -13,20 +15,16 @@
(sloth.concat' sloth.homeDir mapdir) (sloth.concat' sloth.homeDir mapdir)
]; ];
}; };
wrapper = _pkgs: path: (_pkgs.callPackage path callArgs).config.script; wrapper = _pkgs: path: (_pkgs.callPackage path callArgs);
in { in
{
# Add nixpaked Apps into nixpkgs, and reference them in home-manager or other nixos modules # Add nixpaked Apps into nixpkgs, and reference them in home-manager or other nixos modules
nixpkgs.overlays = [ nixpkgs.overlays = [
(_: super: { (_: super: {
nixpaks = { nixpaks = {
qq = wrapper super ./qq.nix; qq = wrapper pkgs-master ./qq.nix;
qq-desktop-item = super.callPackage ./qq-desktop-item.nix {}; telegram-desktop = wrapper super ./telegram-desktop.nix;
wechat = wrapper super ./wechat.nix;
wechat-desktop-item = super.callPackage ./wechat-desktop-item.nix {};
firefox = wrapper super ./firefox.nix; firefox = wrapper super ./firefox.nix;
firefox-desktop-item = super.callPackage ./firefox-desktop-item.nix {};
}; };
}) })
]; ];
@@ -1,11 +0,0 @@
{makeDesktopItem}:
makeDesktopItem {
name = "firefox";
desktopName = "firefox";
exec = "firefox %U";
terminal = false;
icon = "firefox";
type = "Application";
categories = ["Network"];
comment = "firefox boxed";
}
+107 -63
View File
@@ -5,79 +5,123 @@
# - Firefox's flatpak manifest: https://hg.mozilla.org/mozilla-central/file/tip/taskcluster/docker/firefox-flatpak/runme.sh#l151 # - Firefox's flatpak manifest: https://hg.mozilla.org/mozilla-central/file/tip/taskcluster/docker/firefox-flatpak/runme.sh#l151
{ {
lib, lib,
pkgs, firefox,
mkNixPak, mkNixPak,
buildEnv,
makeDesktopItem,
... ...
}: }:
mkNixPak {
config = {
config,
sloth,
...
}: {
app = {
package = pkgs.firefox-wayland;
binPath = "bin/firefox";
};
flatpak.appId = "org.mozilla.firefox";
imports = [ let
./modules/gui-base.nix appId = "org.mozilla.firefox";
./modules/network.nix wrapped = mkNixPak {
]; config =
{
config,
sloth,
...
}:
{
app = {
package = firefox;
binPath = "bin/firefox";
};
flatpak.appId = appId;
# list all dbus services: imports = [
# ls -al /run/current-system/sw/share/dbus-1/services/ ./modules/gui-base.nix
# ls -al /etc/profiles/per-user/ryan/share/dbus-1/services/ ./modules/network.nix
dbus.policies = { ./modules/common.nix
"org.mozilla.firefox.*" = "own"; # firefox ];
"org.mozilla.firefox_beta.*" = "own"; # firefox beta
"org.mpris.MediaPlayer2.firefox.*" = "own";
"org.freedesktop.NetworkManager" = "talk";
"org.gnome.Shell.Screencast" = "talk"; bubblewrap = {
# System tray icon # To trace all the home files Firefox accesses, you can use the following nushell command:
"org.freedesktop.Notifications" = "talk"; # just trace-access firefox
"org.kde.StatusNotifierWatcher" = "talk"; # See the Justfile in the root of this repository for more information.
# File Manager bind.rw = [
"org.freedesktop.FileManager1" = "talk"; # given the read write permission to the following directories.
# Uses legacy StatusNotifier implementation # NOTE: sloth.mkdir is used to create the directory if it does not exist!
"org.kde.*" = "own"; (sloth.mkdir (sloth.concat' sloth.homeDir "/.mozilla"))
};
bubblewrap = { sloth.xdgDocumentsDir
# To trace all the home files QQ accesses, you can use the following nushell command: sloth.xdgDownloadDir
# just trace-access firefox sloth.xdgMusicDir
# See the Justfile in the root of this repository for more information. sloth.xdgVideosDir
bind.rw = [ sloth.xdgPicturesDir
# given the read write permission to the following directories. ];
# NOTE: sloth.mkdir is used to create the directory if it does not exist! bind.ro = [
(sloth.mkdir (sloth.concat' sloth.homeDir "/.mozilla")) "/sys/bus/pci"
[
"${config.app.package}/lib/firefox"
"/app/etc/firefox"
]
sloth.xdgDocumentsDir # ================ for browserpass extension ===============================
sloth.xdgDownloadDir "/etc/gnupg"
sloth.xdgMusicDir (sloth.concat' sloth.homeDir "/.gnupg") # gpg's config
sloth.xdgVideosDir (sloth.concat' sloth.homeDir "/.local/share/password-store") # my secrets
]; (sloth.concat' sloth.runtimeDir "/gnupg") # for access gpg-agent socket
bind.ro = [
"/sys/bus/pci"
["${config.app.package}/lib/firefox" "/app/etc/firefox"]
# ================ for browserpass extension =============================== # Unsure
"/etc/gnupg" (sloth.concat' sloth.xdgConfigHome "/dconf")
(sloth.concat' sloth.homeDir "/.gnupg") # gpg's config ];
(sloth.concat' sloth.homeDir "/.local/share/password-store") # my secrets
(sloth.concat' sloth.runtimeDir "/gnupg") # for access gpg-agent socket
# Unsure sockets = {
(sloth.concat' sloth.xdgConfigHome "/dconf") x11 = false;
]; wayland = true;
pipewire = true;
sockets = { };
x11 = false; };
wayland = true;
pipewire = true;
}; };
};
}; };
exePath = lib.getExe wrapped.config.script;
in
buildEnv {
inherit (wrapped.config.script) name meta passthru;
paths = [
wrapped.config.script
(makeDesktopItem {
name = appId;
desktopName = "Firefox";
genericName = "Firefox Boxed";
comment = "Firefox Browser";
exec = "${exePath} %U";
terminal = false;
icon = "firefox";
startupNotify = true;
startupWMClass = "firefox";
type = "Application";
categories = [
"Network"
"WebBrowser"
];
mimeTypes = [
"text/html"
"text/xml"
"application/xhtml+xml"
"application/vnd.mozilla.xul+xml"
"x-scheme-handler/http"
"x-scheme-handler/https"
];
actions = {
new-private-window = {
name = "New Private Window";
exec = "${exePath} --private-window %U";
};
new-window = {
name = "New Window";
exec = "${exePath} --new-window %U";
};
profile-manager-window = {
name = "Profile Manager";
exec = "${exePath} --ProfileManager";
};
};
extraConfig = {
X-Flatpak = appId;
};
})
];
} }
+234
View File
@@ -0,0 +1,234 @@
# https://github.com/mnixry/nixos-config/blob/74913c2b90d06e31170bbbaa0074f915721da224/desktop/packages/nixpaks-common.nix
# https://github.com/Kraftland/portable/blob/09c4a4227538a3f42de208a6ecbdc938ac9c00dd/portable.sh
# https://flatpak.github.io/xdg-desktop-portal/docs/api-reference.html
{
lib,
sloth,
config,
...
}:
let
inherit (config.flatpak) appId;
in
{
config = {
# list all dbus services:
# ls -al /run/current-system/sw/share/dbus-1/services/
# ls -al /etc/profiles/per-user/ryan/share/dbus-1/services/
dbus = {
# `--see`: The bus name can be enumerated by the application.
# `--talk`: The application can send messages to, and receive replies and signals from, the bus name.
# `--own`: The application can own the bus name
policies = {
"${appId}" = "own";
"${appId}.*" = "own";
"org.freedesktop.DBus" = "talk";
"ca.desrt.dconf" = "talk";
"org.freedesktop.appearance" = "talk";
"org.freedesktop.appearance.*" = "talk";
}
// (builtins.listToAttrs (
map (id: lib.nameValuePair "org.kde.StatusNotifierItem-${toString id}-1" "own") (
lib.lists.range 2 29
)
))
// {
# --- MPRIS Media Control ---
# Allows the app to register as a media player. These are derived from the appID.
"org.mpris.MediaPlayer2.${appId}" = "own";
"org.mpris.MediaPlayer2.${appId}.*" = "own";
"org.mpris.MediaPlayer2.${lib.lists.last (lib.strings.splitString "." appId)}" = "own";
"org.mpris.MediaPlayer2.${lib.lists.last (lib.strings.splitString "." appId)}.*" = "own";
# --- General Desktop Integration ---
"com.canonical.AppMenu.Registrar" = "talk"; # For Ubuntu AppMenu
"org.freedesktop.FileManager1" = "talk";
"org.freedesktop.Notifications" = "talk";
"org.kde.StatusNotifierWatcher" = "talk";
"org.gnome.Shell.Screencast" = "talk";
# --- Accessibility (a11y) 无障碍服务 ---
"org.a11y.Bus" = "see";
# --- Portal Access ---
# "org.freedesktop.portal.*" = "talk";
"org.freedesktop.portal.Documents" = "talk";
"org.freedesktop.portal.FileTransfer" = "talk";
"org.freedesktop.portal.FileTransfer.*" = "talk";
"org.freedesktop.portal.Notification" = "talk";
"org.freedesktop.portal.OpenURI" = "talk";
"org.freedesktop.portal.OpenURI.OpenFile" = "talk";
"org.freedesktop.portal.OpenURI.OpenURI" = "talk";
"org.freedesktop.portal.Print" = "talk";
"org.freedesktop.portal.Request" = "see";
# --- Input Method Portals ---
"org.freedesktop.portal.Fcitx" = "talk";
"org.freedesktop.portal.Fcitx.*" = "talk";
"org.freedesktop.portal.IBus" = "talk";
"org.freedesktop.portal.IBus.*" = "talk";
};
# '--call' rules permit specific method calls on D-Bus interfaces.
rules.call = {
# --- Accessibility (a11y) 无障碍服务 ---
"org.a11y.Bus" = [
"org.a11y.Bus.GetAddress@/org/a11y/bus"
"org.freedesktop.DBus.Properties.Get@/org/a11y/bus"
];
# --- General Portal Rules ---
"org.freedesktop.FileManager1" = [ "*" ];
"org.freedesktop.Notifications.*" = [ "*" ];
"org.freedesktop.portal.Documents" = [ "*" ];
"org.freedesktop.portal.FileTransfer" = [ "*" ];
"org.freedesktop.portal.FileTransfer.*" = [ "*" ];
"org.freedesktop.portal.Fcitx" = [ "*" ];
"org.freedesktop.portal.Fcitx.*" = [ "*" ];
"org.freedesktop.portal.IBus" = [ "*" ];
"org.freedesktop.portal.IBus.*" = [ "*" ];
"org.freedesktop.portal.Notification" = [ "*" ];
"org.freedesktop.portal.OpenURI" = [ "*" ];
"org.freedesktop.portal.OpenURI.OpenFile" = [ "*" ];
"org.freedesktop.portal.OpenURI.OpenURI" = [ "*" ];
"org.freedesktop.portal.Print" = [ "*" ];
"org.freedesktop.portal.Request" = [ "*" ];
# --- Main Desktop Portal Interface ---
# A comprehensive list of permissions for interacting with the desktop environment.
"org.freedesktop.portal.Desktop" = [
# Properties & Settings
"org.freedesktop.DBus.Properties.GetAll"
"org.freedesktop.DBus.Properties.Get@/org/freedesktop/portal/desktop"
"org.freedesktop.portal.Session.Close"
"org.freedesktop.portal.Settings.ReadAll"
"org.freedesktop.portal.Settings.Read"
"org.freedesktop.portal.Account.GetUserInformation"
# Network & Proxy
"org.freedesktop.portal.NetworkMonitor"
"org.freedesktop.portal.NetworkMonitor.*"
"org.freedesktop.portal.ProxyResolver.Lookup"
"org.freedesktop.portal.ProxyResolver.Lookup.*"
# Screenshot / Screen Capture & Sharing
"org.freedesktop.portal.ScreenCast"
"org.freedesktop.portal.ScreenCast.*"
"org.freedesktop.portal.Screenshot"
"org.freedesktop.portal.Screenshot.Screenshot"
# Device Access(Camera / USB)
"org.freedesktop.portal.Camera"
"org.freedesktop.portal.Camera.*"
"org.freedesktop.portal.Usb"
"org.freedesktop.portal.Usb.*"
# Remote Desktop
"org.freedesktop.portal.RemoteDesktop"
"org.freedesktop.portal.RemoteDesktop.*"
# File Operations
"org.freedesktop.portal.Documents"
"org.freedesktop.portal.Documents.*"
"org.freedesktop.portal.FileChooser"
"org.freedesktop.portal.FileChooser.*"
"org.freedesktop.portal.FileTransfer"
"org.freedesktop.portal.FileTransfer.*"
# Notifications & Printing
"org.freedesktop.portal.Notification"
"org.freedesktop.portal.Notification.*"
"org.freedesktop.portal.Print"
"org.freedesktop.portal.Print.*"
# Open/Launch Handlers
"org.freedesktop.portal.OpenURI"
"org.freedesktop.portal.OpenURI.*"
"org.freedesktop.portal.Email.ComposeEmail"
# Input Methods
"org.freedesktop.portal.Fcitx"
"org.freedesktop.portal.Fcitx.*"
"org.freedesktop.portal.IBus"
"org.freedesktop.portal.IBus.*"
# Secrets (Keyring)
"org.freedesktop.portal.Secret"
"org.freedesktop.portal.Secret.RetrieveSecret"
# Get/Update GlobalShortcuts
# "org.freedesktop.portal.GlobalShortcuts"
# "org.freedesktop.portal.GlobalShortcuts.*"
# -- get the user's location
# "org.freedesktop.portal.Location"
# "org.freedesktop.portal.Location.*"
# -- inhibit the user session from ending, suspending, idling or getting switched away.
"org.freedesktop.portal.Inhibit"
"org.freedesktop.portal.Inhibit.*"
# Generic Request Fallback
"org.freedesktop.portal.Request"
];
};
# 'broadcast' rules permit receiving signals from D-Bus names.
rules.broadcast = {
"org.freedesktop.portal.*" = [ "@/org/freedesktop/portal/*" ];
};
args = [
"--filter"
"--sloppy-names"
"--log"
];
};
etc.sslCertificates.enable = true;
bubblewrap = {
network = lib.mkDefault true;
sockets = {
wayland = true;
pulse = true;
};
bind.rw = with sloth; [
[
(mkdir appDataDir)
xdgDataHome
]
[
(mkdir appConfigDir)
xdgConfigHome
]
[
(mkdir appCacheDir)
xdgCacheHome
]
(sloth.concat [
sloth.runtimeDir
"/"
(sloth.envOr "WAYLAND_DISPLAY" "no")
])
(sloth.concat' sloth.runtimeDir "/at-spi/bus")
(sloth.concat' sloth.runtimeDir "/gvfsd")
(sloth.concat' sloth.runtimeDir "/dconf")
(sloth.concat' sloth.xdgCacheHome "/fontconfig")
(sloth.concat' sloth.xdgCacheHome "/mesa_shader_cache")
(sloth.concat' sloth.xdgCacheHome "/mesa_shader_cache_db")
(sloth.concat' sloth.xdgCacheHome "/radv_builtin_shaders")
];
bind.ro = [
(sloth.concat' sloth.runtimeDir "/doc")
(sloth.concat' sloth.xdgConfigHome "/kdeglobals")
(sloth.concat' sloth.xdgConfigHome "/gtk-2.0")
(sloth.concat' sloth.xdgConfigHome "/gtk-3.0")
(sloth.concat' sloth.xdgConfigHome "/gtk-4.0")
(sloth.concat' sloth.xdgConfigHome "/fontconfig")
(sloth.concat' sloth.xdgConfigHome "/dconf")
];
bind.dev = [ "/dev/shm" ] ++ (map (id: "/dev/video${toString id}") (lib.lists.range 0 9));
};
};
}
+20 -22
View File
@@ -5,24 +5,18 @@
pkgs, pkgs,
sloth, sloth,
... ...
}: let }:
let
envSuffix = envKey: suffix: sloth.concat' (sloth.env envKey) suffix; envSuffix = envKey: suffix: sloth.concat' (sloth.env envKey) suffix;
# cursor & icon's theme should be the same as the host's one. # cursor & icon's theme should be the same as the host's one.
cursorTheme = pkgs.bibata-cursors; cursorTheme = pkgs.bibata-cursors;
iconTheme = pkgs.papirus-icon-theme; iconTheme = pkgs.papirus-icon-theme;
in { in
{
config = { config = {
dbus.policies = { dbus.policies = {
"${config.flatpak.appId}" = "own"; "${config.flatpak.appId}" = "own";
"org.freedesktop.DBus" = "talk"; # we add other policies in ./common.nix
"org.gtk.vfs.*" = "talk";
"org.gtk.vfs" = "talk";
"ca.desrt.dconf" = "talk";
"org.a11y.Bus" = "talk";
# for default portal & gtk/hyprland's portal
"org.freedesktop.portal.*" = "talk";
"org.freedesktop.impl.portal.desktop.*" = "talk";
}; };
# https://github.com/nixpak/nixpak/blob/master/modules/gpu.nix # https://github.com/nixpak/nixpak/blob/master/modules/gpu.nix
# 1. bind readonly - /run/opengl-driver # 1. bind readonly - /run/opengl-driver
@@ -67,8 +61,8 @@ in {
(sloth.concat' sloth.xdgConfigHome "/fontconfig") (sloth.concat' sloth.xdgConfigHome "/fontconfig")
"/etc/fonts" # for fontconfig "/etc/fonts" # for fontconfig
"/etc/machine-id" "/etc/localtime" # this is a symlink to /etc/zoneinfo/xxx
"/etc/localtime" "/etc/zoneinfo"
# Fix: libEGL warning: egl: failed to create dri2 screen # Fix: libEGL warning: egl: failed to create dri2 screen
"/etc/egl" "/etc/egl"
@@ -89,15 +83,19 @@ in {
]; ];
env = { env = {
XDG_DATA_DIRS = lib.mkForce (lib.makeSearchPath "share" [ XDG_DATA_DIRS = lib.mkForce (
iconTheme lib.makeSearchPath "share" [
cursorTheme iconTheme
pkgs.shared-mime-info cursorTheme
]); pkgs.shared-mime-info
XCURSOR_PATH = lib.mkForce (lib.concatStringsSep ":" [ ]
"${cursorTheme}/share/icons" );
"${cursorTheme}/share/pixmaps" XCURSOR_PATH = lib.mkForce (
]); lib.concatStringsSep ":" [
"${cursorTheme}/share/icons"
"${cursorTheme}/share/pixmaps"
]
);
}; };
}; };
}; };
+1 -1
View File
@@ -2,7 +2,7 @@
{ {
etc.sslCertificates.enable = true; etc.sslCertificates.enable = true;
bubblewrap = { bubblewrap = {
bind.ro = ["/etc/resolv.conf"]; bind.ro = [ "/etc/resolv.conf" ];
network = true; network = true;
}; };
} }
-17
View File
@@ -1,17 +0,0 @@
{
makeDesktopItem,
qq,
}:
makeDesktopItem {
name = "qq";
desktopName = "QQ";
exec = "${qq}/bin/qq %U";
terminal = false;
# To find the icon name(nushell):
# let p = NIXPKGS_ALLOW_UNFREE=1 nix eval --impure nixpkgs#qq.outPath | str trim --char '"'
# tree $"($p)/share/icons"
icon = "${qq}/share/icons/hicolor/512x512/apps/qq.png";
type = "Application";
categories = ["Network"];
comment = "QQ boxed";
}
+66 -49
View File
@@ -5,58 +5,75 @@
# - QQ's flatpak manifest: https://github.com/flathub/com.qq.QQ/blob/master/com.qq.QQ.yaml # - QQ's flatpak manifest: https://github.com/flathub/com.qq.QQ/blob/master/com.qq.QQ.yaml
{ {
lib, lib,
pkgs, qq,
mkNixPak, mkNixPak,
buildEnv,
makeDesktopItem,
... ...
}: }:
mkNixPak {
config = {sloth, ...}: { let
app = { appId = "com.qq.QQ";
package = pkgs.qq.override {
# fix fcitx5 input method wrapped = mkNixPak {
commandLineArgs = lib.concatStringsSep " " ["--enable-wayland-ime"]; config =
{ sloth, ... }:
{
app = {
package = qq;
binPath = "bin/qq";
};
flatpak.appId = appId;
imports = [
./modules/gui-base.nix
./modules/network.nix
./modules/common.nix
];
bubblewrap = {
# To trace all the home files QQ accesses, you can use the following nushell command:
# just trace-access qq
# See the Justfile in the root of this repository for more information.
bind.rw = [
sloth.xdgDocumentsDir
sloth.xdgDownloadDir
sloth.xdgMusicDir
sloth.xdgVideosDir
sloth.xdgPicturesDir
];
sockets = {
x11 = false;
wayland = true;
pipewire = true;
};
};
}; };
binPath = "bin/qq";
};
flatpak.appId = "com.tencent.qq";
imports = [
./modules/gui-base.nix
./modules/network.nix
];
# list all dbus services:
# ls -al /run/current-system/sw/share/dbus-1/services/
# ls -al /etc/profiles/per-user/ryan/share/dbus-1/services/
dbus.policies = {
"org.gnome.Shell.Screencast" = "talk";
# System tray icon
"org.freedesktop.Notifications" = "talk";
"org.kde.StatusNotifierWatcher" = "talk";
# File Manager
"org.freedesktop.FileManager1" = "talk";
# Uses legacy StatusNotifier implementation
"org.kde.*" = "own";
};
bubblewrap = {
# To trace all the home files QQ accesses, you can use the following nushell command:
# just trace-access qq
# See the Justfile in the root of this repository for more information.
bind.rw = [
# given the read write permission to the following directories.
# NOTE: sloth.mkdir is used to create the directory if it does not exist!
(sloth.mkdir (sloth.concat [sloth.xdgConfigHome "/QQ"]))
sloth.xdgDocumentsDir
sloth.xdgDownloadDir
sloth.xdgMusicDir
sloth.xdgVideosDir
];
sockets = {
x11 = false;
wayland = true;
pipewire = true;
};
};
}; };
exePath = lib.getExe wrapped.config.script;
in
buildEnv {
inherit (wrapped.config.script) name meta passthru;
paths = [
wrapped.config.script
(makeDesktopItem {
name = appId;
desktopName = "QQ";
genericName = "QQ Boxed";
comment = "Tencent QQ, also known as QQ, is an instant messaging software service and web portal developed by the Chinese technology company Tencent.";
exec = "${exePath} %U";
terminal = false;
icon = "${qq}/share/icons/hicolor/512x512/apps/qq.png";
startupNotify = true;
startupWMClass = "QQ";
type = "Application";
categories = [
"InstantMessaging"
"Network"
];
extraConfig = {
X-Flatpak = appId;
};
})
];
} }
+101
View File
@@ -0,0 +1,101 @@
{
lib,
telegram-desktop,
buildEnv,
mkNixPak,
makeDesktopItem,
...
}:
let
appId = "org.telegram.desktop";
wrapped = mkNixPak {
config =
{ sloth, ... }:
{
imports = [
./modules/gui-base.nix
./modules/network.nix
./modules/common.nix
];
app.package = telegram-desktop;
flatpak = {
appId = appId;
};
dbus = {
enable = true;
policies = {
"com.canonical.indicator.application" = "talk";
"org.ayatana.indicator.application" = "talk";
"org.sigxcpu.Feedback" = "talk";
};
};
bubblewrap = {
bind.rw = [
sloth.xdgDocumentsDir
sloth.xdgDownloadDir
sloth.xdgMusicDir
sloth.xdgVideosDir
sloth.xdgPicturesDir
];
sockets = {
x11 = false;
wayland = true;
pipewire = true;
};
};
};
};
exePath = lib.getExe wrapped.config.script;
in
buildEnv {
inherit (wrapped.config.script) name meta passthru;
paths = [
wrapped.config.script
(makeDesktopItem {
name = appId;
desktopName = "Telegram";
comment = "New era of messaging";
tryExec = "${exePath}";
exec = "${exePath} -- %u";
icon = appId;
startupNotify = true;
startupWMClass = appId;
terminal = false;
type = "Application";
categories = [
"Chat"
"Network"
"InstantMessaging"
"Qt"
];
mimeTypes = [
"x-scheme-handler/tg"
"x-scheme-handler/tonsite"
];
keywords = [
"tg"
"chat"
"im"
"messaging"
"messenger"
"sms"
"tdesktop"
];
actions = {
quit = {
name = "Quit Telegram";
exec = "${exePath} -quit";
icon = "application-exit";
};
};
extraConfig = {
X-Flatpak = appId;
DBusActivatable = "true";
SingleMainWindow = "true";
X-GNOME-UsesNotifications = "true";
X-GNOME-SingleWindow = "true";
};
})
];
}
+2 -1
View File
@@ -1,4 +1,5 @@
{modulesPath, ...}: { { modulesPath, ... }:
{
imports = [ imports = [
(modulesPath + "/profiles/hardened.nix") (modulesPath + "/profiles/hardened.nix")
]; ];
+46 -3
View File
@@ -1,5 +1,48 @@
# Home Manager's Submodules # Home Manager's Submodules
1. `base`: The base module that is suitable for both Linux and macOS. This directory contains all Home Manager configurations organized by platform and functionality.
2. `linux`: Linux-specific configuration.
3. `darwin`: macOS-specific configuration. ## Current Structure
```
home/
├── base/ # Cross-platform home manager configurations
│ ├── core/ # Essential applications and settings
│ │ ├── editors/ # Editor configurations (Neovim, Helix)
│ │ ├── shells/ # Shell configurations (Nushell, Zellij)
│ │ └── ...
│ ├── gui/ # GUI applications and desktop settings
│ │ ├── terminal/ # Terminal emulators (Kitty, Alacritty, etc.)
│ │ └── ...
│ ├── tui/ # Terminal/TUI applications
│ │ ├── editors/ # TUI editors and related tools
│ │ ├── encryption/ # GPG, password-store, etc.
│ │ └── ...
│ └── home.nix # Main home manager entry point
├── linux/ # Linux-specific home manager configurations
│ ├── base/ # Linux base configurations
│ ├── gui/ # Linux GUI applications
│ │ ├── niri/ # Niri window manager
│ │ └── ...
│ ├── editors/ # Linux-specific editors
│ └── ...
└── darwin/ # macOS-specific home manager configurations
├── aerospace/ # macOS window manager
├── proxy/ # Proxy configurations
└── ...
```
## Module Overview
1. **base**: The base module suitable for both Linux and macOS
- Cross-platform applications and settings
- Shared configurations for editors, shells, and essential tools
2. **linux**: Linux-specific configuration
- Desktop environments (Noctalia Shell, Niri compositor)
- Linux-specific GUI applications
- System integration tools
3. **darwin**: macOS-specific configuration
- macOS applications and services
- Platform-specific integrations (Aerospace, Squirrel, etc.)
+64 -3
View File
@@ -1,5 +1,66 @@
# Home Manager's Base Submodules # Home Manager's Base Submodules
1. `server`: Configuration which is suitable for both servers and desktops. This directory contains cross-platform base configurations that are shared between Linux and Darwin
1. `desktop`: Configuration for desktop environments, such as Hyprland, I3, etc. systems.
1. `core.nix`: Minimal home-manager's config
## Configuration Structure
### Core System
- **core/**: Essential cross-platform configurations
- **core.nix**: Minimal home-manager configuration
- **shells/**: Shell configurations (bash, zsh, fish, nu)
- **editors/**: Text editor configurations
- **neovim/**: Neovim with custom plugins and settings
- **helix/**: Helix editor configuration
- **btop.nix**: System monitoring tools
- **git.nix**: Git configuration and aliases
- **npm.nix**: Node.js package management
- **pip.nix**: Python package management
- **starship.nix**: Cross-shell prompt configuration
- **theme.nix**: Color schemes and theming
- **yazi.nix**: Terminal file manager configuration
- **zellij/**: Terminal multiplexer with custom layouts
### Desktop Environment
- **gui/**: Cross-platform GUI applications and configurations
- **dev-tools.nix**: Development tools and IDEs
- **media.nix**: Media players and utilities
- **terminal/**: Terminal emulator configurations
- **alacritty/**: Alacritty terminal
- **kitty/**: Kitty terminal
- **foot/**: Foot terminal (Linux)
- **ghostty/**: Ghostty terminal
### Terminal Interface
- **tui/**: Terminal-based interface configurations
- **cloud/**: Cloud development tools (Terraform, etc.)
- **container.nix**: Container tools (Docker, Podman)
- **dev-tools.nix**: Terminal-based development tools
- **editors/**: Terminal editor configurations
- **encryption/**: Encryption and security tools
- **gpg/**: GPG key management
- **password-store/**: Password management with pass
- **shell.nix**: Shell environment configurations
- **ssh/**: SSH configuration and management
- **zellij/**: Terminal workspace management
### System Management
- **home.nix**: Main home manager configuration file
## Platform Compatibility
All configurations in this directory are designed to work across:
- **Linux**: All distributions with Nix and Home Manager
- **macOS**: Darwin systems with Home Manager
- **WSL**: Windows Subsystem for Linux
## Usage
These base configurations provide the foundation for both Linux and Darwin systems, ensuring
consistent environments across different platforms while allowing for platform-specific
customizations.
+10 -32
View File
@@ -1,33 +1,6 @@
{pkgs, ...}: { { pkgs, ... }:
{
home.packages = with pkgs; [ home.packages = with pkgs; [
# Misc
cowsay
gnupg
gnumake
# Modern cli tools, replacement of grep/sed/...
# Interactively filter its input using fuzzy searching, not limit to filenames.
fzf
# search for files by name, faster than find
fd
# search for files by its content, replacement of grep
(ripgrep.override {withPCRE2 = true;})
# A fast and polyglot tool for code searching, linting, rewriting at large scale
# supported languages: only some mainstream languages currently(do not support nix/nginx/yaml/toml/...)
ast-grep
sad # CLI search and replace, just like sed, but with diff preview.
yq-go # yaml processor https://github.com/mikefarah/yq
just # a command runner like make, but simpler
hyperfine # command-line benchmarking tool
gping # ping, but with a graph(TUI)
doggo # DNS client for humans
duf # Disk Usage/Free Utility - a better 'df' alternative
du-dust # A more intuitive version of `du` in rust
gdu # disk usage analyzer(replacement of `du`)
# nix related # nix related
# #
# it provides the command `nom` works just like `nix # it provides the command `nom` works just like `nix
@@ -41,10 +14,15 @@
# https://github.com/utdemir/nix-tree # https://github.com/utdemir/nix-tree
nix-tree # A TUI to visualize the dependency graph of a nix derivation nix-tree # A TUI to visualize the dependency graph of a nix derivation
# productivity # misc
cowsay
gnupg
caddy # A webserver with automatic HTTPS via Let's Encrypt(replacement of nginx) caddy # A webserver with automatic HTTPS via Let's Encrypt(replacement of nginx)
croc # File transfer between computers securely and easily # A fast and polyglot tool for code searching, linting, rewriting at large scale
ncdu # analyzer your disk usage Interactively, via TUI(replacement of `du`) # supported languages: only some mainstream languages currently(do not support nix/nginx/yaml/toml/...)
ast-grep
# other core cli tools are installed at system-level
]; ];
# A modern replacement for ls # A modern replacement for ls
+2 -1
View File
@@ -1,3 +1,4 @@
{mylib, ...}: { { mylib, ... }:
{
imports = mylib.scanPaths ./.; imports = mylib.scanPaths ./.;
} }
+8 -1
View File
@@ -1,3 +1,10 @@
# Editors # Editors
See [desktop/editors/](../../desktop/editors/) for more details. This directory contains editor configurations that are shared across different environments.
## Available Editors
- **neovim/**: Neovim configuration with AstroNvim
- **helix/**: Helix editor configuration
These configurations are designed to work across both terminal and GUI environments.
+2 -1
View File
@@ -1,3 +1,4 @@
{mylib, ...}: { { mylib, ... }:
{
imports = mylib.scanPaths ./.; imports = mylib.scanPaths ./.;
} }
+3 -4
View File
@@ -1,5 +1,4 @@
{pkgs, ...}: { { pkgs, ... }:
programs.helix = { {
enable = true; programs.helix.enable = true;
};
} }
+2 -1
View File
@@ -1,4 +1,5 @@
{pkgs, ...}: { { pkgs, ... }:
{
programs = { programs = {
neovim = { neovim = {
enable = true; enable = true;
+55 -52
View File
@@ -4,12 +4,13 @@
pkgs, pkgs,
myvars, myvars,
... ...
}: { }:
{
# `programs.git` will generate the config file: ~/.config/git/config # `programs.git` will generate the config file: ~/.config/git/config
# to make git use this config file, `~/.gitconfig` should not exist! # to make git use this config file, `~/.gitconfig` should not exist!
# #
# https://git-scm.com/docs/git-config#Documentation/git-config.txt---global # https://git-scm.com/docs/git-config#Documentation/git-config.txt---global
home.activation.removeExistingGitconfig = lib.hm.dag.entryBefore ["checkLinkTargets"] '' home.activation.removeExistingGitconfig = lib.hm.dag.entryBefore [ "checkLinkTargets" ] ''
rm -f ${config.home.homeDirectory}/.gitconfig rm -f ${config.home.homeDirectory}/.gitconfig
''; '';
@@ -39,18 +40,27 @@
enable = true; enable = true;
lfs.enable = true; lfs.enable = true;
userName = myvars.userfullname; # signing = {
userEmail = myvars.useremail; # key = "xxx";
# signByDefault = true;
# };
includes = [ includes = [
{ {
# use different email & name for work # use different email & name for work:
#
# [user]
# email = "xxx@xxx.com"
# name = "Ryan Yin"
path = "~/work/.gitconfig"; path = "~/work/.gitconfig";
condition = "gitdir:~/work/"; condition = "gitdir:~/work/";
} }
]; ];
extraConfig = { settings = {
user.email = myvars.useremail;
user.name = myvars.userfullname;
init.defaultBranch = "main"; init.defaultBranch = "main";
trim.bases = "develop,master,main"; # for git-trim trim.bases = "develop,master,main"; # for git-trim
push.autoSetupRemote = true; push.autoSetupRemote = true;
@@ -62,58 +72,51 @@
"ssh://git@github.com/ryan4yin" = { "ssh://git@github.com/ryan4yin" = {
insteadOf = "https://github.com/ryan4yin"; insteadOf = "https://github.com/ryan4yin";
}; };
# "ssh://git@gitlab.com/" = { # "ssh://git@bitbucket.com/ryan4yin" = {
# insteadOf = "https://gitlab.com/"; # insteadOf = "https://bitbucket.com/ryan4yin";
# };
# "ssh://git@bitbucket.com/" = {
# insteadOf = "https://bitbucket.com/";
# }; # };
}; };
};
# signing = { alias = {
# key = "xxx"; # common aliases
# signByDefault = true; br = "branch";
# }; co = "checkout";
st = "status";
ls = "log --pretty=format:\"%C(yellow)%h%Cred%d\\\\ %Creset%s%Cblue\\\\ [%cn]\" --decorate";
ll = "log --pretty=format:\"%C(yellow)%h%Cred%d\\\\ %Creset%s%Cblue\\\\ [%cn]\" --decorate --numstat";
cm = "commit -m"; # commit via `git cm <message>`
ca = "commit -am"; # commit all changes via `git ca <message>`
dc = "diff --cached";
# A syntax-highlighting pager for git, diff, grep, and blame output amend = "commit --amend -m"; # amend commit message via `git amend <message>`
delta = { unstage = "reset HEAD --"; # unstage file via `git unstage <file>`
enable = true; merged = "branch --merged"; # list merged(into HEAD) branches via `git merged`
options = { unmerged = "branch --no-merged"; # list unmerged(into HEAD) branches via `git unmerged`
diff-so-fancy = true; nonexist = "remote prune origin --dry-run"; # list non-exist(remote) branches via `git nonexist`
line-numbers = true;
true-color = "always"; # delete merged branches except master & dev & staging
# features => named groups of settings, used to keep related settings organized # `!` indicates it's a shell script, not a git subcommand
# features = ""; delmerged = ''! git branch --merged | egrep -v "(^\*|main|master|dev|staging)" | xargs git branch -d'';
# delete non-exist(remote) branches
delnonexist = "remote prune origin";
# aliases for submodule
update = "submodule update --init --recursive";
foreach = "submodule foreach";
}; };
}; };
};
aliases = { # A syntax-highlighting pager for git, diff, grep, and blame output
# common aliases programs.delta = {
br = "branch"; enable = true;
co = "checkout"; enableGitIntegration = true;
st = "status"; options = {
ls = "log --pretty=format:\"%C(yellow)%h%Cred%d\\\\ %Creset%s%Cblue\\\\ [%cn]\" --decorate"; diff-so-fancy = true;
ll = "log --pretty=format:\"%C(yellow)%h%Cred%d\\\\ %Creset%s%Cblue\\\\ [%cn]\" --decorate --numstat"; line-numbers = true;
cm = "commit -m"; # commit via `git cm <message>` true-color = "always";
ca = "commit -am"; # commit all changes via `git ca <message>` # features => named groups of settings, used to keep related settings organized
dc = "diff --cached"; # features = "";
amend = "commit --amend -m"; # amend commit message via `git amend <message>`
unstage = "reset HEAD --"; # unstage file via `git unstage <file>`
merged = "branch --merged"; # list merged(into HEAD) branches via `git merged`
unmerged = "branch --no-merged"; # list unmerged(into HEAD) branches via `git unmerged`
nonexist = "remote prune origin --dry-run"; # list non-exist(remote) branches via `git nonexist`
# delete merged branches except master & dev & staging
# `!` indicates it's a shell script, not a git subcommand
delmerged = ''! git branch --merged | egrep -v "(^\*|main|master|dev|staging)" | xargs git branch -d'';
# delete non-exist(remote) branches
delnonexist = "remote prune origin";
# aliases for submodule
update = "submodule update --init --recursive";
foreach = "submodule foreach";
}; };
}; };
@@ -121,5 +124,5 @@
programs.lazygit.enable = true; programs.lazygit.enable = true;
# Yet another Git TUI (written in rust). # Yet another Git TUI (written in rust).
programs.gitui.enable = true; programs.gitui.enable = false;
} }
+2 -1
View File
@@ -1,4 +1,5 @@
{config, ...}: { { config, ... }:
{
# make `npm install -g <pkg>` happey # make `npm install -g <pkg>` happey
# #
# mainly used to install npm packages that updates frequently # mainly used to install npm packages that updates frequently
+4 -3
View File
@@ -1,4 +1,5 @@
{config, ...}: let { config, ... }:
let
shellAliases = { shellAliases = {
k = "kubectl"; k = "kubectl";
@@ -10,7 +11,8 @@
goBin = "${config.home.homeDirectory}/go/bin"; goBin = "${config.home.homeDirectory}/go/bin";
rustBin = "${config.home.homeDirectory}/.cargo/bin"; rustBin = "${config.home.homeDirectory}/.cargo/bin";
npmBin = "${config.home.homeDirectory}/.npm/bin"; npmBin = "${config.home.homeDirectory}/.npm/bin";
in { in
{
programs.bash = { programs.bash = {
enable = true; enable = true;
enableCompletion = true; enableCompletion = true;
@@ -25,7 +27,6 @@ in {
# NOTE: nushell will be launched in bash, so it can inherit all the eenvironment variables. # NOTE: nushell will be launched in bash, so it can inherit all the eenvironment variables.
programs.nushell = { programs.nushell = {
enable = true; enable = true;
# package = pkgs-unstable.nushell;
configFile.source = ./config.nu; configFile.source = ./config.nu;
inherit shellAliases; inherit shellAliases;
}; };
+14 -10
View File
@@ -6,20 +6,24 @@
enableZshIntegration = true; enableZshIntegration = true;
enableNushellIntegration = true; enableNushellIntegration = true;
# https://starship.rs/config/
settings = { settings = {
# Get editor completions based on the config schema
"$schema" = "https://starship.rs/config-schema.json";
character = { character = {
success_symbol = "[](bold green)"; success_symbol = "[](bold green)";
error_symbol = "[](bold red)"; error_symbol = "[](bold red)";
}; };
aws = { # I never rely on the defaults, so this module is useless to me—disabled.
symbol = "🅰 "; # I prefer adding --project, --region to very gcloud/aws command.
}; aws.disabled = true;
gcloud = { gcloud.disabled = true;
# do not show the account/project's info
# to avoid the leak of sensitive information when sharing the terminal kubernetes = {
format = "on [$symbol$active(\($region\))]($style) "; symbol = "";
symbol = "🅶 "; disabled = false;
}; };
os.disabled = false;
}; };
}; };
} }
+2 -1
View File
@@ -1,4 +1,5 @@
{catppuccin, ...}: { { catppuccin, ... }:
{
# https://github.com/catppuccin/nix # https://github.com/catppuccin/nix
imports = [ imports = [
catppuccin.homeModules.catppuccin catppuccin.homeModules.catppuccin
+3 -2
View File
@@ -1,4 +1,5 @@
{pkgs, ...}: { { pkgs, ... }:
{
# terminal file manager # terminal file manager
programs.yazi = { programs.yazi = {
enable = true; enable = true;
@@ -7,7 +8,7 @@
enableBashIntegration = true; enableBashIntegration = true;
enableNushellIntegration = true; enableNushellIntegration = true;
settings = { settings = {
manager = { mgr = {
show_hidden = true; show_hidden = true;
sort_dir_first = true; sort_dir_first = true;
}; };
+2 -1
View File
@@ -2,7 +2,8 @@ let
shellAliases = { shellAliases = {
"zj" = "zellij"; "zj" = "zellij";
}; };
in { in
{
programs.zellij = { programs.zellij = {
enable = true; enable = true;
}; };
+2 -1
View File
@@ -1,3 +1,4 @@
{mylib, ...}: { { mylib, ... }:
{
imports = mylib.scanPaths ./.; imports = mylib.scanPaths ./.;
} }
+4 -2
View File
@@ -1,5 +1,7 @@
{pkgs, ...}: { { pkgs, ... }:
home.packages = with pkgs; {
home.packages =
with pkgs;
[ [
mitmproxy # http/https proxy tool mitmproxy # http/https proxy tool
wireshark # network analyzer wireshark # network analyzer
+1 -1
View File
@@ -52,7 +52,7 @@ Error opening terminal: xterm-kitty.
NixOS preserve the `TERMINFO` and `TERMINFO_DIRS` environment variables, for `root` and the `wheel` NixOS preserve the `TERMINFO` and `TERMINFO_DIRS` environment variables, for `root` and the `wheel`
group: group:
[nixpkgs/nixos/modules/config/terminfo.nix](https://github.com/NixOS/nixpkgs/blob/nixos-25.05/nixos/modules/config/terminfo.nix#L18) [nixpkgs/nixos/modules/config/terminfo.nix](https://github.com/NixOS/nixpkgs/blob/nixos-25.11/nixos/modules/config/terminfo.nix#L18)
For nix-darwin, take a look at <https://github.com/LnL7/nix-darwin/wiki/Terminfo-issues> For nix-darwin, take a look at <https://github.com/LnL7/nix-darwin/wiki/Terminfo-issues>
+1 -6
View File
@@ -1,6 +1,5 @@
{ {
pkgs, pkgs,
pkgs-unstable,
... ...
}: }:
########################################################### ###########################################################
@@ -26,7 +25,6 @@
{ {
programs.alacritty = { programs.alacritty = {
enable = true; enable = true;
# package = pkgs-unstable.alacritty;
# https://alacritty.org/config-alacritty.html # https://alacritty.org/config-alacritty.html
settings = { settings = {
window = { window = {
@@ -52,10 +50,7 @@
bold_italic = { bold_italic = {
family = "Maple Mono NF CN"; family = "Maple Mono NF CN";
}; };
size = size = 13;
if pkgs.stdenv.isDarwin
then 14
else 13;
}; };
terminal = { terminal = {
# Spawn a nushell in login mode via `bash` # Spawn a nushell in login mode via `bash`
+2 -1
View File
@@ -1,3 +1,4 @@
{mylib, ...}: { { mylib, ... }:
{
imports = mylib.scanPaths ./.; imports = mylib.scanPaths ./.;
} }
+4 -2
View File
@@ -1,4 +1,5 @@
{pkgs, ...}: { { pkgs, ... }:
{
programs.foot = { programs.foot = {
# foot is designed only for Linux # foot is designed only for Linux
enable = pkgs.stdenv.isLinux; enable = pkgs.stdenv.isLinux;
@@ -16,8 +17,9 @@
settings = { settings = {
main = { main = {
term = "foot"; # or "xterm-256color" for maximum compatibility term = "foot"; # or "xterm-256color" for maximum compatibility
font = "Maple Mono NF CN:size=14"; font = "Maple Mono NF CN:size=13";
dpi-aware = "no"; # scale via window manager instead dpi-aware = "no"; # scale via window manager instead
resize-keep-grid = "no"; # do not resize the window on font resizing
# Spawn a nushell in login mode via `bash` # Spawn a nushell in login mode via `bash`
shell = "${pkgs.bash}/bin/bash --login -c 'nu --login --interactive'"; shell = "${pkgs.bash}/bin/bash --login -c 'nu --login --interactive'";
+5 -4
View File
@@ -12,10 +12,11 @@
programs.ghostty = { programs.ghostty = {
enable = true; enable = true;
package = package =
if pkgs.stdenv.isDarwin if pkgs.stdenv.isDarwin then
then pkgs.hello # pkgs.ghostty is currently broken on darwin pkgs.hello # pkgs.ghostty is currently broken on darwin
else pkgs.ghostty; # the stable version else
# package = ghostty.packages.${pkgs.system}.default; # the latest version pkgs.ghostty; # the stable version
# package = ghostty.packages.${pkgs.stdenv.hostPlatform.system}.default; # the latest version
enableBashIntegration = false; enableBashIntegration = false;
installBatSyntax = false; installBatSyntax = false;
# installVimSyntax = true; # installVimSyntax = true;
+2 -5
View File
@@ -19,10 +19,7 @@
font = { font = {
name = "Maple Mono NF CN"; name = "Maple Mono NF CN";
# use different font size on macOS # use different font size on macOS
size = size = 13;
if pkgs.stdenv.isDarwin
then 14
else 13;
}; };
# consistent with other terminal emulators # consistent with other terminal emulators
@@ -48,6 +45,6 @@
}; };
# macOS specific settings # macOS specific settings
darwinLaunchOptions = ["--start-as=maximized"]; darwinLaunchOptions = [ "--start-as=maximized" ];
}; };
} }
+2 -1
View File
@@ -1,4 +1,5 @@
{myvars, ...}: { { myvars, ... }:
{
# Home Manager needs a bit of information about you and the # Home Manager needs a bit of information about you and the
# paths it should manage. # paths it should manage.
home = { home = {
+8 -4
View File
@@ -2,7 +2,8 @@
lib, lib,
pkgs, pkgs,
... ...
}: { }:
{
# https://developer.hashicorp.com/terraform/cli/config/config-file # https://developer.hashicorp.com/terraform/cli/config/config-file
home.file.".terraformrc".source = ./terraformrc; home.file.".terraformrc".source = ./terraformrc;
@@ -30,9 +31,12 @@
# digitalocean # digitalocean
doctl doctl
# google cloud # google cloud
(google-cloud-sdk.withExtraComponents (with google-cloud-sdk.components; [ (google-cloud-sdk.withExtraComponents (
gke-gcloud-auth-plugin with google-cloud-sdk.components;
])) [
gke-gcloud-auth-plugin
]
))
# cloud tools that nix do not have cache for. # cloud tools that nix do not have cache for.
terraform terraform
+6 -3
View File
@@ -1,9 +1,10 @@
{ {
pkgs, pkgs,
pkgs-unstable, pkgs-2505,
nur-ryan4yin, nur-ryan4yin,
... ...
}: { }:
{
home.packages = with pkgs; [ home.packages = with pkgs; [
podman-compose podman-compose
dive # explore docker layers dive # explore docker layers
@@ -13,16 +14,18 @@
kubectl kubectl
kubectx # kubectx & kubens kubectx # kubectx & kubens
kubie # same as kubectl-ctx, but per-shell (wont touch kubeconfig).
kubectl-view-secret # kubectl view-secret kubectl-view-secret # kubectl view-secret
kubectl-tree # kubectl tree kubectl-tree # kubectl tree
kubectl-node-shell # exec into node kubectl-node-shell # exec into node
kubepug # kubernetes pre upgrade checker kubepug # kubernetes pre upgrade checker
kubectl-cnpg # cloudnative-pg's cli tool
kubebuilder kubebuilder
istioctl istioctl
clusterctl # for kubernetes cluster-api clusterctl # for kubernetes cluster-api
kubevirt # virtctl kubevirt # virtctl
kubernetes-helm pkgs-2505.kubernetes-helm
fluxcd fluxcd
argocd argocd
+2 -1
View File
@@ -1,3 +1,4 @@
{mylib, ...}: { { mylib, ... }:
{
imports = mylib.scanPaths ./.; imports = mylib.scanPaths ./.;
} }
+4 -3
View File
@@ -1,8 +1,8 @@
{ {
pkgs, pkgs,
pkgs-unstable,
... ...
}: { }:
{
############################################################# #############################################################
# #
# Basic settings for development environment # Basic settings for development environment
@@ -17,6 +17,8 @@
home.packages = with pkgs; [ home.packages = with pkgs; [
colmena # nixos's remote deployment tool colmena # nixos's remote deployment tool
tokei # count lines of code, alternative to cloc
# db related # db related
mycli mycli
pgcli pgcli
@@ -33,7 +35,6 @@
devbox devbox
bfg-repo-cleaner # remove large files from git history bfg-repo-cleaner # remove large files from git history
k6 # load testing tool k6 # load testing tool
protobuf # protocol buffer compiler
# solve coding extercises - learn by doing # solve coding extercises - learn by doing
exercism exercism
+2 -1
View File
@@ -1,3 +1,4 @@
{mylib, ...}: { { mylib, ... }:
{
imports = mylib.scanPaths ./.; imports = mylib.scanPaths ./.;
} }
+24 -2
View File
@@ -1,7 +1,29 @@
{pkgs, ...}: { {
config,
pkgs,
helix,
...
}:
let
helixPackages = helix.packages.${pkgs.stdenv.hostPlatform.system};
in
{
# to make steel work, we need to git clone this repo to your home directory.
home.sessionVariables.HELIX_STEEL_CONFIG = "${config.home.homeDirectory}/nix-config/home/base/tui/editors/helix/steel";
home.packages = with pkgs; [
steel
];
programs.helix = { programs.helix = {
enable = true; enable = true;
package = pkgs.helix; # enable steel as the plugin system
# https://github.com/helix-editor/helix/pull/8675
# https://github.com/mattwparas/helix/blob/steel-event-system/STEEL.md
package = helixPackages.default.overrideAttrs (prevAttrs: {
cargoBuildFeatures = prevAttrs.cargoBuildFeatures or [ ] ++ [ "steel" ];
});
settings = { settings = {
editor = { editor = {
line-number = "relative"; line-number = "relative";
@@ -0,0 +1,40 @@
;; The helix.scm module will be loaded first before anything else,
;; the runtime will require this module, and any functions exported
;; will now be available to be used as typed commands, e.g. :git-add :open-helix-scm
(require "helix/editor.scm")
(require (prefix-in helix. "helix/commands.scm"))
(require (prefix-in helix.static. "helix/static.scm"))
(provide shell git-add open-helix-scm open-init-scm)
(define (current-path)
(let* ([focus (editor-focus)]
[focus-doc-id (editor->doc-id focus)])
(editor-document->path focus-doc-id)))
;;@doc
;; Specialized shell implementation, where % is a wildcard for the current file
(define (shell . args)
(helix.run-shell-command
(string-join
;; Replace the % with the current file
(map (lambda (x) (if (equal? x "%") (current-path) x)) args)
" ")))
;;@doc
;; Adds the current file to git
(define (git-add)
(shell "git" "add" "%"))
;;@doc
;; Open the helix.scm file
(define (open-helix-scm)
(helix.open (helix.static.get-helix-scm-path)))
;;@doc
;; Opens the init.scm file
(define (open-init-scm)
(helix.open (helix.static.get-init-scm-path)))
@@ -0,0 +1,24 @@
;; The init.scm file is run at the top level, immediately after the helix.scm module is required.
;; The helix context is available here, so you can interact with the editor.
;; configure the LSP for steel
(require "helix/configuration.scm")
(define-lsp "steel-language-server" (command "steel-language-server") (args '()))
(define-language "scheme"
(language-servers '("steel-language-server")))
;; show splash screen - when you open with no argument
(require "mattwparas-helix-package/splash.scm")
(when (equal? (command-line) '("hx"))
(show-splash))
;; Terminal & shell
(require "steel-pty/term.scm")
(set-default-shell! "nu")
;; File Watcher
(require "helix-file-watcher/file-watcher.scm")
(spawn-watcher)
;; File Tree
(require "mattwparas-helix-package/cogs/file-tree.scm")
+3 -3
View File
@@ -2,7 +2,6 @@
config, config,
lib, lib,
pkgs, pkgs,
pkgs-unstable,
... ...
}: }:
############################################################################### ###############################################################################
@@ -18,7 +17,8 @@ let
# the path to nvim directory # the path to nvim directory
# to make this symlink work, we need to git clone this repo to your home directory. # to make this symlink work, we need to git clone this repo to your home directory.
configPath = "${config.home.homeDirectory}/nix-config/home/base/tui/editors/neovim/nvim"; configPath = "${config.home.homeDirectory}/nix-config/home/base/tui/editors/neovim/nvim";
in { in
{
xdg.configFile."nvim".source = config.lib.file.mkOutOfStoreSymlink configPath; xdg.configFile."nvim".source = config.lib.file.mkOutOfStoreSymlink configPath;
# Disable catppuccin to avoid conflict with my non-nix config. # Disable catppuccin to avoid conflict with my non-nix config.
catppuccin.nvim.enable = false; catppuccin.nvim.enable = false;
@@ -28,7 +28,7 @@ in {
programs.neovim = { programs.neovim = {
enable = true; enable = true;
package = pkgs-unstable.neovim-unwrapped; package = pkgs.neovim-unwrapped;
# defaultEditor = true; # set EDITOR at system-wide level # defaultEditor = true; # set EDITOR at system-wide level
viAlias = true; viAlias = true;
@@ -52,7 +52,8 @@ return {
"terraformls", -- terraform hcl "terraformls", -- terraform hcl
"marksman", -- markdown ls "marksman", -- markdown ls
"nickel_ls", -- nickel language server "nickel_ls", -- nickel language server
"nil_ls", -- nix language server -- "nil_ls", -- nix language server
"nixd", -- another nix language server
"buf_ls", -- protocol buffer language server "buf_ls", -- protocol buffer language server
"dockerls", -- dockerfile "dockerls", -- dockerfile
"cmake", -- cmake language server "cmake", -- cmake language server
@@ -39,7 +39,7 @@ return {
formatting.shfmt, -- Shell formatter formatting.shfmt, -- Shell formatter
formatting.terraform_fmt, -- Terraform formatter formatting.terraform_fmt, -- Terraform formatter
formatting.stylua, -- Lua formatter formatting.stylua, -- Lua formatter
formatting.alejandra, -- Nix formatter -- formatting.alejandra, -- Nix formatter
formatting.sqlfluff.with { -- SQL formatter formatting.sqlfluff.with { -- SQL formatter
extra_args = { "--dialect", "postgres" }, -- change to your dialect extra_args = { "--dialect", "postgres" }, -- change to your dialect
}, },
+141 -135
View File
@@ -1,155 +1,161 @@
{ {
pkgs, pkgs,
pkgs-unstable, pkgs-master,
... ...
}: { }:
home.packages = with pkgs; ( {
# -*- Data & Configuration Languages -*-# home.packages =
[ with pkgs;
#-- nix (
nil # -*- Data & Configuration Languages -*-#
# rnix-lsp [
# nixd #-- nix
statix # Lints and suggestions for the nix programming language nil
deadnix # Find and remove unused code in .nix source files nixd
alejandra # Nix Code Formatter statix # Lints and suggestions for the nix programming language
deadnix # Find and remove unused code in .nix source files
nixfmt # Nix Code Formatter
#-- nickel lang #-- nickel lang
nickel nickel
#-- json like #-- json like
# terraform # install via brew on macOS # terraform # install via brew on macOS
terraform-ls terraform-ls
jsonnet jsonnet
jsonnet-language-server jsonnet-language-server
taplo # TOML language server / formatter / validator taplo # TOML language server / formatter / validator
nodePackages.yaml-language-server nodePackages.yaml-language-server
actionlint # GitHub Actions linter actionlint # GitHub Actions linter
#-- dockerfile #-- dockerfile
hadolint # Dockerfile linter hadolint # Dockerfile linter
nodePackages.dockerfile-language-server-nodejs dockerfile-language-server
#-- markdown #-- markdown
marksman # language server for markdown marksman # language server for markdown
glow # markdown previewer glow # markdown previewer
pandoc # document converter pandoc # document converter
pkgs-unstable.hugo # static site generator pkgs-master.hugo # static site generator
#-- sql #-- sql
sqlfluff sqlfluff
#-- protocol buffer #-- protocol buffer
buf # linting and formatting buf # linting and formatting
] ]
++ ++
#-*- General Purpose Languages -*-# #-*- General Purpose Languages -*-#
[ [
#-- c/c++ #-- c/c++
cmake cmake
cmake-language-server cmake-language-server
gnumake gnumake
checkmake checkmake
# c/c++ compiler, required by nvim-treesitter! # c/c++ compiler, required by nvim-treesitter!
gcc gcc
gdb gdb
# c/c++ tools with clang-tools, the unwrapped version won't # c/c++ tools with clang-tools, the unwrapped version won't
# add alias like `cc` and `c++`, so that it won't conflict with gcc # add alias like `cc` and `c++`, so that it won't conflict with gcc
# llvmPackages.clang-unwrapped # llvmPackages.clang-unwrapped
clang-tools clang-tools
lldb lldb
vscode-extensions.vadimcn.vscode-lldb.adapter # codelldb - debugger vscode-extensions.vadimcn.vscode-lldb.adapter # codelldb - debugger
#-- python #-- python
pipx # Install and Run Python Applications in Isolated Environments (python313.withPackages (
uv # python project package manager ps: with ps; [
pyright # python language server # python language server
(python313.withPackages ( pyright
ps: ruff
with ps; [
ruff
black # python formatter
# debugpy
# my commonly used python packages pipx # Install and Run Python Applications in Isolated Environments
jupyter black # python formatter
ipython uv # python project package manager
pandas
requests
pyquery
pyyaml
boto3
]
))
#-- rust # my commonly used python packages
# we'd better use the rust-overlays for rust development jupyter
pkgs-unstable.rustc ipython
pkgs-unstable.rust-analyzer pandas
pkgs-unstable.cargo # rust package manager requests
pkgs-unstable.rustfmt pyquery
pkgs-unstable.clippy # rust linter pyyaml
boto3
#-- golang # misc
go protobuf # protocol buffer compiler
gomodifytags numpy
iferr # generate error handling code for go ]
impl # generate function implementation for go ))
gotools # contains tools like: godoc, goimports, etc.
gopls # go language server
delve # go debugger
# -- java #-- rust
jdk17 # we'd better use the rust-overlays for rust development
gradle pkgs-master.rustc
maven pkgs-master.rust-analyzer
spring-boot-cli pkgs-master.cargo # rust package manager
jdt-language-server pkgs-master.rustfmt
pkgs-master.clippy # rust linter
#-- zig #-- golang
zls go
gomodifytags
iferr # generate error handling code for go
impl # generate function implementation for go
gotools # contains tools like: godoc, goimports, etc.
gopls # go language server
delve # go debugger
#-- lua # -- java
stylua jdk17
lua-language-server gradle
maven
spring-boot-cli
jdt-language-server
#-- bash #-- zig
nodePackages.bash-language-server zls
shellcheck
shfmt
]
#-*- Web Development -*-#
++ [
nodePackages.nodejs
nodePackages.typescript
nodePackages.typescript-language-server
# HTML/CSS/JSON/ESLint language servers extracted from vscode
nodePackages.vscode-langservers-extracted
nodePackages."@tailwindcss/language-server"
emmet-ls
]
# -*- Lisp like Languages -*-#
# ++ [
# guile
# racket-minimal
# fnlfmt # fennel
# (
# if pkgs.stdenv.isLinux && pkgs.stdenv.isx86
# then pkgs-unstable.akkuPackages.scheme-langserver
# else pkgs.emptyDirectory
# )
# ]
++ [
proselint # English prose linter
#-- verilog / systemverilog #-- lua
verible stylua
lua-language-server
#-- Optional Requirements: #-- bash
nodePackages.prettier # common code formatter nodePackages.bash-language-server
fzf shellcheck
gdu # disk usage analyzer, required by AstroNvim shfmt
(ripgrep.override {withPCRE2 = true;}) # recursively searches directories for a regex pattern ]
] #-*- Web Development -*-#
); ++ [
nodePackages.nodejs
nodePackages.typescript
nodePackages.typescript-language-server
# HTML/CSS/JSON/ESLint language servers extracted from vscode
nodePackages.vscode-langservers-extracted
nodePackages."@tailwindcss/language-server"
emmet-ls
]
# -*- Lisp like Languages -*-#
# ++ [
# guile
# racket-minimal
# fnlfmt # fennel
# (
# if pkgs.stdenv.isLinux && pkgs.stdenv.isx86
# then pkgs-master.akkuPackages.scheme-langserver
# else pkgs.emptyDirectory
# )
# ]
++ [
proselint # English prose linter
#-- verilog / systemverilog
verible
#-- Optional Requirements:
nodePackages.prettier # common code formatter
fzf
gdu # disk usage analyzer, required by AstroNvim
(ripgrep.override { withPCRE2 = true; }) # recursively searches directories for a regex pattern
]
);
} }
+2 -2
View File
@@ -1,8 +1,8 @@
{ {
pkgs, pkgs,
pkgs-unstable,
... ...
}: { }:
{
home.packages = with pkgs; [ home.packages = with pkgs; [
age age
sops sops
+2 -1
View File
@@ -2,7 +2,8 @@
config, config,
mysecrets, mysecrets,
... ...
}: { }:
{
programs.gpg = { programs.gpg = {
enable = true; enable = true;
homedir = "${config.home.homeDirectory}/.gnupg"; homedir = "${config.home.homeDirectory}/.gnupg";
+4 -2
View File
@@ -3,9 +3,11 @@
config, config,
lib, lib,
... ...
}: let }:
let
passwordStoreDir = "${config.xdg.dataHome}/password-store"; passwordStoreDir = "${config.xdg.dataHome}/password-store";
in { in
{
programs.password-store = { programs.password-store = {
enable = true; enable = true;
package = pkgs.pass.withExtensions (exts: [ package = pkgs.pass.withExtensions (exts: [
-51
View File
@@ -1,51 +0,0 @@
{
config,
pkgs-unstable,
...
}: let
inherit (pkgs-unstable) nu_scripts;
in {
programs.nushell = {
# load the alias file for work
# the file must exist, otherwise nushell will complain about it!
#
# currently, nushell does not support conditional sourcing of files
# https://github.com/nushell/nushell/issues/8214
extraConfig = ''
source /etc/agenix/alias-for-work.nushell
# using claude-code with kimi k2
$env.ANTHROPIC_BASE_URL = "https://api.moonshot.cn/anthropic/"
$env.ANTHROPIC_API_KEY = $env.MOONSHOT_API_KEY
# Directories in this constant are searched by the
# `use` and `source` commands.
const NU_LIB_DIRS = $NU_LIB_DIRS ++ ['${nu_scripts}/share/nu_scripts']
# completion
use custom-completions/cargo/cargo-completions.nu *
use custom-completions/curl/curl-completions.nu *
use custom-completions/git/git-completions.nu *
use custom-completions/glow/glow-completions.nu *
use custom-completions/just/just-completions.nu *
use custom-completions/make/make-completions.nu *
use custom-completions/man/man-completions.nu *
use custom-completions/nix/nix-completions.nu *
use custom-completions/ssh/ssh-completions.nu *
use custom-completions/tar/tar-completions.nu *
use custom-completions/tcpdump/tcpdump-completions.nu *
use custom-completions/zellij/zellij-completions.nu *
# use custom-completions/zoxide/zoxide-completions.nu *
# alias
use aliases/git/git-aliases.nu *
use aliases/eza/eza-aliases.nu *
use aliases/bat/bat-aliases.nu *
# modules
use modules/argx *
use modules/lg *
use modules/kubernetes *
'';
};
}
+39
View File
@@ -0,0 +1,39 @@
# Google Cloud CLI aliases
# Based on https://cloud.google.com/sdk/docs/configurations
# Note: Avoided conflicts with common git aliases (gc, gca, gcl, gcs, gcu, gs, etc.)
# Configuration management
export alias gccfg = gcloud config configurations create
export alias gcact = gcloud config configurations activate
export alias gclist = gcloud config configurations list
export alias gcdel = gcloud config configurations delete
export alias gcset = gcloud config set
export alias gcunset = gcloud config unset
export alias gcconfig = gcloud config list
# Authentication
export alias gclogin = gcloud auth login
export alias gcauth = gcloud auth list
export alias gcapp = gcloud auth application-default login
# Project management
export alias gcproj = gcloud config set project
export alias gcget = gcloud config get-value project
# Compute Engine
export alias gcinst = gcloud compute instances list
export alias gccreate = gcloud compute instances create
export alias gcdelete = gcloud compute instances delete
export alias gcssh = gcloud compute ssh
export alias gck8sget = gcloud container clusters get-credentials
# Storage
export alias gcst = gcloud storage
export alias gcstls = gcloud storage ls
export alias gcstcp = gcloud storage cp
export alias gcstrm = gcloud storage rm
# General shortcuts
export alias gcloud = gcloud
export alias gcinfo = gcloud info
export alias gcver = gcloud version
+72
View File
@@ -0,0 +1,72 @@
{
nu_scripts,
...
}:
{
programs.nushell = {
# load the alias file for work
# the file must exist, otherwise nushell will complain about it!
#
# currently, nushell does not support conditional sourcing of files
# https://github.com/nushell/nushell/issues/8214
extraConfig = ''
source /etc/agenix/alias-for-work.nushell
$env.CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC = "1"
# using claude-code with kimi k2
# https://platform.moonshot.cn/docs/guide/agent-support
# $env.ANTHROPIC_BASE_URL = "https://api.moonshot.cn/anthropic/"
# $env.ANTHROPIC_AUTH_TOKEN = $env.MOONSHOT_API_KEY
# $env.ANTHROPIC_MODEL = "kimi-k2-thinking"
# $env.ANTHROPIC_DEFAULT_HAIKU_MODEL = "kimi-k2-thinking-turbo"
# using claude-code with glm llm
# https://docs.bigmodel.cn/cn/coding-plan/tool/claude
$env.ANTHROPIC_BASE_URL = "https://open.bigmodel.cn/api/anthropic"
$env.ANTHROPIC_AUTH_TOKEN = $env.ZAI_API_KEY
$env.ANTHROPIC_MODEL = "glm-4.7"
$env.ANTHROPIC_DEFAULT_HAIKU_MODEL = "glm-4.5-air"
# using claude-code with qwen llm
# https://bailian.console.aliyun.com/?tab=doc#/doc/?type=model&url=2949529
# $env.ANTHROPIC_BASE_URL = "https://dashscope.aliyuncs.com/apps/anthropic"
# $env.ANTHROPIC_AUTH_TOKEN = $env.DASHSCOPE_API_KEY
# $env.ANTHROPIC_MODEL = "qwen-plus" # qwen-max,
# $env.ANTHROPIC_DEFAULT_HAIKU_MODEL = "qwen-turbo"
# Directories in this constant are searched by the
# `use` and `source` commands.
const NU_LIB_DIRS = $NU_LIB_DIRS ++ ['${nu_scripts}']
# -*- completion -*-
use custom-completions/cargo/cargo-completions.nu *
use custom-completions/curl/curl-completions.nu *
use custom-completions/git/git-completions.nu *
use custom-completions/glow/glow-completions.nu *
use custom-completions/just/just-completions.nu *
use custom-completions/make/make-completions.nu *
use custom-completions/man/man-completions.nu *
use custom-completions/nix/nix-completions.nu *
use custom-completions/ssh/ssh-completions.nu *
use custom-completions/tar/tar-completions.nu *
use custom-completions/tcpdump/tcpdump-completions.nu *
use custom-completions/zellij/zellij-completions.nu *
use custom-completions/zoxide/zoxide-completions.nu *
# -*- alias -*-
use aliases/git/git-aliases.nu *
use aliases/eza/eza-aliases.nu *
use aliases/bat/bat-aliases.nu *
use ${./aliases/gcloud.nu} *
# -*- modules -*-
# argx & lg is required by the kubernetes module
use modules/argx *
use modules/lg *
# k8s/helm aliases, completions,
use modules/kubernetes *
# a wrapper around the jc cli tool, convert cli outputs to nushell tables
# use modules/jc
'';
};
}
+17 -3
View File
@@ -2,14 +2,28 @@
config, config,
mysecrets, mysecrets,
... ...
}: { }:
{
home.file.".ssh/romantic.pub".source = "${mysecrets}/public/romantic.pub"; home.file.".ssh/romantic.pub".source = "${mysecrets}/public/romantic.pub";
programs.ssh = { programs.ssh = {
enable = true; enable = true;
# "a private key that is used during authentication will be added to ssh-agent if it is running" # default config
addKeysToAgent = "yes"; enableDefaultConfig = false;
matchBlocks."*" = {
forwardAgent = false;
# "a private key that is used during authentication will be added to ssh-agent if it is running"
addKeysToAgent = "yes";
compression = true;
serverAliveInterval = 0;
serverAliveCountMax = 3;
hashKnownHosts = false;
userKnownHostsFile = "~/.ssh/known_hosts";
controlMaster = "no";
controlPath = "~/.ssh/master-%r@%n:%p";
controlPersist = "no";
};
matchBlocks = { matchBlocks = {
"github.com" = { "github.com" = {
+4 -2
View File
@@ -1,8 +1,10 @@
{pkgs, ...}: let { pkgs, ... }:
let
shellAliases = { shellAliases = {
"zj" = "zellij"; "zj" = "zellij";
}; };
in { in
{
programs.zellij = { programs.zellij = {
enable = true; enable = true;
package = pkgs.zellij; package = pkgs.zellij;
+31 -4
View File
@@ -1,6 +1,33 @@
# Home Manager's Darwin Submodules # Home Manager's Darwin Submodules
1. `core.nix`: some basic configuration. This directory contains macOS-specific Home Manager configurations for Darwin systems.
2. `shell.nix`: shell related.
3. `rime-squirrel.nix`: [rime-squirrel](https://github.com/rime/squirrel)'s configuration. ## Configuration Modules
4. `default.nix`: the entrypoint of darwin's configuration, it import all the submodules above.
### Core Configurations
- **default.nix**: Entry point that imports all Darwin configurations
- **shell.nix**: Shell configurations and environment settings
- **rime-squirrel.nix**: [Rime Squirrel](https://github.com/rime/squirrel) input method
configuration
### Window Management
- **aerospace/**: [Aerospace](https://github.com/nikitabobko/AeroSpace) tiling window manager
configuration
- Custom keybindings and workspace management
- Application-specific window rules
### Network Configuration
- **proxy/**: Network proxy configurations
- `proxychains.conf`: Proxy chains configuration for network routing
- Proxy settings for development tools and applications
## Features
- macOS-specific package installations and configurations
- Native macOS applications and utilities
- Touch ID and system integration
- Homebrew integration for additional packages
- macOS-specific shell configurations and aliases
+21 -21
View File
@@ -130,8 +130,8 @@ alt-3 = 'workspace 3Work'
alt-4 = 'workspace 4Firefox' alt-4 = 'workspace 4Firefox'
alt-5 = 'workspace 5Chrome' alt-5 = 'workspace 5Chrome'
alt-6 = 'workspace 6Chat' alt-6 = 'workspace 6Chat'
alt-7 = 'workspace 7Music' alt-7 = 'workspace 7Work'
alt-8 = 'workspace 8Mail' alt-8 = 'workspace 8Music'
alt-9 = 'workspace 9File' alt-9 = 'workspace 9File'
alt-0 = 'workspace 0Other' alt-0 = 'workspace 0Other'
alt-a = 'workspace A' # In your config, you can drop workspace bindings that you don't need alt-a = 'workspace A' # In your config, you can drop workspace bindings that you don't need
@@ -146,8 +146,8 @@ alt-shift-3 = 'move-node-to-workspace 3Work'
alt-shift-4 = 'move-node-to-workspace 4Firefox' alt-shift-4 = 'move-node-to-workspace 4Firefox'
alt-shift-5 = 'move-node-to-workspace 5Chrome' alt-shift-5 = 'move-node-to-workspace 5Chrome'
alt-shift-6 = 'move-node-to-workspace 6Chat' alt-shift-6 = 'move-node-to-workspace 6Chat'
alt-shift-7 = 'move-node-to-workspace 7Music' alt-shift-7 = 'move-node-to-workspace 7Work'
alt-shift-8 = 'move-node-to-workspace 8Mail' alt-shift-8 = 'move-node-to-workspace 8Music'
alt-shift-9 = 'move-node-to-workspace 9File' alt-shift-9 = 'move-node-to-workspace 9File'
alt-shift-0 = 'move-node-to-workspace 0Other' alt-shift-0 = 'move-node-to-workspace 0Other'
alt-shift-a = 'move-node-to-workspace A' alt-shift-a = 'move-node-to-workspace A'
@@ -246,22 +246,22 @@ run = 'move-node-to-workspace 6Chat'
if.app-id = 'com.tencent.qq' if.app-id = 'com.tencent.qq'
run = 'move-node-to-workspace 6Chat' run = 'move-node-to-workspace 6Chat'
[[on-window-detected]]
if.app-id = 'com.tencent.QQMusicMac'
run = 'move-node-to-workspace 7Music'
[[on-window-detected]]
if.app-id = 'com.netease.163music'
run = 'move-node-to-workspace 7Music'
[[on-window-detected]] [[on-window-detected]]
if.app-id = 'com.apple.mail' if.app-id = 'com.apple.mail'
run = 'move-node-to-workspace 8Mail' run = 'move-node-to-workspace 7Work'
# calendar # calendar
[[on-window-detected]] [[on-window-detected]]
if.app-id = 'com.apple.iCal' if.app-id = 'com.apple.iCal'
run = 'move-node-to-workspace 8Mail' run = 'move-node-to-workspace 7Work'
[[on-window-detected]]
if.app-id = 'com.tencent.QQMusicMac'
run = 'move-node-to-workspace 8Music'
[[on-window-detected]]
if.app-id = 'com.netease.163music'
run = 'move-node-to-workspace 8Music'
[[on-window-detected]] [[on-window-detected]]
if.app-id = 'com.apple.finder' if.app-id = 'com.apple.finder'
@@ -296,6 +296,11 @@ run = ['layout floating', 'move-node-to-workspace 0Other']
if.app-id = 'ai.elementlabs.lmstudio' if.app-id = 'ai.elementlabs.lmstudio'
run = ['layout floating', 'move-node-to-workspace 0Other'] run = ['layout floating', 'move-node-to-workspace 0Other']
# Clash Verge - has problem with floating
[[on-window-detected]]
if.app-id = 'io.github.clash-verge-rev.clash-verge-rev'
run = ['move-node-to-workspace 0Other']
[[on-window-detected]] [[on-window-detected]]
if.app-id = 'us.zoom.xos' if.app-id = 'us.zoom.xos'
run = 'move-node-to-workspace 0Other' run = 'move-node-to-workspace 0Other'
@@ -310,11 +315,6 @@ run = ['layout floating']
if.app-id = 'com.apple.systempreferences' if.app-id = 'com.apple.systempreferences'
run = ['layout floating'] run = ['layout floating']
# Clash Verge - has problem with floating
[[on-window-detected]]
if.app-id = 'io.github.clash-verge-rev.clash-verge-rev'
run = ['move-node-to-workspace 0Other']
# Make all windows float by default # Make all windows float by default
[[on-window-detected]] [[on-window-detected]]
check-further-callbacks = true check-further-callbacks = true
@@ -331,7 +331,7 @@ run = ['layout floating']
4Firefox = ['main'] 4Firefox = ['main']
5Chrome = ['main'] 5Chrome = ['main']
6Chat = ['built-in'] 6Chat = ['built-in']
7Music = ['built-in'] 7Work = ['main']
8Mail = ['main'] 8Music = ['built-in']
9File = ['main'] 9File = ['main']
0Other = ['main'] 0Other = ['main']
+3 -3
View File
@@ -1,5 +1,5 @@
{config, ...}: { { config, ... }:
{
home.file.".aerospace.toml".source = home.file.".aerospace.toml".source =
config.lib.file.mkOutOfStoreSymlink config.lib.file.mkOutOfStoreSymlink "${config.home.homeDirectory}/nix-config/home/darwin/aerospace/aerospace.toml";
"${config.home.homeDirectory}/nix-config/home/darwin/aerospace/aerospace.toml";
} }
+8 -9
View File
@@ -2,16 +2,15 @@
mylib, mylib,
myvars, myvars,
... ...
}: { }:
{
home.homeDirectory = "/Users/${myvars.username}"; home.homeDirectory = "/Users/${myvars.username}";
imports = imports = (mylib.scanPaths ./.) ++ [
(mylib.scanPaths ./.) ../base/core
++ [ ../base/tui
../base/core ../base/gui
../base/tui ../base/home.nix
../base/gui ];
../base/home.nix
];
# enable management of XDG base directories on macOS. # enable management of XDG base directories on macOS.
xdg.enable = true; xdg.enable = true;
+3 -3
View File
@@ -2,12 +2,12 @@
config, config,
pkgs, pkgs,
... ...
}: { }:
{
home.packages = with pkgs; [ home.packages = with pkgs; [
clash-meta clash-meta
]; ];
home.file.".proxychains/proxychains.conf".source = home.file.".proxychains/proxychains.conf".source =
config.lib.file.mkOutOfStoreSymlink config.lib.file.mkOutOfStoreSymlink "${config.home.homeDirectory}/nix-config/home/darwin/proxy/proxychains.conf";
"${config.home.homeDirectory}/nix-config/home/darwin/proxy/proxychains.conf";
} }
+2 -1
View File
@@ -1,4 +1,5 @@
{pkgs, ...}: { { pkgs, ... }:
{
# Squirrel Input Method # Squirrel Input Method
home.file."Library/Rime" = { home.file."Library/Rime" = {
# my custom squirrel data (flypy input method) # my custom squirrel data (flypy input method)
+4 -2
View File
@@ -1,4 +1,5 @@
{lib, ...}: let { lib, ... }:
let
envExtra = '' envExtra = ''
export PATH="$PATH:/opt/homebrew/bin:/usr/local/bin" export PATH="$PATH:/opt/homebrew/bin:/usr/local/bin"
''; '';
@@ -20,7 +21,8 @@
true true
fi fi
''; '';
in { in
{
# Homebrew's default install location: # Homebrew's default install location:
# /opt/homebrew for Apple Silicon # /opt/homebrew for Apple Silicon
# /usr/local for macOS Intel # /usr/local for macOS Intel
+9
View File
@@ -0,0 +1,9 @@
{ lib, ... }:
let
fontSize = 15;
in
{
programs.alacritty.settings.font.size = lib.mkForce fontSize;
programs.ghostty.settings.font-size = lib.mkForce fontSize;
programs.kitty.font.size = lib.mkForce fontSize;
}
+30 -8
View File
@@ -1,10 +1,32 @@
# Home Manager's Linux Submodules # Home Manager's Linux Submodules
1. `base`: The base module that is suitable for any NixOS environment. This directory contains Linux-specific Home Manager configurations organized for different use
2. `desktop`: Configuration for desktop environments, such as Hyprland, I3, etc. cases.
3. `server.nix`: Configuration which is suitable for both servers and desktops. It import only
`base` as its submodule. ## Configuration Modules
1. used by all my nixos servers.
4. `desktop.nix`: the entrypoint of desktop's configuration, it import both `base` and `desktop` as ### Core Configurations
its submodules.
1. used by all my nixos desktops. - **core.nix**: Essential Linux-specific configurations and settings
- **base/**: Base Linux configurations including shell, tools, and utilities
- `shell.nix`: Shell configurations and aliases
- `tools.nix`: Essential command-line tools and utilities
### Desktop Configurations
- **gui/**: Desktop environment configurations
- **niri/**: Niri compositor configuration
- **base/**: Common desktop applications and services
- **editors/**: Text editor configurations for desktop environments
### Available Entry Points
- **core.nix**: Core Linux configuration, suitable for basic setups
- **tui.nix**: Terminal-based interface configuration for lightweight environments
- **gui.nix**: Graphical user interface configuration entry point, imports desktop environments
## Usage
- **Lightweight/Terminal**: Use `core.nix` or `tui.nix` for terminal-focused setups
- **Desktops**: Use `gui.nix` for full desktop environments with Noctalia Shell and Niri compositor
- **Custom**: Mix and match configurations as needed for your specific use case
+2 -1
View File
@@ -1,3 +1,4 @@
{mylib, ...}: { { mylib, ... }:
{
imports = mylib.scanPaths ./.; imports = mylib.scanPaths ./.;
} }
+4 -2
View File
@@ -2,11 +2,13 @@
config, config,
myvars, myvars,
... ...
}: let }:
let
d = config.xdg.dataHome; d = config.xdg.dataHome;
c = config.xdg.configHome; c = config.xdg.configHome;
cache = config.xdg.cacheHome; cache = config.xdg.cacheHome;
in rec { in
rec {
home.homeDirectory = "/home/${myvars.username}"; home.homeDirectory = "/home/${myvars.username}";
# environment variables that always set at login # environment variables that always set at login
+2 -1
View File
@@ -1,4 +1,5 @@
{pkgs, ...}: { { pkgs, ... }:
{
# Linux Only Packages, not available on Darwin # Linux Only Packages, not available on Darwin
home.packages = with pkgs; [ home.packages = with pkgs; [
# misc # misc
+43 -14
View File
@@ -1,17 +1,46 @@
# Desktop Related # Desktop Environment Configurations
3. `base`: all common configurations for all desktops. This directory contains desktop environment and window manager configurations managed by Home
4. `hyprland`: Hyprland's configuration. Manager.
## Why install I3/Hyprland in Home Manager instead of a NixOS Module? ## Available Configurations
1. I3 & Hyprland's configuration file is located in `~/.config`, which can be easily managed by Home ### Window Managers
Manager.
2. I have many user-specific systemd services, such gammastep, wallpaper-switcher, etc. Which can be - **niri**: Niri compositor configuration with custom settings, keybindings, spawn-at-startup rules,
easily managed by Home Manager, but if we add i3/hyprland in a NixOS Module, those user-level and window rules
services may failed to start automatically. With i3/hyprland in a Home Manager Module, we can
control their systemd service's dependent order more easily, so we can avoid issues like this. ### Base Desktop Environment
3. By install packages as less as possible in NixOS Module, we can:
1. Make the NixOS system more secure and stable. - **base**: Common desktop configurations shared across all environments, including:
2. Make this flake more portable to other non-NixOS systems, as home-manager can be installed on - **Noctalia Shell**: All-in-one Wayland desktop shell (replaces gammastep, swaylock, anyrun,
any Linux system. mako, waybar, wallpaper-switcher, wlogout, and other desktop tools)
- Creative tools and media applications
- Development tools
- Fcitx5 input method framework
- Games and gaming utilities
- GTK theme configurations
- Immutable file handling
- Note-taking applications
- Wayland applications
- XDG desktop configurations
### Editor Configurations
- **editors**: Text editor configurations and integrations
## Why install Desktop Environments in Home Manager instead of NixOS Module?
1. **Configuration Location**: Desktop environment configuration files are located in `~/.config`,
which can be easily managed by Home Manager.
2. **User-specific Services**: User-specific systemd services (noctalia-shell, fcitx5, hypridle,
etc.) can be easily managed by Home Manager. If desktop environments were configured via NixOS
Module, these user-level services might fail to start automatically. With Home Manager modules,
we can control systemd service dependency order more effectively.
3. **System Benefits**: By minimizing package installation through NixOS Module:
- Makes the NixOS system more secure and stable
- Increases portability to non-NixOS systems, as Home Manager can be installed on any Linux
system
- Allows for easier switching between different window managers without system-level changes
+84
View File
@@ -0,0 +1,84 @@
# Base Desktop Environment Configuration
This directory contains base configurations for Linux desktop environments, providing essential
components for a complete Wayland desktop experience.
## Overview
The configuration is organized into modular components that can be selectively enabled:
- **Desktop Shell**: Noctalia Shell for unified desktop environment
- **Applications**: Desktop tools, browsers, editors, media players, etc.
- **Development Tools**: IDEs and development utilities
- **System Integration**: Input methods, theming, XDG specifications, GPU settings
## Noctalia Shell
**Noctalia Shell** is an all-in-one Wayland desktop shell that replaces multiple separate tools with
a single, unified solution. It provides:
- **Unified Configuration**: All components configured in a single `settings.json` file
- **Consistent Experience**: Cohesive visual design and interaction patterns
- **Reduced Complexity**: No need to maintain multiple separate config files
### Component Replacement
Noctalia Shell consolidates functionality that previously required multiple tools:
| Traditional Component | Purpose | Noctalia Replacement |
| ---------------------- | -------------------- | ------------------------------ |
| **gammastep** | Blue light filter | `nightLight` configuration |
| **swaylock** | Screen locker | Built-in lock screen |
| **anyrun** | Application launcher | `appLauncher` |
| **mako** | Notification daemon | `notifications` |
| **waybar** | Status bar | `bar` (with widgets) |
| **wallpaper-switcher** | Wallpaper management | `wallpaper` (with transitions) |
| **wlogout** | Session menu | `sessionMenu` |
| **wl-clipboard** | Clipboard management | Built-in clipboard manager |
## Configuration Modules
### Desktop Shell
- **[`noctalia/default.nix`](./noctalia/default.nix)**: Package installation and systemd service
- **[`noctalia/settings.json`](./noctalia/settings.json)**: Main configuration with all settings
Key features: bar, control center, night light, wallpaper, session menu, system monitor,
audio/volume, brightness, screen recorder, calendar, color schemes, dock, notifications, OSD, and
more.
- **[`hypridle/`](./hypridle/)**: Idle management
### Desktop Environment
- **[`gtk.nix`](./gtk.nix)**: GTK theme configuration
- **[`xdg.nix`](./xdg.nix)**: XDG specifications
- **[`nvidia.nix`](./nvidia.nix)**: NVIDIA GPU settings
### Input & Localization
- **[`fcitx5/`](./fcitx5/)**: Fcitx5 input method with Mozc (Japanese input)
### Applications
- **[`desktop-tools.nix`](./desktop-tools.nix)**: Daily GUI apps (foliate, remmina, messaging)
- **[`browsers.nix`](./browsers.nix)**: Web browsers
- **[`editors.nix`](./editors.nix)**: Desktop text editors
- **[`media.nix`](./media.nix)**: Media players
- **[`gaming.nix`](./gaming.nix)**: Gaming applications
- **[`creative.nix`](./creative.nix)**: Creative software
- **[`note-taking.nix`](./note-taking.nix)**: Note-taking apps
### Development
- **[`dev-tools.nix`](./dev-tools.nix)**: Development tools and IDEs
### System Utilities
- **[`misc.nix`](./misc.nix)**: Wayland tools (screenshots, screen recording, color picker, audio)
- **[`immutable-file.nix`](./immutable-file.nix)**: Immutable file handling
## Related Documentation
- Noctalia Shell: https://docs.noctalia.dev/docs
- Parent: [`../README.md`](../README.md)
+15
View File
@@ -0,0 +1,15 @@
{
pkgs,
...
}:
{
home.packages = with pkgs; [
nixpaks.firefox
];
# source code: https://github.com/nix-community/home-manager/blob/master/modules/programs/chromium.nix
programs.google-chrome = {
enable = true;
package = if pkgs.stdenv.isAarch64 then pkgs.chromium else pkgs.google-chrome;
};
}
+37 -41
View File
@@ -1,13 +1,12 @@
{ {
lib, lib,
pkgs, pkgs,
pkgs-unstable,
# pkgs-stable,
nur-ryan4yin,
blender-bin, blender-bin,
... ...
}: { }:
home.packages = with pkgs; {
home.packages =
with pkgs;
[ [
# creative # creative
# gimp # image editing, I prefer using figma in browser instead of this one # gimp # image editing, I prefer using figma in browser instead of this one
@@ -21,55 +20,52 @@
# aseprite # Animated sprite editor & pixel art tool # aseprite # Animated sprite editor & pixel art tool
# this app consumes a lot of storage, so do not install it currently # this app consumes a lot of storage, so do not install it currently
# kicad # 3d printing, eletrical engineering # kicad # 3d printing, electrical engineering
] ]
++ (lib.optionals pkgs.stdenv.isx86_64 [ ++ (lib.optionals pkgs.stdenv.isx86_64 [
# https://github.com/edolstra/nix-warez/blob/master/blender/flake.nix # https://github.com/edolstra/nix-warez/blob/master/blender/flake.nix
blender-bin.packages.${pkgs.system}.blender_4_2 # 3d modeling blender-bin.packages.${pkgs.stdenv.hostPlatform.system}.blender_4_2 # 3d modeling
ldtk # A modern, versatile 2D level editor ldtk # A modern, versatile 2D level editor
# fpga # fpga
python313Packages.apycula # gowin fpga # python313Packages.apycula # gowin fpga
yosys # fpga synthesis # yosys # fpga synthesis
nextpnr # fpga place and route # nextpnr # fpga place and route
openfpgaloader # fpga programming # openfpgaloader # fpga programming
# nur-ryan4yin.packages.${pkgs.system}.gowin-eda-edu-ide # app: `gowin-env` => `gw_ide` / `gw_pack` / ... # nur-ryan4yin.packages.${pkgs.stdenv.hostPlatform.system}.gowin-eda-edu-ide # app: `gowin-env` => `gw_ide` / `gw_pack` / ...
]); ]);
programs = { programs = {
# live streaming # live streaming
obs-studio = { obs-studio = {
enable = pkgs.stdenv.isx86_64; enable = pkgs.stdenv.isx86_64;
plugins = with pkgs.obs-studio-plugins; plugins = with pkgs.obs-studio-plugins; [
[ # screen capture
# screen capture wlrobs
wlrobs # obs-ndi
# obs-ndi # obs-nvfbc
# obs-nvfbc obs-teleport
obs-teleport # obs-hyperion
# obs-hyperion droidcam-obs
droidcam-obs obs-vkcapture
obs-vkcapture obs-gstreamer
obs-gstreamer input-overlay
input-overlay obs-multi-rtmp
obs-multi-rtmp obs-source-clone
obs-source-clone obs-shaderfilter
obs-shaderfilter obs-source-record
obs-source-record obs-livesplit-one
obs-livesplit-one looking-glass-obs
looking-glass-obs obs-vintage-filter
obs-vintage-filter obs-command-source
obs-command-source obs-move-transition
obs-move-transition obs-backgroundremoval
obs-backgroundremoval # advanced-scene-switcher
# advanced-scene-switcher obs-pipewire-audio-capture
obs-pipewire-audio-capture obs-vaapi
] obs-3d-effect
++ (lib.optionals pkgs.stdenv.isx86_64 [ ];
obs-vaapi
obs-3d-effect
]);
}; };
}; };
} }
+2 -1
View File
@@ -1,3 +1,4 @@
{mylib, ...}: { { mylib, ... }:
{
imports = mylib.scanPaths ./.; imports = mylib.scanPaths ./.;
} }
+38
View File
@@ -0,0 +1,38 @@
{ mylib, pkgs, ... }:
{
# wayland related
home.sessionVariables = {
"NIXOS_OZONE_WL" = "1"; # for any ozone-based browser & electron apps to run on wayland
"MOZ_ENABLE_WAYLAND" = "1"; # for firefox to run on wayland
"MOZ_WEBRENDER" = "1";
# enable native Wayland support for most Electron apps
"ELECTRON_OZONE_PLATFORM_HINT" = "auto";
# misc
"_JAVA_AWT_WM_NONREPARENTING" = "1";
"QT_WAYLAND_DISABLE_WINDOWDECORATION" = "1";
"QT_QPA_PLATFORM" = "wayland";
"SDL_VIDEODRIVER" = "wayland";
"GDK_BACKEND" = "wayland";
"XDG_SESSION_TYPE" = "wayland";
};
home.packages = with pkgs; [
swaybg # the wallpaper
wl-clipboard # copying and pasting
hyprpicker # color picker
brightnessctl
# audio
alsa-utils # provides amixer/alsamixer/...
networkmanagerapplet # provide GUI app: nm-connection-editor
# screenshot/screencast
flameshot
hyprshot # screen shot
wf-recorder # screen recording
];
# screen locker
programs.swaylock.enable = true;
# Logout Menu
programs.wlogout.enable = true;
}
+2 -1
View File
@@ -1,4 +1,5 @@
{pkgs, ...}: { { pkgs, ... }:
{
home.packages = with pkgs; [ home.packages = with pkgs; [
android-tools android-tools
]; ];
+60
View File
@@ -0,0 +1,60 @@
{
lib,
pkgs,
pkgs-master,
...
}:
let
vscodeCliArgs = [
# https://code.visualstudio.com/docs/configure/settings-sync#_recommended-configure-the-keyring-to-use-with-vs-code
# For use with any package that implements the Secret Service API
# (for example gnome-keyring, kwallet5, KeepassXC)
"--password-store=gnome-libsecret"
];
code-cursor = pkgs-master.code-cursor;
# (pkgs-master.code-cursor.override {
# commandLineArgs = lib.concatStringsSep " " vscodeCliArgs;
# }).overrideAttrs
# (oldAttrs: rec {
# pname = "cursor";
# version = "2.1.36";
# src =
# with pkgs-master;
# appimageTools.extract {
# inherit pname version;
# src =
# let
# sources = {
# x86_64-linux = fetchurl {
# # curl -s https://api2.cursor.sh/updates/api/download/stable/linux-x64/cursor | jq
# url = "https://downloads.cursor.com/production/9cd7c8b6cebcbccc1242df211dee45a4b6fe15e4/linux/x64/Cursor-2.1.36-x86_64.AppImage";
# hash = "sha256-aaprRB2BAaUCHj7m5aGacCBHisjN2pVZ+Ca3u1ifxBA=";
# };
# aarch64-linux = fetchurl {
# # curl -s https://api2.cursor.sh/updates/api/download/stable/linux-arm64/cursor | jq
# url = "https://downloads.cursor.com/production/9cd7c8b6cebcbccc1242df211dee45a4b6fe15e4/linux/arm64/Cursor-2.1.36-aarch64.AppImage";
# hash = "sha256-S2vFYBI6m0zjBJEDbk7gc6/zFiKWyhM73OUm1xsNx6Q=";
# };
# };
# in
# sources.${stdenv.hostPlatform.system};
# };
# sourceRoot = "${pname}-${version}-extracted/usr/share/cursor";
# });
in
{
home.packages = [
pkgs.zed-editor
pkgs-master.code-cursor
pkgs-master.antigravity-fhs
];
programs.vscode = {
enable = true;
package = pkgs-master.vscode.override {
commandLineArgs = vscodeCliArgs;
};
};
}
-48
View File
@@ -1,48 +0,0 @@
{
pkgs,
lib,
...
}: {
# Adjust the color temperature(& brightness) of your screen according to
# your surroundings. This may help your eyes hurt less if you are
# working in front of the screen at night.
#
# works fine with both x11 & wayland(hyprland)
#
# https://gitlab.com/chinstrap/gammastep
services.gammastep = {
enable = true;
# add a gammastep icon in the system tray
# has problem with wayland, so disable it
tray = false;
temperature = {
day = 6000;
night = 4500;
};
# https://gitlab.com/chinstrap/gammastep/-/blob/master/gammastep.conf.sample?ref_type=heads
settings = {
general = {
fade = "1"; # gradually apply the new screen temperature/brightness over a couple of seconds.
# it is a fake brightness adjustment obtained by manipulating the gamma ramps,
# which means that it does not reduce the backlight of the screen.
# Preferably only use it if your normal backlight adjustment is too coarse-grained.
#
# brightness-day = "1.3";
# brightness-night = "1";
location-provider = "manual";
# by default, Redshift will use the current elevation of the sun
# to determine whether it is daytime, night or in transition (dawn/dusk).
# dawn-time = "6:00-8:45";
# dusk-time = "18:35-20:15";
};
manual = {
# China, Shenzhen
lat = "22.5"; # latitude
lon = "114.1"; # longitude
};
};
};
}
+8
View File
@@ -0,0 +1,8 @@
# fcitx5 - IME
## Available Configurations
- `profile` → Symlink will be created at: `~/.config/fcitx5/profile`
- `config1.db` (Mozc config) → Symlink will be created at: `~/.config/mozc/config1.db`
- Main changes from the defaults: use half-width for all alphabets, numbers, and punctuation.
- https://github.com/google/mozc/blob/2.30.5544.102/docs/configurations.md
+14 -7
View File
@@ -1,4 +1,5 @@
{pkgs, ...}: { { config, pkgs, ... }:
{
xdg.configFile = { xdg.configFile = {
"fcitx5/profile" = { "fcitx5/profile" = {
source = ./profile; source = ./profile;
@@ -6,6 +7,8 @@
# so we need to force replace it in every rebuild to avoid file conflict. # so we need to force replace it in every rebuild to avoid file conflict.
force = true; force = true;
}; };
"mozc/config1.db".source =
config.lib.file.mkOutOfStoreSymlink "${config.home.homeDirectory}/nix-config/home/linux/gui/base/fcitx5/mozc-config1.db";
}; };
i18n.inputMethod = { i18n.inputMethod = {
@@ -13,13 +16,17 @@
type = "fcitx5"; type = "fcitx5";
fcitx5.waylandFrontend = true; fcitx5.waylandFrontend = true;
fcitx5.addons = with pkgs; [ fcitx5.addons = with pkgs; [
# for flypy chinese input method qt6Packages.fcitx5-configtool # GUI for fcitx5
fcitx5-rime
# needed enable rime using configtool after installed
fcitx5-configtool
fcitx5-chinese-addons
# fcitx5-mozc # japanese input method
fcitx5-gtk # gtk im module fcitx5-gtk # gtk im module
# Chinese
fcitx5-rime # for flypy chinese input method
# fcitx5-chinese-addons # we use rime instead
# Japanese
# ctrl-i / F7 - convert to takakana
# ctrl-u / F6 - convert to hiragana
fcitx5-mozc-ut # Moze with UT dictionary
]; ];
}; };
} }
Binary file not shown.
+35 -2
View File
@@ -1,10 +1,10 @@
[Groups/0] [Groups/0]
# Group Name # Group Name
Name=Default Name=Intl
# Layout # Layout
Default Layout=us Default Layout=us
# Default Input Method # Default Input Method
DefaultIM=rime DefaultIM=keyboard-us-altgr-intl
[Groups/0/Items/0] [Groups/0/Items/0]
# Name # Name
@@ -14,10 +14,43 @@ Layout=
[Groups/0/Items/1] [Groups/0/Items/1]
# Name # Name
Name=keyboard-us-intl
# Layout
Layout=
[Groups/0/Items/2]
# Name
Name=keyboard-us-altgr-intl
# Layout
Layout=
[Groups/1]
# Group Name
Name=Default
# Layout
Default Layout=us
# Default Input Method
DefaultIM=rime
[Groups/1/Items/0]
# Name
Name=keyboard-us
# Layout
Layout=
[Groups/1/Items/1]
# Name
Name=rime Name=rime
# Layout # Layout
Layout= Layout=
[Groups/1/Items/2]
# Name
Name=mozc
# Layout
Layout=
[GroupOrder] [GroupOrder]
0=Default 0=Default
1=Intl
-12
View File
@@ -1,12 +0,0 @@
{
pkgs,
nix-gaming,
...
}: {
home.packages = with pkgs; [
# nix-gaming.packages.${pkgs.system}.osu-laser-bin
gamescope # SteamOS session compositing window manager
prismlauncher # A free, open source launcher for Minecraft
winetricks # A script to install DLLs needed to work around problems in Wine
];
}

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