Skip to content
Snippets Groups Projects
Select Git revision
  • main default protected
1 result

sanic

  • Clone with SSH
  • Clone with HTTPS
  • Ricardo Band's avatar
    03677e24
    History

    maintained Gitea Release

    🦔 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

    🗺️ Architecture

    Architecture


    Made with ❤️ and golang logo.