Commit Graph

48 Commits

Author SHA1 Message Date
Victor Zacarias e24af61e22
Fix examples/config-sample.json and cover the example configs with a test (#4709)
* Fix examples/config-sample.json to match the current config format

The sample config has not been valid since the 2023 disk layout rework
and currently fails to parse, so the file the README points users at
cannot be used:

- sector_size was null, but SectorSize became a required object
- partitions were missing the dev_path key, which the parser reads
- the /home size used the Percent unit, which no longer exists
- /home started at 20 GiB while / ended at 20993 MiB, overlapping it
- gfx_driver kept the old "All open-source (default)" value

Sizes and keys now mirror what the installer itself writes when saving
a configuration.

* Cover the example configs with a parsing test

Nothing in the test suite or CI reads examples/, which is how the sample
config could stay broken for years while every other config surface kept
working. Parse both example files through ArchConfigHandler, and check
the partition entries directly since the parser only reaches them when
the configured device exists on the machine, which is never true in CI.

* Fail the partition test when the example config has none

The loops in test_example_config_partitions would not execute if
device_modifications or a device's partitions were empty, so the test
could pass while checking nothing.
2026-08-13 10:25:05 +10:00
Nathan Marley caf9cc8289
Fix WiFi SSIDs with spaces missing from scan list (#4634)
* Add tests for SSIDs with space

* Fix WiFi scan drop for spaced SSIDs

The wpa_cli scan_results puts the SSID last, splitting on all whitespace dropped
any network whose name contained spaces.
2026-08-10 19:01:45 +10:00
emanu cce0c47e11
Fix plugin (#4594)
* change behaviour to load plugin

* add checks in _write_plugin_to_temp_file

* modify test

* fixed test
2026-06-28 21:09:20 +02:00
Daniel Girtler c6a5a130a8
Refactor configuration file (#4583) 2026-06-28 21:04:20 +02:00
Daniel Girtler ac4bc442de
Refactor logging and formatting logic (#4542)
* Refactor logging and formatting

* Refactor logging and formatting

* Refactor logging and formatting

* Updaet
2026-05-19 17:48:03 +02:00
Daniel Girtler 516a61d8af
Enhance log sharing capability (#4526) 2026-05-15 21:38:17 +10:00
Softer ef1cfe7b56
Add share-log subcommand to upload install.log to paste.rs (#4511)
* Add --share-log flag to upload install.log to paste.rs

* Apply ruff-format to share_log.py

* Rework share-log per review: subcommand, TUI confirmation, truncate large logs

* Replace curl/SysCommand with urllib.request, remove defensive try/except

Per review: use stdlib urllib instead of shelling out to curl,
drop unnecessary try/except around TUI confirmation,
remove tempfile (content is passed directly as bytes).

* Fix TUI imports after ui module was pulled one level up (#4515)

* Decouple share_install_log from TUI module

* Add unit tests for share_install_log function

* Update docs to use share-log subcommand syntax
2026-05-07 10:18:56 +10:00
Softer 80da3f14a1
Add Pacman settings submenu with Color and ParallelDownloads (#4404)
* Add Pacman settings submenu with Color and ParallelDownloads

Replace the standalone Parallel Downloads menu item with a Pacman
submenu containing ParallelDownloads (default 5) and Color (default on).
Settings are applied to both live and target system pacman.conf.
Hidden behind --advanced flag.

Backward compatible with old configs using "parallel_downloads" key.

* Skip _apply_to_live when user exits Pacman menu without changes

* Use TypedDict for PacmanConfiguration serialization

* Show Pacman menu by default, keep ParallelDownloads behind --advanced
2026-04-13 18:37:51 +10:00
Daniel Girtler b2f413124b
Allow granular plasma configuration (#4389)
* Flexible plasma profile selection

* Update

* Update

* Update

* Update
2026-04-10 07:07:28 +02:00
Daniel Girtler 1764b4971d
Refactor mirrors (#4274) 2026-03-21 17:57:33 +11:00
Piyush Singh e74a72f482
fix: reintegrate PasswordStrength into password prompt (#4111) (#4291) 2026-03-18 22:48:05 +11:00
HADEON 2954e4397b
Feat: Zram algorithm config (#4042)
* Add configuration for swap algorithm. Backward compatible implementation

* Fix interaction to default to Yes and show (default)

* Fix mypy error

* Any -> str, str

* feedback Enums

* test file

* line length warning

* Renames

* Fix default values in TUI menu for display

* Address feedback

* More feedback, really appreciate it.

* Adapt to use same | None = None pattern

* Pytests

* Add missing import for Zram
2025-12-30 15:52:35 +11:00
Mariya d7b559c67e
feat(applications): add CUPS installation support (#4013)
* feat(applications): add CUPS installation support

* fix: use translation for print service preview_action

* fix: incorrect action for print service menu item

* chore: refactor naming, printer -> print service

* fix: commit untracked file

* chore: fix formatting to make linter happy
2025-12-21 14:30:11 +11:00
Mintsuki eb815d817f
Add dialog to install EFI bootloader to removable location (#3932)
* Add dialog to install EFI bootloader to removable location

This is just for GRUB and Limine for now.

* Move bootloader removable and UKI selections to bootloader submenu

* Update ask_for_bootloader_removable() prompt for ease of translation

* Fix issue where removable and UKI options were always enabled at first

* Minor cosmetic fixes to bootloader removable code

* Add has_removable_support to Bootloader

* Validate UKI and removable options in installer

* Use has_removable_support() where appropriate

* Fix potential AttributeError when bootloader_config is None

* Set default value for bootloader configuration menu item

* Update documentation after EFI removable/Limine changes

* Update limine.conf and non-removable location paths (as per Wiki)

* Do not create fallback boot menu entries when using UKIs on Limine

* Remove useless ask_* wrappers in bootloader_menu

* Improve bootloader menu previews

* Make bootloader menu __init__.py empty
2025-11-21 11:41:24 +11:00
Daniel Girtler ab1793a4f4
Add version to test (#3699) 2025-07-31 04:52:09 +00:00
Anton Hvornum 5355c7141a
Add --skip-boot to allow for bypassing installation of a bootloader (#3677)
* Adding the option to skip boot loader

* Fixed a variable complaint

* Fixed ruff and mypy

* Fixed mypy

* Fixed mypy

* Fixed import recursion

* Fixed ruff

* Fixed circular imports

* Fixed ruff

* Hiding the menu option for bootloader when --skip-boot is given. Still setting it default to None to avoid it sneaking into the config file or being set behind the scenes causing if statements to trigger.

* Created an Enum None type for Bootloader called NO_BOOTLOADER

* Fixed ruff

* Spelling error

* Hiding NO_BOOTLOADER if --skip-boot is omitted

* Fixed TUI error when bootloader was missing

* Fixed mypy complaints

* Fixed ruff complaint

* Made the Bootloader option visible during --skip-boot and set the default value to NO_BOOTLOADER when --skip-boot is present
2025-07-23 16:52:01 +02:00
Daniel Girtler 3e99cfbba7
Move users menu into authentication submenu (#3678)
* Move users menu into authentication submenu

* Tests

* Update

* Update
2025-07-22 08:57:39 +02:00
Daniel Girtler 725c3fed09
Rename network_configuration -> network (#3641) 2025-07-21 19:26:15 +00:00
Daniel Girtler e0c3bb3869
Move root password menu into authentication menu (#3650) 2025-07-18 05:53:31 +00:00
Daniel Girtler 47f4e63006
Rename profile_model -> profile (#3640) 2025-07-15 09:30:15 +02:00
Daniel Girtler 96aaf5b6ac
Rename module device_model -> device (#3639) 2025-07-15 09:29:58 +02:00
Daniel Girtler 55a383764f
Add support for U2F authentication (#3638)
* Add U2F login support

* Update

* Update

* Update

* Update
2025-06-30 21:51:45 +10:00
Daniel Girtler 77558e2be5
Fix 3598 - Utilize script field from config when present (#3611)
* Fix 3598 - Utilize script field from config when present

* Update

* Update
2025-06-20 15:58:14 +10:00
Daniel Girtler 37b3985625
Move audio configuration to application config (#3612) 2025-06-20 07:27:23 +10:00
Daniel Girtler 27f53717b0
Add bluetooth support (#3604)
* Add bluetooth option
2025-06-18 09:57:54 +02:00
Daniel Girtler cdb1debe2e
Move disk encryption into disk config menu (#3502) 2025-05-25 21:23:37 +10:00
Daniel Girtler 5a54902935
Add support for Btrfs snapshots (#3500)
* Add btrfs snapshot support

* Update

* Update

* Update
2025-05-25 17:22:41 +10:00
Daniel Girtler d3f32f308c
Update ruff formatter (#3496)
* Update ruff formatter

* Update
2025-05-24 07:58:42 +00:00
Anton Hvornum 5a4773cdd3
Added --skip-wkd to skip waiting for the arch linux keyring wkd sync (#3483)
* Added --skip-wkd to skip waiting for the arch linux keyring wkd sync

* Package spelling error

* Forgot to add argument to Arguments()

* Added missing --skip-wkd arg to arg tester

* Corrected help text for --skip-wkd
2025-05-20 11:38:40 +02:00
Daniel Girtler 790a7a2be9
Fix 3474 (#3476)
* Fix 3474 - Parse mountpoint correctly

* Fix 3474 - Parse mountpoint correctly

* Update
2025-05-19 10:59:42 +02:00
Daniel Girtler c67ac97f18
Ruff formatting (#3459)
* Update

* Update
2025-05-15 14:26:41 +02:00
Daniel Girtler fae210dfea
Add optional file encryption for user credentials configuration (#3391)
* Optional encryption of user credentials configuration file

* Update README

* Update

* Update
2025-04-26 20:25:43 +10:00
Daniel Girtler 4f1d1b4739
Store password as hash instead of plaintext (#3276)
* Rework user password to be hash

* Update

* Update

* Update

* Update

* Update

* Update

* Update

* Update

* Generate yescrypt hash

* Update

* Update

* Update

* Update
2025-04-08 08:53:18 +02:00
Daniel Girtler 1b890492d0
Refactor code (#3247) 2025-03-25 09:49:18 +01:00
codefiles 16a84ba662
Disable default credentials save (#3290) 2025-03-22 15:21:43 +11:00
correctmost 6a90760e67
Clean up most no-implicit-reexport warnings from mypy (#3233)
This makes it easier to run mypy --strict from the command line
and should hopefully make it easier to clean up import cycles in
future commits.
2025-03-09 19:50:56 +11:00
Daniel Girtler 697ccd1ac5
Fix 2379 - Mirror and region definitions (#3223)
* Fix 2379 - Mirror and repository settings

* Fix alignment
2025-03-05 22:19:50 +11:00
Daniel Girtler 8b375c97a5
Fix version parsing for local branches (#3190)
* Fix version parsing for local branches

* Fix tests

* Fix tests
2025-02-23 09:44:25 +01:00
Daniel Girtler b57f7f91cf
Integrate new arguments data structure (#3167)
* Integrate new args dataclass

* Integrate args

* Update

* Update

* Update

* Update
2025-02-20 07:35:59 +11:00
Daniel Girtler fb159a8255
Fix 3081 - Local mirrorlist parsing bug (#3104)
* Fix 3081 - shortcircuit on empty mirror options

* Update

* Update
2025-01-21 18:40:54 +01:00
codefiles 9163e8c84c
disk: rework manual partitioning (#3071)
* disk: rework manual partitioning

* disk: fix end alignment

* disk: validate config

* test: fix disk config partition overlap
2025-01-08 07:44:03 +11:00
codefiles 6dab4650fa
audio: capitalize enums (#3067) 2025-01-03 15:24:10 +11:00
Daniel Girtler 1d278f8abd
Fix 2991 - Restructure the mirror list handling (#3007)
* Fix 2991 - mirror configuration

* Update

* Update

* Update
2024-12-08 08:58:16 +11:00
correctmost 11f8490b59
Enable the bad-indentation pylint rule and fix space indentations (#2968) 2024-11-30 22:54:53 +11:00
correctmost 544400606f
Enable mypy checks for tests/ files (#2963) 2024-11-30 20:00:35 +11:00
correctmost e49a679fb8
Enable pytest test runs on CI (#2947)
This commit also fixes fixture and test issues that caused failures.
2024-11-27 17:42:22 +11:00
correctmost 7bdef2f017
Fix mypy warnings in tests/test_args.py (#2945) 2024-11-27 06:46:17 +11:00
Daniel Girtler e51f7adf21
Dataclasses for args and config (#2936)
* Introduce dataclass for arguments and configuration

* Update

* Update
2024-11-26 11:08:36 +01:00