Skip to content

An exercise in Configuration as Code (CaC) for Linux Workstations with a Focus on Development and Media Production

Notifications You must be signed in to change notification settings

b08x/SyncopatedOS

Repository files navigation

SyncopatedOS

SyncopatedOS is an Ansible-based system configuration and management toolkit designed to automate the setup and maintenance of various specialized Linux environments.

Collections

The project is organized into the following collections:

  • audio_production: Roles for configuring audio production environments including ALSA, JACK, PipeWire, and DAW setup
  • desktop_environment: Desktop environment configuration roles
  • development_tools: Development environment setup and tooling
  • llmops_dev: LLM operations and development tools
  • media_tools: Media processing and management tools
  • shell_environment: Shell configuration and customization
  • storage: Storage management and configuration
  • system_core: Core system configuration roles
  • system_services: System service management and configuration

Playbooks

Available playbooks for different system configurations:

Core Playbooks

  • base.yml: Basic system setup including user configuration, shell setup, and networking
  • full.yml: Complete system setup combining all major roles and configurations
  • utils.yml: Utility scripts and tools installation

Specialized Environments

  • daw.yml: Digital Audio Workstation setup with audio system configuration
  • workstation.yml: Desktop workstation setup with GUI applications and development tools
  • virt.yml: Virtualization environment setup with Docker and KVM
  • nas.yml: Network Attached Storage configuration
  • llmos.yml: LLM operations system setup
  • homepage.yml: System dashboard/homepage setup

System Types

The playbooks support different types of system configurations:

  1. Base System

    • Core system configuration
    • User management
    • Shell environment
    • Network setup
  2. Workstation

    • Desktop environment (i3/GNOME)
    • Development tools
    • Media applications
    • Input device configuration
  3. Audio Production

    • ALSA configuration
    • JACK audio server
    • PulseAudio setup
    • DAW tools and plugins
  4. Virtualization

    • Docker configuration
    • KVM/libvirt setup
    • Development environments

Usage

  1. Clone the repository:
git clone https://github.com/b08x/dotfiles.git
  1. Install requirements:
pip install -r requirements.txt
  1. Run a playbook:
ansible-playbook playbooks/[playbook].yml

Replace [playbook] with the desired configuration (e.g., base.yml, workstation.yml, daw.yml).

Tags

Playbooks use tags for selective role execution. Common tags include:

  • base: Basic system configuration
  • user: User management
  • shell: Shell environment setup
  • networking: Network configuration
  • daw: Audio production setup
  • i3/gnome: Desktop environment configuration
  • applications: General application installation
  • theme: System theming and appearance

Example usage with tags:

ansible-playbook playbooks/full.yml --tags "base,networking"

LLM Analyzer

The project includes a powerful LLM (Large Language Model) Analyzer that leverages various AI providers to analyze Ansible tasks and playbooks. This feature helps maintain code quality and suggests improvements based on best practices.

Supported AI Providers

  • OpenAI (GPT models)
  • Google Gemini
  • Groq
  • Cohere
  • Anthropic (Claude models)

Features

  • Analyzes individual tasks and complete playbooks
  • Provides suggestions for best practices and improvements
  • Identifies potential issues and inefficiencies
  • Generates detailed analysis reports in Markdown format
  • Supports customizable temperature and token limits
  • Includes API key validation and error handling

Configuration

The LLM Analyzer can be configured in your ansible.cfg or via environment variables. Example configuration:

[defaults]
callback_plugins = ./plugins/callback
callback_whitelist = llm_analyzer

[callback_llm_analyzer]
provider = openai
api_key = sk-xxx  # Or set via OPENAI_API_KEY environment variable
model = gpt-4
temperature = 0.4
max_tokens = 1000

You can also use OpenRouter as a provider to access various AI models through a single API.

asciicast

About

An exercise in Configuration as Code (CaC) for Linux Workstations with a Focus on Development and Media Production

Topics

Resources

Stars

Watchers

Forks

Packages

No packages published