Commit Graph

32 Commits

Author SHA1 Message Date
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
correctmost e281c2fa6a
Split out Result and ResultType to break import cycle (#3387)
Previously, there was an import cycle between tui.menu_item and
tui.types.
2025-04-13 15:06:48 +10: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 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
correctmost 47736c4060
Avoid reassigning a parameter value to fix Pyright warnings (#3106) 2025-01-12 11:45:41 +11:00
correctmost e7f2a8c203
Fix some mypy warnings in archinstall/lib/ (#3103) 2025-01-11 15:44:43 +11:00
codefiles 18ef7fd469
Use Path.chmod() (#3051) 2025-01-03 13:41:41 +11:00
correctmost af043afa88
Enable the unnecessary-lambda pylint rule and fix warnings (#2983) 2024-12-01 17:44:39 +11:00
correctmost 604526c3c8
Enable the f-string ruff rule and fix warnings (#2965) 2024-11-30 20:03:09 +11:00
correctmost 8d807c08ee
Use precise type hints for most DeferredTranslation references (#2929)
The remaining "_: Any" instances will require accompanying code
changes.
2024-11-25 18:49:22 +11:00
correctmost 3255744278
Sort and format remaining imports (#2877)
This commit also enables isort rules in the Ruff config.
2024-11-19 11:18:47 +11:00
correctmost 25172bd0f8
Start replacing Optional with union syntax in lib/ (#2837) 2024-11-17 09:03:01 +11:00
Daniel Girtler b61b5c82fa
Simplify translation call in f-string (#2826) 2024-11-16 10:46:33 +01:00
correctmost c87c723549
Remove most deprecated typing.Dict usage (#2813) 2024-11-16 11:57:46 +11:00
Daniel Girtler 88b91ae201
Integrate new curses menu (#2663)
* Edit text menu

* Fix alignment

* Scroll functionality

* Fix flake8

* Migrate locales menu

* Fix language translation

* Fix interrupt

* Fix flake8

* Edit mode preset

* Convert print to tui prints

* Fix mypy

* Fix cycling through long menu

* Fix profile view

* Fix scrolling

* Fix scrolling

* Fix mypy

* Fix swiss script

* Display asterisk for passwords

* Corrected a variable usage in the local mirror parsing

* Made sure that curses menu selection on mirrors use url object from mirror.url instead of the class instance

* Fixed mypy type on mirror list

---------

Co-authored-by: Torxed <torxed@archlinux.org>
2024-11-15 08:23:22 +01:00
correctmost c7aeead7d2
Fix various mypy errors in archinstall/lib/ (#2640)
* Fix various mypy errors in archinstall/lib/

* Additional mypy fixes in archinstall/lib/ to pass CI checks
2024-08-28 05:43:54 +10:00
codefiles 5e59acf937
Add handling of signal interrupt and EOF at input prompts (#2154) 2023-10-10 10:00:22 +02:00
Himadri Bhattacharjee 1ae1f2ff11
Refactor installer and general design patterns (#1895)
* fix: refactor clear_vt100_escape_codes

* fix: check for structure being a dict after handling potential parsing errors

* refactor: use short circuit logic than if-elif-else chains

* fix: use or for nullish moutpoint attribute

* fix: better error handling for JSON from urls and paths

* chore: json_stream_to_structure documentation

* refactor: dry up relative and chroot path for custom command scripts

* refactor: use write_text for pathlib.Path object

* refactor: use sets to find intersection instead of filter and list

* refactor: replace loop with dictionary comprehension in preparing luks partition

* refactor: use walrus operator to check if luks_handler exists

* refactor: use read_text and splitlines for potential Path object

* fix: use keepends in splitlines for compatibility

* fix: use keepends in splitlines for compatibility

* feat: set pacman_conf Path as an attribute of installer

* fix: empty string is a part of any string, avoid tuples

* refactor: use iterator patterns to uncomment multilib and testing blocks

* fix: don't json.loads an already loaded structure

* fix: use fstab_path uniformly in genfstab

* fix: remove unused variable matched

* refactor: create separate class to modify pacman.conf in a single pass

* fix: remove unused attribute pacman_conf from installer

* fix: remove unused attribute pacman_conf from installer

* feat: add persist method for pacman.conf, rewrite only when needed

* fix: use path.write_text for locale.conf

* use `or` operator for nullish new_conf

* refactor: Installer.target is always a pathlib.Path object, do not check for string type

* fix: use Optional[str] in function type definition instead of sumtype of str and None

* fix: mypy type annotation

* fix: make flake8 happy

* chore: move pacman config and repo into pacman module

* refactor: use Pacman object instead of Installer's pacstrap method

* fix: break after first sync

* fix: keep old build script for now

* use nullish operator for base_packages and disk_encryption of Installer

* feat: use shutil.which instead of rolling our own implementation

* fix: check for binary only if list is not empty

* fix: import Enum and fix mypy errors

* refactor: use nullish operator for default values

* refactor: linear search for key in Installer._trace_log only once

* fix: use logs instead of the entirety of self._trace_log when searching for key

* refactor: do not copy slice of bytes for search

* refactor: use rfind only once to iterate over logs, do not raise ValueError in clear_vt100_escape_codes since TYPE_CHECKING will take care of it.

* refactor: try decoding trace log before falling back to strigification

* refactor: use an empty dict as default for callbacks in SysCommand.__init__

* refactor: use nullish or operator for slice start and end when not specified

* refactor: use nullish or operator for SysCommand session

* refactor: use pre-existing decode method in __repr__ for SysCommand

* fix: overindentation

* fix: use shallow copy of callbacks to prevent mutating the key-value relationships of the argument dict

* refactor: use truthy value of self.session is not None for json encoding SysCommand

* refactor: directly assign to SysCommand.session in create_session since it short circuits to True if already present

* refactor: use dict.items() instead of manually retrieving the value using the key

* refactor: user_config_to_json method sounds pretty self explanatory

* refactor: store path validity as boolean for return

* refactor: use pathlib.Path.write_text to write configs to destinations

* fix: cannot use assignment expressions with expression

* fix: use config_output.save for saving both config and creds

* refactor: switch dictionary keys and values for options to avoid redundancy

* refactor: use itertools.takewhile to collect locale.gen entries until the empty line

* refactor: use iterative approach for nvidia driver fix

* refactor: install packages if not nvidia

* refactor: return early if no profile is selected

* refactor: use strip to remove commented lines

* fix: install additional packages only when we have a driver

* fix: path with one command is matched as relative to '.'

* fix: remove translation for debug log

---------

Co-authored-by: Anton Hvornum <anton@hvornum.se>
2023-06-28 13:42:53 +02:00
bd-g 3267ee215a
Improve Save configuration UI - (re)allow for directly specifying custom path (#1728)
* align with newly merged master

* retry save config

* fix mypy error with str type - this menu with allows return a string

* Removed unused import

---------

Co-authored-by: Anton Hvornum <anton@hvornum.se>
2023-05-15 15:53:06 +02:00
Daniel Girtler 89cefb9a1c
Cleanup imports and unused code (#1801)
* Cleanup imports and unused code

* Update build check

* Keep deprecation exception

* Simplify logging

---------

Co-authored-by: Daniel Girtler <girtler.daniel@gmail.com>
2023-05-11 18:30:09 +02:00
Daniel Girtler c0a7d45a83
Fix 1792 (#1795)
Co-authored-by: Daniel Girtler <girtler.daniel@gmail.com>
2023-05-07 08:40:44 +02:00
Daniel Girtler 00b0ae7ba4
PyParted and a large rewrite of the underlying partitioning (#1604)
* Invert mypy files

* Add optional pre-commit hooks

* New profile structure

* Serialize profiles

* Use profile instead of classmethod

* Custom profile setup

* Separator between back

* Support profile import via url

* Move profiles module

* Refactor files

* Remove symlink

* Add user to docker group

* Update schema description

* Handle list services

* mypy fixes

* mypy fixes

* Rename profilesv2 to profiles

* flake8

* mypy again

* Support selecting DM

* Fix mypy

* Cleanup

* Update greeter setting

* Update schema

* Revert toml changes

* Poc external dependencies

* Dependency support

* New encryption menu

* flake8

* Mypy and flake8

* Unify lsblk command

* Update bootloader configuration

* Git hooks

* Fix import

* Pyparted

* Remove custom font setting

* flake8

* Remove default preview

* Manual partitioning menu

* Update structure

* Disk configuration

* Update filesystem

* luks2 encryption

* Everything works until installation

* Btrfsutil

* Btrfs handling

* Update btrfs

* Save encryption config

* Fix pipewire issue

* Update mypy version

* Update all pre-commit

* Update package versions

* Revert audio/pipewire

* Merge master PRs

* Add master changes

* Merge master changes

* Small renaming

* Pull master changes

* Reset disk enc after disk config change

* Generate locals

* Update naming

* Fix imports

* Fix broken sync

* Fix pre selection on table menu

* Profile menu

* Update profile

* Fix post_install

* Added python-pyparted to PKGBUILD, this requires [testing] to be enabled in order to run makepkg. Package still works via python -m build etc.

* Swaped around some setuptools logic in pyproject

Since we define `package-data` and `packages` there should be no need for:
```
[tool.setuptools.packages.find]
where = ["archinstall", "archinstall.*"]
```

* Removed pyproject collisions. Duplicate definitions.

* Made sure pyproject.toml includes languages

* Add example and update README

* Fix pyproject issues

* Generate locale

* Refactor imports

* Simplify imports

* Add profile description and package examples

* Align code

* Fix mypy

* Simplify imports

* Fix saving config

* Fix wrong luks merge

* Refactor installation

* Fix cdrom device loading

* Fix wrongly merged code

* Fix imports and greeter

* Don't terminate on partprobe error

* Use specific path on partprobe from luks

* Update archinstall/lib/disk/device_model.py

Co-authored-by: codefiles <11915375+codefiles@users.noreply.github.com>

* Update archinstall/lib/disk/device_model.py

Co-authored-by: codefiles <11915375+codefiles@users.noreply.github.com>

* Update github workflow to test archinstall installation

* Update sway merge

* Generate locales

* Update workflow

---------

Co-authored-by: Daniel Girtler <girtler.daniel@gmail.com>
Co-authored-by: Anton Hvornum <anton@hvornum.se>
Co-authored-by: Anton Hvornum <anton.feeds+github@gmail.com>
Co-authored-by: codefiles <11915375+codefiles@users.noreply.github.com>
2023-04-19 12:55:42 +02:00
Bao a822735dfe
Guard against null in config processor (#1705)
Fixes #1704
2023-03-30 10:08:08 +02:00
Daniel Girtler 83f4b4178f
Save encryption configuration (#1672)
* Save encryption configuration

* Fix deserialization problem

* Added .part_uuid to MapperDev

---------

Co-authored-by: Daniel Girtler <girtler.daniel@gmail.com>
Co-authored-by: Anton Hvornum <anton@hvornum.se>
Co-authored-by: Anton Hvornum <anton.feeds+github@gmail.com>
2023-03-29 12:48:11 +02:00
Daniel Girtler 9718c64ca7
Fix 1562 (#1564)
Co-authored-by: Daniel Girtler <girtler.daniel@gmail.com>
2022-11-15 14:34:24 +01:00
Daniel Girtler c3862c5779
New encryption menu (#1520)
* New encryption menu

Co-authored-by: Daniel Girtler <girtler.daniel@gmail.com>
Co-authored-by: Anton Hvornum <anton@hvornum.se>
2022-11-11 09:40:05 +01:00
Anton Hvornum 13703fbb04
Fix permission flags on all the log files created (#1440)
* Changed permissions on the logs stored in /var/log/archinstall. Also cleaned up one of the saves to have the same syntax as the others

* Tweaked secondary encryption password detection logic, as it wouldn't take it from the main arguments[] otherwise.

* Changed permission on cmd_output.txt

* Changed permission on cmd_history.txt
2022-08-28 22:04:25 +02:00
Daniel Girtler 870da403e7
Rework user management (#1220)
* Rework users

* Update user installation

* Fix config serialization

* Update

* Update schemas and documentation

* Update

* Fix flake8

* Make users mypy compatible

* Fix minor copy

Co-authored-by: Daniel Girtler <girtler.daniel@gmail.com>
Co-authored-by: Anton Hvornum <anton@hvornum.se>
2022-05-26 21:48:29 +02:00
Anton Hvornum 493cccc18f
Added a HSM menu entry (#1196)
* Added a HSM menu entry, but also a safety check to make sure a FIDO device is connected

* flake8 complaints

* Adding FIDO lookup using cryptenroll listing

* Added systemd-cryptenroll --fido2-device=list

* Removed old _select_hsm call

* Fixed flake8 complaints

* Added support for locking and unlocking with a HSM

* Removed hardcoded paths in favor of PR merge

* Removed hardcoded paths in favor of PR merge

* Fixed mypy complaint

* Flake8 issue

* Added sd-encrypt for HSM and revert back to encrypt when HSM is not used (stability reason)

* Added /etc/vconsole.conf and tweaked fido2_enroll() to use the proper paths

* Spelling error

* Using UUID instead of PARTUUID when using HSM. I can't figure out how to get sd-encrypt to use PARTUUID instead. Added a Partition().part_uuid function. Actually renamed .uuid to .part_uuid and created a .uuid instead.

* Adding missing package libfido2 and removed tpm2-device=auto as it overrides everything and forces password prompt to be used over FIDO2, no matter the order of the options.

* Added some notes to clarify some choices.

* Had to move libfido2 package install to later in the chain, as there's not even a base during mounting :P
2022-05-18 11:28:59 +02:00
Daniel 35a19a616a
Menu option save config (#1009)
* Add new save config menu option

* Update

* Fixed issue with merging

* Fixed merge issue (I think)

Co-authored-by: Daniel Girtler <girtler.daniel@gmail.com>
Co-authored-by: Anton Hvornum <anton.feeds@gmail.com>
2022-02-28 17:03:37 +01:00
Werner Llácer ec73bdab4c
Routine to properly print and save config data (#888)
* Created a standard function to show/save the config parameters

* flake8 complains

* Correct definition of btrfs standard layout

* Solve issue #936

* Moved output_configs to lib/configuration.py
2022-02-05 13:52:14 +01:00