🦔 sanic
chaos music control inspired by relaxx player
✨ Features
- mpd web gui
- search music
- organize playlists
- control current playback queue
- no authentication required to control music playback
- add playlists from internet radios (
*.m3u
,*.pls
) - add music from other sources like youtube (
youtube-dl
)
Installation
NixOS (flakes)
Example flake setup (untested):
{
description = "Example Flake to install sanic on your host";
inputs = {
nixpkgs.url = "github:NixOS/nixpkgs/nixpkgs-unstable";
sanic = {
url = "git.berlin.ccc.de/cccb/sanic";
inputs.nixpkgs.follows = "nixpkgs";
};
};
outputs = { self, nixpkgs, sanic }:
let
system = "x86_64-linux";
pkgs = import nixpkgs { inherit system; };
in
{
nixosConfigurations."myhostname".nixpkgs.lib.nixosSystem = {
inherit system;
modules = [
{ environment.systemPackages = [ sanic.packages.${system}.default ]; }
];
};
};
}
Arch Linux
Install from the AUR:
yay -S sanic
🛠️ Development
sanic is developed using Nix, but you can also just use the usual Golang tooling.
Run local MPD instance for testing with make mpd
.
Update go depdendencies like this:
go get -u # or `make update`
go mod tidy # or `make tidy`
gomod2nix # sync go deps with nix
❄️ w/ Nix
Enter development shell (also has mpc client installed for testing):
nix develop
Build sanic:
nix build
🐧 w/o Nix
Use these Make targets for convenience:
-
run
: Run project -
build
: Compile project -
tidy
: Add missing and remove unused modules -
verify
: Verify dependencies have expected content -
format
: Format go code -
lint
: Run linter (staticcheck) -
test
: Run tests -
cert
: Create https certificate for local testing
🐳 Container
You can run sanic in a container. Use these Make targets for convenience:
-
build-container
: Build container image -
run-container
: Run container image