Automated installation of multiple applications after a fresh OS install? (Fedora) - eviltoast

Hi all,

I am about to do a bit of a distro hop, and I am looking at Fedora and its spins, after years on Debian / POP.

I am not looking forward to setting it all up again, it’s a drag.

I wonder, is there a tool that lets me script installs?

I’ll want to check if application exists, and if so, update, otherwise, install. That kind of thing.

Things like:

  • Telegram
  • Joplin
  • Docker
  • Firefox
  • Ungoogle Chromium
  • Sublime Text
  • VSCodium
  • Keepass
  • Thunderbird
  • DBeaver
  • Gimp
  • Inkscape
  • KDENLive
  • Syncthing
  • Steam
  • VLC
  • Localsend
  • Flameshot
  • Element
  • Cherrytree
  • Calibre
  • Anydesk

I show the list, only to give an idea of what might be involved.

I’m new to Fedora, so not sure how it differs beyond the package manager. But, thought I’d ask.

Does such a tool exist, and is it worth my time? I can practice on a VM before trying on the final install/s.

Thank you

  • timbuck2themoon@sh.itjust.works
    link
    fedilink
    English
    arrow-up
    1
    ·
    edit-2
    2 months ago

    I distinctly remember yum/dnf should be using a loop. Forget why but it’s recommended. Here’s a snippet from my playbook. Simply make the vars as you need and run.

      - name: Install flathub as remote
        ansible.builtin.shell:
          cmd: flatpak remote-add --if-not-exists flathub https://dl.flathub.org/repo/flathub.flatpakrepo
        tags:
          - apps
    
      - name: Install flatpak apps
        community.general.flatpak:
          name: "{{ item }}"
          state: present
        loop: "{{ flatpaks }}"
        tags:
          - apps
    
      - name: Remove some default unused packages
        ansible.builtin.dnf:
          name: "{{ item }}"
          state: absent
          update_cache: no
        loop: "{{ remove }}"
        ignore_errors: true
        tags:
          - apps
    
      - name: Install our packages
        ansible.builtin.dnf:
          name: "{{ item }}"
          state: present
          update_cache: yes
        loop: "{{ rpms }}"
        ignore_errors: true
        tags:
          - apps```
    
    On mobile. Apologies if formatting is off.