| 
									
										
										
										
											2024-06-18 11:32:08 -04:00
										 |  |  | { | 
					
						
							| 
									
										
										
										
											2025-04-10 13:57:12 -07:00
										 |  |  |   description = "zoo.dev modeling-app"; | 
					
						
							| 
									
										
										
										
											2024-06-18 11:32:08 -04:00
										 |  |  | 
 | 
					
						
							|  |  |  |   inputs = { | 
					
						
							|  |  |  |     nixpkgs.url = "github:NixOS/nixpkgs/nixpkgs-unstable"; | 
					
						
							| 
									
										
										
										
											2025-04-10 13:57:12 -07:00
										 |  |  |     rust-overlay.url = "github:oxalica/rust-overlay"; | 
					
						
							|  |  |  |     naersk.url = "github:nix-community/naersk"; | 
					
						
							| 
									
										
										
										
											2024-06-18 11:32:08 -04:00
										 |  |  |   }; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2025-04-10 13:57:12 -07:00
										 |  |  |   outputs = { | 
					
						
							|  |  |  |     self, | 
					
						
							|  |  |  |     nixpkgs, | 
					
						
							|  |  |  |     rust-overlay, | 
					
						
							|  |  |  |     naersk, | 
					
						
							|  |  |  |   }: let | 
					
						
							|  |  |  |     overlays = [ | 
					
						
							|  |  |  |       (import rust-overlay) | 
					
						
							|  |  |  |       (self: super: { | 
					
						
							|  |  |  |         rustToolchain = super.rust-bin.stable.latest.default.override { | 
					
						
							|  |  |  |           targets = ["wasm32-unknown-unknown"]; | 
					
						
							|  |  |  |           extensions = ["rustfmt" "llvm-tools-preview" "rust-src"]; | 
					
						
							|  |  |  |         }; | 
					
						
							| 
									
										
										
										
											2025-04-26 21:21:26 -07:00
										 |  |  | 
 | 
					
						
							|  |  |  |         # stand-alone nightly formatter so we get the fancy unstable flags | 
					
						
							|  |  |  |         nightlyRustfmt = super.rust-bin.selectLatestNightlyWith (toolchain: | 
					
						
							|  |  |  |           toolchain.default.override { | 
					
						
							|  |  |  |             extensions = ["rustfmt"]; # just the formatter | 
					
						
							|  |  |  |           }); | 
					
						
							| 
									
										
										
										
											2025-04-10 13:57:12 -07:00
										 |  |  |       }) | 
					
						
							|  |  |  |     ]; | 
					
						
							| 
									
										
										
										
											2024-06-18 11:32:08 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2025-04-10 13:57:12 -07:00
										 |  |  |     allSystems = [ | 
					
						
							|  |  |  |       "x86_64-linux" | 
					
						
							|  |  |  |       "aarch64-linux" | 
					
						
							|  |  |  |       "x86_64-darwin" | 
					
						
							|  |  |  |       "aarch64-darwin" | 
					
						
							|  |  |  |     ]; | 
					
						
							| 
									
										
										
										
											2024-06-18 11:32:08 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2025-04-10 13:57:12 -07:00
										 |  |  |     forAllSystems = f: | 
					
						
							|  |  |  |       nixpkgs.lib.genAttrs allSystems (system: | 
					
						
							|  |  |  |         f { | 
					
						
							|  |  |  |           pkgs = import nixpkgs { | 
					
						
							|  |  |  |             inherit overlays system; | 
					
						
							|  |  |  |           }; | 
					
						
							|  |  |  |           system = system; | 
					
						
							|  |  |  |         }); | 
					
						
							|  |  |  |   in { | 
					
						
							|  |  |  |     devShells = forAllSystems ({pkgs, ...}: { | 
					
						
							|  |  |  |       default = pkgs.mkShell { | 
					
						
							|  |  |  |         packages = | 
					
						
							|  |  |  |           (with pkgs; [ | 
					
						
							| 
									
										
										
										
											2024-06-18 11:32:08 -04:00
										 |  |  |             rustToolchain | 
					
						
							| 
									
										
										
										
											2025-04-26 21:21:26 -07:00
										 |  |  |             nightlyRustfmt | 
					
						
							| 
									
										
										
										
											2025-04-17 17:22:19 -07:00
										 |  |  |             cargo-criterion | 
					
						
							| 
									
										
										
										
											2024-06-18 11:32:08 -04:00
										 |  |  |             cargo-nextest | 
					
						
							| 
									
										
										
										
											2025-04-17 17:22:19 -07:00
										 |  |  |             cargo-sort | 
					
						
							| 
									
										
										
										
											2024-06-18 11:32:08 -04:00
										 |  |  |             just | 
					
						
							|  |  |  |             postgresql.lib | 
					
						
							|  |  |  |             openssl | 
					
						
							|  |  |  |             pkg-config | 
					
						
							|  |  |  |             nodejs_22 | 
					
						
							| 
									
										
										
										
											2024-08-16 07:15:42 -04:00
										 |  |  |             electron | 
					
						
							| 
									
										
										
										
											2024-08-16 12:09:02 -04:00
										 |  |  |             playwright-driver.browsers | 
					
						
							| 
									
										
										
										
											2025-05-06 20:04:34 -07:00
										 |  |  |             chromedriver | 
					
						
							| 
									
										
										
										
											2025-04-10 13:57:12 -07:00
										 |  |  |             wasm-pack | 
					
						
							|  |  |  |             python3Full | 
					
						
							|  |  |  |           ]) | 
					
						
							|  |  |  |           ++ pkgs.lib.optionals pkgs.stdenv.isDarwin (with pkgs; [ | 
					
						
							| 
									
										
										
										
											2025-04-08 12:06:47 -07:00
										 |  |  |             libiconv | 
					
						
							| 
									
										
										
										
											2024-06-18 11:32:08 -04:00
										 |  |  |             darwin.apple_sdk.frameworks.Security | 
					
						
							|  |  |  |           ]); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2025-04-10 13:57:12 -07:00
										 |  |  |         TARGET_CC = "${pkgs.stdenv.cc}/bin/${pkgs.stdenv.cc.targetPrefix}cc"; | 
					
						
							|  |  |  |         LIBCLANG_PATH = "${pkgs.libclang.lib}/lib"; | 
					
						
							| 
									
										
										
										
											2025-05-06 20:04:34 -07:00
										 |  |  |         ELECTRON_OVERRIDE_DIST_PATH = | 
					
						
							|  |  |  |           if pkgs.stdenv.isDarwin | 
					
						
							| 
									
										
										
										
											2025-05-13 21:36:52 -07:00
										 |  |  |           then "${pkgs.electron}/Applications/Electron.app/Contents/MacOS/" | 
					
						
							| 
									
										
										
										
											2025-05-06 20:04:34 -07:00
										 |  |  |           else "${pkgs.electron}/bin"; | 
					
						
							| 
									
										
										
										
											2025-04-10 13:57:12 -07:00
										 |  |  |         PLAYWRIGHT_SKIP_VALIDATE_HOST_REQUIREMENTS = true; | 
					
						
							|  |  |  |         PLAYWRIGHT_CHROMIUM_EXECUTABLE_PATH = "${pkgs.playwright-driver.browsers}/chromium-1091/chrome-linux/chrome"; | 
					
						
							|  |  |  |         PLAYWRIGHT_BROWSERS_PATH = "${pkgs.playwright-driver.browsers}"; | 
					
						
							|  |  |  |         NODE_ENV = "development"; | 
					
						
							| 
									
										
										
										
											2025-04-26 21:21:26 -07:00
										 |  |  |         RUSTFMT = "${pkgs.nightlyRustfmt}/bin/rustfmt"; | 
					
						
							| 
									
										
										
										
											2025-05-06 20:04:34 -07:00
										 |  |  |         CHROMEDRIVER = "${pkgs.chromedriver}/bin/chromedriver"; | 
					
						
							| 
									
										
										
										
											2025-04-10 13:57:12 -07:00
										 |  |  |       }; | 
					
						
							|  |  |  |     }); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     packages = forAllSystems ({ | 
					
						
							|  |  |  |       pkgs, | 
					
						
							|  |  |  |       system, | 
					
						
							|  |  |  |     }: let | 
					
						
							|  |  |  |       naersk-lib = pkgs.callPackage naersk { | 
					
						
							|  |  |  |         cargo = pkgs.rustToolchain; | 
					
						
							|  |  |  |         rustc = pkgs.rustToolchain; | 
					
						
							|  |  |  |       }; | 
					
						
							|  |  |  |     in { | 
					
						
							|  |  |  |       kcl-language-server = naersk-lib.buildPackage { | 
					
						
							|  |  |  |         pname = "kcl-language-server"; | 
					
						
							|  |  |  |         version = "0.1.0"; | 
					
						
							|  |  |  |         release = true; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         src = ./rust; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         cargoBuildOptions = opt: opt ++ ["-p" "kcl-language-server"]; | 
					
						
							|  |  |  |         buildInputs = [pkgs.openssl pkgs.pkg-config]; | 
					
						
							|  |  |  |       }; | 
					
						
							|  |  |  |       default = self.packages.${system}.kcl-language-server; | 
					
						
							|  |  |  |     }); | 
					
						
							|  |  |  |   }; | 
					
						
							| 
									
										
										
										
											2024-06-18 11:32:08 -04:00
										 |  |  | } |