diff --git a/playbooks/box.yml b/playbooks/box.yml index 1ad2b7a..b3d620d 100644 --- a/playbooks/box.yml +++ b/playbooks/box.yml @@ -13,7 +13,7 @@ - cli vars_prompt: - name: tools_in - prompt: "Specify comma separated list of required tool packages (cpp, js, haskell, ocaml, coq, txt, lang, truffle, gamedev)" + prompt: "Specify comma separated list of required tool packages (cpp, js, haskell, ocaml, coq, txt, lang, truffle, gamedev, qt)" private: false pre_tasks: - name: Get tools list diff --git a/playbooks/manual.yml b/playbooks/manual.yml new file mode 100644 index 0000000..f821640 --- /dev/null +++ b/playbooks/manual.yml @@ -0,0 +1,30 @@ +- name: Configure system manually + hosts: localhost + connection: local + vars_prompt: + - name: configure_in + prompt: "Specify comma separated list of required dotfile packages (bash, scripts, cli, git, ssh, gui, de, quickshell, wm)" + private: false + - name: apps_in + prompt: "Specify comma separated list of required installation packages (ansible, cli, gui, host, proxy, wm, quickshell)" + private: false + - name: tools_in + prompt: "Specify comma separated list of required tool packages (cpp, js, haskell, ocaml, coq, txt, lang, truffle, gamedev, qt)" + private: false + pre_tasks: + - name: Get configuration list + ansible.builtin.set_fact: + configure: "{{ configure_in.split(',') }}" + - name: Get apps list + ansible.builtin.set_fact: + apps: "{{ apps_in.split(',') }}" + - name: Get tools list + ansible.builtin.set_fact: + tools: "{{ tools_in.split(',') }}" + roles: + # install apps + - role: installs + # link and copy dotfiles + - role: dotfiles + # install and setup dev tools + - role: dev diff --git a/roles/dev/tasks/gamedev.yml b/roles/dev/tasks/gamedev.yml index 6efc0d0..7621522 100644 --- a/roles/dev/tasks/gamedev.yml +++ b/roles/dev/tasks/gamedev.yml @@ -1,3 +1,6 @@ +- name: Installing opengl libs + ansible.builtin.import_tasks: opengl.yml + - name: Getting programs list to check fish presence ansible.builtin.package_facts: manager: auto @@ -7,12 +10,6 @@ become: true ansible.builtin.dnf5: name: - - glew-devel - - SDL2-devel - - SDL2_image-devel - - glm-devel - - freetype-devel - - mesa-libGLU - openal-soft - java-21-openjdk state: latest @@ -55,7 +52,8 @@ become: true ansible.builtin.unarchive: remote_src: true - src: "https://github.com/LuaLS/lua-language-server/releases/download/{{ lua_lsp_version.tag }}/lua-language-server-{{ lua_lsp_version.tag }}-linux-x64.tar.gz" + src: + "https://github.com/LuaLS/lua-language-server/releases/download/{{ lua_lsp_version.tag }}/lua-language-server-{{ lua_lsp_version.tag }}-linux-x64.tar.gz" dest: "{{ ansible_env.HOME }}/.lua_lsp" keep_newer: true mode: a diff --git a/roles/dev/tasks/main.yml b/roles/dev/tasks/main.yml index 33ffcde..5676f5f 100644 --- a/roles/dev/tasks/main.yml +++ b/roles/dev/tasks/main.yml @@ -33,6 +33,14 @@ ansible.builtin.import_tasks: truffle.yml when: "'truffle' in tools" +# - name: Truffle development environment +# ansible.builtin.import_tasks: opengl.yml +# when: "'opengl' in tools" + - name: Truffle development environment ansible.builtin.import_tasks: gamedev.yml when: "'gamedev' in tools" + +- name: Truffle development environment + ansible.builtin.import_tasks: qt.yml + when: "'qt' in tools" diff --git a/roles/dev/tasks/opengl.yml b/roles/dev/tasks/opengl.yml new file mode 100644 index 0000000..132f304 --- /dev/null +++ b/roles/dev/tasks/opengl.yml @@ -0,0 +1,11 @@ +- name: Installing opengl libs + become: true + ansible.builtin.dnf5: + name: + - glew-devel + - SDL2-devel + - SDL2_image-devel + - glm-devel + - freetype-devel + - mesa-libGLU + state: latest diff --git a/roles/dev/tasks/qt.yml b/roles/dev/tasks/qt.yml new file mode 100644 index 0000000..79a2778 --- /dev/null +++ b/roles/dev/tasks/qt.yml @@ -0,0 +1,26 @@ +- name: Installing opengl libs + ansible.builtin.import_tasks: opengl.yml + +- name: Installing cpp + ansible.builtin.import_tasks: cpp.yml + +- name: Installing qt devel libs + become: true + ansible.builtin.dnf5: + name: + - qt6-qtdeclarative-devel + - qt6-qtbase-devel + - qt6-qtsvg + - qt6-qtimageformats + - qt6-qtmultimedia + - qt6-qt5compat + - qt6-qtmultimedia-devel + - qt6-qt5compat-devel + state: latest + +# - name: Installing qt creator +# become: true +# ansible.builtin.dnf5: +# name: +# - qt6-creator +# state: latest diff --git a/roles/dev/tasks/truffle.yml b/roles/dev/tasks/truffle.yml index 655d929..2f0d753 100644 --- a/roles/dev/tasks/truffle.yml +++ b/roles/dev/tasks/truffle.yml @@ -46,6 +46,7 @@ ansible.builtin.file: path: "{{ ansible_env.HOME }}/idea" state: directory + mode: a - name: Installing intellij idea ansible.builtin.unarchive: remote_src: true diff --git a/roles/dotfiles/files/.config/fish/completions/empty b/roles/dotfiles/files/.config/fish/completions/empty new file mode 100644 index 0000000..e69de29 diff --git a/roles/dotfiles/files/.config/fish/conf.d/empty b/roles/dotfiles/files/.config/fish/conf.d/empty new file mode 100644 index 0000000..e69de29 diff --git a/roles/dotfiles/files/.config/quickshell/MyShell/empty b/roles/dotfiles/files/.config/quickshell/MyShell/empty new file mode 100644 index 0000000..e69de29 diff --git a/roles/dotfiles/files/.config/quickshell/empty b/roles/dotfiles/files/.config/quickshell/empty new file mode 100644 index 0000000..e69de29 diff --git a/roles/dotfiles/tasks/cli.yml b/roles/dotfiles/tasks/cli.yml index 93e38a5..38104af 100644 --- a/roles/dotfiles/tasks/cli.yml +++ b/roles/dotfiles/tasks/cli.yml @@ -41,6 +41,7 @@ src: '{{ role_path }}/files/.config/fish/fish_variables' dest: '{{ ansible_env.HOME }}/.config/fish/fish_variables' force: false + mode: a # apps - name: Linking tmux configuration diff --git a/roles/dotfiles/tasks/main.yml b/roles/dotfiles/tasks/main.yml index 715a8fa..5909d53 100644 --- a/roles/dotfiles/tasks/main.yml +++ b/roles/dotfiles/tasks/main.yml @@ -28,6 +28,14 @@ ansible.builtin.import_tasks: gui.yml when: "'gui' in configure" -- name: Desctop envionment config +- name: Desktop envionment config ansible.builtin.import_tasks: de.yml when: "'de' in configure" + +- name: Quickshell config + ansible.builtin.import_tasks: quickshell.yml + when: "'quickshell' in configure" + +- name: WMs config + ansible.builtin.import_tasks: wm.yml + when: "'wm' in configure" diff --git a/roles/dotfiles/tasks/quickshell.yml b/roles/dotfiles/tasks/quickshell.yml new file mode 100644 index 0000000..d6e0647 --- /dev/null +++ b/roles/dotfiles/tasks/quickshell.yml @@ -0,0 +1,6 @@ +- name: Linking quickshell configuration + ansible.builtin.file: + src: '{{ role_path }}/files/.config/quickshell' + dest: '{{ ansible_env.HOME }}/.config/quickshell' + state: link + force: true diff --git a/roles/dotfiles/tasks/wm.yml b/roles/dotfiles/tasks/wm.yml new file mode 100644 index 0000000..43824c2 --- /dev/null +++ b/roles/dotfiles/tasks/wm.yml @@ -0,0 +1,8 @@ +- name: Linking niri configuration + ansible.builtin.file: + src: '{{ role_path }}/files/niri' + dest: '{{ ansible_env.HOME }}/niri' + state: link + force: true + +# TODO: hyprland diff --git a/roles/installs/tasks/ansible.yml b/roles/installs/tasks/ansible.yml index b0a8f74..e3f41f4 100644 --- a/roles/installs/tasks/ansible.yml +++ b/roles/installs/tasks/ansible.yml @@ -7,4 +7,3 @@ - python3-github3py - python3-rpm state: latest - diff --git a/roles/installs/tasks/main.yml b/roles/installs/tasks/main.yml index c158176..b063432 100644 --- a/roles/installs/tasks/main.yml +++ b/roles/installs/tasks/main.yml @@ -10,10 +10,18 @@ ansible.builtin.import_tasks: gui.yml when: "'gui' in apps" -- name: Installing pps for host +- name: Installing apps for host ansible.builtin.import_tasks: host.yml when: "'host' in apps" - name: Installing proxies ansible.builtin.import_tasks: proxy.yml when: "'proxy' in apps" + +- name: Installing wm + ansible.builtin.import_tasks: wm.yml + when: "'wm' in apps" + +- name: Installing quickshell + ansible.builtin.import_tasks: quickshell.yml + when: "'quickshell' in apps" diff --git a/roles/installs/tasks/quickshell.yml b/roles/installs/tasks/quickshell.yml new file mode 100644 index 0000000..90b770c --- /dev/null +++ b/roles/installs/tasks/quickshell.yml @@ -0,0 +1,67 @@ +- name: Enabling quickshell fedora copr + become: true + community.general.copr: + host: copr.fedorainfracloud.org + state: enabled + name: errornointernet/quickshell + +- name: Installing quickshell + become: true + ansible.builtin.dnf5: + name: + - quickshell + state: latest + +- name: Installing common deps + become: true + ansible.builtin.dnf5: + name: + - rsms-inter-fonts + - fira-code-fonts + state: latest + +- name: Creating fonts dir + ansible.builtin.file: + path: "{{ ansible_env.HOME }}/.local/share/fonts" + state: directory + mode: a + +- name: Downloading material design icons font + ansible.builtin.get_url: + url: "https://github.com/google/material-design-icons/raw/master/variablefont/MaterialSymbolsRounded%5BFILL%2CGRAD%2Copsz%2Cwght%5D.ttf" + dest: "{{ ansible_env.HOME }}/.local/share/fonts/MaterialSymbolsRounded.ttf" + mode: a + force: false + +- name: Updating fonts cache + ansible.builtin.command: + cmd: fc-cache -f + changed_when: true + +- name: Installing matugen (material you themes gen) v2.4.1 (fixed) + become: true + ansible.builtin.unarchive: + remote_src: true + src: "https://github.com/InioX/matugen/releases/download/v2.4.1/matugen-2.4.1-x86_64.tar.gz" + dest: "/usr/bin/" # TODO: user local install (?) + mode: a+x + keep_newer: true + extra_opts: + - --strip=1 + - --no-anchored + - matugen + +- name: Get latest dgop (sensors data utility) version + community.general.github_release: + user: AvengeMedia + repo: dgop + action: latest_release + register: dgop_version + +- name: Installing dgop (sensors data utility) {{ dgop_version.tag }} + become: true + ansible.builtin.get_url: + url: "https://github.com/AvengeMedia/dgop/releases/download/{{ dgop_version.tag }}/dgop-{{ dgop_version.tag }}-linux-amd64" + dest: "/usr/bin/dgop" # TODO: user local install (?) + mode: a+x + force: true diff --git a/roles/installs/tasks/wm.yml b/roles/installs/tasks/wm.yml new file mode 100644 index 0000000..b561d54 --- /dev/null +++ b/roles/installs/tasks/wm.yml @@ -0,0 +1,13 @@ +- name: Installing niri + become: true + ansible.builtin.dnf5: + name: + - niri + state: latest + +- name: Installing hyprland + become: true + ansible.builtin.dnf5: + name: + - hyprland + state: latest