{ config, lib, pkgs, ... }:

# Doom emacs overlay
let

  doom-emacs = pkgs.callPackage (builtins.fetchTarball {
    url = https://github.com/vlaci/nix-doom-emacs/archive/master.tar.gz;
  }) {
    doomPrivateDir = ./doom.d;
  };

  home-manager = builtins.fetchGit {
    url = "https://github.com/rycee/home-manager.git";
    rev = "";
  };

in

{
  imports = [
    (import "${home-manager}/nixos")
  ];
  
  # User packages
  home.packages = [
    # Text editors
    doom-emacs
    pkgs.neovim
    # Terminals
    pkgs.tmux
    pkgs.tmuxp
    # Development
    pkgs.git
    pkgs.direnv
    pkgs.lorri
  ];

# Create coolneng user
  users.users.coolneng = {
    isNormalUser = true;
    home = "/home/coolneng";
    extraGroups = [ "wheel" "video" "audio" ];
    shell = "/run/current-system/sw/bin/fish";
  };

  # Enable home manager
  programs.home-manager.enable = true;

  # Terminal emulator
  programs.kitty = {
    enable = true;
    font.name = "Go Mono 11";
    settings = {
      repaint_delay = 30;
      input_delay = 10;
      enable_audio_bell = false;
      foreground = "#c6c8d1";
      background = "#161821";
      color0 = "#161821";
      color8 = "#6b7089";
      color1 = "#e27878";
      color9 = "#e98989";
      color2 = "#b4be82";
      color10= "#c0ca8e";
      color3 = "#e2a478";
      color11= "#e9b189";
      color4 = "#84a0c6";
      color12= "#91acd1";
      color5 = "#a093c7";
      color13= "#ada0d3";
      color6 = "#89b8c2";
      color14= "#95c4ce";
      color7 = "#c6c8d1";
      color15= "#d2d4de";
    };
  };

  # Shell
  home.sessionVariables = {
    # fff colors [0-9]
    FFF_COL1 = 4;
    FFF_COL2 = 8;
    # fff favourites;
    FFF_FAV1 = "$HOME/Documents/Uni";
    FFF_FAV2 = "$HOME/Documents/Papers";
    FFF_FAV3 = "$HOME/Documents/Books/Academic";
    FFF_FAV4 = "$HOME/Documents/Education";
  };

  programs.fish = {
    enable = true;
    shellAbbrs = {
      la = "ls -lA";
      f = "fff";
      vim = "nvim";
    };
    shellAliases = {
      wlan = "iw dev wlp2s0 scan | grep SSID";
      bc = "bc -l";
      docker = "podman";
      docker-compose = "podman-compose";
    };
    plugins = [
      {
        name = "colored-man";
        src = builtins.fetchGit {
          name = "fish-colored-man";
          url = "https://github.com/decors/fish-colored-man";
          rev = "c1e9db7765c932587b795d6c8965e9cff2fd849a";
        };
      }
      
      {
        name = "prompt-theme";
        src = builtins.fetchGit {
          name = "fish-colored-man";
          url = "https://github.com/oh-my-fish/theme-nai";
          rev = "9616e644e95fe79eb59b8c9d77fe44b9f096db2f";
        };
      }
    ];
  };

  # Emacs startup
  home.file.".emacs.d/init.el".text = ''
      (load "default.el")
  '';
}