dxvk_1: fix build compatibility with GCC 14 (#360918)
[NixPkgs.git] / nixos / modules / virtualisation / azure-common.nix
blobd8d835dd303d642f3412a7ada47f1fd172657ff0
1 { config, lib, pkgs, ... }:
3 with lib;
4 let
5   cfg = config.virtualisation.azure;
6   mlxDrivers = [ "mlx4_en" "mlx4_core" "mlx5_core" ];
7 in
9   options.virtualisation.azure = {
10     acceleratedNetworking = mkOption {
11       default = false;
12       description = "Whether the machine's network interface has enabled accelerated networking.";
13     };
14   };
16   imports = [
17     ../profiles/headless.nix
18     ./azure-agent.nix
19   ];
21   config = {
22     virtualisation.azure.agent.enable = true;
24     boot.kernelParams = [ "console=ttyS0" "earlyprintk=ttyS0" "rootdelay=300" "panic=1" "boot.panic_on_fail" ];
25     boot.initrd.kernelModules = [ "hv_vmbus" "hv_netvsc" "hv_utils" "hv_storvsc" ];
26     boot.initrd.availableKernelModules = lib.optionals cfg.acceleratedNetworking mlxDrivers;
28     # Accelerated networking
29     systemd.network.networks."99-azure-unmanaged-devices.network" = lib.mkIf cfg.acceleratedNetworking {
30       matchConfig.Driver = mlxDrivers;
31       linkConfig.Unmanaged = "yes";
32     };
33     networking.networkmanager.unmanaged = lib.mkIf cfg.acceleratedNetworking
34       (builtins.map (drv: "driver:${drv}") mlxDrivers);
36     # Generate a GRUB menu.
37     boot.loader.grub.device = "/dev/sda";
39     boot.growPartition = true;
41     fileSystems."/" = {
42       device = "/dev/disk/by-label/nixos";
43       fsType = "ext4";
44       autoResize = true;
45     };
47     # Allow root logins only using the SSH key that the user specified
48     # at instance creation time, ping client connections to avoid timeouts
49     services.openssh.enable = true;
50     services.openssh.settings.PermitRootLogin = "prohibit-password";
51     services.openssh.settings.ClientAliveInterval = 180;
53     # Force getting the hostname from Azure
54     networking.hostName = mkDefault "";
56     # Always include cryptsetup so that NixOps can use it.
57     # sg_scan is needed to finalize disk removal on older kernels
58     environment.systemPackages = [ pkgs.cryptsetup pkgs.sg3_utils ];
60     networking.usePredictableInterfaceNames = false;
62     services.udev.extraRules = ''
63       ENV{DEVTYPE}=="disk", KERNEL!="sda" SUBSYSTEM=="block", SUBSYSTEMS=="scsi", KERNELS=="?:0:0:0", ATTR{removable}=="0", SYMLINK+="disk/by-lun/0",
64       ENV{DEVTYPE}=="disk", KERNEL!="sda" SUBSYSTEM=="block", SUBSYSTEMS=="scsi", KERNELS=="?:0:0:1", ATTR{removable}=="0", SYMLINK+="disk/by-lun/1",
65       ENV{DEVTYPE}=="disk", KERNEL!="sda" SUBSYSTEM=="block", SUBSYSTEMS=="scsi", KERNELS=="?:0:0:2", ATTR{removable}=="0", SYMLINK+="disk/by-lun/2"
66       ENV{DEVTYPE}=="disk", KERNEL!="sda" SUBSYSTEM=="block", SUBSYSTEMS=="scsi", KERNELS=="?:0:0:3", ATTR{removable}=="0", SYMLINK+="disk/by-lun/3"
68       ENV{DEVTYPE}=="disk", KERNEL!="sda" SUBSYSTEM=="block", SUBSYSTEMS=="scsi", KERNELS=="?:0:0:4", ATTR{removable}=="0", SYMLINK+="disk/by-lun/4"
69       ENV{DEVTYPE}=="disk", KERNEL!="sda" SUBSYSTEM=="block", SUBSYSTEMS=="scsi", KERNELS=="?:0:0:5", ATTR{removable}=="0", SYMLINK+="disk/by-lun/5"
70       ENV{DEVTYPE}=="disk", KERNEL!="sda" SUBSYSTEM=="block", SUBSYSTEMS=="scsi", KERNELS=="?:0:0:6", ATTR{removable}=="0", SYMLINK+="disk/by-lun/6"
71       ENV{DEVTYPE}=="disk", KERNEL!="sda" SUBSYSTEM=="block", SUBSYSTEMS=="scsi", KERNELS=="?:0:0:7", ATTR{removable}=="0", SYMLINK+="disk/by-lun/7"
73       ENV{DEVTYPE}=="disk", KERNEL!="sda" SUBSYSTEM=="block", SUBSYSTEMS=="scsi", KERNELS=="?:0:0:8", ATTR{removable}=="0", SYMLINK+="disk/by-lun/8"
74       ENV{DEVTYPE}=="disk", KERNEL!="sda" SUBSYSTEM=="block", SUBSYSTEMS=="scsi", KERNELS=="?:0:0:9", ATTR{removable}=="0", SYMLINK+="disk/by-lun/9"
75       ENV{DEVTYPE}=="disk", KERNEL!="sda" SUBSYSTEM=="block", SUBSYSTEMS=="scsi", KERNELS=="?:0:0:10", ATTR{removable}=="0", SYMLINK+="disk/by-lun/10"
76       ENV{DEVTYPE}=="disk", KERNEL!="sda" SUBSYSTEM=="block", SUBSYSTEMS=="scsi", KERNELS=="?:0:0:11", ATTR{removable}=="0", SYMLINK+="disk/by-lun/11"
78       ENV{DEVTYPE}=="disk", KERNEL!="sda" SUBSYSTEM=="block", SUBSYSTEMS=="scsi", KERNELS=="?:0:0:12", ATTR{removable}=="0", SYMLINK+="disk/by-lun/12"
79       ENV{DEVTYPE}=="disk", KERNEL!="sda" SUBSYSTEM=="block", SUBSYSTEMS=="scsi", KERNELS=="?:0:0:13", ATTR{removable}=="0", SYMLINK+="disk/by-lun/13"
80       ENV{DEVTYPE}=="disk", KERNEL!="sda" SUBSYSTEM=="block", SUBSYSTEMS=="scsi", KERNELS=="?:0:0:14", ATTR{removable}=="0", SYMLINK+="disk/by-lun/14"
81       ENV{DEVTYPE}=="disk", KERNEL!="sda" SUBSYSTEM=="block", SUBSYSTEMS=="scsi", KERNELS=="?:0:0:15", ATTR{removable}=="0", SYMLINK+="disk/by-lun/15"
83     '';
84   };