{ description = "devshell-dorne"; inputs = { nixpkgs.url = "github:NixOS/nixpkgs/nixos-25.05"; }; outputs = inputs @ { self, nixpkgs, }: let defaultSystems = ["aarch64-darwin" "aarch64-linux" "i686-linux" "x86_64-darwin" "x86_64-linux"]; # forAllSystems = f: nixpkgs.lib.genAttrs defaultSystems (system: f system); forAllSystems = f: nixpkgs.lib.genAttrs defaultSystems (system: f system (import nixpkgs { inherit system; overlays = builtins.attrValues self.overlays; })); # list directory contents as absolute paths lsAbsolute = with builtins; path: map (name: toPath path + toPath name) (attrNames (readDir path)); in { overlays.default = final: prev: { dorne = final.haskellPackages.developPackage { root = ./.; modifier = drv: final.haskell.lib.addBuildTools drv (with final.haskellPackages; [ cabal-install ghcid ]); }; }; devShells = forAllSystems ( system: pkgs: { default = pkgs.mkShell { packages = with pkgs; [ gnumake # Compilers gcc ghc # C Dependencies pipewire # Language/Development Tooling clang-tools bear # clang compile_commands.json haskell-language-server ormolu ]; shell = "${pkgs.bash}/bin/bash"; # SPA API is provided by pipewire's "dev" derivation output C_INCLUDE_PATH = builtins.concatStringSep ":" (lsAbsolute "${pkgs.pipewire.dev}/include"); }; } ); checks = self.packages; packages = forAllSystems (system: pkgs: rec { default = dorne; dorne = pkgs.dorne; }); }; }