My NixOS dotfiles
0

Configure Feed

Select the types of activity you want to include in your feed.

✨ Winapps

Simon R. - fantomitechno (Jul 14, 2026, 12:35 PM +0200) bf61d2b9 03918a65

+340 -1
+87 -1
flake.lock
··· 21 21 "type": "github" 22 22 } 23 23 }, 24 + "flake-compat": { 25 + "locked": { 26 + "lastModified": 1733328505, 27 + "narHash": "sha256-NeCCThCEP3eCl2l/+27kNNK7QrwZB1IJCrXfrbv5oqU=", 28 + "rev": "ff81ac966bb2cae68946d5ed5fc4994f96d0ffec", 29 + "revCount": 69, 30 + "type": "tarball", 31 + "url": "https://api.flakehub.com/f/pinned/edolstra/flake-compat/1.1.0/01948eb7-9cba-704f-bbf3-3fa956735b52/source.tar.gz?rev=ff81ac966bb2cae68946d5ed5fc4994f96d0ffec&revCount=69" 32 + }, 33 + "original": { 34 + "type": "tarball", 35 + "url": "https://flakehub.com/f/edolstra/flake-compat/1.tar.gz" 36 + } 37 + }, 24 38 "flake-utils": { 25 39 "inputs": { 26 40 "systems": "systems" 41 + }, 42 + "locked": { 43 + "lastModified": 1731533236, 44 + "narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=", 45 + "owner": "numtide", 46 + "repo": "flake-utils", 47 + "rev": "11707dc2f618dd54ca8739b309ec4fc024de578b", 48 + "type": "github" 49 + }, 50 + "original": { 51 + "owner": "numtide", 52 + "repo": "flake-utils", 53 + "type": "github" 54 + } 55 + }, 56 + "flake-utils_2": { 57 + "inputs": { 58 + "systems": "systems_3" 27 59 }, 28 60 "locked": { 29 61 "lastModified": 1731533236, ··· 81 113 "type": "github" 82 114 } 83 115 }, 116 + "nix-filter": { 117 + "locked": { 118 + "lastModified": 1757882181, 119 + "narHash": "sha256-+cCxYIh2UNalTz364p+QYmWHs0P+6wDhiWR4jDIKQIU=", 120 + "owner": "numtide", 121 + "repo": "nix-filter", 122 + "rev": "59c44d1909c72441144b93cf0f054be7fe764de5", 123 + "type": "github" 124 + }, 125 + "original": { 126 + "owner": "numtide", 127 + "repo": "nix-filter", 128 + "type": "github" 129 + } 130 + }, 84 131 "nix4vscode": { 85 132 "inputs": { 86 133 "nixpkgs": [ ··· 124 171 "home-manager": "home-manager", 125 172 "niri-float-sticky": "niri-float-sticky", 126 173 "nix4vscode": "nix4vscode", 127 - "nixpkgs": "nixpkgs" 174 + "nixpkgs": "nixpkgs", 175 + "winapps": "winapps" 128 176 } 129 177 }, 130 178 "systems": { ··· 158 206 "type": "github" 159 207 } 160 208 }, 209 + "systems_3": { 210 + "locked": { 211 + "lastModified": 1681028828, 212 + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", 213 + "owner": "nix-systems", 214 + "repo": "default", 215 + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", 216 + "type": "github" 217 + }, 218 + "original": { 219 + "owner": "nix-systems", 220 + "repo": "default", 221 + "type": "github" 222 + } 223 + }, 161 224 "utils": { 162 225 "locked": { 163 226 "lastModified": 1652776076, ··· 170 233 "original": { 171 234 "owner": "numtide", 172 235 "repo": "flake-utils", 236 + "type": "github" 237 + } 238 + }, 239 + "winapps": { 240 + "inputs": { 241 + "flake-compat": "flake-compat", 242 + "flake-utils": "flake-utils_2", 243 + "nix-filter": "nix-filter", 244 + "nixpkgs": [ 245 + "nixpkgs" 246 + ] 247 + }, 248 + "locked": { 249 + "lastModified": 1783436030, 250 + "narHash": "sha256-mx3ag4EJdosy90FEwMwtQftrSCCyP+TYyJ2tephvRgU=", 251 + "owner": "winapps-org", 252 + "repo": "winapps", 253 + "rev": "5cbf7381f9a12af630e5a289d6dab5f7adc70e5d", 254 + "type": "github" 255 + }, 256 + "original": { 257 + "owner": "winapps-org", 258 + "repo": "winapps", 173 259 "type": "github" 174 260 } 175 261 }
+5
flake.nix
··· 29 29 inputs.nixpkgs.follows = "nixpkgs"; 30 30 }; 31 31 32 + winapps = { 33 + url = "github:winapps-org/winapps"; 34 + inputs.nixpkgs.follows = "nixpkgs"; 35 + }; 36 + 32 37 # Homelab inputs 33 38 34 39 inputs.copyparty = {
+1
hosts/desktop/default.nix
··· 12 12 ++ builtins.map (i: ../../modules/${i}) ([ 13 13 "codium" 14 14 "niri-de" 15 + "winapps" 15 16 "customisation.nix" 16 17 "docker.nix" 17 18 "editing.nix"
+1
hosts/laptop/default.nix
··· 13 13 "codium" 14 14 "kde" 15 15 "niri-de" 16 + "winapps" 16 17 "battery-notify.nix" 17 18 "docker.nix" 18 19 "editing.nix"
+2
modules/flint.nix
··· 5 5 # Internship 6 6 firefox 7 7 teams-for-linux 8 + 9 + kdePackages.krdc 8 10 ]; 9 11 }
+19
modules/winapps/default.nix
··· 1 + { flakes, pkgs, ... }: 2 + 3 + { 4 + environment.systemPackages = with pkgs; [ 5 + flakes.inputs.winapps.packages."${system}".winapps 6 + flakes.inputs.winapps.packages."${system}".winapps-launcher # optional 7 + ]; 8 + 9 + home-manager.users."fantomitechno" = 10 + { 11 + config, 12 + dotfileFolder, 13 + ... 14 + }: 15 + { 16 + xdg.configFile."winapps/winapps.conf".source = 17 + config.lib.file.mkOutOfStoreSymlink "${dotfileFolder}/modules/winapps/winapps.conf"; 18 + }; 19 + }
+176
modules/winapps/winapps.conf
··· 1 + ################################## 2 + # WINAPPS CONFIGURATION FILE # 3 + ################################## 4 + 5 + # INSTRUCTIONS 6 + # - Leading and trailing whitespace are ignored. 7 + # - Empty lines are ignored. 8 + # - Lines starting with '#' are ignored. 9 + # - All characters following a '#' are ignored. 10 + 11 + # [WINDOWS USERNAME] 12 + RDP_USER="Simon" 13 + 14 + # [WINDOWS PASSWORD] 15 + # NOTES: 16 + # - If using FreeRDP v3.9.0 or greater, you *have* to set a password 17 + # - RDP_ASKPASS is provided as a more secure option to RDP_PASS: 18 + # - Calls an external command and uses its stdout as the password 19 + # - The password is not passed on the command line to freerdp, keeping it out of logs 20 + # - If specified, takes precedence over RDP_PASS 21 + # - Examples to use this: 22 + # - RDP_ASKPASS="~/some-custom-command" 23 + # - RDP_ASKPASS="bash -c 'cat ~/.some-secret-file'" 24 + # - RDP_ASKPASS="bash -c 'kwallet-query --folder winapps --read-password rdp kdewallet'" 25 + # 26 + RDP_PASS="MyWindowsPassword" 27 + RDP_ASKPASS="" 28 + 29 + # [WINDOWS DOMAIN] 30 + # DEFAULT VALUE: '' (BLANK) 31 + RDP_DOMAIN="" 32 + 33 + # [WINDOWS IPV4 ADDRESS] 34 + # NOTES: 35 + # - If using 'libvirt', 'RDP_IP' will be determined by WinApps at runtime if left unspecified. 36 + # DEFAULT VALUE: 37 + # - 'docker': '127.0.0.1' 38 + # - 'podman': '127.0.0.1' 39 + # - 'libvirt': '' (BLANK) 40 + RDP_IP="127.0.0.1" 41 + 42 + # [RDP PORT] 43 + # NOTES: 44 + # - For Docker and Podman, this is the host port mapped to Windows port 3389. 45 + # - If you changed the host-side RDP port in compose.yaml, set this to match. 46 + # DEFAULT VALUE: '3389' 47 + RDP_PORT="3389" 48 + 49 + # [VM NAME] 50 + # NOTES: 51 + # - Only applicable when using 'libvirt' 52 + # - The libvirt VM name must match so that WinApps can determine VM IP, start the VM, etc. 53 + # DEFAULT VALUE: 'RDPWindows' 54 + VM_NAME="RDPWindows" 55 + 56 + # [WINAPPS BACKEND] 57 + # DEFAULT VALUE: 'docker' 58 + # VALID VALUES: 59 + # - 'docker' 60 + # - 'podman' 61 + # - 'libvirt' 62 + # - 'manual' 63 + WAFLAVOR="docker" 64 + 65 + # [DISPLAY SCALING FACTOR] 66 + # NOTES: 67 + # - If an unsupported value is specified, a warning will be displayed. 68 + # - If an unsupported value is specified, WinApps will use the closest supported value. 69 + # DEFAULT VALUE: '100' 70 + # VALID VALUES: 71 + # - '100' 72 + # - '140' 73 + # - '180' 74 + RDP_SCALE="100" 75 + 76 + # [MOUNTING REMOVABLE PATHS FOR FILES] 77 + # NOTES: 78 + # - By default, `udisks` (which you most likely have installed) uses /run/media for mounting removable devices. 79 + # This improves compatibility with most desktop environments (DEs). 80 + # ATTENTION: The Filesystem Hierarchy Standard (FHS) recommends /media instead. Verify your system's configuration. 81 + # - To manually mount devices, you may optionally use /mnt. 82 + # REFERENCE: https://wiki.archlinux.org/title/Udisks#Mount_to_/media 83 + REMOVABLE_MEDIA="/run/media" 84 + 85 + # [ADDITIONAL FREERDP FLAGS & ARGUMENTS] 86 + # NOTES: 87 + # - You can try adding /network:lan to these flags in order to increase performance, however, some users have faced issues with this. 88 + # If this does not work or if it does not work without the flag, you can try adding /nsc and /gfx. 89 + # DEFAULT VALUE: '/cert:tofu /sound /microphone +home-drive' 90 + # VALID VALUES: See https://github.com/awakecoding/FreeRDP-Manuals/blob/master/User/FreeRDP-User-Manual.markdown 91 + RDP_FLAGS="/cert:tofu /sound /microphone +home-drive" 92 + 93 + # [NON FULL WINDOWS RDP FLAGS] 94 + # NOTES: 95 + # - Use these flags to pass specific flags to the freerdp command when you are starting a non-full RDP session (any other command than winapps windows) 96 + # DEFAULT_VALUES: '' 97 + # VALID_VALUES: See https://github.com/awakecoding/FreeRDP-Manuals/blob/master/User/FreeRDP-User-Manual.markdown 98 + RDP_FLAGS_NON_WINDOWS="" 99 + 100 + # [FULL WINDOWS RDP FLAGS] 101 + # NOTES: 102 + # - Use these flags to pass specific flags to the freerdp command when you are starting a full RDP session (winapps windows) 103 + # DEFAULT_VALUES: '' 104 + # VALID_VALUES: See https://github.com/awakecoding/FreeRDP-Manuals/blob/master/User/FreeRDP-User-Manual.markdown 105 + RDP_FLAGS_WINDOWS="" 106 + 107 + # [DEBUG WINAPPS] 108 + # NOTES: 109 + # - Creates and appends to ~/.local/share/winapps/winapps.log when running WinApps. 110 + # DEFAULT VALUE: 'true' 111 + # VALID VALUES: 112 + # - 'true' 113 + # - 'false' 114 + DEBUG="true" 115 + 116 + # [AUTOMATICALLY PAUSE WINDOWS] 117 + # NOTES: 118 + # - This is currently INCOMPATIBLE with 'manual'. 119 + # DEFAULT VALUE: 'off' 120 + # VALID VALUES: 121 + # - 'on' 122 + # - 'off' 123 + AUTOPAUSE="off" 124 + 125 + # [AUTOMATICALLY PAUSE WINDOWS TIMEOUT] 126 + # NOTES: 127 + # - This setting determines the duration of inactivity to tolerate before Windows is automatically paused. 128 + # - This setting is ignored if 'AUTOPAUSE' is set to 'off'. 129 + # - The value must be specified in seconds (to the nearest 10 seconds e.g., '30', '40', '50', etc.). 130 + # - For RemoteApp RDP sessions, there is a mandatory 20-second delay, so the minimum value that can be specified here is '20'. 131 + # - Source: https://techcommunity.microsoft.com/t5/security-compliance-and-identity/terminal-services-remoteapp-8482-session-termination-logic/ba-p/246566 132 + # DEFAULT VALUE: '300' 133 + # VALID VALUES: >=20 134 + AUTOPAUSE_TIME="300" 135 + 136 + # [FREERDP COMMAND] 137 + # NOTES: 138 + # - WinApps will attempt to automatically detect the correct command to use for your system. 139 + # DEFAULT VALUE: '' (BLANK) 140 + # VALID VALUES: The command required to run FreeRDPv3 on your system (e.g., 'xfreerdp', 'xfreerdp3', etc.). 141 + FREERDP_COMMAND="" 142 + 143 + # [TIMEOUTS] 144 + # NOTES: 145 + # - These settings control various timeout durations within the WinApps setup. 146 + # - Increasing the timeouts is only necessary if the corresponding errors occur. 147 + # - Ensure you have followed all the Troubleshooting Tips in the error message first. 148 + 149 + # PORT CHECK 150 + # - The maximum time (in seconds) to wait when checking if the RDP port on Windows is open. 151 + # - Corresponding error: "NETWORK CONFIGURATION ERROR" (exit status 13). 152 + # DEFAULT VALUE: '5' 153 + PORT_TIMEOUT="5" 154 + 155 + # RDP CONNECTION TEST 156 + # - The maximum time (in seconds) to wait when testing the initial RDP connection to Windows. 157 + # - Corresponding error: "REMOTE DESKTOP PROTOCOL FAILURE" (exit status 14). 158 + # DEFAULT VALUE: '30' 159 + RDP_TIMEOUT="30" 160 + 161 + # APPLICATION SCAN 162 + # - The maximum time (in seconds) to wait for the script that scans for installed applications on Windows to complete. 163 + # - Corresponding error: "APPLICATION QUERY FAILURE" (exit status 15). 164 + # DEFAULT VALUE: '60' 165 + APP_SCAN_TIMEOUT="60" 166 + 167 + # WINDOWS BOOT 168 + # - The maximum time (in seconds) to wait for the Windows VM to boot if it is not running, before attempting to launch an application. 169 + # DEFAULT VALUE: '120' 170 + BOOT_TIMEOUT="120" 171 + 172 + # FREERDP RAIL HIDEF 173 + # - This option controls the value of the `hidef` option passed to the /app parameter of the FreeRDP command. 174 + # - Setting this option to 'off' may resolve window misalignment issues related to maximized windows. 175 + # DEFAULT VALUE: 'on' 176 + HIDEF="on"
+49
modules/winapps/windows.yaml
··· 1 + # For documentation, FAQ, additional configuration options and technical help, visit: https://github.com/dockur/windows 2 + 3 + name: "winapps" # Docker Compose Project Name. 4 + volumes: 5 + # Create Volume 'data'. 6 + # Located @ '/var/lib/docker/volumes/winapps_data/_data' (Docker). 7 + # Located @ '/var/lib/containers/storage/volumes/winapps_data/_data' or '~/.local/share/containers/storage/volumes/winapps_data/_data' (Podman). 8 + data: 9 + services: 10 + windows: 11 + image: ghcr.io/dockur/windows:latest 12 + container_name: WinApps # Created Docker VM Name. 13 + environment: 14 + # Version of Windows to configure. For valid options, visit: 15 + # https://github.com/dockur/windows?tab=readme-ov-file#how-do-i-select-the-windows-version 16 + # https://github.com/dockur/windows?tab=readme-ov-file#how-do-i-install-a-custom-image 17 + VERSION: "11" 18 + RAM_SIZE: "4G" # RAM allocated to the Windows VM. 19 + CPU_CORES: "4" # CPU cores allocated to the Windows VM. 20 + DISK_SIZE: "64G" # Size of the primary hard disk. 21 + # DISK2_SIZE: "32G" # Uncomment to add an additional hard disk to the Windows VM. Ensure it is mounted as a volume below. 22 + USERNAME: "Simon" # Edit here to set a custom Windows username. The default is 'MyWindowsUser'. 23 + PASSWORD: "MyWindowsPassword" # Edit here to set a password for the Windows user. The default is 'MyWindowsPassword'. 24 + HOME: "${HOME}" # Set path to Linux user home folder. 25 + ports: 26 + - 8006:8006 # Map '8006' on Linux host to '8006' on Windows VM --> For VNC Web Interface @ http://127.0.0.1:8006. 27 + - 3389:3389/tcp # Map '3389' on Linux host to '3389' on Windows VM --> For Remote Desktop Protocol (RDP). 28 + - 3389:3389/udp # Map '3389' on Linux host to '3389' on Windows VM --> For Remote Desktop Protocol (RDP). 29 + cap_add: 30 + - NET_ADMIN # Add network permission 31 + stop_grace_period: 120s # Wait 120 seconds before sending SIGTERM when attempting to shut down the Windows VM. 32 + restart: on-failure # Restart the Windows VM if the exit code indicates an error. 33 + volumes: 34 + - data:/storage # Mount volume 'data' to use as Windows 'C:' drive. 35 + - ${HOME}:/shared # Mount Linux user home directory @ '\\host.lan\Data'. 36 + #- /path/to/second/hard/disk:/storage2 # Uncomment to create a virtual second hard disk and mount it within the Windows VM. Ensure 'DISK2_SIZE' is specified above. 37 + - ./oem:/oem # Enables automatic post-install execution of 'oem/install.bat', applying Windows registry modifications contained within 'oem/RDPApps.reg'. 38 + #- /path/to/windows/install/media.iso:/custom.iso # Uncomment to use a custom Windows ISO. If specified, 'VERSION' (e.g. 'tiny11') will be ignored. 39 + devices: 40 + - /dev/kvm # Enable KVM. 41 + - /dev/net/tun # Enable tuntap 42 + # Uncomment to mount a disk directly within the Windows VM. 43 + # WARNING: /dev/sdX paths may change after reboot. Use persistent identifiers! 44 + # NOTE: 'disk1' will be mounted as the main drive. THIS DISK WILL BE FORMATTED BY DOCKER. 45 + # All following disks (disk2, ...) WILL NOT BE FORMATTED. 46 + # - /dev/disk/by-id/<id>:/disk1 47 + # - /dev/disk/by-id/<id>:/disk2 48 + # group_add: # uncomment this line and the next one for using rootless podman containers 49 + # - keep-groups # to make /dev/kvm work with podman. needs "crun" installed, "runc" will not work! Add your user to the 'kvm' group or another that can access /dev/kvm.