{ lib, pkgs, config, osConfig, ... }: let hardware = osConfig.host.hardware; in { imports = [ ./vscode ./firefox.nix ./direnv.nix ./openssh.nix ./git.nix ./makemkv.nix ]; config = lib.mkMerge [ { programs = lib.mkMerge [ { # Let Home Manager install and manage itself. home-manager.enable = true; } (lib.mkIf (config.user.isTerminalUser || config.user.isDesktopUser) { bash.enable = true; git.enable = true; openssh.enable = true; }) (lib.mkIf config.user.isDesktopUser { bitwarden.enable = true; obs-studio.enable = hardware.graphicsAcceleration.enable; qbittorrent.enable = true; prostudiomasters.enable = true; protonvpn-gui.enable = true; dbeaver-bin.enable = true; bruno.enable = true; piper.enable = hardware.piperMouse.enable; proxmark3.enable = true; openrgb.enable = hardware.openRGB.enable; via.enable = hardware.viaKeyboard.enable; claude-code.enable = osConfig.host.ai.enable; davinci-resolve.enable = hardware.graphicsAcceleration.enable; mfoc.enable = true; }) (lib.mkIf (hardware.directAccess.enable && config.user.isDesktopUser) { anki.enable = true; makemkv.enable = true; discord.enable = true; signal-desktop-bin.enable = true; calibre.enable = true; obsidian.enable = true; jetbrains.idea-community.enable = true; vscode.enable = true; firefox.enable = true; steam.enable = true; krita.enable = true; ungoogled-chromium.enable = true; libreoffice.enable = true; inkscape.enable = true; gimp.enable = true; freecad.enable = true; onionshare.enable = true; pdfarranger.enable = true; picard.enable = true; qflipper.enable = true; openvpn.enable = true; noisetorch.enable = true; tor-browser.enable = true; gdx-liftoff.enable = true; }) ]; } (lib.mkIf config.user.isTerminalUser { home.packages = with pkgs; [ # command line tools sox yt-dlp ffmpeg imagemagick ]; }) (lib.mkIf config.user.isDesktopUser { nixpkgs.config = { allowUnfree = true; }; }) ]; }