86 Commits
0.2 ... 0.12.2

Author SHA1 Message Date
65c79b931c 0.12.2 2022-01-08 08:25:34 +07:00
19fae52dc0 0.12.1 2022-01-08 08:20:23 +07:00
1f62798998 dinit: use live.d for live services 2022-01-08 08:19:29 +07:00
231acc723b rc: use a display-manager provide 2022-01-04 18:04:25 +01:00
dafee38770 Update 'bin/desktop-items.in' 2021-12-31 20:59:30 +01:00
91f8c5d64a s6: minor cleanups
The "live" bundle is pointless and superfluous. Remove it. Also, the
pacman-init up oneshot had a useless fdmove line in it. Remove that as
well.
2021-12-30 18:02:30 -06:00
0bff2c5715 complete list 2021-12-31 00:14:12 +02:00
88ebe2ee63 openrc: start before display manager 2021-12-30 23:12:40 +02:00
d253e889c5 0.12 2021-12-22 02:32:57 +02:00
71cb6715a5 add dinit 2021-12-22 02:21:01 +02:00
a4c443b658 0.11.3 2021-11-05 23:53:40 +07:00
a1c122c058 Merge pull request 'add initial support for dinit' (#10) from konimex/live-services:master into master
Reviewed-on: artix/live-services#10
2021-11-05 16:34:25 +01:00
bea63084ab add initial support for dinit 2021-10-27 17:02:51 +07:00
83b9a674a8 0.11.2 2021-10-20 14:10:14 +03:00
26ffee5d7c Merge pull request 'fix suite66 pdf' (#9) from nous/live-services:master into master
Reviewed-on: artix/live-services#9
2021-10-20 13:01:51 +02:00
8c3a81d0ee fix suite66 pdf 2021-10-20 13:00:23 +02:00
91b23a5265 remove archlinux keyring 2021-07-12 00:05:56 +02:00
aa58c995eb Add haveged depends 2021-05-03 01:18:36 +02:00
68b91bc6ec Merge pull request 'Add 66 to Makefile' (#8) from ndowens/live-services:master into master
Reviewed-on: artix/live-services#8
2021-04-30 01:33:15 +02:00
e3c3b5d9a5 Add 66 to Makefile 2021-04-29 17:33:08 -05:00
edaf1d8c0b Merge pull request 'Add 66 services' (#7) from ndowens/live-services:master into master
Reviewed-on: artix/live-services#7
2021-04-30 00:05:48 +02:00
3d97503604 Add 66 services 2021-04-29 17:01:33 -05:00
e9e2ec9d9e live (#6)
set service paths via make

use more make vars

fix session & desktop detection

move liveuser declare

shellcheck

update sysusers

make the live user configurable with make

cleanup log

properly copy user skel

create live home

add sysusers file

refactor

v0.10

update live.conf

artix-live: remove some config

use m4_include()

Reviewed-on: artix/live-services#6
Co-Authored-By: artoo <artoo@artixlinux.org>
Co-Committed-By: artoo <artoo@artixlinux.org>
2021-01-08 19:48:44 +01:00
320dc22775 I am stupid 2020-11-29 01:44:05 +02:00
759f8236f1 Merge branch 'master' of https://gitea.artixlinux.org/artix/live-services 2020-11-27 15:56:48 +02:00
51017c4789 change calamares icon in i18n 2020-11-27 15:56:27 +02:00
9fafba1f67 change order of plasma, to fix community-qt default DE 2020-11-25 16:25:13 +01:00
1bb3f828fe force copy just in case 2020-11-24 17:39:34 +02:00
76618b8ffe fix calamares not shown correctly in MATE and Cinnamon 2020-11-24 17:37:00 +02:00
b0accd6320 fix i18n symlinking and reinstate calamares 2020-11-22 02:56:01 +02:00
186c4cc944 check for neofetch 2020-07-26 16:29:42 +02:00
36b3def4df Merge pull request 'set branding' (#4) from neo into master 2020-07-26 16:27:49 +02:00
bff662b2bb remeove s6 pacman-init dependencies file 2020-07-26 16:26:06 +02:00
6a830fd09e Merge pull request 'pacman-init: make sure /etc/pacman.d/gnupg exists' (#5) from s6-fix into master 2020-03-21 19:49:51 +01:00
53738530d9 add s6.pdf 2020-02-08 22:51:05 +01:00
2008d08da2 update desktop.map 2020-02-08 18:34:02 +01:00
f1a229a2b2 pacman-init: make sure /etc/pacman.d/gnupg exists
Noticed that this directory may not exist so the mount fails.
2020-01-17 22:33:28 -06:00
8163c1574f set branding 2019-12-23 21:23:28 +01:00
61bc0ee372 Merge branch 'master' of gitea.artixlinux.org:artix/live-services 2019-12-12 00:09:34 +01:00
dd34bf3df9 create user early to make autologin work 2019-12-12 00:09:29 +01:00
36614abf6a Add xdg-user-dirs-update --force to catch race condition in
MATE
2019-12-09 17:59:45 +02:00
96cc41dcde remove potable efi helper 2019-11-17 00:48:35 +01:00
b2d2877df9 fix datadir 2019-10-30 19:53:59 +01:00
d051f3f73b Makefile: install s6 2019-10-28 22:19:46 +01:00
90bb86cec1 Merge branch 's6-support-branch' of artix/live-services into master 2019-10-28 22:01:39 +01:00
e9e0e0be8f Create a bundle for artix-live and pacman-init 2019-10-28 15:56:29 -05:00
82e6b1edea Merge branch 's6-support-branch' of artix/live-services into master 2019-10-28 21:36:09 +01:00
bea5c4dfd6 s6 update 2019-10-28 09:22:10 -05:00
a3751e733b rename rc services 2019-10-02 00:53:19 +02:00
88cae232da initial s6 support 2019-10-02 00:31:46 +02:00
3861ade296 update 2019-01-06 03:41:03 +01:00
20401b1e4f util-live: update load_live_config() 2019-01-06 03:39:33 +01:00
a5920b81da clean up 2019-01-03 22:38:07 +01:00
5a1bddf043 start 0.8 2019-01-03 22:30:16 +01:00
c24367f987 * start 0.7
* capitalize glibal vars
2018-10-21 17:32:36 +02:00
0ccfdbfc21 fix readme path 2018-10-07 22:12:02 +02:00
c30cd6999b prepare release 2018-10-07 20:45:11 +02:00
e5b37014d0 try to fix calamares launcher 2018-10-07 14:05:33 +02:00
96ae6855ac desktop-items: fix konversation 2018-10-06 14:18:40 +02:00
22014421b1 fix konversation typo 2018-10-05 21:42:29 +02:00
ccebe7ecf3 symlink docs to localized desktop dir 2018-10-05 10:01:06 +02:00
7557a84a7d clean up; remove old code 2018-10-05 00:10:04 +02:00
712774d585 create desktop launchers 2018-10-04 23:53:55 +02:00
ef98a333ca rm netinstall 2018-10-02 22:18:26 +02:00
udeved
7727ce662e fix runit live sym 2018-05-14 16:59:29 +00:00
udeved
b841184cb2 fix runit live sym 2018-05-14 16:56:44 +00:00
udeved
528b3091c6 Merge branch 'master' of github.com:artix-linux/live-services 2018-05-14 16:50:45 +00:00
udeved
ffb4f4ba98 update runit live for runit-rc 2018-05-14 16:50:22 +00:00
udeved
64fe174eba update runit live for runit-rc 2018-05-14 16:40:37 +00:00
udeved
dc955770b3 makefile: small fix 2018-04-14 18:40:06 +02:00
udeved
004760e16a mkaefile: fix datadir path 2018-04-14 16:48:18 +02:00
bb1f0fbdc0 reflect the new runit service directory 2018-04-14 08:49:23 +07:00
udeved
f879bf8965 start 0.5 2018-04-11 21:12:10 +02:00
udeved
7e93c77b9a makefile: fix uninstall 2018-04-11 19:24:17 +02:00
8832d21deb change pacman-init directory to reflect new scheme 2018-04-09 10:58:20 +07:00
189ceeb7e7 Move pacman-init to a service on its own 2018-02-17 13:12:39 +07:00
9c6b20fea3 Fix typo 2018-02-17 12:00:58 +07:00
9a514cc3ca Add initial runit support for artix-live 2018-02-15 12:21:20 +07:00
udeved
4f3899f6c6 util-live: fix load_desktop_map() 2017-12-19 16:28:33 +01:00
udeved
0efd3bdfa9 rename unoack to netinstall kernel param; grub now has a selection menu entry 2017-12-19 15:30:46 +01:00
udeved
f5d07a597f util-live: fix unpackfs paths 2017-12-18 13:16:51 +01:00
udeved
c48893ded2 artix-live: add option to configure calamares with a unpack=yes/no kernel parameter 2017-12-14 20:28:10 +01:00
udeved
781f6de35a rm machine-id config 2017-10-02 09:24:47 +02:00
udeved
6131156806 reactivate machine-id config 2017-10-01 21:59:18 +02:00
udeved
c9fbed1f2d pacman-init: use artix keyring 2017-08-06 21:28:21 +02:00
udeved
0ec222726b remove useless vars and code 2017-07-28 02:42:09 +02:00
26 changed files with 445 additions and 422 deletions

View File

@@ -1,6 +1,6 @@
BSD 2-Clause License
Copyright (c) 2017, Cromnix GNU/Linux
Copyright (c) 2018-2021, Artix Linux
All rights reserved.
Redistribution and use in source and binary forms, with or without

155
Makefile
View File

@@ -1,13 +1,23 @@
Version=0.1
VERSION = 0.12.2
PKG = live-services
TOOLS = artools
PREFIX = /usr/local
SYSCONFDIR = /etc
PREFIX ?= /usr
BINDIR = $(PREFIX)/bin
LIBDIR = $(PREFIX)/lib
DATADIR = $(PREFIX)/share
SYSUSERSDIR = $(PREFIX)/lib/sysusers.d
LIVEUSER ?= artix
FMODE = -m0644
DMODE = -dm0755
BMODE = -m0755
BIN = \
bin/artix-live
LIBS = $(wildcard lib/*.sh)
SHARED = \
$(wildcard data/*.map) \
data/live.conf
@@ -17,67 +27,122 @@ RC = \
data/rc/pacman-init \
data/rc/artix-live
GRUB_DEFAULT = \
data/grub2-portable-efi
RUNIT_SVD = \
data/runit/live
GRUB_D = \
data/99_zzz-portable-efi
RUNIT_SV = \
data/runit/pacman-init.run
all: $(BIN) $(RC) $(XBIN) ${GRUB_D}
S6_LIVE = \
data/s6/artix-live/up \
data/s6/artix-live/type
edit = sed -e "s|@datadir[@]|$(DESTDIR)$(PREFIX)/share/artools|g" \
-e "s|@sysconfdir[@]|$(DESTDIR)$(SYSCONFDIR)/artools|g" \
-e "s|@libdir[@]|$(DESTDIR)$(PREFIX)/lib/artools|g"
S6_PI = \
data/s6/pacman-init/type \
data/s6/pacman-init/up \
data/s6/pacman-init/down
%: %.in Makefile
66_LIVE = \
data/66/artix-live
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) "$@"
@m4 -P $@.in | $(edit) >$@
@chmod a-w "$@"
@chmod +x "$@"
@{ echo -n 'm4_changequote([[[,]]])'; cat $@.in; } | $(M4) | $(EDIT) >$@
@$(CHMODAW) "$@"
@$(CHMODX) "$@"
@bash -O extglob -n "$@"
clean:
rm -f $(BIN) $(RC) ${GRUB_D}
$(RM) $(BIN) $(SYSUSERS) $(XBIN) $(RC) $(RUNIT_SVD) $(S6_PI) $(S6_LIVE)
install_base:
install -dm0755 $(DESTDIR)$(PREFIX)/bin
install -m0755 ${BIN} $(DESTDIR)$(PREFIX)/bin
install $(DMODE) $(DESTDIR)$(BINDIR)
install $(BMODE) $(BIN) $(DESTDIR)$(BINDIR)
install -dm0755 $(DESTDIR)$(PREFIX)/lib/artools
install -m0644 ${LIBS} $(DESTDIR)$(PREFIX)/lib/artools
install $(DMODE) $(DESTDIR)$(SYSUSERSDIR)
install $(FMODE) $(SYSUSERS) $(DESTDIR)$(SYSUSERSDIR)/live-artix.conf
install -dm0755 $(DESTDIR)$(PREFIX)/share/artools
install -m0644 ${SHARED} $(DESTDIR)$(PREFIX)/share/artools
install $(DMODE) $(DESTDIR)$(DATADIR)/$(TOOLS)
install $(FMODE) $(SHARED) $(DESTDIR)$(DATADIR)/$(TOOLS)
install_rc:
install -dm0755 $(DESTDIR)$(SYSCONFDIR)/init.d
install -m0755 ${RC} $(DESTDIR)$(SYSCONFDIR)/init.d
install $(DMODE) $(DESTDIR)$(SYSCONFDIR)/init.d
install $(BMODE) $(RC) $(DESTDIR)$(SYSCONFDIR)/init.d
install_portable_efi:
install -dm0755 $(DESTDIR)$(SYSCONFDIR)/default
install -m0755 $(GRUB_DEFAULT) $(DESTDIR)$(SYSCONFDIR)/default
install_runit:
install $(DMODE) $(DESTDIR)$(SYSCONFDIR)/rc/sysinit
install $(DMODE) $(DESTDIR)$(LIBDIR)/rc/sv.d
install -dm0755 $(DESTDIR)$(SYSCONFDIR)/grub.d
install -m0755 $(GRUB_D) $(DESTDIR)$(SYSCONFDIR)/grub.d
install $(BMODE) $(RUNIT_SVD) $(DESTDIR)$(LIBDIR)/rc/sv.d
ln -sf $(LIBDIR)/rc/sv.d/live $(DESTDIR)$(SYSCONFDIR)/rc/sysinit/98-live
uninstall_base:
for f in ${BIN}; do rm -f $(DESTDIR)$(PREFIX)/bin/$$f; done
for f in ${SHARED}; do rm -f $(DESTDIR)$(PREFIX)/share/artools/$$f; done
for f in ${LIBS}; do rm -f $(DESTDIR)$(PREFIX)/lib/artools/$$f; done
install $(DMODE) $(DESTDIR)$(SYSCONFDIR)/runit/sv/pacman-init
install $(BMODE) $(RUNIT_SV) $(DESTDIR)$(SYSCONFDIR)/runit/sv/pacman-init/run
uninstall_portable_efi:
for f in ${GRUB_DEFAULT}; do rm -f $(DESTDIR)$(SYSCONFDIR)/default/$$f; done
for f in ${GRUB_D}; do rm -f $(DESTDIR)$(SYSCONFDIR)/grub.d/$$f; done
install_s6:
install $(DMODE) $(DESTDIR)$(SYSCONFDIR)/s6/sv
uninstall_rc:
for f in ${RC}; do rm -f $(DESTDIR)$(SYSCONFDIR)/init.d/$$f; done
install $(DMODE) $(DESTDIR)$(SYSCONFDIR)/s6/sv/pacman-init
install $(BMODE) $(S6_PI) $(DESTDIR)$(SYSCONFDIR)/s6/sv/pacman-init/
install: install_base install_rc install_portable_efi
install $(DMODE) $(DESTDIR)$(SYSCONFDIR)/s6/sv/artix-live
install $(BMODE) $(S6_LIVE) $(DESTDIR)$(SYSCONFDIR)/s6/sv/artix-live/
uninstall: uninstall_base uninstall_rc uninstall_portable_efi
install_66:
install $(DMODE) $(DESTDIR)$(SYSCONFDIR)/66/service
dist:
git archive --format=tar --prefix=live-services-$(Version)/ $(Version) | gzip -9 > live-services-$(Version).tar.gz
gpg --detach-sign --use-agent live-services-$(Version).tar.gz
install $(FMODE) $(66_LIVE) $(DESTDIR)$(SYSCONFDIR)/66/service/artix-live
install $(FMODE) $(66_PI) $(DESTDIR)$(SYSCONFDIR)/66/service/pacman-init
.PHONY: all clean install uninstall dist
install_dinit:
install $(DMODE) $(DESTDIR)$(SYSCONFDIR)/dinit.d/scripts
install $(DMODE) $(DESTDIR)$(SYSCONFDIR)/dinit.d/live.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/live.d
ln -s ../pacman-init $(DESTDIR)$(SYSCONFDIR)/dinit.d/live.d
install_xdg:
install -dm0755 $(DESTDIR)$(PREFIX)/bin
install -m0755 ${XBIN} $(DESTDIR)$(PREFIX)/bin
install -dm0755 $(DESTDIR)$(SYSCONFDIR)/skel/.config/autostart
install -m0755 ${XDG} $(DESTDIR)$(SYSCONFDIR)/skel/.config/autostart
install: install_base install_rc install_runit install_s6 install_xdg
.PHONY: install

View File

@@ -1 +1 @@
# live-services
# live-services

View File

@@ -1,58 +1,23 @@
#!/bin/sh
#!/bin/bash
LIBDIR='@libdir@'
DATADIR='@datadir@'
SYSCONFDIR='@sysconfdir@'
LOGFILE='/var/log/cromnix-live.log'
m4_include(lib/util-live.sh)
export LC_MESSAGES=C
export LANG=C
LOGFILE='/var/log/artix-live.log'
livetimer=$(date +%s%3N)
[[ -r ${LIBDIR}/util-live.sh ]] && source ${LIBDIR}/util-live.sh
load_live_config "${SYSCONFDIR}/live.conf" || load_live_config "${DATADIR}/live.conf"
livetimer=$(get_timer_ms)
detect_desktop_env
echo "Detected ${default_desktop_executable} ${default_desktop_file}: $(elapsed_time_ms ${livetimer})ms" >> "${LOGFILE}"
livetimer=$(get_timer_ms)
CONSOLEFONT="$(kernel_cmdline vconsole.font)"
CONSOLEMAP="$(kernel_cmdline vconsole.font.map)"
arch=$(uname -m)
echo "Got consolefont and arch $arch: $(elapsed_time_ms ${livetimer})ms" >> "${LOGFILE}"
#echo "Got consolefont ${CONSOLEFONT} and consolemap ${CONSOLEMAP}" >> "${LOGFILE}"
# Activate swap
livetimer=$(get_timer_ms)
configure_swap
echo "Activated swap and added to fstab: $(elapsed_time_ms ${livetimer})ms" >> "${LOGFILE}"
livetimer=$(get_timer_ms)
configure_language
echo "Finished localization: $(elapsed_time_ms ${livetimer})ms" >> "${LOGFILE}"
livetimer=$(get_timer_ms)
configure_user
echo "Created user ${username} with password ${password}: $(elapsed_time_ms ${livetimer})ms" >> "${LOGFILE}"
livetimer=$(get_timer_ms)
configure_sudoers_d
echo "Configured sudoers: $(elapsed_time_ms ${livetimer})ms" >> "${LOGFILE}"
detect_desktop_env
livetimer=$(get_timer_ms)
configure_machine_id
echo "Configured machine-id: $(elapsed_time_ms ${livetimer})ms" >> "${LOGFILE}"
configure_accountsservice
livetimer=$(get_timer_ms)
configure_accountsservice "${username}"
echo "Configured accountsservice: $(elapsed_time_ms ${livetimer})ms" >> "${LOGFILE}"
livetimer=$(get_timer_ms)
configure_displaymanager
echo "Configured displaymanager: $(elapsed_time_ms ${livetimer})ms" >> "${LOGFILE}"
livetimer=$(get_timer_ms)
configure_user_root /
echo "Configured root user: $(elapsed_time_ms ${livetimer})ms" >> "${LOGFILE}"
configure_branding

39
bin/desktop-items.in Normal file
View 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
View 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
View 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 } )

View File

@@ -1,49 +0,0 @@
#!/bin/sh
# grub-mkconfig helper script.
#
# Copyright © 2014 Niall Walsh <niallwalsh@celtux.org>
#
# 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; either version 2
# of the License, or (at your option) any later version.
#
# 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.
set -e
AT_EFI_STANDALONE=""
AT_EFI_PORTABLE_PATH="/boot/efi/EFI/BOOT"
# override tool behaviour through /etc/default/grub2-fll-standalone
if [ -r /etc/default/grub2-portable-efi ]; then
. /etc/default/grub2-portable-efi
fi
patt='[[:space:]]-o[[:space:]]\+/boot/grub/grub.cfg'
# do nothing if disabled or grub-mkconfig is generating /boot/grub/grub.cfg
( [ "${AT_EFI_STANDALONE}" != "disable" ] && \
ps x | grep 'grub-mkconfig[[:space:]]' | grep -q -e "${patt}[[:space:]]" -e "${patt}$" ) || exit
beeb="${AT_EFI_PORTABLE_PATH}"
if [ -e "${beeb}" ]; then
# do not do anything to a beeb we didn't create
[ ! -e "${beeb}/fullstory" ] && exit
else
# create beeb and mark it as ours
mkdir -p "${beeb}"
touch "${beeb}/fullstory"
fi
for platform in i386-efi x86_64-efi ; do
filename="bootx64"
[ "${platform}" = "i386-efi" ] && filename="bootia32"
[ -e /usr/lib/grub/${platform} ] && grub-mkstandalone \
-o ${beeb}/${filename}.efi --compress=xz -O ${platform} \
/boot/grub/grub.cfg=/boot/grub/grub.cfg.new 2>&1 > /dev/null
done

View File

@@ -4,15 +4,15 @@ jwm:jwm
i3:i3
fluxbox:startfluxbox
pekwm:pekwm
plasma:startkde
gnome:gnome-session
xfce:startxfce4
cinnamon:cinnamon-session-cinnamon
mate:mate-session
enlightenment:enlightenment_start
Lumina-DE:start-lumina-desktop
LXDE:lxsession
plasma:startplasma-x11
lxqt:lxqt-session
pantheon:pantheon-session
budgie-desktop:budgie-desktop
deepin:startdde
Lumina-DE:start-lumina-desktop
mate:mate-session
cinnamon:cinnamon-session-cinnamon
xfce:startxfce4
gnome:gnome-session

4
data/dinit/artix-live Normal file
View File

@@ -0,0 +1,4 @@
type = scripted
command = /usr/bin/artix-live
restart = false
waits-for = setup

5
data/dinit/pacman-init Normal file
View 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

View 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

View File

@@ -1,15 +0,0 @@
# Defaults for grub2-portable-efi update-grub helper
# sourced by grub2's update-grub
# installed at /etc/default/grub2-portable-efi by the maintainer scripts
#
# This is a POSIX shell fragment
#
# specify is this should be disabled (set to "disable")
# default:
#AT_EFI_STANDALONE=""
# specify where to install the portable efi
# default: /boot/efi/EFI/BOOT
#AT_EFI_PORTABLE_PATH="/boot/efi/EFI/BOOT"

View File

@@ -1,26 +1,7 @@
# live session configuration
# autologin
autologin=true
# login shell
login_shell=/bin/bash
# live username
username=cromnix
AUTOLOGIN=true
# live password
password=cromnix
# live group membership
addgroups='video,power,disk,storage,optical,network,lp,scanner,wheel'
# iso name
iso_name=cromnix
# default_desktop_file
default_desktop_file=lxqt
# default_desktop_executable
default_desktop_executable=lxqt-session
PASSWORD=artix

View File

@@ -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 $?
}

View File

@@ -1,5 +1,5 @@
#!/usr/bin/openrc-run
# Copyright 2015 artoo (artoo@cromnix.org)
# Copyright 2019 artoo (artoo@artixlinux.org)
# Distributed under the terms of the GNU General Public License v2
target_dir=/etc/pacman.d/gnupg

View File

@@ -12,6 +12,6 @@ depend() {
start() {
ebegin "Running pacman initialization"
/usr/bin/pacman-key --init &> /dev/null
/usr/bin/pacman-key --populate archlinux cromnix &> /dev/null
/usr/bin/pacman-key --populate artix &> /dev/null
eend $?
}

15
data/runit/live.in Normal file
View File

@@ -0,0 +1,15 @@
#!/bin/bash
. @libdir@/rc/functions
case "$1" in
start)
stat_busy "Initializing artix live system"
artix-live #|| stat_die
add_daemon live
stat_done
;;
*)
echo "usage: $0 {start}"
;;
esac

View File

@@ -0,0 +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 artix 1>&2
exec chpst -b pacman-init pause

View File

@@ -0,0 +1 @@
oneshot

2
data/s6/artix-live/up.in Normal file
View File

@@ -0,0 +1,2 @@
#!@bindir@/execlineb -P
exec @bindir@/artix-live

View File

@@ -0,0 +1,2 @@
#!@bindir@/execlineb -P
umount -l /etc/pacman.d/gnupg

View File

@@ -0,0 +1 @@
oneshot

View File

@@ -0,0 +1,5 @@
#!@bindir@/execlineb -P
foreground { mkdir -p /etc/pacman.d/gnupg }
foreground { mount -t tmpfs -o size=10M,mode=0755 tmpfs /etc/pacman.d/gnupg }
foreground { pacman-key --init }
foreground { pacman-key --populate artix }

12
data/sysusers.in Normal file
View 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

View File

@@ -1,302 +1,259 @@
#!/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 ;;
*) continue ;;
esac
done
[ -n "${2}" ] && echo "${2}"
return 1
for param in $(cat /proc/cmdline); do
case "${param}" in
$1=*) echo "${param##*=}"; return 0 ;;
"$1") return 0 ;;
*) continue ;;
esac
done
[ -n "${2}" ] && echo "${2}"
return 1
}
get_lang(){
echo $(kernel_cmdline lang)
kernel_cmdline lang
}
get_keytable(){
echo $(kernel_cmdline keytable)
kernel_cmdline keytable
}
get_tz(){
echo $(kernel_cmdline tz)
}
get_timer_ms(){
echo $(date +%s%3N)
}
# $1: start timer
elapsed_time_ms(){
echo $(echo $1 $(get_timer_ms) | awk '{ printf "%0.3f",($2-$1)/1000 }')
}
load_live_config(){
[[ -f $1 ]] || return 1
live_conf="$1"
[[ -r ${live_conf} ]] && source ${live_conf}
[[ -z ${autologin} ]] && autologin=true
[[ -z ${username} ]] && username="cromnix"
[[ -z ${password} ]] && password="cromnix"
[[ -z ${addgroups} ]] && addgroups=""
[[ -z ${login_shell} ]] && login_shell="/bin/bash"
echo "Loaded ${live_conf}: $(elapsed_time_ms ${livetimer})ms" >> "${LOGFILE}"
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=${DATADIR}/desktop.map
local desktop_map=$(sed "$_com_rm" "$file" \
| sed "$_space" \
| sed "$_clean")
echo ${desktop_map}
if [[ ${DEFAULT_DESKTOP_EXECUTABLE} != "none" ]] && \
[[ ${DEFAULT_DESKTOP_FILE} != "none" ]]; then
return 0
fi
return 1
}
detect_desktop_env(){
local xs=/usr/share/xsessions ex=/usr/bin key val map=( $(load_desktop_map) )
default_desktop_file="none"
default_desktop_executable="none"
for item in "${map[@]}";do
local key val map
map="${DATADIR}"/artools/desktop.map
DEFAULT_DESKTOP_FILE="none"
DEFAULT_DESKTOP_EXECUTABLE="none"
while read -r item; do
key=${item%:*}
val=${item#*:}
if [[ -f $xs/$key.desktop ]] && [[ -f $ex/$val ]];then
default_desktop_file="$key"
default_desktop_executable="$val"
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
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
fi
fi
local path=/var/lib/AccountsService/users user="${1:-${LIVEUSER}}"
if [ -d "${path}" ] ; then
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
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
;;
esac
done
}
set_lightdm_vt(){
sed -i -e 's/^.*minimum-vt=.*/minimum-vt=7/' /etc/lightdm/lightdm.conf
local name
for g in "${DATADIR}"/xgreeters/*.desktop;do
name=${g##*/}
name=${name%%.*}
case ${name} in
lightdm-gtk-greeter) break ;;
lightdm-*-greeter)
sed -e "s/^.*greeter-session=.*/greeter-session=${name}/" \
-i /etc/lightdm/lightdm.conf
;;
esac
done
}
configure_displaymanager(){
# Try to detect desktop environment
# Configure display manager
if [[ -f /usr/bin/lightdm ]];then
groupadd -r autologin
set_lightdm_vt
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 ${username} autologin &> /dev/null
sed -i -e "s/^.*autologin-user=.*/autologin-user=${username}/" /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=${username}\nAutomaticLoginEnable=True/" /etc/gdm/custom.conf
fi
elif [[ -f /usr/bin/mdm ]];then
if $(is_valid_de); then
sed -i "s|default.desktop|$default_desktop_file.desktop|g" /etc/mdm/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=${username}|" /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=${username}/" /etc/lxdm/lxdm.conf
fi
fi
}
# Try to detect desktop environment
# Configure display manager
gen_pw(){
echo $(perl -e 'print crypt($ARGV[0], "password")' ${password})
}
configure_user(){
# set up user and password
if [[ -n ${password} ]];then
useradd -m -G ${addgroups} -p $(gen_pw) -s ${login_shell} ${username}
else
useradd -m -G ${addgroups} -s ${login_shell} ${username}
fi
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="${DATADIR}/kbd-model.map"
while read -r line || [[ -n $line ]]; do
if [[ -z $line ]] || [[ $line == \#* ]]; then
continue
fi
local file="${DATADIR}/artools/kbd-model.map" kt="$1"
while read -r line || [[ -n $line ]]; do
if [[ -z $line ]] || [[ $line == \#* ]]; then
continue
fi
mapping=( $line ); # parses columns
if [[ ${#mapping[@]} != 5 ]]; then
continue
fi
local mapping=( "$line" ); # parses columns
if [[ ${#mapping[@]} != 5 ]]; then
continue
fi
if [[ "${keytable}" != "${mapping[0]}" ]]; then
continue
fi
if [[ "$kt" != "${mapping[0]}" ]]; then
continue
fi
if [[ "${mapping[3]}" = "-" ]]; then
mapping[3]=""
fi
if [[ "${mapping[3]}" == "-" ]]; then
mapping[3]=""
fi
X11_LAYOUT=${mapping[1]}
X11_MODEL=${mapping[2]}
X11_VARIANT=${mapping[3]}
x11_OPTIONS=${mapping[4]}
done < $file
X11_LAYOUT=${mapping[1]}
X11_MODEL=${mapping[2]}
X11_VARIANT=${mapping[3]}
X11_OPTIONS=${mapping[4]}
done < $file
}
write_x11_config(){
# find a x11 layout that matches the keymap
# in isolinux if you select a keyboard layout and a language that doesnt match this layout,
# it will provide the correct keymap, but not kblayout value
local X11_LAYOUT=
local X11_MODEL="pc105"
local X11_VARIANT=""
local X11_OPTIONS="terminate:ctrl_alt_bksp"
# find a x11 layout that matches the keymap
# in isolinux if you select a keyboard layout and a language that doesnt match this layout,
# it will provide the correct keymap, but not kblayout value
local X11_LAYOUT=
local X11_MODEL="pc105"
local X11_VARIANT=""
local X11_OPTIONS="terminate:ctrl_alt_bksp"
local kt="$1"
find_legacy_keymap
find_legacy_keymap "$kt"
# layout not found, use KBLAYOUT
if [[ -z "$X11_LAYOUT" ]]; then
X11_LAYOUT="${keytable}"
fi
# layout not found, use KBLAYOUT
if [[ -z "$X11_LAYOUT" ]]; then
X11_LAYOUT="$kt"
fi
# create X11 keyboard layout config
mkdir -p "/etc/X11/xorg.conf.d"
# create X11 keyboard layout config
mkdir -p "/etc/X11/xorg.conf.d"
local XORGKBLAYOUT="/etc/X11/xorg.conf.d/00-keyboard.conf"
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 "Section \"InputClass\"" > "$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 lang keytable timezone
lang=$(get_lang)
keytable=$(get_keytable)
local timezone=$(get_tz)
# Fallback
# [[ -z "${lang}" ]] && lang="en_US"
# [[ -z "${keytable}" ]] && keytable="us"
# [[ -z "${timezone}" ]] && timezone="Etc/UTC"
timezone=$(get_tz)
sed -e "s/#${lang}.UTF-8/${lang}.UTF-8/" -i /etc/locale.gen
# echo "LANG=${lang}.UTF-8" >> /etc/environment
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
write_x11_config "${keytable}"
loadkeys "${keytable}"
locale-gen ${lang}
echo "Configured language: ${lang}" >> "${LOGFILE}"
echo "Configured keymap: ${keytable}" >> "${LOGFILE}"
echo "Configured timezone: ${timezone}" >> "${LOGFILE}"
}
configure_machine_id(){
if [ -e "/etc/machine-id" ] ; then
# delete existing machine-id
echo "Deleting existing machine-id ..." >> "${LOGFILE}"
rm /etc/machine-id
fi
# set unique machine-id
echo "Setting machine-id ..." >> "${LOGFILE}"
dbus-uuidgen --ensure=/etc/machine-id
ln -sf /etc/machine-id /var/lib/dbus/machine-id
}
configure_sudoers_d(){
echo "%wheel ALL=(ALL) NOPASSWD: ALL" > /etc/sudoers.d/g_wheel
echo "root ALL=(ALL) ALL" > /etc/sudoers.d/u_root
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)"
if [ -e "${swapdev}" ]; then
swapon ${swapdev}
fi
local swapdev
swapdev="$(fdisk -l 2>/dev/null | grep swap | cut -d' ' -f1)"
if [ -e "${swapdev}" ]; then
swapon "${swapdev}"
fi
echo "Activated swap and added to fstab" >> "${LOGFILE}"
}
configure_user_root(){
# set up root password
echo "root:${password}" | chroot $1 chpasswd
cp /etc/skel/.{bash_profile,bashrc,bash_logout} /root/
configure_branding(){
if [[ -f "${BINDIR}"/neofetch ]]; then
neofetch >| /etc/issue
echo "Configured branding" >> "${LOGFILE}"
fi
}
configure_user(){
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@