Skip to content

Commit fa2f262

Browse files
committed
Update and fix systemd-homed logic
Fixex #151
1 parent 98fa6bf commit fa2f262

File tree

2 files changed

+24
-23
lines changed

2 files changed

+24
-23
lines changed

alis.conf

+3-3
Original file line numberDiff line numberDiff line change
@@ -108,9 +108,9 @@ ADDITIONAL_USERS=() # eg. ("user1=password1" "user2=password2")
108108
## systemd-homed
109109
### SYSTEMD_HOMED "true" value requires interactivity to set user password
110110
SYSTEMD_HOMED="false"
111-
SYSTEMD_HOMED_STORAGE="directory !fscrypt !luks !cifs !subvolume"
112-
SYSTEMD_HOMED_CIFS_DOMAIN=""
113-
SYSTEMD_HOMED_CIFS_SERVICE=""
111+
SYSTEMD_HOMED_STORAGE="auto !luks !subvolume !directory !fscrypt !cifs"
112+
SYSTEMD_HOMED_STORAGE_LUKS=(["type"]="auto !ext4 !btrfs !xfs")
113+
SYSTEMD_HOMED_STORAGE_CIFS=(["domain"]="" ["service"]="")
114114

115115
# mkinitcpio
116116
## HOOKS are the system hooks to execute to build the initial ramdisk.

alis.sh

+21-20
Original file line numberDiff line numberDiff line change
@@ -71,6 +71,10 @@ CMDLINE_LINUX=""
7171
BTRFS_SUBVOLUME_ROOT=()
7272
BTRFS_SUBVOLUME_SWAP=()
7373

