96fdf90aacd6 | atagen | 2026-09-08 08:24 UTC | 1 | { |
55a1b8252814 | atagen | 2026-09-26 09:08 UTC | 2 | inputs = { |
55a1b8252814 | atagen | 2026-09-26 09:08 UTC | 3 | nixpkgs.url = "github:NixOS/nixpkgs/nixpkgs-unstable"; |
55a1b8252814 | atagen | 2026-09-26 09:08 UTC | 4 | fenix = { |
55a1b8252814 | atagen | 2026-09-26 09:08 UTC | 5 | url = "github:nix-community/fenix"; |
55a1b8252814 | atagen | 2026-09-26 09:08 UTC | 6 | inputs.nixpkgs.follows = "nixpkgs"; |
55a1b8252814 | atagen | 2026-09-26 09:08 UTC | 7 | }; |
55a1b8252814 | atagen | 2026-09-26 09:08 UTC | 8 | }; |
96fdf90aacd6 | atagen | 2026-09-08 08:24 UTC | 9 | |
96fdf90aacd6 | atagen | 2026-09-08 08:24 UTC | 10 | outputs = |
55a1b8252814 | atagen | 2026-09-26 09:08 UTC | 11 | { |
55a1b8252814 | atagen | 2026-09-26 09:08 UTC | 12 | self, |
55a1b8252814 | atagen | 2026-09-26 09:08 UTC | 13 | nixpkgs, |
55a1b8252814 | atagen | 2026-09-26 09:08 UTC | 14 | fenix, |
55a1b8252814 | atagen | 2026-09-26 09:08 UTC | 15 | }: |
96fdf90aacd6 | atagen | 2026-09-08 08:24 UTC | 16 | let |
96fdf90aacd6 | atagen | 2026-09-08 08:24 UTC | 17 | forAllSystems = nixpkgs.lib.genAttrs nixpkgs.lib.systems.flakeExposed; |
55a1b8252814 | atagen | 2026-09-26 09:08 UTC | 18 | webManifest = builtins.fromTOML (builtins.readFile ./harness/web/Cargo.toml); |
55a1b8252814 | atagen | 2026-09-26 09:08 UTC | 19 | storeFeature = nixpkgs.lib.removePrefix "macltok/" (builtins.head webManifest.features.store); |
55a1b8252814 | atagen | 2026-09-26 09:08 UTC | 20 | webLock = builtins.fromTOML (builtins.readFile ./harness/web/Cargo.lock); |
55a1b8252814 | atagen | 2026-09-26 09:08 UTC | 21 | lockedVersion = |
55a1b8252814 | atagen | 2026-09-26 09:08 UTC | 22 | name: (nixpkgs.lib.findFirst (p: p.name == name) null webLock.package).version; |
55a1b8252814 | atagen | 2026-09-26 09:08 UTC | 23 | # wasm-bindgen-test-runner refuses a module built by any other wasm-bindgen version |
55a1b8252814 | atagen | 2026-09-26 09:08 UTC | 24 | wasmBindgenCli = |
55a1b8252814 | atagen | 2026-09-26 09:08 UTC | 25 | pkgs: |
55a1b8252814 | atagen | 2026-09-26 09:08 UTC | 26 | pkgs.buildWasmBindgenCli rec { |
55a1b8252814 | atagen | 2026-09-26 09:08 UTC | 27 | src = pkgs.fetchCrate { |
55a1b8252814 | atagen | 2026-09-26 09:08 UTC | 28 | pname = "wasm-bindgen-cli"; |
55a1b8252814 | atagen | 2026-09-26 09:08 UTC | 29 | version = lockedVersion "wasm-bindgen"; |
55a1b8252814 | atagen | 2026-09-26 09:08 UTC | 30 | hash = "sha256-a7lcXJnnZkYReja+iUO7NqqrWyv3toxnUgQb8s4IS5s="; |
55a1b8252814 | atagen | 2026-09-26 09:08 UTC | 31 | }; |
55a1b8252814 | atagen | 2026-09-26 09:08 UTC | 32 | cargoDeps = pkgs.rustPlatform.fetchCargoVendor { |
55a1b8252814 | atagen | 2026-09-26 09:08 UTC | 33 | inherit src; |
55a1b8252814 | atagen | 2026-09-26 09:08 UTC | 34 | inherit (src) pname version; |
55a1b8252814 | atagen | 2026-09-26 09:08 UTC | 35 | hash = "sha256-R1Tas33Ursy8kqsxguAkG0ZhNed2n5uFTAhw1l2qlLY="; |
55a1b8252814 | atagen | 2026-09-26 09:08 UTC | 36 | }; |
55a1b8252814 | atagen | 2026-09-26 09:08 UTC | 37 | }; |
55a1b8252814 | atagen | 2026-09-26 09:08 UTC | 38 | wasmToolchain = |
55a1b8252814 | atagen | 2026-09-26 09:08 UTC | 39 | system: |
55a1b8252814 | atagen | 2026-09-26 09:08 UTC | 40 | let |
55a1b8252814 | atagen | 2026-09-26 09:08 UTC | 41 | toolchains = fenix.packages.${system}; |
55a1b8252814 | atagen | 2026-09-26 09:08 UTC | 42 | in |
55a1b8252814 | atagen | 2026-09-26 09:08 UTC | 43 | toolchains.combine [ |
55a1b8252814 | atagen | 2026-09-26 09:08 UTC | 44 | toolchains.stable.cargo |
55a1b8252814 | atagen | 2026-09-26 09:08 UTC | 45 | toolchains.stable.clippy |
55a1b8252814 | atagen | 2026-09-26 09:08 UTC | 46 | toolchains.stable.rustc |
55a1b8252814 | atagen | 2026-09-26 09:08 UTC | 47 | toolchains.stable.rustfmt |
55a1b8252814 | atagen | 2026-09-26 09:08 UTC | 48 | toolchains.stable.rust-src |
55a1b8252814 | atagen | 2026-09-26 09:08 UTC | 49 | toolchains.targets.wasm32-unknown-unknown.stable.rust-std |
55a1b8252814 | atagen | 2026-09-26 09:08 UTC | 50 | ]; |
96fdf90aacd6 | atagen | 2026-09-08 08:24 UTC | 51 | in |
96fdf90aacd6 | atagen | 2026-09-08 08:24 UTC | 52 | { |
96fdf90aacd6 | atagen | 2026-09-08 08:24 UTC | 53 | packages = forAllSystems ( |
96fdf90aacd6 | atagen | 2026-09-08 08:24 UTC | 54 | system: |
96fdf90aacd6 | atagen | 2026-09-08 08:24 UTC | 55 | let |
96fdf90aacd6 | atagen | 2026-09-08 08:24 UTC | 56 | pkgs = nixpkgs.legacyPackages.${system}; |
96fdf90aacd6 | atagen | 2026-09-08 08:24 UTC | 57 | in |
96fdf90aacd6 | atagen | 2026-09-08 08:24 UTC | 58 | { |
96fdf90aacd6 | atagen | 2026-09-08 08:24 UTC | 59 | default = pkgs.rustPlatform.buildRustPackage { |
96fdf90aacd6 | atagen | 2026-09-08 08:24 UTC | 60 | pname = "macltok"; |
96fdf90aacd6 | atagen | 2026-09-08 08:24 UTC | 61 | version = "0.1.0"; |
96fdf90aacd6 | atagen | 2026-09-08 08:24 UTC | 62 | src = self; |
96fdf90aacd6 | atagen | 2026-09-08 08:24 UTC | 63 | cargoLock.lockFile = ./Cargo.lock; |
96fdf90aacd6 | atagen | 2026-09-08 08:24 UTC | 64 | preBuild = "export NIX_BUILD_CORES=2"; |
96fdf90aacd6 | atagen | 2026-09-08 08:24 UTC | 65 | SSL_CERT_FILE = "${pkgs.cacert}/etc/ssl/certs/ca-bundle.crt"; |
96fdf90aacd6 | atagen | 2026-09-08 08:24 UTC | 66 | }; |
96fdf90aacd6 | atagen | 2026-09-08 08:24 UTC | 67 | } |
96fdf90aacd6 | atagen | 2026-09-08 08:24 UTC | 68 | ); |
96fdf90aacd6 | atagen | 2026-09-08 08:24 UTC | 69 | |
55a1b8252814 | atagen | 2026-09-26 09:08 UTC | 70 | checks = forAllSystems ( |
55a1b8252814 | atagen | 2026-09-26 09:08 UTC | 71 | system: |
55a1b8252814 | atagen | 2026-09-26 09:08 UTC | 72 | let |
55a1b8252814 | atagen | 2026-09-26 09:08 UTC | 73 | pkgs = nixpkgs.legacyPackages.${system}; |
55a1b8252814 | atagen | 2026-09-26 09:08 UTC | 74 | toolchain = wasmToolchain system; |
55a1b8252814 | atagen | 2026-09-26 09:08 UTC | 75 | wasmPlatform = pkgs.makeRustPlatform { |
55a1b8252814 | atagen | 2026-09-26 09:08 UTC | 76 | cargo = toolchain; |
55a1b8252814 | atagen | 2026-09-26 09:08 UTC | 77 | rustc = toolchain; |
55a1b8252814 | atagen | 2026-09-26 09:08 UTC | 78 | }; |
55a1b8252814 | atagen | 2026-09-26 09:08 UTC | 79 | # continuwuity refuses to start without /etc/resolv.conf, which the build sandbox lacks, or with |
7aa42f589ee2 | atagen | 2026-09-26 12:30 UTC | 80 | # stdenv's deliberately bogus SSL_CERT_FILE. no exec, run.nu launches through a shell that exits at |
7aa42f589ee2 | atagen | 2026-09-26 12:30 UTC | 81 | # once and would trip --die-with-parent, so this shell stays as the parent run.nu kills |
55a1b8252814 | atagen | 2026-09-26 09:08 UTC | 82 | sandboxedHomeserver = pkgs.writeShellScriptBin "conduwuit" '' |
55a1b8252814 | atagen | 2026-09-26 09:08 UTC | 83 | export SSL_CERT_FILE=${pkgs.cacert}/etc/ssl/certs/ca-bundle.crt |
7aa42f589ee2 | atagen | 2026-09-26 12:30 UTC | 84 | ${pkgs.lib.getExe pkgs.bubblewrap} --die-with-parent --dev-bind / / --tmpfs /etc \ |
55a1b8252814 | atagen | 2026-09-26 09:08 UTC | 85 | --ro-bind ${pkgs.writeText "resolv.conf" "nameserver 127.0.0.1\n"} /etc/resolv.conf \ |
55a1b8252814 | atagen | 2026-09-26 09:08 UTC | 86 | ${pkgs.lib.getExe' pkgs.matrix-continuwuity "conduwuit"} "$@" |
55a1b8252814 | atagen | 2026-09-26 09:08 UTC | 87 | ''; |
55a1b8252814 | atagen | 2026-09-26 09:08 UTC | 88 | in |
55a1b8252814 | atagen | 2026-09-26 09:08 UTC | 89 | { |
55a1b8252814 | atagen | 2026-09-26 09:08 UTC | 90 | default = self.packages.${system}.default; |
55a1b8252814 | atagen | 2026-09-26 09:08 UTC | 91 | sqlite = pkgs.rustPlatform.buildRustPackage { |
55a1b8252814 | atagen | 2026-09-26 09:08 UTC | 92 | pname = "macltok-sqlite-check"; |
55a1b8252814 | atagen | 2026-09-26 09:08 UTC | 93 | version = "0.1.0"; |
55a1b8252814 | atagen | 2026-09-26 09:08 UTC | 94 | src = self; |
55a1b8252814 | atagen | 2026-09-26 09:08 UTC | 95 | cargoLock.lockFile = ./Cargo.lock; |
55a1b8252814 | atagen | 2026-09-26 09:08 UTC | 96 | preBuild = "export NIX_BUILD_CORES=2"; |
7aa42f589ee2 | atagen | 2026-09-26 12:30 UTC | 97 | buildFeatures = [ |
7aa42f589ee2 | atagen | 2026-09-26 12:30 UTC | 98 | "sqlite" |
7aa42f589ee2 | atagen | 2026-09-26 12:30 UTC | 99 | "mirror" |
7aa42f589ee2 | atagen | 2026-09-26 12:30 UTC | 100 | ]; |
55a1b8252814 | atagen | 2026-09-26 09:08 UTC | 101 | nativeBuildInputs = [ pkgs.pkg-config ]; |
55a1b8252814 | atagen | 2026-09-26 09:08 UTC | 102 | buildInputs = [ pkgs.sqlite ]; |
55a1b8252814 | atagen | 2026-09-26 09:08 UTC | 103 | SSL_CERT_FILE = "${pkgs.cacert}/etc/ssl/certs/ca-bundle.crt"; |
55a1b8252814 | atagen | 2026-09-26 09:08 UTC | 104 | }; |
67bf96a80270 | atagen | 2026-09-26 09:42 UTC | 105 | wasm = wasmPlatform.buildRustPackage { |
67bf96a80270 | atagen | 2026-09-26 09:42 UTC | 106 | pname = "macltok-wasm-check"; |
67bf96a80270 | atagen | 2026-09-26 09:42 UTC | 107 | version = "0.1.0"; |
67bf96a80270 | atagen | 2026-09-26 09:42 UTC | 108 | src = self; |
67bf96a80270 | atagen | 2026-09-26 09:42 UTC | 109 | cargoLock.lockFile = ./Cargo.lock; |
67bf96a80270 | atagen | 2026-09-26 09:42 UTC | 110 | buildPhase = '' |
67bf96a80270 | atagen | 2026-09-26 09:42 UTC | 111 | runHook preBuild |
7aa42f589ee2 | atagen | 2026-09-26 12:30 UTC | 112 | cargo check --offline --frozen --lib --target wasm32-unknown-unknown -j 2 |
67bf96a80270 | atagen | 2026-09-26 09:42 UTC | 113 | cargo check --offline --frozen --lib \ |
67bf96a80270 | atagen | 2026-09-26 09:42 UTC | 114 | --target wasm32-unknown-unknown --features ${storeFeature},mirror -j 2 |
67bf96a80270 | atagen | 2026-09-26 09:42 UTC | 115 | runHook postBuild |
67bf96a80270 | atagen | 2026-09-26 09:42 UTC | 116 | ''; |
67bf96a80270 | atagen | 2026-09-26 09:42 UTC | 117 | doCheck = false; |
67bf96a80270 | atagen | 2026-09-26 09:42 UTC | 118 | installPhase = "touch $out"; |
67bf96a80270 | atagen | 2026-09-26 09:42 UTC | 119 | }; |
55a1b8252814 | atagen | 2026-09-26 09:08 UTC | 120 | web = wasmPlatform.buildRustPackage { |
55a1b8252814 | atagen | 2026-09-26 09:08 UTC | 121 | pname = "macltok-web-check"; |
55a1b8252814 | atagen | 2026-09-26 09:08 UTC | 122 | version = "0.1.0"; |
55a1b8252814 | atagen | 2026-09-26 09:08 UTC | 123 | src = self; |
55a1b8252814 | atagen | 2026-09-26 09:08 UTC | 124 | cargoRoot = "harness/web"; |
55a1b8252814 | atagen | 2026-09-26 09:08 UTC | 125 | cargoLock.lockFile = ./harness/web/Cargo.lock; |
55a1b8252814 | atagen | 2026-09-26 09:08 UTC | 126 | nativeBuildInputs = with pkgs; [ |
55a1b8252814 | atagen | 2026-09-26 09:08 UTC | 127 | (wasmBindgenCli pkgs) |
55a1b8252814 | atagen | 2026-09-26 09:08 UTC | 128 | firefox |
55a1b8252814 | atagen | 2026-09-26 09:08 UTC | 129 | geckodriver |
55a1b8252814 | atagen | 2026-09-26 09:08 UTC | 130 | sandboxedHomeserver |
55a1b8252814 | atagen | 2026-09-26 09:08 UTC | 131 | nushell |
55a1b8252814 | atagen | 2026-09-26 09:08 UTC | 132 | ]; |
55a1b8252814 | atagen | 2026-09-26 09:08 UTC | 133 | buildPhase = '' |
55a1b8252814 | atagen | 2026-09-26 09:08 UTC | 134 | runHook preBuild |
55a1b8252814 | atagen | 2026-09-26 09:08 UTC | 135 | export HOME=$TMPDIR |
55a1b8252814 | atagen | 2026-09-26 09:08 UTC | 136 | nu --no-config-file harness/web/run.nu |
55a1b8252814 | atagen | 2026-09-26 09:08 UTC | 137 | runHook postBuild |
55a1b8252814 | atagen | 2026-09-26 09:08 UTC | 138 | ''; |
55a1b8252814 | atagen | 2026-09-26 09:08 UTC | 139 | doCheck = false; |
55a1b8252814 | atagen | 2026-09-26 09:08 UTC | 140 | installPhase = "touch $out"; |
55a1b8252814 | atagen | 2026-09-26 09:08 UTC | 141 | }; |
55a1b8252814 | atagen | 2026-09-26 09:08 UTC | 142 | } |
55a1b8252814 | atagen | 2026-09-26 09:08 UTC | 143 | ); |
96fdf90aacd6 | atagen | 2026-09-08 08:24 UTC | 144 | |
96fdf90aacd6 | atagen | 2026-09-08 08:24 UTC | 145 | devShells = forAllSystems ( |
96fdf90aacd6 | atagen | 2026-09-08 08:24 UTC | 146 | system: |
96fdf90aacd6 | atagen | 2026-09-08 08:24 UTC | 147 | let |
96fdf90aacd6 | atagen | 2026-09-08 08:24 UTC | 148 | pkgs = nixpkgs.legacyPackages.${system}; |
96fdf90aacd6 | atagen | 2026-09-08 08:24 UTC | 149 | in |
96fdf90aacd6 | atagen | 2026-09-08 08:24 UTC | 150 | { |
96fdf90aacd6 | atagen | 2026-09-08 08:24 UTC | 151 | default = pkgs.mkShell { |
96fdf90aacd6 | atagen | 2026-09-08 08:24 UTC | 152 | packages = with pkgs; [ |
96fdf90aacd6 | atagen | 2026-09-08 08:24 UTC | 153 | cargo |
96fdf90aacd6 | atagen | 2026-09-08 08:24 UTC | 154 | clippy |
96fdf90aacd6 | atagen | 2026-09-08 08:24 UTC | 155 | pkg-config |
96fdf90aacd6 | atagen | 2026-09-08 08:24 UTC | 156 | rust-analyzer |
96fdf90aacd6 | atagen | 2026-09-08 08:24 UTC | 157 | rustc |
96fdf90aacd6 | atagen | 2026-09-08 08:24 UTC | 158 | rustfmt |
96fdf90aacd6 | atagen | 2026-09-08 08:24 UTC | 159 | sqlite |
96fdf90aacd6 | atagen | 2026-09-08 08:24 UTC | 160 | ]; |
96fdf90aacd6 | atagen | 2026-09-08 08:24 UTC | 161 | }; |
55a1b8252814 | atagen | 2026-09-26 09:08 UTC | 162 | web = pkgs.mkShell { |
55a1b8252814 | atagen | 2026-09-26 09:08 UTC | 163 | packages = with pkgs; [ |
55a1b8252814 | atagen | 2026-09-26 09:08 UTC | 164 | (wasmToolchain system) |
55a1b8252814 | atagen | 2026-09-26 09:08 UTC | 165 | (wasmBindgenCli pkgs) |
55a1b8252814 | atagen | 2026-09-26 09:08 UTC | 166 | binaryen |
55a1b8252814 | atagen | 2026-09-26 09:08 UTC | 167 | brotli |
55a1b8252814 | atagen | 2026-09-26 09:08 UTC | 168 | firefox |
55a1b8252814 | atagen | 2026-09-26 09:08 UTC | 169 | geckodriver |
55a1b8252814 | atagen | 2026-09-26 09:08 UTC | 170 | matrix-continuwuity |
55a1b8252814 | atagen | 2026-09-26 09:08 UTC | 171 | nushell |
55a1b8252814 | atagen | 2026-09-26 09:08 UTC | 172 | ]; |
55a1b8252814 | atagen | 2026-09-26 09:08 UTC | 173 | MACLTOK_STORE_FEATURE = storeFeature; |
55a1b8252814 | atagen | 2026-09-26 09:08 UTC | 174 | }; |
96fdf90aacd6 | atagen | 2026-09-08 08:24 UTC | 175 | } |
96fdf90aacd6 | atagen | 2026-09-08 08:24 UTC | 176 | ); |
96fdf90aacd6 | atagen | 2026-09-08 08:24 UTC | 177 | }; |
96fdf90aacd6 | atagen | 2026-09-08 08:24 UTC | 178 | } |