262 lines
6.0 KiB
Nix
262 lines
6.0 KiB
Nix
{ pkgs, config, lib, ... }: {
|
||
imports = [
|
||
../restic.nix
|
||
./audio.nix
|
||
./bspwm.nix
|
||
./clipboard.nix
|
||
./dunst.nix
|
||
./element.nix
|
||
./iosevka.nix
|
||
./kitty.nix
|
||
./lockscreen.nix
|
||
./mail.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; [
|
||
android-tools
|
||
blueberry
|
||
brightnessctl
|
||
broot
|
||
bspm
|
||
colmena
|
||
darktable
|
||
dino
|
||
element-desktop
|
||
exiftool
|
||
ffmpeg
|
||
flac
|
||
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
|
||
hyperfine
|
||
just
|
||
magic-wormhole
|
||
mpv
|
||
mumble
|
||
neofetch
|
||
nil
|
||
nitrogen
|
||
nmap
|
||
obs-studio
|
||
obsidian
|
||
pfetch
|
||
polybar-spotify
|
||
pridefetch
|
||
prismlauncher
|
||
rink
|
||
rofi-calc
|
||
rofimoji
|
||
speechd
|
||
sshfs
|
||
tdesktop
|
||
whois
|
||
wireguard-tools
|
||
xdg-utils
|
||
xdotool
|
||
yt-dlp
|
||
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";
|
||
|
||
autoRepeatDelay = 200;
|
||
autoRepeatInterval = 50;
|
||
|
||
libinput.enable = true;
|
||
};
|
||
|
||
home-manager.users.agatha = {
|
||
# Compose key sequences
|
||
home.file.".XCompose".text = ''
|
||
include "%L"
|
||
|
||
<Multi_key> <l> <f> : "( ͡° ͜ʖ ͡°)"
|
||
<Multi_key> <s> <f> : "¯\\_(ツ)_/¯"
|
||
<Multi_key> <g> <f> : "༼ つ ◕_◕ ༽つ"
|
||
<Multi_key> <B> <B> : "🅱️"
|
||
<Multi_key> <o> <asterisk> : "•"
|
||
<Multi_key> <h> <r> : "◆"
|
||
<Multi_key> <v> <v> : "✔"
|
||
<Multi_key> <v> <period> <v> : "✓"
|
||
<Multi_key> <space> <space> : ""
|
||
<Multi_key> <s> <0> : "§"
|
||
<Multi_key> <b><l> : "█"
|
||
<Multi_key> <h><s> : "☭"
|
||
<Multi_key> <s><r> : "√"
|
||
<Multi_key> <t><r> : "⚧️ trans rights uwu"
|
||
<Multi_key> <w><apostrophe> : "òwó"
|
||
<Multi_key> <W><apostrophe> : "ÒwÓ"
|
||
<Multi_key> <p><t> : "👉👈"
|
||
<Multi_key> <p><l> : "🥺"
|
||
<Multi_key> <m><s> : "/html <span data-mx-spoiler=\"\"></span>"
|
||
'';
|
||
|
||
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 ];
|
||
};
|
||
|
||
services.avahi = {
|
||
enable = true;
|
||
nssmdns = true;
|
||
openFirewall = true;
|
||
};
|
||
|
||
hardware.bluetooth = {
|
||
enable = true;
|
||
settings = { General = { Disable = "Headset"; }; };
|
||
};
|
||
|
||
# Virtual Camera config
|
||
boot.extraModulePackages = with config.boot.kernelPackages; [ v4l2loopback ];
|
||
boot.kernelModules = [ "v4l2loopback" ];
|
||
|
||
# Fix Wireguard NetworkManager connections
|
||
networking.firewall.checkReversePath = "loose";
|
||
}
|