{ config, lib, pkgs, ... }:

{
  system.stateVersion = "20.03";

  boot = {
    loader = {
      systemd-boot.enable = true;
      efi.canTouchEfiVariables = true;
    };
    initrd = {
      availableKernelModules = [ "xhci_pci" "ahci" "usbhid" "sd_mod" "rtsx_usb_sdmmc" ];
      kernelModules = [ ];
    };
    kernelModules = [ "kvm-intel" ];
    extraModulePackages = [ ];
  };

  fileSystems."/" =
    { device = "/dev/disk/by-label/nixos";
      fsType = "ext4";
    };

  fileSystems."/boot" =
    { device = "/dev/disk/by-label/BOOT";
      fsType = "vfat";
    };

  hardware = {
    bluetooth.enable = true;

    cpu.intel.updateMicrocode = true;

    opengl = {
      driSupport = true;
      driSupport32Bit = true;
    };

    pulseaudio.support32Bit = true;
  };

  networking = {
    macvlans = {
      extif0 = {
        interface = "enp3s0";
        mode = "bridge";
      };
    };

    interfaces = {
      enp3s0 = {
        useDHCP = false;
      };
      
      extif0 = {
        # output of: echo spark-extif0|md5sum|sed 's/^\(..\)\(..\)\(..\)\(..\)\(..\).*$/02:\1:\2:\3:\4:\5/'
        macAddress = "02:9c:b7:b6:ad:c4";
      };
    };
  };

  services.xserver.videoDrivers = [ "intel" ];
  nix.maxJobs = lib.mkDefault 4;
  powerManagement.cpuFreqGovernor = lib.mkDefault "powersave";
}