diff --git a/Droidnix/README.html b/Droidnix/README.html index 5bbc26e9d..048943e7e 100644 --- a/Droidnix/README.html +++ b/Droidnix/README.html @@ -3,7 +3,7 @@ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
- +generated/flake.nixgenerated/modules/traveldroid/system/colors.nixgenerated/hosts/traveldroid/boot.nixgenerated/hosts/traveldroid/hardware-configuration.nixgenerated/hosts/traveldroid/host.nixgenerated/flake.nixgenerated/modules/traveldroid/system/colors.nixgenerated/hosts/traveldroid/boot.nixgenerated/hosts/traveldroid/hardware-configuration.nixgenerated/hosts/traveldroid/host.nixgenerated/modules/traveldroid/apps/2_b_installed.nixgenerated/modules/traveldroid/apps/emacs/emacs.nixgenerated/disabled/modules/traveldroid/apps/flameshot.nixgenerated/modules/traveldroid/apps/kdeconnect.nixgenerated/modules/traveldroid/apps/kitty.nixgenerated/modules/traveldroid/apps/starship.nixgenerated/modules/traveldroid/apps/thunar.nixgenerated/modules/traveldroid/apps/wofi.nixgenerated/modules/traveldroid/apps/zenbrowser.nixgenerated/modules/traveldroid/apps/zsh.nixgenerated/modules/traveldroid/apps/2_b_installed.nixgenerated/modules/traveldroid/apps/emacs/emacs.nixgenerated/disabled/modules/traveldroid/apps/flameshot.nixgenerated/modules/traveldroid/apps/kdeconnect.nixgenerated/modules/traveldroid/apps/kitty.nixgenerated/modules/traveldroid/apps/starship.nixgenerated/modules/traveldroid/apps/thunar.nixgenerated/modules/traveldroid/apps/wofi.nixgenerated/modules/traveldroid/apps/zenbrowser.nixgenerated/modules/traveldroid/apps/zsh.nixgenerated/modules/traveldroid/desktop/fonts.nixgenerated/modules/traveldroid/desktop/gtk.nixgenerated/modules/traveldroid/desktop/hyprland.nixgenerated/modules/traveldroid/desktop/stylix.nixgenerated/modules/traveldroid/desktop/wallpaper.nixgenerated/modules/traveldroid/desktop/waybar.nixgenerated/modules/traveldroid/desktop/wayland.nixgenerated/modules/traveldroid/desktop/xdg.nixgenerated/modules/traveldroid/desktop/fonts.nixgenerated/modules/traveldroid/desktop/gtk.nixgenerated/modules/traveldroid/desktop/hyprland.nixgenerated/modules/traveldroid/desktop/stylix.nixgenerated/modules/traveldroid/desktop/wallpaper.nixgenerated/modules/traveldroid/desktop/waybar.nixgenerated/modules/traveldroid/desktop/wayland.nixgenerated/modules/traveldroid/desktop/xdg.nixgenerated/modules/traveldroid/system/audio.nixgenerated/modules/traveldroid/system/avahi.nixgenerated/modules/traveldroid/system/bluetooth.nixgenerated/modules/traveldroid/system/copy_scripts.nixgenerated/modules/traveldroid/system/dbus.nixgenerated/modules/traveldroid/system/firewall.nixgenerated/modules/traveldroid/system/hypridle.nixgenerated/modules/traveldroid/system/hyprlock.nixgenerated/modules/traveldroid/system/gnome-keyring.nixgenerated/modules/traveldroid/system/login-tuigreet.nixgenerated/modules/traveldroid/system/networking.nixgenerated/modules/traveldroid/system/nix.nixgenerated/modules/traveldroid/system/printing.nixgenerated/modules/traveldroid/system/quickshell.nixgenerated/modules/traveldroid/system/swaync.nixgenerated/modules/traveldroid/system/audio.nixgenerated/modules/traveldroid/system/avahi.nixgenerated/modules/traveldroid/system/bluetooth.nixgenerated/modules/traveldroid/system/copy_scripts.nixgenerated/modules/traveldroid/system/dbus.nixgenerated/modules/traveldroid/system/firewall.nixgenerated/modules/traveldroid/system/hypridle.nixgenerated/modules/traveldroid/system/hyprlock.nixgenerated/modules/traveldroid/system/gnome-keyring.nixgenerated/modules/traveldroid/system/login-tuigreet.nixgenerated/modules/traveldroid/system/networking.nixgenerated/modules/traveldroid/system/nix.nixgenerated/modules/traveldroid/system/printing.nixgenerated/modules/traveldroid/system/quickshell.nixgenerated/modules/traveldroid/system/swaync.nixgenerated/.config/emacs/early-init.elgenerated/.config/emacs/init.elgenerated/.config/hypr/animations.confgenerated/.config/hypr/behaviour.confgenerated/.config/hypr/bindings.confgenerated/.config/hypr/exec-once.confgenerated/.config/hypr/hypridle.confgenerated/.config/hypr/hyprlock.confgenerated/.config/hypr/hyprland.confgenerated/.config/hypr/layer-rules.confgenerated/.config/hypr/layout.confgenerated/.config/hypr/monitor-rules.confgenerated/.config/hypr/theming.confgenerated/.config/hypr/window-rules.confgenerated/.config/hypr/workspace-rules.confgenerated/.config/quickshell/media/shell.qmlgenerated/.config/quickshell/powermenu/shell.qmlgenerated/.config/quickshell/layoutswitcher/shell.qmlgenerated/.config/waybar/scripts/batterywarn.shgenerated/.config/waybar/scripts/media.shgenerated/.config/scripts/numlock-check.shgenerated/.config/scripts/power.shgenerated/.config/scripts/update.shgenerated/.config/scripts/wofi-launcher.shgenerated/.config/shared/colors.cssgenerated/.config/starship.tomlgenerated/.config/stylix/stylix.confgenerated/.config/stylix/palette.jsongenerated/.config/stylix/palette.htmlgenerated/.config/swaync/config.jsongenerated/.config/swaync/style.cssgenerated/.config/waybar/config.jsoncgenerated/.config/waybar/style-dark.cssgenerated/.config/waybar/scripts/bluetooth-status.shgenerated/.config/waybar/scripts/hypr-workspaces.shgenerated/.config/waybar/scripts/hypr-workspacesmenu.shgenerated/.config/waybar/scripts/kdeconnect-status.shgenerated/.config/waypaper/config.inigenerated/.config/waypaper/config.inigenerated/.config/wofi/configgenerated/.config/wofi/style.cssgenerated/.config/zed/settings.jsongenerated/.config/zsh/.zshrcgenerated/.config/emacs/early-init.elgenerated/.config/emacs/init.elgenerated/.config/hypr/animations.confgenerated/.config/hypr/behaviour.confgenerated/.config/hypr/bindings.confgenerated/.config/hypr/exec-once.confgenerated/.config/hypr/hypridle.confgenerated/.config/hypr/hyprlock.confgenerated/.config/hypr/hyprland.confgenerated/.config/hypr/layer-rules.confgenerated/.config/hypr/layout.confgenerated/.config/hypr/monitor-rules.confgenerated/.config/hypr/theming.confgenerated/.config/hypr/window-rules.confgenerated/.config/hypr/workspace-rules.confgenerated/.config/quickshell/media/shell.qmlgenerated/.config/quickshell/powermenu/shell.qmlgenerated/.config/quickshell/layoutswitcher/shell.qmlgenerated/.config/waybar/scripts/batterywarn.shgenerated/.config/waybar/scripts/media.shgenerated/.config/scripts/numlock-check.shgenerated/.config/scripts/power.shgenerated/.config/scripts/update.shgenerated/.config/wofi/scripts/wofi-launcher.shgenerated/.config/shared/colors.cssgenerated/.config/starship.tomlgenerated/.config/stylix/stylix.confgenerated/.config/stylix/palette.jsongenerated/.config/stylix/palette.htmlgenerated/.config/swaync/config.jsongenerated/.config/swaync/style.cssgenerated/.config/waybar/config.jsoncgenerated/.config/waybar/style-dark.cssgenerated/.config/waybar/scripts/bluetooth-status.shgenerated/.config/waybar/scripts/hypr-workspaces.shgenerated/.config/waybar/scripts/hypr-workspacesmenu.shgenerated/.config/waybar/scripts/kdeconnect-status.shgenerated/.config/waypaper/config.inigenerated/.config/waypaper/config.inigenerated/.config/wofi/configgenerated/.config/wofi/style.cssgenerated/.config/zed/settings.jsongenerated/.config/zsh/.zshrcIntroduction The Assets Folder @@ -354,25 +354,25 @@
Droidnix is a modular, declarative NixOS + Home Manager configuration system. with configurations managed via Emacs Org and Nix Flakes. The project is designed for reproducibility, maintainability, and cross-machine compatibility.
This project uses a modular NixOS configuration with Hyprland support, designed for literate programming and cross-device reusability. The Droidnix repository is organized into two main parts: @@ -385,9 +385,9 @@ The Droidnix repository is organized into two main parts:
The generated/ directory contains all generated configurations, divided into three main groups: system, hyprland, and mangowc.
./setup_droid.generated/ directory contains all generated configurations, div
The .assets/ folder contains all static files, such as configs, scripts, and themes. These files are not generated and can be edited directly.
generated/assets/2_b_installed.confgenerated/assets/2_b_installed.confThis is a list of additional apps to install
@@ -508,9 +508,9 @@ com.logseq.Logseqgenerated/assets/aliases.confgenerated/assets/aliases.confThis is a list of additional apps to install
@@ -552,9 +552,9 @@ keys=hyprctl binds This section contains the Org blocks for tangling Nix code into the generated folders.generated/flake.nixgenerated/flake.nixThe Nix flake definition for Droidnix.
@@ -643,9 +643,9 @@ The Nix flake definition for Droidnix.generated/modules/traveldroid/system/colors.nixgenerated/modules/traveldroid/system/colors.nixSetting the colors for Droidnix.
@@ -722,9 +722,9 @@ ingenerated/hosts/traveldroid/boot.nixgenerated/hosts/traveldroid/boot.nix# --- This file has been auto-generated. For permanent changes alter the appropriate block in the README.org. ---
{ config, pkgs, lib, flakeRoot, ... }:
@@ -793,9 +793,9 @@ in
generated/hosts/traveldroid/hardware-configuration.nixgenerated/hosts/traveldroid/hardware-configuration.nixgenerated/hosts/traveldroid/host.nixgenerated/hosts/traveldroid/host.nix{ lib, config, pkgs, flakeRoot, import-tree, home-manager, ... }:
@@ -915,13 +915,13 @@ in
generated/modules/traveldroid/apps/2_b_installed.nixgenerated/modules/traveldroid/apps/2_b_installed.nixThis installs a list of apps
@@ -1029,9 +1029,9 @@ in {generated/modules/traveldroid/apps/emacs/emacs.nixgenerated/modules/traveldroid/apps/emacs/emacs.nixThis installs emacs
@@ -1127,9 +1127,9 @@ ingenerated/disabled/modules/traveldroid/apps/flameshot.nixgenerated/disabled/modules/traveldroid/apps/flameshot.nixThis is top file of this level which contains just an import statement for all relevant files and/or the subfolder in this folder
@@ -1189,9 +1189,9 @@ ingenerated/modules/traveldroid/apps/kdeconnect.nixgenerated/modules/traveldroid/apps/kdeconnect.nixThis is top file of this level which contains just an import statement for all relevant files and/or the subfolder in this folder
@@ -1220,9 +1220,9 @@ ingenerated/modules/traveldroid/apps/kitty.nixgenerated/modules/traveldroid/apps/kitty.nixThis file sets up Kitty terminal
@@ -1274,9 +1274,9 @@ ingenerated/modules/traveldroid/apps/starship.nixgenerated/modules/traveldroid/apps/starship.nixThis file sets up starship prompt
@@ -1315,9 +1315,9 @@ ingenerated/modules/traveldroid/apps/thunar.nixgenerated/modules/traveldroid/apps/thunar.nixThis is top file of this level which contains just an import statement for all relevant files and/or the subfolder in this folder
@@ -1363,9 +1363,9 @@ ingenerated/modules/traveldroid/apps/wofi.nixgenerated/modules/traveldroid/apps/wofi.nixThis is the install for Wofi, the launcher
@@ -1374,22 +1374,23 @@ This is the install for Wofi, the launcher let username = config.defaultUser or "henrov"; - assetPath = "${flakeRoot}/generated/.config/wofi"; + sysName = "wofi"; + assetPath = "${flakeRoot}/generated/.config/${sysName}"; in { environment.systemPackages = [ pkgs.wofi ]; home-manager.users = { ${username} = { - home.file = { - ".config/wofi/config" = { - text = builtins.readFile "${assetPath}/config"; - force = true; - }; - ".config/wofi/style.css" = { - text = builtins.replaceStrings ["PLACEHOLDER_USERNAME"] [username] (builtins.readFile "${assetPath}/style.css"); - force = true; - }; + home.activation.MakeWofiMutable = { + after = [ "writeBoundary" ]; + before = []; + data = '' + rm -f $HOME/.config/${sysName}/* + cp ${assetPath}/* $HOME/.config/${sysName}/ + chmod u+w $HOME/.config/${sysName}/* + find $HOME/.config/${sysName}/ -name "*.sh" -exec chmod +x {} \; + ''; }; }; }; @@ -1398,9 +1399,9 @@ ingenerated/modules/traveldroid/apps/zenbrowser.nixgenerated/modules/traveldroid/apps/zenbrowser.nixThis installs zen browser
@@ -1420,9 +1421,9 @@ ingenerated/modules/traveldroid/apps/zsh.nixgenerated/modules/traveldroid/apps/zsh.nixThis sets up the zsh in the terminal
@@ -1536,13 +1537,13 @@ ingenerated/modules/traveldroid/desktop/fonts.nixgenerated/modules/traveldroid/desktop/fonts.nixThis file installs and configures fonts
@@ -1560,9 +1561,9 @@ This file installs and configures fontsgenerated/modules/traveldroid/desktop/gtk.nixgenerated/modules/traveldroid/desktop/gtk.nixSetting up GTK
@@ -1588,9 +1589,9 @@ ingenerated/modules/traveldroid/desktop/hyprland.nixgenerated/modules/traveldroid/desktop/hyprland.nixSetting up Hyprland
@@ -1598,7 +1599,8 @@ Setting up Hyprland{ lib, config, pkgs, flakeRoot, home-manager, inputs, ... }:
let
username = config.defaultUser or "henrov";
- assetPath = "${flakeRoot}/generated/.config/hypr";
+ sysName = "hypr";
+ assetPath = "${flakeRoot}/generated/.config/${sysName}";
hyprlandPkg =
pkgs.hyprland or
pkgs.hyprland-git or
@@ -1620,9 +1622,10 @@ in
after = [ "writeBoundary" ];
before = [];
data = ''
- rm -f $HOME/.config/hypr/*
- cp ${assetPath}/* $HOME/.config/hypr/
- chmod u+w $HOME/.config/hypr/*
+ rm -f $HOME/.config/${sysName}/*
+ cp ${assetPath}/* $HOME/.config/${sysName}/
+ chmod u+w $HOME/.config/${sysName}/*
+ find $HOME/.config/${sysName}/ -name "*.sh" -exec chmod +x {} \;
'';
};
};
@@ -1632,9 +1635,9 @@ in
generated/modules/traveldroid/desktop/stylix.nixgenerated/modules/traveldroid/desktop/stylix.nix{ lib, config, pkgs, flakeRoot, stylix, ... }:
@@ -1721,9 +1724,9 @@ in
generated/modules/traveldroid/desktop/wallpaper.nixgenerated/modules/traveldroid/desktop/wallpaper.nixSetting up wallpaper engine + wallpaper gui
@@ -1822,9 +1825,9 @@ ingenerated/modules/traveldroid/desktop/waybar.nixgenerated/modules/traveldroid/desktop/waybar.nixThis file installs and configures waybar
@@ -1832,7 +1835,8 @@ This file installs and configures waybar{ lib, config, pkgs, flakeRoot, ... }:
let
username = config.defaultUser or "henrov";
- waybarPath = "${flakeRoot}/generated/.config/waybar";
+ sysName = "waybar";
+ assetPath = "${flakeRoot}/generated/.config/${sysName}";
in
{
environment.systemPackages = [ pkgs.waybar ];
@@ -1842,9 +1846,10 @@ in
after = [ "writeBoundary" ];
before = [];
data = ''
- rm -f $HOME/.config/waybar/*
- cp ${waybarPath}/* $HOME/.config/waybar/
- chmod u+w $HOME/.config/waybar/*
+ rm -f $HOME/.config/${sysName}/*
+ cp ${assetPath}/* $HOME/.config/${sysName}/
+ chmod u+w $HOME/.config/${sysName}/*
+ find $HOME/.config/${sysName}/ -name "*.sh" -exec chmod +x {} \;
'';
};
};
@@ -1867,9 +1872,9 @@ in
generated/modules/traveldroid/desktop/wayland.nixgenerated/modules/traveldroid/desktop/wayland.nix{ lib, config, pkgs, ... }:
@@ -1899,9 +1904,9 @@ in
generated/modules/traveldroid/desktop/xdg.nixgenerated/modules/traveldroid/desktop/xdg.nixThis sets the XDG implementation
@@ -1972,13 +1977,13 @@ ingenerated/modules/traveldroid/system/audio.nixgenerated/modules/traveldroid/system/audio.nix{ lib, config, pkgs, ... }:
@@ -1997,9 +2002,9 @@ in
generated/modules/traveldroid/system/avahi.nixgenerated/modules/traveldroid/system/avahi.nixAvahi helps discovering services
@@ -2019,9 +2024,9 @@ Avahi helps discovering servicesgenerated/modules/traveldroid/system/bluetooth.nixgenerated/modules/traveldroid/system/bluetooth.nixInstalling Bluetooth services and supporting aps
@@ -2048,9 +2053,9 @@ ingenerated/modules/traveldroid/system/copy_scripts.nixgenerated/modules/traveldroid/system/copy_scripts.nixThis copies any scripts from generated.config/scripts to ~/.config/scripts and makes any .sh files executable.
@@ -2091,9 +2096,9 @@ ingenerated/modules/traveldroid/system/dbus.nixgenerated/modules/traveldroid/system/dbus.nixThis sets the dbus implementation
@@ -2120,9 +2125,9 @@ This sets the dbus implementationgenerated/modules/traveldroid/system/firewall.nixgenerated/modules/traveldroid/system/firewall.nixThis sets the firewall.
@@ -2203,9 +2208,9 @@ This sets the firewall.generated/modules/traveldroid/system/hypridle.nixgenerated/modules/traveldroid/system/hypridle.nixThis installs hypridle
@@ -2261,9 +2266,9 @@ ingenerated/modules/traveldroid/system/hyprlock.nixgenerated/modules/traveldroid/system/hyprlock.nixThis installs hyprlock
@@ -2320,9 +2325,9 @@ ingenerated/modules/traveldroid/system/gnome-keyring.nixgenerated/modules/traveldroid/system/gnome-keyring.nixThis sets the dbus implementation
@@ -2370,9 +2375,9 @@ This sets the dbus implementationgenerated/modules/traveldroid/system/login-tuigreet.nixgenerated/modules/traveldroid/system/login-tuigreet.nixThis sets up tuigreeter which is not fancy but imho fits the aesthetic I am aiming for
@@ -2419,9 +2424,9 @@ ingenerated/modules/traveldroid/system/networking.nixgenerated/modules/traveldroid/system/networking.nixThis sets the networking.
@@ -2470,9 +2475,9 @@ This sets the networking.generated/modules/traveldroid/system/nix.nixgenerated/modules/traveldroid/system/nix.nix{ lib, config, ... }:
{
@@ -2495,9 +2500,9 @@ This sets the networking.
generated/modules/traveldroid/system/printing.nixgenerated/modules/traveldroid/system/printing.nixThis sets the dbus implementation
@@ -2521,9 +2526,9 @@ This sets the dbus implementationgenerated/modules/traveldroid/system/quickshell.nixgenerated/modules/traveldroid/system/quickshell.nixThis sets the dbus implementation
@@ -2575,9 +2580,9 @@ ingenerated/modules/traveldroid/system/swaync.nixgenerated/modules/traveldroid/system/swaync.nixThis sets the dbus implementation
@@ -2626,13 +2631,13 @@ ingenerated/users/generated/users/This is the default user, just search and replace henrov another name if you want to change
@@ -2694,9 +2699,9 @@ ingenerated/.config/emacs/early-init.elgenerated/.config/emacs/early-init.elThis contaions emacs
@@ -2797,9 +2802,9 @@ package-archive-priorities '(("gnu" . 99)generated/.config/emacs/init.elgenerated/.config/emacs/init.elThis contaions emacs
@@ -3209,9 +3214,9 @@ the top of the file."generated/.config/hypr/animations.confgenerated/.config/hypr/animations.confThese are config files for .config/hypr
@@ -3230,9 +3235,9 @@ These are config files for .config/hyprgenerated/.config/hypr/behaviour.confgenerated/.config/hypr/behaviour.confThese are config files for .config/hypr
@@ -3254,9 +3259,9 @@ input {generated/.config/hypr/bindings.confgenerated/.config/hypr/bindings.confThese are config files for .config/hypr
@@ -3265,8 +3270,8 @@ These are config files for .config/hypr # launcher / kill / reload -bind = $mainMod, Space, exec, ~/.config/scripts/wofi-launcher.sh -bind = ALT, Space, exec, ~/.config/scripts/wofi-launcher.sh +bind = $mainMod, Space, exec, ~/.config/wofi/scripts/wofi-launcher.sh +bind = ALT, Space, exec, ~/.config/wofi/scripts/wofi-launcher.sh bind = $mainMod, Q, killactive, bind = $mainMod SHIFT, Q, exit, bind = $mainMod SHIFT, R, exec, hyprctl reload @@ -3432,9 +3437,9 @@ bind = $mainMod, U, exec, kitty -e bash -lc "$HOME/.config/scripts/update.sh"generated/.config/hypr/exec-once.confgenerated/.config/hypr/exec-once.confThese are config files for .config/hypr
@@ -3455,9 +3460,9 @@ exec-once = waybargenerated/.config/hypr/hypridle.confgenerated/.config/hypr/hypridle.confThese are config files for .config/hypr
@@ -3488,9 +3493,9 @@ listener {generated/.config/hypr/hyprlock.confgenerated/.config/hypr/hyprlock.confThese are config files for .config/hypr
@@ -3520,9 +3525,9 @@ input-field {generated/.config/hypr/hyprland.confgenerated/.config/hypr/hyprland.confThese are config files for .config/hypr
@@ -3541,9 +3546,9 @@ source = ./workspace-rules.confgenerated/.config/hypr/layer-rules.confgenerated/.config/hypr/layer-rules.confThese are config files for .config/hypr
@@ -3556,9 +3561,9 @@ layerrule = xray 1, match:namespace swaync-control-centergenerated/.config/hypr/layout.confgenerated/.config/hypr/layout.confThese settings control Hyprland config
@@ -3573,9 +3578,9 @@ scrolling {generated/.config/hypr/monitor-rules.confgenerated/.config/hypr/monitor-rules.confThese are config files for .config/hypr
@@ -3586,9 +3591,9 @@ monitor = eDP-1, preferred, auto-left, 1.5generated/.config/hypr/theming.confgenerated/.config/hypr/theming.confThese are config files for .config/hypr
@@ -3654,9 +3659,9 @@ misc {generated/.config/hypr/window-rules.confgenerated/.config/hypr/window-rules.confThese are config files for .config/hypr
@@ -3739,9 +3744,9 @@ windowrule {generated/.config/hypr/workspace-rules.confgenerated/.config/hypr/workspace-rules.confThese setttings configure rules for workspaces
@@ -3756,9 +3761,9 @@ workspace = 6, monitor:DP-1 #, layout:dwindlegenerated/.config/quickshell/media/shell.qmlgenerated/.config/quickshell/media/shell.qmloffers a adio widget
@@ -4152,9 +4157,9 @@ ShellRoot {generated/.config/quickshell/powermenu/shell.qmlgenerated/.config/quickshell/powermenu/shell.qmlProvides a powermenu
@@ -4302,9 +4307,9 @@ ShellRoot {generated/.config/quickshell/layoutswitcher/shell.qmlgenerated/.config/quickshell/layoutswitcher/shell.qmlProvides a layout menu
@@ -4451,9 +4456,9 @@ ShellRoot {generated/.config/waybar/scripts/batterywarn.shgenerated/.config/waybar/scripts/batterywarn.shProviding an media
@@ -4470,9 +4475,9 @@ figenerated/.config/waybar/scripts/media.shgenerated/.config/waybar/scripts/media.shProviding an media
@@ -4571,9 +4576,9 @@ jq -c -n \generated/.config/scripts/numlock-check.shgenerated/.config/scripts/numlock-check.shCount keyboards and enable numlock if more then 1, else disable
@@ -4595,9 +4600,9 @@ figenerated/.config/scripts/power.shgenerated/.config/scripts/power.shEnables a terminal power menu
@@ -4652,9 +4657,9 @@ maingenerated/.config/scripts/update.shgenerated/.config/scripts/update.shA file containing color variables
@@ -4679,9 +4684,9 @@ flatpak update -ygenerated/.config/scripts/wofi-launcher.shgenerated/.config/wofi/scripts/wofi-launcher.shProviding an media
@@ -4696,9 +4701,9 @@ Providing an mediagenerated/.config/shared/colors.cssgenerated/.config/shared/colors.cssA file containing color variables
@@ -4739,9 +4744,9 @@ A file containing color variablesgenerated/.config/starship.tomlgenerated/.config/starship.tomlThese are config files for Starship
@@ -5029,9 +5034,9 @@ crust = "#181926"generated/.config/stylix/stylix.confgenerated/.config/stylix/stylix.confThese are config files for .config/stylix
@@ -5068,9 +5073,9 @@ icons = {generated/.config/stylix/palette.jsongenerated/.config/stylix/palette.jsonThese are config files for .config/stylix
@@ -5100,9 +5105,9 @@ These are config files for .config/stylixgenerated/.config/stylix/palette.htmlgenerated/.config/stylix/palette.htmlThese are config files for .config/stylix
@@ -5179,9 +5184,9 @@ These are config files for .config/stylixgenerated/.config/swaync/config.jsongenerated/.config/swaync/config.jsonThese are config files for waybar
@@ -5242,9 +5247,9 @@ These are config files for waybargenerated/.config/swaync/style.cssgenerated/.config/swaync/style.cssThese are config files for waybar
@@ -5437,9 +5442,9 @@ These are config files for waybargenerated/.config/waybar/config.jsoncgenerated/.config/waybar/config.jsoncThese are config files for waybar
@@ -5776,9 +5781,9 @@ These are config files for waybargenerated/.config/waybar/style-dark.cssgenerated/.config/waybar/style-dark.cssThis file contains all css for waybar
@@ -6038,9 +6043,9 @@ label#custom-windows:not(.active) {generated/.config/waybar/scripts/bluetooth-status.shgenerated/.config/waybar/scripts/bluetooth-status.shThese are config files for waybar
@@ -6065,9 +6070,9 @@ printf '{"text": "%s", "tooltip": "%s"}\n' "$icon" "$tooltip"generated/.config/waybar/scripts/hypr-workspaces.shgenerated/.config/waybar/scripts/hypr-workspaces.shThese are config files for waybar
@@ -6109,9 +6114,9 @@ jq -c -n \generated/.config/waybar/scripts/hypr-workspacesmenu.shgenerated/.config/waybar/scripts/hypr-workspacesmenu.shThese are config files for waybar
@@ -6133,9 +6138,9 @@ hyprctl dispatch focuswindow address:"$addr"generated/.config/waybar/scripts/kdeconnect-status.shgenerated/.config/waybar/scripts/kdeconnect-status.shThese are config files for waybar
@@ -6159,9 +6164,9 @@ figenerated/.config/waypaper/config.inigenerated/.config/waypaper/config.iniThese are config files for waypaper
@@ -6198,9 +6203,9 @@ keybindings = ~/.config/waypaper/keybindings.inigenerated/.config/waypaper/config.inigenerated/.config/waypaper/config.iniThese are config files for .config/waypaper
@@ -6236,9 +6241,9 @@ keybindings = ~/.config/waypaper/keybindings.inigenerated/.config/wofi/configgenerated/.config/wofi/configThese are config files for .config/wofi
@@ -6265,9 +6270,9 @@ prompt = > ...generated/.config/wofi/style.cssgenerated/.config/wofi/style.cssThis is the default layout for wofi
@@ -6363,9 +6368,9 @@ This is the default layout for wofigenerated/.config/zed/settings.jsongenerated/.config/zed/settings.jsonThese are config files for Zed editor
@@ -6401,9 +6406,9 @@ These are config files for Zed editorgenerated/.config/zsh/.zshrcgenerated/.config/zsh/.zshrcThis sets up the zsh in the terminal
@@ -6440,7 +6445,7 @@ cd() {Each color should be used as described in this table.
+See the Stylix documentation for how to apply these colors on NixOS.
+ + diff --git a/Droidnix/generated/.config/stylix/palette.json b/Droidnix/generated/.config/stylix/palette.json new file mode 100644 index 000000000..5e7417b72 --- /dev/null +++ b/Droidnix/generated/.config/stylix/palette.json @@ -0,0 +1,21 @@ +{ + "base00": "1e1e2e", + "base01": "181825", + "base02": "313244", + "base03": "45475a", + "base04": "585b70", + "base05": "cdd6f4", + "base06": "f5e0dc", + "base07": "b4befe", + "base08": "f38ba8", + "base09": "fab387", + "base0A": "f9e2af", + "base0B": "a6e3a1", + "base0C": "94e2d5", + "base0D": "89b4fa", + "base0E": "cba6f7", + "base0F": "f2cdcd", + "author": "https://github.com/catppuccin/catppuccin", + "scheme": "Catppuccin Mocha", + "slug": "catppuccin-mocha" +} diff --git a/Droidnix/generated/.config/stylix/stylix.conf b/Droidnix/generated/.config/stylix/stylix.conf new file mode 100644 index 000000000..2d0605ca4 --- /dev/null +++ b/Droidnix/generated/.config/stylix/stylix.conf @@ -0,0 +1,29 @@ +# --- This file has been auto-generated. For permanent changes alter the appropriate block in the README.org. --- +enable = true; +base16Scheme = ../../../assets/system/theming/stylix/catppuccin-mocha.yaml; +image = ../../../assets/hyprland/wallpaperstuff/pictures/wall1.jpg; +polarity = "dark"; + +cursor = { + package = "phinger-cursors"; # symbolic reference + name = "phinger-cursors-light"; + size = 24; +}; + +fonts = { + monospace = { + package = "nerd-fonts-fira-code"; + name = "Fira Code Nerd Font"; + }; + sansSerif = { + package = "lato"; + name = "Lato"; + }; +}; + +icons = { + enable = true; + package = "papirus-icon-theme"; + dark = "Papirus-Dark"; + light = "Papirus-Light"; +}; diff --git a/Droidnix/generated/.config/swaync/config.json b/Droidnix/generated/.config/swaync/config.json new file mode 100644 index 000000000..3d7806982 --- /dev/null +++ b/Droidnix/generated/.config/swaync/config.json @@ -0,0 +1,52 @@ +{ + "positionX": "right", + "positionY": "top", + "layer": "overlay", + "control-center-layer": "top", + "layer-shell": true, + "cssPriority": "application", + "control-center-margin-top": 8, + "control-center-margin-bottom": 8, + "control-center-margin-right": 8, + "control-center-margin-left": 0, + "notification-2fa-action": true, + "notification-inline-replies": false, + "notification-icon-size": 48, + "notification-body-image-height": 100, + "notification-body-image-width": 200, + "timeout": 10, + "timeout-low": 5, + "timeout-critical": 0, + "fit-to-screen": true, + "control-center-height": -1, + "control-center-width": 300, + "notification-window-width": 400, + "keyboard-shortcuts": true, + "image-visibility": "when-available", + "transition-time": 200, + "hide-on-clear": false, + "hide-on-action": true, + "script-fail-notify": true, + "widgets": [ + "inhibitors", + "title", + "dnd", + "notifications" + ], + "widget-config": { + "inhibitors": { + "text": "Inhibitors", + "button-text": "Clear All", + "clear-all-button": true + }, + "title": { + "text": "Notifications", + "clear-all-button": true, + "button-text": "Clear All" + }, + "dnd": { + "text": "Do Not Disturb" + }, + "notifications": {} + } +} diff --git a/Droidnix/generated/.config/swaync/style.css b/Droidnix/generated/.config/swaync/style.css new file mode 100644 index 000000000..ee34f9d09 --- /dev/null +++ b/Droidnix/generated/.config/swaync/style.css @@ -0,0 +1,184 @@ +/* --- This file has been auto-generated. For permanent changes alter the appropriate block in the README.org. --- */ +@import url("/home/henrov/.config/shared/colors.css"); + + * { + all: unset; + font-size: 13px; + font-family: sans-serif; + transition: 200ms; +} + +/* ── Notification rows ─────────────────────────────────────────────────── */ + +.notification-row { + outline: none; + margin: 4px 0; +} + +.notification-row:focus, +.notification-row:hover { + opacity: 0.85; +} + +/* ── Individual notification ───────────────────────────────────────────── */ + +.notification { + border-radius: 12px; + padding: 8px; + margin: 4px 8px; + color: @text; + box-shadow: 0 2px 8px rgba(0, 0, 0, 0.4); + + /* gradient border */ + border: 2px solid transparent; + background-image: + linear-gradient(@base-alpha, @base-alpha), + linear-gradient(45deg, @blue, @green); + background-clip: padding-box, border-box; + background-origin: padding-box, border-box; +} + +.notification-content { + padding: 4px; +} + +.notification-default-action { + border-radius: 12px; +} + +.notification-default-action:hover { + background: alpha(@blue, 0.1); +} + +/* ── Text elements ─────────────────────────────────────────────────────── */ + +.summary { + font-size: 13px; + font-weight: bold; + color: @text; +} + +.time { + font-size: 11px; + color: @overlay0; +} + +.body { + font-size: 12px; + color: @subtext1; +} + +/* ── Control center ────────────────────────────────────────────────────── */ + +.control-center { + min-height: unset; + border-radius: 30px; + padding: 8px; + margin: 8px; + color: @text; + box-shadow: 0 4px 24px rgba(0, 0, 0, 0.5); + border: 2px solid transparent; + background-image: + linear-gradient(@base-alpha, @base-alpha), + linear-gradient(45deg, @blue, @green); + background-clip: padding-box, border-box; + background-origin: padding-box, border-box; +} + +.control-center-list { + background: transparent; + min-height: unset; +} + +.control-center-list-placeholder { + opacity: 0.4; + font-size: 14px; +} + +/* ── Misc windows ──────────────────────────────────────────────────────── */ + +.floating-notifications { + background: transparent; +} + +.blank-window { + background: transparent; +} + +/* ── Widget: title ─────────────────────────────────────────────────────── */ + +.widget-title { + font-size: 14px; + font-weight: bold; + color: @blue; + padding: 8px 4px 4px 4px; +} + +.widget-title > button { + font-size: 12px; + color: @overlay0; + background: alpha(@blue, 0.1); + border-radius: 8px; + padding: 2px 8px; +} + +.widget-title > button:hover { + background: alpha(@blue, 0.2); + color: @text; +} + +/* ── Widget: Do Not Disturb ────────────────────────────────────────────── */ + +.widget-dnd { + padding: 4px; +} + +.widget-dnd > switch { + border-radius: 20px; + background: alpha(@surface1, 0.3); + + /* gradient border */ + border: 1px solid transparent; + background-image: + linear-gradient(alpha(@surface1, 0.3), alpha(@surface1, 0.3)), + linear-gradient(45deg, @blue, @green); + background-clip: padding-box, border-box; + background-origin: padding-box, border-box; +} + +.widget-dnd > switch:checked { + background-image: + linear-gradient(alpha(@blue, 0.5), alpha(@blue, 0.5)), + linear-gradient(45deg, @blue, @green); + background-clip: padding-box, border-box; + background-origin: padding-box, border-box; +} + +.widget-dnd > switch slider { + border-radius: 20px; + background: @text; + min-width: 20px; + min-height: 20px; +} + +/* ── Widget: inhibitors ────────────────────────────────────────────────── */ + +.widget-inhibitors { + padding: 4px; + color: @red; + font-size: 12px; +} + +/* ── Close button ──────────────────────────────────────────────────────── */ + +.close-button { + background: alpha(@red, 0.15); + border-radius: 6px; + color: @red; + padding: 2px 6px; + font-size: 11px; +} + +.close-button:hover { + background: alpha(@red, 0.3); +} diff --git a/Droidnix/generated/.config/waybar/config.jsonc b/Droidnix/generated/.config/waybar/config.jsonc new file mode 100644 index 000000000..5e9108cb9 --- /dev/null +++ b/Droidnix/generated/.config/waybar/config.jsonc @@ -0,0 +1,327 @@ +{ + "layer": "top", + "position": "top", + "autohide": true, + "autohide-blocked": false, + "exclusive": true, + "passthrough": false, + "gtk-layer-shell": true, + + + /*******************************************************************/ + "modules-left": [ + "group/hardware" + ], + + "modules-center": [ + "group/workspaces" + ,"group/sporadic" + + ], + + "modules-right": [ + "group/audio" + ,"group/tray" + ,"group/datestuff" + ,"group/system" + ,"group/notifications" + ], + + /*******************************************************************/ + "group/workspaces": { + "orientation": "horizontal", + "modules": [ + "hyprland/workspaces", + "custom/windows" + ] + }, + +/*******************************************************************/ + "group/hardware": { + "orientation": "horizontal", + "drawer": { + "transition-duration": 500, + "transition-left-to-right": true + }, + "modules": [ + "custom/hardware-anchor", + "battery", + "cpu", + "memory", + "temperature" + ] + }, + + "custom/hardware-anchor": { + + "format": " ", + "tooltip": false + }, + + /*******************************************************************/ + "group/tray": { + "orientation": "horizontal", + "drawer": { + "transition-duration": 500, + "transition-left-to-right": true + }, + "modules": [ + "custom/tray-anchor" + ,"tray" + ] + }, + + "custom/tray-anchor": { + + "format": " ", + "tooltip": false + }, + + /*******************************************************************/ + "group/system": { + "orientation": "horizontal", + "drawer": { + "transition-duration": 500, + "transition-left-to-right": true + }, + "modules": [ + "custom/system-anchor" + ,"custom/power" + ,"idle_inhibitor" + ] + }, + + "custom/system-anchor": { + + "format": "", + "tooltip": false + }, + + +/*************************/ + + "group/connections": { + "orientation": "horizontal", + "drawer": { + "transition-duration": 500, + "transition-left-to-right": true + }, + "modules": [ + "custom/connections-anchor" + ,"custom/bluetooth" + ,"network" + ] + }, + + "custom/connections-anchor": { + + "format": " ", + "tooltip": false + }, + + /*************************/ + + "group/audio": { + "orientation": "horizontal", + "modules": [ + /* "custom/media", */ + "pulseaudio" + ,"pulseaudio/slider" + ] + }, + + /*************************/ + + "group/sporadic": { + "orientation": "horizontal", + "modules": [ + "custom/media" + ,"custom/batterywarn" + /* ,"custom/kdeconnect" */ + ] + }, + +/*************************/ + + "group/datestuff": { + "orientation": "horizontal", + "modules": [ + "clock" + ] + }, + + /*************************/ + + "group/notifications": { + "orientation": "horizontal", + "modules": [ + "custom/notifications" + ] + }, + +/*******************************************************************/ + +"hyprland/workspaces": { + "align": 1, + "format": "{name}", + "interval": 2, +}, + +"custom/windows": { + "align": 0, + "format": "{text}", + "exec": "~/.config/waybar/scripts/hypr-workspaces.sh", + "interval": 2, + "return-type": "json", + "on-click": "~/.config/waybar/scripts/hypr-workspacesmenu.sh", + "tooltip": true +}, + +"custom/media": { + "exec": "~/.config/waybar/scripts/media.sh", + "interval": 1, + "return-type": "json", + "format": "{}", + "on-click": "qs -c media", + "max-length": 20, + "scroll-step": 1, + "tooltip": true +}, + + "custom/bluetooth": { + "exec": "~/.config/waybar/scripts/bluetooth-status.sh", + "interval": 5, + "return-type": "json", + "on-click": "blueman-manager", + "format": "{}" + }, + + "custom/batterywarn": { + "exec": "~/.config/waybar/scripts/batterywarn.sh", + "interval": 60, + "format": "{}" + }, + + "custom/kdeconnect": { + "format": "{name} {battery}% ", + "interval": 10, + "exec": "~/.config/waybar/scripts/kdeconnect-status.sh", + "tooltip": true + }, + + "custom/notifications": { + "tooltip": false, + "return-type": "json", + "exec-if": "which swaync-client", + "exec": "swaync-client -swb", + "format": "{icon}", + "format-icons": { + "notification": "", + "none": "", + "dnd-notification": "", + "dnd-none": "", + }, + "on-click": "swaync-client -t", + "on-click-right": "swaync-client -d", + "on-click-middle": "swaync-client -dn", + }, + + "custom/power": { + "format": "", + "on-click": "qs -c powermenu", + "tooltip-format": "Power Menu" + }, + + "pulseaudio": { + "format": "{volume}% {icon}", + "format-bluetooth": "{volume}% {icon}", + "format-muted": "", + "format-icons": { + "headphones": "", + "headset": "", + "phone": "", + "portable": "", + "default": ["", ""] + }, + "on-click": "pavucontrol" + }, + + "pulseaudio/slider": { + "min": 0, + "max": 100, + "orientation": "horizontal" + }, + + "idle_inhibitor": { + "tooltip": true, + "format": "{icon}", + "format-icons": { + "activated": " ", + "deactivated": " " + }, + "tooltip-format-activated": "Staying awake", + "tooltip-format-deactivated": "Might sleep...." + }, + + "network": { + "format-wifi": " ({bandwidthDownBits})", + "format-ethernet": " ({bandwidthDownBits})", + "format-disconnected": "Disconnected ⚠", + "tooltip-format-wifi": "{essid} ({signalStrength}%)", + "tooltip-format-ethernet": "{ifname}: {ipaddr}/{cidr}", + "on-click": "networkmanager_dmenu --dmenu --style ~/.config/wofi/style.css --allow-images=false", + "on-click-right": "nm-connection-editor" + }, + + "cpu": { + "format": "{usage}% ", + "tooltip": false + }, + + "memory": { + "format": "{percentage}% " + }, + + "temperature": { + "format": "{temperatureC}°C ", + "tooltip": false + }, + + "tray": { + "spacing": 10, + "icon-size": 13 + }, + + "clock": { + "format": "{:%H:%M}", + "tooltip-format": "{calendar}", + "calendar": { + "mode" : "year", + "mode-mon-col" : 3, + "weeks-pos" : "left", + "on-scroll" : 1, + "on-click-right": "mode", + "format": { + "months": "{}", + "days": "{}", + "weeks": "W{}", + "weekdays": "{}", + "today": "{}" + } + }, + "on-click": "flatpak run eu.betterbird.Betterbird -calendar" + }, + + "battery": { + "bat": "BAT0", + "states": { + "good": 95, + "warning": 30, + "critical": 15 + }, + "format": "{capacity}% {icon}", + "format-charging": "{capacity}% ", + "format-plugged": "{capacity}% ", + "format-icons": ["", "", "", "", " "] + } +} diff --git a/Droidnix/generated/.config/waybar/scripts/batterywarn.sh b/Droidnix/generated/.config/waybar/scripts/batterywarn.sh new file mode 100755 index 000000000..54d212ed2 --- /dev/null +++ b/Droidnix/generated/.config/waybar/scripts/batterywarn.sh @@ -0,0 +1,10 @@ +#!/usr/bin/env bash +# --- This file has been auto-generated. For permanent changes alter the appropriate block in the README.org. --- +capacity=$(cat /sys/class/power_supply/BAT*/capacity) +status=$(cat /sys/class/power_supply/BAT*/status) + +if [ "$status" != "Charging" ] && [ "$capacity" -lt 15 ]; then + echo " $capacity%" +else + echo "" +fi diff --git a/Droidnix/generated/.config/waybar/scripts/bluetooth-status.sh b/Droidnix/generated/.config/waybar/scripts/bluetooth-status.sh new file mode 100755 index 000000000..22d0278f9 --- /dev/null +++ b/Droidnix/generated/.config/waybar/scripts/bluetooth-status.sh @@ -0,0 +1,18 @@ +#!/usr/bin/env bash +# --- This file has been auto-generated. For permanent changes alter the appropriate block in the README.org. --- +bt_connected="" +while read -r _ mac name_rest; do + if [ "$(bluetoothctl info "$mac" | awk '/Connected:/ {print $2}')" = "yes" ]; then + bt_connected+="$name_rest\n" + fi +done < <(bluetoothctl devices) +# icon +if [ -n "$bt_connected" ]; then + icon="" + tooltip=$(printf "%b" "$bt_connected") +else + icon="" + tooltip="No devices connected" +fi +# ALWAYS produce valid JSON +printf '{"text": "%s", "tooltip": "%s"}\n' "$icon" "$tooltip" diff --git a/Droidnix/generated/.config/waybar/scripts/hypr-workspaces.sh b/Droidnix/generated/.config/waybar/scripts/hypr-workspaces.sh new file mode 100755 index 000000000..1436c5e42 --- /dev/null +++ b/Droidnix/generated/.config/waybar/scripts/hypr-workspaces.sh @@ -0,0 +1,35 @@ +#!/usr/bin/env bash +# --- This file has been auto-generated. For permanent changes alter the appropriate block in the README.org. --- +# Get focused monitor name +focused_monitor=$(hyprctl monitors -j | jq -r '.[] | select(.focused==true) | .name') +monitor="${WAYBAR_OUTPUT_NAME:-$focused_monitor}" + +# Hide if not focused monitor +if [ "$monitor" != "$focused_monitor" ]; then + jq -c -n '{text:"", class:"hidden"}' + exit 0 +fi + +# Get active workspace on this monitor +active_ws=$(hyprctl monitors -j | jq -r \ + ".[] | select(.name==\"$monitor\") | .activeWorkspace.id") + +# Get clients +clients=$(hyprctl clients -j | jq -r \ + ".[] | select(.workspace.id==$active_ws) | \"\(.title)\"") + +count=$(echo "$clients" | grep -c '\S') + +# Hide if 0 or 1 clients — no point showing window switcher +if [ "$count" -le 1 ]; then + jq -c -n '{text:"", class:"hidden"}' + exit 0 +fi + +tooltip=$(echo "$clients" | sed 's/^/• /' | paste -sd '\n' -) + +jq -c -n \ + --arg text "$count" \ + --arg tooltip "$tooltip" \ + --arg class "active" \ + '{text:$text, tooltip:$tooltip, class:$class}' diff --git a/Droidnix/generated/.config/waybar/scripts/hypr-workspacesmenu.sh b/Droidnix/generated/.config/waybar/scripts/hypr-workspacesmenu.sh new file mode 100755 index 000000000..d18c6042a --- /dev/null +++ b/Droidnix/generated/.config/waybar/scripts/hypr-workspacesmenu.sh @@ -0,0 +1,15 @@ +#!/usr/bin/env bash +# --- This file has been auto-generated. For permanent changes alter the appropriate block in the README.org. --- +active_ws=$(hyprctl activeworkspace -j | jq -r '.id') +clients=$(hyprctl clients -j | jq -r \ + ".[] | select(.workspace.id==$active_ws) | \"\(.address)|\(.title)\"") + +choice=$(echo "$clients" | cut -d'|' -f2 \ + | wofi --dmenu \ + --style ~/.config/wofi/style.css \ + --allow-images=false \ + --prompt "Active windows ...") + +[ -z "$choice" ] && exit 0 +addr=$(echo "$clients" | grep "|$choice" | head -n1 | cut -d'|' -f1) +hyprctl dispatch focuswindow address:"$addr" diff --git a/Droidnix/generated/.config/waybar/scripts/kdeconnect-status.sh b/Droidnix/generated/.config/waybar/scripts/kdeconnect-status.sh new file mode 100755 index 000000000..0d73f455d --- /dev/null +++ b/Droidnix/generated/.config/waybar/scripts/kdeconnect-status.sh @@ -0,0 +1,17 @@ +#!/usr/bin/env bash +# --- This file has been auto-generated. For permanent changes alter the appropriate block in the README.org. --- +DEVICE=$(kdeconnect-cli --list-devices | grep -oP '(?<=\().*?(?=\))' | head -n 1) + +if [ -z "$DEVICE" ]; then + echo "No phone" + exit 0 +fi + +NAME=$(kdeconnect-cli -d "$DEVICE" --name 2>/dev/null) +BATTERY=$(kdeconnect-cli -d "$DEVICE" --battery 2>/dev/null | grep -o '[0-9]\+' | head -n 1) + +if [ -z "$BATTERY" ]; then + echo "$NAME" +else + echo "$NAME $BATTERY%" +fi diff --git a/Droidnix/generated/.config/waybar/scripts/media.sh b/Droidnix/generated/.config/waybar/scripts/media.sh new file mode 100755 index 000000000..f186cb582 --- /dev/null +++ b/Droidnix/generated/.config/waybar/scripts/media.sh @@ -0,0 +1,92 @@ +#!/usr/bin/env bash +# --- This file has been auto-generated. For permanent changes alter the appropriate block in the README.org. --- + +# Player selection — prefer actively playing player +player=$(playerctl -l 2>/dev/null | while read -r p; do + st=$(playerctl --player="$p" status 2>/dev/null) + [ "$st" = "Playing" ] && echo "$p" && break +done) +[ -z "$player" ] && player=$(playerctl -l 2>/dev/null | head -n1) + +if [ -z "$player" ]; then + jq -c -n '{text: "", tooltip: "", class: "inactive"}' + exit 0 +fi + +status=$(playerctl --player="$player" status 2>/dev/null) +if [ "$status" != "Playing" ] && [ "$status" != "Paused" ]; then + jq -c -n '{text: "", tooltip: "", class: "inactive"}' + exit 0 +fi + +artist=$(playerctl --player="$player" metadata artist 2>/dev/null) +title=$(playerctl --player="$player" metadata title 2>/dev/null) +album=$(playerctl --player="$player" metadata album 2>/dev/null) +art=$(playerctl --player="$player" metadata mpris:artUrl 2>/dev/null) +length=$(playerctl --player="$player" metadata mpris:length 2>/dev/null) +position=$(playerctl --player="$player" position 2>/dev/null) + +# Progress percentage — pure bash, no bc needed +if [ -n "$length" ] && [ -n "$position" ] && [ "$length" -gt 0 ] 2>/dev/null; then + pos_us=$(echo "$position" | awk '{printf "%d", $1 * 1000000}') + progress=$(( pos_us * 100 / length )) +else + progress=0 +fi + +# Spotify device +device="" +if [[ "$player" == *"spotify"* ]]; then + device=$(playerctl --player="$player" metadata xesam:url 2>/dev/null | grep -o 'device=[^&]*' | cut -d= -f2) +fi + +# Icon +if [ "$status" = "Paused" ]; then + icon="⏸ " +else + icon="▶ " +fi + +# Scrolling ticker +CACHE_FILE="/tmp/waybar_media_scroll_${player//\//_}" +full_text="${artist} — ${title}" +text_len=${#full_text} +display_len=30 + +# Reset scroll offset when track changes +TRACK_FILE="/tmp/waybar_media_track_${player//\//_}" +last_track="" +[ -f "$TRACK_FILE" ] && last_track=$(cat "$TRACK_FILE") +if [ "$full_text" != "$last_track" ]; then + echo "0" > "$CACHE_FILE" + echo "$full_text" > "$TRACK_FILE" +fi + +if [ "$text_len" -le "$display_len" ]; then + text="$full_text" +else + offset=0 + [ -f "$CACHE_FILE" ] && offset=$(cat "$CACHE_FILE") + + padded="${full_text} ${full_text}" + text="${padded:$offset:$display_len}" + + next_offset=$(( (offset + 1) % (text_len + 4) )) + echo "$next_offset" > "$CACHE_FILE" +fi + +# Build tooltip +tooltip="Artist: ${artist} +Title: ${title} +Album: ${album}" +if [ -n "$device" ]; then + tooltip="${tooltip} + ${device}" +fi +tooltip="${tooltip}" +jq -c -n \ + --arg text "${icon}${text}" \ + --arg tooltip "$tooltip" \ + --arg class "$player" \ + --arg art "$art" \ + '{text: $text, tooltip: $tooltip, class: $class, alt: $art}' diff --git a/Droidnix/generated/.config/waybar/style-dark.css b/Droidnix/generated/.config/waybar/style-dark.css new file mode 100644 index 000000000..6084289bf --- /dev/null +++ b/Droidnix/generated/.config/waybar/style-dark.css @@ -0,0 +1,252 @@ +/* --- This file has been auto-generated. For permanent changes alter the appropriate block in the README.org. --- */ +@import url("file:///home/henrov/.config/shared/colors.css"); + +/* --- Global --- */ + * { + font-family: + Aporetic Sans Mono, + Iosevka Nerd Font, + Roboto, + Helvetica, + Arial, + sans-serif; + font-size: 13px; +} + +window#waybar { + background-color: transparent; + color: @text; + padding-top: 0; + padding-bottom: 0; + margin-top: 0; + margin-bottom: 0; +} + + +/* ---------GROUPS------------------------------------------------ */ + +/* --- Group-level theming --- */ +#hardware, +#workspaces, +#sporadic, +#audio, +#tray, +#datestuff, +#system, +#notifications, +#connections { + color: @text; + font-weight: bold; + border-radius: 30px; + /* --- Option 1 Green blue filled + background: + linear-gradient(transparent, transparent) padding-box, + linear-gradient(45deg, @blue, @green) border-box; + border: 2px solid transparent; + --- */ + /* --- Option 2 default background green blue border + background: + linear-gradient(@base, @base) padding-box, + linear-gradient(45deg, @blue, @green) border-box; + border: 2px solid transparent; + */ + /* --- Option 3 NO background, no border */ + background: transparent; + border: 2px solid transparent; + /* --- Option 5 Solid border + background: transparent; + border: 2px solid @border; + --- */ + margin: 0px 3px; + padding: 1px 4px; +} + +/* --- Group-level label padding --- */ +#hardware label, +#workspaces label, +#sporadic label, +#audio label, +#tray label, +#datestuff label, +#system label, +#notifications label, +#connections label { + padding: 0px 5px; + transition: padding 0.2s ease; +} + +/* --- Group anchors default visible --- */ +#custom-hardware-anchor, +#custom-tray-anchor, +#custom-system-anchor, +#custom-connections-anchor { + /* min-width: 80px; */ + padding: 0 5px; + margin: 0 2px; + opacity: 1; + transition: opacity 0.2s ease, min-width 0.2s ease, padding 0.2s ease; +} + +/* --- Hide anchors on hover of the group --- */ +#hardware:hover #custom-hardware-anchor, +#tray:hover #custom-tray-anchor, +#system:hover #custom-system-anchor, +#connections:hover #custom-connections-anchor { + opacity: 0; + min-width: 0; + padding: 0; + margin: 0; +} + +/* ----------------------------- + WORKSPACES / WINDOWS MODULE +----------------------------- */ + +#workspaces { + border: none; + background: none; +} + +/* Disable hover effects completely */ +#workspaces button, +#workspaces button:hover { + border: 2px solid transparent; + padding: 0 6px; + margin: 0; + border-radius: 30px; + transition: none; +} + +/* Active vs inactive workspace colors */ +#workspaces button.active { + background: linear-gradient(45deg, @blue, @green); + color: @base; +} + +activeworkspaces:not(.active) { + background: linear-gradient(@base-alpha, @base-alpha); + border: 2px solid transparent; + color: @text-muted; +} + +label#custom-windows.module { + font-size: 14px; + color: @base; + padding: 0 8px; + border-radius: 30px; + transition: all 0.3s ease; +} + +label#custom-windows.active { + background: linear-gradient(45deg, alpha(@blue, 0.5), alpha(@green, 0.5)); +} + +label#custom-windows:not(.active) { + background: transparent; + color: transparent; +} + +/* ---- Media ---*/ + +#custom-media { + padding: 0 8px; + color: @text; +} + +#custom-media.inactive { + background: transparent; + color: transparent; + opacity: 0; + padding: 0; + margin: 0; + min-width: 0; +} + +/* ---- Pulseaudio ---*/ + +#pulseaudio-slider { + padding: 0 4px; + margin: 0; + min-width: 140px; +} +#pulseaudio-slider slider { + min-height: 0px; + min-width: 0px; + opacity: 0; + border-radius: 30px; + background: linear-gradient(45deg, @blue, @green); + border: none; + box-shadow: none; + margin: 0; + padding: 0; +} +#pulseaudio-slider trough { + min-height: 10px; + min-width: 120px; + border-radius: 30px; + background: transparent; +} +#pulseaudio-slider highlight { + min-width: 10px; + border-radius: 30px; + background: linear-gradient(45deg, @blue, @green); + border: 2px solid transparent; +} + + +/* --------------------------------------------------------- */ +/* STATES / SPECIALS */ +#custom-notifications.notification, +#custom-notifications.dnd-notification, +#idle_inhibitor.activated { + background: linear-gradient(45deg, @blue, @green); + border: 2px solid transparent; + color: @base; + border-radius: 30px; +} + +#battery.charging { + color: @green; +} + +#batterywarn { + color: @red; + animation: blink 0.5s linear infinite alternate; + border-radius: 30px; + border: 2px solid transparent; +} + +#battery.warning:not(.charging) { + color: @text; + animation: blink 0.5s linear infinite alternate; + border-radius: 30px; + border: 2px solid transparent; +} + +#custom-batterywarn { + margin: 0 5px; + padding: 0 10px; + color: @red; + animation: blink 0.5s linear infinite alternate; +} + +@keyframes blink { + to { + background-color: #ffffff; + color: @base; + border-radius: 30px; + border: 2px solid transparent; + } +} + +#network.disconnected { + background-color: @red; + border-radius: 30px; + border: 2px solid transparent; +} + +#temperature.critical { + background-color: @red; + border-radius: 30px; + border: 2px solid transparent; +} diff --git a/Droidnix/generated/.config/waypaper/config.ini b/Droidnix/generated/.config/waypaper/config.ini new file mode 100644 index 000000000..73a1e1169 --- /dev/null +++ b/Droidnix/generated/.config/waypaper/config.ini @@ -0,0 +1,56 @@ +# --- This file has been auto-generated. For permanent changes alter the appropriate block in the README.org. --- +[Settings] +language = en +backend = awww +folder = ~/Wallpapers/pictures +monitors = All +wallpaper = ~/Wallpapers/pictures/13.jpg +show_path_in_tooltip = True +fill = fill +sort = name +color = #ffffff +subfolders = False +all_subfolders = False +show_hidden = False +show_gifs_only = False +zen_mode = False +post_command = +number_of_columns = 3 +awww_transition_type = any +awww_transition_step = 63 +awww_transition_angle = 0 +awww_transition_duration = 2 +awww_transition_fps = 60 +mpvpaper_sound = False +mpvpaper_options = +use_xdg_state = False +stylesheet = /home/henrov/.config/waypaper/style.css +keybindings = ~/.config/waypaper/keybindings.ini + +[Settings] +language = en +backend = awww +folder = ~/Wallpapers/pictures +monitors = All +wallpaper = ~/Wallpapers/pictures/13.jpg +show_path_in_tooltip = True +fill = fill +sort = name +color = #ffffff +subfolders = False +all_subfolders = False +show_hidden = False +show_gifs_only = False +zen_mode = False +post_command = +number_of_columns = 3 +awww_transition_type = any +awww_transition_step = 63 +awww_transition_angle = 0 +awww_transition_duration = 2 +awww_transition_fps = 60 +mpvpaper_sound = False +mpvpaper_options = +use_xdg_state = False +stylesheet = /home/henrov/.config/waypaper/style.css +keybindings = ~/.config/waypaper/keybindings.ini diff --git a/Droidnix/generated/.config/wofi/config b/Droidnix/generated/.config/wofi/config new file mode 100644 index 000000000..090437bce --- /dev/null +++ b/Droidnix/generated/.config/wofi/config @@ -0,0 +1,19 @@ +# --- This file has been auto-generated. For permanent changes alter the appropriate block in the README.org. --- +[global] +allow_markup = true + +location = center +anchor = center + +lines = 10 +columns = 1 +sort_order = last-used +sort_method = fuzzy +allow_scrolling = true +scroll_wrap = true +scroll_step = 10 +cycle = true +hide_scroll = false +hide_search = false + +prompt = > ... diff --git a/Droidnix/generated/.config/wofi/scripts/wofi-launcher.sh b/Droidnix/generated/.config/wofi/scripts/wofi-launcher.sh new file mode 100755 index 000000000..59ba3ae6c --- /dev/null +++ b/Droidnix/generated/.config/wofi/scripts/wofi-launcher.sh @@ -0,0 +1,8 @@ +#!/usr/bin/env bash +# --- This file has been auto-generated. For permanent changes alter the appropriate block in the README.org. --- +wofi --show drun \ + --style ~/.config/wofi/style.css \ + --no-actions \ + --allow-images=false \ + --columns 1 \ + --prompt "Apps ..." diff --git a/Droidnix/generated/.config/wofi/style.css b/Droidnix/generated/.config/wofi/style.css new file mode 100644 index 000000000..3dbe907dd --- /dev/null +++ b/Droidnix/generated/.config/wofi/style.css @@ -0,0 +1,88 @@ +/* --- This file has been auto-generated. For permanent changes alter the appropriate block in the README.org. --- */ +@import "~/.config/shared/colors.css"; + + * { + background-color: transparent; + color: @text; + font-family: "JetBrainsMono Nerd Font", monospace; + font-size: 12pt; +} + +#window { + background: linear-gradient(45deg, #89b4fa, #a6e3a1); + border-radius: 28px; + padding: 2px; +} + +#outer-box { + background-color: rgba(30, 30, 46, 0.98); /* almost solid */ + border-radius: 26px; + padding: 12px; +} + +#inner-box { + background: transparent; + padding: 0; +} + +#input { + background-color: @surface1; /* stronger than surface0 */ + color: @text; + border: 1px solid @surface2; + border-radius: 18px; + padding: 10px 14px; + margin-bottom: 10px; +} + +#input:focus { + border: 1px solid @blue; + background-color: @surface2; +} + +#entry { + background-color: rgba(0, 0, 0, 0.35); + color: @subtext1; + border-radius: 18px; + padding: 10px 14px; + margin: 2px 0; + transition: all 0.15s ease; +} + + +#entry:hover { + background-color: rgba(0, 0, 0, 0.5); + color: @text; +} + +#entry:focus { + background: linear-gradient(45deg, #89b4fa, #89b4fa); + color: @lavender; + border-radius: 18px; +} + +#entry:selected { + background: linear-gradient(45deg, #89b4fa, #a6e3a1); + border-radius: 18px; + font-weight: bold; +} + +#entry image { + margin-right: 10px; + opacity: 0.9; +} + +#scrollbar { + background-color: @surface1; + border-radius: 20px; + width: 6px; +} + +#scrollbar handle { + background: linear-gradient(45deg, #89b4fa, #a6e3a1); + border-radius: 20px; +} + +#prompt { + color: @subtext0; + margin-right: 6px; +} diff --git a/Droidnix/generated/.config/zed/settings.json b/Droidnix/generated/.config/zed/settings.json new file mode 100644 index 000000000..91f605bbe --- /dev/null +++ b/Droidnix/generated/.config/zed/settings.json @@ -0,0 +1,27 @@ +// Zed settings +// +// For information on how to configure Zed, see the Zed +// documentation: https://zed.dev/docs/configuring-zed +// +// To see all of Zed's default settings without changing your +// custom settings, run `zed: open default settings` from the +// command palette (cmd-shift-p / ctrl-shift-p) +{ + "icon_theme": "Catppuccin Mocha", + "agent": { + "default_model": { + "provider": "ollama", + "model": "codellama:34b", + "enable_thinking": false + }, + "favorite_models": [], + "model_parameters": [] + }, + "ui_font_size": 16, + "buffer_font_size": 15, + "theme": { + "mode": "dark", + "light": "One Light", + "dark": "Catppuccin Mocha", + }, +} diff --git a/Droidnix/generated/.config/zsh/.zshrc b/Droidnix/generated/.config/zsh/.zshrc new file mode 100644 index 000000000..5d0b99f60 --- /dev/null +++ b/Droidnix/generated/.config/zsh/.zshrc @@ -0,0 +1,25 @@ +# --- This file has been auto-generated. For permanent changes alter the appropriate block in the README.org. --- +# Path to syntax highlighting installed by Nix +ZSH_SYNTAX_HIGHLIGHTING="${HOME}/.nix-profile/share/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh" + +# Load syntax highlighting if available +if [ -f "$ZSH_SYNTAX_HIGHLIGHTING" ]; then + source "$ZSH_SYNTAX_HIGHLIGHTING" +fi + +# Initialize Starship prompt +if command -v starship >/dev/null 2>&1; then + eval "$(starship init zsh)" +fi + +source /etc/profile.d/99-alias-functions.sh +eval "$(/run/current-system/sw/bin/z.lua --init zsh)" +cd() { + if [ "$#" -eq 0 ]; then + builtin cd ~ + else + builtin cd "$@" || return + fi + + command z "$PWD" + } diff --git a/Droidnix/generated/assets/2_b_installed.conf b/Droidnix/generated/assets/2_b_installed.conf new file mode 100644 index 000000000..f2aa4a11e --- /dev/null +++ b/Droidnix/generated/assets/2_b_installed.conf @@ -0,0 +1,70 @@ +# --- This file has been auto-generated. For permanent changes alter the appropriate block in the README.org. --- +#packages +_1password-gui +audacity +baobab +bat +blender +brave +btop +chromium +cliphist +comma +direnv +duf +delta +eza +fd +file +fzf +gimp +git +gparted +grim +grimblast +gnome-calculator +qalculate-gtk +handbrake +hyperfine +just +jq +libreoffice +lua +nextcloud-client +nextcloud-talk-desktop +nix-index +nix-output-monitor +nh +numlockx +obsidian +openssl +pandoc +postman +python3 +qdirstat +ripgrep +signal-desktop +slurp +solidtime-desktop +spotify +solaar +swappy +sweethome3d.application +tea +todoist +tree +usbutils +vlc +wev +wget +wl-clipboard +wf-recorder +yazi +z-lua +zed-editor +zoxide + +#flatpaks +eu.betterbird.Betterbird +com.todoist.Todoist +com.logseq.Logseq diff --git a/Droidnix/generated/assets/aliases.conf b/Droidnix/generated/assets/aliases.conf new file mode 100644 index 000000000..f3d79d923 --- /dev/null +++ b/Droidnix/generated/assets/aliases.conf @@ -0,0 +1,26 @@ +# --- This file has been auto-generated. For permanent changes alter the appropriate block in the README.org. --- +#File & navigation +repo=cd ~/Repos && ls -lah + +#Nix commands +nps=xdg-open https://search.nixos.org + +#system commands +please=sudo +pls=sudo +rb=sudo reboot +po=sudo poweroff + +#flatpak commands +fpl=flatpak list +fps=flatpak search +fpi=flatpak install +fpr=flatpak run +fpu=flatpak update + +#ssh commands +nxc=ssh henrov@nextcloud.data-pro.nu + +#app shortcuts +vs=code +keys=hyprctl binds diff --git a/Droidnix/generated/disabled/modules/traveldroid/apps/flameshot.nix b/Droidnix/generated/disabled/modules/traveldroid/apps/flameshot.nix new file mode 100644 index 000000000..69df75052 --- /dev/null +++ b/Droidnix/generated/disabled/modules/traveldroid/apps/flameshot.nix @@ -0,0 +1,52 @@ +# --- This file has been auto-generated. For permanent changes alter the appropriate block in the README.org. --- +{ pkgs, config, lib, ... }: +let + username = config.defaultUser or "henrov"; +in +{ + ############################ + # System-level packages + ############################ + environment.systemPackages = with pkgs; [ + flameshot + ]; + + ############################ + # Home Manager user-level configuration + ############################ + home-manager.users."${username}" = { + home.sessionVariables = { + SCREENSHOT_TOOL = "flameshot"; + USERNAME = username; + }; + + # Create ~/Pictures/Screenshots by touching a dummy file + home.file."Pictures/Screenshots/.keep" = { + text = ""; # empty file + }; + + services.flameshot = { + enable = true; + settings = { + General = { + uiColor = "#97cbbe"; + contrastUiColor = "#1e1e2e"; + showDesktopNotification = true; + savePath = "/home/${username}/Pictures/Screenshots"; + filenamePattern = "$Y-$m-$d_$H-$M-$S"; + useGrimAdapter = true; + }; + }; + }; + + systemd.user.services.flameshot = { + Service = { + Environment = [ + "WAYLAND_DISPLAY=wayland-1" + "XDG_CURRENT_DESKTOP=hyprland" + "XDG_SESSION_TYPE=wayland" + ]; + }; + }; + }; +} diff --git a/Droidnix/generated/hosts/traveldroid/boot.nix b/Droidnix/generated/hosts/traveldroid/boot.nix new file mode 100644 index 000000000..82879277e --- /dev/null +++ b/Droidnix/generated/hosts/traveldroid/boot.nix @@ -0,0 +1,64 @@ +# --- This file has been auto-generated. For permanent changes alter the appropriate block in the README.org. --- +# --- This file has been auto-generated. For permanent changes alter the appropriate block in the README.org. --- +{ config, pkgs, lib, flakeRoot, ... }: +{ + boot.loader = { + systemd-boot.enable = true; + efi.canTouchEfiVariables = true; + efi.efiSysMountPoint = "/boot"; + timeout = 5; + }; + boot.kernelPackages = pkgs.linuxPackages_latest; + boot.kernelParams = [ + "quiet" + "splash" + "udev.log_level=3" + "rd.systemd.show_status=false" + # Sleep / power management + "mem_sleep_default=deep" # Use S3 deep sleep, fixes sleep not working + "acpi_osi=Linux" # Tell ACPI this is a Linux system + "acpi_backlight=native" # Proper backlight control + # Intel GPU — fixes screen blinking on sleep/wake + "i915.enable_psr=0" + "i915.enable_psr2_sel_fetch=0" + # Prevent nvme from waking the system + "nvme.noacpi=1" + ]; + boot.consoleLogLevel = 0; + #boot.initrd.systemd.enable = true; + boot.initrd.availableKernelModules = [ + "xhci_pci" + "nvme" + "usb_storage" + "sd_mod" + "rtsx_usb_sdmmc" + ]; + hardware.enableAllFirmware = true; + boot.kernelModules = [ + "kvm-intel" + "asus_wmi" # Asus-specific power/fan/keyboard control + ]; + boot.plymouth = { + enable = true; + }; + hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware; + nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux"; + + # Power management + powerManagement.enable = true; + services.logind.settings.Login = { + HandleSleepKey = "ignore"; + HandleSleepKeyLongPress = "ignore"; + }; + services.thermald.enable = true; # Intel thermal management daemon + services.tlp = { + enable = true; + settings = { + CPU_SCALING_GOVERNOR_ON_AC = "performance"; + CPU_SCALING_GOVERNOR_ON_BAT = "powersave"; + CPU_ENERGY_PERF_POLICY_ON_BAT = "power"; + PLATFORM_PROFILE_ON_AC = "performance"; + PLATFORM_PROFILE_ON_BAT = "low-power"; + }; + }; +} diff --git a/Droidnix/generated/hosts/traveldroid/hardware-configuration.nix b/Droidnix/generated/hosts/traveldroid/hardware-configuration.nix new file mode 100644 index 000000000..ca588f3b6 --- /dev/null +++ b/Droidnix/generated/hosts/traveldroid/hardware-configuration.nix @@ -0,0 +1,48 @@ +# --- This file has been auto-generated. For permanent changes alter the appropriate block in the README.org. --- +{ + hostname, + pkgs, + lib, + modulesPath, + user, + config, + ... +}: +{ + imports = [ + # (modulesPath + "/installer/scan/not-detected.nix") + #../../hardware/hardware.nix + ]; + + boot.initrd.availableKernelModules = [ + "xhci_pci" + "nvme" + "usb_storage" + "sd_mod" + "rtsx_usb_sdmmc" + ]; + boot.initrd.kernelModules = [ ]; + boot.kernelModules = [ "kvm-intel" ]; + boot.extraModulePackages = [ ]; + + fileSystems."/" = { + device = "/dev/disk/by-uuid/69433a14-fbaf-401b-af85-cd1bbf02b4e2"; + fsType = "ext4"; + }; + + fileSystems."/boot" = { + device = "/dev/disk/by-uuid/811D-0676"; + fsType = "vfat"; + options = [ + "fmask=0077" + "dmask=0077" + ]; + }; + + swapDevices = [ + { device = "/dev/disk/by-uuid/b6c557c2-7682-460b-a5e7-8f6f2f429a3a"; } + ]; + + nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux"; + hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware; +} diff --git a/Droidnix/generated/hosts/traveldroid/host.nix b/Droidnix/generated/hosts/traveldroid/host.nix new file mode 100644 index 000000000..5f4e422b3 --- /dev/null +++ b/Droidnix/generated/hosts/traveldroid/host.nix @@ -0,0 +1,54 @@ +# --- This file has been auto-generated. For permanent changes alter the appropriate block in the README.org. --- +{ lib, config, pkgs, flakeRoot, import-tree, home-manager, ... }: + +let + hostname = "traveldroid"; + modulesPath = "${flakeRoot}/generated/modules/${hostname}"; + hostModules = import-tree modulesPath; + allModules = hostModules.imports; +in +{ + networking.hostName = hostname; + system.stateVersion = "26.05"; + + ################################# + # Locale + ################################# + + i18n = { + defaultLocale = "nl_NL.UTF-8"; + extraLocales = [ + "nl_NL.UTF-8/UTF-8" + "en_US.UTF-8/UTF-8" + ]; + consoleKeyMap = "us"; + }; + + time.timeZone = "Europe/Amsterdam"; + + ################################# + # Imports + ################################# + + imports = + [ ../../../generated/users/henrov.nix + ./boot.nix + ./hardware-configuration.nix + ] + ++ allModules + ++ [ home-manager.nixosModules.home-manager ] + ; + + ################################# + # Home Manager integration + ################################# + + home-manager.useGlobalPkgs = true; + home-manager.useUserPackages = true; + + environment.systemPackages = [ + pkgs.dconf + ]; + + programs.dconf.enable = true; +} diff --git a/Droidnix/generated/modules/traveldroid/apps/2_b_installed.nix b/Droidnix/generated/modules/traveldroid/apps/2_b_installed.nix new file mode 100644 index 000000000..442a6f26a --- /dev/null +++ b/Droidnix/generated/modules/traveldroid/apps/2_b_installed.nix @@ -0,0 +1,100 @@ +# --- This file has been auto-generated. For permanent changes alter the appropriate block in the README.org. --- +{ lib, config, pkgs, flakeRoot, ... }: + +let + ################################# + # FILE + ################################# + confPath = "${flakeRoot}/generated/assets/2_b_installed.conf"; + raw = builtins.readFile confPath; + lines = lib.splitString "\n" raw; + + ################################# + # CLEAN LINE + ################################# + cleanLine = line: + let + noCR = lib.replaceStrings [ "\r" ] [ "" ] line; + noInlineComment = lib.head (lib.splitString "#" noCR); + in + lib.strings.trim noInlineComment; + + ################################# + # PARSE SECTION + ################################# + parseSection = section: + let + result = + builtins.foldl' + (acc: line: + let + l = lib.strings.trim line; + in + if l == section then + acc // { active = true; } + else if lib.hasPrefix "#" l then + acc // { active = false; } + else if acc.active then + acc // { entries = acc.entries ++ [ l ]; } + else + acc + ) + { active = false; entries = []; } + lines; + in + builtins.filter (l: l != "") (map cleanLine result.entries); + + ################################# + # NIX PACKAGES + ################################# + packageEntries = parseSection "#packages"; + + resolvePkg = name: + let + parts = lib.splitString "." name; + found = lib.attrByPath parts null pkgs; + in + if found == null then + throw '' + packages.nix: package not found + Token: ${name} + File : ${confPath} + '' + else + found; + + packages = map resolvePkg packageEntries; + + ################################# + # FLATPAKS + ################################# + flatpakEntries = parseSection "#flatpaks"; + +in { + ################################# + # Allow unfree + ################################# + nixpkgs.config.allowUnfree = true; + + ################################# + # System packages (Nix) + ################################# + environment.systemPackages = packages; + + ################################# + # Flatpak setup + ################################# + services.flatpak.enable = true; + + services.flatpak.remotes = [ + { + name = "flathub"; + location = "https://flathub.org/repo/flathub.flatpakrepo"; + } + ]; + + ################################# + # Flatpak apps + ################################# + services.flatpak.packages = flatpakEntries; +} diff --git a/Droidnix/generated/modules/traveldroid/apps/emacs/emacs.nix b/Droidnix/generated/modules/traveldroid/apps/emacs/emacs.nix new file mode 100644 index 000000000..359d581b7 --- /dev/null +++ b/Droidnix/generated/modules/traveldroid/apps/emacs/emacs.nix @@ -0,0 +1,87 @@ +# --- This file has been auto-generated. For permanent changes alter the appropriate block in the README.org. --- +{ config, pkgs, lib, flakeRoot, ... }: + +let + username = config.defaultUser or "henrov"; + + assetPath = "${flakeRoot}/generated/.config/emacs"; + + # Emacs package with Tree-sitter support + emacsPkg = pkgs.emacs-pgtk.override { withTreeSitter = true; }; + + # Extra packages for Emacs via Home Manager + emacsExtraPackages = epkgs: [ + epkgs.manualPackages.treesit-grammars.with-all-grammars + epkgs.nerd-icons + epkgs.doom-modeline + epkgs.diminish + epkgs.eldoc + epkgs.pulsar + epkgs.which-key + epkgs.expreg + epkgs.vundo + epkgs.puni + epkgs.avy + epkgs.consult + epkgs.vertico + epkgs.marginalia + epkgs.crux + epkgs.magit + epkgs.nerd-icons-corfu + epkgs.corfu + epkgs.cape + epkgs.orderless + epkgs.yasnippet + epkgs.yasnippet-snippets + epkgs.rg + epkgs.exec-path-from-shell + epkgs.eat + epkgs.rust-mode + epkgs.rustic + epkgs.nix-mode + epkgs.hcl-mode + epkgs.shell-pop + epkgs.envrc + epkgs.nixpkgs-fmt + epkgs.f + epkgs.gptel + epkgs.catppuccin-theme + epkgs.eldoc-box + epkgs.sideline + epkgs.sideline-flymake + epkgs.sideline-eglot + ]; +in +{ + # System-wide installation + environment.systemPackages = [ + emacsPkg + ]; + + # Home Manager user-specific configuration for your default user + home-manager.users = { + ${username} = { + home.sessionVariables = { + EDITOR = "emacs"; + XDG_SCREENSHOTS_DIR = "~/screenshots"; + }; + + programs.emacs = { + enable = true; + package = emacsPkg; + extraPackages = emacsExtraPackages; + }; + + home.file = { + ".emacs.d/early-init.el" = { + source = "${assetPath}/early-init.el"; + force = true; # <-- allow overwrite + }; + ".emacs.d/init.el" = { + source = "${assetPath}/init.el"; + force = true; # <-- allow overwrite + }; + }; + }; + }; +} diff --git a/Droidnix/generated/modules/traveldroid/apps/kdeconnect.nix b/Droidnix/generated/modules/traveldroid/apps/kdeconnect.nix new file mode 100644 index 000000000..3d550dcb6 --- /dev/null +++ b/Droidnix/generated/modules/traveldroid/apps/kdeconnect.nix @@ -0,0 +1,21 @@ +# --- This file has been auto-generated. For permanent changes alter the appropriate block in the README.org. --- +# --- This file has been auto-generated. For permanent changes alter the appropriate block in the README.org. --- +{ config, pkgs, ... }: +let + username = config.defaultUser or "henrov"; +in +{ + environment.systemPackages = with pkgs; [ + kdePackages.kdeconnect-kde + ]; + + systemd.user.services.kdeconnect = { + enable = true; + description = "KDE Connect daemon"; + wantedBy = ["default.target"]; + serviceConfig = { + ExecStart = "${pkgs.kdePackages.kdeconnect-kde}/bin/kdeconnectd"; + Restart = "on-failure"; + }; + }; +} diff --git a/Droidnix/generated/modules/traveldroid/apps/kitty.nix b/Droidnix/generated/modules/traveldroid/apps/kitty.nix new file mode 100644 index 000000000..cff7c665a --- /dev/null +++ b/Droidnix/generated/modules/traveldroid/apps/kitty.nix @@ -0,0 +1,44 @@ +# --- This file has been auto-generated. For permanent changes alter the appropriate block in the README.org. --- +{ lib, pkgs, config, flakeRoot, ... }: + +let + username = config.defaultUser or "henrov"; + extraConfigFile = "${flakeRoot}/generated/.config/kitty/extra.conf"; + extraConfig = + if builtins.pathExists extraConfigFile + then builtins.readFile extraConfigFile + else ""; +in +{ + ################################# + # System-wide install + ################################# + environment.systemPackages = [ + pkgs.kitty + ]; + ################################# + # Home Manager + ################################# + home-manager.users = { + "${username}" = { + programs.kitty = { + enable = true; + settings = { + confirm_os_window_close = lib.mkForce 0; + dynamic_background_opacity = lib.mkForce true; + enable_audio_bell = lib.mkForce false; + mouse_hide_wait = lib.mkForce "-1.0"; + window_padding_width = lib.mkForce 10; + background_opacity = lib.mkForce "0.5"; + background_blur = lib.mkForce 5; + notify_on_command_complete = lib.mkForce "never"; + }; + extraConfig = '' + ${extraConfig} + # Theme + include themes/Catppuccin-Mocha.conf + ''; + }; + }; + }; +} diff --git a/Droidnix/generated/modules/traveldroid/apps/starship.nix b/Droidnix/generated/modules/traveldroid/apps/starship.nix new file mode 100644 index 000000000..62624c989 --- /dev/null +++ b/Droidnix/generated/modules/traveldroid/apps/starship.nix @@ -0,0 +1,31 @@ +# --- This file has been auto-generated. For permanent changes alter the appropriate block in the README.org. --- +{ lib, config, pkgs, flakeRoot, ... }: + +let + # Default username fallback + username = config.defaultUser or "henrov"; + + # Path to the starship config in assets + starshipConfSrc = "${flakeRoot}/generated/.config/starship.toml"; +in +{ + ################################# + # Install Starship system-wide + ################################# + environment.systemPackages = [ pkgs.starship ]; + + ################################# + # Home Manager user configuration + ################################# + home-manager.users = { + ${username} = { + + home.file = { + ".config/starship.toml" = { + text = builtins.readFile "${starshipConfSrc}"; + force = true; + }; + }; + }; + }; +} diff --git a/Droidnix/generated/modules/traveldroid/apps/thunar.nix b/Droidnix/generated/modules/traveldroid/apps/thunar.nix new file mode 100644 index 000000000..fa2061880 --- /dev/null +++ b/Droidnix/generated/modules/traveldroid/apps/thunar.nix @@ -0,0 +1,38 @@ +# --- This file has been auto-generated. For permanent changes alter the appropriate block in the README.org. --- +{ pkgs, config, lib, ... }: + +let + # Resolve the default username from host config + username = config.defaultUser or "henrov"; +in +{ + ############################ + # System-level packages + ############################ + environment.systemPackages = with pkgs; [ + thunar # main file manager + thunar-archive-plugin # zip, tar, rar, 7z support + thunar-volman # auto-mount removable drives + gvfs # support for external drives and network shares + xarchiver # optional GUI archive manager + tumbler # Showing thumbnails + libmtp + mtpfs + jmtpfs + ]; + + ############################ + # Home Manager user-level configuration + ############################ + # Direct assignment to the user avoids recursiveUpdate issues + home-manager.users."${username}" = { + home.stateVersion = "26.05"; # required + + home.sessionVariables = { + FILE_MANAGER = "thunar"; + USERNAME = username; + }; + }; + # Enable gvfs as a service + services.gvfs.enable = true; +} diff --git a/Droidnix/generated/modules/traveldroid/apps/wofi.nix b/Droidnix/generated/modules/traveldroid/apps/wofi.nix new file mode 100644 index 000000000..3dd933ca8 --- /dev/null +++ b/Droidnix/generated/modules/traveldroid/apps/wofi.nix @@ -0,0 +1,26 @@ +# --- This file has been auto-generated. For permanent changes alter the appropriate block in the README.org. --- +{ lib, config, pkgs, flakeRoot, ... }: + +let + username = config.defaultUser or "henrov"; + sysName = "wofi"; + assetPath = "${flakeRoot}/generated/.config/${sysName}"; +in +{ + environment.systemPackages = [ pkgs.wofi ]; + + home-manager.users = { + ${username} = { + home.activation.MakeWofiMutable = { + after = [ "writeBoundary" ]; + before = []; + data = '' + rm -f $HOME/.config/${sysName}/* + cp ${assetPath}/* $HOME/.config/${sysName}/ + chmod u+w $HOME/.config/${sysName}/* + find $HOME/.config/${sysName}/ -name "*.sh" -exec chmod +x {} \; + ''; + }; + }; + }; +} diff --git a/Droidnix/generated/modules/traveldroid/apps/zenbrowser.nix b/Droidnix/generated/modules/traveldroid/apps/zenbrowser.nix new file mode 100644 index 000000000..c49cab1f4 --- /dev/null +++ b/Droidnix/generated/modules/traveldroid/apps/zenbrowser.nix @@ -0,0 +1,12 @@ +# --- This file has been auto-generated. For permanent changes alter the appropriate block in the README.org. --- +{ config, pkgs, lib, zen-browser, ... }: + +let + # Grab the Zen Browser package for this host system + zenBrowser = zen-browser.packages.${pkgs.stdenv.hostPlatform.system}.default; +in +{ + environment.systemPackages = [ + zenBrowser + ]; +} diff --git a/Droidnix/generated/modules/traveldroid/apps/zsh.nix b/Droidnix/generated/modules/traveldroid/apps/zsh.nix new file mode 100644 index 000000000..d4ca4c2bb --- /dev/null +++ b/Droidnix/generated/modules/traveldroid/apps/zsh.nix @@ -0,0 +1,105 @@ +# --- This file has been auto-generated. For permanent changes alter the appropriate block in the README.org. --- +{ lib, config, pkgs, flakeRoot, ... }: + +let + ################################# + # User config + ################################# + username = config.defaultUser or "henrov"; + generatedZsh = "${flakeRoot}/generated/.config/zsh/.zshrc"; + + ################################# + # Alias parsing + ################################# + aliasFile = "${flakeRoot}/generated/assets/aliases.conf"; + content = builtins.readFile aliasFile; + + lines = + lib.filter (l: l != "") + (map (l: + let + noComment = builtins.head (lib.splitString "#" l); + in lib.trim noComment + ) (lib.splitString "\n" content)); + + parseLine = line: + let + parts = lib.splitString "=" line; + in + if lib.length parts < 2 then null else { + name = lib.trim (lib.head parts); + value = lib.trim (lib.concatStringsSep "=" (lib.tail parts)); + }; + + parsed = + lib.filter (x: x != null) + (map parseLine lines); + + functions = + lib.concatStringsSep "\n" + (map (x: '' + ${x.name}() { + ${x.value} "$@" + } + '') parsed); + +in +{ + ################################# + # Packages + ################################# + environment.systemPackages = with pkgs; [ + zsh + oh-my-zsh + starship + zsh-syntax-highlighting + ]; + + ################################# + # Zsh config location + ################################# + environment.etc."zshenv".text = '' + export ZDOTDIR=$HOME/.config/zsh + ''; + + ################################# + # Generated alias functions (system-wide) + ################################# + environment.etc."profile.d/99-alias-functions.sh".text = '' + # system-wide functions generated from aliases.conf + ${functions} + ''; + + ################################# + # Global zshrc + ################################# + environment.etc."zshrc".text = '' + export ZSH=${pkgs.oh-my-zsh}/share/oh-my-zsh + ZSH_THEME="" + plugins=(git sudo extract colored-man-pages command-not-found history docker kubectl) + + source $ZSH/oh-my-zsh.sh + + # Init starship FIRST (prompt) + eval "$(starship init zsh)" + + # Load alias functions + if [ -f /etc/profile.d/99-alias-functions.sh ]; then + source /etc/profile.d/99-alias-functions.sh + fi + + # Load optional generated user config + [ -f "${generatedZsh}" ] && source "${generatedZsh}" + + # Syntax highlighting MUST be last + source ${pkgs.zsh-syntax-highlighting}/share/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh + ''; + + ################################# + # Home Manager integration + ################################# + home-manager.users.${username} = { + programs.zsh.enable = true; + home.file.".config/zsh/.zshrc".source = generatedZsh; + }; +} diff --git a/Droidnix/generated/modules/traveldroid/desktop/fonts.nix b/Droidnix/generated/modules/traveldroid/desktop/fonts.nix new file mode 100644 index 000000000..47b5f64fc --- /dev/null +++ b/Droidnix/generated/modules/traveldroid/desktop/fonts.nix @@ -0,0 +1,10 @@ +# --- This file has been auto-generated. For permanent changes alter the appropriate block in the README.org. --- +{ lib, pkgs, config, ... }: + +{ + fonts.packages = with pkgs; [ + nerd-fonts.iosevka + nerd-fonts.fira-code + nerd-fonts.jetbrains-mono + ]; +} diff --git a/Droidnix/generated/modules/traveldroid/desktop/gtk.nix b/Droidnix/generated/modules/traveldroid/desktop/gtk.nix new file mode 100644 index 000000000..fae5ee63e --- /dev/null +++ b/Droidnix/generated/modules/traveldroid/desktop/gtk.nix @@ -0,0 +1,18 @@ +# --- This file has been auto-generated. For permanent changes alter the appropriate block in the README.org. --- +{ pkgs, config, lib, ... }: + +let + username = config.defaultUser or "henrov"; +in +{ + environment.systemPackages = with pkgs; [ + gtk3 + gtk4 + ]; + + home-manager.users."${username}" = { + gtk = { + enable = true; + }; + }; +} diff --git a/Droidnix/generated/modules/traveldroid/desktop/hyprland.nix b/Droidnix/generated/modules/traveldroid/desktop/hyprland.nix new file mode 100644 index 000000000..6ff436e10 --- /dev/null +++ b/Droidnix/generated/modules/traveldroid/desktop/hyprland.nix @@ -0,0 +1,36 @@ +# --- This file has been auto-generated. For permanent changes alter the appropriate block in the README.org. --- +{ lib, config, pkgs, flakeRoot, home-manager, inputs, ... }: +let + username = config.defaultUser or "henrov"; + sysName = "hypr"; + assetPath = "${flakeRoot}/generated/.config/${sysName}"; + hyprlandPkg = + pkgs.hyprland or + pkgs.hyprland-git or + inputs.hyprland.packages.${pkgs.system}.default; +in +{ + # Install Hyprland systemwide + programs.hyprland.enable = true; + programs.hyprland.withUWSM = true; + programs.hyprland.package = hyprlandPkg; + + environment.systemPackages = [ hyprlandPkg ]; + + # Home Manager user configuration + home-manager.users = { + ${username} = { + + home.activation.MakeHyprMutable = { + after = [ "writeBoundary" ]; + before = []; + data = '' + rm -f $HOME/.config/${sysName}/* + cp ${assetPath}/* $HOME/.config/${sysName}/ + chmod u+w $HOME/.config/${sysName}/* + find $HOME/.config/${sysName}/ -name "*.sh" -exec chmod +x {} \; + ''; + }; + }; + }; +} diff --git a/Droidnix/generated/modules/traveldroid/desktop/stylix.nix b/Droidnix/generated/modules/traveldroid/desktop/stylix.nix new file mode 100644 index 000000000..001e97a2e --- /dev/null +++ b/Droidnix/generated/modules/traveldroid/desktop/stylix.nix @@ -0,0 +1,82 @@ +# --- This file has been auto-generated. For permanent changes alter the appropriate block in the README.org. --- +{ lib, config, pkgs, flakeRoot, stylix, ... }: + +let + username = config.defaultUser or "henrov"; + moduleName = "stylix"; + + assetPath = "${flakeRoot}/generated/.config/${moduleName}"; + + stylixConfFile = "${assetPath}/stylix.conf"; + stylixConf = + if builtins.pathExists stylixConfFile + then builtins.readFile stylixConfFile + else ""; + + cursorName = "phinger-cursors-light"; + cursorSize = 24; +in +{ + ################################# + # Enable Stylix module + ################################# + imports = [ + stylix.nixosModules.stylix + ]; + + ################################# + # System packages + ################################# + environment.systemPackages = [ + pkgs.feh + pkgs.st + ]; + + ################################# + # Stylix system config + ################################# + stylix = { + enable = true; + + base16Scheme = "${flakeRoot}/assets/traveldroid/theming/stylix/catppuccin-mocha.yaml"; + polarity = "dark"; + + targets = { + gtk.enable = true; + qt.enable = true; + }; + + cursor = { + name = cursorName; + package = pkgs.phinger-cursors; + size = cursorSize; + }; + }; + + ################################# + # Home Manager + ################################# + home-manager.users = { + "${username}" = { + + ################################# + # ONLY custom file (safe) + ################################# + home.file.".config/stylix/stylix.conf" = { + text = stylixConf; + force = true; + }; + + ################################# + # Environment variables + ################################# + home.sessionVariables = { + STYLIX_CONF = "$HOME/.config/stylix/stylix.conf"; + XCURSOR_THEME = cursorName; + XCURSOR_SIZE = toString cursorSize; + HYPRCURSOR_THEME = cursorName; + HYPRCURSOR_SIZE = toString cursorSize; + }; + }; + }; +} diff --git a/Droidnix/generated/modules/traveldroid/desktop/wallpaper.nix b/Droidnix/generated/modules/traveldroid/desktop/wallpaper.nix new file mode 100644 index 000000000..7ad199082 --- /dev/null +++ b/Droidnix/generated/modules/traveldroid/desktop/wallpaper.nix @@ -0,0 +1,91 @@ +# --- This file has been auto-generated. For permanent changes alter the appropriate block in the README.org. --- +{ lib, config, pkgs, flakeRoot, ... }: + +let + username = config.defaultUser or "henrov"; + homeDir = "/home/${username}"; + wallpaperSrc = "${flakeRoot}/assets/traveldroid/Wallpapers"; + wallpaperDst = "${homeDir}/Wallpapers"; + randoScript = "${homeDir}/Wallpapers/scripts/randomizeWallpapers.sh"; +in +{ + # Make bash available + environment.systemPackages = [ pkgs.bash pkgs.rsync pkgs.jq pkgs.awww pkgs.waypaper pkgs.socat ]; + + # Create the copy script using Home Manager, following Waybar style + home-manager.users = { + ${username} = { + home.file = { + "copy-wallpapers.sh" = { + text = '' + #!/run/current-system/sw/bin/bash + set -euo pipefail + echo "Running as $(whoami)" + echo "Copying wallpapers from ${wallpaperSrc} to ${wallpaperDst} ..." + if [ ! -d "${wallpaperSrc}" ]; then + echo "ERROR: ${wallpaperSrc} does not exist" + exit 1 + fi + mkdir -p "${wallpaperDst}" + # Simple copy, overwrite everything + cp -r "${wallpaperSrc}/." "${wallpaperDst}/" + # Fix permissions + chmod -R u+rwx "${wallpaperDst}" + echo "Done copying wallpapers." + ''; + executable = true; + force = true; + }; + }; + }; + }; + + # User service to run the script that copies the Wallpaperstuff + systemd.user.services.copyWallpapers = { + description = "Copy wallpapers from repo to ~/Wallpapers"; + serviceConfig = { + Type = "oneshot"; + ExecStart = "${homeDir}/copy-wallpapers.sh"; + Restart = "no"; + WorkingDirectory = homeDir; + }; + wantedBy = [ "default.target" ]; + }; + + # User service to randomize wallpapers + systemd.user.services.randomizeWallpapers = { + description = "Randomize wallpapers in ~/Wallpapers/pictures"; + serviceConfig = { + Type = "oneshot"; + ExecStart = "${randoScript}"; + Restart = "no"; + WorkingDirectory = homeDir; + }; + wantedBy = [ "default.target" ]; + }; + + ############################ + # Random background per workspace at logon + ############################ + + systemd.user.services.workspaceWallpapers = { + description = "Dynamic wallpapers per workspace for Hyprland"; + after = [ "graphical-session.target" ]; + wants = [ "graphical-session.target" ]; + + serviceConfig = { + Type = "simple"; + ExecStart = "${homeDir}/Wallpapers/scripts/workspace-wallpapers.sh"; + Restart = "on-failure"; + RestartSec = 5; + WorkingDirectory = homeDir; + Environment = [ + "HYPRLAND_INSTANCE_SIGNATURE=${builtins.getEnv "HYPRLAND_INSTANCE_SIGNATURE"}" + "WAYLAND_DISPLAY=wayland-1" + "PATH=/run/current-system/sw/bin:/usr/bin:/bin" + ]; + }; + + wantedBy = [ "default.target" ]; + }; +} diff --git a/Droidnix/generated/modules/traveldroid/desktop/waybar.nix b/Droidnix/generated/modules/traveldroid/desktop/waybar.nix new file mode 100644 index 000000000..38b363f40 --- /dev/null +++ b/Droidnix/generated/modules/traveldroid/desktop/waybar.nix @@ -0,0 +1,37 @@ +# --- This file has been auto-generated. For permanent changes alter the appropriate block in the README.org. --- +{ lib, config, pkgs, flakeRoot, ... }: +let + username = config.defaultUser or "henrov"; + sysName = "waybar"; + assetPath = "${flakeRoot}/generated/.config/${sysName}"; +in +{ + environment.systemPackages = [ pkgs.waybar ]; + + home-manager.users.${username} = { + home.activation.MakeWaybarMutable = { + after = [ "writeBoundary" ]; + before = []; + data = '' + rm -f $HOME/.config/${sysName}/* + cp ${assetPath}/* $HOME/.config/${sysName}/ + chmod u+w $HOME/.config/${sysName}/* + find $HOME/.config/${sysName}/ -name "*.sh" -exec chmod +x {} \; + ''; + }; + }; + + systemd.user.services.waybar = { + description = "Waybar for Hyprland"; + after = [ "graphical-session.target" ]; + wantedBy = [ "default.target" ]; + serviceConfig = { + ExecStart = "${pkgs.waybar}/bin/waybar"; + Restart = "always"; + Environment = '' + WAYLAND_DISPLAY=${config.environment.sessionVariables.WAYLAND_DISPLAY or "wayland-0"} + XDG_CURRENT_DESKTOP=Hyprland + ''; + }; + }; +} diff --git a/Droidnix/generated/modules/traveldroid/desktop/wayland.nix b/Droidnix/generated/modules/traveldroid/desktop/wayland.nix new file mode 100644 index 000000000..8f64ab119 --- /dev/null +++ b/Droidnix/generated/modules/traveldroid/desktop/wayland.nix @@ -0,0 +1,25 @@ +# --- This file has been auto-generated. For permanent changes alter the appropriate block in the README.org. --- +{ lib, config, pkgs, ... }: + +{ + ################################# + # Core Wayland packages + ################################# + environment.systemPackages = with pkgs; [ + wayland + wl-clipboard # optional but commonly used for copy/paste + ]; + + ################################# + # enable graphics stack + ################################# + hardware.graphics.enable = true; + + ################################# + # Optional session variables for Wayland + ################################# + environment.sessionVariables = { + # Forces some apps to use Wayland + NIXOS_OZONE_WL = "1"; + }; +} diff --git a/Droidnix/generated/modules/traveldroid/desktop/xdg.nix b/Droidnix/generated/modules/traveldroid/desktop/xdg.nix new file mode 100644 index 000000000..f8db07b67 --- /dev/null +++ b/Droidnix/generated/modules/traveldroid/desktop/xdg.nix @@ -0,0 +1,62 @@ +# --- This file has been auto-generated. For permanent changes alter the appropriate block in the README.org. --- +{ lib, config, pkgs, flakeRoot, ... }: +let + username = config.defaultUser or "henrov"; + homeDir = "/home/${username}"; + basePortal = pkgs.xdg-desktop-portal-gtk; + hyprlandPortal = pkgs.xdg-desktop-portal-hyprland; +in +{ + ################################# + # XDG Desktop Portals (system) + ################################# + xdg.portal.enable = true; + xdg.portal.xdgOpenUsePortal = true; + xdg.portal.extraPortals = [ + basePortal + hyprlandPortal + ]; + xdg.portal.config = { + common = { + default = [ "hyprland" "gtk" ]; + }; + hyprland = { + default = [ "hyprland" "gtk" ]; + "org.freedesktop.impl.portal.FileChooser" = [ "gtk" ]; + "org.freedesktop.impl.portal.Settings" = [ "gtk" ]; + "org.freedesktop.impl.portal.Screencast" = [ "hyprland" ]; + "org.freedesktop.impl.portal.Screenshot" = [ "hyprland" ]; + }; + }; + ################################# + # System packages + ################################# + environment.systemPackages = [ + basePortal + hyprlandPortal + ]; + ################################# + # Home Manager user config + ################################# + home-manager.users.${username} = { + ################################# + # XDG user directories + ################################# + xdg.userDirs = { + enable = true; + createDirectories = true; + desktop = null; + download = "${homeDir}/Downloads"; + documents = "${homeDir}/Documents"; + pictures = "${homeDir}/Pictures"; + music = null; + publicShare = null; + templates = "${homeDir}/Experiments"; + videos = "${homeDir}/Videos"; + extraConfig = { + XDG_PROJECTS_DIR = "${homeDir}/Projects"; + XDG_WORK_DIR = "${homeDir}/Work"; + }; + }; + }; +} diff --git a/Droidnix/generated/modules/traveldroid/system/audio.nix b/Droidnix/generated/modules/traveldroid/system/audio.nix new file mode 100644 index 000000000..40b701e74 --- /dev/null +++ b/Droidnix/generated/modules/traveldroid/system/audio.nix @@ -0,0 +1,14 @@ +# --- This file has been auto-generated. For permanent changes alter the appropriate block in the README.org. --- +{ lib, config, pkgs, ... }: + +{ + ############################ + # Audio system + ############################ + environment.systemPackages = with pkgs; [ + pulseaudio # PulseAudio daemon + pavucontrol # GUI mixer + pamixer # CLI mixer + playerctl # Player controls + ]; +} diff --git a/Droidnix/generated/modules/traveldroid/system/avahi.nix b/Droidnix/generated/modules/traveldroid/system/avahi.nix new file mode 100644 index 000000000..09afeee66 --- /dev/null +++ b/Droidnix/generated/modules/traveldroid/system/avahi.nix @@ -0,0 +1,12 @@ +# --- This file has been auto-generated. For permanent changes alter the appropriate block in the README.org. --- +{ ... }: +{ + services.avahi = { + enable = true; + nssmdns4 = true; + publish = { + enable = true; + addresses = true; + }; + }; +} diff --git a/Droidnix/generated/modules/traveldroid/system/bluetooth.nix b/Droidnix/generated/modules/traveldroid/system/bluetooth.nix new file mode 100644 index 000000000..1ca58b81e --- /dev/null +++ b/Droidnix/generated/modules/traveldroid/system/bluetooth.nix @@ -0,0 +1,19 @@ +# --- This file has been auto-generated. For permanent changes alter the appropriate block in the README.org. --- +{ lib, config, pkgs, home-manager, ... }: + +let + username = config.defaultUser or "henrov"; +in +{ + + + ############################ + # Bluetooth daemon + ############################ + hardware.bluetooth = { + enable = true; + powerOnBoot = true; + package = pkgs.bluez; + }; + environment.systemPackages = with pkgs; [ blueman ]; +} diff --git a/Droidnix/generated/modules/traveldroid/system/colors.nix b/Droidnix/generated/modules/traveldroid/system/colors.nix new file mode 100644 index 000000000..e3b4b8ac4 --- /dev/null +++ b/Droidnix/generated/modules/traveldroid/system/colors.nix @@ -0,0 +1,69 @@ +# --- This file has been auto-generated. For permanent changes alter the appropriate block in the README.org. --- +{ lib, config, pkgs, flakeRoot, ... }: +let + colors = { + border = "#97C9E6"; + crust = "#11111b"; + mantle = "#181825"; + base = "#1e1e2e"; + surface0 = "#313244"; + surface1 = "#45475a"; + surface2 = "#585b70"; + overlay0 = "#6c7086"; + overlay1 = "#7f849c"; + overlay2 = "#9399b2"; + subtext0 = "#a6adc8"; + subtext1 = "#bac2de"; + text = "#cdd6f4"; + rosewater = "#f5e0dc"; + flamingo = "#f2cdcd"; + pink = "#f5c2e7"; + mauve = "#cba6f7"; + red = "#f38ba8"; + maroon = "#eba0ac"; + peach = "#fab387"; + yellow = "#f9e2af"; + green = "#a6e3a1"; + teal = "#94e2d5"; + sapphire = "#74c7ec"; + blue = "#89b4fa"; + lavender = "#b4befe"; + }; + + username = config.defaultUser or "henrov"; + + qmlContent = '' + pragma Singleton + // Catppuccin Mocha Palette - auto-generated, do not edit manually + import QtQuick + QtObject { + readonly property color baseAlpha: Qt.rgba(30/255, 30/255, 46/255, 0.9) + '' + lib.concatStringsSep "\n" ( + lib.mapAttrsToList (name: value: + " readonly property color ${name}: \"${value}\"" + ) colors + ) + "\n}"; + +in +{ + home-manager.users.${username} = { + home.file = { + ".config/shared/colors.css" = { + source = "${flakeRoot}/generated/.config/shared/colors.css"; + force = true; + }; + ".config/quickshell/Colors.qml" = { + text = qmlContent; + force = true; + }; + ".config/quickshell/powermenu/Colors.qml" = { + text = qmlContent; + force = true; + }; + ".config/quickshell/powermenu/qmldir" = { + text = "singleton Colors 1.0 Colors.qml"; + force = true; + }; + }; + }; +} diff --git a/Droidnix/generated/modules/traveldroid/system/copy_scripts.nix b/Droidnix/generated/modules/traveldroid/system/copy_scripts.nix new file mode 100644 index 000000000..5d5c26a13 --- /dev/null +++ b/Droidnix/generated/modules/traveldroid/system/copy_scripts.nix @@ -0,0 +1,33 @@ +# --- This file has been auto-generated. For permanent changes alter the appropriate block in the README.org. --- +{ lib, config, pkgs, flakeRoot, ... }: +let + username = config.defaultUser or "henrov"; + configPath = flakeRoot + "/generated/.config/scripts"; + allFiles = lib.filesystem.listFilesRecursive configPath; + + toRelative = file: + let + base = toString flakeRoot + "/generated/"; + relative = lib.removePrefix base (toString file); + in + builtins.unsafeDiscardStringContext relative; + + isShellScript = file: + lib.hasSuffix ".sh" (toString file); + + toFileEntry = file: { + name = toRelative file; + value = { + source = file; + executable = isShellScript file; + force = true; + }; + }; +in +{ + home-manager.users = { + ${username} = { + home.file = builtins.listToAttrs (map toFileEntry allFiles); + }; + }; +} diff --git a/Droidnix/generated/modules/traveldroid/system/dbus.nix b/Droidnix/generated/modules/traveldroid/system/dbus.nix new file mode 100644 index 000000000..98db4ded2 --- /dev/null +++ b/Droidnix/generated/modules/traveldroid/system/dbus.nix @@ -0,0 +1,19 @@ +# --- This file has been auto-generated. For permanent changes alter the appropriate block in the README.org. --- +{ config, pkgs, ... }: + +{ + # Enable classic D-Bus service + services.dbus.enable = true; + + # Use default dbus package (classic D-Bus) + services.dbus.dbusPackage = pkgs.dbus; + + # Include some essential system packages so shell and tools exist + environment.systemPackages = with pkgs; [ + bashInteractive + coreutils + ]; + + # Do not attempt to wrap dbus-daemon-launch-helper manually + # No extra security.wrappers needed +} diff --git a/Droidnix/generated/modules/traveldroid/system/firewall.nix b/Droidnix/generated/modules/traveldroid/system/firewall.nix new file mode 100644 index 000000000..9d9bd87e3 --- /dev/null +++ b/Droidnix/generated/modules/traveldroid/system/firewall.nix @@ -0,0 +1,73 @@ +# --- This file has been auto-generated. For permanent changes alter the appropriate block in the README.org. --- +{ pkgs, ... }: + +{ + # Use nftables as the firewall backend + networking.nftables.enable = true; + + networking.firewall = { + enable = true; + + filterForward = false; # don't filter forwarded traffic + # outbound is allowed by default UNLESS you've set: + + # LAN-only ports — Wi-Fi interface + interfaces."wlan0" = { + allowedTCPPorts = [ + 22 # SSH + 80 # allow HTTP globally for outbound + 443 # allow HTTPS globally for outbound + 631 # CUPS / IPP network printing + 9100 # AppSocket/JetDirect printing + 6566 # SANE network scanner + 57621 # Spotify Connect + 57622 # Spotify local file sync + ]; + allowedTCPPortRanges = [ + { from = 1714; to = 1764; } # KDE Connect + ]; + allowedUDPPorts = [ + 5353 # mDNS / Avahi (printer + device discovery) + 631 # CUPS / IPP + 67 # DHCP + 123 # NTP time sync + 1900 # UPnP device discovery + 57621 # Spotify Connect + ]; + allowedUDPPortRanges = [ + { from = 1714; to = 1764; } # KDE Connect + ]; + }; + + # LAN-only ports — ethernet (ready for when you plug in) + interfaces."enp0s31f6" = { + allowedTCPPorts = [ + 631 # CUPS / IPP network printing + 9100 # AppSocket/JetDirect printing + 6566 # SANE network scanner + 57621 # Spotify Connect + 57622 # Spotify local file sync + ]; + allowedTCPPortRanges = [ + { from = 1714; to = 1764; } # KDE Connect + ]; + allowedUDPPorts = [ + 5353 # mDNS / Avahi (printer + device discovery) + 631 # CUPS / IPP + 67 # DHCP + 123 # NTP time sync + 1900 # UPnP device discovery + 57621 # Spotify Connect + ]; + allowedUDPPortRanges = [ + { from = 1714; to = 1764; } # KDE Connect + ]; + }; + }; + + # CLI tool for temporary rule changes without rebuilding + # Usage: sudo nixos-firewall-tool open tcp 8080 + environment.systemPackages = with pkgs; [ + nixos-firewall-tool + ]; +} diff --git a/Droidnix/generated/modules/traveldroid/system/gnome-keyring.nix b/Droidnix/generated/modules/traveldroid/system/gnome-keyring.nix new file mode 100644 index 000000000..30a2d016c --- /dev/null +++ b/Droidnix/generated/modules/traveldroid/system/gnome-keyring.nix @@ -0,0 +1,40 @@ +# --- This file has been auto-generated. For permanent changes alter the appropriate block in the README.org. --- +{ config, pkgs, ... }: + +{ + ################################################## + # Core services + ################################################## + + # Enable GNOME Keyring + services.gnome.gnome-keyring.enable = true; + + ################################################## + # PAM (auto unlock keyring on login) + ################################################## + + security.pam.services = { + login.enableGnomeKeyring = true; + greetd.enableGnomeKeyring = true; + sddm.enableGnomeKeyring = true; + gdm.enableGnomeKeyring = true; + }; + + ################################################## + # Environment packages + ################################################## + + environment.systemPackages = with pkgs; [ + polkit_gnome + seahorse + libsecret + ]; + + ################################################## + # Security / Polkit + ################################################## + + security.polkit.enable = true; + + +} diff --git a/Droidnix/generated/modules/traveldroid/system/hypridle.nix b/Droidnix/generated/modules/traveldroid/system/hypridle.nix new file mode 100644 index 000000000..29f949d67 --- /dev/null +++ b/Droidnix/generated/modules/traveldroid/system/hypridle.nix @@ -0,0 +1,48 @@ +# --- This file has been auto-generated. For permanent changes alter the appropriate block in the README.org. --- +{ lib, config, pkgs, flakeRoot, ... }: + +let + username = config.defaultUser or "henrov"; + basePath = "${flakeRoot}/generated/.config"; + assetPath = "${flakeRoot}/generated/.config/hypr"; +in +{ + ################################# + # Install hypridle system-wide + ################################# + environment.systemPackages = [ pkgs.hypridle ]; + + ################################# + # Deploy config + ################################# + home-manager.users = { + ${username} = { + home.file = { + ".config/hypr/hypridle.conf" = { + text = builtins.readFile "${assetPath}/hypridle.conf"; + force = true; + }; + }; + }; + }; + + ################################# + # Systemd user service + ################################# + systemd.user.services.hypridle = { + description = "Hypridle (Hyprland idle daemon)"; + after = [ "hyprland-session.target" ]; + bindsTo = [ "hyprland-session.target" ]; + serviceConfig = { + ExecStart = "${pkgs.hypridle}/bin/hypridle"; + Restart = "on-failure"; + RestartSec = "5s"; + Environment = [ + "HOME=/home/${username}" + "WAYLAND_DISPLAY=wayland-1" + "XDG_RUNTIME_DIR=/run/user/1000" + ]; + }; + wantedBy = [ "hyprland-session.target" ]; + }; +} diff --git a/Droidnix/generated/modules/traveldroid/system/hyprlock.nix b/Droidnix/generated/modules/traveldroid/system/hyprlock.nix new file mode 100644 index 000000000..ec215e4a2 --- /dev/null +++ b/Droidnix/generated/modules/traveldroid/system/hyprlock.nix @@ -0,0 +1,49 @@ +# --- This file has been auto-generated. For permanent changes alter the appropriate block in the README.org. --- +{ lib, config, pkgs, flakeRoot, ... }: + +let + username = config.defaultUser or "henrov"; + basePath = "${flakeRoot}/generated/.config"; + assetPath = "${flakeRoot}/generated/.config/hypr"; +in +{ + ################################# + # Install hyprlock system-wide + ################################# + environment.systemPackages = [ + pkgs.hyprlock + ]; + + ################################# + # Deploy configuration file + ################################# + home-manager.users = { + ${username} = { + home.file = { + ".config/hypr/hyprlock.conf" = { + text = builtins.readFile "${assetPath}/hyprlock.conf"; + force = true; + }; + }; + }; + }; + + ################################# + # Optional: helper systemd user service (manual start use) + ################################# + systemd.user.services.hyprlock = { + description = "Hyprlock (manual lock session)"; + after = [ "graphical-session.target" ]; + + serviceConfig = { + ExecStart = "${pkgs.hyprlock}/bin/hyprlock"; + Restart = "no"; + Environment = '' + WAYLAND_DISPLAY=${config.environment.sessionVariables.WAYLAND_DISPLAY or "wayland-0"} + XDG_CURRENT_DESKTOP=Hyprland + ''; + }; + + wantedBy = [ ]; + }; +} diff --git a/Droidnix/generated/modules/traveldroid/system/login-tuigreet.nix b/Droidnix/generated/modules/traveldroid/system/login-tuigreet.nix new file mode 100644 index 000000000..c83aa4ddb --- /dev/null +++ b/Droidnix/generated/modules/traveldroid/system/login-tuigreet.nix @@ -0,0 +1,39 @@ +# --- This file has been auto-generated. For permanent changes alter the appropriate block in the README.org. --- +{ config, pkgs, lib, ... }: +let + tuigreetBin = "${pkgs.tuigreet}/bin/tuigreet"; + sessionsDir = "${pkgs.uwsm}/share/wayland-sessions"; +in +{ + ################################# + # Greetd (tuigreet) + ################################# + services.greetd = { + enable = true; + settings = { + default_session = { + command = '' + ${tuigreetBin} \ + --time \ + --remember \ + --remember-session \ + --sessions ${sessionsDir} \ + --cmd "uwsm start hyprland-uwsm.desktop" + ''; + user = "greeter"; + }; + }; + }; + ################################# + # Fix TTY / boot noise issues + ################################# + systemd.services.greetd.serviceConfig = { + Type = "idle"; + StandardInput = "tty"; + StandardOutput = "tty"; + StandardError = "journal"; + TTYReset = true; + TTYVHangup = true; + TTYVTDisallocate = true; + }; +} diff --git a/Droidnix/generated/modules/traveldroid/system/networking.nix b/Droidnix/generated/modules/traveldroid/system/networking.nix new file mode 100644 index 000000000..39deab331 --- /dev/null +++ b/Droidnix/generated/modules/traveldroid/system/networking.nix @@ -0,0 +1,41 @@ +# --- This file has been auto-generated. For permanent changes alter the appropriate block in the README.org. --- +{ lib, config, pkgs, ... }: + +{ + ################################# + # Networking core + ################################# + networking = { + # Let DHCP be default unless overridden elsewhere + useDHCP = lib.mkDefault true; + + ################################# + # NetworkManager (primary stack) + ################################# + networkmanager = { + enable = true; + # Use iwd backend for WiFi + wifi.backend = "iwd"; + }; + + ################################# + # iwd (WiFi daemon) + ################################# + wireless.iwd = { + enable = true; + # Allow user control via NM / CLI + settings.General.EnableNetworkConfiguration = true; + }; + }; + + ################################# + # System packages + ################################# + environment.systemPackages = [ + pkgs.networkmanager + pkgs.linux-firmware + pkgs.networkmanagerapplet + pkgs.networkmanager_dmenu + # pkgs.iwgtk + ]; +} diff --git a/Droidnix/generated/modules/traveldroid/system/nix.nix b/Droidnix/generated/modules/traveldroid/system/nix.nix new file mode 100644 index 000000000..b33a5585b --- /dev/null +++ b/Droidnix/generated/modules/traveldroid/system/nix.nix @@ -0,0 +1,18 @@ +# --- This file has been auto-generated. For permanent changes alter the appropriate block in the README.org. --- +{ lib, config, ... }: +{ + nix.settings = { + experimental-features = [ "nix-command" "flakes" ]; + download-buffer-size = 536870912; # 512 MB + cores = 8; + max-jobs = "auto"; + }; + + nix.gc = { + automatic = true; + dates = "weekly"; + options = "--delete-older-than 30d"; + }; + + boot.loader.systemd-boot.configurationLimit = 3; +} diff --git a/Droidnix/generated/modules/traveldroid/system/printing.nix b/Droidnix/generated/modules/traveldroid/system/printing.nix new file mode 100644 index 000000000..2c198447a --- /dev/null +++ b/Droidnix/generated/modules/traveldroid/system/printing.nix @@ -0,0 +1,16 @@ +# --- This file has been auto-generated. For permanent changes alter the appropriate block in the README.org. --- +{ lib, config, pkgs, ... }: + +{ + ############################ + # Printing system + ############################ + services.printing.enable = true; # enable CUPS printing service + + ############################ + # System packages for GUI management + ############################ + environment.systemPackages = with pkgs; [ + system-config-printer # GUI to manage printers + ]; +} diff --git a/Droidnix/generated/modules/traveldroid/system/quickshell.nix b/Droidnix/generated/modules/traveldroid/system/quickshell.nix new file mode 100644 index 000000000..8edac971a --- /dev/null +++ b/Droidnix/generated/modules/traveldroid/system/quickshell.nix @@ -0,0 +1,44 @@ +# --- This file has been auto-generated. For permanent changes alter the appropriate block in the README.org. --- +{ pkgs, lib, config, flakeRoot, ... }: +let + username = config.defaultUser or "henrov"; + quickshellPath = flakeRoot + "/generated/.config/quickshell"; + allFiles = lib.filesystem.listFilesRecursive quickshellPath; + + toRelative = file: + let + base = toString flakeRoot + "/generated/"; + relative = lib.removePrefix base (toString file); + in + builtins.unsafeDiscardStringContext relative; + + toFileEntry = file: { + name = toRelative file; + value = { + source = file; + force = true; + }; + }; +in +{ + environment.systemPackages = with pkgs; [ + quickshell + qt6.qtdeclarative + qt6.qttools + qt6.qtsvg + qt6.qtimageformats + qt6.qtmultimedia + qt6.qt5compat + ]; + + qt = { + enable = true; + platformTheme = "qt5ct"; + }; + + home-manager.users = { + ${username} = { + home.file = builtins.listToAttrs (map toFileEntry allFiles); + }; + }; +} diff --git a/Droidnix/generated/modules/traveldroid/system/swaync.nix b/Droidnix/generated/modules/traveldroid/system/swaync.nix new file mode 100644 index 000000000..64f9ba18d --- /dev/null +++ b/Droidnix/generated/modules/traveldroid/system/swaync.nix @@ -0,0 +1,40 @@ +# --- This file has been auto-generated. For permanent changes alter the appropriate block in the README.org. --- +{ lib, config, pkgs, flakeRoot, ... }: +let + username = config.defaultUser or "henrov"; + assetPath = "${flakeRoot}/generated/.config/swaync"; +in +{ + environment.systemPackages = [ pkgs.swaynotificationcenter pkgs.libnotify ]; + + home-manager.users.${username} = { + # Do NOT enable services.swaync — it would claim the config files + # and conflict with our home.file entries below. + + home.file = { + ".config/swaync/config.json" = { + text = builtins.readFile "${assetPath}/config.json"; + force = true; + }; + ".config/swaync/style.css" = { + text = builtins.replaceStrings ["henrov"] [username] (builtins.readFile "${assetPath}/style.css"); + force = true; + }; + }; + }; + + # Autostart swaync as a systemd user service instead + systemd.user.services.swaync = { + description = "SwayNotificationCenter"; + after = [ "graphical-session.target" ]; + serviceConfig = { + ExecStart = "${pkgs.swaynotificationcenter}/bin/swaync"; + Restart = "always"; + Environment = [ + "WAYLAND_DISPLAY=${config.environment.sessionVariables.WAYLAND_DISPLAY or "wayland-1"}" + "XDG_CURRENT_DESKTOP=Hyprland" + ]; + }; + wantedBy = [ "default.target" ]; + }; +} diff --git a/Droidnix/generated/users/henrov.nix b/Droidnix/generated/users/henrov.nix new file mode 100644 index 000000000..a6957600a --- /dev/null +++ b/Droidnix/generated/users/henrov.nix @@ -0,0 +1,49 @@ +# --- This file has been auto-generated. For permanent changes alter the appropriate block in the README.org. --- +{ lib, config, pkgs, ... }: + +let + username = "henrov"; +in +{ + ################################# + # NixOS system user + ################################# + users.users.${username} = { + isNormalUser = true; + home = "/home/${username}"; + hashedPassword = "$6$S7iShgBxB.77CwmP$i0njK.2r3OL5UEvgZbmwZ0rnpZ4QyJcv8p9uCmJ4AiVPSMXkQkIwMLzyAOnJ0q8.tPLIp/7EquEIZeK8qbmgw/"; + extraGroups = [ "wheel" "networkmanager" "bluetooth" "input" ]; + ignoreShellProgramCheck = true; # <-- avoids the assertion + shell = pkgs.zsh; + }; + + ################################# + # Home Manager user definition + ################################# + home-manager.users = { + ${username} = { + home.username = username; + home.homeDirectory = "/home/${username}"; + home.stateVersion = "26.05"; + + programs.zsh.enable = true; + + home.packages = [ + # add packages here + ]; + + # Activation to ensure the directory is writable + home.activation.fixStylixPermissions = '' + mkdir -p $HOME/.config + chmod -R u+rwx $HOME/.config + ''; + + # Locale and timezone settings + home.sessionVariables = { + LANG = "nl_NL.UTF-8"; + LC_ALL = "nl_NL.UTF-8"; + TZ = "Europe/Amsterdam"; + }; + }; + }; +}