{ pkgs, config, lib, ... }: { imports = [ ../restic.nix ./audio.nix ./bspwm.nix ./clipboard.nix ./dunst.nix ./element.nix ./iosevka.nix ./kitty.nix ./lockscreen.nix ./picom.nix ./polybar.nix ./rofi.nix ./spotify.nix ./syncthing.nix ./theme.nix ./url-eater.nix ]; nixpkgs.overlays = [ (final: prev: { pads = final.callPackage ../../../common/pkgs/pads.nix { }; bspm = final.callPackage ../../../common/pkgs/bspm.nix { }; polybar-spotify = final.callPackage ../../../common/pkgs/polybar-spotify.nix { }; }) ]; # User packages users.users.agatha.packages = with pkgs; [ blueberry brightnessctl broot bspm colmena darktable element-desktop ffmpeg flameshot gimp glib gnome.eog gnome.file-roller gnome.gnome-calendar gnome.gnome-control-center gnome.gnome-disk-utility gnome.gnome-font-viewer gnome.nautilus gnome.totem hyperfine just magic-wormhole neofetch nil nitrogen nmap obs-studio obsidian pfetch polybar-spotify pridefetch prismlauncher rink rofi-calc rofimoji speechd tdesktop wireguard-tools xdg-utils xdotool yubioath-flutter ]; # blame Obsidian nixpkgs.config.permittedInsecurePackages = [ "electron-25.9.0" ]; # Brightness/volume keys users.users.agatha.extraGroups = [ "video" ]; location = { latitude = 49.0; longitude = 8.4; }; services.redshift = { enable = true; brightness.night = "0.8"; }; services.xserver = { enable = true; displayManager = { gdm.enable = true; # gdm.wayland = true; sessionPackages = [ pkgs.sway ]; session = [{ manage = "window"; name = "bspwm"; start = let cfg = config.home-manager.users.agatha; in '' ${cfg.services.sxhkd.package}/bin/sxhkd ${ toString cfg.services.sxhkd.extraOptions } & ${cfg.xsession.windowManager.bspwm.package}/bin/bspwm -c ${cfg.xdg.configHome}/bspwm/bspwmrc ''; }]; }; # Layout overrides layout = lib.mkForce "eu,de(qwerty),ua,ru"; xkbOptions = "ctrl:nocaps,compose:rctrl"; libinput.enable = true; }; home-manager.users.agatha = { # Compose key sequences home.file.".XCompose".text = '' include "%L" : "( ͡° ͜ʖ ͡°)" : "¯\\_(ツ)_/¯" : "༼ つ ◕_◕ ༽つ" : "🅱️" : "•" : "◆" : "✔" : "✓" : "​" <0> : "§" : "█" : "☭" : "√" : "⚧️ trans rights uwu" : "òwó" : "ÒwÓ"

: "👉👈"

: "🥺" : "/html " ''; programs.direnv.enable = true; home.sessionVariables = { "DIRENV_LOG_FORMAT" = ""; }; programs.ssh.enable = true; programs.ssh.matchBlocks = { "bloodletting" = { hostname = "technogothic.net"; }; "backups" = { match = ''originalhost backups exec "ip r | rg 10.21.0.0/16"''; hostname = "10.20.1.2"; user = "agatha"; identityFile = [ "~/.ssh/id_ed25519" ]; }; "work" = { match = ''originalhost work exec "ip r | rg 10.21.0.0/16"''; hostname = "10.21.221.6"; forwardX11 = true; forwardX11Trusted = true; forwardAgent = true; extraOptions."TCPKeepAlive" = "yes"; }; "ritual" = { match = ''originalhost ritual exec "ip r | rg 10.21.0.0/16"''; hostname = "10.21.221.60"; }; }; xdg.desktopEntries.element-work = { name = "Element @ Work"; icon = "im.riot.Riot"; exec = "${pkgs.element-desktop}/bin/element-desktop --profile=work"; categories = [ "Network" "InstantMessaging" "Chat" "VideoConference" ]; mimeType = [ "x-scheme-handler/element" ]; settings.StartupWMClass = "element"; settings.Keywords = "Matrix;matrix.org;chat;irc;communications;talk;riot;vector;"; }; }; services.gvfs.enable = true; security.polkit.enable = true; programs.dconf.enable = true; programs.geary.enable = true; programs.steam.enable = true; programs.firefox = { enable = true; autoConfig = '' pref("privacy.webrtc.legacyGlobalIndicator", false); pref("privacy.webrtc.hideGlobalIndicator", true); ''; }; # Screenshare on wlroots xdg = { portal = { enable = true; config.common.default = "*"; wlr.enable = true; }; }; fonts.fontconfig.enable = true; fonts.fontDir.enable = true; fonts.packages = with pkgs; [ (nerdfonts.override { fonts = [ "DaddyTimeMono" "NerdFontsSymbolsOnly" ]; }) cantarell-fonts cm_unicode corefonts crimson crimson-pro dejavu_fonts fira-code fira-code-symbols font-awesome_5 helvetica-neue-lt-std iosevka noto-fonts-cjk siji twitter-color-emoji ]; services.printing = { enable = true; drivers = [ pkgs.hplip ]; }; hardware.bluetooth = { enable = true; settings = { General = { Disable = "Headset"; }; }; }; # Fix Wireguard NetworkManager connections networking.firewall.checkReversePath = "loose"; }