{ description = "tricu"; inputs = { nixpkgs.url = "github:NixOS/nixpkgs"; flake-utils.url = "github:numtide/flake-utils"; }; outputs = { self, nixpkgs, flake-utils }: flake-utils.lib.eachDefaultSystem (system: let pkgs = nixpkgs.legacyPackages.${system}; packageName = "tricu"; containerPackageName = "${packageName}-container"; haskellPackages = pkgs.haskellPackages; hsLib = pkgs.haskell.lib; tricuStatic = hsLib.justStaticExecutables self.packages.${system}.default; tricuPackageTests = haskellPackages.callCabal2nix packageName self {}; tricuPackage = hsLib.dontCheck ( haskellPackages.callCabal2nix packageName self {} ); customGHC = haskellPackages.ghcWithPackages (hpkgs: with hpkgs; [ megaparsec ]); in { packages.${packageName} = tricuPackage; packages.default = tricuPackage; checks.${packageName} = tricuPackageTests; checks.default = tricuPackageTests; devShells.default = pkgs.mkShell { buildInputs = with pkgs; [ haskellPackages.cabal-install haskellPackages.ghc-events haskellPackages.ghcid customGHC upx ]; inputsFrom = [ tricuPackage ]; }; packages.${containerPackageName} = pkgs.dockerTools.buildImage { name = "tricu"; copyToRoot = pkgs.buildEnv { name = "image-root"; paths = [ tricuStatic ]; pathsToLink = [ "/bin" ]; }; tag = "latest"; config = { Cmd = [ "/bin/tricu" "server" "-h" "0.0.0.0" "-p" "8787" ]; WorkingDir = "/app"; ExposedPorts = { "8787/tcp" = {}; }; extraCommands = '' ''; }; }; }); }