{ pkgs, ... }:
{
  # Configure Nix itself
  nix.settings.experimental-features = [
    "nix-command"
    "flakes"
  ];

  nixpkgs.config.allowUnfree = true;
  nix.settings.auto-optimise-store = true;
  nix.gc = {
    automatic = true;
    dates = "weekly";
    options = "--delete-older-than 7d";
  };

  # Configure users
  users.users.connor = {
    description = "Connor Glosser";
    home = "/home/connor";
    shell = pkgs.fish;
    isNormalUser = true;
    extraGroups = [
      "networkmanager"
      "wheel"
      "nixmgmt"
    ];
  };

  # Configure common packages
  environment.variables.EDITOR = "hx";
  environment.wordlist.enable = true;
  networking.networkmanager.enable = true;
  programs.firefox.enable = true;
  programs.fish.enable = true;

  # Configure text and locale
  fonts.enableDefaultPackages = true;
  fonts.packages = with pkgs; [ source-code-pro ];
  fonts.fontconfig.defaultFonts.monospace = [ "Source Code Pro" ];

  i18n.defaultLocale = "en_US.UTF-8";
  i18n.extraLocaleSettings = {
    LC_ADDRESS = "en_US.UTF-8";
    LC_IDENTIFICATION = "en_US.UTF-8";
    LC_MEASUREMENT = "en_US.UTF-8";
    LC_MONETARY = "en_US.UTF-8";
    LC_NAME = "en_US.UTF-8";
    LC_NUMERIC = "en_US.UTF-8";
    LC_PAPER = "en_US.UTF-8";
    LC_TELEPHONE = "en_US.UTF-8";
    LC_TIME = "en_US.UTF-8";
  };
}