This commit is contained in:
Asaki Yuki 2026-04-13 19:06:24 +07:00
parent da7459efbb
commit cf260a566e
6 changed files with 2 additions and 2 deletions

View file

@ -0,0 +1,25 @@
{ lib, ... }:
{
imports = [
./programs.nix
./file.nix
./environment.nix
./programs.nix
./hardware.nix
];
options.device = {
flatpak.enable = lib.mkEnableOption "flatpak";
flake-name = lib.mkOption {
type = lib.types.str;
default = "desktop";
description = "Flake name for quick rebuild";
};
cursors = lib.mkOption {
type = lib.types.str;
default = "aemeath";
description = "Cursor theme to use for the desktop";
};
};
}

View file

@ -0,0 +1,34 @@
{ lib, ... }:
{
options.device = {
dm = {
sddm = {
enable = lib.mkEnableOption "sddm";
theme = lib.mkOption {
type = lib.types.str;
default = "hyprland_kath";
description = "astronaut theme name";
};
};
gdm.enable = lib.mkEnableOption "gdm";
};
de = {
kdePlasma.enable = lib.mkEnableOption "kde plasma";
gnome.enable = lib.mkEnableOption "gnome";
};
wm = {
niri.enable = lib.mkEnableOption "niri";
hyprland = {
enable = lib.mkEnableOption "hyprland";
monitors = lib.mkOption {
type = lib.types.listOf lib.types.attrs;
default = [];
description = "Monitors settings";
};
};
};
};
}

24
options/system/file.nix Normal file
View file

@ -0,0 +1,24 @@
{ lib, ... }:
{
options.device.files = {
symlink = lib.mkOption {
default = { };
type = lib.types.attrsOf lib.types.str;
};
source = lib.mkOption {
default = { };
type = lib.types.attrsOf lib.types.path;
};
force = lib.mkOption {
default = { };
type = lib.types.attrsOf lib.types.bool;
};
mkForce = lib.mkOption {
default = { };
type = lib.types.attrsOf lib.types.bool;
};
};
}

View file

@ -0,0 +1,5 @@
{ lib, ... }: {
options.device = {
bluetooth.enable = lib.mkEnableOption "bluetooth";
};
}

135
options/system/programs.nix Normal file
View file

@ -0,0 +1,135 @@
{ lib, pkgs, ... }:
{
options.device.programs = {
terminal = lib.mkOption {
type = lib.types.str;
default = "ghostty";
description = "Terminal";
};
nixcord.enable = lib.mkEnableOption "nixcord";
tmux.enable = lib.mkEnableOption "tmux";
starship.enable = lib.mkEnableOption "starship";
fastfetch.enable = lib.mkEnableOption "fastfetch";
steam.enable = lib.mkEnableOption "steam";
obs-studio.enable = lib.mkEnableOption "Obs Studio";
cider-2.enable = lib.mkEnableOption "Cider 2";
};
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
];
};
};
};
}