├── .github └── workflows │ └── main.yml ├── .gitignore ├── README.md ├── build-iso-docker.sh ├── build-iso.sh ├── chimeraos ├── airootfs │ ├── etc │ │ ├── NetworkManager │ │ │ └── conf.d │ │ │ │ └── 00-disable-rand-mac.conf │ │ ├── hostname │ │ ├── locale.conf │ │ ├── localtime │ │ ├── mkinitcpio.conf │ │ ├── mkinitcpio.d │ │ │ └── linux-chimeraos.preset │ │ ├── modprobe.d │ │ │ ├── broadcom-wl.conf │ │ │ ├── rz608.conf │ │ │ └── xpad.conf │ │ ├── motd │ │ ├── os-release │ │ ├── pacman.d │ │ │ └── hooks │ │ │ │ ├── 40-locale-gen.hook │ │ │ │ ├── uncomment-mirrors.hook │ │ │ │ └── zzzz99-remove-custom-hooks-from-airootfs.hook │ │ ├── passwd │ │ ├── resolv.conf │ │ ├── shadow │ │ ├── ssh │ │ │ └── sshd_config │ │ ├── systemd │ │ │ ├── journald.conf.d │ │ │ │ └── volatile-storage.conf │ │ │ ├── logind.conf.d │ │ │ │ └── do-not-suspend.conf │ │ │ ├── network │ │ │ │ ├── 20-ethernet.network │ │ │ │ ├── 20-wlan.network │ │ │ │ └── 20-wwan.network │ │ │ └── system │ │ │ │ ├── choose-mirror.service │ │ │ │ ├── cloud-init.target.wants │ │ │ │ ├── cloud-config.service │ │ │ │ ├── cloud-final.service │ │ │ │ ├── cloud-init-local.service │ │ │ │ └── cloud-init.service │ │ │ │ ├── dbus-org.freedesktop.ModemManager1.service │ │ │ │ ├── dbus-org.freedesktop.network1.service │ │ │ │ ├── dbus-org.freedesktop.nm-dispatcher.service │ │ │ │ ├── dbus-org.freedesktop.resolve1.service │ │ │ │ ├── etc-pacman.d-gnupg.mount │ │ │ │ ├── getty@tty1.service.d │ │ │ │ └── autologin.conf │ │ │ │ ├── livecd-alsa-unmuter.service │ │ │ │ ├── livecd-talk.service │ │ │ │ ├── multi-user.target.wants │ │ │ │ ├── ModemManager.service │ │ │ │ ├── NetworkManager.service │ │ │ │ ├── choose-mirror.service │ │ │ │ ├── livecd-talk.service │ │ │ │ ├── pacman-init.service │ │ │ │ ├── qemu-guest-agent.service │ │ │ │ ├── reflector.service │ │ │ │ ├── sshd.service │ │ │ │ ├── systemd-networkd.service │ │ │ │ ├── systemd-resolved.service │ │ │ │ └── vboxservice.service │ │ │ │ ├── network-online.target.wants │ │ │ │ ├── NetworkManager-wait-online.service │ │ │ │ └── systemd-networkd-wait-online.service │ │ │ │ ├── pacman-init.service │ │ │ │ ├── reflector.service.d │ │ │ │ └── archiso.conf │ │ │ │ ├── sockets.target.wants │ │ │ │ └── systemd-networkd.socket │ │ │ │ ├── sound.target.wants │ │ │ │ └── livecd-alsa-unmuter.service │ │ │ │ └── systemd-networkd-wait-online.service.d │ │ │ │ └── wait-for-only-one-interface.conf │ │ ├── udev │ │ │ └── rules.d │ │ │ │ └── 99-rz608.rules │ │ └── xdg │ │ │ └── reflector │ │ │ └── reflector.conf │ ├── root │ │ ├── .automated_script.sh │ │ ├── .zlogin │ │ ├── .zshrc │ │ └── install.sh │ └── usr │ │ └── local │ │ ├── bin │ │ ├── Installation_guide │ │ ├── choose-mirror │ │ └── livecd-sound │ │ └── share │ │ └── livecd-sound │ │ └── asound.conf.in ├── bootstrap_packages.x86_64 ├── efiboot │ └── loader │ │ ├── entries │ │ └── archiso-x86_64-linux.conf │ │ └── loader.conf ├── packages.x86_64 ├── pacman.conf.template ├── profiledef.sh └── syslinux │ ├── archiso_head.cfg │ ├── archiso_pxe-linux.cfg │ ├── archiso_pxe.cfg │ ├── archiso_sys-linux.cfg │ ├── archiso_sys.cfg │ ├── archiso_tail.cfg │ ├── splash.png │ └── syslinux.cfg └── docker └── Dockerfile /.github/workflows/main.yml: -------------------------------------------------------------------------------- 1 | name: Installer ISO build 2 | on: 3 | push: 4 | branches: 5 | - 'master' 6 | jobs: 7 | build: 8 | name: Installer ISO build 9 | runs-on: ubuntu-latest 10 | permissions: 11 | contents: write 12 | outputs: 13 | iso_file_name: ${{ steps.build_iso.outputs.iso_file_name }} 14 | version: ${{ steps.build_iso.outputs.version }} 15 | id: ${{ steps.build_iso.outputs.id }} 16 | steps: 17 | - uses: actions/checkout@v3 18 | - name: Change directory 19 | run: cd $GITHUB_WORKSPACE 20 | - name: Build ISO 21 | id: build_iso 22 | run: ./build-iso-docker.sh 23 | - name: Create release 24 | id: create_release 25 | uses: softprops/action-gh-release@v1 26 | with: 27 | token: ${{ secrets.GITHUB_TOKEN }} 28 | tag_name: ${{ steps.build_iso.outputs.version }}_${{ steps.build_iso.outputs.id }} 29 | name: ${{ steps.build_iso.outputs.version }} (${{ steps.build_iso.outputs.id }}) 30 | draft: false 31 | prerelease: true 32 | fail_on_unmatched_files: true 33 | files: | 34 | output/${{ steps.build_iso.outputs.iso_file_name }} 35 | output/sha256sum.txt 36 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | temp/ 2 | output/ 3 | chimeraos/extra_pkg/ 4 | chimeraos/work/ 5 | chimeraos/pacman.conf 6 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # install-media 2 | Build the ChimeraOS installation media. 3 | 4 | ## How to build 5 | There are two methods of building the installation media for ChimeraOS. From an Arch based system or from a Docker container. 6 | 7 | ### Arch based systems 8 | On Arch the following packages will need to be installed: 9 | - archiso 10 | - grep 11 | - file 12 | - coreutils 13 | - pikaur 14 | 15 | To start building, use the following command: 16 | 17 | ```bash 18 | ./build-iso.sh 19 | ``` 20 | 21 | ### Docker 22 | Before being able to build with Docker, the following packages will need to be installed: 23 | - docker.io 24 | - coreutils 25 | 26 | To start building, use the following command: 27 | 28 | ```bash 29 | ./build-iso-docker.sh 30 | ``` 31 | 32 | ## Files and directories 33 | Here a short explaination of what which files and directories do. 34 | 35 | ### chimeraos 36 | Contains the modified archiso profile for ChimeraOS. 37 | 38 | ### chimeraos/pacman.conf 39 | The pacman configuration during the creation of the installation media. Repositories can be added here. 40 | 41 | ### chimeraos/packages.x86_64 42 | A list of packages which are installed on the installation media during creation. 43 | 44 | ### chimeraos/airootfs 45 | Files which are added to the filesystem of the installation media's root file system. 46 | 47 | ### chimeraos/airootfs/root/customize_airootfs.sh 48 | This script runs in the live enviroment before it is put on the installation media. Allowing configuration changes. 49 | 50 | ### docker/Dockerfile 51 | This file is the base for the docker container which is used 52 | -------------------------------------------------------------------------------- /build-iso-docker.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # get the directory of this script 4 | work_dir="$(realpath $0|rev|cut -d '/' -f2-|rev)" 5 | 6 | # configuration variables for the iso 7 | dockerfile="${work_dir}/docker/Dockerfile" 8 | 9 | # fetch latest base docker image 10 | docker pull archlinux:base-devel 11 | 12 | # build the docker container 13 | docker build --no-cache -f "${dockerfile}" -t chimera-install-builder ${work_dir} 14 | 15 | # make the container build the iso 16 | exec docker run --privileged --rm -v ${work_dir}:/root/chimeraos -v $GITHUB_OUTPUT:$GITHUB_OUTPUT -e "GITHUB_OUTPUT=$GITHUB_OUTPUT" -h chimera-install-builder chimera-install-builder ./build-iso.sh 17 | -------------------------------------------------------------------------------- /build-iso.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | if [ $EUID -ne 0 ]; then 4 | echo "$(basename $0) must be run as root" 5 | exit 1 6 | fi 7 | 8 | # get the directory of this script 9 | work_dir="$(realpath $0|rev|cut -d '/' -f2-|rev)" 10 | 11 | # configuration variables for the iso 12 | output_dir="${work_dir}/output" 13 | script_dir="${work_dir}/chimeraos" 14 | temp_dir="${work_dir}/temp" 15 | 16 | # create output directory if it doesn't exist yet 17 | rm -rf "${output_dir}" 18 | mkdir -p "${output_dir}" 19 | 20 | rm -rf "${temp_dir}" 21 | mkdir -p "${temp_dir}" 22 | 23 | # add AUR packages to the build 24 | AUR_PACKAGES="\ 25 | frzr \ 26 | rtl88x2bu-dkms-git \ 27 | rtw89-dkms-git \ 28 | r8152-dkms \ 29 | rtl8812au-dkms-git \ 30 | rtl8814au-dkms-git \ 31 | rz608-fix-git \ 32 | " 33 | 34 | ADDITIONAL_PACKAGES="\ 35 | https://github.com/ChimeraOS/linux-chimeraos/releases/download/v6.6.13-chos1-1/linux-chimeraos-6.6.13.chos1-1-x86_64.pkg.tar.zst \ 36 | https://github.com/ChimeraOS/linux-chimeraos/releases/download/v6.6.13-chos1-1/linux-chimeraos-headers-6.6.13.chos1-1-x86_64.pkg.tar.zst \ 37 | " 38 | 39 | # create repo directory if it doesn't exist yet 40 | LOCAL_REPO="${script_dir}/extra_pkg" 41 | mkdir -p ${LOCAL_REPO} 42 | 43 | PIKAUR_CMD="PKGDEST=/tmp/temp_repo pikaur --noconfirm -Sw ${AUR_PACKAGES}" 44 | PIKAUR_RUN=(bash -c "${PIKAUR_CMD}") 45 | if [ -n "${BUILD_USER}" ]; then 46 | PIKAUR_RUN=(su "${BUILD_USER}" -c "${PIKAUR_CMD}") 47 | fi 48 | 49 | # build packages to the repo 50 | pushd /home/${BUILD_USER} 51 | "${PIKAUR_RUN[@]}" 52 | popd 53 | 54 | # copy all built packages to the repo 55 | cp /tmp/temp_repo/* ${LOCAL_REPO} 56 | 57 | # download additional packages to the repo 58 | curl -L --remote-name-all --output-dir ${LOCAL_REPO} ${ADDITIONAL_PACKAGES} 59 | 60 | # Add the repo to the build 61 | repo-add ${LOCAL_REPO}/chimeraos.db.tar.gz ${LOCAL_REPO}/*.pkg.* 62 | sed "s|LOCAL_REPO|$LOCAL_REPO|g" $script_dir/pacman.conf.template > $script_dir/pacman.conf 63 | 64 | # make the container build the iso 65 | mkarchiso -v -w "${temp_dir}" -o "${output_dir}" "${script_dir}" 66 | 67 | # allow git command to work 68 | git config --global --add safe.directory "${work_dir}" 69 | 70 | ISO_FILE_PATH=`ls ${output_dir}/*.iso` 71 | ISO_FILE_NAME=`basename "${ISO_FILE_PATH}"` 72 | VERSION=`echo "${ISO_FILE_NAME}" | cut -c11-20 | sed 's/\./-/g'` 73 | ID=`git rev-parse --short HEAD` 74 | 75 | pushd ${output_dir} 76 | sha256sum ${ISO_FILE_NAME} > sha256sum.txt 77 | cat sha256sum.txt 78 | popd 79 | 80 | if [ -f "${GITHUB_OUTPUT}" ]; then 81 | echo "iso_file_name=${ISO_FILE_NAME}" >> "${GITHUB_OUTPUT}" 82 | echo "version=${VERSION}" >> "${GITHUB_OUTPUT}" 83 | echo "id=${ID}" >> "${GITHUB_OUTPUT}" 84 | else 85 | echo "No github output file set" 86 | fi 87 | -------------------------------------------------------------------------------- /chimeraos/airootfs/etc/NetworkManager/conf.d/00-disable-rand-mac.conf: -------------------------------------------------------------------------------- 1 | [device] 2 | wifi.scan-rand-mac-address=no 3 | -------------------------------------------------------------------------------- /chimeraos/airootfs/etc/hostname: -------------------------------------------------------------------------------- 1 | # 2 | # SPDX-License-Identifier: GPL-3.0-or-later 3 | chimeraos 4 | -------------------------------------------------------------------------------- /chimeraos/airootfs/etc/locale.conf: -------------------------------------------------------------------------------- 1 | # 2 | # SPDX-License-Identifier: GPL-3.0-or-later 3 | 4 | LANG=en_US.UTF-8 5 | -------------------------------------------------------------------------------- /chimeraos/airootfs/etc/localtime: -------------------------------------------------------------------------------- 1 | /usr/share/zoneinfo/UTC -------------------------------------------------------------------------------- /chimeraos/airootfs/etc/mkinitcpio.conf: -------------------------------------------------------------------------------- 1 | # 2 | # SPDX-License-Identifier: GPL-3.0-or-later 3 | 4 | # vim:set ft=sh 5 | # MODULES 6 | # The following modules are loaded before any boot hooks are 7 | # run. Advanced users may wish to specify all system modules 8 | # in this array. For instance: 9 | # MODULES=(piix ide_disk reiserfs) 10 | MODULES=() 11 | 12 | # BINARIES 13 | # This setting includes any additional binaries a given user may 14 | # wish into the CPIO image. This is run last, so it may be used to 15 | # override the actual binaries included by a given hook 16 | # BINARIES are dependency parsed, so you may safely ignore libraries 17 | BINARIES=() 18 | 19 | # FILES 20 | # This setting is similar to BINARIES above, however, files are added 21 | # as-is and are not parsed in any way. This is useful for config files. 22 | FILES=() 23 | 24 | # HOOKS 25 | # This is the most important setting in this file. The HOOKS control the 26 | # modules and scripts added to the image, and what happens at boot time. 27 | # Order is important, and it is recommended that you do not change the 28 | # order in which HOOKS are added. Run 'mkinitcpio -H ' for 29 | # help on a given hook. 30 | # 'base' is _required_ unless you know precisely what you are doing. 31 | # 'udev' is _required_ in order to automatically load modules 32 | # 'filesystems' is _required_ unless you specify your fs modules in MODULES 33 | # Examples: 34 | ## This setup specifies all modules in the MODULES setting above. 35 | ## No raid, lvm2, or encrypted root is needed. 36 | # HOOKS=(base) 37 | # 38 | ## This setup will autodetect all modules for your system and should 39 | ## work as a sane default 40 | # HOOKS=(base udev autodetect block filesystems) 41 | # 42 | ## This setup will generate a 'full' image which supports most systems. 43 | ## No autodetection is done. 44 | # HOOKS=(base udev block filesystems) 45 | # 46 | ## This setup assembles a pata mdadm array with an encrypted root FS. 47 | ## Note: See 'mkinitcpio -H mdadm' for more information on raid devices. 48 | # HOOKS=(base udev block mdadm encrypt filesystems) 49 | # 50 | ## This setup loads an lvm2 volume group on a usb device. 51 | # HOOKS=(base udev block lvm2 filesystems) 52 | # 53 | ## NOTE: If you have /usr on a separate partition, you MUST include the 54 | # usr, fsck and shutdown hooks. 55 | HOOKS=(base udev memdisk archiso archiso_loop_mnt archiso_kms block filesystems keyboard microcode) 56 | 57 | # COMPRESSION 58 | # Use this to compress the initramfs image. By default, gzip compression 59 | # is used. Use 'cat' to create an uncompressed image. 60 | #COMPRESSION="gzip" 61 | #COMPRESSION="bzip2" 62 | #COMPRESSION="lzma" 63 | COMPRESSION="xz" 64 | #COMPRESSION="lzop" 65 | #COMPRESSION="lz4" 66 | #COMPRESSION="zstd" 67 | 68 | # COMPRESSION_OPTIONS 69 | # Additional options for the compressor 70 | #COMPRESSION_OPTIONS=() 71 | -------------------------------------------------------------------------------- /chimeraos/airootfs/etc/mkinitcpio.d/linux-chimeraos.preset: -------------------------------------------------------------------------------- 1 | # 2 | # SPDX-License-Identifier: GPL-3.0-or-later 3 | 4 | # mkinitcpio preset file for the 'linux' package on archiso 5 | 6 | PRESETS=('archiso') 7 | 8 | ALL_kver='/boot/vmlinuz-linux-chimeraos' 9 | ALL_config='/etc/mkinitcpio.conf' 10 | 11 | archiso_image="/boot/initramfs-linux-chimeraos.img" 12 | -------------------------------------------------------------------------------- /chimeraos/airootfs/etc/modprobe.d/broadcom-wl.conf: -------------------------------------------------------------------------------- 1 | # The broadcom-wl package requires some modules to be disabled in order to use 2 | # wl. Since the ISO image needs to cover many hardware cases, this file 3 | # overrides the default blacklist in /usr/lib/modprobe.d/ 4 | # 5 | # If you need to use wl, you may need to delete this file, then `rmmod` any 6 | # already-loaded modules that are now blacklisted before proceeding to modprobe 7 | # wl itself. 8 | -------------------------------------------------------------------------------- /chimeraos/airootfs/etc/modprobe.d/rz608.conf: -------------------------------------------------------------------------------- 1 | alias pci:v000014C3d00000608sv*sd*bc*sc*i* mt7921e 2 | -------------------------------------------------------------------------------- /chimeraos/airootfs/etc/modprobe.d/xpad.conf: -------------------------------------------------------------------------------- 1 | blacklist xpad 2 | -------------------------------------------------------------------------------- /chimeraos/airootfs/etc/motd: -------------------------------------------------------------------------------- 1 | To install Arch Linux follow the installation guide: 2 | https://wiki.archlinux.org/index.php/Installation_guide 3 | 4 | For Wi-Fi, authenticate to the wireless network using the iwctl utility. 5 | For mobile broadband (WWAN) modems, connect with the mmcli utility. 6 | Ethernet, WLAN and WWAN interfaces using DHCP should work automatically. 7 | 8 | After connecting to the internet, the installation guide can be accessed 9 | via the convenience script Installation_guide. 10 | 11 | -------------------------------------------------------------------------------- /chimeraos/airootfs/etc/os-release: -------------------------------------------------------------------------------- 1 | NAME="ChimeraOS" 2 | PRETTY_NAME="ChimeraOS" 3 | ID=chimeraos 4 | ID_LIKE=arch 5 | ANSI_COLOR="1;31" 6 | HOME_URL="https://chimeraos.org" 7 | DOCUMENTATION_URL="https://chimeraos.org/about" 8 | BUG_REPORT_URL="https://github.com/ChimeraOS/chimeraos/issues" 9 | -------------------------------------------------------------------------------- /chimeraos/airootfs/etc/pacman.d/hooks/40-locale-gen.hook: -------------------------------------------------------------------------------- 1 | # remove from airootfs! 2 | [Trigger] 3 | Operation = Install 4 | Type = Package 5 | Target = glibc 6 | 7 | [Action] 8 | Description = Uncommenting en_US.UTF-8 locale and running locale-gen... 9 | When = PostTransaction 10 | Depends = glibc 11 | Depends = sed 12 | Depends = sh 13 | Exec = /bin/sh -c "sed -i 's/#\(en_US\.UTF-8\)/\1/' /etc/locale.gen && locale-gen" 14 | -------------------------------------------------------------------------------- /chimeraos/airootfs/etc/pacman.d/hooks/uncomment-mirrors.hook: -------------------------------------------------------------------------------- 1 | # remove from airootfs! 2 | [Trigger] 3 | Operation = Install 4 | Operation = Upgrade 5 | Type = Package 6 | Target = pacman-mirrorlist 7 | 8 | [Action] 9 | Description = Uncommenting all mirrors in /etc/pacman.d/mirrorlist... 10 | When = PostTransaction 11 | Depends = pacman-mirrorlist 12 | Depends = sed 13 | Exec = /usr/bin/sed -i "s/#Server/Server/g" /etc/pacman.d/mirrorlist 14 | -------------------------------------------------------------------------------- /chimeraos/airootfs/etc/pacman.d/hooks/zzzz99-remove-custom-hooks-from-airootfs.hook: -------------------------------------------------------------------------------- 1 | # remove from airootfs! 2 | # As a workaround for https://bugs.archlinux.org/task/49347 , remove pacman hooks specific to the ISO build process. 3 | # If not, they would be used when pacstrap is run in the live environment. 4 | 5 | [Trigger] 6 | Operation = Install 7 | Operation = Upgrade 8 | Operation = Remove 9 | Type = Package 10 | Target = * 11 | 12 | [Action] 13 | Description = Work around FS#49347 by removing custom pacman hooks that are only required during ISO build... 14 | When = PostTransaction 15 | Depends = sh 16 | Depends = coreutils 17 | Depends = grep 18 | Exec = /bin/sh -c "rm -- $(grep -Frl 'remove from airootfs' /etc/pacman.d/hooks/)" 19 | -------------------------------------------------------------------------------- /chimeraos/airootfs/etc/passwd: -------------------------------------------------------------------------------- 1 | root:x:0:0:root:/root:/usr/bin/zsh 2 | -------------------------------------------------------------------------------- /chimeraos/airootfs/etc/resolv.conf: -------------------------------------------------------------------------------- 1 | /run/systemd/resolve/stub-resolv.conf -------------------------------------------------------------------------------- /chimeraos/airootfs/etc/shadow: -------------------------------------------------------------------------------- 1 | root::14871:::::: 2 | -------------------------------------------------------------------------------- /chimeraos/airootfs/etc/ssh/sshd_config: -------------------------------------------------------------------------------- 1 | # $OpenBSD: sshd_config,v 1.103 2018/04/09 20:41:22 tj Exp $ 2 | 3 | # This is the sshd server system-wide configuration file. See 4 | # sshd_config(5) for more information. 5 | 6 | # This sshd was compiled with PATH=/usr/local/sbin:/usr/local/bin:/usr/bin 7 | 8 | # The strategy used for options in the default sshd_config shipped with 9 | # OpenSSH is to specify options with their default value where 10 | # possible, but leave them commented. Uncommented options override the 11 | # default value. 12 | 13 | #Port 22 14 | #AddressFamily any 15 | #ListenAddress 0.0.0.0 16 | #ListenAddress :: 17 | 18 | #HostKey /etc/ssh/ssh_host_rsa_key 19 | #HostKey /etc/ssh/ssh_host_ecdsa_key 20 | #HostKey /etc/ssh/ssh_host_ed25519_key 21 | 22 | # Ciphers and keying 23 | #RekeyLimit default none 24 | 25 | # Logging 26 | #SyslogFacility AUTH 27 | #LogLevel INFO 28 | 29 | # Authentication: 30 | 31 | #LoginGraceTime 2m 32 | PermitRootLogin yes 33 | #StrictModes yes 34 | #MaxAuthTries 6 35 | #MaxSessions 10 36 | 37 | #PubkeyAuthentication yes 38 | 39 | # The default is to check both .ssh/authorized_keys and .ssh/authorized_keys2 40 | # but this is overridden so installations will only check .ssh/authorized_keys 41 | AuthorizedKeysFile .ssh/authorized_keys 42 | 43 | #AuthorizedPrincipalsFile none 44 | 45 | #AuthorizedKeysCommand none 46 | #AuthorizedKeysCommandUser nobody 47 | 48 | # For this to work you will also need host keys in /etc/ssh/ssh_known_hosts 49 | #HostbasedAuthentication no 50 | # Change to yes if you don't trust ~/.ssh/known_hosts for 51 | # HostbasedAuthentication 52 | #IgnoreUserKnownHosts no 53 | # Don't read the user's ~/.rhosts and ~/.shosts files 54 | #IgnoreRhosts yes 55 | 56 | # To disable tunneled clear text passwords, change to no here! 57 | #PasswordAuthentication yes 58 | #PermitEmptyPasswords no 59 | 60 | # Change to no to disable s/key passwords 61 | ChallengeResponseAuthentication no 62 | 63 | # Kerberos options 64 | #KerberosAuthentication no 65 | #KerberosOrLocalPasswd yes 66 | #KerberosTicketCleanup yes 67 | #KerberosGetAFSToken no 68 | 69 | # GSSAPI options 70 | #GSSAPIAuthentication no 71 | #GSSAPICleanupCredentials yes 72 | 73 | # Set this to 'yes' to enable PAM authentication, account processing, 74 | # and session processing. If this is enabled, PAM authentication will 75 | # be allowed through the ChallengeResponseAuthentication and 76 | # PasswordAuthentication. Depending on your PAM configuration, 77 | # PAM authentication via ChallengeResponseAuthentication may bypass 78 | # the setting of "PermitRootLogin without-password". 79 | # If you just want the PAM account and session checks to run without 80 | # PAM authentication, then enable this but set PasswordAuthentication 81 | # and ChallengeResponseAuthentication to 'no'. 82 | UsePAM yes 83 | 84 | #AllowAgentForwarding yes 85 | #AllowTcpForwarding yes 86 | #GatewayPorts no 87 | #X11Forwarding no 88 | #X11DisplayOffset 10 89 | #X11UseLocalhost yes 90 | #PermitTTY yes 91 | PrintMotd no # pam does that 92 | #PrintLastLog yes 93 | #TCPKeepAlive yes 94 | #PermitUserEnvironment no 95 | #Compression delayed 96 | #ClientAliveInterval 0 97 | #ClientAliveCountMax 3 98 | #UseDNS no 99 | #PidFile /run/sshd.pid 100 | #MaxStartups 10:30:100 101 | #PermitTunnel no 102 | #ChrootDirectory none 103 | #VersionAddendum none 104 | 105 | # no default banner path 106 | #Banner none 107 | 108 | # override default of no subsystems 109 | Subsystem sftp /usr/lib/ssh/sftp-server 110 | 111 | # Example of overriding settings on a per-user basis 112 | #Match User anoncvs 113 | # X11Forwarding no 114 | # AllowTcpForwarding no 115 | # PermitTTY no 116 | # ForceCommand cvs server 117 | -------------------------------------------------------------------------------- /chimeraos/airootfs/etc/systemd/journald.conf.d/volatile-storage.conf: -------------------------------------------------------------------------------- 1 | # 2 | # SPDX-License-Identifier: GPL-3.0-or-later 3 | 4 | [Journal] 5 | Storage=volatile 6 | -------------------------------------------------------------------------------- /chimeraos/airootfs/etc/systemd/logind.conf.d/do-not-suspend.conf: -------------------------------------------------------------------------------- 1 | # 2 | # SPDX-License-Identifier: GPL-3.0-or-later 3 | 4 | [Login] 5 | HandleSuspendKey=ignore 6 | HandleHibernateKey=ignore 7 | HandleLidSwitch=ignore 8 | -------------------------------------------------------------------------------- /chimeraos/airootfs/etc/systemd/network/20-ethernet.network: -------------------------------------------------------------------------------- 1 | # 2 | # SPDX-License-Identifier: GPL-3.0-or-later 3 | 4 | [Match] 5 | Type=ether 6 | 7 | [Network] 8 | DHCP=yes 9 | IPv6PrivacyExtensions=yes 10 | 11 | [DHCPv4] 12 | RouteMetric=512 13 | 14 | [DHCPv6] 15 | RouteMetric=512 16 | -------------------------------------------------------------------------------- /chimeraos/airootfs/etc/systemd/network/20-wlan.network: -------------------------------------------------------------------------------- 1 | # 2 | # SPDX-License-Identifier: GPL-3.0-or-later 3 | 4 | [Match] 5 | Type=wlan 6 | 7 | [Network] 8 | DHCP=yes 9 | IPv6PrivacyExtensions=yes 10 | 11 | [DHCPv4] 12 | RouteMetric=1024 13 | 14 | [DHCPv6] 15 | RouteMetric=1024 16 | -------------------------------------------------------------------------------- /chimeraos/airootfs/etc/systemd/network/20-wwan.network: -------------------------------------------------------------------------------- 1 | # 2 | # SPDX-License-Identifier: GPL-3.0-or-later 3 | 4 | [Match] 5 | Type=wwan 6 | 7 | [Network] 8 | DHCP=yes 9 | IPv6PrivacyExtensions=yes 10 | 11 | [DHCPv4] 12 | RouteMetric=2048 13 | 14 | [DHCPv6] 15 | RouteMetric=2048 16 | -------------------------------------------------------------------------------- /chimeraos/airootfs/etc/systemd/system/choose-mirror.service: -------------------------------------------------------------------------------- 1 | # 2 | # SPDX-License-Identifier: GPL-3.0-or-later 3 | 4 | [Unit] 5 | Description=Choose mirror from the kernel command line 6 | ConditionKernelCommandLine=mirror 7 | 8 | [Service] 9 | Type=oneshot 10 | ExecStart=/usr/local/bin/choose-mirror 11 | 12 | [Install] 13 | WantedBy=multi-user.target 14 | -------------------------------------------------------------------------------- /chimeraos/airootfs/etc/systemd/system/cloud-init.target.wants/cloud-config.service: -------------------------------------------------------------------------------- 1 | /usr/lib/systemd/system/cloud-config.service -------------------------------------------------------------------------------- /chimeraos/airootfs/etc/systemd/system/cloud-init.target.wants/cloud-final.service: -------------------------------------------------------------------------------- 1 | /usr/lib/systemd/system/cloud-final.service -------------------------------------------------------------------------------- /chimeraos/airootfs/etc/systemd/system/cloud-init.target.wants/cloud-init-local.service: -------------------------------------------------------------------------------- 1 | /usr/lib/systemd/system/cloud-init-local.service -------------------------------------------------------------------------------- /chimeraos/airootfs/etc/systemd/system/cloud-init.target.wants/cloud-init.service: -------------------------------------------------------------------------------- 1 | /usr/lib/systemd/system/cloud-init.service -------------------------------------------------------------------------------- /chimeraos/airootfs/etc/systemd/system/dbus-org.freedesktop.ModemManager1.service: -------------------------------------------------------------------------------- 1 | /usr/lib/systemd/system/ModemManager.service -------------------------------------------------------------------------------- /chimeraos/airootfs/etc/systemd/system/dbus-org.freedesktop.network1.service: -------------------------------------------------------------------------------- 1 | /usr/lib/systemd/system/systemd-networkd.service -------------------------------------------------------------------------------- /chimeraos/airootfs/etc/systemd/system/dbus-org.freedesktop.nm-dispatcher.service: -------------------------------------------------------------------------------- 1 | /usr/lib/systemd/system/NetworkManager-dispatcher.service -------------------------------------------------------------------------------- /chimeraos/airootfs/etc/systemd/system/dbus-org.freedesktop.resolve1.service: -------------------------------------------------------------------------------- 1 | /usr/lib/systemd/system/systemd-resolved.service -------------------------------------------------------------------------------- /chimeraos/airootfs/etc/systemd/system/etc-pacman.d-gnupg.mount: -------------------------------------------------------------------------------- 1 | # 2 | # SPDX-License-Identifier: GPL-3.0-or-later 3 | 4 | [Unit] 5 | Description=Temporary /etc/pacman.d/gnupg directory 6 | 7 | [Mount] 8 | What=tmpfs 9 | Where=/etc/pacman.d/gnupg 10 | Type=tmpfs 11 | Options=mode=0755 12 | -------------------------------------------------------------------------------- /chimeraos/airootfs/etc/systemd/system/getty@tty1.service.d/autologin.conf: -------------------------------------------------------------------------------- 1 | # 2 | # SPDX-License-Identifier: GPL-3.0-or-later 3 | 4 | [Service] 5 | ExecStart= 6 | ExecStart=-/sbin/agetty --autologin root --noclear %I 38400 linux 7 | -------------------------------------------------------------------------------- /chimeraos/airootfs/etc/systemd/system/livecd-alsa-unmuter.service: -------------------------------------------------------------------------------- 1 | # 2 | # SPDX-License-Identifier: GPL-3.0-or-later 3 | 4 | [Unit] 5 | Description=Unmute All Sound Card Controls For Use With The Live Arch Environment 6 | # This needs to run after the audio device becomes available. 7 | Wants=systemd-udev-settle.service 8 | After=systemd-udev-settle.service sound.target 9 | ConditionKernelCommandLine=accessibility=on 10 | 11 | [Service] 12 | Type=oneshot 13 | ExecStart=/usr/local/bin/livecd-sound -u 14 | 15 | [Install] 16 | WantedBy=sound.target 17 | -------------------------------------------------------------------------------- /chimeraos/airootfs/etc/systemd/system/livecd-talk.service: -------------------------------------------------------------------------------- 1 | # 2 | # SPDX-License-Identifier: GPL-3.0-or-later 3 | 4 | [Unit] 5 | Description=Screen reader service 6 | After=livecd-alsa-unmuter.service 7 | Before=getty@tty1.service 8 | ConditionKernelCommandLine=accessibility=on 9 | 10 | [Service] 11 | Type=oneshot 12 | TTYPath=/dev/tty13 13 | ExecStartPre=/usr/bin/chvt 13 14 | ExecStart=/usr/local/bin/livecd-sound -p 15 | ExecStartPost=/usr/bin/chvt 1 16 | ExecStartPost=systemctl start espeakup.service 17 | StandardInput=tty 18 | TTYVHangup=yes 19 | TTYVTDisallocate=yes 20 | RemainAfterExit=true 21 | 22 | [Install] 23 | WantedBy=multi-user.target 24 | -------------------------------------------------------------------------------- /chimeraos/airootfs/etc/systemd/system/multi-user.target.wants/ModemManager.service: -------------------------------------------------------------------------------- 1 | /usr/lib/systemd/system/ModemManager.service -------------------------------------------------------------------------------- /chimeraos/airootfs/etc/systemd/system/multi-user.target.wants/NetworkManager.service: -------------------------------------------------------------------------------- 1 | /usr/lib/systemd/system/NetworkManager.service -------------------------------------------------------------------------------- /chimeraos/airootfs/etc/systemd/system/multi-user.target.wants/choose-mirror.service: -------------------------------------------------------------------------------- 1 | ../choose-mirror.service -------------------------------------------------------------------------------- /chimeraos/airootfs/etc/systemd/system/multi-user.target.wants/livecd-talk.service: -------------------------------------------------------------------------------- 1 | /etc/systemd/system/livecd-talk.service -------------------------------------------------------------------------------- /chimeraos/airootfs/etc/systemd/system/multi-user.target.wants/pacman-init.service: -------------------------------------------------------------------------------- 1 | ../pacman-init.service -------------------------------------------------------------------------------- /chimeraos/airootfs/etc/systemd/system/multi-user.target.wants/qemu-guest-agent.service: -------------------------------------------------------------------------------- 1 | /usr/lib/systemd/system/qemu-guest-agent.service -------------------------------------------------------------------------------- /chimeraos/airootfs/etc/systemd/system/multi-user.target.wants/reflector.service: -------------------------------------------------------------------------------- 1 | /usr/lib/systemd/system/reflector.service -------------------------------------------------------------------------------- /chimeraos/airootfs/etc/systemd/system/multi-user.target.wants/sshd.service: -------------------------------------------------------------------------------- 1 | /usr/lib/systemd/system/sshd.service -------------------------------------------------------------------------------- /chimeraos/airootfs/etc/systemd/system/multi-user.target.wants/systemd-networkd.service: -------------------------------------------------------------------------------- 1 | /usr/lib/systemd/system/systemd-networkd.service -------------------------------------------------------------------------------- /chimeraos/airootfs/etc/systemd/system/multi-user.target.wants/systemd-resolved.service: -------------------------------------------------------------------------------- 1 | /usr/lib/systemd/system/systemd-resolved.service -------------------------------------------------------------------------------- /chimeraos/airootfs/etc/systemd/system/multi-user.target.wants/vboxservice.service: -------------------------------------------------------------------------------- 1 | /usr/lib/systemd/system/vboxservice.service -------------------------------------------------------------------------------- /chimeraos/airootfs/etc/systemd/system/network-online.target.wants/NetworkManager-wait-online.service: -------------------------------------------------------------------------------- 1 | /usr/lib/systemd/system/NetworkManager-wait-online.service -------------------------------------------------------------------------------- /chimeraos/airootfs/etc/systemd/system/network-online.target.wants/systemd-networkd-wait-online.service: -------------------------------------------------------------------------------- 1 | /usr/lib/systemd/system/systemd-networkd-wait-online.service -------------------------------------------------------------------------------- /chimeraos/airootfs/etc/systemd/system/pacman-init.service: -------------------------------------------------------------------------------- 1 | # 2 | # SPDX-License-Identifier: GPL-3.0-or-later 3 | 4 | [Unit] 5 | Description=Initializes Pacman keyring 6 | Requires=etc-pacman.d-gnupg.mount 7 | After=etc-pacman.d-gnupg.mount 8 | 9 | [Service] 10 | Type=oneshot 11 | RemainAfterExit=yes 12 | ExecStart=/usr/bin/pacman-key --init 13 | ExecStart=/usr/bin/pacman-key --populate 14 | 15 | [Install] 16 | WantedBy=multi-user.target 17 | -------------------------------------------------------------------------------- /chimeraos/airootfs/etc/systemd/system/reflector.service.d/archiso.conf: -------------------------------------------------------------------------------- 1 | [Unit] 2 | ConditionKernelCommandLine=!mirror 3 | 4 | [Service] 5 | Restart=on-failure 6 | RestartSec=10 7 | -------------------------------------------------------------------------------- /chimeraos/airootfs/etc/systemd/system/sockets.target.wants/systemd-networkd.socket: -------------------------------------------------------------------------------- 1 | /usr/lib/systemd/system/systemd-networkd.socket -------------------------------------------------------------------------------- /chimeraos/airootfs/etc/systemd/system/sound.target.wants/livecd-alsa-unmuter.service: -------------------------------------------------------------------------------- 1 | ../livecd-alsa-unmuter.service -------------------------------------------------------------------------------- /chimeraos/airootfs/etc/systemd/system/systemd-networkd-wait-online.service.d/wait-for-only-one-interface.conf: -------------------------------------------------------------------------------- 1 | # 2 | # SPDX-License-Identifier: GPL-3.0-or-later 3 | 4 | [Service] 5 | ExecStart= 6 | ExecStart=/usr/lib/systemd/systemd-networkd-wait-online --any 7 | -------------------------------------------------------------------------------- /chimeraos/airootfs/etc/udev/rules.d/99-rz608.rules: -------------------------------------------------------------------------------- 1 | SUBSYSTEM=="drivers", DEVPATH=="/bus/pci/drivers/mt7921e", ATTR{new_id}="14c3 0608" 2 | -------------------------------------------------------------------------------- /chimeraos/airootfs/etc/xdg/reflector/reflector.conf: -------------------------------------------------------------------------------- 1 | # Reflector configuration file for the systemd service. 2 | 3 | --save /etc/pacman.d/mirrorlist 4 | --protocol https 5 | --latest 20 6 | --sort rate 7 | -------------------------------------------------------------------------------- /chimeraos/airootfs/root/.automated_script.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | script_cmdline () 4 | { 5 | local param 6 | for param in $(< /proc/cmdline); do 7 | case "${param}" in 8 | script=*) echo "${param#*=}" ; return 0 ;; 9 | esac 10 | done 11 | } 12 | 13 | automated_script () 14 | { 15 | local script rt 16 | script="$(script_cmdline)" 17 | if [[ -n "${script}" && ! -x /tmp/startup_script ]]; then 18 | if [[ "${script}" =~ ^http:// || "${script}" =~ ^ftp:// ]]; then 19 | wget "${script}" --retry-connrefused -q -O /tmp/startup_script >/dev/null 20 | rt=$? 21 | else 22 | cp "${script}" /tmp/startup_script 23 | rt=$? 24 | fi 25 | if [[ ${rt} -eq 0 ]]; then 26 | chmod +x /tmp/startup_script 27 | /tmp/startup_script 28 | fi 29 | fi 30 | } 31 | 32 | if [[ $(tty) == "/dev/tty1" ]]; then 33 | automated_script 34 | fi 35 | -------------------------------------------------------------------------------- /chimeraos/airootfs/root/.zlogin: -------------------------------------------------------------------------------- 1 | # fix for screen readers 2 | if grep -Fq 'accessibility=' /proc/cmdline &> /dev/null; then 3 | setopt SINGLE_LINE_ZLE 4 | fi 5 | 6 | ~/.automated_script.sh 7 | -------------------------------------------------------------------------------- /chimeraos/airootfs/root/.zshrc: -------------------------------------------------------------------------------- 1 | ./install.sh -------------------------------------------------------------------------------- /chimeraos/airootfs/root/install.sh: -------------------------------------------------------------------------------- 1 | #! /bin/bash 2 | 3 | clean_progress() { 4 | local scale=$1 5 | local postfix=$2 6 | local last_value=$scale 7 | while IFS= read -r line; do 8 | value=$(( ${line}*${scale}/100 )) 9 | if [ "$last_value" != "$value" ]; then 10 | echo ${value}${postfix} 11 | last_value=$value 12 | fi 13 | done 14 | } 15 | 16 | 17 | if [ $EUID -ne 0 ]; then 18 | echo "$(basename $0) must be run as root" 19 | exit 1 20 | fi 21 | 22 | dmesg --console-level 1 23 | 24 | if [ ! -d /sys/firmware/efi/efivars ]; then 25 | MSG="Legacy BIOS installs are not supported. You must boot the installer in UEFI mode.\n\nWould you like to restart the computer now?" 26 | if (whiptail --yesno "${MSG}" 10 50); then 27 | reboot 28 | fi 29 | 30 | exit 1 31 | fi 32 | 33 | 34 | # try to set correct date & time -- required to be able to connect to github via https if your hardware clock is set too far into the past 35 | timedatectl set-ntp true 36 | 37 | 38 | #### Test connection or ask the user for configuration #### 39 | 40 | # Waiting a bit because some wifi chips are slow to scan 5GHZ networks and to avoid kernel boot up messages printing over the screen 41 | sleep 10 42 | 43 | TARGET="stable" 44 | while ! ( curl --http1.1 -Ls https://github.com | grep ' /dev/null ); do 45 | whiptail \ 46 | "No internet connection detected.\n\nPlease use the network configuration tool to activate a network, then select \"Quit\" to exit the tool and continue the installation." \ 47 | 12 50 \ 48 | --yesno \ 49 | --yes-button "Configure" \ 50 | --no-button "Exit" 51 | 52 | if [ $? -ne 0 ]; then 53 | exit 1 54 | fi 55 | 56 | nmtui-connect 57 | done 58 | ####################################### 59 | 60 | MOUNT_PATH=/tmp/frzr_root 61 | 62 | if ! frzr-bootstrap gamer; then 63 | whiptail --msgbox "System bootstrap step failed." 10 50 64 | exit 1 65 | fi 66 | 67 | #### Post install steps for system configuration 68 | # Copy over all network configuration from the live session to the system 69 | SYS_CONN_DIR="/etc/NetworkManager/system-connections" 70 | if [ -d ${SYS_CONN_DIR} ] && [ -n "$(ls -A ${SYS_CONN_DIR})" ]; then 71 | mkdir -p -m=700 ${MOUNT_PATH}${SYS_CONN_DIR} 72 | cp ${SYS_CONN_DIR}/* \ 73 | ${MOUNT_PATH}${SYS_CONN_DIR}/. 74 | fi 75 | 76 | # Grab the steam bootstrap for first boot 77 | 78 | URL="https://steamdeck-packages.steamos.cloud/archlinux-mirror/jupiter-main/os/x86_64/steam-jupiter-stable-1.0.0.79-1-x86_64.pkg.tar.zst" 79 | TMP_PKG="/tmp/package.pkg.tar.zst" 80 | TMP_FILE="/tmp/bootstraplinux_ubuntu12_32.tar.xz" 81 | DESTINATION="/tmp/frzr_root/etc/first-boot/" 82 | if [[ ! -d "$DESTINATION" ]]; then 83 | mkdir -p /tmp/frzr_root/etc/first-boot 84 | fi 85 | 86 | curl --http1.1 -# -L -o "${TMP_PKG}" -C - "${URL}" 2>&1 | \ 87 | stdbuf -oL tr '\r' '\n' | grep --line-buffered -oP '[0-9]*+(?=.[0-9])' | clean_progress 100 | \ 88 | whiptail --gauge "Downloading Steam" 10 50 0 89 | 90 | tar -I zstd -xvf "$TMP_PKG" usr/lib/steam/bootstraplinux_ubuntu12_32.tar.xz -O > "$TMP_FILE" 91 | mv "$TMP_FILE" "$DESTINATION" 92 | rm "$TMP_PKG" 93 | 94 | MENU_SELECT=$(whiptail --menu "Install Options" 25 75 10 \ 95 | "Standard:" "Install with default options" \ 96 | "Advanced:" "Install with advanced options" \ 97 | 3>&1 1>&2 2>&3) 98 | 99 | if [ "$MENU_SELECT" = "Advanced:" ]; then 100 | OPTIONS=$(whiptail --separate-output --checklist "Choose options" 10 55 4 \ 101 | "Use Firmware Overrides" "DSDT/EDID" OFF \ 102 | "Unstable Builds" "" OFF 3>&1 1>&2 2>&3) 103 | 104 | if echo "$OPTIONS" | grep -q "Use Firmware Overrides"; then 105 | echo "Enabling firmware overrides..." 106 | if [[ ! -d "/tmp/frzr_root/etc/device-quirks/" ]]; then 107 | mkdir -p "/tmp/frzr_root/etc/device-quirks" 108 | # Create device-quirks default config 109 | cat >"/tmp/frzr_root/etc/device-quirks/device-quirks.conf" <"/tmp/frzr_root/etc/device-quirks/dsdt_override.log" <&1 1>&2 2>&3) 138 | fi 139 | 140 | if [ "${CHOICE}" == "local" ]; then 141 | export local_install=true 142 | frzr-deploy 143 | RESULT=$? 144 | else 145 | frzr-deploy chimeraos/chimeraos:${TARGET} 146 | RESULT=$? 147 | fi 148 | 149 | MSG="Installation failed." 150 | if [ "${RESULT}" == "0" ]; then 151 | MSG="Installation successfully completed." 152 | elif [ "${RESULT}" == "29" ]; then 153 | MSG="GitHub API rate limit error encountered. Please retry installation later." 154 | fi 155 | 156 | if (whiptail --yesno "${MSG}\n\nWould you like to restart the computer now?" 10 50); then 157 | reboot 158 | fi 159 | 160 | exit ${RESULT} 161 | -------------------------------------------------------------------------------- /chimeraos/airootfs/usr/local/bin/Installation_guide: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # 3 | # SPDX-License-Identifier: GPL-3.0-or-later 4 | 5 | exec lynx 'https://wiki.archlinux.org/index.php/Installation_guide' 6 | -------------------------------------------------------------------------------- /chimeraos/airootfs/usr/local/bin/choose-mirror: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | # 3 | # SPDX-License-Identifier: GPL-3.0-or-later 4 | 5 | get_cmdline() { 6 | local param 7 | for param in $(< /proc/cmdline); do 8 | case "${param}" in 9 | $1=*) echo "${param##*=}"; 10 | return 0 11 | ;; 12 | esac 13 | done 14 | } 15 | 16 | mirror=$(get_cmdline mirror) 17 | [[ $mirror = auto ]] && mirror=$(get_cmdline archiso_http_srv) 18 | [[ $mirror ]] || exit 0 19 | 20 | mv /etc/pacman.d/mirrorlist /etc/pacman.d/mirrorlist.orig 21 | cat >/etc/pacman.d/mirrorlist << EOF 22 | # 23 | # Arch Linux repository mirrorlist 24 | # Generated by archiso 25 | # 26 | 27 | Server = ${mirror%%/}/\$repo/os/\$arch 28 | EOF 29 | -------------------------------------------------------------------------------- /chimeraos/airootfs/usr/local/bin/livecd-sound: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | # 3 | # SPDX-License-Identifier: GPL-3.0-or-later 4 | 5 | usage() { 6 | cat <<- _EOF_ 7 | live cd sound helper script. 8 | Usage: livecdsound [OPTION] 9 | OPTIONS 10 | -u, --unmute unmute all sound cards 11 | -p, --pick select a card for speetch output 12 | -h, --help Show this usage message 13 | 14 | _EOF_ 15 | } 16 | 17 | bugout () { 18 | printf "/usr/local/bin/livecdsound: programming error" 19 | stat_fail 20 | } 21 | 22 | echo_card_indices() 23 | { 24 | if [ -f /proc/asound/cards ] ; then 25 | sed -n -e's/^[[:space:]]*\([0-7]\)[[:space:]].*/\1/p' /proc/asound/cards 26 | fi 27 | } 28 | 29 | # The following functions try to set many controls. 30 | # No card has all the controls and so some of the attempts are bound to fail. 31 | # Because of this, the functions can't return useful status values. 32 | 33 | # $1 34 | # $2 35 | # $3 36 | unmute_and_set_level(){ 37 | { [ "$3" ] &&[ "$2" ] && [ "$1" ] ; } || bugout 38 | systemd-cat -t "livecdsound" printf "Setting: %s on card: %s to %s\n" "$2" "$1" "$3" 39 | systemd-cat -t "livecdsound" amixer -c "$1" set "$2" "$3" unmute 40 | return 0 41 | } 42 | 43 | # $1 44 | # $2 45 | mute_and_zero_level() 46 | { 47 | { [ "$1" ] && [ "$2" ] ; } || bugout 48 | systemd-cat -t "livecdsound" printf "Muting control: %s on card: %s\n" "$2" "$1" 49 | systemd-cat -t "livecdsound" amixer -c "$1" set "$2" "0%" mute 50 | return 0 51 | } 52 | 53 | # $1 54 | # $2 55 | # $3 "on" | "off" 56 | switch_control() 57 | { 58 | { [ "$3" ] && [ "$1" ] ; } || bugout 59 | systemd-cat -t "livecdsound" printf "Switching control: %s on card: %s to %s\n" "$2" "$1" "$3" 60 | systemd-cat -t "livecdsound" amixer -c "$1" set "$2" "$3" 61 | return 0 62 | } 63 | 64 | # $1 65 | sanify_levels_on_card() 66 | { 67 | unmute_and_set_level "$1" "Front" "80%" 68 | unmute_and_set_level "$1" "Master" "80%" 69 | unmute_and_set_level "$1" "Master Mono" "80%" 70 | unmute_and_set_level "$1" "Master Digital" "80%" # E.g., cs4237B 71 | unmute_and_set_level "$1" "Playback" "80%" 72 | unmute_and_set_level "$1" "Headphone" "100%" 73 | unmute_and_set_level "$1" "PCM" "80%" 74 | unmute_and_set_level "$1" "PCM,1" "80%" # E.g., ess1969 75 | unmute_and_set_level "$1" "DAC" "80%" # E.g., envy24, cs46xx 76 | unmute_and_set_level "$1" "DAC,0" "80%" # E.g., envy24 77 | unmute_and_set_level "$1" "DAC,1" "80%" # E.g., envy24 78 | unmute_and_set_level "$1" "Synth" "80%" 79 | unmute_and_set_level "$1" "CD" "80%" 80 | unmute_and_set_level "$1" "PC Speaker" "100%" 81 | 82 | mute_and_zero_level "$1" "Mic" 83 | mute_and_zero_level "$1" "IEC958" # Ubuntu #19648 84 | 85 | # Intel P4P800-MX 86 | switch_control "$1" "Master Playback Switch" on 87 | switch_control "$1" "Master Surround" on 88 | 89 | # Trident/YMFPCI/emu10k1: 90 | unmute_and_set_level "$1" "Wave" "80%" 91 | unmute_and_set_level "$1" "Music" "80%" 92 | unmute_and_set_level "$1" "AC97" "80%" 93 | 94 | # DRC: 95 | unmute_and_set_level "$1" "Dynamic Range Compression" "80%" 96 | 97 | # Required for HDA Intel (hda-intel): 98 | unmute_and_set_level "$1" "Front" "80%" 99 | 100 | # Required for SB Live 7.1/24-bit (ca0106): 101 | unmute_and_set_level "$1" "Analog Front" "80%" 102 | 103 | # Required at least for Via 823x hardware on DFI K8M800-MLVF Motherboard 104 | switch_control "$1" "IEC958 Capture Monitor" off 105 | 106 | # Required for hardware allowing toggles for AC97 through IEC958, 107 | # valid values are 0, 1, 2, 3. Needs to be set to 0 for PCM1. 108 | unmute_and_set_level "$1" "IEC958 Playback AC97-SPSA" "0" 109 | 110 | # Required for newer Via hardware 111 | unmute_and_set_level "$1" "VIA DXS,0" "80%" 112 | unmute_and_set_level "$1" "VIA DXS,1" "80%" 113 | unmute_and_set_level "$1" "VIA DXS,2" "80%" 114 | unmute_and_set_level "$1" "VIA DXS,3" "80%" 115 | 116 | # Required on some notebooks with ICH4: 117 | switch_control "$1" "Headphone Jack Sense" off 118 | switch_control "$1" "Line Jack Sense" off 119 | 120 | # Some machines need one or more of these to be on; 121 | # others need one or more of these to be off: 122 | 123 | switch_control "$1" "Audigy Analog/Digital Output Jack" on 124 | switch_control "$1" "SB Live Analog/Digital Output Jack" on 125 | 126 | # D1984 -- Thinkpad T61/X61 127 | switch_control "$1" "Speaker" on 128 | switch_control "$1" "Headphone" on 129 | 130 | # HDA-Intel w/ "Digital" capture mixer (See Ubuntu #193823) 131 | unmute_and_set_level "$1" "Digital" "80%" 132 | 133 | return 0 134 | } 135 | 136 | # $1 | "all" 137 | sanify_levels() 138 | { 139 | local ttsdml_returnstatus=0 140 | local card 141 | case "$1" in 142 | all) 143 | for card in $(echo_card_indices) ; do 144 | sanify_levels_on_card "$card" || ttsdml_returnstatus=1 145 | done 146 | ;; 147 | *) 148 | sanify_levels_on_card "$1" || ttsdml_returnstatus=1 149 | ;; 150 | esac 151 | return $ttsdml_returnstatus 152 | } 153 | 154 | # List all cards that *should* be usable for PCM audio. In my experience, 155 | # the console speaker (handled by the pcsp driver) isn't a suitable playback 156 | # device, so we'll exclude it. 157 | list_non_pcsp_cards() 158 | { 159 | for card in $(echo_card_indices); do 160 | local cardfile="/proc/asound/card${card}/id" 161 | if [ -r "$cardfile" ] && [ -f "$cardfile" ] && \ 162 | [ "$(cat "$cardfile")" != pcsp ]; then 163 | echo "$card" 164 | fi 165 | done 166 | } 167 | 168 | # Properly initialize the sound card so that we have audio at boot. 169 | unmute_all_cards() 170 | { 171 | sanify_levels all 172 | } 173 | 174 | is_numeric() { 175 | local str=$1 176 | [[ "$str" =~ ^[0-9]+$ ]] 177 | } 178 | 179 | set_default_card() { 180 | local card=$1 181 | sed -e "s/%card%/$card/g" < /usr/local/share/livecd-sound/asound.conf.in \ 182 | > /etc/asound.conf 183 | } 184 | 185 | play_on_card() { 186 | local card=$1 file=$2 187 | aplay -q "-Dplughw:$card,0" "$file" 188 | } 189 | 190 | # If there are multiple usable sound cards, prompt the user to choose one, 191 | # using auditory feedback. 192 | pick_a_card() 193 | { 194 | set -f 195 | usable_cards="$(list_non_pcsp_cards)" 196 | num_usable_cards="$(wc -w <<< "$usable_cards")" 197 | 198 | if [ "$num_usable_cards" -eq 1 ]; then 199 | systemd-cat -t "livecdsound" printf "Only one sound card is detected\n" 200 | exit 0 201 | fi 202 | systemd-cat -t "livecdsound" printf "multiple sound cards detected\n" 203 | for card in $usable_cards; do 204 | if ! is_numeric "$card"; then 205 | continue 206 | fi 207 | play_on_card "$card" /usr/share/livecd-sounds/pick-a-card.wav& 208 | done 209 | wait 210 | sleep 1 211 | for card in $usable_cards; do 212 | if ! is_numeric "$card"; then 213 | continue 214 | fi 215 | play_on_card "$card" /usr/share/livecd-sounds/beep.wav 216 | if read -r -t 10; then 217 | systemd-cat -t "livecdsound" printf "Selecting %s sound card as default\n" "$card" 218 | set_default_card "$card" 219 | break 220 | fi 221 | done 222 | } 223 | 224 | if [[ $# -eq 0 ]]; then 225 | echo "error: No argument passed." 226 | exit 1 227 | fi 228 | while [[ "${1}" != "" ]]; do 229 | case ${1} in 230 | -h|--help) 231 | usage 232 | exit 233 | ;; 234 | -u|--unmute) 235 | systemd-cat -t "livecdsound" printf "Unmuting all cards" 236 | unmute_all_cards 237 | ;; 238 | -p|--pick) 239 | pick_a_card 240 | ;; 241 | *) 242 | echo "error: Unsupported argument" 243 | usage 244 | exit 1 245 | ;; 246 | esac 247 | shift 248 | done 249 | -------------------------------------------------------------------------------- /chimeraos/airootfs/usr/local/share/livecd-sound/asound.conf.in: -------------------------------------------------------------------------------- 1 | Defaults node 2 | defaults.ctl.card %card%; 3 | defaults.pcm.card %card%; 4 | -------------------------------------------------------------------------------- /chimeraos/bootstrap_packages.x86_64: -------------------------------------------------------------------------------- 1 | arch-install-scripts 2 | base 3 | -------------------------------------------------------------------------------- /chimeraos/efiboot/loader/entries/archiso-x86_64-linux.conf: -------------------------------------------------------------------------------- 1 | # 2 | # SPDX-License-Identifier: GPL-3.0-or-later 3 | 4 | title Install ChimeraOS 5 | linux /%INSTALL_DIR%/boot/x86_64/vmlinuz-linux-chimeraos 6 | initrd /%INSTALL_DIR%/boot/x86_64/initramfs-linux-chimeraos.img 7 | options archisobasedir=%INSTALL_DIR% archisolabel=%ARCHISO_LABEL% nomodeset 8 | -------------------------------------------------------------------------------- /chimeraos/efiboot/loader/loader.conf: -------------------------------------------------------------------------------- 1 | # 2 | # SPDX-License-Identifier: GPL-3.0-or-later 3 | 4 | timeout 15 5 | default archiso-x86_64-linux.conf 6 | -------------------------------------------------------------------------------- /chimeraos/packages.x86_64: -------------------------------------------------------------------------------- 1 | # 2 | # SPDX-License-Identifier: GPL-3.0-or-later 3 | 4 | acpica 5 | amd-ucode 6 | b43-fwcutter 7 | base 8 | broadcom-wl-dkms 9 | btrfs-progs 10 | cpio 11 | dhcpcd 12 | diffutils 13 | dosfstools 14 | efibootmgr 15 | git 16 | intel-ucode 17 | jq 18 | libnewt 19 | linux-chimeraos 20 | linux-chimeraos-headers 21 | linux-firmware 22 | mkinitcpio 23 | mkinitcpio-archiso 24 | nano 25 | netctl 26 | openssh 27 | parted 28 | syslinux 29 | usbutils 30 | wget 31 | zsh 32 | frzr 33 | networkmanager 34 | -------------------------------------------------------------------------------- /chimeraos/pacman.conf.template: -------------------------------------------------------------------------------- 1 | # 2 | # /etc/pacman.conf 3 | # 4 | # See the pacman.conf(5) manpage for option and repository directives 5 | 6 | # 7 | # GENERAL OPTIONS 8 | # 9 | [options] 10 | # The following paths are commented out with their default values listed. 11 | # If you wish to use different paths, uncomment and update the paths. 12 | #RootDir = / 13 | #DBPath = /var/lib/pacman/ 14 | #CacheDir = /var/cache/pacman/pkg/ 15 | #LogFile = /var/log/pacman.log 16 | #GPGDir = /etc/pacman.d/gnupg/ 17 | #HookDir = /etc/pacman.d/hooks/ 18 | HoldPkg = pacman glibc 19 | #XferCommand = /usr/bin/curl -C - -f %u > %o 20 | #XferCommand = /usr/bin/wget --passive-ftp -c -O %o %u 21 | #CleanMethod = KeepInstalled 22 | #UseDelta = 0.7 23 | Architecture = auto 24 | 25 | # Pacman won't upgrade packages listed in IgnorePkg and members of IgnoreGroup 26 | #IgnorePkg = 27 | #IgnoreGroup = 28 | 29 | #NoUpgrade = 30 | #NoExtract = 31 | 32 | # Misc options 33 | #UseSyslog 34 | #Color 35 | #TotalDownload 36 | # We cannot check disk space from within a chroot environment 37 | #CheckSpace 38 | #VerbosePkgLists 39 | 40 | # By default, pacman accepts packages signed by keys that its local keyring 41 | # trusts (see pacman-key and its man page), as well as unsigned packages. 42 | SigLevel = Required DatabaseOptional 43 | LocalFileSigLevel = Optional 44 | #RemoteFileSigLevel = Required 45 | 46 | # NOTE: You must run `pacman-key --init` before first using pacman; the local 47 | # keyring can then be populated with the keys of all official Arch Linux 48 | # packagers with `pacman-key --populate archlinux`. 49 | 50 | # 51 | # REPOSITORIES 52 | # - can be defined here or included from another file 53 | # - pacman will search repositories in the order defined here 54 | # - local/custom mirrors can be added here or in separate files 55 | # - repositories listed first will take precedence when packages 56 | # have identical names, regardless of version number 57 | # - URLs will have $repo replaced by the name of the current repo 58 | # - URLs will have $arch replaced by the name of the architecture 59 | # 60 | # Repository entries are of the format: 61 | # [repo-name] 62 | # Server = ServerName 63 | # Include = IncludePath 64 | # 65 | # The header [repo-name] is crucial - it must be present and 66 | # uncommented to enable the repo. 67 | # 68 | 69 | # The testing repositories are disabled by default. To enable, uncomment the 70 | # repo name header and Include lines. You can add preferred servers immediately 71 | # after the header, and they will be used before the default mirrors. 72 | 73 | #[testing] 74 | #Include = /etc/pacman.d/mirrorlist 75 | 76 | [core] 77 | Include = /etc/pacman.d/mirrorlist 78 | 79 | [extra] 80 | Include = /etc/pacman.d/mirrorlist 81 | 82 | #[community-testing] 83 | #Include = /etc/pacman.d/mirrorlist 84 | 85 | [community] 86 | Include = /etc/pacman.d/mirrorlist 87 | 88 | # If you want to run 32 bit applications on your x86_64 system, 89 | # enable the multilib repositories as required here. 90 | 91 | #[multilib-testing] 92 | #Include = /etc/pacman.d/mirrorlist 93 | 94 | #[multilib] 95 | #Include = /etc/pacman.d/mirrorlist 96 | 97 | # An example of a custom package repository. See the pacman manpage for 98 | # tips on creating your own repositories. 99 | #[custom] 100 | #SigLevel = Optional TrustAll 101 | #Server = file:///home/custompkgs 102 | 103 | [chimeraos] 104 | SigLevel = Optional TrustAll 105 | Server = file://LOCAL_REPO 106 | -------------------------------------------------------------------------------- /chimeraos/profiledef.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | # shellcheck disable=SC2034 3 | 4 | iso_name="chimeraos" 5 | iso_label="CHIMERAOS_$(date +%Y%m)" 6 | iso_publisher="ChimeraOS " 7 | iso_application="ChimeraOS Installer" 8 | iso_version=$(date +%Y.%m.%d) 9 | install_dir="arch" 10 | buildmodes=('iso') 11 | bootmodes=('bios.syslinux.mbr' 'bios.syslinux.eltorito' 'uefi-x64.systemd-boot.esp' 'uefi-x64.systemd-boot.eltorito') 12 | arch="x86_64" 13 | pacman_conf="pacman.conf" 14 | airootfs_image_type="squashfs" 15 | airootfs_image_tool_options=('-comp' 'xz' '-Xbcj' 'x86' '-b' '1M' '-Xdict-size' '1M') 16 | file_permissions=( 17 | ["/etc/shadow"]="0:0:400" 18 | ["/root"]="0:0:750" 19 | ["/root/install.sh"]="0:0:755" 20 | ["/root/.automated_script.sh"]="0:0:755" 21 | ["/usr/local/bin/choose-mirror"]="0:0:755" 22 | ["/usr/local/bin/Installation_guide"]="0:0:755" 23 | ["/usr/local/bin/livecd-sound"]="0:0:755" 24 | ) 25 | -------------------------------------------------------------------------------- /chimeraos/syslinux/archiso_head.cfg: -------------------------------------------------------------------------------- 1 | # 2 | # SPDX-License-Identifier: GPL-3.0-or-later 3 | 4 | SERIAL 0 115200 5 | UI vesamenu.c32 6 | MENU TITLE ChimeraOS 7 | MENU BACKGROUND splash.png 8 | 9 | MENU WIDTH 78 10 | MENU MARGIN 4 11 | MENU ROWS 7 12 | MENU VSHIFT 10 13 | MENU TABMSGROW 14 14 | MENU CMDLINEROW 14 15 | MENU HELPMSGROW 16 16 | MENU HELPMSGENDROW 29 17 | 18 | # Refer to http://syslinux.zytor.com/wiki/index.php/Doc/menu 19 | 20 | MENU COLOR border 30;44 #40ffffff #a0000000 std 21 | MENU COLOR title 1;36;44 #9033ccff #a0000000 std 22 | MENU COLOR sel 7;37;40 #e0ffffff #20ffffff all 23 | MENU COLOR unsel 37;44 #50ffffff #a0000000 std 24 | MENU COLOR help 37;40 #c0ffffff #a0000000 std 25 | MENU COLOR timeout_msg 37;40 #80ffffff #00000000 std 26 | MENU COLOR timeout 1;37;40 #c0ffffff #00000000 std 27 | MENU COLOR msg07 37;40 #90ffffff #a0000000 std 28 | MENU COLOR tabmsg 31;40 #30ffffff #00000000 std 29 | 30 | MENU CLEAR 31 | MENU IMMEDIATE 32 | -------------------------------------------------------------------------------- /chimeraos/syslinux/archiso_pxe-linux.cfg: -------------------------------------------------------------------------------- 1 | # 2 | # SPDX-License-Identifier: GPL-3.0-or-later 3 | 4 | LABEL arch64_nbd 5 | TEXT HELP 6 | Boot the ChimeraOS installer. 7 | It allows you to install ChimeraOS. 8 | ENDTEXT 9 | MENU LABEL Arch Linux install medium (x86_64, NBD) 10 | LINUX /%INSTALL_DIR%/boot/x86_64/vmlinuz-linux 11 | INITRD /%INSTALL_DIR%/boot/intel-ucode.img,/%INSTALL_DIR%/boot/amd-ucode.img,/%INSTALL_DIR%/boot/x86_64/initramfs-linux.img 12 | APPEND archisobasedir=%INSTALL_DIR% archisolabel=%ARCHISO_LABEL% archiso_nbd_srv=${pxeserver} checksum verify 13 | SYSAPPEND 3 14 | 15 | LABEL arch64_nfs 16 | TEXT HELP 17 | Boot the ChimeraOS installer. 18 | It allows you to install ChimeraOS. 19 | ENDTEXT 20 | MENU LABEL Arch Linux install medium (x86_64, NFS) 21 | LINUX /%INSTALL_DIR%/boot/x86_64/vmlinuz-linux 22 | INITRD /%INSTALL_DIR%/boot/intel-ucode.img,/%INSTALL_DIR%/boot/amd-ucode.img,/%INSTALL_DIR%/boot/x86_64/initramfs-linux.img 23 | APPEND archisobasedir=%INSTALL_DIR% archiso_nfs_srv=${pxeserver}:/run/archiso/bootmnt checksum verify 24 | SYSAPPEND 3 25 | 26 | LABEL arch64_http 27 | TEXT HELP 28 | Boot the ChimeraOS installer. 29 | It allows you to install ChimeraOS. 30 | ENDTEXT 31 | MENU LABEL Arch Linux install medium (x86_64, HTTP) 32 | LINUX /%INSTALL_DIR%/boot/x86_64/vmlinuz-linux 33 | INITRD /%INSTALL_DIR%/boot/intel-ucode.img,/%INSTALL_DIR%/boot/amd-ucode.img,/%INSTALL_DIR%/boot/x86_64/initramfs-linux.img 34 | APPEND archisobasedir=%INSTALL_DIR% archiso_http_srv=http://${pxeserver}/ checksum verify 35 | SYSAPPEND 3 36 | -------------------------------------------------------------------------------- /chimeraos/syslinux/archiso_pxe.cfg: -------------------------------------------------------------------------------- 1 | # 2 | # SPDX-License-Identifier: GPL-3.0-or-later 3 | 4 | INCLUDE archiso_head.cfg 5 | 6 | INCLUDE archiso_pxe-linux.cfg 7 | 8 | INCLUDE archiso_tail.cfg 9 | -------------------------------------------------------------------------------- /chimeraos/syslinux/archiso_sys-linux.cfg: -------------------------------------------------------------------------------- 1 | # 2 | # SPDX-License-Identifier: GPL-3.0-or-later 3 | 4 | LABEL arch64 5 | TEXT HELP 6 | Boot the ChimeraOS installer. 7 | It allows you to install ChimeraOS. 8 | ENDTEXT 9 | MENU LABEL Install ChimeraOS 10 | LINUX /%INSTALL_DIR%/boot/x86_64/vmlinuz-linux-chimeraos 11 | INITRD /%INSTALL_DIR%/boot/intel-ucode.img,/%INSTALL_DIR%/boot/amd-ucode.img,/%INSTALL_DIR%/boot/x86_64/initramfs-linux-chimeraos.img 12 | APPEND archisobasedir=%INSTALL_DIR% archisolabel=%ARCHISO_LABEL% nomodeset 13 | -------------------------------------------------------------------------------- /chimeraos/syslinux/archiso_sys.cfg: -------------------------------------------------------------------------------- 1 | # 2 | # SPDX-License-Identifier: GPL-3.0-or-later 3 | 4 | INCLUDE archiso_head.cfg 5 | 6 | DEFAULT arch64 7 | TIMEOUT 150 8 | 9 | INCLUDE archiso_sys-linux.cfg 10 | 11 | INCLUDE archiso_tail.cfg 12 | -------------------------------------------------------------------------------- /chimeraos/syslinux/archiso_tail.cfg: -------------------------------------------------------------------------------- 1 | # 2 | # SPDX-License-Identifier: GPL-3.0-or-later 3 | 4 | LABEL existing 5 | TEXT HELP 6 | Boot an existing operating system. 7 | Press TAB to edit the disk and partition number to boot. 8 | ENDTEXT 9 | MENU LABEL Boot existing OS 10 | COM32 chain.c32 11 | APPEND hd0 0 12 | 13 | LABEL reboot 14 | TEXT HELP 15 | Reboot computer. 16 | The computer's firmware must support APM. 17 | ENDTEXT 18 | MENU LABEL Reboot 19 | COM32 reboot.c32 20 | 21 | LABEL poweroff 22 | TEXT HELP 23 | Power off computer. 24 | The computer's firmware must support APM. 25 | ENDTEXT 26 | MENU LABEL Power Off 27 | COM32 poweroff.c32 28 | -------------------------------------------------------------------------------- /chimeraos/syslinux/splash.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/3003n/install-media/8bc4d326b79544beb4ef94f7d87c77d21210bd5d/chimeraos/syslinux/splash.png -------------------------------------------------------------------------------- /chimeraos/syslinux/syslinux.cfg: -------------------------------------------------------------------------------- 1 | # 2 | # SPDX-License-Identifier: GPL-3.0-or-later 3 | 4 | DEFAULT select 5 | 6 | LABEL select 7 | COM32 whichsys.c32 8 | APPEND -pxe- pxe -sys- sys -iso- sys 9 | 10 | LABEL pxe 11 | CONFIG archiso_pxe.cfg 12 | 13 | LABEL sys 14 | CONFIG archiso_sys.cfg 15 | -------------------------------------------------------------------------------- /docker/Dockerfile: -------------------------------------------------------------------------------- 1 | #Dockerfile for building ChimeraOS install-media 2 | #Based on Arch 3 | 4 | FROM archlinux:base-devel 5 | MAINTAINER Wouter Wijsman 6 | 7 | #Install archiso 8 | RUN pacman-key --init && \ 9 | pacman -Sy --noconfirm archlinux-keyring && \ 10 | pacman-key --populate archlinux && \ 11 | pacman --noconfirm -Syu 12 | RUN pacman --noconfirm -S --needed archiso lynx git pyalpm python-commonmark python-markdown-it-py python-wheel python-build python-installer python-setuptools python-hatchling 13 | RUN echo "%wheel ALL=(ALL) NOPASSWD: ALL" >> /etc/sudoers && \ 14 | useradd build -G wheel -m 15 | RUN su - build -c "git clone https://aur.archlinux.org/pikaur.git /tmp/pikaur" && \ 16 | su - build -c "cd /tmp/pikaur && makepkg -f" && \ 17 | pacman --noconfirm -U /tmp/pikaur/pikaur-*.pkg.tar.zst 18 | 19 | # Add a fake systemd-run script to workaround pikaur requirement. 20 | RUN echo -e "#!/bin/bash\nif [[ \"$1\" == \"--version\" ]]; then echo 'fake 244 version'; fi\nmkdir -p /var/cache/pikaur\n" > /usr/bin/systemd-run && \ 21 | chmod +x /usr/bin/systemd-run 22 | 23 | #set working dir, you'll have to mount something yourself here 24 | WORKDIR /root/chimeraos 25 | 26 | # Build pikaur packages as the 'build' user 27 | ENV BUILD_USER "build" 28 | 29 | ENV GNUPGHOME "/etc/pacman.d/gnupg" 30 | 31 | #Copy archiso files from this git repo 32 | ADD chimeraos /root/chimeraos 33 | --------------------------------------------------------------------------------