{
  config,
  pkgs,
  ...
}:
# https://nix-community.github.io/home-manager/options.html
let
  my-deps = {
    notify-send = "${pkgs.libnotify}/bin/notify-send";
    playerctl = "${pkgs.playerctl}/bin/playerctl";
    grim = "${pkgs.grim}/bin/grim";
    slurp = "${pkgs.slurp}/bin/slurp";
    amixer = "${pkgs.alsa-utils}/bin/amixer";
    swaybg = "${pkgs.swaybg}/bin/swaybg";
    terminal = "${config.programs.terminal}/bin/${config.programs.terminal.pname}";
    chafa = "${pkgs.chafa}/bin/chafa";
    exiftool = "${pkgs.exiftool}/bin/exiftool";
    wc = "${pkgs.coreutils}/bin/wc";
    jq = "${pkgs.jq}/bin/jq";
    hyprctl = "${pkgs.hyprland}/bin/hyprctl";
    xargs = "${pkgs.findutils}/bin/xargs";
    menu = "${config.programs.menu.package}${config.programs.menu.dmenuCommand}";
    fileman = "${pkgs.pcmanfm}/bin/pcmanfm";
    gawk = "${pkgs.gawk}/bin/awk";
    glow = "${pkgs.glow}/bin/glow";
    ffmpegthumbnailer = "${pkgs.ffmpegthumbnailer}/bin/ffmpegthumbnailer";
  };
  # lf-sixel = pkgs.callPackage ../custom/lf-sixel/. {};
in {
  imports = [
    ./modules/terminal.nix
    ./modules/scripts.nix
    ./modules/email.nix
    ./modules/editor.nix
    ./modules/mpd.nix
    ./modules/menu.nix
    ./modules/scripts.nix

    ./programs/graphical.nix
    ./programs/scripts.nix
    ./programs/neovim/.
    ./programs/git.nix
    ./programs/lf/.
  ];

  programs.home-manager.enable = true;

  home.homeDirectory = "/home/${config.home.username}";

  xdg.userDirs.enable = true;

  home.packages = with pkgs; [
    libnotify
    dig
    jq
    fx
    mosh
    ripgrep
    usbutils
    wl-clipboard
    du-dust
    htop
    libsixel
    yt-dlp
    playerctl
    neofetch
    tree
    ansible
  ];

  programs.starship.enable = true;
  programs.zsh = {
    enable = true;
  };

  services.udiskie = {
    enable = true;
    notify = true;
  };

  programs.rbw = {
    enable = true;
    settings = {
      email = "tristan@tristans.cloud";
      base_url = "https://vault.tristans.cloud";
      pinentry = "gnome3";
    };
  };

  programs.ssh.enable = true;
  programs.ssh.matchBlocks = {
    "git.tristans.cloud" = {
      user = "git";
      hostname = "100.116.82.65";
      port = 2222;
    };
    "alpine" = {
      hostname = "100.116.82.65";
      user = "tristan";
    };
  };

  home.file.".icons/default".source = "${pkgs.vanilla-dmz}/share/icons/Vanilla-DMZ";

  programs.helix = {
    enable = true;
    languages = {
      nix = {
        auto-format = true;
        language-server = {
          command = "${pkgs.rnix-lsp}/bin/rnix-lsp";
        };
      };
      go = {
        auto-format = true;
        language-server = {
          command = "${pkgs.gopls}/bin/gopls";
        };
      };
      typescript = {
        auto-format = true;
        language-server = {
          command = "${pkgs.nodePackages.typescript-language-server}/bin/typescript-language-server";
        };
      };
    };
  };

  home.file.".config/pipewire/pipewire.conf.d/raop-discover.conf".text = ''
    context.modules = [
      {
        name = libpipewire-module-raop-discover
        args = { }
      }
    ]
  '';
  services.kdeconnect = {
    enable = true;
    indicator = true;
  };

  programs.pandoc = {
    enable = true;
    defaults = {
      metadata = {
        author = "Tristan Beedell";
      };
      pdf-engine = "xelatex";
    };
  };

  programs.direnv.enable = true;
}
