diff --git a/core/home/bash.nix b/core/home/bash.nix index 7005f0c..548f172 100644 --- a/core/home/bash.nix +++ b/core/home/bash.nix @@ -32,8 +32,8 @@ gcad = "git commit -a --amend"; # NixOS commands - sys-update = "sudo nixos-rebuild switch --flake /etc/nixos#default --impure"; - env-update = "nomarchy-preflight-migration && home-manager switch --flake /etc/nixos#default --impure"; + sys-update = "nomarchy-sys-update"; + env-update = "nomarchy-env-update"; }; }; } diff --git a/core/system/default.nix b/core/system/default.nix index 679f5ac..047d13f 100644 --- a/core/system/default.nix +++ b/core/system/default.nix @@ -5,6 +5,7 @@ ./options.nix ./state.nix ./nix.nix + ./scripts.nix ./systemd.nix ./virtualization.nix ./fonts.nix diff --git a/core/system/scripts.nix b/core/system/scripts.nix new file mode 100644 index 0000000..cdcf61e --- /dev/null +++ b/core/system/scripts.nix @@ -0,0 +1,64 @@ +{ config, pkgs, lib, ... }: + +let + # System script dependencies + systemScriptDeps = with pkgs; [ + coreutils + gnused + gnugrep + findutils + gawk + jq + nixos-rebuild + home-manager + git + sudo + brightnessctl + playerctl + pamixer + pciutils + usbutils + networkmanager + lshw + parted + btrfs-progs + cryptsetup + gum + curl + wget + libnotify + bc + supergfxctl + systemd + ]; + + nomarchy-system-scripts = pkgs.stdenv.mkDerivation { + pname = "nomarchy-system-scripts"; + version = "1.0.0"; + src = ./scripts; + + nativeBuildInputs = [ pkgs.makeWrapper ]; + + installPhase = '' + mkdir -p $out/bin + cp * $out/bin/ + + chmod +x $out/bin/* + patchShebangs $out/bin + ''; + + postFixup = '' + deps="${lib.makeBinPath systemScriptDeps}" + for file in $out/bin/*; do + if [ -f "$file" ]; then + wrapProgram "$file" \ + --prefix PATH : "$deps" \ + --set NOMARCHY_PATH "/etc/nixos/nomarchy" + fi + done + ''; + }; +in +{ + environment.systemPackages = [ nomarchy-system-scripts ]; +} diff --git a/features/default.nix b/features/default.nix index 87fc689..8764e7d 100644 --- a/features/default.nix +++ b/features/default.nix @@ -19,6 +19,7 @@ in ../themes/engine/stylix-compat.nix ../themes/engine/loader.nix ../themes/engine/files.nix + ../themes/engine/scripts.nix ../themes/engine/stylix.nix ../themes/engine/switcher.nix ./apps/alacritty/default.nix diff --git a/features/scripts/utils/nomarchy-env-update b/features/scripts/utils/nomarchy-env-update new file mode 100644 index 0000000..1208e3a --- /dev/null +++ b/features/scripts/utils/nomarchy-env-update @@ -0,0 +1,18 @@ +#!/usr/bin/env bash + +# Nomarchy Environment Update Script +# 1. Runs the pre-flight state migration +# 2. Applies user-level Home Manager changes + +set -e + +# Use the pre-flight migration script to ensure the state is synced before evaluation +if command -v nomarchy-preflight-migration >/dev/null 2>&1; then + nomarchy-preflight-migration +fi + +# Apply Home Manager changes from the local flake +echo "Applying user-level changes..." +home-manager switch --flake /etc/nixos#default --impure + +echo "Environment update complete." diff --git a/features/scripts/utils/nomarchy-sys-update b/features/scripts/utils/nomarchy-sys-update new file mode 100644 index 0000000..38d033e --- /dev/null +++ b/features/scripts/utils/nomarchy-sys-update @@ -0,0 +1,12 @@ +#!/usr/bin/env bash + +# Nomarchy System Update Script +# 1. Applies system-wide NixOS changes + +set -e + +# Apply NixOS changes from the local flake +echo "Applying system-level changes..." +sudo nixos-rebuild switch --flake /etc/nixos#default --impure + +echo "System update complete." diff --git a/themes/engine/scripts.nix b/themes/engine/scripts.nix new file mode 100644 index 0000000..51b6464 --- /dev/null +++ b/themes/engine/scripts.nix @@ -0,0 +1,52 @@ +{ config, pkgs, lib, ... }: + +let + nomarchyLib = import ../../lib { inherit lib; }; + + # Dependencies for theme engine scripts + themeDeps = with pkgs; [ + coreutils + gnused + gnugrep + findutils + gawk + jq + swww + libnotify + gum + brightnessctl + playerctl + pamixer + bc + ]; + + nomarchy-theme-engine-scripts = pkgs.stdenv.mkDerivation { + pname = "nomarchy-theme-engine-scripts"; + version = "1.0.0"; + src = ./scripts; + + nativeBuildInputs = [ pkgs.makeWrapper ]; + + installPhase = '' + mkdir -p $out/bin + cp * $out/bin/ + + chmod +x $out/bin/* + patchShebangs $out/bin + ''; + + postFixup = '' + deps="${lib.makeBinPath themeDeps}" + for file in $out/bin/*; do + if [ -f "$file" ]; then + wrapProgram "$file" \ + --prefix PATH : "$deps" \ + --set NOMARCHY_PATH "/etc/nixos/nomarchy" + fi + done + ''; + }; +in +{ + home.packages = [ nomarchy-theme-engine-scripts ]; +} diff --git a/themes/engine/scripts/nomarchy-theme-set-templates b/themes/engine/scripts/nomarchy-theme-set-templates index e49258c..e9f8ee0 100755 --- a/themes/engine/scripts/nomarchy-theme-set-templates +++ b/themes/engine/scripts/nomarchy-theme-set-templates @@ -1,7 +1,7 @@ #!/bin/bash -TEMPLATES_DIR="$NOMARCHY_PATH/assets/themed" -USER_TEMPLATES_DIR="$HOME/.config/nomarchy/themed" +TEMPLATES_DIR="$NOMARCHY_PATH/themes/templates" +USER_TEMPLATES_DIR="$HOME/.config/nomarchy/themes/templates" NEXT_THEME_DIR="$HOME/.config/nomarchy/current/theme" COLORS_FILE="$NEXT_THEME_DIR/colors.toml"