-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathshell.nix
More file actions
169 lines (151 loc) · 3.7 KB
/
shell.nix
File metadata and controls
169 lines (151 loc) · 3.7 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
{ pkgs ? import <nixpkgs> {} }:
let
# FHS environment for running Wine/Proton binaries
fhs = pkgs.buildFHSEnv {
name = "wanda-fhs";
targetPkgs = pkgs: with pkgs; [
# Wine and winetricks
wineWowPackages.stable
winetricks
# 64-bit libraries Wine needs
# NOTE: libGL and vulkan-loader are NOT included here - we use the system's
# NVIDIA drivers via /run/opengl-driver to avoid Mesa/NVIDIA conflicts
freetype
fontconfig
libpng
libjpeg
xorg.libX11
xorg.libXcursor
xorg.libXrandr
xorg.libXi
xorg.libXinerama
xorg.libXext
xorg.libXxf86vm
xorg.libXrender
xorg.libXcomposite
xorg.libXfixes
# Audio
alsa-lib
libpulseaudio
# Networking
openssl
gnutls
# Misc
zlib
ncurses
libxkbcommon
];
multiPkgs = pkgs: with pkgs; [
# 32-bit libraries (multilib)
# NOTE: libGL and vulkan-loader removed - using system NVIDIA drivers
freetype
fontconfig
libpng
libjpeg
xorg.libX11
xorg.libXcursor
xorg.libXrandr
xorg.libXi
xorg.libXinerama
xorg.libXext
xorg.libXxf86vm
xorg.libXrender
xorg.libXcomposite
xorg.libXfixes
alsa-lib
libpulseaudio
openssl
gnutls
zlib
ncurses
];
runScript = "bash";
profile = ''
export WINEPREFIX="$HOME/.local/share/wanda/prefix"
# Use system's NVIDIA drivers instead of Mesa to avoid driver conflicts
# This is critical for stability - mixing Mesa userspace with NVIDIA kernel driver causes crashes
export LD_LIBRARY_PATH="/run/opengl-driver/lib:/run/opengl-driver-32/lib''${LD_LIBRARY_PATH:+:$LD_LIBRARY_PATH}"
export __GLX_VENDOR_LIBRARY_NAME=nvidia
export LIBVA_DRIVER_NAME=nvidia
# Vulkan ICD - use NVIDIA's
export VK_ICD_FILENAMES=/run/opengl-driver/share/vulkan/icd.d/nvidia_icd.x86_64.json:/run/opengl-driver-32/share/vulkan/icd.d/nvidia_icd.i686.json
'';
};
in
pkgs.mkShell {
name = "wanda-dev";
buildInputs = with pkgs; [
# Rust toolchain
rustc
cargo
rustfmt
clippy
rust-analyzer
# Tauri system dependencies
pkg-config
gtk3
webkitgtk_4_1
libappindicator-gtk3
librsvg
# Additional Tauri deps
openssl
glib
cairo
pango
gdk-pixbuf
atk
libsoup_3
# Node.js for frontend
nodejs_22
nodePackages.npm
# FHS environment for Wine/Proton
fhs
];
# Set up pkg-config path
PKG_CONFIG_PATH = with pkgs; lib.makeSearchPath "lib/pkgconfig" [
gtk3.dev
webkitgtk_4_1.dev
openssl.dev
glib.dev
cairo.dev
pango.dev
gdk-pixbuf.dev
atk.dev
libsoup_3.dev
];
# Library paths for Tauri linking
LD_LIBRARY_PATH = with pkgs; lib.makeLibraryPath [
gtk3
webkitgtk_4_1
libappindicator-gtk3
librsvg
libsoup_3
glib
cairo
pango
gdk-pixbuf
atk
openssl
];
shellHook = ''
echo ""
echo "=== WANDA Development Shell ==="
echo ""
echo "Build commands:"
echo " cargo build -p wanda-cli # Build CLI"
echo " cargo build -p wanda-gui # Build GUI"
echo " cargo build --release # Release build"
echo ""
echo "Run WANDA:"
echo " ./target/release/wanda -v init # Initialize with verbose output"
echo ""
echo "For Wine/Proton operations (FHS environment):"
echo " wanda-fhs # Enter FHS shell for Wine"
echo " wanda-fhs -c 'wine --version' # Run wine command"
echo ""
echo "GUI development:"
echo " cd crates/wanda-gui/frontend && npm install"
echo " cargo tauri dev"
echo ""
'';
}