aboutsummaryrefslogtreecommitdiff
path: root/modules/system/wine.nix
blob: 0de63158c33d85b62424e16e792fbebd170dee6d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
{
  flake.modules.homeManager.wine =
    { pkgs, config, ... }:
    let
      wine = pkgs.wineWow64Packages.waylandFull;

      wineForWinetricks = pkgs.runCommand "wine-for-winetricks" { } ''
        mkdir -p $out/bin

        ln -s ${wine}/bin/wine $out/bin/wine
        ln -s ${wine}/bin/wine $out/bin/wine64
        ln -s ${wine}/bin/wineserver $out/bin/wineserver
      '';

      winetricksFixed = pkgs.writeShellScriptBin "winetricks" ''
        export WINE="${wineForWinetricks}/bin/wine"
        export WINELOADER="${wineForWinetricks}/bin/wine"
        export WINESERVER="${wineForWinetricks}/bin/wineserver"

        # NixOS WoW64 wrapper fix.
        export WINE_BIN="${wine}/bin/.wine"
        export WINESERVER_BIN="${wine}/bin/wineserver"

        export WINEPREFIX="${config.home.homeDirectory}/.wine"
        export PATH="${wineForWinetricks}/bin:$PATH"

        exec ${pkgs.winetricks}/bin/winetricks "$@"
      '';

      q4wineFixed = pkgs.q4wine.override {
        inherit wine;
      };
    in
    {
      home.packages = [
        wine
        q4wineFixed
        winetricksFixed
        pkgs.unzip
        pkgs.cabextract
      ];
    };
}