chore(hygiene): remove legacy Arch Linux and imperative scripts

- Delete obsolete pacman, AUR, and shell-based update scripts
- Remove imperative configuration refresh scripts replaced by Home Manager
- Overhaul nomarchy-menu to remove Install/Remove submenus and legacy options
- Clean up unused assets including applications/ directory and icons
- Enforce strict upstream/downstream separation
This commit is contained in:
Bernardo Magri
2026-04-04 10:13:32 +01:00
parent b86c2bad43
commit b03196514a
111 changed files with 5 additions and 1484 deletions

View File

@@ -1,21 +0,0 @@
[Desktop Entry]
Type=Application
TryExec=alacritty
Exec=alacritty
Icon=Alacritty
Terminal=false
Categories=System;TerminalEmulator;
Name=Alacritty
GenericName=Terminal
Comment=A fast, cross-platform, OpenGL terminal emulator
StartupNotify=true
StartupWMClass=Alacritty
Actions=New;
X-TerminalArgExec=-e
X-TerminalArgAppId=--class=
X-TerminalArgTitle=--title=
X-TerminalArgDir=--working-directory=
[Desktop Action New]
Name=New Terminal
Exec=alacritty

View File

@@ -1,2 +0,0 @@
[Desktop Entry]
Hidden=true

View File

@@ -1,2 +0,0 @@
[Desktop Entry]
Hidden=true

View File

@@ -1,2 +0,0 @@
[Desktop Entry]
Hidden=true

View File

@@ -1,2 +0,0 @@
[Desktop Entry]
Hidden=true

View File

@@ -1,2 +0,0 @@
[Desktop Entry]
Hidden=true

View File

@@ -1,2 +0,0 @@
[Desktop Entry]
Hidden=true

View File

@@ -1,2 +0,0 @@
[Desktop Entry]
Hidden=true

View File

@@ -1,2 +0,0 @@
[Desktop Entry]
Hidden=true

View File

@@ -1,2 +0,0 @@
[Desktop Entry]
Hidden=true

View File

@@ -1,2 +0,0 @@
[Desktop Entry]
Hidden=true

View File

@@ -1,2 +0,0 @@
[Desktop Entry]
Hidden=true

View File

@@ -1,2 +0,0 @@
[Desktop Entry]
Hidden=true

View File

@@ -1,2 +0,0 @@
[Desktop Entry]
Hidden=true

View File

@@ -1,2 +0,0 @@
[Desktop Entry]
Hidden=true

View File

@@ -1,2 +0,0 @@
[Desktop Entry]
Hidden=true

View File

@@ -1,2 +0,0 @@
[Desktop Entry]
Hidden=true

View File

@@ -1,2 +0,0 @@
[Desktop Entry]
Hidden=true

View File

@@ -1,2 +0,0 @@
[Desktop Entry]
Hidden=true

View File

@@ -1,2 +0,0 @@
[Desktop Entry]
Hidden=true

View File

@@ -1,2 +0,0 @@
[Desktop Entry]
Hidden=true

View File

@@ -1,2 +0,0 @@
[Desktop Entry]
Hidden=true

View File

@@ -1,2 +0,0 @@
[Desktop Entry]
Hidden=true

View File

@@ -1,2 +0,0 @@
[Desktop Entry]
Hidden=true

View File

@@ -1,2 +0,0 @@
[Desktop Entry]
Hidden=true

View File

@@ -1,2 +0,0 @@
[Desktop Entry]
Hidden=true

View File

@@ -1,2 +0,0 @@
[Desktop Entry]
Hidden=true

View File

@@ -1,2 +0,0 @@
[Desktop Entry]
Hidden=true

View File

@@ -1,2 +0,0 @@
[Desktop Entry]
Hidden=true

View File

@@ -1,2 +0,0 @@
[Desktop Entry]
Hidden=true

View File

@@ -1,2 +0,0 @@
[Desktop Entry]
Hidden=true

View File

@@ -1,2 +0,0 @@
[Desktop Entry]
Hidden=true

Binary file not shown.

Before

Width:  |  Height:  |  Size: 64 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 53 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 196 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 33 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 75 KiB

View File

@@ -1,8 +0,0 @@
[Desktop Entry]
Name=Image Viewer
Exec=imv %F
Icon=imv
Type=Application
MimeType=image/png;image/jpeg;image/jpg;image/gif;image/bmp;image/webp;image/tiff;image/x-xcf;image/x-portable-pixmap;image/x-xbitmap;
Terminal=false
Categories=Graphics;Viewer;

View File

@@ -1,51 +0,0 @@
[Desktop Entry]
Type=Application
Name=Media Player
Name[ar]=مشغل وسائط mpv
Name[ca]=Reproductor multimèdia mpv
Name[cs]=mpv přehrávač
Name[da]=mpv-medieafspiller
Name[fr]=Lecteur multimédia mpv
Name[it]=Lettore multimediale mpv
Name[ja]=mpv メディアプレイヤー
Name[pl]=Odtwarzacz mpv
Name[ru]=Проигрыватель mpv
Name[tr]=mpv Ortam Oynatıcı
Name[zh_CN]=mpv 媒体播放器
Name[zh_TW]=mpv 媒體播放器
GenericName=Multimedia player
GenericName[ar]=مُشَغِّل وسائط متعددة
GenericName[cs]=Multimediální přehrávač
GenericName[da]=Multimedieafspiller
GenericName[fr]=Lecteur multimédia
GenericName[it]=Lettore multimediale
GenericName[ja]=マルチメディアプレイヤー
GenericName[ru]=Мультимедийный проигрыватель
GenericName[tr]=Çoklu ortam oynatıcı
GenericName[zh_CN]=多媒体播放器
GenericName[zh_TW]=多媒體播放器
Comment=Play movies and songs
Comment[ar]=شَغِّل الأفلام والأغاني
Comment[ca]=Reproduïu vídeos i cançons
Comment[cs]=Přehrává filmy a hudbu
Comment[da]=Afspil film og sange
Comment[de]=Filme und Musik abspielen
Comment[es]=Reproduzca vídeos y canciones
Comment[fr]=Lire des vidéos et des musiques
Comment[ja]=映画や音楽を再生する
Comment[it]=Riproduci video e canzoni
Comment[pl]=Odtwarzaj filmy i muzykę
Comment[ru]=Воспроизведение фильмов и музыки
Comment[tr]=Filmleri ve şarkıları oynatın
Comment[zh_CN]=播放电影和歌曲
Comment[zh_TW]=播放電影和歌曲
Icon=mpv
TryExec=mpv
Exec=mpv --player-operation-mode=pseudo-gui -- %U
Terminal=false
Categories=AudioVideo;Audio;Video;Player;TV;
MimeType=application/ogg;application/x-ogg;application/mxf;application/sdp;application/smil;application/x-smil;application/streamingmedia;application/x-streamingmedia;application/vnd.rn-realmedia;application/vnd.rn-realmedia-vbr;audio/aac;audio/x-aac;audio/vnd.dolby.heaac.1;audio/vnd.dolby.heaac.2;audio/aiff;audio/x-aiff;audio/m4a;audio/x-m4a;application/x-extension-m4a;audio/mp1;audio/x-mp1;audio/mp2;audio/x-mp2;audio/mp3;audio/x-mp3;audio/mpeg;audio/mpeg2;audio/mpeg3;audio/mpegurl;audio/x-mpegurl;audio/mpg;audio/x-mpg;audio/rn-mpeg;audio/musepack;audio/x-musepack;audio/ogg;audio/scpls;audio/x-scpls;audio/vnd.rn-realaudio;audio/wav;audio/x-pn-wav;audio/x-pn-windows-pcm;audio/x-realaudio;audio/x-pn-realaudio;audio/x-ms-wma;audio/x-pls;audio/x-wav;video/mpeg;video/x-mpeg2;video/x-mpeg3;video/mp4v-es;video/x-m4v;video/mp4;application/x-extension-mp4;video/divx;video/vnd.divx;video/msvideo;video/x-msvideo;video/ogg;video/quicktime;video/vnd.rn-realvideo;video/x-ms-afs;video/x-ms-asf;audio/x-ms-asf;application/vnd.ms-asf;video/x-ms-wmv;video/x-ms-wmx;video/x-ms-wvxvideo;video/x-avi;video/avi;video/x-flic;video/fli;video/x-flc;video/flv;video/x-flv;video/x-theora;video/x-theora+ogg;video/x-matroska;video/mkv;audio/x-matroska;application/x-matroska;video/webm;audio/webm;audio/vorbis;audio/x-vorbis;audio/x-vorbis+ogg;video/x-ogm;video/x-ogm+ogg;application/x-ogm;application/x-ogm-audio;application/x-ogm-video;application/x-shorten;audio/x-shorten;audio/x-ape;audio/x-wavpack;audio/x-tta;audio/AMR;audio/ac3;audio/eac3;audio/amr-wb;video/mp2t;audio/flac;audio/mp4;application/x-mpegurl;video/vnd.mpegurl;application/vnd.apple.mpegurl;audio/x-pn-au;video/3gp;video/3gpp;video/3gpp2;audio/3gpp;audio/3gpp2;video/dv;audio/dv;audio/opus;audio/vnd.dts;audio/vnd.dts.hd;audio/x-adpcm;application/x-cue;audio/m3u;audio/vnd.wave;video/vnd.avi;
X-KDE-Protocols=appending,file,ftp,hls,http,https,mms,mpv,rtmp,rtmps,rtmpt,rtmpts,rtp,rtsp,rtsps,sftp,srt,srtp,webdav,webdavs
StartupWMClass=mpv
Keywords=mpv;media;player;video;audio;tv;
Keywords[ar]=mpv;إم بي في;ام بي في;وسائط;مشغل;فيديو;مرئية;صوتي;تلفاز;

