I already daily drive seidr, and here's an example of how I keep it manageable with dhall. Writing the `.yaml` files by hand and keeping them up to date quickly felt like writing aterm `.drv` files for Nix by hand... that is to say not pleasant. This somewhat makes it better.
```dhall
let {- First, we define some useful variables
-}
home
: Text
= "/home/ces/"
let config
: Text
= "${home}/.config/"
let gitProjectsDir
: Text
= "${home}/org/src/git/"
let nixosConfigName
: Text
= "afk-nixos"
let nixosConfigDir
: Text
= gitProjectsDir
let nixosConfigPath
: Text
= "${home}/org/src/git/${nixosConfigName}/"
let seidrConfigPath
: Text
= "${nixosConfigPath}/seidr/"
let {- Now, we create some schemes and types and such to make our lives easier
TODO: We could totally also write some functions, but I haven't gotten to that yet.
-}
Flags
: Type
= <Clone|Fast>
let Repo
: Type
= { name : Optional Text
, path : Optional Text
, url : Optional Text
, kind : Optional Text
, flags : Optional (List Flags)
}
let Link
: Type
= { name : Optional Text, rx : Text, tx : Text }
let {- Here, we define our repositories
-}
nixosConfigRepo
: Repo
= { name = Some nixosConfigName
, path = Some nixosConfigDir
, url = Some "git@github.com:cafkafk/afk-nixos.git"
, kind = Some "GitRepo"
, flags = Some [ Flags.Clone, Flags.Fast ]
}
let ezaDevelopmentRepo
: Repo
= { name = Some "eza"
, path = Some gitProjectsDir
, url = Some "git@github.com:eza-community/eza.git"