{ config, lib, pkgs, ... }: let cfg = config.orbekk.desktop; in { options = { orbekk.desktop = { enable = lib.mkEnableOption "Enable standard desktop config"; }; }; config = lib.mkIf cfg.enable { orbekk.yubikey.enable = lib.mkDefault true; orbekk.simple-firewall.enable = true; programs.kdeconnect.enable = true; # Performs some setup needed by river. programs.sway.enable = true; programs.sway.wrapperFeatures.gtk = true; programs.xwayland.enable = true; programs.dconf.enable = true; xdg.portal.enable = true; xdg.portal.wlr.enable = true; xdg.portal.extraPortals = with pkgs; [ xdg-desktop-portal-gtk xdg-desktop-portal-kde]; services.dbus.enable = true; services.udisks2.enable = true; location.latitude = 40.0; location.longitude = -74.0; sound.enable = true; nix.gc.automatic = true; nix.gc.options = "--delete-older-than 30d"; nixpkgs.overlays = [ (final: prev: { xmonad = (prev.xmonad-with-packages.override { packages = self: [ self.xmonad-contrib self.xmonad-extras ]; }); }) (final: prev: { river = final.unstable.river; lswt = final.unstable.lswt; swayidle = final.unstable.swayidle; swaylock = final.unstable.swaylock; }) ]; hardware = { opengl = { enable = true; driSupport32Bit = true; driSupport = true; extraPackages32 = with pkgs.pkgsi686Linux; [ libva ]; }; bluetooth.enable = true; }; security.rtkit.enable = true; security.pam.services.swaylock = {}; hardware.pulseaudio.enable = false; services.printing.enable = true; services.pipewire = { enable = true; alsa.enable = true; alsa.support32Bit = true; pulse.enable = true; jack.enable = true; }; fonts = { enableDefaultPackages = true; packages = with pkgs; [ fira-code dejavu_fonts jetbrains-mono wqy_microhei ]; fontconfig = { defaultFonts = { sansSerif = [ "Noto Sans" "WenQuanYi Micro Hei" ]; serif = [ "Noto Serif" "WenQuanYi Micro Hei-14" ]; emoji = [ "Noto Color Emoji" ]; monospace = [ "DejaVu Sans Mono" "WenQuanYi Micro Hei Mono" ]; }; }; }; programs.firefox.enable = true; programs.firefox.nativeMessagingHosts.packages = [ pkgs.tridactyl-native ]; environment.systemPackages = with pkgs; [ # Wayland packages river waybar light playerctl swaylock swayidle grim wlr-randr wev lswt foot kanshi wlopm wl-clipboard breeze-icons breeze-gtk wezterm autorandr chromium discord dmenu dzen2 ffmpeg haskellPackages.xmobar hledger hledger-ui hledger-web imagemagick iw ledger networkmanagerapplet nix-index nixfmt shfmt pavucontrol rofi rxvt_unicode-with-plugins signal-desktop sshfs-fuse trayer vlc wirelesstools xbindkeys xvkbd xdotool xorg.xwininfo xorg.xbacklight xorg.xev xorg.xrdb xclip xorg.libXft xscreensaver xsel # used by urxvt clipboard xss-lock dunst transmission-qt qt5.qtwayland libsForQt5.bismuth mujmap # email sync -- get this from cargo instead notmuch # email librespot # spotify player sbcl openssl exercism gdm ]; # i18n.inputMethod = { # enabled = "fcitx"; # fcitx.engines = with pkgs.fcitx-engines; [ cloudpinyin ]; # }; # boot.plymouth.enable = true; # boot.kernelParams = ["quiet" "splash" "vt.global_cursor_default=0" "fbcon=nodefer"]; # Larger console font setup. console.font = "ter-i32b"; console.packages = [ pkgs.terminus_font ]; services = { udev.extraRules = '' # Anne Pro 2 SUBSYSTEM=="usb", ATTRS{idVendor}=="04d9", ATTRS{idProduct}=="8008", MODE="0666", GROUP="plugdev" KERNEL=="hidraw*", ATTRS{idVendor}=="04d9", ATTRS{idProduct}=="8008", MODE="0666", GROUP="plugdev" # Planck SUBSYSTEM=="usb", ATTRS{idVendor}=="0483", ATTRS{idProduct}=="df11", MODE="0666", GROUP="plugdev" KERNEL=="hidraw*", ATTRS{idVendor}=="0483", ATTRS{idProduct}=="df11", MODE="0666", GROUP="plugdev" ''; avahi.enable = true; avahi.nssmdns = true; avahi.publish = { enable = true; workstation = true; addresses = true; userServices = true; }; avahi.openFirewall = true; xserver = { enable = true; layout = "us"; # xkbVariant = "dvorak"; xkbOptions = "caps:ctrl_modifier"; desktopManager.plasma5 = { enable = true; }; windowManager.xmonad = { enable = true; enableContribAndExtras = true; extraPackages = hpkgs: [ hpkgs.xmobar hpkgs.split ]; }; displayManager.gdm.enable = true; displayManager.sessionPackages = with pkgs; [ river ]; }; }; }; }