let C = ../rofi-extras/dhall/rofi-dev.dhall let cryptdir = "/mnt/data/Documents/.crypt" let sshKey = "ssh" let gpgKey = "gpg" let bwConfig = \(k : Text) -> C.PasswordConfig.PwdBW ({ bwKey = k, bwTries = 2 } : C.BitwardenConfig) let sshData = \(r : Text) -> C.DataConfig.SSHFSConfig ( { sshfsRemote = r, sshfsPassword = None C.PasswordConfig } : C.SSHFSData ) let sshfsTree = \(m : Text) -> \(l : Text) -> \(r : Text) -> { tcParent = { deviceMount = { mpPath = m, mpLabel = Some l } : C.MountConfig , deviceData = sshData r } : C.DeviceConfig , tcChildren = [ "ssh" ] } : C.TreeConfig let crypt = \(b : Text) -> "${cryptdir}/${b}" let vcName = \(n : Text) -> "Veracrypt (${n})" let vcryptTree = \(m : Text) -> \(l : Optional Text) -> \(v : Text) -> \(k : Text) -> { tcParent = { deviceMount = { mpPath = m, mpLabel = l } : C.MountConfig , deviceData = C.DataConfig.VeracryptConfig ( { vcVolume = crypt v , vcPassword = Some (bwConfig (vcName k)) } : C.VeracryptData ) } : C.DeviceConfig , tcChildren = [] : List Text } : C.TreeConfig let defaultDevs = [ { tKey = "ssh" , tVal = vcryptTree "${env:HOME as Text}/.ssh" (Some "ssh") "ssh-config" sshKey } , { tKey = "gnupg" , tVal = vcryptTree "${env:GNUPGHOME as Text}" (None Text) "gpg-config" gpgKey } , { tKey = "journal" , tVal = vcryptTree "/mnt/data/Org/new_journal" (Some "journal") "org-journal" "org_journal" } ] let otherDevs = [ { tKey = "accounts" , tVal = vcryptTree "accounts" (None Text) "accounts" "accounts" } , { tKey = "ansible-pki" , tVal = vcryptTree "ansible-pki" (None Text) "ansible" "Ansible PKI" } , { tKey = "call_logs" , tVal = vcryptTree "call-logs" (None Text) "call_logs" "ACR" } , { tKey = "ebm_snakemake" , tVal = sshfsTree "ebm_snakemake" "EBM" "nisaba:/wrk/njd2/stratomod-experiments" } , { tKey = "nist_workstation" , tVal = sshfsTree "nist_workstation" "NIST Workstation" "nist-workstation:/mnt/data" } , { tKey = "music" , tVal = sshfsTree "/mnt/data/Music" "Music" "portnoy4prez:/mnt/data/home/Music" } , { tKey = "videos" , tVal = sshfsTree "/mnt/data/Videos" "Videos" "portnoy4prez:/mnt/data/home/Videos" } ] in { scTmpPath = Some "/tmp/media/${env:LOGNAME as Text}" , scVerbose = Some False , scDevices = defaultDevs # otherDevs }