{config, pkgs, ...}: let spotifyd_cache_dir = "/tmp/spotifyd"; in { nixpkgs.overlays = [ (final: prev: { spotifyd = prev.spotifyd.overrideAttrs (old: { postInstall = '' mkdir -p $out/share/dbus-1/system.d/ tee $out/share/dbus-1/system.d/org.mpris.MediaPlayer2.spotifyd.conf < END ''; });}) ]; environment.systemPackages = with pkgs; [ spotify-tui spotifyd ]; # decrypt spotify password age.identityPaths = [ "/home/grimmauld/.ssh/id_rsa" ]; # spotify pass age.secrets.spotify_pass = { file = ../secrets/spotify_pass.age; owner = "spotifyd"; group = "spotifyd"; mode = "700"; }; systemd.services.init-spotifyd-cache-dir = { description = "Create the spotifyd cache dir"; wantedBy = [ "multi-user.target" ]; serviceConfig.Type = "oneshot"; script ='' mkdir -p ${spotifyd_cache_dir} chown spotifyd:spotifyd -R ${spotifyd_cache_dir} ''; }; # spotifyd config services.spotifyd = { enable = true; settings.global = { bitrate = 320; username = "3tyhk4i01l54w7co7xm7jvu32"; device_name = "grimm_laptop"; password_cmd = "${pkgs.coreutils-full}/bin/cat ${config.age.secrets.spotify_pass.path}"; # read password secret device_type = "computer"; dbus_type = "system"; device = "default"; control = "default"; volume_controller = "softvol"; # no_audio_cache = true; spotifyd_cache_dir = spotifyd_cache_dir; max_cache_size = 10000000000; initial_volume = "90"; backend = "alsa"; # fixme }; }; services.dbus.packages = with pkgs; [ spotifyd # add above dbus code to the config ]; # spotifyd has access to global pipewire users.users.spotifyd = { isSystemUser = true; group = "spotifyd"; extraGroups = [ "audio" "pipewire" ]; }; # spotifyd is also a group users.groups = { spotifyd = {}; }; }