atproto Thingiverse but good
0

Configure Feed

Select the types of activity you want to include in your feed.

polymodel / flake.nix
3.9 kB 132 lines
1{ 2 description = "polymodel: AT Protocol-native model/project sharing app built with Rust/Dioxus/Jacquard"; 3 4 inputs = { 5 nixpkgs.url = "github:NixOS/nixpkgs/nixpkgs-unstable"; 6 flake-utils.url = "github:numtide/flake-utils"; 7 rust-overlay.url = "github:oxalica/rust-overlay"; 8 # Use nixpkgs dioxus-cli; do not import the upstream Dioxus flake because it may be ahead of Cargo.toml. 9 10 11 12 }; 13 14 outputs = { 15 self, 16 nixpkgs, 17 flake-utils, 18 rust-overlay, 19 20 ... 21 }: 22 flake-utils.lib.eachDefaultSystem (system: let 23 pkgs = import nixpkgs { 24 inherit system; 25 overlays = [ 26 (import rust-overlay) 27 28 29 30 ]; 31 }; 32 33 rustToolchain = pkgs.rust-bin.selectLatestNightlyWith (toolchain: 34 toolchain.default.override { 35 targets = ["wasm32-unknown-unknown"]; 36 extensions = [ 37 "rust-src" 38 "rust-analyzer" 39 "clippy" 40 "rustfmt" 41 ]; 42 }); 43 in { 44 devShells.default = pkgs.mkShell { 45 packages = with pkgs; [ 46 rustToolchain 47 rust-analyzer 48 cargo-nextest 49 cargo-insta 50 cargo-bloat 51 # Provides the `cargo sqlx` subcommand (package name in nixpkgs is sqlx-cli). 52 sqlx-cli 53 54 dioxus-cli 55 wasm-bindgen-cli 56 wasm-pack 57 binaryen.out 58 wabt 59 twiggy 60 61 llvmPackages_18.clang-unwrapped 62 llvmPackages_18.llvm 63 llvmPackages_18.libclang 64 llvmPackages_18.bintools-unwrapped 65 66 sqlite 67 pkg-config 68 openssl 69 patchelf 70 71 nodejs 72 esbuild 73 chromium 74 chromedriver 75 playwright-driver.browsers 76 77 just 78 jq 79 nixd 80 alejandra 81 ]; 82 83 nativeBuildInputs = with pkgs; [ 84 llvmPackages_18.clang-unwrapped 85 llvmPackages_18.bintools-unwrapped 86 rustPlatform.bindgenHook 87 ]; 88 89 buildInputs = with pkgs; 90 [ 91 sqlite 92 pkg-config 93 openssl 94 ] 95 ++ lib.optionals stdenv.isDarwin [ 96 libiconv 97 ]; 98 99 RUST_BACKTRACE = "1"; 100 NIX_LD_LIBRARY_PATH = pkgs.lib.makeLibraryPath [ 101 pkgs.stdenv.cc.cc 102 pkgs.openssl 103 pkgs.sqlite 104 ]; 105 NIX_LD = pkgs.lib.fileContents "${pkgs.stdenv.cc}/nix-support/dynamic-linker"; 106 107 PLAYWRIGHT_BROWSERS_PATH = "${pkgs.playwright-driver.browsers}"; 108 PLAYWRIGHT_SKIP_BROWSER_DOWNLOAD = "1"; 109 PLAYWRIGHT_SKIP_VALIDATE_HOST_REQUIREMENTS = true; 110 PLAYWRIGHT_HOST_PLATFORM_OVERRIDE = "ubuntu-24.04"; 111 112 shellHook = '' 113 export PATH="${pkgs.dioxus-cli}/bin:${pkgs.wasm-bindgen-cli}/bin:$PATH"; export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:$NIX_LD_LIBRARY_PATH" 114 export CARGO_TARGET_WASM32_UNKNOWN_UNKNOWN_RUNNER="wasm-bindgen-test-runner" 115 export CHROME="${pkgs.chromium}/bin/chromium" 116 export CC_wasm32_unknown_unknown="${pkgs.llvmPackages_18.clang-unwrapped}/bin/clang" 117 export AR_wasm32_unknown_unknown="${pkgs.llvmPackages_18.bintools-unwrapped}/bin/llvm-ar" 118 119 CLANG_MAJOR_VERSION="18" 120 CLANG_RESOURCE_DIR="${pkgs.llvmPackages_18.clang-unwrapped}/lib/clang/$CLANG_MAJOR_VERSION" 121 LIBCLANG_INCLUDE="${pkgs.llvmPackages_18.libclang.lib}/lib/clang/$CLANG_MAJOR_VERSION/include" 122 123 export LIBCLANG_PATH="${pkgs.llvmPackages_18.libclang.lib}/lib" 124 export BINDGEN_EXTRA_CLANG_ARGS="-isystem ${pkgs.glibc.dev}/include -isystem $LIBCLANG_INCLUDE" 125 export CFLAGS_wasm32_unknown_unknown="-isystem $LIBCLANG_INCLUDE -resource-dir $CLANG_RESOURCE_DIR" 126 export CPPFLAGS="-isystem $LIBCLANG_INCLUDE -resource-dir $CLANG_RESOURCE_DIR" 127 128 echo "polymodel dev shell: Rust + Dioxus + Jacquard + SQLite + Playwright" 129 ''; 130 }; 131 }); 132}