Skip to content

Commit

Permalink
feat: fetcher
Browse files Browse the repository at this point in the history
  • Loading branch information
ben-grande committed Dec 18, 2023
1 parent 45dd1b7 commit c03f183
Show file tree
Hide file tree
Showing 10 changed files with 189 additions and 0 deletions.
43 changes: 43 additions & 0 deletions salt/fetcher/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
# fetcher

Fetch publicly accessible files over the internet in Qubes OS.

## Table of Contents

* [Description](#description)
* [Installation](#installation)
* [Usage](#usage)

## Description

A Template for DispVMs will be created and named "dvm-fetcher", from this qube
you will create others that can connect to the internet to download files. You
will be able to download from any protocol as long as the installed tools,
`curl`, `wget`, `git`, `rsync`, accept them.

## Installation

- Top:
```sh
qubesctl top.enable fetcher
qubesctl --targets=tpl-fetcher,dvm-fetcher state.apply
qubesctl top.disable fetcher
```

- State:
<!-- pkg:begin:post-install -->
```sh
qubesctl state.apply fetcher.create
qubesctl --skip-dom0 --targets=tpl-fetcher state.apply fetcher.install
qubesctl --skip-dom0 --targets=dvm-fetcher state.apply fetcher.configure-dvm
```
<!-- pkg:end:post-install -->

## Usage

You will base qubes from the Template for DispVMs `dvm-fetcher` to download
files over the internet using popular command-line tools such as `git`,
`curl`, `wget`, `rsync`.

You can use disposables based from `dvm-fetcher` to clone repositories,
download PGP signatures, Operating System ISOs etc.
8 changes: 8 additions & 0 deletions salt/fetcher/clone.sls
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
{#
SPDX-FileCopyrightText: 2023 Benjamin Grande M. S. <[email protected]>

SPDX-License-Identifier: AGPL-3.0-or-later
#}

{% from 'utils/macros/clone-template.sls' import clone_template -%}
{{ clone_template('debian-minimal', sls_path) }}
10 changes: 10 additions & 0 deletions salt/fetcher/clone.top
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
{#
SPDX-FileCopyrightText: 2023 Benjamin Grande M. S. <[email protected]>

SPDX-License-Identifier: AGPL-3.0-or-later
#}

base:
'dom0':
- match: nodegroup
- fetcher.clone
12 changes: 12 additions & 0 deletions salt/fetcher/configure-dvm.sls
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
{#
SPDX-FileCopyrightText: 2023 Benjamin Grande M. S. <[email protected]>

SPDX-License-Identifier: AGPL-3.0-or-later
#}

{% if grains['nodename'] != 'dom0' -%}

include:
- dev.home-cleanup

{% endif -%}
10 changes: 10 additions & 0 deletions salt/fetcher/configure-dvm.top
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
{#
SPDX-FileCopyrightText: 2023 Benjamin Grande M. S. <[email protected]>

SPDX-License-Identifier: AGPL-3.0-or-later
#}

base:
'*':
- match: nodegroup
- fetcher.configure-dvm
42 changes: 42 additions & 0 deletions salt/fetcher/create.sls
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
{#
SPDX-FileCopyrightText: 2023 Benjamin Grande M. S. <[email protected]>

SPDX-License-Identifier: AGPL-3.0-or-later
#}

{%- from "qvm/template.jinja" import load -%}
include:
- .clone
{% 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
- memory: 300
- maxmem: 500
- vcpus: 1
- autostart: False
- template_for_dispvms: True
- include_in_backups: False
features:
- enable:
- appmenus-dispvm
- disable:
- service.cups
- service.cups-browsed
{%- endload %}
{{ load(defaults) }}
"{{ slsdotpath }}-resize-private-volume":
cmd.run:
- require:
- qvm: dvm-{{ slsdotpath }}
- name: qvm-volume extend dvm-{{ slsdotpath }}:private 15Gi
10 changes: 10 additions & 0 deletions salt/fetcher/create.top
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
{#
SPDX-FileCopyrightText: 2023 Benjamin Grande M. S. <[email protected]>

SPDX-License-Identifier: AGPL-3.0-or-later
#}

base:
'dom0':
- match: nodegroup
- fetcher.create
14 changes: 14 additions & 0 deletions salt/fetcher/init.top
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
{#
SPDX-FileCopyrightText: 2023 Benjamin Grande M. S. <[email protected]>

SPDX-License-Identifier: AGPL-3.0-or-later
#}

base:
'dom0':
- match: nodegroup
- fetcher.create
'tpl-fetcher':
- fetcher.install
'dvm-fetcher':
- fetcher.configure-dvm
31 changes: 31 additions & 0 deletions salt/fetcher/install.sls
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
{#
SPDX-FileCopyrightText: 2023 Benjamin Grande M. S. <[email protected]>

SPDX-License-Identifier: AGPL-3.0-or-later
#}

{% if grains['nodename'] != 'dom0' -%}

include:
- dotfiles.copy-sh
- dotfiles.copy-x11
- sys-pgp.install-client

"{{ slsdotpath }}-updated":
pkg.uptodate:
- refresh: True

"{{ slsdotpath }}-installed":
pkg.installed:
- refresh: True
- install_recommends: False
- skip_suggestions: True
- pkgs:
- qubes-core-agent-networking
- ca-certificates
- curl
- wget
- git
- rsync

{% endif -%}
9 changes: 9 additions & 0 deletions salt/fetcher/install.top
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
{#
SPDX-FileCopyrightText: 2023 Benjamin Grande M. S. <[email protected]>

SPDX-License-Identifier: AGPL-3.0-or-later
#}

base:
'tpl-fetcher':
- fetcher.install

0 comments on commit c03f183

Please sign in to comment.