- Add packages/nunc derivation built from Gitea with swiftPackages - Add home module reichard.services.nunc with configurable settings and launchd agent for macOS - Enable nunc service on mac-va-mbp-work - Tweak mac-va-mbp-work defaults: hide menu bar, disable auto brightness, hide Finder desktop icons
110 lines
2.8 KiB
Nix
110 lines
2.8 KiB
Nix
{ config
|
|
, lib
|
|
, pkgs
|
|
, namespace
|
|
, ...
|
|
}:
|
|
let
|
|
cfg = config.${namespace}.services.nunc;
|
|
in
|
|
{
|
|
options.${namespace}.services.nunc = {
|
|
enable = lib.mkEnableOption "nunc floating clock overlay";
|
|
|
|
settings = lib.mkOption {
|
|
type = lib.types.submodule {
|
|
options = {
|
|
fontSize = lib.mkOption {
|
|
type = lib.types.number;
|
|
default = 12;
|
|
description = "Font size for the clock display.";
|
|
};
|
|
|
|
verticalPadding = lib.mkOption {
|
|
type = lib.types.number;
|
|
default = 9;
|
|
description = "Vertical padding around the clock text.";
|
|
};
|
|
|
|
horizontalPadding = lib.mkOption {
|
|
type = lib.types.number;
|
|
default = 20;
|
|
description = "Horizontal padding around the clock text.";
|
|
};
|
|
|
|
position = lib.mkOption {
|
|
type = lib.types.enum [
|
|
"top_left"
|
|
"top_center"
|
|
"top_right"
|
|
"bottom_left"
|
|
"bottom_center"
|
|
"bottom_right"
|
|
];
|
|
default = "top_right";
|
|
description = "Position of the clock overlay on screen.";
|
|
};
|
|
|
|
offsetX = lib.mkOption {
|
|
type = lib.types.number;
|
|
default = -12;
|
|
description = "Horizontal offset from the base position.";
|
|
};
|
|
|
|
offsetY = lib.mkOption {
|
|
type = lib.types.number;
|
|
default = 4;
|
|
description = "Vertical offset from the base position.";
|
|
};
|
|
|
|
dateFormat = lib.mkOption {
|
|
type = lib.types.str;
|
|
default = "EEE MMM d HH:mm:ss";
|
|
description = "Date format string (NSDateFormatter / Unicode TR35 format).";
|
|
};
|
|
};
|
|
};
|
|
default = { };
|
|
description = "Nunc configuration. Written to ~/.config/nunc/config.json.";
|
|
};
|
|
};
|
|
|
|
config = lib.mkIf cfg.enable {
|
|
assertions = [
|
|
{
|
|
assertion = pkgs.stdenv.isDarwin;
|
|
message = "reichard.services.nunc is only supported on macOS (Darwin).";
|
|
}
|
|
];
|
|
|
|
home.packages = [ pkgs.reichard.nunc ];
|
|
|
|
home.file.".config/nunc/config.json" = {
|
|
text = builtins.toJSON {
|
|
inherit (cfg.settings)
|
|
fontSize
|
|
verticalPadding
|
|
horizontalPadding
|
|
position
|
|
offsetX
|
|
offsetY
|
|
dateFormat
|
|
;
|
|
};
|
|
};
|
|
|
|
launchd.agents.nunc = {
|
|
enable = true;
|
|
config = {
|
|
Label = "io.reichard.nunc";
|
|
Program = "${pkgs.reichard.nunc}/bin/nunc";
|
|
RunAtLoad = true;
|
|
KeepAlive = true;
|
|
ProcessType = "Interactive";
|
|
StandardOutPath = "${config.home.homeDirectory}/Library/Logs/nunc/nunc.out.log";
|
|
StandardErrorPath = "${config.home.homeDirectory}/Library/Logs/nunc/nunc.err.log";
|
|
};
|
|
};
|
|
};
|
|
}
|