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