1.6 KiB
1.6 KiB
Concept for tracking changes
- Create new commit (if possible)
- If force is unset: Diff system's files against current state by copying them into the current state branch
- Then, diff the package state against the state branch by dumping it
- Else, or if no diff, continue
- Copy normal config files into correct directories
- Render and copy renderables
- Retrieve explicitly installed packages and remove those that are not present in goal and install those that are not present in current state
Ideas
- function to collect new configs
- config options for users and groups
- presets for things like desktops (like Hyprland)
- config options for the template rendering
- config options for themes
- grub config
- Dynamic selection of more configs (i.e. require syntax)
- Own config syntax?
- Autocompletion
- Basic arch install how? -> Probably manual (or semi-automatic)
- Mounts?
REGEX
TODO: Improve the below (especially file can be shortened with positive lookahead)
- File:
^(^(~|\\.|\\.\\.)?\\/)?([\\w\\/.-]+(?!.*[^\\w\\/.-]+)) - Folder:
^(^(~|\\.|\\.\\.)?\\/)?([\\w\\/.-]+(?!.*[^\\w\\/.-]+))\\/$ - URL (just domain):
^(https?):\\/\\/(([a-z0-9-]+)((?=\\.))\\.)+[a-z]+(?=[a-z]$) - Full URL:
^(https?):\\/\\/(([a-z0-9-]+)((?=\\.))\\.)+[a-z]+(?=\\/)\\/([\\w\\-?.=]+(?=\\/[\\w\\-?.=])\\/)*([\\w\\-?&.=\\/]+(?=[\\w\\-.=\\/]$)) - UNIX username and groups:
^[a-zA-Z0-9\\-._]{2,19}(?=[a-zA-Z0-9]$) - Git SSH:
([a-zA-Z0-9\\-._]+(?=[a-zA-Z0-9])[a-zA-Z0-9])@(([a-z0-9\\-]+(?=\\.))\\.)+[a-z]+(?=:):([a-zA-Z0-9\\-._]+(?=\\/)\\/)+([a-zA-Z0-9\\-._]+(?=[a-zA-Z0-9]$))