{ config, pkgs, nixpkgs }:
let
    variables = import ./common/variables.nix;
    personalPackages =
    let
      toPkg = file: {
        name = builtins.replaceStrings [ ".nix" ] [ "" ] file;
        value = import (./. + "/pkgConfigs/${file}") { };
       };
     in
       pkgs.lib.mapAttrs' toPkg (builtins.readDir (./. + "/pkgConfigs"));
   in
   { imports = generatedPkgs; }

in {
    import = [
        ./apps/personal/steam.nix

    ];

    nixpkgs.overlays = [
        (import ./overlays/anytype.nix)
    ];

    home.packages = with pkgs; [  # New apps should be on new lines
        anytype
        minecraft
        nodejs-17_x

        git-crypt gnupg pinentry_qt
        keepassxc
        grim slurp
        neovim helix
        qemu
        bind
        file
        nur.repos.kira-bruneau.rofi-wayland
        rofimoji
        anytype-latest
        htop
        hue-cli
        comma
        zip
        mindustry-alpha-wayland
        element
        tdesktop
    ];  # Use *only* for packages that need no configuration;
    # other packages should go in ./apps/personal/

    home.stateVersion = variables.stateVersion;
}