mirror of
https://github.com/donovanglover/nix-config.git
synced 2024-11-25 01:33:17 +01:00
d538e2c8fa
Since the goal of this nix-config is to make a consistent environment across any number of systems, having options goes against this. If these configuration values need to be changed, they should affect all systems using the config by default.
276 lines
5.4 KiB
Nix
276 lines
5.4 KiB
Nix
{
|
|
nix-config,
|
|
pkgs,
|
|
config,
|
|
lib,
|
|
...
|
|
}:
|
|
|
|
let
|
|
inherit (config.modules.system) username;
|
|
inherit (config.boot) isContainer;
|
|
inherit (nix-config.packages.${pkgs.system}) aleo-fonts;
|
|
inherit (builtins) attrValues;
|
|
|
|
inherit (lib)
|
|
mkEnableOption
|
|
mkIf
|
|
mkMerge
|
|
;
|
|
|
|
inherit (cfg) bloat;
|
|
|
|
stylix-background = nix-config.packages.${pkgs.system}.stylix-background.override {
|
|
color = config.lib.stylix.colors.base00;
|
|
};
|
|
|
|
opacity = 0.95;
|
|
fontSize = 11;
|
|
|
|
cfg = config.modules.desktop;
|
|
in
|
|
{
|
|
imports = attrValues {
|
|
inherit (nix-config.inputs.stylix.nixosModules) stylix;
|
|
};
|
|
|
|
options.modules.desktop = {
|
|
bloat = mkEnableOption "GUI applications";
|
|
};
|
|
|
|
config = {
|
|
hardware.graphics.enable32Bit = true;
|
|
|
|
programs = {
|
|
hyprland.enable = mkIf (!isContainer) true;
|
|
cdemu.enable = true;
|
|
|
|
thunar = {
|
|
enable = true;
|
|
|
|
plugins = with pkgs.xfce; [
|
|
thunar-volman
|
|
];
|
|
};
|
|
};
|
|
|
|
i18n.inputMethod = {
|
|
enable = true;
|
|
type = "fcitx5";
|
|
|
|
fcitx5 = {
|
|
waylandFrontend = true;
|
|
|
|
addons = with pkgs; [
|
|
fcitx5-mozc
|
|
];
|
|
};
|
|
};
|
|
|
|
services = {
|
|
udisks2 = {
|
|
enable = true;
|
|
mountOnMedia = true;
|
|
};
|
|
|
|
libinput = {
|
|
touchpad = {
|
|
naturalScrolling = true;
|
|
accelProfile = "flat";
|
|
accelSpeed = "0.75";
|
|
};
|
|
|
|
mouse = {
|
|
accelProfile = "flat";
|
|
};
|
|
};
|
|
|
|
xserver = mkIf (!isContainer) {
|
|
enable = true;
|
|
excludePackages = with pkgs; [ xterm ];
|
|
|
|
displayManager.startx.enable = mkIf (!isContainer) true;
|
|
};
|
|
|
|
pipewire = {
|
|
enable = true;
|
|
|
|
alsa = {
|
|
enable = true;
|
|
support32Bit = true;
|
|
};
|
|
|
|
pulse.enable = true;
|
|
};
|
|
|
|
greetd = mkIf (!isContainer) {
|
|
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 (
|
|
with pkgs;
|
|
[
|
|
mullvad-browser
|
|
spek
|
|
audacity
|
|
gimp
|
|
libreoffice
|
|
element-desktop
|
|
signal-desktop
|
|
qbittorrent
|
|
popsicle
|
|
satty
|
|
srb2
|
|
ringracers
|
|
jamesdsp
|
|
texliveFull
|
|
]
|
|
))
|
|
|
|
(mkIf (pkgs.system == "x86_64-linux") (
|
|
with nix-config.inputs.sakaya.packages.${pkgs.system}; [ sakaya ]
|
|
))
|
|
|
|
(with pkgs; [
|
|
anki
|
|
pulseaudio
|
|
grim
|
|
wl-clipboard-rs
|
|
])
|
|
];
|
|
|
|
fonts = {
|
|
enableDefaultPackages = false;
|
|
|
|
packages =
|
|
[
|
|
aleo-fonts
|
|
]
|
|
++ (with pkgs; [
|
|
noto-fonts
|
|
noto-fonts-cjk-serif
|
|
noto-fonts-cjk-sans
|
|
noto-fonts-emoji
|
|
maple-mono
|
|
font-awesome
|
|
(nerdfonts.override { fonts = [ "Noto" ]; })
|
|
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 = {
|
|
enable = true;
|
|
image = "${stylix-background}/wallpaper.png";
|
|
polarity = "dark";
|
|
|
|
base16Scheme = {
|
|
system = "base16";
|
|
name = "selenized-black";
|
|
author = "Jan Warchol (https://github.com/jan-warchol/selenized) / adapted to base16 by ali";
|
|
variant = "dark";
|
|
|
|
palette = {
|
|
base00 = "181818";
|
|
base01 = "252525";
|
|
base02 = "3b3b3b";
|
|
base03 = "777777";
|
|
base04 = "777777";
|
|
base05 = "b9b9b9";
|
|
base06 = "dedede";
|
|
base07 = "dedede";
|
|
base08 = "ed4a46";
|
|
base09 = "e67f43";
|
|
base0A = "dbb32d";
|
|
base0B = "70b433";
|
|
base0C = "3fc5b7";
|
|
base0D = "368aeb";
|
|
base0E = "a580e2";
|
|
base0F = "eb6eb7";
|
|
};
|
|
};
|
|
|
|
opacity = {
|
|
terminal = opacity;
|
|
popups = opacity;
|
|
};
|
|
|
|
cursor = {
|
|
package = pkgs.phinger-cursors;
|
|
name = "phinger-cursors";
|
|
size = 24;
|
|
};
|
|
|
|
fonts = {
|
|
serif = {
|
|
package = aleo-fonts;
|
|
name = "Aleo";
|
|
};
|
|
|
|
sansSerif = {
|
|
package = pkgs.noto-fonts-cjk-sans;
|
|
name = "Noto Sans CJK JP";
|
|
};
|
|
|
|
monospace = {
|
|
package = pkgs.maple-mono;
|
|
name = "Maple Mono";
|
|
};
|
|
|
|
emoji = {
|
|
package = pkgs.noto-fonts-emoji;
|
|
name = "Noto Color Emoji";
|
|
};
|
|
|
|
sizes = {
|
|
applications = fontSize;
|
|
desktop = fontSize;
|
|
popups = fontSize;
|
|
terminal = fontSize;
|
|
};
|
|
};
|
|
};
|
|
};
|
|
}
|