实验性支持 nixos

This commit is contained in:
2026-06-07 20:32:46 +08:00
parent a66944cfba
commit 9fe7714b7b
11 changed files with 460 additions and 11 deletions
+12 -2
View File
@@ -27,8 +27,18 @@ function ensure_dir() {
return 0
fi
}
chrootEnvPath="${chrootEnvPath:-$(dirname $0)/ace-env}"
is_nixos() {
[ -f /etc/os-release ] && grep -Eq '^ID="?nixos"?$' /etc/os-release
}
APM_CONTAINER_PATH="/amber-ce-tools/bin-override:$PATH"
if is_nixos; then
APM_CONTAINER_PATH="/amber-ce-tools/bin-override:/usr/local/bin:/usr/bin/"
fi
APM_PKG_NAME="${APM_PKG_NAME:-apm-general}"
non_root_user=$(who | awk '{print $1}' | head -n 1)
@@ -106,7 +116,7 @@ done
ENV_VARS=(
"FAKEROOTDONTTRYCHOWN 1"
"PULSE_SERVER /run/user/\$uid/pulse/native"
"PATH /amber-ce-tools/bin-override:\$PATH"
"PATH $APM_CONTAINER_PATH"
"IS_ACE_ENV 1"
"GTK_USE_PORTAL 1"
"XDG_DATA_DIRS /amber-ce-tools/additional-data-dir-in-container:\$XDG_DATA_DIRS"
@@ -201,4 +211,4 @@ add_command "bash -c \"${container_command}\""
# echo "${EXEC_COMMAND}"
# 注意: 实际执行时,请确保所有变量(如 $uid, $chrootEnvPath 等)都已正确定义
eval "${EXEC_COMMAND}"
eval "${EXEC_COMMAND}"
+9 -2
View File
@@ -7,6 +7,14 @@ export -f bash
chrootEnvPath="${chrootEnvPath:-$(pwd)/ace-env}"
is_nixos() {
[ -f /etc/os-release ] && grep -Eq '^ID="?nixos"?$' /etc/os-release
}
APM_CONTAINER_PATH="/amber-ce-tools/bin-override:$PATH"
if is_nixos; then
APM_CONTAINER_PATH="/amber-ce-tools/bin-override:/usr/local/bin:/usr/bin/"
fi
non_root_user=$(who | awk '{print $1}' | head -n 1)
@@ -80,7 +88,7 @@ done
ENV_VARS=(
"FAKEROOTDONTTRYCHOWN 1"
"PULSE_SERVER /run/user/\$uid/pulse/native"
"PATH /amber-ce-tools/bin-override:\$PATH"
"PATH $APM_CONTAINER_PATH"
"IS_ACE_ENV 1"
"GTK_USE_PORTAL 1"
"XDG_DATA_DIRS /amber-ce-tools/additional-data-dir-in-container:\$XDG_DATA_DIRS"
@@ -139,4 +147,3 @@ add_command "bash -c \"${container_command}\""
# 注意: 实际执行时,请确保所有变量(如 $uid, $chrootEnvPath 等)都已正确定义
eval ${EXEC_COMMAND}
+12 -3
View File
@@ -15,6 +15,15 @@ else
PKGNAME=$PACKAGE_NAME
fi
chrootEnvPath=/var/lib/apm/$PKGNAME/files/ace-env
is_nixos() {
[ -f /etc/os-release ] && grep -Eq '^ID="?nixos"?$' /etc/os-release
}
APM_CONTAINER_PATH="/amber-ce-tools/bin-override:$PATH"
if is_nixos; then
APM_CONTAINER_PATH="/amber-ce-tools/bin-override:/usr/local/bin:/usr/bin/"
fi
#if [ ! -e $chrootEnvPath ];then
echo "Uncompress the env...."
tar -xvf $chrootEnvPath.tar.xz -C /var/lib/apm/$PKGNAME/files/
@@ -41,7 +50,7 @@ uid=$(id -u $non_root_user)
function bookworm-run(){
bwrap --dev-bind $chrootEnvPath/ / \
--setenv PULSE_SERVER /run/user/$uid/pulse/native \
--setenv PATH /amber-ce-tools/bin-override:$PATH \
--setenv PATH "$APM_CONTAINER_PATH" \
--setenv IS_ACE_ENV "1" \
--dev-bind-try /media /media \
--dev-bind-try /tmp /tmp \
@@ -89,7 +98,7 @@ bookworm-run apt clean
bookworm-run chown -R $(get_current_user) /usr/lib/locale/
sudo -u $(get_current_user) bwrap --dev-bind $chrootEnvPath/ / \
--setenv PULSE_SERVER /run/user/$uid/pulse/native \
--setenv PATH /amber-ce-tools/bin-override:$PATH \
--setenv PATH "$APM_CONTAINER_PATH" \
--setenv IS_ACE_ENV "1" \
--dev-bind $chrootEnvPath/ / \
--dev-bind-try /media /media \
@@ -121,4 +130,4 @@ ln -sfv ../../usr/share/pixmaps/ $chrootEnvPath/amber-ce-tools/data-dir/
chmod 777 -R $chrootEnvPath/usr/share/icons
rm -vfr $chrootEnvPath/dev/*
true
true
+10 -3
View File
@@ -14,6 +14,15 @@ export ACE_PACKAGE_NAME=$PKGNAME
chrootEnvPath=/var/lib/apm/$PKGNAME/files/ace-env
is_nixos() {
[ -f /etc/os-release ] && grep -Eq '^ID="?nixos"?$' /etc/os-release
}
APM_CONTAINER_PATH="/amber-ce-tools/bin-override:$PATH"
if is_nixos; then
APM_CONTAINER_PATH="/amber-ce-tools/bin-override:/usr/local/bin:/usr/bin/"
fi
# if [ ! -e $chrootEnvPath/finish.flag ];then
# if [ "$(id -u)" = "0" ]; then
@@ -94,7 +103,7 @@ done
ENV_VARS=(
"FAKEROOTDONTTRYCHOWN 1"
"PULSE_SERVER /run/user/\$uid/pulse/native"
"PATH /amber-ce-tools/bin-override:\$PATH"
"PATH $APM_CONTAINER_PATH"
"IS_ACE_ENV 1"
"IS_APM_ENV 1"
"XDG_DATA_DIRS /amber-ce-tools/additional-data-dir-in-container:\$XDG_DATA_DIRS"
@@ -149,5 +158,3 @@ add_command "bash -c \"${container_command}\""
# 注意: 实际执行时,请确保所有变量(如 $uid, $chrootEnvPath 等)都已正确定义
eval ${EXEC_COMMAND}