nixos,modules: add myFlake.nixos.hardware
This commit is contained in:
parent
f98ee5581a
commit
cb4dc0815d
32 changed files with 336 additions and 198 deletions
|
@ -202,7 +202,7 @@
|
||||||
./users/guanranwang/nixos/profiles/desktop/addtional/torrenting.nix
|
./users/guanranwang/nixos/profiles/desktop/addtional/torrenting.nix
|
||||||
|
|
||||||
# Hardware
|
# Hardware
|
||||||
./nixos/hardware/81fw-lenovo-legion-y7000/Aristotle
|
./nixos/hardware/lenovo/legion/81fw/Aristotle
|
||||||
|
|
||||||
{networking.hostName = "Aristotle";}
|
{networking.hostName = "Aristotle";}
|
||||||
];
|
];
|
||||||
|
@ -220,7 +220,7 @@
|
||||||
./users/guanranwang/darwin/profiles/desktop
|
./users/guanranwang/darwin/profiles/desktop
|
||||||
./users/guanranwang/darwin/profiles/core/addtional/networking/clash-meta-client.nix
|
./users/guanranwang/darwin/profiles/core/addtional/networking/clash-meta-client.nix
|
||||||
|
|
||||||
./darwin/hardware/imac-2017
|
./darwin/hardware/apple/imac/18-3
|
||||||
|
|
||||||
{networking.hostName = "Plato";}
|
{networking.hostName = "Plato";}
|
||||||
];
|
];
|
||||||
|
|
|
@ -1,5 +0,0 @@
|
||||||
{...}: {
|
|
||||||
imports = [
|
|
||||||
./hardware.nix
|
|
||||||
];
|
|
||||||
}
|
|
10
nixos/hardware/imac-2017/hardware.nix → nixos/hardware/apple/imac/18-3/default.nix
Executable file → Normal file
10
nixos/hardware/imac-2017/hardware.nix → nixos/hardware/apple/imac/18-3/default.nix
Executable file → Normal file
|
@ -4,11 +4,11 @@
|
||||||
...
|
...
|
||||||
}: {
|
}: {
|
||||||
imports = [
|
imports = [
|
||||||
../hardware/misc/audio.nix
|
../../../hardware/misc/audio.nix
|
||||||
../hardware/misc/bluetooth.nix
|
../../../hardware/misc/bluetooth.nix
|
||||||
../hardware/misc/opengl.nix
|
../../../hardware/misc/opengl.nix
|
||||||
../hardware/cpu/intel.nix
|
../../../hardware/cpu/intel.nix
|
||||||
../hardware/gpu/amd.nix
|
../../../hardware/gpu/amd.nix
|
||||||
(modulesPath + "/hardware/network/broadcom-43xx.nix")
|
(modulesPath + "/hardware/network/broadcom-43xx.nix")
|
||||||
(modulesPath + "/installer/scan/not-detected.nix") # what is this
|
(modulesPath + "/installer/scan/not-detected.nix") # what is this
|
||||||
];
|
];
|
|
@ -1,5 +0,0 @@
|
||||||
{...}: {
|
|
||||||
boot.kernelModules = ["kvm-intel"];
|
|
||||||
hardware.cpu.intel.updateMicrocode = true;
|
|
||||||
nixpkgs.hostPlatform = "x86_64-linux";
|
|
||||||
}
|
|
|
@ -1,25 +0,0 @@
|
||||||
{pkgs, ...}:
|
|
||||||
# FOLLOWING https://nixos.wiki/wiki/AMD_GPU DIRECTLY
|
|
||||||
# I HAVE NO IDEA WHAT AM I DOING
|
|
||||||
{
|
|
||||||
boot.initrd.kernelModules = ["amdgpu"];
|
|
||||||
services.xserver.videoDrivers = ["amdgpu"];
|
|
||||||
|
|
||||||
# OpenCL
|
|
||||||
hardware.opengl = {
|
|
||||||
extraPackages = with pkgs; [
|
|
||||||
amdvlk
|
|
||||||
rocm-opencl-icd
|
|
||||||
rocm-opencl-runtime
|
|
||||||
];
|
|
||||||
# Only available on unstable
|
|
||||||
extraPackages32 = with pkgs; [
|
|
||||||
driversi686Linux.amdvlk
|
|
||||||
];
|
|
||||||
};
|
|
||||||
|
|
||||||
# HIP
|
|
||||||
systemd.tmpfiles.rules = [
|
|
||||||
"L+ /opt/rocm/hip - - - - ${pkgs.hip}"
|
|
||||||
];
|
|
||||||
}
|
|
|
@ -1,18 +0,0 @@
|
||||||
{pkgs, ...}:
|
|
||||||
# Following https://nixos.wiki/wiki/Intel_Graphics
|
|
||||||
{
|
|
||||||
boot.initrd.kernelModules = ["i915"]; # if not enabled, plymouth's distro logo wont show for some reason
|
|
||||||
nixpkgs.config.packageOverrides = pkgs: {vaapiIntel = pkgs.vaapiIntel.override {enableHybridCodec = true;};};
|
|
||||||
|
|
||||||
hardware.opengl = {
|
|
||||||
extraPackages = with pkgs; [
|
|
||||||
intel-media-driver # libva_driver_name=ihd
|
|
||||||
vaapiIntel # libva_driver_name=i965 (older but works better for firefox/chromium)
|
|
||||||
vaapiVdpau
|
|
||||||
libvdpau-va-gl
|
|
||||||
intel-compute-runtime # intel opencl
|
|
||||||
intel-media-driver # intel vaapi
|
|
||||||
];
|
|
||||||
extraPackages32 = with pkgs; [pkgsi686Linux.vaapiIntel];
|
|
||||||
};
|
|
||||||
}
|
|
|
@ -1,18 +0,0 @@
|
||||||
{...}:
|
|
||||||
# Nvidia Prime ( multi gpu on laptop )
|
|
||||||
{
|
|
||||||
hardware.nvidia.prime = {
|
|
||||||
sync.enable = false;
|
|
||||||
|
|
||||||
### Device specific, please put those configuration in `machines/your-machine.nix`
|
|
||||||
# nvidiaBusId = "PCI:1:0:0";
|
|
||||||
# intelBusId = "PCI:0:2:0";
|
|
||||||
offload = {
|
|
||||||
enable = true;
|
|
||||||
enableOffloadCmd = true;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
environment.sessionVariables = {
|
|
||||||
"GAMEMODERUNEXEC" = "env __NV_PRIME_RENDER_OFFLOAD=1 __GLX_VENDOR_LIBRARY_NAME=nvidia __VK_LAYER_NV_optimus=NVIDIA_only"; # gamemode: nvidia offload
|
|
||||||
};
|
|
||||||
}
|
|
|
@ -1,16 +0,0 @@
|
||||||
{config, ...}:
|
|
||||||
# NVIDIA drivers
|
|
||||||
# fuck you nvidia btw
|
|
||||||
{
|
|
||||||
services.xserver.videoDrivers = ["nvidia"]; # tell xorg to use the nvidia driver, also valid for wayland
|
|
||||||
hardware.nvidia = {
|
|
||||||
package = config.boot.kernelPackages.nvidiaPackages.stable;
|
|
||||||
open = false;
|
|
||||||
modesetting.enable = true;
|
|
||||||
#dynamicboost.enable = true;
|
|
||||||
powerManagement = {
|
|
||||||
enable = true; # experimental power management feature
|
|
||||||
#finegrained = true;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
|
@ -1,16 +0,0 @@
|
||||||
{lib, ...}:
|
|
||||||
# Audio system (pipewire)
|
|
||||||
{
|
|
||||||
security.rtkit.enable = true;
|
|
||||||
hardware.pulseaudio.enable = lib.mkDefault false;
|
|
||||||
services.pipewire = {
|
|
||||||
enable = lib.mkDefault true;
|
|
||||||
pulse.enable = true;
|
|
||||||
jack.enable = true;
|
|
||||||
wireplumber.enable = true;
|
|
||||||
alsa = {
|
|
||||||
enable = true;
|
|
||||||
support32Bit = true;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
|
@ -1,13 +0,0 @@
|
||||||
{pkgs, ...}:
|
|
||||||
# Bluetooth
|
|
||||||
{
|
|
||||||
# Bluetooth manager
|
|
||||||
#services.blueman.enable = true;
|
|
||||||
environment.systemPackages = with pkgs; [blueberry];
|
|
||||||
|
|
||||||
# Bluetooth service
|
|
||||||
hardware.bluetooth = {
|
|
||||||
enable = true;
|
|
||||||
settings.General.FastConnectable = true;
|
|
||||||
};
|
|
||||||
}
|
|
|
@ -1,11 +0,0 @@
|
||||||
{...}:
|
|
||||||
# OpenGL
|
|
||||||
{
|
|
||||||
hardware = {
|
|
||||||
opengl = {
|
|
||||||
enable = true;
|
|
||||||
driSupport = true;
|
|
||||||
driSupport32Bit = true;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
|
@ -1,10 +0,0 @@
|
||||||
{...}: {
|
|
||||||
# TPM is currently broken on latest kernel,
|
|
||||||
# but luckily, linux-zen have a patch for it
|
|
||||||
# UPDATE: it got fixed in 6.5.3
|
|
||||||
security.tpm2 = {
|
|
||||||
enable = true;
|
|
||||||
pkcs11.enable = true; # expose /run/current-system/sw/lib/libtpm2_pkcs11.so
|
|
||||||
tctiEnvironment.enable = true; # tpm2tools_tcti and tpm2_pkcs11_tcti env variables
|
|
||||||
};
|
|
||||||
}
|
|
|
@ -1,5 +0,0 @@
|
||||||
{...}: {
|
|
||||||
imports = [
|
|
||||||
./hardware.nix
|
|
||||||
];
|
|
||||||
}
|
|
|
@ -1,9 +1,9 @@
|
||||||
{...}: {
|
{...}: {
|
||||||
imports = [
|
imports = [
|
||||||
../default.nix
|
../default.nix
|
||||||
../../../../nixos/flake-modules/lanzaboote.nix
|
../../../../../flake-modules/lanzaboote.nix
|
||||||
../../../../nixos/flake-modules/impermanence.nix
|
../../../../../flake-modules/impermanence.nix
|
||||||
../../../../nixos/flake-modules/disko.nix
|
../../../../../flake-modules/disko.nix
|
||||||
];
|
];
|
||||||
|
|
||||||
_module.args.disks = ["/dev/nvme0n1"]; # Disko
|
_module.args.disks = ["/dev/nvme0n1"]; # Disko
|
22
nixos/hardware/81fw-lenovo-legion-y7000/hardware.nix → nixos/hardware/lenovo/legion/81fw/default.nix
Executable file → Normal file
22
nixos/hardware/81fw-lenovo-legion-y7000/hardware.nix → nixos/hardware/lenovo/legion/81fw/default.nix
Executable file → Normal file
|
@ -4,19 +4,23 @@
|
||||||
...
|
...
|
||||||
}: {
|
}: {
|
||||||
imports = [
|
imports = [
|
||||||
../hardware/misc/audio.nix
|
|
||||||
../hardware/misc/bluetooth.nix
|
|
||||||
../hardware/misc/opengl.nix
|
|
||||||
../hardware/misc/tpm.nix
|
|
||||||
../hardware/cpu/intel.nix
|
|
||||||
../hardware/gpu/intel.nix
|
|
||||||
../hardware/gpu/nvidia.nix
|
|
||||||
../hardware/gpu/nvidia-prime.nix
|
|
||||||
(modulesPath + "/installer/scan/not-detected.nix") # what is this
|
(modulesPath + "/installer/scan/not-detected.nix") # what is this
|
||||||
];
|
];
|
||||||
|
|
||||||
|
myFlake.nixos.hardware = {
|
||||||
|
cpu.intel.enable = true;
|
||||||
|
|
||||||
|
gpu.intel.enable = true;
|
||||||
|
gpu.nvidia.enable = true;
|
||||||
|
gpu.nvidia.prime = true;
|
||||||
|
|
||||||
|
misc.audio.enable = true;
|
||||||
|
misc.bluetooth.enable = true;
|
||||||
|
misc.fstrim.enable = true;
|
||||||
|
misc.tpm.enable = true;
|
||||||
|
};
|
||||||
|
|
||||||
boot.initrd.availableKernelModules = ["xhci_pci" "ahci" "nvme" "usbhid"];
|
boot.initrd.availableKernelModules = ["xhci_pci" "ahci" "nvme" "usbhid"];
|
||||||
services.fstrim.enable = true;
|
|
||||||
|
|
||||||
# Nvidia PRIME
|
# Nvidia PRIME
|
||||||
hardware.nvidia.prime = {
|
hardware.nvidia.prime = {
|
|
@ -2,38 +2,42 @@
|
||||||
config,
|
config,
|
||||||
lib,
|
lib,
|
||||||
...
|
...
|
||||||
}: {
|
}: let
|
||||||
|
cfg = config.myFlake.nixos.boot;
|
||||||
|
in {
|
||||||
options = {
|
options = {
|
||||||
myFlake.nixos = {
|
myFlake.nixos = {
|
||||||
boot = {
|
boot = {
|
||||||
silentBoot = lib.mkEnableOption "Enable silent boot";
|
silentBoot = lib.mkEnableOption "Whether to enable silent boot.";
|
||||||
noLoaderMenu = lib.mkEnableOption "Disable bootloader menu";
|
noLoaderMenu = lib.mkEnableOption "Whether to disable bootloader menu.";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
### myFlake.nixos.boot.noLoaderMenu
|
config = {
|
||||||
config.boot.loader.timeout = lib.mkIf config.myFlake.nixos.boot.noLoaderMenu 0;
|
### cfg.noLoaderMenu
|
||||||
|
boot.loader.timeout = lib.mkIf cfg.noLoaderMenu 0;
|
||||||
|
|
||||||
### myFlake.nixos.boot.silentBoot
|
### cfg.silentBoot
|
||||||
config.boot.consoleLogLevel = lib.mkIf config.myFlake.nixos.boot.silentBoot 0;
|
boot.consoleLogLevel = lib.mkIf cfg.silentBoot 0;
|
||||||
config.boot.kernelParams =
|
boot.kernelParams =
|
||||||
lib.mkIf config.myFlake.nixos.boot.silentBoot
|
lib.mkIf cfg.silentBoot
|
||||||
(["quiet"]
|
(["quiet"]
|
||||||
++ lib.optionals config.boot.initrd.systemd.enable [
|
++ lib.optionals config.boot.initrd.systemd.enable [
|
||||||
"systemd.show_status=auto"
|
"systemd.show_status=auto"
|
||||||
"rd.udev.log_level=3"
|
"rd.udev.log_level=3"
|
||||||
]);
|
]);
|
||||||
|
|
||||||
### Misc
|
### Misc
|
||||||
config.boot.loader = {
|
boot.loader = {
|
||||||
efi.canTouchEfiVariables = true;
|
efi.canTouchEfiVariables = true;
|
||||||
systemd-boot = {
|
systemd-boot = {
|
||||||
enable = lib.mkDefault true; # mkDefault for Lanzaboote
|
enable = lib.mkDefault true; # mkDefault for Lanzaboote
|
||||||
editor = false; # Disabled for security
|
editor = false; # Disabled for security
|
||||||
### Utilities
|
### Utilities
|
||||||
#netbootxyz.enable = true;
|
#netbootxyz.enable = true;
|
||||||
#memtest86.enable = true;
|
#memtest86.enable = true;
|
||||||
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
{...}: {
|
{...}: {
|
||||||
imports = [
|
imports = [
|
||||||
./boot
|
./boot
|
||||||
|
./hardware
|
||||||
./networking
|
./networking
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
{...}: {
|
{...}: {
|
||||||
imports = [
|
imports = [
|
||||||
./hardware.nix
|
./intel.nix
|
||||||
];
|
];
|
||||||
}
|
}
|
17
nixos/modules/hardware/cpu/intel.nix
Executable file
17
nixos/modules/hardware/cpu/intel.nix
Executable file
|
@ -0,0 +1,17 @@
|
||||||
|
{
|
||||||
|
lib,
|
||||||
|
config,
|
||||||
|
...
|
||||||
|
}: let
|
||||||
|
cfg = config.myFlake.nixos.hardware.cpu.intel;
|
||||||
|
in {
|
||||||
|
options = {
|
||||||
|
myFlake.nixos.hardware.cpu.intel.enable = lib.mkEnableOption "Whether to enable Intel CPU.";
|
||||||
|
};
|
||||||
|
|
||||||
|
config = lib.mkIf cfg.enable {
|
||||||
|
boot.kernelModules = ["kvm-intel"];
|
||||||
|
hardware.cpu.intel.updateMicrocode = true;
|
||||||
|
nixpkgs.hostPlatform = "x86_64-linux";
|
||||||
|
};
|
||||||
|
}
|
7
nixos/modules/hardware/default.nix
Normal file
7
nixos/modules/hardware/default.nix
Normal file
|
@ -0,0 +1,7 @@
|
||||||
|
{...}: {
|
||||||
|
imports = [
|
||||||
|
./cpu
|
||||||
|
./gpu
|
||||||
|
./misc
|
||||||
|
];
|
||||||
|
}
|
42
nixos/modules/hardware/gpu/amd.nix
Normal file
42
nixos/modules/hardware/gpu/amd.nix
Normal file
|
@ -0,0 +1,42 @@
|
||||||
|
{
|
||||||
|
lib,
|
||||||
|
config,
|
||||||
|
pkgs,
|
||||||
|
...
|
||||||
|
}: let
|
||||||
|
cfg = config.myFlake.nixos.hardware.gpu.amd;
|
||||||
|
in {
|
||||||
|
options = {
|
||||||
|
myFlake.nixos.hardware.gpu.amd.enable = lib.mkEnableOption "Whether to enable AMD GPU.";
|
||||||
|
};
|
||||||
|
|
||||||
|
# https://nixos.wiki/wiki/AMD_GPU
|
||||||
|
config = lib.mkIf cfg.enable {
|
||||||
|
hardware.opengl = {
|
||||||
|
enable = true;
|
||||||
|
driSupport = true;
|
||||||
|
driSupport32Bit = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
boot.initrd.kernelModules = ["amdgpu"];
|
||||||
|
services.xserver.videoDrivers = ["amdgpu"];
|
||||||
|
|
||||||
|
# OpenCL
|
||||||
|
hardware.opengl = {
|
||||||
|
extraPackages = with pkgs; [
|
||||||
|
amdvlk
|
||||||
|
rocm-opencl-icd
|
||||||
|
rocm-opencl-runtime
|
||||||
|
];
|
||||||
|
# Only available on unstable
|
||||||
|
extraPackages32 = with pkgs; [
|
||||||
|
driversi686Linux.amdvlk
|
||||||
|
];
|
||||||
|
};
|
||||||
|
|
||||||
|
# HIP
|
||||||
|
systemd.tmpfiles.rules = [
|
||||||
|
"L+ /opt/rocm/hip - - - - ${pkgs.hip}"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
}
|
7
nixos/modules/hardware/gpu/default.nix
Normal file
7
nixos/modules/hardware/gpu/default.nix
Normal file
|
@ -0,0 +1,7 @@
|
||||||
|
{...}: {
|
||||||
|
imports = [
|
||||||
|
./amd.nix
|
||||||
|
./intel.nix
|
||||||
|
./nvidia.nix
|
||||||
|
];
|
||||||
|
}
|
36
nixos/modules/hardware/gpu/intel.nix
Normal file
36
nixos/modules/hardware/gpu/intel.nix
Normal file
|
@ -0,0 +1,36 @@
|
||||||
|
{
|
||||||
|
lib,
|
||||||
|
config,
|
||||||
|
pkgs,
|
||||||
|
...
|
||||||
|
}: let
|
||||||
|
cfg = config.myFlake.nixos.hardware.gpu.intel;
|
||||||
|
in {
|
||||||
|
options = {
|
||||||
|
myFlake.nixos.hardware.gpu.intel.enable = lib.mkEnableOption "Whether to enable Intel GPU.";
|
||||||
|
};
|
||||||
|
|
||||||
|
# https://nixos.wiki/wiki/Intel_Graphics
|
||||||
|
config = lib.mkIf cfg.enable {
|
||||||
|
hardware.opengl = {
|
||||||
|
enable = true;
|
||||||
|
driSupport = true;
|
||||||
|
driSupport32Bit = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
boot.initrd.kernelModules = ["i915"]; # if not enabled, plymouth's distro logo wont show for some reason
|
||||||
|
nixpkgs.config.packageOverrides = pkgs: {vaapiIntel = pkgs.vaapiIntel.override {enableHybridCodec = true;};};
|
||||||
|
|
||||||
|
hardware.opengl = {
|
||||||
|
extraPackages = with pkgs; [
|
||||||
|
intel-media-driver # libva_driver_name=ihd
|
||||||
|
vaapiIntel # libva_driver_name=i965 (older but works better for firefox/chromium)
|
||||||
|
vaapiVdpau
|
||||||
|
libvdpau-va-gl
|
||||||
|
intel-compute-runtime # intel opencl
|
||||||
|
intel-media-driver # intel vaapi
|
||||||
|
];
|
||||||
|
extraPackages32 = with pkgs; [pkgsi686Linux.vaapiIntel];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
48
nixos/modules/hardware/gpu/nvidia.nix
Executable file
48
nixos/modules/hardware/gpu/nvidia.nix
Executable file
|
@ -0,0 +1,48 @@
|
||||||
|
{
|
||||||
|
lib,
|
||||||
|
config,
|
||||||
|
...
|
||||||
|
}: let
|
||||||
|
cfg = config.myFlake.nixos.hardware.gpu.nvidia;
|
||||||
|
in {
|
||||||
|
options = {
|
||||||
|
myFlake.nixos.hardware.gpu.nvidia.enable = lib.mkEnableOption "Whether to enable NVIDIA GPU.";
|
||||||
|
myFlake.nixos.hardware.gpu.nvidia.prime = lib.mkEnableOption "Whether to enable NVIDIA Prime.";
|
||||||
|
};
|
||||||
|
|
||||||
|
# https://nixos.wiki/wiki/Nvidia
|
||||||
|
config = lib.mkIf cfg.enable {
|
||||||
|
hardware.opengl = {
|
||||||
|
enable = true;
|
||||||
|
driSupport = true;
|
||||||
|
driSupport32Bit = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
services.xserver.videoDrivers = ["nvidia"]; # tell xorg to use the nvidia driver, also valid for wayland
|
||||||
|
hardware.nvidia = {
|
||||||
|
package = config.boot.kernelPackages.nvidiaPackages.stable;
|
||||||
|
open = false;
|
||||||
|
modesetting.enable = true;
|
||||||
|
#dynamicboost.enable = true;
|
||||||
|
powerManagement = {
|
||||||
|
enable = true; # experimental power management feature
|
||||||
|
#finegrained = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
# cfg.prime
|
||||||
|
hardware.nvidia.prime = lib.mkIf cfg.prime {
|
||||||
|
sync.enable = false;
|
||||||
|
offload = {
|
||||||
|
enable = true;
|
||||||
|
enableOffloadCmd = true;
|
||||||
|
};
|
||||||
|
### Device specific, please put those configuration in `machines/your-machine.nix`
|
||||||
|
# nvidiaBusId = "PCI:1:0:0";
|
||||||
|
# intelBusId = "PCI:0:2:0";
|
||||||
|
};
|
||||||
|
environment.sessionVariables = {
|
||||||
|
"GAMEMODERUNEXEC" = lib.mkIf (cfg.prime || config.programs.gamemode.enable) "env __NV_PRIME_RENDER_OFFLOAD=1 __GLX_VENDOR_LIBRARY_NAME=nvidia __VK_LAYER_NV_optimus=NVIDIA_only"; # gamemode: nvidia offload
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
37
nixos/modules/hardware/misc/audio.nix
Executable file
37
nixos/modules/hardware/misc/audio.nix
Executable file
|
@ -0,0 +1,37 @@
|
||||||
|
{
|
||||||
|
lib,
|
||||||
|
config,
|
||||||
|
...
|
||||||
|
}: let
|
||||||
|
cfg = config.myFlake.nixos.hardware.misc.audio;
|
||||||
|
in {
|
||||||
|
options = {
|
||||||
|
myFlake.nixos.hardware.misc.audio.enable = lib.mkEnableOption "Whether to enable audio.";
|
||||||
|
myFlake.nixos.hardware.misc.audio.soundServer = lib.mkOption {
|
||||||
|
type = lib.types.enum ["pipewire" "pulseaudio"];
|
||||||
|
default = "pipewire";
|
||||||
|
example = "pulseaudio";
|
||||||
|
description = "Select desired sound system.";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
# https://nixos.wiki/wiki/PipeWire
|
||||||
|
# https://nixos.wiki/wiki/PulseAudio
|
||||||
|
config = lib.mkIf cfg.enable (lib.mkMerge [
|
||||||
|
(lib.mkIf (cfg.soundServer == "pipewire") {
|
||||||
|
security.rtkit.enable = true;
|
||||||
|
hardware.pulseaudio.enable = false;
|
||||||
|
services.pipewire = {
|
||||||
|
enable = true;
|
||||||
|
alsa.enable = true;
|
||||||
|
alsa.support32Bit = true;
|
||||||
|
pulse.enable = true;
|
||||||
|
jack.enable = true;
|
||||||
|
};
|
||||||
|
})
|
||||||
|
(lib.mkIf (cfg.soundServer == "pulseaudio") {
|
||||||
|
hardware.pulseaudio.enable = true;
|
||||||
|
hardware.pulseaudio.support32Bit = true;
|
||||||
|
})
|
||||||
|
]);
|
||||||
|
}
|
25
nixos/modules/hardware/misc/bluetooth.nix
Executable file
25
nixos/modules/hardware/misc/bluetooth.nix
Executable file
|
@ -0,0 +1,25 @@
|
||||||
|
{
|
||||||
|
lib,
|
||||||
|
config,
|
||||||
|
pkgs,
|
||||||
|
...
|
||||||
|
}: let
|
||||||
|
cfg = config.myFlake.nixos.hardware.misc.bluetooth;
|
||||||
|
in {
|
||||||
|
options = {
|
||||||
|
myFlake.nixos.hardware.misc.bluetooth.enable = lib.mkEnableOption "Whether to enable bluetooth.";
|
||||||
|
};
|
||||||
|
|
||||||
|
# https://nixos.wiki/wiki/Bluetooth
|
||||||
|
config = lib.mkIf cfg.enable {
|
||||||
|
# Bluetooth manager
|
||||||
|
#services.blueman.enable = true;
|
||||||
|
environment.systemPackages = lib.mkIf config.services.xserver.enable (with pkgs; [blueberry]);
|
||||||
|
|
||||||
|
# Bluetooth service
|
||||||
|
hardware.bluetooth = {
|
||||||
|
enable = true;
|
||||||
|
settings.General.FastConnectable = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
8
nixos/modules/hardware/misc/default.nix
Normal file
8
nixos/modules/hardware/misc/default.nix
Normal file
|
@ -0,0 +1,8 @@
|
||||||
|
{...}: {
|
||||||
|
imports = [
|
||||||
|
./audio.nix
|
||||||
|
./bluetooth.nix
|
||||||
|
./fstrim.nix
|
||||||
|
./tpm.nix
|
||||||
|
];
|
||||||
|
}
|
15
nixos/modules/hardware/misc/fstrim.nix
Normal file
15
nixos/modules/hardware/misc/fstrim.nix
Normal file
|
@ -0,0 +1,15 @@
|
||||||
|
{
|
||||||
|
lib,
|
||||||
|
config,
|
||||||
|
...
|
||||||
|
}: let
|
||||||
|
cfg = config.myFlake.nixos.hardware.misc.fstrim;
|
||||||
|
in {
|
||||||
|
options = {
|
||||||
|
myFlake.nixos.hardware.misc.fstrim.enable = lib.mkEnableOption "Whether to enable SSD triming in background.";
|
||||||
|
};
|
||||||
|
|
||||||
|
config = lib.mkIf cfg.enable {
|
||||||
|
services.fstrim.enable = true;
|
||||||
|
};
|
||||||
|
}
|
23
nixos/modules/hardware/misc/tpm.nix
Normal file
23
nixos/modules/hardware/misc/tpm.nix
Normal file
|
@ -0,0 +1,23 @@
|
||||||
|
{
|
||||||
|
lib,
|
||||||
|
config,
|
||||||
|
...
|
||||||
|
}: let
|
||||||
|
cfg = config.myFlake.nixos.hardware.misc.tpm;
|
||||||
|
in {
|
||||||
|
options = {
|
||||||
|
myFlake.nixos.hardware.misc.tpm.enable = lib.mkEnableOption "Whether to enable TPM.";
|
||||||
|
};
|
||||||
|
|
||||||
|
# https://nixos.wiki/wiki/TPM
|
||||||
|
config = lib.mkIf cfg.enable {
|
||||||
|
# TPM is currently broken on latest kernel,
|
||||||
|
# but luckily, linux-zen have a patch for it
|
||||||
|
# UPDATE: it got fixed in 6.5.3
|
||||||
|
security.tpm2 = {
|
||||||
|
enable = true;
|
||||||
|
pkcs11.enable = true; # expose /run/current-system/sw/lib/libtpm2_pkcs11.so
|
||||||
|
tctiEnvironment.enable = true; # tpm2tools_tcti and tpm2_pkcs11_tcti env variables
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
|
@ -7,7 +7,7 @@
|
||||||
type = lib.types.enum ["google" "alidns"];
|
type = lib.types.enum ["google" "alidns"];
|
||||||
default = "google";
|
default = "google";
|
||||||
example = "alidns";
|
example = "alidns";
|
||||||
description = "Select your DNS provider";
|
description = "Select desired DNS provider.";
|
||||||
};
|
};
|
||||||
|
|
||||||
config.networking.nameservers = lib.mkMerge [
|
config.networking.nameservers = lib.mkMerge [
|
||||||
|
|
|
@ -3,7 +3,7 @@
|
||||||
config,
|
config,
|
||||||
...
|
...
|
||||||
}: let
|
}: let
|
||||||
cfg = config.myFlake.nixos.networking.network-configuration-daemon;
|
cfg = config.myFlake.nixos.networking;
|
||||||
in {
|
in {
|
||||||
options = {
|
options = {
|
||||||
myFlake.nixos = {
|
myFlake.nixos = {
|
||||||
|
@ -12,20 +12,26 @@ in {
|
||||||
type = lib.types.enum ["iwd" "networkmanager" "networkmanager-iwd"];
|
type = lib.types.enum ["iwd" "networkmanager" "networkmanager-iwd"];
|
||||||
default = "iwd";
|
default = "iwd";
|
||||||
example = "networkmanager";
|
example = "networkmanager";
|
||||||
description = "Select network configuration daemon";
|
description = "Select desired network configuration daemon.";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
config = {
|
config = lib.mkMerge [
|
||||||
networking.wireless.iwd.enable = lib.mkIf (cfg == "iwd" || cfg == "networkmanager-iwd") true;
|
(lib.mkIf (cfg.network-configuration-daemon == "iwd") {
|
||||||
|
networking.wireless.iwd.enable = true;
|
||||||
networking.networkmanager = lib.mkIf (cfg == "networkmanager" || cfg == "networkmanager-iwd") {
|
})
|
||||||
enable = true;
|
(lib.mkIf (cfg.network-configuration-daemon == "networkmanager" || cfg.network-configuration-daemon == "networkmanager-iwd") {
|
||||||
ethernet.macAddress = "random";
|
networking.networkmanager = {
|
||||||
wifi.macAddress = "random";
|
enable = true;
|
||||||
wifi.backend = lib.mkIf (cfg == "networkmanager-iwd") "iwd";
|
ethernet.macAddress = "random";
|
||||||
};
|
wifi.macAddress = "random";
|
||||||
};
|
};
|
||||||
|
})
|
||||||
|
(lib.mkIf (cfg.network-configuration-daemon == "networkmanager-iwd") {
|
||||||
|
networking.wireless.iwd.enable = true;
|
||||||
|
networking.networkmanager.wifi.backend = "iwd";
|
||||||
|
})
|
||||||
|
];
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue