{ config, pkgs, options, ... }: { nixpkgs.overlays = [ (import ./overlays.nix) (import ../dotfiles/config/taffybar/taffybar/overlay.nix) (import ../dotfiles/config/xmonad/overlay.nix) (import ../dotfiles/config/taffybar/overlay.nix) ]; # Allow all the things nixpkgs.config.allowUnfree = true; # Disabling these waits disables the stuck on boot up issue systemd.services.systemd-udev-settle.enable = false; systemd.services.NetworkManager-wait-online.enable = false; networking.firewall.enable = false; # Security security.sudo.wheelNeedsPassword = false; programs.gnupg.agent = { enable = true; enableSSHSupport = true; }; services.pcscd.enable = true; # Networking environment.etc."ipsec.secrets".text = '' include ipsec.d/ipsec.nm-l2tp.secrets ''; networking.networkmanager = { enable = true; }; # Audio sound.enable = true; hardware.pulseaudio.enable = true; # Video hardware.opengl.driSupport32Bit = true; # Bluetooth hardware.bluetooth.enable = true; services.blueman.enable = true; # Keyboard console.keyMap = "us"; fonts = { fonts = with pkgs; [ dejavu_fonts emojione fira-mono font-awesome-ttf noto-fonts-emoji roboto source-code-pro source-sans-pro source-serif-pro # twemoji-color-font ]; fontconfig = { allowBitmaps = true; useEmbeddedBitmaps = true; defaultFonts = { monospace = [ "Source Code Pro" ]; sansSerif = [ "Roboto" ]; serif = [ "Source Serif Pro" ]; }; }; }; environment.systemPackages = with pkgs; [ # Applications alacritty emacs firefox google-chrome yubikey-manager # Haskell Desktop haskellPackages.imalison-xmonad haskellPackages.imalison-taffybar # notifications-tray-icon haskellPackages.status-notifier-item haskellPackages.xmonad haskellPackages.dbus-hslogger # Desktop autorandr libnotify lxqt.lxqt-powermanagement networkmanagerapplet notify-osd-customizable pasystray picom pinentry pommed_light rofi rofi-pass rofi-systemd udiskie volnoti # xorg wmctrl xclip xdotool xorg.xev xorg.xkbcomp xorg.xwininfo xsettingsd # Haskell cabal-install cabal2nix ghc # stack haskellPackages.hpack haskellPackages.hasktags haskellPackages.hoogle # Rust cargo rustc rustfmt # Tools automake bind binutils cmake dex direnv dpkg fd file gcc gdb gitAndTools.git-crypt gitAndTools.git-extras gitAndTools.hub gitFull glxinfo gnumake gnupg gparted htop inetutils inotify-tools ispell jq libtool lsof ncdu openvpn parallel pass patchelf pciutils prometheus pscircle pstree rcm scrot silver-searcher swig tmux tzupdate unzip usbutils wget yubikey-manager # Nix nix-prefetch-git cachix # Miscellaneous android-udev-rules librsvg ic-keysmith ]; programs.zsh.enable = true; # TODO: Add a comment explaining what this does. services.gnome.at-spi2-core.enable = true; services.xserver = { exportConfiguration = true; enable = true; layout = "us"; desktopManager = { plasma5.enable = true; }; windowManager = { session = [ { name = "xmonad"; start = '' /usr/bin/env imalison-xmonad & waitPID=$! ''; } ]; }; displayManager = { sddm = { enable = true; }; sessionCommands = '' systemctl --user import-environment GDK_PIXBUF_MODULE_FILE DBUS_SESSION_BUS_ADDRESS PATH ''; }; }; users.extraUsers = let extraGroups = [ "audio" "adbusers" "disk" "docker" "networkmanager" "plugdev" "systemd-journal" "video" "wheel" ]; userDefaults = { inherit extraGroups; group = "users"; isNormalUser = true; createHome = true; shell = pkgs.zsh; }; in { imalison = userDefaults // { name = "imalison"; uid = 1000; home = "/home/imalison"; shell = pkgs.zsh; }; kat = userDefaults // { name = "kat"; uid = 1001; home = "/home/kat"; shell = pkgs.zsh; }; }; nix.trustedUsers = ["imalison" "kat"]; }