Files
config/modules/profiles/desktop/default.nix
2026-01-11 16:54:07 +02:00

384 lines
8.5 KiB
Nix

{
lib,
pkgs,
config,
...
}:
let
inherit (config.mj) username;
firefox =
if (pkgs.stdenv.hostPlatform.system == "x86_64-linux") then pkgs.firefox-bin else pkgs.firefox;
brightness = pkgs.writeShellApplication {
name = "brightness";
text = builtins.readFile ./brightness;
};
open = pkgs.writeShellApplication {
name = "open";
text = ''exec ${pkgs.xdg-utils}/bin/xdg-open "$@"'';
};
in
{
imports = [
../physical
];
config = {
boot = {
kernelModules = [ "kvm-intel" ];
};
hardware = {
bluetooth = {
enable = true;
powerOnBoot = true;
};
};
systemd.slices."docker-low" = {
sliceConfig = {
CPUWeight = 1;
IOWeight = 1;
};
};
programs = {
firefox = {
enable = true;
package = firefox;
};
wireshark = {
enable = true;
package = pkgs.wireshark-qt;
};
};
mj.services.printing.enable = true;
mj.base.users.user.extraGroups = [
"adbusers"
"networkmanager"
"wireshark"
"docker"
];
services = {
blueman.enable = true;
udev.packages = [ pkgs.yubikey-personalization ];
gnome.gnome-keyring.enable = true;
openssh.settings.X11Forwarding = true;
pulseaudio = {
enable = true;
package = pkgs.pulseaudioFull;
};
logind.settings.Login = {
HandlePowerKey = "suspend";
HandlePowerKeyLongPress = "poweroff";
HandleLidSwitchExternalPower = "ignore";
};
avahi = {
enable = true;
nssmdns4 = true;
openFirewall = true;
};
xserver = {
enable = true;
xkb = {
layout = "us,lt";
options = "grp:alt_shift_toggle";
};
desktopManager.xfce.enable = true;
windowManager.awesome.enable = true;
displayManager.lightdm.enable = true;
};
displayManager = {
defaultSession = lib.mkDefault "none+awesome";
autoLogin = {
enable = true;
user = username;
};
};
pipewire.enable = false;
};
programs = {
adb.enable = true;
slock.enable = true;
nm-applet.enable = true;
command-not-found.enable = false;
};
security.rtkit.enable = true;
networking.networkmanager.enable = true;
# wip put clight-gui to nixpkgs
#services.geoclue2 = {
# enable = true;
# enableWifi = true;
#};
#location.provider = "geoclue2";
virtualisation.docker = {
enable = true;
# https://github.com/docker/buildx/issues/1459
#daemon.settings.dns = [ "100.100.100.100" ];
daemon.settings = {
storage-driver = "btrfs";
registry-mirrors = [ "https://mirror.gcr.io" ];
exec-opts = [ "native.cgroupdriver=systemd" ];
cgroup-parent = "docker-low.slice";
};
};
fonts.packages = with pkgs; [
xkcd-font
];
environment.systemPackages = with pkgs; [
# packages defined here
open
nicer
tmuxbash
brightness
f3 # flight-flash-fraud
gdb
ntp
vlc
sox
mpv
imv # image viewer
gimp
qemu
zlib
xclip
pdftk
scrot
dillo
cmake
typst
sioyek
(kazam.override {
python3Packages = pkgs.python311Packages;
}) # alternative to gtk-recordMyDesktop
x11vnc
yt-dlp
ffmpeg
tinycc
scrcpy
cheese
arandr
pandoc
evince
ioping
motion
gthumb
csvkit
calibre
gparted
scribus
gnumake
libwebp
librsvg
picocom
libheif
mplayer
tcpflow
ddrescue
gcompris
nautilus
smplayer
inkscape
hunspell
tigervnc
bsdgames
pstoedit
xss-lock
audacity
colordiff
trayscale
espeak-ng
man-pages
rox-filer
miniupnpc
v4l-utils
#nerdfonts
winetricks
shellcheck
virtualenv
imagemagick
get_iplayer
#ventoy-full
ghostscript
pavucontrol
photocollage
libqalculate # qalc
qalculate-qt # qalculate
google-chrome
wirelesstools
poppler-utils
squashfsTools
aspellDicts.en
aspellDicts.lt
libreoffice-qt
graphicsmagick
magic-wormhole
signal-desktop
gnome-calendar
element-desktop
netsurf-browser
man-pages-posix
gnome-calculator
kdePackages.okular
nvtopPackages.amd
age-plugin-yubikey
nvtopPackages.intel
hunspellDicts.en_US
samsung-unified-linux-driver
xdotool
xorg.xev
xorg.xeyes
xorg.lndir
xorg.xinit
];
# https://discourse.nixos.org/t/nixos-rebuild-switch-upgrade-networkmanager-wait-online-service-failure/30746
systemd.services.NetworkManager-wait-online.enable = false;
home-manager.users.${username} =
{ pkgs, config, ... }:
{
imports = [ ./plasma.nix ];
xdg.configFile = {
"gdb/gdbinit".text = ''
set style address foreground yellow
set style function foreground cyan
set style string foreground magenta
'';
};
programs = {
ghostty = {
enable = true;
installVimSyntax = true;
enableBashIntegration = true;
settings = {
theme = "iTerm2 Default";
command = lib.getExe pkgs.tmuxbash;
window-decoration = false;
gtk-single-instance = true;
font-feature = [
"-calt"
"-liga"
"-dlig"
];
};
};
};
services = {
cbatticon.enable = true;
blueman-applet.enable = true;
syncthing.tray = {
enable = true;
#extraOptions = ["--wait"];
};
pasystray = {
enable = true;
extraOptions = [
"--key-grabbing"
"--notify=all"
];
};
gpg-agent = {
enable = true;
enableSshSupport = true;
pinentry.package = pkgs.pinentry-gtk2;
};
screen-locker = {
enable = true;
xautolock.enable = false;
lockCmd = ''${pkgs.bash}/bin/bash -c "${pkgs.coreutils}/bin/sleep 0.2; ${pkgs.xorg.xset}/bin/xset dpms force off; /run/wrappers/bin/slock"'';
};
};
# https://github.com/nix-community/home-manager/issues/2064
systemd.user.targets.tray = {
Unit = {
Description = "Home Manager System Tray";
Requires = [ "graphical-session-pre.target" ];
};
};
# thanks K900
gtk = {
enable = true;
theme = {
package = pkgs.kdePackages.breeze-gtk;
name = "Breeze";
};
cursorTheme = {
package = pkgs.kdePackages.breeze-icons;
name = "Breeze_Snow";
};
iconTheme = {
package = pkgs.papirus-icon-theme;
name = "Papirus-Dark";
};
gtk2 = {
configLocation = "${config.xdg.configHome}/gtk-2.0/gtkrc";
extraConfig = ''
gtk-alternative-button-order = 1
'';
};
gtk3.extraConfig = {
gtk-application-prefer-dark-theme = true;
gtk-decoration-layout = "icon:minimize,maximize,close";
};
gtk4.extraConfig = {
gtk-application-prefer-dark-theme = true;
gtk-decoration-layout = "icon:minimize,maximize,close";
};
};
mj.plasma.kconfig = {
kdeglobals = {
General.ColorScheme = "ArcDark";
Icons.Theme = "Papirus-Dark";
KDE.widgetStyle = "Breeze";
};
plasmarc.Theme.name = "Arc-Dark";
kscreenlockerrc.Greeter = {
Theme = "com.github.varlesh.arc-dark";
};
ksplashrc.KSplash = {
Engine = "KSplashQML";
Theme = "com.github.varlesh.arc-dark";
};
kwinrc."org.kde.kdecoration2" = {
library = "org.kde.kwin.aurorae";
theme = "__aurorae__svg__Arc-Dark";
};
kcminputrc.Mouse.cursorTheme = "Breeze_Snow";
# don't mess with GTK settings
kded5rc."Module-gtkconfig".autoload = false;
};
};
};
}