rpm-ostree override remove gnome-tour firefox firefox-langpacksrpm-ostree install bat difftastic dnf fzf htop ibm-plex-mono-fonts ripgrep tmux vimThis guide walks you through creating a high-performance Windows 11 virtual machine (VM) on Fedora Silverblue using GPU passthrough technology. This setup allows you to run Windows applications that require dedicated graphics performance while keeping your primary system secure with Fedora Silverblue.
GPU passthrough allows your virtual machine to use your dedicated graphics card directly, providing near-native gaming and graphics performance in Windows while running on Linux. This is different from typical virtualization where graphics performance is limited.
Key terms you'll encounter:
| set -euo pipefail | |
| a_week_ago=$(date --utc --date "7 days ago" +%Y-%m-%dT%H:%M:%S%z) | |
| runs=$(gh run list --limit 1000 --json createdAt,databaseId --jq ".[] | select(.createdAt < \"$a_week_ago\") | .databaseId") | |
| for run in "$runs"; do gh run delete "$run"; done |
This guide is for homelab admins who understand IPv4s well but find setting up IPv6 hard or annoying because things work differently. In some ways, managing an IPv6 network can be simpler than IPv4, one just needs to learn some new concepts and discard some old ones.
Let’s begin.
First of all, there are some concepts that one must unlearn from ipv4:
Concept 1
Based on the excellent Solarized (Dark) created by Ethan Schoonover. For source code, check the main Solarized repository on GitHub.
Open and save Solarized Dark.terminal.
Import from the “Profiles” tab in the settings of Terminal.app or just double-click the file after downloading.
| // Place your key bindings in this file to overwrite the defaults | |
| [ | |
| { | |
| "key": "ctrl+shift+k", | |
| "command": "editor.action.deleteLines", | |
| "when": "editorTextFocus && !editorReadonly" | |
| }, | |
| { | |
| "key": "shift+cmd+k", | |
| "command": "-editor.action.deleteLines", |
| // Place your settings in this file to overwrite the default settings | |
| { | |
| "editor.fontFamily": "Source Code Pro", | |
| "editor.fontSize": 14, | |
| "editor.renderWhitespace": "all", | |
| "editor.renderIndentGuides": false, | |
| "editor.selectionHighlight": false, | |
| "files.insertFinalNewline": true, | |
| "workbench.colorTheme": "Solarized Dark", | |
| "workbench.iconTheme": "vs-minimal", |
| (function(doc, body) { | |
| const main = doc.querySelector('main').parentNode.removeChild(doc.querySelector('main')); | |
| while (body.firstChild) body.removeChild(body.firstChild); | |
| body.appendChild(main) | |
| }(document, document.body)); |
| (function() { | |
| window.addEventListener( 'load', function() { | |
| var links = Array.prototype.slice.call( document.querySelectorAll( 'link[title]') ); | |
| var uniqueTitles = links.reduce( function( titles, link ) { | |
| if ( titles.indexOf( link.title ) === -1 ) { | |
| titles.push( link.title ); | |
| } | |
| return titles; | |
| }, []); | |
| var title = window.sessionStorage && window.sessionStorage.getItem( 'title' ) || ''; |
| (function() { | |
| const links = Array.from( document.querySelectorAll( 'link[title]' ) ); | |
| const styles = Array.from( new Set( links.map( link => link.title ) ) ); | |
| let title = localStorage.getItem( 'title' ); | |
| function selectStyle( title ) { | |
| links.forEach( link => { | |
| link.disabled = true; | |
| link.disabled = link.title !== title; | |
| }); |