208 lines
5.9 KiB
Nix
208 lines
5.9 KiB
Nix
{
|
|
config,
|
|
lib,
|
|
pkgs,
|
|
inputs,
|
|
...
|
|
}: let
|
|
builtInAudioCard = "alsa_card.pci-0000_00_1f.3";
|
|
builtInAudioDuplexProfile = "output:analog-stereo+input:analog-stereo";
|
|
setBuiltInAudioDuplexProfile = pkgs.writeShellScript "set-built-in-audio-duplex-profile" ''
|
|
attempts=0
|
|
while [ "$attempts" -lt 20 ]; do
|
|
if ${pkgs.pulseaudio}/bin/pactl set-card-profile ${builtInAudioCard} ${builtInAudioDuplexProfile}; then
|
|
exit 0
|
|
fi
|
|
attempts=$((attempts + 1))
|
|
sleep 0.25
|
|
done
|
|
|
|
${pkgs.pulseaudio}/bin/pactl set-card-profile ${builtInAudioCard} ${builtInAudioDuplexProfile}
|
|
'';
|
|
in {
|
|
imports = [
|
|
../configuration.nix
|
|
inputs.grub2-themes.nixosModules.default
|
|
inputs.nixos-hardware.nixosModules.asus-rog-strix-g834jzr
|
|
];
|
|
|
|
myModules.base.enable = true;
|
|
myModules.desktop.enable = true;
|
|
myModules.xmonad.enable = true;
|
|
myModules.riverXmonad.enable = true;
|
|
myModules.extra.enable = false;
|
|
myModules.code.enable = true;
|
|
myModules.games.enable = false;
|
|
myModules.syncthing.enable = true;
|
|
myModules.fonts.enable = true;
|
|
myModules.gitea-runner.enable = false;
|
|
myModules.nvidia.enable = true;
|
|
myModules.electron.enable = true;
|
|
myModules.wyoming.enable = false;
|
|
myModules.tts.enable = true;
|
|
myModules."keepbook-sync".enable = true;
|
|
|
|
hardware.enableRedistributableFirmware = true;
|
|
|
|
services.pipewire.wireplumber.extraConfig."51-strixi-built-in-audio-duplex" = {
|
|
"monitor.alsa.rules" = [
|
|
{
|
|
matches = [
|
|
{
|
|
"device.name" = builtInAudioCard;
|
|
}
|
|
];
|
|
actions.update-props = {
|
|
"device.profile" = builtInAudioDuplexProfile;
|
|
};
|
|
}
|
|
];
|
|
};
|
|
|
|
systemd.user.services.set-built-in-audio-duplex-profile = {
|
|
description = "Enable the built-in audio input profile";
|
|
wantedBy = ["default.target"];
|
|
wants = ["pipewire-pulse.service" "wireplumber.service"];
|
|
after = ["pipewire-pulse.service" "wireplumber.service"];
|
|
serviceConfig = {
|
|
Type = "oneshot";
|
|
ExecStart = setBuiltInAudioDuplexProfile;
|
|
};
|
|
};
|
|
|
|
# nixpkgs.config.cudaSupport = true;
|
|
|
|
myModules.bootloaders.systemdBoot.enable = false;
|
|
myModules.bootloaders.grub = {
|
|
enable = true;
|
|
configurationLimit = 5;
|
|
gfxmode = "2560x1600,auto";
|
|
};
|
|
boot.loader.grub2-theme = {
|
|
enable = true;
|
|
theme = "whitesur";
|
|
icon = "whitesur";
|
|
screen = "2k";
|
|
customResolution = "2560x1600";
|
|
};
|
|
|
|
environment.systemPackages = with pkgs; [
|
|
android-studio
|
|
gimp
|
|
inkscape
|
|
];
|
|
|
|
services.synergy.server = {
|
|
enable = true;
|
|
autoStart = true;
|
|
configFile = ../../dotfiles/synergy.conf;
|
|
};
|
|
|
|
services.matter-server = {
|
|
enable = false;
|
|
logLevel = "debug";
|
|
extraArgs = ["--bluetooth-adapter=0" "--enable-test-net-dcl"];
|
|
};
|
|
|
|
programs.virt-manager.enable = true;
|
|
virtualisation.libvirtd.enable = true;
|
|
virtualisation.spiceUSBRedirection.enable = true;
|
|
systemd.services.virt-secret-init-encryption.serviceConfig.ExecStart = lib.mkForce [
|
|
""
|
|
"${pkgs.runtimeShell} -c 'umask 0077 && (dd if=/dev/random status=none bs=32 count=1 | systemd-creds encrypt --name=secrets-encryption-key - /var/lib/libvirt/secrets/secrets-encryption-key)'"
|
|
];
|
|
|
|
services.xserver.dpi = 96;
|
|
# linuxPackages_latest (6.19) currently fails to build nvidia-open.
|
|
# Keep this host on the default kernel packages until the driver catches up.
|
|
boot.kernelPackages = pkgs.linuxPackages;
|
|
# See https://github.com/NixOS/nixpkgs/issues/467814 for why this was needed
|
|
hardware.nvidia.package = config.boot.kernelPackages.nvidiaPackages.beta;
|
|
boot.initrd.availableKernelModules = ["vmd" "xhci_pci" "thunderbolt" "nvme" "usbhid" "usb_storage" "sd_mod"];
|
|
boot.initrd.kernelModules = ["nvidia" "nvidia_drm" "nvidia_uvm" "nvidia_modeset"];
|
|
boot.kernelModules = ["kvm-intel"];
|
|
boot.extraModulePackages = [];
|
|
hardware.nvidia.powerManagement.enable = true;
|
|
# This laptop has a hardware MUX, so prefer dGPU-only mode instead of
|
|
# PRIME sync hybrid mode to keep the compositor and displays on NVIDIA.
|
|
hardware.nvidia.prime.offload.enable = lib.mkForce false;
|
|
hardware.nvidia.prime.sync.enable = lib.mkForce false;
|
|
services.asusd.enable = true;
|
|
services.supergfxd.settings = {
|
|
mode = "AsusMuxDgpu";
|
|
};
|
|
services.power-profiles-daemon.enable = false;
|
|
services.tlp.enable = false;
|
|
|
|
fileSystems."/" = {
|
|
device = "/dev/disk/by-uuid/fc06a54c-cc45-423a-914b-8dfcb5939106";
|
|
fsType = "ext4";
|
|
};
|
|
|
|
fileSystems."/boot" = {
|
|
device = "/dev/disk/by-uuid/B28A-829A";
|
|
fsType = "vfat";
|
|
};
|
|
|
|
swapDevices = [
|
|
{device = "/dev/disk/by-uuid/27f277a0-b552-43a0-904d-625e48922bb9";}
|
|
{
|
|
device = "/swapfile";
|
|
size = 16384;
|
|
} # size is in MiB (adds 16 GiB)
|
|
];
|
|
|
|
networking.hostName = "strixi-minaj";
|
|
myModules.hostIdentity = {
|
|
emoticon = "👩🏿";
|
|
tmux.background = "#ea580c";
|
|
};
|
|
|
|
powerManagement.cpuFreqGovernor = lib.mkDefault "performance";
|
|
hardware.cpu.intel.updateMicrocode = lib.mkDefault true;
|
|
|
|
home-manager.sharedModules = [
|
|
{
|
|
services.kanshi.settings = lib.mkAfter [
|
|
{
|
|
profile.name = "internal-only";
|
|
profile.outputs = [
|
|
{
|
|
criteria = "eDP-1";
|
|
status = "enable";
|
|
mode = "2560x1600@240Hz";
|
|
position = "0,0";
|
|
scale = 1.25;
|
|
}
|
|
{
|
|
criteria = "Microstep MPG341CX OLED Unknown";
|
|
status = "disable";
|
|
}
|
|
];
|
|
}
|
|
{
|
|
profile.name = "internal-panel-only";
|
|
profile.outputs = [
|
|
{
|
|
criteria = "eDP-1";
|
|
status = "enable";
|
|
mode = "2560x1600@240Hz";
|
|
position = "0,0";
|
|
scale = 1.25;
|
|
}
|
|
];
|
|
}
|
|
];
|
|
|
|
home.stateVersion = "23.05";
|
|
}
|
|
];
|
|
|
|
system.autoUpgrade = {
|
|
enable = true;
|
|
dates = "hourly";
|
|
};
|
|
|
|
system.stateVersion = "23.05";
|
|
}
|