mirror of
https://codeberg.org/icewind/galton.git
synced 2026-06-03 18:34:08 +02:00
homemanager module
This commit is contained in:
parent
09de7e6f00
commit
0e572744bf
5 changed files with 108 additions and 5 deletions
88
nix/hm-module.nix
Normal file
88
nix/hm-module.nix
Normal file
|
|
@ -0,0 +1,88 @@
|
|||
{
|
||||
config,
|
||||
lib,
|
||||
pkgs,
|
||||
...
|
||||
}:
|
||||
with lib; let
|
||||
cfg = config.services.galton;
|
||||
format = pkgs.formats.toml {};
|
||||
removeNulls = filterAttrs (_: val: val != null);
|
||||
configFile = format.generate "galton.toml" {
|
||||
watch = removeNulls {inherit (cfg) symlink;};
|
||||
rule = map removeNulls cfg.rules;
|
||||
};
|
||||
in {
|
||||
options.services.galton = {
|
||||
enable = mkEnableOption "galton";
|
||||
|
||||
directory = mkOption {
|
||||
type = types.str;
|
||||
example = "~/Downloads";
|
||||
description = "Directory to watch for new files";
|
||||
};
|
||||
|
||||
symlink = mkOption {
|
||||
type = types.nullOr types.str;
|
||||
default = null;
|
||||
description = "Create a symlink to matched files";
|
||||
};
|
||||
|
||||
rules = mkOption {
|
||||
default = [];
|
||||
type = types.listOf (types.submodule {
|
||||
options = {
|
||||
name = mkOption {
|
||||
type = types.nullOr types.str;
|
||||
default = null;
|
||||
};
|
||||
url = mkOption {
|
||||
type = types.nullOr types.str;
|
||||
default = null;
|
||||
};
|
||||
referrer = mkOption {
|
||||
type = types.nullOr types.str;
|
||||
default = null;
|
||||
};
|
||||
move = mkOption {
|
||||
type = types.nullOr types.str;
|
||||
default = null;
|
||||
};
|
||||
rename = mkOption {
|
||||
type = types.nullOr types.str;
|
||||
default = null;
|
||||
};
|
||||
};
|
||||
});
|
||||
};
|
||||
|
||||
logLevel = mkOption {
|
||||
type = types.str;
|
||||
default = "info";
|
||||
};
|
||||
|
||||
package = mkOption {
|
||||
type = types.package;
|
||||
defaultText = literalExpression "pkgs.galton";
|
||||
description = "package to use";
|
||||
};
|
||||
};
|
||||
|
||||
config = mkIf cfg.enable {
|
||||
systemd.user.services.galton = {
|
||||
Unit = {
|
||||
Description = "Galton directory watcher";
|
||||
};
|
||||
|
||||
Service = {
|
||||
Environment = "RUST_LOG=${cfg.logLevel}";
|
||||
ExecStart = "${getExe cfg.package} --config ${configFile} watch ${cfg.directory}";
|
||||
Restart = "on-failure";
|
||||
RestartSec = 10;
|
||||
};
|
||||
Install = {
|
||||
WantedBy = ["default.target"];
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue