From 76ce2b944b15578d253c2d1b308f700493cff116 Mon Sep 17 00:00:00 2001 From: ProgramSnail Date: Sat, 27 Dec 2025 17:18:40 +0300 Subject: [PATCH] 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' -