diff --git a/hosts/gAluminum/default.nix b/hosts/gAluminum/default.nix index 841c85d..2bc4986 100644 --- a/hosts/gAluminum/default.nix +++ b/hosts/gAluminum/default.nix @@ -1,8 +1,16 @@ -{ config, pkgs, ... }: +{ config, pkgs, lib, ... }: -let hostname = "gAluminum"; +let + hostname = "gAluminum"; + nvidia-offload = pkgs.writeShellScriptBin "nvidia-offload" '' + export __NV_PRIME_RENDER_OFFLOAD=1 + export __NV_PRIME_RENDER_OFFLOAD_PROVIDER=NVIDIA-G0 + export __GLX_VENDOR_LIBRARY_NAME=nvidia + export __VK_LAYER_NV_optimus=NVIDIA_only + exec -a "$0" "$@" + ''; in { - imports = [ ./hardware.nix ./wireguard.nix ]; + imports = [ ./hardware.nix ./wireguard.nix ./sound.nix ]; boot = { supportedFilesystems = [ "ntfs" ]; @@ -12,6 +20,8 @@ in { systemd-boot.enable = true; }; + kernelPackages = pkgs.linuxPackages_latest; + initrd.luks.devices = { root = { device = "/dev/disk/by-uuid/c2bac3a6-0999-4e1d-a676-bf4bcafee2d4"; @@ -30,20 +40,35 @@ in { }; time.timeZone = "Europe/London"; - virtualisation.virtualbox.host.enable = true; - virtualisation.virtualbox.host.enableExtensionPack = true; - users.extraGroups.vboxusers.members = [ "giulio" ]; - - services.printing.enable = true; - sound.enable = true; - - hardware = { - pulseaudio.enable = true; - ledger.enable = true; + virtualisation.virtualbox.host = { + enable = true; + enableExtensionPack = true; + }; + + users.extraGroups = { + vboxusers.members = [ "giulio" ]; + video.members = [ "giulio" ]; + }; + + services = { + printing.enable = true; + xserver.videoDrivers = [ "nvidia" ]; + teamviewer.enable = true; + davfs2.enable = true; + }; + + hardware = { + ledger.enable = true; + nvidia = { + prime = { + offload.enable = true; + intelBusId = "PCI:0:2:0"; + nvidiaBusId = "PCI:1:0:0"; + }; + }; }; - services.teamviewer.enable = true; programs.steam.enable = true; - environment.systemPackages = with pkgs; [ efibootmgr ]; + environment.systemPackages = with pkgs; [ efibootmgr nvidia-offload ]; system.stateVersion = "21.05"; # Did you read the comment? } diff --git a/hosts/gAluminum/hardware.nix b/hosts/gAluminum/hardware.nix index bd99884..a826e5a 100644 --- a/hosts/gAluminum/hardware.nix +++ b/hosts/gAluminum/hardware.nix @@ -23,6 +23,4 @@ }; swapDevices = [ ]; - - powerManagement.cpuFreqGovernor = lib.mkDefault "powersave"; } diff --git a/hosts/gAluminum/sound.nix b/hosts/gAluminum/sound.nix new file mode 100644 index 0000000..2c83b90 --- /dev/null +++ b/hosts/gAluminum/sound.nix @@ -0,0 +1,36 @@ +{ + services.pipewire = { + enable = true; + alsa.enable = true; + alsa.support32Bit = true; + pulse.enable = true; + media-session.config.bluez-monitor.rules = [ + { + # Matches all cards + matches = [{ "device.name" = "~bluez_card.*"; }]; + actions = { + "update-props" = { + "bluez5.reconnect-profiles" = [ "hfp_hf" "hsp_hs" "a2dp_sink" ]; + # mSBC is not expected to work on all headset + adapter combinations. + "bluez5.msbc-support" = true; + # SBC-XQ is not expected to work on all headset + adapter combinations. + "bluez5.sbc-xq-support" = true; + }; + }; + } + { + matches = [ + # Matches all sources + { + "node.name" = "~bluez_input.*"; + } + # Matches all outputs + { "node.name" = "~bluez_output.*"; } + ]; + actions = { "node.pause-on-idle" = false; }; + } + ]; + }; + security.rtkit.enable = true; + hardware.pulseaudio.enable = false; +}