nushell-plugins/etc/distribution_config.toml

352 lines
8.0 KiB
TOML
Raw Permalink Normal View History

feat: Add complete Nushell full distribution system ## Major Features Added - **Complete distribution infrastructure**: Build, package, and distribute Nushell binary alongside plugins - **Zero-prerequisite installation**: Bootstrap installers work on fresh systems without Rust/Cargo/Nushell - **Cross-platform support**: Linux, macOS, Windows (x86_64, ARM64) - **Self-contained packages**: Everything needed for complete Nushell environment ## New Components ### Build System - `scripts/build_nushell.nu` - Build nushell with all workspace plugins - `scripts/collect_full_binaries.nu` - Collect nu binary + all plugins - `justfiles/full_distro.just` - 40+ new recipes for distribution workflows ### Bootstrap Installers (Zero Prerequisites) - `installers/bootstrap/install.sh` - Universal POSIX installer (900+ lines) - `installers/bootstrap/install.ps1` - Windows PowerShell installer (800+ lines) - Complete platform detection, PATH setup, plugin registration ### Distribution System - `scripts/create_distribution_packages.nu` - Multi-platform package creator - `scripts/install_full_nushell.nu` - Advanced nu-based installer - `scripts/verify_installation.nu` - Installation verification suite - `scripts/lib/common_lib.nu` - Shared utilities and logging ### Configuration Management - `scripts/templates/default_config.nu` - Complete nushell configuration (500+ lines) - `scripts/templates/default_env.nu` - Cross-platform environment setup - `etc/distribution_config.toml` - Central distribution settings - `scripts/templates/uninstall.sh` & `uninstall.ps1` - Clean removal ## Key Workflows ```bash just build-full # Build nushell + all plugins just pack-full-all # Create packages for all platforms just verify-full # Verify installation just release-full-cross # Complete cross-platform release ``` ## Installation Experience - One-liner: `curl -sSf https://your-url/install.sh | sh` - Multiple modes: user, system, portable installation - Automatic plugin registration with verification - Professional uninstall capability ## Benefits - ✅ Solves bootstrap problem - no prerequisites needed - ✅ Production-ready distribution system - ✅ Complete cross-platform support - ✅ Professional installation experience - ✅ Integrates seamlessly with existing plugin workflows - ✅ Enterprise-grade verification and logging
2025-09-24 18:52:07 +01:00
# Nushell + Plugins Distribution Configuration
# Configuration file for the full distribution system
[distribution]
# Distribution metadata
name = "Nushell + Plugins"
description = "Complete Nushell distribution with built-in and custom plugins"
version = "0.107.1"
homepage = "https://nushell.sh"
repository = "https://github.com/your-org/nushell-plugins"
# Distribution maintainer information
[distribution.maintainer]
name = "Nushell Plugins Team"
email = "maintainer@your-domain.com"
organization = "Your Organization"
# Release information
[distribution.release]
# Release channels: stable, beta, nightly
channel = "stable"
# Build types: release, debug, profiling
build_type = "release"
# Supported architectures
architectures = [
"x86_64-unknown-linux-gnu",
"aarch64-unknown-linux-gnu",
"x86_64-apple-darwin",
"aarch64-apple-darwin",
"x86_64-pc-windows-msvc",
"aarch64-pc-windows-msvc"
]
# Platform-specific configurations
[platforms.linux]
package_formats = ["tar.gz"]
install_prefix_user = "$HOME/.local"
install_prefix_system = "/usr/local"
shell_configs = [
"$HOME/.bashrc",
"$HOME/.zshrc",
"$HOME/.config/fish/config.fish",
"$HOME/.profile"
]
[platforms.macos]
package_formats = ["tar.gz"]
install_prefix_user = "$HOME/.local"
install_prefix_system = "/usr/local"
shell_configs = [
"$HOME/.bash_profile",
"$HOME/.zshrc",
"$HOME/.config/fish/config.fish",
"$HOME/.profile"
]
[platforms.windows]
package_formats = ["zip"]
install_prefix_user = "%USERPROFILE%\\.local"
install_prefix_system = "%ProgramFiles%\\Nushell"
registry_keys = [
"HKCU\\Environment",
"HKLM\\SYSTEM\\CurrentControlSet\\Control\\Session Manager\\Environment"
]
# Nushell configuration
[nushell]
# Nushell source directory (relative to project root)
source_dir = "nushell"
# Features to enable when building nushell
features = [
"plugin",
"network",
"sqlite",
"trash-support",
"rustls-tls",
"system-clipboard"
]
# Build profile
profile = "release"
# Additional build flags
build_flags = ["--locked"]
# Workspace plugins (built with nushell)
[plugins.workspace]
# Enable all workspace plugins by default
enabled = true
# Specific workspace plugins to include
plugins = [
"nu_plugin_custom_values",
"nu_plugin_example",
"nu_plugin_formats",
"nu_plugin_gstat",
"nu_plugin_inc",
"nu_plugin_polars",
"nu_plugin_query",
"nu_plugin_stress_internals"
]
# Custom plugins (external to nushell workspace)
[plugins.custom]
# Enable custom plugins by default
enabled = true
# Specific custom plugins to include
plugins = [
"nu_plugin_clipboard",
"nu_plugin_desktop_notifications",
"nu_plugin_fluent",
"nu_plugin_hashes",
"nu_plugin_highlight",
"nu_plugin_image",
"nu_plugin_kcl",
"nu_plugin_port_extension",
"nu_plugin_qr_maker",
"nu_plugin_tera"
]
# Plugin-specific configurations
[plugins.custom.nu_plugin_clipboard]
description = "Cross-platform clipboard access"
required_system_deps = ["xclip", "wl-clipboard"] # Linux only
[plugins.custom.nu_plugin_desktop_notifications]
description = "Desktop notification support"
required_system_deps = ["libnotify"] # Linux only
[plugins.custom.nu_plugin_highlight]
description = "Syntax highlighting for code files"
optional_deps = ["bat", "pygments"]
[plugins.custom.nu_plugin_image]
description = "Image processing and viewing"
optional_deps = ["imagemagick", "ffmpeg"]
[plugins.custom.nu_plugin_tera]
description = "Template processing with Tera"
# Build configuration
[build]
# Parallel jobs for building
jobs = 0 # 0 = auto-detect
# Target directory for builds
target_dir = "target"
# Whether to use cargo workspaces
use_workspace = true
# Additional cargo flags
cargo_flags = ["--release", "--locked"]
# Environment variables for build
env_vars = {}
# Cross-compilation settings
[build.cross]
# Enable cross-compilation
enabled = true
# Cross-compilation tool (cross, cargo-zigbuild, etc.)
tool = "cross"
# Docker image for cross-compilation
docker_image = "ghcr.io/cross-rs/cross"
# Collection settings
[collection]
# Output directory for collected binaries
output_dir = "distribution"
# Whether to include nushell binary
include_nushell = true
# Whether to include workspace plugins
include_workspace_plugins = true
# Whether to include custom plugins
include_custom_plugins = true
# Files to copy to distribution
additional_files = [
"LICENSE",
"README.md",
"CHANGELOG.md"
]
# Directories to copy
additional_dirs = [
"scripts/templates"
]
# Packaging settings
[packaging]
# Output directory for packages
output_dir = "bin_archives"
# Package formats per platform
formats = {
linux = ["tar.gz"],
macos = ["tar.gz"],
windows = ["zip"]
}
# Compression level (0-9)
compression_level = 6
# Whether to generate checksums
generate_checksums = true
# Checksum algorithms
checksum_algorithms = ["sha256", "sha512"]
# Manifest settings
[packaging.manifest]
# Include detailed manifest in packages
enabled = true
# Manifest format (json, toml, yaml)
format = "json"
# Include build information
include_build_info = true
# Include system information
include_system_info = true
# Include plugin information
include_plugin_info = true
# Installation settings
[installation]
# Default configuration templates
config_templates = {
env = "scripts/templates/default_env.nu",
config = "scripts/templates/default_config.nu"
}
# Whether to create config directory
create_config_dir = true
# Whether to update PATH
update_path = true
# Whether to auto-register plugins
auto_register_plugins = true
# Shell integration scripts
shell_scripts = [
"installers/bootstrap/install.sh",
"installers/bootstrap/install.ps1"
]
# Verification settings
[verification]
# Enable installation verification
enabled = true
# Tests to run during verification
tests = [
"version_check",
"basic_functionality",
"plugin_list",
"path_check"
]
# Timeout for verification tests (seconds)
timeout = 30
# Update and maintenance
[maintenance]
# Automatic dependency updates
auto_update_deps = false
# Security advisory checks
security_checks = true
# Cleanup old builds
cleanup_builds = true
# Maximum build artifacts to keep
max_build_artifacts = 5
# CI/CD integration
[ci]
# Supported CI platforms
platforms = ["github", "gitlab", "jenkins"]
# Artifact retention (days)
artifact_retention = 30
# Test matrix
test_matrix = [
"ubuntu-latest",
"macos-latest",
"windows-latest"
]
# Release automation
[release]
# Automatic releases on tag
auto_release = true
# Release notes generation
generate_release_notes = true
# Pre-release validation
validate_before_release = true
# Release channels
channels = {
stable = "main",
beta = "develop",
nightly = "nightly"
}
# Documentation settings
[documentation]
# Generate documentation during build
generate_docs = true
# Documentation formats
formats = ["html", "markdown"]
# Include API documentation
include_api_docs = true
# Documentation output directory
output_dir = "docs"
# Logging and monitoring
[logging]
# Log level (error, warn, info, debug, trace)
level = "info"
# Log format (compact, full, json)
format = "compact"
# Log to file
file_logging = false
# Log file path
log_file = "build.log"
# Security settings
[security]
# Code signing (for releases)
code_signing = false
# GPG signing key
gpg_key = ""
# Vulnerability scanning
vulnerability_scan = true
# Supply chain verification
supply_chain_check = true
# Analytics and telemetry
[analytics]
# Usage analytics (anonymized)
enabled = false
# Analytics endpoint
endpoint = ""
# Data retention period
retention_days = 90
# Custom hooks and scripts
[hooks]
# Pre-build hooks
pre_build = []
# Post-build hooks
post_build = []
# Pre-package hooks
pre_package = []
# Post-package hooks
post_package = []
# Pre-release hooks
pre_release = []
# Post-release hooks
post_release = []
# Feature flags
[features]
# Experimental features
experimental_features = false
# Beta features
beta_features = false
# Development features
dev_features = false
# Custom settings (user-configurable)
[custom]
# User can add any additional settings here
# These will be preserved during updates