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

  • @[email protected]
    link
    fedilink
    52 months ago

    Something like Ansible won’t help you the first time around, but it’ll make the next times easier.

  • Irdial
    link
    fedilink
    22 months ago

    I use yadm’s post-checkout script feature to accomplish this on my machines.

  • Possibly linux
    link
    fedilink
    English
    42 months ago

    Could you just build a base image and then deploy it?

    Also Ansible is pretty solid

  • @[email protected]
    link
    fedilink
    22 months ago

    That’s one of the things I miss the most in Gentoo, having the packages of your system defined in text files so a fresh install was just copying those files and running an update.

    I’ve tried similar things with other distros, but it’s never the same, the list of packages ends up getting out of date or ends up with too much garbage.

    Currently I have a home server so I took the time to get an Ansible playbook setup for running, maintaining, and maybe migrating the server if needed. Since some stuff is also run on other machines that I have (update system, update some docker images I run in multiple systems, etc) I did setup some minimal packages that I need on my main system, it’s easy enough but I wouldn’t recommend using Ansible just for this (but if you also have dotfiles it’s a great tool for automating lots of the initial setup).

    All of that being said, the reason I never bothered with this until I had a home server is that usually there are years between system installs, so even if what you had was exactly what you wanted the last time you installed your system, it’s unlikely to be exactly what you want next time you do. Since the last time I installed my main system I switched from X to Wayland, from i3 to Hyprland and then Sway, etc, etc…

  • @[email protected]
    link
    fedilink
    English
    12 months ago

    Some distros allow this. Nix for example allows you to save config files that describe your entire system (apps, settings, etc) and then load them in one go. Other distros are following suit with their own tailored solutions too (I think Ubuntu might have something? Manjaro?).

  • @[email protected]
    link
    fedilink
    62 months ago

    I did more than 5 installs this weekend (for … reasons) and the “trick” IMHO is …

    Do NOT install things ahead of actually needing them. (of course this assume things take minutes to install and thus you will have connectivity)

    For me it meant Firefox was top of the list, VLC or Steam (thus NVIDIA driver) second, vim as I had to edit crontab, etc.

    Quite a few are important to me but NOT urgent, e.g Cura (for 3D printer) and OpenSCAD (for parametric design) or Blender. So I didn’t event install them yet.

    So IMHO as other suggested docker/docker-compose but only for backend.

    Now… if you really want a reproducible desktop install : NixOS. You declare your setup rather than apt install -y and “hope” it will work out. Honestly I was tempted but as install a fresh Debian takes me 1h and I do it maybe once a year, at most, no need for me (yet).

    • @[email protected]
      link
      fedilink
      12 months ago

      Another “trick” I use is having an ~/Apps directory in which I have AppImage, binaries, etc that I can bring from an old /home to a new one. It’s not ideal, bypassing the package manager, and makes quite a few assumption, first architecture, but in practice, it works.

        • @[email protected]
          link
          fedilink
          12 months ago

          Hmmm very interesting thanks for the links and explanation!

          I’m not “ready” for it yet so I’ve bookmarked all that (by adding a file in ~/Apps ;) but that’s definitely and interesting, and arguably neater solution.

          Honestly I try to stick to the distribution package manager as much as I can (apt on Debian stable) but sometimes it’s impossible. Getting binaries myself feels a bit “wrong” but usually works. Some, like yt-dlp as I see in your list, do have their own update mechanisms. Interesting to consider stepping back and consider the trade off. Anyway now thanks to you I know there are solutions for a middle ground!

  • @[email protected]OP
    link
    fedilink
    12 months ago

    I do use docker, and compose a lot. But can it be used for desktop apps? Telegram, gimp, Thunderbird, etc?

    • @[email protected]
      link
      fedilink
      22 months ago

      It should be possible. Although probably very complicated. Have a look at https://distrobox.it/. It allows you to tightly integrate containers into your desktop, including accelerated graphics, some devices, your homedir, etc. It can even automatically install desktop shortcuts. (You can disable the integrations of course) Even tho it uses Podman instead of docker, AFAIK it should be 1:1 compatible with docker for your usecase.

  • qocu [he/him, comrade/them]
    link
    fedilink
    English
    52 months ago

    I didn’t find any script that would install the apps you wanted, but I did find a script that will help you build your own (it’s pretty easy). You can take inspiration from this one and modify it, so that whenever you reinstall your system, you’ll run your script.

    https://gist.github.com/engineervix/ed53aa410a22620013e04baca437abb3

    Research what commands are used in Fedora to install what application and add them to your script. Then, give your .sh file execute permissions and run it. You can do this in a virtual machine first if you want.

    • @[email protected]OP
      link
      fedilink
      22 months ago

      …aaaand DONE and tested. That was amazingly simple, when there’s a framework like that to work, and learn from. Thanks again.

    • @[email protected]OP
      link
      fedilink
      12 months ago

      oh that is VERY nice, I even have a lenovo laptop. I think that will get me started for sure. Thank you

    • Possibly linux
      link
      fedilink
      English
      12 months ago

      Not to sound rude but I am fairly surprised to see this from a hexbear user. It seems like a lot of hexbear is just going around and trolling.

      I can’t say I agree with hexbear but I appreciate the normal (and very useful) comment

  • @[email protected]
    link
    fedilink
    12 months ago

    I use an Ansible playbook to do fresh install stuff such as app installs & joining my local Samba AD.

    Another option, that I’ve never tried, would be to put your /home directory on another partition. That only solves the settings though and not your app installation bit.

      • @[email protected]
        link
        fedilink
        12 months ago

        I daily drive Debian and use Windows for work. Only have one Windows VM for playing games via Moonlight.

          • @[email protected]
            link
            fedilink
            12 months ago

            Correct. I’m running two AD DC’s based on Samba, all running on Zentyal. Super simple to install & setup. I them run a VM in Virtualbox on my laptop for the rare occasions I need to use the Windows RSAT tools.

            Other than that, all my Linux VM’s, ProxMox hosts & unRAID NAS all set to auth against the Samba DC. It has been working perfectly for over a year now.

            https://www.zentyal.com/

            • Possibly linux
              link
              fedilink
              English
              22 months ago

              I don’t believe Zentyal is supported by the Samba team. I’d just stick to regular Samba DCs.

              I am personally debating on setting up either Samba AD or FreeIPA. FreeIPA is definitely better for Linux but I really like Samba. Thanks for answering my question.

  • Kuadhual
    link
    fedilink
    172 months ago

    Using ansible will help you on your 2nd, 3rd , nth install.

    But getting ansible to do what you want (plus testing) for the first time would takes 10x longer than manual install.

    I think there’s xkcd about that.

    • exu
      link
      fedilink
      English
      8
      edit-2
      2 months ago

      Just installing applications is pretty easy though.

      ---
      - hosts: localhost
        become: yes
        tasks:
          - name: Install required software
            dnf:
              state: latest
              name:
                - firefox
                - telegram
                - calibre
      

      ansible-playbook install.yml

      Something like that (untested)

      • @[email protected]
        link
        fedilink
        English
        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.
  • @[email protected]
    link
    fedilink
    2
    edit-2
    2 months ago

    Have you tried SaveDesktop? Thought It is limited in the flatpak softwares, but cloud synchronization feature is recently added.

    • @[email protected]
      link
      fedilink
      12 months ago

      Was looking for this in this comment section, I see this solution as becoming the goto for moving between installs even though it is limited right now