index : archinstall32 | |
Archlinux32 installer | gitolite user |
summaryrefslogtreecommitdiff |
author | Anton Hvornum <anton.feeds+github@gmail.com> | 2020-07-07 23:56:17 +0000 |
---|---|---|
committer | Anton Hvornum <anton.feeds+github@gmail.com> | 2020-07-07 23:56:17 +0000 |
commit | 60f581319f99afbd678b4f5f56193d588228cbe2 (patch) | |
tree | 54bad414cc43893b4316f3c0d9af191ea7ecdea2 /examples/guided.py | |
parent | e17fac498a778d5f6c83a40d2334a2af7a0e5397 (diff) |
-rw-r--r-- | examples/guided.py | 73 |
diff --git a/examples/guided.py b/examples/guided.py new file mode 100644 index 00000000..c84b5e56 --- /dev/null +++ b/examples/guided.py @@ -0,0 +1,73 @@ +import archinstall, getpass + +# Unmount and close previous runs +archinstall.sys_command(f'umount -R /mnt', surpress_errors=True) +archinstall.sys_command(f'cryptsetup close /dev/mapper/luksloop', surpress_errors=True) + +# Select a harddrive and a disk password +harddrive = archinstall.select_disk(archinstall.all_disks()) +while (disk_password := getpass.getpass(prompt='Enter disk encryption password (leave blank for no encryption): ')): + disk_password_verification = getpass.getpass(prompt='And one more time for verification: ') + if disk_password != disk_password_verification: + archinstall.log(' * Passwords did not match * ', bg='black', fg='red') + continue + break + +def perform_installation(device, boot_partition): + hostname = input('Desired hostname for the installation: ') + with archinstall.Installer(device, hostname=hostname) as installation: + if installation.minimal_installation(): + installation.add_bootloader(boot_partition) + + packages = input('Additional packages aside from base (space separated): ').split(' ') + if len(packages) and packages[0] != '': + installation.add_additional_packages(packages) + + profile = input('Any particular profile you want to install: ') + if len(profile.strip()): + installation.install_profile(profile) + + while 1: + new_user = input('Any additional users to install (leave blank for no users): ') + if not len(new_user.strip()): break + new_user_passwd = getpass.getpass(prompt=f'Password for user {new_user}: ') + new_user_passwd_verify = getpass.getpass(prompt=f'Enter password again for verification: ') + if new_user_passwd != new_user_passwd_verify: + archinstall.log(' * Passwords did not match * ', bg='black', fg='red') + continue + + installation.user_create(new_user, new_user_passwd) + + while (root_pw := getpass.getpass(prompt='Enter root password (leave blank for no password): ')): + root_pw_verification = getpass.getpass(prompt='And one more time for verification: ') + if root_pw != root_pw_verification: + archinstall.log(' * Passwords did not match * ', bg='black', fg='red') + continue + installation.user_set_pw('root', root_pw) + break + + aur = input('Would you like AUR support? (leave blank for no): ') + if len(aur.strip()): + archinstall.log(' - AUR support provided by yay (https://aur.archlinux.org/packages/yay/)', bg='black', fg='white') + installation.add_AUR_support() + +with archinstall.Filesystem(harddrive, archinstall.GPT) as fs: + # Use partitioning helper to set up the disk partitions. + if disk_password: + fs.use_entire_disk('luks2') + else: + fs.use_entire_disk('ext4') + + if harddrive.partition[1].size == '512M': + raise OSError('Trying to encrypt the boot partition for petes sake..') + harddrive.partition[0].format('fat32') + + if disk_password: + # First encrypt and unlock, then format the desired partition inside the encrypted part. + with archinstall.luks2(harddrive.partition[1], 'luksloop', disk_password) as unlocked_device: + unlocked_device.format('btrfs') + + perform_installation(unlocked_device, harddrive.partition[0]) + else: + harddrive.partition[1].format('ext4') + perform_installation(harddrive.partition[1], harddrive.partition[0])
\ No newline at end of file |