Move to multi-file nix config

This commit is contained in:
agryphus 2023-12-05 21:59:51 -05:00
parent 40ae8fa74b
commit f10c0a019b
8 changed files with 303 additions and 122 deletions

View file

@ -0,0 +1,21 @@
{ config, lib, pkgs, modulesPath, ... }:
{
services.emacs.enable = true;
environment.systemPackages = with pkgs; [
emacs29-gtk3
# Misc
ispell # Spellchecker
fd # Find entries in filesystem. Helps doom emacs run faster.
# For vterm
cmake
libtool
## LSPs
nodePackages.pyright
];
}

View file

@ -0,0 +1,26 @@
{ config, pkgs, ... }:
{
environment.systemPackages = with pkgs; [
lf
atool # Provides aunpack, to open archives. Also can list archive contents.
bat # A prettified 'cat'
broot # A slicker fzf
chafa # Display images in the terminal (supports sixel)
ffmpegthumbnailer # Get thumbnails of videos
file # Get information about a specific file
fzf # Fuzzy finder. Might fully replace with broot
imagemagick # Image conversion/processing tool
mediainfo # Get info about media
mpv # Audio and video player
nsxiv # Image viewer
odt2txt # Convert open documents to text
perl536Packages.FileMimeInfo # Provides mimeopen, to ask what program to open files in
poppler_utils # Provides pdftoppm, to turn pdfs into images
unrar-wrapper # Extract .rar files
xclip # Copy file name to clip
zathura # PDF viewer
];
}

View file

@ -0,0 +1,9 @@
{ config, pkgs, ... }:
{
config {
environment.systemPackages = with pkgs; [
];
};
}

View file

@ -0,0 +1,17 @@
{ config, pkgs, ... }:
{
environment.systemPackages = with pkgs; [
neovim
# LSPs
clang-tools
lua-language-server
# Misc
ripgrep # Used by telescope
gcc
unzip
];
}

View file

@ -0,0 +1,14 @@
{ config, pkgs, ... }:
{
virtualisation.docker.enable = true;
virtualisation.docker.storageDriver = "btrfs";
# Implicitly downloads virtualbox
virtualisation.virtualbox.host.enable = true;
users.extraGroups.vboxusers.members = [ "user-with-access-to-virtualbox" ];
environment.systemPackages = with pkgs; [
];
}

View file

@ -0,0 +1,74 @@
{ config, pkgs, ... }:
{
# Or else swaylock will not accept correct password
security.pam.services.swaylock = {};
i18n = {
defaultLocale = "en_US.UTF-8";
inputMethod = {
# Have to install fcitx5 through here so that the binary is patched to be able to see the addons.
# If also installed through system packages, the binary without addonds will take precedence.
enabled = "fcitx5";
fcitx5.addons = with pkgs; [
fcitx5-configtool
fcitx5-rime
fcitx5-chinese-addons
];
};
};
fonts.packages = with pkgs; [
source-han-sans
source-han-serif
(nerdfonts.override { fonts = [ "FiraCode" ]; })
];
programs = {
hyprland = {
enable = true;
enableNvidiaPatches = true;
xwayland.enable = true;
};
};
environment.systemPackages = with pkgs; [
blueman # Bluetooth manager
dunst # Notification daemon
eww-wayland
firefox # My browser of choice
foot # Wayland native terminal
hyprland-autoname-workspaces
hyprpaper
kanshi # Autorandr substitute
libnotify # Send messages to notification daemon
libreoffice # MSOffice btfo
pinentry-rofi # Rofi frontend for pinentry program
pyprland # Plugin manager for Hyprland
rofi # Menu prompt program
rofi-pass # Rofi frontend for password store
swaylock # Wayland session locker
swww # Sets background images
texlive.combined.scheme-full # LaTeX to create documents
typst # Cool, minimal LaTeX alternative
ungoogled-chromium # If I need a special chrome feature
waybar # Status bar
wdisplays # Arnadr substitute
wlr-randr # Xrandr substitute
# GTK Themes
lxappearance-gtk2 # Theme switcher
gruvbox-dark-gtk
];
nixpkgs.overlays = [
(self: super: {
wlroots-hyprland-nvidia = super.wlroots-hyprland-nvidia.overrideAttrs (oa: {
patches = (oa.patches or [ ]) ++ [
/home/vince/misc/DisplayLink_v2.patch
];
});
})
];
}

View file

@ -0,0 +1,89 @@
{ config, pkgs, ... }:
{
security.sudo.extraConfig = ''
%wheel ALL=(ALL:ALL) NOPASSWD: ${pkgs.systemd}/bin/systemctl restart autorandr
'';
i18n = {
defaultLocale = "en_US.UTF-8";
inputMethod = {
# Have to install fcitx5 through here so that the binary is patched to be able to see the addons.
# If also installed through system packages, the binary without addonds will take precedence.
enabled = "fcitx5";
fcitx5.addons = with pkgs; [
fcitx5-configtool
fcitx5-rime
fcitx5-chinese-addons
];
};
};
fonts.packages = with pkgs; [
source-han-sans
source-han-serif
(nerdfonts.override { fonts = [ "FiraCode" ]; })
];
# X Server
services.xserver = {
enable = true;
autorun = false;
autoRepeatDelay = 300;
autoRepeatInterval = 50;
# Configure keymap in X11
layout = "us";
xkbOptions = "eurosign:e,caps:escape";
# Touchpad stuff
libinput = {
enable = true;
touchpad.naturalScrolling = true;
};
displayManager = {
lightdm.enable = false;
startx.enable = true;
};
windowManager.dwm.enable = true;
};
# Monitor switching service. Allow users to restart the service without password
services.autorandr.enable = true;
environment.systemPackages = with pkgs; [
arandr # Visually move relative positions of monitors
autorandr # Save and load xrandr profiles
blueman # Bluetooth manager
dunst # Notification daemon
dwmblocks # Suckless statusbar for DWM
dwm # Suckless tiling window manager
feh # Image viewer I use for background setting
firefox # My browser of choice
libnotify # Send messages to notification daemon
libreoffice # MSOffice btfo
maim # Screenshot utility
picom # X Compositor
pinentry-rofi # Rofi frontend for pinentry program
rofi # Menu prompt program
rofi-pass # Rofi frontend for password store
st # Suckless terminal
sxhkd # Hotkey daemon
texlive.combined.scheme-full # LaTeX to create documents
typst # Cool, minimal LaTeX alternative
ungoogled-chromium # If I need a special chrome feature
xsecurelock # Session locker
# GTK Themes
lxappearance-gtk2 # Theme switcher
gruvbox-dark-gtk
# X tools
xorg.xauth
xclip
];
}