From 234de5f873bc548b471fe2d2be36422cae56b56b Mon Sep 17 00:00:00 2001 From: Gabriel Arazas Date: Fri, 11 Mar 2022 20:19:13 +0800 Subject: [PATCH] Initialize Ansible playbook for Fedora 35 post-installation --- files/dconf/desktop.conf | 42 +++++ files/dconf/keybindings.conf | 67 +++++++ post-install.yml | 327 +++++++++++++++++++++++++++++++++++ 3 files changed, 436 insertions(+) create mode 100644 files/dconf/desktop.conf create mode 100644 files/dconf/keybindings.conf create mode 100644 post-install.yml diff --git a/files/dconf/desktop.conf b/files/dconf/desktop.conf new file mode 100644 index 0000000..1252cfc --- /dev/null +++ b/files/dconf/desktop.conf @@ -0,0 +1,42 @@ +[org/gnome/desktop/interface] +enable-animations=true +enable-hot-corners=false +gtk-im-module='gtk-im-context-simple' +show-battery-percentage=true + +[org/gnome/desktop/notifications] +show-banners=true + +[org/gnome/desktop/privacy] +disable-microphone=false + +[org/gnome/shell] +disable-user-extensions=false +enabled-extensions=['arcmenu@arcmenu.com', 'just-perfection-desktop@just-perfection', 'gsconnect@andyholmes.github.io', 'flypie@schneegans.github.com', 'kimpanel@kde.org', 'workspaces-bar@fthx', 'burn-my-windows@schneegans.github.com', 'sermon@rovellipaolo-gmail.com', 'runcat@kolesnikov.se', 'mprisindicatorbutton@JasonLG1979.github.io', 'appindicatorsupport@rgcjonas.gmail.com', 'screenshot-window-sizer@gnome-shell-extensions.gcampax.github.com', 'windowsNavigator@gnome-shell-extensions.gcampax.github.com'] +favorite-apps=['brave-browser.desktop', 'emacs.desktop', 'zotero-5.0.96.3.desktop', 'org.kde.krita.desktop', 'blender.desktop', 'com.usebottles.bottles.desktop'] + +[org/gnome/mutter] +attach-modal-dialogs=true +center-new-windows=true +dynamic-workspaces=true +edge-tiling=true +focus-change-on-pointer-rest=true +overlay-key='Super_L' +workspaces-only-on-primary=true + +# My preferred world clocks for easier tracking of global events. +[org/gnome/clocks] +world-clocks=[{'location': <(uint32 2, <('New York', 'KNYC', true, [(0.71180344078725644, -1.2909618758762367)], [(0.71059804659265924, -1.2916478949920254)])>)>}, {'location': <(uint32 2, <('Coordinated Universal Time (UTC)', '@UTC', false, @a(dd) [], @a(dd) [])>)>}, {'location': <(uint32 2, <('Cairo', 'HECA', true, [(0.52592587544986047, 0.54803338512621935)], [(0.52447144022429604, 0.54541539124822791)])>)>}] + +[org/gnome/shell/world-clocks] +locations=[<(uint32 2, <('New York', 'KNYC', true, [(0.71180344078725644, -1.2909618758762367)], [(0.71059804659265924, -1.2916478949920254)])>)>, <(uint32 2, <('Coordinated Universal Time (UTC)', '@UTC', false, @a(dd) [], @a(dd) [])>)>, <(uint32 2, <('Cairo', 'HECA', true, [(0.52592587544986047, 0.54803338512621935)], [(0.52447144022429604, 0.54541539124822791)])>)>] + +[org/gnome/system/location] +enabled=false + +[org/gnome/desktop/wm/preferences] +workspace-names=['Web', 'Dev', 'Notes', 'Graphics', 'Audio'] + +# Application configs. +[re/sonny/Junction] +show-app-names=true diff --git a/files/dconf/keybindings.conf b/files/dconf/keybindings.conf new file mode 100644 index 0000000..4e51331 --- /dev/null +++ b/files/dconf/keybindings.conf @@ -0,0 +1,67 @@ +[org/gnome/desktop/wm/keybindings] +begin-resize=['r'] +close=['F4', 'q'] +cycle-group=@as [] +cycle-group-backward=@as [] +cycle-windows=@as [] +cycle-windows-backward=@as [] +maximize=@as [] +minimize=@as [] +move-to-monitor-down=@as [] +move-to-monitor-left=@as [] +move-to-monitor-right=@as [] +move-to-monitor-up=@as [] +move-to-workspace-first=['Home', 'k'] +move-to-workspace-right=['l', 'Right', 'Page_Down'] +move-to-workspace-left=['h', 'Left', 'Page_Up'] +move-to-workspace-last=['End', 'j'] +panel-main-menu=@as [] +switch-group=['grave'] +switch-group-backward=['grave'] +switch-input-source=@as [] +switch-input-source-backward=@as [] +switch-to-workspace-up=@as [] +switch-to-workspace-left=['h', 'Page_Up'] +switch-to-workspace-right=['l', 'Page_Down'] +switch-to-workspace-down=@as [] +toggle-fullscreen=['f'] +toggle-maximized=['f'] +toggle-overview=['s'] +toggle-tiled-left=@as [] +toggle-tiled-right=@as [] + +[org/gnome/shell/extensions/pop-shell] +pop-workspace-down=['l', 'Right', 'Page_Down'] +pop-workspace-up=['h', 'Left', 'Page_Up'] +pop-monitor-up=['k', 'Up'] +pop-monitor-left=['h', 'Left'] +pop-monitor-right=['l', 'Right'] +pop-monitor-down=['j', 'Down'] + +[org/gnome/shell/keybindings] +toggle-message-tray=['v'] + +# Bringing my old habits back when I use standalone window managers. +[org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom0] +binding='Return' +command='kitty' +name='Terminal' + +# The equivalent to the newspaper in the morning. +[org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom1] +binding='r' +command='kitty -e newsboat' +name='News aggregator' + +# We don't want to restore them shortcuts. +[org/gnome/mutter/wayland/keybindings] +restore-shortcuts=@as [] + +[org/gnome/settings-daemon/plugins/media-keys] +screensaver=['Escape'] +logout=['Escape'] +help=@as [] + +# Easy resize with the mouse. +[org/gnome/desktop/wm/preferences] +resize-with-right-button = true diff --git a/post-install.yml b/post-install.yml new file mode 100644 index 0000000..88239d2 --- /dev/null +++ b/post-install.yml @@ -0,0 +1,327 @@ +- hosts: localhost + tasks: + - name: Install Flatpak development tools + become: yes + dnf: + state: present + name: + - flatpak + - flatpak-builder + + # Add Flatpak remotes + - name: Add Flathub remote + flatpak_remote: + state: present + name: flathub + flatpakrepo_url: https://flathub.org/repo/flathub.flatpakrepo + + - name: Add Flathub beta remote + flatpak_remote: + state: present + name: flathub-beta + flatpakrepo_url: https://flathub.org/beta-repo/flathub-beta.flatpakrepo + + - name: Add GNOME Nightly remote + flatpak_remote: + state: present + name: gnome-nightly + flatpakrepo_url: https://nightly.gnome.org/gnome-nightly.flatpakrepo + + - name: Add KDE Flatpak remote + flatpak_remote: + state: present + name: kdeapps + flatpakrepo_url: https://distribute.kde.org/kdeapps.flatpakrepo + + # Enable several copr repositories. + - name: Enable opentabletdriver from copr + become: yes + community.general.copr: + state: enabled + name: cappyishihara/opentabletdriver + + - name: Enable lazygit from copr + become: yes + community.general.copr: + state: enabled + name: atim/lazygit + + - name: Enable gopass from copr + become: yes + community.general.copr: + state: enabled + name: fale/gopass + + - name: Install packages from enabled copr repositories + become: yes + dnf: + state: present + name: + - lazygit + - opentabletdriver + - golang-github-gopasspw-gopass + + - name: Set minimal development environment + become: yes + dnf: + state: present + name: + - neovim + - python-neovim + - git + - kitty + - kitty-doc + - kitty-terminfo + - man-db + - man-pages + + - name: Install additional development tools + become: yes + dnf: + state: present + name: + - tealdeer + - bat + - fzf + - exa + - ripgrep + - sqlite + - zoxide + - direnv + + - name: Setup container development tools + become: yes + dnf: + state: present + name: + - podman + - toolbox + - openssl + + - name: Install backup tools + become: yes + dnf: + state: present + name: + - borgbackup + - borgmatic + + - name: Install (Doom) Emacs with its required dependencies + become: yes + dnf: + state: present + name: + - emacs + - libvterm + - aspell + - aspell-en + - wordnet + - zstd + + - name: Install web-related tools + become: yes + dnf: + state: present + name: + - thunderbird + - chromium + - firefox + + - name: Install extra dependencies + become: yes + dnf: + state: present + name: + - ImageMagick + - ImageMagick-doc + - ImageMagick-libs + - hyperfine + - libtree-sitter + - recoll + - recoll-gssp + - recoll-kio + - starship + + - name: Install Fedora COPR dev't tools + become: yes + dnf: + state: present + name: + - copr-cli + - dnf-plugins-core + + - name: Install Ansible + become: yes + dnf: + state: present + name: + - ansible + - ansible-doc + - ansible-collection-community-general + - python3-psutil + + - name: Install fonts + become: yes + dnf: + state: present + name: + - google-noto-serif-fonts + - google-noto-sans-fonts + - google-noto-cjk-fonts + - google-noto-cjk-fonts-common + - google-noto-emoji-fonts + + # Install applications from Flatpak + - name: Install Zrythm, a DAW + become: yes + flatpak: + state: present + name: org.zrythm.Zrythm + remote: flathub + + - name: Install Krita + become: yes + flatpak: + state: present + name: org.kde.krita + remote: flathub + + - name: Install Krita nightly + become: yes + flatpak: + state: present + name: org.kde.krita-nightly + remote: kdeapps + + - name: Install Junction, an application launcher + become: yes + flatpak: + state: present + name: re.sonny.Junction + remote: flathub + + - name: Install Tangram, a browser + become: yes + flatpak: + state: present + name: re.sonny.Tangram + remote: flathub + + - name: Install Blender, a 3D modelling software + become: yes + flatpak: + state: present + name: org.blender.Blender + remote: flathub + + - name: Install Lutris + become: yes + flatpak: + state: present + name: net.lutris.Lutris + remote: flathub-beta + + - name: Install Steam + become: yes + flatpak: + state: present + name: com.valvesoftware.Steam + remote: flathub + + - name: Install Emulsion, a color palette manager + become: yes + flatpak: + state: present + name: io.github.lainsce.Emulsion + remote: flathub + + - name: Install Inkscape, an alternative to Adobe Illustrator + become: yes + flatpak: + state: present + name: org.inkscape.Inkscape + remote: flathub + + - name: Install OBS Studio, the Swiss army knife for screencasts + become: yes + flatpak: + state: present + name: com.obsproject.Studio + remote: flathub + + - name: Install Flatseal, a Flatpak app permissions manager + become: yes + flatpak: + state: present + name: com.github.tchx84.Flatseal + remote: flathub + + - name: Install Helvum, a Patchbay-like app + become: yes + flatpak: + state: present + name: org.pipewire.Helvum + remote: flathub + + - name: Install EasyEffects, an audio effects app + become: yes + flatpak: + state: present + name: com.github.wwmm.easyeffects + remote: flathub + + - name: Install 0 A.D., a RTS game + become: yes + flatpak: + state: present + name: com.play0ad.zeroad + remote: flathub + + - name: Install Remnants of the Precursors, a 4X game + become: yes + flatpak: + state: present + name: com.remnantsoftheprecursors.ROTP + remote: flathub + + - name: Install Musescore, a music composition software + become: yes + flatpak: + state: present + name: org.musescore.MuseScore + remote: flathub + + - name: Install Bottles, a Windows app runner + become: yes + flatpak: + state: present + name: com.usebottles.bottles + remote: flathub + + - name: Install GIMP (nightly), a photo editor + become: yes + flatpak: + state: present + name: org.gimp.GIMP + remote: gnome-nightly + + # Configure desktop environment. + - name: Install dconf keyfiles + become: yes + copy: + src: ./files/dconf + dest: /etc/dconf/db/a-happy-gnome.d + + - name: Set 'user' dconf profile with the custom GNOME config + become: yes + ansible.builtin.shell: echo "system-db:a-happy-gnome" >> /etc/dconf/profile/user + + - name: Enable night light in GNOME + dconf: + state: present + key: /org/gnome/settings-daemon/plugins/color/night-light-enabled + value: true + + # TODO: + # * Configure GNOME with dconf module + # * Configure GNOME extensions