From ee5f89c69f60fbe2821b9fdf780146fbec73725c Mon Sep 17 00:00:00 2001 From: Mel Date: Tue, 6 Jan 2026 18:41:15 +0100 Subject: Switch Bismuth from Nvidia to AMD, move hardware modules to own directory Signed-off-by: Mel --- machines/bismuth/default.nix | 3 +-- machines/moissanite/default.nix | 2 +- modules/arm.nix | 23 ------------------- modules/hardware/amd-gpu.nix | 31 ++++++++++++++++++++++++++ modules/hardware/arm.nix | 23 +++++++++++++++++++ modules/hardware/nvidia-gpu.nix | 49 +++++++++++++++++++++++++++++++++++++++++ modules/nvidia.nix | 49 ----------------------------------------- 7 files changed, 105 insertions(+), 75 deletions(-) delete mode 100644 modules/arm.nix create mode 100644 modules/hardware/amd-gpu.nix create mode 100644 modules/hardware/arm.nix create mode 100644 modules/hardware/nvidia-gpu.nix delete mode 100644 modules/nvidia.nix diff --git a/machines/bismuth/default.nix b/machines/bismuth/default.nix index 7838ce0..02fda0f 100644 --- a/machines/bismuth/default.nix +++ b/machines/bismuth/default.nix @@ -6,8 +6,7 @@ ./devices.nix ../../modules/binary-cache.nix - # ../../modules/syncthing.nix - ../../modules/nvidia.nix + ../../modules/hardware/amd-gpu.nix ]; # expose vm web interface to tailnet diff --git a/machines/moissanite/default.nix b/machines/moissanite/default.nix index 322c1ac..bc4c098 100644 --- a/machines/moissanite/default.nix +++ b/machines/moissanite/default.nix @@ -2,7 +2,7 @@ { imports = [ - ../../modules/arm.nix + ../../modules/hardware/arm.nix ../../modules/work ./hardware.nix diff --git a/modules/arm.nix b/modules/arm.nix deleted file mode 100644 index 63a448f..0000000 --- a/modules/arm.nix +++ /dev/null @@ -1,23 +0,0 @@ -{ - me, - lib, - auxiliaryPkgs, - ... -}: - -assert lib.assertMsg ( - me.system == "aarch64-linux" -) "arm module included on non-arm (${me.system}) architecture."; -{ - # disable things that just don't work on arm. - - programs.steam.enable = lib.mkForce false; - - # non-machine specific arm package selection. - # used to include replacements for necessary programs with no - # default support for aarch64. (i.e. discord) - - environment.systemPackages = with auxiliaryPkgs; [ - equibop # discord - ]; -} diff --git a/modules/hardware/amd-gpu.nix b/modules/hardware/amd-gpu.nix new file mode 100644 index 0000000..cfaa974 --- /dev/null +++ b/modules/hardware/amd-gpu.nix @@ -0,0 +1,31 @@ +{ + pkgs, + ... +}: + +{ + hardware.graphics = { + enable = true; + enable32Bit = true; + + # use amdvlk in conjunction with amdgpu, + # applications can choose which one to use. + extraPackages = with pkgs; [ amdvlk ]; + extraPackages32 = with pkgs; [ driversi686Linux.amdvlk ]; + }; + + services.xserver.videoDrivers = [ "amdgpu" ]; + + hardware.amdgpu = { + opencl.enable = true; + initrd.enable = true; + overdrive.enable = false; + legacySupport.enable = false; + }; + + services.lact.enable = true; + environment.systemPackages = with pkgs; [ + lact + clinfo + ]; +} diff --git a/modules/hardware/arm.nix b/modules/hardware/arm.nix new file mode 100644 index 0000000..63a448f --- /dev/null +++ b/modules/hardware/arm.nix @@ -0,0 +1,23 @@ +{ + me, + lib, + auxiliaryPkgs, + ... +}: + +assert lib.assertMsg ( + me.system == "aarch64-linux" +) "arm module included on non-arm (${me.system}) architecture."; +{ + # disable things that just don't work on arm. + + programs.steam.enable = lib.mkForce false; + + # non-machine specific arm package selection. + # used to include replacements for necessary programs with no + # default support for aarch64. (i.e. discord) + + environment.systemPackages = with auxiliaryPkgs; [ + equibop # discord + ]; +} diff --git a/modules/hardware/nvidia-gpu.nix b/modules/hardware/nvidia-gpu.nix new file mode 100644 index 0000000..dae9fb5 --- /dev/null +++ b/modules/hardware/nvidia-gpu.nix @@ -0,0 +1,49 @@ +{ + config, + lib, + pkgs, + ... +}: + +let + gpl_symbols_linux_615_patch = pkgs.fetchpatch { + url = "https://github.com/CachyOS/kernel-patches/raw/914aea4298e3744beddad09f3d2773d71839b182/6.15/misc/nvidia/0003-Workaround-nv_vm_flags_-calling-GPL-only-code.patch"; + hash = "sha256-YOTAvONchPPSVDP9eJ9236pAPtxYK5nAePNtm2dlvb4="; + stripLen = 1; + extraPrefix = "kernel/"; + }; +in +{ + hardware.graphics = { + enable = true; + enable32Bit = true; + }; + + services.xserver.videoDrivers = [ "nvidia" ]; + + hardware.nvidia = { + modesetting.enable = true; + powerManagement.enable = true; + powerManagement.finegrained = false; + + # note: fails to build after 560 + nvidiaSettings = false; + + # sadly still very crashy :( + open = false; + + # nice way: + # package = config.boot.kernelPackages.nvidiaPackages.beta; + # manual way: + package = config.boot.kernelPackages.nvidiaPackages.mkDriver { + version = "575.57.08"; + sha256_64bit = "sha256-KqcB2sGAp7IKbleMzNkB3tjUTlfWBYDwj50o3R//xvI="; + sha256_aarch64 = "sha256-VJ5z5PdAL2YnXuZltuOirl179XKWt0O4JNcT8gUgO98="; + openSha256 = "sha256-DOJw73sjhQoy+5R0GHGnUddE6xaXb/z/Ihq3BKBf+lg="; + settingsSha256 = "sha256-AIeeDXFEo9VEKCgXnY3QvrW5iWZeIVg4LBCeRtMs5Io="; + persistencedSha256 = "sha256-Len7Va4HYp5r3wMpAhL4VsPu5S0JOshPFywbO7vYnGo="; + + patches = [ gpl_symbols_linux_615_patch ]; + }; + }; +} diff --git a/modules/nvidia.nix b/modules/nvidia.nix deleted file mode 100644 index dae9fb5..0000000 --- a/modules/nvidia.nix +++ /dev/null @@ -1,49 +0,0 @@ -{ - config, - lib, - pkgs, - ... -}: - -let - gpl_symbols_linux_615_patch = pkgs.fetchpatch { - url = "https://github.com/CachyOS/kernel-patches/raw/914aea4298e3744beddad09f3d2773d71839b182/6.15/misc/nvidia/0003-Workaround-nv_vm_flags_-calling-GPL-only-code.patch"; - hash = "sha256-YOTAvONchPPSVDP9eJ9236pAPtxYK5nAePNtm2dlvb4="; - stripLen = 1; - extraPrefix = "kernel/"; - }; -in -{ - hardware.graphics = { - enable = true; - enable32Bit = true; - }; - - services.xserver.videoDrivers = [ "nvidia" ]; - - hardware.nvidia = { - modesetting.enable = true; - powerManagement.enable = true; - powerManagement.finegrained = false; - - # note: fails to build after 560 - nvidiaSettings = false; - - # sadly still very crashy :( - open = false; - - # nice way: - # package = config.boot.kernelPackages.nvidiaPackages.beta; - # manual way: - package = config.boot.kernelPackages.nvidiaPackages.mkDriver { - version = "575.57.08"; - sha256_64bit = "sha256-KqcB2sGAp7IKbleMzNkB3tjUTlfWBYDwj50o3R//xvI="; - sha256_aarch64 = "sha256-VJ5z5PdAL2YnXuZltuOirl179XKWt0O4JNcT8gUgO98="; - openSha256 = "sha256-DOJw73sjhQoy+5R0GHGnUddE6xaXb/z/Ihq3BKBf+lg="; - settingsSha256 = "sha256-AIeeDXFEo9VEKCgXnY3QvrW5iWZeIVg4LBCeRtMs5Io="; - persistencedSha256 = "sha256-Len7Va4HYp5r3wMpAhL4VsPu5S0JOshPFywbO7vYnGo="; - - patches = [ gpl_symbols_linux_615_patch ]; - }; - }; -} -- cgit 1.4.1