--- /dev/null
+{% if grains['id'] == 'dom0' %}
+
+dev-cursor--create-qube:
+ qvm.vm:
+ - name: q-dev-cursor
+ - present:
+ - template: template-dev-cursor
+ - label: orange
+ - prefs:
+ - label: orange
+ - netvm: sys-vpn-mullvad
+ - features:
+ - set:
+ - menu-items: cursor.desktop xterm.desktop
+ - service:
+ - enable:
+ - shutdown-idle
+ - require:
+ - qvm: dev-cursor--create-template
+
+{% endif %}
--- /dev/null
+{% import "templates/versions.jinja" as version %}
+
+include:
+ - templates.templates--install-fedora-minimal
+
+{% if grains['id'] == 'dom0' %}
+
+dev-cursor--create-template:
+ qvm.clone:
+ - name: template-dev-cursor
+ - source: fedora-{{ version.fedora }}-minimal
+ - class: TemplateVM
+ - require:
+ - qvm: templates--install-fedora-{{ version.fedora }}-minimal
+
+dev-cursor--template-prefs:
+ qvm.prefs:
+ - name: template-dev-cursor
+ - label: orange
+ - audiovm:
+ - guivm:
+ - netvm:
+ - require:
+ - qvm: dev-cursor--create-template
+
+{% endif %}
--- /dev/null
+{% if grains['id'] == 'dom0' %}
+
+dev-cursor--firewall:
+ cmd.run:
+ - name: |
+ qvm-firewall q-dev-cursor reset
+ qvm-firewall q-dev-cursor del accept
+ qvm-firewall q-dev-cursor add accept specialtarget=dns
+ qvm-firewall q-dev-cursor add accept proto=icmp
+ qvm-firewall q-dev-cursor add accept api2.cursor.sh proto=tcp
+ qvm-firewall q-dev-cursor add accept api3.cursor.sh proto=tcp
+ qvm-firewall q-dev-cursor add accept repo42.cursor.sh proto=tcp
+ qvm-firewall q-dev-cursor add accept api4.cursor.sh proto=tcp
+ qvm-firewall q-dev-cursor add accept cursor-cdn.com proto=tcp
+ qvm-firewall q-dev-cursor add accept github.com proto=tcp
+ qvm-firewall q-dev-cursor add accept git.andreasglashauser.com proto=tcp
+ #qvm-firewall q-dev-cursor add accept downloads.cursor.com proto=tcp
+ #qvm-firewall q-dev-cursor add accept objects.githubusercontent.com proto=tcp
+ qvm-firewall q-dev-cursor add drop
+
+ - unless: |
+ CURRENT=$(qvm-firewall --raw q-dev-cursor list)
+ DESIRED=$(echo -e 'action=accept specialtarget=dns
+ action=accept proto=icmp
+ action=accept proto=tcp dsthost=api2.cursor.sh
+ action=accept proto=tcp dsthost=api3.cursor.sh
+ action=accept proto=tcp dsthost=repo42.cursor.sh
+ action=accept proto=tcp dsthost=api4.cursor.sh
+ action=accept proto=tcp dsthost=cursor-cdn.com
+ action=accept proto=tcp dsthost=github.com
+ action=accept proto=tcp dsthost=git.andreasglashauser.com
+ action=drop')
+ [ "$CURRENT" = "$DESIRED" ]
+ - require:
+ - qvm: dev-cursor--create-qube
+
+ #action=accept proto=tcp dsthost=downloads.cursor.com
+ #action=accept proto=tcp dsthost=objects.githubusercontent.com
+
+{% endif %}
--- /dev/null
+{% if grains['id'] == 'dom0' %}
+
+dev-cursor--firewall:
+ cmd.run:
+ - name: |
+ qvm-firewall q-dev-cursor reset
+ qvm-firewall q-dev-cursor del accept
+ qvm-firewall q-dev-cursor add accept specialtarget=dns
+ qvm-firewall q-dev-cursor add accept proto=icmp
+ qvm-firewall q-dev-cursor add accept api2.cursor.sh
+ qvm-firewall q-dev-cursor add accept api3.cursor.sh
+ qvm-firewall q-dev-cursor add accept repo42.cursor.sh
+ qvm-firewall q-dev-cursor add accept api4.cursor.sh
+ qvm-firewall q-dev-cursor add accept marketplace.cursorapi.com
+ qvm-firewall q-dev-cursor add accept cursor-cdn.com
+ qvm-firewall q-dev-cursor add accept downloads.cursor.com
+ qvm-firewall q-dev-cursor add accept vscodevim.gallerycdn.vsassets.io
+ qvm-firewall q-dev-cursor add accept vscodevim.gallerycdn.vsassets.io
+ qvm-firewall q-dev-cursor add accept www.vscode-unpkg.net
+ qvm-firewall q-dev-cursor add accept repo42.cursor.sh.cdn.cloudflare.net
+ qvm-firewall q-dev-cursor add accept cursor-lb-3-1690831134.us-east-1.elb.amazonaws.com
+ qvm-firewall q-dev-cursor add accept market-prod-cdn.trafficmanager.net
+ qvm-firewall q-dev-cursor add accept raw.githubusercontent.com
+ qvm-firewall q-dev-cursor add accept main.vscode-cdn.net
+ qvm-firewall q-dev-cursor add drop
+ - require:
+ - qvm: dev-cursor--create-qube
+
+{% endif %}
--- /dev/null
+{% if grains['id'] == 'template-dev-cursor' %}
+
+dev-cursor--install-packages:
+ pkg.installed:
+ - refresh: True
+ - pkgs:
+ - qubes-core-agent-networking
+ - qubes-app-shutdown-idle
+ - git
+ - git-delta
+ - python3-virtualenvwrapper
+ - tree
+ - fuse-libs
+
+{% endif %}
--- /dev/null
+{% set cursor_version = '0.47.9' %}
+{% set vscode_vim_version = '1.29.0' %}
+
+
+{% if grains['id'] == 'q-dev-cursor' %}
+
+dev-cursor--install-cursor:
+ cmd.run:
+ - name: curl --tlsv1.3 -LO --output-dir "/home/user/" "https://downloads.cursor.com/production/b6fb41b5f36bda05cab7109606e7404a65d1ff32/linux/x64/Cursor-{{ cursor_version }}-x86_64.AppImage"
+ - runas: user
+ - unless: test -f /home/user/Cursor-{{ cursor_version }}-x86_64.AppImage
+
+dev-cursor--appimage-executable:
+ cmd.run:
+ - name: chmod +x /home/user/Cursor-{{ cursor_version }}-x86_64.AppImage
+ - runas: user
+ - unless: test -x /home/user/Cursor-{{ cursor_version }}-x86_64.AppImage
+ - require:
+ - cmd: dev-cursor--install-cursor
+
+dev-cursor--install-cursor-extension-directory:
+ file.directory:
+ - name: /home/user/cursor-extensions
+ - user: user
+ - group: user
+ - mode: 755
+ - makedirs: True
+
+dev-cursor--install-cursor-extension-vim:
+ cmd.run:
+ - name: curl --tlsv1.3 -LO --output-dir "/home/user/cursor-extensions" "https://github.com/VSCodeVim/Vim/releases/download/v{{ vscode_vim_version }}/vim-{{ vscode_vim_version }}.vsix"
+ - runas: user
+ - unless: test -f /home/user/cursor-extensions/vim-{{ vscode_vim_version }}.vsix
+ - require:
+ - file: dev-cursor--install-cursor-extension-directory
+
+{% elif grains['id'] == 'template-dev-cursor' %}
+
+dev-cursor--create-desktop-entry:
+ file.managed:
+ - name: /usr/share/applications/cursor.desktop
+ - contents: |
+ [Desktop Entry]
+ Name=Cursor
+ Exec=/home/user/Cursor-{{ cursor_version }}-x86_64.AppImage
+ Icon=cursor
+ Terminal=false
+ Type=Application
+ Categories=Development
+ - mode: 644
+
+{% endif %}
--- /dev/null
+include:
+ - dev-cursor.dev-cursor--create-template
+ - dev-cursor.dev-cursor--install-packages
+ - dev-cursor.dev-cursor--create-qube
+ - dev-cursor.dev-cursor--firewall
+ - dev-cursor.dev-cursor--install-qube-packages