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
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

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
#}
{#
{%- 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

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
#}
{%- 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":

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
#}
{%- 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

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
#}
{%- 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:

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
#}
{%- 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":

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
#}
{%- 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

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
#}
{%- 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:

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
#}
{%- 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:

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
#}
{%- 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":

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
#}
{%- 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

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
#}
{%- 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:

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
#}
{%- 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

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
#}
{%- 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

View File

@ -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