README
Installation
Setup salt user-dirs
# In dom0 sudo qubesctl state.sls qubes.user-dirs
I sometimes run into the issue described here on a new install: https://github.com/QubesOS/qubes-issues/issues/8491. The solution that works consistantly for me is:
# In dom0 ln -s /srv/salt/qubes/user-dirs.top /srv/salt/_tops/base/user-dirs.top
Clone my repo
Open a terminal in some networked app qube (with git installed!), and clone my repository:
# In dispXXXX git clone https://git.skylarcloud.xyz/salt-repo.git
Move it to dom0
First, we’ll turn the repo into an archive with tar:
# In dispXXXX tar -cf /tmp/salt-archive.tar salt-repo
Then, in dom0:
# in dom0 # Pulls the content of the archive from dispXXXX to dom0 sudo qvm-run --pass-io dispXXXX 'cat /tmp/salt-archive.tar' > /tmp/salt-archive.tar # Unpack the archive sudo cd /tmp && tar -xf salt-archive.tar # Delete the default /srv/user_salt directory # Make sure you haven't put anything important there sudo rm -fr /srv/user_salt # Move the repo to /srv/user_salt sudo mv /tmp/salt-repo /srv/user_salt
Change your username
There’s a variable in /wm/wm-setup.sls that you should change to match your username. That file needs to write files to your home directory in dom0, and needs the username for those paths.
Apply the configuration
There are many directories with .sls and .top files inside of them. You can enable a feature and apply it with just a couple commands:
# In dom0 sudo qubesctl top.enable wm.wm-setup # This enables the top file at /srv/user_salt/wm/wm-setup.top sudo qubesctl state.apply # Applies dom0 states sudo qubesctl --targets=tmpl-XXXX # Applies dom0 states and states for tmpl-XXXX
Features
3isec
Sets up the 3isec repository and graphical installer. This has lots of handy states I use for various utilities.
Chromium
Creates tmpl-chromium and web-yt. I usually avoid Chromium, but YouTube performs better on it than Librewolf, so I use it for that site.
Blueman is installed in tmpl-chromium so it’s easy to pass your bluetooth controller to web-yt and listen with bluetooth headphones.
Emacs
Creates tmpl-emacs and two app qubes, emacs-org and emacs-salt, with Doom Emacs’ dependencies. I do all of my personal organization in Emacs org-mode, and emacs-salt is for editing my saltstack configuration.
It also places two scripts in dom0, /usr/bin/fetch-salt-from-emacs and /usr/bin/push-salt-to-emacs. Run these as root in dom0 to easily move your repo back and forth as you please.
Creates tmpl-email and two app qubes, email-personal and email-work, with Thunderbird.
IRC
Creates tmpl-irc and irc with Hexchat installed, for chatting on IRC over Tor.
SSH
Creates tmpl-ssh and ssh-vps, simple qubes to ssh into my VPS with.
Torrenting
Creates tmpl-torrenting and bitz with qBitTorrent installed, for torrenting. Route this qube’s traffic through a VPN if you plan on downloading anything illegal.
Web
Creates tmpl-web and a few web-XXX qubes, with Librewolf.
WM
This does many things to set up a convenient i3 environment.
- Installs a few packages in dom0
- Moves my i3 config into place
- Prioritizes xfce4-terminal and st in /usr/bin/qubes-i3-sensible-terminal
- Moves my xrandr screenlayout in place
- Moves my nitrogen wallpaper files in place
- Enables tap-to-click and natural scrolling
- Replaces dmenu with rofi