{ inputs = { haskellNix.url = "github:input-output-hk/haskell.nix"; # nixpkgs.url = "github:NixOS/nixpkgs/nixpkgs-unstable"; nixpkgs.follows = "haskellNix/nixpkgs-unstable"; }; outputs = { self, nixpkgs, haskellNix, ... }@inputs: let supportedSystems = [ "aarch64-darwin" "aarch64-linux" "x86_64-darwin" "x86_64-linux" ]; overlays = [ haskellNix.overlay (final: prev: { # haskellPackages = prev.haskellPackages.override { # qbe = final.haskell-nix.project' { # src = final.fetchFromGitea { # domain = "git.deertopia.net"; # owner = "msyds"; # repo = "qbe-hs"; # rev = "master"; # hash = "sha256-3Ni2xFOvw7Qjzq7BIXfnSQQ3U99OaEH0j6SdILMYizs="; # }; # compiler-nix-name = "ghc912"; # }; # }; gyehoek = final.haskell-nix.project' { src = ./.; compiler-nix-name = "ghc912"; shell = { withHoogle = true; tools = { cabal = {}; haskell-language-server = {}; }; buildInputs = with final; [ gcc qbe haskellPackages.cabal-fmt ]; }; }; }) ]; each-system = f: nixpkgs.lib.genAttrs supportedSystems (system: f rec { pkgs = import nixpkgs { inherit system overlays; }; inherit (pkgs) lib; inherit system; }); hf = let keys = [ "packages" "apps" "devShells" "hydraJobs" "ciJobs" "checks" ]; in nixpkgs.lib.genAttrs keys (k: each-system ({ pkgs, ... }: (pkgs.gyehoek.flake {}).${k})); in { # Exposed as a REPL convenience. _pkgs = each-system ({ pkgs, ... }: pkgs); _hf = hf; packages = each-system ({ pkgs, system, ... }: hf.packages.${system} // { default = hf.packages.${system}."gyehoek:exe:gyehoek"; }); devShells = each-system ({ pkgs, system, ... }: hf.devShells.${system}); }; nixConfig = { extra-substituters = [ "https://cache.iog.io" "https://cache.zw3rk.com" ]; extra-trusted-public-keys = [ "hydra.iohk.io:f/Ea+s+dFdN+3Y/G+FDgSq+a5NEWhJGzdjvKNGv0/EQ=" "loony-tools:pr9m4BkM/5/eSTZlkQyRt57Jz7OMBxNSUiMC4FkcNfk=" ]; allow-import-from-derivation = "true"; }; }