#configuration-management #systems #multiple #command-line-tool #across #experimental #ssh-config

bin+lib logix

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

3 unstable releases

0.2.1 Mar 28, 2024
0.2.0 Feb 6, 2024
0.1.0 Oct 11, 2023

#136 in Configuration

Download history 8/week @ 2024-02-05 13/week @ 2024-02-19 23/week @ 2024-02-26 179/week @ 2024-03-25 61/week @ 2024-04-01

240 downloads per month

MPL-2.0 license

25KB
414 lines

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: Helix
    // 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 the Mozilla Public License 2.0 (MPL). All contributions to this project will be covered by the MPL, unless an exception is explicitly stated at the top of the contributed file. For more details, see the LICENSE file in the repository

Dependencies

~5–17MB
~203K SLoC