# Fastest way to get started on a new machine

**URL:** <https://discourse.julialang.org/t/fastest-way-to-get-started-on-a-new-machine/45725>\
**Category:** Offtopic\
**Created:** [August 29, 2020, 7:04am UTC](https://discourse.julialang.org/t/fastest-way-to-get-started-on-a-new-machine/45725 "2020-08-29T07:04:06Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![mohamed82008](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/mohamed82008/32/18171_2.png) [@mohamed82008](https://discourse.julialang.org/u/mohamed82008)\
**Post date:** [August 29, 2020, 7:04am UTC](https://discourse.julialang.org/t/fastest-way-to-get-started-on-a-new-machine/45725/1 "2020-08-29T07:04:06Z")

</div>

Hi,

I am curious what people’s recommended workflows for getting started on a new machine are, installing all the software and drivers you normally use. I am mostly interested in Linux but I am curious if better workflows exist in Windows or Mac. Do you have a fancy setup script? Do you have a custom distro? Do you use a virtual machine or container-ish hack? Do you clone your system somehow? Any tools you recommend?

---

<div class="post-metadata">

**Author:** ![Tamas\_Papp](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/tamas_papp/32/25949_2.png) [@Tamas\_Papp](https://discourse.julialang.org/u/Tamas_Papp)\
**Post date:** [August 29, 2020, 8:50am UTC](https://discourse.julialang.org/t/fastest-way-to-get-started-on-a-new-machine/45725/2 "2020-08-29T08:50:59Z")

</div>

I use Ubuntu. I just install the new system, copy over my home directory (`rsync -avP` or something like that), and then `apt install` whatever I find is missing.

Last time I installed a new machine I put all partitions but `/boot` on ZFS, should make the above even easier next time.

I am assuming that the machine is a desktop/laptop. For a server, I would do a more careful migration of `/var`, `/etc`, and other relevant directories. But on a laptop, I pretty much never customize anything there, and just keep a backup in case I need to grep it for some stuff. In fact, I am happy to lose the cruft that accumulates in directories for each new install.

I don’t think that containers make much sense for a laptop/desktop, but these days they have almost zero overhead anyway so why not. I have a colleague who runs Ubuntu on a MacBook Pro within a container (he likes the hardware).

---

<div class="post-metadata">

**Author:** ![Henrique\_Becker](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/henrique_becker/32/15443_2.png) [@Henrique\_Becker](https://discourse.julialang.org/u/Henrique_Becker)\
**Post date:** [August 29, 2020, 1:45pm UTC](https://discourse.julialang.org/t/fastest-way-to-get-started-on-a-new-machine/45725/3 "2020-08-29T13:45:57Z")

</div>

I use Arch Linux.

I re-create my user (that ends up having the same UID and GID because is the first user created). I copy the home from the old machine (preserving permissions). I execute a `pacman` command in the old machine to check all packages I explicitly installed and install the same in the new machine (or a subset of them, if I perceive many of them are not necessary anymore).

Arch Linux installation process is kinda of manual, but I like it this way. I often end up improving my installation one extra step towards my ideal. One day I will test that disk encryption thingies.

---

<div class="post-metadata">

**Author:** ![ffevotte](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/ffevotte/32/6587_2.png) [@ffevotte](https://discourse.julialang.org/u/ffevotte)\
**Post date:** [August 29, 2020, 7:29pm UTC](https://discourse.julialang.org/t/fastest-way-to-get-started-on-a-new-machine/45725/4 "2020-08-29T19:29:27Z")

</div>

I use Debian.

I just install the new system, making use of the `tasksel` step in the end to install the recommended packages for a desktop system.

I have a gitted shell-script helping re-install all other packages that I need, along the lines of:

```julia
# Base utilities
apt install -y emacs git
apt install -y htop tree gparted
apt install -y rsnapshot
...

# Desktop environment
apt install -y awesome kitty i3lock kupfer lxpolkit
...

```

(This list of packages is not kept updated each time I install a package. Instead, before using this script on a new system, I try and make sure it is as up-to-date as possible by looking for `apt install ` commands in the `/root/.bash_history` files of other machines.)

  

I then create my user and populate the (initially empty) home directory with

- config files coming from a few git repos;
- possibly other files and documents coming from my back-up system.
