Renamed home to programs, moved definition to user level

This commit is contained in:
2025-09-22 23:35:57 +02:00
parent d3266d1c1d
commit 03aebab782
88 changed files with 236 additions and 731 deletions

View File

@@ -81,22 +81,24 @@
) )
]; ];
commonHomeManagerConfig = username: { commonHomeManagerConfig =
home-manager = { { username, monitorSetup }:
useGlobalPkgs = true; {
useUserPackages = true; home-manager = {
backupFileExtension = "backup"; useGlobalPkgs = true;
extraSpecialArgs = { useUserPackages = true;
inherit inputs username; backupFileExtension = "backup";
extraSpecialArgs = {
inherit inputs username monitorSetup;
};
users.${username} = import ./users/${username}/home.nix;
sharedModules = [
inputs.catppuccin.homeModules.catppuccin
inputs.nixcord.homeModules.nixcord
inputs.nixvim.homeManagerModules.nixvim
];
}; };
users.${username} = import ./users/${username}/home.nix;
sharedModules = [
inputs.catppuccin.homeModules.catppuccin
inputs.nixcord.homeModules.nixcord
inputs.nixvim.homeManagerModules.nixvim
];
}; };
};
# System Builder for NixOS # System Builder for NixOS
mkSystem = mkSystem =
@@ -158,6 +160,7 @@
in in
{ {
# ISO Defaults
packages.x86_64-linux.iso = self.nixosConfigurations.iso.config.system.build.isoImage; packages.x86_64-linux.iso = self.nixosConfigurations.iso.config.system.build.isoImage;
packages.x86_64-linux.default = self.packages.x86_64-linux.iso; packages.x86_64-linux.default = self.packages.x86_64-linux.iso;

View File

@@ -1,8 +0,0 @@
{ pkgs, ... }:
{
home.packages = with pkgs; [
kdePackages.dolphin
libsForQt5.kio-extras
kio-fuse
];
}

View File

@@ -1,11 +0,0 @@
{ pkgs, ... }:
{
home.packages = with pkgs; [
krusader
krename
kdiff3
# kdePackages.kompare
xxdiff
];
}

View File

@@ -1,4 +0,0 @@
{ pkgs, ... }:
{
progams.spacefm.enable = true;
}

View File

@@ -1,4 +0,0 @@
{ pkgs, ... }:
{
}

View File

@@ -1,48 +0,0 @@
{ pkgs, ... }:
{
programs.alacritty = {
enable = true;
settings = {
# Font
font = {
normal = {
family = "FiraCode Nerd Font Mono"; # Change to your preferred Nerd Font
style = "Regular";
};
bold = {
family = "FiraCode Nerd Font Mono";
style = "Bold";
};
italic = {
family = "FiraCode Nerd Font Mono";
style = "Italic";
};
size = 11;
};
window = {
opacity = 0.6; # Adjust between 0.0 (fully transparent) and 1.0 (opaque)
padding = {
x = 10;
y = 10;
};
decorations = "full"; # none, transparent, full, buttonless
title = "Alacritty";
dynamic_title = true;
};
};
};
fonts = {
fontconfig = {
enable = true;
defaultFonts = {
monospace = [ "FiraCode Nerd Font Mono" ];
};
};
};
home.packages = with pkgs; [
fira-code-nerdfont
];
}

View File

@@ -1,34 +0,0 @@
{ monitorSetup, ... }:
{
imports = [
./kitty.nix # Terminal
./hyprland.nix
./hypridle.nix
./hyprlock.nix
#./hyprpaper.nix
#./wpaperd.nix
./swww.nix
./rofi # App Launcher
./mako.nix # Notifyer
./cava.nix # Music Visualizer
#./swaync.nix
];
programs.waybar =
if monitorSetup == "single" then
import ../../home/hyprland/waybar/single.nix
else if monitorSetup == "dual" then
import ../../home/hyprland/waybar/dual.nix
else if monitorSetup == "side" then
import ../../home/hyprland/waybar/side.nix
else
{ };
home.file.".config/waybar" = {
source = ./waybar/configs;
# copy the scripts directory recursively
recursive = true;
};
home.file.".config/hypr/hyprland.conf".enable = false;
}

View File

@@ -1,35 +0,0 @@
{
pkgs,
monitorSetup,
...
}:
{
programs.waybar = {
enable = true;
package = pkgs.waybar;
};
home.file.".config/waybar/style.css" =
if monitorSetup == "side" then
{
source = ./configs/side.css;
}
else
{
source = ./configs/style.css;
};
home.file.".config/waybar/cava.sh".source = ./configs/cava.sh;
home.file.".config/waybar/mocha.css".source = ./configs/mocha.css;
/*
home.file.".config/waybar" = {
source = ./configs;
# copy the scripts directory recursively
recursive = true;
};
home.file.".config/waybar/style.css" = lib.mkIf (monitorSetup == "side") {
source = ./configs/side.css;
};
*/
}

View File

@@ -1,9 +0,0 @@
{ pkgs, ... }:
{
home.packages = with pkgs; [
niri
xwayland-satellite
];
xdg.configFile."niri/config.kdl".source = ./niri-config.kdl;
}

View File

@@ -1,58 +0,0 @@
{
lib,
pkgs,
catppuccin-bat,
...
}:
{
home.packages = with pkgs; [
];
programs = {
tmux = {
enable = true;
clock24 = true;
keyMode = "vi";
extraConfig = "mouse on";
};
bat = {
enable = true;
config = {
pager = "less -FR";
theme = "catppuccin-mocha";
};
themes = {
# https://raw.githubusercontent.com/catppuccin/bat/main/Catppuccin-mocha.tmTheme
catppuccin-mocha = {
src = catppuccin-bat;
file = "Catppuccin-mocha.tmTheme";
};
};
};
btop.enable = true; # replacement of htop/nmon
eza.enable = true; # A modern replacement for ls
jq.enable = true; # A lightweight and flexible command-line JSON processor
ssh.enable = true;
aria2.enable = true;
skim = {
enable = true;
enableZshIntegration = true;
defaultCommand = "rg --files --hidden";
changeDirWidgetOptions = [
"--preview 'exa --icons --git --color always -T -L 3 {} | head -200'"
"--exact"
];
};
};
services = {
#syncthing.enable = true;
# auto mount usb drives
udiskie.enable = true;
};
}

View File

@@ -1,8 +0,0 @@
{ pkgs, ... }:
{
# Install sqlitebrowser (DB Browser for SQLite)
home.packages = with pkgs; [
beekeeper-studio
];
}

View File

@@ -1,24 +0,0 @@
{ pkgs, ... }:
{
home.packages = with pkgs; [
# C / C++
clang
#gcc
lua
# Rust
cargo
rustc
# Zig
zig
#python
python314
];
programs.go = {
enable = true;
packages = { };
};
}

View File

@@ -1,12 +0,0 @@
{
imports = [
./git.nix
./neovim
./fstl.nix
./openscad.nix
./sqllite_browser.nix
./compilers.nix
./beekeeper-studio.nix
#./newelle.nix
];
}

View File

@@ -1,8 +0,0 @@
{ pkgs, ... }:
{
# Install fstl
home.packages = with pkgs; [
fstl
];
}

View File

@@ -1,13 +0,0 @@
{
pkgs,
...
}:
{
home.packages = [ pkgs.gh ];
programs.git = {
enable = true;
# ... Other options ...
};
}

View File

@@ -1,8 +0,0 @@
{ pkgs, ... }:
{
# Install fstl
home.packages = with pkgs; [
newelle
];
}

View File

@@ -1,8 +0,0 @@
{ pkgs, ... }:
{
# Install OpenSCAD
home.packages = with pkgs; [
openscad
];
}

View File

@@ -1,8 +0,0 @@
{ pkgs, ... }:
{
# Install sqlitebrowser (DB Browser for SQLite)
home.packages = with pkgs; [
sqlitebrowser
];
}

View File

@@ -1,6 +0,0 @@
{ pkgs, ... }:
{
home.packages = with pkgs; [
airshipper
];
}

View File

@@ -1,10 +0,0 @@
{
pkgs,
config,
...
}:
{
home.packages = with pkgs; [
itch
];
}

View File

@@ -1,10 +0,0 @@
{
pkgs,
config,
...
}:
{
home.packages = with pkgs; [
lutris
];
}

View File

@@ -1,14 +0,0 @@
{
pkgs,
config,
...
}:
{
home.packages = with pkgs; [
xonotic
# armagetron
# freeciv
# mindustry
# openra
];
}

View File

@@ -1,18 +0,0 @@
{
pkgs,
config,
...
}:
{
/*
home.packages = with pkgs; [
steam
];
*/
programs.steam = {
enable = true;
remotePlay.openFirewall = true;
dedicatedServer.openFirewall = true;
localNetworkGameTransfers.openFirewall = true;
};
}

View File

@@ -1,7 +0,0 @@
{ pkgs, ... }:
{
home.packages = with pkgs; [
audacity
yt-dlp
];
}

View File

@@ -1,12 +0,0 @@
{
pkgs,
config,
...
}:
{
home.packages = with pkgs; [
# images
imv
];
}

View File

@@ -1,14 +0,0 @@
{
pkgs,
config,
...
}:
# media - control and enjoy audio/video
{
imports = [
./audio.nix
./image.nix
./webcam.nix
];
}

View File

@@ -1,14 +0,0 @@
{ pkgs, ... }:
{
programs.obs-studio = {
enable = true;
#enableVirtualCamera = true;
plugins = with pkgs.obs-studio-plugins; [
wlrobs
obs-vkcapture
obs-backgroundremoval
obs-pipewire-audio-capture
];
};
}

View File

@@ -1,39 +0,0 @@
{ pkgs, inputs, ... }:
{
imports = [
inputs.spicetify-nix.homeManagerModules.default
];
programs.spicetify =
let
spicePkgs = inputs.spicetify-nix.legacyPackages.${pkgs.system};
in
{
enable = true;
spotifyPackage = pkgs.spotify;
theme = spicePkgs.themes.catppuccin;
colorScheme = "mocha";
enabledExtensions = with spicePkgs.extensions; [
bookmark
fullAppDisplay
keyboardShortcut
popupLyrics
shuffle
autoVolume
betterGenres
adblock
wikify
songStats
];
enabledCustomApps = with spicePkgs.apps; [
lyricsPlus
newReleases
marketplace
];
#enabledSnippets = with spicePkgs.snippets; [ ];
};
}

View File

@@ -1,21 +0,0 @@
{ pkgs, ... }:
{
# Install Blender
home.packages = with pkgs; [
blender
];
# Optional: Install specific versions of Blender (e.g., LTS)
# home.packages = with pkgs; [
# blender-bin # Latest stable release
# blender-lts
# ];
# Optional: Install Blender plugins
# home.packages = with pkgs; [
# blender
# blender-addons.io-scene-gltf2 # Example GLTF exporter/importer
# # Add other Blender addons here
# ];
}

View File

@@ -1,4 +0,0 @@
{ pkgs, ... }:
{
home.programs.geary.enable = true;
}

View File

@@ -1,13 +0,0 @@
{ pkgs, ... }:
let
logseq-patch = pkgs.logseq.override {
electron_27 = pkgs.electron_34;
};
in
{
home.packages = with pkgs; [
logseq-patch
logseq
];
}

View File

@@ -1,4 +0,0 @@
{ pkgs, ... }:
{
home.packages = with pkgs; [ notesnook ];
}

View File

@@ -1,16 +0,0 @@
{ pkgs, ... }:
{
# Install Obsidian
home.packages = with pkgs; [
obsidian
];
# Optional: You might want to configure Obsidian's data directory.
# By default, Obsidian stores its data in ~/Obsidian.
# You can change this using environment variables, but it's less common to manage this declaratively.
# Example (you might not need this):
# environment.variables = {
# OBSIDIAN_VAULT_PATH = "/path/to/your/vaults";
# };
}

View File

@@ -1,4 +0,0 @@
{ pkgs, ... }:
{
home.packages = [ pkgs.libsForQt5.okular ];
}

View File

@@ -1,8 +0,0 @@
{ pkgs, ... }:
{
# Install OnlyOffice Desktop Editors
home.packages = with pkgs; [
onlyoffice-desktopeditors
];
}

View File

@@ -1,8 +0,0 @@
{ pkgs, ... }:
{
# Install Slic3r
home.packages = with pkgs; [
slic3r
];
}

View File

@@ -1,4 +0,0 @@
{ pkgs, ... }:
{
home.packages = [ pkgs.trilium-desktop ];
}

View File

@@ -1,8 +0,0 @@
{ pkgs, ... }:
{
# Install Element Desktop
home.packages = with pkgs; [
element-desktop
];
}

View File

@@ -1,9 +0,0 @@
{ pkgs, ... }:
{
# Install Teamspeak Desktop
home.packages = with pkgs; [
teamspeak3
# teamspeak6-client
];
}

View File

@@ -1,9 +0,0 @@
{ pkgs, ... }:
{
# Install Telegram Desktop
home.packages = with pkgs; [
telegram-desktop
telegram-cli
];
}

View File

@@ -1,33 +0,0 @@
{ lib, ... }:
{
programs.nixcord = {
enable = true;
discord = lib.mkForce { enable = false; };
vesktop.enable = true;
config = {
useQuickCss = true;
themeLinks = [
"https://raw.githubusercontent.com/catppuccin/discord/refs/heads/main/themes/mocha.theme.css"
];
frameless = true;
plugins = {
betterFolders.enable = true;
betterRoleContext.enable = true;
mentionAvatars.enable = true;
copyUserURLs.enable = true;
fakeNitro.enable = true;
decor.enable = true;
#accountPanelServerProfile = true;
copyFileContents.enable = true;
fakeProfileThemes.enable = true;
friendsSince.enable = true;
implicitRelationships.enable = true;
noTrack.enable = true;
permissionsViewer.enable = true;
serverInfo.enable = true;
translate.enable = true;
};
};
};
}

View File

@@ -1,8 +0,0 @@
{ pkgs, ... }:
{
# Install Element Desktop
home.packages = with pkgs; [
zapzap
];
}

View File

@@ -1,14 +0,0 @@
{
pkgs,
config,
...
}:
{
programs.chromium = {
enable = true;
commandLineArgs = [ "--enable-features=TouchpadOverscrollHistoryNavigation" ];
extensions = [
# {id = "";} // extension id, query from chrome web store
];
};
}

View File

@@ -1,12 +0,0 @@
{
pkgs,
config,
username,
...
}:
{
programs.firefox = {
enable = false;
profiles.${username} = { };
};
}

View File

@@ -1,9 +0,0 @@
{ pkgs, ... }:
{
imports = [
./qt.nix
# ./gtk.nix
];
}

View File

@@ -1,19 +0,0 @@
{ pkgs, ... }:
{
home.packages = with pkgs.libsForQt5; [
qt5ct
qtstyleplugin-kvantum
];
qt = {
enable = true;
platformTheme.name = "qtct";
style.name = "kvantum";
};
xdg.configFile = {
"Kvantum/ArcDark".source = "${pkgs.arc-kde-theme}/share/Kvantum/ArcDark";
"Kvantum/kvantum.kvconfig".text = "[General]\ntheme=ArcDark";
};
}

View File

@@ -1,6 +1,5 @@
{ {
pkgs, pkgs,
config,
... ...
}: }:
{ {

View File

@@ -1,6 +1,4 @@
{ {
pkgs,
config,
username, username,
... ...
}: }:

View File

Before

Width:  |  Height:  |  Size: 9.2 MiB

After

Width:  |  Height:  |  Size: 9.2 MiB

View File

Before

Width:  |  Height:  |  Size: 447 KiB

After

Width:  |  Height:  |  Size: 447 KiB

View File

@@ -0,0 +1,32 @@
{
pkgs,
monitorSetup,
...
}:
{
programs.waybar =
{
enable = true;
package = pkgs.waybar;
}
// (
if monitorSetup == "single" then
import ./single.nix
else if monitorSetup == "dual" then
import ./dual.nix
else if monitorSetup == "side" then
import ./side.nix
else
{ }
);
home.file.".config/waybar/cava.sh".source = ./configs/cava.sh;
home.file.".config/waybar/mocha.css".source = ./configs/mocha.css;
home.file.".config/waybar" = {
source = ./configs;
# copy the scripts directory recursively
recursive = true;
};
}

View File

@@ -1,5 +1,14 @@
{ pkgs, ... }: { pkgs, ... }:
{ {
imports = [
./common/kitty.nix
./common/waybar
./common/cava.nix
./common/rofi
./xdg.nix
./common/neovim
./common/audio.nix
];
gtk = { gtk = {
enable = true; enable = true;

View File

@@ -0,0 +1,50 @@
{
pkgs,
...
}:
{
imports = [
./hyprland.nix
./hypridle.nix
./hyprlock.nix
];
home.packages = with pkgs; [
grim
slurp
wl-clipboard
];
home.file.".config/hypr" = {
source = ./configs;
# copy the scripts directory recursively
recursive = true;
};
home.file.".config/hypr/avatar" = {
source = ../../../avatar;
recursive = true;
};
home.file = {
"Pictures/Avatar" = {
source = ../../../avatar;
recursive = true;
};
};
home.pointerCursor = {
gtk.enable = true;
package = pkgs.bibata-cursors;
name = "Bibata-Modern-Classic";
size = 16;
};
home.file.".config/hypr/hyprland.conf".enable = false;
# NOTE: this executable is used by greetd to start a wayland session when system boot up
# with such a vendor-no-locking script, we can switch to another wayland compositor without modifying greetd's config in NixOS module
home.file.".wayland-session" = {
source = "${pkgs.hyprland}/bin/Hyprland";
executable = true;
};
}

View File

@@ -11,36 +11,6 @@ let
apps = "rofi -show window ${theme}"; apps = "rofi -show window ${theme}";
in in
{ {
home.packages = with pkgs; [
grim
slurp
wl-clipboard
];
home.file.".config/hypr" = {
source = ./configs;
# copy the scripts directory recursively
recursive = true;
};
home.file.".config/hypr/avatar" = {
source = ../../avatar;
recursive = true;
};
home.file = {
"Pictures/Avatar" = {
source = ../../avatar;
recursive = true;
};
};
home.pointerCursor = {
gtk.enable = true;
package = pkgs.bibata-cursors;
name = "Bibata-Modern-Classic";
size = 16;
};
systemd.user.targets.hyprland-sessionn.Unit.Wants = [ systemd.user.targets.hyprland-sessionn.Unit.Wants = [
"xdg-desktop-autostart.target" "xdg-desktop-autostart.target"
@@ -296,11 +266,4 @@ in
"${super}, mouse:273, resizewindow" "${super}, mouse:273, resizewindow"
]; ];
}; };
# NOTE: this executable is used by greetd to start a wayland session when system boot up
# with such a vendor-no-locking script, we can switch to another wayland compositor without modifying greetd's config in NixOS module
home.file.".wayland-session" = {
source = "${package}/bin/Hyprland";
executable = true;
};
} }

View File

@@ -0,0 +1,14 @@
{
pkgs,
...
}:
{
# imports = [ ./niri-switcher.nix ];
home.packages = with pkgs; [
niri
xwayland-satellite
];
xdg.configFile."niri/config.kdl".source = ./config.kdl;
}

View File

@@ -0,0 +1,6 @@
{ ... }:
{
programs.niriswitcher = {
enable = true;
};
}

View File

@@ -1,4 +1,8 @@
{ {
pkgs,
lib,
inputs,
monitorSetup,
... ...
}: }:
{ {
@@ -9,36 +13,33 @@
################################################################################################################## ##################################################################################################################
imports = [ imports = [
../../home/core.nix # Setup Home ../core.nix # Setup Home Manager
../../home/xdg.nix # Bindings inputs.spicetify-nix.homeManagerModules.default
../../programs/wm
../../programs/wm/hyprland
../../programs/wm/niri
../../programs/webcam.nix
];
../../home/hyprland # Window Manager home.packages = with pkgs; [
../../home/niri audacity
blender
slic3r
okular
obsidian
element-desktop
zapzap
libsForQt5.okular
../../home/programs/dev # Dev Tools onlyoffice-desktopeditors
openscad
../../home/programs/media/media.nix fstl
../../home/programs/media/audacity.nix sqlitebrowser
../../home/programs/media/obs.nix
../../home/programs/media/spicetify.nix
../../home/programs/productivity/blender.nix
../../home/programs/productivity/slicer.nix
../../home/programs/productivity/okular.nix
../../home/programs/productivity/obsidian.nix
../../home/programs/social/element.nix
../../home/programs/social/zapzap.nix
#../../home/programs/social/teamspeak.nix
../../home/programs/social/vesktop.nix
../../home/programs/web/floorp.nix
# Games # Games
../../home/programs/games/itch.nix lutris
../../home/programs/games/lutris.nix airshipper
../../home/programs/games/opensource.nix xonotic
../../home/programs/games/airshipper.nix
]; ];
catppuccin = { catppuccin = {
@@ -46,10 +47,87 @@
flavor = "mocha"; flavor = "mocha";
}; };
programs.git = { programs = {
userName = "DerGrumpf"; git = {
userEmail = "p.keier@beyerstedt-it.de"; enable = true;
}; userName = "DerGrumpf";
userEmail = "p.keier@beyerstedt-it.de";
};
nixcord = {
enable = true;
discord = lib.mkForce { enable = false; };
vesktop.enable = true;
config = {
useQuickCss = true;
themeLinks = [
"https://raw.githubusercontent.com/catppuccin/discord/refs/heads/main/themes/mocha.theme.css"
];
frameless = true;
plugins = {
betterFolders.enable = true;
betterRoleContext.enable = true;
mentionAvatars.enable = true;
copyUserURLs.enable = true;
fakeNitro.enable = true;
decor.enable = true;
#accountPanelServerProfile = true;
copyFileContents.enable = true;
fakeProfileThemes.enable = true;
friendsSince.enable = true;
implicitRelationships.enable = true;
noTrack.enable = true;
permissionsViewer.enable = true;
serverInfo.enable = true;
translate.enable = true;
};
};
};
obs-studio = {
enable = true;
#enableVirtualCamera = true;
plugins = with pkgs.obs-studio-plugins; [
wlrobs
obs-vkcapture
obs-backgroundremoval
obs-pipewire-audio-capture
];
};
spicetify =
let
spicePkgs = inputs.spicetify-nix.legacyPackages.${pkgs.system};
in
{
enable = true;
spotifyPackage = pkgs.spotify;
theme = spicePkgs.themes.catppuccin;
colorScheme = "mocha";
enabledExtensions = with spicePkgs.extensions; [
bookmark
fullAppDisplay
keyboardShortcut
popupLyrics
shuffle
autoVolume
betterGenres
adblock
wikify
songStats
];
enabledCustomApps = with spicePkgs.apps; [
lyricsPlus
newReleases
marketplace
];
#enabledSnippets = with spicePkgs.snippets; [ ];
};
};
home.file.".config/fastfetch/config.jsonc".source = ./config.jsonc; home.file.".config/fastfetch/config.jsonc".source = ./config.jsonc;
} }