diff --git a/home/home-laptop-compact.nix b/home/home-laptop-compact.nix index d0dc097..867a494 100644 --- a/home/home-laptop-compact.nix +++ b/home/home-laptop-compact.nix @@ -18,7 +18,14 @@ media.enable = true; sync.enable = true; kubectl.enable = true; - # office.enable = false; # Excluded for storage constraints + + # Launcher wrappers for excluded/optional packages + launchers = { + enable = true; + packages = [ + "libreoffice" + ]; + }; }; targets.genericLinux.enable = true; diff --git a/home/roles/default.nix b/home/roles/default.nix index 2212228..06fe344 100644 --- a/home/roles/default.nix +++ b/home/roles/default.nix @@ -7,6 +7,7 @@ ./gaming ./kdeconnect ./kubectl + ./launchers ./media ./office ./sync diff --git a/home/roles/launchers/default.nix b/home/roles/launchers/default.nix new file mode 100644 index 0000000..5ea87bc --- /dev/null +++ b/home/roles/launchers/default.nix @@ -0,0 +1,36 @@ +{ config, lib, pkgs, ... }: + +with lib; + +let + cfg = config.home.roles.launchers; + + # Generate a wrapper script for a package + makeLauncher = packageName: pkgs.writeShellScriptBin packageName '' + exec env NIXPKGS_ALLOW_UNFREE=1 ${pkgs.nix}/bin/nix run --impure nixpkgs#${packageName} -- "$@" + ''; + + # Generate all launcher scripts from the package list + launcherPackages = map makeLauncher cfg.packages; +in +{ + options.home.roles.launchers = { + enable = mkEnableOption "wrapper launchers for excluded packages"; + + packages = mkOption { + type = types.listOf types.str; + default = []; + example = [ "steam" "libreoffice" "lutris" ]; + description = '' + List of package names to create launcher wrappers for. + Each wrapper will run: NIXPKGS_ALLOW_UNFREE=1 nix run --impure nixpkgs# + + This is useful for occasionally running packages without permanently installing them. + ''; + }; + }; + + config = mkIf cfg.enable { + home.packages = launcherPackages; + }; +}