This repository has no description
0

Configure Feed

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

core / flake.nix
23 kB 654 lines
1{ 2 description = "atproto github"; 3 4 inputs = { 5 nixpkgs.url = "github:nixos/nixpkgs/nixos-26.05"; 6 microvm = { 7 url = "github:microvm-nix/microvm.nix"; 8 inputs.nixpkgs.follows = "nixpkgs"; 9 }; 10 fenix = { 11 url = "github:nix-community/fenix"; 12 inputs.nixpkgs.follows = "nixpkgs"; 13 }; 14 gomod2nix = { 15 url = "github:nix-community/gomod2nix"; 16 inputs.nixpkgs.follows = "nixpkgs"; 17 }; 18 flake-compat = { 19 url = "https://git.lix.systems/lix-project/flake-compat/archive/main.tar.gz"; 20 flake = false; 21 }; 22 indigo = { 23 url = "github:oppiliappan/indigo"; 24 flake = false; 25 }; 26 htmx-src = { 27 url = "https://cdn.jsdelivr.net/npm/htmx.org@2.0.10/dist/htmx.min.js"; 28 flake = false; 29 }; 30 htmx-ws-src = { 31 url = "https://cdn.jsdelivr.net/npm/htmx-ext-ws@2.0.4"; 32 flake = false; 33 }; 34 lucide-src = { 35 url = "https://github.com/lucide-icons/lucide/releases/download/0.536.0/lucide-icons-0.536.0.zip"; 36 flake = false; 37 }; 38 inter-fonts-src = { 39 url = "https://github.com/rsms/inter/releases/download/v4.1/Inter-4.1.zip"; 40 flake = false; 41 }; 42 actor-typeahead-src = { 43 url = "git+https://tangled.org/@jakelazaroff.com/actor-typeahead"; 44 flake = false; 45 }; 46 mermaid-src = { 47 url = "https://cdn.jsdelivr.net/npm/mermaid@11.12.3/dist/mermaid.min.js"; 48 flake = false; 49 }; 50 hls-src = { 51 url = "https://cdn.jsdelivr.net/npm/hls.js@1.5.13/dist/hls.min.js"; 52 flake = false; 53 }; 54 mathjax-src = { 55 url = "https://cdn.jsdelivr.net/npm/mathjax@4.1.2/tex-svg.js"; 56 flake = false; 57 }; 58 tailwindcss-animated-src = { 59 url = "https://registry.npmjs.org/tailwindcss-animated/-/tailwindcss-animated-1.1.2.tgz"; 60 flake = false; 61 }; 62 ibm-plex-mono-src = { 63 url = "https://github.com/IBM/plex/releases/download/%40ibm%2Fplex-mono%401.1.0/ibm-plex-mono.zip"; 64 flake = false; 65 }; 66 sqlite-lib-src = { 67 url = "https://sqlite.org/2024/sqlite-amalgamation-3450100.zip"; 68 flake = false; 69 }; 70 fetch-tangled = { 71 url = "git+https://tangled.org/isabelroses.com/fetch-tangled"; 72 inputs.nixpkgs.follows = "nixpkgs"; 73 }; 74 }; 75 76 outputs = { 77 self, 78 nixpkgs, 79 fenix, 80 gomod2nix, 81 indigo, 82 htmx-src, 83 htmx-ws-src, 84 lucide-src, 85 inter-fonts-src, 86 sqlite-lib-src, 87 ibm-plex-mono-src, 88 actor-typeahead-src, 89 mermaid-src, 90 hls-src, 91 microvm, 92 fetch-tangled, 93 mathjax-src, 94 tailwindcss-animated-src, 95 ... 96 }: let 97 supportedSystems = ["x86_64-linux" "x86_64-darwin" "aarch64-linux" "aarch64-darwin"]; 98 forAllSystems = nixpkgs.lib.genAttrs supportedSystems; 99 nixpkgsFor = forAllSystems (system: 100 import nixpkgs { 101 inherit system; 102 overlays = [fetch-tangled.overlays.default]; 103 }); 104 105 mkPackageSet = pkgs: 106 pkgs.lib.makeScope pkgs.newScope (self: { 107 src = let 108 fs = pkgs.lib.fileset; 109 in 110 fs.toSource { 111 root = ./.; 112 fileset = fs.difference (fs.intersection (fs.gitTracked ./.) (fs.fileFilter (file: !(file.hasExt "nix")) ./.)) (fs.maybeMissing ./.jj); 113 }; 114 rustSrc = let 115 fs = pkgs.lib.fileset; 116 in 117 fs.toSource { 118 root = ./.; 119 fileset = 120 fs.intersection 121 (fs.fromSource self.src) 122 (fs.unions [ 123 ./Cargo.toml 124 ./Cargo.lock 125 ./lexicons 126 ./crates 127 ./shuttle 128 ./bobbin 129 ./knot2 130 ]); 131 }; 132 buildGoApplication = 133 (self.callPackage "${gomod2nix}/builder" { 134 gomod2nix = gomod2nix.legacyPackages.${pkgs.stdenv.hostPlatform.system}.gomod2nix; 135 }).buildGoApplication; 136 rustPlatform = pkgs.makeRustPlatform { 137 inherit (fenix.packages.${pkgs.stdenv.hostPlatform.system}.stable) rustc cargo; 138 }; 139 rustPlatformStatic = let 140 system = pkgs.stdenv.hostPlatform.system; 141 muslTarget = pkgs.pkgsStatic.stdenv.hostPlatform.rust.rustcTarget; 142 toolchain = fenix.packages.${system}.combine [ 143 fenix.packages.${system}.stable.cargo 144 fenix.packages.${system}.stable.rustc 145 fenix.packages.${system}.targets.${muslTarget}.stable.rust-std 146 ]; 147 in 148 pkgs.pkgsStatic.makeRustPlatform { 149 cargo = toolchain; 150 rustc = toolchain; 151 }; 152 modules = ./nix/gomod2nix.toml; 153 sqlite-lib = self.callPackage ./nix/pkgs/sqlite-lib.nix { 154 inherit sqlite-lib-src; 155 }; 156 lexgen = self.callPackage ./nix/pkgs/lexgen.nix {inherit indigo;}; 157 goat = self.callPackage ./nix/pkgs/goat.nix {inherit indigo;}; 158 appview-static-files = self.callPackage ./nix/pkgs/appview-static-files.nix { 159 inherit htmx-src htmx-ws-src lucide-src inter-fonts-src ibm-plex-mono-src actor-typeahead-src mermaid-src hls-src mathjax-src tailwindcss-animated-src; 160 }; 161 appview = self.callPackage ./nix/pkgs/appview.nix {}; 162 blog = self.callPackage ./nix/pkgs/blog.nix {}; 163 docs = self.callPackage ./nix/pkgs/docs.nix { 164 inherit inter-fonts-src ibm-plex-mono-src lucide-src tailwindcss-animated-src; 165 inherit (pkgs) pagefind; 166 }; 167 spindle = self.callPackage ./nix/pkgs/spindle.nix {}; 168 shuttle = self.callPackage ./nix/pkgs/shuttle.nix { 169 src = self.rustSrc; 170 }; 171 shuttle-static = self.callPackage ./nix/pkgs/shuttle.nix { 172 src = self.rustSrc; 173 rustPlatform = self.rustPlatformStatic; 174 }; 175 knot-unwrapped = self.callPackage ./nix/pkgs/knot-unwrapped.nix {}; 176 knot = self.callPackage ./nix/pkgs/knot.nix {}; 177 knot-rs = self.callPackage ./nix/pkgs/knot-crate.nix { 178 src = self.rustSrc; 179 crate = "knot-server"; 180 }; 181 knot-migrate = self.callPackage ./nix/pkgs/knot-crate.nix { 182 src = self.rustSrc; 183 crate = "knot-migrate"; 184 }; 185 dolly = self.callPackage ./nix/pkgs/dolly.nix {}; 186 tap = self.callPackage ./nix/pkgs/tap.nix {}; 187 knotmirror = self.callPackage ./nix/pkgs/knotmirror.nix {}; 188 bobbin = self.callPackage ./nix/pkgs/bobbin.nix {}; 189 zoekt-webserver = self.callPackage ./nix/pkgs/zoekt-webserver.nix {}; 190 zoekt-tngl-indexserver = self.callPackage ./nix/pkgs/zoekt-tngl-indexserver.nix {}; 191 }); 192 in { 193 overlays.default = final: prev: { 194 inherit 195 (mkPackageSet final) 196 lexgen 197 goat 198 sqlite-lib 199 spindle 200 shuttle 201 knot-unwrapped 202 knot 203 knot-rs 204 knot-migrate 205 appview 206 docs 207 dolly 208 tap 209 knotmirror 210 bobbin 211 zoekt-webserver 212 zoekt-tngl-indexserver 213 ; 214 }; 215 216 packages = forAllSystems (system: let 217 pkgs = nixpkgsFor.${system}; 218 linuxPkgs = nixpkgsFor."x86_64-linux"; 219 packages = mkPackageSet pkgs; 220 staticPackages = mkPackageSet pkgs.pkgsStatic; 221 crossPackages = mkPackageSet pkgs.pkgsCross.gnu64.pkgsStatic; 222 in { 223 inherit 224 (packages) 225 appview 226 appview-static-files 227 blog 228 lexgen 229 goat 230 spindle 231 knot 232 knot-unwrapped 233 knot-rs 234 knot-migrate 235 sqlite-lib 236 docs 237 shuttle 238 shuttle-static 239 dolly 240 tap 241 knotmirror 242 bobbin 243 zoekt-webserver 244 zoekt-tngl-indexserver 245 ; 246 247 pkgsStatic-appview = staticPackages.appview; 248 pkgsStatic-knot = staticPackages.knot; 249 pkgsStatic-knot-unwrapped = staticPackages.knot-unwrapped; 250 pkgsStatic-spindle = staticPackages.spindle; 251 pkgsStatic-sqlite-lib = staticPackages.sqlite-lib; 252 pkgsStatic-dolly = staticPackages.dolly; 253 254 pkgsCross-gnu64-pkgsStatic-appview = crossPackages.appview; 255 pkgsCross-gnu64-pkgsStatic-knot = crossPackages.knot; 256 pkgsCross-gnu64-pkgsStatic-knot-unwrapped = crossPackages.knot-unwrapped; 257 pkgsCross-gnu64-pkgsStatic-spindle = crossPackages.spindle; 258 pkgsCross-gnu64-pkgsStatic-dolly = crossPackages.dolly; 259 260 treefmt-wrapper = pkgs.treefmt.withConfig { 261 settings.formatter = { 262 alejandra = { 263 command = pkgs.lib.getExe pkgs.alejandra; 264 includes = ["*.nix"]; 265 }; 266 267 gofmt = { 268 command = pkgs.lib.getExe' pkgs.go "gofmt"; 269 options = ["-w"]; 270 includes = ["*.go"]; 271 }; 272 273 rustfmt = { 274 command = pkgs.lib.getExe' fenix.packages.${system}.stable.rustfmt "rustfmt"; 275 options = ["--edition" "2024"]; 276 includes = ["*.rs"]; 277 excludes = ["**/src/_lex/**"]; 278 }; 279 280 # prettier = let 281 # wrapper = pkgs.runCommandLocal "prettier-wrapper" {nativeBuildInputs = [pkgs.makeWrapper];} '' 282 # makeWrapper ${pkgs.prettier}/bin/prettier "$out" --add-flags "--plugin=${pkgs.prettier-plugin-go-template}/lib/node_modules/prettier-plugin-go-template/lib/index.js" 283 # ''; 284 # in { 285 # command = wrapper; 286 # options = ["-w"]; 287 # includes = ["*.html"]; 288 # # causes Go template plugin errors: https://github.com/NiklasPor/prettier-plugin-go-template/issues/120 289 # excludes = ["appview/pages/templates/layouts/repobase.html" "appview/pages/templates/repo/tags.html"]; 290 # }; 291 }; 292 }; 293 294 spindle-nixos-image = linuxPkgs.callPackage ./nix/pkgs/spindle-nixos-image.nix { 295 nixosSystem = self.nixosConfigurations.spindle-nixos; 296 }; 297 spindle-nixos-image-tarball = linuxPkgs.runCommand "spindle-nixos-image-tarball.tar.gz" {} '' 298 tar -S -C ${self.packages.${system}.spindle-nixos-image} -h -czf $out . 299 ''; 300 301 spindle-alpine-image = let 302 branch = "3.24"; 303 version = "${branch}.0"; 304 arch = "x86_64"; 305 cdn = "https://dl-cdn.alpinelinux.org/alpine/v${branch}/releases/${arch}"; 306 307 shuttle = (mkPackageSet linuxPkgs).shuttle-static; 308 in 309 linuxPkgs.callPackage ./nix/pkgs/spindle-alpine-image.nix { 310 inherit arch shuttle; 311 repositories = [ 312 "https://dl-cdn.alpinelinux.org/alpine/v${branch}/main" 313 "https://dl-cdn.alpinelinux.org/alpine/v${branch}/community" 314 ]; 315 rootfs = linuxPkgs.fetchurl { 316 url = "${cdn}/alpine-minirootfs-${version}-${arch}.tar.gz"; 317 hash = "sha256-3poRwODn6clNs+2K97RQ6vwLE2h71+kZnVUFDyCqCok="; 318 }; 319 kernel = linuxPkgs.fetchurl { 320 url = "${cdn}/netboot-${version}/vmlinuz-virt"; 321 hash = "sha256-Hmv5Ancgx1w+0NeRcfIbV5HuQMqXldB8fG4E3F6irpA="; 322 }; 323 initramfs = linuxPkgs.fetchurl { 324 url = "${cdn}/netboot-${version}/initramfs-virt"; 325 hash = "sha256-ZCWGSaVMOYOmLz1Gwsf2RhYarMqk+tFVA6MMDWiHVJQ="; 326 }; 327 modloop = linuxPkgs.fetchurl { 328 url = "${cdn}/netboot-${version}/modloop-virt"; 329 hash = "sha256-p3yO7yU28k04iT01sOzhDmEYi+Yl7VZs5r3RYsWCBX0="; 330 }; 331 }; 332 spindle-alpine-image-tarball = linuxPkgs.runCommand "spindle-alpine-image-tarball.tar.gz" {} '' 333 tar -S -C ${self.packages.${system}.spindle-alpine-image} -h -czf $out . 334 ''; 335 }); 336 defaultPackage = forAllSystems (system: self.packages.${system}.appview); 337 devShells = forAllSystems (system: let 338 pkgs = nixpkgsFor.${system}; 339 packages' = self.packages.${system}; 340 tailwindcss-plugins = pkgs.linkFarm "tailwindcss-plugins" [ 341 { 342 name = "tailwindcss-animated"; 343 path = tailwindcss-animated-src; 344 } 345 ]; 346 staticShell = args: 347 (pkgs.mkShell.override { 348 stdenv = pkgs.pkgsStatic.stdenv; 349 }) (args 350 // { 351 nativeBuildInputs = 352 args.nativeBuildInputs 353 ++ pkgs.lib.optionals pkgs.stdenv.isDarwin [ 354 pkgs.darwin.cctools 355 ]; 356 }); 357 in { 358 default = staticShell { 359 nativeBuildInputs = 360 [ 361 pkgs.go 362 pkgs.air 363 pkgs.gopls 364 pkgs.httpie 365 pkgs.litecli 366 pkgs.websocat 367 pkgs.tailwindcss 368 pkgs.nixos-shell 369 pkgs.redis 370 pkgs.worker-build 371 pkgs.cargo-generate 372 pkgs.qemu 373 pkgs.cdrkit 374 pkgs.buf 375 pkgs.protobuf 376 pkgs.protoc-gen-prost 377 pkgs.protoc-gen-prost-crate 378 pkgs.protoc-gen-prost-serde 379 pkgs.protoc-gen-go 380 (fenix.packages.${system}.combine [ 381 fenix.packages.${system}.stable.cargo 382 fenix.packages.${system}.stable.rustc 383 fenix.packages.${system}.stable.rust-src 384 fenix.packages.${system}.stable.clippy 385 fenix.packages.${system}.stable.rustfmt 386 fenix.packages.${system}.targets.wasm32-unknown-unknown.stable.rust-std 387 ]) 388 pkgs.coreutils # for those of us who are on systems that use busybox (alpine) 389 packages'.lexgen 390 packages'.treefmt-wrapper 391 packages'.tap 392 pkgs.e2fsprogs 393 pkgs.util-linux 394 ] 395 ++ pkgs.lib.optionals pkgs.stdenv.isLinux [ 396 pkgs.parted 397 pkgs.slirp4netns 398 pkgs.iproute2 399 ]; 400 shellHook = '' 401 export CC=${pkgs.stdenv.cc}/bin/cc 402 export NODE_PATH=${tailwindcss-plugins}''${NODE_PATH:+:$NODE_PATH} 403 mkdir -p appview/pages/static 404 # temporary self-heal for workspaces that copied static assets as read-only 405 [ -d appview/pages/static/icons ] && [ ! -w appview/pages/static/icons ] && chmod -R u+rwX appview/pages/static 406 # no preserve is needed because watch-tailwind will want to be able to overwrite 407 cp -fr --no-preserve=ownership,mode ${packages'.appview-static-files}/* appview/pages/static 408 export TANGLED_OAUTH_CLIENT_KID="$(date +%s)" 409 export TANGLED_OAUTH_CLIENT_SECRET="$(${packages'.goat}/bin/goat key generate -t P-256 | grep -A1 "Secret Key" | tail -n1 | awk '{print $1}')" 410 # Make xcrun (Nix stub) able to find ld from the system Command Line Tools. 411 # Without this, worker-build/cargo fails with "error: tool 'ld' not found". 412 if [ -d /Library/Developer/CommandLineTools/usr/bin ]; then 413 export PATH=/Library/Developer/CommandLineTools/usr/bin:$PATH 414 fi 415 ''; 416 env.CGO_ENABLED = 1; 417 }; 418 }); 419 apps = forAllSystems (system: let 420 pkgs = nixpkgsFor."${system}"; 421 packages' = self.packages.${system}; 422 tailwindcss-plugins = pkgs.linkFarm "tailwindcss-plugins" [ 423 { 424 name = "tailwindcss-animated"; 425 path = tailwindcss-animated-src; 426 } 427 ]; 428 air-watcher = name: arg: 429 pkgs.writeShellScriptBin "run" 430 '' 431 export PATH=${pkgs.go}/bin:$PATH 432 ${pkgs.air}/bin/air -c ./.air/${name}.toml \ 433 -build.args_bin "${arg}" 434 ''; 435 tailwind-watcher = 436 pkgs.writeShellScriptBin "run" 437 '' 438 export BROWSERSLIST_IGNORE_OLD_DATA=true 439 export NODE_PATH=${tailwindcss-plugins} 440 ${pkgs.tailwindcss}/bin/tailwindcss --watch=always -i input.css -o ./appview/pages/static/tw.css 441 ''; 442 in { 443 watch-appview = { 444 type = "app"; 445 program = toString (pkgs.writeShellScript "watch-appview" '' 446 echo "copying static files to appview/pages/static..." 447 mkdir -p appview/pages/static 448 ${pkgs.coreutils}/bin/cp -fr --no-preserve=ownership,mode ${packages'.appview-static-files}/* appview/pages/static 449 ${air-watcher "appview" ""}/bin/run 450 ''); 451 }; 452 watch-knot = { 453 type = "app"; 454 program = ''${air-watcher "knot" "server"}/bin/run''; 455 }; 456 watch-spindle = { 457 type = "app"; 458 program = ''${air-watcher "spindle" ""}/bin/run''; 459 }; 460 watch-blog = { 461 type = "app"; 462 program = toString (pkgs.writeShellScript "watch-blog" '' 463 echo "copying static files to appview/pages/static..." 464 mkdir -p appview/pages/static 465 ${pkgs.coreutils}/bin/cp -fr --no-preserve=ownership,mode ${packages'.appview-static-files}/* appview/pages/static 466 ${air-watcher "blog" "serve"}/bin/run 467 ''); 468 }; 469 watch-tailwind = { 470 type = "app"; 471 program = ''${tailwind-watcher}/bin/run''; 472 }; 473 serve-docs = { 474 type = "app"; 475 program = toString (pkgs.writeShellScript "serve-docs" '' 476 echo "building docs..." 477 docsOut=$(nix build --no-link --print-out-paths .#docs) 478 echo "serving docs at http://localhost:1414" 479 cd "$docsOut" 480 exec ${pkgs.python3}/bin/python3 -m http.server 1414 481 ''); 482 }; 483 regenerate-proto = { 484 type = "app"; 485 program = 486 (pkgs.writeShellApplication { 487 name = "regenerate-proto"; 488 runtimeInputs = with pkgs; [git buf coreutils]; 489 text = '' 490 rootDir=$(git rev-parse --show-toplevel 2>/dev/null || pwd) 491 cd "$rootDir" 492 echo ">>> regenerating protobuf files.." 493 buf generate 494 echo ">>> generating file descriptor set for shuttle..." 495 buf build -o shuttle/src/gen/file_descriptor_set.bin 496 echo ">>> done" 497 ''; 498 }) 499 + "/bin/regenerate-proto"; 500 }; 501 vm = let 502 guestSystem = 503 if pkgs.stdenv.hostPlatform.isAarch64 504 then "aarch64-linux" 505 else "x86_64-linux"; 506 in { 507 type = "app"; 508 program = 509 (pkgs.writeShellApplication { 510 name = "launch-vm"; 511 text = '' 512 rootDir=$(jj --ignore-working-copy root || git rev-parse --show-toplevel) || (echo "error: can't find repo root?"; exit 1) 513 cd "$rootDir" 514 515 # Reset TMPDIR in case it points to a stale nix-shell temp dir 516 export TMPDIR=/tmp 517 518 mkdir -p nix/vm-data/{knot,repos,spindle,spindle-logs} 519 520 export TANGLED_VM_DATA_DIR="$rootDir/nix/vm-data" 521 exec ${pkgs.lib.getExe 522 (import ./nix/vm.nix { 523 inherit nixpkgs self; 524 system = guestSystem; 525 hostSystem = system; 526 }).config.system.build.vm} 527 ''; 528 }) 529 + /bin/launch-vm; 530 }; 531 gomod2nix = { 532 type = "app"; 533 program = toString (pkgs.writeShellScript "gomod2nix" '' 534 ${gomod2nix.legacyPackages.${system}.gomod2nix}/bin/gomod2nix generate --outdir ./nix 535 ''); 536 }; 537 lexgen = { 538 type = "app"; 539 program = 540 (pkgs.writeShellApplication { 541 name = "lexgen"; 542 text = '' 543 if ! command -v lexgen > /dev/null; then 544 echo "error: must be executed from devshell" 545 exit 1 546 fi 547 548 rootDir=$(jj --ignore-working-copy root || git rev-parse --show-toplevel) || (echo "error: can't find repo root?"; exit 1) 549 cd "$rootDir" 550 551 # *_ext.go are hand-written extensions; never remove or mutate them 552 find api/tangled -maxdepth 1 -type f -not -name '*_ext.go' -delete 553 lexgen --build-file lexicon-build-config.json lexicons 554 555 # disable type registration temporarily while running cborgen 556 find api/tangled -maxdepth 1 -name '*.go' -not -name '*_ext.go' -exec \ 557 sed -i.bak 's/\tutil/\/\/\tutil/' {} + 558 # lexgen generates incomplete Marshaler/Unmarshaler for union types 559 find api/tangled -maxdepth 1 -name '*.go' -not -name '*_ext.go' -not -name "cbor_gen.go" -exec \ 560 sed -i '/^func.*\(MarshalCBOR\|UnmarshalCBOR\)/,/^}/ s/^/\/\/ /' {} + 561 for f in api/tangled/*_ext.go; do [ -e "''$f" ] && mv "''$f" "''$f.bak"; done 562 ${pkgs.gotools}/bin/goimports -w api/tangled/* 563 CGO_ENABLED=0 go run ./cmd/cborgen/ 564 for f in api/tangled/*_ext.go.bak; do [ -e "''$f" ] && mv "''$f" "''${f%.bak}"; done 565 566 lexgen --build-file lexicon-build-config.json lexicons 567 rm api/tangled/*.bak 568 ''; 569 }) 570 + /bin/lexgen; 571 }; 572 }); 573 574 nixosModules.appview = { 575 lib, 576 pkgs, 577 ... 578 }: { 579 imports = [./nix/modules/appview.nix]; 580 581 services.tangled.appview.package = lib.mkDefault self.packages.${pkgs.stdenv.hostPlatform.system}.appview; 582 }; 583 nixosModules.knotmirror = { 584 lib, 585 pkgs, 586 ... 587 }: { 588 imports = [./nix/modules/knotmirror.nix]; 589 590 services.tangled.knotmirror.tap-package = lib.mkDefault self.packages.${pkgs.stdenv.hostPlatform.system}.tap; 591 services.tangled.knotmirror.package = lib.mkDefault self.packages.${pkgs.stdenv.hostPlatform.system}.knotmirror; 592 }; 593 nixosModules.zoekt-tnglserver = { 594 lib, 595 pkgs, 596 ... 597 }: { 598 imports = [./nix/modules/zoekt-tnglserver.nix]; 599 600 services.tangled.zoekt.package = lib.mkDefault self.packages.${pkgs.stdenv.hostPlatform.system}.zoekt-tngl-indexserver; 601 services.tangled.zoekt.zoekt-webserver-package = lib.mkDefault self.packages.${pkgs.stdenv.hostPlatform.system}.zoekt-webserver; 602 }; 603 nixosModules.knot = { 604 lib, 605 pkgs, 606 ... 607 }: { 608 imports = [./nix/modules/knot.nix]; 609 610 services.tangled.knot.package = lib.mkDefault self.packages.${pkgs.stdenv.hostPlatform.system}.knot; 611 }; 612 nixosModules.knot-rs = { 613 lib, 614 pkgs, 615 ... 616 }: { 617 imports = [./nix/modules/knot-rs.nix]; 618 619 services.tangled.knot-rs.package = lib.mkDefault self.packages.${pkgs.stdenv.hostPlatform.system}.knot-rs; 620 services.tangled.knot-rs.migratePackage = lib.mkDefault self.packages.${pkgs.stdenv.hostPlatform.system}.knot-migrate; 621 }; 622 nixosModules.spindle = { 623 lib, 624 pkgs, 625 ... 626 }: { 627 imports = [./nix/modules/spindle.nix]; 628 629 services.tangled.spindle.package = lib.mkDefault self.packages.${pkgs.stdenv.hostPlatform.system}.spindle; 630 }; 631 nixosModules.shuttle = { 632 lib, 633 pkgs, 634 ... 635 }: { 636 imports = [./nix/modules/shuttle.nix]; 637 638 services.tangled.shuttle.package = lib.mkDefault self.packages.${pkgs.stdenv.hostPlatform.system}.shuttle; 639 }; 640 641 nixosModules.spindle-nixos = import ./nix/microvm/spindle-vm.nix {inherit self microvm;} ./nix/microvm/qemu.nix; 642 643 formatter = forAllSystems (system: self.packages.${system}.treefmt-wrapper); 644 645 nixosConfigurations = let 646 spindleNixosBase = nixpkgs.lib.nixosSystem { 647 system = "x86_64-linux"; 648 modules = [self.nixosModules.spindle-nixos]; 649 }; 650 in { 651 spindle-nixos = spindleNixosBase; 652 }; 653 }; 654}