2024-08-03 20:40:07 +02:00
|
|
|
{
|
|
|
|
nix-config,
|
|
|
|
pkgs,
|
|
|
|
config,
|
|
|
|
lib,
|
|
|
|
...
|
|
|
|
}:
|
2023-06-11 15:51:26 +02:00
|
|
|
|
2024-04-04 11:34:30 +02:00
|
|
|
let
|
2024-06-21 03:47:41 +02:00
|
|
|
inherit (lib.types) float int;
|
2024-06-15 16:46:45 +02:00
|
|
|
inherit (config.modules.system) username;
|
2024-08-03 19:28:03 +02:00
|
|
|
inherit (config.lib.stylix.colors.withHashtag) base00;
|
2024-04-05 19:28:23 +02:00
|
|
|
inherit (nix-config.packages.${pkgs.system}) aleo-fonts;
|
2024-04-09 15:19:29 +02:00
|
|
|
inherit (builtins) attrValues;
|
2024-04-04 17:00:17 +02:00
|
|
|
|
2024-08-03 20:40:07 +02:00
|
|
|
inherit (lib)
|
|
|
|
mkEnableOption
|
|
|
|
mkIf
|
|
|
|
mkMerge
|
|
|
|
mkOption
|
|
|
|
;
|
|
|
|
|
|
|
|
inherit (cfg)
|
|
|
|
bloat
|
|
|
|
gnome
|
|
|
|
plasma
|
2024-08-09 03:12:20 +02:00
|
|
|
dwm
|
2024-08-03 20:40:07 +02:00
|
|
|
container
|
|
|
|
opacity
|
|
|
|
fontSize
|
|
|
|
graphical
|
|
|
|
;
|
|
|
|
|
|
|
|
inherit (pkgs)
|
|
|
|
phinger-cursors
|
|
|
|
noto-fonts-cjk-sans
|
|
|
|
maple-mono
|
|
|
|
noto-fonts-emoji
|
|
|
|
stdenvNoCC
|
|
|
|
imagemagick
|
|
|
|
;
|
|
|
|
|
2024-07-18 17:02:07 +02:00
|
|
|
stylix-background = stdenvNoCC.mkDerivation {
|
|
|
|
pname = "stylix-background";
|
|
|
|
version = base00;
|
|
|
|
|
|
|
|
dontUnpack = true;
|
|
|
|
|
2024-08-03 20:40:07 +02:00
|
|
|
nativeBuildInputs = [ imagemagick ];
|
2024-07-18 17:02:07 +02:00
|
|
|
|
|
|
|
postInstall = ''
|
|
|
|
mkdir -p $out
|
2024-08-03 19:28:03 +02:00
|
|
|
magick -size 1x1 xc:${base00} $out/wallpaper.png
|
2024-07-18 17:02:07 +02:00
|
|
|
'';
|
|
|
|
};
|
|
|
|
|
2024-04-04 11:34:30 +02:00
|
|
|
cfg = config.modules.desktop;
|
|
|
|
in
|
|
|
|
{
|
2024-04-05 15:36:21 +02:00
|
|
|
imports = attrValues {
|
2024-04-05 16:09:51 +02:00
|
|
|
inherit (nix-config.inputs.home-manager.nixosModules) home-manager;
|
|
|
|
inherit (nix-config.inputs.stylix.nixosModules) stylix;
|
2024-04-05 15:36:21 +02:00
|
|
|
};
|
|
|
|
|
2024-04-04 11:34:30 +02:00
|
|
|
options.modules.desktop = {
|
2024-04-07 18:30:50 +02:00
|
|
|
opacity = mkOption {
|
|
|
|
type = float;
|
|
|
|
default = 0.95;
|
|
|
|
};
|
|
|
|
|
|
|
|
fontSize = mkOption {
|
|
|
|
type = int;
|
|
|
|
default = 11;
|
|
|
|
};
|
|
|
|
|
2024-05-28 21:22:25 +02:00
|
|
|
bloat = mkEnableOption "GUI applications";
|
2024-04-06 14:30:32 +02:00
|
|
|
gnome = mkEnableOption "GNOME specialization";
|
|
|
|
plasma = mkEnableOption "Plasma specialization";
|
2024-08-09 03:12:20 +02:00
|
|
|
dwm = mkEnableOption "dwm specialization";
|
2024-04-07 01:35:51 +02:00
|
|
|
container = mkEnableOption "disable some options for container performance";
|
2024-05-19 17:18:36 +02:00
|
|
|
graphical = mkEnableOption "xserver for graphical containers";
|
2024-01-13 06:38:42 +01:00
|
|
|
};
|
2023-06-17 15:42:47 +02:00
|
|
|
|
2024-04-05 02:05:08 +02:00
|
|
|
config = {
|
2024-07-15 17:37:30 +02:00
|
|
|
hardware.graphics.enable32Bit = true;
|
2024-04-04 18:19:41 +02:00
|
|
|
|
2024-04-04 16:13:02 +02:00
|
|
|
programs = {
|
2024-07-14 23:09:46 +02:00
|
|
|
hyprland.enable = mkIf (!container) true;
|
2024-07-15 17:37:30 +02:00
|
|
|
cdemu.enable = true;
|
2024-04-04 16:13:02 +02:00
|
|
|
|
2024-07-15 17:37:30 +02:00
|
|
|
thunar = {
|
2024-04-04 16:13:02 +02:00
|
|
|
enable = true;
|
2024-04-05 19:28:23 +02:00
|
|
|
|
2024-08-03 20:40:07 +02:00
|
|
|
plugins = with pkgs.xfce; [ thunar-volman ];
|
2024-04-04 16:13:02 +02:00
|
|
|
};
|
|
|
|
};
|
2023-05-17 15:23:38 +02:00
|
|
|
|
2024-07-14 22:54:23 +02:00
|
|
|
i18n.inputMethod = {
|
2024-07-16 18:25:04 +02:00
|
|
|
enable = true;
|
|
|
|
type = "fcitx5";
|
2024-04-04 03:39:13 +02:00
|
|
|
|
2024-04-04 11:34:30 +02:00
|
|
|
fcitx5 = {
|
|
|
|
addons = with pkgs; [ fcitx5-mozc ];
|
|
|
|
waylandFrontend = true;
|
|
|
|
};
|
|
|
|
};
|
2024-04-04 03:39:13 +02:00
|
|
|
|
2024-07-22 07:06:54 +02:00
|
|
|
virtualisation.libvirtd = {
|
|
|
|
enable = true;
|
|
|
|
onBoot = "ignore";
|
|
|
|
};
|
|
|
|
|
2024-04-04 14:11:11 +02:00
|
|
|
services = {
|
2024-07-15 17:37:30 +02:00
|
|
|
udisks2 = {
|
2024-04-04 14:11:11 +02:00
|
|
|
enable = true;
|
|
|
|
mountOnMedia = true;
|
|
|
|
};
|
2024-04-04 05:02:44 +02:00
|
|
|
|
2024-05-19 17:18:36 +02:00
|
|
|
xserver = mkIf (!container || graphical) {
|
2024-04-04 11:34:30 +02:00
|
|
|
enable = true;
|
2024-08-03 20:40:07 +02:00
|
|
|
excludePackages = with pkgs; [ xterm ];
|
2024-04-04 05:02:44 +02:00
|
|
|
};
|
|
|
|
|
2024-07-15 17:37:30 +02:00
|
|
|
pipewire = {
|
2024-04-04 14:11:11 +02:00
|
|
|
enable = true;
|
|
|
|
|
|
|
|
alsa = {
|
|
|
|
enable = true;
|
2024-07-15 17:37:30 +02:00
|
|
|
support32Bit = true;
|
2024-04-04 14:11:11 +02:00
|
|
|
};
|
|
|
|
|
|
|
|
pulse.enable = true;
|
|
|
|
};
|
2024-04-04 16:13:02 +02:00
|
|
|
|
2024-07-14 22:54:23 +02:00
|
|
|
greetd = mkIf (!container) {
|
2024-04-11 11:34:49 +02:00
|
|
|
enable = true;
|
|
|
|
restart = false;
|
|
|
|
|
|
|
|
settings = {
|
|
|
|
default_session = {
|
|
|
|
command = "${pkgs.greetd.tuigreet}/bin/tuigreet --time --cmd Hyprland --time-format '%F %R'";
|
|
|
|
user = "greeter";
|
|
|
|
};
|
|
|
|
|
|
|
|
initial_session = {
|
2024-07-15 17:37:30 +02:00
|
|
|
command = "${pkgs.hyprland}/bin/Hyprland";
|
2024-04-11 11:34:49 +02:00
|
|
|
user = username;
|
|
|
|
};
|
|
|
|
};
|
|
|
|
};
|
|
|
|
|
2024-04-04 16:13:02 +02:00
|
|
|
tumbler.enable = true;
|
|
|
|
gvfs.enable = true;
|
|
|
|
gnome.gnome-keyring.enable = true;
|
2024-05-13 17:04:41 +02:00
|
|
|
upower.enable = true;
|
2024-04-04 05:02:44 +02:00
|
|
|
};
|
2024-04-04 05:09:28 +02:00
|
|
|
|
2024-04-05 02:02:51 +02:00
|
|
|
environment.systemPackages = mkMerge [
|
|
|
|
(mkIf bloat (attrValues {
|
|
|
|
inherit (pkgs)
|
|
|
|
mullvad-browser
|
|
|
|
spek
|
|
|
|
audacity
|
|
|
|
gimp
|
|
|
|
libreoffice
|
|
|
|
element-desktop
|
|
|
|
signal-desktop
|
|
|
|
qbittorrent
|
2024-06-13 19:20:24 +02:00
|
|
|
popsicle
|
2024-04-06 16:19:02 +02:00
|
|
|
satty
|
|
|
|
srb2
|
2024-06-16 12:20:51 +02:00
|
|
|
ringracers
|
2024-04-06 17:35:34 +02:00
|
|
|
jamesdsp
|
2024-07-16 18:27:17 +02:00
|
|
|
texliveFull
|
2024-07-22 07:06:54 +02:00
|
|
|
vagrant
|
2024-04-05 17:26:22 +02:00
|
|
|
;
|
2024-04-05 02:02:51 +02:00
|
|
|
|
2024-06-20 18:19:19 +02:00
|
|
|
inherit (nix-config.inputs.sakaya.packages.${pkgs.system}) sakaya;
|
2024-06-20 19:41:34 +02:00
|
|
|
}))
|
|
|
|
|
2024-04-05 13:04:22 +02:00
|
|
|
(attrValues {
|
2024-07-01 05:37:29 +02:00
|
|
|
inherit (pkgs)
|
|
|
|
anki
|
|
|
|
pulseaudio
|
|
|
|
glib
|
|
|
|
grim
|
2024-08-01 22:26:02 +02:00
|
|
|
wl-clipboard-rs
|
2024-07-01 05:37:29 +02:00
|
|
|
;
|
2024-04-05 13:04:22 +02:00
|
|
|
})
|
2024-04-04 05:09:28 +02:00
|
|
|
];
|
|
|
|
|
2024-08-03 20:40:07 +02:00
|
|
|
nixpkgs.config.allowUnfreePredicate = pkg: builtins.elem (lib.getName pkg) [ "vagrant" ];
|
2024-07-22 07:06:54 +02:00
|
|
|
|
2024-04-04 11:34:30 +02:00
|
|
|
fonts = {
|
|
|
|
enableDefaultPackages = false;
|
|
|
|
|
2024-08-03 20:40:07 +02:00
|
|
|
packages =
|
|
|
|
[
|
|
|
|
noto-fonts-cjk-sans
|
|
|
|
noto-fonts-emoji
|
|
|
|
maple-mono
|
|
|
|
aleo-fonts
|
|
|
|
]
|
|
|
|
++ (with pkgs; [
|
|
|
|
noto-fonts
|
|
|
|
noto-fonts-cjk-serif
|
|
|
|
font-awesome
|
|
|
|
(nerdfonts.override { fonts = [ "Noto" ]; })
|
|
|
|
kanji-stroke-order-font
|
|
|
|
liberation_ttf
|
|
|
|
]);
|
2024-04-04 11:34:30 +02:00
|
|
|
|
|
|
|
fontconfig = {
|
|
|
|
defaultFonts = {
|
2024-08-03 20:40:07 +02:00
|
|
|
serif = [
|
|
|
|
"Noto Serif CJK JP"
|
|
|
|
"Noto Serif"
|
|
|
|
];
|
|
|
|
|
|
|
|
sansSerif = [
|
|
|
|
"Noto Sans CJK JP"
|
|
|
|
"Noto Sans"
|
|
|
|
];
|
|
|
|
|
|
|
|
monospace = [
|
|
|
|
"Noto Sans Mono CJK JP"
|
|
|
|
"Noto Sans Mono"
|
|
|
|
];
|
2024-04-04 11:34:30 +02:00
|
|
|
};
|
|
|
|
|
|
|
|
allowBitmaps = false;
|
|
|
|
};
|
2024-04-04 05:09:28 +02:00
|
|
|
};
|
2024-04-06 01:01:41 +02:00
|
|
|
|
2024-04-04 17:00:17 +02:00
|
|
|
stylix = {
|
2024-07-05 20:09:52 +02:00
|
|
|
enable = true;
|
2024-07-18 17:02:07 +02:00
|
|
|
image = "${stylix-background}/wallpaper.png";
|
2024-04-04 17:00:17 +02:00
|
|
|
polarity = "dark";
|
2024-06-21 03:47:41 +02:00
|
|
|
base16Scheme = ../assets/selenized-black.yaml;
|
2024-04-04 17:00:17 +02:00
|
|
|
|
|
|
|
opacity = {
|
|
|
|
terminal = opacity;
|
|
|
|
popups = opacity;
|
|
|
|
};
|
|
|
|
|
2024-04-07 18:30:50 +02:00
|
|
|
cursor = {
|
2024-04-04 17:00:17 +02:00
|
|
|
package = phinger-cursors;
|
2024-04-19 03:28:10 +02:00
|
|
|
name = "phinger-cursors";
|
2024-04-04 17:00:17 +02:00
|
|
|
size = 24;
|
|
|
|
};
|
|
|
|
|
2024-04-07 18:30:50 +02:00
|
|
|
fonts = {
|
2024-04-04 17:00:17 +02:00
|
|
|
serif = {
|
2024-04-05 19:28:23 +02:00
|
|
|
package = aleo-fonts;
|
2024-04-04 17:00:17 +02:00
|
|
|
name = "Aleo";
|
|
|
|
};
|
|
|
|
|
2024-07-15 17:38:42 +02:00
|
|
|
sansSerif = {
|
|
|
|
package = noto-fonts-cjk-sans;
|
|
|
|
name = "Noto Sans CJK JP";
|
|
|
|
};
|
2024-04-04 17:00:17 +02:00
|
|
|
|
|
|
|
monospace = {
|
|
|
|
package = maple-mono;
|
|
|
|
name = "Maple Mono";
|
|
|
|
};
|
|
|
|
|
|
|
|
emoji = {
|
|
|
|
package = noto-fonts-emoji;
|
|
|
|
name = "Noto Color Emoji";
|
|
|
|
};
|
|
|
|
|
|
|
|
sizes = {
|
2024-04-07 18:30:50 +02:00
|
|
|
applications = fontSize;
|
|
|
|
desktop = fontSize;
|
|
|
|
popups = fontSize;
|
|
|
|
terminal = fontSize;
|
2024-04-04 17:00:17 +02:00
|
|
|
};
|
|
|
|
};
|
|
|
|
};
|
2024-04-06 14:30:32 +02:00
|
|
|
|
|
|
|
specialisation = {
|
2024-08-03 20:40:07 +02:00
|
|
|
gnome = mkIf gnome { configuration.imports = [ ../specializations/gnome.nix ]; };
|
|
|
|
plasma = mkIf plasma { configuration.imports = [ ../specializations/plasma.nix ]; };
|
2024-08-09 03:12:20 +02:00
|
|
|
dwm = mkIf dwm { configuration.imports = [ ../specializations/dwm.nix ]; };
|
2024-04-06 14:30:32 +02:00
|
|
|
};
|
2024-04-04 05:09:28 +02:00
|
|
|
};
|
2023-05-17 01:10:15 +02:00
|
|
|
}
|