This repository has no description
0

Configure Feed

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

inline_ipld / flake.nix
8.0 kB 253 lines
1{ 2 description = "inline_ipld"; 3 4 inputs = { 5 nixpkgs.url = "nixpkgs/nixos-24.11"; 6 nixos-unstable.url = "nixpkgs/nixos-unstable-small"; 7 8 command-utils.url = "github:expede/nix-command-utils"; 9 flake-utils.url = "github:numtide/flake-utils"; 10 11 rust-overlay = { 12 url = "github:oxalica/rust-overlay"; 13 inputs.nixpkgs.follows = "nixpkgs"; 14 inputs.flake-utils.follows = "flake-utils"; 15 }; 16 }; 17 18 outputs = { 19 self, 20 nixpkgs, 21 nixos-unstable, 22 command-utils, 23 flake-utils, 24 rust-overlay, 25 } @ inputs: 26 flake-utils.lib.eachDefaultSystem (system: 27 let 28 pkgs = import nixpkgs { 29 inherit system; 30 overlays = [ 31 (import rust-overlay) 32 ]; 33 }; 34 35 unstable = import nixos-unstable { 36 inherit system; 37 }; 38 39 rust-toolchain = 40 (pkgs.rust-bin.fromRustupToolchainFile ./rust-toolchain.toml).override { 41 extensions = [ 42 "cargo" 43 "clippy" 44 "llvm-tools-preview" 45 "rust-src" 46 "rust-std" 47 "rustfmt" 48 ]; 49 50 targets = [ 51 "wasm32-unknown-unknown" 52 ]; 53 }; 54 55 nightly-rustfmt = pkgs.rust-bin.nightly.latest.rustfmt; 56 57 format-pkgs = [ 58 pkgs.nixpkgs-fmt 59 pkgs.alejandra 60 ]; 61 62 darwin-installs = [ 63 pkgs.darwin.apple_sdk.frameworks.Security 64 pkgs.darwin.apple_sdk.frameworks.CoreFoundation 65 pkgs.darwin.apple_sdk.frameworks.Foundation 66 ]; 67 68 cargo-installs = [ 69 pkgs.cargo-bootimage 70 unstable.cargo-component 71 pkgs.cargo-criterion 72 pkgs.cargo-deny 73 pkgs.cargo-expand 74 pkgs.cargo-outdated 75 pkgs.cargo-sort 76 pkgs.cargo-udeps 77 pkgs.cargo-watch 78 pkgs.llvmPackages.bintools 79 pkgs.twiggy 80 pkgs.wasm-tools 81 ]; 82 83 cargo = "${pkgs.cargo}/bin/cargo"; 84 node = "${unstable.nodejs_20}/bin/node"; 85 wasm-pack = "${pkgs.wasm-pack}/bin/wasm-pack"; 86 wasm-opt = "${pkgs.binaryen}/bin/wasm-opt"; 87 88 cmd = command-utils.cmd.${system}; 89 90 release = { 91 "release:host" = cmd "Build release for ${system}" 92 "${cargo} build --release"; 93 94 "release:wasm:web" = cmd "Build release for wasm32-unknown-unknown with web bindings" 95 "${wasm-pack} build --release --target=web"; 96 97 "release:wasm:nodejs" = cmd "Build release for wasm32-unknown-unknown with Node.js bindgings" 98 "${wasm-pack} build --release --target=nodejs"; 99 }; 100 101 build = { 102 "build:host" = cmd "Build for ${system}" 103 "${cargo} build"; 104 105 "build:wasm:web" = cmd "Build for wasm32-unknown-unknown with web bindings" 106 "${wasm-pack} build --dev --target=web"; 107 108 "build:wasm:nodejs" = cmd "Build for wasm32-unknown-unknown with Node.js bindgings" 109 "${wasm-pack} build --dev --target=nodejs"; 110 111 "build:node" = cmd "Build JS-wrapped Wasm library" 112 "${pkgs.nodePackages.pnpm}/bin/pnpm install && ${node} run build"; 113 114 "build:wasi" = cmd "Build for Wasm32-WASI" 115 "${cargo} build --target wasm32-wasi"; 116 }; 117 118 bench = { 119 "bench" = cmd "Run benchmarks, including test utils" 120 "${cargo} bench --features test_utils"; 121 122 # FIXME align with `bench`? 123 "bench:host" = cmd "Run host Criterion benchmarks" 124 "${cargo} criterion"; 125 126 "bench:host:open" = cmd "Open host Criterion benchmarks in browser" 127 "${pkgs.xdg-utils}/bin/xdg-open ./target/criterion/report/index.html"; 128 }; 129 130 lint = { 131 "lint" = cmd "Run Clippy" 132 "${cargo} clippy"; 133 134 "lint:pedantic" = cmd "Run Clippy pedantically" 135 "${cargo} clippy -- -W clippy::pedantic"; 136 137 "lint:fix" = cmd "Apply non-pendantic Clippy suggestions" 138 "${cargo} clippy --fix"; 139 }; 140 141 watch = { 142 "watch:build:host" = cmd "Rebuild host target on save" 143 "${cargo} watch --clear"; 144 145 "watch:build:wasm" = cmd "Rebuild Wasm target on save" 146 "${cargo} watch --clear --features=serde -- cargo build --target=wasm32-unknown-unknown"; 147 148 "watch:lint" = cmd "Lint on save" 149 "${cargo} watch --clear --exec clippy"; 150 151 "watch:lint:pedantic" = cmd "Pedantic lint on save" 152 "${cargo} watch --clear --exec 'clippy -- -W clippy::pedantic'"; 153 154 "watch:test:host" = cmd "Run all host tests on save" 155 "${cargo} watch --clear --exec 'test --all-features'"; 156 157 "watch:test:docs" = cmd "Run all host tests on save" 158 "${cargo} watch --clear --exec 'test --doc --all-features'"; 159 160 "watch:test:wasm" = cmd "Run all Wasm tests on save" 161 "${cargo} watch --clear --exec 'test --all-features --target=wasm32-unknown-unknown'"; 162 }; 163 164 test = { 165 "test:all" = cmd "Run Cargo tests" 166 "test:host && test:docs && test:wasm"; 167 168 "test:host" = cmd "Run Cargo tests for host target" 169 "${cargo} test --features=test_utils"; 170 171 "test:wasm" = cmd "Run wasm-pack tests on all targets" 172 "test:wasm:node && test:wasm:chrome"; 173 174 "test:wasm:node" = cmd "Run wasm-pack tests in Node.js" 175 "${wasm-pack} test --node"; 176 177 "test:wasm:chrome" = cmd "Run wasm-pack tests in headless Chrome" 178 "${wasm-pack} test --headless --chrome"; 179 180 "test:docs" = cmd "Run Cargo doctests" 181 "${cargo} test --doc --features=test_utils"; 182 }; 183 184 docs = { 185 "docs:build:host" = cmd "Refresh the docs" 186 "${cargo} doc"; 187 188 "docs:build:wasm" = cmd "Refresh the docs with the wasm32-unknown-unknown target" 189 "${cargo} doc --target=wasm32-unknown-unknown"; 190 191 "docs:open:host" = cmd "Open refreshed docs" 192 "${cargo} doc --open"; 193 194 "docs:open:wasm" = cmd "Open refreshed docs" 195 "${cargo} doc --open --target=wasm32-unknown-unknown"; 196 }; 197 198 command_menu = command-utils.commands.${system} 199 (release // build // bench // lint // watch // test // docs); 200 201 in rec { 202 devShells.default = pkgs.mkShell { 203 name = "inline_ipld"; 204 205 nativeBuildInputs = [ 206 rust-toolchain 207 self.packages.${system}.irust 208 (pkgs.hiPrio pkgs.rust-bin.nightly.latest.rustfmt) 209 210 pkgs.binaryen 211 pkgs.wasm-pack 212 pkgs.protobuf 213 214 pkgs.chromedriver 215 pkgs.nodejs_20 216 pkgs.nodePackages.pnpm 217 218 command_menu 219 ] 220 ++ format-pkgs 221 ++ cargo-installs 222 ++ pkgs.lib.optionals pkgs.stdenv.isDarwin darwin-installs; 223 224 shellHook = '' 225 export RUSTC_WRAPPER="${pkgs.sccache}/bin/sccache" 226 unset SOURCE_DATE_EPOCH 227 menu 228 '' 229 + pkgs.lib.strings.optionalString pkgs.stdenv.isDarwin '' 230 # See https://github.com/nextest-rs/nextest/issues/267 231 export DYLD_FALLBACK_LIBRARY_PATH="$(rustc --print sysroot)/lib" 232 export NIX_LDFLAGS="-F${pkgs.darwin.apple_sdk.frameworks.CoreFoundation}/Library/Frameworks -framework CoreFoundation $NIX_LDFLAGS"; 233 ''; 234 }; 235 236 formatter = pkgs.alejandra; 237 238 packages.irust = pkgs.rustPlatform.buildRustPackage rec { 239 pname = "irust"; 240 version = "1.71.19"; 241 src = pkgs.fetchFromGitHub { 242 owner = "sigmaSd"; 243 repo = "IRust"; 244 rev = "irust@${version}"; 245 sha256 = "sha256-R3EAovCI5xDCQ5R69nMeE6v0cGVcY00O3kV8qHf0akc="; 246 }; 247 248 doCheck = false; 249 cargoSha256 = "sha256-2aVCNz/Lw7364B5dgGaloVPcQHm2E+b/BOxF6Qlc8Hs="; 250 }; 251 } 252 ); 253}