nixos-config/hosts/media-server/configuration.nix

230 lines
4.9 KiB
Nix
Raw Permalink Normal View History

2025-03-10 14:34:41 -04:00
{ config, lib, nix-config, inputs, pkgs, ... }:
2025-02-20 16:23:09 -05:00
{
2025-03-10 15:42:03 -04:00
imports = with nix-config.nixosModules; [
2025-03-10 13:52:39 -04:00
./hardware-configuration.nix
2025-03-11 12:57:34 -04:00
filesystems-filez
2025-03-10 13:52:39 -04:00
];
2025-03-10 13:57:20 -04:00
nixpkgs = {
config = {
allowUnfree = true;
};
2025-03-10 14:34:41 -04:00
overlays = builtins.attrValues nix-config.overlays ++ [
inputs.nh.overlays.default
];
2025-03-10 13:57:20 -04:00
};
nix = {
settings = {
experimental-features = [
"nix-command"
"flakes"
];
substituters = [
"https://nix-community.cachix.org"
"https://cache.garnix.io"
];
trusted-public-keys = [
"nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs="
"cache.garnix.io:CTFPyKSLcx5RMJKfLo5EEPUObbA78b0YQ2DTCJXqr9g="
];
};
channel.enable = false; # remove nix-channel related tools & configs, we use flakes instead.
};
2025-03-10 13:52:39 -04:00
# Use the systemd-boot EFI boot loader.
2025-03-16 13:59:47 -04:00
boot = {
loader = {
systemd-boot = {
enable = true;
configurationLimit = 4;
};
efi.canTouchEfiVariables = true;
};
kernelPackages = pkgs.linuxPackages_latest;
kernelModules = [
"i2c-dev"
"amd_3d_vcache"
"uinput"
];
supportedFilesystems = [ "nfs" ];
};
2025-03-10 13:52:39 -04:00
2025-04-05 14:46:17 -04:00
networking.hostName = "media-server";
networking.networkmanager.enable = true;
2025-04-05 14:11:59 -04:00
networking.firewall.allowedTCPPorts = [ 80 443 2049 ];
2025-03-10 13:52:39 -04:00
# Set your time zone.
time.timeZone = "America/Toronto";
2025-04-15 11:24:21 -04:00
security.sudo = {
enable = true;
wheelNeedsPassword = false;
};
2025-03-10 13:52:39 -04:00
users.users.media = {
isNormalUser = true;
2025-04-05 14:46:17 -04:00
extraGroups = [ "wheel" "input" "audio" "video" "network" "networkmanager" ];
2025-03-10 13:52:39 -04:00
};
environment.systemPackages = with pkgs; [
wget
curl
2025-03-10 22:23:34 -04:00
cifs-utils
caddy
2025-03-10 13:52:39 -04:00
];
fonts = {
enableDefaultPackages = true;
fontDir.enable = true;
fontconfig = {
enable = true;
useEmbeddedBitmaps = true;
};
2025-03-10 13:59:58 -04:00
};
2025-03-10 13:52:39 -04:00
2025-03-10 13:59:58 -04:00
hardware = {
amdgpu.initrd.enable = true;
enableAllFirmware = true;
uinput.enable = true;
};
2025-03-10 13:52:39 -04:00
2025-03-10 13:59:58 -04:00
services.power-profiles-daemon = {
enable = true;
package = pkgs.power-profiles-daemon;
};
2025-03-10 13:52:39 -04:00
services.getty.autologinUser = "media";
2025-03-10 13:59:58 -04:00
# enable the OpenSSH daemon.
services.openssh.enable = true;
programs.ssh.startAgent = true;
2025-03-29 14:36:03 -04:00
2025-03-10 13:59:58 -04:00
services.resolved = {
enable = true;
extraConfig = ''
2025-03-10 13:52:39 -04:00
LLMNR=no
ReadEtcHosts=no
DNSSEC=no
'';
2025-03-10 13:59:58 -04:00
};
services.avahi = {
enable = true;
publish.enable = true;
publish.userServices = true;
openFirewall = true;
nssmdns4 = true;
};
2025-04-05 13:53:10 -04:00
services.rpcbind.enable = true;
services.nfs = {
server = {
enable = true;
exports = ''
2025-04-05 14:15:56 -04:00
/export/import *(rw,fsid=0,no_subtree_check,nohide,insecure,crossmnt)
2025-04-05 13:53:10 -04:00
'';
2025-03-10 18:50:05 -04:00
};
2025-03-10 13:59:58 -04:00
};
2025-04-05 13:53:10 -04:00
2025-04-02 18:24:17 -04:00
programs.nix-ld.enable = true;
2025-03-10 14:11:00 -04:00
programs.nh = {
enable = true;
clean = {
enable = true;
dates = "daily";
extraArgs = "--keep 4";
};
flake = "/home/media-server/nixos-config";
package = pkgs.nh;
};
2025-03-10 13:52:39 -04:00
2025-03-10 13:59:58 -04:00
# enable fish and launch it from bash for interactive shells
programs.fish.enable = true;
environment.pathsToLink = [ "/share/fish" ];
programs.bash = {
interactiveShellInit = ''
2025-03-10 13:52:39 -04:00
if [[ $(${pkgs.procps}/bin/ps --no-header --pid=$PPID --format=comm) != "fish" && -z ''${BASH_EXECUTION_STRING} ]]
then
shopt -q login_shell && LOGIN_OPTION='--login' || LOGIN_OPTION=""
exec ${pkgs.fish}/bin/fish $LOGIN_OPTION
fi
'';
2025-03-10 13:59:58 -04:00
};
2025-03-10 13:52:39 -04:00
2025-03-10 13:59:58 -04:00
programs.git = {
enable = true;
};
2025-03-10 13:52:39 -04:00
2025-03-10 14:17:53 -04:00
services.tailscale.enable = true;
systemd.services.tailscaled.after = [ "NetworkManager-wait-online.service" ];
2025-03-10 14:16:39 -04:00
2025-03-10 15:42:03 -04:00
nixarr = {
enable = true;
2025-03-10 17:30:58 -04:00
# mediaDir = "/mnt/filez/media";
2025-03-10 15:42:03 -04:00
stateDir = "/data/media/.state/nixarr";
2025-03-10 17:30:58 -04:00
mediaUsers = [
"media"
2025-03-10 17:32:31 -04:00
"plex"
2025-03-10 22:41:09 -04:00
"sonarr"
"radarr"
"lidarr"
"bazarr"
"prowlarr"
2025-03-10 17:30:58 -04:00
];
2025-03-10 15:42:03 -04:00
transmission = {
enable = true;
2025-03-26 13:04:12 -04:00
flood.enable = true;
2025-03-11 11:53:06 -04:00
openFirewall = true;
2025-03-12 16:18:17 -04:00
extraSettings = {
2025-03-27 12:23:31 -04:00
incomplete-dir = "/mnt/filez/media/downloads/torrents/incomplete";
download-dir = "/mnt/filez/media/downloads/torrents";
2025-03-12 16:18:17 -04:00
};
2025-03-10 15:42:03 -04:00
};
2025-03-11 11:44:36 -04:00
sabnzbd = {
enable = true;
2025-03-11 11:53:06 -04:00
openFirewall = true;
2025-03-11 12:11:25 -04:00
whitelistHostnames = [ "media-server" ];
2025-03-11 11:44:36 -04:00
};
2025-03-10 15:42:03 -04:00
bazarr.enable = true;
lidarr.enable = true;
prowlarr.enable = true;
radarr.enable = true;
readarr.enable = true;
sonarr.enable = true;
jellyseerr.enable = true;
};
services.plex = {
enable = true;
2025-03-10 17:42:27 -04:00
openFirewall = true;
2025-03-10 15:42:03 -04:00
};
2025-03-10 14:16:39 -04:00
2025-03-13 17:49:17 -04:00
systemd.targets.sleep.enable = false;
systemd.targets.suspend.enable = false;
systemd.targets.hibernate.enable = false;
systemd.targets.hybrid-sleep.enable = false;
2025-03-12 10:50:28 -04:00
systemd.sleep.extraConfig = ''
AllowSuspend=no
AllowHibernation=no
AllowSuspendThenHibernate=no
AllowHybridSleep=no
'';
2025-03-10 20:33:10 -04:00
2025-03-10 13:59:58 -04:00
# For more information, see `man configuration.nix` or https://nixos.org/manual/nixos/stable/options#opt-system.stateVersion .
system.stateVersion = "25.05"; # Did you read the comment?
2025-03-10 13:52:39 -04:00
2025-02-20 16:23:09 -05:00
}