From 84bae87dc5da48334f81501e11cf17919ff1504b Mon Sep 17 00:00:00 2001 From: Ben Grande Date: Tue, 30 Apr 2024 16:02:49 +0200 Subject: [PATCH] fix: discover non-root username at runtime Useful when Dom0 has the non-default username, less useful for DomUs. Fixes: https://github.com/ben-grande/qusal/issues/43 --- README.md | 8 ++++++-- copy-all.sls | 11 +++++++---- copy-dom0.sls | 10 ++++++---- copy-git.sls | 18 ++++++++++-------- copy-gtk.sls | 8 +++++--- copy-mutt.sls | 8 +++++--- copy-net.sls | 8 +++++--- copy-pgp.sls | 8 +++++--- copy-sh.sls | 10 ++++++---- copy-ssh.sls | 8 +++++--- copy-tmux.sls | 12 +++++++----- copy-vim.sls | 8 +++++--- copy-x11.sls | 8 +++++--- copy-xfce.sls | 8 +++++--- files/qvm-copy-dotfiles | 10 ++++++---- 15 files changed, 88 insertions(+), 55 deletions(-) diff --git a/README.md b/README.md index 475bd25..19f1b28 100644 --- a/README.md +++ b/README.md @@ -41,8 +41,11 @@ Configuration and scripts targeting: ### Salt -The formula was designed to be run in Qubes OS, the normal user name is -hardcoded to `user` and its home is hardcoded to `/home/user`. +The formula is part of [Qusal](https://github.com/ben-grande/qusal/issues/43), +which is designed to work in [Qubes OS](https://www.qubes-os.org/), as such, +it chooses the first user name in the group `qubes` to place the dotfiles in. +If you want a machine independent installation, choose the [Script](#script) +installation method. Install everything in a qube: ```sh @@ -60,6 +63,7 @@ You can simply deploy all configurations with: ```sh ./files/setup.sh ``` + Or target specific ones by specifying the directory name: ```sh ./files/setup.sh sh bash diff --git a/copy-all.sls b/copy-all.sls index 5ae8e4c..065e260 100644 --- a/copy-all.sls +++ b/copy-all.sls @@ -23,6 +23,9 @@ 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 @@ -33,17 +36,17 @@ https://docs.saltproject.io/en/latest/ref/states/all/salt.states.file.html - name: /tmp/dotfiles - file_mode: '0644' - dir_mode: '0700' - - user: user - - group: user + - user: {{ gui_user.gui_user }} + - group: {{ gui_user.gui_user }} "{{ slsdotpath }}-apply-dotfiles-client": cmd.run: - name: sh /tmp/dotfiles/setup.sh - - runas: user + - runas: {{ gui_user.gui_user }} "{{ slsdotpath }}-fix-executables-permission": file.directory: - - name: /home/user/.local/bin + - name: {{ gui_user.gui_user_home }}/.local/bin - mode: '0755' - recurse: - mode diff --git a/copy-dom0.sls b/copy-dom0.sls index f0a992d..88ba0af 100644 --- a/copy-dom0.sls +++ b/copy-dom0.sls @@ -1,17 +1,19 @@ {# -SPDX-FileCopyrightText: 2023 Benjamin Grande M. S. +SPDX-FileCopyrightText: 2023 - 2024 Benjamin Grande M. S. SPDX-License-Identifier: AGPL-3.0-or-later #} +{%- import "dom0/gui-user.jinja" as gui_user -%} + "{{ slsdotpath }}-copy-dom0-home": file.recurse: - - name: /home/user/ + - name: {{ gui_user.gui_user_home }} - source: salt://{{ slsdotpath }}/files/dom0/ - file_mode: '0644' - dir_mode: '0755' - - user: user - - group: user + - user: {{ gui_user.gui_user }} + - group: {{ gui_user.gui_user }} - makedirs: True "{{ slsdotpath }}-copy-dom0-skel": diff --git a/copy-git.sls b/copy-git.sls index aa46823..7d1a0e1 100644 --- a/copy-git.sls +++ b/copy-git.sls @@ -4,32 +4,34 @@ SPDX-FileCopyrightText: 2023 Benjamin Grande M. S. SPDX-License-Identifier: AGPL-3.0-or-later #} +{%- import "dom0/gui-user.jinja" as gui_user -%} + "{{ slsdotpath }}-copy-git-home": file.recurse: - - name: /home/user + - name: {{ gui_user.gui_user_home }} - source: salt://{{ slsdotpath }}/files/git - file_mode: '0644' - dir_mode: '0700' - - user: user - - group: user + - user: {{ gui_user.gui_user }} + - group: {{ gui_user.gui_user }} "{{ slsdotpath }}-fix-executables-git-template-dir-home": file.directory: - - name: /home/user/.config/git/template/hooks + - name: {{ gui_user.gui_user_home }}/.config/git/template/hooks - mode: '0755' - recurse: - mode "{{ slsdotpath }}-fix-executables-git-shell-dir-home": file.directory: - - name: /home/user/.config/git/shell + - name: {{ gui_user.gui_user_home }}/.config/git/shell - mode: '0755' - recurse: - mode "{{ slsdotpath }}-fix-executables-git-bin-dir-home": file.directory: - - name: /home/user/.local/bin + - name: {{ gui_user.gui_user_home }}/.local/bin - mode: '0755' - recurse: - mode @@ -52,14 +54,14 @@ SPDX-License-Identifier: AGPL-3.0-or-later "{{ slsdotpath }}-fix-executables-git-shell-dir-skel": file.directory: - - name: /home/user/.config/git/shell + - name: {{ gui_user.gui_user_home }}/.config/git/shell - mode: '0755' - recurse: - mode "{{ slsdotpath }}-fix-executables-git-bin-dir-skel": file.directory: - - name: /home/user/.local/bin + - name: {{ gui_user.gui_user_home }}/.local/bin - mode: '0755' - recurse: - mode diff --git a/copy-gtk.sls b/copy-gtk.sls index 11c8831..0219472 100644 --- a/copy-gtk.sls +++ b/copy-gtk.sls @@ -4,14 +4,16 @@ SPDX-FileCopyrightText: 2023 Benjamin Grande M. S. SPDX-License-Identifier: AGPL-3.0-or-later #} +{%- import "dom0/gui-user.jinja" as gui_user -%} + "{{ slsdotpath }}-copy-gtk-home": file.recurse: - - name: /home/user/ + - name: {{ gui_user.gui_user_home }}/ - source: salt://{{ slsdotpath }}/files/gtk/ - file_mode: '0644' - dir_mode: '0700' - - user: user - - group: user + - user: {{ gui_user.gui_user }} + - group: {{ gui_user.gui_user }} "{{ slsdotpath }}-copy-gtk-skel": file.recurse: diff --git a/copy-mutt.sls b/copy-mutt.sls index 2004558..5c5affe 100644 --- a/copy-mutt.sls +++ b/copy-mutt.sls @@ -4,14 +4,16 @@ SPDX-FileCopyrightText: 2023 Benjamin Grande M. S. SPDX-License-Identifier: AGPL-3.0-or-later #} +{%- import "dom0/gui-user.jinja" as gui_user -%} + "{{ slsdotpath }}-copy-mutt-home": file.recurse: - - name: /home/user/ + - name: {{ gui_user.gui_user_home }}/ - source: salt://{{ slsdotpath }}/files/mutt/ - file_mode: '0644' - dir_mode: '0755' - - user: user - - group: user + - user: {{ gui_user.gui_user }} + - group: {{ gui_user.gui_user }} - makedirs: True "{{ slsdotpath }}-copy-mutt-skel": diff --git a/copy-net.sls b/copy-net.sls index 84d5247..49bfbd9 100644 --- a/copy-net.sls +++ b/copy-net.sls @@ -4,14 +4,16 @@ SPDX-FileCopyrightText: 2023 Benjamin Grande M. S. SPDX-License-Identifier: AGPL-3.0-or-later #} +{%- import "dom0/gui-user.jinja" as gui_user -%} + "{{ slsdotpath }}-copy-net-home": file.recurse: - - name: /home/user/ + - name: {{ gui_user.gui_user_home }}/ - source: salt://{{ slsdotpath }}/files/net/ - file_mode: '0644' - dir_mode: '0700' - - user: user - - group: user + - user: {{ gui_user.gui_user }} + - group: {{ gui_user.gui_user }} - keep_symlinks: True - force_symlinks: True diff --git a/copy-pgp.sls b/copy-pgp.sls index ba1e320..a2e4b68 100644 --- a/copy-pgp.sls +++ b/copy-pgp.sls @@ -4,14 +4,16 @@ SPDX-FileCopyrightText: 2023 Benjamin Grande M. S. SPDX-License-Identifier: AGPL-3.0-or-later #} +{%- import "dom0/gui-user.jinja" as gui_user -%} + "{{ slsdotpath }}-copy-pgp-home": file.recurse: - - name: /home/user/ + - name: {{ gui_user.gui_user_home }}/ - source: salt://{{ slsdotpath }}/files/pgp/ - file_mode: '0600' - dir_mode: '0700' - - user: user - - group: user + - user: {{ gui_user.gui_user }} + - group: {{ gui_user.gui_user }} "{{ slsdotpath }}-copy-pgp-skel": file.recurse: diff --git a/copy-sh.sls b/copy-sh.sls index c876c30..6052050 100644 --- a/copy-sh.sls +++ b/copy-sh.sls @@ -4,20 +4,22 @@ SPDX-FileCopyrightText: 2023 Benjamin Grande M. S. SPDX-License-Identifier: AGPL-3.0-or-later #} +{%- import "dom0/gui-user.jinja" as gui_user -%} + "{{ slsdotpath }}-copy-sh-home": file.recurse: - - name: /home/user/ + - name: {{ gui_user.gui_user_home }}/ - source: salt://{{ slsdotpath }}/files/sh - file_mode: '0644' - dir_mode: '0700' - - user: user - - group: user + - user: {{ gui_user.gui_user }} + - group: {{ gui_user.gui_user }} - keep_symlinks: True - force_symlinks: True "{{ slsdotpath }}-fix-executables-sh-dir-home": file.directory: - - name: /home/user/.local/bin + - name: {{ gui_user.gui_user_home }}/.local/bin - file_mode: '0755' - dir_mode: '0755' - recurse: diff --git a/copy-ssh.sls b/copy-ssh.sls index 892c00e..3c2f112 100644 --- a/copy-ssh.sls +++ b/copy-ssh.sls @@ -4,14 +4,16 @@ SPDX-FileCopyrightText: 2023 Benjamin Grande M. S. SPDX-License-Identifier: AGPL-3.0-or-later #} +{%- import "dom0/gui-user.jinja" as gui_user -%} + "{{ slsdotpath }}-copy-ssh-home": file.recurse: - - name: /home/user/ + - name: {{ gui_user.gui_user_home }}/ - source: salt://{{ slsdotpath }}/files/ssh/ - file_mode: '0600' - dir_mode: '0700' - - user: user - - group: user + - user: {{ gui_user.gui_user }} + - group: {{ gui_user.gui_user }} - backup: minion "{{ slsdotpath }}-copy-ssh-skel": diff --git a/copy-tmux.sls b/copy-tmux.sls index 793b5e2..c6951d5 100644 --- a/copy-tmux.sls +++ b/copy-tmux.sls @@ -4,18 +4,20 @@ SPDX-FileCopyrightText: 2023 Benjamin Grande M. S. SPDX-License-Identifier: AGPL-3.0-or-later #} +{%- import "dom0/gui-user.jinja" as gui_user -%} + "{{ slsdotpath }}-copy-tmux-home": file.recurse: - - name: /home/user/ + - name: {{ gui_user.gui_user_home }}/ - source: salt://{{ slsdotpath }}/files/tmux/ - file_mode: '0644' - dir_mode: '0700' - - user: user - - group: user + - user: {{ gui_user.gui_user }} + - group: {{ gui_user.gui_user }} "{{ slsdotpath }}-fix-executables-tmux-home": file.directory: - - name: /home/user/.local/bin + - name: {{ gui_user.gui_user_home }}/.local/bin - mode: '0755' - recurse: - mode @@ -31,7 +33,7 @@ SPDX-License-Identifier: AGPL-3.0-or-later "{{ slsdotpath }}-fix-executables-tmux-skel": file.directory: - - name: /home/user/.local/bin + - name: {{ gui_user.gui_user_home }}/.local/bin - mode: '0755' - recurse: - mode diff --git a/copy-vim.sls b/copy-vim.sls index 6c6d703..46771b6 100644 --- a/copy-vim.sls +++ b/copy-vim.sls @@ -4,14 +4,16 @@ SPDX-FileCopyrightText: 2023 Benjamin Grande M. S. SPDX-License-Identifier: AGPL-3.0-or-later #} +{%- import "dom0/gui-user.jinja" as gui_user -%} + "{{ slsdotpath }}-copy-vim-home": file.recurse: - - name: /home/user/ + - name: {{ gui_user.gui_user_home }}/ - source: salt://{{ slsdotpath }}/files/vim/ - file_mode: '0644' - dir_mode: '0700' - - user: user - - group: user + - user: {{ gui_user.gui_user }} + - group: {{ gui_user.gui_user }} "{{ slsdotpath }}-copy-vim-skel": file.recurse: diff --git a/copy-x11.sls b/copy-x11.sls index f9cea4b..5601a03 100644 --- a/copy-x11.sls +++ b/copy-x11.sls @@ -4,14 +4,16 @@ SPDX-FileCopyrightText: 2023 Benjamin Grande M. S. SPDX-License-Identifier: AGPL-3.0-or-later #} +{%- import "dom0/gui-user.jinja" as gui_user -%} + "{{ slsdotpath }}-copy-x11-home": file.recurse: - - name: /home/user/ + - name: {{ gui_user.gui_user_home }}/ - source: salt://{{ slsdotpath }}/files/x11 - file_mode: '0755' - dir_mode: '0755' - - user: user - - group: user + - user: {{ gui_user.gui_user }} + - group: {{ gui_user.gui_user }} - keep_symlinks: True - force_symlinks: True diff --git a/copy-xfce.sls b/copy-xfce.sls index ff2d908..b4cc720 100644 --- a/copy-xfce.sls +++ b/copy-xfce.sls @@ -4,14 +4,16 @@ SPDX-FileCopyrightText: 2024 Benjamin Grande M. S. SPDX-License-Identifier: AGPL-3.0-or-later #} +{%- import "dom0/gui-user.jinja" as gui_user -%} + "{{ slsdotpath }}-copy-xfce-home": file.recurse: - - name: /home/user/ + - name: {{ gui_user.gui_user_home }}/ - source: salt://{{ slsdotpath }}/files/xfce/ - file_mode: '0644' - dir_mode: '0700' - - user: user - - group: user + - user: {{ gui_user.gui_user }} + - group: {{ gui_user.gui_user }} - keep_symlinks: True - force_symlinks: True diff --git a/files/qvm-copy-dotfiles b/files/qvm-copy-dotfiles index e746518..e3caa69 100755 --- a/files/qvm-copy-dotfiles +++ b/files/qvm-copy-dotfiles @@ -23,12 +23,14 @@ test -f ./setup.sh || { echo "File doesn't exist: './setup.sh'"; exit 1; } if test "$vm" = "dom0"; then sh ./dotfiles/setup.sh - sudo -u user mkdir -pv /home/user/.cache - tmpdir="$(sudo -u user mktemp -d /home/user/.cache/XXXXXX)" + user_name="$(getent group qubes | awk -F "[:,]" '{print $4}')" + user_home="$(getent passwd "${user_name}" | awk -F ":" '{print $6}')" + sudo -u "${user_name}" mkdir -pv "${user_home}/.cache" + tmpdir="$(sudo -u "${user_name}" mktemp -d "${user_home}/.cache/XXXXXX")" trap 'rm -rf -- "$tmpdir"' EXIT INT HUP QUIT ABRT cp -r ./dotfiles "$tmpdir" - chown -R user:user "$tmpdir" - sudo -u user "$tmpdir/dotfiles/setup.sh" + chown -R "${user_name}:${user_name}" "$tmpdir" + sudo -u "${user_name}" "$tmpdir/dotfiles/setup.sh" exit fi