diff options
| author | Akshay Nair <phenax5@gmail.com> | 2025-05-02 16:29:33 +0530 |
|---|---|---|
| committer | Akshay Nair <phenax5@gmail.com> | 2025-05-02 16:29:56 +0530 |
| commit | e9d92cabeed8c9f54c748cddfdc5336fa44fc5bc (patch) | |
| tree | 9e3b578bc773e65d199446332dccb9baf691d8f3 | |
| parent | b9b036c7eb19dce1b4a996915dcfdfda18b2c6ca (diff) | |
| download | nixos-config-e9d92cabeed8c9f54c748cddfdc5336fa44fc5bc.tar.gz nixos-config-e9d92cabeed8c9f54c748cddfdc5336fa44fc5bc.zip | |
Switch to mopidy
| -rw-r--r-- | home.nix | 2 | ||||
| -rw-r--r-- | modules/music.home/.gitignore | 1 | ||||
| -rw-r--r-- | modules/music.home/default.nix (renamed from modules/music.home.nix) | 166 | ||||
| -rw-r--r-- | modules/xresources.home.nix | 2 | ||||
| -rw-r--r-- | modules/xresources/catcula.nix | 1 | ||||
| -rw-r--r-- | packages.nix | 15 | ||||
| -rwxr-xr-x | scripts/commands/:music-web | 5 | ||||
| -rwxr-xr-x | scripts/music/player.sh | 4 |
8 files changed, 106 insertions, 90 deletions
@@ -8,7 +8,7 @@ in ./modules/git.home.nix ./modules/keybase.home.nix ./modules/mpv.home.nix - ./modules/music.home.nix + ./modules/music.home/default.nix ./modules/xresources.home.nix ./modules/firefox.home/default.nix ./modules/newsboat.home/default.nix diff --git a/modules/music.home/.gitignore b/modules/music.home/.gitignore new file mode 100644 index 0000000..febbc25 --- /dev/null +++ b/modules/music.home/.gitignore @@ -0,0 +1 @@ +*.private.nix diff --git a/modules/music.home.nix b/modules/music.home/default.nix index d320475..d220646 100644 --- a/modules/music.home.nix +++ b/modules/music.home/default.nix @@ -1,7 +1,5 @@ { config, pkgs, ... }: let - visualizer_name = "my_fifo"; - visualizer_fifo = "/tmp/mpd.fifo"; mpd = { host = "127.0.0.1"; port = 6600; @@ -12,9 +10,89 @@ 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 = [ mpd.musicDir ]; + show_dotfiles = false; + }; + m3u = { + enabled = true; + playlists_dir = mpd.playlistDir; + }; + audio = { + mixer = "software"; + output = "autoaudiosink"; + }; + mpris = { + enabled = true; + bus_type = "session"; + }; + mpd = { + enabled = true; + hostname = mpd.host; + port = mpd.port; + max_connections = 20; + connection_timeout = 60; + }; + http = { + enabled = true; + hostname = "0.0.0.0"; + port = 6680; + 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.override { visualizerSupport = 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"; @@ -55,88 +133,6 @@ in external_editor = "sensible-editor"; use_console_editor = "yes"; mouse_support = "yes"; - - visualizer_data_source = visualizer_fifo; - visualizer_output_name = 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; - }; - - 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" ] - ]; - }; - - services.mpd = { - enable = true; - musicDirectory = mpd.musicDir; - playlistDirectory = mpd.playlistDir; - network = { - listenAddress = mpd.host; - port = 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 "${visualizer_name}" - path "${visualizer_fifo}" - format "44100:16:2" - } - - filesystem_charset "UTF-8" - ''; - }; - - services.mpdris2 = { - enable = true; - notifications = false; - multimediaKeys = false; - mpd = { - host = mpd.host; - port = mpd.port; - musicDirectory = mpd.musicDir; }; }; } diff --git a/modules/xresources.home.nix b/modules/xresources.home.nix index 20d3ce1..818db22 100644 --- a/modules/xresources.home.nix +++ b/modules/xresources.home.nix @@ -45,7 +45,7 @@ "dmenu.highlightselbg" = theme.accent; "dmenu.highlightselfg" = theme.background; - "dwm.normbordercolor" = theme.background; + "dwm.normbordercolor" = theme.background-light; "dwm.normbgcolor" = theme.background; "dwm.normfgcolor" = theme.foreground; diff --git a/modules/xresources/catcula.nix b/modules/xresources/catcula.nix index b2d5df3..51069da 100644 --- a/modules/xresources/catcula.nix +++ b/modules/xresources/catcula.nix @@ -1,5 +1,6 @@ { background = "#0f0c19"; + background-light = "#1a152c"; foreground = "#d8dee9"; accent = "#4e3aA3"; } diff --git a/packages.nix b/packages.nix index 38ff9df..4327732 100644 --- a/packages.nix +++ b/packages.nix @@ -72,7 +72,7 @@ let slack # Media - spotify + # spotify sxiv yt-dlp imagemagick @@ -110,6 +110,9 @@ let (builtins.getFlake "github:phenax/chelleport/5262d942c4c2c36529fbe704e7de165044e6dc99").packages.x86_64-linux.default (builtins.getFlake "github:phenax/draw-stuff-on-your-screen/6e0e1f6ee603045cac5bb5d9d75d80c9ddef6c6e").packages.x86_64-linux.default + (pkgs.writeShellScriptBin + "null-browser" + ''exec /home/imsohexy/dev/projects/web-browser/result/bin/null-browser "$@"'') ]; utils = with pkgs; [ @@ -135,10 +138,18 @@ let mediainfo poppler_utils glow - wineWowPackages.stable pkgs.steam-run flatpak distrobox + + # FIXME: wine broken: 19 April 25 + (import ( + builtins.fetchTarball { + url = "https://github.com/NixOS/nixpkgs/archive/21808d22b1cda1898b71cf1a1beb524a97add2c4.tar.gz"; + } + ) {}).wineWowPackages.stable + + # wineWowPackages.stable # appimage-run # Audio diff --git a/scripts/commands/:music-web b/scripts/commands/:music-web new file mode 100755 index 0000000..a14afc8 --- /dev/null +++ b/scripts/commands/:music-web @@ -0,0 +1,5 @@ +#!/usr/bin/env sh + +xdg-open 'http://localhost:6680' + +# spotify diff --git a/scripts/music/player.sh b/scripts/music/player.sh index e7989e1..270d02f 100755 --- a/scripts/music/player.sh +++ b/scripts/music/player.sh @@ -1,5 +1,7 @@ #!/usr/bin/env bash +MAX_CHARS=36 + player() { playerctl --player=mopidy "$@"; } # Get player state @@ -16,7 +18,7 @@ get_play_state() { # Get title - artist (song label) #get_label() { player metadata --format '{{title}} - {{artist}}' || echo '...'; } get_label() { - echo -n "$(mpc current | cut -c1-20)"; + echo -n "$(mpc current | cut -c1-"$MAX_CHARS")"; echo "..."; } |
