{
  inputs.nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
  inputs.flake-utils.url = "github:numtide/flake-utils";

  outputs = { self, nixpkgs, flake-utils }: flake-utils.lib.eachSystem [
    "x86_64-linux"
  ] (system: let
    pkgs = nixpkgs.legacyPackages.${system};
  in {
    devShells.default = pkgs.mkShell {
      buildInputs = with pkgs; [
        ccache
        gdb
        llvmPackages_22.bintools-unwrapped
        llvmPackages_22.clang
        llvmPackages_22.clang-tools
        llvmPackages_22.llvm
        llvmPackages_22.libclang
        (haskellPackages.ghcWithPackages (p: [p.shake]))
      ];
      shellHook = ''
      '';
    };

    packages.${system}.default = {
      pname = "pkg"; # pass
      version = "0.0"; # pass
      src = ./.;
      buildPhase = ''
        shake install --opt-level=3 --prefix=$out
      '';
    };

    apps.${system}.default = {
      type = "app";
      program = "${self.packages.${system}.default}/bin/<app>"; # pass
    };
  });
}