Compare commits
33 Commits
Author | SHA1 | Date | |
---|---|---|---|
231acc723b | |||
dafee38770 | |||
91f8c5d64a | |||
0bff2c5715
|
|||
88ebe2ee63
|
|||
d253e889c5
|
|||
71cb6715a5
|
|||
a4c443b658 | |||
a1c122c058 | |||
bea63084ab | |||
83b9a674a8
|
|||
26ffee5d7c | |||
8c3a81d0ee | |||
91b23a5265 | |||
aa58c995eb | |||
68b91bc6ec | |||
e3c3b5d9a5 | |||
edaf1d8c0b | |||
3d97503604 | |||
e9e2ec9d9e | |||
320dc22775
|
|||
759f8236f1
|
|||
51017c4789
|
|||
9fafba1f67 | |||
1bb3f828fe
|
|||
76618b8ffe
|
|||
b0accd6320
|
|||
186c4cc944 | |||
36b3def4df | |||
bff662b2bb | |||
6a830fd09e | |||
f1a229a2b2 | |||
8163c1574f |
2
LICENSE
2
LICENSE
@@ -1,6 +1,6 @@
|
||||
BSD 2-Clause License
|
||||
|
||||
Copyright (c) 2018-2019, Artix Linux
|
||||
Copyright (c) 2018-2021, Artix Linux
|
||||
All rights reserved.
|
||||
|
||||
Redistribution and use in source and binary forms, with or without
|
||||
|
76
Makefile
76
Makefile
@@ -1,4 +1,4 @@
|
||||
VERSION = 0.8
|
||||
VERSION = 0.12
|
||||
|
||||
PKG = live-services
|
||||
TOOLS = artools
|
||||
@@ -8,6 +8,8 @@ PREFIX ?= /usr
|
||||
BINDIR = $(PREFIX)/bin
|
||||
LIBDIR = $(PREFIX)/lib
|
||||
DATADIR = $(PREFIX)/share
|
||||
SYSUSERSDIR = $(PREFIX)/lib/sysusers.d
|
||||
LIVEUSER ?= artix
|
||||
|
||||
FMODE = -m0644
|
||||
DMODE = -dm0755
|
||||
@@ -16,8 +18,6 @@ BMODE = -m0755
|
||||
BIN = \
|
||||
bin/artix-live
|
||||
|
||||
LIBS = $(wildcard lib/*.sh)
|
||||
|
||||
SHARED = \
|
||||
$(wildcard data/*.map) \
|
||||
data/live.conf
|
||||
@@ -34,28 +34,66 @@ RUNIT_SV = \
|
||||
data/runit/pacman-init.run
|
||||
|
||||
S6_LIVE = \
|
||||
$(wildcard data/s6/artix-live/*)
|
||||
data/s6/artix-live/up \
|
||||
data/s6/artix-live/type
|
||||
|
||||
S6_PI = \
|
||||
$(wildcard data/s6/pacman-init/*)
|
||||
data/s6/pacman-init/type \
|
||||
data/s6/pacman-init/up \
|
||||
data/s6/pacman-init/down
|
||||
|
||||
S6_BUNDLE = \
|
||||
$(wildcard data/s6/live/*)
|
||||
66_LIVE = \
|
||||
data/66/artix-live
|
||||
|
||||
S6_SV = \
|
||||
data/s6/pacman-init.run
|
||||
66_PI = \
|
||||
data/66/pacman-init
|
||||
|
||||
DINIT_LIVE = \
|
||||
data/dinit/artix-live
|
||||
|
||||
DINIT_PI = \
|
||||
data/dinit/pacman-init
|
||||
|
||||
DINIT_PI_SCRIPT = \
|
||||
data/dinit/pacman-init.script
|
||||
|
||||
XDG = $(wildcard data/*.desktop)
|
||||
|
||||
XBIN = bin/desktop-items
|
||||
|
||||
SYSUSERS = \
|
||||
data/sysusers
|
||||
|
||||
RM = rm -f
|
||||
M4 = m4 -P
|
||||
CHMODAW = chmod a-w
|
||||
CHMODX = chmod +x
|
||||
|
||||
all: $(BIN) $(SYSUSERS) $(XBIN) $(RC) $(RUNIT_SVD) $(S6_PI) $(S6_LIVE)
|
||||
|
||||
EDIT = sed -e "s|@datadir[@]|$(DATADIR)|g" \
|
||||
-e "s|@sysconfdir[@]|$(SYSCONFDIR)|g" \
|
||||
-e "s|@bindir[@]|$(BINDIR)|g" \
|
||||
-e "s|@libdir[@]|$(LIBDIR)|g" \
|
||||
-e "s|@live[@]|$(LIVEUSER)|g"
|
||||
|
||||
%: %.in Makefile lib/util-live.sh
|
||||
@echo "GEN $@"
|
||||
@$(RM) "$@"
|
||||
@{ echo -n 'm4_changequote([[[,]]])'; cat $@.in; } | $(M4) | $(EDIT) >$@
|
||||
@$(CHMODAW) "$@"
|
||||
@$(CHMODX) "$@"
|
||||
@bash -O extglob -n "$@"
|
||||
|
||||
clean:
|
||||
$(RM) $(BIN) $(SYSUSERS) $(XBIN) $(RC) $(RUNIT_SVD) $(S6_PI) $(S6_LIVE)
|
||||
|
||||
install_base:
|
||||
install $(DMODE) $(DESTDIR)$(BINDIR)
|
||||
install $(BMODE) $(BIN) $(DESTDIR)$(BINDIR)
|
||||
|
||||
install $(DMODE) $(DESTDIR)$(LIBDIR)/$(TOOLS)
|
||||
install $(FMODE) $(LIBS) $(DESTDIR)$(LIBDIR)/$(TOOLS)
|
||||
install $(DMODE) $(DESTDIR)$(SYSUSERSDIR)
|
||||
install $(FMODE) $(SYSUSERS) $(DESTDIR)$(SYSUSERSDIR)/live-artix.conf
|
||||
|
||||
install $(DMODE) $(DESTDIR)$(DATADIR)/$(TOOLS)
|
||||
install $(FMODE) $(SHARED) $(DESTDIR)$(DATADIR)/$(TOOLS)
|
||||
@@ -83,8 +121,20 @@ install_s6:
|
||||
install $(DMODE) $(DESTDIR)$(SYSCONFDIR)/s6/sv/artix-live
|
||||
install $(BMODE) $(S6_LIVE) $(DESTDIR)$(SYSCONFDIR)/s6/sv/artix-live/
|
||||
|
||||
install $(DMODE) $(DESTDIR)$(SYSCONFDIR)/s6/sv/live
|
||||
install $(BMODE) $(S6_BUNDLE) $(DESTDIR)$(SYSCONFDIR)/s6/sv/live/
|
||||
install_66:
|
||||
install $(DMODE) $(DESTDIR)$(SYSCONFDIR)/66/service
|
||||
|
||||
install $(FMODE) $(66_LIVE) $(DESTDIR)$(SYSCONFDIR)/66/service/artix-live
|
||||
install $(FMODE) $(66_PI) $(DESTDIR)$(SYSCONFDIR)/66/service/pacman-init
|
||||
|
||||
install_dinit:
|
||||
install $(DMODE) $(DESTDIR)$(SYSCONFDIR)/dinit.d/scripts
|
||||
install $(DMODE) $(DESTDIR)$(SYSCONFDIR)/dinit.d/boot.d
|
||||
install $(FMODE) $(DINIT_LIVE) $(DESTDIR)$(SYSCONFDIR)/dinit.d/artix-live
|
||||
install $(FMODE) $(DINIT_PI) $(DESTDIR)$(SYSCONFDIR)/dinit.d/pacman-init
|
||||
install $(BMODE) $(DINIT_PI_SCRIPT) $(DESTDIR)$(SYSCONFDIR)/dinit.d/scripts/pacman-init
|
||||
ln -s ../artix-live $(DESTDIR)$(SYSCONFDIR)/dinit.d/boot.d
|
||||
ln -s ../pacman-init $(DESTDIR)$(SYSCONFDIR)/dinit.d/boot.d
|
||||
|
||||
install_xdg:
|
||||
install -dm0755 $(DESTDIR)$(PREFIX)/bin
|
||||
|
@@ -1,35 +0,0 @@
|
||||
#!/bin/sh
|
||||
|
||||
LOGFILE='/var/log/artix-live.log'
|
||||
|
||||
. /usr/lib/artools/util-live.sh
|
||||
|
||||
load_live_config "/etc/artools/live.conf" || load_live_config "/usr/share/artools/live.conf"
|
||||
|
||||
CONSOLEFONT="$(kernel_cmdline vconsole.font)"
|
||||
CONSOLEMAP="$(kernel_cmdline vconsole.font.map)"
|
||||
echo "Got consolefont ${CONSOLEFONT} and consolemap ${CONSOLEMAP}" >> "${LOGFILE}"
|
||||
|
||||
# Activate swap
|
||||
configure_swap
|
||||
echo "Activated swap and added to fstab" >> "${LOGFILE}"
|
||||
|
||||
configure_language
|
||||
echo "Finished localization" >> "${LOGFILE}"
|
||||
|
||||
configure_user 'root'
|
||||
echo "Configured root user" >> "${LOGFILE}"
|
||||
|
||||
configure_user "${USER_NAME}"
|
||||
echo "Created user ${USER_NAME} with password ${PASSWORD}" >> "${LOGFILE}"
|
||||
|
||||
detect_desktop_env
|
||||
echo "Detected ${DEFAULT_DESKTOP_EXECUTABLE} ${DEFAULT_DESKTOP_FILE}" >> "${LOGFILE}"
|
||||
|
||||
configure_accountsservice "${USER_NAME}"
|
||||
echo "Configured accountsservice" >> "${LOGFILE}"
|
||||
|
||||
configure_displaymanager
|
||||
echo "Configured displaymanager" >> "${LOGFILE}"
|
||||
|
||||
|
23
bin/artix-live.in
Normal file
23
bin/artix-live.in
Normal file
@@ -0,0 +1,23 @@
|
||||
#!/bin/bash
|
||||
|
||||
m4_include(lib/util-live.sh)
|
||||
|
||||
LOGFILE='/var/log/artix-live.log'
|
||||
|
||||
CONSOLEFONT="$(kernel_cmdline vconsole.font)"
|
||||
CONSOLEMAP="$(kernel_cmdline vconsole.font.map)"
|
||||
#echo "Got consolefont ${CONSOLEFONT} and consolemap ${CONSOLEMAP}" >> "${LOGFILE}"
|
||||
|
||||
configure_swap
|
||||
|
||||
configure_language
|
||||
|
||||
configure_user
|
||||
|
||||
detect_desktop_env
|
||||
|
||||
configure_accountsservice
|
||||
|
||||
configure_displaymanager
|
||||
|
||||
configure_branding
|
@@ -1,34 +0,0 @@
|
||||
#!/bin/sh
|
||||
|
||||
# Ensure the user directories are created, some DEs (MATE)
|
||||
# create them after autostart scripts are run
|
||||
xdg-user-dirs-update --force
|
||||
|
||||
xdg=$(xdg-user-dir DESKTOP)
|
||||
src=/usr/share/applications
|
||||
|
||||
# if [[ -f $src/org.kde.konversation.desktop ]]; then
|
||||
# install -m644 $src/org.kde.konversation.desktop \
|
||||
# $xdg/org.kde.konversation.desktop
|
||||
# fi
|
||||
|
||||
# if [[ -f /usr/bin/calamares ]]; then
|
||||
# cp $src/calamares.desktop \
|
||||
# $xdg/calamares.desktop
|
||||
# fi
|
||||
|
||||
docs=/usr/share/doc/artix
|
||||
|
||||
for f in {Configuration,Troubleshooting}.pdf;do
|
||||
ln -s $docs/$f $xdg/$f
|
||||
done
|
||||
|
||||
if [[ -d /run/openrc ]];then
|
||||
ln -s $docs/OpenRC.pdf $xdg/OpenRC.pdf
|
||||
elif [[ -d /run/runit ]];then
|
||||
ln -s $docs/Runit.pdf $xdg/Runit.pdf
|
||||
else
|
||||
ln -s $docs/S6.pdf $xdg/S6.pdf
|
||||
fi
|
||||
|
||||
echo "live session details: /var/log/artix-live.log" > $xdg/README.txt
|
39
bin/desktop-items.in
Normal file
39
bin/desktop-items.in
Normal file
@@ -0,0 +1,39 @@
|
||||
#!/bin/sh
|
||||
|
||||
# Ensure the user directories are created, some DEs (MATE)
|
||||
# create them after autostart scripts are run
|
||||
xdg-user-dirs-update --force
|
||||
|
||||
xdg=$(xdg-user-dir DESKTOP)
|
||||
src=@datadir@/applications
|
||||
|
||||
# if [[ -f $src/org.kde.konversation.desktop ]]; then
|
||||
# install -m644 $src/org.kde.konversation.desktop \
|
||||
# $xdg/org.kde.konversation.desktop
|
||||
# fi
|
||||
|
||||
if [[ -f @bindir@/calamares ]]; then
|
||||
cp -f $src/calamares.desktop "$xdg/"
|
||||
sed -i s/Icon.*=calamares/Icon=artixlinux-logo/g "$xdg"/calamares.desktop
|
||||
chmod +x "$xdg/calamares.desktop"
|
||||
fi
|
||||
|
||||
docs=@datadir@/doc/artix
|
||||
|
||||
for f in {Configuration,Troubleshooting}.pdf; do
|
||||
ln -s $docs/$f "$xdg"/$f
|
||||
done
|
||||
|
||||
if [[ -d /run/openrc ]]; then
|
||||
ln -s $docs/OpenRC.pdf "$xdg"/OpenRC.pdf
|
||||
elif [[ -d /run/runit ]]; then
|
||||
ln -s $docs/Runit.pdf "$xdg"/Runit.pdf
|
||||
elif [[ -d /run/66 ]]; then
|
||||
ln -s $docs/Suite66.pdf "$xdg"/Suite66.pdf
|
||||
elif [[ -d /run/dinit ]]; then
|
||||
ln -s $docs/Dinit.pdf "$xdg"/Dinit.pdf
|
||||
else
|
||||
ln -s $docs/S6.pdf "$xdg"/S6.pdf
|
||||
fi
|
||||
|
||||
echo "live session details: /var/log/artix-live.log" > "$xdg"/README.txt
|
8
data/66/artix-live
Normal file
8
data/66/artix-live
Normal file
@@ -0,0 +1,8 @@
|
||||
[main]
|
||||
@type = oneshot
|
||||
@version = 0.0.1
|
||||
@description = "artix-live service"
|
||||
@user = ( root )
|
||||
|
||||
[start]
|
||||
@execute = (artix-live)
|
14
data/66/pacman-init
Normal file
14
data/66/pacman-init
Normal file
@@ -0,0 +1,14 @@
|
||||
[main]
|
||||
@type = oneshot
|
||||
@description = "pacman init service"
|
||||
@version = 0.0.2
|
||||
@user = ( root )
|
||||
@extdepends = ( haveged )
|
||||
|
||||
[start]
|
||||
@execute = (
|
||||
foreground { mkdir -p /etc/pacman.d/gnupg }
|
||||
foreground { mount -t tmpfs -o size=10M,mode=0755 tmpfs /etc/pacman.d/gnupg }
|
||||
fdmove -c 2 1
|
||||
foreground { pacman-key --init }
|
||||
foreground { pacman-key --populate artix } )
|
@@ -7,6 +7,7 @@ pekwm:pekwm
|
||||
enlightenment:enlightenment_start
|
||||
Lumina-DE:start-lumina-desktop
|
||||
LXDE:lxsession
|
||||
plasma:startplasma-x11
|
||||
lxqt:lxqt-session
|
||||
pantheon:pantheon-session
|
||||
budgie-desktop:budgie-desktop
|
||||
@@ -15,4 +16,3 @@ mate:mate-session
|
||||
cinnamon:cinnamon-session-cinnamon
|
||||
xfce:startxfce4
|
||||
gnome:gnome-session
|
||||
plasma:startkde
|
||||
|
4
data/dinit/artix-live
Normal file
4
data/dinit/artix-live
Normal file
@@ -0,0 +1,4 @@
|
||||
type = scripted
|
||||
command = /usr/bin/artix-live
|
||||
restart = false
|
||||
waits-for = setup
|
5
data/dinit/pacman-init
Normal file
5
data/dinit/pacman-init
Normal file
@@ -0,0 +1,5 @@
|
||||
type = scripted
|
||||
command = /etc/dinit.d/scripts/pacman-init
|
||||
stop-command = /usr/bin/umount -l /etc/pacman.d/gnupg
|
||||
restart = false
|
||||
waits-for = setup
|
4
data/dinit/pacman-init.script
Normal file
4
data/dinit/pacman-init.script
Normal file
@@ -0,0 +1,4 @@
|
||||
#!/bin/sh
|
||||
/usr/bin/mount -t tmpfs -o size=10M,mode=0755 tmpfs /etc/pacman.d/gnupg
|
||||
/usr/bin/pacman-key --init
|
||||
/usr/bin/pacman-key --populate artix
|
@@ -3,11 +3,5 @@
|
||||
# autologin
|
||||
AUTOLOGIN=true
|
||||
|
||||
# live username
|
||||
USER_NAME=artix
|
||||
|
||||
# live password
|
||||
PASSWORD=artix
|
||||
|
||||
# live group membership
|
||||
ADDGROUPS='video,power,cdrom,network,lp,scanner,wheel'
|
||||
|
@@ -1,15 +1,17 @@
|
||||
#!/usr/bin/openrc-run
|
||||
# Copyright 2014 Aaditya Bagga (aaditya_gnulinux@zoho.com)
|
||||
# Copyright 2017-2021 The Artix Linux developers
|
||||
# Distributed under the terms of the GNU General Public License v2
|
||||
|
||||
description="LiveMedia Config Script"
|
||||
|
||||
depend() {
|
||||
need localmount
|
||||
before display-manager ly
|
||||
}
|
||||
|
||||
start() {
|
||||
ebegin "Starting artix live script"
|
||||
/usr/bin/artix-live
|
||||
eend $?
|
||||
ebegin "Starting artix live script"
|
||||
/usr/bin/artix-live
|
||||
eend $?
|
||||
}
|
@@ -12,6 +12,6 @@ depend() {
|
||||
start() {
|
||||
ebegin "Running pacman initialization"
|
||||
/usr/bin/pacman-key --init &> /dev/null
|
||||
/usr/bin/pacman-key --populate archlinux artix &> /dev/null
|
||||
/usr/bin/pacman-key --populate artix &> /dev/null
|
||||
eend $?
|
||||
}
|
@@ -1,6 +1,6 @@
|
||||
#!/bin/bash
|
||||
|
||||
. /usr/lib/rc/functions
|
||||
. @libdir@/rc/functions
|
||||
|
||||
case "$1" in
|
||||
start)
|
@@ -1,5 +1,5 @@
|
||||
#!/bin/sh
|
||||
mount -t tmpfs -o size=10M,mode=0755 tmpfs /etc/pacman.d/gnupg
|
||||
pacman-key --init 1>&2
|
||||
pacman-key --populate archlinux artix 1>&2
|
||||
pacman-key --populate artix 1>&2
|
||||
exec chpst -b pacman-init pause
|
||||
|
@@ -1,3 +0,0 @@
|
||||
#!/usr/bin/execlineb -P
|
||||
if { echo "Initializing artix live system" }
|
||||
foreground { /usr/bin/artix-live }
|
2
data/s6/artix-live/up.in
Normal file
2
data/s6/artix-live/up.in
Normal file
@@ -0,0 +1,2 @@
|
||||
#!@bindir@/execlineb -P
|
||||
exec @bindir@/artix-live
|
@@ -1,2 +0,0 @@
|
||||
artix-live
|
||||
pacman-init
|
@@ -1 +0,0 @@
|
||||
bundle
|
@@ -1 +0,0 @@
|
||||
haveged
|
@@ -1,2 +1,2 @@
|
||||
#!/usr/bin/execline -P
|
||||
#!@bindir@/execlineb -P
|
||||
umount -l /etc/pacman.d/gnupg
|
@@ -1,5 +1,5 @@
|
||||
#!/usr/bin/execlineb -P
|
||||
#!@bindir@/execlineb -P
|
||||
foreground { mkdir -p /etc/pacman.d/gnupg }
|
||||
foreground { mount -t tmpfs -o size=10M,mode=0755 tmpfs /etc/pacman.d/gnupg }
|
||||
fdmove -c 2 1
|
||||
foreground { pacman-key --init }
|
||||
foreground { pacman-key --populate archlinux artix }
|
||||
foreground { pacman-key --populate artix }
|
12
data/sysusers.in
Normal file
12
data/sysusers.in
Normal file
@@ -0,0 +1,12 @@
|
||||
# artix live user
|
||||
u @live@ 1000 - /home/@live@ /bin/bash
|
||||
|
||||
m @live@ video
|
||||
m @live@ power
|
||||
m @live@ cdrom
|
||||
m @live@ network
|
||||
m @live@ lp
|
||||
m @live@ scanner
|
||||
m @live@ wheel
|
||||
m @live@ log
|
||||
m @live@ users
|
249
lib/util-live.sh
249
lib/util-live.sh
@@ -1,22 +1,15 @@
|
||||
#!/bin/bash
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation; version 2 of the License.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#!/hint/bash
|
||||
|
||||
export LC_MESSAGES=C
|
||||
export LANG=C
|
||||
|
||||
# {{{ functions
|
||||
|
||||
kernel_cmdline(){
|
||||
for param in $(cat /proc/cmdline); do
|
||||
case "${param}" in
|
||||
$1=*) echo "${param##*=}"; return 0 ;;
|
||||
$1) return 0 ;;
|
||||
"$1") return 0 ;;
|
||||
*) continue ;;
|
||||
esac
|
||||
done
|
||||
@@ -25,86 +18,63 @@ kernel_cmdline(){
|
||||
}
|
||||
|
||||
get_lang(){
|
||||
echo $(kernel_cmdline lang)
|
||||
kernel_cmdline lang
|
||||
}
|
||||
|
||||
get_keytable(){
|
||||
echo $(kernel_cmdline keytable)
|
||||
kernel_cmdline keytable
|
||||
}
|
||||
|
||||
get_tz(){
|
||||
echo $(kernel_cmdline tz)
|
||||
}
|
||||
|
||||
load_live_config(){
|
||||
|
||||
[[ -f $1 ]] || return 1
|
||||
|
||||
local live_conf="$1"
|
||||
|
||||
[[ -r ${live_conf} ]] && source ${live_conf}
|
||||
|
||||
AUTOLOGIN=${AUTOLOGIN:-true}
|
||||
|
||||
USER_NAME=${USER_NAME:-"artix"}
|
||||
|
||||
PASSWORD=${PASSWORD:-"artix"}
|
||||
|
||||
ADDGROUPS=${ADDGROUPS:-"video,power,cdrom,network,lp,scanner,wheel,users,log"}
|
||||
|
||||
return 0
|
||||
kernel_cmdline tz
|
||||
}
|
||||
|
||||
is_valid_de(){
|
||||
if [[ ${DEFAULT_DESKTOP_EXECUTABLE} != "none" ]] && \
|
||||
[[ ${DEFAULT_DESKTOP_FILE} != "none" ]]; then
|
||||
return 0
|
||||
else
|
||||
return 1
|
||||
fi
|
||||
}
|
||||
|
||||
load_desktop_map(){
|
||||
local _space="s| ||g" _clean=':a;N;$!ba;s/\n/ /g' _com_rm="s|#.*||g" \
|
||||
file=/usr/share/artools/desktop.map
|
||||
local desktop_map=$(sed "$_com_rm" "$file" | sed "$_space" | sed "$_clean")
|
||||
echo ${desktop_map}
|
||||
return 1
|
||||
}
|
||||
|
||||
detect_desktop_env(){
|
||||
local key val map=( $(load_desktop_map) )
|
||||
local key val map
|
||||
map="${DATADIR}"/artools/desktop.map
|
||||
DEFAULT_DESKTOP_FILE="none"
|
||||
DEFAULT_DESKTOP_EXECUTABLE="none"
|
||||
for item in "${map[@]}";do
|
||||
while read -r item; do
|
||||
key=${item%:*}
|
||||
val=${item#*:}
|
||||
if [[ -f /usr/share/xsessions/$key.desktop ]] && [[ -f /usr/bin/$val ]];then
|
||||
if [[ -f "${DATADIR}"/xsessions/$key.desktop ]] && [[ -f ${BINDIR}/$val ]];then
|
||||
DEFAULT_DESKTOP_FILE="$key"
|
||||
DEFAULT_DESKTOP_EXECUTABLE="$val"
|
||||
fi
|
||||
done
|
||||
done < "$map"
|
||||
echo "Detected ${DEFAULT_DESKTOP_EXECUTABLE} ${DEFAULT_DESKTOP_FILE}" >> "${LOGFILE}"
|
||||
}
|
||||
|
||||
configure_accountsservice(){
|
||||
local path=/var/lib/AccountsService/users
|
||||
local path=/var/lib/AccountsService/users user="${1:-${LIVEUSER}}"
|
||||
if [ -d "${path}" ] ; then
|
||||
echo "[User]" > ${path}/$1
|
||||
echo "XSession=${DEFAULT_DESKTOP_FILE}" >> ${path}/$1
|
||||
if [[ -f "/var/lib/AccountsService/icons/$1.png" ]];then
|
||||
echo "Icon=/var/lib/AccountsService/icons/$1.png" >> ${path}/$1
|
||||
echo "[User]" > ${path}/"$user"
|
||||
echo "XSession=${DEFAULT_DESKTOP_FILE}" >> ${path}/"$user"
|
||||
if [[ -f "/var/lib/AccountsService/icons/$user.png" ]];then
|
||||
echo "Icon=/var/lib/AccountsService/icons/$user.png" >> ${path}/"$user"
|
||||
fi
|
||||
fi
|
||||
echo "Configured accountsservice" >> "${LOGFILE}"
|
||||
}
|
||||
|
||||
set_lightdm_greeter(){
|
||||
local greeters=$(ls /usr/share/xgreeters/*greeter.desktop) name
|
||||
for g in ${greeters[@]};do
|
||||
local name
|
||||
for g in "${DATADIR}"/xgreeters/*.desktop;do
|
||||
name=${g##*/}
|
||||
name=${name%%.*}
|
||||
case ${name} in
|
||||
lightdm-gtk-greeter) break ;;
|
||||
lightdm-*-greeter)
|
||||
sed -i -e "s/^.*greeter-session=.*/greeter-session=${name}/" /etc/lightdm/lightdm.conf
|
||||
sed -e "s/^.*greeter-session=.*/greeter-session=${name}/" \
|
||||
-i /etc/lightdm/lightdm.conf
|
||||
;;
|
||||
esac
|
||||
done
|
||||
@@ -113,53 +83,50 @@ configure_accountsservice(){
|
||||
configure_displaymanager(){
|
||||
# Try to detect desktop environment
|
||||
# Configure display manager
|
||||
if [[ -f /usr/bin/lightdm ]];then
|
||||
groupadd -r autologin
|
||||
sed -i -e 's/^.*minimum-vt=.*/minimum-vt=7/' /etc/lightdm/lightdm.conf
|
||||
set_lightdm_greeter
|
||||
if $(is_valid_de); then
|
||||
sed -i -e "s/^.*user-session=.*/user-session=$DEFAULT_DESKTOP_FILE/" /etc/lightdm/lightdm.conf
|
||||
fi
|
||||
if ${AUTOLOGIN};then
|
||||
gpasswd -a ${USER_NAME} autologin &> /dev/null
|
||||
sed -i -e "s/^.*autologin-user=.*/autologin-user=${USER_NAME}/" /etc/lightdm/lightdm.conf
|
||||
sed -i -e "s/^.*autologin-user-timeout=.*/autologin-user-timeout=0/" /etc/lightdm/lightdm.conf
|
||||
sed -i -e "s/^.*pam-autologin-service=.*/pam-autologin-service=lightdm-autologin/" /etc/lightdm/lightdm.conf
|
||||
fi
|
||||
elif [[ -f /usr/bin/gdm ]];then
|
||||
configure_accountsservice "gdm"
|
||||
if ${AUTOLOGIN};then
|
||||
sed -i -e "s/\[daemon\]/\[daemon\]\nAutomaticLogin=${USER_NAME}\nAutomaticLoginEnable=True/" /etc/gdm/custom.conf
|
||||
fi
|
||||
elif [[ -f /usr/bin/sddm ]];then
|
||||
if $(is_valid_de); then
|
||||
sed -i -e "s|^Session=.*|Session=$DEFAULT_DESKTOP_FILE.desktop|" /etc/sddm.conf
|
||||
fi
|
||||
if ${AUTOLOGIN};then
|
||||
sed -i -e "s|^User=.*|User=${USER_NAME}|" /etc/sddm.conf
|
||||
fi
|
||||
elif [[ -f /usr/bin/lxdm ]];then
|
||||
if $(is_valid_de); then
|
||||
sed -i -e "s|^.*session=.*|session=/usr/bin/${DEFAULT_DESKTOP_EXECUTABLE}|" /etc/lxdm/lxdm.conf
|
||||
fi
|
||||
if ${AUTOLOGIN};then
|
||||
sed -i -e "s/^.*autologin=.*/autologin=${USER_NAME}/" /etc/lxdm/lxdm.conf
|
||||
fi
|
||||
fi
|
||||
}
|
||||
|
||||
gen_pw(){
|
||||
echo $(perl -e 'print crypt($ARGV[0], "password")' ${PASSWORD})
|
||||
if [[ -f "${BINDIR}"/lightdm ]];then
|
||||
groupadd -r autologin
|
||||
gpasswd -a "${LIVEUSER}" autologin &> /dev/null
|
||||
set_lightdm_greeter
|
||||
if is_valid_de; then
|
||||
sed -e "s/^.*user-session=.*/user-session=$DEFAULT_DESKTOP_FILE/" \
|
||||
-e 's/^.*minimum-vt=.*/minimum-vt=7/' \
|
||||
-i /etc/lightdm/lightdm.conf
|
||||
fi
|
||||
${AUTOLOGIN} && sed -e "s/^.*autologin-user=.*/autologin-user=${LIVEUSER}/" \
|
||||
-e "s/^.*autologin-user-timeout=.*/autologin-user-timeout=0/" \
|
||||
-e "s/^.*pam-autologin-service=.*/pam-autologin-service=lightdm-autologin/" \
|
||||
-i /etc/lightdm/lightdm.conf
|
||||
elif [[ -f "${BINDIR}"/gdm ]];then
|
||||
configure_accountsservice "gdm"
|
||||
${AUTOLOGIN} && sed -e "s/\[daemon\]/\[daemon\]\nAutomaticLogin=${LIVEUSER}\nAutomaticLoginEnable=True/" \
|
||||
-i /etc/gdm/custom.conf
|
||||
elif [[ -f "${BINDIR}"/sddm ]];then
|
||||
if is_valid_de; then
|
||||
sed -e "s|^Session=.*|Session=$DEFAULT_DESKTOP_FILE.desktop|" \
|
||||
-i /etc/sddm.conf
|
||||
fi
|
||||
${AUTOLOGIN} && sed -e "s|^User=.*|User=${LIVEUSER}|" \
|
||||
-i /etc/sddm.conf
|
||||
elif [[ -f "${BINDIR}"/lxdm ]];then
|
||||
if is_valid_de; then
|
||||
sed -e "s|^.*session=.*|session=${BINDIR}/${DEFAULT_DESKTOP_EXECUTABLE}|" \
|
||||
-i /etc/lxdm/lxdm.conf
|
||||
fi
|
||||
${AUTOLOGIN} && sed -e "s/^.*autologin=.*/autologin=${LIVEUSER}/" \
|
||||
-i /etc/lxdm/lxdm.conf
|
||||
fi
|
||||
echo "Configured displaymanager" >> "${LOGFILE}"
|
||||
}
|
||||
|
||||
find_legacy_keymap(){
|
||||
local file="/usr/share/artools/kbd-model.map" kt="$1"
|
||||
local file="${DATADIR}/artools/kbd-model.map" kt="$1"
|
||||
while read -r line || [[ -n $line ]]; do
|
||||
if [[ -z $line ]] || [[ $line == \#* ]]; then
|
||||
continue
|
||||
fi
|
||||
|
||||
local mapping=( $line ); # parses columns
|
||||
local mapping=( "$line" ); # parses columns
|
||||
if [[ ${#mapping[@]} != 5 ]]; then
|
||||
continue
|
||||
fi
|
||||
@@ -175,7 +142,7 @@ find_legacy_keymap(){
|
||||
X11_LAYOUT=${mapping[1]}
|
||||
X11_MODEL=${mapping[2]}
|
||||
X11_VARIANT=${mapping[3]}
|
||||
x11_OPTIONS=${mapping[4]}
|
||||
X11_OPTIONS=${mapping[4]}
|
||||
done < $file
|
||||
}
|
||||
|
||||
@@ -201,58 +168,92 @@ write_x11_config(){
|
||||
|
||||
local XORGKBLAYOUT="/etc/X11/xorg.conf.d/00-keyboard.conf"
|
||||
|
||||
echo "" >> "$XORGKBLAYOUT"
|
||||
echo "Section \"InputClass\"" > "$XORGKBLAYOUT"
|
||||
echo " Identifier \"system-keyboard\"" >> "$XORGKBLAYOUT"
|
||||
echo " MatchIsKeyboard \"on\"" >> "$XORGKBLAYOUT"
|
||||
echo " Option \"XkbLayout\" \"$X11_LAYOUT\"" >> "$XORGKBLAYOUT"
|
||||
echo " Option \"XkbModel\" \"$X11_MODEL\"" >> "$XORGKBLAYOUT"
|
||||
echo " Option \"XkbVariant\" \"$X11_VARIANT\"" >> "$XORGKBLAYOUT"
|
||||
echo " Option \"XkbOptions\" \"$X11_OPTIONS\"" >> "$XORGKBLAYOUT"
|
||||
echo "EndSection" >> "$XORGKBLAYOUT"
|
||||
{
|
||||
echo " Identifier \"system-keyboard\""
|
||||
echo " MatchIsKeyboard \"on\""
|
||||
echo " Option \"XkbLayout\" \"$X11_LAYOUT\""
|
||||
echo " Option \"XkbModel\" \"$X11_MODEL\""
|
||||
echo " Option \"XkbVariant\" \"$X11_VARIANT\""
|
||||
echo " Option \"XkbOptions\" \"$X11_OPTIONS\""
|
||||
echo "EndSection"
|
||||
} >> "$XORGKBLAYOUT"
|
||||
}
|
||||
|
||||
configure_language(){
|
||||
# hack to be able to set the locale on bootup
|
||||
local lang=$(get_lang)
|
||||
local keytable=$(get_keytable)
|
||||
local timezone=$(get_tz)
|
||||
local lang keytable timezone
|
||||
lang=$(get_lang)
|
||||
keytable=$(get_keytable)
|
||||
timezone=$(get_tz)
|
||||
|
||||
sed -e "s/#${lang}.UTF-8/${lang}.UTF-8/" -i /etc/locale.gen
|
||||
|
||||
if [[ -d /run/openrc ]]; then
|
||||
sed -i "s/keymap=.*/keymap=\"${keytable}\"/" /etc/conf.d/keymaps
|
||||
fi
|
||||
echo "KEYMAP=${keytable}" > /etc/vconsole.conf
|
||||
echo "LANG=${lang}.UTF-8" > /etc/locale.conf
|
||||
ln -sf /usr/share/zoneinfo/${timezone} /etc/localtime
|
||||
ln -sf "${DATADIR}"/zoneinfo/"${timezone}" /etc/localtime
|
||||
|
||||
write_x11_config "${keytable}"
|
||||
|
||||
loadkeys "${keytable}"
|
||||
|
||||
locale-gen ${lang}
|
||||
echo "Configured language: ${lang}" >> "${LOGFILE}"
|
||||
echo "Configured keymap: ${keytable}" >> "${LOGFILE}"
|
||||
echo "Configured timezone: ${timezone}" >> "${LOGFILE}"
|
||||
locale-gen "${lang}"
|
||||
{
|
||||
echo "Configured language: ${lang}"
|
||||
echo "Configured keymap: ${keytable}"
|
||||
echo "Configured timezone: ${timezone}"
|
||||
echo "Finished localization"
|
||||
} >> "${LOGFILE}"
|
||||
}
|
||||
|
||||
configure_swap(){
|
||||
local swapdev="$(fdisk -l 2>/dev/null | grep swap | cut -d' ' -f1)"
|
||||
local swapdev
|
||||
swapdev="$(fdisk -l 2>/dev/null | grep swap | cut -d' ' -f1)"
|
||||
if [ -e "${swapdev}" ]; then
|
||||
swapon ${swapdev}
|
||||
swapon "${swapdev}"
|
||||
fi
|
||||
echo "Activated swap and added to fstab" >> "${LOGFILE}"
|
||||
}
|
||||
|
||||
configure_branding(){
|
||||
if [[ -f "${BINDIR}"/neofetch ]]; then
|
||||
neofetch >| /etc/issue
|
||||
echo "Configured branding" >> "${LOGFILE}"
|
||||
fi
|
||||
}
|
||||
|
||||
configure_user(){
|
||||
local user="$1"
|
||||
if [[ "$user" == 'root' ]];then
|
||||
echo "root:${PASSWORD}" | chroot / chpasswd
|
||||
cp /etc/skel/.{bash_profile,bashrc,bash_logout} /root/
|
||||
else
|
||||
local args=(-m -G ${ADDGROUPS} -s /bin/bash $user)
|
||||
# set up user and password
|
||||
[[ -n ${PASSWORD} ]] && args+=(-p $(gen_pw))
|
||||
useradd "${args[@]}"
|
||||
fi
|
||||
echo "root:${PASSWORD}" | chroot / chpasswd
|
||||
cp /etc/skel/.{bash_profile,bashrc,bash_logout} /root/
|
||||
|
||||
mkdir /home/${LIVEUSER}
|
||||
chown ${LIVEUSER}:${LIVEUSER} /home/${LIVEUSER}
|
||||
echo "${LIVEUSER}:${PASSWORD}" | chroot / chpasswd
|
||||
cp -r /etc/skel/.[^.]* /home/${LIVEUSER}
|
||||
chown -R ${LIVEUSER}:${LIVEUSER} /home/${LIVEUSER}
|
||||
echo "Configured live user ${LIVEUSER} with password ${PASSWORD}" >> "${LOGFILE}"
|
||||
}
|
||||
|
||||
# }}}
|
||||
|
||||
|
||||
load_live_config(){
|
||||
|
||||
[[ -f $1 ]] || return 1
|
||||
|
||||
local live_conf="$1"
|
||||
|
||||
[[ -r "${live_conf}" ]] && source "${live_conf}"
|
||||
|
||||
AUTOLOGIN=${AUTOLOGIN:-true}
|
||||
|
||||
PASSWORD=${PASSWORD:-artix}
|
||||
|
||||
return 0
|
||||
}
|
||||
|
||||
load_live_config "@sysconfdir@/artools/live.conf" || load_live_config "@datadir@/artools/live.conf"
|
||||
|
||||
LIVEUSER=@live@
|
||||
DATADIR=@datadir@
|
||||
BINDIR=@bindir@
|
||||
|
Reference in New Issue
Block a user