#configuration-management #filesystem #system #deployment #across #tool #command-line-tool

bin+lib logix

An experimental command-line tool for simplified and enhanced configuration management across multiple systems

10 releases (breaking)

0.8.0 Oct 7, 2024
0.6.0 Jul 12, 2024
0.2.1 Mar 28, 2024
0.1.0 Oct 11, 2023

#113 in Configuration

26 downloads per month

MIT/Apache

78KB
2K SLoC

Logix - Your Config Management Companion

Welcome to Logix, a lightweight and versatile command-line tool designed to simplify and enhance configuration management. Inspired by the concept of home-manager, Logix offers an intuitive way to organize, maintain, and extend your system configurations effortlessly. Whether you're a seasoned sysadmin, a developer, or simply someone who wants to keep their setup in Git, Logix is here to make your life easier.

Goals

  • Deploying across multiple machines and distros should yield a similar result.
  • Deploying a new config after updates should be safe and atomic where possible.
  • Enable system configurations to be stored and version-controlled.

Current Focus

Logix is in an experimental phase, primarily focused on meeting the needs of its developers. The emphasis is on adding new features, and todo!() will be heavily utilized. The current goal is for the tool to work reliably on the developers' systems. Because of this focus, the configuration schema may change frequently and not be fully implemented. Documentation will also be postponed until much later. Until we reach the stable release of version 1.0, the tool should be considered experimental. If anyone wants to become a developer and either add new features, test it out, or just fix missing code they are welcome.

Example

Warning: this example is likely outdated

/*
This is a config file example
*/
Logix { // The root of a config is always Logix
  home: UserProfile {
    username: "zeldor"
    name: "Zeldon Kingly"
    email: "zeldor@example.com"
    shell: Bash
    editor: "hx"
    // ssh config, using the Open SSH provider
    ssh: OpenSSH {
      // Use the systemd version of the agent
      agent: SystemD
      keys: {
        github: @include("ssh-keys/github")
      }
    }
  }
}

License

This project is licensed under either the Apache License, Version 2.0 or the MIT license, at your option. All contributions to this project must also be under the same license, unless an exception is explicitly stated at the top of the contributed file.

Dependencies

~21–33MB
~542K SLoC