1

Compare commits

...

3 Commits

3 changed files with 124 additions and 67 deletions

View File

@ -136,6 +136,10 @@ yt-dlp -f 'bv*[ext=mp4]+ba[ext=m4a]/b[ext=mp4] / bv*+ba/b' --recode-video mp4 "<
# Download mp3 video in best quality # Download mp3 video in best quality
yt-dlp -f 'ba' --extract-audio --audio-format mp3 "<url>" yt-dlp -f 'ba' --extract-audio --audio-format mp3 "<url>"
% spotdl
# Download spotify playlist
spotdl --config /home/christoph/.spotdl/config.json --user-auth --format m4a --bitrate disable --threads 24 --generate-lrc --m3u "<name>" download "<url>"
; =========================== ; ===========================
; FFMPEG ; FFMPEG
; =========================== ; ===========================

View File

@ -366,6 +366,7 @@ rec {
imagemagick # Convert image (magic) imagemagick # Convert image (magic)
mp3val # Validate mp3 files mp3val # Validate mp3 files
flac # Validate flac files flac # Validate flac files
spotdl
# Document utils # Document utils
poppler_utils # pdfunite poppler_utils # pdfunite
@ -478,28 +479,29 @@ rec {
# https://beets.readthedocs.io/en/stable/reference/config.html # https://beets.readthedocs.io/en/stable/reference/config.html
settings = { settings = {
directory = "${home.homeDirectory}/Music"; directory = "${home.homeDirectory}/Music";
threaded = "yes"; threaded = true;
art_filename = "cover"; art_filename = "cover";
ui = { ui = {
color = "yes"; color = true;
}; };
import = { import = {
write = "yes"; # Write metadata to files write = true; # Write metadata to files
copy = "yes"; # Move files to the music directory when importing copy = true; # Move files to the music directory when importing
log = "${home.homeDirectory}/Music/.beetslog.txt"; log = "${home.homeDirectory}/Music/.beetslog.txt";
}; };
paths = { paths = {
default = "$albumartist/$albumartist - $album/$track $title"; default = "$albumartist/$albumartist - $album/$track $title";
singleton = "$artist/0 Singles/$artist - $title"; # Single songs singleton = "0 Singles/$artist - $title"; # Single songs
comp = "1 Various Arists/$album/$track $title"; comp = "1 Various/$album/$track $title";
}; };
plugins = [ plugins = [
"badfiles" # check audio file integrity "badfiles" # check audio file integrity
"duplicates" "duplicates"
"edit" # edit metadata in text editor
"fetchart" # pickup local cover art or search online "fetchart" # pickup local cover art or search online
"fish" # beet fish generates ~/.config/fish/completions file "fish" # beet fish generates ~/.config/fish/completions file
# "lyrics" # fetch song lyrics # "lyrics" # fetch song lyrics
@ -507,7 +509,7 @@ rec {
]; ];
fetchart = { fetchart = {
auto = "yes"; auto = true;
sources = "filesystem coverart itunes amazon albumart"; # sources are queried in this order sources = "filesystem coverart itunes amazon albumart"; # sources are queried in this order
}; };
@ -517,7 +519,7 @@ rec {
# }; # };
replaygain = { replaygain = {
auto = "no"; # analyze on import automatically auto = false; # analyze on import automatically
backend = "ffmpeg"; backend = "ffmpeg";
overwrite = true; # re-analyze files with existing replaygain tags on import overwrite = true; # re-analyze files with existing replaygain tags on import
}; };
@ -721,28 +723,28 @@ rec {
nushell.enable = false; nushell.enable = false;
spicetify = let # spicetify = let
spicePkgs = inputs.spicetify-nix.legacyPackages.${pkgs.system}; # spicePkgs = inputs.spicetify-nix.legacyPackages.${pkgs.system};
in { # in {
enable = true; # enable = true;
#
# https://github.com/catppuccin/spicetify # # https://github.com/catppuccin/spicetify
theme = spicePkgs.themes.catppuccin; # theme = spicePkgs.themes.catppuccin;
colorScheme = "mocha"; # colorScheme = "mocha";
#
wayland = true; # wayland = true;
#
enabledExtensions = with spicePkgs.extensions; [ # enabledExtensions = with spicePkgs.extensions; [
adblock # adblock
hidePodcasts # hidePodcasts
oneko # cat # oneko # cat
]; # ];
# enabledCustomApps = with spicePkgs.apps; []; # # enabledCustomApps = with spicePkgs.apps; [];
enabledSnippets = with spicePkgs.snippets; [ # enabledSnippets = with spicePkgs.snippets; [
rotatingCoverart # rotatingCoverart
pointer # pointer
]; # ];
}; # };
ssh = { ssh = {
enable = true; enable = true;
@ -794,7 +796,7 @@ rec {
shellWrapperName = "y"; shellWrapperName = "y";
plugins = { plugins = {
inherit (pkgs.yaziPlugins) chmod diff full-border git lazygit mount ouch rsync smart-paste starship sudo; inherit (pkgs.yaziPlugins) chmod diff full-border git lazygit mount ouch rsync starship sudo; # smar-paste
}; };
initLua = '' initLua = ''
@ -978,11 +980,11 @@ rec {
run = [''shell -- for path in "$@"; do echo "file://$path"; done | wl-copy -t text/uri-list'' "yank"]; run = [''shell -- for path in "$@"; do echo "file://$path"; done | wl-copy -t text/uri-list'' "yank"];
desc = "Copy files to system clipboard on yank"; desc = "Copy files to system clipboard on yank";
} }
{ # {
on = "p"; # on = "p";
run = "plugin smart-paste"; # run = "plugin smart-paste";
desc = "Paste into hovered directory or CWD"; # desc = "Paste into hovered directory or CWD";
} # }
{ {
on = "d"; on = "d";
run = "remove --permanently"; run = "remove --permanently";
@ -1076,7 +1078,7 @@ rec {
packages = [ packages = [
"com.github.tchx84.Flatseal" "com.github.tchx84.Flatseal"
# "com.spotify.Client" # Don't need this when spicetify is enabled "com.spotify.Client" # Don't need this when spicetify is enabled
# NOTE: Also change discord-ipc-0 below # NOTE: Also change discord-ipc-0 below
"com.discordapp.Discord" "com.discordapp.Discord"

View File

@ -83,7 +83,7 @@ in {
tabs: [ tabs: [
( (
name: "Queue", name: "Queue (1)",
pane: Split( pane: Split(
borders: "NONE", borders: "NONE",
direction: Horizontal, direction: Horizontal,
@ -133,31 +133,31 @@ in {
), ),
), ),
( (
name: "Albums", name: "Albums (2)",
pane: Pane(Albums), pane: Pane(Albums),
), ),
( (
name: "Artists", name: "Album Artists (3)",
pane: Pane(AlbumArtists),
),
(
name: "Artists (4)",
pane: Pane(Artists), pane: Pane(Artists),
), ),
( (
name: "Playlists", name: "Playlists (5)",
pane: Pane(Playlists), pane: Pane(Playlists),
), ),
( (
name: "Search", name: "Directories (6)",
pane: Pane(Directories),
),
(
name: "Search (7)",
pane: Pane(Search), pane: Pane(Search),
), ),
// ( // (
// name: "Album Artists", // name: "Visualizer (8)",
// pane: Pane(AlbumArtists),
// ),
// (
// name: "Directories",
// pane: Pane(Directories),
// ),
// (
// name: "Visualizer",
// pane: Pane(Cava), // pane: Pane(Cava),
// ), // ),
], ],
@ -201,20 +201,20 @@ in {
"<Tab>": NextTab, "<Tab>": NextTab,
"<S-Tab>": PreviousTab, "<S-Tab>": PreviousTab,
"1": SwitchToTab("Queue"), "1": SwitchToTab("Queue (1)"),
"2": SwitchToTab("Albums"), "2": SwitchToTab("Albums (2)"),
"3": SwitchToTab("Artists"), "3": SwitchToTab("Album Artists (3)"),
"4": SwitchToTab("Playlists"), "4": SwitchToTab("Artists (4)"),
"5": SwitchToTab("Search"), "5": SwitchToTab("Playlists (5)"),
// " ": SwitchToTab("Visualizer"), "6": SwitchToTab("Directories (6)"),
// " ": SwitchToTab("Directories"), "7": SwitchToTab("Search (7)"),
// " ": SwitchToTab("Album Artists"), // "8": SwitchToTab("Visualizer (8)"),
"f": SeekForward, "f": SeekForward,
"z": ToggleRepeat, "z": ToggleRepeat,
"x": ToggleRandom, "x": ToggleRandom,
"c": ToggleConsume, "c": ToggleConsumeOnOff, // Skip OneShot mode
"v": ToggleSingle, "v": ToggleSingleOnOff, // Skip OneShot mode
"b": SeekBack, "b": SeekBack,
"~": ShowHelp, "~": ShowHelp,
"u": Update, "u": Update,
@ -505,13 +505,64 @@ in {
) )
], ],
right: [ right: [
// (
// kind: Property(Widget(States(
// active_style: (fg: "#${accentHL}", modifiers: "Bold|Underlined"),
// inactive_style: (fg: "#${text}"),
// separator_style: (fg: "#${text}"))),
// )
// // style: (fg: "dark_gray")
// ),
( (
kind: Property(Widget(States( kind: Property(Status(RepeatV2(
active_style: (fg: "#${accentHL}", modifiers: "Bold|Underlined"), on_label: "Repeat (z)",
inactive_style: (fg: "#${text}"), off_label: "Repeat (z)",
separator_style: (fg: "#${text}"))) on_style: (fg: "#${accentHL}", modifiers: "Bold|Underlined"),
) off_style: (fg: "#${text}"),
// style: (fg: "dark_gray") ))),
),
(
kind: Text(" / "),
style: (fg: "#${text}"),
),
(
kind: Property(Status(RandomV2(
on_label: "Random (x)",
off_label: "Random (x)",
on_style: (fg: "#${accentHL}", modifiers: "Bold|Underlined"),
off_style: (fg: "#${text}"),
))),
),
(
kind: Text(" / "),
style: (fg: "#${text}"),
),
(
kind: Property(Status(ConsumeV2(
on_label: "Consume (c)",
oneshot_label: "Consume OS (c)",
off_label: "Consume (c)",
on_style: (fg: "#${accentHL}", modifiers: "Bold|Underlined"),
oneshot_style: (fg: "#${accentHL}", modifiers: "Bold|Underlined"),
off_style: (fg: "#${text}"),
))),
),
(
kind: Text(" / "),
style: (fg: "#${text}"),
),
(
kind: Property(Status(SingleV2(
on_label: "Single (v)",
oneshot_label: "Single OS (v)",
off_label: "Single (v)",
on_style: (fg: "#${accentHL}", modifiers: "Bold|Underlined"),
oneshot_style: (fg: "#${accentHL}", modifiers: "Bold|Underlined"),
off_style: (fg: "#${text}")
))),
), ),
] ]
), ),