nixos-configuration/modules/desktop/default.nix

142 lines
2.8 KiB
Nix
Raw Normal View History

2023-09-24 13:20:34 +02:00
modulesCfg: {
2023-09-09 15:44:15 +02:00
config,
pkgs,
lib,
...
}: let
2023-09-24 13:04:45 +02:00
isEnabled = config.my.desktop.enable;
2023-09-24 13:20:34 +02:00
isHomeManager = modulesCfg.enableHomeManager;
2023-09-09 15:44:15 +02:00
in {
2023-09-24 13:20:34 +02:00
imports =
[
./gnome.nix
./kde.nix
./gaming.nix
2023-10-22 14:14:39 +02:00
./printing.nix
2023-09-24 13:20:34 +02:00
]
++ lib.optionals isHomeManager [
./gnome-home.nix
./kde-home.nix
];
options.my.desktop.enable = lib.mkEnableOption "desktop";
2023-09-09 15:44:15 +02:00
2023-09-24 13:04:45 +02:00
config = lib.mkIf isEnabled {
2023-09-09 15:44:15 +02:00
services = {
2023-11-06 13:37:38 +01:00
# Enable the X11 windowing system / wayland depending on DE
2023-10-08 17:17:14 +02:00
xserver = {
enable = true;
libinput.enable = true;
};
2023-11-06 13:37:38 +01:00
# flatpak xdg-portal-kde crashes, otherwise this would be global
flatpak.enable = true;
2024-02-09 18:51:59 +01:00
fstrim.enable = true;
2023-09-09 15:44:15 +02:00
};
# Enable sound with pipewire.
sound.enable = true;
hardware.pulseaudio.enable = false;
security.rtkit.enable = true;
services.pipewire = {
enable = true;
alsa.enable = true;
alsa.support32Bit = true;
pulse.enable = true;
2023-10-02 18:14:05 +02:00
#jack.enable = true;
2023-09-09 15:44:15 +02:00
};
programs = {
kdeconnect.enable = true;
2023-10-02 17:14:20 +02:00
firefox = {
enable = true;
languagePacks = ["en-US" "de"];
};
2024-03-09 17:56:02 +01:00
nix-ld = {
enable = true;
libraries = with pkgs; [
stdenv.cc.cc
zlib
zstd
curl
openssl
attr
libssh
bzip2
libxml2
acl
libsodium
util-linux
xz
systemd
];
};
2023-09-09 15:44:15 +02:00
};
2023-09-11 19:16:26 +02:00
networking = {
networkmanager.enable = true;
firewall = {
allowedTCPPortRanges = [
{
2023-10-08 21:34:45 +02:00
# KDE Connect / gsconnect
2023-09-11 19:16:26 +02:00
from = 1714;
to = 1764;
}
];
allowedUDPPortRanges = [
{
2023-10-08 21:34:45 +02:00
# KDE Connect / gsconnect
2023-09-11 19:16:26 +02:00
from = 1714;
to = 1764;
}
];
};
};
2023-09-17 14:03:37 +02:00
systemd = {
# save some boot time because nothing actually requires network connectivity
services.NetworkManager-wait-online.enable = false;
2023-11-06 13:37:38 +01:00
# prevent stuck units from preventing shutdown (default is 120s)
2023-09-17 14:03:37 +02:00
extraConfig = ''
DefaultTimeoutStopSec=12s
'';
};
2023-09-11 19:16:26 +02:00
2024-03-09 17:56:02 +01:00
environment.systemPackages = with pkgs; [
lm_sensors
2023-10-22 14:14:39 +02:00
2024-03-09 17:56:02 +01:00
# office
libreoffice-qt
hunspell
hunspellDicts.de-de
hunspellDicts.en-us-large
2024-04-19 12:27:51 +02:00
gnumake
2024-03-09 17:56:02 +01:00
];
2023-09-11 21:00:02 +02:00
2023-12-25 12:06:50 +01:00
nixpkgs.config.permittedInsecurePackages = [];
2023-09-17 16:54:18 +02:00
2023-10-02 18:14:05 +02:00
my.allowUnfreePackages = [
"insync"
"insync-pkg"
"rider"
"pycharm-professional"
2023-11-30 16:54:06 +01:00
"jetbrains-toolbox"
2024-02-09 18:51:59 +01:00
"anydesk"
2023-10-02 18:14:05 +02:00
];
2023-09-17 16:54:18 +02:00
fonts = {
enableDefaultPackages = true;
2023-09-17 16:56:11 +02:00
fontconfig.defaultFonts.monospace = ["FiraCode Nerd Font"];
packages = with pkgs; [
2023-09-17 16:54:18 +02:00
(nerdfonts.override {fonts = ["FiraCode"];})
];
};
2023-09-09 15:44:15 +02:00
};
}