{ config, pkgs, ... }:
let  
  unstable = import <nixos-unstable> { config.allowUnfree = true; };
  packages = {
    internet = [ 
      pkgs.axel 
      pkgs.firefox
      pkgs.openvpn 
      pkgs.transmission 
      pkgs.wget 
      pkgs.wireguard
    ];

    media = [ 
      pkgs.moc 
      pkgs.vlc 
    ];

    administration = [ 
      pkgs.bpytop 
      pkgs.gparted 
      pkgs.htop 
    ];

    editors = [ 
      pkgs.gnome3.gedit 
      pkgs.leafpad 
    ];

    terminals = [ 
      pkgs.alacritty 
      pkgs.xfce.xfce4-terminal 
      pkgs.xterm
    ];

    development = [
      pkgs.vscode
      pkgs.python39Full
      unstable.python310
      pkgs.elixir
      unstable.elixir
      pkgs.rustc
      pkgs.git
      pkgs.nixfmt
    ];

    documents = [ 
      pkgs.libreoffice 
      pkgs.zotero 
    ];

    wm = [ 
      pkgs.sway 
      pkgs.swaybg 
      pkgs.swayidle 
      pkgs.swaylock 
      pkgs.ulauncher 
    ];

    system = [ 
      pkgs.brightnessctl 
      pkgs.lm_sensors 
      pkgs.pulseaudio-ctl 
    ];

    cli_tools = [
      pkgs.bc
      pkgs.dtrx
      pkgs.exa
      pkgs.fzf
      pkgs.gron
      pkgs.jq
      pkgs.ranger
      pkgs.rename
    ];

    utilities = [ 
      pkgs.galculator 
      pkgs.spaceFM 
      pkgs.xfce.thunar 
    ];
  };
in
  environment.systemPackages = builtins.concatLists [
    packages.administration
    packages.cli_tools
    packages.development
    packages.documents
    packages.editors
    packages.internet
    packages.media
    packages.system
    packages.terminal
    packages.utilities
    packages.wm
  ];
}