diff --git a/scripts/linuxparty.py b/scripts/linuxparty.py
index 1e42a1f580c813d26c240dfb906a4d024ae18c8f..5c3b8a956c468940b6490a5d430e29d6177a50b8 100755
--- a/scripts/linuxparty.py
+++ b/scripts/linuxparty.py
@@ -4,11 +4,79 @@
 import sys, os, io, subprocess
 import json
 import apt
-from PyQt5 import QtWidgets, QtGui, QtCore, QtDBus
+import dbus
+import traceback
+import tempfile
+from PyQt5 import QtWidgets, QtGui, QtCore
 from collections import OrderedDict
 
 cache = apt.cache.Cache()
 
+def get_devices():
+    devices = []
+    bus = dbus.SystemBus()
+    udisks_manager = bus.get_object("org.freedesktop.UDisks2", "/org/freedesktop/UDisks2")
+    manager_iface = dbus.Interface(udisks_manager, "org.freedesktop.DBus.ObjectManager")
+    try:
+        for k,v in manager_iface.GetManagedObjects().items():
+            drive_info = v.get("org.freedesktop.UDisks2.Block", {})
+            if drive_info.get("IdUsage") == "filesystem":
+                label = str(drive_info.get("IdLabel"))
+                device = bytearray(drive_info.get("Device")).replace(b"\x00",b"").decode("utf-8")
+                fs_info = v.get("org.freedesktop.UDisks2.Filesystem")
+                dbus_mpoints = fs_info.get("MountPoints")
+                mpoints = [bytearray(mpoint).replace(b"\x00",b"").decode("utf-8") for mpoint in dbus_mpoints]
+                devices.append((label, device, mpoints))
+    except Exception as ex:
+        traceback.print_exc(ex)
+        print("No devices found")
+    return devices
+
+def mount_stick(dev):
+    bus = dbus.SystemBus()
+    udisks = bus.get_object("org.freedesktop.UDisks2", "/org/freedesktop/UDisks2/block_devices/%s"%(dev,))
+    iface = dbus.Interface(udisks, "org.freedesktop.UDisks2.Filesystem")
+    res = None
+    try:
+        res = bytearray(iface.Mount()).replace(b"\x00",b"").decode("utf-8")
+    except Exception as ex:
+        traceback.print_exc(ex)
+        print("Could not mount %s"%(dev,))
+    return res
+
+def find_lipstick():
+    devices = get_devices()
+    stick = None
+    for device in devices:
+        if device[0].lower()=="lipstick":
+            stick = device
+    return stick
+
+def enable_offline_repo(gui):
+    try_again = True
+    stick = None
+    while True:
+        stick = find_lipstick()
+        print(stick)
+        if stick is None or (type(stick) is tuple and len(stick[2])<=0):
+            choice = QtWidgets.QMessageBox.question(gui, 'LIPStick nicht gefunden!', "Möchtest du noch einmal versuchen den LIPStick zu finden?", QtWidgets.QMessageBox.Yes | QtWidgets.QMessageBox.No)
+            if choice == QtWidgets.QMessageBox.No:
+                try_again = False
+        else:
+            try_again = False
+        if not try_again:
+            break
+
+    if stick is None:
+        QtWidgets.QMessageBox.error(gui, "Kein LIPSTick gefunden", "Es wird ohne LIPStick weiter gemacht")
+        return
+
+    subprocess_wrap([basedir+"/liprepoctl.sh", "on", stick[2][0]])
+
+def disable_offline_repo():
+    subprocess_wrap([basedir+"/liprepoctl.sh", "off"])
+
+
 def subprocess_wrap(what):
     proc = subprocess.Popen(what, stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
     while True:
@@ -115,11 +183,13 @@ def installProcess():
     window.ui.progressBar.show()
     window.ui.progressBar.setRange(0,0)
     pkglist = getPackagelistTree()
+    enable_offline_repo(window)
     installPackages(pkglist)
     #window.ui.progressBar.setRange(0,1)
     #window.ui.progressBar.setValue(1)
     makeDoku(pkglist)
     showSuccBox()
+    disable_offline_repo()
 
 def showSuccBox():
     succBox = QtWidgets.QMessageBox()
@@ -163,8 +233,7 @@ def checkIfRoot():
 
 def installPackages(strlist):
     global pkglist
-
-    cache.update(sources_list='')
+    cache.update()
     cache.open(None)
 
     for pkg in pkglist:
@@ -175,7 +244,6 @@ def installPackages(strlist):
         cache.commit(apt.progress.text.AcquireProgress(), apt.progress.base.InstallProgress())
     except Exception as ex:
         print("Error during install",ex)
-
 def enableFirewall():
     command=['ufw', 'enable']
     subprocess_wrap(command)
@@ -186,11 +254,12 @@ def mountStick():
 
 def makeDoku(stringlist):
     global pkglist
-
-    #command=["echo", "./makeDoku.sh", basedir, " ".join(stringlist)]
     command=["./makeDoku.sh", basedir+"/", " ".join(pkglist)]
     subprocess_wrap(command)
 
+    command=[basedir+"/makeDoku.sh", basedir+"/", " ".join(pkglist)]
+    subprocess_wrap(command)
+    
 def getPackagelist():
     installList = []
     model = window.ui.tableView.model()
@@ -256,8 +325,7 @@ def fillTreeView(inputDataJson, treeView):
 
 if __name__ == '__main__':
     app = QtWidgets.QApplication(sys.argv)
-    basepath=os.path.realpath(__file__)
-    basedir=os.path.dirname(basepath)
+    basedir=os.path.dirname(os.path.realpath(__file__))
     checkIfRoot()
     chooseFirewall()
     mountStick()