{ inputs = { nixpkgs.url = "github:nixos/nixpkgs/23.11"; haskell-flake.url = "github:srid/haskell-flake"; parts.url = "github:hercules-ci/flake-parts"; }; outputs = inputs@{ self, nixpkgs, parts, ... }: let packageName = "sampu"; containerPackageName = "${packageName}-container"; in parts.lib.mkFlake { inherit inputs; } { systems = nixpkgs.lib.systems.flakeExposed; imports = [ inputs.haskell-flake.flakeModule ]; perSystem = { self', pkgs, ... }: { haskellProjects.default = { basePackages = pkgs.haskellPackages; packages = { http2.source = "3.0.3"; }; devShell = { enable = true; tools = hp: { fourmolu = hp.fourmolu; }; hlsCheck.enable = true; }; }; packages.${containerPackageName} = pkgs.dockerTools.buildImage { name = packageName; copyToRoot = pkgs.buildEnv { name = "image-root"; paths = [ (pkgs.haskell.lib.justStaticExecutables self'.packages.sampu) ]; pathsToLink = [ "/bin" ]; }; tag = "latest"; config = { Cmd = [ "/bin/sampu" ]; WorkingDir = "/app"; ExposedPorts = { "3000/tcp" = {}; }; extraCommands = '' ''; }; }; packages.default = self'.packages.sampu; }; }; }