!K<1       !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~     NoneZniv:Efficiently prettify and serialize a JSON value as a lazy   and write it to a file.SafeNone;M_   NoneNone%_nivTODO: Error instead of T.Text?nivTGet the latest revision for owner, repo and branch. TODO: explain no error handlingnivownernivreponivbranch !"#$% !"#$%None %&',4=?PSX_,nivKWhether the value is new or was retrieved (or derived) from old attributesJnivRun an <* and return the new attributes and result.Qniv'Runs an update, trying to evaluate the *es as little as possible. This is a hairy piece of code, apologies _(0)_/ In most cases I just picked the first implementation that compiledTnivRenders the template. Returns L if some of the attributes are missing. renderTemplate ("foo" -> "bar") " foo:" -> pure (Just "bar") renderTemplate ("foo" -> "bar") " baz" -> pure Nothing[nivLike Z but forces evaluation7&(')*+,-.0/132487659:;<HGEDBF?>@A=CIJKLMNOPQRSTUVWXYZ[\7I<HGEDBF?>@A=C:;JKLM948765132.0/N*+,-)OP&('QRSTUVWXYZ[\None;M_'" kniv,All the released versions of nix/sources.nixnivWhere to find the sources.jsonniv"use the default (nix/sources.json)nivuse the specified file pathnivSimply discards the &nivnix/sources.json or pointed at by nivA user friendly versionniv6Find a version based on the md5 of the nix/sources.nixniv#The MD5 sum of a particular versionnivThe MD5 sum of .nix sources.nixniv nix/sources.nixniv&Glue code between nix and sources.jsonnivEmpty JSON map4k}|{zyxwvutsrqpnmol~4~k}|{zyxwvutsrqpnmolNone*nivDEnsure that the sources.nix we ship is tracked as the latest version None%._,nivXThe GitHub update function TODO: fetchers for: * npm * hackage * docker * ... ?nivprefetchnivlatest revisionnivget repo None_-7 NoneSX- None%PX_.S None%P_h/[nivThe IO (real) github updateNone%PX2~nivThe "real" (IO) updatenivRun the "git" executableniv latest revnivlatest rev and default refnivthe repositorynivthe ref/branchnivthe repository None3,NoneX3 None4Safe4VNone%;MP_:nivWhether or not to fetch nixpkgsnivThe default nixpkgsnivThe default nixpkgsnivThe default nixpkgsnivMonly used in shortcuts (niv add foo/bar ...) because PACKAGE is NOT optionalnivonly used in command (niv add  cmd! ...) because PACKAGE is optionalniv;Checks if content is different than default and if it does not contain a comment line with niv: no_update++ !"#$%&'()*++,-./0123456789:;<==>?@ABC@DBEFGHIJKLMJNOPQRSTLUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~          !"#!niv-0.2.14-6QPcHFwcZ8MKZu4xvwQjOIData.Aeson.ExtendedData.HashMap.Strict.Extended Niv.LoggerData.Text.ExtendedNiv.GitHub.API Niv.Update Niv.SourcesNiv.Sources.Test Niv.GitHubNiv.GitHub.TestNiv.Cmd Niv.Local.CmdNiv.GitHub.Cmd Niv.Git.Cmd Niv.Git.TestNiv.Update.TestNiv.TestNiv.Cli Paths_nivencodeFilePretty forWithKeyM forWithKeyM_ mapWithKeyM mapWithKeyM_jobtsaysaygreentgreenyellowtyellowbluetblueredtredboldtboldfainttfaintbugtshowabort GithubReporepoDescription repoHomepagerepoDefaultBranch githubRepoabortCouldNotFetchGitHubRepodefaultRequestgithubLatestRevabortCouldNotGetRev githubHost githubApiPort githubApiHost githubSecure githubPathFreedomLockedFree BoxedAttrsBoxboxNewboxOp UpdateReady UpdateSuccess UpdateFailed UpdateResUpdateNeedMore FailNoSuchKeyFailZero FailCheck FailTemplateJSONComposeCompose'UpdateIdArrFirstZeroPlusCheckLoadUseOrSetRunTemplateAttrs runUpdate execUpdate evalUpdate tryEvalUpdaterunBox unboxAttrsboxAttrs runUpdate' decodeBox decodeValuerenderTemplatetemplatecheckloaduseOrSetupdaterunrun'dirty $fIsStringBox$fSemigroupBox$fApplicativeBox $fShowUpdate$fCategoryTYPEUpdate $fArrowUpdate$fArrowPlusUpdate$fArrowZeroUpdate$fShowUpdateFailed $fFunctorBox $fEqFreedom $fShowFreedom$fFunctorUpdateReady$fFunctorUpdateResSourcesNixVersionV1V2V3V4V5V6V7V8V9V10V11V12V13V14V15V16V17V18 PackageSpec unPackageSpec PackageName unPackageNameSources unSources SourcesErrorSourcesDoesntExistSourceIsntJSON SpecIsntAMapFindSourcesJsonAutoAtPathgetSourcesEither getSources setSources attrsToSpecpathNixSourcesJsonabortSourcesDoesntExistabortSourcesIsntJSONabortSpecIsntAMapsourcesVersionToTextlatestVersionMD5md5ToSourcesVersionsourcesVersionToMD5 sourcesNixMD5pathNixSourcesNixwarnIfOutdatedinitNixSourcesNixContentinitNixSourcesJsonContent$fEqPackageName$fHashablePackageName$fFromJSONKeyPackageName$fToJSONKeyPackageName$fShowPackageName$fFromJSONPackageSpec$fToJSONPackageSpec$fShowPackageSpec$fSemigroupPackageSpec$fMonoidPackageSpec$fFromJSONSources$fToJSONSources$fBoundedSourcesNixVersion$fEnumSourcesNixVersion$fEqSourcesNixVersiontest_shippedSourcesNixIsLatest githubUpdategithubURLTemplatetest_githubInitsProperlytest_githubUpdatestest_githubDoesntOverrideRevtest_githubURLFallbacktest_githubUpdatesOnceCmd descriptionparseCmdShortcutparsePackageSpec updateCmdnamelocalCmdparseLocalShortcutparseLocalPackageSpec describeLocal githubCmdgitCmdparseGitShortcutparseGitPackageSpec describeGit gitUpdate gitUpdate' latestRevdefaultRefAndHEAD abortNoRev abortNoRefrunGitisRevabortGitFailuretests simplyRuns picksFirstloadssurvivesChecks isNotTooEagerdirtyForcesUpdateshouldNotRunWhenNoChangestemplatesExpandconstBoxtestNixpkgs FetchNixpkgs NoNixpkgs YesNixpkgsNIOrunNIOgetFindSourcesJsonlicli parseCommandparsePackageName parsePackagedefaultNixpkgsRepodefaultNixpkgsUserdefaultNixpkgsBranch parseCmdInitcmdInit parseCmdAddparseShortcutArgs parseCmdArgscmdAdd parseCmdShowcmdShow showPackageparseCmdUpdatespecToFreeAttrsspecToLockedAttrs cmdUpdatepartitionEithersHMSparseCmdModify cmdModify parseCmdDropcmdDropshouldUpdateNixSourcesNixabortCannotAddPackageExistsabortCannotUpdateNoSuchPackageabortCannotModifyNoSuchPackageabortCannotDropNoSuchPackageabortCannotShowNoSuchPackage&abortCannotAttributesDropNoSuchPackageabortUpdateFailed$fMonadUnliftIONIO $fShowNixpkgs $fFunctorNIO$fApplicativeNIO $fMonadNIO $fMonadIONIO$fMonadReaderNIObytestring-0.10.8.2Data.ByteString.Lazy.Internal ByteStringbase GHC.MaybeNothing githubUpdate'version getBinDir getLibDir getDynLibDir getDataDir getLibexecDir getSysconfDirgetDataFileName