{ services.mpd = { enable = true; musicDirectory = "/home/user/Music"; playlistDirectory = "/home/user/Music/Playlists"; dbFile = "/home/user/.config/mpd/database"; # log_file = "~/.config/mpd/log"; extraConfig = '' save_absolute_paths_in_playlists "yes" metadata_to_use "+comment" audio_output { type "pipewire" name "Pipewire Sound Server" } audio_output { type "fifo" name "my_fifo" path "/tmp/mpd.fifo" format "44100:16:2" } auto_update "yes" ''; network.listenAddress = "/home/user/.config/mpd/socket"; }; services.mpdscribble = { enable = true; endpoints = { "last.fm" = { passwordFile = "/home/user/lastfm_password"; username = "KeksNino"; }; }; }; programs.rmpc.enable = true; programs.rmpc.config = '' #![enable(implicit_some)] #![enable(unwrap_newtypes)] #![enable(unwrap_variant_newtypes)] ( address: "/home/user/.config/mpd/socket", password: None, theme: Some("default"), cache_dir: Some("/home/user/Music/rmpc"), on_song_change: None, volume_step: 5, max_fps: 60, scrolloff: 0, wrap_navigation: false, enable_mouse: true, enable_config_hot_reload: true, status_update_interval_ms: 1000, rewind_to_start_sec: None, reflect_changes_to_playlist: false, select_current_song_on_change: false, browser_song_sort: [Track, Disc, Artist, Title], directories_sort: SortFormat(group_by_type: true, reverse: false), album_art: ( method: Kitty, max_size_px: (width: 1200, height: 1200), disabled_protocols: ["http://", "https://"], vertical_align: Center, horizontal_align: Center, ), keybinds: ( global: { ":": CommandMode, ",": VolumeDown, "s": Stop, ".": VolumeUp, "": NextTab, "": PreviousTab, "1": SwitchToTab("Queue"), "2": SwitchToTab("Files"), "3": SwitchToTab("Playlists"), "4": SwitchToTab("Artists"), "5": SwitchToTab("Albums"), "6": SwitchToTab("Search"), //"7": SwitchToTab("Album Artists"), "q": Quit, ">": NextTrack, "p": TogglePause, "<": PreviousTrack, "f": SeekForward, "z": ToggleRepeat, "x": ToggleRandom, "c": ToggleConsume, "v": ToggleSingle, "b": SeekBack, "~": ShowHelp, "u": Update, "U": Rescan, "I": ShowCurrentSongInfo, "O": ShowOutputs, "P": ShowDecoders, "R": AddRandom, "": ExternalCommand(command: ["/home/user/.scripts/check-playlist.sh"], description: "Check if selected song is already in a playlist"), }, navigation: { "k": Up, "j": Down, "h": Left, "l": Right, "": Up, "": Down, "": Left, "": Right, "": PaneUp, "": PaneDown, "": PaneLeft, "": PaneRight, "": UpHalf, "N": PreviousResult, "a": Add, "A": AddAll, "r": Rename, "n": NextResult, "g": Top, "": Select, "": InvertSelection, "G": Bottom, "": Confirm, "i": FocusInput, "J": MoveDown, "": DownHalf, "/": EnterSearch, "": Close, "": Close, "K": MoveUp, "D": Delete, "B": ShowInfo, }, queue: { "D": DeleteAll, "": Play, "": Save, "a": AddToPlaylist, "d": Delete, "C": JumpToCurrent, "X": Shuffle, }, ), search: ( case_sensitive: false, mode: Contains, tags: [ (value: "any", label: "Any Tag"), (value: "artist", label: "Artist"), (value: "album", label: "Album"), (value: "albumartist", label: "Album Artist"), (value: "title", label: "Title"), (value: "filename", label: "Filename"), (value: "genre", label: "Genre"), ], ), artists: ( album_display_mode: SplitByDate, album_sort_by: Date, ), cava: ( framerate: 60, autosens: true, sensitivity: 110, // default 100 lower_cutoff_freq: 50, // not passed to cava if not provided higher_cutoff_freq: 10000, // not passed to cava if not provided input: ( method: Fifo, source: "/tmp/mpd.fifo", sample_rate: 44100, channels: 2, sample_bits: 16, ), smoothing: ( noise_reduction: 77, monstercat: true, waves: false, ), eq: [] ), tabs: [ ( name: "Queue", pane: Split( direction: Horizontal, panes: [ (size: "40%", pane: Pane(AlbumArt)), (size: "60%", pane: Split( direction: Vertical, panes: [ (size: "95%", pane: Pane(Queue)), (size: "30%", pane: Pane(Cava)), ], )), ], ), ), ( name: "Files", pane: Pane(Directories), ), ( name: "Playlists", pane: Pane(Playlists), ), ( name: "Artists", pane: Pane(Artists), ), ( name: "Albums", pane: Pane(Albums), ), ( name: "Search", pane: Pane(Search), ), //( // name: "Album Artists", // pane: Pane(AlbumArtists), //), ], ) ''; }