diff --git a/machine/homeserver.nix b/machine/homeserver.nix index aedd4ad..35138ea 100644 --- a/machine/homeserver.nix +++ b/machine/homeserver.nix @@ -1,27 +1,49 @@ { config, pkgs, ... }: -{ - imports = - [ - - /etc/nixos/hardware-configuration.nix - ../configs/common.nix - ../configs/docker.nix - ../configs/libvirt.nix - ../configs/user.nix - ]; +let secrets = import ../configs/secrets.nix; +in { + imports = [ + + /etc/nixos/hardware-configuration.nix + ../configs/common.nix + ../configs/docker.nix + ../configs/libvirt.nix + ../configs/user.nix + ]; # Use the systemd-boot EFI boot loader. boot.loader.systemd-boot.enable = true; boot.loader.efi.canTouchEfiVariables = true; - - networking.hostName = "homeserver"; # Define your hostname. - # Set your time zone. time.timeZone = "Europe/Berlin"; + networking = { + hostName = "homeserver"; # Define your hostname. + useDHCP = false; + firewall.enable = false; + nat = { + enable = true; + internalInterfaces = [ "br0" ]; + externalInterface = "enp3s0"; + }; - networking.useDHCP = false; - networking.interfaces.enp3s0.useDHCP = true; + wireless = { + enable = true; + networks.Skynet_5G.psk = secrets.wifipassword; + interfaces = [ "wlp1s0" ]; + }; + + # libvirt uses 192.168.122.0 + bridges.br0.interfaces = [ ]; + interfaces.br0 = { + ipv4.addresses = [{ + address = "192.168.122.1"; + prefixLength = 24; + }]; + }; + + interfaces.enp3s0.useDHCP = true; + interfaces.wlp1s0.useDHCP = true; + }; environment.systemPackages = with pkgs; [ snapraid @@ -32,35 +54,32 @@ ]; systemd = { - mounts = [ - { - requires = [ - "mnt-disk1.mount" - "mnt-disk2.mount" - "mnt-disk3.mount" - ]; - after = [ - "mnt-disk1.mount" - "mnt-disk2.mount" - "mnt-disk3.mount" - ]; - what = "/mnt/disk1:/mnt/disk2:/mnt/disk3"; - where = "/mnt/storage"; - type = "fuse.mergerfs"; - options = "defaults,allow_other,use_ino,fsname=mergerfs,minfreespace=50G,func.getattr=newest,noforget"; - wantedBy = [ "multi-user.target" ]; - } - ]; + mounts = [{ + requires = [ "mnt-disk1.mount" "mnt-disk2.mount" "mnt-disk3.mount" ]; + after = [ "mnt-disk1.mount" "mnt-disk2.mount" "mnt-disk3.mount" ]; + what = "/mnt/disk1:/mnt/disk2:/mnt/disk3"; + where = "/mnt/storage"; + type = "fuse.mergerfs"; + options = + "defaults,allow_other,use_ino,fsname=mergerfs,minfreespace=50G,func.getattr=newest,noforget"; + wantedBy = [ "multi-user.target" ]; + }]; services.snapraid-sync = { - #enable = true; description = "Snapraid Sync and Diff"; serviceConfig = { Type = "oneshot"; User = "alex"; - # ExecStart="/home/alex/snapraid-sync"; }; - path = [ pkgs.bash pkgs.snapraid pkgs.curl pkgs.smartmontools pkgs.hdparm ]; + path = [ + pkgs.bash + pkgs.snapraid + pkgs.curl + pkgs.smartmontools + pkgs.hdparm + pkgs.exfatprogs + pkgs.exfat + ]; script = '' /home/alex/snapraid-sync @@ -68,25 +87,27 @@ }; timers.snapraid-sync = { - #enable = true; wantedBy = [ "timers.target" ]; - timerConfig = { - OnCalendar = "Mon-Sun, 23:00"; - # Unit = "snapraid-sync.service"; - }; + timerConfig = { OnCalendar = "Mon-Sun, 23:00"; }; }; }; - powerManagement.powerUpCommands = '' - ${pkgs.hdparm}/sbin/hdparm -S 241 /dev/disk/by-uuid/0301db98-264f-4b18-9423-15691063f73d - ${pkgs.hdparm}/sbin/hdparm -S 241 /dev/disk/by-uuid/3c4b5d00-43c0-48be-81b8-c2b3977e015b - ${pkgs.hdparm}/sbin/hdparm -S 241 /dev/disk/by-uuid/3e1731d7-f17e-4f6d-9197-84e0492bf4ee - ${pkgs.hdparm}/sbin/hdparm -S 241 /dev/disk/by-uuid/6cce037c-d2d4-4940-bb69-6d2b84fd41aa - ${pkgs.hdparm}/sbin/hdparm -y /dev/disk/by-uuid/0301db98-264f-4b18-9423-15691063f73d - ${pkgs.hdparm}/sbin/hdparm -y /dev/disk/by-uuid/3c4b5d00-43c0-48be-81b8-c2b3977e015b - ${pkgs.hdparm}/sbin/hdparm -y /dev/disk/by-uuid/3e1731d7-f17e-4f6d-9197-84e0492bf4ee - ${pkgs.hdparm}/sbin/hdparm -y /dev/disk/by-uuid/6cce037c-d2d4-4940-bb69-6d2b84fd41aa - ''; + powerManagement = { + enable = true; + powertop.enable = true; + cpuFreqGovernor = "powersave"; + + powerUpCommands = '' + ${pkgs.hdparm}/sbin/hdparm -S 241 /dev/disk/by-uuid/0301db98-264f-4b18-9423-15691063f73d + ${pkgs.hdparm}/sbin/hdparm -S 241 /dev/disk/by-uuid/3c4b5d00-43c0-48be-81b8-c2b3977e015b + ${pkgs.hdparm}/sbin/hdparm -S 241 /dev/disk/by-uuid/3e1731d7-f17e-4f6d-9197-84e0492bf4ee + ${pkgs.hdparm}/sbin/hdparm -S 241 /dev/disk/by-uuid/6cce037c-d2d4-4940-bb69-6d2b84fd41aa + ${pkgs.hdparm}/sbin/hdparm -y /dev/disk/by-uuid/0301db98-264f-4b18-9423-15691063f73d + ${pkgs.hdparm}/sbin/hdparm -y /dev/disk/by-uuid/3c4b5d00-43c0-48be-81b8-c2b3977e015b + ${pkgs.hdparm}/sbin/hdparm -y /dev/disk/by-uuid/3e1731d7-f17e-4f6d-9197-84e0492bf4ee + ${pkgs.hdparm}/sbin/hdparm -y /dev/disk/by-uuid/6cce037c-d2d4-4940-bb69-6d2b84fd41aa + ''; + }; nixpkgs.config.packageOverrides = pkgs: { vaapiIntel = pkgs.vaapiIntel.override { enableHybridCodec = true; }; @@ -103,7 +124,7 @@ }; services = { - netdata.enable = true; + netdata.enable = false; jellyfin = { enable = true; @@ -133,35 +154,26 @@ "create mask" = "0644"; "directory mask" = "0755"; }; - - ssdstorage = { - path = "/mnt/ssdstorage"; - browseable = "yes"; - "read only" = "no"; - "guest ok" = "no"; - "create mask" = "0644"; - "directory mask" = "0755"; - }; }; }; }; - security.sudo.extraRules = [{ - users = [ "alex" ]; - commands = [{ - command = "${pkgs.hdparm}/bin/hdparm"; - options = [ "SETENV" "NOPASSWD" ]; - }]; - } + security.sudo.extraRules = [ + { + users = [ "alex" ]; + commands = [{ + command = "${pkgs.hdparm}/bin/hdparm"; + options = [ "SETENV" "NOPASSWD" ]; + }]; + } { users = [ "alex" ]; commands = [{ command = "${pkgs.snapraid}/bin/snapraid"; options = [ "SETENV" "NOPASSWD" ]; }]; - }]; + } + ]; - networking.firewall.enable = false; - - system.stateVersion = "21.05"; + system.stateVersion = "23.05"; }