From 7411f57e2a835ace5923d625b0fc5305e6422dad Mon Sep 17 00:00:00 2001 From: Asaki Yuki Date: Mon, 13 Apr 2026 11:25:06 +0700 Subject: [PATCH] add programs options for system --- home/asakiyuki/configuration.nix | 7 +- host/desktop/default.nix | 9 +- host/desktop/programs.nix | 24 ++++++ host/server/default.nix | 4 + modules/features/home/packages.nix | 37 ++++----- modules/features/system/packages.nix | 75 ++++++----------- options/common/default.nix | 21 +++-- options/common/programs.nix | 118 +++++++++++++++++++++++++++ options/home/programs.nix | 32 ++++---- 9 files changed, 219 insertions(+), 108 deletions(-) create mode 100644 host/desktop/programs.nix create mode 100644 host/server/default.nix create mode 100644 options/common/programs.nix diff --git a/home/asakiyuki/configuration.nix b/home/asakiyuki/configuration.nix index 02f850c..c775af0 100644 --- a/home/asakiyuki/configuration.nix +++ b/home/asakiyuki/configuration.nix @@ -53,23 +53,20 @@ in programs = { catppuccin.enable = true; antigravity.enable = true; - hyprshot.enable = true; prismlauncher.enable = true; - proton-ge.enable = true; vlc.enable = true; gimp.enable = true; libreoffice.enable = true; - lutris.enable = true; osu.enable = true; lmstudio.enable = true; blender.enable = true; xprop.enable = true; - bluetuith.enable = true; pavucontrol.enable = true; nwg-look.enable = true; - proton-apps.enable = true; hytale.enable = true; cider.enable = true; + proton-ge.enable = true; + proton-apps.enable = true; }; }; } diff --git a/host/desktop/default.nix b/host/desktop/default.nix index 19bacf2..089cd27 100644 --- a/host/desktop/default.nix +++ b/host/desktop/default.nix @@ -1,8 +1,10 @@ { libs, ... }: { imports = [ + ./programs.nix + (libs.root "/modules/hardware/default.nix") - + (libs.root "/modules/fonts.nix") (libs.root "/modules/features/system/packages.nix") @@ -21,10 +23,10 @@ (libs.root "/modules/features/system/udisks2.nix") (libs.root "/modules/features/system/dconf.nix") (libs.root "/modules/features/system/cloudflare.nix") - + (libs.root "/modules/services/default.nix") (libs.root "/modules/home-manager.nix") - + (libs.root "/options/desktop/default.nix") (libs.root "/overlays/nixpkgs.nix") ]; @@ -32,4 +34,3 @@ xdg.menus.enable = true; services.dbus.enable = true; } - diff --git a/host/desktop/programs.nix b/host/desktop/programs.nix new file mode 100644 index 0000000..b0b4291 --- /dev/null +++ b/host/desktop/programs.nix @@ -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; + }; +} diff --git a/host/server/default.nix b/host/server/default.nix new file mode 100644 index 0000000..facb35d --- /dev/null +++ b/host/server/default.nix @@ -0,0 +1,4 @@ +{ ... }: +{ + +} diff --git a/modules/features/home/packages.nix b/modules/features/home/packages.nix index 2a1de84..7701bdb 100644 --- a/modules/features/home/packages.nix +++ b/modules/features/home/packages.nix @@ -10,30 +10,25 @@ home.packages = [ (lib.mkIf config.programs.catppuccin.enable config.programs.catppuccin.package) - (lib.mkIf config.programs.hyprshot.enable config.programs.hyprshot.package) - (lib.mkIf config.programs.antigravity.enable config.programs.antigravity.package) - (lib.mkIf config.programs.prismlauncher.enable config.programs.prismlauncher.package) - (lib.mkIf config.programs.proton-ge.enable config.programs.proton-ge.protonup-qt) - (lib.mkIf config.programs.proton-ge.enable config.programs.proton-ge.protonplus) - (lib.mkIf config.programs.vlc.enable config.programs.vlc.package) - (lib.mkIf config.programs.gimp.enable config.programs.gimp.package) - (lib.mkIf config.programs.libreoffice.enable config.programs.libreoffice.package) - (lib.mkIf config.programs.lutris.enable config.programs.lutris.package) - (lib.mkIf config.programs.osu.enable config.programs.osu.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.packages.antigravity.enable config.programs.packages.antigravity.package) + (lib.mkIf config.programs.packages.prismlauncher.enable config.programs.packages.prismlauncher.package) + (lib.optionals config.programs.proton-ge.enable config.programs.proton-ge.packages) + (lib.mkIf config.programs.packages.vlc.enable config.programs.packages.vlc.package) + (lib.mkIf config.programs.packages.gimp.enable config.programs.packages.gimp.package) + (lib.mkIf config.programs.packages.libreoffice.enable config.programs.packages.libreoffice.package) + (lib.mkIf config.programs.packages.osu.enable config.programs.packages.osu.package) + (lib.mkIf config.programs.packages.lmstudio.enable config.programs.packages.lmstudio.package) + (lib.mkIf config.programs.packages.blender.enable config.programs.packages.blender.package) + (lib.mkIf config.programs.packages.xprop.enable config.programs.packages.xprop.package) - (lib.mkIf config.programs.bluetuith.enable config.programs.bluetuith.package) - (lib.mkIf config.programs.pavucontrol.enable config.programs.pavucontrol.package) - (lib.mkIf config.programs.nwg-look.enable config.programs.nwg-look.package) + (lib.mkIf config.programs.packages.pavucontrol.enable config.programs.packages.pavucontrol.package) + (lib.mkIf config.programs.packages.nwg-look.enable config.programs.packages.nwg-look.package) - (lib.mkIf config.programs.proton-apps.enable config.programs.proton-apps.pass) - (lib.mkIf config.programs.proton-apps.enable config.programs.proton-apps.authenticator) + (lib.optionals config.programs.proton-apps.enable config.programs.proton-apps.packages) - (lib.mkIf config.programs.hytale.enable config.programs.hytale.package) + (lib.mkIf config.programs.packages.hytale.enable config.programs.packages.hytale.package) (lib.mkIf ( - config.programs.cider.enable && osconfig.device.programs.cider-2.enable - ) config.programs.cider.package) + config.programs.packages.cider.enable && osconfig.device.programs.cider-2.enable + ) config.programs.packages.cider.package) ]; } diff --git a/modules/features/system/packages.nix b/modules/features/system/packages.nix index dea3737..3a310f7 100644 --- a/modules/features/system/packages.nix +++ b/modules/features/system/packages.nix @@ -2,6 +2,7 @@ pkgs, lib, config, + rPackages, ... }: { @@ -10,60 +11,30 @@ [ git vim - wget - tree btop - ffmpeg-full - nodejs - bun - brightnessctl - php - ntfs3g - zip - unzip - python3 - jdk25 - nixfmt - wine - wine64 - winetricks - protontricks + (lib.mkIf config.programs.wget.enable config.programs.wget.package) + (lib.mkIf config.programs.tree.enable config.programs.tree.package) + (lib.mkIf config.programs.ffmpeg.enable config.programs.ffmpeg.package) + (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 - papirus-icon-theme + (lib.optionals config.programs.winepackages.enable config.programs.winepackages.packages) + + (lib.mkIf config.programs.quickshell.enable config.programs.quickshell.package) + (lib.mkIf config.programs.papirus-icons.enable config.programs.papirus-icons.package) ] - ++ ( - with pkgs; - with kdePackages; - [ - kservice - 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 - ] - )); + ++ (lib.optionals config.programs.kde-packages.enable config.programs.kde-packages.packages) + ++ (lib.optionals config.programs.r-tensorflow.enable [ config.programs.r-tensorflow.package ]) + ++ (lib.optionals ( + config.programs.hyprland-portals.enable && config.device.wm.hyprland.enable + ) config.programs.hyprland-portals.packages); } diff --git a/options/common/default.nix b/options/common/default.nix index 64c67b5..f725b20 100644 --- a/options/common/default.nix +++ b/options/common/default.nix @@ -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"; }; -} \ No newline at end of file + }; +} diff --git a/options/common/programs.nix b/options/common/programs.nix new file mode 100644 index 0000000..46e1afa --- /dev/null +++ b/options/common/programs.nix @@ -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 + ]; + }; + }; + }; +} diff --git a/options/home/programs.nix b/options/home/programs.nix index 7d56568..c6b5385 100644 --- a/options/home/programs.nix +++ b/options/home/programs.nix @@ -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";