parent
21dd295259
commit
f927fb6e6a
|
|
@ -15,7 +15,7 @@ from .hardware import SysInfo
|
||||||
from .locale import LocaleConfiguration
|
from .locale import LocaleConfiguration
|
||||||
from .locale import verify_keyboard_layout, verify_x11_keyboard_layout
|
from .locale import verify_keyboard_layout, verify_x11_keyboard_layout
|
||||||
from .luks import Luks2
|
from .luks import Luks2
|
||||||
from .mirrors import use_mirrors, MirrorConfiguration, add_custom_mirrors
|
from .mirrors import MirrorConfiguration
|
||||||
from .models.bootloader import Bootloader
|
from .models.bootloader import Bootloader
|
||||||
from .models.network_configuration import Nic
|
from .models.network_configuration import Nic
|
||||||
from .models.users import User
|
from .models.users import User
|
||||||
|
|
@ -318,17 +318,44 @@ class Installer:
|
||||||
def post_install_check(self, *args: str, **kwargs: str) -> List[str]:
|
def post_install_check(self, *args: str, **kwargs: str) -> List[str]:
|
||||||
return [step for step, flag in self.helper_flags.items() if flag is False]
|
return [step for step, flag in self.helper_flags.items() if flag is False]
|
||||||
|
|
||||||
def set_mirrors(self, mirror_config: MirrorConfiguration):
|
def set_mirrors(self, mirror_config: MirrorConfiguration, on_target: bool = False):
|
||||||
|
"""
|
||||||
|
Set the mirror configuration for the installation.
|
||||||
|
|
||||||
|
:param mirror_config: The mirror configuration to use.
|
||||||
|
:type mirror_config: MirrorConfiguration
|
||||||
|
|
||||||
|
:on_target: Whether to set the mirrors on the target system or the live system.
|
||||||
|
:param on_target: bool
|
||||||
|
"""
|
||||||
|
debug('Setting mirrors')
|
||||||
|
|
||||||
for plugin in plugins.values():
|
for plugin in plugins.values():
|
||||||
if hasattr(plugin, 'on_mirrors'):
|
if hasattr(plugin, 'on_mirrors'):
|
||||||
if result := plugin.on_mirrors(mirror_config):
|
if result := plugin.on_mirrors(mirror_config):
|
||||||
mirror_config = result
|
mirror_config = result
|
||||||
|
|
||||||
destination = f'{self.target}/etc/pacman.d/mirrorlist'
|
if on_target:
|
||||||
if mirror_config.mirror_regions:
|
local_pacman_conf = Path(f'{self.target}/etc/pacman.conf')
|
||||||
use_mirrors(mirror_config.mirror_regions, destination)
|
local_mirrorlist_conf = Path(f'{self.target}/etc/pacman.d/mirrorlist')
|
||||||
if mirror_config.custom_mirrors:
|
else:
|
||||||
add_custom_mirrors(mirror_config.custom_mirrors)
|
local_pacman_conf = Path('/etc/pacman.conf')
|
||||||
|
local_mirrorlist_conf = Path('/etc/pacman.d/mirrorlist')
|
||||||
|
|
||||||
|
mirrorlist_config = mirror_config.mirrorlist_config()
|
||||||
|
pacman_config = mirror_config.pacman_config()
|
||||||
|
|
||||||
|
if pacman_config:
|
||||||
|
debug(f'Pacman config: {pacman_config}')
|
||||||
|
|
||||||
|
with local_pacman_conf.open('a') as fp:
|
||||||
|
fp.write(pacman_config)
|
||||||
|
|
||||||
|
if mirrorlist_config:
|
||||||
|
debug(f'Mirrorlist: {mirrorlist_config}')
|
||||||
|
|
||||||
|
with local_mirrorlist_conf.open('a') as fp:
|
||||||
|
fp.write(mirrorlist_config)
|
||||||
|
|
||||||
def genfstab(self, flags: str = '-pU'):
|
def genfstab(self, flags: str = '-pU'):
|
||||||
fstab_path = self.target / "etc" / "fstab"
|
fstab_path = self.target / "etc" / "fstab"
|
||||||
|
|
|
||||||
|
|
@ -5,7 +5,7 @@ from typing import Dict, Any, List, Optional, TYPE_CHECKING
|
||||||
|
|
||||||
from .menu import AbstractSubMenu, Selector, MenuSelectionType, Menu, ListManager, TextInput
|
from .menu import AbstractSubMenu, Selector, MenuSelectionType, Menu, ListManager, TextInput
|
||||||
from .networking import fetch_data_from_url
|
from .networking import fetch_data_from_url
|
||||||
from .output import info, warn, FormattedOutput
|
from .output import warn, FormattedOutput
|
||||||
from .storage import storage
|
from .storage import storage
|
||||||
|
|
||||||
if TYPE_CHECKING:
|
if TYPE_CHECKING:
|
||||||
|
|
@ -77,6 +77,28 @@ class MirrorConfiguration:
|
||||||
'custom_mirrors': [c.json() for c in self.custom_mirrors]
|
'custom_mirrors': [c.json() for c in self.custom_mirrors]
|
||||||
}
|
}
|
||||||
|
|
||||||
|
def mirrorlist_config(self) -> str:
|
||||||
|
config = ''
|
||||||
|
|
||||||
|
for region, mirrors in self.mirror_regions.items():
|
||||||
|
for mirror in mirrors:
|
||||||
|
config += f'\n\n## {region}\nServer = {mirror}\n'
|
||||||
|
|
||||||
|
for cm in self.custom_mirrors:
|
||||||
|
config += f'\n\n## {cm.name}\nServer = {cm.url}\n'
|
||||||
|
|
||||||
|
return config
|
||||||
|
|
||||||
|
def pacman_config(self) -> str:
|
||||||
|
config = ''
|
||||||
|
|
||||||
|
for mirror in self.custom_mirrors:
|
||||||
|
config += f'\n\n[{mirror.name}]\n'
|
||||||
|
config += f'SigLevel = {mirror.sign_check.value} {mirror.sign_option.value}\n'
|
||||||
|
config += f'Server = {mirror.url}\n'
|
||||||
|
|
||||||
|
return config
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def parse_args(cls, args: Dict[str, Any]) -> 'MirrorConfiguration':
|
def parse_args(cls, args: Dict[str, Any]) -> 'MirrorConfiguration':
|
||||||
config = MirrorConfiguration()
|
config = MirrorConfiguration()
|
||||||
|
|
@ -273,33 +295,6 @@ def select_custom_mirror(prompt: str = '', preset: List[CustomMirror] = []):
|
||||||
return custom_mirrors
|
return custom_mirrors
|
||||||
|
|
||||||
|
|
||||||
def add_custom_mirrors(mirrors: List[CustomMirror]):
|
|
||||||
"""
|
|
||||||
This will append custom mirror definitions in pacman.conf
|
|
||||||
|
|
||||||
:param mirrors: A list of custom mirrors
|
|
||||||
:type mirrors: List[CustomMirror]
|
|
||||||
"""
|
|
||||||
with open('/etc/pacman.conf', 'a') as pacman:
|
|
||||||
for mirror in mirrors:
|
|
||||||
pacman.write(f"\n\n[{mirror.name}]\n")
|
|
||||||
pacman.write(f"SigLevel = {mirror.sign_check.value} {mirror.sign_option.value}\n")
|
|
||||||
pacman.write(f"Server = {mirror.url}\n")
|
|
||||||
|
|
||||||
|
|
||||||
def use_mirrors(
|
|
||||||
regions: Dict[str, List[str]],
|
|
||||||
destination: str = '/etc/pacman.d/mirrorlist'
|
|
||||||
):
|
|
||||||
with open(destination, 'w') as fp:
|
|
||||||
for region, mirrors in regions.items():
|
|
||||||
for mirror in mirrors:
|
|
||||||
fp.write(f'## {region}\n')
|
|
||||||
fp.write(f'Server = {mirror}\n')
|
|
||||||
|
|
||||||
info(f'A new package mirror-list has been created: {destination}')
|
|
||||||
|
|
||||||
|
|
||||||
def _parse_mirror_list(mirrorlist: str) -> Dict[str, List[str]]:
|
def _parse_mirror_list(mirrorlist: str) -> Dict[str, List[str]]:
|
||||||
file_content = mirrorlist.split('\n')
|
file_content = mirrorlist.split('\n')
|
||||||
file_content = list(filter(lambda x: x, file_content)) # filter out empty lines
|
file_content = list(filter(lambda x: x, file_content)) # filter out empty lines
|
||||||
|
|
|
||||||
|
|
@ -10,7 +10,6 @@ from archinstall.lib.global_menu import GlobalMenu
|
||||||
from archinstall.lib.configuration import ConfigurationOutput
|
from archinstall.lib.configuration import ConfigurationOutput
|
||||||
from archinstall.lib.installer import Installer
|
from archinstall.lib.installer import Installer
|
||||||
from archinstall.lib.menu import Menu
|
from archinstall.lib.menu import Menu
|
||||||
from archinstall.lib.mirrors import use_mirrors, add_custom_mirrors
|
|
||||||
from archinstall.lib.models import AudioConfiguration
|
from archinstall.lib.models import AudioConfiguration
|
||||||
from archinstall.lib.models.bootloader import Bootloader
|
from archinstall.lib.models.bootloader import Bootloader
|
||||||
from archinstall.lib.models.network_configuration import NetworkConfiguration
|
from archinstall.lib.models.network_configuration import NetworkConfiguration
|
||||||
|
|
@ -132,12 +131,8 @@ def perform_installation(mountpoint: Path):
|
||||||
# generate encryption key files for the mounted luks devices
|
# generate encryption key files for the mounted luks devices
|
||||||
installation.generate_key_files()
|
installation.generate_key_files()
|
||||||
|
|
||||||
# Set mirrors used by pacstrap (outside of installation)
|
|
||||||
if mirror_config := archinstall.arguments.get('mirror_config', None):
|
if mirror_config := archinstall.arguments.get('mirror_config', None):
|
||||||
if mirror_config.mirror_regions:
|
installation.set_mirrors(mirror_config, on_target=False)
|
||||||
use_mirrors(mirror_config.mirror_regions)
|
|
||||||
if mirror_config.custom_mirrors:
|
|
||||||
add_custom_mirrors(mirror_config.custom_mirrors)
|
|
||||||
|
|
||||||
installation.minimal_installation(
|
installation.minimal_installation(
|
||||||
testing=enable_testing,
|
testing=enable_testing,
|
||||||
|
|
@ -148,7 +143,7 @@ def perform_installation(mountpoint: Path):
|
||||||
)
|
)
|
||||||
|
|
||||||
if mirror_config := archinstall.arguments.get('mirror_config', None):
|
if mirror_config := archinstall.arguments.get('mirror_config', None):
|
||||||
installation.set_mirrors(mirror_config) # Set the mirrors in the installation medium
|
installation.set_mirrors(mirror_config, on_target=True)
|
||||||
|
|
||||||
if archinstall.arguments.get('swap'):
|
if archinstall.arguments.get('swap'):
|
||||||
installation.setup_swap('zram')
|
installation.setup_swap('zram')
|
||||||
|
|
|
||||||
|
|
@ -4,7 +4,6 @@ from typing import TYPE_CHECKING, Any, Dict, Optional
|
||||||
|
|
||||||
import archinstall
|
import archinstall
|
||||||
from archinstall import SysInfo, info, debug
|
from archinstall import SysInfo, info, debug
|
||||||
from archinstall.lib import mirrors
|
|
||||||
from archinstall.lib import models
|
from archinstall.lib import models
|
||||||
from archinstall.lib import disk
|
from archinstall.lib import disk
|
||||||
from archinstall.lib import locale
|
from archinstall.lib import locale
|
||||||
|
|
@ -188,12 +187,8 @@ def perform_installation(mountpoint: Path, exec_mode: ExecutionMode):
|
||||||
# generate encryption key files for the mounted luks devices
|
# generate encryption key files for the mounted luks devices
|
||||||
installation.generate_key_files()
|
installation.generate_key_files()
|
||||||
|
|
||||||
# Set mirrors used by pacstrap (outside of installation)
|
|
||||||
if mirror_config := archinstall.arguments.get('mirror_config', None):
|
if mirror_config := archinstall.arguments.get('mirror_config', None):
|
||||||
if mirror_config.mirror_regions:
|
installation.set_mirrors(mirror_config)
|
||||||
mirrors.use_mirrors(mirror_config.mirror_regions)
|
|
||||||
if mirror_config.custom_mirrors:
|
|
||||||
mirrors.add_custom_mirrors(mirror_config.custom_mirrors)
|
|
||||||
|
|
||||||
installation.minimal_installation(
|
installation.minimal_installation(
|
||||||
testing=enable_testing,
|
testing=enable_testing,
|
||||||
|
|
@ -203,7 +198,7 @@ def perform_installation(mountpoint: Path, exec_mode: ExecutionMode):
|
||||||
)
|
)
|
||||||
|
|
||||||
if mirror_config := archinstall.arguments.get('mirror_config', None):
|
if mirror_config := archinstall.arguments.get('mirror_config', None):
|
||||||
installation.set_mirrors(mirror_config) # Set the mirrors in the installation medium
|
installation.set_mirrors(mirror_config, on_target=True)
|
||||||
|
|
||||||
if archinstall.arguments.get('swap'):
|
if archinstall.arguments.get('swap'):
|
||||||
installation.setup_swap('zram')
|
installation.setup_swap('zram')
|
||||||
|
|
|
||||||
|
|
@ -5,7 +5,6 @@ import archinstall
|
||||||
from archinstall import Installer
|
from archinstall import Installer
|
||||||
from archinstall import profile
|
from archinstall import profile
|
||||||
from archinstall import SysInfo
|
from archinstall import SysInfo
|
||||||
from archinstall import mirrors
|
|
||||||
from archinstall import disk
|
from archinstall import disk
|
||||||
from archinstall import menu
|
from archinstall import menu
|
||||||
from archinstall import models
|
from archinstall import models
|
||||||
|
|
@ -109,12 +108,8 @@ def perform_installation(mountpoint: Path):
|
||||||
# generate encryption key files for the mounted luks devices
|
# generate encryption key files for the mounted luks devices
|
||||||
installation.generate_key_files()
|
installation.generate_key_files()
|
||||||
|
|
||||||
# Set mirrors used by pacstrap (outside of installation)
|
|
||||||
if mirror_config := archinstall.arguments.get('mirror_config', None):
|
if mirror_config := archinstall.arguments.get('mirror_config', None):
|
||||||
if mirror_config.mirror_regions:
|
installation.set_mirrors(mirror_config)
|
||||||
mirrors.use_mirrors(mirror_config.mirror_regions)
|
|
||||||
if mirror_config.custom_mirrors:
|
|
||||||
mirrors.add_custom_mirrors(mirror_config.custom_mirrors)
|
|
||||||
|
|
||||||
installation.minimal_installation(
|
installation.minimal_installation(
|
||||||
testing=enable_testing,
|
testing=enable_testing,
|
||||||
|
|
@ -124,7 +119,7 @@ def perform_installation(mountpoint: Path):
|
||||||
)
|
)
|
||||||
|
|
||||||
if mirror_config := archinstall.arguments.get('mirror_config', None):
|
if mirror_config := archinstall.arguments.get('mirror_config', None):
|
||||||
installation.set_mirrors(mirror_config) # Set the mirrors in the installation medium
|
installation.set_mirrors(mirror_config, on_target=True)
|
||||||
|
|
||||||
if archinstall.arguments.get('swap'):
|
if archinstall.arguments.get('swap'):
|
||||||
installation.setup_swap('zram')
|
installation.setup_swap('zram')
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue