Mirror of sanic. Find the original here: https://gitlab.com/XenGi/sanic
				https://sanic.club.berlin.ccc.de
			
		| static | ||
| .editorconfig | ||
| .gitignore | ||
| .gitlab-ci.yml | ||
| architecture.drawio.svg | ||
| config.ini | ||
| Dockerfile | ||
| favicon.xcf | ||
| flake.lock | ||
| flake.nix | ||
| go.mod | ||
| go.sum | ||
| gomod2nix.toml | ||
| LICENSE | ||
| Makefile | ||
| mpd.conf | ||
| mpd.go | ||
| NOTES.md | ||
| option.nix | ||
| README.md | ||
| sanic.container | ||
| server.go | ||
| sse.go | ||
🦔 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/nixos-24.05;
    sanic = {
      url = gitlab:XenGi/sanic/main;
      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 = [
        { sanic.nixosModules.default }
        { services.sanic = {
            ui = {
              host = "[::1]";
              port = 8080;
              tls = false;
            };
            backend = {
              host = "localhost";
              port = 6600;
            };
          };
        }
      ];
    };
  };
}
🇦 Arch Linux
Install from the AUR:
yay -S sanic
🐳 Container
Run as daemon:
podman run -d -v ./config.ini:/config.ini -p 8080:8080 registry.gitlab.com/XenGi/sanic:latest
🛠️ 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 dependencies 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 your 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