Dynamically Bypass CUDA.jl for non-gpu machine

Sure. When I try to add UMAP after CUDA.jl. It automatically downgrades CUDA

(@v1.7) pkg> add UMAP
    Updating registry at `~/.julia/registries/General.toml`
   Resolving package versions...
    Updating `~/.julia/environments/v1.7/Project.toml`
  [052768ef] ↓ CUDA v3.4.1 ⇒ v2.6.3
  [c4f8c510] + UMAP v0.1.8
    Updating `~/.julia/environments/v1.7/Manifest.toml`
  [ec485272] + ArnoldiMethod v0.1.0
  [7d9fca2a] + Arpack v0.4.0
  [052768ef] ↓ CUDA v3.4.1 ⇒ v2.6.3
  [bbf7d656] + CommonSubexpressions v0.3.0
  [163ba53b] + DiffResults v1.0.3
  [b552c78f] + DiffRules v1.3.0
  [31c24e10] + Distributions v0.23.11
  [1a297f60] + FillArrays v0.9.7
  [6a86dc24] + FiniteDiff v2.8.1
  [f6369f11] + ForwardDiff v0.10.19
  [0c68f7d7] ↓ GPUArrays v8.0.2 ⇒ v6.4.1
  [61eb1bfa] ↓ GPUCompiler v0.12.9 ⇒ v0.10.0
  [d25df0c9] + Inflate v0.1.2
  [92d709cd] - IrrationalConstants v0.1.0
  [929cbde3] ↓ LLVM v4.2.0 ⇒ v3.9.0
  [093fc24a] + LightGraphs v1.3.5
  [2ab3a3ac] ↓ LogExpFunctions v0.3.0 ⇒ v0.2.5
  [2fda8390] + LsqFit v0.11.0
  [c03570c3] + Memoize v0.4.4
  [d41bc354] + NLSolversBase v7.8.1
  [872c559c] + NNlib v0.7.28
  [77ba4419] + NaNMath v0.3.5
  [dd2c4c9e] + NearestNeighborDescent v0.3.4
  [87e2bd06] + OptimBase v2.0.2
  [90014a1f] + PDMats v0.10.1
  [1fd47b50] + QuadGK v2.4.1
  [74087812] - Random123 v1.4.2
  [e6cf234a] - RandomNumbers v1.5.3
  [79098fc4] + Rmath v0.7.0
  [6c6a2e73] + Scratch v1.1.0
  [699a6c99] + SimpleTraits v0.9.4
  [276daf66] ↓ SpecialFunctions v1.6.1 ⇒ v0.10.3
  [90137ffa] + StaticArrays v1.2.12
  [4c63d2b9] + StatsFuns v0.9.8
  [c4f8c510] + UMAP v0.1.8
  [68821587] + Arpack_jll v3.5.0+3
  [dad2f222] - LLVMExtra_jll v0.0.9+0
  [f50d1b31] + Rmath_jll v0.3.0+0
  [4607b0f0] + SuiteSparse
Precompiling project...
  ✗ CUDA
  13 dependencies successfully precompiled in 10 seconds (117 already precompiled)
  1 dependency errored. To see a full report either run `import Pkg; Pkg.precompile()` or load the package