From 6d14f79d4a5388da01d55071193637e34153c156 Mon Sep 17 00:00:00 2001 From: Lucien Cartier-Tilet Date: Sun, 31 May 2026 15:24:03 +0200 Subject: [PATCH] feat(modules): add ncmpcpp configuration --- users/modules/media/default.nix | 2 + users/modules/media/mpd.nix | 5 ++ users/modules/media/ncmpcpp.nix | 87 +++++++++++++++++++++++++++++++++ 3 files changed, 94 insertions(+) create mode 100644 users/modules/media/ncmpcpp.nix diff --git a/users/modules/media/default.nix b/users/modules/media/default.nix index 925ad58..81563f8 100644 --- a/users/modules/media/default.nix +++ b/users/modules/media/default.nix @@ -11,6 +11,7 @@ in { ./mpd.nix ./mpd-mpris.nix ./mpv.nix + ./ncmpcpp.nix ]; options.home.media.fullDesktop = mkEnableOption "Enables everything"; @@ -18,5 +19,6 @@ in { mopidy.enable = mkDefault cfg.fullDesktop; mpd.enable = mkDefault (cfg.fullDesktop or cfg.mpd-mpris.enable); mpv.enable = mkDefault cfg.fullDesktop; + ncmpcpp.enable = mkDefault config.home.media.mpd.enable; }; } diff --git a/users/modules/media/mpd.nix b/users/modules/media/mpd.nix index 26f0a08..c9888fa 100644 --- a/users/modules/media/mpd.nix +++ b/users/modules/media/mpd.nix @@ -19,6 +19,11 @@ in { bind_to_address "localhost" auto_update "yes" + audio_output { + type "pipewire" + name "PipeWire" + } + audio_output { type "fifo" name "my_fifo" diff --git a/users/modules/media/ncmpcpp.nix b/users/modules/media/ncmpcpp.nix new file mode 100644 index 0000000..87c0610 --- /dev/null +++ b/users/modules/media/ncmpcpp.nix @@ -0,0 +1,87 @@ +{ + lib, + config, + ... +}: +with lib; let + cfg = config.home.media.ncmpcpp; +in { + options.home.media.ncmpcpp.enable = mkEnableOption "Enable ncmpcpp"; + config.programs.ncmpcpp = let + musicDir = config.services.mpd.musicDirectory; + in + mkIf cfg.enable { + inherit (cfg) enable; + mpdMusicDir = musicDir; + settings = { + # directories + ncmpcpp_directory = "${config.home.homeDirectory}/.config/ncmpcpp"; + lyrics_directory = "${musicDir}/.lyrics"; + + # MPD + mpd_host = "localhost"; + mpd_port = 6600; + mpd_connection_timeout = 5; + mpd_crossfade_time = 0; + + # music visualizer + visualizer_output_name = "my_fifo"; + visualizer_in_stereo = "yes"; + # visualizer_type = "spectrum"; + visualizer_look = "+|"; + visualizer_color = "blue, cyan, green, yellow, magenta, red"; + + system_encoding = "UTF-8"; + + # song format + song_list_format = "(6)[]{} (23)[red]{a} (26)[yellow]{t|f} (40)[green]{b} (4)[blue]{l}"; + now_playing_prefix = "$b"; + now_playing_suffix = "$8$/b"; + + # columns settings + song_columns_list_format = "(6)[]{} (23)[red]{a} (26)[yellow]{t|f} (40)[green]{b} (4)[blue]{l}"; + + playlist_shorten_total_times = "yes"; + playlist_display_mode = "columns"; + browser_display_mode = "columns"; + search_engine_display_mode = "columns"; + playlist_editor_display_mode = "columns"; + autocenter_mode = "yes"; + centered_cursor = "yes"; + + progressbar_look = "─> "; + header_visibility = "no"; + statusbar_visibility = "no"; + titles_visibility = "no"; + allow_for_physical_item_deletion = "yes"; + + lastfm_preferred_language = "en"; + space_add_mode = "add_remove"; + + locked_screen_width_part = "50"; + ask_for_locked_screen_width_part = "yes"; + jump_to_now_playing_song_at_start = "yes"; + ask_before_clearing_playlists = "yes"; + clock_display_seconds = "no"; + display_volume_level = "yes"; + display_bitrate = "no"; + display_remaining_time = "yes"; + regular_expressions = "extended"; + ignore_leading_the = "yes"; + ignore_diacritics = "yes"; + mouse_support = "no"; + tags_separator = ";"; + enable_window_title = "yes"; + search_engine_default_search_mode = 1; + external_editor = "emacsclient -c"; + use_console_editor = "yes"; + + # colours + colors_enabled = "yes"; + volume_color = "default"; + progressbar_color = "black"; + progressbar_elapsed_color = "white"; + statusbar_color = "white"; + }; + }; +}