Compare commits
13 Commits
9797eff134
...
906563662a
| Author | SHA1 | Date | |
|---|---|---|---|
|
906563662a
|
|||
|
4f7a47990a
|
|||
|
bc07987b98
|
|||
|
5cb855dd03
|
|||
|
461c59037c
|
|||
|
566ab4a3e6
|
|||
|
f3e9289bd1
|
|||
|
c80af52db8
|
|||
|
e0952d7ef5
|
|||
|
26a2c4222a
|
|||
|
0ee42bcc5f
|
|||
|
c8ae2adf4f
|
|||
|
3671c7954d
|
52
derivations/0_template/default.nix
Normal file
52
derivations/0_template/default.nix
Normal file
@ -0,0 +1,52 @@
|
||||
{
|
||||
lib,
|
||||
stdenv,
|
||||
stdenvNoCC,
|
||||
}:
|
||||
stdenv.mkDerivation {
|
||||
pname = "TEMPLATE";
|
||||
version = "";
|
||||
|
||||
src = ./.;
|
||||
|
||||
dontConfigure = true;
|
||||
dontBuild = true;
|
||||
doCheck = false;
|
||||
|
||||
installPhase = ''
|
||||
runHook preInstall
|
||||
|
||||
mkdir -p $out
|
||||
touch $out/TEMPLATE
|
||||
|
||||
runHook postInstall
|
||||
'';
|
||||
|
||||
meta = with lib; {
|
||||
description = "TEMPLATE";
|
||||
homepage = "TEMPLATE";
|
||||
license = licenses.mit;
|
||||
};
|
||||
}
|
||||
# Or without cc:
|
||||
# stdenvNoCC.mkDerivation {
|
||||
# pname = "TEMPLATE";
|
||||
# version = "";
|
||||
#
|
||||
# src = ./.;
|
||||
#
|
||||
# installPhase = ''
|
||||
# runHook preInstall
|
||||
#
|
||||
# mkdir -p $out
|
||||
# touch $out/TEMPLATE
|
||||
#
|
||||
# runHook postInstall
|
||||
# '';
|
||||
#
|
||||
# meta = with lib; {
|
||||
# description = "TEMPLATE";
|
||||
# homepage = "TEMPLATE";
|
||||
# license = licenses.mit;
|
||||
# };
|
||||
# }
|
||||
@ -4,4 +4,6 @@
|
||||
...
|
||||
}: {
|
||||
# Obsolete derivations are kept in "1_deprecated" for reference.
|
||||
|
||||
monolisa = pkgs.callPackage ./monolisa {};
|
||||
}
|
||||
|
||||
BIN
derivations/monolisa/MonoLisa-italic.ttf
Normal file
BIN
derivations/monolisa/MonoLisa-italic.ttf
Normal file
Binary file not shown.
BIN
derivations/monolisa/MonoLisa-normal.ttf
Normal file
BIN
derivations/monolisa/MonoLisa-normal.ttf
Normal file
Binary file not shown.
26
derivations/monolisa/default.nix
Normal file
26
derivations/monolisa/default.nix
Normal file
@ -0,0 +1,26 @@
|
||||
{
|
||||
lib,
|
||||
stdenvNoCC,
|
||||
}:
|
||||
stdenvNoCC.mkDerivation {
|
||||
pname = "monolisa";
|
||||
version = "1.0";
|
||||
|
||||
src = ./.;
|
||||
|
||||
installPhase = ''
|
||||
runHook preInstall
|
||||
|
||||
mkdir -p $out/share/fonts/truetype
|
||||
mv MonoLisa-italic.ttf $out/share/fonts/truetype/
|
||||
mv MonoLisa-normal.ttf $out/share/fonts/truetype/
|
||||
|
||||
runHook postInstall
|
||||
'';
|
||||
|
||||
meta = with lib; {
|
||||
description = "Programming Font with Ligatures and Cursives";
|
||||
homepage = "https://www.monolisa.dev/";
|
||||
license = licenses.mit;
|
||||
};
|
||||
}
|
||||
37
flake.lock
generated
37
flake.lock
generated
@ -1349,9 +1349,31 @@
|
||||
"nixvim": "nixvim",
|
||||
"nps": "nps",
|
||||
"nur": "nur",
|
||||
"spicetify-nix": "spicetify-nix",
|
||||
"v4l2loopback-pinned": "v4l2loopback-pinned"
|
||||
}
|
||||
},
|
||||
"spicetify-nix": {
|
||||
"inputs": {
|
||||
"nixpkgs": [
|
||||
"nixpkgs"
|
||||
],
|
||||
"systems": "systems_5"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1751171964,
|
||||
"narHash": "sha256-SeVvQm9ex+6BhDPIsRt9E1kSmMblQ6gTi53baphnX08=",
|
||||
"owner": "Gerg-L",
|
||||
"repo": "spicetify-nix",
|
||||
"rev": "16adc163d966fc2bb5da47580df4602ae2c7a310",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "Gerg-L",
|
||||
"repo": "spicetify-nix",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"systems": {
|
||||
"locked": {
|
||||
"lastModified": 1689347949,
|
||||
@ -1412,6 +1434,21 @@
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"systems_5": {
|
||||
"locked": {
|
||||
"lastModified": 1681028828,
|
||||
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
|
||||
"owner": "nix-systems",
|
||||
"repo": "default",
|
||||
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "nix-systems",
|
||||
"repo": "default",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"v4l2loopback-pinned": {
|
||||
"locked": {
|
||||
"lastModified": 1748124733,
|
||||
|
||||
@ -27,6 +27,10 @@
|
||||
nur.url = "github:nix-community/NUR";
|
||||
nur.inputs.nixpkgs.follows = "nixpkgs";
|
||||
|
||||
# Spicetify
|
||||
spicetify-nix.url = "github:Gerg-L/spicetify-nix";
|
||||
spicetify-nix.inputs.nixpkgs.follows = "nixpkgs";
|
||||
|
||||
# Ags for widgets (this was a terrible idea)
|
||||
ags.url = "github:Aylur/ags";
|
||||
ags.inputs.nixpkgs.follows = "nixpkgs";
|
||||
|
||||
@ -3,6 +3,7 @@
|
||||
# The nixosConfig allows to access the toplevel system configuration from within home manager
|
||||
# https://github.com/nix-community/home-manager/blob/586ac1fd58d2de10b926ce3d544b3179891e58cb/nixos/default.nix#L19
|
||||
{
|
||||
inputs,
|
||||
hostname,
|
||||
username,
|
||||
lib,
|
||||
@ -48,7 +49,8 @@ rec {
|
||||
enable = true; # You can't disable this
|
||||
lightScheme = "catppuccin-latte";
|
||||
darkScheme = "catppuccin-mocha";
|
||||
font = "JetBrainsMono Nerd Font Mono";
|
||||
# font = "JetBrainsMono Nerd Font Mono";
|
||||
font = builtins.head nixosConfig.fonts.fontconfig.defaultFonts.monospace;
|
||||
};
|
||||
|
||||
docs.enable = true;
|
||||
@ -510,11 +512,12 @@ rec {
|
||||
};
|
||||
|
||||
lyrics = {
|
||||
auto = "yes";
|
||||
synced = "yes"; # prefer synced lyrics if provided
|
||||
};
|
||||
|
||||
replaygain = {
|
||||
auto = "yes"; # analyze on import automatically
|
||||
auto = "no"; # analyze on import automatically
|
||||
backend = "ffmpeg";
|
||||
overwrite = true; # re-analyze files with existing replaygain tags on import
|
||||
};
|
||||
@ -523,6 +526,39 @@ rec {
|
||||
|
||||
btop.enable = true;
|
||||
|
||||
cava = {
|
||||
enable = true;
|
||||
|
||||
settings = {
|
||||
general = {
|
||||
framerate = 60; # default 60
|
||||
autosens = 1; # default 1
|
||||
sensitivity = 100; # default 100
|
||||
lower_cutoff_freq = 50; # not passed to cava if not provided
|
||||
higher_cutoff_freq = 10000; # not passed to cava if not provided
|
||||
};
|
||||
|
||||
smoothing = {
|
||||
noise_reduction = 77; # default 77
|
||||
monstercat = false; # default false
|
||||
waves = false; # default false
|
||||
};
|
||||
|
||||
color = {
|
||||
# https://github.com/catppuccin/cava/blob/main/themes/latte-transparent.cava
|
||||
gradient = 1;
|
||||
gradient_color_1 = "'#179299'";
|
||||
gradient_color_2 = "'#04a5e5'";
|
||||
gradient_color_3 = "'#209fb5'";
|
||||
gradient_color_4 = "'#1e66f5'";
|
||||
gradient_color_5 = "'#8839ef'";
|
||||
gradient_color_6 = "'#ea76cb'";
|
||||
gradient_color_7 = "'#e64553'";
|
||||
gradient_color_8 = "'#d20f39'";
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
direnv = {
|
||||
enable = true;
|
||||
nix-direnv.enable = true;
|
||||
@ -685,8 +721,31 @@ rec {
|
||||
|
||||
nushell.enable = false;
|
||||
|
||||
spicetify = let
|
||||
spicePkgs = inputs.spicetify-nix.legacyPackages.${pkgs.system};
|
||||
in {
|
||||
enable = true;
|
||||
|
||||
# https://github.com/catppuccin/spicetify
|
||||
theme = spicePkgs.themes.catppuccin;
|
||||
colorScheme = "mocha";
|
||||
|
||||
wayland = true;
|
||||
|
||||
enabledExtensions = with spicePkgs.extensions; [
|
||||
adblock
|
||||
hidePodcasts
|
||||
oneko # cat
|
||||
];
|
||||
# enabledCustomApps = with spicePkgs.apps; [];
|
||||
enabledSnippets = with spicePkgs.snippets; [
|
||||
rotatingCoverart
|
||||
pointer
|
||||
];
|
||||
};
|
||||
|
||||
ssh = {
|
||||
enable = true; # NOTE: Do NOT generate .ssh/config using HM, as it will have invalid permissions!
|
||||
enable = true;
|
||||
compression = true;
|
||||
|
||||
matchBlocks = {
|
||||
@ -924,6 +983,11 @@ rec {
|
||||
run = "plugin smart-paste";
|
||||
desc = "Paste into hovered directory or CWD";
|
||||
}
|
||||
{
|
||||
on = "d";
|
||||
run = "remove --permanently";
|
||||
desc = "Delete selection";
|
||||
}
|
||||
];
|
||||
};
|
||||
};
|
||||
@ -956,18 +1020,19 @@ rec {
|
||||
# Don't start playback after startup
|
||||
restore_paused "yes"
|
||||
|
||||
# Use track tags on shuffle and album tags on album play
|
||||
replaygain "auto"
|
||||
# Use track tags on shuffle and album tags on album play (auto)
|
||||
# Use album's tags (album)
|
||||
# Use track's tags (track)
|
||||
# replaygain "auto"
|
||||
|
||||
# PipeWire main output
|
||||
audio_output {
|
||||
type "pipewire"
|
||||
name "PipeWire Sound Server"
|
||||
|
||||
mixer_type "hardware"
|
||||
|
||||
# Use hardware mixer instead of software volume filter (replaygain_handler "software")
|
||||
replay_gain_handler "mixer"
|
||||
# mixer_type "hardware"
|
||||
# replay_gain_handler "mixer"
|
||||
}
|
||||
|
||||
# FiFo output for cava visualization
|
||||
@ -1011,7 +1076,7 @@ rec {
|
||||
packages = [
|
||||
"com.github.tchx84.Flatseal"
|
||||
|
||||
"com.spotify.Client"
|
||||
# "com.spotify.Client" # Don't need this when spicetify is enabled
|
||||
|
||||
# NOTE: Also change discord-ipc-0 below
|
||||
"com.discordapp.Discord"
|
||||
|
||||
@ -23,5 +23,6 @@
|
||||
inputs.nix-flatpak.homeManagerModules.nix-flatpak
|
||||
inputs.nixvim.homeManagerModules.nixvim
|
||||
inputs.ags.homeManagerModules.default
|
||||
inputs.spicetify-nix.homeManagerModules.default
|
||||
];
|
||||
}
|
||||
|
||||
@ -91,7 +91,7 @@ in {
|
||||
"theme.bar.buttons.padding_x" = "10px";
|
||||
"theme.bar.buttons.padding_y" = "2px";
|
||||
"theme.bar.buttons.radius" = "6px";
|
||||
"theme.bar.buttons.spacing" = "3px";
|
||||
"theme.bar.buttons.spacing" = "2px"; # NOTE: Horizontal inter-button spacing
|
||||
"theme.bar.buttons.style" = "default";
|
||||
"theme.bar.buttons.text" = "#${color.hex.dark.base}";
|
||||
"theme.bar.buttons.y_margins" = "2px"; # NOTE: Top/Bottom bar padding
|
||||
@ -183,7 +183,7 @@ in {
|
||||
# https://github.com/Jas-SinghFSU/HyprPanel/blob/master/src/configuration/modules/config/bar/cava/index.ts
|
||||
"bar.customModules.cava.showActiveOnly" = true;
|
||||
"bar.customModules.cava.bars" = 10;
|
||||
"bar.customModules.cava.leftClick" = "menu:media";
|
||||
# "bar.customModules.cava.leftClick" = "menu:media";
|
||||
|
||||
# https://github.com/Jas-SinghFSU/HyprPanel/blob/master/src/configuration/modules/theme/bar/buttons/cava.ts
|
||||
"theme.bar.buttons.modules.cava.background" = "#${color.hex.dark.red}";
|
||||
|
||||
@ -27,7 +27,10 @@ in {
|
||||
"kitty_mod+l" = "next_layout";
|
||||
};
|
||||
|
||||
settings = {
|
||||
settings = let
|
||||
light = color.hex.light;
|
||||
dark = color.hex.dark;
|
||||
in {
|
||||
editor = config.home.sessionVariables.EDITOR;
|
||||
scrollback_lines = 10000;
|
||||
window_padding_width = 10; # Looks stupid with editors if bg doesn't match
|
||||
@ -48,74 +51,74 @@ in {
|
||||
#
|
||||
|
||||
# The basic colors
|
||||
foreground = "#${color.hex.light.text}";
|
||||
background = "#${color.hex.light.base}";
|
||||
selection_foreground = "#${color.hex.light.base}";
|
||||
selection_background = "#${color.hex.light.rosewater}";
|
||||
background = "#${light.base}";
|
||||
foreground = "#${light.text}";
|
||||
selection_foreground = "#${light.base}";
|
||||
selection_background = "#${light.rosewater}";
|
||||
|
||||
# Cursor colors
|
||||
cursor = "#${color.hex.light.rosewater}";
|
||||
cursor_text_color = "#${color.hex.light.base}";
|
||||
cursor = "#${light.rosewater}";
|
||||
cursor_text_color = "#${light.base}";
|
||||
|
||||
# URL underline color when hovering with mouse
|
||||
url_color = "#${color.hex.light.rosewater}";
|
||||
url_color = "#${light.rosewater}";
|
||||
|
||||
# Kitty window border colors
|
||||
active_border_color = "#${color.hex.light.lavender}";
|
||||
inactive_border_color = "#${color.hex.light.overlay0}";
|
||||
bell_border_color = "#${color.hex.light.yellow}";
|
||||
active_border_color = "#${light.lavender}";
|
||||
inactive_border_color = "#${light.overlay0}";
|
||||
bell_border_color = "#${light.yellow}";
|
||||
|
||||
# OS Window titlebar colors
|
||||
wayland_titlebar_color = "system";
|
||||
macos_titlebar_color = "system";
|
||||
|
||||
# Tab bar colors
|
||||
active_tab_foreground = "#${color.hex.dark.base}";
|
||||
active_tab_background = "#${color.hex.dark.lavender}";
|
||||
inactive_tab_foreground = "#${color.hex.dark.text}";
|
||||
inactive_tab_background = "#${color.hex.dark.crust}";
|
||||
tab_bar_background = "#${color.hex.light.base}";
|
||||
active_tab_foreground = "#${dark.base}";
|
||||
active_tab_background = "#${dark.lavender}";
|
||||
inactive_tab_foreground = "#${dark.text}";
|
||||
inactive_tab_background = "#${dark.crust}";
|
||||
tab_bar_background = "#${light.base}";
|
||||
|
||||
# Color for marks (marked text in the terminal)
|
||||
mark1_foreground = "#${color.hex.light.base}";
|
||||
mark1_background = "#${color.hex.light.lavender}";
|
||||
mark2_foreground = "#${color.hex.light.base}";
|
||||
mark2_background = "#${color.hex.light.mauve}";
|
||||
mark3_foreground = "#${color.hex.light.base}";
|
||||
mark3_background = "#${color.hex.light.sapphire}";
|
||||
mark1_foreground = "#${light.base}";
|
||||
mark1_background = "#${light.lavender}";
|
||||
mark2_foreground = "#${light.base}";
|
||||
mark2_background = "#${light.mauve}";
|
||||
mark3_foreground = "#${light.base}";
|
||||
mark3_background = "#${light.sapphire}";
|
||||
|
||||
# The 16 terminal colors
|
||||
# black
|
||||
color0 = "#${color.hex.light.subtext1}";
|
||||
color8 = "#${color.hex.light.subtext0}";
|
||||
color0 = "#${light.subtext1}";
|
||||
color8 = "#${light.subtext0}";
|
||||
|
||||
# red
|
||||
color1 = "#${color.hex.light.red}";
|
||||
color9 = "#${color.hex.light.red}";
|
||||
color1 = "#${light.red}";
|
||||
color9 = "#${light.red}";
|
||||
|
||||
# green
|
||||
color2 = "#${color.hex.light.green}";
|
||||
color10 = "#${color.hex.light.green}";
|
||||
color2 = "#${light.green}";
|
||||
color10 = "#${light.green}";
|
||||
|
||||
# yellow
|
||||
color3 = "#${color.hex.light.yellow}";
|
||||
color11 = "#${color.hex.light.yellow}";
|
||||
color3 = "#${light.yellow}";
|
||||
color11 = "#${light.yellow}";
|
||||
|
||||
# blue
|
||||
color4 = "#${color.hex.light.blue}";
|
||||
color12 = "#${color.hex.light.blue}";
|
||||
color4 = "#${light.blue}";
|
||||
color12 = "#${light.blue}";
|
||||
|
||||
# magenta
|
||||
color5 = "#${color.hex.light.pink}";
|
||||
color13 = "#${color.hex.light.pink}";
|
||||
color5 = "#${light.pink}";
|
||||
color13 = "#${light.pink}";
|
||||
|
||||
# cyan
|
||||
color6 = "#${color.hex.light.teal}";
|
||||
color14 = "#${color.hex.light.teal}";
|
||||
color6 = "#${light.teal}";
|
||||
color14 = "#${light.teal}";
|
||||
|
||||
# white
|
||||
color7 = "#${color.hex.light.surface2}";
|
||||
color15 = "#${color.hex.light.surface1}";
|
||||
color7 = "#${light.surface2}";
|
||||
color15 = "#${light.surface1}";
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
@ -1643,6 +1643,7 @@ in {
|
||||
cmd = ["ToggleTerm"];
|
||||
keys = ["<C-/>"];
|
||||
config = mkDefaultConfig name;
|
||||
|
||||
opts = {
|
||||
open_mapping.__raw = "[[<C-/>]]";
|
||||
autochdir = true;
|
||||
@ -1651,16 +1652,19 @@ in {
|
||||
shading_factor = 30; # Default is -30 to darken the terminal
|
||||
start_in_insert = true;
|
||||
terminal_mappings = true;
|
||||
persist_mode = true;
|
||||
size = 20;
|
||||
persist_size = true;
|
||||
persist_mode = false; # Don't persist the current mode (insert/normal)
|
||||
insert_mappings = true;
|
||||
close_on_exit = true;
|
||||
shell = "fish";
|
||||
direction = "horizontal"; # 'vertical' | 'horizontal' | 'window' | 'float'
|
||||
auto_scroll = true;
|
||||
|
||||
float_opts = {
|
||||
border = "curved"; # 'single' | 'double' | 'shadow' | 'curved'
|
||||
width = 80;
|
||||
height = 45;
|
||||
height = 80;
|
||||
winblend = 0;
|
||||
};
|
||||
};
|
||||
|
||||
@ -54,3 +54,12 @@ vim.api.nvim_create_user_command("ToggleAutoLint", function()
|
||||
end, {
|
||||
desc = "Toggle autolint-on-save",
|
||||
})
|
||||
|
||||
-- Toggle Rcmp
|
||||
local Terminal = require("toggleterm.terminal").Terminal
|
||||
local rmcp =
|
||||
Terminal:new({ cmd = "rmpc", hidden = true, close_on_exit = true, auto_scroll = false, direction = "float" })
|
||||
|
||||
vim.g.toggle_rcmp = function()
|
||||
rmcp:toggle()
|
||||
end
|
||||
|
||||
@ -18,7 +18,8 @@ if g.neovide then
|
||||
-- g.neovide_theme = "light"
|
||||
|
||||
-- Neovide Fonts
|
||||
o.guifont = "JetBrainsMono Nerd Font Mono:h12:Medium"
|
||||
-- o.guifont = "JetBrainsMono Nerd Font Mono:h12:Medium"
|
||||
o.guifont = "MonoLisa:h12:Medium"
|
||||
else
|
||||
-- require("notify").notify("Not running in NeoVide")
|
||||
end
|
||||
|
||||
@ -324,10 +324,16 @@ _: let
|
||||
}
|
||||
{
|
||||
mode = "n";
|
||||
key = "<leader>r";
|
||||
key = "<leader>R";
|
||||
action = "<cmd>lua Snacks.picker.resume()<cr>";
|
||||
options.desc = "Last Picker";
|
||||
}
|
||||
{
|
||||
mode = "n";
|
||||
key = "<leader>r";
|
||||
action = "<cmd>lua vim.g.toggle_rcmp()<cr>"; # Defined in extraConfigLua.lua
|
||||
options.desc = "Show Rcmp";
|
||||
}
|
||||
{
|
||||
mode = "n";
|
||||
key = "<leader>i";
|
||||
|
||||
@ -6,7 +6,7 @@
|
||||
pkgs,
|
||||
...
|
||||
}: let
|
||||
inherit (config.modules) rmpc;
|
||||
inherit (config.modules) rmpc color;
|
||||
in {
|
||||
options.modules.rmpc = import ./options.nix {inherit lib mylib;};
|
||||
|
||||
@ -20,7 +20,14 @@ in {
|
||||
|
||||
programs.rmpc.enable = true;
|
||||
|
||||
home.file = {
|
||||
home.packages = with pkgs; [
|
||||
cava
|
||||
python313Packages.syncedlyrics
|
||||
];
|
||||
|
||||
home.file = let
|
||||
themeName = "chriphost";
|
||||
in {
|
||||
".config/rmpc/config.ron".text = ''
|
||||
#![enable(implicit_some)]
|
||||
#![enable(unwrap_newtypes)]
|
||||
@ -28,9 +35,9 @@ in {
|
||||
(
|
||||
address: "127.0.0.1:${builtins.toString config.services.mpd.network.port}",
|
||||
password: None,
|
||||
theme: "chriphost",
|
||||
theme: "${themeName}",
|
||||
cache_dir: None,
|
||||
on_song_change: None,
|
||||
on_song_change: None, // TODO: notify-send song title or sth.
|
||||
volume_step: 5,
|
||||
max_fps: 30,
|
||||
scrolloff: 0,
|
||||
@ -39,6 +46,7 @@ in {
|
||||
enable_config_hot_reload: true,
|
||||
status_update_interval_ms: 1000,
|
||||
rewind_to_start_sec: 30,
|
||||
lyrics_dir: "${config.home.homeDirectory}/Music/.lyrics",
|
||||
|
||||
// Keep this on false, otherwise queue changes will be applied to the current playlist
|
||||
reflect_changes_to_playlist: false,
|
||||
@ -53,25 +61,155 @@ in {
|
||||
vertical_align: Center,
|
||||
horizontal_align: Center,
|
||||
),
|
||||
|
||||
search: (
|
||||
case_sensitive: false,
|
||||
mode: Contains,
|
||||
tags: [
|
||||
(value: "any", label: "Any Tag"),
|
||||
(value: "artist", label: "Artist"),
|
||||
(value: "album", label: "Album"),
|
||||
(value: "albumartist", label: "Album Artist"),
|
||||
(value: "title", label: "Title"),
|
||||
(value: "filename", label: "Filename"),
|
||||
(value: "genre", label: "Genre"),
|
||||
],
|
||||
),
|
||||
|
||||
artists: (
|
||||
album_display_mode: SplitByDate,
|
||||
album_sort_by: Date,
|
||||
),
|
||||
|
||||
tabs: [
|
||||
(
|
||||
name: "Queue",
|
||||
pane: Split(
|
||||
borders: "NONE",
|
||||
direction: Horizontal,
|
||||
panes: [
|
||||
// Left Column (Queue + Cava)
|
||||
(
|
||||
size: "70%",
|
||||
borders: "NONE",
|
||||
pane: Split(
|
||||
direction: Vertical,
|
||||
panes: [
|
||||
(
|
||||
size: "75%",
|
||||
borders: "ALL",
|
||||
pane: Pane(Queue),
|
||||
),
|
||||
(
|
||||
size: "25%",
|
||||
borders: "ALL",
|
||||
pane: Pane(Cava),
|
||||
)
|
||||
]
|
||||
)
|
||||
),
|
||||
|
||||
// Right Column (AlbumArt + Lyrics)
|
||||
(
|
||||
size: "30%",
|
||||
borders: "NONE",
|
||||
pane: Split(
|
||||
direction: Vertical,
|
||||
panes: [
|
||||
(
|
||||
size: "75%",
|
||||
borders: "ALL",
|
||||
pane: Pane(AlbumArt),
|
||||
),
|
||||
(
|
||||
size: "25%",
|
||||
borders: "ALL",
|
||||
pane: Pane(Lyrics),
|
||||
),
|
||||
]
|
||||
),
|
||||
),
|
||||
]
|
||||
),
|
||||
),
|
||||
(
|
||||
name: "Albums",
|
||||
pane: Pane(Albums),
|
||||
),
|
||||
(
|
||||
name: "Artists",
|
||||
pane: Pane(Artists),
|
||||
),
|
||||
(
|
||||
name: "Playlists",
|
||||
pane: Pane(Playlists),
|
||||
),
|
||||
(
|
||||
name: "Search",
|
||||
pane: Pane(Search),
|
||||
),
|
||||
// (
|
||||
// name: "Album Artists",
|
||||
// pane: Pane(AlbumArtists),
|
||||
// ),
|
||||
// (
|
||||
// name: "Directories",
|
||||
// pane: Pane(Directories),
|
||||
// ),
|
||||
// (
|
||||
// name: "Visualizer",
|
||||
// pane: Pane(Cava),
|
||||
// ),
|
||||
],
|
||||
|
||||
cava: (
|
||||
framerate: 60, // default 60
|
||||
autosens: true, // default true
|
||||
sensitivity: 100, // default 100
|
||||
lower_cutoff_freq: 50, // not passed to cava if not provided
|
||||
higher_cutoff_freq: 10000, // not passed to cava if not provided
|
||||
|
||||
input: (
|
||||
method: Fifo,
|
||||
source: "/tmp/mpd.fifo",
|
||||
sample_rate: 44100,
|
||||
channels: 2,
|
||||
sample_bits: 16,
|
||||
),
|
||||
|
||||
smoothing: (
|
||||
noise_reduction: 77, // default 77
|
||||
monstercat: false, // default false
|
||||
waves: false, // default false
|
||||
),
|
||||
|
||||
// this is a list of floating point numbers thats directly passed to cava
|
||||
// they are passed in order that they are defined
|
||||
eq: [],
|
||||
),
|
||||
|
||||
keybinds: (
|
||||
global: {
|
||||
":": CommandMode,
|
||||
",": VolumeDown,
|
||||
"q": Quit,
|
||||
"p": TogglePause,
|
||||
"s": Stop,
|
||||
">": NextTrack,
|
||||
"<": PreviousTrack,
|
||||
",": VolumeDown,
|
||||
".": VolumeUp,
|
||||
":": CommandMode,
|
||||
|
||||
"<Tab>": NextTab,
|
||||
"<S-Tab>": PreviousTab,
|
||||
"1": SwitchToTab("Queue"),
|
||||
"2": SwitchToTab("Directories"),
|
||||
"2": SwitchToTab("Albums"),
|
||||
"3": SwitchToTab("Artists"),
|
||||
"4": SwitchToTab("Album Artists"),
|
||||
"5": SwitchToTab("Albums"),
|
||||
"6": SwitchToTab("Playlists"),
|
||||
"7": SwitchToTab("Search"),
|
||||
"q": Quit,
|
||||
">": NextTrack,
|
||||
"p": TogglePause,
|
||||
"<": PreviousTrack,
|
||||
"4": SwitchToTab("Playlists"),
|
||||
"5": SwitchToTab("Search"),
|
||||
// " ": SwitchToTab("Visualizer"),
|
||||
// " ": SwitchToTab("Directories"),
|
||||
// " ": SwitchToTab("Album Artists"),
|
||||
|
||||
"f": SeekForward,
|
||||
"z": ToggleRepeat,
|
||||
"x": ToggleRandom,
|
||||
@ -95,28 +233,30 @@ in {
|
||||
"<Down>": Down,
|
||||
"<Left>": Left,
|
||||
"<Right>": Right,
|
||||
|
||||
"g": Top,
|
||||
"G": Bottom,
|
||||
"<C-u>": UpHalf,
|
||||
"<C-d>": DownHalf,
|
||||
"J": MoveDown,
|
||||
"K": MoveUp,
|
||||
|
||||
"<C-k>": PaneUp,
|
||||
"<C-j>": PaneDown,
|
||||
"<C-h>": PaneLeft,
|
||||
"<C-l>": PaneRight,
|
||||
"<C-u>": UpHalf,
|
||||
"N": PreviousResult,
|
||||
"a": Add,
|
||||
"A": AddAll,
|
||||
"r": Rename,
|
||||
"n": NextResult,
|
||||
"g": Top,
|
||||
"<Space>": Select,
|
||||
"<C-Space>": InvertSelection,
|
||||
"G": Bottom,
|
||||
"<CR>": Confirm,
|
||||
"i": FocusInput,
|
||||
"J": MoveDown,
|
||||
"<C-d>": DownHalf,
|
||||
"/": EnterSearch,
|
||||
"<C-c>": Close,
|
||||
"<Esc>": Close,
|
||||
"K": MoveUp,
|
||||
"D": Delete,
|
||||
"B": ShowInfo,
|
||||
},
|
||||
@ -130,60 +270,19 @@ in {
|
||||
"X": Shuffle,
|
||||
},
|
||||
),
|
||||
search: (
|
||||
case_sensitive: false,
|
||||
mode: Contains,
|
||||
tags: [
|
||||
(value: "any", label: "Any Tag"),
|
||||
(value: "artist", label: "Artist"),
|
||||
(value: "album", label: "Album"),
|
||||
(value: "albumartist", label: "Album Artist"),
|
||||
(value: "title", label: "Title"),
|
||||
(value: "filename", label: "Filename"),
|
||||
(value: "genre", label: "Genre"),
|
||||
],
|
||||
),
|
||||
artists: (
|
||||
album_display_mode: SplitByDate,
|
||||
album_sort_by: Date,
|
||||
),
|
||||
tabs: [
|
||||
(
|
||||
name: "Queue",
|
||||
pane: Split(
|
||||
direction: Horizontal,
|
||||
panes: [(size: "40%", pane: Pane(AlbumArt)), (size: "60%", pane: Pane(Queue))],
|
||||
),
|
||||
),
|
||||
(
|
||||
name: "Directories",
|
||||
pane: Pane(Directories),
|
||||
),
|
||||
(
|
||||
name: "Artists",
|
||||
pane: Pane(Artists),
|
||||
),
|
||||
(
|
||||
name: "Album Artists",
|
||||
pane: Pane(AlbumArtists),
|
||||
),
|
||||
(
|
||||
name: "Albums",
|
||||
pane: Pane(Albums),
|
||||
),
|
||||
(
|
||||
name: "Playlists",
|
||||
pane: Pane(Playlists),
|
||||
),
|
||||
(
|
||||
name: "Search",
|
||||
pane: Pane(Search),
|
||||
),
|
||||
],
|
||||
)
|
||||
'';
|
||||
|
||||
".config/rmpc/themes/chriphost.ron".text = ''
|
||||
".config/rmpc/themes/${themeName}.ron".text = let
|
||||
light = color.hex.light;
|
||||
dark = color.hex.dark;
|
||||
|
||||
bg = light.base;
|
||||
text = light.text;
|
||||
accent = dark.mauve;
|
||||
accentHL = dark.red;
|
||||
surface = dark.base;
|
||||
in ''
|
||||
#![enable(implicit_some)]
|
||||
#![enable(unwrap_newtypes)]
|
||||
#![enable(unwrap_variant_newtypes)]
|
||||
@ -193,32 +292,39 @@ in {
|
||||
draw_borders: true,
|
||||
format_tag_separator: " | ",
|
||||
browser_column_widths: [20, 38, 42],
|
||||
modal_backdrop: false,
|
||||
|
||||
// Don't set backgrounds so it doesn't look super shitty in dark terminals
|
||||
background_color: None,
|
||||
text_color: None,
|
||||
header_background_color: None,
|
||||
modal_background_color: None,
|
||||
modal_backdrop: false,
|
||||
|
||||
text_color: "#${text}",
|
||||
preview_label_style: (fg: "yellow"),
|
||||
preview_metadata_group_style: (fg: "yellow", modifiers: "Bold"),
|
||||
|
||||
tab_bar: (
|
||||
enabled: true,
|
||||
active_style: (fg: "black", bg: "blue", modifiers: "Bold"),
|
||||
active_style: (fg: "#${text}", bg: "#${accent}", modifiers: "Bold|Italic"),
|
||||
inactive_style: (),
|
||||
),
|
||||
highlighted_item_style: (fg: "blue", modifiers: "Bold"),
|
||||
current_item_style: (fg: "black", bg: "blue", modifiers: "Bold"),
|
||||
borders_style: (fg: "blue"),
|
||||
highlight_border_style: (fg: "blue"),
|
||||
|
||||
highlighted_item_style: (fg: "#${accentHL}", modifiers: "Bold|Italic"), // Currently playing
|
||||
current_item_style: (fg: "#${text}", bg: "#${accentHL}", modifiers: "Bold"), // Tracks list cursor
|
||||
borders_style: (fg: "#${accent}", modifiers: "Bold"),
|
||||
highlight_border_style: (fg: "#${accent}", modifiers: "Bold"),
|
||||
|
||||
symbols: (
|
||||
song: "S",
|
||||
dir: "D",
|
||||
playlist: "P",
|
||||
marker: "M",
|
||||
ellipsis: "...",
|
||||
song: "",
|
||||
dir: "",
|
||||
playlist: "",
|
||||
marker: "+",
|
||||
ellipsis: "",
|
||||
song_style: None,
|
||||
dir_style: None,
|
||||
playlist_style: None,
|
||||
),
|
||||
|
||||
level_styles: (
|
||||
info: (fg: "blue", bg: "black"),
|
||||
warn: (fg: "yellow", bg: "black"),
|
||||
@ -226,46 +332,60 @@ in {
|
||||
debug: (fg: "light_green", bg: "black"),
|
||||
trace: (fg: "magenta", bg: "black"),
|
||||
),
|
||||
|
||||
progress_bar: (
|
||||
symbols: ["[", "-", ">", " ", "]"],
|
||||
track_style: (fg: "#1e2030"),
|
||||
elapsed_style: (fg: "blue"),
|
||||
thumb_style: (fg: "blue", bg: "#1e2030"),
|
||||
// symbols: ["[", "-", ">", " ", "]"],
|
||||
symbols: ["█", "█", "█", "█", "█"],
|
||||
track_style: (fg: "#${surface}"),
|
||||
elapsed_style: (fg: "#${accent}"),
|
||||
thumb_style: (fg: "#${accentHL}"), // "The draggable part"
|
||||
),
|
||||
|
||||
scrollbar: (
|
||||
symbols: ["│", "█", "▲", "▼"],
|
||||
track_style: (),
|
||||
ends_style: (),
|
||||
thumb_style: (fg: "blue"),
|
||||
track_style: (fg: "#${surface}"),
|
||||
ends_style: (fg: "#${accentHL}"),
|
||||
thumb_style: (fg: "#${accentHL}"), // "The draggable part"
|
||||
),
|
||||
|
||||
song_table_format: [
|
||||
(
|
||||
prop: (kind: Property(Artist),
|
||||
prop: (
|
||||
kind: Property(Artist),
|
||||
style: (fg: "#${text}"),
|
||||
default: (kind: Text("Unknown"))
|
||||
),
|
||||
width: "20%",
|
||||
),
|
||||
(
|
||||
prop: (kind: Property(Title),
|
||||
prop: (
|
||||
kind: Property(Title),
|
||||
style: (fg: "#${text}"),
|
||||
default: (kind: Text("Unknown"))
|
||||
),
|
||||
width: "35%",
|
||||
),
|
||||
(
|
||||
prop: (kind: Property(Album), style: (fg: "white"),
|
||||
prop: (
|
||||
kind: Property(Album),
|
||||
style: (fg: "#${text}"),
|
||||
default: (kind: Text("Unknown Album"), style: (fg: "white"))
|
||||
),
|
||||
width: "30%",
|
||||
),
|
||||
(
|
||||
prop: (kind: Property(Duration),
|
||||
prop: (
|
||||
kind: Property(Duration),
|
||||
style: (fg: "#${text}"),
|
||||
default: (kind: Text("-"))
|
||||
),
|
||||
width: "15%",
|
||||
alignment: Right,
|
||||
),
|
||||
],
|
||||
|
||||
components: {},
|
||||
|
||||
layout: Split(
|
||||
direction: Vertical,
|
||||
panes: [
|
||||
@ -287,54 +407,117 @@ in {
|
||||
),
|
||||
],
|
||||
),
|
||||
|
||||
header: (
|
||||
rows: [
|
||||
// Top Row
|
||||
(
|
||||
left: [
|
||||
(kind: Text("["), style: (fg: "yellow", modifiers: "Bold")),
|
||||
(kind: Property(Status(StateV2(playing_label: "Playing", paused_label: "Paused", stopped_label: "Stopped"))), style: (fg: "yellow", modifiers: "Bold")),
|
||||
(kind: Text("]"), style: (fg: "yellow", modifiers: "Bold"))
|
||||
],
|
||||
center: [
|
||||
(kind: Property(Song(Title)), style: (modifiers: "Bold"),
|
||||
default: (kind: Text("No Song"), style: (modifiers: "Bold"))
|
||||
(
|
||||
kind: Text("["),
|
||||
style: (fg: "#${accentHL}", modifiers: "Bold")
|
||||
),
|
||||
(
|
||||
kind: Property(Status(StateV2(
|
||||
playing_label: "Playing",
|
||||
paused_label: "Paused",
|
||||
stopped_label: "Stopped"))
|
||||
),
|
||||
style: (fg: "#${accentHL}", modifiers: "Bold")
|
||||
),
|
||||
(
|
||||
kind: Text("]"),
|
||||
style: (fg: "#${accentHL}", modifiers: "Bold")
|
||||
)
|
||||
],
|
||||
|
||||
center: [
|
||||
(
|
||||
kind: Property(Song(Title)),
|
||||
style: (fg: "#${accentHL}", modifiers: "Bold"),
|
||||
default: (
|
||||
kind: Text("No Song"),
|
||||
style: (fg: "#${text}", modifiers: "Bold")
|
||||
)
|
||||
)
|
||||
],
|
||||
|
||||
right: [
|
||||
(kind: Property(Widget(ScanStatus)), style: (fg: "blue")),
|
||||
(kind: Property(Widget(Volume)), style: (fg: "blue"))
|
||||
]
|
||||
(
|
||||
kind: Property(Widget(ScanStatus)),
|
||||
style: (fg: "#${accentHL}")
|
||||
),
|
||||
(
|
||||
kind: Property(Widget(Volume)),
|
||||
style: (fg: "#${accentHL}")
|
||||
)
|
||||
]
|
||||
),
|
||||
|
||||
// Bottom Row
|
||||
(
|
||||
left: [
|
||||
(kind: Property(Status(Elapsed))),
|
||||
(kind: Text(" / ")),
|
||||
(kind: Property(Status(Duration))),
|
||||
(kind: Text(" (")),
|
||||
(kind: Property(Status(Bitrate))),
|
||||
(kind: Text(" kbps)"))
|
||||
(
|
||||
kind: Property(Status(Elapsed)),
|
||||
style: (fg: "#${text}")
|
||||
),
|
||||
(
|
||||
kind: Text(" / "),
|
||||
style: (fg: "#${text}")
|
||||
),
|
||||
(
|
||||
kind: Property(Status(Duration)),
|
||||
style: (fg: "#${text}")
|
||||
),
|
||||
(
|
||||
kind: Text(" ("),
|
||||
style: (fg: "#${text}")
|
||||
),
|
||||
(
|
||||
kind: Property(Status(Bitrate)),
|
||||
style: (fg: "#${text}")
|
||||
),
|
||||
(
|
||||
kind: Text(" kbps)"),
|
||||
style: (fg: "#${text}")
|
||||
)
|
||||
],
|
||||
center: [
|
||||
(kind: Property(Song(Artist)), style: (fg: "yellow", modifiers: "Bold"),
|
||||
default: (kind: Text("Unknown"), style: (fg: "yellow", modifiers: "Bold"))
|
||||
(
|
||||
kind: Property(Song(Artist)),
|
||||
style: (fg: "#${text}", modifiers: "Bold"),
|
||||
default: (
|
||||
kind: Text("Unknown"),
|
||||
style: (fg: "#${text}", modifiers: "Bold")
|
||||
)
|
||||
),
|
||||
(kind: Text(" - ")),
|
||||
(kind: Property(Song(Album)),
|
||||
default: (kind: Text("Unknown Album"))
|
||||
(
|
||||
kind: Text(" - "),
|
||||
style: (fg: "#${text}")
|
||||
),
|
||||
(
|
||||
kind: Property(Song(Album)),
|
||||
style: (fg: "#${text}"),
|
||||
default: (
|
||||
kind: Text("Unknown Album"),
|
||||
style: (fg: "#${text}")
|
||||
)
|
||||
)
|
||||
],
|
||||
right: [
|
||||
(
|
||||
kind: Property(Widget(States(
|
||||
active_style: (fg: "white", modifiers: "Bold"),
|
||||
separator_style: (fg: "white")))
|
||||
),
|
||||
style: (fg: "dark_gray")
|
||||
active_style: (fg: "#${accentHL}", modifiers: "Bold|Underlined"),
|
||||
inactive_style: (fg: "#${text}"),
|
||||
separator_style: (fg: "#${text}")))
|
||||
)
|
||||
// style: (fg: "dark_gray")
|
||||
),
|
||||
]
|
||||
),
|
||||
],
|
||||
),
|
||||
|
||||
browser_song_format: [
|
||||
(
|
||||
kind: Group([
|
||||
@ -351,9 +534,59 @@ in {
|
||||
default: (kind: Property(Filename))
|
||||
),
|
||||
],
|
||||
|
||||
lyrics: (
|
||||
timestamp: false
|
||||
)
|
||||
),
|
||||
|
||||
cava: (
|
||||
// symbols that will be used to draw the bar in the visualiser, in ascending order of
|
||||
// fill fraction
|
||||
bar_symbols: ['▁', '▂', '▃', '▄', '▅', '▆', '▇', '█'],
|
||||
// similar to bar_symbols but these are used for the top-down rendering, meaning for orientation
|
||||
// "Horizontal" and "Top"
|
||||
inverted_bar_symbols: ['▔', '🮂', '🮃', '▀', '🮄', '🮅', '🮆', '█'],
|
||||
|
||||
// bg_color: "black", // background color, defaults to rmpc's bg color if not provided
|
||||
bar_width: 1, // width of a single bar in columns
|
||||
bar_spacing: 1, // free space between bars in columns
|
||||
|
||||
// Possible values are "Top", "Bottom" and "Horizontal". Top makes the bars go from top to
|
||||
// bottom, "Bottom" is from bottom up, and "Horizontal" is split in the middle with bars going
|
||||
// both down and up from there.
|
||||
// Using non-default symbols with "Top" and "Horizontal" may produce undesired output.
|
||||
orientation: Bottom,
|
||||
|
||||
// Colors can be configured in three different ways: a single color, different colors
|
||||
// per row and a gradient. You can use the same colors as everywhere else. Only specify
|
||||
// one of these:
|
||||
|
||||
// Every bar symbol will be red
|
||||
// bar_color: Single("red"),
|
||||
|
||||
// The first two rows(two lowest amplitudes) will be red, after that two green rows
|
||||
// and the rest will be blue. You can have as many as you want here. The last value
|
||||
// will be used if the height exceeds the length of this array.
|
||||
// bar_color: Rows([
|
||||
// "red",
|
||||
// "red",
|
||||
// "green",
|
||||
// "green",
|
||||
// "blue",
|
||||
// ]),
|
||||
|
||||
// A simple color gradient. This is a map where keys are percent values of the height
|
||||
// where the color starts. After that it is linearly interpolated towards the next value.
|
||||
// In this example, the color will start at green for the lowest amplitudes, go towards
|
||||
// blue at half amplitudes and finishing as red for the highest values. Keys must be between
|
||||
// 0 and 100 and if the first or last key are not 0 and 100 respectively, the lowest and highest
|
||||
// value will be used as 0 and 100. Only hex and RGB colors are supported here and your terminal
|
||||
// must support them as well!
|
||||
bar_color: Gradient({
|
||||
0: "#${accent}",
|
||||
100: "#${accentHL}",
|
||||
}),
|
||||
),
|
||||
)
|
||||
'';
|
||||
};
|
||||
|
||||
@ -123,7 +123,14 @@ with mylib.networking; {
|
||||
documentation = {
|
||||
enable = true;
|
||||
man.enable = true;
|
||||
man.generateCaches = false; # very slow
|
||||
info.enable = true;
|
||||
dev.enable = true;
|
||||
doc.enable = false;
|
||||
nixos = {
|
||||
enable = true;
|
||||
includeAllModules = true;
|
||||
};
|
||||
};
|
||||
|
||||
# Set your time zone.
|
||||
@ -329,6 +336,8 @@ with mylib.networking; {
|
||||
|
||||
fonts = {
|
||||
enableDefaultPackages = true; # Some default fonts for unicode coverage
|
||||
|
||||
# https://wiki.nixos.org/wiki/Fonts#Flatpak_applications_can.27t_find_system_fonts
|
||||
fontDir.enable = true; # Puts fonts to /run/current-system/sw/share/X11/fonts
|
||||
|
||||
# Font packages go here.
|
||||
@ -337,6 +346,8 @@ with mylib.networking; {
|
||||
packages = with pkgs; [
|
||||
# Monospace fonts
|
||||
nerd-fonts.jetbrains-mono
|
||||
nerd-fonts.victor-mono
|
||||
monolisa
|
||||
|
||||
# Sans/Serif fonts
|
||||
noto-fonts
|
||||
@ -351,10 +362,14 @@ with mylib.networking; {
|
||||
hinting.enable = true;
|
||||
hinting.autohint = true;
|
||||
cache32Bit = true;
|
||||
|
||||
# https://wiki.nixos.org/wiki/Fonts#Noto_Color_Emoji_doesn.27t_render_on_Firefox
|
||||
useEmbeddedBitmaps = true;
|
||||
|
||||
defaultFonts = {
|
||||
serif = ["Noto Serif CJK SC"];
|
||||
sansSerif = ["Noto Sans CJK SC"];
|
||||
monospace = ["JetBrainsMono Nerd Font Mono"];
|
||||
monospace = ["MonoLisa" "JetBrainsMono Nerd Font Mono"]; # NOTE: Match with color.font
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user