{ 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 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; }; }; }; }