diff --git a/flake.lock b/flake.lock index a5d85aeb..1714f058 100644 --- a/flake.lock +++ b/flake.lock @@ -26,11 +26,11 @@ ] }, "locked": { - "lastModified": 1709677162, - "narHash": "sha256-nIXa0KM3FOVjD3XDDigW12qktQvLG+uKuPg00rjIX/8=", + "lastModified": 1709764752, + "narHash": "sha256-+lM4J4JoJeiN8V+3WSWndPHj1pJ9Jc1UMikGbXLqCTk=", "owner": "nix-community", "repo": "home-manager", - "rev": "bdea159ffab9865f808b8d92fd2bef33521867b2", + "rev": "cf111d1a849ddfc38e9155be029519b0e2329615", "type": "github" }, "original": { @@ -88,11 +88,11 @@ }, "nixpkgs-unstable": { "locked": { - "lastModified": 1709479366, - "narHash": "sha256-n6F0n8UV6lnTZbYPl1A9q1BS0p4hduAv1mGAP17CVd0=", + "lastModified": 1709703039, + "narHash": "sha256-6hqgQ8OK6gsMu1VtcGKBxKQInRLHtzulDo9Z5jxHEFY=", "owner": "nixos", "repo": "nixpkgs", - "rev": "b8697e57f10292a6165a20f03d2f42920dfaf973", + "rev": "9df3e30ce24fd28c7b3e2de0d986769db5d6225d", "type": "github" }, "original": { diff --git a/flake.nix b/flake.nix index eafd3388..9fde06ac 100644 --- a/flake.nix +++ b/flake.nix @@ -103,7 +103,7 @@ ./system ./users/aly ./desktop/gnome - ./modules/virtualization + ./modules/homelab ./modules/steam ./modules/via-qmk ./modules/logitech @@ -160,4 +160,4 @@ ]; }; }; -} \ No newline at end of file +} diff --git a/hosts/mauville/default.nix b/hosts/mauville/default.nix index 899399df..dfe88a7f 100644 --- a/hosts/mauville/default.nix +++ b/hosts/mauville/default.nix @@ -2,7 +2,7 @@ # your system. Help is available in the configuration.nix(5) man page # and in the NixOS manual (accessible by running ‘nixos-help’). -{ config, pkgs, ... }: +{ config, pkgs, lib, ... }: { imports = @@ -10,12 +10,22 @@ ./hardware-configuration.nix ]; - # Bootloader. boot.loader.systemd-boot.enable = true; boot.loader.efi.canTouchEfiVariables = true; networking.hostName = "mauville"; # Define your hostname. + + system.autoUpgrade = { + allowReboot = lib.mkForce true; + dates = lib.mkForce "weekly"; + operation = lib.mkForce "boot"; + }; + + # Delete generations older than 14 days. + nix.gc = { + options = lib.mkForce "--delete-older-than 14d"; + }; # This value determines the NixOS release from which the default # settings for stateful data, like file locations and database versions diff --git a/hosts/mauville/hardware-configuration.nix b/hosts/mauville/hardware-configuration.nix index a2498ee9..b2a585d1 100644 --- a/hosts/mauville/hardware-configuration.nix +++ b/hosts/mauville/hardware-configuration.nix @@ -8,23 +8,28 @@ [ (modulesPath + "/installer/scan/not-detected.nix") ]; - boot.initrd.availableKernelModules = [ "xhci_pci" "thunderbolt" "nvme" "usb_storage" "sd_mod" ]; + boot.initrd.availableKernelModules = [ "xhci_pci" "ahci" "nvme" "usbhid" "sd_mod" ]; boot.initrd.kernelModules = [ ]; - boot.kernelModules = [ "kvm-intel" ]; + boot.kernelModules = [ "kvm-amd" ]; boot.extraModulePackages = [ ]; fileSystems."/" = - { device = "/dev/disk/by-uuid/ed744c02-8854-4f1a-8e75-ed15f02775e3"; + { device = "/dev/disk/by-uuid/c4217c88-3101-434b-8321-58e2ac89527c"; fsType = "ext4"; }; fileSystems."/boot" = - { device = "/dev/disk/by-uuid/37BB-86B6"; + { device = "/dev/disk/by-uuid/3445-B2A0"; fsType = "vfat"; }; + fileSystems."/mnt/Media" = + { device = "/dev/disk/by-uuid/f7e9e6d6-2bf6-429a-aaf0-49b55d53fc83"; + fsType = "ext4"; + }; + swapDevices = - [ { device = "/dev/disk/by-uuid/7a33dbc2-73f7-490b-9aa6-382e119a997e"; } + [ { device = "/dev/disk/by-uuid/26094ada-7ba4-4437-bacb-b3cdf6c3397b"; } ]; # Enables DHCP on each ethernet and wireless interface. In case of scripted networking @@ -32,8 +37,8 @@ # still possible to use this option, but it's recommended to use it in conjunction # with explicit per-interface declarations with `networking.interfaces..useDHCP`. networking.useDHCP = lib.mkDefault true; - # networking.interfaces.wlp0s20f3.useDHCP = lib.mkDefault true; + # networking.interfaces.enp4s0.useDHCP = lib.mkDefault true; nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux"; - hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware; + hardware.cpu.amd.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware; } diff --git a/modules/homelab/default.nix b/modules/homelab/default.nix index 0730ab8d..fc3b5a62 100644 --- a/modules/homelab/default.nix +++ b/modules/homelab/default.nix @@ -1,36 +1,36 @@ { config, pkgs, ... }: + { + imports = [ + ../virtualization + ]; + # Open TCP ports for audiobookshelf, plex-server, and transmission-server. - networking.firewall.allowedTCPPorts = [ 13378 32400 9091 ]; + networking.firewall.allowedTCPPorts = [ 51413 13378 32400 9091 ]; + networking.firewall.allowedUDPPorts = [ 51413 ]; + virtualisation = { - podman = { - enable = true; - - # Create a `docker` alias for podman, to use it as a drop-in replacement - dockerCompat = true; - - # Required for containers under podman-compose to be able to talk to each other. - defaultNetwork.settings.dns_enabled = true; - }; - oci-containers = { - backend = "podman"; - }; - oci-containers.containers = { audiobookshelf = { ports = ["0.0.0.0:13378:80"]; image = "ghcr.io/advplyr/audiobookshelf:latest"; + volumes = [ + "/mnt/Media:/Media" + ]; }; plex-server = { ports = ["0.0.0.0:32400:32400"]; image = "plexinc/pms-docker:public"; + volumes = [ + "/mnt/Media:/Media" + ]; }; transmission-server = { - ports = ["0.0.0.0:9091:9091"]; + ports = ["0.0.0.0:9091:9091" "0.0.0.0:51413:51413"]; image = "linuxserver/transmission:latest"; - # volumes = [ - # "/home/aly/transmission:/config" - # ]; + volumes = [ + "/mnt/Media:/Media" + ]; }; }; }; diff --git a/modules/virtualization/default.nix b/modules/virtualization/default.nix index d7fb2ac2..6feaea6b 100644 --- a/modules/virtualization/default.nix +++ b/modules/virtualization/default.nix @@ -18,5 +18,8 @@ # Required for containers under podman-compose to be able to talk to each other. defaultNetwork.settings.dns_enabled = true; }; + oci-containers = { + backend = "podman"; + }; }; } \ No newline at end of file