GithubHelp home page GithubHelp logo

labcoat's Introduction

labcoat

labcoat is a TUI for deploying flake based NixOS systems. It lets you select from a list of nixosConfigurations available in your flake, giving you one touch access to deploy and inspect those systems.

labcoat is ideal for managing NixOS lab environments up to a couple dozen systems; particularly during the development phase where you do not yet know if your configuration works correctly.

For production NixOS environments with many instances of the same configuration, you will be better served by a parallel deployment tool such as Colmena.

Features

  • Automatically fetch node list from nix flake
  • Fetch individual node deploy configs (ie FQDN) from flake
  • Fetch target host status on hover
  • Build & deploy nix configuration to target host
  • Launch interactive SSH into target host
  • Reboot target host with confirmation
    • Use ping to track host status during reboot
  • Run specified command on target host
  • Run configurable commands on target host, w/ optional confirmation
  • Record/display per-node command and deployment history
  • Gather target host deployment/generation state
    • Flag out-of-date hosts in list UI
  • External pager support

Status

labcoat is currently incomplete, and alpha quality. However, it's good enough to manage my homelab, and maybe yours too.

Usage

From the directory containing your systems flake, execute:

nix run github:jhillyerd/labcoat

Alternately you may pass the path to a directory containing flake.nix as the last argument

nix run github:jhillyerd/labcoat -- ~/myflake/

For ideas on how to layout a system flake for labcoat, please see the examples directory.

Configuration

labcoat contains a default configuration, and does not require a configuration file. The -defaults argument will print the default configuration to stdout.

If you want to make changes to the default configuration, it should be stored in $XDG_HOME/labcoat/config.toml. labcoat always layers your configuration on top of it's defaults, so you may remove or comment out anything you don't wish to change.

Create the TOML config file:

mkdir -p ~/.config/labcoat
nix run github:jhillyerd/labcoat -- -defaults > ~/.config/labcoat/config.toml

Contributing

Contributions are welcome, with the following provisions:

  1. If you are not already familiar with The Elm Architecture, please read through the Bubble Tea Tutorial to learn basics.
  2. Please create a new Issue before starting work on large changes, to make sure they fit my vision for the project.
  3. I am not interested in supporting non-Nix tools, such as Ansible or Puppet. Please feel free to fork if that is your goal!

labcoat's People

Contributors

jhillyerd avatar dependabot[bot] avatar

Stargazers

Phani Rithvij avatar Bryan Hyshka avatar Emilia avatar Andreas Bodén avatar  avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.