diff --git a/debiantesting-arm64-common.yaml b/debiantesting-arm64-common.yaml
index 99736117180d83157949b8a8d04110ee23d5c4d2..dcc23817299fc0ecd0f5dcdcd3861f5cde22956f 100644
--- a/debiantesting-arm64-common.yaml
+++ b/debiantesting-arm64-common.yaml
@@ -43,8 +43,6 @@ global:
   timezone: Europe/Paris
   # password
   root_password: grid5000
-  # clean_unnecessary_packages step settings (packages debfoster must keep)
-  default_packages_no_clean: gnupg linux-image-$${deb_arch} console-setup rsync locales firmware-bnx2 firmware-bnx2x firmware-qlogic openssh-server
   arch_packages_no_clean: grub-efi-arm64 grub-common
   other_packages_no_clean:
 
diff --git a/debiantesting-arm64-min.yaml b/debiantesting-arm64-min.yaml
index 23f0cfee1dcf4cc92ae8fba1eea2d5c7a80885e4..90f082bd9b4cd325728780e3f3dab2b529914c04 100644
--- a/debiantesting-arm64-min.yaml
+++ b/debiantesting-arm64-min.yaml
@@ -11,6 +11,11 @@ extend: ./debiantesting-arm64-common.yaml
 global:
   # Grid'5000 environment variant
   g5k_variant: min
+  g5k_deb_repositories: "g5k-meta-packages"
+  # packages to install
+  packages: "$${packages} g5k-meta-packages-$${distrib}$${g5k_release_number}-$${g5k_variant}"
+  # clean_unnecessary_packages step settings (packages debfoster must keep)
+  default_packages_no_clean: g5k-meta-packages-$${distrib}$${g5k_release_number}-$${g5k_variant} gnupg linux-image-$${deb_arch} console-setup rsync locales firmware-bnx2 firmware-bnx2x firmware-qlogic firmware-misc-nonfree amd64-microcode intel-microcode iucode-tool openssh-server
 
 bootstrap:
   - "@base"
diff --git a/debiantesting-arm64-nfs.yaml b/debiantesting-arm64-nfs.yaml
index 6358f2162c7b5ff6e720fa04ac419d42c6484953..de719dbd65a2c72aef23c781206dca30f48dc3f1 100644
--- a/debiantesting-arm64-nfs.yaml
+++ b/debiantesting-arm64-nfs.yaml
@@ -11,10 +11,13 @@ extend: ./debiantesting-arm64-common.yaml
 global:
   # Grid'5000 environment variant
   g5k_variant: nfs
+  g5k_deb_repositories: "g5k-meta-packages"
   # packages to install
-  packages: "$${packages} nfs-common autofs nslcd ruby"
+  packages: "$${packages} nfs-common autofs nslcd ruby g5k-meta-packages-$${distrib}$${g5k_release_number}-$${g5k_variant}"
   # Grid'5000 Kadeploy environment parameters
   g5k_postinst_script: g5k-postinstall --net debian --fstab nfs --restrict-user current --disk-aliases
+  # clean_unnecessary_packages step settings (packages debfoster must keep)
+  default_packages_no_clean: g5k-meta-packages-$${distrib}$${g5k_release_number}-$${g5k_variant} gnupg linux-image-$${deb_arch} console-setup rsync locales firmware-bnx2 firmware-bnx2x firmware-qlogic firmware-misc-nonfree amd64-microcode intel-microcode iucode-tool openssh-server sudo autofs ndctl discover nfs-common ldap-utils nslcd nslcd-utils python3.12
 
 bootstrap:
   - "@base"
@@ -24,6 +27,7 @@ setup:
   - setup_g5k_ca_certificate
   - setup_ldap
   - disable_nvme_multipath
+  - disable_ndctl_monitor
 
 export:
   - "@base"
diff --git a/debiantesting-ppc64-common.yaml b/debiantesting-ppc64-common.yaml
index 5e3956985cdd2aea042ff5b84a1b082657358905..9b667aa1102c5ea9e5090444aaa3050578312437 100644
--- a/debiantesting-ppc64-common.yaml
+++ b/debiantesting-ppc64-common.yaml
@@ -43,8 +43,6 @@ global:
   timezone: Europe/Paris
   # password
   root_password: grid5000
