           dest: chromeAppDevPath
         } ]
 
+      # Firefox. Assumes the top-level tasks generic_core and generic_ui
+      # completed.
+      firefox:
+        files: [ {
+          # The platform specific stuff, and...
+          expand: true, cwd: 'src/firefox/'
+          src: ['**', '!**/spec', '!**/*.md', '!**/*.ts']
+          dest: firefoxDevPath
+        # }, {
+          # expand: true, cwd: 'build/dev'
+          # src: ['uproxy.js']
+          # dest: firefoxDevPath + 'data/core/'
+        # ... the generic core stuff
+        }, {
+          expand: true, cwd: 'build/dev/generic_core'
+          src: ['**'],
+          dest: firefoxDevPath + 'data/core/'
+        # ... the generic UI stuff
+        }, {
+          expand: true, cwd: 'build/dev/generic_ui'
+          src: ['**'],
+          dest: firefoxDevPath + 'data'
+        }, {
+          expand: true, cwd: 'build/dev', flatten: true
+          src: FILES.uproxy_common,
+          dest: firefoxDevPath + 'data/scripts'
+        # freedom for firefox
+        }, {
+          expand: true, cwd: 'node_modules/uproxy-lib/build/freedom'
+          src: ['freedom-for-firefox-for-uproxy.jsm']
+          dest: firefoxDevPath + 'data'
+        }, {
+        # TODO: Fix socks-rtc / uproxy-networking include?
+          expand: true, cwd: 'node_modules/socks-rtc/build/'
+          src: ['**'],
+          dest: firefoxDevPath + 'data/lib/socks-rtc'
+        }, {
+          expand: true, cwd: 'node_modules/freedom/providers/social'
+          src: ['websocket-server/**']
+          dest: firefoxDevPath + 'data/lib'
+        }, {
+          expand: true, cwd: 'node_modules/freedom-social-xmpp/build/'
+          src: ['**']
+          dest: firefoxDevPath + 'data/lib/freedom-social-xmpp'
+        }, {
+          expand: true, cwd: 'node_modules/freedom/providers/storage/isolated'
+          src: ['**']
+          dest: firefoxDevPath + 'data/lib/storage'
+        } ]
+
     }  # copy
 
     #-------------------------------------------------------------------------


      firefox_uproxy: {
        files: [ {
          src: ['build/firefox/data/core/uproxy.js'
                'build/firefox/lib/exports.js']
          dest: 'build/firefox/lib/uproxy.js'
        } ]
      }



chromeExtDevPath = 'build/dev/chrome/extension/'
chromeAppDevPath = 'build/dev/chrome/app/'
firefoxDevPath = 'build/dev/firefox/'

# TODO: Move this into common-grunt-rules in uproxy-lib.
Rule.symlink = (dir, dest='') =>
