Files
config/modules/profiles/desktop/default.nix

411 lines
9.0 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 = [
../dev
../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 = {
powerKey = "suspend";
powerKeyLongPress = "poweroff";
lidSwitchExternalPower = "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
iw
gdb
ntp
vlc
sox
mpv
imv # image viewer
gimp
qemu
zlib
ninja
xclip
pdftk
putty
scrot
tracy
mb2md # mailbox2maildir
cmake
typst
sioyek
(kazam.override {
python3Packages = pkgs.python311Packages;
}) # alternative to gtk-recordMyDesktop
x11vnc
yt-dlp
skopeo
ffmpeg
tinycc
scrcpy
cheese
arandr
pandoc
evince
ioping
motion
gthumb
calibre
gparted
glabels-qt
scribus
gnumake
libwebp
librsvg
picocom
inferno
libheif
csvkit
mplayer
tcpflow
undocker
nautilus
smplayer
inkscape
chromium
hunspell
tigervnc
bsdgames
pstoedit
xss-lock
audacity
librecad
colordiff
tesseract
trayscale
espeak-ng
man-pages
rox-filer
distrobox
miniupnpc
v4l-utils
#nerdfonts
winetricks
#diffoscope # broken on 2025-09-28, not used much
alsa-utils
shellcheck
virtualenv
imagemagick
#ventoy-full
ghostscript
libva-utils # intel video tests
pavucontrol
photocollage
libqalculate # qalc
qalculate-qt # qalculate
google-chrome
wirelesstools
poppler_utils
rkdeveloptool
squashfsTools
joplin-desktop
aspellDicts.en
aspellDicts.lt
libreoffice-qt
graphicsmagick
magic-wormhole
signal-desktop
gnome-calendar
element-desktop
netsurf-browser
man-pages-posix
git-filter-repo
gnome-calculator
libsForQt5.okular
nvtopPackages.amd
age-plugin-yubikey
nvtopPackages.intel
hunspellDicts.en_US
wineWowPackages.full
openorienteering-mapper
samsung-unified-linux-driver
xdotool
xorg.xev
xorg.xeyes
xorg.lndir
xorg.xinit
(python3.withPackages (
ps: with ps; [
numpy
pyyaml
ipython
matplotlib
]
))
];
# 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.plasma5Packages.breeze-gtk;
name = "Breeze";
};
cursorTheme = {
package = pkgs.plasma5Packages.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;
};
};
};
}