View File

@@ -1,10 +0,0 @@
[Desktop Entry]
Name=Typora
GenericName=Markdown Editor
Exec=typora --enable-wayland-ime %U
Icon=typora
Type=Application
StartupNotify=true
Categories=Office;WordProcessor;
MimeType=text/markdown;text/x-markdown;

View File

@@ -1,22 +0,0 @@
#!/bin/bash
# Finish the installation of Nomarchy with items that can only be done after logging in.
set -e
FIRST_RUN_MODE=~/.local/state/nomarchy/first-run.mode
if [[ -f $FIRST_RUN_MODE ]]; then
rm -f "$FIRST_RUN_MODE"
bash "$OMARCHY_PATH/install/first-run/battery-monitor.sh"
bash "$OMARCHY_PATH/install/first-run/cleanup-reboot-sudoers.sh"
bash "$OMARCHY_PATH/install/first-run/firewall.sh"
bash "$OMARCHY_PATH/install/first-run/dns-resolver.sh"
bash "$OMARCHY_PATH/install/first-run/gnome-theme.sh"
bash "$OMARCHY_PATH/install/first-run/elephant.sh"
sudo rm -f /etc/sudoers.d/first-run
bash "$OMARCHY_PATH/install/first-run/welcome.sh"
bash "$OMARCHY_PATH/install/first-run/wifi.sh"
fi

View File

@@ -1,16 +0,0 @@
#!/bin/bash
# Allow Chromium to sign in to Google accounts by adding the correct
# oauth client id and secret to ~/.config/chromium-flags.conf.
if [[ -f ~/.config/chromium-flags.conf ]]; then
CONF=~/.config/chromium-flags.conf
grep -qxF -- "--oauth2-client-id=77185425430.apps.googleusercontent.com" "$CONF" ||
echo "--oauth2-client-id=77185425430.apps.googleusercontent.com" >>"$CONF"
grep -qxF -- "--oauth2-client-secret=OTJgUOQcT7lO7GsGZq2G4IlT" "$CONF" ||
echo "--oauth2-client-secret=OTJgUOQcT7lO7GsGZq2G4IlT" >>"$CONF"
echo "Now you can login to your Google Account in Chromium."
fi

View File

@@ -1,86 +0,0 @@
#!/usr/bin/env bash
# Install one of the supported development environments declaratively.
# Usually called via Install > Development > * in the Nomarchy Menu.
if [[ -z $1 ]]; then
echo "Usage: nomarchy-install-dev-env <ruby|node|bun|deno|go|laravel|symfony|php|python|elixir|phoenix|rust|java|zig|ocaml|dotnet|clojure|scala>" >&2
exit 1
fi
install_php() {
echo -e "Installing PHP environment declaratively...\n"
nomarchy-pkg-add php
nomarchy-pkg-add phpExtensions.bcmath
nomarchy-pkg-add phpExtensions.intl
nomarchy-pkg-add phpExtensions.iconv
nomarchy-pkg-add phpExtensions.openssl
nomarchy-pkg-add phpExtensions.pdo_sqlite
nomarchy-pkg-add phpExtensions.pdo_mysql
nomarchy-pkg-add phpPackages.composer
echo -e "\nPHP environment added to your packages."
}
install_node() {
echo -e "Installing Node.js with mise...\n"
mise use --global node
}
case "$1" in
ruby)
echo -e "Installing Ruby with mise...\n"
nomarchy-pkg-add libyaml
mise use --global ruby@latest
echo -e "\nYou can now use: ruby --version"
;;
node)
install_node
;;
bun)
echo -e "Installing Bun with mise...\n"
mise use -g bun@latest
;;
deno)
echo -e "Installing Deno with mise...\n"
mise use -g deno@latest
;;
go)
echo -e "Installing Go with mise...\n"
mise use --global go@latest
;;
php)
install_php
;;
laravel)
echo -e "Installing Laravel stack...\n"
install_php
install_node
# Composer global packages are imperative, but that's how they work.
composer global require laravel/installer
echo -e "\nYou can now run: laravel new myproject"
;;
python)
echo -e "Installing Python with mise...\n"
mise use --global python@latest
echo -e "\nInstalling uv...\n"
# uv can be installed via nix
nomarchy-pkg-add uv
;;
rust)
echo -e "Installing Rust declaratively...\n"
# Instead of shell script from website, use nixpkgs
nomarchy-pkg-add rustup
rustup-init -y
;;
# Add more language cases as needed, utilizing mise or nixpkgs.
*)
# Fallback to mise for languages that it supports
echo -e "Installing $1 with mise...\n"
if mise use --global "$1@latest"; then
echo "$1 installed successfully."
else
echo "Unsupported language: $1"
exit 1
fi
;;
esac

View File

@@ -1,31 +0,0 @@
#!/usr/bin/env bash
# Install one of the supported development environments declaratively for Nomarchy NixOS.
if [[ -z $1 ]]; then
echo "Usage: nomarchy-install-dev-env <ruby|node|bun|deno|go|laravel|symfony|php|python|elixir|phoenix|rust|java|zig|ocaml|dotnet|clojure|scala>" >&2
exit 1
fi
case "$1" in
php)
echo -e "Installing PHP and extensions declaratively...\n"
# This uses the already refactored declarative nomarchy-pkg-add
nomarchy-pkg-add php
nomarchy-pkg-add phpExtensions.bcmath
nomarchy-pkg-add phpExtensions.intl
nomarchy-pkg-add phpExtensions.iconv
nomarchy-pkg-add phpExtensions.openssl
nomarchy-pkg-add phpExtensions.pdo_sqlite
nomarchy-pkg-add phpExtensions.pdo_mysql
nomarchy-pkg-add phpPackages.composer
echo -e "\nPHP environment added to your packages."
;;
# The rest use 'mise' which is already installed and manages its own state in ~/.config/mise
*)
# Delegate to the original script logic if mise is used
# Or we can just call the mise command directly if it's a simple case.
# Let's keep the mise-based language installs as they are, but make sure mise is available.
/etc/profiles/per-user/$USER/bin/nomarchy-install-dev-env.original "$@"
;;
esac

View File

