{
  config,
  pkgs,
  inputs,
  lib,
  nixpkgs-nixos-unstable-and-unfree,
  ...
}: {
  networking.hostName = "foureighty";

  imports = [
    inputs.nixos-hardware.nixosModules.lenovo-thinkpad-t480
    ./hardware-configuration.nix
    ./thermal.nix
    ../../backups.nix
    ../../boot.nix
    ../../gfx-intel-dri2.nix
    ../../git
    ../../gnome
    ../../gui
    ../../libvirt.nix
    ../../mercurial
    ../../vim
    ../../sdr.nix
  ];

  fileSystems."/" = {options = ["compress=zstd"];};

  boot.binfmt.emulatedSystems = ["aarch64-linux"];
  boot.plymouth = {
    enable = true;
    logo = ./boot.png;
  };

  zramSwap = {
    enable = true;
    algorithm = "zstd";
    memoryPercent = 75;
  };

  time.timeZone = "Europe/London";

  virtualisation.kvmgt = {
    enable = true;
    device = "0000:00:02.0";
  };
  hardware.trackpoint.enable = true;
  services = {
    hardware.bolt.enable = true;

    xserver = {
      libinput = {
        enable = true;
        touchpad = {
          tapping = true;
          naturalScrolling = false;
          middleEmulation = false;
          disableWhileTyping = true;
          buttonMapping = "1 0 3 4 5 6 7 8 9 10";
        };
        mouse = {
          middleEmulation = false;
          buttonMapping = "1 0 3 4 5 6 7 8 9 10";
        };
      };
    };
    fprintd = {enable = true;};
  };

  programs.ccache.enable = true;
  hardware.opengl.extraPackages = with pkgs; [libva];
  programs.steam.enable = true;
  nixpkgs.config.allowUnfreePredicate = pkg:
    builtins.elem (lib.getName pkg) [
      "spotify"
      "steam"
      "steam-original"
      "steam-runtime"
      "steam-run"
      "vscode-with-extensions"
      "vscode"
    ];

  home-manager.users.cyryl = {...}: {
    imports = [../../home-manager/programs/alacritty.nix ../../gui/vscode.nix];
    home.packages = with inputs.nixpkgs-nixos-unstable.legacyPackages."x86_64-linux";
      (with pkgs; [lutris])
      ++ (with inputs.endless-sky.legacyPackages."x86_64-linux"; [endless-sky]);
  };
}