33 lines
1.6 KiB
Markdown
33 lines
1.6 KiB
Markdown
# 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]$))`
|