diff --git a/.gitattributes b/.gitattributes
new file mode 100644
index 0000000..d65a898
--- /dev/null
+++ b/.gitattributes
@@ -0,0 +1 @@
+secrets/soundcloud_token filter=git-crypt diff=git-crypt
diff --git a/modules/audio.nix b/modules/audio.nix
index a2b9322..fb4cccd 100644
--- a/modules/audio.nix
+++ b/modules/audio.nix
@@ -2,12 +2,32 @@
 
 with pkgs;
 
-# HACK Replace youtube-dl with yt-dlp in mopidy-youtube
 let
+  # HACK Replace youtube-dl with yt-dlp in mopidy-youtube
   mopidy-youtube-yt_dlp = mopidy-youtube.overrideAttrs (old: rec {
     propagatedBuildInputs = old.propagatedBuildInputs
       ++ [ python3.pkgs.yt-dlp ];
   });
+  latest-mopidy-somafm = mopidy-somafm.overrideAttrs (old: rec {
+    src = python3Packages.fetchPypi {
+      version = "2.0.2";
+      pname = "Mopidy-SomaFM";
+      sha256 = "DC0emxkoWfjGHih2C8nINBFByf521Xf+3Ks4JRxNPLM=";
+    };
+  });
+  soundcloud_token = builtins.readFile ../secrets/soundcloud_token;
+  latest-mopidy-soundcloud = mopidy-soundcloud.overrideAttrs (old: rec {
+    src = fetchFromGitHub {
+      owner = "mopidy";
+      repo = "mopidy-soundcloud";
+      rev = "fc766b0bf17feb4fc989029b92a315a10ff453ee";
+      sha256 = "sha256-LftBbfs5KqqkhFQVZRh/AQKQQ+18x8RapRU1mTB7FD8=";
+    };
+
+    propagatedBuildInputs = old.propagatedBuildInputs
+      ++ [ python3.pkgs.beautifulsoup4 ];
+  });
+
 in {
   # Configure pipewire as sound server
   services.pipewire = {
@@ -32,13 +52,16 @@ in {
   # Set up Mopidy
   services.mopidy = {
     enable = true;
-    extensionPackages =
-      [ mopidy-mpd mopidy-youtube-yt_dlp mopidy-somafm mopidy-local ];
+    extensionPackages = [
+      mopidy-mpd
+      mopidy-local
+      mopidy-youtube-yt_dlp
+      latest-mopidy-somafm
+      latest-mopidy-soundcloud
+    ];
     configuration = ''
       [audio]
-      mixer_volume =
       output = pulsesink server=127.0.0.1
-      visualizer =
 
       [local]
       media_dir = /home/coolneng/Music
@@ -72,6 +95,10 @@ in {
       [somafm]
       encoding = aac
       quality = highest
+
+      [soundcloud]
+      auth_token = ${soundcloud_token}
+      explore_songs = 100
     '';
   };
 }
diff --git a/secrets/soundcloud_token b/secrets/soundcloud_token
new file mode 100644
index 0000000..df524f2
Binary files /dev/null and b/secrets/soundcloud_token differ