diff --git a/src/Allwmake b/src/Allwmake
index 62983dcf1f572f0a3960af41521d280d49d673b4..ff447a107566b5fba6d02ea80762f205f4f5479e 100755
--- a/src/Allwmake
+++ b/src/Allwmake
@@ -30,7 +30,7 @@ OpenFOAM/Alltouch -check 2>/dev/null
 OSspecific/"${WM_OSTYPE:-POSIX}"/Allwmake $targetType $*
 
 case "$WM_COMPILER" in
-(Mingw* | Nvidia*)
+(Mingw*)
     # Pstream/OpenFOAM cyclic dependency
     # 1st pass: link as Pstream as single .o object
     WM_MPLIB=dummy Pstream/Allwmake libo
diff --git a/wmake/rules/linuxARM64Nvidia/c b/wmake/rules/linuxARM64Nvidia/c
new file mode 100644
index 0000000000000000000000000000000000000000..b1447dd9fecf1a30874816f3175585235cda1c06
--- /dev/null
+++ b/wmake/rules/linuxARM64Nvidia/c
@@ -0,0 +1,15 @@
+#------------------------------------------------------------------------------
+include $(GENERAL_RULES)/Nvidia/c
+
+cARCH       =
+
+# Compile option is non-mandatory, but must be non-empty
+sinclude $(DEFAULT_RULES)/c$(WM_COMPILE_OPTION)
+
+cFLAGS      = $(cARCH) $(GFLAGS) $(cWARN) $(cOPT) $(cDBUG) $(LIB_HEADER_DIRS) -fPIC
+
+ctoo        = $(WM_SCHEDULER) $(cc) $(cFLAGS) -c $< -o $@
+
+include $(GENERAL_RULES)/Nvidia/link-c
+
+#------------------------------------------------------------------------------
diff --git a/wmake/rules/linuxARM64Nvidia/c++ b/wmake/rules/linuxARM64Nvidia/c++
new file mode 100644
index 0000000000000000000000000000000000000000..e3e45d17886a4792fb945bc433f02e459469bc32
--- /dev/null
+++ b/wmake/rules/linuxARM64Nvidia/c++
@@ -0,0 +1,17 @@
+#------------------------------------------------------------------------------
+include $(GENERAL_RULES)/Nvidia/c++
+
+c++ARCH     =
+
+include $(DEFAULT_RULES)/c++$(WM_COMPILE_OPTION)
+
+c++FLAGS    = $(c++ARCH) $(GFLAGS) $(c++WARN) $(c++OPT) $(c++DBUG) $(ptFLAGS) $(LIB_HEADER_DIRS) -fPIC
+
+Ctoo        = $(WM_SCHEDULER) $(CC) $(c++FLAGS) -c $< -o $@
+cctoo       = $(Ctoo)
+cpptoo      = $(Ctoo)
+cxxtoo      = $(Ctoo)
+
+include $(GENERAL_RULES)/Nvidia/link-c++
+
+#------------------------------------------------------------------------------
diff --git a/wmake/rules/linuxARM64Nvidia/c++Debug b/wmake/rules/linuxARM64Nvidia/c++Debug
new file mode 100644
index 0000000000000000000000000000000000000000..48f0b6643e18406a22b768923aa876a312269ea1
--- /dev/null
+++ b/wmake/rules/linuxARM64Nvidia/c++Debug
@@ -0,0 +1,2 @@
+c++DBUG     = -g -DFULLDEBUG
+c++OPT      = -O0
diff --git a/wmake/rules/linuxARM64Nvidia/c++Opt b/wmake/rules/linuxARM64Nvidia/c++Opt
new file mode 100644
index 0000000000000000000000000000000000000000..2aedabd6280a3476bc58db13139a0a3aa579502b
--- /dev/null
+++ b/wmake/rules/linuxARM64Nvidia/c++Opt
@@ -0,0 +1,2 @@
+c++DBUG     =
+c++OPT      = -O3
diff --git a/wmake/rules/linuxARM64Nvidia/c++Prof b/wmake/rules/linuxARM64Nvidia/c++Prof
new file mode 100644
index 0000000000000000000000000000000000000000..3bda4dad55e898a8198f6e8bfe21e8d829d7230a
--- /dev/null
+++ b/wmake/rules/linuxARM64Nvidia/c++Prof
@@ -0,0 +1,2 @@
+c++DBUG    = -pg
+c++OPT     = -O2
diff --git a/wmake/rules/linuxARM64Nvidia/cDebug b/wmake/rules/linuxARM64Nvidia/cDebug
new file mode 100644
index 0000000000000000000000000000000000000000..7b7adf10deade9c64833672b98de8ace4fb61a0e
--- /dev/null
+++ b/wmake/rules/linuxARM64Nvidia/cDebug
@@ -0,0 +1,2 @@
+cDBUG       = -g -DFULLDEBUG
+cOPT        = -O0
diff --git a/wmake/rules/linuxARM64Nvidia/cOpt b/wmake/rules/linuxARM64Nvidia/cOpt
new file mode 100644
index 0000000000000000000000000000000000000000..17318709f1fa39e6bf89cbe87778bc6fa459de17
--- /dev/null
+++ b/wmake/rules/linuxARM64Nvidia/cOpt
@@ -0,0 +1,2 @@
+cDBUG       =
+cOPT        = -O3
diff --git a/wmake/rules/linuxARM64Nvidia/cProf b/wmake/rules/linuxARM64Nvidia/cProf
new file mode 100644
index 0000000000000000000000000000000000000000..ca3ac9bf5f0cd61fe99e0f05fa1bd4bdf9fa6cf7
--- /dev/null
+++ b/wmake/rules/linuxARM64Nvidia/cProf
@@ -0,0 +1,2 @@
+cDBUG       = -pg
+cOPT        = -O2
diff --git a/wmake/rules/linuxARM64Nvidia/general b/wmake/rules/linuxARM64Nvidia/general
new file mode 100644
index 0000000000000000000000000000000000000000..5cfb798fac46c20cb988bfc66aa017b6fe18ce16
--- /dev/null
+++ b/wmake/rules/linuxARM64Nvidia/general
@@ -0,0 +1,13 @@
+CPP        = cpp -traditional-cpp $(GFLAGS)
+
+include $(GENERAL_RULES)/standard
+## include $(GENERAL_RULES)/Pgi/openmp
+
+ifneq (,$(findstring ~openmp,$(WM_COMPILE_CONTROL)))
+    include $(GENERAL_RULES)/no-openmp
+endif
+
+include $(DEFAULT_RULES)/c
+include $(DEFAULT_RULES)/c++
+
+# -----------------------------------------------------------------------------
diff --git a/wmake/rules/linuxARM64Nvidia/mplibOPENMPI b/wmake/rules/linuxARM64Nvidia/mplibOPENMPI
new file mode 100644
index 0000000000000000000000000000000000000000..0faf49ed1e5df5df4ba4ae67fe6d9e8210858e39
--- /dev/null
+++ b/wmake/rules/linuxARM64Nvidia/mplibOPENMPI
@@ -0,0 +1,3 @@
+PFLAGS     = -DMPICH_SKIP_MPICXX -DOMPI_SKIP_MPICXX
+PINC       = -I$(MPI_ARCH_PATH)/include
+PLIBS      = -L$(MPI_ARCH_PATH)/lib$(WM_COMPILER_LIB_ARCH) -L$(MPI_ARCH_PATH)/lib -lmpi