atagen

macltok

public
Star0
Watch0
9a25b6ce66f4d4430155c94da07fcc0e7b2f32b6
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;
96fdf90aacd6atagen2026-09-08 08:24 UTC63
            cargoLock.lockFile = ./Cargo.lock;
96fdf90aacd6atagen2026-09-08 08:24 UTC64
            preBuild = "export NIX_BUILD_CORES=2";
96fdf90aacd6atagen2026-09-08 08:24 UTC65
            SSL_CERT_FILE = "${pkgs.cacert}/etc/ssl/certs/ca-bundle.crt";
96fdf90aacd6atagen2026-09-08 08:24 UTC66
          };
96fdf90aacd6atagen2026-09-08 08:24 UTC67
        }
96fdf90aacd6atagen2026-09-08 08:24 UTC68
      );
96fdf90aacd6atagen2026-09-08 08:24 UTC69
55a1b8252814atagen2026-09-26 09:08 UTC70
      checks = forAllSystems (
55a1b8252814atagen2026-09-26 09:08 UTC71
        system:
55a1b8252814atagen2026-09-26 09:08 UTC72
        let
55a1b8252814atagen2026-09-26 09:08 UTC73
          pkgs = nixpkgs.legacyPackages.${system};
55a1b8252814atagen2026-09-26 09:08 UTC74
          toolchain = wasmToolchain system;
55a1b8252814atagen2026-09-26 09:08 UTC75
          wasmPlatform = pkgs.makeRustPlatform {
55a1b8252814atagen2026-09-26 09:08 UTC76
            cargo = toolchain;
55a1b8252814atagen2026-09-26 09:08 UTC77
            rustc = toolchain;
55a1b8252814atagen2026-09-26 09:08 UTC78
          };
55a1b8252814atagen2026-09-26 09:08 UTC79
          # continuwuity refuses to start without /etc/resolv.conf, which the build sandbox lacks, or with
7aa42f589ee2atagen2026-09-26 12:30 UTC80
          # stdenv's deliberately bogus SSL_CERT_FILE. no exec, run.nu launches through a shell that exits at
7aa42f589ee2atagen2026-09-26 12:30 UTC81
          # once and would trip --die-with-parent, so this shell stays as the parent run.nu kills
55a1b8252814atagen2026-09-26 09:08 UTC82
          sandboxedHomeserver = pkgs.writeShellScriptBin "conduwuit" ''
55a1b8252814atagen2026-09-26 09:08 UTC83
            export SSL_CERT_FILE=${pkgs.cacert}/etc/ssl/certs/ca-bundle.crt
7aa42f589ee2atagen2026-09-26 12:30 UTC84
            ${pkgs.lib.getExe pkgs.bubblewrap} --die-with-parent --dev-bind / / --tmpfs /etc \
55a1b8252814atagen2026-09-26 09:08 UTC85
              --ro-bind ${pkgs.writeText "resolv.conf" "nameserver 127.0.0.1\n"} /etc/resolv.conf \
55a1b8252814atagen2026-09-26 09:08 UTC86
              ${pkgs.lib.getExe' pkgs.matrix-continuwuity "conduwuit"} "$@"
55a1b8252814atagen2026-09-26 09:08 UTC87
          '';
55a1b8252814atagen2026-09-26 09:08 UTC88
        in
55a1b8252814atagen2026-09-26 09:08 UTC89
        {
55a1b8252814atagen2026-09-26 09:08 UTC90
          default = self.packages.${system}.default;
55a1b8252814atagen2026-09-26 09:08 UTC91
          sqlite = pkgs.rustPlatform.buildRustPackage {
55a1b8252814atagen2026-09-26 09:08 UTC92
            pname = "macltok-sqlite-check";
55a1b8252814atagen2026-09-26 09:08 UTC93
            version = "0.1.0";
55a1b8252814atagen2026-09-26 09:08 UTC94
            src = self;
55a1b8252814atagen2026-09-26 09:08 UTC95
            cargoLock.lockFile = ./Cargo.lock;
55a1b8252814atagen2026-09-26 09:08 UTC96
            preBuild = "export NIX_BUILD_CORES=2";
7aa42f589ee2atagen2026-09-26 12:30 UTC97
            buildFeatures = [
7aa42f589ee2atagen2026-09-26 12:30 UTC98
              "sqlite"
7aa42f589ee2atagen2026-09-26 12:30 UTC99
              "mirror"
7aa42f589ee2atagen2026-09-26 12:30 UTC100
            ];
55a1b8252814atagen2026-09-26 09:08 UTC101
            nativeBuildInputs = [ pkgs.pkg-config ];
55a1b8252814atagen2026-09-26 09:08 UTC102
            buildInputs = [ pkgs.sqlite ];
55a1b8252814atagen2026-09-26 09:08 UTC103
            SSL_CERT_FILE = "${pkgs.cacert}/etc/ssl/certs/ca-bundle.crt";
55a1b8252814atagen2026-09-26 09:08 UTC104
          };
67bf96a80270atagen2026-09-26 09:42 UTC105
          wasm = wasmPlatform.buildRustPackage {
67bf96a80270atagen2026-09-26 09:42 UTC106
            pname = "macltok-wasm-check";
67bf96a80270atagen2026-09-26 09:42 UTC107
            version = "0.1.0";
67bf96a80270atagen2026-09-26 09:42 UTC108
            src = self;
67bf96a80270atagen2026-09-26 09:42 UTC109
            cargoLock.lockFile = ./Cargo.lock;
67bf96a80270atagen2026-09-26 09:42 UTC110
            buildPhase = ''
67bf96a80270atagen2026-09-26 09:42 UTC111
              runHook preBuild
7aa42f589ee2atagen2026-09-26 12:30 UTC112
              cargo check --offline --frozen --lib --target wasm32-unknown-unknown -j 2
67bf96a80270atagen2026-09-26 09:42 UTC113
              cargo check --offline --frozen --lib \
67bf96a80270atagen2026-09-26 09:42 UTC114
                --target wasm32-unknown-unknown --features ${storeFeature},mirror -j 2
67bf96a80270atagen2026-09-26 09:42 UTC115
              runHook postBuild
67bf96a80270atagen2026-09-26 09:42 UTC116
            '';
67bf96a80270atagen2026-09-26 09:42 UTC117
            doCheck = false;
67bf96a80270atagen2026-09-26 09:42 UTC118
            installPhase = "touch $out";
67bf96a80270atagen2026-09-26 09:42 UTC119
          };
55a1b8252814atagen2026-09-26 09:08 UTC120
          web = wasmPlatform.buildRustPackage {
55a1b8252814atagen2026-09-26 09:08 UTC121
            pname = "macltok-web-check";
55a1b8252814atagen2026-09-26 09:08 UTC122
            version = "0.1.0";
55a1b8252814atagen2026-09-26 09:08 UTC123
            src = self;
55a1b8252814atagen2026-09-26 09:08 UTC124
            cargoRoot = "harness/web";
55a1b8252814atagen2026-09-26 09:08 UTC125
            cargoLock.lockFile = ./harness/web/Cargo.lock;
55a1b8252814atagen2026-09-26 09:08 UTC126
            nativeBuildInputs = with pkgs; [
55a1b8252814atagen2026-09-26 09:08 UTC127
              (wasmBindgenCli pkgs)
55a1b8252814atagen2026-09-26 09:08 UTC128
              firefox
55a1b8252814atagen2026-09-26 09:08 UTC129
              geckodriver
55a1b8252814atagen2026-09-26 09:08 UTC130
              sandboxedHomeserver
55a1b8252814atagen2026-09-26 09:08 UTC131
              nushell
55a1b8252814atagen2026-09-26 09:08 UTC132
            ];
55a1b8252814atagen2026-09-26 09:08 UTC133
            buildPhase = ''
55a1b8252814atagen2026-09-26 09:08 UTC134
              runHook preBuild
55a1b8252814atagen2026-09-26 09:08 UTC135
              export HOME=$TMPDIR
55a1b8252814atagen2026-09-26 09:08 UTC136
              nu --no-config-file harness/web/run.nu
55a1b8252814atagen2026-09-26 09:08 UTC137
              runHook postBuild
55a1b8252814atagen2026-09-26 09:08 UTC138
            '';
55a1b8252814atagen2026-09-26 09:08 UTC139
            doCheck = false;
55a1b8252814atagen2026-09-26 09:08 UTC140
            installPhase = "touch $out";
55a1b8252814atagen2026-09-26 09:08 UTC141
          };
55a1b8252814atagen2026-09-26 09:08 UTC142
        }
55a1b8252814atagen2026-09-26 09:08 UTC143
      );
96fdf90aacd6atagen2026-09-08 08:24 UTC144
96fdf90aacd6atagen2026-09-08 08:24 UTC145
      devShells = forAllSystems (
96fdf90aacd6atagen2026-09-08 08:24 UTC146
        system:
96fdf90aacd6atagen2026-09-08 08:24 UTC147
        let
96fdf90aacd6atagen2026-09-08 08:24 UTC148
          pkgs = nixpkgs.legacyPackages.${system};
96fdf90aacd6atagen2026-09-08 08:24 UTC149
        in
96fdf90aacd6atagen2026-09-08 08:24 UTC150
        {
96fdf90aacd6atagen2026-09-08 08:24 UTC151
          default = pkgs.mkShell {
96fdf90aacd6atagen2026-09-08 08:24 UTC152
            packages = with pkgs; [
96fdf90aacd6atagen2026-09-08 08:24 UTC153
              cargo
96fdf90aacd6atagen2026-09-08 08:24 UTC154
              clippy
96fdf90aacd6atagen2026-09-08 08:24 UTC155
              pkg-config
96fdf90aacd6atagen2026-09-08 08:24 UTC156
              rust-analyzer
96fdf90aacd6atagen2026-09-08 08:24 UTC157
              rustc
96fdf90aacd6atagen2026-09-08 08:24 UTC158
              rustfmt
96fdf90aacd6atagen2026-09-08 08:24 UTC159
              sqlite
96fdf90aacd6atagen2026-09-08 08:24 UTC160
            ];
96fdf90aacd6atagen2026-09-08 08:24 UTC161
          };
55a1b8252814atagen2026-09-26 09:08 UTC162
          web = pkgs.mkShell {
55a1b8252814atagen2026-09-26 09:08 UTC163
            packages = with pkgs; [
55a1b8252814atagen2026-09-26 09:08 UTC164
              (wasmToolchain system)
55a1b8252814atagen2026-09-26 09:08 UTC165
              (wasmBindgenCli pkgs)
55a1b8252814atagen2026-09-26 09:08 UTC166
              binaryen
55a1b8252814atagen2026-09-26 09:08 UTC167
              brotli
55a1b8252814atagen2026-09-26 09:08 UTC168
              firefox
55a1b8252814atagen2026-09-26 09:08 UTC169
              geckodriver
55a1b8252814atagen2026-09-26 09:08 UTC170
              matrix-continuwuity
55a1b8252814atagen2026-09-26 09:08 UTC171
              nushell
55a1b8252814atagen2026-09-26 09:08 UTC172
            ];
55a1b8252814atagen2026-09-26 09:08 UTC173
            MACLTOK_STORE_FEATURE = storeFeature;
55a1b8252814atagen2026-09-26 09:08 UTC174
          };
96fdf90aacd6atagen2026-09-08 08:24 UTC175
        }
96fdf90aacd6atagen2026-09-08 08:24 UTC176
      );
96fdf90aacd6atagen2026-09-08 08:24 UTC177
    };
96fdf90aacd6atagen2026-09-08 08:24 UTC178
}