Link Rule
Rule
- If there is
$home, replace it with$scoopdir\persist\abgox.abyss. - Otherwise, replace the drive letter with
$scoopdir\persist\abgox.abyss.
TIP
Why not follow Scoop's per-app directory convention?
- Scoop's
persistconvention gives each application its own directory (persist\<app>), and it rests on two premises:- Data lives inside the install directory.
- Data belongs to that one application.
- However,
linktargets standard data paths.- They should have been stored in Windows' standard data directories.
- They are centralized with no data isolation.
- The
persistconvention results in inconsistent data structures, which conflicts withlinkby design.
- Data in standard data directories theoretically belongs to a single application only.
- A centralized architecture inherently allows multiple applications to read and write the same data.
- Cross-application read and write access is determined by the applications themselves, not enforced by Scoop via data isolation restrictions.
- They should have been stored in Windows' standard data directories.
Example
- Microsoft.VisualStudioCode stores its data in
$env:AppData\Codeand$home\.vscode$home\AppData\Roaming\Code=>$scoopdir\persist\abgox.abyss\AppData\Roaming\Code$home\.vscode=>$scoopdir\persist\abgox.abyss\.vscode
- It directly uses the following way to define the link in abyss:json
"link": [ "$env:AppData\\Code", "$home\\.vscode" ], - abyss only needs you to specify the data directories, and it does not need to specify the target directory.
- This ensures the uniformity of data persistence, and also lowers the risk of errors and cognitive load in manually defining directory structures.