smug: init module (#6696)

This adds smug, a session manager and task runner for tmux, as module.
This commit is contained in:
Pim Snel 2025-04-04 17:41:02 +02:00 committed by GitHub
parent 66a6ec65f8
commit f3ac07f2f7
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
9 changed files with 260 additions and 0 deletions

View file

@ -0,0 +1,33 @@
before_start:
- docker-compose -f my-microservices/docker-compose.yml up -d
env:
FOO: bar
root: ~/Developer/blog
session: blogdemo
stop:
- docker stop $(docker ps -q)
windows:
- commands:
- docker-compose start
layout: main-vertical
manual: true
name: code
panes:
- commands:
- docker-compose exec php /bin/sh
- clear
root: .
type: horizontal
root: blog
- commands:
- docker-compose start
layout: tiled
name: infrastructure
panes:
- commands:
- docker-compose up -d
- docker-compose exec php /bin/sh
- clear
root: .
type: horizontal
root: ~/Developer/blog/my-microservices

View file

@ -0,0 +1,4 @@
{
smug-settings = ./settings.nix;
smug-empty-settings = ./empty-settings.nix;
}

View file

@ -0,0 +1,6 @@
{
programs.smug.enable = true;
nmt.script = ''
assertPathNotExists home-files/.config/smug
'';
}

View file

@ -0,0 +1,54 @@
{
programs = {
smug = {
enable = true;
projects = {
blogdemo = {
root = "~/Developer/blog";
beforeStart = [
"docker-compose -f my-microservices/docker-compose.yml up -d" # my-microservices/docker-compose.yml is a relative to `root`-al
];
env = { FOO = "bar"; };
stop = [ "docker stop $(docker ps -q)" ];
windows = [
{
name = "code";
root = "blog";
manual = true;
layout = "main-vertical";
commands = [ "docker-compose start" ];
panes = [{
type = "horizontal";
root = ".";
commands = [ "docker-compose exec php /bin/sh" "clear" ];
}];
}
{
name = "infrastructure";
root = "~/Developer/blog/my-microservices";
layout = "tiled";
commands = [ "docker-compose start" ];
panes = [{
type = "horizontal";
root = ".";
commands = [
"docker-compose up -d"
"docker-compose exec php /bin/sh"
"clear"
];
}];
}
];
};
};
};
};
nmt.script = ''
assertFileContent home-files/.config/smug/blogdemo.yml ${./blogdemo.yml}
'';
}