diff options
Diffstat (limited to 'system/modules/hardware')
-rw-r--r-- | system/modules/hardware/adb.nix | 9 | ||||
-rw-r--r-- | system/modules/hardware/audio.nix | 20 | ||||
-rw-r--r-- | system/modules/hardware/bare-metal.nix | 29 | ||||
-rw-r--r-- | system/modules/hardware/connman.nix | 14 | ||||
-rw-r--r-- | system/modules/hardware/grub2.nix | 13 | ||||
-rw-r--r-- | system/modules/hardware/hidpi.nix | 9 | ||||
-rw-r--r-- | system/modules/hardware/intel-gpu.nix | 15 | ||||
-rw-r--r-- | system/modules/hardware/keyboardio-model01.nix | 13 | ||||
-rw-r--r-- | system/modules/hardware/laptop.nix | 87 | ||||
-rw-r--r-- | system/modules/hardware/mouse.nix | 12 | ||||
-rw-r--r-- | system/modules/hardware/network-manager.nix | 12 | ||||
-rw-r--r-- | system/modules/hardware/nitrokey.nix | 13 | ||||
-rw-r--r-- | system/modules/hardware/nvidia-gpu.nix | 5 | ||||
-rw-r--r-- | system/modules/hardware/printing.nix | 19 | ||||
-rw-r--r-- | system/modules/hardware/qwerty.nix | 16 | ||||
-rw-r--r-- | system/modules/hardware/synaptics.nix | 27 | ||||
-rw-r--r-- | system/modules/hardware/systemd-boot.nix | 10 | ||||
-rw-r--r-- | system/modules/hardware/thinkpad.nix | 26 | ||||
-rw-r--r-- | system/modules/hardware/trackball.nix | 13 | ||||
-rw-r--r-- | system/modules/hardware/trezor.nix | 13 |
20 files changed, 375 insertions, 0 deletions
diff --git a/system/modules/hardware/adb.nix b/system/modules/hardware/adb.nix new file mode 100644 index 00000000..8b511f55 --- /dev/null +++ b/system/modules/hardware/adb.nix @@ -0,0 +1,9 @@ +{ config, pkgs, ... }: + +{ programs.adb.enable = true; + users.groups.adbusers = {}; + + services.udev = { + packages = [ pkgs.android-udev-rules ]; + }; +} diff --git a/system/modules/hardware/audio.nix b/system/modules/hardware/audio.nix new file mode 100644 index 00000000..ed956919 --- /dev/null +++ b/system/modules/hardware/audio.nix @@ -0,0 +1,20 @@ +{ config, pkgs, ... }: + +{ hardware.pulseaudio = { + enable = true; + support32Bit = true; + daemon.config = { + flat-volumes = "no"; + }; + package = if config.hardware.bluetooth.enable + then pkgs.pulseaudioFull + else pkgs.pulseaudio; + }; + + sound.enable = true; + + environment.systemPackages = with pkgs; [ + pamixer + pavucontrol + ]; +} diff --git a/system/modules/hardware/bare-metal.nix b/system/modules/hardware/bare-metal.nix new file mode 100644 index 00000000..0a61790a --- /dev/null +++ b/system/modules/hardware/bare-metal.nix @@ -0,0 +1,29 @@ +{ config, pkgs, ... }: + +{ environment.systemPackages = with pkgs; [ + fuse_exfat + cryptsetup + dmidecode + hdparm + pciutils + usbutils + ]; + + hardware.cpu.intel.updateMicrocode = true; + + boot.kernel.sysctl = { + "net.ipv4.tcp_allowed_congestion_control" = "illinois reno lp"; + "net.ipv4.tcp_congestion_control" = "illinois"; + }; + + zramSwap = { + enable = true; + algorithm = "zstd"; + }; + boot.tmpOnTmpfs = true; + + boot.kernelModules = [ "bfq" ]; + + fileSystems."/".options = [ "noatime" "nodiratime" ]; + fileSystems."/home".options = [ "noatime" "nodiratime" ]; +} diff --git a/system/modules/hardware/connman.nix b/system/modules/hardware/connman.nix new file mode 100644 index 00000000..0361f9cb --- /dev/null +++ b/system/modules/hardware/connman.nix @@ -0,0 +1,14 @@ +{ config, pkgs, ... }: + +{ networking.connman = { + enable = true; + enableVPN = false; + }; + networking.wireless.enable = true; + + environment.systemPackages = with pkgs; [ + cmst + connman-notify + connman_dmenu + ]; +} diff --git a/system/modules/hardware/grub2.nix b/system/modules/hardware/grub2.nix new file mode 100644 index 00000000..70e86e71 --- /dev/null +++ b/system/modules/hardware/grub2.nix @@ -0,0 +1,13 @@ +{ config, pkgs, ... }: + +{ boot.loader = { + grub = { + enable = true; + splashImage = null; + version = 2; + device = "nodev"; + efiSupport = true; + }; + efi.canTouchEfiVariables = true; + }; +} diff --git a/system/modules/hardware/hidpi.nix b/system/modules/hardware/hidpi.nix new file mode 100644 index 00000000..1f4644c5 --- /dev/null +++ b/system/modules/hardware/hidpi.nix @@ -0,0 +1,9 @@ +{ config, pkgs, ... }: + +{ i18n = { + consoleFont = "ter-v24b"; + consolePackages = with pkgs; [ + terminus_font + ]; + }; +} diff --git a/system/modules/hardware/intel-gpu.nix b/system/modules/hardware/intel-gpu.nix new file mode 100644 index 00000000..fc6b6fa3 --- /dev/null +++ b/system/modules/hardware/intel-gpu.nix @@ -0,0 +1,15 @@ +{ config, pkgs, ... }: + +{ hardware.opengl.extraPackages = with pkgs; [ + vaapiIntel + vaapiVdpau + libvdpau-va-gl + ]; + + services.xserver.videoDrivers = [ "intel" "modesetting" ]; + + boot.earlyVconsoleSetup = true; + boot.initrd.kernelModules = [ + "i915" + ]; +} diff --git a/system/modules/hardware/keyboardio-model01.nix b/system/modules/hardware/keyboardio-model01.nix new file mode 100644 index 00000000..7a624f56 --- /dev/null +++ b/system/modules/hardware/keyboardio-model01.nix @@ -0,0 +1,13 @@ +{ config, pkgs, ... }: + +{ services.udev.extraRules = '' + SUBSYSTEMS=="usb", ATTRS{idVendor}=="1209", ATTRS{idProduct}=="2300", SYMLINK+="model01", ENV{ID_MM_DEVICE_IGNORE}:="1", ENV{ID_MM_CANDIDATE}:="0" + SUBSYSTEMS=="usb", ATTRS{idVendor}=="1209", ATTRS{idProduct}=="2301", SYMLINK+="model01", ENV{ID_MM_DEVICE_IGNORE}:="1", ENV{ID_MM_CANDIDATE}:="0" + ''; + + environment.systemPackages = with pkgs; [ + arduino_core + ]; + + environment.variables.ARDUINO_PATH = "${pkgs.arduino_core}/share/arduino"; +} diff --git a/system/modules/hardware/laptop.nix b/system/modules/hardware/laptop.nix new file mode 100644 index 00000000..17e27b63 --- /dev/null +++ b/system/modules/hardware/laptop.nix @@ -0,0 +1,87 @@ +{ config, pkgs, lib, ... }: + +{ boot.kernelModules = [ "coretemp" ]; + boot.extraModulePackages = with config.boot.kernelPackages; [ + x86_energy_perf_policy + ]; + + hardware = { + bluetooth = { + enable = true; + powerOnBoot = false; + package = pkgs.bluezFull; + }; + pulseaudio = { + extraModules = with pkgs; [ + pulseaudio-modules-bt + ]; + }; + }; + systemd.services.bluetooth.wantedBy = lib.mkForce []; + systemd.timers.bluetooth = { + description = "Delayed startup of Bluetooth"; + wantedBy = [ "timers.target" ]; + timerConfig = { + OnActiveSec = "1 min"; + }; + }; + + environment.systemPackages = with pkgs; [ + blueman + bluez-tools + + powerstat + powertop + + arandr + autorandr + disper + ]; + + programs.light.enable = true; + + services.autorandr.enable = true; + + services.logind.extraConfig = '' + IdleAction=suspend + IdleActionSec=600 + ''; + + services.acpid = { + enable = true; + lidEventCommands = '' + ${pkgs.autorandr}/bin/autorandr --batch --change + ''; + }; + + services.tlp = { + enable = true; + extraConfig = '' + CPU_SCALING_GOVERNOR_ON_BAT=powersave + ENERGY_PERF_POLICY_ON_BAT="balance_power" + + SOUND_POWER_SAVE_ON_AC=60 + DEVICES_TO_DISABLE_ON_BAT_NOT_IN_USE="bluetooth wwan" + ''; + }; + + services.xserver = { + libinput = { + enable = lib.mkDefault true; + naturalScrolling = true; + disableWhileTyping = true; + }; + displayManager.sessionCommands = '' + ${pkgs.autorandr}/bin/autorandr --change --force + ${pkgs.blueman}/bin/blueman-applet & + ''; + }; + + systemd.services.nixos-upgrade.unitConfig.ConditionACPower = true; + systemd.services.nix-gc.unitConfig.ConditionACPower = true; + systemd.services.docker-prune.unitConfig.ConditionACPower = true; + + imports = [ + ../user-interface.nix + ]; +} diff --git a/system/modules/hardware/mouse.nix b/system/modules/hardware/mouse.nix new file mode 100644 index 00000000..b30d4124 --- /dev/null +++ b/system/modules/hardware/mouse.nix @@ -0,0 +1,12 @@ +{ config, pkgs, ... }: + +{ services.xserver.config = '' + Section "InputClass" + Identifier "Mouse (No Acceleration)" + MatchIsPointer "yes" + MatchIsTouchpad "no" + Option "AccelerationProfile" "-1" + Option "AccelerationScheme" "none" + EndSection + ''; +} diff --git a/system/modules/hardware/network-manager.nix b/system/modules/hardware/network-manager.nix new file mode 100644 index 00000000..f28548a1 --- /dev/null +++ b/system/modules/hardware/network-manager.nix @@ -0,0 +1,12 @@ +{ config, pkgs, ... }: + +{ networking.networkmanager = { + enable = true; + dns = "unbound"; + }; + + environment.systemPackages = with pkgs; [ + networkmanagerapplet + networkmanager_dmenu + ]; +} diff --git a/system/modules/hardware/nitrokey.nix b/system/modules/hardware/nitrokey.nix new file mode 100644 index 00000000..a77ce00c --- /dev/null +++ b/system/modules/hardware/nitrokey.nix @@ -0,0 +1,13 @@ +{ config, pkgs, lib, ... }: + +{ + hardware.nitrokey = { + enable = true; + }; + + services.pcscd.enable = true; + + environment.systemPackages = with pkgs; [ + nitrokey-app + ]; +} diff --git a/system/modules/hardware/nvidia-gpu.nix b/system/modules/hardware/nvidia-gpu.nix new file mode 100644 index 00000000..9fc34169 --- /dev/null +++ b/system/modules/hardware/nvidia-gpu.nix @@ -0,0 +1,5 @@ +{ config, pkgs, ... }: + +{ services.xserver.videoDrivers = [ "nvidia" ]; + nixpkgs.config.allowUnfree = true; +} diff --git a/system/modules/hardware/printing.nix b/system/modules/hardware/printing.nix new file mode 100644 index 00000000..96d3a959 --- /dev/null +++ b/system/modules/hardware/printing.nix @@ -0,0 +1,19 @@ +{ config, pkgs, lib, ... }: + +{ services.printing.enable = true; + systemd.services.cups.wantedBy = lib.mkForce []; + systemd.sockets.cups.wantedBy = [ "sockets.target" ]; + systemd.services.cups-browsed.wantedBy = lib.mkForce []; + + systemd.timers.cups-browsed = { + description = "Delayed startup of CUPS Remote Printer Discovery"; + wantedBy = [ "timers.target" ]; + timerConfig = { + OnActiveSec = "2 min"; + }; + }; + + imports = [ + ../services/zeroconf.nix + ]; +} diff --git a/system/modules/hardware/qwerty.nix b/system/modules/hardware/qwerty.nix new file mode 100644 index 00000000..d220cb27 --- /dev/null +++ b/system/modules/hardware/qwerty.nix @@ -0,0 +1,16 @@ +{ config, pkgs, ... }: + +{ services.kmscon = { + extraConfig = '' + xkb-model=pc104 + xkb-layout=us + xkb-variant=intl-unicode + xkb-options="altwin:prtsc_rwin" + ''; + }; + services.xserver = { + layout = "us"; + xkbVariant = "intl-unicode"; + xkbOptions = "altwin:prtsc_rwin"; + }; +} diff --git a/system/modules/hardware/synaptics.nix b/system/modules/hardware/synaptics.nix new file mode 100644 index 00000000..9f075cce --- /dev/null +++ b/system/modules/hardware/synaptics.nix @@ -0,0 +1,27 @@ +{ config, pkgs, ... }: + +{ services.xserver = { + libinput.enable = false; + synaptics = { + enable = true; + + accelFactor = "0.04"; + + minSpeed = "0.3"; + maxSpeed = "0.6"; + + palmDetect = true; + palmMinWidth = 5; + palmMinZ = 20; + + twoFingerScroll = true; + vertTwoFingerScroll = true; + horizTwoFingerScroll = true; + additionalOptions = '' + Option "RBCornerButton" "3" + Option "VertScrollDelta" "-111" + Option "HorizScrollDelta" "-111" + ''; + }; + }; +} diff --git a/system/modules/hardware/systemd-boot.nix b/system/modules/hardware/systemd-boot.nix new file mode 100644 index 00000000..80e79fdc --- /dev/null +++ b/system/modules/hardware/systemd-boot.nix @@ -0,0 +1,10 @@ +{ config, pkgs, ... }: + +{ boot.loader.systemd-boot = { + enable = true; + editor = false; # Don't allow modification + }; + boot.loader.efi.canTouchEfiVariables = true; + boot.vesa = true; + boot.earlyVconsoleSetup = true; +} diff --git a/system/modules/hardware/thinkpad.nix b/system/modules/hardware/thinkpad.nix new file mode 100644 index 00000000..903e819b --- /dev/null +++ b/system/modules/hardware/thinkpad.nix @@ -0,0 +1,26 @@ +{ config, pkgs, ... }: + +{ boot.kernelModules = [ ]; + boot.blacklistedKernelModules = [ "thinkpad_ec" ]; + boot.extraModulePackages = with config.boot.kernelPackages; [ + acpi_call + ]; + + hardware.trackpoint = { + enable = true; + emulateWheel = true; + }; + + services.thinkfan = { + enable = true; + }; + + services.tlp = { + enable = true; + }; + + imports = [ + ./bare-metal.nix + ./laptop.nix + ]; +} diff --git a/system/modules/hardware/trackball.nix b/system/modules/hardware/trackball.nix new file mode 100644 index 00000000..9aa5abc0 --- /dev/null +++ b/system/modules/hardware/trackball.nix @@ -0,0 +1,13 @@ +{ config, pkgs, ... }: + +{ services.xserver.config = '' + Section "InputClass" + Identifier "Trackball (No Acceleration)" + MatchIsPointer "yes" + MatchIsTouchpad "no" + MatchProduct "Trackball" + Option "AccelerationProfile" "-1" + Option "AccelerationScheme" "none" + EndSection + ''; +} diff --git a/system/modules/hardware/trezor.nix b/system/modules/hardware/trezor.nix new file mode 100644 index 00000000..33cc6f25 --- /dev/null +++ b/system/modules/hardware/trezor.nix @@ -0,0 +1,13 @@ +{ config, lib, pkgs, ... }: + +{ services.trezord.enable = true; + environment.systemPackages = with pkgs; [ + gnupg + pinentry + (python3.withPackages(ps: with ps; [ trezor_agent wheel ])) + ]; + programs.gnupg.agent = { + enable = lib.mkForce false; + enableSSHSupport = lib.mkForce false; + }; +} |