86 lines
2.3 KiB
Nix
86 lines
2.3 KiB
Nix
{ config, lib, pkgs, ... }:
|
|
|
|
let
|
|
nyxCfg = config.nyx;
|
|
cfg = nyxCfg."nyx-rebuild";
|
|
|
|
# Function to put a file from lib/ into the Nix store
|
|
libFile = file:
|
|
builtins.toFile
|
|
(builtins.baseNameOf file)
|
|
(builtins.readFile ./bash/lib/${file});
|
|
|
|
# List of files you want to source
|
|
filesToSource = [
|
|
"git.sh"
|
|
"logging.sh"
|
|
"sudo.sh"
|
|
# "nyx-rebuild-logic.sh"
|
|
];
|
|
|
|
# Build sourcing lines dynamically
|
|
sourcingLines =
|
|
builtins.concatStringsSep "\n"
|
|
(map (f: "source ${libFile f}") filesToSource);
|
|
|
|
# Read template and inject values
|
|
rebuiltScript =
|
|
let
|
|
src = builtins.readFile ./bash/nyx-rebuild.sh;
|
|
in
|
|
builtins.replaceStrings
|
|
[
|
|
"@FLAKE_DIRECTORY@"
|
|
"@LOG_DIR@"
|
|
"@ENABLE_FORMATTING@"
|
|
"@FORMATTER@"
|
|
"@GIT_BIN@"
|
|
"@NOM_BIN@"
|
|
"@AUTO_STAGE@"
|
|
"@AUTO_COMMIT@"
|
|
"@AUTO_PUSH@"
|
|
"@VERSION@"
|
|
]
|
|
[
|
|
(toString nyxCfg.nixDirectory)
|
|
(toString nyxCfg.logDir)
|
|
(if cfg.enableFormatting then "true" else "false")
|
|
cfg.formatter
|
|
"${pkgs.git}/bin/git"
|
|
"${pkgs.nix-output-monitor}/bin/nom"
|
|
(if nyxCfg.autoStage then "true" else "false")
|
|
(if nyxCfg.autoCommit then "true" else "false")
|
|
(if nyxCfg.autoPush then "true" else "false")
|
|
"1.2.0"
|
|
]
|
|
(
|
|
"#!/usr/bin/env bash\n"
|
|
+ "source_all () {\n"
|
|
+ sourcingLines
|
|
+ "\n}\n"
|
|
+ src
|
|
);
|
|
|
|
in
|
|
{
|
|
options.nyx."nyx-rebuild" = {
|
|
enable = lib.mkEnableOption "Enable nyx-rebuild script";
|
|
formatter = lib.mkOption { type = lib.types.str; default = "alejandra"; };
|
|
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) {
|
|
environment.systemPackages =
|
|
lib.optionals (cfg.enableFormatting && cfg.formatter == "alejandra") [
|
|
pkgs.alejandra
|
|
]
|
|
++ [
|
|
(pkgs.writeShellScriptBin "nyx-rebuild" rebuiltScript)
|
|
];
|
|
|
|
environment.shellAliases = lib.mkIf cfg.enableAlias {
|
|
nr = "nyx-rebuild";
|
|
};
|
|
};
|
|
}
|