Move Rust build into its own flake at rust/flake.nix using crane, and
reference it as an input from the top-level flake. The Haskell build
gets the Rust artifacts (header + static lib) via a haskell.nix
override that symlinks them into place before configure.
Use Cabal's Cgarnet_rs naming convention for extra-bundled-libraries
to satisfy the shared library install phase naming requirements.
Also extract inputs.nix, default.nix, and shell.nix for flake-compat
(nix-build / nix-shell) support.