{ config, pkgs, ... }: 

{
    # Import other configuration modules
    # (hardware-configuration.nix is autogenerated upon installation)
    # paths in nix expressions are always relative the file which defines them
    imports =
        [
            ./hardware-configuration.nix
        ];

    boot.loader = {
       systemd-boot.enable = true;
    };

    boot.initrd.luks.devices = {
       crypt-root = {
          device = "/dev/disk/by-label/luks";
          preLVM = true;
       };
    };

    # Enable 32 Bit libraries for applications like Steam
    hardware.opengl.driSupport32Bit = true;

    # Name your host machine
    networking.hostName = "NixOS"; 

    # Set your time zone.
    time.timeZone = "America/Denver";

    # Enter keyboard layout
    services.xserver.layout = "us";

    # Enable flatpak
    services.flatpak.enable = true;

    # Enable PackageKit for Discover
    services.packagekit.enable = true;

    # Enable fwupd
    services.fwupd.enable = true;

    # Define user accounts
    users.extraUsers = 
        { 
            aaronh = 
            {
                home = "/home/aaronh";
                extraGroups = [ "wheel" "networkmanager" ];
                isNormalUser = true;
            };
        };
    
    # Install some packages
    environment.systemPackages = 
            with pkgs; 
            [
                firefox
                fish
                flatpak
                git
                thunderbird
                tilix
            ]; 
 
    # Enable the OpenSSH daemon
    services.openssh.enable = true;
    
    # Enable Pipewire
    security.rtkit.enable = true;
    services.pipewire = {
       enable = true;
       alsa.enable = true;
       alsa.support32Bit = true;
       pulse.enable = true;
    };

    # GNOME
    services.xserver.enable = true;
    services.xserver.displayManager.gdm.enable = true;
    services.xserver.desktopManager.gnome.enable = true;

    # Disable GNOME applications
    environment.gnome.excludePackages = [ pkgs.gnome.cheese pkgs.gnome-photos pkgs.gnome.gnome-music pkgs.gnome.gnome-terminal pkgs.gnome.gedit pkgs.epiphany pkgs.evince pkgs.gnome.gnome-characters pkgs.gnome.totem pkgs.gnome.tali pkgs.gnome.iagno pkgs.gnome.hitori pkgs.gnome.atomix pkgs.gnome-tour pkgs.gnome.geary ];

    # System 
    system.autoUpgrade.enable = true;
    system.autoUpgrade.allowReboot = true;

}