{ description = "Unicode toy"; inputs.nixpkgs.url = "github:nixos/nixpkgs/release-24.11"; inputs.flake-utils.url = "github:numtide/flake-utils"; outputs = { self, nixpkgs, flake-utils }: flake-utils.lib.eachSystem ["x86_64-linux" "aarch64-darwin"] (system: let pkgs = import nixpkgs { inherit system; }; inherit (pkgs.haskell.lib) compose; # Fix broken unicode-data-names by overriding the version of the unicode-data package. haskellPackagesOverrides = self: super: { unicode-data = super.unicode-data_0_6_0; unicode-data-names = pkgs.haskell.lib.markUnbroken super.unicode-data-names; }; utoy = pkgs.lib.pipe # The basic package (pkgs.haskellPackages.developPackage { root = ./.; overrides = haskellPackagesOverrides; }) # And some build configuration. # See https://nixos.org/manual/nixpkgs/unstable/#haskell-packaging-helpers. [ # Remove warp which pulls GHC into the runtime deps for some reason. (compose.overrideCabal (drv: { postInstall = '' remove-references-to -t ${pkgs.haskellPackages.warp} $out/bin/utoy ''; })) # Return only the bin folder to curb image size compose.justStaticExecutables ]; in { packages = rec { docker = pkgs.dockerTools.buildImage { name = "git.pbrinkmeier.de/paul/utoy"; tag = utoy.version; config.Cmd = [ "${utoy}/bin/utoy" ]; }; default = utoy; }; devShells.default = (pkgs.haskellPackages.developPackage { root = ./.; overrides = haskellPackagesOverrides; modifier = drv: pkgs.haskell.lib.addBuildTools drv [ pkgs.cabal-install pkgs.haskellPackages.implicit-hie pkgs.haskell-language-server ]; cabal2nixOptions = "--benchmark"; }).env; }); }