linuxware/home-manager.nix
Alexandre Cavalheiro b5149f0304
hm: remove logseq temporarily
Once again it's broken since it uses an EOL version of Electron on it's
latest stable release.

Maybe it's time for me to maintain it in nixpkgs since no one is taking
that spot.
2024-06-15 23:02:19 -03:00

283 lines
7.1 KiB
Nix

{ pkgs, ... }:
{
#
## HOME CONFIGURATION #
#
# Import configurations for better modularity.
imports = [
./programs/fish
./programs/git.nix
./programs/hyprland
./programs/mangohud.nix
./programs/neovim
./programs/obs-studio.nix
./programs/rofi
./programs/tmux
./programs/waybar.nix
./programs/wezterm
];
# Home Manager needs a bit of information about you and the paths it should
# manage.
home.username = "wizardlink";
home.homeDirectory = "/home/wizardlink";
# This value determines the Home Manager release that your configuration is
# compatible with. This helps avoid breakage when a new Home Manager release
# introduces backwards incompatible changes.
#
# You should not change this value, even if you update Home Manager. If you do
# want to update the value, then make sure to first check the Home Manager
# release notes.
home.stateVersion = "23.05"; # Please read the comment before changing.
# You can also manage environment variables but you will have to manually
# source
#
# ~/.nix-profile/etc/profile.d/hm-session-vars.sh
#
# or
#
# /etc/profiles/per-user/wizardlink/etc/profile.d/hm-session-vars.sh
# if you don't want to manage your shell through Home Manager.
home.sessionVariables = {
EDITOR = "nvim";
NIXOS_OZONE_WL = "1";
QT_QPA_PLATFORM = "wayland";
XCURSOR_SIZE = 36;
};
##
## PACKAGES #
##
# Let Home Manager install and manage itself.
programs.home-manager.enable = true;
# Allow unfree packages
nixpkgs.config.allowUnfree = true;
# The home.packages option allows you to install Nix packages into your
# environment.
home.packages = with pkgs; [
# # You can also create simple shell scripts directly inside your
# # configuration. For example, this adds a command 'my-hello' to your
# # environment:
# (pkgs.writeShellScriptBin "my-hello" ''
# echo "Hello, ${config.home.username}!"
# '')
## Tools
# Utilities
brightnessctl
discord
fastfetch
firefox
pavucontrol
qbittorrent
qdirstat
vesktop
vlc
yt-dlp
zathura
# Editing
krita
libreoffice
shotcut
## Entertainment
jellyfin-media-player
spotify
# Gaming
protontricks
wineWowPackages.stagingFull
winetricks
xonotic
## Libraries
libsForQt5.kdegraphics-thumbnailers
libsForQt5.kio-extras
rnnoise-plugin
xwaylandvideobridge
## Development
lazygit
vscode-extensions.vadimcn.vscode-lldb
## Desktop environment
cliphist
grim
mako
polkit-kde-agent
slurp
swww
## Theming
(nerdfonts.override { fonts = [ "FantasqueSansMono" ]; })
libsForQt5.qtstyleplugin-kvantum
libsForQt5.qtwayland
qt6Packages.qtstyleplugin-kvantum
qt6Packages.qtwayland
# Create an FHS environment using the command `fhs`, enabling the execution of non-NixOS packages in NixOS!
(
let base = pkgs.appimageTools.defaultFhsEnvArgs;
in pkgs.buildFHSUserEnv (base // {
name = "fhs";
targetPkgs = pkgs:
(
# pkgs.buildFHSUserEnv provides only a minimal FHS environment,
# lacking many basic packages needed by most software.
# Therefore, we need to add them manually.
#
# pkgs.appimageTools provides basic packages required by most software.
(base.targetPkgs pkgs) ++ (with pkgs; [ nodejs ])
);
profile = "export FHS=1";
runScript = "bash";
extraOutputsToInstall = [ "dev" ];
})
)
];
#
## DOTFILES #
#
# Home Manager is pretty good at managing dotfiles. The primary way to manage
# plain files is through 'home.file'.
home.file = {
# Cattpuccin theme for fish shell.
".config/fish/themes/Catppuccin-Frappe.theme".source =
./programs/fish/Catppuccin-Frappe.theme;
# Configuration for gamemode, for running games with optimizations.
".config/gamemode.ini".source = ./programs/gamemode.ini;
# Configuration for mako, a notification daemon.
".config/mako".source = ./programs/mako;
## Kvantum's theme configuration.
".config/Kvantum/Catppuccin-Frappe-Lavender" = {
source = "${
pkgs.catppuccin-kvantum.override {
accent = "Lavender";
variant = "Frappe";
}
}/share/Kvantum/Catppuccin-Frappe-Lavender";
};
".config/Kvantum/kvantum.kvconfig".text = ''
[General]
theme=Catppuccin-Frappe-Lavender
'';
##
## Themeing configuration for qt5 and qt6
".config/qt5ct/colors".source = ./theming/qt5ct;
".config/qt6ct/colors".source =
./theming/qt5ct; # We use the qt5ct because it's the SAME spec
##
# Configure pipewire for microphone noise supression.
".config/pipewire/pipewire.conf.d/99-input-denoising.conf".text = ''
context.modules = [
{ name = libpipewire-module-filter-chain
args = {
node.description = "Noise Canceling source"
media.name = "Noise Canceling source"
filter.graph = {
nodes = [
{
type = ladspa
name = rnnoise
plugin = ${pkgs.rnnoise-plugin}/lib/ladspa/librnnoise_ladspa.so
label = noise_suppressor_mono
control = {
"VAD Threshold (%)" = 60.0
"VAD Grace Period (ms)" = 175
"Retroactive VAD Grace (ms)" = 50
}
}
]
}
capture.props = {
node.name = "capture.rnnoise_source"
node.passive = true
audio.rate = 48000
}
playback.props = {
node.name = "rnnoise_source"
media.class = Audio/Source
audio.rate = 48000
}
}
}
]
'';
# Configure DXVK
".config/dxvk.conf".text = ''
dxgi.tearFree = True
dxvk.enableGraphicsPipelineLibrary = Auto
dxvk.enableAsync = True
'';
# My utility scripts
".local/share/scripts".source = ./scripts;
};
## Theming
home.pointerCursor = {
package = pkgs.catppuccin-cursors.frappeLavender;
name = "catppuccin-frappe-lavender-cursors";
gtk.enable = true;
x11.enable = true;
};
# Configure GTK.
gtk = {
enable = true;
theme = {
name = "Catppuccin-Frappe-Standard-Lavender-Dark";
package = pkgs.catppuccin-gtk.override {
accents = [ "lavender" ];
tweaks = [ "rimless" ];
variant = "frappe";
};
};
iconTheme = {
name = "Papirus-Dark";
package = pkgs.catppuccin-papirus-folders.override {
accent = "lavender";
flavor = "frappe";
};
};
};
# Configure QT
qt = {
enable = true;
platformTheme.name = "qtct";
};
# Configure XDG
xdg.mimeApps.defaultApplications = {
"text/html" = "firefox";
"video/x-matroska" = "vlc";
"x-scheme-handler/about" = "firefox";
"x-scheme-handler/http" = "firefox";
"x-scheme-handler/https" = "firefox";
"x-scheme-handler/unknown" = "firefox";
};
}