diff --git a/.gitmodules b/.gitmodules
index aa4d06621..7ecb497ea 100644
--- a/.gitmodules
+++ b/.gitmodules
@@ -10,6 +10,3 @@
 [submodule "jeschli/2configs/elisp"]
 	path = jeschli/2configs/elisp
 	url = https://github.com/Jeschli/misc-elisp-scripts.git
-[submodule "submodules/brockman"]
-	path = submodules/brockman
-	url = https://github.com/kmein/brockman.git
diff --git a/jeschli/2configs/own-pkgs/ublock-origin/default.nix b/jeschli/2configs/own-pkgs/ublock-origin/default.nix
index 45465d482..002fa3efc 100644
--- a/jeschli/2configs/own-pkgs/ublock-origin/default.nix
+++ b/jeschli/2configs/own-pkgs/ublock-origin/default.nix
@@ -21,7 +21,7 @@ stdenv.mkDerivation rec {
   meta = with stdenv.lib; {
     description = "ublock origin firefox browser addon";
     homepage = https://github.com/gorhill/uBlock;
-    license = licenses.gnu3;
+    license = licenses.gpl3;
     maintainers = [];
     platforms = stdenv.lib.platforms.all;
   };
diff --git a/krebs/3modules/charybdis.nix b/krebs/3modules/charybdis.nix
index aa7c980c5..038d79dd0 100644
--- a/krebs/3modules/charybdis.nix
+++ b/krebs/3modules/charybdis.nix
@@ -71,14 +71,13 @@ in
 
   config = mkIf cfg.enable (lib.mkMerge [
     {
-      users.users = singleton {
-        name = cfg.user;
+      users.users.${cfg.user} = {
         description = "Charybdis IRC daemon user";
         uid = config.ids.uids.ircd;
         group = cfg.group;
       };
 
-      users.groups = singleton {
+      users.groups.${cfg.group} = {
         name = cfg.group;
         gid = config.ids.gids.ircd;
       };
@@ -102,7 +101,7 @@ in
       };
 
     }
-    
+
     (mkIf (cfg.motd != null) {
       environment.etc."charybdis/ircd.motd".text = cfg.motd;
     })
diff --git a/lass/1systems/mors/config.nix b/lass/1systems/mors/config.nix
index fe0b6d85b..c1ceb0633 100644
--- a/lass/1systems/mors/config.nix
+++ b/lass/1systems/mors/config.nix
@@ -39,6 +39,7 @@ with import <stockholm/lib>;
     <stockholm/lass/2configs/network-manager.nix>
     <stockholm/lass/2configs/nfs-dl.nix>
     #<stockholm/lass/2configs/hardening.nix>
+    <stockholm/lass/2configs/ppp.nix>
     {
       krebs.iptables.tables.filter.INPUT.rules = [
         #risk of rain
@@ -76,16 +77,6 @@ with import <stockholm/lib>;
         };
       };
     }
-    {
-      lass.umts = {
-        enable = true;
-        modem = "/dev/serial/by-id/usb-Lenovo_F5521gw_2C7D8D7C35FC7040-if09";
-        initstrings = ''
-          Init1 = AT+CFUN=1
-          Init2 = AT+CGDCONT=1,"IP","pinternet.interkom.de","",0,0
-        '';
-      };
-    }
     {
       services.nginx = {
         enable = true;
diff --git a/lass/2configs/baseX.nix b/lass/2configs/baseX.nix
index b3340cb31..1185be9d4 100644
--- a/lass/2configs/baseX.nix
+++ b/lass/2configs/baseX.nix
@@ -114,7 +114,7 @@ in {
     xkbOptions = "caps:escape";
     libinput.enable = true;
     displayManager.lightdm.enable = true;
-    windowManager.default = "xmonad";
+    displayManager.defaultSession = "none+xmonad";
     windowManager.session = [{
       name = "xmonad";
       start = ''
diff --git a/lass/2configs/network-manager.nix b/lass/2configs/network-manager.nix
index 75b9bd1fd..b41cc7ac8 100644
--- a/lass/2configs/network-manager.nix
+++ b/lass/2configs/network-manager.nix
@@ -2,18 +2,6 @@
 {
   networking.wireless.enable = lib.mkForce false;
 
-  systemd.services.modemmanager = {
-    description = "ModemManager";
-    after = [ "network-manager.service" ];
-    bindsTo = [ "network-manager.service" ];
-    wantedBy = [ "network-manager.service" ];
-    serviceConfig = {
-      ExecStart = "${pkgs.modemmanager}/bin/ModemManager";
-      PrivateTmp = true;
-      Restart = "always";
-      RestartSec = "5";
-    };
-  };
   networking.networkmanager = {
     ethernet.macAddress = "random";
     wifi.macAddress = "random";
diff --git a/lass/2configs/ppp.nix b/lass/2configs/ppp.nix
new file mode 100644
index 000000000..9cc7568a5
--- /dev/null
+++ b/lass/2configs/ppp.nix
@@ -0,0 +1,32 @@
+{ pkgs, ... }: {
+
+  # usage: pppd call default
+
+  environment.etc."ppp/peers/default".text = ''
+    /dev/ttyACM2
+    921600
+    crtscts
+    defaultroute
+    holdoff 10
+    lock
+    maxfail 0
+    noauth
+    nodetach
+    noipdefault
+    passive
+    persist
+    usepeerdns
+    connect "${pkgs.ppp}/bin/chat -f ${pkgs.writeText "default.chat" ''
+      ABORT "BUSY"
+      ABORT "NO CARRIER"
+      REPORT CONNECT
+      "" "ATDT*99#"
+      CONNECT
+    ''}"
+  '';
+
+  environment.systemPackages = [
+    pkgs.ppp
+  ];
+
+}
diff --git a/lass/3modules/default.nix b/lass/3modules/default.nix
index 057c7c74a..f6179c394 100644
--- a/lass/3modules/default.nix
+++ b/lass/3modules/default.nix
@@ -12,7 +12,6 @@ _:
     ./pyload.nix
     ./restic.nix
     ./screenlock.nix
-    ./umts.nix
     ./usershadow.nix
     ./xjail.nix
     ./autowifi.nix
diff --git a/lass/3modules/umts.nix b/lass/3modules/umts.nix
deleted file mode 100644
index 207278440..000000000
--- a/lass/3modules/umts.nix
+++ /dev/null
@@ -1,112 +0,0 @@
-{ config, lib, pkgs, ... }:
-
-with import <stockholm/lib>;
-
-let
-  cfg = config.lass.umts;
-
-  out = {
-    options.lass.umts = api;
-    config = lib.mkIf cfg.enable imp;
-  };
-
-  api = {
-    enable = mkEnableOption "umts";
-    modem = mkOption {
-      type = types.str;
-      default = "/dev/ttyUSB0";
-    };
-    initstrings = mkOption {
-      type = types.str;
-      default = ''
-        Init1 = ATZ
-        Init2 = ATQ0 V1 E1 S0=0 &C1 &D2
-      '';
-    };
-    username = mkOption {
-      type = types.str;
-      default = "default";
-    };
-    password = mkOption {
-      type = types.str;
-      default = "default";
-    };
-    pppDefaults = mkOption {
-      type = types.str;
-      default = ''
-        noipdefault
-        usepeerdns
-        defaultroute
-        persist
-        noauth
-      '';
-    };
-  };
-
-  nixpkgs-1509 = import (pkgs.fetchFromGitHub {
-    owner = "NixOS"; repo = "nixpkgs-channels";
-    rev = "91371c2bb6e20fc0df7a812332d99c38b21a2bda";
-    sha256 = "1as1i0j9d2n3iap9b471y4x01561r2s3vmjc5281qinirlr4al73";
-  }) {};
-
-  wvdial = nixpkgs-1509.wvdial; # https://github.com/NixOS/nixpkgs/issues/16113
-
-  umts-bin = pkgs.writeScriptBin "umts" ''
-    #!/bin/sh
-    set -euf
-    systemctl start umts
-    trap "systemctl stop umts;trap - INT TERM EXIT;exit" INT TERM EXIT
-    echo nameserver 8.8.8.8 | tee -a /etc/resolv.conf
-    journalctl -xfu umts
-  '';
-
-  wvdial-defaults = ''
-    [Dialer Defaults]
-    Modem = ${cfg.modem}
-    ${cfg.initstrings}
-    Modem Type = Analog Modem
-    Baud = 460800
-    phone= *99#
-    Username = ${cfg.username}
-    Password = ${cfg.password}
-    Stupid Mode = 1
-    Idle Seconds = 0
-    PPPD Path = ${pkgs.ppp}/bin/pppd
-  '';
-
-  imp = {
-    environment.shellAliases = {
-      umts = "sudo ${umts-bin}/bin/umts";
-    };
-
-    environment.systemPackages = [
-      pkgs.ppp
-    ];
-
-    security.sudo.extraConfig = ''
-      lass ALL= (root) NOPASSWD: ${umts-bin}/bin/umts
-    '';
-
-    environment.etc = [
-      {
-        source = pkgs.writeText "wvdial.conf" wvdial-defaults;
-        target = "wvdial.conf";
-      }
-      {
-        source = pkgs.writeText "wvdial" cfg.pppDefaults;
-        target = "ppp/peers/wvdial";
-      }
-    ];
-
-    systemd.services.umts = {
-      description = "UMTS wvdial Service";
-      serviceConfig = {
-        Type = "simple";
-        Restart = "always";
-        RestartSec = "10s";
-        ExecStart = "${wvdial}/bin/wvdial -n";
-      };
-    };
-  };
-
-in out
diff --git a/lass/3modules/xjail.nix b/lass/3modules/xjail.nix
index f6ce7ccc9..37f90ee1c 100644
--- a/lass/3modules/xjail.nix
+++ b/lass/3modules/xjail.nix
@@ -6,11 +6,11 @@ with import <stockholm/lib>;
     type = types.attrsOf (types.submodule ({ config, ...}: {
       options = {
         name = mkOption {
-          type = types.string;
+          type = types.str;
           default = config._module.args.name;
         };
         user = mkOption {
-          type = types.string;
+          type = types.str;
           default = config.name;
         };
         groups = mkOption {
@@ -18,11 +18,11 @@ with import <stockholm/lib>;
           default = [];
         };
         from = mkOption {
-          type = types.string;
+          type = types.str;
           default = "lass";
         };
         display = mkOption {
-          type = types.string;
+          type = types.str;
           default = toString (genid_uint31 config._module.args.name);
         };
         dpi = mkOption {
@@ -47,7 +47,7 @@ with import <stockholm/lib>;
         };
         wm = mkOption {
           #TODO find type
-          type = types.string;
+          type = types.str;
           default = "${pkgs.writeHaskellPackage "xephyrify-xmonad" {
             executables.xmonad = {
               extra-depends = [
diff --git a/lib/types.nix b/lib/types.nix
index ffae8c7bc..16ccb145e 100644
--- a/lib/types.nix
+++ b/lib/types.nix
@@ -7,7 +7,7 @@ let
     mkOptionType optional optionalAttrs optionals range splitString
     stringLength substring test testString typeOf;
   inherit (lib.types)
-    attrsOf bool either enum int listOf nullOr path str string submodule;
+    attrsOf bool either enum int listOf nullOr path str submodule;
 in
 
 rec {
@@ -65,7 +65,7 @@ rec {
       extraZones = mkOption {
         default = {};
         # TODO: string is either MX, NS, A or AAAA
-        type = attrsOf string;
+        type = attrsOf str;
       };
 
       secure = mkOption {
@@ -182,7 +182,7 @@ rec {
             extraConfig = mkOption {
               description = "Extra Configuration to be appended to the hosts file";
               default = "";
-              type = string;
+              type = str;
             };
             port = mkOption {
               type = int;
diff --git a/submodules/brockman b/submodules/brockman
deleted file mode 160000
index 1a5b3faa1..000000000
--- a/submodules/brockman
+++ /dev/null
@@ -1 +0,0 @@
-Subproject commit 1a5b3faa1185f8c0e7861ebadf07e48ac4bdf7e9