dots/modules/hosts/nixos/nixnuc/default.nix

95 lines
2 KiB
Nix

{ inputs, config, pkgs, username, ... }: {
imports = [
./hardware-configuration.nix
];
system.stateVersion = "23.11";
# Bootloader.
boot.loader = {
efi.canTouchEfiVariables = true;
systemd-boot.enable = true;
};
environment.systemPackages = with pkgs; [
helix
jellyfin
jellyfin-ffmpeg
jellyfin-web
net-snmp
yt-dlp
];
hardware.opengl = {
enable = true;
extraPackages = with pkgs; [
intel-media-driver
vaapiIntel
vaapiVdpau
libvdpau-va-gl
intel-compute-runtime # OpenCL filter support (hardware tonemapping and subtitle burn-in)
];
};
networking = {
# Open ports in the firewall.
firewall.allowedTCPPorts = [ 22 ];
# firewall.allowedUDPPorts = [ ... ];
# Or disable the firewall altogether.
# firewall.enable = false;
networkmanager.enable = true;
};
# Hardware Transcoding for Jellyfin
nixpkgs.overlays = [
(self: super: {
# "vaapiIntel" is in some docs, but that is an alias
# to intel-vaapi-driver as of 2023-05-31
intel-vaapi-driver = super.intel-vaapi-driver.override {
enableHybridCodec = true;
};
})
];
# Enable sound with pipewire.
sound.enable = true;
hardware.pulseaudio.enable = false;
security.rtkit.enable = true;
services.pipewire = {
enable = true;
alsa.enable = true;
alsa.support32Bit = true;
pulse.enable = true;
};
programs.mtr.enable = true;
# List services that you want to enable:
services = {
fwupd.enable = true;
jellyfin = {
enable = true;
openFirewall = true;
};
openssh.enable = true;
tailscale = {
extraUpFlags = [
"--advertise-exit-node"
"--operator ${username}"
"--ssh"
];
};
};
users.users.${username} = {
isNormalUser = true;
description = "Gene Liverman";
extraGroups = [ "docker" "networkmanager" "wheel" ];
packages = with pkgs; [
docker-compose
];
};
virtualisation.docker.enable = true;
}