Compare commits

...

86 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
171 changed files with 2826 additions and 3839 deletions
+6 -9
View File
@@ -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}}
############################################################################ ############################################################################
# #
@@ -116,14 +121,6 @@ local mode="default":
use {{utils_nu}} *; use {{utils_nu}} *;
nixos-switch (hostname) {{mode}} nixos-switch (hostname) {{mode}}
# Deploy the hyprland nixosConfiguration by hostname match
[linux]
[group('desktop')]
hypr mode="default":
#!/usr/bin/env nu
use {{utils_nu}} *;
nixos-switch $"(hostname)-hyprland" {{mode}}
# Deploy the niri nixosConfiguration by hostname match # Deploy the niri nixosConfiguration by hostname match
[linux] [linux]
[group('desktop')] [group('desktop')]
+16 -35
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
@@ -55,12 +55,10 @@ 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] / [Niri][Niri] | | **Window Manager** | [Niri][Niri] |
| **Terminal Emulator** | [Zellij][Zellij] + [foot][foot]/[Kitty][Kitty]/[Alacritty][Alacritty]/[Ghostty][Ghostty] | | **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] |
| **Notification Daemon** | [Mako][Mako] |
| **Display Manager** | [tuigreet][tuigreet] | | **Display Manager** | [tuigreet][tuigreet] |
| **Color Scheme** | [catppuccin-nix][catppuccin-nix] | | **Color Scheme** | [catppuccin-nix][catppuccin-nix] |
| **network management tool** | [NetworkManager][NetworkManager] | | **network management tool** | [NetworkManager][NetworkManager] |
@@ -72,18 +70,20 @@ You don't have to go through the pain I've experienced again! Check out my
| **Text Editor** | [Neovim][Neovim] | | **Text Editor** | [Neovim][Neovim] |
| **Fonts** | [Nerd fonts][Nerd fonts] | | **Fonts** | [Nerd fonts][Nerd fonts] |
| **Image Viewer** | [imv][imv] | | **Image Viewer** | [imv][imv] |
| **Screenshot Software** | [hyprshot][hyprshot] | | **Screenshot Software** | Niri's builtin function |
| **Screen Recording** | [OBS][OBS] | | **Screen Recording** | [OBS][OBS] |
| **Filesystem & Encryption** | tmpfs as `/`, [Btrfs][Btrfs] subvolumes on a [LUKS][LUKS] encrypted partition for persistent, unlock via passphrase | | **Filesystem & Encryption** | tmpfs as `/`, [Btrfs][Btrfs] subvolumes on a [LUKS][LUKS] encrypted partition for persistent, unlock via passphrase |
| **Secure Boot** | [lanzaboote][lanzaboote] | | **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
@@ -111,17 +111,13 @@ For NixOS:
```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 hyprland nixosConfiguration by hostname match
just hypr
# Deploy the niri nixosConfiguration by hostname match # Deploy the niri nixosConfiguration by hostname match
just niri just niri
# or we can deploy with details # or we can deploy with details
just hypr debug just niri debug
``` ```
For macOS: For macOS:
@@ -157,26 +153,17 @@ 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 [Niri]: https://github.com/YaLTeR/niri
[Kitty]: https://github.com/kovidgoyal/kitty [Kitty]: https://github.com/kovidgoyal/kitty
[foot]: https://codeberg.org/dnkl/foot [foot]: https://codeberg.org/dnkl/foot
@@ -184,11 +171,6 @@ Other dotfiles that inspired me:
[Ghostty]: https://github.com/ghostty-org/ghostty [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 [rime]: https://wiki.archlinux.org/title/Rime
[flypy]: https://flypy.cc/ [flypy]: https://flypy.cc/
@@ -197,10 +179,8 @@ Other dotfiles that inspired me:
[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-nix]: https://github.com/catppuccin/nix [catppuccin-nix]: https://github.com/catppuccin/nix
[NetworkManager]: https://wiki.gnome.org/Projects/NetworkManager [NetworkManager]: https://wiki.gnome.org/Projects/NetworkManager
@@ -212,3 +192,4 @@ Other dotfiles that inspired me:
[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

Generated
+318 -673
View File
File diff suppressed because it is too large Load Diff
+24 -27
View File
@@ -34,17 +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"; 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";
@@ -54,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,
@@ -62,8 +65,6 @@
inputs.nixpkgs.follows = "nixpkgs"; inputs.nixpkgs.follows = "nixpkgs";
}; };
determinate.url = "https://flakehub.com/f/DeterminateSystems/determinate/*";
# https://github.com/catppuccin/nix # https://github.com/catppuccin/nix
catppuccin = { catppuccin = {
url = "github:catppuccin/nix"; url = "github:catppuccin/nix";
@@ -71,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";
}; };
@@ -79,15 +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:/anyrun-org/anyrun/v25.9.0";
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";
@@ -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,12 +130,17 @@
}; };
nixos-apple-silicon = { nixos-apple-silicon = {
# 2025-08-25 asahi-6.15.10-3 # asahi-6.17.7-2
url = "github:nix-community/nixos-apple-silicon/b99bf9bf7445416fe55da09034fc4a6cd733805c"; url = "github:nix-community/nixos-apple-silicon";
inputs.nixpkgs.follows = "nixpkgs"; inputs.nixpkgs.follows = "nixpkgs";
}; };
niri.url = "github:sodiboo/niri-flake"; 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 --------------------- # -------------- Gaming ---------------------
@@ -152,14 +149,14 @@
inputs.nixpkgs.follows = "nixpkgs"; inputs.nixpkgs.follows = "nixpkgs";
}; };
aagl = { aagl = {
url = "github:ezKEa/aagl-gtk-on-nix"; url = "github:ezKEa/aagl-gtk-on-nix/release-25.11";
inputs.nixpkgs.follows = "nixpkgs"; # 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;
}; };
+8 -6
View File
@@ -16,17 +16,19 @@ let
# 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=";
}; };
}; };
}; };
+2 -3
View File
@@ -1,6 +1,6 @@
{ {
pkgs, pkgs,
pkgs-patched, pkgs-master,
nixpak, nixpak,
... ...
}: }:
@@ -22,8 +22,7 @@ in
nixpkgs.overlays = [ nixpkgs.overlays = [
(_: super: { (_: super: {
nixpaks = { nixpaks = {
qq = wrapper pkgs-patched ./qq.nix; qq = wrapper pkgs-master ./qq.nix;
wechat = wrapper super ./wechat.nix;
telegram-desktop = wrapper super ./telegram-desktop.nix; telegram-desktop = wrapper super ./telegram-desktop.nix;
firefox = wrapper super ./firefox.nix; firefox = wrapper super ./firefox.nix;
}; };
+3 -16
View File
@@ -5,7 +5,7 @@
# - 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,
firefox-wayland, firefox,
mkNixPak, mkNixPak,
buildEnv, buildEnv,
makeDesktopItem, makeDesktopItem,
@@ -23,7 +23,7 @@ let
}: }:
{ {
app = { app = {
package = firefox-wayland; package = firefox;
binPath = "bin/firefox"; binPath = "bin/firefox";
}; };
flatpak.appId = appId; flatpak.appId = appId;
@@ -34,20 +34,6 @@ let
./modules/common.nix ./modules/common.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.mozilla.firefox.*" = "own"; # firefox
"org.mozilla.firefox_beta.*" = "own"; # firefox beta
"org.mpris.MediaPlayer2.firefox.*" = "own";
"org.gnome.Shell.Screencast" = "talk";
# System tray icon
"org.freedesktop.Notifications" = "talk";
"org.kde.StatusNotifierWatcher" = "talk";
};
bubblewrap = { bubblewrap = {
# To trace all the home files Firefox accesses, you can use the following nushell command: # To trace all the home files Firefox accesses, you can use the following nushell command:
# just trace-access firefox # just trace-access firefox
@@ -61,6 +47,7 @@ let
sloth.xdgDownloadDir sloth.xdgDownloadDir
sloth.xdgMusicDir sloth.xdgMusicDir
sloth.xdgVideosDir sloth.xdgVideosDir
sloth.xdgPicturesDir
]; ];
bind.ro = [ bind.ro = [
"/sys/bus/pci" "/sys/bus/pci"
+63 -65
View File
@@ -1,32 +1,35 @@
# 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, lib,
pkgs,
sloth, sloth,
config, config,
... ...
}: }:
let
inherit (config.flatpak) appId;
in
{ {
config = { config = {
dbus = # list all dbus services:
let # ls -al /run/current-system/sw/share/dbus-1/services/
inherit (config.flatpak) appId; # ls -al /etc/profiles/per-user/ryan/share/dbus-1/services/
in 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 = { policies = {
"${appId}" = "own"; "${appId}" = "own";
"${appId}.*" = "own"; "${appId}.*" = "own";
"org.freedesktop.DBus" = "talk"; "org.freedesktop.DBus" = "talk";
"org.gtk.vfs.*" = "talk";
"org.gtk.vfs" = "talk";
"ca.desrt.dconf" = "talk"; "ca.desrt.dconf" = "talk";
"org.freedesktop.portal.*" = "talk";
"org.a11y.Bus" = "talk";
"org.freedesktop.appearance" = "talk"; "org.freedesktop.appearance" = "talk";
"org.freedesktop.appearance.*" = "talk"; "org.freedesktop.appearance.*" = "talk";
} }
// (builtins.listToAttrs ( // (builtins.listToAttrs (
map (id: lib.nameValuePair "org.kde.StatusNotifierItem-${toString id}-1" "own") ( map (id: lib.nameValuePair "org.kde.StatusNotifierItem-${toString id}-1" "own") (
lib.lists.range 2 11 lib.lists.range 2 29
) )
)) ))
// { // {
@@ -36,19 +39,19 @@
"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";
"org.mpris.MediaPlayer2.${lib.lists.last (lib.strings.splitString "." appId)}.*" = "own"; "org.mpris.MediaPlayer2.${lib.lists.last (lib.strings.splitString "." appId)}.*" = "own";
# Conditionally allows a custom, friendlier MPRIS name if 'mprisName' is set.
# "org.mpris.MediaPlayer2.${mprisName}" = "own";
# "org.mpris.MediaPlayer2.${mprisName}.*" = "own";
# --- General Desktop Integration --- # --- General Desktop Integration ---
"com.canonical.AppMenu.Registrar" = "talk"; # For Ubuntu AppMenu "com.canonical.AppMenu.Registrar" = "talk"; # For Ubuntu AppMenu
"org.freedesktop.FileManager1" = "talk"; "org.freedesktop.FileManager1" = "talk";
"org.freedesktop.Notifications" = "talk"; "org.freedesktop.Notifications" = "talk";
"org.kde.StatusNotifierWatcher" = "talk";
"org.gnome.Shell.Screencast" = "talk";
# --- Accessibility (a11y) --- # --- Accessibility (a11y) 无障碍服务 ---
"org.a11y.Bus" = "see"; "org.a11y.Bus" = "see";
# --- Portal Access --- # --- Portal Access ---
# "org.freedesktop.portal.*" = "talk";
"org.freedesktop.portal.Documents" = "talk"; "org.freedesktop.portal.Documents" = "talk";
"org.freedesktop.portal.FileTransfer" = "talk"; "org.freedesktop.portal.FileTransfer" = "talk";
"org.freedesktop.portal.FileTransfer.*" = "talk"; "org.freedesktop.portal.FileTransfer.*" = "talk";
@@ -65,10 +68,9 @@
"org.freedesktop.portal.IBus" = "talk"; "org.freedesktop.portal.IBus" = "talk";
"org.freedesktop.portal.IBus.*" = "talk"; "org.freedesktop.portal.IBus.*" = "talk";
}; };
rules = { # '--call' rules permit specific method calls on D-Bus interfaces.
# 'call' rules permit specific method calls on D-Bus interfaces. rules.call = {
call = { # --- Accessibility (a11y) 无障碍服务 ---
# --- Accessibility ---
"org.a11y.Bus" = [ "org.a11y.Bus" = [
"org.a11y.Bus.GetAddress@/org/a11y/bus" "org.a11y.Bus.GetAddress@/org/a11y/bus"
"org.freedesktop.DBus.Properties.Get@/org/a11y/bus" "org.freedesktop.DBus.Properties.Get@/org/a11y/bus"
@@ -94,13 +96,37 @@
# --- Main Desktop Portal Interface --- # --- Main Desktop Portal Interface ---
# A comprehensive list of permissions for interacting with the desktop environment. # A comprehensive list of permissions for interacting with the desktop environment.
"org.freedesktop.portal.Desktop" = [ "org.freedesktop.portal.Desktop" = [
# Device Access # 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.Camera.*" "org.freedesktop.portal.Camera.*"
"org.freedesktop.portal.Usb" "org.freedesktop.portal.Usb"
"org.freedesktop.portal.Usb.*" "org.freedesktop.portal.Usb.*"
# File Chooser & Documents # Remote Desktop
"org.freedesktop.portal.RemoteDesktop"
"org.freedesktop.portal.RemoteDesktop.*"
# File Operations
"org.freedesktop.portal.Documents" "org.freedesktop.portal.Documents"
"org.freedesktop.portal.Documents.*" "org.freedesktop.portal.Documents.*"
"org.freedesktop.portal.FileChooser" "org.freedesktop.portal.FileChooser"
@@ -108,12 +134,6 @@
"org.freedesktop.portal.FileTransfer" "org.freedesktop.portal.FileTransfer"
"org.freedesktop.portal.FileTransfer.*" "org.freedesktop.portal.FileTransfer.*"
# Input Methods
"org.freedesktop.portal.Fcitx"
"org.freedesktop.portal.Fcitx.*"
"org.freedesktop.portal.IBus"
"org.freedesktop.portal.IBus.*"
# Notifications & Printing # Notifications & Printing
"org.freedesktop.portal.Notification" "org.freedesktop.portal.Notification"
"org.freedesktop.portal.Notification.*" "org.freedesktop.portal.Notification.*"
@@ -121,63 +141,41 @@
"org.freedesktop.portal.Print.*" "org.freedesktop.portal.Print.*"
# Open/Launch Handlers # Open/Launch Handlers
"org.freedesktop.portal.Email.ComposeEmail"
"org.freedesktop.portal.OpenURI" "org.freedesktop.portal.OpenURI"
"org.freedesktop.portal.OpenURI.*" "org.freedesktop.portal.OpenURI.*"
"org.freedesktop.portal.Email.ComposeEmail"
# Properties & Session Management # Input Methods
"org.freedesktop.DBus.Properties.GetAll" "org.freedesktop.portal.Fcitx"
"org.freedesktop.DBus.Properties.Get@/org/freedesktop/portal/desktop" "org.freedesktop.portal.Fcitx.*"
"org.freedesktop.portal.Session.Close" "org.freedesktop.portal.IBus"
"org.freedesktop.portal.IBus.*"
# Screen Capture & Sharing
"org.freedesktop.portal.RemoteDesktop"
"org.freedesktop.portal.RemoteDesktop.*"
"org.freedesktop.portal.ScreenCast"
"org.freedesktop.portal.ScreenCast.*"
"org.freedesktop.portal.Screenshot"
"org.freedesktop.portal.Screenshot.Screenshot"
# Secrets (Keyring) # Secrets (Keyring)
"org.freedesktop.portal.Secret" "org.freedesktop.portal.Secret"
"org.freedesktop.portal.Secret.RetrieveSecret" "org.freedesktop.portal.Secret.RetrieveSecret"
# Settings # Get/Update GlobalShortcuts
"org.freedesktop.portal.Settings.Read" # "org.freedesktop.portal.GlobalShortcuts"
"org.freedesktop.portal.Settings.ReadAll" # "org.freedesktop.portal.GlobalShortcuts.*"
# System Information # -- get the user's location
"org.freedesktop.portal.Account.GetUserInformation" # "org.freedesktop.portal.Location"
"org.freedesktop.portal.NetworkMonitor" # "org.freedesktop.portal.Location.*"
"org.freedesktop.portal.NetworkMonitor.*"
"org.freedesktop.portal.ProxyResolver.Lookup"
"org.freedesktop.portal.ProxyResolver.Lookup.*"
# Generic Request Fallback # -- inhibit the user session from ending, suspending, idling or getting switched away.
"org.freedesktop.portal.Request"
# --- Conditional Portal Rules ---
# These would be enabled based on config flags in a real implementation.
# Enabled if 'allowGlobalShortcuts = true'
"org.freedesktop.portal.GlobalShortcuts"
"org.freedesktop.portal.GlobalShortcuts.*"
# Enabled if 'allowInhibit = true'
"org.freedesktop.portal.Inhibit" "org.freedesktop.portal.Inhibit"
"org.freedesktop.portal.Inhibit.*" "org.freedesktop.portal.Inhibit.*"
# Enabled if 'XDG_CURRENT_DESKTOP = "GNOME"' # Generic Request Fallback
"org.freedesktop.portal.Location" "org.freedesktop.portal.Request"
"org.freedesktop.portal.Location.*"
]; ];
}; };
# 'broadcast' rules permit receiving signals from D-Bus names. # 'broadcast' rules permit receiving signals from D-Bus names.
broadcast = { rules.broadcast = {
"org.freedesktop.portal.*" = [ "@/org/freedesktop/portal/*" ]; "org.freedesktop.portal.*" = [ "@/org/freedesktop/portal/*" ];
}; };
};
args = [ args = [
"--filter" "--filter"
"--sloppy-names" "--sloppy-names"
+1 -13
View File
@@ -31,19 +31,6 @@ let
./modules/common.nix ./modules/common.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 = { bubblewrap = {
# To trace all the home files QQ accesses, you can use the following nushell command: # To trace all the home files QQ accesses, you can use the following nushell command:
# just trace-access qq # just trace-access qq
@@ -53,6 +40,7 @@ let
sloth.xdgDownloadDir sloth.xdgDownloadDir
sloth.xdgMusicDir sloth.xdgMusicDir
sloth.xdgVideosDir sloth.xdgVideosDir
sloth.xdgPicturesDir
]; ];
sockets = { sockets = {
x11 = false; x11 = false;
+1 -4
View File
@@ -24,10 +24,6 @@ let
dbus = { dbus = {
enable = true; enable = true;
policies = { policies = {
"org.gnome.Mutter.IdleMonitor" = "talk";
"org.freedesktop.Notifications" = "talk";
"org.kde.StatusNotifierWatcher" = "talk";
"com.canonical.AppMenu.Registrar" = "talk";
"com.canonical.indicator.application" = "talk"; "com.canonical.indicator.application" = "talk";
"org.ayatana.indicator.application" = "talk"; "org.ayatana.indicator.application" = "talk";
"org.sigxcpu.Feedback" = "talk"; "org.sigxcpu.Feedback" = "talk";
@@ -40,6 +36,7 @@ let
sloth.xdgDownloadDir sloth.xdgDownloadDir
sloth.xdgMusicDir sloth.xdgMusicDir
sloth.xdgVideosDir sloth.xdgVideosDir
sloth.xdgPicturesDir
]; ];
sockets = { sockets = {
x11 = false; x11 = false;
+1 -2
View File
@@ -22,7 +22,6 @@ home/
├── linux/ # Linux-specific home manager configurations ├── linux/ # Linux-specific home manager configurations
│ ├── base/ # Linux base configurations │ ├── base/ # Linux base configurations
│ ├── gui/ # Linux GUI applications │ ├── gui/ # Linux GUI applications
│ │ ├── hyprland/ # Hyprland window manager
│ │ ├── niri/ # Niri window manager │ │ ├── niri/ # Niri window manager
│ │ └── ... │ │ └── ...
│ ├── editors/ # Linux-specific editors │ ├── editors/ # Linux-specific editors
@@ -40,7 +39,7 @@ home/
- Shared configurations for editors, shells, and essential tools - Shared configurations for editors, shells, and essential tools
2. **linux**: Linux-specific configuration 2. **linux**: Linux-specific configuration
- Desktop environments (Hyprland, Niri) - Desktop environments (Noctalia Shell, Niri compositor)
- Linux-specific GUI applications - Linux-specific GUI applications
- System integration tools - System integration tools
+8 -31
View File
@@ -1,34 +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
@@ -42,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
+1 -3
View File
@@ -1,6 +1,4 @@
{ pkgs, ... }: { pkgs, ... }:
{ {
programs.helix = { programs.helix.enable = true;
enable = true;
};
} }
+31 -29
View File
@@ -40,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;
@@ -63,33 +72,12 @@
"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";
# signByDefault = true;
# };
# A syntax-highlighting pager for git, diff, grep, and blame output
delta = {
enable = true;
options = {
diff-so-fancy = true;
line-numbers = true;
true-color = "always";
# features => named groups of settings, used to keep related settings organized
# features = "";
};
};
aliases = {
# common aliases # common aliases
br = "branch"; br = "branch";
co = "checkout"; co = "checkout";
@@ -117,10 +105,24 @@
foreach = "submodule foreach"; foreach = "submodule foreach";
}; };
}; };
};
# A syntax-highlighting pager for git, diff, grep, and blame output
programs.delta = {
enable = true;
enableGitIntegration = true;
options = {
diff-so-fancy = true;
line-numbers = true;
true-color = "always";
# features => named groups of settings, used to keep related settings organized
# features = "";
};
};
# Git terminal UI (written in go). # Git terminal UI (written in go).
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;
} }
-1
View File
@@ -27,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;
}; };
+1 -1
View File
@@ -8,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;
}; };
+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 -3
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,7 +50,7 @@
bold_italic = { bold_italic = {
family = "Maple Mono NF CN"; family = "Maple Mono NF CN";
}; };
size = if pkgs.stdenv.isDarwin then 14 else 13; size = 13;
}; };
terminal = { terminal = {
# Spawn a nushell in login mode via `bash` # Spawn a nushell in login mode via `bash`
+2 -1
View File
@@ -17,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'";
+1 -1
View File
@@ -16,7 +16,7 @@
pkgs.hello # pkgs.ghostty is currently broken on darwin pkgs.hello # pkgs.ghostty is currently broken on darwin
else else
pkgs.ghostty; # the stable version pkgs.ghostty; # the stable version
# package = ghostty.packages.${pkgs.system}.default; # the latest version # package = ghostty.packages.${pkgs.stdenv.hostPlatform.system}.default; # the latest version
enableBashIntegration = false; enableBashIntegration = false;
installBatSyntax = false; installBatSyntax = false;
# installVimSyntax = true; # installVimSyntax = true;
+1 -1
View File
@@ -19,7 +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 = if pkgs.stdenv.isDarwin then 14 else 13; size = 13;
}; };
# consistent with other terminal emulators # consistent with other terminal emulators
+2 -2
View File
@@ -1,6 +1,6 @@
{ {
pkgs, pkgs,
pkgs-stable, pkgs-2505,
nur-ryan4yin, nur-ryan4yin,
... ...
}: }:
@@ -25,7 +25,7 @@
istioctl istioctl
clusterctl # for kubernetes cluster-api clusterctl # for kubernetes cluster-api
kubevirt # virtctl kubevirt # virtctl
pkgs-stable.kubernetes-helm pkgs-2505.kubernetes-helm
fluxcd fluxcd
argocd argocd
-1
View File
@@ -1,6 +1,5 @@
{ {
pkgs, pkgs,
pkgs-unstable,
... ...
}: }:
{ {
+23 -2
View File
@@ -1,8 +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")
+1 -2
View File
@@ -2,7 +2,6 @@
config, config,
lib, lib,
pkgs, pkgs,
pkgs-unstable,
... ...
}: }:
############################################################################### ###############################################################################
@@ -29,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;
+8 -8
View File
@@ -1,6 +1,6 @@
{ {
pkgs, pkgs,
pkgs-unstable, pkgs-master,
... ...
}: }:
{ {
@@ -36,7 +36,7 @@
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
@@ -90,11 +90,11 @@
#-- rust #-- rust
# we'd better use the rust-overlays for rust development # we'd better use the rust-overlays for rust development
pkgs-unstable.rustc pkgs-master.rustc
pkgs-unstable.rust-analyzer pkgs-master.rust-analyzer
pkgs-unstable.cargo # rust package manager pkgs-master.cargo # rust package manager
pkgs-unstable.rustfmt pkgs-master.rustfmt
pkgs-unstable.clippy # rust linter pkgs-master.clippy # rust linter
#-- golang #-- golang
go go
@@ -141,7 +141,7 @@
# fnlfmt # fennel # fnlfmt # fennel
# ( # (
# if pkgs.stdenv.isLinux && pkgs.stdenv.isx86 # if pkgs.stdenv.isLinux && pkgs.stdenv.isx86
# then pkgs-unstable.akkuPackages.scheme-langserver # then pkgs-master.akkuPackages.scheme-langserver
# else pkgs.emptyDirectory # else pkgs.emptyDirectory
# ) # )
# ] # ]
-1
View File
@@ -1,6 +1,5 @@
{ {
pkgs, pkgs,
pkgs-unstable,
... ...
}: }:
{ {
-53
View File
@@ -1,53 +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
'';
};
}
+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']
+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;
}
+1 -3
View File
@@ -15,7 +15,6 @@ cases.
### Desktop Configurations ### Desktop Configurations
- **gui/**: Desktop environment configurations - **gui/**: Desktop environment configurations
- **hyprland/**: Hyprland window manager with custom keybindings and settings
- **niri/**: Niri compositor configuration - **niri/**: Niri compositor configuration
- **base/**: Common desktop applications and services - **base/**: Common desktop applications and services
- **editors/**: Text editor configurations for desktop environments - **editors/**: Text editor configurations for desktop environments
@@ -29,6 +28,5 @@ cases.
## Usage ## Usage
- **Lightweight/Terminal**: Use `core.nix` or `tui.nix` for terminal-focused setups - **Lightweight/Terminal**: Use `core.nix` or `tui.nix` for terminal-focused setups
- **Desktops**: Use `gui.nix` for full desktop environments with window managers like Hyprland or - **Desktops**: Use `gui.nix` for full desktop environments with Noctalia Shell and Niri compositor
Niri
- **Custom**: Mix and match configurations as needed for your specific use case - **Custom**: Mix and match configurations as needed for your specific use case
+3 -6
View File
@@ -7,24 +7,21 @@ Manager.
### Window Managers ### Window Managers
- **hyprland**: Hyprland compositor configuration with custom keybindings, settings, and window
rules
- **niri**: Niri compositor configuration with custom settings, keybindings, spawn-at-startup rules, - **niri**: Niri compositor configuration with custom settings, keybindings, spawn-at-startup rules,
and window rules and window rules
### Base Desktop Environment ### Base Desktop Environment
- **base**: Common desktop configurations shared across all environments, including: - **base**: Common desktop configurations shared across all environments, including:
- Desktop applications (anyrun, mako, waybar, wlogout) - **Noctalia Shell**: All-in-one Wayland desktop shell (replaces gammastep, swaylock, anyrun,
mako, waybar, wallpaper-switcher, wlogout, and other desktop tools)
- Creative tools and media applications - Creative tools and media applications
- Development tools - Development tools
- Eye protection utilities (gammastep)
- Fcitx5 input method framework - Fcitx5 input method framework
- Games and gaming utilities - Games and gaming utilities
- GTK theme configurations - GTK theme configurations
- Immutable file handling - Immutable file handling
- Note-taking applications - Note-taking applications
- Wallpaper management with auto-switcher
- Wayland applications - Wayland applications
- XDG desktop configurations - XDG desktop configurations
@@ -37,7 +34,7 @@ Manager.
1. **Configuration Location**: Desktop environment configuration files are located in `~/.config`, 1. **Configuration Location**: Desktop environment configuration files are located in `~/.config`,
which can be easily managed by Home Manager. which can be easily managed by Home Manager.
2. **User-specific Services**: Many user-specific systemd services (gammastep, wallpaper-switcher, 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 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, Module, these user-level services might fail to start automatically. With Home Manager modules,
we can control systemd service dependency order more effectively. we can control systemd service dependency order more effectively.
+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;
};
}
+5 -12
View File
@@ -1,9 +1,6 @@
{ {
lib, lib,
pkgs, pkgs,
pkgs-unstable,
# pkgs-stable,
nur-ryan4yin,
blender-bin, blender-bin,
... ...
}: }:
@@ -23,11 +20,11 @@
# 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
@@ -36,16 +33,14 @@
# 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 = plugins = with pkgs.obs-studio-plugins; [
with pkgs.obs-studio-plugins;
[
# screen capture # screen capture
wlrobs wlrobs
# obs-ndi # obs-ndi
@@ -68,11 +63,9 @@
obs-backgroundremoval obs-backgroundremoval
# advanced-scene-switcher # advanced-scene-switcher
obs-pipewire-audio-capture obs-pipewire-audio-capture
]
++ (lib.optionals pkgs.stdenv.isx86_64 [
obs-vaapi obs-vaapi
obs-3d-effect obs-3d-effect
]); ];
}; };
}; };
} }
@@ -1,14 +1,5 @@
{ mylib, pkgs, ... }:
{ {
config,
pkgs,
...
}:
{
imports = [
./anyrun.nix
./nvidia.nix
];
# wayland related # wayland related
home.sessionVariables = { home.sessionVariables = {
"NIXOS_OZONE_WL" = "1"; # for any ozone-based browser & electron apps to run on wayland "NIXOS_OZONE_WL" = "1"; # for any ozone-based browser & electron apps to run on wayland
@@ -30,44 +21,18 @@
wl-clipboard # copying and pasting wl-clipboard # copying and pasting
hyprpicker # color picker hyprpicker # color picker
brightnessctl brightnessctl
hyprshot # screen shot
wf-recorder # screen recording
# audio # audio
alsa-utils # provides amixer/alsamixer/... alsa-utils # provides amixer/alsamixer/...
networkmanagerapplet # provide GUI app: nm-connection-editor networkmanagerapplet # provide GUI app: nm-connection-editor
# screenshot/screencast
flameshot
hyprshot # screen shot
wf-recorder # screen recording
]; ];
xdg.configFile =
let
mkSymlink = config.lib.file.mkOutOfStoreSymlink;
confPath = "${config.home.homeDirectory}/nix-config/home/linux/gui/base/desktop/conf";
in
{
"mako".source = mkSymlink "${confPath}/mako";
"waybar".source = mkSymlink "${confPath}/waybar";
"wlogout".source = mkSymlink "${confPath}/wlogout";
"hypr/hypridle.conf".source = mkSymlink "${confPath}/hypridle.conf";
};
# status bar
programs.waybar = {
enable = true;
systemd.enable = true;
};
# Disable catppuccin to avoid conflict with my non-nix config.
catppuccin.waybar.enable = false;
# screen locker # screen locker
programs.swaylock.enable = true; programs.swaylock.enable = true;
# Logout Menu # Logout Menu
programs.wlogout.enable = true; programs.wlogout.enable = true;
catppuccin.wlogout.enable = false;
# Hyprland idle daemon
services.hypridle.enable = true;
# notification daemon, the same as dunst
services.mako.enable = true;
catppuccin.mako.enable = false;
} }
-66
View File
@@ -1,66 +0,0 @@
{
pkgs,
anyrun,
...
}:
let
anyrunPackages = anyrun.packages.${pkgs.system};
in
{
imports = [
(
{ modulesPath, ... }:
{
# Important! We disable home-manager's module to avoid option
# definition collisions
disabledModules = [ "${modulesPath}/programs/anyrun.nix" ];
}
)
anyrun.homeManagerModules.default
];
programs.anyrun = {
enable = true;
# The package should come from the same flake as all the plugins to avoid breakage.
package = anyrunPackages.anyrun;
config = {
# The horizontal position.
# when using `fraction`, it sets a fraction of the width or height of the screen
x.fraction = 0.5; # at the middle of the screen
# The vertical position.
y.fraction = 0.05; # at the top of the screen
# The width of the runner.
width.fraction = 0.3; # 30% of the screen
hideIcons = false;
ignoreExclusiveZones = false;
layer = "overlay";
hidePluginInfo = false;
closeOnClick = true;
showResultsImmediately = true;
maxEntries = null;
# https://github.com/anyrun-org/anyrun/tree/master/plugins
plugins = with anyrunPackages; [
applications # Launch applications
dictionary # Look up word definitions using the Free Dictionary API.
nix-run # search & run graphical apps from nixpkgs via `nix run`, without installing it.
# randr # quickly change monitor configurations on the fly
rink # A simple calculator plugin
symbols # Look up unicode symbols and custom user defined symbols.
translate # ":zh <text to translate>" Quickly translate text using the Google Translate API.
niri-focus # Search for & focus the window via title/appid on Niri
];
};
extraConfigFiles = {
"symbols.ron".source = ./conf/anyrun/symbols.ron;
"applications.ron".source = ./conf/anyrun/applications.ron;
};
};
# https://github.com/anyrun-org/anyrun/discussions/179
xdg.configFile."anyrun/style.css".source = ./conf/anyrun/style.css;
}
@@ -1,16 +0,0 @@
Config(
// Also show the Desktop Actions defined in the desktop files, e.g. "New Window" from LibreWolf
desktop_actions: true,
max_entries: 5,
// The terminal used for running terminal based desktop entries, if left as `None` a static list of terminals is used
// to determine what terminal to use.
terminal: Some(Terminal(
// The main terminal command
command: "alacritty",
// What arguments should be passed to the terminal process to run the command correctly
// {} is replaced with the command in the desktop entry
args: "-e {}",
)),
)
@@ -1,101 +0,0 @@
/* ===== Color variables ===== */
:root {
--bg-color: #313244;
--fg-color: #cdd6f4;
--primary-color: #89b4fa;
--secondary-color: #cba6f7;
--border-color: var(--primary-color);
--selected-bg-color: var(--primary-color);
--selected-fg-color: var(--bg-color);
}
/* ===== Global reset ===== */
* {
all: unset;
font-family: "JetBrainsMono Nerd Font", monospace;
}
/* ===== Transparent window ===== */
window {
background: transparent;
}
/* ===== Main container ===== */
box.main {
border-radius: 16px;
background-color: color-mix(in srgb, var(--bg-color) 80%, transparent);
border: 0.5px solid color-mix(in srgb, var(--fg-color) 25%, transparent);
padding: 12px; /* add uniform padding around the whole box */
}
/* ===== Input field ===== */
text {
font-size: 1.3rem;
background: transparent;
border: 1px solid var(--border-color);
border-radius: 16px;
margin-bottom: 12px;
padding: 5px 10px;
min-height: 44px;
caret-color: var(--primary-color);
}
/* ===== List container ===== */
.matches {
background-color: transparent;
}
/* ===== Single match row ===== */
.match {
font-size: 1.1rem;
padding: 4px 10px; /* tight vertical spacing */
border-radius: 6px;
}
/* Remove default label margins */
.match * {
margin: 0;
padding: 0;
line-height: 1;
}
/* Selected / hover state */
.match:selected,
.match:hover {
background-color: var(--selected-bg-color);
color: var(--selected-fg-color);
}
.match:selected label.plugin.info,
.match:hover label.plugin.info {
color: var(--selected-fg-color);
}
.match:selected label.match.description,
.match:hover label.match.description {
color: color-mix(in srgb, var(--selected-fg-color) 90%, transparent);
}
/* ===== Plugin info label ===== */
label.plugin.info {
color: var(--fg-color);
font-size: 1rem;
min-width: 160px;
text-align: left;
}
/* ===== Description label ===== */
label.match.description {
font-size: 0rem;
color: var(--fg-color);
}
/* ===== Fade-in animation ===== */
@keyframes fade {
0% {
opacity: 0;
}
100% {
opacity: 1;
}
}
@@ -1,10 +0,0 @@
Config(
// The prefix that the search needs to begin with to yield symbol results
prefix: "",
// Custom user defined symbols to be included along the unicode symbols
symbols: {
// "name": "text to be copied"
"shrug": "¯\\_(ツ)_/¯",
},
max_entries: 3,
)
@@ -1,51 +0,0 @@
## Mako configuration file
# GLOBAL CONFIGURATION OPTIONS
max-history=100
sort=-time
# BINDING OPTIONS
on-button-left=dismiss
on-button-middle=none
on-button-right=dismiss-all
on-touch=dismiss
on-notify=exec mpv /usr/share/sounds/freedesktop/stereo/message.oga
# STYLE OPTIONS
font=Maple Mono NF CN
width=300
height=100
margin=10
padding=15
border-size=2
border-radius=0
icons=1
max-icon-size=48
icon-location=left
markup=1
actions=1
history=1
text-alignment=left
default-timeout=5000
ignore-timeout=0
max-visible=5
layer=overlay
anchor=top-right
background-color=#1e1e2e
text-color=#d9e0ee
border-color=#313244
progress-color=over #89b4fa
[urgency=low]
border-color=#313244
default-timeout=2000
[urgency=normal]
border-color=#313244
default-timeout=5000
[urgency=high]
border-color=#f38ba8
text-color=#f38ba8
default-timeout=0
Binary file not shown.

Before

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 28 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 27 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 34 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 29 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 33 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 27 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 23 KiB

@@ -1,156 +0,0 @@
{
"position": "top",
"layer": "top",
"modules-left": ["custom/launcher", "temperature", "backlight", "hyprland/workspaces"],
"modules-center": ["custom/playerctl"],
"modules-right": [
"pulseaudio",
"memory",
"cpu",
"network",
"battery",
"clock",
"idle_inhibitor",
"custom/powermenu",
"tray",
],
"hyprland/workspaces": {
"format": "{icon}",
"on-click": "activate",
"format-icons": {
"1": "",
"2": "",
"3": "",
"4": "",
"5": "",
"6": "",
"7": "",
"8": "",
"9": "",
"10": "",
"focused": "",
"default": "",
},
},
"clock": {
"interval": 60,
"align": 0,
"rotate": 0,
"tooltip-format": "<big>{:%B %Y}</big>\n<tt><small>{calendar}</small></tt>",
"format": " {:%H:%M}",
"format-alt": " {:%a %b %d, %G}",
},
"cpu": {
"format": "CPU {usage}%",
"interval": 1,
"on-click-middle": "foot btop",
"on-click-right": "foot btop",
},
"memory": {
"format": "MEM {percentage}%",
"interval": 1,
"states": {
"warning": 85,
},
},
"custom/launcher": {
"format": "\uf313 ",
"on-click": "anyrun",
"on-click-middle": "exec default_wall",
"on-click-right": "exec wallpaper_random",
"tooltip": false,
},
"custom/powermenu": {
"format": "\uf011",
"on-click": "wlogout",
"tooltip": false,
},
"idle_inhibitor": {
"format": "{icon}",
"format-icons": {
"activated": "\uf06e",
"deactivated": "\uf070",
},
"tooltip": false,
},
"custom/playerctl": {
"format": "{icon} <span>{}</span>",
"return-type": "json",
"max-length": 55,
"exec": "playerctl -a metadata --format '{\"text\": \" {{markup_escape(title)}}\", \"tooltip\": \"{{playerName}} : {{markup_escape(title)}}\", \"alt\": \"{{status}}\", \"class\": \"{{status}}\"}' -F",
"on-click-middle": "playerctl previous",
"on-click": "playerctl play-pause",
"on-click-right": "playerctl next",
"format-icons": {
"Paused": "<span foreground='#6dd9d9'></span>",
"Playing": "<span foreground='#82db97'></span>",
},
},
"network": {
"interval": 5,
"format": "{ifname}",
"format-wifi": " {signalStrength}% Down: {bandwidthDownBytes} Up: {bandwidthUpBytes} {essid}",
"format-ethernet": " {ifname} Down: {bandwidthDownBytes} Up: {bandwidthUpBytes}",
"format-disconnected": "Disconnected ⚠",
"tooltip-format": " {ifname} via {gwaddri}",
"tooltip-format-wifi": " {ifname} @ {essid}\nIP: {ipaddr}\nStrength: {signalStrength}%\nFreq: {frequency}MHz\nDown: {bandwidthDownBytes} Up: {bandwidthUpBytes}",
"tooltip-format-ethernet": " {ifname}\nIP: {ipaddr}\n Down: {bandwidthDownBytes} Up: {bandwidthUpBytes}",
"tooltip-format-disconnected": "Disconnected",
"max-length": 50,
"on-click-middle": "nm-connection-editor",
"on-click-right": "foot nmtui",
},
"pulseaudio": {
//"format": "{volume}% {icon} {format_source}",
"format": "{icon} {volume}%",
"format-muted": " Mute",
"format-bluetooth": " {volume}% {format_source}",
"format-bluetooth-muted": " Mute",
"format-source": " {volume}%",
"format-source-muted": "",
"format-icons": {
"headphone": "",
"hands-free": "",
"headset": "",
"phone": "",
"portable": "",
"car": "",
"default": ["", "", ""],
},
"scroll-step": 5.0,
// Commands to execute on events
"on-click": "amixer set Master toggle",
"on-click-right": "GSK_RENDERER=opengl pavucontrol",
"smooth-scrolling-threshold": 1,
},
"temperature": {
"format": "\uf2c9 {temperatureC}\u00b0C",
"tooltip": false,
},
"backlight": {
"format": "{icon} {percent}%",
"format-icons": ["", "", "", "", "", "", "", "", ""],
},
"tray": {
"icon-size": 15,
"spacing": 5,
},
"battery": {
"interval": 60,
"states": {
"warning": 30,
"critical": 15,
},
"max-length": 20,
"format": "{icon} {capacity}%",
"format-warning": "{icon} {capacity}%",
"format-critical": "{icon} {capacity}%",
"format-charging": "<span font-family='Font Awesome 6 Free'></span> {capacity}%",
"format-plugged": " {capacity}%",
"format-alt": "{icon} {time}",
"format-full": " {capacity}%",
"format-icons": [" ", " ", " ", " ", " "],
},
}
@@ -1,38 +0,0 @@
/*
* https://github.com/catppuccin/waybar/blob/main/themes/mocha.css
*
* Catppuccin Mocha palette
* Maintainer: rubyowo
*
*/
@define-color base #1e1e2e;
@define-color mantle #181825;
@define-color crust #11111b;
@define-color text #cdd6f4;
@define-color subtext0 #a6adc8;
@define-color subtext1 #bac2de;
@define-color surface0 #313244;
@define-color surface1 #45475a;
@define-color surface2 #585b70;
@define-color overlay0 #6c7086;
@define-color overlay1 #7f849c;
@define-color overlay2 #9399b2;
@define-color blue #89b4fa;
@define-color lavender #b4befe;
@define-color sapphire #74c7ec;
@define-color sky #89dceb;
@define-color teal #94e2d5;
@define-color green #a6e3a1;
@define-color yellow #f9e2af;
@define-color peach #fab387;
@define-color maroon #eba0ac;
@define-color red #f38ba8;
@define-color mauve #cba6f7;
@define-color pink #f5c2e7;
@define-color flamingo #f2cdcd;
@define-color rosewater #f5e0dc;
@@ -1,151 +0,0 @@
@import "mocha.css";
* {
/* https://docs.gtk.org/gtk3/css-overview.html#colors */
color: @text;
font-family: "Maple Mono NF CN";
font-size: 12pt;
font-weight: bold;
border-radius: 8px;
transition-property: background-color;
transition-duration: 0.5s;
}
@keyframes blink_red {
to {
background-color: rgb(242, 143, 173);
color: rgb(26, 24, 38);
}
}
.warning,
.critical,
.urgent {
animation-name: blink_red;
animation-duration: 1s;
animation-timing-function: linear;
animation-iteration-count: infinite;
animation-direction: alternate;
}
window#waybar {
background-color: transparent;
border: 2px solid alpha(@crust, 0.3);
}
window > box {
margin-left: 5px;
margin-right: 5px;
margin-top: 5px;
background-color: shade(@base, 0.9);
padding: 3px;
padding-left: 8px;
border: 2px none #33ccff;
}
#workspaces {
padding-left: 0px;
padding-right: 4px;
}
#workspaces button {
padding-top: 5px;
padding-bottom: 5px;
padding-left: 6px;
padding-right: 6px;
}
#workspaces button.active {
background-color: rgb(181, 232, 224);
color: rgb(26, 24, 38);
}
#workspaces button.urgent {
color: rgb(26, 24, 38);
}
#workspaces button:hover {
background-color: rgb(248, 189, 150);
color: rgb(26, 24, 38);
}
tooltip {
background: rgb(48, 45, 65);
}
tooltip label {
color: rgb(217, 224, 238);
}
#custom-launcher {
font-size: 20px;
padding-left: 8px;
padding-right: 6px;
color: #7ebae4;
}
#mode,
#clock,
#memory,
#temperature,
#cpu,
#custom-wall,
#temperature,
#backlight,
#pulseaudio,
#network,
#battery,
#custom-powermenu {
padding-left: 10px;
padding-right: 10px;
}
/* #mode { */
/* margin-left: 10px; */
/* background-color: rgb(248, 189, 150); */
/* color: rgb(26, 24, 38); */
/* } */
#memory {
color: rgb(181, 232, 224);
}
#cpu {
color: rgb(245, 194, 231);
}
#clock {
color: rgb(217, 224, 238);
}
#idle_inhibitor {
color: rgb(221, 182, 242);
padding-right: 8px;
}
#battery {
min-width: 55px;
color: rgb(126, 186, 244);
}
#battery.charging,
#battery.full,
#battery.plugged {
color: #26a65b;
}
#battery.critical:not(.charging) {
color: #f53c3c;
animation-name: blink;
animation-duration: 0.5s;
animation-timing-function: linear;
animation-iteration-count: infinite;
animation-direction: alternate;
}
#custom-wall {
color: #33ccff;
}
#temperature {
color: rgb(150, 205, 251);
}
#backlight {
color: rgb(248, 189, 150);
}
#pulseaudio {
color: rgb(245, 224, 220);
}
#network {
color: #abe9b3;
}
#network.disconnected {
color: rgb(255, 255, 255);
}
#custom-powermenu {
color: rgb(242, 143, 173);
padding-right: 8px;
}
#tray {
padding-right: 8px;
padding-left: 10px;
}
Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.0 KiB

@@ -1,36 +0,0 @@
{
"label" : "lock",
"action" : "~/.config/hypr/scripts/lockscreen",
"text" : "Lock",
"keybind" : "l"
}
{
"label" : "hibernate",
"action" : "systemctl hibernate",
"text" : "Hibernate",
"keybind" : "h"
}
{
"label" : "logout",
"action" : "loginctl terminate-user $USER",
"text" : "Logout",
"keybind" : "e"
}
{
"label" : "shutdown",
"action" : "systemctl poweroff",
"text" : "Shutdown",
"keybind" : "s"
}
{
"label" : "suspend",
"action" : "systemctl suspend",
"text" : "Suspend",
"keybind" : "u"
}
{
"label" : "reboot",
"action" : "systemctl reboot",
"text" : "Reboot",
"keybind" : "r"
}
@@ -1,57 +0,0 @@
/** ********** Fonts ********** **/
* {
font-family: "Maple Mono NF CN", sans-serif;
font-size: 14px;
font-weight: bold;
}
/** ********** Main Window ********** **/
window {
background-color: #1e1e2e;
}
/** ********** Buttons ********** **/
button {
background-color: #242434;
color: #ffffff;
border: 2px solid #282838;
border-radius: 20px;
background-repeat: no-repeat;
background-position: center;
background-size: 35%;
}
button:focus,
button:active,
button:hover {
background-color: #89b4fa;
outline-style: none;
}
/** ********** Icons ********** **/
#lock {
background-image: image(url("icons/lock.png"), url("/usr/share/wlogout/icons/lock.png"));
}
#logout {
background-image: image(url("icons/logout.png"), url("/usr/share/wlogout/icons/logout.png"));
}
#suspend {
background-image: image(url("icons/suspend.png"), url("/usr/share/wlogout/icons/suspend.png"));
}
#hibernate {
background-image: image(
url("icons/hibernate.png"),
url("/usr/share/wlogout/icons/hibernate.png")
);
}
#shutdown {
background-image: image(url("icons/shutdown.png"), url("/usr/share/wlogout/icons/shutdown.png"));
}
#reboot {
background-image: image(url("icons/reboot.png"), url("/usr/share/wlogout/icons/reboot.png"));
}
+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;
};
};
}
-49
View File
@@ -1,49 +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
+13 -7
View File
@@ -1,4 +1,4 @@
{ pkgs, ... }: { config, pkgs, ... }:
{ {
xdg.configFile = { xdg.configFile = {
"fcitx5/profile" = { "fcitx5/profile" = {
@@ -7,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 = {
@@ -14,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 # we use rime instead
# 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
+5
View File
@@ -39,6 +39,10 @@ in
# https://github.com/Open-Wine-Components/umu-launcher # https://github.com/Open-Wine-Components/umu-launcher
# a unified launcher for Windows games on Linux # a unified launcher for Windows games on Linux
umu-launcher umu-launcher
# Sed-like editor for binary files
# required by some games to fix problems
bbe
]) ])
++ (with pkgs-x64; [ ++ (with pkgs-x64; [
# a game launcher - great for epic games and gog games # a game launcher - great for epic games and gog games
@@ -50,6 +54,7 @@ in
]); ]);
# a GUI game launcher for Steam/GoG/Epic # a GUI game launcher for Steam/GoG/Epic
# https://lutris.net/games?ordering=-popularity
programs.lutris = { programs.lutris = {
enable = true; enable = true;
defaultWinePackage = pkgs-x64.proton-ge-bin; defaultWinePackage = pkgs-x64.proton-ge-bin;
+9
View File
@@ -0,0 +1,9 @@
{
...
}:
{
xdg.configFile."hypr/hypridle.conf".source = ./hypridle.conf;
# Hyprland idle daemon
services.hypridle.enable = true;
}
@@ -1,7 +1,7 @@
general { general {
lock_cmd = pidof swaylock || swaylock # avoid starting multiple instances lock_cmd = noctalia-shell ipc call lockScreen lock # avoid starting multiple instances
before_sleep_cmd = loginctl lock-session # lock before suspend before_sleep_cmd = loginctl lock-session # lock before suspend
after_sleep_cmd = hyprctl dispatch dpms on # resume dpms after suspend # after_sleep_cmd = hyprctl dispatch dpms on # resume dpms after suspend
ignore_dbus_inhibit = false # whether to ignore dbus-sent idle-inhibit requests ignore_dbus_inhibit = false # whether to ignore dbus-sent idle-inhibit requests
} }
@@ -20,16 +20,14 @@ listener {
# } # }
listener { listener {
timeout = 1600 # 20 minutes timeout = 1200 # 20 minutes
on-timeout = pidof swaylock || swaylock # lock screen on-timeout = noctalia-shell ipc call lockScreen lock # lock screen
on-resume = hyprctl dispatch dpms on # monitor wake up
} }
listener { # listener {
timeout = 1660 # 31 minutes # timeout = 1660 # 31 minutes
on-timeout = hyprctl dispatch dpms off # screen off # on-resume = brightnessctl -r # monitor wake up & screen on
on-resume = hyprctl dispatch dpms on && brightnessctl -r # monitor wake up & screen on # }
}
# listener { # listener {
# timeout = 1800 # 30min # timeout = 1800 # 30min
+3 -7
View File
@@ -1,15 +1,11 @@
{ {
pkgs, pkgs,
pkgs-x64, pkgs-x64,
pkgs-unstable,
nur-ryan4yin,
... ...
}: }:
# media - control and enjoy audio/video # media - control and enjoy audio/video
{ {
home.packages = home.packages = with pkgs; [
with pkgs;
[
# audio control # audio control
pavucontrol pavucontrol
playerctl playerctl
@@ -20,9 +16,9 @@
libva-utils libva-utils
vdpauinfo vdpauinfo
vulkan-tools vulkan-tools
glxinfo mesa-demos
nvitop nvitop
(pkgs-x64.zoom-us.override { hyprlandXdgDesktopPortalSupport = true; }) (pkgs-x64.zoom-us)
]; ];
programs.mpv = { programs.mpv = {
+3 -4
View File
@@ -1,6 +1,5 @@
{ {
pkgs, pkgs,
pkgs-unstable,
... ...
}: }:
{ {
@@ -15,10 +14,10 @@
freerdp # required by remmina freerdp # required by remmina
# my custom hardened packages # my custom hardened packages
pkgs.nixpaks.qq nixpaks.qq
pkgs.nixpaks.telegram-desktop nixpaks.telegram-desktop
# qqmusic # qqmusic
pkgs.bwraps.wechat bwraps.wechat
# discord # update too frequently, use the web version instead # discord # update too frequently, use the web version instead
]; ];
+56
View File
@@ -0,0 +1,56 @@
{
lib,
config,
pkgs,
pkgs-patched,
wallpapers,
...
}:
let
package = pkgs-patched.noctalia-shell;
in
{
home.packages = [
package
pkgs.qt6Packages.qt6ct # for icon theme
pkgs.app2unit # Launch Desktop Entries (or arbitrary commands) as Systemd user units
]
++ (lib.optionals pkgs.stdenv.isx86_64 [
pkgs.gpu-screen-recorder # recoding screen
]);
home.file."Pictures/Wallpapers".source = wallpapers;
xdg.configFile =
let
mkSymlink = config.lib.file.mkOutOfStoreSymlink;
confPath = "${config.home.homeDirectory}/nix-config/home/linux/gui/base/noctalia";
in
{
"noctalia/settings.json".source = mkSymlink "${confPath}/settings.json";
};
systemd.user.services.noctalia-shell = {
Unit = {
Description = "Noctalia Shell - Wayland desktop shell";
Documentation = "https://docs.noctalia.dev/docs";
PartOf = [ config.wayland.systemd.target ];
After = [ config.wayland.systemd.target ];
};
Service = {
ExecStart = lib.getExe package;
Restart = "on-failure";
Environment = [
"QT_QPA_PLATFORM=wayland;xcb"
"QT_QPA_PLATFORMTHEME=qt6ct"
"QT_AUTO_SCREEN_SCALE_FACTOR=1"
];
};
Install.WantedBy = [ config.wayland.systemd.target ];
};
}
+587
View File
@@ -0,0 +1,587 @@
{
"appLauncher": {
"customLaunchPrefix": "",
"customLaunchPrefixEnabled": false,
"enableClipPreview": true,
"enableClipboardHistory": true,
"iconMode": "native",
"ignoreMouseInput": false,
"pinnedExecs": [],
"position": "center",
"screenshotAnnotationTool": "",
"showCategories": true,
"showIconBackground": true,
"sortByMostUsed": true,
"terminalCommand": "xterm -e",
"useApp2Unit": true,
"viewMode": "list"
},
"audio": {
"cavaFrameRate": 30,
"externalMixer": "pwvucontrol || pavucontrol",
"mprisBlacklist": [],
"preferredPlayer": "",
"visualizerType": "linear",
"volumeOverdrive": false,
"volumeStep": 1
},
"bar": {
"backgroundOpacity": 0.2,
"capsuleOpacity": 1,
"density": "comfortable",
"exclusive": true,
"floating": false,
"marginHorizontal": 0.25,
"marginVertical": 0.25,
"monitors": [],
"outerCorners": true,
"position": "top",
"showCapsule": true,
"showOutline": false,
"useSeparateOpacity": true,
"widgets": {
"center": [
{
"characterCount": 2,
"colorizeIcons": false,
"enableScrollWheel": true,
"followFocusedScreen": false,
"groupedBorderOpacity": 1,
"hideUnoccupied": false,
"iconScale": 0.8,
"id": "Workspace",
"labelMode": "index",
"showApplications": false,
"showLabelsOnlyWhenOccupied": true,
"unfocusedIconsOpacity": 1
}
],
"left": [
{
"colorizeSystemIcon": "none",
"enableColorization": false,
"hideMode": "alwaysExpanded",
"icon": "rocket",
"id": "CustomButton",
"leftClickExec": "noctalia-shell ipc call launcher toggle",
"leftClickUpdateText": true,
"maxTextLength": {
"horizontal": 10,
"vertical": 10
},
"middleClickExec": "",
"middleClickUpdateText": false,
"parseJson": false,
"rightClickExec": "",
"rightClickUpdateText": false,
"showIcon": true,
"textCollapse": "",
"textCommand": "",
"textIntervalMs": 3000,
"textStream": false,
"wheelDownExec": "",
"wheelDownUpdateText": false,
"wheelExec": "",
"wheelMode": "unified",
"wheelUpExec": "",
"wheelUpUpdateText": false,
"wheelUpdateText": false
},
{
"customFont": "",
"formatHorizontal": "HH:mm ddd, MMM dd",
"formatVertical": "HH mm - dd MM",
"id": "Clock",
"tooltipFormat": "HH:mm ddd, MMM dd",
"useCustomFont": false,
"usePrimaryColor": false
},
{
"compactMode": false,
"diskPath": "/persistent",
"id": "SystemMonitor",
"showCpuTemp": false,
"showCpuUsage": true,
"showDiskUsage": true,
"showGpuTemp": false,
"showLoadAverage": true,
"showMemoryAsPercent": true,
"showMemoryUsage": true,
"showNetworkStats": true,
"useMonospaceFont": true,
"usePrimaryColor": false
},
{
"colorizeIcons": false,
"hideMode": "hidden",
"id": "ActiveWindow",
"maxWidth": 145,
"scrollingMode": "hover",
"showIcon": true,
"useFixedWidth": false
},
{
"hideMode": "hidden",
"hideWhenIdle": false,
"id": "MediaMini",
"maxWidth": 145,
"scrollingMode": "hover",
"showAlbumArt": false,
"showArtistFirst": true,
"showProgressRing": true,
"showVisualizer": false,
"useFixedWidth": false,
"visualizerType": "linear"
}
],
"right": [
{
"id": "ScreenRecorder"
},
{
"hideWhenZero": false,
"id": "NotificationHistory",
"showUnreadBadge": true
},
{
"deviceNativePath": "",
"displayMode": "alwaysShow",
"hideIfNotDetected": true,
"id": "Battery",
"showNoctaliaPerformance": true,
"showPowerProfiles": true,
"warningThreshold": 30
},
{
"displayMode": "alwaysShow",
"id": "Volume"
},
{
"displayMode": "alwaysShow",
"id": "Brightness"
},
{
"blacklist": [],
"colorizeIcons": false,
"drawerEnabled": true,
"hidePassive": false,
"id": "Tray",
"pinned": []
},
{
"colorizeDistroLogo": false,
"colorizeSystemIcon": "none",
"customIconPath": "",
"enableColorization": false,
"icon": "noctalia",
"id": "ControlCenter",
"useDistroLogo": true
}
]
}
},
"brightness": {
"brightnessStep": 3,
"enableDdcSupport": false,
"enforceMinimum": true
},
"calendar": {
"cards": [
{
"enabled": true,
"id": "calendar-header-card"
},
{
"enabled": true,
"id": "calendar-month-card"
},
{
"enabled": true,
"id": "timer-card"
},
{
"enabled": true,
"id": "weather-card"
}
]
},
"colorSchemes": {
"darkMode": true,
"generateTemplatesForPredefined": true,
"manualSunrise": "06:30",
"manualSunset": "18:30",
"matugenSchemeType": "scheme-rainbow",
"predefinedScheme": "Noctalia (default)",
"schedulingMode": "off",
"useWallpaperColors": true
},
"controlCenter": {
"cards": [
{
"enabled": true,
"id": "profile-card"
},
{
"enabled": true,
"id": "shortcuts-card"
},
{
"enabled": true,
"id": "audio-card"
},
{
"enabled": true,
"id": "brightness-card"
},
{
"enabled": true,
"id": "weather-card"
},
{
"enabled": true,
"id": "media-sysmon-card"
}
],
"diskPath": "/persistent",
"position": "close_to_bar_button",
"shortcuts": {
"left": [
{
"id": "WiFi"
},
{
"id": "Bluetooth"
},
{
"id": "ScreenRecorder"
},
{
"id": "WallpaperSelector"
}
],
"right": [
{
"id": "Notifications"
},
{
"id": "PowerProfile"
},
{
"id": "KeepAwake"
},
{
"id": "NightLight"
}
]
}
},
"desktopWidgets": {
"enabled": true,
"gridSnap": true,
"monitorWidgets": [
{
"name": "eDP-1",
"widgets": [
{
"clockStyle": "digital",
"customFont": "",
"format": "HH:mm\\nd MMMM yyyy",
"id": "Clock",
"roundedCorners": true,
"scale": 0.7378548922663623,
"showBackground": true,
"useCustomFont": false,
"usePrimaryColor": false,
"x": 92,
"y": 161
},
{
"hideMode": "visible",
"id": "MediaPlayer",
"roundedCorners": true,
"scale": 1.1501312913284876,
"showAlbumArt": true,
"showBackground": true,
"showButtons": true,
"showVisualizer": true,
"visualizerType": "linear",
"x": 92,
"y": 299
},
{
"id": "Weather",
"scale": 1.339282355295889,
"showBackground": true,
"x": 230,
"y": 161
}
]
}
]
},
"dock": {
"animationSpeed": 1,
"backgroundOpacity": 1,
"colorizeIcons": false,
"deadOpacity": 0.6,
"displayMode": "auto_hide",
"enabled": false,
"floatingRatio": 1,
"inactiveIndicators": false,
"monitors": [],
"onlySameOutput": true,
"pinnedApps": [],
"pinnedStatic": false,
"size": 1
},
"general": {
"allowPanelsOnScreenWithoutBar": true,
"animationDisabled": false,
"animationSpeed": 1,
"avatarImage": "~/nix-config/_img/myself.jpg",
"boxRadiusRatio": 1,
"compactLockScreen": false,
"dimmerOpacity": 0.2,
"enableShadows": true,
"forceBlackScreenCorners": false,
"iRadiusRatio": 1,
"language": "",
"lockOnSuspend": true,
"radiusRatio": 1,
"scaleRatio": 1,
"screenRadiusRatio": 1,
"shadowDirection": "bottom_right",
"shadowOffsetX": 2,
"shadowOffsetY": 3,
"showHibernateOnLockScreen": false,
"showScreenCorners": false,
"showSessionButtonsOnLockScreen": true
},
"hooks": {
"darkModeChange": "",
"enabled": false,
"performanceModeDisabled": "",
"performanceModeEnabled": "",
"screenLock": "",
"screenUnlock": "",
"wallpaperChange": ""
},
"location": {
"analogClockInCalendar": false,
"firstDayOfWeek": 1,
"name": "Changsha",
"showCalendarEvents": true,
"showCalendarWeather": true,
"showWeekNumberInCalendar": false,
"use12hourFormat": false,
"useFahrenheit": false,
"weatherEnabled": true,
"weatherShowEffects": true
},
"network": {
"bluetoothDetailsViewMode": "grid",
"bluetoothHideUnnamedDevices": false,
"bluetoothRssiPollIntervalMs": 10000,
"bluetoothRssiPollingEnabled": false,
"wifiDetailsViewMode": "grid",
"wifiEnabled": true
},
"nightLight": {
"autoSchedule": true,
"dayTemp": "6500",
"enabled": true,
"forced": true,
"manualSunrise": "06:30",
"manualSunset": "18:30",
"nightTemp": "4000"
},
"notifications": {
"backgroundOpacity": 1,
"criticalUrgencyDuration": 15,
"enableKeyboardLayoutToast": true,
"enabled": true,
"location": "top_right",
"lowUrgencyDuration": 3,
"monitors": [],
"normalUrgencyDuration": 8,
"overlayLayer": true,
"respectExpireTimeout": false,
"saveToHistory": {
"critical": true,
"low": true,
"normal": true
},
"sounds": {
"criticalSoundFile": "",
"enabled": true,
"excludedApps": "discord,firefox,chrome,chromium,edge",
"lowSoundFile": "",
"normalSoundFile": "",
"separateSounds": false,
"volume": 0.5
}
},
"osd": {
"autoHideMs": 2000,
"backgroundOpacity": 1,
"enabled": true,
"enabledTypes": [0, 1, 2, 4, 3],
"location": "top_right",
"monitors": [],
"overlayLayer": true
},
"screenRecorder": {
"audioCodec": "opus",
"audioSource": "default_output",
"colorRange": "limited",
"copyToClipboard": false,
"directory": "~/Videos",
"frameRate": 30,
"quality": "high",
"showCursor": true,
"videoCodec": "h264",
"videoSource": "portal"
},
"sessionMenu": {
"countdownDuration": 10000,
"enableCountdown": true,
"largeButtonsLayout": "grid",
"largeButtonsStyle": true,
"position": "center",
"powerOptions": [
{
"action": "lock",
"command": "",
"countdownEnabled": true,
"enabled": true
},
{
"action": "suspend",
"command": "",
"countdownEnabled": true,
"enabled": true
},
{
"action": "hibernate",
"command": "",
"countdownEnabled": true,
"enabled": true
},
{
"action": "reboot",
"command": "",
"countdownEnabled": true,
"enabled": true
},
{
"action": "logout",
"command": "",
"countdownEnabled": true,
"enabled": true
},
{
"action": "shutdown",
"command": "",
"countdownEnabled": true,
"enabled": true
}
],
"showHeader": true,
"showNumberLabels": true
},
"settingsVersion": 37,
"systemMonitor": {
"cpuCriticalThreshold": 95,
"cpuPollingInterval": 10000,
"cpuWarningThreshold": 80,
"criticalColor": "",
"diskCriticalThreshold": 90,
"diskPollingInterval": 250,
"diskWarningThreshold": 80,
"enableDgpuMonitoring": false,
"externalMonitor": "resources || missioncenter || jdsystemmonitor || corestats || system-monitoring-center || gnome-system-monitor || plasma-systemmonitor || mate-system-monitor || ukui-system-monitor || deepin-system-monitor || pantheon-system-monitor",
"gpuCriticalThreshold": 90,
"gpuPollingInterval": 3000,
"gpuWarningThreshold": 80,
"loadAvgPollingInterval": 3000,
"memCriticalThreshold": 90,
"memPollingInterval": 250,
"memWarningThreshold": 80,
"networkPollingInterval": 3000,
"tempCriticalThreshold": 90,
"tempPollingInterval": 3000,
"tempWarningThreshold": 80,
"useCustomColors": false,
"warningColor": ""
},
"templates": {
"alacritty": false,
"cava": false,
"code": false,
"discord": false,
"emacs": false,
"enableUserTemplates": false,
"foot": false,
"fuzzel": false,
"ghostty": false,
"gtk": false,
"helix": false,
"hyprland": false,
"kcolorscheme": false,
"kitty": false,
"mango": false,
"niri": false,
"pywalfox": false,
"qt": false,
"spicetify": false,
"telegram": false,
"vicinae": false,
"walker": false,
"wezterm": false,
"yazi": false,
"zed": false
},
"ui": {
"boxBorderEnabled": false,
"fontDefault": "Maple Mono NF CN",
"fontDefaultScale": 1,
"fontFixed": "Maple Mono NF CN",
"fontFixedScale": 1,
"panelBackgroundOpacity": 0.85,
"panelsAttachedToBar": true,
"settingsPanelMode": "attached",
"tooltipsEnabled": true
},
"wallpaper": {
"directory": "~/Pictures/Wallpapers",
"enableMultiMonitorDirectories": false,
"enabled": true,
"fillColor": "#000000",
"fillMode": "crop",
"hideWallpaperFilenames": false,
"monitorDirectories": [],
"overviewEnabled": true,
"panelPosition": "follow_bar",
"randomEnabled": true,
"randomIntervalSec": 600,
"recursiveSearch": false,
"setWallpaperOnAllMonitors": true,
"solidColor": "#1a1a2e",
"transitionDuration": 1500,
"transitionEdgeSmoothness": 0.05,
"transitionType": "random",
"useSolidColor": false,
"useWallhaven": false,
"wallhavenApiKey": "",
"wallhavenCategories": "111",
"wallhavenOrder": "desc",
"wallhavenPurity": "100",
"wallhavenQuery": "",
"wallhavenRatios": "",
"wallhavenResolutionHeight": "",
"wallhavenResolutionMode": "atleast",
"wallhavenResolutionWidth": "",
"wallhavenSorting": "relevance",
"wallpaperChangeMode": "random"
}
}
+1 -1
View File
@@ -5,6 +5,6 @@
(lib.optionals pkgs.stdenv.isx86_64 [ (lib.optionals pkgs.stdenv.isx86_64 [
# https://joplinapp.org/help/ # https://joplinapp.org/help/
joplin # joplin-cli joplin # joplin-cli
joplin-desktop # joplin-desktop
]); ]);
} }
-41
View File
@@ -1,41 +0,0 @@
{
pkgs,
config,
lib,
wallpapers,
...
}:
{
systemd.user.services.wallpaper = {
Unit = {
Description = "Wallpaper Switcher daemon";
After = [
"graphical-session.target"
];
Wants = [ "graphical-session-pre.target" ];
};
Install.WantedBy = [ "graphical-session.target" ];
Service = {
ExecStart = lib.getExe (
pkgs.writeShellApplication {
name = "wallpaper";
runtimeInputs = with pkgs; [
procps
feh
swaybg
python3
];
text = ''
export WALLPAPERS_DIR="${wallpapers}"
export WALLPAPERS_STATE_FILEPATH="${config.xdg.stateHome}/wallpaper-switcher/switcher_state"
export WALLPAPER_WAIT_MIN=60
export WALLPAPER_WAIT_MAX=180
exec ${./wallpaper-switcher.py}
'';
}
);
RestartSec = 3;
Restart = "on-failure";
};
};
}
@@ -1,169 +0,0 @@
#!/usr/bin/env python3
"""
This script will randomly select a wallpaper from the wallpapers directory.
It will skip the last wallpaper used, so that you don't get the same wallpaper.
It will also set the wallpaper using `feh` for X11, or `swaybg` for Wayland.
Maintainer: ryan4yin [xiaoyin_c@qq.com]
"""
import os
import time
import random
import json
from pathlib import Path
from typing import Union
import subprocess
import logging
logging.basicConfig(level=logging.INFO)
logger = logging.getLogger(__name__)
class WallpaperSwitcher:
def __init__(
self,
wait_min,
wait_max,
wallpapers_dir: Path,
state_filepath: Path,
image_extensions: Union[tuple, list],
) -> None:
self.wallpapers_dir = wallpapers_dir
self.image_extensions = image_extensions
self.state_filepath = state_filepath
self.wait_min = wait_min
self.wait_max = wait_max
# initialize the state file
self.state_filepath.parent.mkdir(parents=True, exist_ok=True)
self.current_state = self.state_filepath.open("a+", encoding="utf-8")
self.current_wallpaper_list = list()
def run(self):
"""
Iterate on all wallpapers in the wallpapers directory, cycling through them in a random order.
"""
self.initialize_state()
while True:
for i, w in enumerate(self.current_wallpaper_list):
if i < self.current_wallpaper_index:
continue
logger.info(
f"Setting wallpaper {i+1}/{len(self.current_wallpaper_list)}: {w}"
)
self.set_wallpaper(w)
# update the state
self.current_wallpaper_index = i
self.save_state()
wait_time = random.randint(self.wait_min, self.wait_max)
logger.info(f"Waiting {wait_time} seconds...")
time.sleep(wait_time)
# reset the state
self.reset_state()
def save_state(self):
wallpaper_list = [w.as_posix() for w in self.current_wallpaper_list]
state = {
"current_wallpaper_list": wallpaper_list,
"current_wallpaper_index": self.current_wallpaper_index,
}
self.current_state.truncate(0)
self.current_state.write(json.dumps(state, indent=4))
self.current_state.flush()
def initialize_state(self):
self.current_state.seek(0)
data = self.current_state.read()
if not data:
logger.info("No state found, resetting...")
self.reset_state()
else:
logger.info("State found, reloading...")
state = json.loads(data)
wallpapers = [Path(w) for w in state["current_wallpaper_list"]]
self.current_wallpaper_list = wallpapers
self.current_wallpaper_index = state["current_wallpaper_index"]
def reset_state(self):
logger.info(f"Rescanning & shuffle wallpapers in {self.wallpapers_dir} ...")
wallpapers = list(
filter(
lambda x: x.suffix in self.image_extensions,
self.wallpapers_dir.iterdir(),
)
)
random.shuffle(wallpapers)
self.current_wallpaper_list = wallpapers
self.current_wallpaper_index = 0
def set_wallpaper(self, path: Path):
# check if we are running under x11 or wayland
if (
"WAYLAND_DISPLAY" in os.environ
or os.environ.get("XDG_SESSION_TYPE") == "wayland"
):
self.set_wallpaper_wayland(path)
else:
self.set_wallpaper_x11(path)
def set_wallpaper_x11(self, path: Path):
subprocess.run(["feh", "--bg-fill", path])
def set_wallpaper_wayland(self, path: Path):
# find all swaybg processes
swaybg_pids = subprocess.run(
["pgrep", "-f", "swaybg"], stdout=subprocess.PIPE
).stdout.decode("utf-8")
# run swaybg in the background, and make it running even after the parent process exits
subprocess.Popen(
["swaybg", "--output", "*", "--mode", "fill", "--image", path],
start_new_session=True,
)
time.sleep(1)
# kill all old swaybg processes
for pid in swaybg_pids.splitlines():
try:
os.kill(int(pid), 9)
except ProcessLookupError:
pass
def main():
wallpapers_dir = os.getenv("WALLPAPERS_DIR")
state_filepath = os.getenv("WALLPAPERS_STATE_FILEPATH")
if not wallpapers_dir:
raise Exception("WALLPAPERS_DIR not set")
if not state_filepath:
raise Exception("WALLPAPERS_STATE_FILEPATH not set")
image_postfix = (
".jpg",
".jpeg",
".png",
# ".gif",
# ".webp"
)
wait_min = int(os.getenv("WALLPAPER_WAIT_MIN", 60))
wait_max = int(os.getenv("WALLPAPER_WAIT_MAX", 300))
wallpaper_switcher = WallpaperSwitcher(
wait_min,
wait_max,
Path(wallpapers_dir).expanduser(),
Path(state_filepath).expanduser(),
image_postfix,
)
wallpaper_switcher.run()
if __name__ == "__main__":
main()
-53
View File
@@ -1,53 +0,0 @@
{
pkgs,
...
}:
{
home.packages = with pkgs; [
# firefox-wayland
nixpaks.firefox
];
programs = {
# source code: https://github.com/nix-community/home-manager/blob/master/modules/programs/chromium.nix
google-chrome = {
enable = true;
package = if pkgs.stdenv.isAarch64 then pkgs.chromium else pkgs.google-chrome;
# https://wiki.archlinux.org/title/Chromium#Native_Wayland_support
commandLineArgs = [
"--ozone-platform-hint=auto"
"--ozone-platform=wayland"
# make it use GTK_IM_MODULE if it runs with Gtk4, so fcitx5 can work with it.
# (only supported by chromium/chrome at this time, not electron)
"--gtk-version=4"
# make it use text-input-v1, which works for kwin 5.27 and weston
"--enable-wayland-ime"
# enable hardware acceleration - vulkan api
# "--enable-features=Vulkan"
];
};
vscode = {
enable = true;
package = pkgs.vscode.override {
isInsiders = false;
# https://wiki.archlinux.org/title/Wayland#Electron
commandLineArgs = [
"--ozone-platform-hint=auto"
"--ozone-platform=wayland"
# make it use GTK_IM_MODULE if it runs with Gtk4, so fcitx5 can work with it.
# (only supported by chromium/chrome at this time, not electron)
"--gtk-version=4"
# make it use text-input-v1, which works for kwin 5.27 and weston
"--enable-wayland-ime"
# TODO: fix https://github.com/microsoft/vscode/issues/187436
# still not works...
"--password-store=gnome" # use gnome-keyring as password store
];
};
};
};
}
-106
View File
@@ -1,106 +0,0 @@
# XDG stands for "Cross-Desktop Group", with X used to mean "cross".
# It's a bunch of specifications from freedesktop.org intended to standardize desktops and
# other GUI applications on various systems (primarily Unix-like) to be interoperable:
# https://www.freedesktop.org/wiki/Specifications/
{
config,
pkgs,
...
}:
{
home.packages = with pkgs; [
xdg-utils # provides cli tools such as `xdg-mime` `xdg-open`
xdg-user-dirs
];
xdg.configFile."mimeapps.list".force = true;
xdg = {
enable = true;
cacheHome = "${config.home.homeDirectory}/.cache";
configHome = "${config.home.homeDirectory}/.config";
dataHome = "${config.home.homeDirectory}/.local/share";
stateHome = "${config.home.homeDirectory}/.local/state";
# manage $XDG_CONFIG_HOME/mimeapps.list
# xdg search all desktop entries from $XDG_DATA_DIRS, check it by command:
# echo $XDG_DATA_DIRS
# the system-level desktop entries can be list by command:
# ls -l /run/current-system/sw/share/applications/
# the user-level desktop entries can be list by command(user ryan):
# ls /etc/profiles/per-user/ryan/share/applications/
mimeApps = {
enable = true;
# let `xdg-open` to open the url with the correct application.
defaultApplications =
let
browser = [
"google-chrome.desktop"
"firefox.desktop"
];
editor = [
"nvim.desktop"
"Helix.desktop"
"code.desktop"
"code-insiders.desktop"
];
in
{
"application/json" = browser;
"application/pdf" = browser; # TODO: pdf viewer
"text/html" = browser;
"text/xml" = browser;
"text/plain" = editor;
"application/xml" = browser;
"application/xhtml+xml" = browser;
"application/xhtml_xml" = browser;
"application/rdf+xml" = browser;
"application/rss+xml" = browser;
"application/x-extension-htm" = browser;
"application/x-extension-html" = browser;
"application/x-extension-shtml" = browser;
"application/x-extension-xht" = browser;
"application/x-extension-xhtml" = browser;
"application/x-wine-extension-ini" = editor;
# define default applications for some url schemes.
"x-scheme-handler/about" = browser; # open `about:` url with `browser`
"x-scheme-handler/ftp" = browser; # open `ftp:` url with `browser`
"x-scheme-handler/http" = browser;
"x-scheme-handler/https" = browser;
# https://github.com/microsoft/vscode/issues/146408
"x-scheme-handler/vscode" = [ "code-url-handler.desktop" ]; # open `vscode://` url with `code-url-handler.desktop`
"x-scheme-handler/vscode-insiders" = [ "code-insiders-url-handler.desktop" ]; # open `vscode-insiders://` url with `code-insiders-url-handler.desktop`
"x-scheme-handler/zoommtg" = [ "Zoom.desktop" ];
# all other unknown schemes will be opened by this default application.
# "x-scheme-handler/unknown" = editor;
"x-scheme-handler/tg" = [ "org.telegram.desktop.desktop " ];
"audio/*" = [ "mpv.desktop" ];
"video/*" = [ "mpv.desktop" ];
"image/*" = [ "imv-dir.desktop" ];
"image/gif" = [ "imv-dir.desktop" ];
"image/jpeg" = [ "imv-dir.desktop" ];
"image/png" = [ "imv-dir.desktop" ];
"image/webp" = [ "imv-dir.desktop" ];
"inode/directory" = [ "yazi.desktop" ];
};
associations.removed = {
# ......
};
};
userDirs = {
enable = true;
createDirectories = true;
extraConfig = {
XDG_SCREENSHOTS_DIR = "${config.xdg.userDirs.pictures}/Screenshots";
};
};
};
}
+23
View File
@@ -0,0 +1,23 @@
{ pkgs, lib, ... }:
{
# XDG autostart entries - ensures apps start after portal services are ready
xdg.autostart.enable = true;
# This fixes nixpak sandboxed apps (like firefox) accessing mapped folders correctly
xdg.autostart.entries = [
"${pkgs.foot}/share/applications/foot.desktop"
"${pkgs.alacritty}/share/applications/Alacritty.desktop"
"${pkgs.ghostty}/share/applications/com.mitchellh.ghostty.desktop"
"${pkgs.clash-verge-rev}/share/applications/clash-verge.desktop"
# nixpaks
"${pkgs.nixpaks.firefox}/share/applications/org.mozilla.firefox.desktop"
"${pkgs.nixpaks.telegram-desktop}/share/applications/org.telegram.desktop.desktop"
]
++ (
if pkgs.stdenv.isx86_64 then
[ "${pkgs.google-chrome}/share/applications/google-chrome.desktop" ]
else
[ "${pkgs.chromium}/share/applications/chromium-browser.desktop" ]
);
}

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