From 76ce2b944b15578d253c2d1b308f700493cff116 Mon Sep 17 00:00:00 2001 From: ProgramSnail Date: Sat, 27 Dec 2025 17:18:40 +0300 Subject: [PATCH 1/5] opam roles --- .gitmodules | 3 ++ opam-ansible | 1 + playbooks/box.yml | 2 +- playbooks/manual.yml | 2 +- roles/dev/defaults/main.yml | 1 - roles/dev/tasks/haskell.yml | 3 +- roles/dev/tasks/main.yml | 4 +++ roles/dev/tasks/ocaml.yml | 47 +++++++++++++++++--------------- roles/dev/tasks/ocanren.yml | 24 ++++++++++++++++ roles/dotfiles/defaults/main.yml | 1 - roles/installs/defaults/main.yml | 1 - 11 files changed, 60 insertions(+), 29 deletions(-) create mode 160000 opam-ansible create mode 100644 roles/dev/tasks/ocanren.yml diff --git a/.gitmodules b/.gitmodules index df95ec6..d020465 100644 --- a/.gitmodules +++ b/.gitmodules @@ -4,3 +4,6 @@ [submodule "roles/gantsign.intellij"] path = roles/gantsign.intellij url = https://github.com/gantsign/ansible-role-intellij +[submodule "opam-ansible"] + path = opam-ansible + url = https://github.com/plescornet/opam-ansible diff --git a/opam-ansible b/opam-ansible new file mode 160000 index 0000000..dc0ebd6 --- /dev/null +++ b/opam-ansible @@ -0,0 +1 @@ +Subproject commit dc0ebd6843daf590ee2cd372367277686e6c8ace diff --git a/playbooks/box.yml b/playbooks/box.yml index 3db2458..de02e35 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, qt, clojure, arend)" + prompt: "Specify comma separated list of required tool packages (cpp, js, haskell, ocaml, ocanren, coq, txt, lang, truffle, gamedev, qt, clojure, arend)" private: false pre_tasks: - name: Get tools list diff --git a/playbooks/manual.yml b/playbooks/manual.yml index 18b5acd..59c55e6 100644 --- a/playbooks/manual.yml +++ b/playbooks/manual.yml @@ -9,7 +9,7 @@ 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, clojure, arend)" + prompt: "Specify comma separated list of required tool packages (cpp, js, haskell, ocaml, ocanren, coq, txt, lang, truffle, gamedev, qt, clojure, arend)" private: false pre_tasks: - name: Get configuration list diff --git a/roles/dev/defaults/main.yml b/roles/dev/defaults/main.yml index 5c99b29..5f0c224 100644 --- a/roles/dev/defaults/main.yml +++ b/roles/dev/defaults/main.yml @@ -1,2 +1 @@ bin_install_path: '{{ ansible_env.HOME }}/.local/bin' - diff --git a/roles/dev/tasks/haskell.yml b/roles/dev/tasks/haskell.yml index 14e2f7a..06e6c7d 100644 --- a/roles/dev/tasks/haskell.yml +++ b/roles/dev/tasks/haskell.yml @@ -1,10 +1,9 @@ -- name: installing hlint # TODO: install by cabal (?) +- name: Installing hlint # TODO: install by cabal (?) become: true ansible.builtin.dnf5: name: - hlint state: latest - - name: Downloading ghcup bootstrap script ansible.builtin.uri: diff --git a/roles/dev/tasks/main.yml b/roles/dev/tasks/main.yml index c33477b..b86188c 100644 --- a/roles/dev/tasks/main.yml +++ b/roles/dev/tasks/main.yml @@ -17,6 +17,10 @@ ansible.builtin.import_tasks: ocaml.yml when: "'ocaml' in tools" +- name: OCanren dev environment + ansible.builtin.import_tasks: ocanren.yml + when: "'ocanren' in tools" + - name: Coq dev environment ansible.builtin.import_tasks: coq.yml when: "'coq' in tools" diff --git a/roles/dev/tasks/ocaml.yml b/roles/dev/tasks/ocaml.yml index fe2d03f..de1f4c0 100644 --- a/roles/dev/tasks/ocaml.yml +++ b/roles/dev/tasks/ocaml.yml @@ -1,31 +1,34 @@ -# TODO: use ansible ocaml package for install ?? -- name: Installing opam +- name: Installing opam dependencies become: true ansible.builtin.dnf5: name: - - opam - gmp-devel state: latest -- name: Initializing opam - ansible.builtin.command: - cmd: opam init - changed_when: false - ignore_errors: true - -- name: Creating opam default switch (5.3.0) - ansible.builtin.command: - cmd: opam switch create default 5.3.0 - changed_when: false - ignore_errors: true +- name: Installing ocaml + ansible.builtin.import_role: + name: opam-ansible + vars: + opam_install_method: package_manager + opam_install_location: user + opam_switches: + - name: "default" + compiler: "--packages=ocaml-variants.5.3.0+options,ocaml-option-flambda" + packages: + - dune + - ocaml-lsp-server + - ocamlformat + - qcheck +# NOTE: done during usage by switch eval +# --- # update fish path -- name: Get programs list to check fish presence - ansible.builtin.package_facts: - manager: auto +# - name: Get programs list to check fish presence +# ansible.builtin.package_facts: +# manager: auto -- name: Update fish path for bun - ansible.builtin.shell: fish_add_path -m {{ ansible_env.HOME }}/.opam/default/bin - args: - executable: /usr/bin/fish - changed_when: false +# - name: Update fish path for opam +# ansible.builtin.shell: fish_add_path -m {{ ansible_env.HOME }}/.opam/default/bin +# args: +# executable: /usr/bin/fish +# changed_when: false diff --git a/roles/dev/tasks/ocanren.yml b/roles/dev/tasks/ocanren.yml new file mode 100644 index 0000000..c0052ae --- /dev/null +++ b/roles/dev/tasks/ocanren.yml @@ -0,0 +1,24 @@ +- name: Installing ocaml + ansible.builtin.import_tasks: ocaml.yml + +- name: Installing ocanren switch + ansible.builtin.import_role: + name: opam-ansible + vars: + opam_install_method: package_manager + opam_install_location: user + opam_switches: + - name: "ocanren" + compiler: "--packages=ocaml-variants.5.3.0+options,ocaml-option-flambda" + packages: + - dune + - ocaml-lsp-server + - ocamlformat + - qcheck + + - camlp5 + - GT + - OCanren + - OCanren-ppx + - ppx_expect_nobase + - benchmark diff --git a/roles/dotfiles/defaults/main.yml b/roles/dotfiles/defaults/main.yml index 5c99b29..5f0c224 100644 --- a/roles/dotfiles/defaults/main.yml +++ b/roles/dotfiles/defaults/main.yml @@ -1,2 +1 @@ bin_install_path: '{{ ansible_env.HOME }}/.local/bin' - diff --git a/roles/installs/defaults/main.yml b/roles/installs/defaults/main.yml index 5c99b29..5f0c224 100644 --- a/roles/installs/defaults/main.yml +++ b/roles/installs/defaults/main.yml @@ -1,2 +1 @@ bin_install_path: '{{ ansible_env.HOME }}/.local/bin' - From 7ccd53b236db5bb085cf39e404014d3c8f5e2ed1 Mon Sep 17 00:00:00 2001 From: ProgramSnail Date: Sat, 27 Dec 2025 18:03:01 +0300 Subject: [PATCH 2/5] python, fixes --- playbooks/box.yml | 2 +- playbooks/manual.yml | 2 +- roles/dev/tasks/cpp.yml | 2 +- roles/dev/tasks/main.yml | 4 ++++ roles/dev/tasks/python.yml | 21 +++++++++++++++++++++ 5 files changed, 28 insertions(+), 3 deletions(-) create mode 100644 roles/dev/tasks/python.yml diff --git a/playbooks/box.yml b/playbooks/box.yml index de02e35..86567b7 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, ocanren, coq, txt, lang, truffle, gamedev, qt, clojure, arend)" + prompt: "Specify comma separated list of required tool packages (cpp, js, haskell, ocaml, ocanren, coq, txt, lang, truffle, gamedev, qt, clojure, python, arend)" private: false pre_tasks: - name: Get tools list diff --git a/playbooks/manual.yml b/playbooks/manual.yml index 59c55e6..e9719d1 100644 --- a/playbooks/manual.yml +++ b/playbooks/manual.yml @@ -9,7 +9,7 @@ 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, ocanren, coq, txt, lang, truffle, gamedev, qt, clojure, arend)" + prompt: "Specify comma separated list of required tool packages (cpp, js, haskell, ocaml, ocanren, coq, txt, lang, truffle, gamedev, qt, clojure, python, arend)" private: false pre_tasks: - name: Get configuration list diff --git a/roles/dev/tasks/cpp.yml b/roles/dev/tasks/cpp.yml index cbc7d1e..f834253 100644 --- a/roles/dev/tasks/cpp.yml +++ b/roles/dev/tasks/cpp.yml @@ -1,5 +1,5 @@ # is done at the main -# - name: Install build comon deps +# - name: Install build common deps # ansible.builtin.import_tasks: build.yml - name: Installing tools for cpp dev diff --git a/roles/dev/tasks/main.yml b/roles/dev/tasks/main.yml index b86188c..f77680b 100644 --- a/roles/dev/tasks/main.yml +++ b/roles/dev/tasks/main.yml @@ -53,6 +53,10 @@ ansible.builtin.import_tasks: clojure.yml when: "'clojure' in tools" +- name: Python development environment + ansible.builtin.import_tasks: python.yml + when: "'python' in tools" + # TODO - name: Arend proof assistant development environment ansible.builtin.import_tasks: arend.yml diff --git a/roles/dev/tasks/python.yml b/roles/dev/tasks/python.yml new file mode 100644 index 0000000..91bbb19 --- /dev/null +++ b/roles/dev/tasks/python.yml @@ -0,0 +1,21 @@ +- name: Installing tools for python dev + become: true + ansible.builtin.dnf5: + name: + - python + - pip + - pipx + + - uv + state: latest + +- name: Install ty typechecker + ansible.builtin.command: + cmd: "uv tool install ty@latest" + changed_when: false + +- name: Install ruff lineter + ansible.builtin.command: + cmd: "uv tool install ruff@latest" + changed_when: false + From 61c486bebd953a01adc5037fcfd78108e57d58bc Mon Sep 17 00:00:00 2001 From: ProgramSnail Date: Sat, 27 Dec 2025 18:05:40 +0300 Subject: [PATCH 3/5] uv, uvx autocompletions --- roles/dotfiles/files/.config/fish/completions/uv.fish | 1 + roles/dotfiles/files/.config/fish/completions/uvx.fish | 1 + 2 files changed, 2 insertions(+) create mode 100644 roles/dotfiles/files/.config/fish/completions/uv.fish create mode 100644 roles/dotfiles/files/.config/fish/completions/uvx.fish diff --git a/roles/dotfiles/files/.config/fish/completions/uv.fish b/roles/dotfiles/files/.config/fish/completions/uv.fish new file mode 100644 index 0000000..ac24044 --- /dev/null +++ b/roles/dotfiles/files/.config/fish/completions/uv.fish @@ -0,0 +1 @@ +uv generate-shell-completion fish | source diff --git a/roles/dotfiles/files/.config/fish/completions/uvx.fish b/roles/dotfiles/files/.config/fish/completions/uvx.fish new file mode 100644 index 0000000..1de03d7 --- /dev/null +++ b/roles/dotfiles/files/.config/fish/completions/uvx.fish @@ -0,0 +1 @@ +uvx --generate-shell-completion fish | source From c1c9bb3e574e15eae7b9a83cfc6b9d2c2825793b Mon Sep 17 00:00:00 2001 From: ProgramSnail Date: Sat, 27 Dec 2025 18:27:20 +0300 Subject: [PATCH 4/5] add tmp to gitignore --- .gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index c721cdb..5235533 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,4 @@ **.ssh galaxy_cache/ .ansible/ +tmp/ From 8466b55f19756d56227bed664742ec1e959b9ea9 Mon Sep 17 00:00:00 2001 From: ProgramSnail Date: Sat, 27 Dec 2025 19:07:21 +0300 Subject: [PATCH 5/5] add neovim --- roles/installs/tasks/cli.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/roles/installs/tasks/cli.yml b/roles/installs/tasks/cli.yml index e63fe34..596fa4e 100644 --- a/roles/installs/tasks/cli.yml +++ b/roles/installs/tasks/cli.yml @@ -15,6 +15,7 @@ - shellcheck # edit utils + - neovim - helix - micro # - nano