diff --git a/home/shell/alacritty-gruvbox-dark.yml b/home/shell/alacritty-gruvbox-dark.yml
new file mode 100644
index 0000000..17c9519
--- /dev/null
+++ b/home/shell/alacritty-gruvbox-dark.yml
@@ -0,0 +1,29 @@
+colors:
+  # Default colors
+  primary:
+    # hard contrast: background = '#1d2021'
+    background: '#282828'
+    # soft contrast: background = '#32302f'
+    foreground: '#ebdbb2'
+
+  # Normal colors
+  normal:
+    black:   '#282828'
+    red:     '#cc241d'
+    green:   '#98971a'
+    yellow:  '#d79921'
+    blue:    '#458588'
+    magenta: '#b16286'
+    cyan:    '#689d6a'
+    white:   '#a89984'
+
+  # Bright colors
+  bright:
+    black:   '#928374'
+    red:     '#fb4934'
+    green:   '#b8bb26'
+    yellow:  '#fabd2f'
+    blue:    '#83a598'
+    magenta: '#d3869b'
+    cyan:    '#8ec07c'
+    white:   '#ebdbb2'
diff --git a/home/shell/terminal.nix b/home/shell/terminal.nix
index 6531578..4206fb9 100644
--- a/home/shell/terminal.nix
+++ b/home/shell/terminal.nix
@@ -1,6 +1,22 @@
-{ config, pkgs, ... }:
+{ config, pkgs, lib, ... }:
 
+with pkgs; with lib;
+let
+  yamlToJSON = path: runCommand "yaml.json" { nativeBuildInputs = [ pkgs.ruby ]; } ''
+    ruby -rjson -ryaml -e "puts YAML.load(ARGF).to_json" < ${path} > $out
+  '';
+in
 {
+  # doesn't support font ligatures yet
+  # emoji support needs to be setup
+  # use with tabbed for tab support: tabbed -c alacritty --embed
+  # TODO create PR for adding programs.alacritty.package
+  programs.alacritty = {
+    enable = true;
+    settings = recursiveUpdate {
+    } (trivial.importJSON (yamlToJSON ./alacritty-gruvbox-dark.yml));
+  };
+
   programs.kitty = {
     enable = true;
     font = {