aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAkshay Nair <phenax5@gmail.com>2025-05-02 16:29:33 +0530
committerAkshay Nair <phenax5@gmail.com>2025-05-02 16:29:56 +0530
commite9d92cabeed8c9f54c748cddfdc5336fa44fc5bc (patch)
tree9e3b578bc773e65d199446332dccb9baf691d8f3
parentb9b036c7eb19dce1b4a996915dcfdfda18b2c6ca (diff)
downloadnixos-config-e9d92cabeed8c9f54c748cddfdc5336fa44fc5bc.tar.gz
nixos-config-e9d92cabeed8c9f54c748cddfdc5336fa44fc5bc.zip
Switch to mopidy
-rw-r--r--home.nix2
-rw-r--r--modules/music.home/.gitignore1
-rw-r--r--modules/music.home/default.nix (renamed from modules/music.home.nix)166
-rw-r--r--modules/xresources.home.nix2
-rw-r--r--modules/xresources/catcula.nix1
-rw-r--r--packages.nix15
-rwxr-xr-xscripts/commands/:music-web5
-rwxr-xr-xscripts/music/player.sh4
8 files changed, 106 insertions, 90 deletions
diff --git a/home.nix b/home.nix
index 95ed575..76f56b9 100644
--- a/home.nix
+++ b/home.nix
@@ -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 "...";
}