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/format.nix
36 ./flake/git-hooks.nix
37 ./flake/shell.nix
38 # keep-sorted end
39 ];
40
41 systems = [
42 "x86_64-linux"
43 "aarch64-linux"
44 "x86_64-darwin"
45 "aarch64-darwin"
46 ];
47
48 perSystem =
49 {
50 pkgs,
51 system,
52 config,
53 lib,
54 ...
55 }:
56 {
57 # For better or for worse, nixpkgs has established the pattern of
58 # a legacyPackages attribute that does not contain legacy packages at all,
59 # but rather an attribute set that's just not the shape of the typical packages attribute.
60 # In our case, we have a handful of non-package attributes that we still want to expose under the pkgs object.
61 legacyPackages = import ./all-packages.nix {
62 inherit (inputs.nixpkgs) lib;
63 currentSystem = system;
64 hostpkgs = import ./host-packages.nix { inherit pkgs; };
65 };
66
67 # and then expose a filtered version of that attribute set with just the actual packages.
68 packages = lib.filterAttrs (_name: value: value ? drvPath) config.legacyPackages;
69 checks = config.packages;
70 };
71 };
72}