flock/suites/desktop/default.nix

156 lines
3.6 KiB
Nix
Executable file

{
pkgs,
lib,
...
}:
with lib; {
imports = [../.]; # Common config.
# Configure the bootloader.
boot = {
# Use linux-zen kernel.
kernelPackages = pkgs.linuxKernel.packages.linux_zen;
# Enable systemd-boot
loader.systemd-boot.enable = true;
loader.efi.canTouchEfiVariables = true;
# Enable quiet boot with splash
plymouth.enable = true;
consoleLogLevel = 3;
initrd.verbose = false;
kernelParams = [
"quiet"
"splash"
"boot.shell_on_fail"
"udev.log_priority=3"
"rd.systemd.show_status=auto"
];
# Allow emulating aarch64 to build for Raspberry Pi.
binfmt.emulatedSystems = ["aarch64-linux"];
};
# Enable zram swap.
zramSwap.enable = true;
# Enable smart card support (for YubiKey).
services.pcscd.enable = true;
# Enable login manager.
programs.regreet = {
enable = true;
cageArgs = ["-m" "last"];
font = {
size = 11;
name = "Adwaita Sans";
};
};
# Enable window manager.
programs.niri = {
enable = true;
package = pkgs.niri-unstable;
};
# Set wallpaper.
stylix.image = ./wallpaper.jpg;
programs.dconf.enable = true;
security.polkit.enable = true;
services.hardware.bolt.enable = true;
services.upower.enable = true;
services.libinput.enable = true;
# Virtualisation.
programs.virt-manager.enable = true;
users.groups.libvirtd.members = ["fern"];
virtualisation = {
spiceUSBRedirection.enable = true;
libvirtd = {
enable = true;
qemu = {
package = pkgs.qemu_kvm;
swtpm.enable = true;
ovmf = {
enable = true;
packages = [pkgs.OVMFFull.fd];
};
};
};
};
# Install Steam client.
programs.steam.enable = true;
# Enable configuration of keyboard.
hardware.keyboard.qmk.enable = true;
services.udev.packages = [pkgs.via];
# Nintendo Switch udev rules.
services.udev.extraRules = ''
SUBSYSTEM=="usb", ATTRS{idVendor}=="057e", ATTRS{idProduct}=="3000", MODE="0666"
SUBSYSTEM=="usb", ATTRS{idVendor}=="0955", ATTRS{idProduct}=="7321", MODE="0666"
'';
# Enable gamemode service.
programs.gamemode.enable = true;
# Enable CUPS to print documents.
services.printing = {
enable = true;
drivers = [pkgs.brlaser pkgs.cups-dymo]; # Brother laser printer & Dymo label printer.
};
services.system-config-printer.enable = true;
# https://github.com/tailscale/tailscale/issues/4432#issuecomment-1112819111
networking.firewall.checkReversePath = false;
# Enable brightness control.
hardware.brillo.enable = true;
users.groups.video.members = ["fern"];
# Control external monitor
hardware.i2c.enable = true;
services.ddccontrol.enable = true;
# Enable sound with pipewire.
services.pulseaudio.enable = false;
security.rtkit.enable = true;
services.pipewire = {
enable = true;
alsa.enable = true;
alsa.support32Bit = true;
pulse.enable = true;
};
# Enable CPU frequency scaling management.
services.tlp.enable = mkForce false; # enabled by nixos-hardware
services.auto-cpufreq.enable = true;
# Samba file sharing.
services.samba = {
enable = true;
openFirewall = true;
settings = {
global = {
"workgroup" = "FLOCK";
"server string" = "muskduck";
"netbios name" = "muskduck";
"security" = "user";
};
"Music" = {
"path" = "/home/fern/Music";
"browseable" = "yes";
"read only" = "yes";
"guest ok" = "no";
};
};
};
services.samba-wsdd = {
enable = true;
openFirewall = true;
};
}