nixos/modules/apps/99_i3_config.nix

120 lines
2.8 KiB
Nix
Raw Normal View History

2025-06-20 11:59:24 -07:00
# i3 config
{ config, pkgs, lib, ... }: {
imports = [ ./02_gui_base_apps.nix ];
config = {
users.users.${config.user} = {
extraGroups = [ "networkmanager" ];
};
security.pam.services.i3lock.enable = true;
networking.networkmanager.enable = true;
home-manager.users.${config.user} = { pkgs, config, ... }: {
home.packages = with pkgs; [
xorg.setxkbmap
xbindkeys
xdotool
networkmanagerapplet
arandr
volumeicon
xclip
feh
xorg.xev
xfce.xfce4-screenshooter
];
programs.rofi = {
enable = true;
plugins = with pkgs; [
rofi-calc
];
};
xdg.configFile.i3 = {
source = config.lib.file.mkOutOfStoreSymlink "${config.home.homeDirectory}/nixos/dotfiles/i3";
};
xdg.configFile.i3blocks = {
source = config.lib.file.mkOutOfStoreSymlink "${config.home.homeDirectory}/nixos/dotfiles/i3blocks";
};
xdg.configFile.volumeicon = {
source = config.lib.file.mkOutOfStoreSymlink "${config.home.homeDirectory}/nixos/dotfiles/volumeicon";
};
home.file.".xbindkeysrc" = {
source = config.lib.file.mkOutOfStoreSymlink "${config.home.homeDirectory}/nixos/dotfiles/xbindkeys/xbindkeysrc";
};
xdg.configFile."gtk-3.0" = {
source = config.lib.file.mkOutOfStoreSymlink "${config.home.homeDirectory}/nixos/dotfiles/gtk-3.0";
};
home.file.".xprofile" = {
source = ../../dotfiles/xprofile/xprofile;
};
home.file.".config/Thunar/uca.xml" = {
source = ../../dotfiles/thunar/uca.xml;
};
home.file.".config/xfce4/xfconf/xfce-perchannel-xml" = {
recursive = true;
source = ../../dotfiles/xfce-perchannel-xml;
};
home.file = {
".Xresources" = {
text = ''
Xcursor.size: 16
'';
};
};
};
services = {
displayManager = {
defaultSession = "xfce+i3"; # move this to host specific config?
};
xserver = {
enable = true;
videoDrivers = [ "amdgpu" ];
xkb.layout = "us";
desktopManager = {
xterm.enable = false;
xfce = {
enable = true;
noDesktop = true;
enableXfwm = false;
};
};
windowManager = {
i3 = {
enable = true;
extraPackages = with pkgs; [
i3status
i3lock
i3blocks
rofi
];
};
};
};
pulseaudio.enable = false;
pipewire = {
enable = true;
alsa.enable = true;
alsa.support32Bit = true;
pulse.enable = true;
};
};
security.rtkit.enable = true; # needed for pipewire/PA
};
}