Go to file
2025-05-21 21:01:20 +10:00
flake.lock feat: init 2025-05-21 19:00:57 +10:00
flake.nix feat: init 2025-05-21 19:00:57 +10:00
module.nix feat: init 2025-05-21 19:00:57 +10:00
README.md docs: improve 2025-05-21 21:01:20 +10:00
smooooth.sh feat: init 2025-05-21 19:00:57 +10:00

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.