4 Commits

Author SHA1 Message Date
8b1df39edf Add cudainfo program to test CUDA
The cudainfo program checks that we can initialize the CUDA RT library
and communicate with the driver. It can be used as standalone program or
built with cudainfo.gpuCheck so it is executed inside the build sandbox
to see if it also works fine. It uses the autoAddDriverRunpath hook to
inject in the runpath the location of the library directory for CUDA
libraries.
2025-07-22 16:15:10 +02:00
378716c0fa Add missing symlink in cuda sandbox 2025-07-21 18:22:20 +02:00
2f3490b597 Enable cuda systemFeature in raccoon and fox
This allows running derivations which depend on cuda runtime without
breaking the sandbox. We only need to add `requiredSystemFeatures = [ "cuda" ];`
to the derivation.
2025-07-21 18:22:20 +02:00
766ac185d2 Move shared nvidia settings to a separate module 2025-07-21 18:22:12 +02:00
8 changed files with 7 additions and 62 deletions

View File

@@ -5,12 +5,9 @@
../common/xeon.nix
../common/ssf/hosts.nix
../module/ceph.nix
../module/power-policy.nix
./nfs.nix
];
power.policy = "always-on";
# Don't install grub MBR for now
boot.loader.grub.device = "nodev";

View File

@@ -11,7 +11,6 @@
./base/net.nix
./base/nix.nix
./base/ntp.nix
./base/power-policy.nix
./base/rev.nix
./base/ssh.nix
./base/users.nix

View File

@@ -1,12 +1,12 @@
{
# Shutdown all machines on August 3rd at 22:00, so we can protect the
# Shutdown all machines on August 2nd at 11:00 AM, so we can protect the
# hardware from spurious electrical peaks on the yearly electrical cut for
# manteinance that starts on August 4th.
systemd.timers.august-shutdown = {
description = "Shutdown on August 3rd for maintenance";
description = "Shutdown on August 2nd for maintenance";
wantedBy = [ "timers.target" ];
timerConfig = {
OnCalendar = "*-08-03 22:00:00";
OnCalendar = "*-08-02 11:00:00";
RandomizedDelaySec = "10min";
Unit = "systemd-poweroff.service";
};

View File

@@ -1,9 +0,0 @@
{
imports = [
../../module/power-policy.nix
];
# By default, keep the machines off as we don't know if the AC will be working
# once the electricity comes back.
power.policy = "always-off";
}

View File

@@ -6,15 +6,8 @@
../common/xeon/console.nix
../module/emulation.nix
../module/nvidia.nix
../module/power-policy.nix
];
power.policy = "always-on";
# Don't turn off on August as UPC has different dates.
# Fox works fine on power cuts.
systemd.timers.august-shutdown.enable = false;
# Select the this using the ID to avoid mismatches
boot.loader.grub.device = "/dev/disk/by-id/wwn-0x500a07514b0c1103";

View File

@@ -1,33 +0,0 @@
{ config, lib, pkgs, ... }:
with lib;
let
cfg = config.power.policy;
in
{
options = {
power.policy = mkOption {
type = types.nullOr (types.enum [ "always-on" "previous" "always-off" ]);
default = null;
description = "Set power policy to use via IPMI.";
};
};
config = mkIf (cfg != null) {
systemd.services."power-policy" = {
description = "Set power policy to use via IPMI";
wantedBy = [ "multi-user.target" ];
unitConfig = {
StartLimitBurst = "10";
StartLimitIntervalSec = "10m";
};
serviceConfig = {
ExecStart = "${pkgs.ipmitool}/bin/ipmitool chassis policy ${cfg}";
Type = "oneshot";
Restart = "on-failure";
RestartSec = "5s";
};
};
};
}

View File

@@ -7,12 +7,9 @@
../module/debuginfod.nix
../module/ssh-hut-extern.nix
../module/nvidia.nix
../module/power-policy.nix
../eudy/kernel/perf.nix
];
power.policy = "always-on";
# Don't install Grub on the disk yet
boot.loader.grub.device = "nodev";

View File

@@ -4,9 +4,10 @@
, cudaPackages
, autoAddDriverRunpath
, strace
, cudainfo
}:
stdenv.mkDerivation (finalAttrs: {
stdenv.mkDerivation {
name = "cudainfo";
src = ./.;
buildInputs = [
@@ -23,7 +24,7 @@ stdenv.mkDerivation (finalAttrs: {
requiredSystemFeatures = [ "cuda" ];
dontBuild = true;
nativeCheckInputs = [
finalAttrs.finalPackage # The cudainfo package from above
cudainfo
strace # When it fails, it will show the trace
];
dontUnpack = true;
@@ -40,4 +41,4 @@ stdenv.mkDerivation (finalAttrs: {
'';
installPhase = "touch $out";
};
})
}