|
111 | 111 | in |
112 | 112 | { |
113 | 113 | ############################################################ |
114 | | - # PACKAGES |
115 | | - ############################################################ |
116 | | - packages = rec { |
117 | | - # Build frontend first (needs network access) |
118 | | - frontend = pkgs.buildNpmPackage { |
119 | | - pname = "korppi-frontend"; |
120 | | - version = "0.1.0"; |
121 | | - src = ./.; |
122 | | - |
123 | | - npmDepsHash = "sha256-EQrl4cNLxpkv+2s9kqqP5aFrjOmQLGKqghONdM/p7UM="; |
124 | | - |
125 | | - buildPhase = '' |
126 | | - npm run build |
127 | | - ''; |
128 | | - |
129 | | - installPhase = '' |
130 | | - mkdir -p $out |
131 | | - cp -r dist $out/ |
132 | | - ''; |
133 | | - }; |
134 | | - |
135 | | - # Builds the Rust Tauri backend |
136 | | - korppi-bin = pkgs.rustPlatform.buildRustPackage { |
137 | | - pname = "korppi-prototype"; |
138 | | - version = "0.1.0"; |
139 | | - |
140 | | - src = ./.; |
141 | | - |
142 | | - cargoRoot = "src-tauri"; |
143 | | - |
144 | | - cargoLock = { |
145 | | - lockFile = ./src-tauri/Cargo.lock; |
146 | | - }; |
147 | | - |
148 | | - nativeBuildInputs = [ |
149 | | - pkgs.pkg-config |
150 | | - pkgs.cmake |
151 | | - ] ++ pkgs.lib.optionals pkgs.stdenv.isLinux [ |
152 | | - pkgs.mold |
153 | | - pkgs.clang |
154 | | - ]; |
155 | | - |
156 | | - buildInputs = commonDeps ++ darwinDeps ++ linuxDeps ++ [ |
157 | | - pkgs.bzip2 |
158 | | - ]; |
159 | | - |
160 | | - doCheck = false; |
161 | | - |
162 | | - RUSTFLAGS = pkgs.lib.optionalString pkgs.stdenv.isLinux "-C linker=clang -C link-arg=-fuse-ld=mold"; |
163 | | - |
164 | | - preBuild = '' |
165 | | - cp -r ${frontend}/dist ./dist |
166 | | - cd src-tauri |
167 | | - ''; |
168 | | - }; |
169 | | - |
170 | | - # Create AppImage using nix-bundle approach |
171 | | - appimage = pkgs.stdenv.mkDerivation { |
172 | | - pname = "korppi-appimage"; |
173 | | - version = "0.1.0"; |
174 | | - |
175 | | - nativeBuildInputs = [ pkgs.appimage-run pkgs.squashfsTools ]; |
176 | | - |
177 | | - # No source needed, we're wrapping an existing derivation |
178 | | - dontUnpack = true; |
179 | | - |
180 | | - buildPhase = '' |
181 | | - # Create a wrapper script that sets up the Nix environment |
182 | | - mkdir -p AppDir/usr/bin |
183 | | - |
184 | | - # Copy the binary |
185 | | - cp ${korppi-bin}/bin/korppi-prototype AppDir/usr/bin/korppi |
186 | | - |
187 | | - # Create desktop file |
188 | | - cat > AppDir/korppi.desktop <<EOF |
189 | | - [Desktop Entry] |
190 | | - Name=Korppi |
191 | | - Exec=korppi |
192 | | - Type=Application |
193 | | - Categories=Utility;Office; |
194 | | - Icon=korppi |
195 | | - Terminal=false |
196 | | - EOF |
197 | | - |
198 | | - # Create minimal icon |
199 | | - mkdir -p AppDir/usr/share/icons/hicolor/256x256/apps |
200 | | - echo '' > AppDir/usr/share/icons/hicolor/256x256/apps/korppi.png |
201 | | - |
202 | | - # Create AppRun that sets library paths |
203 | | - cat > AppDir/AppRun <<'APPRUN' |
204 | | - #!/bin/bash |
205 | | - SELF=$(readlink -f "$0") |
206 | | - HERE=$(dirname "$SELF") |
207 | | - export PATH="$HERE/usr/bin:$PATH" |
208 | | - export LD_LIBRARY_PATH="$HERE/usr/lib:$LD_LIBRARY_PATH" |
209 | | - exec "$HERE/usr/bin/korppi" "$@" |
210 | | - APPRUN |
211 | | - chmod +x AppDir/AppRun |
212 | | - |
213 | | - # Copy all required libraries from Nix store |
214 | | - mkdir -p AppDir/usr/lib |
215 | | - for lib in $(ldd ${korppi-bin}/bin/korppi-prototype | grep "=> /nix" | awk '{print $3}'); do |
216 | | - cp -L "$lib" AppDir/usr/lib/ 2>/dev/null || true |
217 | | - done |
218 | | - ''; |
219 | | - |
220 | | - installPhase = '' |
221 | | - mkdir -p $out |
222 | | - cp -r AppDir $out/ |
223 | | - # The actual AppImage creation would need appimagetool |
224 | | - # For now, output the AppDir which can be run directly |
225 | | - ''; |
226 | | - }; |
227 | | -
|
228 | | - default = korppi-bin; |
229 | | - }; |
230 | | -
|
231 | | - ############################################################ |
232 | | - # DEV SHELL |
| 114 | + # DEV SHELL - provides development environment |
| 115 | + # CI uses non-Nix approach for building releases |
233 | 116 | ############################################################ |
234 | 117 | devShells.default = pkgs.mkShell { |
235 | 118 | buildInputs = commonDeps ++ darwinDeps ++ linuxDeps ++ [ |
|
0 commit comments