{
  # Snowfall Lib provides a customized `lib` instance with access to your flake's library
  # as well as the libraries available from your flake's inputs.
  lib,
  # An instance of `pkgs` with your overlays and packages applied is also available.
  pkgs,
  # You also have access to your flake's inputs.
  inputs,

  # Additional metadata is provided by Snowfall Lib.
  home, # The home architecture for this host (eg. `x86_64-linux`).
  target, # The Snowfall Lib target for this home (eg. `x86_64-home`).
  format, # A normalized name for the home target (eg. `home`).
  virtual, # A boolean to determine whether this home is a virtual target using nixos-generators.
  host, # The host name for this home.

  # All other arguments come from the home home.
  config,
  ...
}:
{
  home.file.".snowfall.systemname".text = ''
    greylag
  '';

  programs.gpg.scdaemonSettings = {
    reader-port = "Yubico Yubi";
  };

  programs.git.extraConfig.alias = {
    recommit = "!git commit --verbose -eF $(git rev-parse --git-dir)/COMMIT_EDITMSG";
  	graph = "log --graph --oneline --decorate";
  	hash = "rev-parse HEAD";
  	personal = "config user.email skyler3665@gmail.com";
	  clicks = "config user.email minion@clicks.codes";
	  collabora = "config user.email skyler.grey@collabora.com";
  };

  programs.git.extraConfig.user = {
    name = "Skyler Grey";
    signingkey = "7C868112B5390C5C";
  };

  chimera = {
    hyprland.enable = true;
    hyprland.hyprpaper.splash.enable = true;

    touchpad.enable = true;

    hyprland.monitors = [
      "eDP-1,preferred,0x0,1"
      "desc:Dell Inc. DELL P2715Q V7WP95AV914L,preferred,2256x-1956,1,transform,1"
      "desc:AOC 2460G5 0x00023C3F,preferred,336x-1080,1"
    ];

    theme.wallpaper = ./wallpaper.png;
    theme.catppuccin = {
      enable = true;
      style = "Latte";
      color = "Maroon";
    };

    browser.chromium = {
      enable = true;
      extensions = {
        ublockOrigin.enable = true;
        bitwarden.enable = true;
      };
    };

    browser.firefox = {
      enable = true;
      extensions = {
        bitwarden.enable = true;
        youtube = {
          sponsorBlock.enable = true;
          returnDislike.enable = true;
          deArrow.enable = true;
        };
        reactDevTools.enable = true;
        adnauseam.enable = true;
      };
      extraExtensions = [ config.nur.repos.rycee.firefox-addons.sidebery ];
    };

    shell.bash.enable = true;
    shell.defaultAliases.enable = true;

    theme.font.nerdFontGlyphs.enable = true;

    editor.ed = {
      enable = true;
      prompt = ":";
      defaultEditor = false;
    };

    editor.neovim.enable = true;

    editor.emacs = {
      enable = true;
      defaultEditor = false;
    };

    input.keyboard = {
      layout = "us";
      variant = "dvorak";
    };

    input.mouse.scrolling.natural = true;

    git = {
      delta.enable = true;
      stgit.enable = true;
      gitReview.enable = true;
      auth.clicksUsername = "minion";
      gpg.enable = true;
    };
  };
}
