fix: dynamic flake path resolution and replace env-update/sys-update aliases with scripts
This commit is contained in:
@@ -23,5 +23,5 @@ fi
|
|||||||
jq --arg pkg "$PKG_NAME" '. + [$pkg]' "$STATE_FILE" > "${STATE_FILE}.tmp" && mv "${STATE_FILE}.tmp" "$STATE_FILE"
|
jq --arg pkg "$PKG_NAME" '. + [$pkg]' "$STATE_FILE" > "${STATE_FILE}.tmp" && mv "${STATE_FILE}.tmp" "$STATE_FILE"
|
||||||
|
|
||||||
echo "Package $PKG_NAME added declaratively to $STATE_FILE."
|
echo "Package $PKG_NAME added declaratively to $STATE_FILE."
|
||||||
echo "Applying changes with env-update..."
|
echo "Applying changes with nomarchy-env-update..."
|
||||||
env-update
|
nomarchy-env-update
|
||||||
|
|||||||
@@ -23,5 +23,5 @@ fi
|
|||||||
jq --arg pkg "$PKG_NAME" '. - [$pkg]' "$STATE_FILE" > "${STATE_FILE}.tmp" && mv "${STATE_FILE}.tmp" "$STATE_FILE"
|
jq --arg pkg "$PKG_NAME" '. - [$pkg]' "$STATE_FILE" > "${STATE_FILE}.tmp" && mv "${STATE_FILE}.tmp" "$STATE_FILE"
|
||||||
|
|
||||||
echo "Package $PKG_NAME removed declaratively from $STATE_FILE."
|
echo "Package $PKG_NAME removed declaratively from $STATE_FILE."
|
||||||
echo "Applying changes with env-update..."
|
echo "Applying changes with nomarchy-env-update..."
|
||||||
env-update
|
nomarchy-env-update
|
||||||
|
|||||||
@@ -32,4 +32,4 @@ Custom)
|
|||||||
esac
|
esac
|
||||||
|
|
||||||
echo "DNS configured to $dns. Applying changes..."
|
echo "DNS configured to $dns. Applying changes..."
|
||||||
sudo sys-update
|
sudo nomarchy-sys-update
|
||||||
|
|||||||
@@ -7,13 +7,13 @@ STATE_FILE="/etc/nixos/state.json"
|
|||||||
if [[ "--remove" == $1 ]]; then
|
if [[ "--remove" == $1 ]]; then
|
||||||
sudo jq '.features.fido2 = false' "$STATE_FILE" > /tmp/state.json && sudo mv /tmp/state.json "$STATE_FILE"
|
sudo jq '.features.fido2 = false' "$STATE_FILE" > /tmp/state.json && sudo mv /tmp/state.json "$STATE_FILE"
|
||||||
echo "FIDO2 support disabled. Applying changes..."
|
echo "FIDO2 support disabled. Applying changes..."
|
||||||
sudo sys-update
|
sudo nomarchy-sys-update
|
||||||
exit 0
|
exit 0
|
||||||
fi
|
fi
|
||||||
|
|
||||||
sudo jq '.features.fido2 = true' "$STATE_FILE" > /tmp/state.json && sudo mv /tmp/state.json "$STATE_FILE"
|
sudo jq '.features.fido2 = true' "$STATE_FILE" > /tmp/state.json && sudo mv /tmp/state.json "$STATE_FILE"
|
||||||
echo "FIDO2 support enabled. Applying changes..."
|
echo "FIDO2 support enabled. Applying changes..."
|
||||||
sudo sys-update
|
sudo nomarchy-sys-update
|
||||||
|
|
||||||
# Enrollment is still an imperative action
|
# Enrollment is still an imperative action
|
||||||
if command -v pamu2fcfg &> /dev/null; then
|
if command -v pamu2fcfg &> /dev/null; then
|
||||||
|
|||||||
@@ -7,13 +7,13 @@ STATE_FILE="/etc/nixos/state.json"
|
|||||||
if [[ "--remove" == $1 ]]; then
|
if [[ "--remove" == $1 ]]; then
|
||||||
sudo jq '.features.fingerprint = false' "$STATE_FILE" > /tmp/state.json && sudo mv /tmp/state.json "$STATE_FILE"
|
sudo jq '.features.fingerprint = false' "$STATE_FILE" > /tmp/state.json && sudo mv /tmp/state.json "$STATE_FILE"
|
||||||
echo "Fingerprint support disabled. Applying changes..."
|
echo "Fingerprint support disabled. Applying changes..."
|
||||||
sudo sys-update
|
sudo nomarchy-sys-update
|
||||||
exit 0
|
exit 0
|
||||||
fi
|
fi
|
||||||
|
|
||||||
sudo jq '.features.fingerprint = true' "$STATE_FILE" > /tmp/state.json && sudo mv /tmp/state.json "$STATE_FILE"
|
sudo jq '.features.fingerprint = true' "$STATE_FILE" > /tmp/state.json && sudo mv /tmp/state.json "$STATE_FILE"
|
||||||
echo "Fingerprint support enabled. Applying changes..."
|
echo "Fingerprint support enabled. Applying changes..."
|
||||||
sudo sys-update
|
sudo nomarchy-sys-update
|
||||||
|
|
||||||
# Enrollment is still an imperative action
|
# Enrollment is still an imperative action
|
||||||
if command -v fprintd-enroll &> /dev/null; then
|
if command -v fprintd-enroll &> /dev/null; then
|
||||||
|
|||||||
@@ -10,7 +10,7 @@ if [[ $(sudo jq -r '.features.hybridGPU // false' "$STATE_FILE") != "true" ]]; t
|
|||||||
if gum confirm "Hybrid GPU support is not enabled. Enable it now? (Requires sys-update)"; then
|
if gum confirm "Hybrid GPU support is not enabled. Enable it now? (Requires sys-update)"; then
|
||||||
sudo jq '.features.hybridGPU = true' "$STATE_FILE" > /tmp/state.json && sudo mv /tmp/state.json "$STATE_FILE"
|
sudo jq '.features.hybridGPU = true' "$STATE_FILE" > /tmp/state.json && sudo mv /tmp/state.json "$STATE_FILE"
|
||||||
echo "Hybrid GPU support enabled in configuration. Applying changes..."
|
echo "Hybrid GPU support enabled in configuration. Applying changes..."
|
||||||
sudo sys-update
|
sudo nomarchy-sys-update
|
||||||
echo "Please run this command again after the update."
|
echo "Please run this command again after the update."
|
||||||
exit 0
|
exit 0
|
||||||
fi
|
fi
|
||||||
|
|||||||
@@ -25,5 +25,5 @@ jq --argjson val "$NEW_VALUE" '.suspend = $val' "$STATE_FILE" > "$TMP_JSON" && m
|
|||||||
|
|
||||||
echo "Suspend availability set to $NEW_VALUE. Updating environment..."
|
echo "Suspend availability set to $NEW_VALUE. Updating environment..."
|
||||||
|
|
||||||
# Run env-update to apply changes to the menu
|
# Run nomarchy-env-update to apply changes to the menu
|
||||||
env-update
|
nomarchy-env-update
|
||||||
|
|||||||
@@ -9,4 +9,4 @@ timezone=$(timedatectl list-timezones | gum filter --height 20 --header "Set tim
|
|||||||
sudo jq --arg tz "$timezone" '.timezone = $tz' "$STATE_FILE" > /tmp/state.json && sudo mv /tmp/state.json "$STATE_FILE"
|
sudo jq --arg tz "$timezone" '.timezone = $tz' "$STATE_FILE" > /tmp/state.json && sudo mv /tmp/state.json "$STATE_FILE"
|
||||||
|
|
||||||
echo "Timezone is now set to $timezone. Applying changes..."
|
echo "Timezone is now set to $timezone. Applying changes..."
|
||||||
sudo sys-update
|
sudo nomarchy-sys-update
|
||||||
|
|||||||
@@ -1,20 +1,23 @@
|
|||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
# Nomarchy Update Script
|
# Nomarchy Update Script
|
||||||
# 1. Updates the flake inputs in /etc/nixos
|
# 1. Updates the flake inputs in the repository
|
||||||
# 2. Applies system-wide NixOS changes
|
# 2. Applies system-wide NixOS changes
|
||||||
# 3. Applies user-level Home Manager changes
|
# 3. Applies user-level Home Manager changes
|
||||||
|
|
||||||
set -e
|
set -e
|
||||||
|
|
||||||
|
# Detect the repository location
|
||||||
|
if [ -f "/etc/nixos/flake.nix" ]; then
|
||||||
REPO_DIR="/etc/nixos"
|
REPO_DIR="/etc/nixos"
|
||||||
|
elif [ -f "/etc/nomarchy/flake.nix" ]; then
|
||||||
if [ ! -d "$REPO_DIR" ]; then
|
REPO_DIR="/etc/nomarchy"
|
||||||
echo "Error: $REPO_DIR not found. Are you running on a Nomarchy system?"
|
else
|
||||||
|
echo "Error: Nomarchy flake repository not found in /etc/nixos or /etc/nomarchy."
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
echo "--- Starting Nomarchy Update ---"
|
echo "--- Starting Nomarchy Update from $REPO_DIR ---"
|
||||||
|
|
||||||
# 1. Update Flake Lock
|
# 1. Update Flake Lock
|
||||||
echo "Updating flake inputs..."
|
echo "Updating flake inputs..."
|
||||||
|
|||||||
@@ -14,4 +14,4 @@ esac
|
|||||||
sudo jq --argjson val "$value" '.wifi.powersave = $val' "$STATE_FILE" > /tmp/state.json && sudo mv /tmp/state.json "$STATE_FILE"
|
sudo jq --argjson val "$value" '.wifi.powersave = $val' "$STATE_FILE" > /tmp/state.json && sudo mv /tmp/state.json "$STATE_FILE"
|
||||||
|
|
||||||
echo "Wifi powersave set to $1. Applying changes..."
|
echo "Wifi powersave set to $1. Applying changes..."
|
||||||
sudo sys-update
|
sudo nomarchy-sys-update
|
||||||
|
|||||||
@@ -23,4 +23,4 @@ jq --argjson val "$NEW_VALUE" '.screensaver = $val' "$STATE_FILE" > "$TMP_JSON"
|
|||||||
|
|
||||||
echo "Screensaver state set to $NEW_VALUE. Updating environment..."
|
echo "Screensaver state set to $NEW_VALUE. Updating environment..."
|
||||||
|
|
||||||
env-update
|
nomarchy-env-update
|
||||||
|
|||||||
@@ -6,13 +6,23 @@
|
|||||||
|
|
||||||
set -e
|
set -e
|
||||||
|
|
||||||
|
# Detect the repository location
|
||||||
|
if [ -f "/etc/nixos/flake.nix" ]; then
|
||||||
|
REPO_DIR="/etc/nixos"
|
||||||
|
elif [ -f "/etc/nomarchy/flake.nix" ]; then
|
||||||
|
REPO_DIR="/etc/nomarchy"
|
||||||
|
else
|
||||||
|
echo "Error: Nomarchy flake repository not found in /etc/nixos or /etc/nomarchy."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
# Use the pre-flight migration script to ensure the state is synced before evaluation
|
# 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
|
if command -v nomarchy-preflight-migration >/dev/null 2>&1; then
|
||||||
nomarchy-preflight-migration
|
nomarchy-preflight-migration
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Apply Home Manager changes from the local flake
|
# Apply Home Manager changes from the local flake
|
||||||
echo "Applying user-level changes..."
|
echo "Applying user-level changes from $REPO_DIR..."
|
||||||
home-manager switch --flake /etc/nixos#default --impure
|
home-manager switch --flake "$REPO_DIR#default" --impure
|
||||||
|
|
||||||
echo "Environment update complete."
|
echo "Environment update complete."
|
||||||
|
|||||||
@@ -5,8 +5,18 @@
|
|||||||
|
|
||||||
set -e
|
set -e
|
||||||
|
|
||||||
|
# Detect the repository location
|
||||||
|
if [ -f "/etc/nixos/flake.nix" ]; then
|
||||||
|
REPO_DIR="/etc/nixos"
|
||||||
|
elif [ -f "/etc/nomarchy/flake.nix" ]; then
|
||||||
|
REPO_DIR="/etc/nomarchy"
|
||||||
|
else
|
||||||
|
echo "Error: Nomarchy flake repository not found in /etc/nixos or /etc/nomarchy."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
# Apply NixOS changes from the local flake
|
# Apply NixOS changes from the local flake
|
||||||
echo "Applying system-level changes..."
|
echo "Applying system-level changes from $REPO_DIR..."
|
||||||
sudo nixos-rebuild switch --flake /etc/nixos#default --impure
|
sudo nixos-rebuild switch --flake "$REPO_DIR#default" --impure
|
||||||
|
|
||||||
echo "System update complete."
|
echo "System update complete."
|
||||||
|
|||||||
@@ -29,7 +29,7 @@ nomarchy-theme-set "$(nomarchy-theme-list | gum filter --placeholder 'Select a t
|
|||||||
echo "Step 2: Choose your preferred font"
|
echo "Step 2: Choose your preferred font"
|
||||||
nomarchy-font-set "$(nomarchy-font-list | gum filter --placeholder 'Select a font...')"
|
nomarchy-font-set "$(nomarchy-font-list | gum filter --placeholder 'Select a font...')"
|
||||||
|
|
||||||
# 3. Setup Local Repo (Crucial for env-update to work)
|
# 3. Setup Local Repo (Crucial for nomarchy-env-update to work)
|
||||||
echo ""
|
echo ""
|
||||||
echo "Nomarchy relies on a local git repository for declarative updates."
|
echo "Nomarchy relies on a local git repository for declarative updates."
|
||||||
if [ ! -d "/etc/nixos/.git" ]; then
|
if [ ! -d "/etc/nixos/.git" ]; then
|
||||||
|
|||||||
@@ -20,7 +20,7 @@ if fc-list | grep -iq "$font_name"; then
|
|||||||
TMP_JSON=$(mktemp)
|
TMP_JSON=$(mktemp)
|
||||||
jq --arg font "$font_name" '.font = $font' "$STATE_FILE" > "$TMP_JSON" && mv "$TMP_JSON" "$STATE_FILE"
|
jq --arg font "$font_name" '.font = $font' "$STATE_FILE" > "$TMP_JSON" && mv "$TMP_JSON" "$STATE_FILE"
|
||||||
echo "Font set to $font_name declaratively. Applying changes..."
|
echo "Font set to $font_name declaratively. Applying changes..."
|
||||||
env-update
|
nomarchy-env-update
|
||||||
|
|
||||||
# Instant feedback for certain apps via IPC
|
# Instant feedback for certain apps via IPC
|
||||||
if pgrep -x kitty; then
|
if pgrep -x kitty; then
|
||||||
|
|||||||
@@ -46,8 +46,8 @@ if [ -d "$BG_DIR" ]; then
|
|||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
echo "Theme set to $THEME_NAME. Applying changes with env-update..."
|
echo "Theme set to $THEME_NAME. Applying changes with nomarchy-env-update..."
|
||||||
env-update
|
nomarchy-env-update
|
||||||
|
|
||||||
nomarchy-theme-set-templates
|
nomarchy-theme-set-templates
|
||||||
|
|
||||||
|
|||||||
@@ -15,6 +15,6 @@ mkdir -p "$STATE_DIR"
|
|||||||
# triggering an env-update if needed to apply the declarative changes.
|
# triggering an env-update if needed to apply the declarative changes.
|
||||||
|
|
||||||
if [[ $NOMARCHY_TOGGLE_SKIP_VSCODE_THEME != "true" ]]; then
|
if [[ $NOMARCHY_TOGGLE_SKIP_VSCODE_THEME != "true" ]]; then
|
||||||
# We trigger env-update to apply the new VSCode theme declaratively.
|
# We trigger nomarchy-env-update to apply the new VSCode theme declaratively.
|
||||||
env-update
|
nomarchy-env-update
|
||||||
fi
|
fi
|
||||||
|
|||||||
@@ -26,7 +26,7 @@ let
|
|||||||
if [ -n "$SELECTED_FONT" ]; then
|
if [ -n "$SELECTED_FONT" ]; then
|
||||||
TMP_JSON=$(mktemp)
|
TMP_JSON=$(mktemp)
|
||||||
jq --arg font "$SELECTED_FONT" '.font = $font' "$STATE_FILE" > "$TMP_JSON" && mv "$TMP_JSON" "$STATE_FILE"
|
jq --arg font "$SELECTED_FONT" '.font = $font' "$STATE_FILE" > "$TMP_JSON" && mv "$TMP_JSON" "$STATE_FILE"
|
||||||
env-update
|
nomarchy-env-update
|
||||||
fi
|
fi
|
||||||
'';
|
'';
|
||||||
|
|
||||||
@@ -55,7 +55,7 @@ let
|
|||||||
TMP_JSON=$(mktemp)
|
TMP_JSON=$(mktemp)
|
||||||
jq --arg wp "$SELECTED_WP" '.wallpaper = $wp' "$STATE_FILE" > "$TMP_JSON" && mv "$TMP_JSON" "$STATE_FILE"
|
jq --arg wp "$SELECTED_WP" '.wallpaper = $wp' "$STATE_FILE" > "$TMP_JSON" && mv "$TMP_JSON" "$STATE_FILE"
|
||||||
swww img "$SELECTED_WP" --transition-type outer --transition-pos 0.85,0.97 --transition-step 90 &
|
swww img "$SELECTED_WP" --transition-type outer --transition-pos 0.85,0.97 --transition-step 90 &
|
||||||
env-update
|
nomarchy-env-update
|
||||||
fi
|
fi
|
||||||
'';
|
'';
|
||||||
in
|
in
|
||||||
|
|||||||
Reference in New Issue
Block a user