mirror of
https://github.com/ben-grande/qusal.git
synced 2025-08-07 05:32:21 -04:00
feat: add Qubes development formula
Contributing to Qubes OS using Debian is possible, but there are edge cases with linter versions, GUI editor versions, test packages in run-tests that are better supported on Fedora, as this is the template that Qubes OS developers most use. Fixes: https://github.com/ben-grande/qusal/issues/139 Fixes: https://github.com/ben-grande/qusal/issues/126
This commit is contained in:
parent
8ecfc09552
commit
5cb6350e22
20 changed files with 564 additions and 62 deletions
|
@ -28,6 +28,7 @@ host:
|
||||||
- rpm_spec/qusal-mirage-builder.spec
|
- rpm_spec/qusal-mirage-builder.spec
|
||||||
- rpm_spec/qusal-opentofu.spec
|
- rpm_spec/qusal-opentofu.spec
|
||||||
- rpm_spec/qusal-qubes-builder.spec
|
- rpm_spec/qusal-qubes-builder.spec
|
||||||
|
- rpm_spec/qusal-qubes-dev.spec
|
||||||
- rpm_spec/qusal-reader.spec
|
- rpm_spec/qusal-reader.spec
|
||||||
- rpm_spec/qusal-remmina.spec
|
- rpm_spec/qusal-remmina.spec
|
||||||
- rpm_spec/qusal-signal.spec
|
- rpm_spec/qusal-signal.spec
|
||||||
|
|
118
rpm_spec/qusal-qubes-dev.spec
Normal file
118
rpm_spec/qusal-qubes-dev.spec
Normal file
|
@ -0,0 +1,118 @@
|
||||||
|
# SPDX-FileCopyrightText: 2023 - 2025 Benjamin Grande M. S. <ben.grande.b@gmail.com>
|
||||||
|
#
|
||||||
|
# SPDX-License-Identifier: AGPL-3.0-or-later
|
||||||
|
|
||||||
|
%define project qubes-dev
|
||||||
|
%define license_csv AGPL-3.0-or-later
|
||||||
|
## Reproducibility.
|
||||||
|
%define source_date_epoch_from_changelog 1
|
||||||
|
%define use_source_date_epoch_as_buildtime 1
|
||||||
|
%define clamp_mtime_to_source_date_epoch 1
|
||||||
|
## Changelog is trimmed according to current date, not last date from changelog.
|
||||||
|
%define _changelog_trimtime 0
|
||||||
|
%define _changelog_trimage 0
|
||||||
|
%global _buildhost %{name}
|
||||||
|
## Python bytecode interferes when updates occur and restart is not done.
|
||||||
|
%undefine __brp_python_bytecompile
|
||||||
|
|
||||||
|
Name: qusal-qubes-dev
|
||||||
|
Version: 0.0.1
|
||||||
|
Release: 1%{?dist}
|
||||||
|
Summary: Development environment for Qubes OS
|
||||||
|
Group: qusal
|
||||||
|
Packager: %{?_packager}%{!?_packager:Ben Grande <ben.grande.b@gmail.com>}
|
||||||
|
Vendor: Ben Grande
|
||||||
|
License: AGPL-3.0-or-later
|
||||||
|
URL: https://github.com/ben-grande/qusal
|
||||||
|
BugURL: https://github.com/ben-grande/qusal/issues
|
||||||
|
Source0: %{name}-%{version}.tar.gz
|
||||||
|
BuildArch: noarch
|
||||||
|
|
||||||
|
Requires: qubes-mgmt-salt
|
||||||
|
Requires: qubes-mgmt-salt-dom0
|
||||||
|
Requires: qusal-dev
|
||||||
|
Requires: qusal-dotfiles
|
||||||
|
Requires: qusal-sys-net
|
||||||
|
Requires: qusal-utils
|
||||||
|
|
||||||
|
|
||||||
|
%description
|
||||||
|
Setup a development qube named "qubes-dev", dedicated to contributing to Qubes
|
||||||
|
OS repositories. As there there is a very broad set of repositories, only
|
||||||
|
common packages will be installed. The qube has netvm but can reach remote
|
||||||
|
servers if the policy allows.
|
||||||
|
|
||||||
|
%prep
|
||||||
|
%setup -q
|
||||||
|
|
||||||
|
%build
|
||||||
|
|
||||||
|
%check
|
||||||
|
|
||||||
|
%pre
|
||||||
|
|
||||||
|
%install
|
||||||
|
rm -rf -- %{buildroot}
|
||||||
|
install -m 755 -d -- \
|
||||||
|
%{buildroot}/srv/salt/qusal \
|
||||||
|
%{buildroot}%{_docdir}/%{name} \
|
||||||
|
%{buildroot}%{_defaultlicensedir}/%{name}
|
||||||
|
|
||||||
|
for license in $(printf '%s\n' "%{license_csv}" | tr "," " "); do
|
||||||
|
license_dir="LICENSES"
|
||||||
|
if test -d "salt/%{project}/LICENSES"; then
|
||||||
|
license_dir="salt/%{project}/LICENSES"
|
||||||
|
fi
|
||||||
|
install -m 644 -- \
|
||||||
|
"${license_dir}/${license}.txt" %{buildroot}%{_defaultlicensedir}/%{name}/
|
||||||
|
done
|
||||||
|
|
||||||
|
install -m 644 -- salt/%{project}/README.md %{buildroot}%{_docdir}/%{name}/
|
||||||
|
rm -rf -- \
|
||||||
|
salt/%{project}/LICENSES \
|
||||||
|
salt/%{project}/README.md \
|
||||||
|
salt/%{project}/.*
|
||||||
|
cp -rv -- salt/%{project} %{buildroot}/srv/salt/qusal/%{name}
|
||||||
|
|
||||||
|
%post
|
||||||
|
if test "$1" = "1"; then
|
||||||
|
## Install
|
||||||
|
qubesctl state.apply qubes-dev.create
|
||||||
|
qubesctl --skip-dom0 --targets=tpl-qubes-dev state.apply qubes-dev.install
|
||||||
|
qubesctl --skip-dom0 --targets=dvm-qubes-dev state.apply qubes-dev.configure-dvm
|
||||||
|
qubesctl --skip-dom0 --targets=qubes-dev state.apply qubes-dev.configure
|
||||||
|
if test -n "${proxy_target}"; then
|
||||||
|
sudo qubesctl --skip-dom0 --targets="${proxy_target}" state.apply sys-net.install-proxy
|
||||||
|
elif test "$1" = "2"; then
|
||||||
|
## Upgrade
|
||||||
|
true
|
||||||
|
fi
|
||||||
|
|
||||||
|
%preun
|
||||||
|
if test "$1" = "0"; then
|
||||||
|
## Uninstall
|
||||||
|
true
|
||||||
|
elif test "$1" = "1"; then
|
||||||
|
## Upgrade
|
||||||
|
true
|
||||||
|
fi
|
||||||
|
|
||||||
|
%postun
|
||||||
|
if test "$1" = "0"; then
|
||||||
|
## Uninstall
|
||||||
|
true
|
||||||
|
elif test "$1" = "1"; then
|
||||||
|
## Upgrade
|
||||||
|
true
|
||||||
|
fi
|
||||||
|
|
||||||
|
%files
|
||||||
|
%defattr(-,root,root,-)
|
||||||
|
%license %{_defaultlicensedir}/%{name}/*
|
||||||
|
%doc %{_docdir}/%{name}/README.md
|
||||||
|
%dir /srv/salt/qusal/%{name}
|
||||||
|
/srv/salt/qusal/%{name}/*
|
||||||
|
%dnl TODO: missing '%ghost', files generated during %post, such as Qrexec policies.
|
||||||
|
|
||||||
|
%changelog
|
||||||
|
|
64
salt/dev/install-common.sls
Normal file
64
salt/dev/install-common.sls
Normal file
|
@ -0,0 +1,64 @@
|
||||||
|
{#
|
||||||
|
SPDX-FileCopyrightText: 2023 - 2025 Benjamin Grande M. S. <ben.grande.b@gmail.com>
|
||||||
|
|
||||||
|
SPDX-License-Identifier: AGPL-3.0-or-later
|
||||||
|
#}
|
||||||
|
|
||||||
|
{% if grains['nodename'] != 'dom0' -%}
|
||||||
|
|
||||||
|
include:
|
||||||
|
- utils.tools.common.update
|
||||||
|
- {{ slsdotpath }}.home-cleanup
|
||||||
|
- dotfiles.copy-all
|
||||||
|
- utils.tools.zsh
|
||||||
|
- sys-pgp.install-client
|
||||||
|
- sys-git.install-client
|
||||||
|
- sys-ssh-agent.install-client
|
||||||
|
|
||||||
|
"{{ slsdotpath }}-installed-common":
|
||||||
|
pkg.installed:
|
||||||
|
- require:
|
||||||
|
- sls: utils.tools.common.update
|
||||||
|
- install_recommends: False
|
||||||
|
- skip_suggestions: True
|
||||||
|
- setopt: "install_weak_deps=False"
|
||||||
|
- pkgs:
|
||||||
|
## Necessary
|
||||||
|
- qubes-core-agent-passwordless-root
|
||||||
|
- ca-certificates
|
||||||
|
## Usability
|
||||||
|
- tmux
|
||||||
|
- xclip
|
||||||
|
- bash-completion
|
||||||
|
## Reading documentation
|
||||||
|
- man-db
|
||||||
|
- info
|
||||||
|
- texinfo
|
||||||
|
## Searching files
|
||||||
|
- file
|
||||||
|
- tree
|
||||||
|
- ripgrep
|
||||||
|
- fzf
|
||||||
|
## Lint
|
||||||
|
- gitlint
|
||||||
|
|
||||||
|
## Fedora doesn't have: ruby-mdl (markdownlint, mdl)
|
||||||
|
{% set pkg = {
|
||||||
|
'Debian': {
|
||||||
|
'pkg': ['shellcheck', 'vim-nox', 'fd-find', 'ruby-mdl'],
|
||||||
|
},
|
||||||
|
'RedHat': {
|
||||||
|
'pkg': ['ShellCheck', 'vim-enhanced', 'fd-find', 'passwd'],
|
||||||
|
},
|
||||||
|
}.get(grains.os_family) -%}
|
||||||
|
|
||||||
|
"{{ slsdotpath }}-installed-os-specific-common":
|
||||||
|
pkg.installed:
|
||||||
|
- require:
|
||||||
|
- sls: utils.tools.common.update
|
||||||
|
- install_recommends: False
|
||||||
|
- skip_suggestions: True
|
||||||
|
- setopt: "install_weak_deps=False"
|
||||||
|
- pkgs: {{ pkg.pkg|sequence|yaml }}
|
||||||
|
|
||||||
|
{% endif -%}
|
10
salt/dev/install-common.top
Normal file
10
salt/dev/install-common.top
Normal file
|
@ -0,0 +1,10 @@
|
||||||
|
{#
|
||||||
|
SPDX-FileCopyrightText: 2023 - 2025 Benjamin Grande M. S. <ben.grande.b@gmail.com>
|
||||||
|
|
||||||
|
SPDX-License-Identifier: AGPL-3.0-or-later
|
||||||
|
#}
|
||||||
|
|
||||||
|
base:
|
||||||
|
'tpl-dev':
|
||||||
|
- match: list
|
||||||
|
- dev.install-common
|
45
salt/dev/install-qusal.sls
Normal file
45
salt/dev/install-qusal.sls
Normal file
|
@ -0,0 +1,45 @@
|
||||||
|
{#
|
||||||
|
SPDX-FileCopyrightText: 2023 - 2025 Benjamin Grande M. S. <ben.grande.b@gmail.com>
|
||||||
|
|
||||||
|
SPDX-License-Identifier: AGPL-3.0-or-later
|
||||||
|
#}
|
||||||
|
|
||||||
|
{% if grains['nodename'] != 'dom0' -%}
|
||||||
|
|
||||||
|
include:
|
||||||
|
- dev.install-common
|
||||||
|
- dev.install-python
|
||||||
|
|
||||||
|
"{{ slsdotpath }}-installed-qusal":
|
||||||
|
pkg.installed:
|
||||||
|
- require:
|
||||||
|
- sls: utils.tools.common.update
|
||||||
|
- install_recommends: False
|
||||||
|
- skip_suggestions: True
|
||||||
|
- setopt: "install_weak_deps=False"
|
||||||
|
- pkgs:
|
||||||
|
- yamllint
|
||||||
|
- codespell
|
||||||
|
- pre-commit
|
||||||
|
- reuse
|
||||||
|
|
||||||
|
## Debian doesn't have: salt-lint
|
||||||
|
{% set pkg = {
|
||||||
|
'Debian': {
|
||||||
|
'pkg': [],
|
||||||
|
},
|
||||||
|
'RedHat': {
|
||||||
|
'pkg': ['salt-lint'],
|
||||||
|
},
|
||||||
|
}.get(grains.os_family) -%}
|
||||||
|
|
||||||
|
"{{ slsdotpath }}-installed-os-specific-qusal":
|
||||||
|
pkg.installed:
|
||||||
|
- require:
|
||||||
|
- sls: utils.tools.common.update
|
||||||
|
- install_recommends: False
|
||||||
|
- skip_suggestions: True
|
||||||
|
- setopt: "install_weak_deps=False"
|
||||||
|
- pkgs: {{ pkg.pkg|sequence|yaml }}
|
||||||
|
|
||||||
|
{% endif -%}
|
10
salt/dev/install-qusal.top
Normal file
10
salt/dev/install-qusal.top
Normal file
|
@ -0,0 +1,10 @@
|
||||||
|
{#
|
||||||
|
SPDX-FileCopyrightText: 2025 Benjamin Grande M. S. <ben.grande.b@gmail.com>
|
||||||
|
|
||||||
|
SPDX-License-Identifier: AGPL-3.0-or-later
|
||||||
|
#}
|
||||||
|
|
||||||
|
base:
|
||||||
|
'tpl-dev':
|
||||||
|
- match: list
|
||||||
|
- dev.install-qusal
|
|
@ -1,5 +1,5 @@
|
||||||
{#
|
{#
|
||||||
SPDX-FileCopyrightText: 2023 - 2024 Benjamin Grande M. S. <ben.grande.b@gmail.com>
|
SPDX-FileCopyrightText: 2023 - 2025 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
|
||||||
#}
|
#}
|
||||||
|
@ -7,66 +7,6 @@ SPDX-License-Identifier: AGPL-3.0-or-later
|
||||||
{% if grains['nodename'] != 'dom0' -%}
|
{% if grains['nodename'] != 'dom0' -%}
|
||||||
|
|
||||||
include:
|
include:
|
||||||
- utils.tools.common.update
|
- dev.install-qusal
|
||||||
- {{ slsdotpath }}.home-cleanup
|
|
||||||
- dotfiles.copy-all
|
|
||||||
- utils.tools.zsh
|
|
||||||
- sys-pgp.install-client
|
|
||||||
- sys-git.install-client
|
|
||||||
- sys-ssh-agent.install-client
|
|
||||||
|
|
||||||
"{{ slsdotpath }}-installed":
|
|
||||||
pkg.installed:
|
|
||||||
- require:
|
|
||||||
- sls: utils.tools.common.update
|
|
||||||
- install_recommends: False
|
|
||||||
- skip_suggestions: True
|
|
||||||
- setopt: "install_weak_deps=False"
|
|
||||||
- pkgs:
|
|
||||||
## Necessary
|
|
||||||
- qubes-core-agent-passwordless-root
|
|
||||||
- ca-certificates
|
|
||||||
## Usability
|
|
||||||
- tmux
|
|
||||||
- xclip
|
|
||||||
- bash-completion
|
|
||||||
## Reading documentation
|
|
||||||
- man-db
|
|
||||||
- info
|
|
||||||
- texinfo
|
|
||||||
## Searching files
|
|
||||||
- file
|
|
||||||
- tree
|
|
||||||
- ripgrep
|
|
||||||
- fzf
|
|
||||||
## Lint
|
|
||||||
- pre-commit
|
|
||||||
- precious
|
|
||||||
- reuse
|
|
||||||
- gitlint
|
|
||||||
- pylint
|
|
||||||
- yamllint
|
|
||||||
- ruby-mdl
|
|
||||||
- codespell
|
|
||||||
|
|
||||||
## Fedora doesn't have: ruby-mdl (markdownlint, mdl)
|
|
||||||
## Debian doesn't have: salt-lint
|
|
||||||
{% set pkg = {
|
|
||||||
'Debian': {
|
|
||||||
'pkg': ['shellcheck', 'vim-nox', 'fd-find'],
|
|
||||||
},
|
|
||||||
'RedHat': {
|
|
||||||
'pkg': ['ShellCheck', 'vim-enhanced', 'fd-find', 'salt-lint', 'passwd'],
|
|
||||||
},
|
|
||||||
}.get(grains.os_family) -%}
|
|
||||||
|
|
||||||
"{{ slsdotpath }}-installed-os-specific":
|
|
||||||
pkg.installed:
|
|
||||||
- require:
|
|
||||||
- sls: utils.tools.common.update
|
|
||||||
- install_recommends: False
|
|
||||||
- skip_suggestions: True
|
|
||||||
- setopt: "install_weak_deps=False"
|
|
||||||
- pkgs: {{ pkg.pkg|sequence|yaml }}
|
|
||||||
|
|
||||||
{% endif -%}
|
{% endif -%}
|
||||||
|
|
83
salt/qubes-dev/README.md
Normal file
83
salt/qubes-dev/README.md
Normal file
|
@ -0,0 +1,83 @@
|
||||||
|
# qubes-dev
|
||||||
|
|
||||||
|
Development environment for Qubes OS.
|
||||||
|
|
||||||
|
## Table of Contents
|
||||||
|
|
||||||
|
* [Description](#description)
|
||||||
|
* [Installation](#installation)
|
||||||
|
* [Access Control](#access-control)
|
||||||
|
* [Usage](#usage)
|
||||||
|
|
||||||
|
## Description
|
||||||
|
|
||||||
|
Setup a development qube named "qubes-dev", dedicated to contributing to Qubes
|
||||||
|
OS repositories. As there there is a very broad set of repositories, only
|
||||||
|
common packages will be installed. The qube has netvm but can reach remote
|
||||||
|
servers if the policy allows.
|
||||||
|
|
||||||
|
## Installation
|
||||||
|
|
||||||
|
* Top:
|
||||||
|
|
||||||
|
```sh
|
||||||
|
sudo qubesctl top.enable qubes-dev
|
||||||
|
sudo qubesctl --targets=tpl-qubes-dev,dvm-qubes-dev,qubes-dev state.apply
|
||||||
|
sudo qubesctl top.disable qubes-dev
|
||||||
|
proxy_target="$(qusal-report-updatevm-origin)"
|
||||||
|
if test -n "${proxy_target}"; then
|
||||||
|
sudo qubesctl --skip-dom0 --targets="${proxy_target}" state.apply sys-net.install-proxy
|
||||||
|
fi
|
||||||
|
```
|
||||||
|
|
||||||
|
* State:
|
||||||
|
|
||||||
|
<!-- pkg:begin:post-install -->
|
||||||
|
|
||||||
|
```sh
|
||||||
|
sudo qubesctl state.apply qubes-dev.create
|
||||||
|
sudo qubesctl --skip-dom0 --targets=tpl-qubes-dev state.apply qubes-dev.install
|
||||||
|
sudo qubesctl --skip-dom0 --targets=dvm-qubes-dev state.apply qubes-dev.configure-dvm
|
||||||
|
sudo qubesctl --skip-dom0 --targets=qubes-dev state.apply qubes-dev.configure
|
||||||
|
proxy_target="$(qusal-report-updatevm-origin)"
|
||||||
|
if test -n "${proxy_target}"; then
|
||||||
|
sudo qubesctl --skip-dom0 --targets="${proxy_target}" state.apply sys-net.install-proxy
|
||||||
|
fi
|
||||||
|
```
|
||||||
|
|
||||||
|
<!-- pkg:end:post-install -->
|
||||||
|
|
||||||
|
The installation will make the Qusal TCP Proxy available in the `updatevm`
|
||||||
|
(after it is restarted in case it is template based). If you want to have the
|
||||||
|
proxy available on a `netvm` that is not deployed by Qusal, install the Qusal
|
||||||
|
TCP proxy on the templates of your `netvm`:
|
||||||
|
|
||||||
|
```sh
|
||||||
|
sudo qubesctl --skip-dom0 --targets=TEMPLATE state.apply sys-net.install-proxy
|
||||||
|
```
|
||||||
|
|
||||||
|
Remember to restart the `netvms` after the proxy installation for the changes
|
||||||
|
to take effect.
|
||||||
|
|
||||||
|
## Access Control
|
||||||
|
|
||||||
|
_Default policy_: `denies` `all` qubes from calling `qusal.ConnectTCP`
|
||||||
|
|
||||||
|
Allow qube `qubes-dev` to `connect` to `github.com:22` via `disp-sys-net` but
|
||||||
|
not to any other host or via any other qube:
|
||||||
|
|
||||||
|
```qrexecpolicy
|
||||||
|
qusal.ConnectTCP +github.com+22 qubes-dev @default allow target=disp-sys-net
|
||||||
|
qusal.ConnectTCP * qubes-dev @anyvm deny
|
||||||
|
```
|
||||||
|
|
||||||
|
## Usage
|
||||||
|
|
||||||
|
The development qube `qubes-dev` can be used for:
|
||||||
|
|
||||||
|
* everything the [dev](../dev/README.md) qube can do;
|
||||||
|
* contributing to Qubes OS
|
||||||
|
|
||||||
|
As the `qubes-dev` qube has no netvm, configure the Qrexec policy to allow or
|
||||||
|
ask calls to the `qusal.ConnectTCP` RPC service, so the qube can communicate
|
||||||
|
with a remote repository for example.
|
8
salt/qubes-dev/clone.sls
Normal file
8
salt/qubes-dev/clone.sls
Normal file
|
@ -0,0 +1,8 @@
|
||||||
|
{#
|
||||||
|
SPDX-FileCopyrightText: 2023 - 2025 Benjamin Grande M. S. <ben.grande.b@gmail.com>
|
||||||
|
|
||||||
|
SPDX-License-Identifier: AGPL-3.0-or-later
|
||||||
|
#}
|
||||||
|
|
||||||
|
{% from 'utils/macros/clone-template.sls' import clone_template -%}
|
||||||
|
{{ clone_template('fedora-minimal', sls_path) }}
|
10
salt/qubes-dev/clone.top
Normal file
10
salt/qubes-dev/clone.top
Normal file
|
@ -0,0 +1,10 @@
|
||||||
|
{#
|
||||||
|
SPDX-FileCopyrightText: 2023 - 2025 Benjamin Grande M. S. <ben.grande.b@gmail.com>
|
||||||
|
|
||||||
|
SPDX-License-Identifier: AGPL-3.0-or-later
|
||||||
|
#}
|
||||||
|
|
||||||
|
base:
|
||||||
|
'dom0':
|
||||||
|
- match: nodegroup
|
||||||
|
- qubes-dev.clone
|
12
salt/qubes-dev/configure-dvm.sls
Normal file
12
salt/qubes-dev/configure-dvm.sls
Normal file
|
@ -0,0 +1,12 @@
|
||||||
|
{#
|
||||||
|
SPDX-FileCopyrightText: 2023 - 2025 Benjamin Grande M. S. <ben.grande.b@gmail.com>
|
||||||
|
|
||||||
|
SPDX-License-Identifier: AGPL-3.0-or-later
|
||||||
|
#}
|
||||||
|
|
||||||
|
{% if grains['nodename'] != 'dom0' -%}
|
||||||
|
|
||||||
|
include:
|
||||||
|
- utils.tools.zsh.touch-zshrc
|
||||||
|
|
||||||
|
{% endif -%}
|
10
salt/qubes-dev/configure-dvm.top
Normal file
10
salt/qubes-dev/configure-dvm.top
Normal file
|
@ -0,0 +1,10 @@
|
||||||
|
{#
|
||||||
|
SPDX-FileCopyrightText: 2023 - 2025 Benjamin Grande M. S. <ben.grande.b@gmail.com>
|
||||||
|
|
||||||
|
SPDX-License-Identifier: AGPL-3.0-or-later
|
||||||
|
#}
|
||||||
|
|
||||||
|
base:
|
||||||
|
'*':
|
||||||
|
- match: nodegroup
|
||||||
|
- qubes-dev.configure-dvm
|
13
salt/qubes-dev/configure.sls
Normal file
13
salt/qubes-dev/configure.sls
Normal file
|
@ -0,0 +1,13 @@
|
||||||
|
{#
|
||||||
|
SPDX-FileCopyrightText: 2023 - 2025 Benjamin Grande M. S. <ben.grande.b@gmail.com>
|
||||||
|
|
||||||
|
SPDX-License-Identifier: AGPL-3.0-or-later
|
||||||
|
#}
|
||||||
|
|
||||||
|
{% if grains['nodename'] != 'dom0' -%}
|
||||||
|
|
||||||
|
include:
|
||||||
|
- {{ slsdotpath }}.home-cleanup
|
||||||
|
- dotfiles.copy-all
|
||||||
|
|
||||||
|
{% endif -%}
|
10
salt/qubes-dev/configure.top
Normal file
10
salt/qubes-dev/configure.top
Normal file
|
@ -0,0 +1,10 @@
|
||||||
|
{#
|
||||||
|
SPDX-FileCopyrightText: 2023 - 2025 Benjamin Grande M. S. <ben.grande.b@gmail.com>
|
||||||
|
|
||||||
|
SPDX-License-Identifier: AGPL-3.0-or-later
|
||||||
|
#}
|
||||||
|
|
||||||
|
base:
|
||||||
|
'*':
|
||||||
|
- match: nodegroup
|
||||||
|
- qubes-dev.configure
|
103
salt/qubes-dev/create.sls
Normal file
103
salt/qubes-dev/create.sls
Normal file
|
@ -0,0 +1,103 @@
|
||||||
|
{#
|
||||||
|
SPDX-FileCopyrightText: 2023 - 2025 Benjamin Grande M. S. <ben.grande.b@gmail.com>
|
||||||
|
|
||||||
|
SPDX-License-Identifier: AGPL-3.0-or-later
|
||||||
|
#}
|
||||||
|
|
||||||
|
{%- from "qvm/template.jinja" import load -%}
|
||||||
|
|
||||||
|
include:
|
||||||
|
- {{ slsdotpath }}.clone
|
||||||
|
- sys-net.show-updatevm-origin
|
||||||
|
|
||||||
|
{% load_yaml as defaults -%}
|
||||||
|
name: tpl-{{ slsdotpath }}
|
||||||
|
force: True
|
||||||
|
require:
|
||||||
|
- sls: {{ slsdotpath }}.clone
|
||||||
|
prefs:
|
||||||
|
- audiovm: ""
|
||||||
|
{%- endload %}
|
||||||
|
{{ load(defaults) }}
|
||||||
|
|
||||||
|
{% load_yaml as defaults -%}
|
||||||
|
name: {{ slsdotpath }}
|
||||||
|
force: True
|
||||||
|
require:
|
||||||
|
- sls: {{ slsdotpath }}.clone
|
||||||
|
present:
|
||||||
|
- template: tpl-{{ slsdotpath }}
|
||||||
|
- label: purple
|
||||||
|
prefs:
|
||||||
|
- template: tpl-{{ slsdotpath }}
|
||||||
|
- label: purple
|
||||||
|
- netvm: ""
|
||||||
|
- audiovm: ""
|
||||||
|
- vcpus: 1
|
||||||
|
- memory: 400
|
||||||
|
- maxmem: 600
|
||||||
|
- autostart: False
|
||||||
|
- include_in_backups: True
|
||||||
|
features:
|
||||||
|
- enable:
|
||||||
|
- service.split-gpg2-client
|
||||||
|
- service.qusal-proxy-client
|
||||||
|
- service.crond
|
||||||
|
- disable:
|
||||||
|
- service.cups
|
||||||
|
- service.cups-browsed
|
||||||
|
{%- endload %}
|
||||||
|
{{ load(defaults) }}
|
||||||
|
|
||||||
|
{% load_yaml as defaults -%}
|
||||||
|
name: dvm-{{ slsdotpath }}
|
||||||
|
force: True
|
||||||
|
require:
|
||||||
|
- sls: {{ slsdotpath }}.clone
|
||||||
|
present:
|
||||||
|
- template: tpl-{{ slsdotpath }}
|
||||||
|
- label: red
|
||||||
|
prefs:
|
||||||
|
- template: tpl-{{ slsdotpath }}
|
||||||
|
- label: red
|
||||||
|
- audiovm: ""
|
||||||
|
- vcpus: 1
|
||||||
|
- memory: 400
|
||||||
|
- maxmem: 600
|
||||||
|
- autostart: False
|
||||||
|
- template_for_dispvms: True
|
||||||
|
- include_in_backups: False
|
||||||
|
features:
|
||||||
|
- enable:
|
||||||
|
- appmenus-dispvm
|
||||||
|
- disable:
|
||||||
|
- service.cups
|
||||||
|
- service.cups-browsed
|
||||||
|
{%- endload %}
|
||||||
|
{{ load(defaults) }}
|
||||||
|
|
||||||
|
{% load_yaml as defaults -%}
|
||||||
|
name: disp-{{ slsdotpath }}
|
||||||
|
force: True
|
||||||
|
require:
|
||||||
|
- qvm: dvm-{{ slsdotpath }}
|
||||||
|
present:
|
||||||
|
- template: dvm-{{ slsdotpath }}
|
||||||
|
- label: red
|
||||||
|
- class: DispVM
|
||||||
|
prefs:
|
||||||
|
- template: dvm-{{ slsdotpath }}
|
||||||
|
- label: red
|
||||||
|
- audiovm: ""
|
||||||
|
- vcpus: 1
|
||||||
|
- memory: 400
|
||||||
|
- maxmem: 600
|
||||||
|
- autostart: False
|
||||||
|
- include_in_backups: False
|
||||||
|
features:
|
||||||
|
- disable:
|
||||||
|
- appmenus-dispvm
|
||||||
|
- service.cups
|
||||||
|
- service.cups-browsed
|
||||||
|
{%- endload %}
|
||||||
|
{{ load(defaults) }}
|
10
salt/qubes-dev/create.top
Normal file
10
salt/qubes-dev/create.top
Normal file
|
@ -0,0 +1,10 @@
|
||||||
|
{#
|
||||||
|
SPDX-FileCopyrightText: 2023 - 2025 Benjamin Grande M. S. <ben.grande.b@gmail.com>
|
||||||
|
|
||||||
|
SPDX-License-Identifier: AGPL-3.0-or-later
|
||||||
|
#}
|
||||||
|
|
||||||
|
base:
|
||||||
|
'dom0':
|
||||||
|
- match: nodegroup
|
||||||
|
- qubes-dev.create
|
19
salt/qubes-dev/init.top
Normal file
19
salt/qubes-dev/init.top
Normal file
|
@ -0,0 +1,19 @@
|
||||||
|
{#
|
||||||
|
SPDX-FileCopyrightText: 2023 - 2025 Benjamin Grande M. S. <ben.grande.b@gmail.com>
|
||||||
|
|
||||||
|
SPDX-License-Identifier: AGPL-3.0-or-later
|
||||||
|
#}
|
||||||
|
|
||||||
|
base:
|
||||||
|
'dom0':
|
||||||
|
- match: nodegroup
|
||||||
|
- qubes-dev.create
|
||||||
|
'tpl-qubes-dev':
|
||||||
|
- qubes-dev.install
|
||||||
|
'dvm-qubes-dev':
|
||||||
|
- qubes-dev.configure-dvm
|
||||||
|
'qubes-dev':
|
||||||
|
- qubes-dev.configure
|
||||||
|
'(I@qubes:type:template or I@qubes:type:standalone) and (G@kernel:Linux or G@kernel:*BSD)':
|
||||||
|
- match: compound
|
||||||
|
- sys-net.install-proxy
|
25
salt/qubes-dev/install.sls
Normal file
25
salt/qubes-dev/install.sls
Normal file
|
@ -0,0 +1,25 @@
|
||||||
|
{#
|
||||||
|
SPDX-FileCopyrightText: 2023 - 2025 Benjamin Grande M. S. <ben.grande.b@gmail.com>
|
||||||
|
|
||||||
|
SPDX-License-Identifier: AGPL-3.0-or-later
|
||||||
|
#}
|
||||||
|
|
||||||
|
{% if grains['nodename'] != 'dom0' -%}
|
||||||
|
|
||||||
|
include:
|
||||||
|
- dev.install-common
|
||||||
|
- dev.install-python
|
||||||
|
|
||||||
|
"{{ slsdotpath }}-installed":
|
||||||
|
pkg.installed:
|
||||||
|
- require:
|
||||||
|
- sls: utils.tools.common.update
|
||||||
|
- install_recommends: False
|
||||||
|
- skip_suggestions: True
|
||||||
|
- setopt: "install_weak_deps=False"
|
||||||
|
- pkgs:
|
||||||
|
- glade
|
||||||
|
- qt6-designer
|
||||||
|
# TODO: reboot vm and test missing packages on tests
|
||||||
|
|
||||||
|
{% endif -%}
|
10
salt/qubes-dev/install.top
Normal file
10
salt/qubes-dev/install.top
Normal file
|
@ -0,0 +1,10 @@
|
||||||
|
{#
|
||||||
|
SPDX-FileCopyrightText: 2025 Benjamin Grande M. S. <ben.grande.b@gmail.com>
|
||||||
|
|
||||||
|
SPDX-License-Identifier: AGPL-3.0-or-later
|
||||||
|
#}
|
||||||
|
|
||||||
|
base:
|
||||||
|
'tpl-qubes-dev':
|
||||||
|
- match: list
|
||||||
|
- qubes-dev.install
|
1
salt/qubes-dev/version
Normal file
1
salt/qubes-dev/version
Normal file
|
@ -0,0 +1 @@
|
||||||
|
0.0.1
|
Loading…
Add table
Add a link
Reference in a new issue