Nyx-Tools/legacy-nyx/nyx-rebuild.nix
2025-08-13 11:40:03 +02:00

54 lines
1.7 KiB
Nix

{ config, lib, pkgs, ... }:
let
nyxCfg = config.nyx;
cfg = nyxCfg."nyx-rebuild";
# Read template and inject values
rebuiltScript =
let
src = builtins.readFile ./bash/nyx-rebuild.sh; # uses @TOKENS@, not ${...}
in
builtins.replaceStrings
[
"@NIX_DIR@" "@LOG_DIR@" "@START_EDITOR@" "@ENABLE_FORMATTING@"
"@EDITOR@" "@FORMATTER@" "@GIT_BIN@" "@NOM_BIN@" "@AUTO_PUSH@" "@VERSION@"
]
[
(toString nyxCfg.nixDirectory)
(toString nyxCfg.logDir)
(if cfg.startEditor then "true" else "false")
(if cfg.enableFormatting then "true" else "false")
cfg.editor
cfg.formatter
"${pkgs.git}/bin/git"
"${pkgs.nix-output-monitor}/bin/nom"
(if nyxCfg.autoPush then "true" else "false")
"1.2.0"
]
src;
in
{
options.nyx."nyx-rebuild" = {
enable = lib.mkEnableOption "Enable nyx-rebuild script";
editor = lib.mkOption { type = lib.types.str; default = "nvim"; };
formatter = lib.mkOption { type = lib.types.str; default = "alejandra"; };
startEditor = lib.mkOption { type = lib.types.bool; default = false; };
enableFormatting = lib.mkOption { type = lib.types.bool; default = false; };
enableAlias = lib.mkOption { type = lib.types.bool; default = true; };
};
config = lib.mkIf (nyxCfg.enable && cfg.enable) {
home.packages =
lib.optionals (cfg.enableFormatting && cfg.formatter == "alejandra") [ pkgs.alejandra ]
++ [
# Ensure nyx-tool exists if you call it in the script
(pkgs.writeShellScriptBin "nyx-rebuild" rebuiltScript)
];
home.shellAliases = lib.mkIf cfg.enableAlias {
nr = "nyx-rebuild";
};
};
}