<commit_before>#Biegunka - Utility scripts and configs management framework

##Motivation

It is actually hard to maintain all these configs and self-written scripts by hand.  
Another problem is installing familiar environment on the new machine.  
Another slightly bigger problem is _uninstalling_ familiar environment from the wrong machine.
All this issues should be addressed by this framework.

##Details

The main idea is to have something like current _state_ of installed stuff:

```haskell
install ∷ Biegunka ()
install = bzdury
  [ git "one repo" "this clone here" --> InstallOne
  , hg "another one" "that clone here" --> InstallAnother
  ]
```

Then you can save this state somewhere and when the time comes

```haskell
removeRepo ∷ Repository a ⇒ Biegunka () → a → Biegunka ()
--or even
wipe ∷ Biegunka () → Biegunka ()
```<commit_msg>Add some design detailes.<commit_after>#Biegunka - Utility scripts and configs management framework

##Motivation

It is actually hard to maintain all these configs and self-written scripts by hand.  
Another problem is installing familiar environment on the new machine.  
Another slightly bigger problem is _uninstalling_ familiar environment from the wrong machine.
All this issues should be addressed by this framework.

##Details

The main idea is to have something like current _state_ of installed stuff:

```haskell
install ∷ Biegunka ()
install = bzdury
  [ git "one repo" "this clone here" --> installOne
  , hg "another one" "that clone here" --> installAnother
  ]
```

Then you can save this state somewhere and when the time comes

```haskell
removeRepo ∷ Repository α ⇒ Biegunka () → α → Biegunka ()
--or even
wipe ∷ Biegunka () → Biegunka ()
```

Install scripts themselves become easier

```haskell
installRepoAsLink ∷ Biegunka ()
installRepoAsLink = repoTo Home "path/from/home/directory"
--or
installRepoFilesAsLinks ∷ Biegunka ()
installRepoFilesAsLinks src = do
  fromRepoTo Root ("path/from/repo/root", "path/from/system/root")
  fromRepoTo Home ("path/from/repo/root", "path/from/home/directory")
```
{'fraction_non_alphanumeric': 0.08494208494208494, 'fraction_numerical': 0.0, 'mean_word_length': 4.469656992084433, 'pattern_counts': {'":': 0, '<': 3, '<?xml version=': 0, '>': 7, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '3047739', 'n_tokens_mistral': 637, 'n_tokens_neox': 597, 'n_words': 265}