Renato Garcia
← Back

modules/hosts/home-desktop/default.nix

{
  self,
  inputs,
  ...
}:
{
  flake.modules.nixos.home-desktop =
    { pkgs, config, ... }:
    {
      imports = with self.modules.nixos; [
        base
        renatofg
        helena
      ];

      nixpkgs.hostPlatform = "x86_64-linux";

      boot = {
        initrd = {
          availableKernelModules = [
            "nvme"
            "xhci_pci"
            "ahci"
            "usbhid"
            "usb_storage"
            "sd_mod"
          ];
          kernelModules = [ ];
        };
        kernelModules = [ "kvm-amd" ];
        extraModulePackages = [ ];
      };

      services = {
        ollama.enable = true;
        xserver = {
          videoDrivers = [ "nvidia" ];
          displayManager.setupCommands = ''
            ${pkgs.xorg.xrandr}/bin/xrandr --output "HDMI-1" --right-of "HDMI-0"
          '';
        };
      };

      networking = {
        hostName = "home-desktop";
        interfaces.enp4s0.useDHCP = false;
        interfaces.enp5s0.useDHCP = false;
        interfaces.wlp6s0.useDHCP = false;
      };

      hardware = {
        nvidia-container-toolkit.enable = true;
        nvidia = {
          modesetting.enable = true;
          powerManagement.enable = false;
          powerManagement.finegrained = false;
          open = false;
          nvidiaSettings = true;
          package = config.boot.kernelPackages.nvidiaPackages.stable;
        };
      };

      environment.systemPackages = with pkgs; [
        nvitop
      ];

    };

  flake.nixosConfigurations.home-desktop = inputs.nixpkgs.lib.nixosSystem {
    modules = [

      self.modules.nixos.home-desktop

      inputs.home-manager.nixosModules.home-manager

      {
        home-manager = {
          useGlobalPkgs = true;
          users.renatofg = self.modules.homeManager.renatofg;
        };
      }

      {
        nixpkgs = {
          config = {
            nvidia.acceptLicense = true;
            cudaSupport = true;
            allowUnfree = true;
          };
          overlays = [ self.overlays.default ];
        };
      }

    ];
  };
}

Nix