summaryrefslogtreecommitdiff
path: root/nix/dev/static.nix
diff options
context:
space:
mode:
Diffstat (limited to 'nix/dev/static.nix')
-rw-r--r--nix/dev/static.nix39
1 files changed, 39 insertions, 0 deletions
diff --git a/nix/dev/static.nix b/nix/dev/static.nix
new file mode 100644
index 0000000..e8780f4
--- /dev/null
+++ b/nix/dev/static.nix
@@ -0,0 +1,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;
+ };
+ };
+}