From 45321072fc40b94bf7f1ef87401a9a3ac391b374 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Wed, 15 Sep 2021 16:47:49 +0200 Subject: [PATCH 1/4] modules: add 'programs' directory --- modules/default.nix | 1 + modules/programs/default.nix | 8 ++++++++ 2 files changed, 9 insertions(+) create mode 100644 modules/programs/default.nix diff --git a/modules/default.nix b/modules/default.nix index 798fb0d..d9c6c68 100644 --- a/modules/default.nix +++ b/modules/default.nix @@ -5,6 +5,7 @@ imports = [ ./hardware ./home.nix + ./programs ./services ./system ]; diff --git a/modules/programs/default.nix b/modules/programs/default.nix new file mode 100644 index 0000000..85be70e --- /dev/null +++ b/modules/programs/default.nix @@ -0,0 +1,8 @@ +# Program-related modules +{ ... }: + +{ + imports = [ + # FIXME + ]; +} From 37bb7fd6256093f2f305c5a4ec672370975ca9fb Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Wed, 15 Sep 2021 16:48:39 +0200 Subject: [PATCH 2/4] modules: programs: add steam --- modules/programs/default.nix | 2 +- modules/programs/steam.nix | 15 +++++++++++++++ 2 files changed, 16 insertions(+), 1 deletion(-) create mode 100644 modules/programs/steam.nix diff --git a/modules/programs/default.nix b/modules/programs/default.nix index 85be70e..a6f14ed 100644 --- a/modules/programs/default.nix +++ b/modules/programs/default.nix @@ -3,6 +3,6 @@ { imports = [ - # FIXME + ./steam.nix ]; } diff --git a/modules/programs/steam.nix b/modules/programs/steam.nix new file mode 100644 index 0000000..e9f2a2b --- /dev/null +++ b/modules/programs/steam.nix @@ -0,0 +1,15 @@ +{ config, lib, ... }: +let + cfg = config.my.programs.steam; +in +{ + options.my.programs.steam = with lib; { + enable = mkEnableOption "steam configuration"; + }; + + config = lib.mkIf cfg.enable { + programs.steam = { + enable = true; + }; + }; +} From 5c95ba11136f6025bd26ee59005dc340f0472c51 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Wed, 15 Sep 2021 16:49:22 +0200 Subject: [PATCH 3/4] machines: aramis: programs: enable steam --- machines/aramis/default.nix | 1 + machines/aramis/programs.nix | 7 +++++++ 2 files changed, 8 insertions(+) create mode 100644 machines/aramis/programs.nix diff --git a/machines/aramis/default.nix b/machines/aramis/default.nix index bb78127..878f2c9 100644 --- a/machines/aramis/default.nix +++ b/machines/aramis/default.nix @@ -11,6 +11,7 @@ ./home.nix ./networking.nix ./profiles.nix + ./programs.nix ./services.nix ./sound.nix ]; diff --git a/machines/aramis/programs.nix b/machines/aramis/programs.nix new file mode 100644 index 0000000..426ca2a --- /dev/null +++ b/machines/aramis/programs.nix @@ -0,0 +1,7 @@ +{ ... }: +{ + my.programs = { + # Steam configuration + steam.enable = true; + }; +} From 9f3811ea3b76d0feae75540157310351b9d7ce76 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Wed, 15 Sep 2021 18:13:47 +0200 Subject: [PATCH 4/4] modules: programs: steam: respect XDG conventions Steam wants to pollute HOME with `.steam*` files and folders, which are useless and annoying. We want to make sure the wrappers are preferred when installing, so use `lib.hiPrio` to ensure they get chosen. --- modules/programs/steam.nix | 26 +++++++++++++++++++++++++- 1 file changed, 25 insertions(+), 1 deletion(-) diff --git a/modules/programs/steam.nix b/modules/programs/steam.nix index e9f2a2b..dbdc0ce 100644 --- a/modules/programs/steam.nix +++ b/modules/programs/steam.nix @@ -1,15 +1,39 @@ -{ config, lib, ... }: +{ config, lib, pkgs, ... }: let cfg = config.my.programs.steam; in { options.my.programs.steam = with lib; { enable = mkEnableOption "steam configuration"; + + dataDir = mkOption { + type = types.str; + default = "$XDG_DATA_HOME/steamlib"; + example = "/mnt/steam/"; + description = '' + Which directory should be used as HOME to run steam. + ''; + }; }; config = lib.mkIf cfg.enable { programs.steam = { enable = true; }; + + environment.systemPackages = builtins.map lib.hiPrio [ + # Respect XDG conventions, leave my HOME alone + (pkgs.writeScriptBin "steam" '' + #!/bin/sh + mkdir -p "${cfg.dataDir}" + HOME="${cfg.dataDir}" exec ${pkgs.steam}/bin/steam "$@" + '') + # Same, for GOG and other such games + (pkgs.writeScriptBin "steam-run" '' + #!/bin/sh + mkdir -p "${cfg.dataDir}" + HOME="${cfg.dataDir}" exec ${pkgs.steam-run-native}/bin/steam-run "$@" + '') + ]; }; }