{
  lib,
  osConfig,
  pkgs,
  ...
}: let
  userConfig = osConfig.host.users.leyla;
  hardware = osConfig.host.hardware;
in {
  imports = [
    ./vscode.nix
    ./firefox.nix
  ];

  nixpkgs.config = {
    allowUnfree = true;
  };

  home = {
    packages =
      lib.lists.optionals userConfig.isTerminalUser (
        with pkgs; [
          # command line tools
          sox
          yt-dlp
          ffmpeg
          imagemagick
        ]
      )
      ++ (
        lib.lists.optionals userConfig.isDesktopUser (
          (with pkgs; [
            # helvetica font
            aileron

            gnomeExtensions.dash-to-dock

            # development tools
            dbeaver-bin
            bruno
            proxmark3
          ])
          ++ (
            lib.lists.optionals hardware.directAccess.enable (with pkgs; [
              #foss platforms
              signal-desktop-bin
              bitwarden
              ungoogled-chromium
              libreoffice
              inkscape
              gimp
              krita
              freecad
              # cura
              # kicad-small
              makemkv
              onionshare
              # rhythmbox
              (lib.mkIf hardware.graphicsAcceleration.enable obs-studio)
              # wireshark
              # rpi-imager
              # fritzing
              mfoc
              tor-browser
              anki
              pdfarranger
              calibre
              qbittorrent

              # proprietary platforms
              discord
              obsidian
              # steam
              (lib.mkIf hardware.graphicsAcceleration.enable davinci-resolve)

              # development tools
              # androidStudioPackages.canary
              jetbrains.idea-community
              qFlipper

              # system tools
              protonvpn-gui
              openvpn
              noisetorch

              # hardware management tools
              (lib.mkIf hardware.piperMouse.enable piper)
              (lib.mkIf hardware.openRGB.enable openrgb)
              (lib.mkIf hardware.viaKeyboard.enable via)
            ])
          )
        )
      );
  };
}