why does `cabal` rebuild everything? - Haskell

Welcome to the Functional Programming Zulip Chat Archive. You can join the chat here.

rednaZ
with import
  (fetchTarball {
    name = "nixos-22.11-2022-11-26";
    url = "https://github.com/NixOS/nixpkgs/archive/899e7caf59d1954882a8e2dff45ccc0387c186f6.tar.gz";
    sha256 = "06vj1qw5626yhx5mqy2js0dzyc7zrs73ygxz26049f7cdviwcmkx";
  })
    {};
mkShell rec {
  packages =
    [zlib]
    ++
    (with haskell.packages.ghc924;
      [
        ghc
        cabal-install
      ]
    );
  LD_LIBRARY_PATH = lib.makeLibraryPath packages;
}

in shell.nix.

  build-depends:
    , base             ==4.16.3.0
    , containers       ==0.6.6
    , html-conduit     ==1.3.2.2
    , lens             ==5.2
    , path             ==0.9.2
    , pretty-simple    ==4.1.2.0
    , relude           ==1.1.0.0
    , req              ==3.13.0
    , safe-exceptions  ==0.1.7.3
    , time             ==1.12.2
    , typed-process    ==0.2.10.1
    , xml-lens         ==0.3.1

in .cabal file.

and yet,

Resolving dependencies...
Build profile: -w ghc-9.2.4 -O0
In order, the following will be built (use -v for more details):
 - cookie-0.4.6 (lib) (requires download & build)
 - data-array-byte-0.1.0.1 (lib) (requires download & build)
 - parsec-3.1.16.1 (lib) (requires download & build)
 - hashable-1.4.2.0 (lib) (requires download & build)
 - network-uri-2.6.4.2 (lib) (requires download & build)
 - Cabal-syntax-3.8.1.0 (lib) (requires build)
 - uuid-types-1.0.5 (lib) (requires build)
 - unordered-containers-0.2.19.1 (lib) (requires build)
 - time-compat-1.9.6.1 (lib) (requires build)
 - these-1.1.1.1 (lib) (requires build)
 - text-short-0.1.5 (lib) (requires build)
 - scientific-0.3.7.0 (lib) (requires build)
 - data-fix-0.3.2 (lib) (requires build)
 - case-insensitive-1.2.1.0 (lib) (requires build)
 - async-2.2.4 (lib) (requires build)
 - Cabal-3.8.1.0 (lib) (requires build)
 - semigroupoids-5.3.7 (lib) (requires build)
 - relude-1.1.0.0 (lib) (requires build)
 - mono-traversable-1.0.15.3 (lib) (requires build)
 - invariant-0.6 (lib) (requires build)
 - indexed-traversable-instances-0.1.1.1 (lib) (requires build)
 - strict-0.4.0.1 (lib) (requires build)
 - attoparsec-0.14.4 (lib) (requires build)
 - megaparsec-9.3.0 (lib) (requires build)
 - http-types-0.12.3 (lib) (requires build)
 - typed-process-0.2.10.1 (lib) (requires build)
 - tls-1.6.0 (lib) (requires build)
 - streaming-commons-0.2.2.5 (lib) (requires build)
 - entropy-0.4.1.10 (lib:entropy) (requires build)
 - cabal-doctest-1.0.9 (lib) (requires build)
 - free-5.1.10 (lib) (requires build)
 - conduit-1.3.4.3 (lib) (requires build)
 - witherable-0.4.2 (lib) (requires build)
 - semialign-1.2.0.1 (lib) (requires build)
 - attoparsec-iso8601-1.1.0.0 (lib) (requires build)
 - modern-uri-0.3.6.0 (lib) (requires build)
 - connection-0.3.1 (lib:connection) (requires build)
 - http-client-0.7.13.1 (lib) (requires build)
 - crypto-api-0.13.3 (lib:crypto-api) (requires build)
 - pretty-simple-4.1.2.0 (lib:pretty-simple) (requires build)
 - adjunctions-4.4.2 (lib) (requires build)
 - conduit-extra-1.3.6 (lib) (requires build)
 - aeson-2.1.1.0 (lib) (requires build)
 - http-api-data-0.5 (lib) (requires build)
 - http-client-tls-0.3.6.1 (lib) (requires build)
 - RSA-2.4.1 (lib) (requires build)
 - kan-extensions-5.2.5 (lib) (requires build)
 - xml-conduit-1.9.1.1 (lib:xml-conduit) (requires build)
 - path-0.9.2 (lib) (requires build)
 - authenticate-oauth-1.7 (lib) (requires build)
 - lens-5.2 (lib) (requires build)
 - html-conduit-1.3.2.2 (lib) (requires build)
 - req-3.13.0 (lib) (requires build)
 - xml-lens-0.3.1 (lib) (requires build)
 - monitor-fizz-0.1.0.0 (lib) (configuration changed)
 - monitor-fizz-0.1.0.0 (exe:monitor-fizz) (dependency rebuilt)

in the cabal run output one month after building the project the last time.