Files
archmgr/notes.md
T

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]$))