diff --git a/helpers/DATA/freedom-maker/0001-documentation_could-be-upstreamed.patch b/helpers/DATA/freedom-maker/0001-documentation_could-be-upstreamed.patch
new file mode 100644
index 0000000000000000000000000000000000000000..628a9d50afdd0778356e64340763f4f80a0587b9
--- /dev/null
+++ b/helpers/DATA/freedom-maker/0001-documentation_could-be-upstreamed.patch
@@ -0,0 +1,157 @@
+diff --git a/README.md b/README.md
+index b7931bb..3fb54f4 100644
+--- a/README.md
++++ b/README.md
+@@ -26,28 +26,29 @@ tweaks, see the *Build Images* section below.
+ 
+ Freedom-maker supports building for the following targets:
+ 
+-
+-- *a20-olinuxino-lime*: A20 OLinuXino Lime's SD card
+-- *a20-olinuxino-lime2*: A20 OLinuXino Lime2's SD card
+-- *a20-olinuxino-micro*: A20 OLinuXino MICRO's SD card
+-- *amd64*: Disk image for any machine with amd64 architecture
+-- *banana-pro*: Banana Pro's SD card
+-- *beaglebone*: BeagleBone Black's SD card
+-- *cubieboard2*: Cubieboard2's SD card
+-- *cubietruck*: Cubietruck's SD card
+-- *i386*: Disk image for any machine with i386 architecture
+-- *lamobo-r1*: Lamobo R1 aka BananaPi Router SD card
+-- *pcduino3*: pcDuino3's SD card
+-- *pine64-lts*: Pine64 LTS board's SD card
+-- *pine64-plus*: Pine64+ board's SD card
+-- *qemu-amd64*: 64-bit image for the Qemu virtualization tool
+-- *qemu-i386*: 32-bit image for the Qemu virtualization tool
+-- *raspberry2*: RasbperryPi 2's SD card
+-- *raspberry3*: RasbperryPi 3's SD card
+-- *raspberry3-b-plus*: RasbperryPi 3 Model B+'s SD card
+-- *test*: build virtualbox i386 image and run diagnostics tests on it
+-- *virtualbox-amd64*: 64-bit image for the VirtualBox virtualization tool
+-- *virtualbox-i386*: 32-bit image for the VirtualBox virtualization tool
++| target                | description |
++|-----------------------|-------------|
++| *a20-olinuxino-lime*  | A20 OLinuXino Lime's SD card |
++| *a20-olinuxino-lime2* | A20 OLinuXino Lime2's SD card |
++| *a20-olinuxino-micro* | A20 OLinuXino MICRO's SD card |
++| *amd64*               | Disk image for any machine with amd64 architecture |
++| *banana-pro*          | Banana Pro's SD card |
++| *beaglebone*          | BeagleBone Black's SD card |
++| *cubieboard2*         | Cubieboard2's SD card |
++| *cubietruck*          | Cubietruck's SD card |
++| *i386*                | Disk image for any machine with i386 architecture |
++| *lamobo-r1*           | Lamobo R1 aka BananaPi Router SD card |
++| *pcduino3*            | pcDuino3's SD card |
++| *pine64-lts*          | Pine64 LTS board's SD card |
++| *pine64-plus*         | Pine64+ board's SD card |
++| *qemu-amd64*          | 64-bit image for the Qemu virtualization tool |
++| *qemu-i386*           | 32-bit image for the Qemu virtualization tool |
++| *raspberry2*          | RasbperryPi 2's SD card |
++| *raspberry3*          | RasbperryPi 3's SD card |
++| *raspberry3-b-plus*   | RasbperryPi 3 Model B+'s SD card |
++| *test*                | build virtualbox i386 image and run diagnostics tests on it |
++| *virtualbox-amd64*    | 64-bit image for the VirtualBox virtualization tool |
++| *virtualbox-i386*     | 32-bit image for the VirtualBox virtualization tool |
+ 
+ ## Running Build
+ 
+@@ -69,10 +70,12 @@ Freedom-maker supports building for the following targets:
+     to run "parted".
+ 
+     ```
+-    $ sudo python3 -m freedommaker a20-olinuxino-lime2
++    $ sudo python3 -m freedommaker <TARGET>
+     ```
++    where: &lt;TARGET&gt; is one of the 'Supported Targets' above.
++
+     Take a break from your computer - this takes some time. :)
+-    
++
+     To see the full list of options read the help-page:
+     ```
+     $ python3 -m freedommaker --help
+@@ -91,25 +94,47 @@ for this task. Otherwise follow the steps:
+ 
+     A. Unplug your card.
+ 
+-    B. Run "lsblk -p" to show which storage devices are connected to your system.
++    B. Run `lsblk -p` to show which storage devices are connected to your system.
++    For example, if your computer has one internal SATA storage device
++    (the most common configuration), it will be identified as */dev/sda*;
++    and the result may look similar to this:
++
++        $ lsblk -p
++        NAME        MAJ:MIN RM   SIZE RO TYPE MOUNTPOINTS
++        /dev/sda      8:0    0 119.2G  0 disk
++        ├─/dev/sda1   8:1    0     2G  0 part /boot
++        ├─/dev/sda2   8:2    0  22.5G  0 part /
++        └─/dev/sda3   8:3    0  94.8G  0 part /home
++
++    C. Plug in your SDcard and run `lsblk -p` again. Find the new device and note
++    the name. For example, if the SDcard is unformatted (empty), the result may
++    look similar to this:
++
++        $ lsblk -p
++        NAME        MAJ:MIN RM   SIZE RO TYPE MOUNTPOINTS
++        /dev/sda      8:0    0 119.2G  0 disk
++        ├─/dev/sda1   8:1    0     2G  0 part /boot
++        ├─/dev/sda2   8:2    0  22.5G  0 part /
++        └─/dev/sda3   8:3    0  94.8G  0 part /home
++        /dev/sdb      8:32   1  29.7G  0 disk
++
++    Or, if the SDcard is already formatted, it may look more like this:
+ 
+-    C. Plug your card in and run "lsblk -p" again. Find the new device and note
+-    the name.
+-    
+         $ lsblk -p
+-        NAME                                   MAJ:MIN RM   SIZE RO TYPE  MOUNTPOINT
+-        /dev/sdg                                 8:0    1  14.9G  0 disk  
+-        /dev/nvme0n1                           259:0    0   477G  0 disk  
+-        ├─/dev/nvme0n1p1                       259:1    0   512M  0 part  /boot/efi
+-        ├─/dev/nvme0n1p2                       259:2    0   244M  0 part  /boot
+-        └─/dev/nvme0n1p3                       259:3    0 476.2G  0 part  
+-          └─/dev/mapper/nvme0n1p3_crypt        253:0    0 476.2G  0 crypt 
+-            ├─/dev/mapper/mjw--t470--vg-root   253:1    0 468.4G  0 lvm   /
+-            └─/dev/mapper/mjw--t470--vg-swap_1 253:2    0   7.8G  0 lvm   [SWAP]
+-
+-    D. In the above case, the disk that is newly inserted is available
+-       as */dev/sdg*. You can also verify the size (16 GB in this example).
+-       Carefully note this and use it in the copying step below.
++        NAME        MAJ:MIN RM   SIZE RO TYPE MOUNTPOINTS
++        /dev/sda      8:0    0 119.2G  0 disk
++        ├─/dev/sda1   8:1    0     2G  0 part /boot
++        ├─/dev/sda2   8:2    0  22.5G  0 part /
++        └─/dev/sda3   8:3    0  94.8G  0 part /home
++        /dev/sdb      8:32   1  29.7G  0 disk
++        ├─/dev/sdb1   8:33   1   100M  0 part
++        └─/dev/sdb2   8:36   1  29.6G  0 part
++
++    D. In the above cases, the newly inserted SDcard is identified
++       as */dev/sdb*. To be more certain, you can compare the reported sizes
++       (approximately - the SDcard is 30 GB in this example - reported 29.7G).
++       Most importantly, */dev/sda*. is usually not the SDcard.
++       Carefully note this identifier and use it in the copying step below.
+ 
+ 2. Copy the image to your card.  Double check and make sure you don't
+    write to your computer's main storage (such as /dev/sda).  Also
+diff --git a/freedommaker/__main__.py b/freedommaker/__main__.py
+index 9d29193..cb6a178 100644
+--- a/freedommaker/__main__.py
++++ b/freedommaker/__main__.py
+@@ -20,7 +20,15 @@
+ Module to provide ability to run this freedommaker package.
+ 
+ Run the package as:
+-  python3 -m freedommaker
++  $ sudo python3 -m freedommaker <TARGET>
++where:
++  <TARGET> is one of:
++  $ grep -r 'machine = ' freedommaker/builders/ | cut -d '=' -f 2
++eg:
++  $ sudo python3 -m freedommaker a20-olinuxino-lime2
++
++To see the full list of options read the help-page:
++  $ python3 -m freedommaker --help
+ """
+ 
+ from .application import Application
diff --git a/helpers/DATA/freedom-maker/0002-generalize-distro-fork-name_could-be-upstreamed.patch b/helpers/DATA/freedom-maker/0002-generalize-distro-fork-name_could-be-upstreamed.patch
new file mode 100644
index 0000000000000000000000000000000000000000..e25b4c47ff08afc3be434ef514b9afcd0429ec7e
--- /dev/null
+++ b/helpers/DATA/freedom-maker/0002-generalize-distro-fork-name_could-be-upstreamed.patch
@@ -0,0 +1,27 @@
+diff --git a/freedommaker/builder.py b/freedommaker/builder.py
+index 0f94d5c..8a13188 100644
+--- a/freedommaker/builder.py
++++ b/freedommaker/builder.py
+@@ -23,6 +23,8 @@ import os
+ 
+ from . import internal, library
+ 
++DISTRO_BRAND = 'Debian'
++
+ # initramfs-tools is a dependency for the kernel-image package. However, when
+ # kernel is not installed, as in case of Raspberry Pi image, explicit dependency
+ # is needed.
+@@ -103,10 +105,11 @@ class ImageBuilder(object):  # pylint: disable=too-many-instance-attributes
+ 
+     def _get_image_base_name(self):
+         """Return the base file name of the final image."""
+-        free_tag = 'free' if self.free else 'nonfree'
++        free_tag = 'libre' if self.free else 'nonfree'
+ 
+-        return 'freedombox-{distribution}-{free_tag}_{build_stamp}_{machine}' \
++        return '{distro}freedombox-{distribution}-{free_tag}_{build_stamp}_{machine}' \
+             '-{architecture}'.format(
++                distro=DISTRO_BRAND.lower() + '-' if DISTRO_BRAND else '',
+                 distribution=self.arguments.distribution, free_tag=free_tag,
+                 build_stamp=self.arguments.build_stamp, machine=self.machine,
+                 architecture=self.architecture)
diff --git a/helpers/DATA/freedom-maker/0003-trisquelize-documentation.patch b/helpers/DATA/freedom-maker/0003-trisquelize-documentation.patch
new file mode 100644
index 0000000000000000000000000000000000000000..b4673f5c95e321ce36e68ac568cfc27aca60254b
--- /dev/null
+++ b/helpers/DATA/freedom-maker/0003-trisquelize-documentation.patch
@@ -0,0 +1,185 @@
+diff --git a/README.md b/README.md
+index 3fb54f4..8b01fbd 100644
+--- a/README.md
++++ b/README.md
+@@ -1,7 +1,3 @@
+-[![pipeline status](https://salsa.debian.org/freedombox-team/freedom-maker/badges/master/pipeline.svg)](https://salsa.debian.org/freedombox-team/freedom-maker/commits/master)
+-[![Debian Unstable](https://badges.debian.net/badges/debian/unstable/freedom-maker/version.svg)](https://packages.debian.org/unstable/freedom-maker)
+-[![Debian Testing](https://badges.debian.net/badges/debian/testing/freedom-maker/version.svg)](https://packages.debian.org/testing/freedom-maker)
+-
+ # Freedom-Maker: The FreedomBox image builder
+ 
+ These scripts build FreedomBox-images for various supported hardware
+@@ -13,9 +9,9 @@ during releases and for advanced users who intend to build their own
+ images. Regular users who wish to turn their devices into
+ FreedomBoxes should instead download the pre-built images.
+ 
+-Get a pre-built image via https://freedombox.org/download/.  There
++Get a pre-built image via https://cdimage.trisquel.info/trisquel-images/. There
+ are images available for all supported target devices.  You also find
+-the setup instructions on the [Wiki](https://wiki.debian.org/FreedomBox/).
++the setup instructions on the [Wiki](https://trisquel.info/en/wiki/FreedomBox/).
+ 
+ If you wish to create your own FreedomBox image, perhaps with some
+ tweaks, see the *Build Images* section below.
+@@ -24,7 +20,7 @@ tweaks, see the *Build Images* section below.
+ 
+ ## Supported Targets
+ 
+-Freedom-maker supports building for the following targets:
++Trisquel Freedom-maker supports building for the following targets:
+ 
+ | target                | description |
+ |-----------------------|-------------|
+@@ -43,25 +39,18 @@ Freedom-maker supports building for the following targets:
+ | *pine64-plus*         | Pine64+ board's SD card |
+ | *qemu-amd64*          | 64-bit image for the Qemu virtualization tool |
+ | *qemu-i386*           | 32-bit image for the Qemu virtualization tool |
+-| *raspberry2*          | RasbperryPi 2's SD card |
+-| *raspberry3*          | RasbperryPi 3's SD card |
+-| *raspberry3-b-plus*   | RasbperryPi 3 Model B+'s SD card |
+-| *test*                | build virtualbox i386 image and run diagnostics tests on it |
+-| *virtualbox-amd64*    | 64-bit image for the VirtualBox virtualization tool |
+-| *virtualbox-i386*     | 32-bit image for the VirtualBox virtualization tool |
+ 
+ ## Running Build
+ 
+-1. Fetch the git source of freedom-maker:
++1. Fetch the 'freedom-maker' source code:
+     ```
+-    $ git clone https://salsa.debian.org/freedombox-team/freedom-maker.git
++    $ apt source freedom-maker
+     ```
+ 
+ 2. Install the required dependencies:
+     ```shell
+     $ sudo apt install btrfs-progs debootstrap kpartx parted qemu-user-static sshpass
+-    $ cd freedom-maker
+-    $ sudo apt build-dep .
++    $ sudo apt build-dep freedom-maker
+     ```
+ 
+ 3. Build images:
+@@ -70,6 +59,7 @@ Freedom-maker supports building for the following targets:
+     to run "parted".
+ 
+     ```
++    $ cd $(find -type d -name 'freedom-maker-*')
+     $ sudo python3 -m freedommaker <TARGET>
+     ```
+     where: &lt;TARGET&gt; is one of the 'Supported Targets' above.
+diff --git a/debian/freedom-maker.1 b/debian/freedom-maker.1
+index 60f3d86..820e84d 100644
+--- a/debian/freedom-maker.1
++++ b/debian/freedom-maker.1
+@@ -51,17 +51,17 @@ Size of the image to build
+ .PP
+ \fB\-\-build\-mirror\fR
+ .RS 4
+-Debian mirror to use for building
++Trisquel mirror to use for building
+ .RE
+ .PP
+ \fB\-\-mirror\fR
+ .RS 4
+-Debian mirror to use in built image
++Trisquel mirror to use in built image
+ .RE
+ .PP
+ \fB\-\-distribution\fR
+ .RS 4
+-Debian release to use in built image
++Trisquel release to use in built image
+ .RE
+ .PP
+ \fB\-\-include\-source\fR
+@@ -106,7 +106,7 @@ Force rebuild of images even when required image exists
+ .PP
+ \fBtargets\fR
+ .RS 4
+-Image targets to build\&. Choose one or more of freedommaker, dreamplug, raspberry, raspberry2, beaglebone, cubieboard2, cubietruck, a20\-olinuxino\-lime, a20\-olinuxino\-lime2, a20\-olinuxino\-micro, i386, amd64, virtualbox\-i386, virtualbox\-amd64, qemu\-i386, qemu\-amd64, pcDuino3
++Image targets to build\&. Choose one or more of freedommaker, dreamplug, beaglebone, cubieboard2, cubietruck, a20\-olinuxino\-lime, a20\-olinuxino\-lime2, a20\-olinuxino\-micro, i386, amd64, qemu\-i386, qemu\-amd64, pcDuino3
+ .RE
+ .SH "EXAMPLES"
+ .PP
+@@ -130,9 +130,9 @@ Build a FreedomBox image for the BeagleBone Single Board Computer\&.
+ .RS 4
+ .\}
+ .nf
+-$ python3 \-m freedommaker dreamplug raspberry raspberry2
++$ python3 \-m freedommaker dreamplug
+       beaglebone cubieboard2 cubietruck a20\-olinuxino\-lime a20\-olinuxino\-lime2 
+-      a20\-olinuxino\-micro i386 amd64 virtualbox\-i386 virtualbox\-amd64 
++      a20\-olinuxino\-micro i386 amd64
+       qemu\-i386 qemu\-amd64 pcDuino3
+ .fi
+ .if n \{\
+diff --git a/doc/freedom-maker.xml b/doc/freedom-maker.xml
+index 74ce990..349a136 100644
+--- a/doc/freedom-maker.xml
++++ b/doc/freedom-maker.xml
+@@ -94,7 +94,7 @@
+         <term> <option>--build-mirror</option></term>
+          <listitem>
+           <para>
+-            Debian mirror to use for building
++            Trisquel mirror to use for building
+           </para>
+         </listitem>
+       </varlistentry>
+@@ -102,7 +102,7 @@
+         <term> <option>--mirror</option></term>
+          <listitem>
+            <para>
+-             Debian mirror to use in built image
++             Trisquel mirror to use in built image
+           </para>
+         </listitem>
+       </varlistentry>
+@@ -110,7 +110,7 @@
+         <term> <option>--distribution</option></term>
+          <listitem>
+            <para>
+-             Debian release to use in built image
++             Trisquel release to use in built image
+           </para>
+         </listitem>
+       </varlistentry>
+diff --git a/freedommaker/application.py b/freedommaker/application.py
+index dbe8ca0..0bebc35 100644
+--- a/freedommaker/application.py
++++ b/freedommaker/application.py
+@@ -94,15 +94,15 @@ class Application(object):
+         parser.add_argument(
+             '--build-mirror',
+             default=BUILD_MIRROR,
+-            help='Debian mirror to use for building')
++            help='Trisquel mirror to use for building')
+         parser.add_argument(
+             '--mirror',
+             default=MIRROR,
+-            help='Debian mirror to use in built image')
++            help='Trisquel mirror to use in built image')
+         parser.add_argument(
+             '--distribution',
+             default=DISTRIBUTION,
+-            help='Debian release to use in built image')
++            help='Trisquel release to use in built image')
+         parser.add_argument(
+             '--package',
+             action='append',
+diff --git a/freedommaker/internal.py b/freedommaker/internal.py
+index acc22d8..49bd4a9 100644
+--- a/freedommaker/internal.py
++++ b/freedommaker/internal.py
+@@ -275,9 +275,7 @@ class InternalBuilderBackend():
+ 
+     def _set_freedombox_disk_image_flag(self):
+         """Set a flag to indicate that this is a FreedomBox image.
+-
+-        And that FreedomBox is not installed using a Debian package.
+-
++        And not a standard Trisquel system with the FreedomBox packages installed.
+         """
+         library.run_in_chroot(
+             self.state, ['mkdir', '-p', '-m', '755', '/var/lib/freedombox'])
diff --git a/helpers/DATA/freedom-maker/0004-trisquelize-distro-fork-name.patch b/helpers/DATA/freedom-maker/0004-trisquelize-distro-fork-name.patch
new file mode 100644
index 0000000000000000000000000000000000000000..273a1af0a0a39174f2612a1e9b1cb7680441e41e
--- /dev/null
+++ b/helpers/DATA/freedom-maker/0004-trisquelize-distro-fork-name.patch
@@ -0,0 +1,13 @@
+diff --git a/freedommaker/builder.py b/freedommaker/builder.py
+index 8a13188..343af14 100644
+--- a/freedommaker/builder.py
++++ b/freedommaker/builder.py
+@@ -23,7 +23,7 @@ import os
+ 
+ from . import internal, library
+ 
+-DISTRO_BRAND = 'Debian'
++DISTRO_BRAND = 'Trisquel'
+ 
+ # initramfs-tools is a dependency for the kernel-image package. However, when
+ # kernel is not installed, as in case of Raspberry Pi image, explicit dependency
diff --git a/helpers/DATA/freedom-maker/0005-trisquelize-code.patch b/helpers/DATA/freedom-maker/0005-trisquelize-code.patch
new file mode 100644
index 0000000000000000000000000000000000000000..41ff47236656d7762d96f8410c1f80f7950c0108
--- /dev/null
+++ b/helpers/DATA/freedom-maker/0005-trisquelize-code.patch
@@ -0,0 +1,54 @@
+diff --git a/freedommaker/application.py b/freedommaker/application.py
+index 0bebc35..1c012da 100644
+--- a/freedommaker/application.py
++++ b/freedommaker/application.py
+@@ -30,9 +30,9 @@ import freedommaker
+ from .builder import ImageBuilder
+ 
+ IMAGE_SIZE = '3800M'
+-BUILD_MIRROR = 'http://deb.debian.org/debian'
+-MIRROR = 'http://deb.debian.org/debian'
+-DISTRIBUTION = 'unstable'
++BUILD_MIRROR = 'http://us.archive.trisquel.info/trisquel'
++MIRROR = 'http://us.archive.trisquel.info/trisquel'
++DISTRIBUTION = 'nabia'
+ BUILD_DIR = 'build'
+ LOG_LEVEL = 'debug'
+ HOSTNAME = 'freedombox'
+diff --git a/freedommaker/library.py b/freedommaker/library.py
+index 9805278..d724053 100644
+--- a/freedommaker/library.py
++++ b/freedommaker/library.py
+@@ -484,14 +484,14 @@ deb-src {mirror} {distribution} {components}
+     updates_template = '''
+ deb {mirror} {distribution}-updates {components}
+ deb-src {mirror} {distribution}-updates {components}
+-'''
+-    old_security_template = '''
+-deb http://security.debian.org/debian-security/ {distribution}/updates {components}
+-deb-src http://security.debian.org/debian-security/ {distribution}/updates {components}
+ '''
+     security_template = '''
+-deb http://security.debian.org/debian-security/ {distribution}-security {components}
+-deb-src http://security.debian.org/debian-security/ {distribution}-security {components}
++deb {mirror} {distribution}-security {components}
++deb-src {mirror} {distribution}-security {components}
++'''
++    backports_template = '''
++#deb {mirror} {distribution}-backports {components}
++#deb-src {mirror} {distribution}-backports {components}
+ '''
+     file_path = path_in_mount(state, 'etc/apt/sources.list')
+     with open(file_path, 'w') as file_handle:
+@@ -500,8 +500,9 @@ deb-src http://security.debian.org/debian-security/ {distribution}-security {com
+             file_handle.write(updates_template.format(**values))
+             if distribution in ('bullseye', 'testing'):
+                 file_handle.write(security_template.format(**values))
+-            else:  # stable/buster
+-                file_handle.write(old_security_template.format(**values))
++            elif distribution in ('nabia'):
++                file_handle.write(security_template.format(**values))
++                file_handle.write(backports_template.format(**values))
+ 
+     run_in_chroot(state, ['apt-get', 'update'])
+     run_in_chroot(state, ['apt-get', 'clean'])
diff --git a/helpers/DATA/freedom-maker/0006-remove-nonfree-support.patch b/helpers/DATA/freedom-maker/0006-remove-nonfree-support.patch
new file mode 100644
index 0000000000000000000000000000000000000000..a6c5082a3235f7d31b6081320e74f5036a1470d0
--- /dev/null
+++ b/helpers/DATA/freedom-maker/0006-remove-nonfree-support.patch
@@ -0,0 +1,383 @@
+diff --git a/debian/control b/debian/control
+index 21f77ce..f13aafd 100644
+--- a/debian/control
++++ b/debian/control
+@@ -41,7 +41,7 @@ Depends:
+  u-boot-tools,
+  xz-utils (>= 5.2.2),
+ Suggests:
+- virtualbox
++ debootstrap
+ Description: FreedomBox image builder
+  FreedomBox is a personal cloud server which can be installed on single board
+  computers and Debian machines.
+diff --git a/freedommaker/builders/__init__.py b/freedommaker/builders/__init__.py
+index 4df3c3f..05e2f4d 100644
+--- a/freedommaker/builders/__init__.py
++++ b/freedommaker/builders/__init__.py
+@@ -35,10 +35,3 @@ from . import pine64_plus
+ from . import pine64_lts
+ from . import qemu_amd64
+ from . import qemu_i386
+-from . import raspberry_pi_2
+-from . import raspberry_pi_3
+-from . import raspberry_pi_3_b_plus
+-from . import raspberry_pi_with_uboot
+-from . import vagrant
+-from . import virtualbox_amd64
+-from . import virtualbox_i386
+diff --git a/freedommaker/builders/raspberry_pi_2.py b/freedommaker/builders/raspberry_pi_2.py
+deleted file mode 100644
+index 5821a94..0000000
+--- a/freedommaker/builders/raspberry_pi_2.py
++++ /dev/null
+@@ -1,31 +0,0 @@
+-#
+-# This file is part of Freedom Maker.
+-#
+-# This program is free software: you can redistribute it and/or modify
+-# it under the terms of the GNU General Public License as published by
+-# the Free Software Foundation, either version 3 of the License, or
+-# (at your option) any later version.
+-#
+-# This program is distributed in the hope that it will be useful,
+-# but WITHOUT ANY WARRANTY; without even the implied warranty of
+-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+-# GNU General Public License for more details.
+-#
+-# You should have received a copy of the GNU General Public License
+-# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+-#
+-"""
+-Worker class to build Raspberry Pi 2 image.
+-"""
+-
+-from .raspberry_pi_with_uboot import RaspberryPiWithUBoot
+-
+-
+-class RaspberryPi2ImageBuilder(RaspberryPiWithUBoot):
+-    """Image builder for Raspberry Pi 2 target."""
+-    architecture = 'armhf'
+-    machine = 'raspberry2'
+-    boot_offset = '64mib'
+-    kernel_flavor = 'armmp'
+-    flash_kernel_name = 'Raspberry Pi 2 Model B'
+-    uboot_variant = 'rpi_2'
+diff --git a/freedommaker/builders/raspberry_pi_3.py b/freedommaker/builders/raspberry_pi_3.py
+deleted file mode 100644
+index 0cfe209..0000000
+--- a/freedommaker/builders/raspberry_pi_3.py
++++ /dev/null
+@@ -1,32 +0,0 @@
+-#
+-# This file is part of Freedom Maker.
+-#
+-# This program is free software: you can redistribute it and/or modify
+-# it under the terms of the GNU General Public License as published by
+-# the Free Software Foundation, either version 3 of the License, or
+-# (at your option) any later version.
+-#
+-# This program is distributed in the hope that it will be useful,
+-# but WITHOUT ANY WARRANTY; without even the implied warranty of
+-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+-# GNU General Public License for more details.
+-#
+-# You should have received a copy of the GNU General Public License
+-# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+-#
+-"""
+-Worker class to build Raspberry Pi 3 image.
+-"""
+-
+-from .raspberry_pi_with_uboot import RaspberryPiWithUBoot
+-
+-
+-class RaspberryPi3ImageBuilder(RaspberryPiWithUBoot):
+-    """Image builder for Raspberry Pi 3 target."""
+-    architecture = 'armhf'
+-    machine = 'raspberry3'
+-    free = False
+-    boot_offset = '64mib'
+-    kernel_flavor = 'armmp'
+-    flash_kernel_name = 'Raspberry Pi 3 Model B'
+-    uboot_variant = 'rpi_3_32b'
+diff --git a/freedommaker/builders/raspberry_pi_3_b_plus.py b/freedommaker/builders/raspberry_pi_3_b_plus.py
+deleted file mode 100644
+index 35c778d..0000000
+--- a/freedommaker/builders/raspberry_pi_3_b_plus.py
++++ /dev/null
+@@ -1,27 +0,0 @@
+-#
+-# This file is part of Freedom Maker.
+-#
+-# This program is free software: you can redistribute it and/or modify
+-# it under the terms of the GNU General Public License as published by
+-# the Free Software Foundation, either version 3 of the License, or
+-# (at your option) any later version.
+-#
+-# This program is distributed in the hope that it will be useful,
+-# but WITHOUT ANY WARRANTY; without even the implied warranty of
+-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+-# GNU General Public License for more details.
+-#
+-# You should have received a copy of the GNU General Public License
+-# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+-#
+-"""
+-Worker class to build Raspberry Pi 3 Model B+ image.
+-"""
+-
+-from .raspberry_pi_3 import RaspberryPi3ImageBuilder
+-
+-
+-class RaspberryPi3BPlusImageBuilder(RaspberryPi3ImageBuilder):
+-    """Image builder for Raspberry Pi 3 Model B+ target."""
+-    machine = 'raspberry3-b-plus'
+-    flash_kernel_name = 'Raspberry Pi 3 Model B+'
+diff --git a/freedommaker/builders/raspberry_pi_with_uboot.py b/freedommaker/builders/raspberry_pi_with_uboot.py
+deleted file mode 100644
+index e983404..0000000
+--- a/freedommaker/builders/raspberry_pi_with_uboot.py
++++ /dev/null
+@@ -1,62 +0,0 @@
+-#
+-# This file is part of Freedom Maker.
+-#
+-# This program is free software: you can redistribute it and/or modify
+-# it under the terms of the GNU General Public License as published by
+-# the Free Software Foundation, either version 3 of the License, or
+-# (at your option) any later version.
+-#
+-# This program is distributed in the hope that it will be useful,
+-# but WITHOUT ANY WARRANTY; without even the implied warranty of
+-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+-# GNU General Public License for more details.
+-#
+-# You should have received a copy of the GNU General Public License
+-# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+-#
+-"""
+-Base worker class to build Raspberry Pi 2 and 3 images.
+-"""
+-
+-from .. import library
+-from .arm import ARMImageBuilder
+-
+-
+-class RaspberryPiWithUBoot(ARMImageBuilder):
+-    """Base image builder for Raspberry Pi 2 and 3 targets."""
+-    free = False
+-    uboot_variant = None
+-    firmware_filesystem_type = 'vfat'
+-    firmware_size = '60mib'
+-
+-    def install_boot_loader(self, state):
+-        """Install the boot loader onto the image."""
+-        if not self.uboot_variant:
+-            raise NotImplementedError
+-
+-        firmware_package = 'raspi-firmware'
+-        if self.arguments.distribution in ['buster', 'stable']:
+-            firmware_package = 'raspi3-firmware'
+-
+-        script = '''
+-set -e
+-set -x
+-set -o pipefail
+-
+-apt-get install --no-install-recommends -y dpkg-dev
+-cd /tmp
+-apt-get source {firmware_package}
+-cp {firmware_package}*/boot/* /boot/firmware
+-rm -rf {firmware_package}*
+-cd /
+-
+-# remove unneeded firmware files
+-rm -f /boot/firmware/fixup_*
+-rm -f /boot/firmware/start_*
+-
+-# u-boot setup
+-apt-get install -y u-boot-rpi
+-cp /usr/lib/u-boot/{uboot_variant}/u-boot.bin /boot/firmware/kernel.img
+-cp /usr/lib/u-boot/{uboot_variant}/u-boot.bin /boot/firmware/kernel7.img
+-'''.format(firmware_package=firmware_package, uboot_variant=self.uboot_variant)
+-        library.run_in_chroot(state, ['bash', '-c', script])
+diff --git a/freedommaker/builders/vagrant.py b/freedommaker/builders/vagrant.py
+deleted file mode 100644
+index f1243dd..0000000
+--- a/freedommaker/builders/vagrant.py
++++ /dev/null
+@@ -1,55 +0,0 @@
+-#
+-# This file is part of Freedom Maker.
+-#
+-# This program is free software: you can redistribute it and/or modify
+-# it under the terms of the GNU General Public License as published by
+-# the Free Software Foundation, either version 3 of the License, or
+-# (at your option) any later version.
+-#
+-# This program is distributed in the hope that it will be useful,
+-# but WITHOUT ANY WARRANTY; without even the implied warranty of
+-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+-# GNU General Public License for more details.
+-#
+-# You should have received a copy of the GNU General Public License
+-# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+-#
+-"""
+-Worker class to build Vagrant images.
+-"""
+-
+-import os
+-
+-from .. import library
+-from .virtualbox_amd64 import VirtualBoxAmd64ImageBuilder
+-
+-
+-class VagrantImageBuilder(VirtualBoxAmd64ImageBuilder):
+-    """Image builder for Vagrant package."""
+-    vagrant_extension = '.box'
+-
+-    @classmethod
+-    def get_target_name(cls):
+-        """Return the name of the target for an image builder."""
+-        return 'vagrant'
+-
+-    def build(self):
+-        """Run the image building process."""
+-        vm_file = self._replace_extension(self.image_file,
+-                                          self.vm_image_extension)
+-        vagrant_file = self._replace_extension(self.image_file,
+-                                               self.vagrant_extension)
+-
+-        self.make_image()
+-        self.create_vm_file(self.image_file, vm_file)
+-        os.remove(self.image_file)
+-        self.vagrant_package(vm_file, vagrant_file)
+-
+-    @staticmethod
+-    def vagrant_package(vm_file, vagrant_file):
+-        """Create a vagrant package from VM file."""
+-        library.run(
+-            ['bin/vagrant-package', '--output', vagrant_file, vm_file])
+-
+-
+-
+diff --git a/freedommaker/builders/virtualbox.py b/freedommaker/builders/virtualbox.py
+deleted file mode 100644
+index f5bac57..0000000
+--- a/freedommaker/builders/virtualbox.py
++++ /dev/null
+@@ -1,46 +0,0 @@
+-#
+-# This file is part of Freedom Maker.
+-#
+-# This program is free software: you can redistribute it and/or modify
+-# it under the terms of the GNU General Public License as published by
+-# the Free Software Foundation, either version 3 of the License, or
+-# (at your option) any later version.
+-#
+-# This program is distributed in the hope that it will be useful,
+-# but WITHOUT ANY WARRANTY; without even the implied warranty of
+-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+-# GNU General Public License for more details.
+-#
+-# You should have received a copy of the GNU General Public License
+-# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+-#
+-"""
+-Base worker class to build VirtualBox images.
+-"""
+-
+-import os
+-
+-from .. import library
+-from .vm import VMImageBuilder
+-
+-
+-class VirtualBoxImageBuilder(VMImageBuilder):
+-    """Base image builder for all VirtualBox targets."""
+-    vm_image_extension = '.vdi'
+-
+-    @classmethod
+-    def get_target_name(cls):
+-        """Return the name of the target for an image builder."""
+-        if getattr(cls, 'architecture', None):
+-            return 'virtualbox-' + cls.architecture
+-
+-        return None
+-
+-    def create_vm_file(self, image_file, vm_file):
+-        """Create a VM file from image file."""
+-        try:
+-            os.remove(vm_file)
+-        except FileNotFoundError:
+-            pass
+-
+-        library.run(['VBoxManage', 'convertdd', image_file, vm_file])
+diff --git a/freedommaker/builders/virtualbox_amd64.py b/freedommaker/builders/virtualbox_amd64.py
+deleted file mode 100644
+index 90609e0..0000000
+--- a/freedommaker/builders/virtualbox_amd64.py
++++ /dev/null
+@@ -1,27 +0,0 @@
+-#
+-# This file is part of Freedom Maker.
+-#
+-# This program is free software: you can redistribute it and/or modify
+-# it under the terms of the GNU General Public License as published by
+-# the Free Software Foundation, either version 3 of the License, or
+-# (at your option) any later version.
+-#
+-# This program is distributed in the hope that it will be useful,
+-# but WITHOUT ANY WARRANTY; without even the implied warranty of
+-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+-# GNU General Public License for more details.
+-#
+-# You should have received a copy of the GNU General Public License
+-# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+-#
+-"""
+-Worker class to build VirtualBox amd64 images.
+-"""
+-
+-from .virtualbox import VirtualBoxImageBuilder
+-
+-
+-class VirtualBoxAmd64ImageBuilder(VirtualBoxImageBuilder):
+-    """Image builder for all VirtualBox amd64 targets."""
+-    architecture = 'amd64'
+-    kernel_flavor = 'amd64'
+diff --git a/freedommaker/builders/virtualbox_i386.py b/freedommaker/builders/virtualbox_i386.py
+deleted file mode 100644
+index a7846a7..0000000
+--- a/freedommaker/builders/virtualbox_i386.py
++++ /dev/null
+@@ -1,27 +0,0 @@
+-#
+-# This file is part of Freedom Maker.
+-#
+-# This program is free software: you can redistribute it and/or modify
+-# it under the terms of the GNU General Public License as published by
+-# the Free Software Foundation, either version 3 of the License, or
+-# (at your option) any later version.
+-#
+-# This program is distributed in the hope that it will be useful,
+-# but WITHOUT ANY WARRANTY; without even the implied warranty of
+-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+-# GNU General Public License for more details.
+-#
+-# You should have received a copy of the GNU General Public License
+-# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+-#
+-"""
+-Worker class to build VirtualBox i386 images.
+-"""
+-
+-from .virtualbox import VirtualBoxImageBuilder
+-
+-
+-class VirtualBoxI386ImageBuilder(VirtualBoxImageBuilder):
+-    """Image builder for all VirtualBox i386 targets."""
+-    architecture = 'i386'
+-    kernel_flavor = '686'
diff --git a/helpers/DATA/freedom-maker/0007-patch-test_library-nabia.patch b/helpers/DATA/freedom-maker/0007-patch-test_library-nabia.patch
new file mode 100644
index 0000000000000000000000000000000000000000..422c41210cce1769720e2e788e61c9c917915710
--- /dev/null
+++ b/helpers/DATA/freedom-maker/0007-patch-test_library-nabia.patch
@@ -0,0 +1,79 @@
+Make sure to replace stable (strech) for "nabia" to the corresponding CODENAME on further releases
+Also unstable to the corresponding dev release, aramo for nabia.
+
+diff --git a/freedommaker/tests/test_library.py b/freedommaker/tests/test_library.py
+index daf34c2..b58fc6d 100644
+--- a/freedommaker/tests/test_library.py
++++ b/freedommaker/tests/test_library.py
+@@ -438,13 +438,13 @@ modify x x
+     @patch('freedommaker.library.run')
+     def test_qemu_debootstrap(self, run):
+         """Test debootstrapping using qemu."""
+-        library.qemu_debootstrap(self.state, 'i386', 'stretch', 'minbase',
+-                                 ['main', 'contrib'], ['p1', 'p2'],
+-                                 'http://deb.debian.org/debian')
++        library.qemu_debootstrap(self.state, 'amd64', 'nabia', 'minbase',
++                                 ['main'], ['p1', 'p2'],
++                                 'http://archive.trisquel.org/trisquel')
+         run.assert_called_with([
+-            'qemu-debootstrap', '--arch=i386', '--variant=minbase',
+-            '--components=main,contrib', '--include=p1,p2', 'stretch',
+-            self.state['mount_point'], 'http://deb.debian.org/debian'
++            'qemu-debootstrap', '--arch=amd64', '--variant=minbase',
++            '--components=main', '--include=p1,p2', 'nabia',
++            self.state['mount_point'], 'http://archive.trisquel.org/trisquel'
+         ])
+ 
+         self.assertEqual(
+@@ -566,31 +566,37 @@ ff02::2 ip6-allrouters
+         sources_path = self.state['mount_point'] + '/etc/apt/sources.list'
+ 
+         stable_content = '''
+-deb http://deb.debian.org/debian stretch main
+-deb-src http://deb.debian.org/debian stretch main
++deb http://archive.trisquel.org/trisquel nabia main
++deb-src http://archive.trisquel.org/trisquel nabia main
+ 
+-deb http://deb.debian.org/debian stretch-updates main
+-deb-src http://deb.debian.org/debian stretch-updates main
++deb http://archive.trisquel.org/trisquel nabia-updates main
++deb-src http://archive.trisquel.org/trisquel nabia-updates main
+ 
+-deb http://security.debian.org/debian-security/ stretch/updates main
+-deb-src http://security.debian.org/debian-security/ stretch/updates main
++deb http://archive.trisquel.org/trisquel nabia-security main
++deb-src http://archive.trisquel.org/trisquel nabia-security main
++
++#deb http://archive.trisquel.org/trisquel nabia-backports main
++#deb-src http://archive.trisquel.org/trisquel nabia-backports main
+ '''
+         with self.assert_file_change(sources_path, None, stable_content):
+-            library.setup_apt(self.state, 'http://deb.debian.org/debian',
+-                              'stretch', ['main'])
++            library.setup_apt(self.state, 'http://archive.trisquel.org/trisquel',
++                              'nabia', ['main'])
+ 
+         self.assertEqual(run.call_args_list, [
+             call(self.state, ['apt-get', 'update']),
+             call(self.state, ['apt-get', 'clean'])
+         ])
+ 
+-        unstable_content = '''
+-deb http://ftp.us.debian.org/debian unstable main contrib non-free
+-deb-src http://ftp.us.debian.org/debian unstable main contrib non-free
++        aramo_content = '''
++deb http://archive.trisquel.org/trisquel aramo main
++deb-src http://archive.trisquel.org/trisquel aramo main
++
++deb http://archive.trisquel.org/trisquel aramo-updates main
++deb-src http://archive.trisquel.org/trisquel aramo-updates main
+ '''
+-        with self.assert_file_change(sources_path, None, unstable_content):
+-            library.setup_apt(self.state, 'http://ftp.us.debian.org/debian',
+-                              'unstable', ['main', 'contrib', 'non-free'])
++        with self.assert_file_change(sources_path, None, aramo_content):
++            library.setup_apt(self.state, 'http://archive.trisquel.org/trisquel',
++                              'aramo', ['main'])
+ 
+     @patch('freedommaker.library.run_in_chroot')
+     def test_setup_flash_kernel(self, run):
diff --git a/helpers/DATA/freedom-maker/0008-specify-generic-kernels.patch b/helpers/DATA/freedom-maker/0008-specify-generic-kernels.patch
new file mode 100644
index 0000000000000000000000000000000000000000..d68f31264c38b313296cd69c4e2f086e9d26c6f6
--- /dev/null
+++ b/helpers/DATA/freedom-maker/0008-specify-generic-kernels.patch
@@ -0,0 +1,79 @@
+diff --git a/freedommaker/builders/a20.py b/freedommaker/builders/a20.py
+index f543ae5..7f13c6d 100644
+--- a/freedommaker/builders/a20.py
++++ b/freedommaker/builders/a20.py
+@@ -25,7 +25,7 @@ from .arm import ARMImageBuilder
+ class A20ImageBuilder(ARMImageBuilder):
+     """Base image builder for all Allwinner A20 board based targets."""
+     architecture = 'armhf'
+-    kernel_flavor = 'armmp-lpae'
++    kernel_flavor = 'generic'
+     boot_offset = '1mib'
+     u_boot_path = None
+ 
+diff --git a/freedommaker/builders/a64.py b/freedommaker/builders/a64.py
+index d0e59ec..00b1259 100644
+--- a/freedommaker/builders/a64.py
++++ b/freedommaker/builders/a64.py
+@@ -27,7 +27,7 @@ from .arm import ARMImageBuilder
+ class A64ImageBuilder(ARMImageBuilder):
+     """Image builder for all Allwinner A64 board targets."""
+     architecture = 'arm64'
+-    kernel_flavor = 'arm64'
++    kernel_flavor = 'generic'
+     boot_offset = '1mib'
+     u_boot_target = None
+ 
+diff --git a/freedommaker/builders/amd64.py b/freedommaker/builders/amd64.py
+index 89c3862..cd15b36 100644
+--- a/freedommaker/builders/amd64.py
++++ b/freedommaker/builders/amd64.py
+@@ -24,4 +24,4 @@ from .amd_intel import AMDIntelImageBuilder
+ class AMD64ImageBuilder(AMDIntelImageBuilder):
+     """Image builder for all amd64 targets."""
+     architecture = 'amd64'
+-    kernel_flavor = 'amd64'
++    kernel_flavor = 'generic'
+diff --git a/freedommaker/builders/beaglebone.py b/freedommaker/builders/beaglebone.py
+index 99a2d40..aca4a78 100644
+--- a/freedommaker/builders/beaglebone.py
++++ b/freedommaker/builders/beaglebone.py
+@@ -26,7 +26,7 @@ class BeagleBoneImageBuilder(ARMImageBuilder):
+     """Image builder for BeagleBone target."""
+     architecture = 'armhf'
+     machine = 'beaglebone'
+-    kernel_flavor = 'armmp'
++    kernel_flavor = 'generic'
+     boot_offset = '2mib'
+     flash_kernel_name = 'TI AM335x BeagleBone Black'
+     flash_kernel_options = 'console=ttyO0'
+diff --git a/freedommaker/builders/i386.py b/freedommaker/builders/i386.py
+index df9d9a0..bf23c52 100644
+--- a/freedommaker/builders/i386.py
++++ b/freedommaker/builders/i386.py
+@@ -24,4 +24,4 @@ from .amd_intel import AMDIntelImageBuilder
+ class I386ImageBuilder(AMDIntelImageBuilder):
+     """Image builder for all i386 targets."""
+     architecture = 'i386'
+-    kernel_flavor = '686'
++    kernel_flavor = 'generic'
+diff --git a/freedommaker/builders/qemu_amd64.py b/freedommaker/builders/qemu_amd64.py
+index 761a369..120caae 100644
+--- a/freedommaker/builders/qemu_amd64.py
++++ b/freedommaker/builders/qemu_amd64.py
+@@ -24,4 +24,4 @@ from .qemu import QemuImageBuilder
+ class QemuAmd64ImageBuilder(QemuImageBuilder):
+     """Image builder for all Qemu amd64 targets."""
+     architecture = 'amd64'
+-    kernel_flavor = 'amd64'
++    kernel_flavor = 'generic'
+diff --git a/freedommaker/builders/qemu_i386.py b/freedommaker/builders/qemu_i386.py
+index 6b478b2..e8bca34 100644
+--- a/freedommaker/builders/qemu_i386.py
++++ b/freedommaker/builders/qemu_i386.py
+@@ -24,4 +24,4 @@ from .qemu import QemuImageBuilder
+ class QemuI386ImageBuilder(QemuImageBuilder):
+     """Image builder for all Qemu i386 targets."""
+     architecture = 'i386'
+-    kernel_flavor = '686'
++    kernel_flavor = 'generic'
diff --git a/helpers/make-freedom-maker b/helpers/make-freedom-maker
new file mode 100644
index 0000000000000000000000000000000000000000..d98ed9d8c1bcbb520ccc065202139ed66e5acfbd
--- /dev/null
+++ b/helpers/make-freedom-maker
@@ -0,0 +1,33 @@
+#!/bin/sh
+
+# trisquel package helper for 'freedom-maker'
+#
+#    Copyright (C) 2022 bill-auger <bill-auger@programmer.net>
+#
+#    This program is free software: you can redistribute it and/or modify
+#    it under the terms of the GNU General Public License as published by
+#    the Free Software Foundation, either version 3 of the License, or
+#    (at your option) any later version.
+#
+#    This program is distributed in the hope that it will be useful,
+#    but WITHOUT ANY WARRANTY; without even the implied warranty of
+#    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+#    GNU General Public License for more details.
+#
+#    You should have received a copy of the GNU General Public License
+#    along with this program.  If not, see <https://www.gnu.org/licenses/>.
+
+
+VERSION=1
+
+. ./config
+
+for patch in $(ls -v ${DATA}/*.patch)
+do
+echo "Applying $patch"
+patch -Np1 < $patch
+done
+
+changelog "Build from Trisquel repos - Delete support for non-free hardware and emulators"
+
+compile