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
This commit is contained in:
Ben Grande 2024-04-30 16:02:49 +02:00
parent 9954972df3
commit 84bae87dc5
No known key found for this signature in database
GPG Key ID: 00C64E14F51F9E56
15 changed files with 88 additions and 55 deletions

View File

@ -41,8 +41,11 @@ Configuration and scripts targeting:
### Salt ### Salt
The formula was designed to be run in Qubes OS, the normal user name is The formula is part of [Qusal](https://github.com/ben-grande/qusal/issues/43),
hardcoded to `user` and its home is hardcoded to `/home/user`. 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: Install everything in a qube:
```sh ```sh
@ -60,6 +63,7 @@ You can simply deploy all configurations with:
```sh ```sh
./files/setup.sh ./files/setup.sh
``` ```
Or target specific ones by specifying the directory name: Or target specific ones by specifying the directory name:
```sh ```sh
./files/setup.sh sh bash ./files/setup.sh sh bash

View File

@ -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 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": "{{ slsdotpath }}-absent-dotfiles-client":
file.absent: file.absent:
- name: /tmp/dotfiles - name: /tmp/dotfiles
@ -33,17 +36,17 @@ https://docs.saltproject.io/en/latest/ref/states/all/salt.states.file.html
- name: /tmp/dotfiles - name: /tmp/dotfiles
- file_mode: '0644' - file_mode: '0644'
- dir_mode: '0700' - dir_mode: '0700'
- user: user - user: {{ gui_user.gui_user }}
- group: user - group: {{ gui_user.gui_user }}
"{{ slsdotpath }}-apply-dotfiles-client": "{{ slsdotpath }}-apply-dotfiles-client":
cmd.run: cmd.run:
- name: sh /tmp/dotfiles/setup.sh - name: sh /tmp/dotfiles/setup.sh
- runas: user - runas: {{ gui_user.gui_user }}
"{{ slsdotpath }}-fix-executables-permission": "{{ slsdotpath }}-fix-executables-permission":
file.directory: file.directory:
- name: /home/user/.local/bin - name: {{ gui_user.gui_user_home }}/.local/bin
- mode: '0755' - mode: '0755'
- recurse: - recurse:
- mode - mode

View File

@ -1,17 +1,19 @@
{# {#
SPDX-FileCopyrightText: 2023 Benjamin Grande M. S. <ben.grande.b@gmail.com> SPDX-FileCopyrightText: 2023 - 2024 Benjamin Grande M. S. <ben.grande.b@gmail.com>
SPDX-License-Identifier: AGPL-3.0-or-later SPDX-License-Identifier: AGPL-3.0-or-later
#} #}
{%- import "dom0/gui-user.jinja" as gui_user -%}
"{{ slsdotpath }}-copy-dom0-home": "{{ slsdotpath }}-copy-dom0-home":
file.recurse: file.recurse:
- name: /home/user/ - name: {{ gui_user.gui_user_home }}
- source: salt://{{ slsdotpath }}/files/dom0/ - source: salt://{{ slsdotpath }}/files/dom0/
- file_mode: '0644' - file_mode: '0644'
- dir_mode: '0755' - dir_mode: '0755'
- user: user - user: {{ gui_user.gui_user }}
- group: user - group: {{ gui_user.gui_user }}
- makedirs: True - makedirs: True
"{{ slsdotpath }}-copy-dom0-skel": "{{ slsdotpath }}-copy-dom0-skel":

View File

@ -4,32 +4,34 @@ SPDX-FileCopyrightText: 2023 Benjamin Grande M. S. <ben.grande.b@gmail.com>
SPDX-License-Identifier: AGPL-3.0-or-later SPDX-License-Identifier: AGPL-3.0-or-later
#} #}
{%- import "dom0/gui-user.jinja" as gui_user -%}
"{{ slsdotpath }}-copy-git-home": "{{ slsdotpath }}-copy-git-home":
file.recurse: file.recurse:
- name: /home/user - name: {{ gui_user.gui_user_home }}
- source: salt://{{ slsdotpath }}/files/git - source: salt://{{ slsdotpath }}/files/git
- file_mode: '0644' - file_mode: '0644'
- dir_mode: '0700' - dir_mode: '0700'
- user: user - user: {{ gui_user.gui_user }}
- group: user - group: {{ gui_user.gui_user }}
"{{ slsdotpath }}-fix-executables-git-template-dir-home": "{{ slsdotpath }}-fix-executables-git-template-dir-home":
file.directory: file.directory:
- name: /home/user/.config/git/template/hooks - name: {{ gui_user.gui_user_home }}/.config/git/template/hooks
- mode: '0755' - mode: '0755'
- recurse: - recurse:
- mode - mode
"{{ slsdotpath }}-fix-executables-git-shell-dir-home": "{{ slsdotpath }}-fix-executables-git-shell-dir-home":
file.directory: file.directory:
- name: /home/user/.config/git/shell - name: {{ gui_user.gui_user_home }}/.config/git/shell
- mode: '0755' - mode: '0755'
- recurse: - recurse:
- mode - mode
"{{ slsdotpath }}-fix-executables-git-bin-dir-home": "{{ slsdotpath }}-fix-executables-git-bin-dir-home":
file.directory: file.directory:
- name: /home/user/.local/bin - name: {{ gui_user.gui_user_home }}/.local/bin
- mode: '0755' - mode: '0755'
- recurse: - recurse:
- mode - mode
@ -52,14 +54,14 @@ SPDX-License-Identifier: AGPL-3.0-or-later
"{{ slsdotpath }}-fix-executables-git-shell-dir-skel": "{{ slsdotpath }}-fix-executables-git-shell-dir-skel":
file.directory: file.directory:
- name: /home/user/.config/git/shell - name: {{ gui_user.gui_user_home }}/.config/git/shell
- mode: '0755' - mode: '0755'
- recurse: - recurse:
- mode - mode
"{{ slsdotpath }}-fix-executables-git-bin-dir-skel": "{{ slsdotpath }}-fix-executables-git-bin-dir-skel":
file.directory: file.directory:
- name: /home/user/.local/bin - name: {{ gui_user.gui_user_home }}/.local/bin
- mode: '0755' - mode: '0755'
- recurse: - recurse:
- mode - mode

View File

@ -4,14 +4,16 @@ SPDX-FileCopyrightText: 2023 Benjamin Grande M. S. <ben.grande.b@gmail.com>
SPDX-License-Identifier: AGPL-3.0-or-later SPDX-License-Identifier: AGPL-3.0-or-later
#} #}
{%- import "dom0/gui-user.jinja" as gui_user -%}
"{{ slsdotpath }}-copy-gtk-home": "{{ slsdotpath }}-copy-gtk-home":
file.recurse: file.recurse:
- name: /home/user/ - name: {{ gui_user.gui_user_home }}/
- source: salt://{{ slsdotpath }}/files/gtk/ - source: salt://{{ slsdotpath }}/files/gtk/
- file_mode: '0644' - file_mode: '0644'
- dir_mode: '0700' - dir_mode: '0700'
- user: user - user: {{ gui_user.gui_user }}
- group: user - group: {{ gui_user.gui_user }}
"{{ slsdotpath }}-copy-gtk-skel": "{{ slsdotpath }}-copy-gtk-skel":
file.recurse: file.recurse:

View File

@ -4,14 +4,16 @@ SPDX-FileCopyrightText: 2023 Benjamin Grande M. S. <ben.grande.b@gmail.com>
SPDX-License-Identifier: AGPL-3.0-or-later SPDX-License-Identifier: AGPL-3.0-or-later
#} #}
{%- import "dom0/gui-user.jinja" as gui_user -%}
"{{ slsdotpath }}-copy-mutt-home": "{{ slsdotpath }}-copy-mutt-home":
file.recurse: file.recurse:
- name: /home/user/ - name: {{ gui_user.gui_user_home }}/
- source: salt://{{ slsdotpath }}/files/mutt/ - source: salt://{{ slsdotpath }}/files/mutt/
- file_mode: '0644' - file_mode: '0644'
- dir_mode: '0755' - dir_mode: '0755'
- user: user - user: {{ gui_user.gui_user }}
- group: user - group: {{ gui_user.gui_user }}
- makedirs: True - makedirs: True
"{{ slsdotpath }}-copy-mutt-skel": "{{ slsdotpath }}-copy-mutt-skel":

View File

@ -4,14 +4,16 @@ SPDX-FileCopyrightText: 2023 Benjamin Grande M. S. <ben.grande.b@gmail.com>
SPDX-License-Identifier: AGPL-3.0-or-later SPDX-License-Identifier: AGPL-3.0-or-later
#} #}
{%- import "dom0/gui-user.jinja" as gui_user -%}
"{{ slsdotpath }}-copy-net-home": "{{ slsdotpath }}-copy-net-home":
file.recurse: file.recurse:
- name: /home/user/ - name: {{ gui_user.gui_user_home }}/
- source: salt://{{ slsdotpath }}/files/net/ - source: salt://{{ slsdotpath }}/files/net/
- file_mode: '0644' - file_mode: '0644'
- dir_mode: '0700' - dir_mode: '0700'
- user: user - user: {{ gui_user.gui_user }}
- group: user - group: {{ gui_user.gui_user }}
- keep_symlinks: True - keep_symlinks: True
- force_symlinks: True - force_symlinks: True

View File

@ -4,14 +4,16 @@ SPDX-FileCopyrightText: 2023 Benjamin Grande M. S. <ben.grande.b@gmail.com>
SPDX-License-Identifier: AGPL-3.0-or-later SPDX-License-Identifier: AGPL-3.0-or-later
#} #}
{%- import "dom0/gui-user.jinja" as gui_user -%}
"{{ slsdotpath }}-copy-pgp-home": "{{ slsdotpath }}-copy-pgp-home":
file.recurse: file.recurse:
- name: /home/user/ - name: {{ gui_user.gui_user_home }}/
- source: salt://{{ slsdotpath }}/files/pgp/ - source: salt://{{ slsdotpath }}/files/pgp/
- file_mode: '0600' - file_mode: '0600'
- dir_mode: '0700' - dir_mode: '0700'
- user: user - user: {{ gui_user.gui_user }}
- group: user - group: {{ gui_user.gui_user }}
"{{ slsdotpath }}-copy-pgp-skel": "{{ slsdotpath }}-copy-pgp-skel":
file.recurse: file.recurse:

View File

@ -4,20 +4,22 @@ SPDX-FileCopyrightText: 2023 Benjamin Grande M. S. <ben.grande.b@gmail.com>
SPDX-License-Identifier: AGPL-3.0-or-later SPDX-License-Identifier: AGPL-3.0-or-later
#} #}
{%- import "dom0/gui-user.jinja" as gui_user -%}
"{{ slsdotpath }}-copy-sh-home": "{{ slsdotpath }}-copy-sh-home":
file.recurse: file.recurse:
- name: /home/user/ - name: {{ gui_user.gui_user_home }}/
- source: salt://{{ slsdotpath }}/files/sh - source: salt://{{ slsdotpath }}/files/sh
- file_mode: '0644' - file_mode: '0644'
- dir_mode: '0700' - dir_mode: '0700'
- user: user - user: {{ gui_user.gui_user }}
- group: user - group: {{ gui_user.gui_user }}
- keep_symlinks: True - keep_symlinks: True
- force_symlinks: True - force_symlinks: True
"{{ slsdotpath }}-fix-executables-sh-dir-home": "{{ slsdotpath }}-fix-executables-sh-dir-home":
file.directory: file.directory:
- name: /home/user/.local/bin - name: {{ gui_user.gui_user_home }}/.local/bin
- file_mode: '0755' - file_mode: '0755'
- dir_mode: '0755' - dir_mode: '0755'
- recurse: - recurse:

View File

@ -4,14 +4,16 @@ SPDX-FileCopyrightText: 2023 Benjamin Grande M. S. <ben.grande.b@gmail.com>
SPDX-License-Identifier: AGPL-3.0-or-later SPDX-License-Identifier: AGPL-3.0-or-later
#} #}
{%- import "dom0/gui-user.jinja" as gui_user -%}
"{{ slsdotpath }}-copy-ssh-home": "{{ slsdotpath }}-copy-ssh-home":
file.recurse: file.recurse:
- name: /home/user/ - name: {{ gui_user.gui_user_home }}/
- source: salt://{{ slsdotpath }}/files/ssh/ - source: salt://{{ slsdotpath }}/files/ssh/
- file_mode: '0600' - file_mode: '0600'
- dir_mode: '0700' - dir_mode: '0700'
- user: user - user: {{ gui_user.gui_user }}
- group: user - group: {{ gui_user.gui_user }}
- backup: minion - backup: minion
"{{ slsdotpath }}-copy-ssh-skel": "{{ slsdotpath }}-copy-ssh-skel":

View File

@ -4,18 +4,20 @@ SPDX-FileCopyrightText: 2023 Benjamin Grande M. S. <ben.grande.b@gmail.com>
SPDX-License-Identifier: AGPL-3.0-or-later SPDX-License-Identifier: AGPL-3.0-or-later
#} #}
{%- import "dom0/gui-user.jinja" as gui_user -%}
"{{ slsdotpath }}-copy-tmux-home": "{{ slsdotpath }}-copy-tmux-home":
file.recurse: file.recurse:
- name: /home/user/ - name: {{ gui_user.gui_user_home }}/
- source: salt://{{ slsdotpath }}/files/tmux/ - source: salt://{{ slsdotpath }}/files/tmux/
- file_mode: '0644' - file_mode: '0644'
- dir_mode: '0700' - dir_mode: '0700'
- user: user - user: {{ gui_user.gui_user }}
- group: user - group: {{ gui_user.gui_user }}
"{{ slsdotpath }}-fix-executables-tmux-home": "{{ slsdotpath }}-fix-executables-tmux-home":
file.directory: file.directory:
- name: /home/user/.local/bin - name: {{ gui_user.gui_user_home }}/.local/bin
- mode: '0755' - mode: '0755'
- recurse: - recurse:
- mode - mode
@ -31,7 +33,7 @@ SPDX-License-Identifier: AGPL-3.0-or-later
"{{ slsdotpath }}-fix-executables-tmux-skel": "{{ slsdotpath }}-fix-executables-tmux-skel":
file.directory: file.directory:
- name: /home/user/.local/bin - name: {{ gui_user.gui_user_home }}/.local/bin
- mode: '0755' - mode: '0755'
- recurse: - recurse:
- mode - mode

View File

@ -4,14 +4,16 @@ SPDX-FileCopyrightText: 2023 Benjamin Grande M. S. <ben.grande.b@gmail.com>
SPDX-License-Identifier: AGPL-3.0-or-later SPDX-License-Identifier: AGPL-3.0-or-later
#} #}
{%- import "dom0/gui-user.jinja" as gui_user -%}
"{{ slsdotpath }}-copy-vim-home": "{{ slsdotpath }}-copy-vim-home":
file.recurse: file.recurse:
- name: /home/user/ - name: {{ gui_user.gui_user_home }}/
- source: salt://{{ slsdotpath }}/files/vim/ - source: salt://{{ slsdotpath }}/files/vim/
- file_mode: '0644' - file_mode: '0644'
- dir_mode: '0700' - dir_mode: '0700'
- user: user - user: {{ gui_user.gui_user }}
- group: user - group: {{ gui_user.gui_user }}
"{{ slsdotpath }}-copy-vim-skel": "{{ slsdotpath }}-copy-vim-skel":
file.recurse: file.recurse:

View File

@ -4,14 +4,16 @@ SPDX-FileCopyrightText: 2023 Benjamin Grande M. S. <ben.grande.b@gmail.com>
SPDX-License-Identifier: AGPL-3.0-or-later SPDX-License-Identifier: AGPL-3.0-or-later
#} #}
{%- import "dom0/gui-user.jinja" as gui_user -%}
"{{ slsdotpath }}-copy-x11-home": "{{ slsdotpath }}-copy-x11-home":
file.recurse: file.recurse:
- name: /home/user/ - name: {{ gui_user.gui_user_home }}/
- source: salt://{{ slsdotpath }}/files/x11 - source: salt://{{ slsdotpath }}/files/x11
- file_mode: '0755' - file_mode: '0755'
- dir_mode: '0755' - dir_mode: '0755'
- user: user - user: {{ gui_user.gui_user }}
- group: user - group: {{ gui_user.gui_user }}
- keep_symlinks: True - keep_symlinks: True
- force_symlinks: True - force_symlinks: True

View File

@ -4,14 +4,16 @@ SPDX-FileCopyrightText: 2024 Benjamin Grande M. S. <ben.grande.b@gmail.com>
SPDX-License-Identifier: AGPL-3.0-or-later SPDX-License-Identifier: AGPL-3.0-or-later
#} #}
{%- import "dom0/gui-user.jinja" as gui_user -%}
"{{ slsdotpath }}-copy-xfce-home": "{{ slsdotpath }}-copy-xfce-home":
file.recurse: file.recurse:
- name: /home/user/ - name: {{ gui_user.gui_user_home }}/
- source: salt://{{ slsdotpath }}/files/xfce/ - source: salt://{{ slsdotpath }}/files/xfce/
- file_mode: '0644' - file_mode: '0644'
- dir_mode: '0700' - dir_mode: '0700'
- user: user - user: {{ gui_user.gui_user }}
- group: user - group: {{ gui_user.gui_user }}
- keep_symlinks: True - keep_symlinks: True
- force_symlinks: True - force_symlinks: True

View File

@ -23,12 +23,14 @@ test -f ./setup.sh || { echo "File doesn't exist: './setup.sh'"; exit 1; }
if test "$vm" = "dom0"; then if test "$vm" = "dom0"; then
sh ./dotfiles/setup.sh sh ./dotfiles/setup.sh
sudo -u user mkdir -pv /home/user/.cache user_name="$(getent group qubes | awk -F "[:,]" '{print $4}')"
tmpdir="$(sudo -u user mktemp -d /home/user/.cache/XXXXXX)" 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 trap 'rm -rf -- "$tmpdir"' EXIT INT HUP QUIT ABRT
cp -r ./dotfiles "$tmpdir" cp -r ./dotfiles "$tmpdir"
chown -R user:user "$tmpdir" chown -R "${user_name}:${user_name}" "$tmpdir"
sudo -u user "$tmpdir/dotfiles/setup.sh" sudo -u "${user_name}" "$tmpdir/dotfiles/setup.sh"
exit exit
fi fi