Working on reshuffling

This commit is contained in:
2026-03-19 10:45:07 +00:00
parent bebf308651
commit 7e48206cc7
33 changed files with 1570 additions and 0 deletions
@@ -0,0 +1,62 @@
{ lib, pkgs, flakeRoot, ... }:
let
# --- Define user locally ---
username = "henrov";
# --- Eww config directory in flake ---
ewwAssetsDir = "${flakeRoot}/assets/system/conf/eww";
# --- Read all files in ewwAssetsDir dynamically ---
ewwFiles = builtins.attrNames (builtins.readDir ewwAssetsDir);
# --- Generate xdg.configFile entries for all files ---
ewwConfigs = lib.genAttrs ewwFiles (name: {
text = builtins.readFile "${ewwAssetsDir}/${name}";
});
# --- Full config directory path in user's config home ---
ewwConfigDir = "/home/${username}/.config/eww";
in
{
flake.nixosModules.eww = { config, pkgs, lib, ... }:
{
options.mySystem.apps.eww.enable =
lib.mkEnableOption "Enable Eww widgets";
config = lib.mkIf (config.mySystem.apps.eww.enable or false) {
mySystem = {
apps.wallpaper = {
enable = true;
packages = [ "eww" ]; # symbolic, actual package below
};
};
# --- Home Manager user config ---
home-manager.users.${username} = {
home.stateVersion = "25.11";
home.username = username;
home.homeDirectory = "/home/${username}";
# Deploy eww configs
home.file."${ewwConfigDir}" = {
source = ewwAssetsDir;
recursive = true;
};
# Session variables
home.sessionVariables = {
EWW_BIN = "${pkgs.eww}/bin/eww";
};
# Wayland/Hyprland startup hooks
wayland.windowManager.hyprland.settings = lib.mkForce {
exec-once = [ "eww daemon" ];
exec = [ "eww open-many ${ewwConfigDir}/widgets" ];
};
};
};
};
}
@@ -0,0 +1,24 @@
{ lib, ... }:
{
flake.nixosModules.fonts =
{
config,
pkgs,
lib,
...
}:
{
options.mySystem.desktop.fonts.enable = lib.mkEnableOption "Enable system fonts";
config = lib.mkIf (config.mySystem.desktop.fonts.enable or false) {
fonts.packages = with pkgs; [
nerd-fonts.iosevka
nerd-fonts.fira-code
];
};
};
}
@@ -0,0 +1,53 @@
{ lib, pkgs, flakeRoot, ... }:
let
# --- Define user locally ---
username = "henrov";
# --- Hyprland conf directory ---
hyprConfDir = "${flakeRoot}/assets/hyprland/conf/hypr";
# --- Read files ---
hyprlandFiles = builtins.attrNames (builtins.readDir hyprConfDir);
# --- Exclude main hyprland.conf from automatic symlinks ---
otherHyprlandFiles = lib.filter (name: name != "hyprland.conf") hyprlandFiles;
# --- Generate xdg.configFile entries for the other files ---
otherConfigs = lib.genAttrs otherHyprlandFiles (name: {
target = "hypr/${name}";
source = "${hyprConfDir}/${name}";
});
# --- Add main hyprland.conf separately ---
hyprlandConf = {
"hypr/hyprland.conf".text = builtins.readFile "${hyprConfDir}/hyprland.conf";
"hypr/.keep".text = "";
};
in
{
flake.nixosModules.hyprland = { config, pkgs, lib, ... }:
{
options.mySystem.desktop.hyprland.enable =
lib.mkEnableOption "Enable Hyprland Desktop";
config = lib.mkIf (config.mySystem.desktop.hyprland.enable or false) {
programs.hyprland.enable = true;
home-manager.users.${username} = {
home.stateVersion = "25.11";
home.username = username;
home.homeDirectory = "/home/${username}";
wayland.windowManager.hyprland = {
enable = true;
settings.general."col.active_border" = lib.mkForce "0xff97cbcd 0xff89b4fa";
};
xdg.configFile = otherConfigs // hyprlandConf;
};
};
};
}
@@ -0,0 +1,38 @@
{ lib, ... }:
{
flake.nixosModules.rotating-wallpaper = { config, pkgs, lib, ... }:
let
wallpaperConf = ../../../assets/hyprland/wallpaperstuff/wallpaper.toml;
in
{
options.mySystem.desktop.wallpaper.enable =
lib.mkEnableOption "Enable rotating wallpaper via wpaperd";
config = lib.mkIf (config.mySystem.desktop.wallpaper.enable or false) {
# Home Manager context
home-manager.users.henrov = {
home.packages = [ pkgs.wpaperd ];
home.file.".config/wpaperd/wallpaper.toml".source =
wallpaperConf;
systemd.user.services.wpaperd = {
description = "wpaperd wallpaper daemon";
wantedBy = [ "default.target" ];
serviceConfig = {
Type = "simple";
ExecStart =
"${pkgs.wpaperd}/bin/wpaperd --config ~/.config/wpaperd/wallpaper.toml";
Restart = "on-failure";
RestartSec = 1;
};
};
};
};
};
}
@@ -0,0 +1,67 @@
{ lib, pkgs, flakeRoot, ... }:
let
username = "henrov";
in
{
flake.nixosModules.stylix = { config, pkgs, lib, ... }:
let
# --- Default stylix config ---
stylixCfg = {
enable = true;
base16Scheme = "${flakeRoot}/assets/system/theming/stylix/catppuccin-mocha.yaml";
image = "${flakeRoot}/assets/hyprland/wallpaperstuff/pictures/wall1.jpg";
polarity = "dark";
cursor = {
package = pkgs.phinger-cursors;
name = "phinger-cursors-light";
size = 24;
};
fonts = {
monospace = {
package = pkgs.nerd-fonts.fira-code;
name = "Fira Code Nerd Font";
};
sansSerif = {
package = pkgs.lato;
name = "Lato";
};
};
icons = {
enable = true;
package = pkgs.papirus-icon-theme;
dark = "Papirus-Dark";
light = "Papirus-Light";
};
};
in
{
options.mySystem.desktop.stylix.enable =
lib.mkEnableOption "Enable Stylix System Theming";
config = lib.mkIf (stylixCfg.enable or false) {
# --- Desktop / wallpaper packages ---
mySystem.apps.wallpaper = {
enable = true;
packages = [ "feh" "st" ];
};
# --- Stylix theming ---
stylix = stylixCfg;
# --- Home session variables ---
home-manager.users.${username}.home.sessionVariables = {
XCURSOR_THEME = stylixCfg.cursor.name;
XCURSOR_SIZE = toString stylixCfg.cursor.size;
HYPRCURSOR_THEME = stylixCfg.cursor.name;
HYPRCURSOR_SIZE = toString stylixCfg.cursor.size;
};
};
};
}
@@ -0,0 +1,34 @@
{ lib, ... }:
let
username = "henrov";
waybarAssets = ../../../assets/system/conf/waybar;
waybarFiles = builtins.readDir waybarAssets;
waybarConfs = lib.genAttrs (builtins.attrNames waybarFiles) (name: {
src = "${waybarAssets}/${name}";
});
enableWaybar = true;
in
{
# Declare a top-level option
options.myApps = lib.mkOption {
type = lib.types.attrsOf lib.types.any;
default = {};
description = "Top-level collection of custom apps";
};
options.enableWaybar = lib.mkEnableOption "Enable Waybar status bar";
# Everything goes under config safely
config = lib.mkIf enableWaybar {
myApps = {
waybar = {
enable = true;
user = username;
assetsDir = waybarAssets;
files = waybarConfs;
};
};
};
}
@@ -0,0 +1,36 @@
{ lib, ... }:
{
flake.nixosModules.wayland = { config, pkgs, lib, ... }:
let
username = "henrov"; # <-- simpel en stabiel
in
{
options.mySystem.desktop.wayland.enable =
lib.mkEnableOption "Enable Wayland + portals";
config = lib.mkIf (config.mySystem.desktop.wayland.enable or false) {
home-manager.users.${username} = {
xdg.portal = {
enable = true;
extraPortals = with pkgs; [
xdg-desktop-portal-hyprland
];
config.hyprland = {
"org.freedesktop.impl.portal.Screencast" = [ "hyprland" ];
};
};
home.packages = with pkgs; [
uwsm
];
};
};
};
}