-  # clean_unnecessary_packages step settings (packages debfoster must keep)
-  default_packages_no_clean: gnupg linux-image-powerpc64le console-setup rsync locales firmware-bnx2 firmware-bnx2x firmware-qlogic openssh-server
   arch_packages_no_clean: grub-ieee1275 grub-common
   other_packages_no_clean:
 
diff --git a/debiantesting-ppc64-min.yaml b/debiantesting-ppc64-min.yaml
index 6b59b4e15e73b59823d16eb3011fc6a3c8034397..415f9f291110ba15b79861155ef1b2110ed7faf4 100644
--- a/debiantesting-ppc64-min.yaml
+++ b/debiantesting-ppc64-min.yaml
@@ -11,6 +11,11 @@ extend: ./debiantesting-ppc64-common.yaml
 global:
   # Grid'5000 environment variant
   g5k_variant: min
+  g5k_deb_repositories: "g5k-meta-packages"
+  # packages to install
+  packages: "$${packages} g5k-meta-packages-$${distrib}$${g5k_release_number}-$${g5k_variant}"
+  # clean_unnecessary_packages step settings (packages debfoster must keep)
+  default_packages_no_clean: g5k-meta-packages-$${distrib}$${g5k_release_number}-$${g5k_variant} gnupg linux-image-$${deb_arch} console-setup rsync locales firmware-bnx2 firmware-bnx2x firmware-qlogic firmware-misc-nonfree amd64-microcode intel-microcode iucode-tool openssh-server
 
 bootstrap:
   - "@base"
diff --git a/debiantesting-ppc64-nfs.yaml b/debiantesting-ppc64-nfs.yaml
index 6fab2b3c78cb42a152fdc64040f3f8a5109c83e5..1fd0b185adbc0abf635341fe803252cc31f867a5 100644
--- a/debiantesting-ppc64-nfs.yaml
+++ b/debiantesting-ppc64-nfs.yaml
@@ -11,10 +11,13 @@ extend: ./debiantesting-ppc64-common.yaml
 global:
   # Grid'5000 environment variant
   g5k_variant: nfs
+  g5k_deb_repositories: "g5k-meta-packages"
   # packages to install
-  packages: "$${packages} nfs-common autofs nslcd ruby"
+  packages: "$${packages} nfs-common autofs nslcd ruby g5k-meta-packages-$${distrib}$${g5k_release_number}-$${g5k_variant}"
   # Grid'5000 Kadeploy environment parameters
   g5k_postinst_script: g5k-postinstall --net debian --fstab nfs --restrict-user current --disk-aliases
+  # clean_unnecessary_packages step settings (packages debfoster must keep)
+  default_packages_no_clean: g5k-meta-packages-$${distrib}$${g5k_release_number}-$${g5k_variant} gnupg linux-image-$${deb_arch} console-setup rsync locales firmware-bnx2 firmware-bnx2x firmware-qlogic firmware-misc-nonfree amd64-microcode intel-microcode iucode-tool openssh-server sudo autofs ndctl discover nfs-common ldap-utils nslcd nslcd-utils python3.12
 
 bootstrap:
   - "@base"
@@ -24,6 +27,7 @@ setup:
   - setup_g5k_ca_certificate
   - setup_ldap
   - disable_nvme_multipath
+  - disable_ndctl_monitor
 
 export:
   - "@base"
diff --git a/debiantesting-x64-common.yaml b/debiantesting-x64-common.yaml
index 371d127daebb3edccb80c8d6a3a8509f6c301f42..4804a92277cfee979266af8b2a9a2cd8eef711cf 100644
--- a/debiantesting-x64-common.yaml
+++ b/debiantesting-x64-common.yaml
@@ -41,8 +41,6 @@ global:
   timezone: Europe/Paris
   # password
   root_password: grid5000