@@ -1,45 +0,0 @@
#!/usr/bin/env bash
# Configure Docker declaratively and provide instructions for running DBs.
# Usually called via Install > Development > Docker DB from the Nomarchy Menu.
FEATURE_FILE="/etc/nixos/nomarchy-features/docker.nix"
if [ ! -f "$FEATURE_FILE" ]; then
sudo mkdir -p "/etc/nixos/nomarchy-features"
cat <<EOF | sudo tee "$FEATURE_FILE" > /dev/null
{ config, pkgs, ... }:
{
virtualisation.docker.enable = true;
users.users.\${config.users.users.mainUser}.extraGroups = [ "docker" ]; # Replace mainUser with your username
}
EOF
echo "Created $FEATURE_FILE to enable Docker."
echo "IMPORTANT: To finish enabling Docker, add './nomarchy-features/docker.nix' to your imports list in /etc/nixos/system.nix or /etc/nixos/flake.nix,"
echo "then run 'sys-update'."
echo "Wait for the update to complete before running docker commands."
echo ""
fi
options=("MySQL" "PostgreSQL" "Redis" "MongoDB" "MariaDB" "MSSQL")
if (( $# == 0 )); then
choices=$(printf "%s\n" "${options[@]}" | gum choose --header "Select database (ensure Docker is running)") || exit 0
else
choices="$@"
fi
if [[ -n $choices ]]; then
for db in $choices; do
case $db in
MySQL) sudo docker run -d --restart unless-stopped -p "127.0.0.1:3306:3306" --name=mysql8 -e MYSQL_ROOT_PASSWORD= -e MYSQL_ALLOW_EMPTY_PASSWORD=true mysql:8.4 ;;
PostgreSQL) sudo docker run -d --restart unless-stopped -p "127.0.0.1:5432:5432" --name=postgres18 -e POSTGRES_HOST_AUTH_METHOD=trust postgres:18 ;;
MariaDB) sudo docker run -d --restart unless-stopped -p "127.0.0.1:3306:3306" --name=mariadb11 -e MARIADB_ROOT_PASSWORD= -e MARIADB_ALLOW_EMPTY_ROOT_PASSWORD=true mariadb:11.8 ;;
Redis) sudo docker run -d --restart unless-stopped -p "127.0.0.1:6379:6379" --name=redis redis:7 ;;
MongoDB) sudo docker run -d --restart unless-stopped -p "127.0.0.1:27017:27017" --name mongodb -e MONGO_INITDB_ROOT_USERNAME=admin -e MONGO_INITDB_ROOT_PASSWORD=admin123 mongo:noble ;;
MSSQL) sudo docker run -d --restart unless-stopped -p "127.0.0.1:1433:1433" --name mssql -e MSSQL_PID=Developer -e ACCEPT_EULA=Y -e "MSSQL_SA_PASSWORD=@dmin123" mcr.microsoft.com/mssql/server:2022-CU12-ubuntu-22.04 ;;
esac
done
else
echo "No databases selected for installation."
fi

View File

@@ -1,10 +0,0 @@
#!/bin/bash
# Install and start the Dropbox service. Must then be authenticated via the web.
echo "Installing all dependencies..."
nomarchy-pkg-add dropbox dropbox-cli libappindicator-gtk3 python-gpgme nautilus-dropbox
echo "Starting Dropbox..."
uwsm-app -- dropbox-cli start &>/dev/null &
echo "See Dropbox icon behind  hover tray in top right and right-click for setup."

View File

@@ -1,17 +0,0 @@
#!/bin/bash
# Install and launch Geforce Now.
set -e
nomarchy-pkg-add flatpak
cd /tmp
# Download and run GeForce NOW
curl -LO https://international.download.nvidia.com/GFNLinux/GeForceNOWSetup.bin
chmod +x GeForceNOWSetup.bin
./GeForceNOWSetup.bin
# Ensure a separate browser process not started by GFN is available.
# If not, it seems like GFN has a tendency to hang on login.
setsid nomarchy-launch-browser

View File

@@ -1,17 +0,0 @@
#!/bin/bash
# Install the NordVPN service with optional GUI.
echo "Installing NordVPN..."
nomarchy-pkg-aur-add nordvpn-bin
echo "Enabling NordVPN daemon..."
sudo systemctl enable --now nordvpnd
echo "Adding user to nordvpn group..."
sudo usermod -aG nordvpn "$USER"
echo -e "\nNordVPN installed! After reboot, run 'nordvpn login' to authenticate."
echo
gum confirm "Reboot now to make NordVPN usable?" && nomarchy-system-reboot

View File

@@ -1,23 +0,0 @@
#!/usr/bin/env bash
# Configure Steam declaratively for NixOS
FEATURE_FILE="/etc/nixos/nomarchy-features/steam.nix"
if [ -f "$FEATURE_FILE" ]; then
echo "Steam is already configured in $FEATURE_FILE"
exit 0
fi
sudo mkdir -p "/etc/nixos/nomarchy-features"
cat <<EOF | sudo tee "$FEATURE_FILE" > /dev/null
{ config, pkgs, ... }:
{
programs.steam.enable = true;
hardware.graphics.enable32Bit = true; # Needed for many games
}
EOF
echo "Created $FEATURE_FILE."
echo "IMPORTANT: To finish enabling Steam, add './nomarchy-features/steam.nix' to your imports list in /etc/nixos/system.nix or /etc/nixos/flake.nix,"
echo "then run 'sys-update'."

View File

@@ -1,25 +0,0 @@
#!/usr/bin/env bash
# Configure Tailscale declaratively for NixOS
FEATURE_FILE="/etc/nixos/nomarchy-features/tailscale.nix"
if [ -f "$FEATURE_FILE" ]; then
echo "Tailscale is already configured in $FEATURE_FILE"
exit 0
fi
sudo mkdir -p "/etc/nixos/nomarchy-features"
cat <<EOF | sudo tee "$FEATURE_FILE" > /dev/null
{ config, pkgs, ... }:
{
services.tailscale.enable = true;
}
EOF
echo "Created $FEATURE_FILE."
echo "IMPORTANT: To finish enabling Tailscale, add './nomarchy-features/tailscale.nix' to your imports list in /etc/nixos/system.nix or /etc/nixos/flake.nix,"
echo "then run 'sys-update'."
echo "After sys-update completes, you can log in by running 'sudo tailscale up'."
nomarchy-webapp-install "Tailscale" "https://login.tailscale.com/admin/machines" https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons/png/tailscale-light.png

View File

@@ -1,39 +0,0 @@
#!/bin/bash
# Install one of the approved terminals and set it as the default for Nomarchy (Super + Return etc).
if (($# == 0)); then
echo "Usage: nomarchy-install-terminal [alacritty|ghostty|kitty]"
exit 1
fi
package="$1"
# Map package name to desktop entry ID
case "$package" in
alacritty) desktop_id="Alacritty.desktop" ;;
ghostty) desktop_id="com.mitchellh.ghostty.desktop" ;;
kitty) desktop_id="kitty.desktop" ;;
*)
echo "Unknown terminal: $package"
exit 1
;;
esac
# Install package
if nomarchy-pkg-add $package; then
# Copy custom desktop entry for alacritty with X-TerminalArg* keys
if [[ $package == "alacritty" ]]; then
mkdir -p ~/.local/share/applications
cp $OMARCHY_PATH/applications/Alacritty.desktop ~/.local/share/applications/
fi
# Update xdg-terminals.list to prioritize the proper terminal
cat >~/.config/xdg-terminals.list <<EOF
# Terminal emulator preference order for xdg-terminal-exec
# The first found and valid terminal will be used
$desktop_id
EOF
else
echo "Failed to install $package"
fi

View File

@@ -1,22 +0,0 @@
#!/usr/bin/env bash
# Install VSCode declaratively for Nomarchy NixOS.
echo "Installing VSCode..."
nomarchy-pkg-add vscode
# VSCode still allows some runtime configuration in its JSON files.
mkdir -p ~/.config/Code/User
# Ensure VSC's own auto-update feature is turned off
if [ ! -f ~/.config/Code/User/settings.json ]; then
echo '{"update.mode": "none"}' > ~/.config/Code/User/settings.json
else
# Update existing settings.json with update.mode: none using jq
jq '. + {"update.mode": "none"}' ~/.config/Code/User/settings.json > ~/.config/Code/User/settings.json.tmp && mv ~/.config/Code/User/settings.json.tmp ~/.config/Code/User/settings.json
fi
# Apply Nomarchy theme to VSCode
nomarchy-theme-set-vscode
setsid code >/dev/null 2>&1 &