74+
# configuration variables declartion (no configuration, don't edit)
75+
declare -A SYSTEMD_HOMED_STORAGE_LUKS
76+
declare -A SYSTEMD_HOMED_STORAGE_CIFS
77+
7478
CONF_FILE="alis.conf"
7579
GLOBALS_FILE="alis-globals.conf"
7680
LOG_FILE="alis.log"
@@ -98,6 +102,7 @@ function sanitize_variables() {
98102
KERNELS_COMPRESSION=$(sanitize_variable "$KERNELS_COMPRESSION")
99103
KERNELS_PARAMETERS=$(sanitize_variable "$KERNELS_PARAMETERS")
100104
SYSTEMD_HOMED_STORAGE=$(sanitize_variable "$SYSTEMD_HOMED_STORAGE")
105+
SYSTEMD_HOMED_STORAGE_LUKS["type"]=$(sanitize_variable "${SYSTEMD_HOMED_STORAGE_LUKS["type"]}")
101106
BOOTLOADER=$(sanitize_variable "$BOOTLOADER")
102107
CUSTOM_SHELL=$(sanitize_variable "$CUSTOM_SHELL")
103108
DESKTOP_ENVIRONMENT=$(sanitize_variable "$DESKTOP_ENVIRONMENT")
@@ -182,15 +187,15 @@ function check_variables() {
182187
check_variables_equals "ROOT_PASSWORD" "ROOT_PASSWORD_RETYPE" "$ROOT_PASSWORD" "$ROOT_PASSWORD_RETYPE"
183188
check_variables_equals "USER_PASSWORD" "USER_PASSWORD_RETYPE" "$USER_PASSWORD" "$USER_PASSWORD_RETYPE"
184189
check_variables_boolean "SYSTEMD_HOMED" "$SYSTEMD_HOMED"
190+
check_variables_list "SYSTEMD_HOMED_STORAGE" "$SYSTEMD_HOMED_STORAGE" "auto luks subvolume directory fscrypt cifs" "true"
191+
check_variables_list "SYSTEMD_HOMED_STORAGE_LUKS[\"type]\"" "${SYSTEMD_HOMED_STORAGE_LUKS["type"]}" "auto ext4 btrfs xfs"
185192
if [ "$SYSTEMD_HOMED" == "true" ]; then
186-
check_variables_list "SYSTEMD_HOMED_STORAGE" "$SYSTEMD_HOMED_STORAGE" "directory fscrypt luks cifs subvolume" "true"
187-
188193
if [ "$SYSTEMD_HOMED_STORAGE" == "fscrypt" ]; then
189194
check_variables_list "FILE_SYSTEM_TYPE" "$FILE_SYSTEM_TYPE" "ext4 f2fs" "true"
190195
fi
191196
if [ "$SYSTEMD_HOMED_STORAGE" == "cifs" ]; then
192-
check_variables_value "SYSTEMD_HOMED_CIFS_DOMAIN" "$SYSTEMD_HOMED_CIFS_DOMAIN"
193-
check_variables_value "SYSTEMD_HOMED_CIFS_SERVICE" "$SYSTEMD_HOMED_CIFS_SERVICE"
197+
check_variables_value "SYSTEMD_HOMED_CIFS[\"domain]\"" "${SYSTEMD_HOMED_CIFS_DOMAIN["domain"]}"
198+
check_variables_value "SYSTEMD_HOMED_CIFS[\"service\"]" "${SYSTEMD_HOMED_CIFS_SERVICE["size"]}"
194199
fi
195200
fi
196201
check_variables_value "HOOKS" "$HOOKS"
@@ -1201,35 +1206,31 @@ function create_user_homectl() {
12011206
PASSWORD=$2
12021207
USERS_GROUPS=$3
12031208
STORAGE=""
1209+
IMAGE_PATH="--image-path=/mnt/home/"
1210+
FS_TYPE=""
12041211
CIFS_DOMAIN=""
12051212
CIFS_USERNAME=""
12061213
CIFS_SERVICE=""
12071214
TZ=$(echo ${TIMEZONE} | sed "s/\/usr\/share\/zoneinfo\///g")
12081215
L=$(echo ${LOCALE_CONF[0]} | sed "s/LANG=//g")
1209-
IMAGE_PATH="/home/$USER.homedir"
1210-
HOME_PATH="/home/$USER"
12111216

1212-
if [ -n "$SYSTEMD_HOMED_STORAGE" ]; then
1217+
if [ "$SYSTEMD_HOMED_STORAGE" != "auto" ]; then
12131218
STORAGE="--storage=$SYSTEMD_HOMED_STORAGE"
12141219
fi
1215-
if [ "$SYSTEMD_HOMED_STORAGE" == "cifs" ]; then
1216-
CIFS_DOMAIN="--cifs-domain=$SYSTEMD_HOMED_CIFS_DOMAIN"
1217-
CIFS_USERNAME="--cifs-user-name=$USER"
1218-
CIFS_SERVICE="--cifs-service=$SYSTEMD_HOMED_CIFS_SERVICE"
1220+
if [ "$SYSTEMD_HOMED_STORAGE" == "luks" -a "${SYSTEMD_HOMED_STORAGE_LUKS["type"]}" != "auto" ]; then
1221+
FS_TYPE="--fs-type=${SYSTEMD_HOMED_STORAGE_LUKS["type"]}"
12191222
fi
12201223
if [ "$SYSTEMD_HOMED_STORAGE" == "luks" ]; then
1221-
IMAGE_PATH="/home/$USER.home"
1224+
IMAGE_PATH="--image-path=/mnt/home/$USER.home"
1225+
fi
1226+
if [ "$SYSTEMD_HOMED_STORAGE" == "cifs" ]; then
1227+
CIFS_DOMAIN="--cifs-domain=${SYSTEMD_HOMED_CIFS_DOMAIN["domain"]}"
1228+
CIFS_USERNAME="--cifs-user-name=$USER"
1229+
CIFS_SERVICE="--cifs-service=${SYSTEMD_HOMED_CIFS_SERVICE["service"]}"
12221230
fi
12231231

1224-
### something missing, inside alis this not works, after install the user is in state infixated
1225-
### after install and reboot this commands work
12261232
systemctl start systemd-homed.service
1227-
set +e
1228-
homectl create $USER --enforce-password-policy=no --timezone=$TZ --language=$L $STORAGE $CIFS_DOMAIN $CIFS_USERNAME $CIFS_SERVICE -G "$USERS_GROUPS"
1229-
homectl activate $USER
1230-
set -e
1231-
cp -a "$IMAGE_PATH/." "/mnt$IMAGE_PATH"
1232-
cp -a "$HOME_PATH/." "/mnt$HOME_PATH"
1233+
homectl create $USER --enforce-password-policy=no --timezone=$TZ --language=$L $STORAGE $IMAGE_PATH $FS_TYPE $CIFS_DOMAIN $CIFS_USERNAME $CIFS_SERVICE -G "$USERS_GROUPS"
12331234
cp -a "/var/lib/systemd/home/." "/mnt/var/lib/systemd/home/"
12341235
}
12351236

0 commit comments

Comments
 (0)