{
  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" ];
      }
    ];

    # Shell Aliases
    home.shellAliases.chat = "iamb";

    # 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 pkgs.iamb pkgs.scarab ];
  };
}
>>>>>>> Conflict 1 of 1 ends
