{ inputs, configDir, config, pkgs, lib, ... }: {
  imports = [ ../common/home.nix ];

  # This value determines the NixOS release from which the default
  # settings for stateful data, like file locations and database versions
  # on your system were taken. It‘s perfectly fine and recommended to leave
  # this value at the release version of the first install of this system.
  # Before changing this value read the documentation for this option
  # (e.g. man configuration.nix or on https://nixos.org/nixos/options.html).
  home.stateVersion = "23.11"; # Did you read the comment?

  home.packages = let
    packages = with pkgs; [
      pavucontrol
      pamixer
      picom
      rofi
      notify-desktop
      pass
      just
      zathura
      libvterm
      texliveFull
      flameshot
      brightnessctl
      pinentry-gtk2
      bluez5-experimental
      bluez-tools
      blueman
      dmenu
      pipewire
      dconf
      mu
      isync
      openssl
      meson
      glib
      stow
      syncthing
      nitrogen
      redshift
      networkmanager
      nixfmt
      hurl
      gh
      libnotify
      tokei
      eza
      typst
      typst-live
      gdb
      ccls
      clang-tools
      valgrind
      fzf
      rofi
      rofi-bluetooth
      docker
      awscli

      discord
      steam
      bitwarden
      nautilus
      obs-studio
      vlc
      easyeffects
      thunderbird
      signal-desktop
      kdeconnect
      (prismlauncher.override { jdks = [ jdk22 jdk8 ]; })
      tidal-hifi
      zotero
      deadd-notification-center
      mullvad-browser
      networkmanagerapplet
      pasystray
      arandr
      inkscape
      zoom-us
      gimp
      libreoffice
      peek

      emacs
      alacritty

      mu
      msmtp

      semgrep

      ruff
      ruff-lsp

      irony-server

      jdk22

      noto-fonts
      fira-code
      open-sans
      inter
      roboto-mono
      jetbrains-mono
      noto-fonts-cjk-sans
      libertine
      roboto
    ];
    emacsPackages = with pkgs.emacsPackages; [ mu4e ];
    pythonPackages = with pkgs.python312Packages; [ python-lsp-server ];
  in packages ++ emacsPackages ++ pythonPackages;

  home.sessionPath = [
    "$HOME/.local/share/racket/8.14/bin/" # This has to be updated every time Racket updates :(
  ];

  xresources.properties = {
    "Xft.antialias" = true;
    "Xft.rgba" = "rgb"; # type of anti-aliasing
    "Xft.hinting" = 1; # font hinting
    "Xft.hintstyle" = "hintslight";
  };

  ### Services

  # Compositor
  services.picom = {
    enable = true;
    backend = "glx";
    activeOpacity = 1;
    inactiveOpacity = 0.9;
    settings = {
      blur = {
        method = "kawase";
        size = 20;
        deviation = 5.0;
      };
    };
  };

  services.emacs = {
    enable = true;
    defaultEditor = true;
  };

  services.pasystray.enable = true;

  services.redshift = {
    enable = true;
    tray = true;
    dawnTime = "6:00-7:00";
    duskTime = "18:00-19:00";
    temperature = {
      day = 6500;
      night = 4500;
    };
  };

  ### Programs
  programs.home-manager.enable = true;
  programs.mu.enable = true;

  programs.alacritty = {
    enable = true;
    settings = {
      shell = "fish";
      font.size = 5;
      font.normal = {
        family = "JetBrains Mono";
        style = "SemiBold";
      };
      font.bold = {
        family = "JetBrains Mono";
        style = "Bold";
      };
      font.italic = {
        family = "JetBrains Mono";
        style = "Italic";
      };
      font.bold_italic = {
        family = "JetBrains Mono";
        style = "Bold Italic";
      };
    };
  };

  programs.fish = {
    enable = true;
    shellAliases = {
      psax = "ps -ax | grep -i";
      ls = "eza";
      ll = "eza --all --long";
      e = "emacs";
      ed = "emacs --daemon";
      ec = ''emacsclient -n -c -a ""'';
    };
  };

  programs.git = {
    enable = true;
    userName = "Lucas Sta Maria";
    userEmail = "lucas@priime.dev";
    signing = {
      key = "2EAF5BA156A36810B057BF61F07FB16A826E3B47";
      signByDefault = true;
    };
    extraConfig = {
      pull.rebase = true;
      github.user = "priime0";
      credential.helper = "store";
    };
  };

  programs.gh = {
    enable = true;
    settings.editor = "emacsclient";
  };

  programs.firefox = {
    enable = true;
    policies = {
      WebsiteFilter = {
        Block = [ "*://*.facebook.com/" ];
      };
    };
  };
}
