diff --git a/src/modules/displaymanager/displaymanager.conf b/src/modules/displaymanager/displaymanager.conf index c5c0e0b78..18e956f27 100644 --- a/src/modules/displaymanager/displaymanager.conf +++ b/src/modules/displaymanager/displaymanager.conf @@ -59,3 +59,11 @@ basicSetup: false # *displaymanagers* list (as the only one). # sysconfigSetup: false + +# Some DMs have specific settings. These can be customized here. +# +# greetd has configurable user and group; the user and group is created if it +# does not exist, and the user is set as default-session user. +greetd: + greeter_user: "tom_bombadil" + greeter_group: "wheel" diff --git a/src/modules/displaymanager/displaymanager.schema.yaml b/src/modules/displaymanager/displaymanager.schema.yaml index 7e4c5f54c..2f1da9d56 100644 --- a/src/modules/displaymanager/displaymanager.schema.yaml +++ b/src/modules/displaymanager/displaymanager.schema.yaml @@ -20,3 +20,10 @@ properties: required: [ executable, desktopFile ] basicSetup: { type: boolean, default: false } sysconfigSetup: { type: boolean, default: false } + greetd: + type: object + properties: + greeter_user: { type: string } + greeter_group: { type: string } + additionalProperties: false + diff --git a/src/modules/displaymanager/main.py b/src/modules/displaymanager/main.py index f908bc441..6f80751f2 100644 --- a/src/modules/displaymanager/main.py +++ b/src/modules/displaymanager/main.py @@ -983,6 +983,11 @@ def run(): # Do the actual configuration and collect messages dm_setup_message = [] for dm in dm_impl: + dm_specific_configuration = libcalamares.job.configuration.get(dm.name, None) + if dm_specific_configuration and isinstance(dm_specific_configuration, dict): + for k, v in dm_specific_configuration.items(): + if hasattr(dm, k): + setattr(dm, k, v) dm_message = None if enable_basic_setup: dm_message = dm.basic_setup() diff --git a/src/modules/mount/main.py b/src/modules/mount/main.py index 32da36dd0..cb36120d8 100644 --- a/src/modules/mount/main.py +++ b/src/modules/mount/main.py @@ -307,6 +307,12 @@ def mount_partition(root_mount_point, partition, partitions, mount_options, moun mount_option) != 0: libcalamares.utils.warning("Cannot mount {}".format(device)) +def enable_swap_partition(swap_partitions): + try: + for swap_device in swap_partitions: + libcalamares.utils.host_env_process_output(["swapon", swap_device]) + except subprocess.CalledProcessError: + libcalamares.utils.warning("Failed to swapon " + swap_device) def run(): """ @@ -321,6 +327,11 @@ def run(): return (_("Configuration Error"), _("No partitions are defined for
{!s}to use.").format("mount")) + # swap + swap_partitions = [p['device'] for p in partitions if p['fs'] == 'linuxswap' and p['claimed'] == False ] + if ( swap_partitions != [] ): + enable_swap_partition(swap_partitions) + root_mount_point = tempfile.mkdtemp(prefix="calamares-root-") # Get the mountOptions, if this is None, that is OK and will be handled later