add programs options for system

This commit is contained in:
Asaki Yuki 2026-04-13 11:25:06 +07:00
parent 37c414c4b7
commit 7411f57e2a
9 changed files with 219 additions and 108 deletions

View file

@ -1,10 +1,13 @@
{ lib, ... }: {
options.device = {
flatpak.enable = lib.mkEnableOption "flatpak";
flake-name = lib.mkOption {
type = lib.types.str;
default = "desktop";
description = "Flake name for quick rebuild";
};
{ lib, ... }:
{
imports = [ ./programs.nix ];
options.device = {
flatpak.enable = lib.mkEnableOption "flatpak";
flake-name = lib.mkOption {
type = lib.types.str;
default = "desktop";
description = "Flake name for quick rebuild";
};
}
};
}

118
options/common/programs.nix Normal file
View file

@ -0,0 +1,118 @@
{ lib, pkgs, ... }:
{
options.programs = {
wget = {
enable = lib.mkEnableOption "wget";
package = lib.mkPackageOption pkgs "wget" { };
};
tree = {
enable = lib.mkEnableOption "tree";
package = lib.mkPackageOption pkgs "tree" { };
};
ffmpeg = {
enable = lib.mkEnableOption "ffmpeg";
package = lib.mkPackageOption pkgs "ffmpeg-full" { };
};
nodejs = {
enable = lib.mkEnableOption "nodejs";
package = lib.mkPackageOption pkgs "nodejs" { };
};
bun = {
enable = lib.mkEnableOption "bun";
package = lib.mkPackageOption pkgs "bun" { };
};
brightnessctl = {
enable = lib.mkEnableOption "brightnessctl";
package = lib.mkPackageOption pkgs "brightnessctl" { };
};
php = {
enable = lib.mkEnableOption "php";
package = lib.mkPackageOption pkgs "php" { };
};
ntfs3g = {
enable = lib.mkEnableOption "ntfs3g";
package = lib.mkPackageOption pkgs "ntfs3g" { };
};
zip = {
enable = lib.mkEnableOption "zip";
package = lib.mkPackageOption pkgs "zip" { };
};
unzip = {
enable = lib.mkEnableOption "unzip";
package = lib.mkPackageOption pkgs "unzip" { };
};
python = {
enable = lib.mkEnableOption "python";
package = lib.mkPackageOption pkgs "python3" { };
};
jdk = {
enable = lib.mkEnableOption "jdk-25";
package = lib.mkPackageOption pkgs "jdk25" { };
};
nixfmt = {
enable = lib.mkEnableOption "nixfmt";
package = lib.mkPackageOption pkgs "nixfmt" { };
};
winepackages = {
enable = lib.mkEnableOption "Wine and Proton utilities";
packages = lib.mkOption {
type = lib.types.listOf lib.types.package;
default = with pkgs; [
wine
wine64
winetricks
protontricks
];
};
};
quickshell = {
enable = lib.mkEnableOption "quickshell";
package = lib.mkPackageOption pkgs "quickshell" { };
};
papirus-icons = {
enable = lib.mkEnableOption "papirus-icon-theme";
package = lib.mkPackageOption pkgs "papirus-icon-theme" { };
};
kde-packages = {
enable = lib.mkEnableOption "KDE utility packages";
packages = lib.mkOption {
type = lib.types.listOf lib.types.package;
default = with pkgs.kdePackages; [
kservice
dolphin
kate
qt5compat
qtdeclarative
qtimageformats
qtsvg
qtmultimedia
kde-gtk-config
kirigami
ksvg
qtbase
plasma5support
qttools
plasma-sdk
];
};
};
r-tensorflow = {
enable = lib.mkEnableOption "R tensorflow";
package = lib.mkOption {
type = lib.types.package;
default = pkgs.rPackages.tensorflow;
};
};
hyprland-portals = {
enable = lib.mkEnableOption "XDGP for hyprland";
packages = lib.mkOption {
type = lib.types.listOf lib.types.package;
default = with pkgs; [
xdg-desktop-portal
xdg-desktop-portal-wlr
xdg-desktop-portal-hyprland
];
};
};
};
}

View file

@ -31,18 +31,19 @@
enable = lib.mkEnableOption "antigravity";
package = lib.mkPackageOption pkgs "antigravity" { };
};
hyprshot = {
enable = lib.mkEnableOption "hyprshot";
package = lib.mkPackageOption pkgs "hyprshot" { };
};
prismlauncher = {
enable = lib.mkEnableOption "prismlauncher";
package = lib.mkPackageOption pkgs "prismlauncher" { };
};
proton-ge = {
enable = lib.mkEnableOption "proton-ge utils";
protonup-qt = lib.mkPackageOption pkgs "protonup-qt" { };
protonplus = lib.mkPackageOption pkgs "protonplus" { };
packages = lib.mkOption {
type = lib.types.listOf lib.types.package;
default = with pkgs; [
protonup-qt
protonplus
];
};
};
vlc = {
enable = lib.mkEnableOption "vlc";
@ -56,10 +57,6 @@
enable = lib.mkEnableOption "libreoffice";
package = lib.mkPackageOption pkgs "libreoffice-qt-fresh" { };
};
lutris = {
enable = lib.mkEnableOption "lutris";
package = lib.mkPackageOption pkgs "lutris" { };
};
osu = {
enable = lib.mkEnableOption "osu-lazer";
package = lib.mkPackageOption pkgs "osu-lazer-bin" { };
@ -76,13 +73,9 @@
enable = lib.mkEnableOption "xprop";
package = lib.mkPackageOption pkgs "xprop" { };
};
bluetuith = {
enable = lib.mkEnableOption "bluetuith";
package = lib.mkPackageOption pkgs "bluetuith" { };
};
pavucontrol = {
enable = lib.mkEnableOption "pavucontrol-qt";
package = lib.mkPackageOption pkgs "lxqt" { extraPrefixCode = ".pavucontrol-qt"; };
package = lib.mkPackageOption pkgs.lxqt "pavucontrol-qt" { };
};
nwg-look = {
enable = lib.mkEnableOption "nwg-look";
@ -90,8 +83,13 @@
};
proton-apps = {
enable = lib.mkEnableOption "proton-pass and proton-authenticator";
pass = lib.mkPackageOption pkgs "proton-pass" { };
authenticator = lib.mkPackageOption pkgs "proton-authenticator" { };
packages = lib.mkOption {
type = lib.types.listOf lib.types.package;
default = with pkgs; [
proton-pass
proton-authenticator
];
};
};
hytale = {
enable = lib.mkEnableOption "hytale-launcher";