-  # clean_unnecessary_packages step settings (packages debfoster must keep)
-  default_packages_no_clean: gnupg linux-image-$${deb_arch} console-setup rsync locales firmware-bnx2 firmware-bnx2x firmware-qlogic firmware-misc-nonfree amd64-microcode intel-microcode iucode-tool openssh-server
   arch_packages_no_clean: grub-pc grub-efi-amd64-bin
   other_packages_no_clean:
 
diff --git a/debiantesting-x64-min.yaml b/debiantesting-x64-min.yaml
index 0403df40b581ff1b2b6a2e2f0c4e78516b097fac..7f38de61b68b0e473c0f8812aea96ace9aba44e8 100644
--- a/debiantesting-x64-min.yaml
+++ b/debiantesting-x64-min.yaml
@@ -11,6 +11,11 @@ extend: ./debiantesting-x64-common.yaml
 global:
   # Grid'5000 environment variant
   g5k_variant: min
+  g5k_deb_repositories: "g5k-meta-packages"
+  # packages to install
+  packages: "$${packages} g5k-meta-packages-$${distrib}$${g5k_release_number}-$${g5k_variant}"
+  # clean_unnecessary_packages step settings (packages debfoster must keep)
+  default_packages_no_clean: g5k-meta-packages-$${distrib}$${g5k_release_number}-$${g5k_variant} gnupg linux-image-$${deb_arch} console-setup rsync locales firmware-bnx2 firmware-bnx2x firmware-qlogic firmware-misc-nonfree amd64-microcode intel-microcode iucode-tool openssh-server
 
 bootstrap:
   - "@base"
diff --git a/debiantesting-x64-nfs.yaml b/debiantesting-x64-nfs.yaml
index ab4203c1128e3c09277f36ea7a4892d2acb58a73..2a4a212e6b6e17434a79d08562cb0b118400b50c 100644
--- a/debiantesting-x64-nfs.yaml
+++ b/debiantesting-x64-nfs.yaml
@@ -11,10 +11,13 @@ extend: ./debiantesting-x64-common.yaml
 global:
   # Grid'5000 environment variant
   g5k_variant: nfs
+  g5k_deb_repositories: "g5k-meta-packages"
   # packages to install
-  packages: "$${packages} nfs-common autofs nslcd ruby"
+  packages: "$${packages} nfs-common autofs nslcd ruby g5k-meta-packages-$${distrib}$${g5k_release_number}-$${g5k_variant}"
   # Grid'5000 Kadeploy environment parameters
   g5k_postinst_script: g5k-postinstall --net debian --fstab nfs --restrict-user current --disk-aliases
+  # clean_unnecessary_packages step settings (packages debfoster must keep)
+  default_packages_no_clean: g5k-meta-packages-$${distrib}$${g5k_release_number}-$${g5k_variant} gnupg linux-image-$${deb_arch} console-setup rsync locales firmware-bnx2 firmware-bnx2x firmware-qlogic firmware-misc-nonfree amd64-microcode intel-microcode iucode-tool openssh-server sudo autofs ndctl discover nfs-common ldap-utils nslcd nslcd-utils python3.12
 
 bootstrap:
   - "@base"
@@ -24,6 +27,7 @@ setup:
   - setup_g5k_ca_certificate
   - setup_ldap
   - disable_nvme_multipath
+  - disable_ndctl_monitor
 
 export:
   - "@base"
diff --git a/steps/setup/debian/disable_ndctl_monitor.yaml b/steps/setup/debian/disable_ndctl_monitor.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..9076de23c57602d6ec191ad287e6e12f533a63b4
--- /dev/null
+++ b/steps/setup/debian/disable_ndctl_monitor.yaml
@@ -0,0 +1,10 @@
+# Disable ndctl-monitor.service
+#
+# based on Puppet class env::base::disable_ndctl_monitor
+
+- disable_ndctl_monitor:
+  - exec_in: systemctl disable ndctl-monitor.service
+  - exec_in: mkdir -pm 755 /etc/systemd/system-preset
+  - local2in:
+    - $${kameleon_data_dir}/setup/puppet/modules/env/files/base/ndctl/ndctl.preset
+    - /etc/systemd/system-preset/10-ndctl.preset