My current NixOS Module Setup

/etc/nixos/configuration.nix
{ config, pkgs, ... }: {

  imports =
    [ 
    ./hardware-configuration.nix
    ./modules/default.nix
    ];

  boot.loader.systemd-boot.enable = true;
  boot.loader.efi.canTouchEfiVariables = true;
  boot.kernelPackages = pkgs.linuxPackages_latest;

  networking = {
    hostName = "Arugala"; 
    networkmanager.enable = true;  
    useDHCP = false;
  };

  time.timeZone = "America/Chicago";

  system.stateVersion = "21.05"; # Don't Change

}
/etc/nixos/modules/default.nix
{ lib, ... }: {
  imports =
    [
      ./packages.nix
      ./virtualisation.nix
      ./firewall.nix
      ./libinput.nix
      ./xfcei3.nix
      ./hardware.nix
      ./services.nix
      ./users.nix
    ];
}
/etc/nixos/modules/firewall.nix

{ pkgs, lib, ... }: {

# Open ports in the firewall.
  networking.firewall = {
    #allowedTCPPorts = [  ];
    #allowedUDPPorts = [  ];
    #enable = false;
  };

  services.opensnitch = {
    enable = true;
    rules = {
      systemd-timesyncd = {
        name = "systemd-timesyncd";
        enabled = true;
        action = "allow";
        duration = "always";
        operator = {
          type ="simple";
          sensitive = false;
          operand = "process.path";
          data = "${lib.getBin pkgs.systemd}/lib/systemd/systemd-timesyncd";
        };
      };
      systemd-resolved = {
        name = "systemd-resolved";
        enabled = true;
        action = "allow";
        duration = "always";
        operator = {
          type ="simple";
          sensitive = false;
          operand = "process.path";
          data = "${lib.getBin pkgs.systemd}/lib/systemd/systemd-resolved";
        };
      };
    };
  };

}
/etc/nixos/modules/hardware.nix
{ pkgs, config, ... }:
{

  hardware = {
    pulseaudio.enable = true;
    graphics = {
      #driSupport32Bit = true;
      extraPackages32 = with pkgs.pkgsi686Linux; [ libva ];
      extraPackages = with pkgs; [
        rocmPackages.clr.icd
      ];
    };
  };

  #sound.enable = true;
  services.pipewire.enable = false;

  powerManagement = {
    enable = true;
    cpuFreqGovernor = "powersave";
  };

}
/etc/nixos/modules/libinput.nix
{ ... }: {

  services.libinput.enable = true;
  services.xserver.config = ''
    Section "InputClass"
      Identifier "mouse accel"
      Driver "libinput"
      MatchIsPointer "on"
      Option "AccelProfile" "flat"
      Option "AccelSpeed" "0"
    EndSection
  '';
  services.libinput.mouse.middleEmulation = false;

}
/etc/nixos/modules/packages.nix
{ pkgs, ... }: {

  nixpkgs.config = {
    allowUnfree = true;
  };

  environment.systemPackages = with pkgs; [

    #ESSENTIAL PACKAGES
    wget git curl python3 flatpak
    neovim unzip zip tmux lm_sensors pfetch baobab gnome-disk-utility xclip picom openvpn gcc
    i3-gaps dmenu alacritty nitrogen rofi redshift

    seahorse

    #NON ESSENTIAL PACKAGES
    gucharmap
    otpclient
    gimp krita
    shotwell
    flameshot
    gnome-calculator
    gnome-system-monitor
    fastfetch

    #XFCE PACKAGES
    xfce.ristretto xfce.xfce4-whiskermenu-plugin

    # Normal apps
    wireshark dig yt-dlp 
    virt-manager spice-gtk
    mpd ncmpcpp
    libreoffice
    obs-studio
    lxappearance
    stellarium
    libratbag piper
    mumble

    #Containerization
    docker-compose

    #Networking
    gnome.networkmanager-openvpn
    tcpdump
    nmap
    syncthing
    traceroute
    openvpn
    opensnitch-ui

    #File Stuff
    tldr
    ngrep
    font-awesome
    docker-compose
    distrobox
    nodejs
    fzf
    file-roller nemo
    lua-language-server

    #i3 Stuff
    i3blocks

    #Fonts
    caladea
    carlito

    #Web Dev
    hugo

    # Themes
    arc-theme
    # Fonts
    powerline-fonts
  ];

  programs.wireshark.enable = true;

 }
/etc/nixos/modules/virtualisation.nix
{ ... }:
{
  virtualisation = {
      libvirtd.enable = true;
      docker.enable = true;
      podman = {
          enable = true;
          defaultNetwork.settings.dns_enabled = true;
      };
  };
}
/etc/nixos/modules/services.nix
{ pkgs, ... }: {

  # Configure keymap in X11
  services.xserver.xkb.layout = "us";
  # services.xserver.xkbOptions = "eurosign:e";

  # services.monero.enable = true;

  services.flatpak.enable = true;
  services.gnome.gnome-keyring.enable = true;

  services.ratbagd.enable = true;

  xdg.portal = {
      enable = true;
      #gtkUsePortal = true;
      #extraPortals = [ pkgs.xdg-desktop-portal-gtk ];
  };

  programs.dconf.enable = true;

  nix.gc = {
        automatic = true;
        dates = "weekly";
        options = "--delete-older-than 7d";
  };

  services.xserver.wacom.enable = true;


}
/etc/nixos/modules/xfcei3.nix
{ ... }: {

# Lightdm Configuartion
    services.xserver.displayManager.lightdm = {
        #background = /root/wallpaper/storm.jpg;
        #greeters.gtk.theme.name = "Arc-Dark";
        #greeters.gtk.iconTheme.name = "Sardi-Mono-Colora";
        enable = true;
    };

# Xfce + i3-gaps.
    services.xserver = {
        enable = true;
        desktopManager.xfce.enable = true;
#displayManager.startx.enable = true;
#windowManager.dwm.enable = true;
    };

}
/etc/nixos/modules/users.nix
{ pkgs, config, ...  }:
{

  users.users.alex = {
    isNormalUser = true;
    extraGroups = [ "wheel" "networkmanager" "libvirtd" "ratbagd" "wireshark" "disk" "docker" ];
    shell = pkgs.zsh;
  };

  programs.zsh = {
    enable = true;
    syntaxHighlighting.enable = true;
    enableBashCompletion = true;
  };

}