Moving toward working gui installation.
This commit is contained in:
@@ -25,7 +25,8 @@ Architecture = auto
|
||||
#IgnorePkg =
|
||||
#IgnoreGroup =
|
||||
|
||||
#NoUpgrade =
|
||||
# Protect Stormux custom skel files from being overwritten by package updates
|
||||
NoUpgrade = etc/skel/.bashrc etc/skel/.inputrc etc/skel/.screenrc etc/skel/.vimrc etc/skel/.vim/*
|
||||
#NoExtract =
|
||||
|
||||
# Misc options
|
||||
|
||||
43
x86_64/airootfs/etc/skel.stormux/.bashrc
Normal file
43
x86_64/airootfs/etc/skel.stormux/.bashrc
Normal file
@@ -0,0 +1,43 @@
|
||||
#
|
||||
# ~/.bashrc
|
||||
#
|
||||
|
||||
# If not running interactively, don't do anything
|
||||
[[ $- != *i* ]] && return
|
||||
|
||||
# Change directories without using cd
|
||||
shopt -s autocd
|
||||
|
||||
# Load aliases and functions if they exist
|
||||
[[ -f "$HOME/.bash_aliases" ]] && . "$HOME/.bash_aliases"
|
||||
[[ -f "$HOME/.bash_functions" ]] && . "$HOME/.bash_functions"
|
||||
|
||||
# Environment variables
|
||||
export QT_ACCESSIBILITY=1
|
||||
export QT_LINUX_ACCESSIBILITY_ALWAYS_ON=1
|
||||
|
||||
# Set prompt
|
||||
PS1='[\u@\h \W] \$ '
|
||||
|
||||
# Dialog accessibility options
|
||||
export DIALOGOPTS='--no-lines --visit-items'
|
||||
|
||||
# Browser selection based on environment
|
||||
if [[ -z "$DISPLAY" ]]; then
|
||||
export BROWSER=w3m
|
||||
fi
|
||||
|
||||
# GPG TTY
|
||||
GPG_TTY=$(tty)
|
||||
export GPG_TTY
|
||||
|
||||
# Don't put commands prefixed with space, or duplicate commands in history
|
||||
export HISTCONTROL=ignoreboth
|
||||
|
||||
# Increase history size
|
||||
export HISTSIZE=10000
|
||||
export HISTFILESIZE=20000
|
||||
|
||||
# Add user's local bin directories to PATH
|
||||
PATH="$HOME/.local/bin:$HOME/bin:$PATH"
|
||||
export PATH
|
||||
25
x86_64/airootfs/etc/skel.stormux/.inputrc
Normal file
25
x86_64/airootfs/etc/skel.stormux/.inputrc
Normal file
@@ -0,0 +1,25 @@
|
||||
# ~/.inputrc
|
||||
# Readline configuration for bash
|
||||
# Reload changes with control+x followed by control+r
|
||||
|
||||
# Don't echo control characters
|
||||
set echo-control-characters off
|
||||
|
||||
# History searching with up and down arrows
|
||||
"\e[A": history-search-backward
|
||||
"\e[B": history-search-forward
|
||||
|
||||
# Shift+Tab sequences for console (backward menu completion)
|
||||
"\e[Z": menu-complete-backward
|
||||
"\eZ": menu-complete-backward
|
||||
# Alt+comma as alternative
|
||||
"\e,": menu-complete-backward
|
||||
|
||||
# Music player keybindings (requires playerctl)
|
||||
"\eX": "\C-k \C-u playerctl play\C-M"
|
||||
"\eC": "\C-k \C-u playerctl play-pause\C-M"
|
||||
"\eV": "\C-k \C-u playerctl stop\C-M"
|
||||
"\eB": "\C-k \C-u playerctl next\C-M"
|
||||
"\eU": "\C-k \C-u playerctl metadata -f '{{artist}} - {{album}} - {{title}}'\C-M"
|
||||
"\e_": "\C-k \C-u playerctl volume 0.05-\C-M"
|
||||
"\e+": "\C-k \C-u playerctl volume 0.05+\C-M"
|
||||
33
x86_64/airootfs/etc/skel.stormux/.screenrc
Normal file
33
x86_64/airootfs/etc/skel.stormux/.screenrc
Normal file
@@ -0,0 +1,33 @@
|
||||
# ~/.screenrc
|
||||
# GNU Screen configuration
|
||||
|
||||
# Disable visual bell
|
||||
vbell off
|
||||
bell_msg ""
|
||||
|
||||
# Disable hardstatus
|
||||
hardstatus off
|
||||
|
||||
# Disable startup message
|
||||
startup_message off
|
||||
|
||||
# Set scrollback buffer size
|
||||
defscrollback 4096
|
||||
|
||||
# Extended window numbering (0-19 instead of 0-9)
|
||||
bind ! select 10
|
||||
bind @ select 11
|
||||
bind \# select 12
|
||||
bind $ select 13
|
||||
bind % select 14
|
||||
bind ^ select 15
|
||||
bind & select 16
|
||||
bind * select 17
|
||||
bind ( select 18
|
||||
bind ) select 19
|
||||
|
||||
# Copy buffer to system clipboard (requires xclip)
|
||||
bind b eval "writebuf" 'exec !!! xclip -selection "clipboard" -i /tmp/screen-exchange'
|
||||
|
||||
# Disable alternate screen switching (allows scrollback in terminal)
|
||||
termcapinfo xterm* ti@:te@
|
||||
29
x86_64/airootfs/etc/skel.stormux/.vim/dates.vim
Normal file
29
x86_64/airootfs/etc/skel.stormux/.vim/dates.vim
Normal file
@@ -0,0 +1,29 @@
|
||||
" Date and time insertion functions
|
||||
|
||||
" Insert current date in format: Wednesday, January 15, 2025
|
||||
function! InsertDate()
|
||||
let date_string = strftime("%A, %B %d, %Y")
|
||||
execute "normal! a" . date_string
|
||||
endfunction
|
||||
|
||||
" Insert current time in format: 09:15PM
|
||||
function! InsertTime()
|
||||
let time_string = strftime("%I:%M%p")
|
||||
execute "normal! a" . time_string
|
||||
endfunction
|
||||
|
||||
" Insert current date and time in format: Wednesday, January 15, 2025, 09:15PM
|
||||
function! InsertDateTime()
|
||||
let datetime_string = strftime("%A, %B %d, %Y, %I:%M%p")
|
||||
execute "normal! a" . datetime_string
|
||||
endfunction
|
||||
|
||||
" Key mappings
|
||||
nnoremap <leader>date :call InsertDate()<CR>
|
||||
inoremap <leader>date <C-o>:call InsertDate()<CR>
|
||||
|
||||
nnoremap <leader>time :call InsertTime()<CR>
|
||||
inoremap <leader>time <C-o>:call InsertTime()<CR>
|
||||
|
||||
nnoremap <leader>datetime :call InsertDateTime()<CR>
|
||||
inoremap <leader>datetime <C-o>:call InsertDateTime()<CR>
|
||||
39
x86_64/airootfs/etc/skel.stormux/.vim/emoji.vim
Normal file
39
x86_64/airootfs/etc/skel.stormux/.vim/emoji.vim
Normal file
@@ -0,0 +1,39 @@
|
||||
" Emoji insertion mappings
|
||||
|
||||
" Basic expressions
|
||||
inoremap ,:) 😊
|
||||
inoremap ,:( 😢
|
||||
inoremap ,:D 😃
|
||||
inoremap ,;) 😉
|
||||
inoremap ,:P 😛
|
||||
inoremap ,:o 😮
|
||||
inoremap ,:\| 😐
|
||||
|
||||
" Hearts and love
|
||||
inoremap ,<3 ❤️
|
||||
inoremap ,heart ❤️
|
||||
inoremap ,love 💕
|
||||
inoremap ,kiss 😘
|
||||
|
||||
" Special expressions
|
||||
inoremap ,>:) 😈
|
||||
inoremap ,devil 😈
|
||||
inoremap ,:* 😘
|
||||
inoremap ,cool 😎
|
||||
inoremap ,nerd 🤓
|
||||
inoremap ,angry 😠
|
||||
|
||||
" Hands and gestures
|
||||
inoremap ,thumbs 👍
|
||||
inoremap ,clap 👏
|
||||
inoremap ,wave 👋
|
||||
inoremap ,peace ✌️
|
||||
inoremap ,pray 🙏
|
||||
|
||||
" Common symbols
|
||||
inoremap ,check ✅
|
||||
inoremap ,x ❌
|
||||
inoremap ,star ⭐
|
||||
inoremap ,fire 🔥
|
||||
inoremap ,rocket 🚀
|
||||
inoremap ,tada 🎉
|
||||
0
x86_64/airootfs/etc/skel.stormux/.vim/swap/.gitkeep
Normal file
0
x86_64/airootfs/etc/skel.stormux/.vim/swap/.gitkeep
Normal file
77
x86_64/airootfs/etc/skel.stormux/.vimrc
Normal file
77
x86_64/airootfs/etc/skel.stormux/.vimrc
Normal file
@@ -0,0 +1,77 @@
|
||||
" ~/.vimrc
|
||||
" Vim configuration for Stormux
|
||||
|
||||
" Ensure vim directory structure exists
|
||||
" mkdir -p ~/.vim/{backup,swap,views}
|
||||
|
||||
set nocompatible " Use Vim settings (not Vi compatible)
|
||||
filetype off " Required for some plugins
|
||||
|
||||
" Terminal and encoding
|
||||
set term=linux " Make arrow and other keys work
|
||||
scriptencoding utf-8
|
||||
|
||||
" History and undo
|
||||
set history=1000 " Store more history (default is 20)
|
||||
set undoreload=10000 " Maximum lines to save for undo on buffer reload
|
||||
|
||||
" Backup and swap file configuration
|
||||
set backup " Enable backups
|
||||
set backupdir=$HOME/.vim/backup//
|
||||
set directory=$HOME/.vim/swap//
|
||||
set viewdir=$HOME/.vim/views//
|
||||
|
||||
" Search settings
|
||||
set ignorecase " Case insensitive search
|
||||
set smartcase " Case sensitive when uppercase present
|
||||
set gdefault " /g flag on :s substitutions by default
|
||||
|
||||
" Spell checking
|
||||
set spell " Enable spell checking
|
||||
|
||||
" Display settings
|
||||
set wrap " Wrap long lines
|
||||
set linebreak " Break lines at word boundaries
|
||||
set noruler " Disable ruler (for accessibility)
|
||||
set laststatus=0 " Never show status line
|
||||
set noshowcmd " Don't show commands in status
|
||||
|
||||
" Indentation settings
|
||||
set shiftwidth=4 " Use indents of 4 spaces
|
||||
set expandtab " Tabs are spaces, not tabs
|
||||
set tabstop=4 " An indentation every four columns
|
||||
set softtabstop=4 " Let backspace delete indent
|
||||
|
||||
" Leader key
|
||||
let mapleader = ','
|
||||
|
||||
" Remap semicolon to colon for easier commands
|
||||
nnoremap ; :
|
||||
|
||||
" Yank from cursor to end of line (consistent with C and D)
|
||||
nnoremap Y y$
|
||||
|
||||
" Em-dash insertion
|
||||
inoremap ,- —
|
||||
|
||||
" Working directory shortcuts
|
||||
cmap cwd lcd %:p:h
|
||||
cmap cd. lcd %:p:h
|
||||
|
||||
" Write with sudo if you forgot to open with sudo
|
||||
cmap w!! w !sudo tee % >/dev/null
|
||||
|
||||
" Disable automatic comment continuation
|
||||
autocmd FileType * setlocal formatoptions-=c formatoptions-=r formatoptions-=o
|
||||
|
||||
" Load vim helper functions if they exist
|
||||
if filereadable(expand("~/.vim/dates.vim"))
|
||||
source ~/.vim/dates.vim
|
||||
endif
|
||||
|
||||
if filereadable(expand("~/.vim/emoji.vim"))
|
||||
source ~/.vim/emoji.vim
|
||||
endif
|
||||
|
||||
" Enable filetype detection and indenting
|
||||
filetype plugin indent on
|
||||
@@ -38,4 +38,14 @@ if [ -d /home/stormux ]; then
|
||||
chown -R 1000:1000 /home/stormux
|
||||
fi
|
||||
|
||||
# Copy Stormux custom skel files to /etc/skel
|
||||
# This is done after package installation to avoid conflicts with packages like screen
|
||||
echo "Copying Stormux custom skel files..."
|
||||
if [ -d /etc/skel.stormux ]; then
|
||||
cp -a /etc/skel.stormux/. /etc/skel/
|
||||
echo "Stormux skel files copied to /etc/skel"
|
||||
else
|
||||
echo "Warning: /etc/skel.stormux not found"
|
||||
fi
|
||||
|
||||
echo "Airootfs customization complete"
|
||||
|
||||
@@ -18,10 +18,12 @@ declare -a userNames=()
|
||||
declare -a userPasswords=()
|
||||
declare -a userIsAdmin=()
|
||||
desktopEnvironment="" # "none", "i3", "mate"
|
||||
hasDesktop=false # true if a desktop environment is selected
|
||||
timezone=""
|
||||
enableSsh="no" # "yes" or "no"
|
||||
installLinuxGameManager="no" # "yes" or "no"
|
||||
installAudiogameManager="no" # "yes" or "no"
|
||||
autoLoginUser="" # User to auto-login for desktop environments
|
||||
|
||||
|
||||
#
|
||||
@@ -666,24 +668,49 @@ gather_system_info() {
|
||||
case "$desktop" in
|
||||
"Console only"*)
|
||||
desktopEnvironment="none"
|
||||
hasDesktop=false
|
||||
log_info "Desktop environment: none"
|
||||
break
|
||||
;;
|
||||
"i3"*)
|
||||
desktopEnvironment="i3"
|
||||
hasDesktop=true
|
||||
log_info "Desktop environment: i3"
|
||||
break
|
||||
;;
|
||||
"MATE"*)
|
||||
desktopEnvironment="mate"
|
||||
hasDesktop=true
|
||||
log_info "Desktop environment: mate"
|
||||
break
|
||||
;;
|
||||
esac
|
||||
done
|
||||
|
||||
# Auto-login user selection (only if desktop environment selected)
|
||||
if [[ "$hasDesktop" == true ]]; then
|
||||
echo ""
|
||||
echo "=== Auto-Login Configuration ==="
|
||||
if [[ ${#userNames[@]} -eq 1 ]]; then
|
||||
autoLoginUser="${userNames[0]}"
|
||||
echo "Auto-login user set to: $autoLoginUser"
|
||||
log_info "Auto-login user: $autoLoginUser"
|
||||
else
|
||||
echo "Select which user should automatically login to the graphical session:"
|
||||
PS3="Enter user number: "
|
||||
select selectedUser in "${userNames[@]}"; do
|
||||
if [[ -n "$selectedUser" ]]; then
|
||||
autoLoginUser="$selectedUser"
|
||||
echo "Auto-login user set to: $autoLoginUser"
|
||||
log_info "Auto-login user: $autoLoginUser"
|
||||
break
|
||||
fi
|
||||
done
|
||||
fi
|
||||
fi
|
||||
|
||||
# Game manager installation (only if desktop environment selected)
|
||||
if [[ "$desktopEnvironment" != "none" ]]; then
|
||||
if [[ "$hasDesktop" == true ]]; then
|
||||
echo ""
|
||||
echo "=== Optional Game Managers ==="
|
||||
echo ""
|
||||
@@ -804,7 +831,7 @@ install_base_system() {
|
||||
)
|
||||
|
||||
local utilityPackages=(
|
||||
vim nano screen magic-wormhole
|
||||
vi vim nano screen magic-wormhole
|
||||
man man-pages
|
||||
xdg-user-dirs xdg-utils
|
||||
poppler socat parted
|
||||
@@ -820,30 +847,22 @@ install_base_system() {
|
||||
# Combine all packages
|
||||
local allPackages=("${basePackages[@]}" "${audioPackages[@]}" "${accessibilityPackages[@]}" "${utilityPackages[@]}")
|
||||
|
||||
# Add wine packages for audiogame-manager
|
||||
if [[ "$installAudiogameManager" == "yes" ]]; then
|
||||
local winePackages=(
|
||||
wine winetricks wine_gecko wine-mono
|
||||
cabextract dos2unix translate-shell
|
||||
gst-plugins-bad gst-plugins-good gst-plugins-ugly gst-libav
|
||||
)
|
||||
allPackages+=("${winePackages[@]}")
|
||||
log_info "Adding wine packages for audiogame-manager"
|
||||
fi
|
||||
|
||||
# Add desktop-specific packages
|
||||
case "$desktopEnvironment" in
|
||||
i3)
|
||||
allPackages+=(i3-wm xclip)
|
||||
allPackages+=(i3-wm orca lxterminal pluma)
|
||||
allPackages+=(discount jq libnotify xfce4-notifyd pamixer playerctl)
|
||||
allPackages+=(python-i3ipc python-wxpython sox yad)
|
||||
allPackages+=(lxsession magic-wormhole pcmanfm)
|
||||
allPackages+=(python-gobject python-pillow python-pytesseract scrot tesseract)
|
||||
allPackages+=(tesseract-data-eng udiskie xorg-setxkbmap)
|
||||
# Add Stormux-specific i3 packages
|
||||
stormuxPackages+=(xlibre-server xlibre-input-libinput nodm-dgw)
|
||||
stormuxPackages+=(xlibre-xserver xlibre-input-libinput nodm-dgw)
|
||||
;;
|
||||
mate)
|
||||
allPackages+=(mate mate-extra orca lightdm lightdm-gtk-greeter)
|
||||
allPackages+=(mate mate-extra orca)
|
||||
# Add Stormux-specific MATE packages
|
||||
stormuxPackages+=(xlibre-server xlibre-input-libinput)
|
||||
stormuxPackages+=(xlibre-xserver xlibre-input-libinput nodm-dgw)
|
||||
;;
|
||||
esac
|
||||
|
||||
@@ -1052,6 +1071,23 @@ pacman -Sy --noconfirm --needed ${stormuxPackages[*]} 2>/dev/null || true
|
||||
"
|
||||
fi
|
||||
|
||||
# Build game manager packages installation command
|
||||
local gameManagerPackagesCmd=""
|
||||
if [[ "$installAudiogameManager" == "yes" ]]; then
|
||||
gameManagerPackagesCmd+="
|
||||
# Install wine packages for audiogame-manager
|
||||
echo \"Installing wine packages for audiogame-manager...\"
|
||||
pacman -S --noconfirm --needed wine winetricks wine_gecko wine-mono cabextract dos2unix translate-shell gst-plugins-bad gst-plugins-good gst-plugins-ugly gst-libav 2>/dev/null || true
|
||||
"
|
||||
fi
|
||||
if [[ "$installLinuxGameManager" == "yes" ]]; then
|
||||
gameManagerPackagesCmd+="
|
||||
# Install packages for linux-game-manager
|
||||
echo \"Installing packages for linux-game-manager...\"
|
||||
pacman -S --noconfirm --needed linux-game-manager 2>/dev/null || true
|
||||
"
|
||||
fi
|
||||
|
||||
# Build pipewire configuration command for all users
|
||||
local pipewireConfigCmd=""
|
||||
for username in "${userNames[@]}"; do
|
||||
@@ -1093,6 +1129,8 @@ export GTK_MODULES=gail:atk-bridge
|
||||
export GNOME_ACCESSIBILITY=1
|
||||
export QT_ACCESSIBILITY=1
|
||||
export QT_LINUX_ACCESSIBILITY_ALWAYS_ON=1
|
||||
export EDITOR=nano
|
||||
export VISUAL=nano
|
||||
ENV_EOF
|
||||
|
||||
# Note: realtime group is created by realtime-privileges package
|
||||
@@ -1161,7 +1199,6 @@ elif [[ "${desktopEnvironment}" == "mate" ]]; then
|
||||
#
|
||||
# Executed by startx (run your window manager from here)
|
||||
|
||||
dbus-launch
|
||||
[[ -f ~/.Xresources ]] && xrdb -merge -I\$HOME ~/.Xresources
|
||||
|
||||
if [ -d /etc/X11/xinit/xinitrc.d ]; then
|
||||
@@ -1171,30 +1208,24 @@ if [ -d /etc/X11/xinit/xinitrc.d ]; then
|
||||
unset f
|
||||
fi
|
||||
|
||||
# Source xprofile if it exists
|
||||
[[ -f ~/.xprofile ]] && . ~/.xprofile
|
||||
[ -f /etc/xprofile ] && . /etc/xprofile
|
||||
[ -f ~/.xprofile ] && . ~/.xprofile
|
||||
|
||||
exec mate-session
|
||||
exec dbus-run-session -- mate-session
|
||||
XINITRC_MATE_EOF
|
||||
chmod 755 /home/\$firstUser/.xinitrc
|
||||
chown \$firstUser:users /home/\$firstUser/.xinitrc
|
||||
|
||||
# Create .xprofile for MATE with accessibility variables
|
||||
cat > /home/\$firstUser/.xprofile <<'XPROFILE_MATE_EOF'
|
||||
#!/bin/sh
|
||||
#
|
||||
# ~/.xprofile
|
||||
#
|
||||
# Executed by display managers and sourced by .xinitrc
|
||||
|
||||
# Accessibility environment variables
|
||||
# Accessibility variables
|
||||
export ACCESSIBILITY_ENABLED=1
|
||||
export GTK_MODULES=gail:atk-bridge:canberra-gtk-module
|
||||
export CHROME_FLAGS="--force-renderer-accessibility"
|
||||
export GTK_MODULES=gail:atk-bridge
|
||||
export GNOME_ACCESSIBILITY=1
|
||||
export QT_ACCESSIBILITY=1
|
||||
export QT_LINUX_ACCESSIBILITY_ALWAYS_ON=1
|
||||
export DBUS_SESSION_BUS_PID
|
||||
export DBUS_SESSION_BUS_ADDRESS
|
||||
export SAL_USE_VCLPLUGIN=gtk3
|
||||
|
||||
# Enable Orca screen reader
|
||||
gsettings set org.gnome.desktop.a11y.applications screen-reader-enabled true 2>/dev/null || true
|
||||
@@ -1220,13 +1251,12 @@ if [[ -f /usr/share/pacman/keyrings/stormux.gpg ]]; then
|
||||
pacman-key --lsign-key 52ADA49000F1FF0456F8AEEFB4CDE1CD56EF8E82 2>/dev/null || true
|
||||
fi
|
||||
|
||||
# Import xlibre key
|
||||
pacman-key --recv-keys 73580DE2EDDFA6D6 2>/dev/null || true
|
||||
pacman-key --lsign-key 73580DE2EDDFA6D6 2>/dev/null || true
|
||||
|
||||
# Install Stormux-specific packages (built dynamically before chroot)
|
||||
$stormuxPackagesCmd
|
||||
|
||||
# Install game manager packages (built dynamically before chroot)
|
||||
$gameManagerPackagesCmd
|
||||
|
||||
# Enable pipewire globally for all users (creates symlinks in /etc/systemd/user/)
|
||||
systemctl --global enable pipewire.service pipewire-pulse.service wireplumber.service
|
||||
|
||||
@@ -1241,9 +1271,9 @@ $pipewireConfigCmd
|
||||
# Configure nodm for automatic login (only after nodm package is installed)
|
||||
if [[ "${desktopEnvironment}" == "i3" ]] || [[ "${desktopEnvironment}" == "mate" ]]; then
|
||||
if [[ -f /etc/nodm.conf ]]; then
|
||||
sed -i "s/{user}/${userNames[0]}/g" /etc/nodm.conf
|
||||
sed -i "s/{user}/${autoLoginUser}/g" /etc/nodm.conf
|
||||
systemctl enable nodm.service
|
||||
echo "Display manager (nodm) configured for ${userNames[0]}"
|
||||
echo "Display manager (nodm) configured for ${autoLoginUser}"
|
||||
else
|
||||
echo "Warning: /etc/nodm.conf not found, skipping nodm configuration"
|
||||
fi
|
||||
@@ -1262,6 +1292,10 @@ export GNOME_ACCESSIBILITY=1
|
||||
export QT_ACCESSIBILITY=1
|
||||
export QT_LINUX_ACCESSIBILITY_ALWAYS_ON=1
|
||||
|
||||
# Default editor (users can override in their own shell config)
|
||||
export EDITOR=nano
|
||||
export VISUAL=nano
|
||||
|
||||
# Dialog accessibility options
|
||||
export DIALOGOPTS='--no-lines --visit-items'
|
||||
PROFILE_EOF
|
||||
@@ -1356,6 +1390,10 @@ install_game_managers() {
|
||||
# Clone repository
|
||||
git clone https://git.stormux.org/storm/linux-game-manager "$mountPoint/opt/linux-game-manager"
|
||||
|
||||
# Configure git repository for shared group access
|
||||
arch-chroot "$mountPoint" git -C /opt/linux-game-manager config core.sharedRepository group
|
||||
arch-chroot "$mountPoint" git -C /opt/linux-game-manager config safe.directory /opt/linux-game-manager
|
||||
|
||||
# Set ownership to root:games with group-writable permissions
|
||||
chown -R root:games "$mountPoint/opt/linux-game-manager"
|
||||
chmod -R 775 "$mountPoint/opt/linux-game-manager"
|
||||
@@ -1366,7 +1404,13 @@ install_game_managers() {
|
||||
cat > "$mountPoint/usr/local/bin/linux-game-manager" <<'EOF'
|
||||
#!/usr/bin/env bash
|
||||
cd /opt/linux-game-manager || exit 1
|
||||
|
||||
# Set umask for group-writable files
|
||||
umask 002
|
||||
|
||||
# Try to update - only members of games group can write
|
||||
git pull --quiet 2>/dev/null || true
|
||||
|
||||
./linux-game-manager.sh "$@"
|
||||
EOF
|
||||
chmod 755 "$mountPoint/usr/local/bin/linux-game-manager"
|
||||
@@ -1383,6 +1427,10 @@ EOF
|
||||
# Clone repository
|
||||
git clone https://git.stormux.org/storm/audiogame-manager "$mountPoint/opt/audiogame-manager"
|
||||
|
||||
# Configure git repository for shared group access
|
||||
arch-chroot "$mountPoint" git -C /opt/audiogame-manager config core.sharedRepository group
|
||||
arch-chroot "$mountPoint" git -C /opt/audiogame-manager config safe.directory /opt/audiogame-manager
|
||||
|
||||
# Set ownership to root:games with group-writable permissions
|
||||
chown -R root:games "$mountPoint/opt/audiogame-manager"
|
||||
chmod -R 775 "$mountPoint/opt/audiogame-manager"
|
||||
@@ -1393,7 +1441,13 @@ EOF
|
||||
cat > "$mountPoint/usr/local/bin/audiogame-manager" <<'EOF'
|
||||
#!/usr/bin/env bash
|
||||
cd /opt/audiogame-manager || exit 1
|
||||
|
||||
# Set umask for group-writable files
|
||||
umask 002
|
||||
|
||||
# Try to update - only members of games group can write
|
||||
git pull --quiet 2>/dev/null || true
|
||||
|
||||
./audiogame-manager.sh "$@"
|
||||
EOF
|
||||
chmod 755 "$mountPoint/usr/local/bin/audiogame-manager"
|
||||
|
||||
@@ -25,7 +25,8 @@ Architecture = auto
|
||||
#IgnorePkg =
|
||||
#IgnoreGroup =
|
||||
|
||||
#NoUpgrade =
|
||||
# Protect Stormux custom skel files from being overwritten by package updates
|
||||
NoUpgrade = etc/skel/.bashrc etc/skel/.inputrc etc/skel/.screenrc etc/skel/.vimrc etc/skel/.vim/*
|
||||
#NoExtract =
|
||||
|
||||
# Misc options
|
||||
@@ -79,10 +80,6 @@ LocalFileSigLevel = Optional
|
||||
SigLevel = Required DatabaseOptional
|
||||
Server = https://packages.stormux.org/$arch
|
||||
|
||||
[xlibre]
|
||||
SigLevel = Required DatabaseOptional
|
||||
Server = https://x11libre.net/repo/arch_based/$arch
|
||||
|
||||
[core]
|
||||
Include = /etc/pacman.d/mirrorlist
|
||||
|
||||
|
||||
Reference in New Issue
Block a user