linuxware/home-manager.nix

323 lines
7.9 KiB
Nix
Raw Normal View History

{ pkgs, ... }:
2023-11-05 04:53:31 -03:00
{
#
## HOME CONFIGURATION #
#
# Import configurations for better modularity.
imports = [
2024-07-17 11:30:04 -03:00
./programs/alacritty.nix
2024-06-26 02:12:09 -03:00
./programs/emacs
./programs/fish
2023-11-05 04:53:31 -03:00
./programs/git.nix
./programs/hyprland
2023-11-05 04:53:31 -03:00
./programs/mangohud.nix
./programs/neovim
2023-11-05 04:53:31 -03:00
./programs/obs-studio.nix
./programs/rofi
2024-07-16 00:43:51 -03:00
./programs/spotify
2024-06-04 17:45:53 -03:00
./programs/tmux
2023-11-05 04:53:31 -03:00
./programs/waybar.nix
];
# 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";
};
2023-11-05 04:53:31 -03:00
##
## 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
2024-05-21 15:55:59 -03:00
fastfetch
2023-11-05 04:53:31 -03:00
firefox
pavucontrol
2024-08-14 10:58:06 -03:00
protonvpn-gui
2023-11-05 04:53:31 -03:00
qbittorrent
qdirstat
speedcrunch
2023-11-05 04:53:31 -03:00
vlc
yt-dlp
zathura
2024-08-14 10:58:06 -03:00
# Personal utilities
anki
2024-08-14 10:58:06 -03:00
ledger
vesktop
2023-11-05 04:53:31 -03:00
# Editing
libreoffice
2024-08-14 10:58:06 -03:00
# Creative work
blender
krita
lmms
orca-slicer
2023-11-29 10:16:20 -03:00
shotcut
2024-08-14 10:58:06 -03:00
vcv-rack
2023-11-05 04:53:31 -03:00
## Entertainment
jellyfin-media-player
# Gaming
2023-11-29 10:16:20 -03:00
protontricks
wineWowPackages.stagingFull
2023-11-29 10:16:20 -03:00
winetricks
2024-07-09 06:32:41 -03:00
# Games
prismlauncher
2024-07-09 06:32:41 -03:00
shattered-pixel-dungeon
xonotic
2023-11-05 04:53:31 -03:00
## Libraries
2023-12-18 19:37:56 -03:00
libsForQt5.kdegraphics-thumbnailers
libsForQt5.kio-extras
rnnoise-plugin
xwaylandvideobridge
2023-11-05 04:53:31 -03:00
## Development
2024-09-01 17:36:44 -03:00
beekeeper-studio
2023-11-05 04:53:31 -03:00
lazygit
## Desktop environment
cliphist
2023-11-05 04:53:31 -03:00
grim
2024-08-23 20:51:40 -03:00
libsForQt5.ark
2023-11-05 04:53:31 -03:00
mako
slurp
swww
2023-11-30 14:44:14 -03:00
# Mail client
thunderbird
protonmail-bridge-gui
2023-11-30 14:44:14 -03:00
## Theming
(nerdfonts.override {
fonts = [
"FantasqueSansMono"
"NerdFontsSymbolsOnly"
];
})
2023-11-30 14:44:14 -03:00
libsForQt5.qtstyleplugin-kvantum
2023-12-18 19:37:56 -03:00
libsForQt5.qtwayland
qt6Packages.qtstyleplugin-kvantum
qt6Packages.qtwayland
# Create an FHS environment using the command `fhs`, enabling the execution of non-NixOS packages in NixOS!
2024-04-11 20:04:10 -03:00
(
let
2024-07-11 04:53:56 -03:00
base = appimageTools.defaultFhsEnvArgs;
in
2024-07-11 04:53:56 -03:00
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" ];
}
)
2024-04-11 20:04:10 -03:00
)
2023-11-05 04:53:31 -03:00
];
#
## DOTFILES #
#
# Home Manager is pretty good at managing dotfiles. The primary way to manage
# plain files is through 'home.file'.
home.file = {
2024-07-22 15:32:34 -03:00
# Cattpuccin theme for fish shell.
".config/fish/themes/Catppuccin-Frappe.theme".source = ./programs/fish/Catppuccin-Frappe.theme;
2023-12-12 10:16:33 -03:00
# Configuration for gamemode, for running games with optimizations.
".config/gamemode.ini".source = ./programs/gamemode.ini;
2023-11-05 04:53:31 -03:00
2023-12-12 10:16:33 -03:00
# Configuration for mako, a notification daemon.
".config/mako".source = ./programs/mako;
2024-07-22 15:32:34 -03:00
## 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
2023-12-12 10:16:33 -03:00
##
# 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 = {
2023-12-18 19:37:56 -03:00
"VAD Threshold (%)" = 60.0
"VAD Grace Period (ms)" = 175
"Retroactive VAD Grace (ms)" = 50
2023-12-12 10:16:33 -03:00
}
2023-11-05 04:53:31 -03:00
}
2023-12-12 10:16:33 -03:00
]
2023-11-05 04:53:31 -03:00
}
2023-12-12 10:16:33 -03:00
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
}
}
2023-11-05 04:53:31 -03:00
}
2023-12-12 10:16:33 -03:00
]
'';
2023-11-05 04:53:31 -03:00
2023-12-18 19:37:56 -03:00
# Configure DXVK
".config/dxvk.conf".text = ''
dxgi.tearFree = True
dxvk.enableGraphicsPipelineLibrary = Auto
dxvk.enableAsync = True
2023-12-18 19:37:56 -03:00
'';
".local/share/SpeedCrunch/color-schemes/catppuccin-frappe.json" = {
recursive = true;
source = builtins.fetchurl {
url = "https://raw.githubusercontent.com/catppuccin/speedcrunch/34f2b382de0188d2fd85f59a8a366f313fc30a71/themes/catppuccin-frappe.json";
sha256 = "sha256:0imx5a53p3ls5kddplgr7mbpbidrmzl9qiwpv7r8jjmsf8yxs0i4";
};
};
2023-12-12 10:16:33 -03:00
# My utility scripts
2024-07-16 00:45:20 -03:00
".local/share/scripts" = {
source = ./scripts;
recursive = true;
};
2023-11-05 04:53:31 -03:00
};
2024-08-23 20:51:32 -03:00
#
## THEMING #
#
2023-11-05 04:53:31 -03:00
home.pointerCursor = {
package = pkgs.catppuccin-cursors.frappeLavender;
2024-06-04 17:47:38 -03:00
name = "catppuccin-frappe-lavender-cursors";
2023-11-05 04:53:31 -03:00
gtk.enable = true;
2024-06-04 17:47:38 -03:00
x11.enable = true;
2023-11-05 04:53:31 -03:00
};
# Configure GTK.
gtk = {
enable = true;
gtk3.extraConfig = {
gtk-application-prefer-dark-theme = true;
};
gtk4.extraConfig = {
gtk-application-prefer-dark-theme = true;
2023-11-05 04:53:31 -03:00
};
iconTheme = {
name = "Papirus-Dark";
package = pkgs.papirus-icon-theme.override { color = "violet"; };
2023-11-05 04:53:31 -03:00
};
};
# Configure QT
qt = {
enable = true;
2024-07-22 15:32:34 -03:00
platformTheme.name = "qtct";
2023-11-05 04:53:31 -03:00
};
2023-11-29 10:15:32 -03:00
# Configure XDG
xdg.mimeApps.defaultApplications = {
"inode/directory" = [ "thunar.desktop" ];
2024-07-17 11:28:22 -03:00
"text/html" = [ "firefox.desktop" ];
"video/mp4" = [ "vlc.desktop" ];
"video/x-matroska" = [ "vlc.desktop" ];
"x-scheme-handler/about" = [ "firefox.desktop" ];
"x-scheme-handler/http" = [ "firefox.desktop" ];
"x-scheme-handler/https" = [ "firefox.desktop" ];
"x-scheme-handler/unknown" = [ "firefox.desktop" ];
2023-11-29 10:15:32 -03:00
};
2023-11-05 04:53:31 -03:00
}