mirror of
https://github.com/donovanglover/nix-config.git
synced 2024-11-22 16:23:57 +01:00
266 lines
5.9 KiB
Nix
266 lines
5.9 KiB
Nix
{ nix-config, pkgs, config, lib, ... }:
|
|
|
|
let
|
|
inherit (lib) mkEnableOption mkIf mkMerge mkOption;
|
|
inherit (lib.types) float int;
|
|
inherit (config.modules.system) username;
|
|
inherit (cfg) bloat gnome plasma container opacity fontSize graphical phone phosh;
|
|
inherit (nix-config.packages.${pkgs.system}) aleo-fonts;
|
|
inherit (pkgs) phinger-cursors noto-fonts-cjk-sans maple-mono noto-fonts-emoji;
|
|
inherit (builtins) attrValues;
|
|
|
|
cfg = config.modules.desktop;
|
|
in
|
|
{
|
|
imports = attrValues {
|
|
inherit (nix-config.inputs.home-manager.nixosModules) home-manager;
|
|
inherit (nix-config.inputs.stylix.nixosModules) stylix;
|
|
};
|
|
|
|
options.modules.desktop = {
|
|
opacity = mkOption {
|
|
type = float;
|
|
default = 0.95;
|
|
};
|
|
|
|
fontSize = mkOption {
|
|
type = int;
|
|
default = 11;
|
|
};
|
|
|
|
bloat = mkEnableOption "GUI applications";
|
|
phone = mkEnableOption "Phone support";
|
|
gnome = mkEnableOption "GNOME specialization";
|
|
plasma = mkEnableOption "Plasma specialization";
|
|
container = mkEnableOption "disable some options for container performance";
|
|
graphical = mkEnableOption "xserver for graphical containers";
|
|
phosh = mkEnableOption "use phosh instead of hyprland";
|
|
};
|
|
|
|
config = {
|
|
hardware.graphics.enable32Bit = mkIf (!phone) true;
|
|
|
|
programs = {
|
|
hyprland.enable = mkIf (!container && !phone) true;
|
|
cdemu.enable = mkIf (!phone) true;
|
|
|
|
thunar = {
|
|
enable = true;
|
|
|
|
plugins = attrValues {
|
|
inherit (pkgs.xfce) thunar-volman;
|
|
};
|
|
};
|
|
};
|
|
|
|
i18n.inputMethod = mkIf (!phosh) {
|
|
enabled = "fcitx5";
|
|
|
|
fcitx5 = {
|
|
addons = with pkgs; [ fcitx5-mozc ];
|
|
waylandFrontend = true;
|
|
};
|
|
};
|
|
|
|
services = {
|
|
udisks2 = mkIf (!phone) {
|
|
enable = true;
|
|
mountOnMedia = true;
|
|
};
|
|
|
|
xserver = mkIf (!container || graphical) {
|
|
enable = true;
|
|
excludePackages = [ pkgs.xterm ];
|
|
|
|
displayManager.lightdm.enable = mkIf phosh false;
|
|
|
|
desktopManager.phosh = mkIf phosh {
|
|
enable = true;
|
|
group = "users";
|
|
user = username;
|
|
|
|
phocConfig = {
|
|
xwayland = "immediate";
|
|
};
|
|
};
|
|
};
|
|
|
|
pipewire = mkIf (!phosh) {
|
|
enable = true;
|
|
|
|
alsa = {
|
|
enable = true;
|
|
support32Bit = mkIf (!phone) true;
|
|
};
|
|
|
|
pulse.enable = true;
|
|
};
|
|
|
|
greetd = mkIf (!container && !phosh) {
|
|
enable = true;
|
|
restart = false;
|
|
|
|
settings = {
|
|
default_session = {
|
|
command = "${pkgs.greetd.tuigreet}/bin/tuigreet --time --cmd Hyprland --time-format '%F %R'";
|
|
user = "greeter";
|
|
};
|
|
|
|
initial_session = {
|
|
command = "${pkgs.hyprland}/bin/Hyprland";
|
|
user = username;
|
|
};
|
|
};
|
|
};
|
|
|
|
tumbler.enable = true;
|
|
gvfs.enable = true;
|
|
gnome.gnome-keyring.enable = true;
|
|
upower.enable = true;
|
|
};
|
|
|
|
environment.systemPackages = mkMerge [
|
|
(mkIf bloat (attrValues {
|
|
inherit (pkgs)
|
|
mullvad-browser
|
|
spek
|
|
audacity
|
|
gimp
|
|
sqlitebrowser
|
|
qdirstat
|
|
libreoffice
|
|
krita
|
|
element-desktop
|
|
signal-desktop
|
|
qbittorrent
|
|
obs-studio
|
|
popsicle
|
|
satty
|
|
aaaaxy
|
|
srb2
|
|
ringracers
|
|
jamesdsp
|
|
;
|
|
}))
|
|
|
|
(mkIf (!phone) (attrValues {
|
|
inherit (nix-config.inputs.sakaya.packages.${pkgs.system}) sakaya;
|
|
inherit (pkgs) texliveFull;
|
|
}))
|
|
|
|
(mkIf phone (attrValues {
|
|
inherit (pkgs.gnome)
|
|
eog
|
|
geary
|
|
gnome-contacts
|
|
gnome-sound-recorder
|
|
gnome-maps
|
|
;
|
|
inherit (pkgs)
|
|
gurk-rs
|
|
android-tools
|
|
chatty
|
|
gnome-console
|
|
megapixels
|
|
fractal
|
|
g4music
|
|
livi
|
|
papers
|
|
phosh-mobile-settings
|
|
resources
|
|
tuba
|
|
caerbannog
|
|
;
|
|
}))
|
|
|
|
(attrValues {
|
|
inherit (pkgs) anki kanjidraw pulseaudio glib;
|
|
inherit (pkgs.xfce) exo;
|
|
})
|
|
];
|
|
|
|
fonts = {
|
|
enableDefaultPackages = false;
|
|
|
|
packages = with pkgs; [
|
|
noto-fonts
|
|
noto-fonts-cjk-sans
|
|
noto-fonts-cjk-serif
|
|
noto-fonts-emoji
|
|
maple-mono
|
|
font-awesome
|
|
(nerdfonts.override { fonts = [ "Noto" ]; })
|
|
kanji-stroke-order-font
|
|
liberation_ttf
|
|
aleo-fonts
|
|
];
|
|
|
|
fontconfig = {
|
|
defaultFonts = {
|
|
serif = [ "Noto Serif CJK JP" "Noto Serif" ];
|
|
sansSerif = [ "Noto Sans CJK JP" "Noto Sans" ];
|
|
monospace = [ "Noto Sans Mono CJK JP" "Noto Sans Mono" ];
|
|
};
|
|
|
|
allowBitmaps = false;
|
|
};
|
|
};
|
|
|
|
stylix = {
|
|
image = ../assets/wallpaper.png;
|
|
polarity = "dark";
|
|
base16Scheme = ../assets/selenized-black.yaml;
|
|
|
|
opacity = {
|
|
terminal = opacity;
|
|
popups = opacity;
|
|
};
|
|
|
|
cursor = {
|
|
package = phinger-cursors;
|
|
name = "phinger-cursors";
|
|
size = 24;
|
|
};
|
|
|
|
fonts = {
|
|
serif = {
|
|
package = aleo-fonts;
|
|
name = "Aleo";
|
|
};
|
|
|
|
sansSerif = {
|
|
package = noto-fonts-cjk-sans;
|
|
name = "Noto Sans CJK JP";
|
|
};
|
|
|
|
monospace = {
|
|
package = maple-mono;
|
|
name = "Maple Mono";
|
|
};
|
|
|
|
emoji = {
|
|
package = noto-fonts-emoji;
|
|
name = "Noto Color Emoji";
|
|
};
|
|
|
|
sizes = {
|
|
applications = fontSize;
|
|
desktop = fontSize;
|
|
popups = fontSize;
|
|
terminal = fontSize;
|
|
};
|
|
};
|
|
};
|
|
|
|
specialisation = {
|
|
gnome = mkIf gnome {
|
|
configuration.imports = [ ../specializations/gnome.nix ];
|
|
};
|
|
|
|
plasma = mkIf plasma {
|
|
configuration.imports = [ ../specializations/plasma.nix ];
|
|
};
|
|
};
|
|
};
|
|
}
|