View File

@@ -1,23 +0,0 @@
#!/usr/bin/env bash
# Configure Xbox Controller support (xpadneo) declaratively for Nomarchy NixOS.
FEATURE_FILE="/etc/nixos/nomarchy-features/xbox-controller.nix"
if [ -f "$FEATURE_FILE" ]; then
echo "Xbox controller support is already configured in $FEATURE_FILE"
exit 0
fi
sudo mkdir -p "/etc/nixos/nomarchy-features"
cat <<EOF | sudo tee "$FEATURE_FILE" > /dev/null
{ config, pkgs, ... }:
{
hardware.xpadneo.enable = true;
# Note: This automatically handles blacklisting xpad if needed and provides modules.
}
EOF
echo "Created $FEATURE_FILE."
echo "IMPORTANT: To finish enabling Xbox controller support, add './nomarchy-features/xbox-controller.nix' to your imports list in /etc/nixos/system.nix or /etc/nixos/flake.nix,"
echo "then run 'sys-update'."

View File

@@ -58,30 +58,6 @@ open_in_editor() {
nomarchy-launch-editor "$1" nomarchy-launch-editor "$1"
} }
install() {
present_terminal "echo 'Installing $1...'; nomarchy-pkg-add $2"
}
install_and_launch() {
present_terminal "echo 'Installing $1...'; nomarchy-pkg-add $2 && setsid gtk-launch $3"
}
install_font() {
present_terminal "echo 'Installing $1...'; nomarchy-pkg-add $2 && sleep 2 && nomarchy-font-set '$3'"
}
install_terminal() {
present_terminal "nomarchy-install-terminal $1"
}
aur_install() {
present_terminal "echo 'Installing $1 from AUR...'; nomarchy-pkg-aur-add $2"
}
aur_install_and_launch() {
present_terminal "echo 'Installing $1 from AUR...'; nomarchy-pkg-aur-add $2 && setsid gtk-launch $3"
}
show_learn_menu() { show_learn_menu() {
case $(menu "Learn" " Keybindings\n Nomarchy\n Hyprland\n󰣇 Arch\n Neovim\n󱆃 Bash") in case $(menu "Learn" " Keybindings\n Nomarchy\n Hyprland\n󰣇 Arch\n Neovim\n󱆃 Bash") in
*Keybindings*) nomarchy-menu-keybindings ;; *Keybindings*) nomarchy-menu-keybindings ;;
@@ -278,7 +254,7 @@ show_setup_config_menu() {
show_setup_system_menu() { show_setup_system_menu() {
local options="" local options=""
if [[ -f ~/.local/state/nomarchy/toggles/suspend-off ]]; then if [[ $NOMARCHY_TOGGLE_SUSPEND == "false" ]]; then
options="$options󰒲 Enable Suspend" options="$options󰒲 Enable Suspend"
else else
options="$options󰒲 Disable Suspend" options="$options󰒲 Disable Suspend"
@@ -298,216 +274,11 @@ show_setup_system_menu() {
esac esac
} }
show_install_menu() {
case $(menu "Install" "󰣇 Package\n󰣇 AUR\n Web App\n TUI\n Service\n Style\n󰵮 Development\n Editor\n Terminal\n󱚤 AI\n󰍲 Windows\n Gaming") in
*Package*) terminal nomarchy-pkg-install ;;
*AUR*) terminal nomarchy-pkg-aur-install ;;
*Web*) present_terminal nomarchy-webapp-install ;;
*TUI*) present_terminal nomarchy-tui-install ;;
*Service*) show_install_service_menu ;;
*Style*) show_install_style_menu ;;
*Development*) show_install_development_menu ;;
*Editor*) show_install_editor_menu ;;
*Terminal*) show_install_terminal_menu ;;
*AI*) show_install_ai_menu ;;
*Windows*) present_terminal "nomarchy-windows-vm install" ;;
*Gaming*) show_install_gaming_menu ;;
*) show_main_menu ;;
esac
}
show_install_service_menu() {
case $(menu "Install" " Dropbox\n Tailscale\n󱇱 NordVPN [AUR]\n󰟵 Bitwarden\n Chromium Account") in
*Dropbox*) present_terminal nomarchy-install-dropbox ;;
*Tailscale*) present_terminal nomarchy-install-tailscale ;;
*NordVPN*) present_terminal nomarchy-install-nordvpn ;;
*Bitwarden*) install_and_launch "Bitwarden" "bitwarden bitwarden-cli" "bitwarden" ;;
*Chromium*) present_terminal nomarchy-install-chromium-google-account ;;
*) show_install_menu ;;
esac
}
show_install_editor_menu() {
case $(menu "Install" " VSCode\n Cursor\n Zed\n Sublime Text\n Helix\n Emacs") in
*VSCode*) present_terminal nomarchy-install-vscode ;;
*Cursor*) install_and_launch "Cursor" "cursor-bin" "cursor" ;;
*Zed*) install_and_launch "Zed" "zed" "dev.zed.Zed" ;;
*Sublime*) install_and_launch "Sublime Text" "sublime-text-4" "sublime_text" ;;
*Helix*) install "Helix" "helix" ;;
*Emacs*) install "Emacs" "emacs-wayland" && systemctl --user enable --now emacs.service ;;
*) show_install_menu ;;
esac
}
show_install_terminal_menu() {
case $(menu "Install" " Alacritty\n Ghostty\n Kitty") in
*Alacritty*) install_terminal "alacritty" ;;
*Ghostty*) install_terminal "ghostty" ;;
*Kitty*) install_terminal "kitty" ;;
*) show_install_menu ;;
esac
}
show_install_ai_menu() {
ollama_pkg=$(
(command -v nvidia-smi &>/dev/null && echo ollama-cuda) ||
(command -v rocminfo &>/dev/null && echo ollama-rocm) ||
echo ollama
)
case $(menu "Install" " Dictation\n󱚤 LM Studio\n󱚤 Ollama\n󱚤 Crush") in
*Dictation*) present_terminal nomarchy-voxtype-install ;;
*Studio*) install "LM Studio" "lmstudio-bin" ;;
*Ollama*) install "Ollama" $ollama_pkg ;;
*Crush*) install "Crush" "crush-bin" ;;
*) show_install_menu ;;
esac
}
show_install_gaming_menu() {
case $(menu "Install" " Steam\n󰢹 NVIDIA GeForce NOW\n RetroArch [AUR]\n󰍳 Minecraft\n󰖺 Xbox Controller [AUR]") in
*Steam*) present_terminal nomarchy-install-steam ;;
*GeForce*) present_terminal nomarchy-install-geforce-now ;;
*RetroArch*) aur_install_and_launch "RetroArch" "retroarch retroarch-assets libretro libretro-fbneo" "com.libretro.RetroArch.desktop" ;;
*Minecraft*) install_and_launch "Minecraft" "minecraft-launcher" "minecraft-launcher" ;;
*Xbox*) present_terminal nomarchy-install-xbox-controllers ;;
*) show_install_menu ;;
esac
}
show_install_style_menu() {
case $(menu "Install" "󰸌 Theme\n Background\n Font") in
*Theme*) present_terminal nomarchy-theme-install ;;
*Background*) nomarchy-theme-bg-install ;;
*Font*) show_install_font_menu ;;
*) show_install_menu ;;
esac
}
show_install_font_menu() {
case $(menu "Install" " Cascadia Mono\n Meslo LG Mono\n Fira Code\n Victor Code\n Bistream Vera Mono\n Iosevka" "--width 350") in
*Cascadia*) install_font "Cascadia Mono" "ttf-cascadia-mono-nerd" "CaskaydiaMono Nerd Font" ;;
*Meslo*) install_font "Meslo LG Mono" "ttf-meslo-nerd" "MesloLGL Nerd Font" ;;
*Fira*) install_font "Fira Code" "ttf-firacode-nerd" "FiraCode Nerd Font" ;;
*Victor*) install_font "Victor Code" "ttf-victor-mono-nerd" "VictorMono Nerd Font" ;;
*Bistream*) install_font "Bistream Vera Code" "ttf-bitstream-vera-mono-nerd" "BitstromWera Nerd Font" ;;
*Iosevka*) install_font "Iosevka" "ttf-iosevka-nerd" "Iosevka Nerd Font Mono" ;;
*) show_install_menu ;;
esac
}
show_install_development_menu() {
case $(menu "Install" "󰫏 Ruby on Rails\n Docker DB\n JavaScript\n Go\n PHP\n Python\n Elixir\n Zig\n Rust\n Java\n .NET\n OCaml\n Clojure\n Scala") in
*Rails*) present_terminal "nomarchy-install-dev-env ruby" ;;
*Docker*) present_terminal nomarchy-install-docker-dbs ;;
*JavaScript*) show_install_javascript_menu ;;
*Go*) present_terminal "nomarchy-install-dev-env go" ;;
*PHP*) show_install_php_menu ;;
*Python*) present_terminal "nomarchy-install-dev-env python" ;;
*Elixir*) show_install_elixir_menu ;;
*Zig*) present_terminal "nomarchy-install-dev-env zig" ;;
*Rust*) present_terminal "nomarchy-install-dev-env rust" ;;
*Java*) present_terminal "nomarchy-install-dev-env java" ;;
*NET*) present_terminal "nomarchy-install-dev-env dotnet" ;;
*OCaml*) present_terminal "nomarchy-install-dev-env ocaml" ;;
*Clojure*) present_terminal "nomarchy-install-dev-env clojure" ;;
*Scala*) present_terminal "nomarchy-install-dev-env scala" ;;
*) show_install_menu ;;
esac
}
show_install_javascript_menu() {
case $(menu "Install" " Node.js\n Bun\n Deno") in
*Node*) present_terminal "nomarchy-install-dev-env node" ;;
*Bun*) present_terminal "nomarchy-install-dev-env bun" ;;
*Deno*) present_terminal "nomarchy-install-dev-env deno" ;;
*) show_install_development_menu ;;
esac
}
show_install_php_menu() {
case $(menu "Install" " PHP\n Laravel\n Symfony") in
*PHP*) present_terminal "nomarchy-install-dev-env php" ;;
*Laravel*) present_terminal "nomarchy-install-dev-env laravel" ;;
*Symfony*) present_terminal "nomarchy-install-dev-env symfony" ;;
*) show_install_development_menu ;;
esac
}
show_install_elixir_menu() {
case $(menu "Install" " Elixir\n Phoenix") in
*Elixir*) present_terminal "nomarchy-install-dev-env elixir" ;;
*Phoenix*) present_terminal "nomarchy-install-dev-env phoenix" ;;
*) show_install_development_menu ;;
esac
}
show_remove_menu() {
case $(menu "Remove" "󰣇 Package\n Web App\n TUI\n󰵮 Development\n󰏓 Preinstalls\n Dictation\n󰸌 Theme\n󰍲 Windows\n󰈷 Fingerprint\n Fido2") in
*Package*) terminal nomarchy-pkg-remove ;;
*Web*) present_terminal nomarchy-webapp-remove ;;
*TUI*) present_terminal nomarchy-tui-remove ;;
*Development*) show_remove_development_menu ;;
*Preinstalls*) present_terminal nomarchy-remove-preinstalls ;;
*Dictation*) present_terminal nomarchy-voxtype-remove ;;
*Theme*) present_terminal nomarchy-theme-remove ;;
*Windows*) present_terminal "nomarchy-windows-vm remove" ;;
*Fingerprint*) present_terminal "nomarchy-setup-fingerprint --remove" ;;
*Fido2*) present_terminal "nomarchy-setup-fido2 --remove" ;;
*) show_main_menu ;;
esac
}
show_remove_development_menu() {
case $(menu "Remove" "󰫏 Ruby on Rails\n JavaScript\n Go\n PHP\n Python\n Elixir\n Zig\n Rust\n Java\n .NET\n OCaml\n Clojure\n Scala") in
*Rails*) present_terminal "nomarchy-remove-dev-env ruby" ;;
*JavaScript*) show_remove_javascript_menu ;;
*Go*) present_terminal "nomarchy-remove-dev-env go" ;;
*PHP*) show_remove_php_menu ;;
*Python*) present_terminal "nomarchy-remove-dev-env python" ;;
*Elixir*) show_remove_elixir_menu ;;
*Zig*) present_terminal "nomarchy-remove-dev-env zig" ;;
*Rust*) present_terminal "nomarchy-remove-dev-env rust" ;;
*Java*) present_terminal "nomarchy-remove-dev-env java" ;;
*NET*) present_terminal "nomarchy-remove-dev-env dotnet" ;;
*OCaml*) present_terminal "nomarchy-remove-dev-env ocaml" ;;
*Clojure*) present_terminal "nomarchy-remove-dev-env clojure" ;;
*Scala*) present_terminal "nomarchy-remove-dev-env scala" ;;
*) show_remove_menu ;;
esac
}
show_remove_javascript_menu() {
case $(menu "Remove" " Node.js\n Bun\n Deno") in
*Node*) present_terminal "nomarchy-remove-dev-env node" ;;
*Bun*) present_terminal "nomarchy-remove-dev-env bun" ;;
*Deno*) present_terminal "nomarchy-remove-dev-env deno" ;;
*) show_remove_development_menu ;;
esac
}
show_remove_php_menu() {
case $(menu "Remove" " PHP\n Laravel\n Symfony") in
*PHP*) present_terminal "nomarchy-remove-dev-env php" ;;
*Laravel*) present_terminal "nomarchy-remove-dev-env laravel" ;;
*Symfony*) present_terminal "nomarchy-remove-dev-env symfony" ;;
*) show_remove_development_menu ;;
esac
}
show_remove_elixir_menu() {
case $(menu "Remove" " Elixir\n Phoenix") in
*Elixir*) present_terminal "nomarchy-remove-dev-env elixir" ;;
*Phoenix*) present_terminal "nomarchy-remove-dev-env phoenix" ;;
*) show_remove_development_menu ;;
esac
}
show_update_menu() { show_update_menu() {
case $(menu "Update" "  Nomarchy\n󰔫 Channel\n Config\n󰸌 Extra Themes\n Process\n󰇅 Hardware\n Firmware\n Password\n Timezone\n Time") in case $(menu "Update" "  Nomarchy\n󰸌 Extra Themes\n Process\n󰇅 Hardware\n Firmware\n Password\n Timezone\n Time") in
*Nomarchy*) present_terminal nomarchy-update ;; *Nomarchy*) present_terminal nomarchy-update ;;
*Channel*) show_update_channel_menu ;;
*Config*) show_update_config_menu ;;
*Themes*) present_terminal nomarchy-theme-update ;; *Themes*) present_terminal nomarchy-theme-update ;;
*Process*) show_update_process_menu ;; *Process*) show_update_process_menu ;;
*Hardware*) show_update_hardware_menu ;; *Hardware*) show_update_hardware_menu ;;
@@ -518,16 +289,6 @@ show_update_menu() {
*) show_main_menu ;; *) show_main_menu ;;
esac esac
} }
show_update_channel_menu() {
case $(menu "Update channel" "🟢 Stable\n🟡 RC\n🟠 Edge\n🔴 Dev") in
*Stable*) present_terminal "nomarchy-channel-set stable" ;;
*RC*) present_terminal "nomarchy-channel-set rc" ;;
*Edge*) present_terminal "nomarchy-channel-set edge" ;;
*Dev*) present_terminal "nomarchy-channel-set dev" ;;
*) show_update_menu ;;
esac
}
show_update_process_menu() { show_update_process_menu() {
case $(menu "Restart" " Hypridle\n Hyprsunset\n Swayosd\n󰌧 Walker\n󰍜 Waybar") in case $(menu "Restart" " Hypridle\n Hyprsunset\n Swayosd\n󰌧 Walker\n󰍜 Waybar") in
*Hypridle*) nomarchy-restart-hypridle ;; *Hypridle*) nomarchy-restart-hypridle ;;
@@ -539,20 +300,7 @@ show_update_process_menu() {
esac esac
} }
show_update_config_menu() {
case $(menu "Use default config" " Hyprland\n Hypridle\n Hyprlock\n Hyprsunset\n󱣴 Plymouth\n Swayosd\n Tmux\n󰌧 Walker\n󰍜 Waybar") in
*Hyprland*) present_terminal nomarchy-refresh-hyprland ;;
*Hypridle*) present_terminal nomarchy-refresh-hypridle ;;
*Hyprlock*) present_terminal nomarchy-refresh-hyprlock ;;
*Hyprsunset*) present_terminal nomarchy-refresh-hyprsunset ;;
*Plymouth*) present_terminal nomarchy-refresh-plymouth ;;
*Swayosd*) present_terminal nomarchy-refresh-swayosd ;;
*Tmux*) present_terminal nomarchy-refresh-tmux ;;
*Walker*) present_terminal nomarchy-refresh-walker ;;
*Waybar*) present_terminal nomarchy-refresh-waybar ;;
*) show_update_menu ;;
esac
}
show_update_hardware_menu() { show_update_hardware_menu() {
case $(menu "Restart" " Audio\n󱚾 Wi-Fi\n󰂯 Bluetooth") in case $(menu "Restart" " Audio\n󱚾 Wi-Fi\n󰂯 Bluetooth") in
@@ -577,7 +325,7 @@ show_about() {
show_system_menu() { show_system_menu() {
local options="󱄄 Screensaver\n Lock" local options="󱄄 Screensaver\n Lock"
[[ ! -f ~/.local/state/nomarchy/toggles/suspend-off ]] && options="$options\n󰒲 Suspend" [[ $NOMARCHY_TOGGLE_SUSPEND != "false" ]] && options="$options\n󰒲 Suspend"
nomarchy-hibernation-available && options="$options\n󰤁 Hibernate" nomarchy-hibernation-available && options="$options\n󰤁 Hibernate"
options="$options\n󰍃 Logout\n󰜉 Restart\n󰐥 Shutdown" options="$options\n󰍃 Logout\n󰜉 Restart\n󰐥 Shutdown"
@@ -594,7 +342,7 @@ show_system_menu() {
} }
show_main_menu() { show_main_menu() {
go_to_menu "$(menu "Go" "󰀻 Apps\n󰧑 Learn\n󱓞 Trigger\n Style\n Setup\n󰉉 Install\n󰭌 Remove\n Update\n About\n System")" go_to_menu "$(menu "Go" "󰀻 Apps\n󰧑 Learn\n󱓞 Trigger\n Style\n Setup\n Update\n About\n System")"
} }
go_to_menu() { go_to_menu() {
@@ -611,8 +359,6 @@ go_to_menu() {
*screenrecord*) show_screenrecord_menu ;; *screenrecord*) show_screenrecord_menu ;;
*setup*) show_setup_menu ;; *setup*) show_setup_menu ;;
*power*) show_setup_power_menu ;; *power*) show_setup_power_menu ;;
*install*) show_install_menu ;;
*remove*) show_remove_menu ;;
*update*) show_update_menu ;; *update*) show_update_menu ;;
*about*) show_about ;; *about*) show_about ;;
*system*) show_system_menu ;; *system*) show_system_menu ;;

