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

@ -53,23 +53,20 @@ in
programs = { programs = {
catppuccin.enable = true; catppuccin.enable = true;
antigravity.enable = true; antigravity.enable = true;
hyprshot.enable = true;
prismlauncher.enable = true; prismlauncher.enable = true;
proton-ge.enable = true;
vlc.enable = true; vlc.enable = true;
gimp.enable = true; gimp.enable = true;
libreoffice.enable = true; libreoffice.enable = true;
lutris.enable = true;
osu.enable = true; osu.enable = true;
lmstudio.enable = true; lmstudio.enable = true;
blender.enable = true; blender.enable = true;
xprop.enable = true; xprop.enable = true;
bluetuith.enable = true;
pavucontrol.enable = true; pavucontrol.enable = true;
nwg-look.enable = true; nwg-look.enable = true;
proton-apps.enable = true;
hytale.enable = true; hytale.enable = true;
cider.enable = true; cider.enable = true;
proton-ge.enable = true;
proton-apps.enable = true;
}; };
}; };
} }

View file

@ -1,6 +1,8 @@
{ libs, ... }: { libs, ... }:
{ {
imports = [ imports = [
./programs.nix
(libs.root "/modules/hardware/default.nix") (libs.root "/modules/hardware/default.nix")
(libs.root "/modules/fonts.nix") (libs.root "/modules/fonts.nix")
@ -32,4 +34,3 @@
xdg.menus.enable = true; xdg.menus.enable = true;
services.dbus.enable = true; services.dbus.enable = true;
} }

24
host/desktop/programs.nix Normal file
View file

@ -0,0 +1,24 @@
{ ... }:
{
programs = {
wget.enable = true;
tree.enable = true;
ffmpeg.enable = true;
nodejs.enable = true;
bun.enable = true;
brightnessctl.enable = true;
php.enable = true;
ntfs3g.enable = true;
zip.enable = true;
unzip.enable = true;
python.enable = true;
jdk.enable = true;
nixfmt.enable = true;
winepackages.enable = true;
quickshell.enable = true;
papirus-icons.enable = true;
kde-packages.enable = true;
r-tensorflow.enable = true;
hyprland-portals.enable = true;
};
}

4
host/server/default.nix Normal file
View file

@ -0,0 +1,4 @@
{ ... }:
{
}

View file

@ -10,30 +10,25 @@
home.packages = [ home.packages = [
(lib.mkIf config.programs.catppuccin.enable config.programs.catppuccin.package) (lib.mkIf config.programs.catppuccin.enable config.programs.catppuccin.package)
(lib.mkIf config.programs.hyprshot.enable config.programs.hyprshot.package) (lib.mkIf config.programs.packages.antigravity.enable config.programs.packages.antigravity.package)
(lib.mkIf config.programs.antigravity.enable config.programs.antigravity.package) (lib.mkIf config.programs.packages.prismlauncher.enable config.programs.packages.prismlauncher.package)
(lib.mkIf config.programs.prismlauncher.enable config.programs.prismlauncher.package) (lib.optionals config.programs.proton-ge.enable config.programs.proton-ge.packages)
(lib.mkIf config.programs.proton-ge.enable config.programs.proton-ge.protonup-qt) (lib.mkIf config.programs.packages.vlc.enable config.programs.packages.vlc.package)
(lib.mkIf config.programs.proton-ge.enable config.programs.proton-ge.protonplus) (lib.mkIf config.programs.packages.gimp.enable config.programs.packages.gimp.package)
(lib.mkIf config.programs.vlc.enable config.programs.vlc.package) (lib.mkIf config.programs.packages.libreoffice.enable config.programs.packages.libreoffice.package)
(lib.mkIf config.programs.gimp.enable config.programs.gimp.package) (lib.mkIf config.programs.packages.osu.enable config.programs.packages.osu.package)
(lib.mkIf config.programs.libreoffice.enable config.programs.libreoffice.package) (lib.mkIf config.programs.packages.lmstudio.enable config.programs.packages.lmstudio.package)
(lib.mkIf config.programs.lutris.enable config.programs.lutris.package) (lib.mkIf config.programs.packages.blender.enable config.programs.packages.blender.package)
(lib.mkIf config.programs.osu.enable config.programs.osu.package) (lib.mkIf config.programs.packages.xprop.enable config.programs.packages.xprop.package)
(lib.mkIf config.programs.lmstudio.enable config.programs.lmstudio.package)
(lib.mkIf config.programs.blender.enable config.programs.blender.package)
(lib.mkIf config.programs.xprop.enable config.programs.xprop.package)
(lib.mkIf config.programs.bluetuith.enable config.programs.bluetuith.package) (lib.mkIf config.programs.packages.pavucontrol.enable config.programs.packages.pavucontrol.package)
(lib.mkIf config.programs.pavucontrol.enable config.programs.pavucontrol.package) (lib.mkIf config.programs.packages.nwg-look.enable config.programs.packages.nwg-look.package)
(lib.mkIf config.programs.nwg-look.enable config.programs.nwg-look.package)
(lib.mkIf config.programs.proton-apps.enable config.programs.proton-apps.pass) (lib.optionals config.programs.proton-apps.enable config.programs.proton-apps.packages)
(lib.mkIf config.programs.proton-apps.enable config.programs.proton-apps.authenticator)
(lib.mkIf config.programs.hytale.enable config.programs.hytale.package) (lib.mkIf config.programs.packages.hytale.enable config.programs.packages.hytale.package)
(lib.mkIf ( (lib.mkIf (
config.programs.cider.enable && osconfig.device.programs.cider-2.enable config.programs.packages.cider.enable && osconfig.device.programs.cider-2.enable
) config.programs.cider.package) ) config.programs.packages.cider.package)
]; ];
} }

