{ config, pkgs, ... }: let
    packages = (import ../lib/packages.nix) { config = config.nixpkgs.config; };
    callPackageFile = path: (import path) packages;
in {
    imports = [
        (callPackageFile ../profiles/system/base.nix)

        (callPackageFile ../profiles/environment/graphical-environment.nix)
        (callPackageFile ../profiles/environment/plasma5.nix)
        (callPackageFile ../profiles/environment/common-software.nix)

        (callPackageFile ../profiles/system/networked.nix)
        (callPackageFile ../profiles/system/printing.nix)
        (callPackageFile ../profiles/system/scanning.nix)
        (callPackageFile ../profiles/system/pulseaudio.nix)
        (callPackageFile ../profiles/system/virtualization.nix)

        (callPackageFile ../profiles/software/games.nix)
        (callPackageFile ../profiles/software/guake.nix)
        (callPackageFile ../profiles/software/synergy.nix)
        (callPackageFile ../profiles/software/workrave.nix)
    ];

    networking = {
        hostName = "laptop";
    };

    users.extraUsers.sven = {
        isNormalUser = true;
        uid = 1000;
        extraGroups = ["libvirtd"];
    };

    users.groups = {
        davfs2 = {};
    };

    users.extraUsers.davfs2 = {
        isNormalUser = true;
    };

    boot = {
        kernelModules = [ "tun" "virtio" "nbd" ];

        loader.grub = {
            enable = true;
            version = 2;
            device = "/dev/sda";
        };
    };

    environment = {
        pathsToLink = [
            "/lib/rustlib/src"
        ];
    };

    hardware.bluetooth.enable = true;
    hardware.pulseaudio.extraConfig = ''
        load-module module-loopback
        load-module module-combine-sink sink_name=all
    '';

    /*networking.wireguard = {
      wg0 = {
        ips = [ "192.168.20.4/24" ];
        privateKey = "yAnz5TF+lXXJte14tji3zlMNq+hd2rYUIgJBgB3fBmk=";
        peers = [
          { allowedIPs = [ "192.168.20.1/32" ];
            publicKey  = "xTIBA5rboUvnH4htodjb6e697QjLERt1NAB4mZqp8Dg=";
            endpoint   = "demo.wireguard.io:12913"; }
        ];
      };
    };*/

    nix.useSandbox = true;
}
