|
4 | 4 | inputs = { |
5 | 5 | nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable"; |
6 | 6 | flake-utils.url = "github:numtide/flake-utils"; |
| 7 | + rust-overlay = { |
| 8 | + url = "github:oxalica/rust-overlay"; |
| 9 | + inputs.nixpkgs.follows = "nixpkgs"; |
| 10 | + }; |
7 | 11 | }; |
8 | 12 |
|
9 | | - outputs = { self, nixpkgs, flake-utils }: |
10 | | - flake-utils.lib.eachDefaultSystem (system: |
| 13 | + outputs = |
| 14 | + { |
| 15 | + self, |
| 16 | + nixpkgs, |
| 17 | + flake-utils, |
| 18 | + rust-overlay, |
| 19 | + }: |
| 20 | + flake-utils.lib.eachDefaultSystem ( |
| 21 | + system: |
11 | 22 | let |
12 | | - pkgs = nixpkgs.legacyPackages.${system}; |
| 23 | + overlays = [ |
| 24 | + # Rust |
| 25 | + (final: prev: { |
| 26 | + rust-bin = rust-overlay.lib.mkRustBin { distRoot = "https://rsproxy.cn/dist"; } prev; |
| 27 | + }) |
| 28 | + ]; |
| 29 | + pkgs = import nixpkgs { |
| 30 | + inherit system overlays; |
| 31 | + }; |
13 | 32 |
|
14 | 33 | # System dependencies for unrar and other libraries |
15 | 34 | buildInputs = with pkgs; [ |
16 | | - # Core build tools |
17 | | - rustc |
18 | | - cargo |
19 | | - rust-analyzer |
20 | | - rustfmt |
21 | | - clippy |
| 35 | + # Rust toolchain from rust-overlay |
| 36 | + pkgs.rust-bin.stable.latest.complete |
22 | 37 |
|
23 | 38 | # C/C++ build tools for native dependencies |
24 | 39 | clang |
|
33 | 48 | gcc |
34 | 49 | gcc-unwrapped |
35 | 50 |
|
36 | | - # GUI/X11 libraries for iced applications |
| 51 | + # Essential GUI libraries for iced applications |
37 | 52 | xorg.libX11 |
38 | 53 | xorg.libXcursor |
39 | 54 | xorg.libXrandr |
40 | 55 | xorg.libXi |
41 | | - xorg.libXext |
42 | | - xorg.libXfixes |
43 | | - xorg.libXrender |
44 | | - xorg.libXinerama |
45 | | - xorg.libXft |
46 | | - xorg.libXcomposite |
47 | | - xorg.libXdamage |
48 | | - xorg.libXtst |
49 | | - xorg.libXScrnSaver |
50 | 56 |
|
51 | 57 | # Wayland libraries |
52 | 58 | wayland |
53 | 59 | wayland-protocols |
54 | 60 | libxkbcommon |
| 61 | + xkeyboard_config |
55 | 62 |
|
56 | 63 | # Additional libraries that might be needed |
57 | 64 | openssl |
|
64 | 71 | libGL |
65 | 72 | libglvnd |
66 | 73 | mesa |
67 | | - libdrm |
68 | 74 | ]; |
69 | 75 |
|
70 | 76 | # Native build inputs for linking |
|
86 | 92 | export LIBCLANG_PATH="${pkgs.llvmPackages.libclang.lib}/lib" |
87 | 93 | export LD_LIBRARY_PATH="${pkgs.llvmPackages.libclang.lib}/lib:$LD_LIBRARY_PATH" |
88 | 94 |
|
89 | | - # GUI application library paths for Hyprland/Wayland |
90 | | - export LD_LIBRARY_PATH="${pkgs.libGL}/lib:${pkgs.fontconfig}/lib:${pkgs.freetype}/lib:$LD_LIBRARY_PATH" |
91 | | -
|
92 | | - # Don't override existing display environment variables in Hyprland |
93 | | - # Let the native Hyprland/Wayland environment take precedence |
| 95 | + # Essential GUI library paths including Wayland |
| 96 | + export LD_LIBRARY_PATH="${pkgs.wayland}/lib:${pkgs.libxkbcommon}/lib:${pkgs.libGL}/lib:${pkgs.fontconfig}/lib:${pkgs.freetype}/lib:$LD_LIBRARY_PATH" |
| 97 | + export XKB_CONFIG_ROOT="${pkgs.xkeyboard_config}/share/X11/xkb" |
94 | 98 |
|
95 | | - echo "GUI libraries loaded. Ready for Hyprland/Wayland environment." |
96 | | - echo "Run: cargo run --bin bms-resource-toolbox-gui" |
| 99 | + echo "Ready to run GUI application." |
| 100 | + echo "Run: cargo run" |
97 | 101 | ''; |
98 | 102 | in |
99 | 103 | { |
|
103 | 107 |
|
104 | 108 | # Environment variables for Rust development |
105 | 109 | env = { |
106 | | - RUST_SRC_PATH = "${pkgs.rust.packages.stable.rustPlatform.rustLibSrc}"; |
| 110 | + RUST_SRC_PATH = "${pkgs.rust-bin.stable.latest.complete}/lib/rustlib/src/rust/library"; |
107 | 111 | }; |
108 | 112 | }; |
109 | 113 |
|
110 | 114 | # Formatter for nix files |
111 | | - formatter = pkgs.nixpkgs-fmt; |
| 115 | + formatter = pkgs.nixfmt-tree; |
112 | 116 | } |
113 | 117 | ); |
114 | 118 | } |
0 commit comments