This repository has no description
1{
2 description = "Packages for Linux on WebAssembly";
3
4 inputs = {
5 nixpkgs.url = "github:nixos/nixpkgs/nixos-24.11";
6 flake-parts = {
7 url = "github:hercules-ci/flake-parts";
8 inputs.nixpkgs-lib.follows = "nixpkgs";
9 };
10
11 # repo meta:
12 # keep-sorted start block=yes
13 git-hooks = {
14 url = "github:cachix/git-hooks.nix";
15 inputs.nixpkgs.follows = "nixpkgs";
16 };
17 make-shell = {
18 url = "github:nicknovitski/make-shell";
19 };
20 treefmt-nix = {
21 url = "github:numtide/treefmt-nix";
22 inputs.nixpkgs.follows = "nixpkgs";
23 };
24 # keep-sorted end
25
26 # package sources:
27 # keep-sorted start block=yes
28 busybox = {
29 url = "github:tombl/busybox";
30 flake = false;
31 };
32 linux = {
33 url = "github:tombl/linux/args";
34 flake = false;
35 };
36 llvm = {
37 url = "github:llvm/llvm-project/release/19.x";
38 flake = false;
39 };
40 musl = {
41 url = "github:tombl/musl";
42 flake = false;
43 };
44 # keep-sorted end
45 };
46
47 nixConfig = {
48 extra-substituters = [ "https://nix.tombl.net/linuxwasm" ];
49 extra-trusted-keys = [ "linuxwasm:VY2O9prGSkyVY+xn1RNQV4voLVTnc2FOxAtzf8VbZaw=" ];
50 };
51
52 outputs =
53 inputs:
54 inputs.flake-parts.lib.mkFlake { inherit inputs; } {
55 imports = [
56 # keep-sorted start
57 ./flake/format.nix
58 ./flake/git-hooks.nix
59 ./flake/shell.nix
60 # keep-sorted end
61 ];
62
63 systems = [
64 "x86_64-linux"
65 "aarch64-linux"
66 "x86_64-darwin"
67 "aarch64-darwin"
68 ];
69
70 perSystem =
71 {
72 pkgs,
73 system,
74 config,
75 lib,
76 ...
77 }:
78 {
79 # For better or for worse, nixpkgs has established the pattern of
80 # a legacyPackages attribute that does not contain legacy packages at all,
81 # but rather an attribute set that's just not the shape of the typical packages attribute.
82 # In our case, we have a handful of non-package attributes that we still want to expose under the pkgs object.
83 legacyPackages = import ./all-packages.nix {
84 inherit (inputs.nixpkgs) lib;
85 inherit inputs;
86 currentSystem = system;
87 hostpkgs = import ./host-packages.nix { inherit pkgs; };
88 };
89
90 # and then expose a filtered version of that attribute set with just the actual packages.
91 packages = lib.filterAttrs (_name: value: value ? drvPath) config.legacyPackages;
92 checks = config.packages;
93 };
94 };
95}