smooooth/README.md
2025-05-21 21:01:20 +10:00

81 lines
1.8 KiB
Markdown

# man, it's a hot one
`smooooth` is a service to "hot reload" flake-based nixos configurations.
## like seven inches from a midday sun
`smooooth` will detect changes to the specified flake, wait for blockers to resolve,
then trigger build + activation of the new config.
blockers can be specified as any executable name. they will prevent reloads
until they disappear or change their working directory. \
this way, `smooooth` can wait for your current editor/shell/you-name-it session
to conclude before rebuilding anything.
the only strict requirement is that said executable handles its cwd properly,
so it can be read from the procfs. \
this may conflict with behaviour of some editors (ie. vscode), particularly if
they are started via a .desktop shortcut.
#### a brief disclaimer
`smooooth` is in a very early but entirely functional state. \
it may be subject to changes, full rewrites, or unending neglect.
enjoy !
## i hear you whispering the words
simply add `smooooth.url = git+https://git.atagen.co/atagen/smooooth.git` to your \
flake inputs, and the reciprocal `{ smooooth }` entry to your output function.
now you can import `smooooth.nixosModules.smooooth` in your config modules, and \
utilise the below listed options to get started !
## to melt everyone, but you stay so cold
### services.smooooth.enable
`bool`
Enable the smooooth nixos hot reloader.
### services.smooooth.blockers
`listOf str`
A list of executable names that are allowed to block the reload.
### services.smooooth.path
`str`
The full path to the root of your flake.
### services.smooooth.pollingRate
`int`
How frequently to poll when waiting on a blocked reload.
### services.smooooth.nixPackage
`package`
Your preferred package providing a `nix` executable.
### services.smooooth.package
`package`
Your preferred `smooooth` package.