dotfiles/copy-all.sls
seven-beep 0bae3d94b2
feat: allow exclusion of dotfiles with pillars
The dotfiles provides hardened configuration as well as usability
settings, but it has downsides:

- Even though some programs allowing including extra files, not all of
  them do;
- Experienced users wants their own configuration that can conflict in
  file path;
- Adds a lot of lines to review that is not strictly necessary for Qusal
  to work.

With this change, users can set pillar values to disable specific
components or all components.

For: https://github.com/ben-grande/dotfiles/pull/1
For: https://github.com/ben-grande/qusal/issues/17
Co-authored-by: Ben Grande <ben.grande.b@gmail.com>
2025-03-03 16:25:23 +01:00

80 lines
2.0 KiB
Plaintext

{#
SPDX-FileCopyrightText: 2023 - 2025 Benjamin Grande M. S. <ben.grande.b@gmail.com>
SPDX-FileCopyrightText: 2024 seven-beep <ebn@entreparentheses.xyz>
SPDX-License-Identifier: AGPL-3.0-or-later
#}
{%- if salt["pillar.get"]("qusal:dotfiles:all"), default=True) or
salt["pillar.get"]("qusal:dotfiles:dom0") or
salt["pillar.get"]("qusal:dotfiles:git") or
salt["pillar.get"]("qusal:dotfiles:gtk") or
salt["pillar.get"]("qusal:dotfiles:mutt") or
salt["pillar.get"]("qusal:dotfiles:net") or
salt["pillar.get"]("qusal:dotfiles:pgp") or
salt["pillar.get"]("qusal:dotfiles:sh") or
salt["pillar.get"]("qusal:dotfiles:ssh") or
salt["pillar.get"]("qusal:dotfiles:tmux") or
salt["pillar.get"]("qusal:dotfiles:vim") or
salt["pillar.get"]("qusal:dotfiles:x11")
-%}
include:
- .copy-dom0
- .copy-git
- .copy-gtk
- .copy-mutt
- .copy-net
- .copy-pgp
- .copy-sh
- .copy-ssh
- .copy-tmux
- .copy-vim
- .copy-x11
{%- else -%}
"{{ sls }}-was-disabled-by-pillar":
test.nop
{%- endif -%}
{#
Unfortunately salt.states.file does not keep permissions when using salt-ssh.
Best option is 'file.managed mode: keep' or 'file.recurse file_mode: keep'.
https://docs.saltproject.io/en/latest/ref/states/all/salt.states.file.html
#}
{#
{%- import "dom0/gui-user.jinja" as gui_user -%}
"{{ slsdotpath }}-absent-dotfiles-client":
file.absent:
- name: /tmp/dotfiles
"{{ slsdotpath }}-copy-dotfiles-client":
file.recurse:
- source: salt://{{ slsdotpath }}/files
- name: /tmp/dotfiles
- file_mode: '0644'
- dir_mode: '0700'
- user: {{ gui_user.gui_user }}
- group: {{ gui_user.gui_user }}
"{{ slsdotpath }}-apply-dotfiles-client":
cmd.run:
- name: sh /tmp/dotfiles/setup.sh
- runas: {{ gui_user.gui_user }}
"{{ slsdotpath }}-fix-executables-permission":
file.directory:
- name: {{ gui_user.gui_user_home }}/.local/bin
- mode: '0755'
- recurse:
- mode
"{{ slsdotpath }}-absent-end-dotfiles-client":
file.absent:
- name: /tmp/dotfiles
#}