diff --git a/defaults/main.yml b/defaults/main.yml
index f36d831f182783c16cec50032c489bd1ea425a5d..c94ac3c48759803ee25582e1a9251c893a3cc6d0 100644
--- a/defaults/main.yml
+++ b/defaults/main.yml
@@ -3,6 +3,15 @@ basic_tools:
 
 default_repos:
   debian:
+    bookworm: &debian_default_repos
+      debian:
+        url: "deb https://deb.debian.org/{{ ansible_distribution|lower }} {{ ansible_distribution_release|lower }} main contrib non-free non-free-firmware"
+      update:
+        url: "deb https://deb.debian.org/{{ ansible_distribution|lower }} {{ ansible_distribution_release|lower }}-updates main contrib non-free non-free-firmware"
+      security:
+        url: "deb https://security.debian.org/debian-security {{ ansible_distribution_release|lower }}-security main contrib non-free non-free-firmware"
+      backports:
+        url: "deb https://deb.debian.org/{{ ansible_distribution|lower }} {{ ansible_distribution_release|lower }}-backports main contrib non-free non-free-firmware"
     bullseye:
       debian:
         url: "deb https://deb.debian.org/{{ ansible_distribution|lower }} {{ ansible_distribution_release|lower }} main contrib non-free"
@@ -22,12 +31,17 @@ default_repos:
       backports:
         url: "deb http://http.debian.net/{{ ansible_distribution|lower }} {{ ansible_distribution_release|lower }}-backports main contrib non-free"
   raspbian:
+    bookworm:
+      raspbian:
+        url: "deb http://raspbian.raspberrypi.org/raspbian/ {{ ansible_distribution_release|lower }} main contrib non-free rpi"
+      debian:
+        url: "deb http://archive.raspberrypi.org/debian/ {{ ansible_distribution_release|lower }} main non-free"
     bullseye: {}
     buster: {}
 
 default_packages:
   debian:
-    bullseye: &debian_packages
+    bookworm: &debian_packages
       aptitude: {}
       "apt-transport-https": {}
       "libarchive-tools": {}
@@ -71,4 +85,9 @@ default_packages:
       "xz-utils": {}
       zip: {}
       zsh: {}
+    bullseye: *debian_packages
+    buster: *debian_packages
+  raspbian:
+    bookworm: *debian_packages
+    bullseye: *debian_packages
     buster: *debian_packages
diff --git a/tasks/main.yml b/tasks/main.yml
index 31b63d8c7a0e86bcfa96b88eee3816c9bfe973da..09a6de4c8e1973c71a8fd8b5f76fe4ecf5808935 100644
--- a/tasks/main.yml
+++ b/tasks/main.yml
@@ -1,4 +1,7 @@
 ---
+- name: workaround for raspbian naming
+  set_fact:
+    package_distro: "{% if ansible_lsb.id|d('') == 'Raspbian' %}raspbian{% else %}{{ ansible_distribution|lower }}{% endif %}"
 - name: install default packages and repos
   when:
     - basic_tools.install_packages
@@ -6,8 +9,8 @@
     name: packages
   vars:
     packages:
-      pkg: "{{ default_packages[ansible_distribution|lower][ansible_distribution_release|lower] }}"
-      repos: "{{ default_repos[ansible_distribution|lower][ansible_distribution_release|lower] }}"
+      pkg: "{{ default_packages[package_distro][ansible_distribution_release|lower] }}"
+      repos: "{{ default_repos[package_distro][ansible_distribution_release|lower] }}"
 
 - name: copy environment
   copy:
@@ -50,6 +53,6 @@
     path: /usr/bin/vim.basic
 
 - name: remove /etc/apt/sources.list
-  file:
-    path: /etc/apt/sources.list
-    state: absent
+  copy:
+    dest: /etc/apt/sources.list
+    content: "# managed by ansible\n"