{ config, pkgs, lib, ... }:
let
    settings = import ./settings.nix;
in
{
    imports = [
        ./hardware-configuration.nix # Include the results of the hardware scan.
        ./nix-settings.nix  # nix related config
        ./users
        ./.luks-swap.nix
        ./fonts.nix         # system wide font settings
        ./extra             # extra packages
        ./core              # core system components
        ./dev               # development stuff
        ./games             # games
        ./hardware          # hardware specific settings
        ./system            # system components such as kernel
    ];

    # This value determines the NixOS release from which the default
    # settings for stateful data, like file locations and database versions
    # on your system were taken. It's perfectly fine and recommended to leave
    # this value at the release version of the first install of this system.
    # Before changing this value read the documentation for this option
    # (e.g. man configuration.nix or on https://nixos.org/nixos/options.html).
    system.stateVersion = settings.stateVersion; # Did you read the comment?

    hardware.opengl.enable = true;

  # Set your time zone.
  time.timeZone = "Europe/Berlin";

  # Select internationalisation properties.
  i18n.defaultLocale = "en_US.UTF-8";

  i18n.extraLocaleSettings = {
    LC_ADDRESS = "de_DE.UTF-8";
    LC_IDENTIFICATION = "de_DE.UTF-8";
    LC_MEASUREMENT = "de_DE.UTF-8";
    LC_MONETARY = "de_DE.UTF-8";
    LC_NAME = "de_DE.UTF-8";
    LC_NUMERIC = "de_DE.UTF-8";
    LC_PAPER = "de_DE.UTF-8";
    LC_TELEPHONE = "de_DE.UTF-8";
    LC_TIME = "de_DE.UTF-8";
  };

  services.rpcbind.enable = true; # needed for NFS

  programs.partition-manager.enable = true;

  # use bash shell for other users
  environment.shells = with pkgs; [ bash ];

  # Configure console keymap
  console.keyMap = "de";

  # List packages installed in system profile. To search, run:
  # $ nix search wget
  environment.systemPackages = (with pkgs; [

    devbox
    ffmpeg-full
    openssl
    imagemagick
    gnumake
    cmake

    # Clipboard support for Wayland Session
    # used by Vim/Neovim and etc.
    wl-clipboard

    # GNU Compiler Collection and toolchain
    glibc
    gcc
    gdb
    stdenv.cc
    stdenv.cc.libc
    stdenv.cc.libc_dev

    pkg-config
    fontconfig

    # SCSI driver
    sg3_utils
  ]);

  environment.sessionVariables = rec {
    # rust
    CARGO_TERM_COLOR = "always";
    RUST_BACKTRACE = "1";

    # Wayland for electron Ozone
    NIXOS_OZONE_WL = "1";

    GTK_THEME = "Breeze-Dark";
  };
}