View File

@@ -1,7 +0,0 @@
#!/bin/bash
# Returns true if the AUR is up and available.
# Used by nomarchy-update-system-pkgs to ensure the AUR is available before updating packages from it.
curl -sf --connect-timeout 30 --retry 3 --retry-delay 3 -A "nomarchy-update" \
"https://aur.archlinux.org/rpc/?v=5&type=info&arg=base" >/dev/null

View File

@@ -1,5 +0,0 @@
#!/usr/bin/env bash
echo "AUR is an Arch Linux concept and is not supported on NixOS."
echo "Please use 'nomarchy-pkg-add' to install packages from nixpkgs."
exit 1

View File

@@ -1,5 +0,0 @@
#!/usr/bin/env bash
echo "AUR is an Arch Linux concept and is not supported on NixOS."
echo "Please use 'nomarchy-pkg-add' to install packages from nixpkgs."
exit 1

View File

@@ -1,9 +0,0 @@
#!/bin/bash
# Remove all the named packages from the system if they're installed (otherwise ignore).
for pkg in "$@"; do
if pacman -Q "$pkg" &>/dev/null; then
sudo pacman -Rns --noconfirm "$pkg"
fi
done

View File

@@ -1,25 +0,0 @@
#!/bin/bash
# Show a fuzzy-finder TUI for picking new Arch and OPR packages to install.
fzf_args=(
--multi
--preview 'pacman -Sii {1}'
--preview-label='alt-p: toggle description, alt-j/k: scroll, tab: multi-select'
--preview-label-pos='bottom'
--preview-window 'down:65%:wrap'
--bind 'alt-p:toggle-preview'
--bind 'alt-d:preview-half-page-down,alt-u:preview-half-page-up'
--bind 'alt-k:preview-up,alt-j:preview-down'
--color 'pointer:green,marker:green'
)
pkg_names=$(pacman -Slq | fzf "${fzf_args[@]}")
if [[ -n $pkg_names ]]; then
source nomarchy-sudo-keepalive
# Convert newline-separated selections to space-separated for pacman
echo "$pkg_names" | tr '\n' ' ' | xargs sudo pacman -S --noconfirm
nomarchy-show-done
fi

