diff options
Diffstat (limited to 'modules')
| -rw-r--r-- | modules/music/client.home.nix | 91 | ||||
| -rw-r--r-- | modules/music/config.nix | 4 | ||||
| -rw-r--r-- | modules/music/default.home.nix | 136 | ||||
| -rw-r--r-- | modules/music/mpd.home.nix | 55 |
4 files changed, 154 insertions, 132 deletions
diff --git a/modules/music/client.home.nix b/modules/music/client.home.nix new file mode 100644 index 0000000..aa106bb --- /dev/null +++ b/modules/music/client.home.nix @@ -0,0 +1,91 @@ +{ pkgs, ... }@moduleAttrs: +let + cfg = import ./config.nix moduleAttrs; +in +{ + home.packages = with pkgs; [ mpc_cli playerctl ]; + + programs.ncmpcpp = { + enable = true; + package = pkgs.ncmpcpp.override { visualizerSupport = true; }; + + bindings = with builtins; let + toBinding = s: let get = elemAt s; in { key = get 0; command = get 1; }; + in + map toBinding [ + [ "h" [ "previous_column" "master_screen" "jump_to_parent_directory" ] ] + [ "l" [ "next_column" "slave_screen" "enter_directory" ] ] + [ "k" "scroll_up" ] + [ "j" "scroll_down" ] + [ "g" "page_up" ] + [ "G" "page_down" ] + [ "d" "delete_playlist_items" ] + [ "n" "next_found_item" ] + [ "N" "previous_found_item" ] + [ "P" "show_playlist_editor" ] + [ "B" "show_browser" ] + [ "s" "show_search_engine" ] + [ "S" "show_search_engine" ] + [ "8" "show_visualizer" ] + [ "ctrl-s" "save_playlist" ] + [ "c" "clear_main_playlist" ] + [ "ctrl-l" "show_lyrics" ] + + [ "ctrl-k" "move_sort_order_up" ] + [ "ctrl-k" "move_selected_items_up" ] + [ "ctrl-j" "move_sort_order_down" ] + [ "ctrl-j" "move_selected_items_down" ] + ]; + + settings = { + user_interface = "alternative"; + playlist_display_mode = "columns"; + browser_display_mode = "columns"; + playlist_editor_display_mode = "classic"; + + empty_tag_color = "magenta"; + header_window_color = "magenta"; + volume_color = "cyan"; + state_line_color = "magenta"; + state_flags_color = "magenta:b"; + color1 = "white"; + color2 = "magenta"; + main_window_color = "white"; + progressbar_color = "black:b"; + progressbar_elapsed_color = "magenta:b"; + statusbar_color = "magenta"; + statusbar_time_color = "magenta:b"; + player_state_color = "magenta:b"; + alternative_ui_separator_color = "magenta"; + window_border_color = "magenta"; + active_window_border = "red"; + + progressbar_look = "=>-"; + now_playing_prefix = "$(blue)$b"; + now_playing_suffix = "$/b$(end)"; + current_item_prefix = "$(magenta)$r$b"; + current_item_suffix = "$/r$(end)$/b"; + current_item_inactive_column_prefix = "$(white)$r"; + current_item_inactive_column_suffix = "$/r$(end)"; + + media_library_primary_tag = "album_artist"; + media_library_albums_split_by_date = "no"; + startup_screen = "browser"; + ignore_leading_the = "yes"; + display_volume_level = "no"; + external_editor = "sensible-editor"; + use_console_editor = "yes"; + mouse_support = "yes"; + + visualizer_data_source = cfg.mpd.visualizer_fifo; + visualizer_output_name = cfg.mpd.visualizer_name; + visualizer_type = "spectrum"; + visualizer_in_stereo = "yes"; + visualizer_look = "●●"; + visualizer_color = "white, cyan, blue, magenta, red, red, black"; + visualizer_spectrum_smooth_look = "yes"; + visualizer_autoscale = "yes"; + visualizer_spectrum_dft_size = 3; + }; + }; +} diff --git a/modules/music/config.nix b/modules/music/config.nix index 3e02957..502b9eb 100644 --- a/modules/music/config.nix +++ b/modules/music/config.nix @@ -1,10 +1,12 @@ { config, ... } : { - mopidyHttpPort = 6680; + # mopidyHttpPort = 6680; mpd = { host = "127.0.0.1"; port = 6600; musicDir = "${config.home.homeDirectory}/Downloads/music"; playlistDir = "${config.home.homeDirectory}/Downloads/music/playlist"; + visualizer_name = "my_fifo"; + visualizer_fifo = "/tmp/mpd.fifo"; }; } diff --git a/modules/music/default.home.nix b/modules/music/default.home.nix index 10c91bc..ac4f9d6 100644 --- a/modules/music/default.home.nix +++ b/modules/music/default.home.nix @@ -1,133 +1,7 @@ -{ config, pkgs, ... }@moduleAttrs: -let - cfg = import ./config.nix moduleAttrs; -in +{ ... }: { - home.packages = with pkgs; [ mpc_cli playerctl ]; - - services.mopidy = { - enable = true; - extensionPackages = with pkgs; [ - mopidy-mpd - mopidy-mpris - mopidy-spotify - mopidy-iris - # mopidy-ytmusic - ]; - settings = { - core = { - restore_state = true; - }; - file = { - enabled = true; - media_dirs = [ cfg.mpd.musicDir ]; - show_dotfiles = false; - }; - m3u = { - enabled = true; - playlists_dir = cfg.mpd.playlistDir; - }; - audio = { - mixer = "software"; - output = "autoaudiosink"; - }; - mpris = { - enabled = true; - bus_type = "session"; - }; - mpd = { - enabled = true; - hostname = cfg.mpd.host; - port = cfg.mpd.port; - max_connections = 20; - connection_timeout = 60; - }; - http = { - enabled = true; - hostname = "0.0.0.0"; - port = cfg.mopidyHttpPort; - default_app = "iris"; - }; - softwaremixer.enabled = true; - stream.enabled = true; - spotify = (import ./spotify.private.nix) // { - timeout = 20000; - bitrate = 320; - cache_size = 32 * 1024; - }; - # ytmusic = { - # enabled = true; - # oauth_json = "~/.local/share/mopidy/ytmusic-auth.json"; - # }; - }; - }; - - programs.ncmpcpp = { - enable = true; - package = pkgs.ncmpcpp; - - bindings = with builtins; let - toBinding = s: let get = elemAt s; in { key = get 0; command = get 1; }; - in - map toBinding [ - [ "h" [ "previous_column" "master_screen" "jump_to_parent_directory" ] ] - [ "l" [ "next_column" "slave_screen" "enter_directory" ] ] - [ "k" "scroll_up" ] - [ "j" "scroll_down" ] - [ "g" "page_up" ] - [ "G" "page_down" ] - [ "d" "delete_playlist_items" ] - [ "n" "next_found_item" ] - [ "N" "previous_found_item" ] - [ "P" "show_playlist_editor" ] - [ "B" "show_browser" ] - [ "s" "show_search_engine" ] - [ "S" "show_search_engine" ] - [ "8" "show_visualizer" ] - [ "ctrl-s" "save_playlist" ] - [ "c" "clear_main_playlist" ] - [ "ctrl-l" "show_lyrics" ] - ]; - - settings = { - user_interface = "alternative"; - playlist_display_mode = "columns"; - browser_display_mode = "columns"; - playlist_editor_display_mode = "classic"; - - empty_tag_color = "magenta"; - header_window_color = "magenta"; - volume_color = "cyan"; - state_line_color = "magenta"; - state_flags_color = "magenta:b"; - color1 = "white"; - color2 = "magenta"; - main_window_color = "white"; - progressbar_color = "black:b"; - progressbar_elapsed_color = "magenta:b"; - statusbar_color = "magenta"; - statusbar_time_color = "magenta:b"; - player_state_color = "magenta:b"; - alternative_ui_separator_color = "magenta"; - window_border_color = "magenta"; - active_window_border = "red"; - - progressbar_look = "=>-"; - now_playing_prefix = "$(blue)$b"; - now_playing_suffix = "$/b$(end)"; - current_item_prefix = "$(magenta)$r$b"; - current_item_suffix = "$/r$(end)$/b"; - current_item_inactive_column_prefix = "$(white)$r"; - current_item_inactive_column_suffix = "$/r$(end)"; - - media_library_primary_tag = "album_artist"; - media_library_albums_split_by_date = "no"; - startup_screen = "browser"; - ignore_leading_the = "yes"; - display_volume_level = "no"; - external_editor = "sensible-editor"; - use_console_editor = "yes"; - mouse_support = "yes"; - }; - }; + imports = [ + ./mpd.home.nix + ./client.home.nix + ]; } diff --git a/modules/music/mpd.home.nix b/modules/music/mpd.home.nix new file mode 100644 index 0000000..3619786 --- /dev/null +++ b/modules/music/mpd.home.nix @@ -0,0 +1,55 @@ +{ ... }@moduleAttrs: +let + cfg = import ./config.nix moduleAttrs; +in +{ + services.mpd = { + enable = true; + musicDirectory = cfg.mpd.musicDir; + playlistDirectory = cfg.mpd.playlistDir; + network = { + listenAddress = cfg.mpd.host; + port = cfg.mpd.port; + }; + extraConfig = '' + user "imsohexy" + group "users" + restore_paused "yes" + metadata_to_use "artist,album,title,track,name,genre,date,composer,performer,disc" + auto_update "yes" + auto_update_depth "5" + follow_outside_symlinks "yes" + follow_inside_symlinks "yes" + + input { + plugin "curl" + } + + audio_output { + type "pipewire" + name "My PipeWire Device" + } + + audio_output { + type "fifo" + name "${cfg.mpd.visualizer_name}" + path "${cfg.mpd.visualizer_fifo}" + format "44100:16:2" + } + + filesystem_charset "UTF-8" + ''; + }; + + services.mpdris2 = { + # TODO: Hook to update dwmblock + enable = true; + notifications = false; + multimediaKeys = false; + mpd = { + host = cfg.mpd.host; + port = cfg.mpd.port; + musicDirectory = cfg.mpd.musicDir; + }; + }; +} |
