Add declarative spotify config
Signed-off-by: Nikolaos Karaolidis <nick@karaolidis.com>
This commit is contained in:
19
hosts/common/user/configs/gui/spicetify/config/merge.sh
Normal file
19
hosts/common/user/configs/gui/spicetify/config/merge.sh
Normal file
@@ -0,0 +1,19 @@
|
|||||||
|
SOURCE_FILE=$(realpath -m "$1")
|
||||||
|
TARGET_FILE=$(realpath -m "$2")
|
||||||
|
|
||||||
|
mkdir -p "$(dirname "$TARGET_FILE")"
|
||||||
|
|
||||||
|
TEMP_FILE=$(mktemp)
|
||||||
|
cat "$SOURCE_FILE" > "$TEMP_FILE"
|
||||||
|
|
||||||
|
if [ -f "$TARGET_FILE" ]; then
|
||||||
|
while IFS='=' read -r key value; do
|
||||||
|
if ! grep -q "^${key}=" "$TEMP_FILE"; then
|
||||||
|
echo "${key}=${value}" >> "$TEMP_FILE"
|
||||||
|
fi
|
||||||
|
done < "$TARGET_FILE"
|
||||||
|
fi
|
||||||
|
|
||||||
|
mv "$TEMP_FILE" "$TARGET_FILE"
|
||||||
|
|
||||||
|
echo "Configuration file $TARGET_FILE has been updated."
|
2
hosts/common/user/configs/gui/spicetify/config/prefs
Normal file
2
hosts/common/user/configs/gui/spicetify/config/prefs
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
app.autostart-mode="off"
|
||||||
|
storage.last-location="/home/nick/.cache/spotify/Storage"
|
@@ -0,0 +1,7 @@
|
|||||||
|
audio.crossfade_v2=true
|
||||||
|
audio.allow_downgrade=false
|
||||||
|
audio.sync_bitrate_enumeration=4
|
||||||
|
audio.play_bitrate_enumeration=4
|
||||||
|
audio.play_bitrate_non_metered_migrated=true
|
||||||
|
audio.play_bitrate_non_metered_enumeration=4
|
||||||
|
ui.track_notifications_enabled=false
|
@@ -5,6 +5,7 @@
|
|||||||
{
|
{
|
||||||
config,
|
config,
|
||||||
inputs,
|
inputs,
|
||||||
|
lib,
|
||||||
pkgs,
|
pkgs,
|
||||||
...
|
...
|
||||||
}:
|
}:
|
||||||
@@ -58,6 +59,87 @@
|
|||||||
];
|
];
|
||||||
};
|
};
|
||||||
|
|
||||||
|
systemd.user = {
|
||||||
|
services =
|
||||||
|
let
|
||||||
|
merge = lib.meta.getExe (
|
||||||
|
pkgs.writeShellApplication {
|
||||||
|
name = "merge";
|
||||||
|
runtimeInputs = with pkgs; [
|
||||||
|
gnugrep
|
||||||
|
coreutils
|
||||||
|
];
|
||||||
|
text = builtins.readFile ./config/merge.sh;
|
||||||
|
}
|
||||||
|
);
|
||||||
|
in
|
||||||
|
{
|
||||||
|
spotify-init = {
|
||||||
|
Unit = {
|
||||||
|
Description = "Populate Spotify preferences from template";
|
||||||
|
After = config.environment.persistence."/persist"."${home}/.config/spotify".mount;
|
||||||
|
DefaultDependencies = false;
|
||||||
|
};
|
||||||
|
|
||||||
|
Service = {
|
||||||
|
ExecStart = "${merge} ${./config/prefs} ${home}/.config/spotify/prefs";
|
||||||
|
Type = "oneshot";
|
||||||
|
RemainAfterExit = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
spotify-init-user = {
|
||||||
|
Unit = {
|
||||||
|
Description = "Populate Spotify user preferences from template";
|
||||||
|
After = config.environment.persistence."/persist"."${home}/.config/spotify".mount;
|
||||||
|
DefaultDependencies = false;
|
||||||
|
};
|
||||||
|
|
||||||
|
Service = {
|
||||||
|
ExecStart = lib.meta.getExe (
|
||||||
|
pkgs.writeShellApplication {
|
||||||
|
name = "merge-user";
|
||||||
|
text = ''
|
||||||
|
for USER_DIR in ${home}/.config/spotify/Users/*/; do
|
||||||
|
${merge} ${./config/user-prefs} "$USER_DIR/prefs"
|
||||||
|
done
|
||||||
|
'';
|
||||||
|
}
|
||||||
|
);
|
||||||
|
Type = "oneshot";
|
||||||
|
RemainAfterExit = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
paths = {
|
||||||
|
spotify-init = {
|
||||||
|
Unit = {
|
||||||
|
Description = "Monitor Spotify directory";
|
||||||
|
After = config.environment.persistence."/persist"."${home}/.config/spotify".mount;
|
||||||
|
};
|
||||||
|
|
||||||
|
Path.PathExists = "${home}/.config/spotify";
|
||||||
|
|
||||||
|
Install.WantedBy = [ "graphical-session.target" ];
|
||||||
|
};
|
||||||
|
|
||||||
|
spotify-init-user = {
|
||||||
|
Unit = {
|
||||||
|
Description = "Monitor Spotify user directory";
|
||||||
|
After = config.environment.persistence."/persist"."${home}/.config/spotify".mount;
|
||||||
|
};
|
||||||
|
|
||||||
|
Path = {
|
||||||
|
PathExists = "${home}/.config/spotify/Users";
|
||||||
|
PathModified = "${home}/.config/spotify/Users";
|
||||||
|
};
|
||||||
|
|
||||||
|
Install.WantedBy = [ "graphical-session.target" ];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
theme.templates."${home}/.config/spotify/colors.css".source = ./colors.css;
|
theme.templates."${home}/.config/spotify/colors.css".source = ./colors.css;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user