<!doctype html>
<html lang="en">
  <head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <title>Cradicle Explorer</title>
    <link href="/css/bootstrap/bootstrap.min.css" rel="stylesheet">
    <style>
      .form-control-dark::placeholder {
          color: #aaa;
          opacity: 1;
      }
    </style>
    <link rel="stylesheet" href="/assets/fontawesome/css/all.min.css">
    <link rel="icon" type="image/png" href="/favicon.png">


                <link href="/css/dashboard.css" rel="stylesheet">
                </head>
                <body>
                <header class="navbar navbar-dark sticky-top bg-dark flex-md-nowrap p-0 shadow">
                  <a class="navbar-brand col-md-3 col-lg-2 me-0 px-3 fs-6" href="/">Cradicle Explorer</a>
                  <button class="navbar-toggler position-absolute d-md-none collapsed" type="button" data-bs-toggle="collapse" data-bs-target="#sidebarMenu" aria-controls="sidebarMenu" aria-expanded="false" aria-label="Toggle navigation">
                    <span class="navbar-toggler-icon"></span>
                  </button>
                  <form method="get" action="/cgi-bin/main" style="width:100%;"><input class="form-control form-control-dark w-100 rounded-0 border-0" type="text" name="q" placeholder="Search repos" aria-label="Search"></form>
                  <div class="navbar-nav flex-row">
                    <div class="nav-item text-nowrap">
                      <a class="nav-link px-3 active" href="/cgi-bin/repo?id=z2kNpAtQvRKifELNg3cXDMCCgEwG7">NPACore.github.io</a>
                    </div>
                  </div>
                </header>
                <div class="container-fluid">
                  <div class="row">
                    <nav id="sidebarMenu" class="col-md-3 col-lg-2 d-md-block bg-dark sidebar collapse">
                      <div class="position-sticky pt-3 sidebar-sticky">
                        <ul class="nav flex-column">
                          <li class="nav-item">
                            <a class="nav-link" href="/cgi-bin/repo?id=z2kNpAtQvRKifELNg3cXDMCCgEwG7">
                              <i class="align-text-bottom fa-solid fa-info"></i>
                              Info
                            </a>
                          </li>
                          <li class="nav-item">
                            <a class="nav-link" href="/cgi-bin/repo?id=z2kNpAtQvRKifELNg3cXDMCCgEwG7&issue=list">
                              <i class="align-text-bottom fa-solid fa-layer-group"></i>
                              Issues
                            </a>
                          </li>
                          <li class="nav-item">
                            <a class="nav-link" href="/cgi-bin/repo?id=z2kNpAtQvRKifELNg3cXDMCCgEwG7&patch=list">
                              <i class="align-text-bottom fa-solid fa-vest-patches"></i>
                              Patches
                            </a>
                          </li>
                          <li class="nav-item">
                            <a class="nav-link" href="/cgi-bin/repo?id=z2kNpAtQvRKifELNg3cXDMCCgEwG7&wallet=list">
                              <i class="align-text-bottom fa-solid fa-wallet"></i>
                              Wallets
                            </a>
                          </li>
                          <li class="nav-item">
                            <a class="nav-link active" href="/cgi-bin/repo?id=z2kNpAtQvRKifELNg3cXDMCCgEwG7&source=.">
                              <i class="align-text-bottom fa-solid fa-code"></i>
                              Source
                            </a>
                          </li>
                        <h6 class="sidebar-heading d-flex justify-content-between align-items-center px-3 mt-4 mb-1 text-muted text-uppercase">
                          <span></span>
                        </h6>
                        <ul class="nav flex-column mb-2">
                        
    <h6 class="sidebar-heading d-flex justify-content-between align-items-center px-3 mt-1 mb-1 text-muted text-uppercase">
      <span>Source</span>
    </h6>
    <li><a class="nav-link py-0" style="padding-left:16px;" href="/cgi-bin/repo?id=z2kNpAtQvRKifELNg3cXDMCCgEwG7&source=docs"><i class="fa-solid fa-folder-open" style="color:#f0c040;"></i> docs</a></li><li><a class="nav-link py-0" style="padding-left:32px;" href="/cgi-bin/repo?id=z2kNpAtQvRKifELNg3cXDMCCgEwG7&source=docs%2Fexplain"><i class="fa-solid fa-folder" style="color:#f0c040;"></i> explain</a></li><li><a class="nav-link py-0" style="padding-left:32px;" href="/cgi-bin/repo?id=z2kNpAtQvRKifELNg3cXDMCCgEwG7&source=docs%2Fimgs"><i class="fa-solid fa-folder" style="color:#f0c040;"></i> imgs</a></li><li><a class="nav-link py-0" style="padding-left:32px;" href="/cgi-bin/repo?id=z2kNpAtQvRKifELNg3cXDMCCgEwG7&source=docs%2Fprojects"><i class="fa-solid fa-folder-open" style="color:#f0c040;"></i> projects</a></li><li><a class="nav-link py-0" style="padding-left:48px;" href="/cgi-bin/repo?id=z2kNpAtQvRKifELNg3cXDMCCgEwG7&source=docs%2Fprojects%2Fsoftware"><i class="fa-solid fa-folder-open" style="color:#f0c040;"></i> software</a></li><li><a class="nav-link py-0 active" style="padding-left:64px;" href="/cgi-bin/repo?id=z2kNpAtQvRKifELNg3cXDMCCgEwG7&file=docs%2Fprojects%2Fsoftware%2Fmacos-admin.bash"><i class="fa-solid fa-file" style="color:#888;"></i> macos-admin.bash</a></li><li><a class="nav-link py-0" style="padding-left:48px;" href="/cgi-bin/repo?id=z2kNpAtQvRKifELNg3cXDMCCgEwG7&file=docs%2Fprojects%2Fflywheel.md"><i class="fa-solid fa-file" style="color:#888;"></i> flywheel.md</a></li><li><a class="nav-link py-0" style="padding-left:48px;" href="/cgi-bin/repo?id=z2kNpAtQvRKifELNg3cXDMCCgEwG7&file=docs%2Fprojects%2Findex.md"><i class="fa-solid fa-file" style="color:#888;"></i> index.md</a></li><li><a class="nav-link py-0" style="padding-left:32px;" href="/cgi-bin/repo?id=z2kNpAtQvRKifELNg3cXDMCCgEwG7&file=docs%2Fcommunications.md"><i class="fa-solid fa-file" style="color:#888;"></i> communications.md</a></li><li><a class="nav-link py-0" style="padding-left:32px;" href="/cgi-bin/repo?id=z2kNpAtQvRKifELNg3cXDMCCgEwG7&file=docs%2Fdata-ops.md.ignore"><i class="fa-solid fa-file" style="color:#888;"></i> data-ops.md.ignore</a></li><li><a class="nav-link py-0" style="padding-left:32px;" href="/cgi-bin/repo?id=z2kNpAtQvRKifELNg3cXDMCCgEwG7&file=docs%2Findex.md"><i class="fa-solid fa-file" style="color:#888;"></i> index.md</a></li><li><a class="nav-link py-0" style="padding-left:32px;" href="/cgi-bin/repo?id=z2kNpAtQvRKifELNg3cXDMCCgEwG7&file=docs%2Fpeople.md"><i class="fa-solid fa-file" style="color:#888;"></i> people.md</a></li><li><a class="nav-link py-0" style="padding-left:32px;" href="/cgi-bin/repo?id=z2kNpAtQvRKifELNg3cXDMCCgEwG7&file=docs%2Fprovenance.md.ignore"><i class="fa-solid fa-file" style="color:#888;"></i> provenance.md.ignore</a></li><li><a class="nav-link py-0" style="padding-left:32px;" href="/cgi-bin/repo?id=z2kNpAtQvRKifELNg3cXDMCCgEwG7&file=docs%2Fresources.md"><i class="fa-solid fa-file" style="color:#888;"></i> resources.md</a></li><li><a class="nav-link py-0" style="padding-left:16px;" href="/cgi-bin/repo?id=z2kNpAtQvRKifELNg3cXDMCCgEwG7&file=.gitignore"><i class="fa-solid fa-file" style="color:#888;"></i> .gitignore</a></li><li><a class="nav-link py-0" style="padding-left:16px;" href="/cgi-bin/repo?id=z2kNpAtQvRKifELNg3cXDMCCgEwG7&file=Makefile"><i class="fa-solid fa-file" style="color:#888;"></i> Makefile</a></li><li><a class="nav-link py-0" style="padding-left:16px;" href="/cgi-bin/repo?id=z2kNpAtQvRKifELNg3cXDMCCgEwG7&file=mkdocs.yml"><i class="fa-solid fa-file" style="color:#888;"></i> mkdocs.yml</a></li><li><a class="nav-link py-0" style="padding-left:16px;" href="/cgi-bin/repo?id=z2kNpAtQvRKifELNg3cXDMCCgEwG7&file=readme.md"><i class="fa-solid fa-file" style="color:#888;"></i> readme.md</a></li>
    
                        </ul>
                      </div>
                    </nav>
                <main class="col-md-9 ms-sm-auto col-lg-10">
                  <div class="container px-1 py-3">
        
