Skip to content

Commit ab5f2d7

Browse files
committed
Remove the separate Pipewire profile type
This breaks an import cycle between applications/pipewire.py and models/audio_configuration.py.
1 parent 2e4603e commit ab5f2d7

7 files changed

Lines changed: 48 additions & 87 deletions

File tree

archinstall/default_profiles/applications/__init__.py

Whitespace-only changes.

archinstall/default_profiles/applications/pipewire.py

Lines changed: 0 additions & 56 deletions
This file was deleted.

archinstall/default_profiles/profile.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,6 @@ class ProfileType(Enum):
2828
CustomType = 'CustomType'
2929
# special things
3030
Tailored = 'Tailored'
31-
Application = 'Application'
3231

3332

3433
class GreeterType(Enum):

archinstall/lib/installer.py

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@
3737
from .hardware import SysInfo
3838
from .locale.utils import verify_keyboard_layout, verify_x11_keyboard_layout
3939
from .luks import Luks2
40+
from .models.audio_configuration import Audio, AudioConfiguration
4041
from .models.bootloader import Bootloader
4142
from .models.locale import LocaleConfiguration
4243
from .models.mirrors import MirrorConfiguration
@@ -1724,6 +1725,51 @@ def _service_state(self, service_name: str) -> str:
17241725
environment_vars={'SYSTEMD_COLORS': '0'}
17251726
).decode()
17261727

1728+
def _enable_pipewire_for_all(self, users: list[User]) -> None:
1729+
for user in users:
1730+
# Create the full path for enabling the pipewire systemd items
1731+
service_dir = self.target / "home" / user.username / ".config" / "systemd" / "user" / "default.target.wants"
1732+
service_dir.mkdir(parents=True, exist_ok=True)
1733+
1734+
# Set ownership of the entire user catalogue
1735+
self.arch_chroot(f'chown -R {user.username}:{user.username} /home/{user.username}')
1736+
1737+
# symlink in the correct pipewire systemd items
1738+
self.arch_chroot(
1739+
f'ln -sf /usr/lib/systemd/user/pipewire-pulse.service /home/{user.username}/.config/systemd/user/default.target.wants/pipewire-pulse.service',
1740+
run_as=user.username
1741+
)
1742+
self.arch_chroot(
1743+
f'ln -sf /usr/lib/systemd/user/pipewire-pulse.socket /home/{user.username}/.config/systemd/user/default.target.wants/pipewire-pulse.socket',
1744+
run_as=user.username
1745+
)
1746+
1747+
def install_audio_config(self, audio_config: AudioConfiguration, users: list[User] | None) -> None:
1748+
info(f'Installing audio server: {audio_config.audio.name}')
1749+
1750+
match audio_config.audio:
1751+
case Audio.PIPEWIRE:
1752+
self.add_additional_packages([
1753+
'pipewire',
1754+
'pipewire-alsa',
1755+
'pipewire-jack',
1756+
'pipewire-pulse',
1757+
'gst-plugin-pipewire',
1758+
'libpulse',
1759+
'wireplumber',
1760+
])
1761+
if users is not None:
1762+
self._enable_pipewire_for_all(users)
1763+
case Audio.PULSEAUDIO:
1764+
self.add_additional_packages("pulseaudio")
1765+
1766+
if audio_config.audio != Audio.NO_AUDIO:
1767+
if SysInfo.requires_sof_fw():
1768+
self.add_additional_packages('sof-firmware')
1769+
1770+
if SysInfo.requires_alsa_fw():
1771+
self.add_additional_packages('alsa-firmware')
1772+
17271773

17281774
def accessibility_tools_in_use() -> bool:
17291775
return os.system('systemctl is-active --quiet espeakup.service') == 0
Lines changed: 0 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,5 @@
11
from dataclasses import dataclass
22
from enum import StrEnum, auto
3-
from typing import TYPE_CHECKING
4-
5-
from ..hardware import SysInfo
6-
from ..output import info
7-
8-
if TYPE_CHECKING:
9-
from archinstall.lib.installer import Installer
103

114

125
class Audio(StrEnum):
@@ -29,24 +22,3 @@ def parse_arg(arg: dict[str, str]) -> 'AudioConfiguration':
2922
return AudioConfiguration(
3023
Audio(arg['audio'])
3124
)
32-
33-
def install_audio_config(
34-
self,
35-
installation: 'Installer'
36-
) -> None:
37-
info(f'Installing audio server: {self.audio.name}')
38-
39-
from ...default_profiles.applications.pipewire import PipewireProfile
40-
41-
match self.audio:
42-
case Audio.PIPEWIRE:
43-
PipewireProfile().install(installation)
44-
case Audio.PULSEAUDIO:
45-
installation.add_additional_packages("pulseaudio")
46-
47-
if self.audio != Audio.NO_AUDIO:
48-
if SysInfo.requires_sof_fw():
49-
installation.add_additional_packages('sof-firmware')
50-
51-
if SysInfo.requires_alsa_fw():
52-
installation.add_additional_packages('alsa-firmware')

archinstall/scripts/guided.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -109,7 +109,7 @@ def perform_installation(mountpoint: Path) -> None:
109109

110110
audio_config = config.audio_config
111111
if audio_config:
112-
audio_config.install_audio_config(installation)
112+
installation.install_audio_config(audio_config, users)
113113
else:
114114
info("No audio server will be installed")
115115

examples/interactive_installation.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -108,7 +108,7 @@ def perform_installation(mountpoint: Path) -> None:
108108

109109
audio_config = config.audio_config
110110
if audio_config:
111-
audio_config.install_audio_config(installation)
111+
installation.install_audio_config(audio_config, users)
112112
else:
113113
info("No audio server will be installed")
114114

0 commit comments

Comments
 (0)