mirror of
https://github.com/donovanglover/nix-config.git
synced 2024-11-26 10:13:25 +01:00
b368817c52
This change makes it possible to import the modules that are required from the flake inputs in the output modules themselves, thus preventing users from having to manually import those modules. This simplifies things overall and was made possible by the specialArgs option that allowed these flake inputs to be passed into our container.
201 lines
4.2 KiB
Nix
201 lines
4.2 KiB
Nix
{ home-manager, stylix, pkgs, config, lib, ... }:
|
|
|
|
let
|
|
inherit (lib) mkEnableOption mkIf mkMerge;
|
|
inherit (config.modules.system) username;
|
|
inherit (cfg) japanese bloat wine;
|
|
inherit (builtins) attrValues;
|
|
|
|
theme = "monokai";
|
|
opacity = 0.95;
|
|
font-size = 11;
|
|
|
|
cfg = config.modules.desktop;
|
|
in
|
|
{
|
|
imports = attrValues {
|
|
inherit (home-manager.nixosModules) home-manager;
|
|
inherit (stylix.nixosModules) stylix;
|
|
};
|
|
|
|
options.modules.desktop = {
|
|
japanese = mkEnableOption "Japanese support (fcitx, anki, kanjidraw, etc.)";
|
|
bloat = mkEnableOption "GUI applications like Logseq";
|
|
wine = mkEnableOption "wine support";
|
|
};
|
|
|
|
config = {
|
|
hardware.opengl.driSupport32Bit = mkIf wine true;
|
|
|
|
programs = {
|
|
hyprland.enable = true;
|
|
cdemu.enable = mkIf wine true;
|
|
|
|
thunar = {
|
|
enable = true;
|
|
plugins = attrValues {
|
|
inherit (pkgs.xfce) thunar-volman;
|
|
};
|
|
};
|
|
};
|
|
|
|
i18n.inputMethod = mkIf japanese {
|
|
enabled = "fcitx5";
|
|
|
|
fcitx5 = {
|
|
addons = with pkgs; [ fcitx5-mozc ];
|
|
waylandFrontend = true;
|
|
};
|
|
};
|
|
|
|
services = {
|
|
udisks2 = {
|
|
enable = true;
|
|
mountOnMedia = true;
|
|
};
|
|
|
|
xserver = {
|
|
enable = true;
|
|
excludePackages = [ pkgs.xterm ];
|
|
};
|
|
|
|
pipewire = {
|
|
enable = true;
|
|
|
|
alsa = {
|
|
enable = true;
|
|
support32Bit = true;
|
|
};
|
|
|
|
pulse.enable = true;
|
|
};
|
|
|
|
tumbler.enable = true;
|
|
gvfs.enable = true;
|
|
gnome.gnome-keyring.enable = true;
|
|
};
|
|
|
|
environment.systemPackages = mkMerge [
|
|
(attrValues {
|
|
inherit (pkgs) wget jq eza fd fzf ripgrep;
|
|
})
|
|
|
|
(mkIf japanese (attrValues {
|
|
inherit (pkgs) anki kanjidraw;
|
|
}))
|
|
|
|
(mkIf bloat (attrValues {
|
|
inherit (pkgs)
|
|
logseq
|
|
mullvad-browser
|
|
spek
|
|
audacity
|
|
gimp
|
|
sqlitebrowser
|
|
qdirstat
|
|
libreoffice
|
|
krita
|
|
element-desktop
|
|
signal-desktop
|
|
ungoogled-chromium
|
|
qbittorrent
|
|
obs-studio
|
|
;
|
|
}))
|
|
|
|
(attrValues {
|
|
inherit (pkgs) pulseaudio glib;
|
|
inherit (pkgs.xfce) exo;
|
|
})
|
|
];
|
|
|
|
services.greetd = {
|
|
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;
|
|
};
|
|
};
|
|
};
|
|
|
|
fonts = {
|
|
enableDefaultPackages = false;
|
|
|
|
packages = with pkgs; [
|
|
noto-fonts
|
|
noto-fonts-cjk-sans
|
|
noto-fonts-cjk-serif
|
|
noto-fonts-emoji
|
|
maple-mono
|
|
font-awesome
|
|
nerdfonts
|
|
kanji-stroke-order-font
|
|
liberation_ttf
|
|
];
|
|
|
|
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 = "${pkgs.base16-schemes}/share/themes/${theme}.yaml";
|
|
|
|
opacity = {
|
|
terminal = opacity;
|
|
popups = opacity;
|
|
};
|
|
|
|
cursor = with pkgs; {
|
|
package = phinger-cursors;
|
|
name = "phinger-cursors";
|
|
size = 24;
|
|
};
|
|
|
|
fonts = with pkgs; {
|
|
serif = {
|
|
package = (callPackage ../packages/aleo-fonts.nix { });
|
|
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 = font-size;
|
|
desktop = font-size;
|
|
popups = font-size;
|
|
terminal = font-size;
|
|
};
|
|
};
|
|
};
|
|
};
|
|
}
|