nix-infra/common/fragments/graphical/default.nix

240 lines
5.6 KiB
Nix
Raw Normal View History

2023-03-26 16:33:03 +00:00
{ pkgs, config, lib, ... }: {
imports = [
../restic.nix
./audio.nix
./bspwm.nix
./clipboard.nix
2023-03-27 15:21:43 +00:00
./dunst.nix
./element.nix
2023-03-26 16:33:03 +00:00
./iosevka.nix
./kitty.nix
./lockscreen.nix
./picom.nix
./polybar.nix
./rofi.nix
2023-06-01 17:07:54 +00:00
./spotify.nix
./syncthing.nix
./theme.nix
./url-eater.nix
2023-03-26 16:33:03 +00:00
];
2023-09-17 16:57:46 +00:00
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 { };
})
];
2023-03-26 16:33:03 +00:00
# User packages
users.users.agatha.packages = with pkgs; [
2023-06-01 17:07:54 +00:00
blueberry
2023-03-26 16:33:03 +00:00
brightnessctl
broot
bspm
2023-03-26 16:33:03 +00:00
colmena
darktable
2023-09-17 16:57:46 +00:00
element-desktop
ffmpeg
2023-03-26 16:33:03 +00:00
flameshot
gimp
2023-03-27 15:21:43 +00:00
glib
2023-03-26 16:33:03 +00:00
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
2023-12-17 20:07:01 +00:00
just
2023-03-26 16:33:03 +00:00
magic-wormhole
neofetch
2023-06-01 17:07:54 +00:00
nil
2023-03-26 16:33:03 +00:00
nitrogen
nmap
2023-06-01 17:07:54 +00:00
obs-studio
2023-12-17 20:05:44 +00:00
obsidian
2023-03-26 16:33:03 +00:00
pfetch
polybar-spotify
2023-03-26 16:33:03 +00:00
pridefetch
2023-06-01 17:07:54 +00:00
prismlauncher
2023-12-17 20:07:01 +00:00
rink
2023-03-26 16:33:03 +00:00
rofi-calc
rofimoji
2023-09-17 16:57:46 +00:00
speechd
2023-03-26 16:33:03 +00:00
tdesktop
wireguard-tools
xdg-utils
2023-03-27 15:21:43 +00:00
xdotool
2023-06-01 17:07:54 +00:00
yubioath-flutter
2023-03-26 16:33:03 +00:00
];
2023-12-17 20:05:44 +00:00
# blame Obsidian
nixpkgs.config.permittedInsecurePackages = [ "electron-25.9.0" ];
2023-03-26 16:33:03 +00:00
# Brightness/volume keys
users.users.agatha.extraGroups = [ "video" ];
location = {
latitude = 49.0;
longitude = 8.4;
};
services.redshift = {
enable = true;
brightness.night = "0.8";
};
2023-03-26 16:33:03 +00:00
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";
2023-06-01 17:07:54 +00:00
libinput.enable = true;
2023-03-26 16:33:03 +00:00
};
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" = {
2023-12-01 14:56:09 +00:00
match = ''originalhost backups exec "ip r | rg 10.21.0.0/16"'';
hostname = "10.20.1.2";
user = "agatha";
identityFile = [ "~/.ssh/id_ed25519" ];
};
"work" = {
2023-12-01 14:56:09 +00:00
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" = {
2023-12-01 14:56:09 +00:00
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";
2023-09-17 16:57:46 +00:00
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;";
};
2023-03-26 16:33:03 +00:00
};
2023-03-27 15:21:43 +00:00
services.gvfs.enable = true;
2023-03-26 16:33:03 +00:00
security.polkit.enable = true;
programs.dconf.enable = true;
2023-03-26 16:33:03 +00:00
2023-04-07 16:20:16 +00:00
programs.geary.enable = true;
programs.steam.enable = true;
programs.firefox = {
enable = true;
autoConfig = ''
pref("privacy.webrtc.legacyGlobalIndicator", false);
pref("privacy.webrtc.hideGlobalIndicator", true);
'';
};
2023-04-07 16:20:16 +00:00
2023-03-26 16:33:03 +00:00
# Screenshare on wlroots
xdg = {
portal = {
enable = true;
2023-12-17 20:05:44 +00:00
config.common.default = "*";
2023-03-26 16:33:03 +00:00
wlr.enable = true;
};
};
fonts.fontconfig.enable = true;
2023-04-19 08:24:08 +00:00
fonts.fontDir.enable = true;
2023-12-17 20:05:44 +00:00
fonts.packages = with pkgs; [
2023-04-02 10:53:12 +00:00
(nerdfonts.override { fonts = [ "DaddyTimeMono" "NerdFontsSymbolsOnly" ]; })
2023-03-26 16:33:03 +00:00
cantarell-fonts
2023-04-02 10:53:12 +00:00
cm_unicode
corefonts
2023-03-26 16:33:03 +00:00
crimson
2023-12-17 20:05:44 +00:00
crimson-pro
2023-03-26 16:33:03 +00:00
dejavu_fonts
fira-code
fira-code-symbols
font-awesome_5
2023-12-01 14:57:40 +00:00
helvetica-neue-lt-std
2023-03-26 16:33:03 +00:00
iosevka
noto-fonts-cjk
siji
twitter-color-emoji
];
services.printing = {
enable = true;
drivers = [ pkgs.hplip ];
};
2023-09-17 16:57:46 +00:00
2023-09-29 13:11:40 +00:00
hardware.bluetooth = {
enable = true;
settings = { General = { Disable = "Headset"; }; };
};
2023-09-17 16:57:46 +00:00
# Fix Wireguard NetworkManager connections
networking.firewall.checkReversePath = "loose";
2023-03-26 16:33:03 +00:00
}