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; |
7515819c2f3e | atagen | 2026-10-22 13:03 UTC | 63 | cargoLock = { |
7515819c2f3e | atagen | 2026-10-22 13:03 UTC | 64 | lockFile = ./Cargo.lock; |
7515819c2f3e | atagen | 2026-10-22 13:03 UTC | 65 | allowBuiltinFetchGit = true; |
7515819c2f3e | atagen | 2026-10-22 13:03 UTC | 66 | }; |
96fdf90aacd6 | atagen | 2026-09-08 08:24 UTC | 67 | SSL_CERT_FILE = "${pkgs.cacert}/etc/ssl/certs/ca-bundle.crt"; |
96fdf90aacd6 | atagen | 2026-09-08 08:24 UTC | 68 | }; |
96fdf90aacd6 | atagen | 2026-09-08 08:24 UTC | 69 | } |
96fdf90aacd6 | atagen | 2026-09-08 08:24 UTC | 70 | ); |
96fdf90aacd6 | atagen | 2026-09-08 08:24 UTC | 71 | |
55a1b8252814 | atagen | 2026-09-26 09:08 UTC | 72 | checks = forAllSystems ( |
55a1b8252814 | atagen | 2026-09-26 09:08 UTC | 73 | system: |
55a1b8252814 | atagen | 2026-09-26 09:08 UTC | 74 | let |
55a1b8252814 | atagen | 2026-09-26 09:08 UTC | 75 | pkgs = nixpkgs.legacyPackages.${system}; |
55a1b8252814 | atagen | 2026-09-26 09:08 UTC | 76 | toolchain = wasmToolchain system; |
55a1b8252814 | atagen | 2026-09-26 09:08 UTC | 77 | wasmPlatform = pkgs.makeRustPlatform { |
55a1b8252814 | atagen | 2026-09-26 09:08 UTC | 78 | cargo = toolchain; |
55a1b8252814 | atagen | 2026-09-26 09:08 UTC | 79 | rustc = toolchain; |
55a1b8252814 | atagen | 2026-09-26 09:08 UTC | 80 | }; |
55a1b8252814 | atagen | 2026-09-26 09:08 UTC | 81 | # continuwuity refuses to start without /etc/resolv.conf, which the build sandbox lacks, or with |
7aa42f589ee2 | atagen | 2026-09-26 12:30 UTC | 82 | # 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 | 83 | # 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 | 84 | sandboxedHomeserver = pkgs.writeShellScriptBin "conduwuit" '' |
55a1b8252814 | atagen | 2026-09-26 09:08 UTC | 85 | export SSL_CERT_FILE=${pkgs.cacert}/etc/ssl/certs/ca-bundle.crt |
7aa42f589ee2 | atagen | 2026-09-26 12:30 UTC | 86 | ${pkgs.lib.getExe pkgs.bubblewrap} --die-with-parent --dev-bind / / --tmpfs /etc \ |
55a1b8252814 | atagen | 2026-09-26 09:08 UTC | 87 | --ro-bind ${pkgs.writeText "resolv.conf" "nameserver 127.0.0.1\n"} /etc/resolv.conf \ |
55a1b8252814 | atagen | 2026-09-26 09:08 UTC | 88 | ${pkgs.lib.getExe' pkgs.matrix-continuwuity "conduwuit"} "$@" |
55a1b8252814 | atagen | 2026-09-26 09:08 UTC | 89 | ''; |
55a1b8252814 | atagen | 2026-09-26 09:08 UTC | 90 | in |
55a1b8252814 | atagen | 2026-09-26 09:08 UTC | 91 | { |
55a1b8252814 | atagen | 2026-09-26 09:08 UTC | 92 | default = self.packages.${system}.default; |
55a1b8252814 | atagen | 2026-09-26 09:08 UTC | 93 | sqlite = pkgs.rustPlatform.buildRustPackage { |
55a1b8252814 | atagen | 2026-09-26 09:08 UTC | 94 | pname = "macltok-sqlite-check"; |
55a1b8252814 | atagen | 2026-09-26 09:08 UTC | 95 | version = "0.1.0"; |
55a1b8252814 | atagen | 2026-09-26 09:08 UTC | 96 | src = self; |
7515819c2f3e | atagen | 2026-10-22 13:03 UTC | 97 | cargoLock = { |
7515819c2f3e | atagen | 2026-10-22 13:03 UTC | 98 | lockFile = ./Cargo.lock; |
7515819c2f3e | atagen | 2026-10-22 13:03 UTC | 99 | allowBuiltinFetchGit = true; |
7515819c2f3e | atagen | 2026-10-22 13:03 UTC | 100 | }; |
7aa42f589ee2 | atagen | 2026-09-26 12:30 UTC | 101 | buildFeatures = [ |
7aa42f589ee2 | atagen | 2026-09-26 12:30 UTC | 102 | "sqlite" |
7aa42f589ee2 | atagen | 2026-09-26 12:30 UTC | 103 | "mirror" |
7aa42f589ee2 | atagen | 2026-09-26 12:30 UTC | 104 | ]; |
55a1b8252814 | atagen | 2026-09-26 09:08 UTC | 105 | nativeBuildInputs = [ pkgs.pkg-config ]; |
55a1b8252814 | atagen | 2026-09-26 09:08 UTC | 106 | buildInputs = [ pkgs.sqlite ]; |
55a1b8252814 | atagen | 2026-09-26 09:08 UTC | 107 | SSL_CERT_FILE = "${pkgs.cacert}/etc/ssl/certs/ca-bundle.crt"; |
55a1b8252814 | atagen | 2026-09-26 09:08 UTC | 108 | }; |
67bf96a80270 | atagen | 2026-09-26 09:42 UTC | 109 | wasm = wasmPlatform.buildRustPackage { |
67bf96a80270 | atagen | 2026-09-26 09:42 UTC | 110 | pname = "macltok-wasm-check"; |
67bf96a80270 | atagen | 2026-09-26 09:42 UTC | 111 | version = "0.1.0"; |
67bf96a80270 | atagen | 2026-09-26 09:42 UTC | 112 | src = self; |
7515819c2f3e | atagen | 2026-10-22 13:03 UTC | 113 | cargoLock = { |
7515819c2f3e | atagen | 2026-10-22 13:03 UTC | 114 | lockFile = ./Cargo.lock; |
7515819c2f3e | atagen | 2026-10-22 13:03 UTC | 115 | allowBuiltinFetchGit = true; |
7515819c2f3e | atagen | 2026-10-22 13:03 UTC | 116 | }; |
67bf96a80270 | atagen | 2026-09-26 09:42 UTC | 117 | buildPhase = '' |
67bf96a80270 | atagen | 2026-09-26 09:42 UTC | 118 | runHook preBuild |
4fec18288b9a | atagen | 2026-10-08 12:39 UTC | 119 | cargo check --offline --frozen --lib --target wasm32-unknown-unknown -j $NIX_BUILD_CORES |
67bf96a80270 | atagen | 2026-09-26 09:42 UTC | 120 | cargo check --offline --frozen --lib \ |
4fec18288b9a | atagen | 2026-10-08 12:39 UTC | 121 | --target wasm32-unknown-unknown --features ${storeFeature},mirror -j $NIX_BUILD_CORES |
67bf96a80270 | atagen | 2026-09-26 09:42 UTC | 122 | runHook postBuild |
67bf96a80270 | atagen | 2026-09-26 09:42 UTC | 123 | ''; |
67bf96a80270 | atagen | 2026-09-26 09:42 UTC | 124 | doCheck = false; |
67bf96a80270 | atagen | 2026-09-26 09:42 UTC | 125 | installPhase = "touch $out"; |
67bf96a80270 | atagen | 2026-09-26 09:42 UTC | 126 | }; |
55a1b8252814 | atagen | 2026-09-26 09:08 UTC | 127 | web = wasmPlatform.buildRustPackage { |
55a1b8252814 | atagen | 2026-09-26 09:08 UTC | 128 | pname = "macltok-web-check"; |
55a1b8252814 | atagen | 2026-09-26 09:08 UTC | 129 | version = "0.1.0"; |
55a1b8252814 | atagen | 2026-09-26 09:08 UTC | 130 | src = self; |
55a1b8252814 | atagen | 2026-09-26 09:08 UTC | 131 | cargoRoot = "harness/web"; |
7515819c2f3e | atagen | 2026-10-22 13:03 UTC | 132 | cargoLock = { |
7515819c2f3e | atagen | 2026-10-22 13:03 UTC | 133 | lockFile = ./harness/web/Cargo.lock; |
7515819c2f3e | atagen | 2026-10-22 13:03 UTC | 134 | allowBuiltinFetchGit = true; |
7515819c2f3e | atagen | 2026-10-22 13:03 UTC | 135 | }; |
55a1b8252814 | atagen | 2026-09-26 09:08 UTC | 136 | nativeBuildInputs = with pkgs; [ |
55a1b8252814 | atagen | 2026-09-26 09:08 UTC | 137 | (wasmBindgenCli pkgs) |
55a1b8252814 | atagen | 2026-09-26 09:08 UTC | 138 | firefox |
55a1b8252814 | atagen | 2026-09-26 09:08 UTC | 139 | geckodriver |
55a1b8252814 | atagen | 2026-09-26 09:08 UTC | 140 | sandboxedHomeserver |
55a1b8252814 | atagen | 2026-09-26 09:08 UTC | 141 | nushell |
55a1b8252814 | atagen | 2026-09-26 09:08 UTC | 142 | ]; |
55a1b8252814 | atagen | 2026-09-26 09:08 UTC | 143 | buildPhase = '' |
55a1b8252814 | atagen | 2026-09-26 09:08 UTC | 144 | runHook preBuild |
55a1b8252814 | atagen | 2026-09-26 09:08 UTC | 145 | export HOME=$TMPDIR |
55a1b8252814 | atagen | 2026-09-26 09:08 UTC | 146 | nu --no-config-file harness/web/run.nu |
55a1b8252814 | atagen | 2026-09-26 09:08 UTC | 147 | runHook postBuild |
55a1b8252814 | atagen | 2026-09-26 09:08 UTC | 148 | ''; |
55a1b8252814 | atagen | 2026-09-26 09:08 UTC | 149 | doCheck = false; |
55a1b8252814 | atagen | 2026-09-26 09:08 UTC | 150 | installPhase = "touch $out"; |
55a1b8252814 | atagen | 2026-09-26 09:08 UTC | 151 | }; |
55a1b8252814 | atagen | 2026-09-26 09:08 UTC | 152 | } |
55a1b8252814 | atagen | 2026-09-26 09:08 UTC | 153 | ); |
96fdf90aacd6 | atagen | 2026-09-08 08:24 UTC | 154 | |
96fdf90aacd6 | atagen | 2026-09-08 08:24 UTC | 155 | devShells = forAllSystems ( |
96fdf90aacd6 | atagen | 2026-09-08 08:24 UTC | 156 | system: |
96fdf90aacd6 | atagen | 2026-09-08 08:24 UTC | 157 | let |
96fdf90aacd6 | atagen | 2026-09-08 08:24 UTC | 158 | pkgs = nixpkgs.legacyPackages.${system}; |
96fdf90aacd6 | atagen | 2026-09-08 08:24 UTC | 159 | in |
96fdf90aacd6 | atagen | 2026-09-08 08:24 UTC | 160 | { |
96fdf90aacd6 | atagen | 2026-09-08 08:24 UTC | 161 | default = pkgs.mkShell { |
96fdf90aacd6 | atagen | 2026-09-08 08:24 UTC | 162 | packages = with pkgs; [ |
96fdf90aacd6 | atagen | 2026-09-08 08:24 UTC | 163 | cargo |
96fdf90aacd6 | atagen | 2026-09-08 08:24 UTC | 164 | clippy |
96fdf90aacd6 | atagen | 2026-09-08 08:24 UTC | 165 | pkg-config |
96fdf90aacd6 | atagen | 2026-09-08 08:24 UTC | 166 | rust-analyzer |
96fdf90aacd6 | atagen | 2026-09-08 08:24 UTC | 167 | rustc |
96fdf90aacd6 | atagen | 2026-09-08 08:24 UTC | 168 | rustfmt |
96fdf90aacd6 | atagen | 2026-09-08 08:24 UTC | 169 | sqlite |
96fdf90aacd6 | atagen | 2026-09-08 08:24 UTC | 170 | ]; |
96fdf90aacd6 | atagen | 2026-09-08 08:24 UTC | 171 | }; |
55a1b8252814 | atagen | 2026-09-26 09:08 UTC | 172 | web = pkgs.mkShell { |
55a1b8252814 | atagen | 2026-09-26 09:08 UTC | 173 | packages = with pkgs; [ |
55a1b8252814 | atagen | 2026-09-26 09:08 UTC | 174 | (wasmToolchain system) |
55a1b8252814 | atagen | 2026-09-26 09:08 UTC | 175 | (wasmBindgenCli pkgs) |
55a1b8252814 | atagen | 2026-09-26 09:08 UTC | 176 | binaryen |
55a1b8252814 | atagen | 2026-09-26 09:08 UTC | 177 | brotli |
55a1b8252814 | atagen | 2026-09-26 09:08 UTC | 178 | firefox |
55a1b8252814 | atagen | 2026-09-26 09:08 UTC | 179 | geckodriver |
55a1b8252814 | atagen | 2026-09-26 09:08 UTC | 180 | matrix-continuwuity |
55a1b8252814 | atagen | 2026-09-26 09:08 UTC | 181 | nushell |
55a1b8252814 | atagen | 2026-09-26 09:08 UTC | 182 | ]; |
55a1b8252814 | atagen | 2026-09-26 09:08 UTC | 183 | MACLTOK_STORE_FEATURE = storeFeature; |
55a1b8252814 | atagen | 2026-09-26 09:08 UTC | 184 | }; |
96fdf90aacd6 | atagen | 2026-09-08 08:24 UTC | 185 | } |
96fdf90aacd6 | atagen | 2026-09-08 08:24 UTC | 186 | ); |
96fdf90aacd6 | atagen | 2026-09-08 08:24 UTC | 187 | }; |
96fdf90aacd6 | atagen | 2026-09-08 08:24 UTC | 188 | } |