Send patches - preferably formatted by git format-patch - to patches at archlinux32 dot org.
summaryrefslogtreecommitdiff
path: root/examples/minimal.py
blob: 8b4c847f468aec9318c0276e7724bc454aaaed70 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
import archinstall

# Select a harddrive and a disk password
from archinstall import User

archinstall.log("Minimal only supports:")
archinstall.log(" * Being installed to a single disk")

if archinstall.arguments.get('help', None):
	archinstall.log(" - Optional disk encryption via --!encryption-password=<password>")
	archinstall.log(" - Optional filesystem type via --filesystem=<fs type>")
	archinstall.log(" - Optional systemd network via --network")

archinstall.arguments['harddrive'] = archinstall.select_disk(archinstall.all_blockdevices())


def install_on(mountpoint):
	# We kick off the installer by telling it where the
	with archinstall.Installer(mountpoint) as installation:
		# Strap in the base system, add a boot loader and configure
		# some other minor details as specified by this profile and user.
		if installation.minimal_installation():
			installation.set_hostname('minimal-arch')
			installation.add_bootloader()

			# Optionally enable networking:
			if archinstall.arguments.get('network', None):
				installation.copy_iso_network_config(enable_services=True)

			installation.add_additional_packages(['nano', 'wget', 'git'])
			installation.install_profile('minimal')

			user = User('devel', 'devel', False)
			installation.create_users(user)

	# Once this is done, we output some useful information to the user
	# And the installation is complete.
	archinstall.log("There are two new accounts in your installation after reboot:")
	archinstall.log(" * root (password: airoot)")
	archinstall.log(" * devel (password: devel)")


if archinstall.arguments['harddrive']:
	archinstall.arguments['harddrive'].keep_partitions = False

	print(f" ! Formatting {archinstall.arguments['harddrive']} in ", end='')
	archinstall.do_countdown()

	# First, we configure the basic filesystem layout
	with archinstall.Filesystem(archinstall.arguments['harddrive'], archinstall.GPT) as fs:
		# We use the entire disk instead of setting up partitions on your own
		if archinstall.arguments['harddrive'].keep_partitions is False:
			fs.use_entire_disk(root_filesystem_type=archinstall.arguments.get('filesystem', 'btrfs'))

		boot = fs.find_partition('/boot')
		root = fs.find_partition('/')

		boot.format('fat32')

		# We encrypt the root partition if we got a password to do so with,
		# Otherwise we just skip straight to formatting and installation
		if archinstall.arguments.get('!encryption-password', None):
			root.encrypted = True
			root.encrypt(password=archinstall.arguments.get('!encryption-password', None))

			with archinstall.luks2(root, 'luksloop', archinstall.arguments.get('!encryption-password', None)) as unlocked_root:
				unlocked_root.format(root.filesystem)
				unlocked_root.mount('/mnt')
		else:
			root.format(root.filesystem)
			root.mount('/mnt')

		boot.mount('/mnt/boot')

install_on('/mnt')