{
  inputs,
  config,
  lib,
  pkgs,
  system,
  ...
}:
let
  cfg = config.chimera.users.coded;
in {
  options.chimera.users.coded.enable = lib.mkEnableOption "Enable Chimera options for coded";

  config = lib.mkIf cfg.enable {
    # Chimera Config
    chimera.nextcloud.enable = true;

    chimera.shell.rebuildFlakePath = "/home/coded/Programming/Chimera/Nix/NixFiles";

    chimera.shell = {
      zsh.enable = true;
      starship.enable = true;

      defaultAliases.enable = true;
      usefulPackages.enable = true;

      replacements = {
        defaultEnable = true;
        bat.enable = false;
        atuin.enableUpArrow = true;
      };
    };

    chimera.git = {
      radicle = {
        enable = true;
        unstable = true;
      };
      jj.enable = true;
      gitReview.enable = true;
      auth.clicksUsername = "coded";
      gpg.enable = true;
    };

    chimera.input.touchpad = {
      enable = true;
      scrolling.natural = true;
    };

    chimera.browser.firefox = {
      enable = true;
      extensions = {
        bitwarden.enable = true;
        youtube = {
          sponsorBlock.enable = true;
          returnDislike.enable = true;
          deArrow.enable = true;
        };
        reactDevTools.enable = true;
        adnauseam.enable = true;
      };
      search = {
        enable = true;
        extensions.enable = true;
        bookmarks.enable = true;
        engines = [
          "Kagi"
          "MDN"
          "NixOS Options"
          "NixOS Packages"
          "Home-Manager Options"
          "Noogle"
          "GitHub"
          "Arch Wiki"
          "Gentoo Wiki"
        ];
      };
      extraExtensions = [
        config.nur.repos.rycee.firefox-addons.refined-github
        config.nur.repos.rycee.firefox-addons.new-tab-override
      ];
    };

    chimera.browser.chromium.enable = true;

    chimera.games = {
        minecraft.enable = true;
        itch.enable = true;
    };
    chimera.editor = {
      neovim.enable = true;
      editorconfig.enable = true;
      emacs = {
        enable = true;
        defaultEditor = false;
      };
    };
    chimera.code.zed.enable = true;

    chimera.theme.font.nerdFontGlyphs.enable = true;

    chimera.theme.catppuccin = {
      enable = true;
      style = "Macchiato";
      color = "Blue";
    };

    chimera.yubikey.enable = true;

    chimera.niri.startupCommands = [
      {
        command = [ "nextcloud" ];
      }
    ];

    # Programming Folder Creation
    home.file = {
      "Programming/README.md" = {
        text = ''
        # Structure
        [Org]/[Language]/[project]

        Both Org and Language should be capitalized however project may follow any name scheme.
        '';
      };
      "Programming/Personal/README.md" = {
        text = ''
        # What is this directory for?
        This directory stores all my personal programming projects

        # Git config modifications
        user.name = "Samuel Shuert"
        user.email = "me@thecoded.prof"
        '';
      };
      "Programming/Auxolotl/README.md" = {
        text = ''
        # What is this directory for?
        This directory stores all Auxolotl related programming projects

        # Git config modifications
        user.name = "Samuel Shuert"
        user.email = "me@thecoded.prof"
        '';
      };
      "Programming/Chimera/README.md" = {
        text = ''
        # What is this directory for?
        This directory stores all Chimera related programming projects

        # Git config modifications
        user.name = "Samuel Shuert"
        user.email = "me@thecoded.prof"
        '';
      };
      "Programming/Clicks/README.md" = {
        text = ''
        # What is this directory for?
        This directory stores all Clicks related programming projects

        # Git config modifications
        user.name = "Samuel Shuert"
        user.email = "coded@clicks.codes"
        '';
      };
    };

    # Git Config
    programs.git.includes = [
      {
        condition = "gitdir:~/Programming/Chimera/**";

        contents = {
          user.name = "Samuel Shuert";
          user.email = "me@thecoded.prof";
        };
      }
      {
        condition = "gitdir:~/Programming/Clicks/**";

        contents = {
          user.name = "Samuel Shuert";
          user.email = "coded@clicks.codes";
        };
      }
      {
        condition = "gitdir:~/Programming/Personal/**";

        contents = {
          user.name = "Samuel Shuert";
          user.email = "me@thecoded.prof";
        };
      }
      {
        condition = "gitdir:~/Programming/Auxolotl/**";

        contents = {
          user.name = "Samuel Shuert";
          user.email = "me@thecoded.prof";
        };
      }
    ];

    programs.git.extraConfig.user = {
      name = "Samuel Shuert";
      signingkey = "00E944BFBE99ADB5";
    };

    # Additional Kitty Config
    programs.kitty.extraConfig = ''
      map kitty_mod+enter launch --cwd=current --type=window
      map kitty_mod+t     launch --cwd=current --type=tab
    '';

    # Additional Packages
    home.packages = [ pkgs.foliate pkgs.openrgb inputs.zen-browser.packages."${system}".specific ];
  };
}
