atagen

macltok

public
Star0
Watch0
dc73ad5eb906122a9266ab9bd189a11bc706c31f
3
ssh://brewery@pls.lobotomise.me:33/atagen/macltok.git

Blame: flake.nix

96fdf90aacd6atagen2026-09-08 08:24 UTC1
{
55a1b8252814atagen2026-09-26 09:08 UTC2
  inputs = {
55a1b8252814atagen2026-09-26 09:08 UTC3
    nixpkgs.url = "github:NixOS/nixpkgs/nixpkgs-unstable";
55a1b8252814atagen2026-09-26 09:08 UTC4
    fenix = {
55a1b8252814atagen2026-09-26 09:08 UTC5
      url = "github:nix-community/fenix";
55a1b8252814atagen2026-09-26 09:08 UTC6
      inputs.nixpkgs.follows = "nixpkgs";
55a1b8252814atagen2026-09-26 09:08 UTC7
    };
55a1b8252814atagen2026-09-26 09:08 UTC8
  };
96fdf90aacd6atagen2026-09-08 08:24 UTC9
96fdf90aacd6atagen2026-09-08 08:24 UTC10
  outputs =
55a1b8252814atagen2026-09-26 09:08 UTC11
    {
55a1b8252814atagen2026-09-26 09:08 UTC12
      self,
55a1b8252814atagen2026-09-26 09:08 UTC13
      nixpkgs,
55a1b8252814atagen2026-09-26 09:08 UTC14
      fenix,
55a1b8252814atagen2026-09-26 09:08 UTC15
    }:
96fdf90aacd6atagen2026-09-08 08:24 UTC16
    let
96fdf90aacd6atagen2026-09-08 08:24 UTC17
      forAllSystems = nixpkgs.lib.genAttrs nixpkgs.lib.systems.flakeExposed;
55a1b8252814atagen2026-09-26 09:08 UTC18
      webManifest = builtins.fromTOML (builtins.readFile ./harness/web/Cargo.toml);
55a1b8252814atagen2026-09-26 09:08 UTC19
      storeFeature = nixpkgs.lib.removePrefix "macltok/" (builtins.head webManifest.features.store);
55a1b8252814atagen2026-09-26 09:08 UTC20
      webLock = builtins.fromTOML (builtins.readFile ./harness/web/Cargo.lock);
55a1b8252814atagen2026-09-26 09:08 UTC21
      lockedVersion =
55a1b8252814atagen2026-09-26 09:08 UTC22
        name: (nixpkgs.lib.findFirst (p: p.name == name) null webLock.package).version;
55a1b8252814atagen2026-09-26 09:08 UTC23
      # wasm-bindgen-test-runner refuses a module built by any other wasm-bindgen version
55a1b8252814atagen2026-09-26 09:08 UTC24
      wasmBindgenCli =
55a1b8252814atagen2026-09-26 09:08 UTC25
        pkgs:
55a1b8252814atagen2026-09-26 09:08 UTC26
        pkgs.buildWasmBindgenCli rec {
55a1b8252814atagen2026-09-26 09:08 UTC27
          src = pkgs.fetchCrate {
55a1b8252814atagen2026-09-26 09:08 UTC28
            pname = "wasm-bindgen-cli";
55a1b8252814atagen2026-09-26 09:08 UTC29
            version = lockedVersion "wasm-bindgen";
55a1b8252814atagen2026-09-26 09:08 UTC30
            hash = "sha256-a7lcXJnnZkYReja+iUO7NqqrWyv3toxnUgQb8s4IS5s=";
55a1b8252814atagen2026-09-26 09:08 UTC31
          };
55a1b8252814atagen2026-09-26 09:08 UTC32
          cargoDeps = pkgs.rustPlatform.fetchCargoVendor {
55a1b8252814atagen2026-09-26 09:08 UTC33
            inherit src;
55a1b8252814atagen2026-09-26 09:08 UTC34
            inherit (src) pname version;
55a1b8252814atagen2026-09-26 09:08 UTC35
            hash = "sha256-R1Tas33Ursy8kqsxguAkG0ZhNed2n5uFTAhw1l2qlLY=";
55a1b8252814atagen2026-09-26 09:08 UTC36
          };
55a1b8252814atagen2026-09-26 09:08 UTC37
        };
55a1b8252814atagen2026-09-26 09:08 UTC38
      wasmToolchain =
55a1b8252814atagen2026-09-26 09:08 UTC39
        system:
55a1b8252814atagen2026-09-26 09:08 UTC40
        let
55a1b8252814atagen2026-09-26 09:08 UTC41
          toolchains = fenix.packages.${system};
55a1b8252814atagen2026-09-26 09:08 UTC42
        in
55a1b8252814atagen2026-09-26 09:08 UTC43
        toolchains.combine [
55a1b8252814atagen2026-09-26 09:08 UTC44
          toolchains.stable.cargo
55a1b8252814atagen2026-09-26 09:08 UTC45
          toolchains.stable.clippy
55a1b8252814atagen2026-09-26 09:08 UTC46
          toolchains.stable.rustc
55a1b8252814atagen2026-09-26 09:08 UTC47
          toolchains.stable.rustfmt
55a1b8252814atagen2026-09-26 09:08 UTC48
          toolchains.stable.rust-src
55a1b8252814atagen2026-09-26 09:08 UTC49
          toolchains.targets.wasm32-unknown-unknown.stable.rust-std
55a1b8252814atagen2026-09-26 09:08 UTC50
        ];
96fdf90aacd6atagen2026-09-08 08:24 UTC51
    in
96fdf90aacd6atagen2026-09-08 08:24 UTC52
    {
96fdf90aacd6atagen2026-09-08 08:24 UTC53
      packages = forAllSystems (
96fdf90aacd6atagen2026-09-08 08:24 UTC54
        system:
96fdf90aacd6atagen2026-09-08 08:24 UTC55
        let
96fdf90aacd6atagen2026-09-08 08:24 UTC56
          pkgs = nixpkgs.legacyPackages.${system};
96fdf90aacd6atagen2026-09-08 08:24 UTC57
        in
96fdf90aacd6atagen2026-09-08 08:24 UTC58
        {
96fdf90aacd6atagen2026-09-08 08:24 UTC59
          default = pkgs.rustPlatform.buildRustPackage {
96fdf90aacd6atagen2026-09-08 08:24 UTC60
            pname = "macltok";
96fdf90aacd6atagen2026-09-08 08:24 UTC61
            version = "0.1.0";
96fdf90aacd6atagen2026-09-08 08:24 UTC62
            src = self;
7515819c2f3eatagen2026-10-22 13:03 UTC63
            cargoLock = {
7515819c2f3eatagen2026-10-22 13:03 UTC64
              lockFile = ./Cargo.lock;
7515819c2f3eatagen2026-10-22 13:03 UTC65
              allowBuiltinFetchGit = true;
7515819c2f3eatagen2026-10-22 13:03 UTC66
            };
96fdf90aacd6atagen2026-09-08 08:24 UTC67
            SSL_CERT_FILE = "${pkgs.cacert}/etc/ssl/certs/ca-bundle.crt";
96fdf90aacd6atagen2026-09-08 08:24 UTC68
          };
96fdf90aacd6atagen2026-09-08 08:24 UTC69
        }
96fdf90aacd6atagen2026-09-08 08:24 UTC70
      );
96fdf90aacd6atagen2026-09-08 08:24 UTC71
55a1b8252814atagen2026-09-26 09:08 UTC72
      checks = forAllSystems (
55a1b8252814atagen2026-09-26 09:08 UTC73
        system:
55a1b8252814atagen2026-09-26 09:08 UTC74
        let
55a1b8252814atagen2026-09-26 09:08 UTC75
          pkgs = nixpkgs.legacyPackages.${system};
55a1b8252814atagen2026-09-26 09:08 UTC76
          toolchain = wasmToolchain system;
55a1b8252814atagen2026-09-26 09:08 UTC77
          wasmPlatform = pkgs.makeRustPlatform {
55a1b8252814atagen2026-09-26 09:08 UTC78
            cargo = toolchain;
55a1b8252814atagen2026-09-26 09:08 UTC79
            rustc = toolchain;
55a1b8252814atagen2026-09-26 09:08 UTC80
          };
55a1b8252814atagen2026-09-26 09:08 UTC81
          # continuwuity refuses to start without /etc/resolv.conf, which the build sandbox lacks, or with
7aa42f589ee2atagen2026-09-26 12:30 UTC82
          # stdenv's deliberately bogus SSL_CERT_FILE. no exec, run.nu launches through a shell that exits at
7aa42f589ee2atagen2026-09-26 12:30 UTC83
          # once and would trip --die-with-parent, so this shell stays as the parent run.nu kills
55a1b8252814atagen2026-09-26 09:08 UTC84
          sandboxedHomeserver = pkgs.writeShellScriptBin "conduwuit" ''
55a1b8252814atagen2026-09-26 09:08 UTC85
            export SSL_CERT_FILE=${pkgs.cacert}/etc/ssl/certs/ca-bundle.crt
7aa42f589ee2atagen2026-09-26 12:30 UTC86
            ${pkgs.lib.getExe pkgs.bubblewrap} --die-with-parent --dev-bind / / --tmpfs /etc \
55a1b8252814atagen2026-09-26 09:08 UTC87
              --ro-bind ${pkgs.writeText "resolv.conf" "nameserver 127.0.0.1\n"} /etc/resolv.conf \
55a1b8252814atagen2026-09-26 09:08 UTC88
              ${pkgs.lib.getExe' pkgs.matrix-continuwuity "conduwuit"} "$@"
55a1b8252814atagen2026-09-26 09:08 UTC89
          '';
55a1b8252814atagen2026-09-26 09:08 UTC90
        in
55a1b8252814atagen2026-09-26 09:08 UTC91
        {
55a1b8252814atagen2026-09-26 09:08 UTC92
          default = self.packages.${system}.default;
55a1b8252814atagen2026-09-26 09:08 UTC93
          sqlite = pkgs.rustPlatform.buildRustPackage {
55a1b8252814atagen2026-09-26 09:08 UTC94
            pname = "macltok-sqlite-check";
55a1b8252814atagen2026-09-26 09:08 UTC95
            version = "0.1.0";
55a1b8252814atagen2026-09-26 09:08 UTC96
            src = self;
7515819c2f3eatagen2026-10-22 13:03 UTC97
            cargoLock = {
7515819c2f3eatagen2026-10-22 13:03 UTC98
              lockFile = ./Cargo.lock;
7515819c2f3eatagen2026-10-22 13:03 UTC99
              allowBuiltinFetchGit = true;
7515819c2f3eatagen2026-10-22 13:03 UTC100
            };
7aa42f589ee2atagen2026-09-26 12:30 UTC101
            buildFeatures = [
7aa42f589ee2atagen2026-09-26 12:30 UTC102
              "sqlite"
7aa42f589ee2atagen2026-09-26 12:30 UTC103
              "mirror"
7aa42f589ee2atagen2026-09-26 12:30 UTC104
            ];
55a1b8252814atagen2026-09-26 09:08 UTC105
            nativeBuildInputs = [ pkgs.pkg-config ];
55a1b8252814atagen2026-09-26 09:08 UTC106
            buildInputs = [ pkgs.sqlite ];
55a1b8252814atagen2026-09-26 09:08 UTC107
            SSL_CERT_FILE = "${pkgs.cacert}/etc/ssl/certs/ca-bundle.crt";
55a1b8252814atagen2026-09-26 09:08 UTC108
          };
67bf96a80270atagen2026-09-26 09:42 UTC109
          wasm = wasmPlatform.buildRustPackage {
67bf96a80270atagen2026-09-26 09:42 UTC110
            pname = "macltok-wasm-check";
67bf96a80270atagen2026-09-26 09:42 UTC111
            version = "0.1.0";
67bf96a80270atagen2026-09-26 09:42 UTC112
            src = self;
7515819c2f3eatagen2026-10-22 13:03 UTC113
            cargoLock = {
7515819c2f3eatagen2026-10-22 13:03 UTC114
              lockFile = ./Cargo.lock;
7515819c2f3eatagen2026-10-22 13:03 UTC115
              allowBuiltinFetchGit = true;
7515819c2f3eatagen2026-10-22 13:03 UTC116
            };
67bf96a80270atagen2026-09-26 09:42 UTC117
            buildPhase = ''
67bf96a80270atagen2026-09-26 09:42 UTC118
              runHook preBuild
4fec18288b9aatagen2026-10-08 12:39 UTC119
              cargo check --offline --frozen --lib --target wasm32-unknown-unknown -j $NIX_BUILD_CORES
67bf96a80270atagen2026-09-26 09:42 UTC120
              cargo check --offline --frozen --lib \
4fec18288b9aatagen2026-10-08 12:39 UTC121
                --target wasm32-unknown-unknown --features ${storeFeature},mirror -j $NIX_BUILD_CORES
67bf96a80270atagen2026-09-26 09:42 UTC122
              runHook postBuild
67bf96a80270atagen2026-09-26 09:42 UTC123
            '';
67bf96a80270atagen2026-09-26 09:42 UTC124
            doCheck = false;
67bf96a80270atagen2026-09-26 09:42 UTC125
            installPhase = "touch $out";
67bf96a80270atagen2026-09-26 09:42 UTC126
          };
55a1b8252814atagen2026-09-26 09:08 UTC127
          web = wasmPlatform.buildRustPackage {
55a1b8252814atagen2026-09-26 09:08 UTC128
            pname = "macltok-web-check";
55a1b8252814atagen2026-09-26 09:08 UTC129
            version = "0.1.0";
55a1b8252814atagen2026-09-26 09:08 UTC130
            src = self;
55a1b8252814atagen2026-09-26 09:08 UTC131
            cargoRoot = "harness/web";
7515819c2f3eatagen2026-10-22 13:03 UTC132
            cargoLock = {
7515819c2f3eatagen2026-10-22 13:03 UTC133
              lockFile = ./harness/web/Cargo.lock;
7515819c2f3eatagen2026-10-22 13:03 UTC134
              allowBuiltinFetchGit = true;
7515819c2f3eatagen2026-10-22 13:03 UTC135
            };
55a1b8252814atagen2026-09-26 09:08 UTC136
            nativeBuildInputs = with pkgs; [
55a1b8252814atagen2026-09-26 09:08 UTC137
              (wasmBindgenCli pkgs)
55a1b8252814atagen2026-09-26 09:08 UTC138
              firefox
55a1b8252814atagen2026-09-26 09:08 UTC139
              geckodriver
55a1b8252814atagen2026-09-26 09:08 UTC140
              sandboxedHomeserver
55a1b8252814atagen2026-09-26 09:08 UTC141
              nushell
55a1b8252814atagen2026-09-26 09:08 UTC142
            ];
55a1b8252814atagen2026-09-26 09:08 UTC143
            buildPhase = ''
55a1b8252814atagen2026-09-26 09:08 UTC144
              runHook preBuild
55a1b8252814atagen2026-09-26 09:08 UTC145
              export HOME=$TMPDIR
55a1b8252814atagen2026-09-26 09:08 UTC146
              nu --no-config-file harness/web/run.nu
55a1b8252814atagen2026-09-26 09:08 UTC147
              runHook postBuild
55a1b8252814atagen2026-09-26 09:08 UTC148
            '';
55a1b8252814atagen2026-09-26 09:08 UTC149
            doCheck = false;
55a1b8252814atagen2026-09-26 09:08 UTC150
            installPhase = "touch $out";
55a1b8252814atagen2026-09-26 09:08 UTC151
          };
55a1b8252814atagen2026-09-26 09:08 UTC152
        }
55a1b8252814atagen2026-09-26 09:08 UTC153
      );
96fdf90aacd6atagen2026-09-08 08:24 UTC154
96fdf90aacd6atagen2026-09-08 08:24 UTC155
      devShells = forAllSystems (
96fdf90aacd6atagen2026-09-08 08:24 UTC156
        system:
96fdf90aacd6atagen2026-09-08 08:24 UTC157
        let
96fdf90aacd6atagen2026-09-08 08:24 UTC158
          pkgs = nixpkgs.legacyPackages.${system};
96fdf90aacd6atagen2026-09-08 08:24 UTC159
        in
96fdf90aacd6atagen2026-09-08 08:24 UTC160
        {
96fdf90aacd6atagen2026-09-08 08:24 UTC161
          default = pkgs.mkShell {
96fdf90aacd6atagen2026-09-08 08:24 UTC162
            packages = with pkgs; [
96fdf90aacd6atagen2026-09-08 08:24 UTC163
              cargo
96fdf90aacd6atagen2026-09-08 08:24 UTC164
              clippy
96fdf90aacd6atagen2026-09-08 08:24 UTC165
              pkg-config
96fdf90aacd6atagen2026-09-08 08:24 UTC166
              rust-analyzer
96fdf90aacd6atagen2026-09-08 08:24 UTC167
              rustc
96fdf90aacd6atagen2026-09-08 08:24 UTC168
              rustfmt
96fdf90aacd6atagen2026-09-08 08:24 UTC169
              sqlite
96fdf90aacd6atagen2026-09-08 08:24 UTC170
            ];
96fdf90aacd6atagen2026-09-08 08:24 UTC171
          };
55a1b8252814atagen2026-09-26 09:08 UTC172
          web = pkgs.mkShell {
55a1b8252814atagen2026-09-26 09:08 UTC173
            packages = with pkgs; [
55a1b8252814atagen2026-09-26 09:08 UTC174
              (wasmToolchain system)
55a1b8252814atagen2026-09-26 09:08 UTC175
              (wasmBindgenCli pkgs)
55a1b8252814atagen2026-09-26 09:08 UTC176
              binaryen
55a1b8252814atagen2026-09-26 09:08 UTC177
              brotli
55a1b8252814atagen2026-09-26 09:08 UTC178
              firefox
55a1b8252814atagen2026-09-26 09:08 UTC179
              geckodriver
55a1b8252814atagen2026-09-26 09:08 UTC180
              matrix-continuwuity
55a1b8252814atagen2026-09-26 09:08 UTC181
              nushell
55a1b8252814atagen2026-09-26 09:08 UTC182
            ];
55a1b8252814atagen2026-09-26 09:08 UTC183
            MACLTOK_STORE_FEATURE = storeFeature;
55a1b8252814atagen2026-09-26 09:08 UTC184
          };
96fdf90aacd6atagen2026-09-08 08:24 UTC185
        }
96fdf90aacd6atagen2026-09-08 08:24 UTC186
      );
96fdf90aacd6atagen2026-09-08 08:24 UTC187
    };
96fdf90aacd6atagen2026-09-08 08:24 UTC188
}