From ed44b78a6e1bda3ef87c37bc4b970bdb1152bcb8 Mon Sep 17 00:00:00 2001 From: Mohammad Rafiq Date: Mon, 7 Jul 2025 11:14:07 +0800 Subject: [PATCH 1/3] feat(debug): enable flake-parts debug --- nix/debug.nix | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 nix/debug.nix diff --git a/nix/debug.nix b/nix/debug.nix new file mode 100644 index 0000000..38e2cb3 --- /dev/null +++ b/nix/debug.nix @@ -0,0 +1,3 @@ +{ + debug = true; +} From 63f0ba11ec62b21ec59098003aeac56918bc4434 Mon Sep 17 00:00:00 2001 From: Mohammad Rafiq Date: Mon, 7 Jul 2025 11:15:11 +0800 Subject: [PATCH 2/3] feat(nix): add unfree-packages module --- nix/modules/unfree-packages.nix | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) create mode 100644 nix/modules/unfree-packages.nix diff --git a/nix/modules/unfree-packages.nix b/nix/modules/unfree-packages.nix new file mode 100644 index 0000000..498095e --- /dev/null +++ b/nix/modules/unfree-packages.nix @@ -0,0 +1,16 @@ +{ lib, config, ... }: +let + inherit (builtins) elem; + inherit (lib) mkOption getName; + inherit (lib.types) listOf str; + predicate = pkg: elem (getName pkg) config.allowedUnfreePackages; +in +{ + options.allowedUnfreePackages = mkOption { + type = listOf str; + default = [ ]; + }; + config.flake.modules.nixos.default = { + nixpkgs.config.allowUnfreePredicate = predicate; + }; +} From b91982601fcb18fc4d8913089ea0d03797815527 Mon Sep 17 00:00:00 2001 From: Mohammad Rafiq Date: Mon, 7 Jul 2025 11:18:14 +0800 Subject: [PATCH 3/3] feat(nixos): add gpu module for nvidia config --- nix/modules/machine/gpu.nix | 41 +++++++++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100644 nix/modules/machine/gpu.nix diff --git a/nix/modules/machine/gpu.nix b/nix/modules/machine/gpu.nix new file mode 100644 index 0000000..00c56cd --- /dev/null +++ b/nix/modules/machine/gpu.nix @@ -0,0 +1,41 @@ +{ config, ... }: +let + cfg = config.flake; +in +{ + allowedUnfreePackages = [ + "nvidia-x11" + "nvidia-settings" + ]; + flake.modules.nixos.default = + { + config, + pkgs, + hostName, + ... + }: + let + gpu = cfg.manifest.hosts.nixos.${hostName}.machine.gpu or ""; + in + if gpu == "nvidia" then + { + hardware = { + graphics.enable = true; + graphics.extraPackages = [ pkgs.nvidia-vaapi-driver ]; + nvidia.open = true; + nvidia.package = config.boot.kernelPackages.nvidiaPackages.latest; + }; + services.xserver.videoDrivers = [ "nvidia" ]; + environment.variables = { + LIBVA_DRIVER_NAME = "nvidia"; + __GLX_VENDOR_LIBRARY_NAME = "nvidia"; + NVD_BACKEND = "direct"; + }; + nix.settings.substituters = [ "https://cuda-maintainers.cachix.org" ]; + nix.settings.trusted-public-keys = [ + "cuda-maintainers.cachix.org-1:0dq3bujKpuEPMCX6U4WylrUDZ9JyUG0VpVZa7CNfq5E=" + ]; + } + else + { }; +}