summaryrefslogtreecommitdiff
path: root/nix/dev/static.nix
blob: e8780f4f2b24e36992a3e4b3a6fda8b1c1e60073 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
{
  perSystem = {
    lib,
    pkgs,
    inputs',
    teawiebot',
    ...
  }: let
    crossTargets = with pkgs.pkgsCross; {
      x86_64 = musl64.pkgsStatic;
      aarch64 = aarch64-multiplatform.pkgsStatic;
    };

    rustStdFor = pkgs: inputs'.fenix.packages.targets.${pkgs.stdenv.hostPlatform.rust.rustcTarget}.stable.rust-std;
    toolchain = with inputs'.fenix.packages;
      combine (lib.flatten [
        stable.cargo
        stable.rustc
        (map rustStdFor (lib.attrValues crossTargets))
      ]);

    rustPlatformFor = pkgs:
      pkgs.makeRustPlatform (
        lib.genAttrs ["cargo" "rustc"] (lib.const toolchain)
      );
    crossPlatforms = lib.mapAttrs (lib.const rustPlatformFor) crossTargets;

    buildTeawieWith = rustPlatform:
      teawiebot'.packages.teawiebot.override {
        inherit rustPlatform;
        optimizeSize = true;
      };
  in {
    packages = {
      teawiebot-static-x86_64 = buildTeawieWith crossPlatforms.x86_64;
      teawiebot-static-aarch64 = buildTeawieWith crossPlatforms.aarch64;
    };
  };
}