View File

@@ -1,20 +0,0 @@
#!/bin/bash
# Ensure all default .desktop, web apps, and TUIs are installed.
# Copy and sync icon files
mkdir -p ~/.local/share/icons/hicolor/48x48/apps/
cp ~/.local/share/nomarchy/applications/icons/*.png ~/.local/share/icons/hicolor/48x48/apps/
gtk-update-icon-cache ~/.local/share/icons/hicolor &>/dev/null
# Copy .desktop declarations
mkdir -p ~/.local/share/applications
cp ~/.local/share/nomarchy/applications/*.desktop ~/.local/share/applications/
cp ~/.local/share/nomarchy/applications/hidden/*.desktop ~/.local/share/applications/
# Refresh the webapps and TUIs
bash $OMARCHY_PATH/install/packaging/icons.sh
bash $OMARCHY_PATH/install/packaging/webapps.sh
bash $OMARCHY_PATH/install/packaging/tuis.sh
update-desktop-database ~/.local/share/applications

View File

@@ -1,21 +0,0 @@
#!/bin/bash
# Refresh the ~/.config/chromium-flags.conf file from the Nomarchy defaults.
CONFIG_FILE="$HOME/.config/chromium-flags.conf"
INSTALL_GOOGLE_ACCOUNTS=false
# Check if google accounts were installed
if [[ -f $CONFIG_FILE ]] && \
grep -q -- "--oauth2-client-id" "$CONFIG_FILE" && \
grep -q -- "--oauth2-client-secret" "$CONFIG_FILE"; then
INSTALL_GOOGLE_ACCOUNTS=true
fi
# Refresh the Chromium configuration
nomarchy-refresh-config chromium-flags.conf
# Re-install Google accounts if previously configured
if [[ $INSTALL_GOOGLE_ACCOUNTS == "true" ]]; then
nomarchy-install-chromium-google-account
fi

View File

@@ -1,42 +0,0 @@
#!/bin/bash
# Copies the named config from ~/.local/share/nomarchy/config/X/Y/Z -> ~/.config/X/Y/Z.
# If the config already exists, a backup of the existing will be taken as .bak.TIMESTAMP.
config_file=$1
if [[ -z $config_file ]]; then
cat <<USAGE
Usage: $0 [config_file]
Must provide a file path from the .config directory to be refreshed.
To copy ~/.local/share/nomarchy/config/hypr/hyprlock.conf to ~/.config/hypr/hyprlock.conf
$0 hypr/hyprlock.conf
USAGE
exit 1
fi
# Backup the destination file (with timestamp) to avoid clobbering (Ex: hyprlock.conf.bak.1753817951)
user_config_file="${HOME}/.config/$config_file"
default_config_file="${HOME}/.local/share/nomarchy/config/$config_file"
backup_config_file="$user_config_file.bak.$(date +%s)"
if [[ -f $user_config_file ]]; then
# Create preliminary backup
cp -f "$user_config_file" "$backup_config_file" 2>/dev/null
# Replace config with new default
cp -f "$default_config_file" "$user_config_file" 2>/dev/null
# Compare and delete/inform accordingly
if cmp -s "$user_config_file" "$backup_config_file"; then
rm "$backup_config_file"
else
echo -e "\e[31mReplaced $user_config_file with new Nomarchy default.\nSaved backup as ${backup_config_file}.\n\n\e[32mChanges:\e[0m"
diff "$user_config_file" "$backup_config_file" || true
fi
else
# Config file did not exist already
cp -f "$default_config_file" "$user_config_file" 2>/dev/null
fi

View File

@@ -1,6 +0,0 @@
#!/bin/bash
# Overwrite the user config for hypridle with the Nomarchy default and restart the service.
nomarchy-refresh-config hypr/hypridle.conf
nomarchy-restart-hypridle

View File

@@ -1,9 +0,0 @@
#!/bin/bash
# Overwrite all the user configs in ~/.config/hypr with the Nomarchy defaults.
nomarchy-refresh-config hypr/autostart.conf
nomarchy-refresh-config hypr/bindings.conf
nomarchy-refresh-config hypr/input.conf
nomarchy-refresh-config hypr/looknfeel.conf
nomarchy-refresh-config hypr/hyprland.conf

View File

@@ -1,5 +0,0 @@
#!/bin/bash
# Overwrite the user config for hyprlock with the Nomarchy default.
nomarchy-refresh-config hypr/hyprlock.conf

View File

@@ -1,6 +0,0 @@
#!/bin/bash
# Overwrite the user config for hyprsunset with the Nomarchy default and restart the service.
#
nomarchy-refresh-config hypr/hyprsunset.conf
nomarchy-restart-hyprsunset

View File

@@ -1,16 +0,0 @@
#!/bin/bash
# Overwrite the user config for the Limine bootloader and rebuild it.
if [[ -f /boot/EFI/Linux/nomarchy_linux.efi ]] && [[ -f /boot/EFI/Linux/$(cat /etc/machine-id)_linux.efi ]]; then
echo "Cleanup extra UKI"
sudo rm -f /boot/EFI/Linux/$(cat /etc/machine-id)_linux.efi
fi
echo "Resetting limine config"
sudo mv /boot/limine.conf /boot/limine.conf.bak
sudo cp ~/.local/share/nomarchy/default/limine/limine.conf /boot/limine.conf
sudo limine-update
sudo limine-snapper-sync

View File

@@ -1,24 +0,0 @@
#!/bin/bash
# Overwrite the package configuration for /etc/pacman with the Nomarchy default of using its dedicated mirrors and repositories, then update all packages.
# This is used after switching between Nomarchy release channels to ensure the right packages for the right channel are available.
# Take backup of existing files
sudo cp -f /etc/pacman.conf /etc/pacman.conf.bak
sudo cp -f /etc/pacman.d/mirrorlist /etc/pacman.d/mirrorlist.bak
channel="${1:-stable}"
if [[ $channel != "stable" && $channel != "rc" && $channel != "edge" ]]; then
echo "Error: Invalid channel '$channel'. Must be one of: stable, rc, edge"
exit 1
fi
echo "Setting channel to $channel"
echo
sudo cp -f "$OMARCHY_PATH/default/pacman/pacman-$channel.conf" /etc/pacman.conf
sudo cp -f "$OMARCHY_PATH/default/pacman/mirrorlist-$channel" /etc/pacman.d/mirrorlist
# Reset all package DBs and then update
sudo pacman -Syyuu --noconfirm

View File

@@ -1,12 +0,0 @@
#!/bin/bash
# Overwrite the user config for the Plymouth drive decryption and boot sequence with the Nomarchy default and rebuild it.
sudo cp ~/.local/share/nomarchy/default/plymouth/* /usr/share/plymouth/themes/nomarchy/
sudo plymouth-set-default-theme nomarchy
if command -v limine-mkinitcpio &>/dev/null; then
sudo limine-mkinitcpio
else
sudo mkinitcpio -P
fi

View File

@@ -1,6 +0,0 @@
#!/bin/bash
# Refresh the SDDM theme from default
sudo rm -rf /usr/share/sddm/themes/nomarchy
sudo cp -r $OMARCHY_PATH/default/sddm/nomarchy /usr/share/sddm/themes/nomarchy

View File

@@ -1,7 +0,0 @@
#!/bin/bash
# Overwrite the user configs for swayosd (controls on-screen feedback for changing volume/songs etc) with the Nomarchy defaults and restart the service.
nomarchy-refresh-config swayosd/config.toml
nomarchy-refresh-config swayosd/style.css
nomarchy-restart-swayosd

View File

@@ -1,6 +0,0 @@
#!/bin/bash
# Overwrite the user tmux config with the Nomarchy default and reload tmux.
nomarchy-refresh-config tmux/tmux.conf
nomarchy-restart-tmux

View File

@@ -1,21 +0,0 @@
#!/bin/bash
# Overwrite the user configs for the Walker application launcher (which also powers the Nomarchy Menu) and restart the services.
# Ensure walker is set to autostart
mkdir -p ~/.config/autostart/
cp $OMARCHY_PATH/default/walker/walker.desktop ~/.config/autostart/
# And restarts if it crashes or is killed
mkdir -p ~/.config/systemd/user/app-walker@autostart.service.d/
cp $OMARCHY_PATH/default/walker/restart.conf ~/.config/systemd/user/app-walker@autostart.service.d/restart.conf
systemctl --user daemon-reload
# Refresh configs
nomarchy-refresh-config walker/config.toml
nomarchy-refresh-config elephant/calc.toml
nomarchy-refresh-config elephant/desktopapplications.toml
# Restart service
nomarchy-restart-walker

View File

@@ -1,7 +0,0 @@
#!/bin/bash
# Overwrite the user configs for the Waybar menu bar with the Nomarchy defaults and restart the service.
nomarchy-refresh-config waybar/config.jsonc
nomarchy-refresh-config waybar/style.css
nomarchy-restart-waybar

View File

@@ -1,14 +0,0 @@
#!/bin/bash
set -e
# Attempt to reinstall all default Nomarchy packages and reset all the default configs.
echo -e "This will reinstall all the default Nomarchy packages and reset all default configs.\nWarning: All user changes to configs will be lost.\n"
if gum confirm "Are you sure you want to reinstall and lose all config changes?"; then
nomarchy-reinstall-git
nomarchy-reinstall-pkgs
nomarchy-reinstall-configs
gum confirm "System has been reinstalled. Reboot?" && nomarchy-system-reboot
fi

View File

@@ -1,20 +0,0 @@
#!/bin/bash
set -e
# Overwrite all user configs with the Nomarchy defaults.
if (( EUID == 0 )); then
echo "Error: This script should not be run as root"
exit 1
fi
echo "Resetting all Nomarchy configs"
cp -R ~/.local/share/nomarchy/config/* ~/.config/
cp ~/.local/share/nomarchy/default/bashrc ~/.bashrc
echo '[[ -f ~/.bashrc ]] && . ~/.bashrc' | tee ~/.bash_profile >/dev/null
$(bash $OMARCHY_PATH/install/config/theme.sh)
nomarchy-refresh-limine
nomarchy-refresh-plymouth
nomarchy-nvim-setup

View File

@@ -1,8 +0,0 @@
#!/bin/bash
set -e
# Reinstall the Nomarchy configuration directory from the git source.
git clone --depth=1 "https://github.com/basecamp/nomarchy.git" ~/.local/share/nomarchy-new >/dev/null
mv $OMARCHY_PATH ~/.local/share/nomarchy-old
mv ~/.local/share/nomarchy-new $OMARCHY_PATH

View File

@@ -1,14 +0,0 @@
#!/bin/bash
set -e
# Reinstall all default Nomarchy packages from the stable channel and downgrade any packages that are too new.
# Set the package repository to the stable mirrors
nomarchy-refresh-pacman
# Downgrade any packages to the stable setup
sudo pacman -Suu --noconfirm
# Ensure all packages are installed
mapfile -t packages < <(grep -v '^#' "$OMARCHY_PATH/install/nomarchy-base.packages" | grep -v '^$')
sudo pacman -Syu --noconfirm --needed "${packages[@]}"

View File

@@ -1,112 +0,0 @@
#!/bin/bash
# Remove a development environment that was previously installed via nomarchy-install-dev-env.
# Usage: nomarchy-remove-dev-env <ruby|node|bun|deno|go|php|laravel|symfony|python|elixir|phoenix|zig|rust|java|dotnet|ocaml|clojure|scala>
if [[ -z $1 ]]; then
echo "Usage: nomarchy-remove-dev-env <ruby|node|bun|deno|go|php|laravel|symfony|python|elixir|phoenix|zig|rust|java|dotnet|ocaml|clojure|scala>" >&2
exit 1
fi
remove_php() {
sudo pacman -Rns --noconfirm php composer php-sqlite xdebug 2>/dev/null || true
}
case "$1" in
ruby)
echo -e "Removing Ruby...\n"
mise uninstall ruby --all
mise rm -g ruby
rm -f ~/.gemrc
;;
node)
echo -e "Removing Node.js...\n"
mise uninstall node --all
mise rm -g node
;;
bun)
echo -e "Removing Bun...\n"
mise uninstall bun --all
mise rm -g bun
;;
deno)
echo -e "Removing Deno...\n"
mise uninstall deno --all
mise rm -g deno
;;
go)
echo -e "Removing Go...\n"
mise uninstall go --all
mise rm -g go
;;
php)
echo -e "Removing PHP...\n"
remove_php
;;
laravel)
echo -e "Removing Laravel...\n"
composer global remove laravel/installer 2>/dev/null || true
;;
symfony)
echo -e "Removing Symfony CLI...\n"
sudo pacman -Rns --noconfirm symfony-cli 2>/dev/null || true
;;
python)
echo -e "Removing Python...\n"
mise uninstall python --all
mise rm -g python
rm -rf ~/.local/bin/uv ~/.local/bin/uvx ~/.cargo/bin/uv 2>/dev/null || true
;;
elixir|phoenix)
echo -e "Removing Elixir/Erlang...\n"
mise uninstall elixir --all
mise uninstall erlang --all
mise rm -g elixir
mise rm -g erlang
;;
zig)
echo -e "Removing Zig...\n"
mise uninstall zig --all
mise uninstall zls --all
mise rm -g zig
mise rm -g zls
;;
rust)
echo -e "Removing Rust...\n"
rustup self uninstall -y 2>/dev/null || true
;;
java)
echo -e "Removing Java...\n"
mise uninstall java --all
mise rm -g java
;;
dotnet)
echo -e "Removing .NET...\n"
mise uninstall dotnet --all
mise rm -g dotnet
;;
ocaml)
echo -e "Removing OCaml...\n"
opam switch remove default -y 2>/dev/null || true
rm -rf ~/.opam 2>/dev/null || true
sudo rm -f /usr/local/bin/opam 2>/dev/null || true
;;
clojure)
echo -e "Removing Clojure...\n"
mise uninstall clojure --all
mise rm -g clojure
;;
scala)
echo -e "Removing Scala...\n"
mise uninstall scala --all
mise uninstall scala-cli --all
mise rm -g scala
mise rm -g scala-cli
;;
*)
echo "Unknown environment: $1"
exit 1
;;
esac
echo -e "\nDone!"

View File

@@ -1,36 +0,0 @@
#!/bin/bash
# Remove preinstalled Nomarchy applications (web apps, TUIs, and selected packages).
# This removes all web apps, TUIs, plus specific desktop applications.
if gum confirm "Are you sure you want to remove all preinstalled web apps, TUI wrappers, and desktop applications?"; then
echo -e "Removing preinstalled Nomarchy applications...\n"
nomarchy-webapp-remove-all
nomarchy-tui-remove-all
cp ~/.config/hypr/bindings.conf ~/.config/hypr/bindings.conf.bak
cp "$OMARCHY_PATH/default/hypr/plain-bindings.conf" ~/.config/hypr/bindings.conf
hyprctl reload
# Remove npx stubs
rm -f ~/.local/bin/codex ~/.local/bin/gemini ~/.local/bin/copilot \
~/.local/bin/opencode ~/.local/bin/playwright-cli ~/.local/bin/pi
nomarchy-pkg-drop \
aether \
typora \
spotify \
libreoffice-fresh \
1password-beta \
1password-cli \
xournalpp \
signal-desktop \
pinta \
obsidian \
obs-studio \
kdenlive \
lazydocker \
opencode \
claude-code
fi

View File

@@ -1,5 +0,0 @@
#!/usr/bin/env bash
echo "AUR is an Arch Linux concept and is not supported on NixOS."
echo "Please use 'nomarchy-pkg-add' to install packages from nixpkgs."
exit 1

View File

@@ -1,23 +0,0 @@
#!/bin/bash
# Get remote tag
latest_tag=$(git -C "$OMARCHY_PATH" ls-remote --tags origin | grep -v "{}" | awk '{print $2}' | sed 's#refs/tags/##' | sort -V | tail -n 1)
if [[ -z $latest_tag ]]; then
echo "Error: Could not retrieve latest tag."
exit 1
fi
# Get local tag
current_tag=$(git -C "$OMARCHY_PATH" describe --tags $(git -C "$OMARCHY_PATH" rev-list --tags --max-count=1))
if [[ -z $current_tag ]]; then
echo "Error: Could not retrieve current tag."
exit 1
fi
if [[ $current_tag != $latest_tag ]]; then
echo "Nomarchy update available ($latest_tag)"
exit 0
else
echo "Nomarchy is up to date ($current_tag)"
exit 1
fi

View File

@@ -1,5 +0,0 @@
#!/bin/bash
# Ensure Waybar icon offering the available update is removed
pkill -RTMIN+7 waybar
exit 0

View File

@@ -1,33 +0,0 @@
#!/bin/bash
set -e
if (($# == 0)); then
echo "Usage: nomarchy-update-branch [master|dev]"
exit 1
fi
branch="$1"
# Snapshot before switching branch
nomarchy-snapshot create || (( $? == 127 ))
if ! git -C "$OMARCHY_PATH" diff --quiet || ! git -C "$OMARCHY_PATH" diff --cached --quiet; then
stashed=true
git -C "$OMARCHY_PATH" stash push -u -m "Autostash before switching to $branch"
else
stashed=false
fi
# Switch branches
git -C "$OMARCHY_PATH" switch "$branch"
# Reapply stash if we made one
if [[ $stashed == "true" ]]; then
if ! git -C "$OMARCHY_PATH" stash pop; then
echo "⚠️ Conflicts when applying stash — stash kept"
fi
fi
# Update the system from the new branch
nomarchy-update-perform

View File

@@ -1,16 +0,0 @@
#!/bin/bash
gum style --border normal --border-foreground 6 --padding "1 2" \
"Ready to update?" \
"" \
"• You cannot stop the update once you start!" \
"• Make sure you're connected to power or have a full battery" \
"" \
"What's new: https://github.com/basecamp/nomarchy/releases"
echo
if ! gum confirm "Continue with update?"; then
echo "Update cancelled"
exit 1
fi

View File

@@ -1,11 +0,0 @@
#!/bin/bash
set -e
echo -e "\e[32mUpdate Firmware\e[0m"
if nomarchy-cmd-missing fwupdmgr; then
nomarchy-pkg-add fwupd
fi
fwupdmgr refresh --force
sudo fwupdmgr update

Some files were not shown because too many files have changed in this diff Show More