From 3740489bf009e99c395f555e78e667db49bcbf40 Mon Sep 17 00:00:00 2001 From: Aleksandr Lebedev Date: Mon, 10 Mar 2025 18:17:00 +0100 Subject: [PATCH] Test distrobox steam --- nixos/configuration.nix | 2 +- nixos/modules/steam/default.nix | 58 +++++++++++++++++++++++++++++---- 2 files changed, 53 insertions(+), 7 deletions(-) diff --git a/nixos/configuration.nix b/nixos/configuration.nix index 1be285e..24774e4 100644 --- a/nixos/configuration.nix +++ b/nixos/configuration.nix @@ -309,7 +309,7 @@ in # enableSSHSupport = true; # }; - kk.steam.enable = hwconfig.system == "x86_64-linux"; + kk.steam.enable = true; # List services that you want to enable: diff --git a/nixos/modules/steam/default.nix b/nixos/modules/steam/default.nix index 63b6671..7a7f2ae 100644 --- a/nixos/modules/steam/default.nix +++ b/nixos/modules/steam/default.nix @@ -7,18 +7,64 @@ ... }: let cfg = config.kk.steam; + containerPath = if hwconfig.useImpermanence then "/persist/home/containers/steam" else "/var/containers/steam"; + containerName = "fedora-steam"; in { options.kk.steam = { enable = lib.mkEnableOption "Enable steam"; }; config = lib.mkIf cfg.enable ( - # if hwconfig.useImpermanence - # then { - # kk.services.flatpak.enable = lib.mkForce true; - # services.flatpak.packages = ["com.valvesoftware.Steam"]; - # } - # else + if hwconfig.system == "aarch64-linux" + then { + virtualisation.podman = { + enable = true; + dockerCompat = true; + }; + environment.systemPackages = with pkgs;[ + distrobox + (pkgs.writeShellScriptBin "steam-install" '' + set -e + echo "Проверяем контейнер Steam..." + + if [ ! -d "${containerPath}" ]; then + echo "Контейнер не найден, создаем новый с Fedora..." + + # Создаём контейнер с Fedora + export PATH=${pkgs.podman}/bin:$PATH + env -u SUDO_USER ${pkgs.distrobox}/bin/distrobox-create --name "${containerName}" --image registry.fedoraproject.org/fedora:latest --home ${containerPath} --hostname ${containerName} --yes + + echo "Контейнер ${containerName} создан, устанавливаем Steam..." + + # Устанавливаем Steam внутри контейнера + env -u SUDO_USER ${pkgs.distrobox}/bin/distrobox-enter "${containerName}" -- sudo dnf upgrade --refresh -y + env -u SUDO_USER ${pkgs.distrobox}/bin/distrobox-enter "${containerName}" -- sudo dnf copr enable -y @asahi/steam + env -u SUDO_USER ${pkgs.distrobox}/bin/distrobox-enter "${containerName}" -- sudo dnf copr enable -y @asahi/fedora-remix-branding + env -u SUDO_USER ${pkgs.distrobox}/bin/distrobox-enter "${containerName}" -- sudo dnf copr enable -y @asahi/fedora-remix-scripts + env -u SUDO_USER ${pkgs.distrobox}/bin/distrobox-enter "${containerName}" -- sudo dnf copr enable -y @asahi/kernel + env -u SUDO_USER ${pkgs.distrobox}/bin/distrobox-enter "${containerName}" -- sudo dnf copr enable -y @asahi/mesa + env -u SUDO_USER ${pkgs.distrobox}/bin/distrobox-enter "${containerName}" -- sudo dnf copr enable -y @asahi/kernel-edge + env -u SUDO_USER ${pkgs.distrobox}/bin/distrobox-enter "${containerName}" -- sudo dnf copr enable -y @asahi/packit-builds + env -u SUDO_USER ${pkgs.distrobox}/bin/distrobox-enter "${containerName}" -- sudo dnf copr enable -y @asahi/u-boot + env -u SUDO_USER ${pkgs.distrobox}/bin/distrobox-enter "${containerName}" -- sudo dnf copr enable -y @asahi/rawhide-rebuilds + env -u SUDO_USER ${pkgs.distrobox}/bin/distrobox-enter "${containerName}" -- sudo dnf copr enable -y @asahi/mesa + env -u SUDO_USER ${pkgs.distrobox}/bin/distrobox-enter "${containerName}" -- sudo dnf copr enable -y @asahi/mesa + +env -u SUDO_USER ${pkgs.distrobox}/bin/distrobox-enter "${containerName}" -- sudo dnf upgrade --refresh -y + +env -u SUDO_USER ${pkgs.distrobox}/bin/distrobox-enter "${containerName}" -- sudo dnf install --best --setopt=allow_vendor_change=true asahi-repos -y + +env -u SUDO_USER ${pkgs.distrobox}/bin/distrobox-enter "${containerName}" -- sudo dnf install --best --setopt=allow_vendor_change=true steam -y +env -u SUDO_USER ${pkgs.distrobox}/bin/distrobox-enter "${containerName}" -- sudo dnf remove dhcpcd -y + fi + + echo "Экспортируем Steam..." + env -u SUDO_USER ${pkgs.distrobox}/bin/distrobox enter "${containerName}" -- distrobox-export --app steam + '') + ]; + + } + else { programs.steam = { enable = true;#!hwconfig.useImpermanence;