View file

@ -2,6 +2,7 @@
pkgs, pkgs,
lib, lib,
config, config,
rPackages,
... ...
}: }:
{ {
@ -10,60 +11,30 @@
[ [
git git
vim vim
wget
tree
btop btop
ffmpeg-full
nodejs
bun
brightnessctl
php
ntfs3g
zip
unzip
python3
jdk25
nixfmt
wine (lib.mkIf config.programs.wget.enable config.programs.wget.package)
wine64 (lib.mkIf config.programs.tree.enable config.programs.tree.package)
winetricks (lib.mkIf config.programs.ffmpeg.enable config.programs.ffmpeg.package)
protontricks (lib.mkIf config.programs.nodejs.enable config.programs.nodejs.package)
(lib.mkIf config.programs.bun.enable config.programs.bun.package)
(lib.mkIf config.programs.brightnessctl.enable config.programs.brightnessctl.package)
(lib.mkIf config.programs.php.enable config.programs.php.package)
(lib.mkIf config.programs.ntfs3g.enable config.programs.ntfs3g.package)
(lib.mkIf config.programs.zip.enable config.programs.zip.package)
(lib.mkIf config.programs.unzip.enable config.programs.unzip.package)
(lib.mkIf config.programs.python.enable config.programs.python.package)
(lib.mkIf config.programs.jdk.enable config.programs.jdk.package)
(lib.mkIf config.programs.nixfmt.enable config.programs.nixfmt.package)
quickshell (lib.optionals config.programs.winepackages.enable config.programs.winepackages.packages)
papirus-icon-theme
(lib.mkIf config.programs.quickshell.enable config.programs.quickshell.package)
(lib.mkIf config.programs.papirus-icons.enable config.programs.papirus-icons.package)
] ]
++ ( ++ (lib.optionals config.programs.kde-packages.enable config.programs.kde-packages.packages)
with pkgs; ++ (lib.optionals config.programs.r-tensorflow.enable [ config.programs.r-tensorflow.package ])
with kdePackages; ++ (lib.optionals (
[ config.programs.hyprland-portals.enable && config.device.wm.hyprland.enable
kservice ) config.programs.hyprland-portals.packages);
dolphin
kate
qt5compat
qtdeclarative
qtimageformats
qtsvg
qtmultimedia
kde-gtk-config
qtdeclarative
kirigami
ksvg
qtbase
plasma5support
qttools
plasma-sdk
]
)
++ (with rPackages; [
tensorflow
])
++ (lib.optionals config.device.wm.hyprland.enable (
with pkgs;
[
xdg-desktop-portal
xdg-desktop-portal-wlr
xdg-desktop-portal-hyprland
]
));
} }

View file

@ -1,4 +1,7 @@
{ lib, ... }: { { lib, ... }:
{
imports = [ ./programs.nix ];
options.device = { options.device = {
flatpak.enable = lib.mkEnableOption "flatpak"; flatpak.enable = lib.mkEnableOption "flatpak";
flake-name = lib.mkOption { flake-name = lib.mkOption {

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