<div class="mb-2" style="font-size:1.1rem;"><a href="/cgi-bin/repo?id=z2kNpAtQvRKifELNg3cXDMCCgEwG7&source=.">/</a> <a href="/cgi-bin/repo?id=z2kNpAtQvRKifELNg3cXDMCCgEwG7&source=docs">docs</a> / <a href="/cgi-bin/repo?id=z2kNpAtQvRKifELNg3cXDMCCgEwG7&source=docs%2Fprojects">projects</a> / <a href="/cgi-bin/repo?id=z2kNpAtQvRKifELNg3cXDMCCgEwG7&source=docs%2Fprojects%2Fsoftware">software</a> / macos-admin.bash</div>
        <div class="list-group">
        <div class="list-group-item">
        <div class="mb-2" style="font-weight:bold;"><i class="fa-solid fa-file"></i> macos-admin.bash</div>
        <pre style="margin:0; font-size:0.85rem; overflow-x:auto; color:#fafafa;"><span style="color:#666; user-select:none;"> 1</span>  #!/usr/bin/env bash
<span style="color:#666; user-select:none;"> 2</span>  #
<span style="color:#666; user-select:none;"> 3</span>  # install neuroimaging software on adminstered macOS
<span style="color:#666; user-select:none;"> 4</span>  # 
<span style="color:#666; user-select:none;"> 5</span>  # 20240531WF - init
<span style="color:#666; user-select:none;"> 6</span>  
<span style="color:#666; user-select:none;"> 7</span>  ADMIN_ACCOUNT=Oacadmin
<span style="color:#666; user-select:none;"> 8</span>  USER_ACCOUNT=&quot;${1:-$ADMIN_ACCOUNT}&quot;; shift
<span style="color:#666; user-select:none;"> 9</span>  
<span style="color:#666; user-select:none;">10</span>  # packages to get from the internet
<span style="color:#666; user-select:none;">11</span>  # 20240531: using arm versions (instead of intel/x64)
<span style="color:#666; user-select:none;">12</span>  DMGS=(
<span style="color:#666; user-select:none;">13</span>  
<span style="color:#666; user-select:none;">14</span>  )
<span style="color:#666; user-select:none;">15</span>  
<span style="color:#666; user-select:none;">16</span>  # packages to get from homebrew
<span style="color:#666; user-select:none;">17</span>  BREWPKGS=(
<span style="color:#666; user-select:none;">18</span>    git python
<span style="color:#666; user-select:none;">19</span>    gfortran libxml++ openblas lapack # compile R package
<span style="color:#666; user-select:none;">20</span>    netpbm # afni
<span style="color:#666; user-select:none;">21</span>  )
<span style="color:#666; user-select:none;">22</span>  
<span style="color:#666; user-select:none;">23</span>  install_dmg(){
<span style="color:#666; user-select:none;">24</span>   dmg=${1?-.dmg file}; shift
<span style="color:#666; user-select:none;">25</span>   dmg_name=${1?-path inside dmg mount}
<span style="color:#666; user-select:none;">26</span>  
<span style="color:#666; user-select:none;">27</span>   hdiutil mount &quot;$dmg&quot;
<span style="color:#666; user-select:none;">28</span>   # todo: test if already exists
<span style="color:#666; user-select:none;">29</span>   cp -r /Volumes/&quot;$dmg_name&quot;/*.app /Applications/
<span style="color:#666; user-select:none;">30</span>   hdiutil ymount &quot;$dmg_name&quot;
<span style="color:#666; user-select:none;">31</span>  }
<span style="color:#666; user-select:none;">32</span>  
<span style="color:#666; user-select:none;">33</span>  install_homebrew(){
<span style="color:#666; user-select:none;">34</span>     # homebrew. todo must be done as $ADMIN_ACCOUNT
<span style="color:#666; user-select:none;">35</span>     /bin/bash -c &quot;$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)&quot;
<span style="color:#666; user-select:none;">36</span>     source ~/.zprofile # get brew in path
<span style="color:#666; user-select:none;">37</span>     brew install &quot;${BREWPKGS[@]}&quot;
<span style="color:#666; user-select:none;">38</span>  }
<span style="color:#666; user-select:none;">39</span>  
<span style="color:#666; user-select:none;">40</span>  # afni is install into home directory of the main user
<span style="color:#666; user-select:none;">41</span>  install_afni(){
<span style="color:#666; user-select:none;">42</span>     cd $HOME
<span style="color:#666; user-select:none;">43</span>     curl -O https://afni.nimh.nih.gov/pub/dist/bin/misc/@update.afni.binaries
<span style="color:#666; user-select:none;">44</span>     tcsh @update.afni.binaries -package macos_10.12_local -do_extras
<span style="color:#666; user-select:none;">45</span>  }
<span style="color:#666; user-select:none;">46</span>  
<span style="color:#666; user-select:none;">47</span>  # export functions so sudo can use them
<span style="color:#666; user-select:none;">48</span>  export -f install_homebrew install_dmg install_afni
<span style="color:#666; user-select:none;">49</span>  
<span style="color:#666; user-select:none;">50</span>  
<span style="color:#666; user-select:none;">51</span>  # use &#x27;DRYRUN=1 ./macos-admin.bash&#x27; to just show what would happen instead of doing it
<span style="color:#666; user-select:none;">52</span>  [ -v DRYRUN ] &amp;&amp; DRYRUN=echo || DRYRUN=
<span style="color:#666; user-select:none;">53</span>  
<span style="color:#666; user-select:none;">54</span>  # need root to run
<span style="color:#666; user-select:none;">55</span>  [ $(id -u) -gt 1 ] &amp;&amp; echo &quot;run script with sudo! like: &#x27;sudo $0&#x27;&quot; &amp;&amp; exit 1
<span style="color:#666; user-select:none;">56</span>  
<span style="color:#666; user-select:none;">57</span>  # passwordless sudo for admin
<span style="color:#666; user-select:none;">58</span>  # todo: add -i for inplace mod
<span style="color:#666; user-select:none;">59</span>  $DRYRUN sed &#x27;$s,$,\n%wheel  ALL=(ALL) NOPASSWD: ALL,&#x27; /etc/sudoers
<span style="color:#666; user-select:none;">60</span>  
<span style="color:#666; user-select:none;">61</span>  $DRYRUN xcode-select --install
<span style="color:#666; user-select:none;">62</span>  $DRYRUN sudo -u $ADMIN_ACCOUNT install_homebrew
<span style="color:#666; user-select:none;">63</span>  
<span style="color:#666; user-select:none;">64</span>  $DRYRUN sudo -u $USER_ACCOUNT install_afni
<span style="color:#666; user-select:none;">65</span>  
<span style="color:#666; user-select:none;">66</span>  # afni r packages
<span style="color:#666; user-select:none;">67</span>  ~$USER_ACCOUNT/abin/rPkgsInstall -pkgs ALL
</pre>
        </div>
        </div>

</div>
</main>
</div>
</div>


</body>
</html>

