summaryrefslogtreecommitdiff
path: root/flake.nix
blob: dcc0b7a3e58e2c9d73522c7a83e0326dcb1d53a1 (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
40
41
42
43
44
{
  description = "A purely functional wayland compositor.";

  inputs = {
    nixpkgs = {
      url = "github:nixos/nixpkgs/nixos-unstable";
    };
    flake-utils = {
      url = "github:numtide/flake-utils";
    };
    nixos-apple-silicon = {
      url = "github:tpwrules/nixos-apple-silicon";
      inputs.nixpkgs.follows = "nixpkgs";
    };
  };

  outputs = { self, nixpkgs, flake-utils, nixos-apple-silicon }:
    flake-utils.lib.eachDefaultSystem (system:
      let
        shell = name: overlays:
          let
            pkgs = import nixpkgs {
              inherit system overlays;
            };
            haskell = pkgs.haskellPackages.ghcWithPackages (p:
              with p; [ microlens microlens-mtl microlens-th haskell-language-server ]);
          in
          pkgs.mkShell {
            inherit name;
            packages = [ haskell pkgs.pkg-config pkgs.wayland pkgs.cabal-install ];
            hardeningDisable = [ "fortify" ];
          };
      in
      {
        devShells = {
          default = shell "highway" [];
          asahi = shell "highway-asahi" [
            (final: prev: {
              mesa = nixos-apple-silicon.packages.${system}.mesa-asahi-edge;
            })
          ];
        };
      });
}