feat(users): Add chimera.users.coded.enable

This provides Coded an option to easily springboard setup for a new
system

Change-Id: I909f322ed65f684fb95eb0bf839186eaf4de0d78
Reviewed-on: https://git.clicks.codes/c/Chimera/NixFiles/+/761
Tested-by: Samuel Shuert <coded@clicks.codes>
Reviewed-by: Samuel Shuert <coded@clicks.codes>
diff --git a/homes/x86_64-linux/coded@shorthair/default.nix b/homes/x86_64-linux/coded@shorthair/default.nix
index ace98f3..559333c 100644
--- a/homes/x86_64-linux/coded@shorthair/default.nix
+++ b/homes/x86_64-linux/coded@shorthair/default.nix
@@ -19,174 +19,67 @@
   ...
 }:
 {
+  chimera.users.coded.enable = true;
 
-  home.packages = [ pkgs.foliate ];
+  chimera.waybar.modules.temperature.hwmonPath = "/sys/class/hwmon/hwmon4/temp1_input";
 
-  chimera = {
-    waybar.modules.temperature.hwmonPath = "/sys/class/hwmon/hwmon4/temp1_input";
-    waybar.modules.backlight.enable = true;
+  chimera.niri = {
+    enable = true;
 
-    nextcloud.enable = true;
-
-    shell = {
-      zsh.enable = true;
-
-      starship.enable = true;
-
-      rebuildFlakePath = "/home/coded/Programming/Chimera/Nix/NixFiles";
-
-      defaultAliases.enable = true;
-      usefulPackages.enable = true;
-
-      replacements = {
-        defaultEnable = true;
-        bat.enable = false;
-        atuin.enableUpArrow = true;
+    monitors = {
+      "DP-1" = {
+        mode = {
+          width = 1920;
+          height = 1080;
+          refresh = 165.;
+        };
+        position = {
+          x = 0;
+          y = 0;
+        };
       };
-    };
-
-    git = {
-      delta.enable = true;
-      stgit.enable = true;
-      gitReview.enable = true;
-      auth.clicksUsername = "coded";
-      gpg.enable = true;
-    };
-
-    touchpad.enable = true;
-    input.touchpad.scrolling.natural = true;
-
-    niri = {
-      enable = true;
-
-      monitors = {
-        "DP-1" = {
-          mode = {
-            width = 1920;
-            height = 1080;
-            refresh = 165.;
-          };
-          position = {
-            x = 0;
-            y = 0;
-          };
-          variable-refresh-rate = true;
+      "DP-2" = {
+        mode = {
+          width = 1920;
+          height = 1080;
+          refresh = 165.;
         };
-        "DP-2" = {
-          mode = {
-            width = 1920;
-            height = 1080;
-            refresh = 165.;
-          };
-          position = {
-            x = 1920;
-            y = 0;
-          };
-          variable-refresh-rate = true;
+        position = {
+          x = 1920;
+          y = 0;
         };
-        "HDMI-A-1" = {
-          mode = {
-            width = 3840;
-            height = 2160;
-            refresh = 60.;
-          };
-          position = {
-            x = 0;
-            y = -2160;
-          };
+      };
+      "HDMI-A-1" = {
+        mode = {
+          width = 3840;
+          height = 2160;
+          refresh = 60.;
+        };
+        position = {
+          x = 0;
+          y = -2160;
         };
       };
     };
-
-    # hyprland = {
-    #   enable = true;
-
-    #   monitors = [
-    #     "DP-1,1920x1080@165,0x0,1"
-    #     "DP-2,1920x1080@165,1920x0,1"
-    #     "HDMI-A-1,3840x2160@60,0x-2160,1"
-    #   ];
-    # };
-
-    # hyprland.hyprpaper = {
-    #   splash = {
-    #     enable = true;
-    #     offset = -0.6;
-    #   };
-    # };
-
-    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.simple-tab-groups ];
-    };
-
-    games.minecraft.enable = true;
-
-    editor.neovim.enable = true;
-    editor.editorconfig.enable = true;
-
-    theme.font.nerdFontGlyphs.enable = true;
-    theme.wallpaper = ./wallpaper.png;
-    theme.catppuccin = {
-      enable = true;
-      style = "Macchiato";
-      color = "Blue";
-    };
-
-    yubikey.enable = true;
   };
 
+  chimera.theme.wallpaper = ./wallpaper.png;
 
-  programs.git.includes = [
-  {
-    condition = "gitdir:~/programming/Chimera";
+  # SSH Config
+  programs.ssh = {
+    enable = true;
 
-    contents = {
-      user.name = "Samuel Shuert";
-      user.email = "coded@clicks.codes";
+    includes = [ "~/.ssh/config.d/*" ];
+
+    matchBlocks = {
+      "ssh.clicks.codes" = {
+        port = 29418;
+        identityFile = "~/.ssh/id_clicks_git";
+      };
+      "github.com" = {
+        user = "git";
+        identityFile = [ "~/.ssh/github_sk_nano" ];
+      };
     };
-  }
-  {
-    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 = "coded@coded.codes";
-    };
-  }
-  ];
+  };
 }
diff --git a/homes/x86_64-linux/coded@shorthair/openrgb/default.nix b/homes/x86_64-linux/coded@shorthair/openrgb/default.nix
deleted file mode 100644
index 7f5688e..0000000
--- a/homes/x86_64-linux/coded@shorthair/openrgb/default.nix
+++ /dev/null
@@ -1,4 +0,0 @@
-{ pkgs, ... }:
-{
-  home.packages = [ pkgs.openrgb ];
-}
diff --git a/modules/home/users/coded/README.md b/modules/home/users/coded/README.md
new file mode 100644
index 0000000..8374723
--- /dev/null
+++ b/modules/home/users/coded/README.md
@@ -0,0 +1,8 @@
+# coded's chimera options
+
+## What is this?
+
+`coded` is a `chimera` user with multiple machines. Some of his options should
+be shared across all of his machines, these are those options.
+
+## How can I use this?
diff --git a/modules/home/users/coded/default.nix b/modules/home/users/coded/default.nix
new file mode 100644
index 0000000..9167ae8
--- /dev/null
+++ b/modules/home/users/coded/default.nix
@@ -0,0 +1,198 @@
+{
+  inputs,
+  config,
+  lib,
+  pkgs,
+  ...
+}:
+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 = {
+      delta.enable = true;
+      stgit.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.games.minecraft.enable = true;
+
+    chimera.editor = {
+      neovim.enable = true;
+      editorconfig.enable = true;
+      emacs = {
+        enable = true;
+        defaultEditor = false;
+      };
+    };
+
+    chimera.theme.font.nerdFontGlyphs.enable = true;
+
+    chimera.theme.catppuccin = {
+      enable = true;
+      style = "Macchiato";
+      color = "Blue";
+    };
+
+    chimera.yubikey.enable = true;
+
+    # 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";
+        };
+      }
+    ];
+
+    # 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 ];
+  };
+}