library(ggplot2)
#> Registered S3 methods overwritten by 'ggplot2':
#> method from
#> [.quosures rlang
#> c.quosures rlang
#> print.quosures rlang
theme_acme <- list(
theme_minimal(),
theme(
plot.caption = element_text(hjust = 0, size = 6),
legend.position = "bottom",
legend.justification = "left",
legend.title = element_text(size = 7, face = "bold"),
plot.title = element_text(size = 7, face = "bold"),
axis.title.x = element_text(hjust = 0, size = 7, face = "bold"),
axis.text = element_text(size = 7, face = "bold")
)
)
ggplot(iris, aes(Petal.Width, Petal.Length, color = Species)) +
geom_point() +
labs(
y = "",
title = "Petal.Length",
caption = "Source: iris data."
) +
guides(color = guide_legend(ncol = 1)) +
theme_acme

Created on 2019-07-25 by the reprex package (v0.3.0)
To try state the goal more clearly: the left edges of legend.title, x.axis.title, and y.axis.title all need to be flush with the leftmost digit appearing on the y-axis.
I've been using the plot.title rather than the y.axis.title because it gets closer to the desired effect.
I will take a look at flush_ticks(), thanks for the suggestion.