Regenerated

This commit is contained in:
2026-03-22 06:39:11 +00:00
parent fe973acc15
commit 60c5a13d01
58 changed files with 1080 additions and 1662 deletions
+150 -152
View File
@@ -59,6 +59,50 @@ The =generated/= directory contains all generated configurations, divided into t
The =.assets/= folder contains all static files, such as configs, scripts, and themes. These files are not generated and can be edited directly.
* Templates look like this :code:
** =generated/template.nix=
#+BEGIN_SRC nix :tangle generated/template.nix :noweb tangle :mkdirp yes :eval never-html
{ lib, config, pkgs, inputs, ... }:
let
# Default username fallback
username = config.defaultUser or "henrov";
# Asset folder for configs
assetPath = ../../../assets/<myModuleName>/conf;
# Main configuration file
mainConfig = "${assetPath}/<mainConfigFile>";
# Determine the package: prefer Nixpkgs, fallback to -git, fallback to flake input
myPkg =
pkgs.<myPackage> or
pkgs.<myPackage>-git or
inputs.<myPackage>.packages.${pkgs.system}.default;
in
{
# Install system-wide
environment.systemPackages = [ myPkg ];
# Home Manager user settings
_module.args.hmUsers = {
${username} = {
home.packages = [ myPkg ];
# Copy main config into user's home
home.file.".config/<myModuleName>/<mainConfigFile>".source = mainConfig;
# Optional module-specific settings
settings.general = {
# Example placeholder
"example.setting" = "value";
};
# Optional: you can add more files dynamically from assetPath if needed
};
};
}
#+END_SRC
* The Actual Code :code:
:PROPERTIES:
@@ -66,7 +110,6 @@ The =.assets/= folder contains all static files, such as configs, scripts, and t
:END:
This section contains the Org blocks for tangling Nix code into the generated folders.
** =flake.nix=
The Nix flake definition for Droidnix.
#+BEGIN_SRC nix :tangle flake.nix :noweb tangle :mkdirp yes :eval never-html
@@ -119,47 +162,123 @@ The Nix flake definition for Droidnix.
}
#+END_SRC
** -generated/template.nix
#+BEGIN_SRC nix :tangle generated/template.nix :noweb tangle :mkdirp yes :eval never-html
** =generated/hosts/traveldroid/traveldroid.nix=
#+BEGIN_SRC nix :tangle generated/hosts/traveldroid/traveldroid.nix :noweb tangle :mkdirp yes :eval never-html
{ lib, config, pkgs, inputs, ... }:
let
# Default username fallback
username = config.defaultUser or "henrov";
modulesPath = ./generated/modules;
# Asset folder for configs
assetPath = ../../../assets/<myModuleName>/conf;
# Import all modules recursively
importedModules = inputs.import-tree modulesPath;
# Main configuration file
mainConfig = "${assetPath}/<mainConfigFile>";
# Evaluate all modules
evaluatedModules =
map (m:
if builtins.isFunction m then m { inherit lib config pkgs; } else m
) importedModules.imports;
# Determine the package: prefer Nixpkgs, fallback to -git, fallback to flake input
myPkg =
pkgs.<myPackage> or
pkgs.<myPackage>-git or
inputs.<myPackage>.packages.${pkgs.system}.default;
in
# Attach names
modulesWithNames =
map (m: {
name = if m ? _file then lib.removeSuffix ".nix" (builtins.baseNameOf m._file) else "unknown";
value = m;
}) evaluatedModules;
# Filter enabled modules from config file (optional)
moduleSwitches = import ../../../assets/system/conf/modules.conf;
enabledModules =
builtins.filter (m: moduleSwitches.${m.name} or false) modulesWithNames;
# Collect Home Manager user attrsets
hmUsersList = map (m: m.value._module.args.hmUsers or {}) enabledModules;
in {
networking.hostName = "traveldroid";
system.stateVersion = "26.05";
imports = [
./boot.nix
./hardware-configuration.nix
];
# Merge Home Manager user configurations
home-manager.users = lib.mkMerge hmUsersList;
}
#+END_SRC
** =generated/hosts/traveldroid/hardware-configuration.nix=
1. Boot into NixOS Live ISO or your installed system.
2. Open a terminal.
3. Run: <code>sudo nixos-generate-config --root /mnt</code> (Omit --root /mnt if already running NixOS.)
#+BEGIN_SRC nix :tangle generated/hosts/traveldroid/hardware-configuration.nix :noweb tangle :mkdirp yes :eval never-html
{
# Install system-wide
environment.systemPackages = [ myPkg ];
hostname,
pkgs,
lib,
modulesPath,
user,
config,
...
}:
{
imports = [
# (modulesPath + "/installer/scan/not-detected.nix")
#../../hardware/hardware.nix
];
# Home Manager user settings
_module.args.hmUsers = {
${username} = {
home.packages = [ myPkg ];
boot.initrd.availableKernelModules = [
"xhci_pci"
"nvme"
"usb_storage"
"sd_mod"
"rtsx_usb_sdmmc"
];
boot.initrd.kernelModules = [ ];
boot.kernelModules = [ "kvm-intel" ];
boot.extraModulePackages = [ ];
# Copy main config into user's home
home.file.".config/<myModuleName>/<mainConfigFile>".source = mainConfig;
# Optional module-specific settings
settings.general = {
# Example placeholder
"example.setting" = "value";
};
# Optional: you can add more files dynamically from assetPath if needed
};
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;
}
#+END_SRC
** =generated/hosts/traveldroid/boot.nix=
#+BEGIN_SRC nix :tangle generated/hosts/traveldroid/boot.nix :noweb tangle :mkdirp yes :eval never-html
{ inputs, config, lib, pkgs, ... }:
{
boot.loader.grub = {
enable = true;
efiSupport = true;
device = "nodev";
useOSProber = true;
};
#boot.efi.canTouchEfiVariables = true;
boot.kernelParams = [
"systemd.mask=dev-tpm0.device"
"systemd.mask=dev-tpmrm0.device"
];
}
#+END_SRC
@@ -335,126 +454,10 @@ in
}
#+END_SRC
** =generated/hosts/traveldroid/boot.nix=
#+BEGIN_SRC nix :tangle generated/hosts/traveldroid/boot.nix :noweb tangle :mkdirp yes :eval never-html
{ inputs, config, lib, pkgs, ... }:
{
boot.loader.grub = {
enable = true;
efiSupport = true;
device = "nodev";
useOSProber = true;
};
#boot.efi.canTouchEfiVariables = true;
boot.kernelParams = [
"systemd.mask=dev-tpm0.device"
"systemd.mask=dev-tpmrm0.device"
];
}
#+END_SRC
* First the nix-files that flake really needs and that do not fit wel in the hierarchical structure
** =generated/hosts/traveldroid/traveldroid.nix=
#+BEGIN_SRC nix :tangle generated/hosts/traveldroid/traveldroid.nix :noweb tangle :mkdirp yes :eval never-html
{ lib, config, pkgs, inputs, ... }:
let
username = config.defaultUser or "henrov";
modulesPath = ./generated/modules;
# Import all modules recursively
importedModules = inputs.import-tree modulesPath;
# Evaluate all modules
evaluatedModules =
map (m:
if builtins.isFunction m then m { inherit lib config pkgs; } else m
) importedModules.imports;
# Attach names
modulesWithNames =
map (m: {
name = if m ? _file then lib.removeSuffix ".nix" (builtins.baseNameOf m._file) else "unknown";
value = m;
}) evaluatedModules;
# Filter enabled modules from config file (optional)
moduleSwitches = import ../../../assets/system/conf/modules.conf;
enabledModules =
builtins.filter (m: moduleSwitches.${m.name} or false) modulesWithNames;
# Collect Home Manager user attrsets
hmUsersList = map (m: m.value._module.args.hmUsers or {}) enabledModules;
in {
networking.hostName = "traveldroid";
system.stateVersion = "26.05";
imports = [
./boot.nix
./hardware-configuration.nix
];
# Merge Home Manager user configurations
home-manager.users = lib.mkMerge hmUsersList;
}
#+END_SRC
** =generated/hosts/traveldroid/hardware-configuration.nix=
1. Boot into NixOS Live ISO or your installed system.
2. Open a terminal.
3. Run: <code>sudo nixos-generate-config --root /mnt</code> (Omit --root /mnt if already running NixOS.)
#+BEGIN_SRC nix :tangle generated/hosts/traveldroid/hardware-configuration.nix :noweb tangle :mkdirp yes :eval never-html
{
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;
}
#+END_SRC
** =generated/parked/system/dbus.nix=
This sets the dbus implementation
@@ -566,9 +569,6 @@ let
src = "${assetPath}/${name}";
});
# Top-level toggle for this module
enableProgram = config.enableStylix or false;
# Read the main stylix.conf
stylixConfFile = "${assetPath}/stylix.conf";
stylixConf = if builtins.pathExists stylixConfFile
@@ -581,8 +581,6 @@ let
in
{
# --- Top-level toggle ---
options.enableStylix = lib.mkEnableOption "Enable Stylix system theming";
# --- Only apply configuration if enabled ---
config = lib.mkIf enableProgram {
@@ -0,0 +1,128 @@
; thunar GtkAccelMap rc-file -*- scheme -*-
; this file is an automated accelerator map dump
;
; (gtk_accel_path "<Actions>/ThunarBookmarks/8b0840406a9db6cc9e024618b73ff74d" "")
; (gtk_accel_path "<Actions>/ThunarStandardView/sort-by-type" "")
; (gtk_accel_path "<Actions>/ThunarStatusBar/toggle-last-modified" "")
; (gtk_accel_path "<Actions>/Thunarwindow/menu" "")
; (gtk_accel_path "<Actions>/ThunarActionManager/cut" "<Primary>x")
; (gtk_accel_path "<Actions>/ThunarStandardView/sort-by-size" "")
; (gtk_accel_path "<Actions>/ThunarWindow/file-menu" "")
; (gtk_accel_path "<Actions>/ThunarWindow/close-tab" "<Primary>w")
; (gtk_accel_path "<Actions>/ThunarWindow/switch-previous-tab-alt" "<Primary><Shift>ISO_Left_Tab")
; (gtk_accel_path "<Actions>/ThunarStatusBar/toggle-size" "")
; (gtk_accel_path "<Actions>/ThunarWindow/new-window" "<Primary>n")
; (gtk_accel_path "<Actions>/ThunarWindow/clear-directory-specific-settings" "")
; (gtk_accel_path "<Actions>/ThunarWindow/close-window" "<Primary>q")
; (gtk_accel_path "<Actions>/ThunarWindow/open-parent" "<Alt>Up")
; (gtk_accel_path "<Actions>/ThunarWindow/view-side-pane-menu" "")
; (gtk_accel_path "<Actions>/ThunarStatusBar/toggle-size-in-bytes" "")
; (gtk_accel_path "<Actions>/ThunarWindow/switch-previous-tab" "<Primary>Page_Up")
; (gtk_accel_path "<Actions>/ThunarActionManager/open" "<Primary>o")
; (gtk_accel_path "<Actions>/ThunarStandardView/sort-ascending" "")
; (gtk_accel_path "<Actions>/ThunarWindow/toggle-split-view" "F3")
; (gtk_accel_path "<Actions>/ThunarActionManager/copy-2" "<Primary>Insert")
; (gtk_accel_path "<Actions>/ThunarActionManager/trash-delete" "Delete")
; (gtk_accel_path "<Actions>/ThunarWindow/open-recent" "")
; (gtk_accel_path "<Actions>/ThunarWindow/view-configure-toolbar" "")
; (gtk_accel_path "<Actions>/ThunarStandardView/forward" "<Alt>Right")
; (gtk_accel_path "<Actions>/ThunarActionManager/restore" "")
; (gtk_accel_path "<Actions>/ThunarWindow/open-location-alt" "<Alt>d")
; (gtk_accel_path "<Actions>/ThunarWindow/zoom-out-alt" "<Primary>KP_Subtract")
; (gtk_accel_path "<Actions>/ThunarStandardView/select-by-pattern" "<Primary>s")
; (gtk_accel_path "<Actions>/ThunarWindow/open-file-menu" "F10")
; (gtk_accel_path "<Actions>/ThunarWindow/contents" "F1")
; (gtk_accel_path "<Actions>/ThunarWindow/show-highlight" "")
; (gtk_accel_path "<Actions>/ThunarStandardView/sort-descending" "")
; (gtk_accel_path "<Actions>/ThunarStandardView/sort-by-name" "")
; (gtk_accel_path "<Actions>/ThunarBookmarks/b642744ba505349eb43f3232902f4a96" "")
; (gtk_accel_path "<Actions>/ThunarStandardView/select-all-files" "<Primary>a")
; (gtk_accel_path "<Actions>/ThunarActionManager/execute" "")
; (gtk_accel_path "<Actions>/ThunarStandardView/properties" "<Alt>Return")
; (gtk_accel_path "<Actions>/ThunarActionManager/cut-2" "")
; (gtk_accel_path "<Actions>/ThunarStandardView/sort-by-dtime" "")
; (gtk_accel_path "<Actions>/ThunarWindow/switch-next-tab" "<Primary>Page_Down")
; (gtk_accel_path "<Actions>/ThunarWindow/open-templates" "")
; (gtk_accel_path "<Actions>/ThunarActionManager/paste-2" "<Shift>Insert")
; (gtk_accel_path "<Actions>/ThunarStatusBar/toggle-filetype" "")
; (gtk_accel_path "<Actions>/ThunarWindow/close-all-windows" "<Primary><Shift>w")
; (gtk_accel_path "<Actions>/ThunarStandardView/create-document" "")
; (gtk_accel_path "<Actions>/ThunarWindow/detach-tab" "")
; (gtk_accel_path "<Actions>/ThunarWindow/cancel-search" "Escape")
; (gtk_accel_path "<Actions>/ThunarWindow/zoom-in-alt2" "<Primary>equal")
; (gtk_accel_path "<Actions>/ThunarStatusBar/toggle-hidden-count" "")
; (gtk_accel_path "<Actions>/ThunarShortcutsPane/sendto-shortcuts" "<Primary>d")
; (gtk_accel_path "<Actions>/ThunarActionManager/undo" "<Primary>z")
; (gtk_accel_path "<Actions>/ThunarBookmarks/f08c8da7eedf52bf1705513340708bed" "")
; (gtk_accel_path "<Actions>/ThunarStandardView/toggle-sort-order" "")
; (gtk_accel_path "<Actions>/ThunarWindow/view-location-selector-entry" "")
; (gtk_accel_path "<Actions>/ThunarActionManager/paste" "<Primary>v")
; (gtk_accel_path "<Actions>/ThunarWindow/zoom-in-alt1" "<Primary>KP_Add")
; (gtk_accel_path "<Actions>/ThunarWindow/view-menubar" "<Primary>m")
; (gtk_accel_path "<Actions>/ThunarStandardView/back" "<Alt>Left")
; (gtk_accel_path "<Actions>/ThunarWindow/open-desktop" "")
; (gtk_accel_path "<Actions>/ThunarWindow/view-as-detailed-list" "<Primary>2")
; (gtk_accel_path "<Actions>/ThunarActionManager/restore-show" "")
; (gtk_accel_path "<Actions>/ThunarWindow/sendto-menu" "")
; (gtk_accel_path "<Actions>/ThunarStatusBar/toggle-display-name" "")
; (gtk_accel_path "<Actions>/ThunarWindow/go-menu" "")
; (gtk_accel_path "<Actions>/ThunarWindow/zoom-out" "<Primary>minus")
; (gtk_accel_path "<Actions>/ThunarWindow/remove-from-recent" "")
; (gtk_accel_path "<Actions>/ThunarActionManager/open-with-other" "")
; (gtk_accel_path "<Actions>/ThunarStandardView/invert-selection" "<Primary><Shift>i")
; (gtk_accel_path "<Actions>/ThunarWindow/view-side-pane-shortcuts" "<Primary>b")
; (gtk_accel_path "<Actions>/ThunarWindow/reload-alt-2" "Reload")
; (gtk_accel_path "<Actions>/ThunarWindow/view-location-selector-menu" "")
; (gtk_accel_path "<Actions>/ThunarStandardView/sort-by-mtime" "")
; (gtk_accel_path "<Actions>/ThunarWindow/edit-menu" "")
; (gtk_accel_path "<Actions>/ThunarActionManager/copy" "<Primary>c")
; (gtk_accel_path "<Actions>/ThunarWindow/bookmarks-menu" "")
; (gtk_accel_path "<Actions>/ThunarStandardView/forward-alt" "Forward")
; (gtk_accel_path "<Actions>/ThunarActionManager/move-to-trash" "")
; (gtk_accel_path "<Actions>/ThunarWindow/reload-alt-1" "F5")
; (gtk_accel_path "<Actions>/ThunarActionManager/delete-3" "<Shift>KP_Delete")
; (gtk_accel_path "<Actions>/ThunarWindow/reload" "<Primary>r")
; (gtk_accel_path "<Actions>/ThunarStandardView/arrange-items-menu" "")
; (gtk_accel_path "<Actions>/ThunarStandardView/unselect-all-files" "Escape")
; (gtk_accel_path "<Actions>/ThunarWindow/open-computer" "")
; (gtk_accel_path "<Actions>/ThunarWindow/toggle-image-preview" "")
; (gtk_accel_path "<Actions>/ThunarWindow/toggle-side-pane" "F9")
; (gtk_accel_path "<Actions>/ThunarWindow/view-as-icons" "<Primary>1")
; (gtk_accel_path "<Actions>/ThunarActionManager/delete-2" "<Shift>Delete")
; (gtk_accel_path "<Actions>/ThunarWindow/zoom-in" "<Primary>plus")
; (gtk_accel_path "<Actions>/ThunarStandardView/rename" "F2")
; (gtk_accel_path "<Actions>/ThunarWindow/open-location" "<Primary>l")
; (gtk_accel_path "<Actions>/ThunarWindow/view-as-compact-list" "<Primary>3")
; (gtk_accel_path "<Actions>/ThunarWindow/view-menu" "")
; (gtk_accel_path "<Actions>/ThunarWindow/search" "<Primary>f")
; (gtk_accel_path "<Actions>/ThunarWindow/new-tab" "<Primary>t")
; (gtk_accel_path "<Actions>/ThunarWindow/zoom-reset" "<Primary>0")
; (gtk_accel_path "<Actions>/ThunarWindow/contents/help-menu" "")
; (gtk_accel_path "<Actions>/ThunarActionManager/open-in-new-tab" "<Primary><Shift>p")
; (gtk_accel_path "<Actions>/ThunarWindow/view-location-selector-buttons" "")
; (gtk_accel_path "<Actions>/ThunarStandardView/back-alt2" "Back")
; (gtk_accel_path "<Actions>/ThunarActionManager/redo" "<Primary><Shift>z")
; (gtk_accel_path "<Actions>/ThunarWindow/open-trash" "")
; (gtk_accel_path "<Actions>/ThunarActionManager/open-in-new-window" "<Primary><Shift>o")
; (gtk_accel_path "<Actions>/ThunarWindow/view-statusbar" "")
; (gtk_accel_path "<Actions>/ThunarActionManager/open-location" "")
; (gtk_accel_path "<Actions>/ThunarStandardView/duplicate" "")
; (gtk_accel_path "<Actions>/ThunarActionManager/trash-delete-2" "KP_Delete")
; (gtk_accel_path "<Actions>/ThunarStandardView/back-alt1" "BackSpace")
; (gtk_accel_path "<Actions>/ThunarStandardView/create-folder" "<Primary><Shift>n")
; (gtk_accel_path "<Actions>/ThunarWindow/open-home" "<Alt>Home")
; (gtk_accel_path "<Actions>/ThunarWindow/switch-focused-split-view-pane" "")
; (gtk_accel_path "<Actions>/ThunarWindow/show-hidden" "<Primary>h")
; (gtk_accel_path "<Actions>/ThunarStandardView/set-default-app" "")
; (gtk_accel_path "<Actions>/ThunarWindow/empty-trash" "")
; (gtk_accel_path "<Actions>/ThunarWindow/preferences" "")
; (gtk_accel_path "<Actions>/ThunarActionManager/delete" "")
; (gtk_accel_path "<Actions>/ThunarWindow/open-network" "")
; (gtk_accel_path "<Actions>/ThunarWindow/view-side-pane-tree" "<Primary>e")
; (gtk_accel_path "<Actions>/ThunarWindow/open-file-system" "")
; (gtk_accel_path "<Actions>/ThunarWindow/search-alt" "Search")
; (gtk_accel_path "<Actions>/ThunarWindow/switch-next-tab-alt" "<Primary>Tab")
; (gtk_accel_path "<Actions>/ThunarActionManager/sendto-desktop" "")
; (gtk_accel_path "<Actions>/ThunarStandardView/make-link" "")
; (gtk_accel_path "<Actions>/ThunarWindow/zoom-reset-alt" "<Primary>KP_0")
; (gtk_accel_path "<Actions>/ThunarWindow/about" "")
@@ -0,0 +1,15 @@
<?xml version="1.0" encoding="UTF-8"?>
<actions>
<action>
<icon>utilities-terminal</icon>
<name>Open Terminal Here</name>
<submenu></submenu>
<unique-id>1773690548549124-1</unique-id>
<command>exo-open --working-directory %f --launch TerminalEmulator</command>
<description>Example for a custom action</description>
<range></range>
<patterns>*</patterns>
<startup-notify/>
<directories/>
</action>
</actions>
+1
View File
@@ -0,0 +1 @@
/nix/store/aavn5w35bw494vfycdw46d5pg14nf5g4-home-manager-files/.config/hypr/animations.conf
+1
View File
@@ -0,0 +1 @@
/nix/store/aavn5w35bw494vfycdw46d5pg14nf5g4-home-manager-files/.config/hypr/behaviour.conf
+1
View File
@@ -0,0 +1 @@
/nix/store/aavn5w35bw494vfycdw46d5pg14nf5g4-home-manager-files/.config/hypr/bindings.conf
+1
View File
@@ -0,0 +1 @@
/nix/store/aavn5w35bw494vfycdw46d5pg14nf5g4-home-manager-files/.config/hypr/exec-once.conf
+1
View File
@@ -0,0 +1 @@
/nix/store/aavn5w35bw494vfycdw46d5pg14nf5g4-home-manager-files/.config/hypr/hypridle.conf
+1
View File
@@ -0,0 +1 @@
/nix/store/aavn5w35bw494vfycdw46d5pg14nf5g4-home-manager-files/.config/hypr/hyprland.conf
+1
View File
@@ -0,0 +1 @@
/nix/store/aavn5w35bw494vfycdw46d5pg14nf5g4-home-manager-files/.config/hypr/hyprlock.conf
+1
View File
@@ -0,0 +1 @@
/nix/store/aavn5w35bw494vfycdw46d5pg14nf5g4-home-manager-files/.config/hypr/layer-rules.conf
+1
View File
@@ -0,0 +1 @@
/nix/store/aavn5w35bw494vfycdw46d5pg14nf5g4-home-manager-files/.config/hypr/layout.conf
+1
View File
@@ -0,0 +1 @@
/nix/store/aavn5w35bw494vfycdw46d5pg14nf5g4-home-manager-files/.config/hypr/monitor-rules.conf
+1
View File
@@ -0,0 +1 @@
/nix/store/aavn5w35bw494vfycdw46d5pg14nf5g4-home-manager-files/.config/hypr/theming.conf
+1
View File
@@ -0,0 +1 @@
/nix/store/aavn5w35bw494vfycdw46d5pg14nf5g4-home-manager-files/.config/hypr/window-rules.conf
@@ -0,0 +1 @@
/nix/store/aavn5w35bw494vfycdw46d5pg14nf5g4-home-manager-files/.config/hypr/workspace-rules.conf
@@ -0,0 +1 @@
/nix/store/aavn5w35bw494vfycdw46d5pg14nf5g4-home-manager-files/.config/kitty/Catppuccin-Mocha.conf
+1
View File
@@ -0,0 +1 @@
/nix/store/aavn5w35bw494vfycdw46d5pg14nf5g4-home-manager-files/.config/kitty/kitty.conf
+279
View File
@@ -0,0 +1,279 @@
"$schema" = 'https://starship.rs/config-schema.json'
format = """
[](red)\
$os\
$username\
[](bg:peach fg:red)\
$directory\
[](bg:yellow fg:peach)\
$git_branch\
$git_status\
[](fg:yellow bg:green)\
$c\
$rust\
$golang\
$nodejs\
$php\
$java\
$kotlin\
$haskell\
$python\
[](fg:green bg:sapphire)\
$conda\
[](fg:sapphire bg:lavender)\
$time\
[ ](fg:lavender)\
$cmd_duration\
$line_break\
$character"""
palette = 'catppuccin_mocha'
[os]
disabled = false
style = "bg:red fg:crust"
[os.symbols]
Windows = ""
Ubuntu = "󰕈"
SUSE = ""
Raspbian = "󰐿"
Mint = "󰣭"
Macos = "󰀵"
Manjaro = ""
Linux = "󰌽"
Gentoo = "󰣨"
Fedora = "󰣛"
Alpine = ""
Amazon = ""
Android = ""
AOSC = ""
Arch = "󰣇"
Artix = "󰣇"
CentOS = ""
Debian = "󰣚"
Redhat = "󱄛"
RedHatEnterprise = "󱄛"
[username]
show_always = true
style_user = "bg:red fg:crust"
style_root = "bg:red fg:crust"
format = '[ $user]($style)'
[directory]
style = "bg:peach fg:crust"
format = "[ $path ]($style)"
truncation_length = 3
truncation_symbol = "…/"
[directory.substitutions]
"Documents" = "󰈙 "
"Downloads" = " "
"Music" = "󰝚 "
"Pictures" = " "
"Developer" = "󰲋 "
[git_branch]
symbol = ""
style = "bg:yellow"
format = '[[ $symbol $branch ](fg:crust bg:yellow)]($style)'
[git_status]
style = "bg:yellow"
format = '[[($all_status$ahead_behind )](fg:crust bg:yellow)]($style)'
[nodejs]
symbol = ""
style = "bg:green"
format = '[[ $symbol( $version) ](fg:crust bg:green)]($style)'
[c]
symbol = " "
style = "bg:green"
format = '[[ $symbol( $version) ](fg:crust bg:green)]($style)'
[rust]
symbol = ""
style = "bg:green"
format = '[[ $symbol( $version) ](fg:crust bg:green)]($style)'
[golang]
symbol = ""
style = "bg:green"
format = '[[ $symbol( $version) ](fg:crust bg:green)]($style)'
[php]
symbol = ""
style = "bg:green"
format = '[[ $symbol( $version) ](fg:crust bg:green)]($style)'
[java]
symbol = " "
style = "bg:green"
format = '[[ $symbol( $version) ](fg:crust bg:green)]($style)'
[kotlin]
symbol = ""
style = "bg:green"
format = '[[ $symbol( $version) ](fg:crust bg:green)]($style)'
[haskell]
symbol = ""
style = "bg:green"
format = '[[ $symbol( $version) ](fg:crust bg:green)]($style)'
[python]
symbol = ""
style = "bg:green"
format = '[[ $symbol( $version)(\(#$virtualenv\)) ](fg:crust bg:green)]($style)'
[docker_context]
symbol = ""
style = "bg:sapphire"
format = '[[ $symbol( $context) ](fg:crust bg:sapphire)]($style)'
[conda]
symbol = "  "
style = "fg:crust bg:sapphire"
format = '[$symbol$environment ]($style)'
ignore_base = false
[time]
disabled = false
time_format = "%R"
style = "bg:lavender"
format = '[[  $time ](fg:crust bg:lavender)]($style)'
[line_break]
disabled = false
[character]
disabled = false
success_symbol = '[](bold fg:green)'
error_symbol = '[](bold fg:red)'
vimcmd_symbol = '[](bold fg:green)'
vimcmd_replace_one_symbol = '[](bold fg:lavender)'
vimcmd_replace_symbol = '[](bold fg:lavender)'
vimcmd_visual_symbol = '[](bold fg:yellow)'
[cmd_duration]
show_milliseconds = true
format = " in $duration "
style = "bg:lavender"
disabled = false
show_notifications = true
min_time_to_notify = 45000
[palettes.catppuccin_mocha]
rosewater = "#f5e0dc"
flamingo = "#f2cdcd"
pink = "#f5c2e7"
mauve = "#cba6f7"
red = "#f38ba8"
maroon = "#eba0ac"
peach = "#fab387"
yellow = "#f9e2af"
green = "#a6e3a1"
teal = "#94e2d5"
sky = "#89dceb"
sapphire = "#74c7ec"
blue = "#89b4fa"
lavender = "#b4befe"
text = "#cdd6f4"
subtext1 = "#bac2de"
subtext0 = "#a6adc8"
overlay2 = "#9399b2"
overlay1 = "#7f849c"
overlay0 = "#6c7086"
surface2 = "#585b70"
surface1 = "#45475a"
surface0 = "#313244"
base = "#1e1e2e"
mantle = "#181825"
crust = "#11111b"
[palettes.catppuccin_frappe]
rosewater = "#f2d5cf"
flamingo = "#eebebe"
pink = "#f4b8e4"
mauve = "#ca9ee6"
red = "#e78284"
maroon = "#ea999c"
peach = "#ef9f76"
yellow = "#e5c890"
green = "#a6d189"
teal = "#81c8be"
sky = "#99d1db"
sapphire = "#85c1dc"
blue = "#8caaee"
lavender = "#babbf1"
text = "#c6d0f5"
subtext1 = "#b5bfe2"
subtext0 = "#a5adce"
overlay2 = "#949cbb"
overlay1 = "#838ba7"
overlay0 = "#737994"
surface2 = "#626880"
surface1 = "#51576d"
surface0 = "#414559"
base = "#303446"
mantle = "#292c3c"
crust = "#232634"
[palettes.catppuccin_latte]
rosewater = "#dc8a78"
flamingo = "#dd7878"
pink = "#ea76cb"
mauve = "#8839ef"
red = "#d20f39"
maroon = "#e64553"
peach = "#fe640b"
yellow = "#df8e1d"
green = "#40a02b"
teal = "#179299"
sky = "#04a5e5"
sapphire = "#209fb5"
blue = "#1e66f5"
lavender = "#7287fd"
text = "#4c4f69"
subtext1 = "#5c5f77"
subtext0 = "#6c6f85"
overlay2 = "#7c7f93"
overlay1 = "#8c8fa1"
overlay0 = "#9ca0b0"
surface2 = "#acb0be"
surface1 = "#bcc0cc"
surface0 = "#ccd0da"
base = "#eff1f5"
mantle = "#e6e9ef"
crust = "#dce0e8"
[palettes.catppuccin_macchiato]
rosewater = "#f4dbd6"
flamingo = "#f0c6c6"
pink = "#f5bde6"
mauve = "#c6a0f6"
red = "#ed8796"
maroon = "#ee99a0"
peach = "#f5a97f"
yellow = "#eed49f"
green = "#a6da95"
teal = "#8bd5ca"
sky = "#91d7e3"
sapphire = "#7dc4e4"
blue = "#8aadf4"
lavender = "#b7bdf8"
text = "#cad3f5"
subtext1 = "#b8c0e0"
subtext0 = "#a5adcb"
overlay2 = "#939ab7"
overlay1 = "#8087a2"
overlay0 = "#6e738d"
surface2 = "#5b6078"
surface1 = "#494d64"
surface0 = "#363a4f"
base = "#24273a"
mantle = "#1e2030"
crust = "#181926"
+1
View File
@@ -0,0 +1 @@
/nix/store/aavn5w35bw494vfycdw46d5pg14nf5g4-home-manager-files/.config/stylix/palette.html
+1
View File
@@ -0,0 +1 @@
/nix/store/aavn5w35bw494vfycdw46d5pg14nf5g4-home-manager-files/.config/stylix/palette.json
@@ -0,0 +1,116 @@
# Walker UI layout/theme config (Catppuccin Mocha tuned)
theme = "frosted"
debug = true
[ui]
css = "home/henrov/themes/frosted/walker.css"
[ui.anchors]
top = true
left = true
right = true
bottom = false # don't stretch to full height; keeps it as a panel
[ui.window]
h_align = "fill"
v_align = "fill"
[ui.window.box]
h_align = "center"
# Single source of truth for the main content width
width = 520
[ui.window.box.margins]
top = 140
[ui.window.box.bar]
orientation = "horizontal"
position = "end"
[ui.window.box.bar.entry]
h_align = "fill"
h_expand = true
[ui.window.box.bar.entry.icon]
h_align = "center"
h_expand = false
pixel_size = 22
theme = "" # leave empty to inherit your system icon theme (Papirus etc.)
# --- AI scroll area (match main width, reduce hardcoding) ---
[ui.window.box.ai_scroll]
name = "aiScroll"
h_align = "fill"
v_align = "fill"
min_width = 520
width = 520
max_height = 260
height = 260
[ui.window.box.ai_scroll.margins]
top = 10
[ui.window.box.ai_scroll.list]
name = "aiList"
orientation = "vertical"
width = 520
spacing = 10
[ui.window.box.ai_scroll.list.item]
name = "aiItem"
h_align = "fill"
v_align = "fill"
x_align = 0
y_align = 0
wrap = true
# --- Main results list ---
[ui.window.box.scroll.list]
# Catppuccin Mocha accent (pick one):
# - teal: #94e2d5
# - blue: #89b4fa
marker_color = "#89b4fa"
max_height = 360
min_width = 520
max_width = 520
width = 520
[ui.window.box.scroll.list.margins]
top = 10
[ui.window.box.scroll.list.item.activation_label]
h_align = "fill"
v_align = "fill"
width = 22
x_align = 0.5
y_align = 0.5
[ui.window.box.scroll.list.item.icon]
pixel_size = 24
theme = "" # inherit system icon theme
# --- Search row (icons + input) ---
[ui.window.box.search.prompt]
name = "prompt"
icon = "edit-find"
theme = ""
pixel_size = 18
h_align = "center"
v_align = "center"
[ui.window.box.search.clear]
name = "clear"
icon = "edit-clear"
theme = ""
pixel_size = 18
h_align = "center"
v_align = "center"
[ui.window.box.search.input]
h_align = "fill"
h_expand = true
icons = true
[ui.window.box.search.spinner]
hide = true
@@ -0,0 +1,162 @@
/* AUTO GENERATED. DO NOT EDIT. CHANGES WILL BE OVERWRITTEN. */
@define-color foreground rgba(255, 255, 255, 0.8);
@define-color background hsla(240, 12.7%, 13.9%, 0.98);
@define-color color1 hsl(172, 100%, 25.3%);
/* AUTO GENERATED. DO NOT EDIT. CHANGES WILL BE OVERWRITTEN. */
#window,
#box,
#aiScroll,
#aiList,
#search,
#password,
#input,
#prompt,
#clear,
#typeahead,
#list,
child,
scrollbar,
slider,
#item,
#text,
#label,
#bar,
#sub,
#activationlabel {
all: unset;
}
#cfgerr {
background: rgba(255, 0, 0, 0.4);
margin-top: 20px;
padding: 8px;
font-size: 1.2em;
}
#window {
color: @foreground;
}
#box {
border-radius: 2px;
background: @background;
padding: 32px;
border: 1px solid lighter(@background);
box-shadow:
0 19px 38px rgba(0, 0, 0, 0.3),
0 15px 12px rgba(0, 0, 0, 0.22);
}
#search {
box-shadow:
0 1px 3px rgba(0, 0, 0, 0.1),
0 1px 2px rgba(0, 0, 0, 0.22);
background: lighter(@background);
padding: 8px;
}
#prompt {
margin-left: 4px;
margin-right: 12px;
color: @foreground;
opacity: 0.2;
}
#clear {
color: @foreground;
opacity: 0.8;
}
#password,
#input,
#typeahead {
border-radius: 2px;
}
#input {
background: none;
}
#password {
}
#spinner {
padding: 8px;
}
#typeahead {
color: @foreground;
opacity: 0.8;
}
#input placeholder {
opacity: 0.5;
}
#list {
}
child {
padding: 8px;
border-radius: 2px;
}
child:selected,
child:hover {
background: alpha(@color1, 0.4);
}
#item {
}
#icon {
margin-right: 8px;
}
#text {
}
#label {
font-weight: 500;
}
#sub {
opacity: 0.5;
font-size: 0.8em;
}
#activationlabel {
}
#bar {
}
.barentry {
}
.activation #activationlabel {
}
.activation #text,
.activation #icon,
.activation #search {
opacity: 0.5;
}
.aiItem {
padding: 10px;
border-radius: 2px;
color: @foreground;
background: @background;
}
.aiItem.user {
padding-left: 0;
padding-right: 0;
}
.aiItem.assistant {
background: lighter(@background);
}
@@ -0,0 +1,185 @@
/* Catppuccin Mocha Walker Theme — Frosted Glass */
@import "default.css";
/* --- Palette --- */
/* glass layers: low alpha + slightly cool tint */
@define-color base rgba(220, 230, 255, 0.15);
@define-color mantle rgba(24, 24, 37, 0.55); /* was opaque */
@define-color crust rgba(17, 17, 27, 0.80);
@define-color text #cdd6f4;
@define-color subtext0 #a6adc8;
@define-color subtext1 #bac2de;
/* use these as “edge lights” more than solid fills */
@define-color surface0 rgba(49, 50, 68, 0.35);
@define-color surface1 rgba(69, 71, 90, 0.40);
@define-color surface2 rgba(88, 91, 112, 0.45);
@define-color overlay0 rgba(108, 112, 134, 0.70);
@define-color overlay1 rgba(127, 132, 156, 0.85);
@define-color overlay2 rgba(147, 153, 178, 0.90);
@define-color blue #89b4fa;
@define-color lavender #b4befe;
@define-color mauve #cba6f7;
@define-color green #a6e3a1;
@define-color red #f38ba8;
@define-color peach #fab387;
@define-color yellow #f9e2af;
/* --- Walker expected tokens --- */
@define-color foreground @text;
/* very transparent base to let compositor blur show through */
@define-color background: rgba(26, 26, 40, 0.75);
/* selection tint */
@define-color color1 @blue;
/* --- Reset --- */
#window,
#box,
#aiScroll,
#aiList,
#search,
#password,
#input,
#prompt,
#clear,
#typeahead,
#list,
child,
scrollbar,
slider,
#item,
#text,
#label,
#bar,
#sub,
#activationlabel {
all: unset;
}
/* --- Error --- */
#cfgerr {
background: alpha(@red, 0.35);
margin-top: 20px;
padding: 10px;
border-radius: 10px;
border: 1px solid alpha(@red, 0.3);
font-size: 1.1em;
}
/* --- Window --- */
#window {
color: @foreground;
}
/* --- Main container (frosted glass card) --- */
#box {
border-radius: 18px;
background: @background;
border: 1px solid alpha(@text, 0.08);
box-shadow:
inset 0 1px 0 alpha(@text, 0.04),
0 8px 18px alpha(@crust, 0.4);
padding: 28px;
}
/* --- Search “pill” --- */
#search {
background: rgba(49, 50, 68, 0.22);
padding: 10px 12px;
border-radius: 14px;
border: 1px solid alpha(@text, 0.1);
box-shadow:
inset 0 1px 0 alpha(@text, 0.06),
0 6px 16px alpha(@crust, 0.35);
}
#prompt {
margin-left: 6px;
margin-right: 12px;
color: alpha(@overlay1, 0.9);
}
#clear {
color: alpha(@overlay2, 0.9);
}
/* --- Inputs --- */
#password,
#input,
#typeahead {
border-radius: 10px;
}
#input {
background: none;
}
#typeahead {
color: alpha(@subtext1, 0.85);
}
#input placeholder {
color: alpha(@overlay0, 0.75);
}
/* --- List items --- */
child {
padding: 10px 12px;
border-radius: 14px;
background: @background;
border: 1px solid alpha(@text, 0.05);
}
/* Hover / Selection: brighter glass + tinted glow */
child:selected,
child:hover {
background: rgba(22, 22, 34, 0.8);
border: 1px solid alpha(@text, 0.08);
box-shadow:
inset 0 1px 0 alpha(@text, 0.05),
0 6px 14px alpha(@crust, 0.35);
}
/* --- Text --- */
#label {
font-weight: 600;
}
#sub {
color: alpha(@subtext0, 0.85);
font-size: 0.85em;
}
/* --- Activation --- */
.activation #text,
.activation #icon,
.activation #search {
opacity: 0.55;
}
/* --- AI Panel --- */
.aiItem {
padding: 12px;
border-radius: 14px;
color: @foreground;
/* glass tile */
background: rgba(24, 24, 37, 0.3);
border: 1px solid rgba(255, 255, 255, 0.05);
box-shadow: inset 0 1px 0 alpha(@text, 0.05);
}
.aiItem.assistant {
background: rgba(49, 50, 68, 0.22);
}
+1
View File
@@ -0,0 +1 @@
/nix/store/5dnlin4x7n2y5k4zi4wavyy519s2yq6s-waybar-config
+1
View File
@@ -0,0 +1 @@
/nix/store/32wq1s4gch0r44g105azxbbnklcm12ii-waybar-style
@@ -0,0 +1,26 @@
// 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)
{
"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",
},
}
@@ -1,16 +0,0 @@
{ inputs, config, lib, pkgs, ... }:
{
boot.loader.grub = {
enable = true;
efiSupport = true;
device = "nodev";
useOSProber = true;
};
#boot.efi.canTouchEfiVariables = true;
boot.kernelParams = [
"systemd.mask=dev-tpm0.device"
"systemd.mask=dev-tpmrm0.device"
];
}
@@ -1,47 +0,0 @@
{
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;
}
@@ -1,42 +0,0 @@
{ lib, config, pkgs, inputs, ... }:
let
username = config.defaultUser or "henrov";
modulesPath = ./generated/modules;
# Import all modules recursively
importedModules = inputs.import-tree modulesPath;
# Evaluate all modules
evaluatedModules =
map (m:
if builtins.isFunction m then m { inherit lib config pkgs; } else m
) importedModules.imports;
# Attach names
modulesWithNames =
map (m: {
name = if m ? _file then lib.removeSuffix ".nix" (builtins.baseNameOf m._file) else "unknown";
value = m;
}) evaluatedModules;
# Filter enabled modules from config file (optional)
moduleSwitches = import ../../../assets/system/conf/modules.conf;
enabledModules =
builtins.filter (m: moduleSwitches.${m.name} or false) modulesWithNames;
# Collect Home Manager user attrsets
hmUsersList = map (m: m.value._module.args.hmUsers or {}) enabledModules;
in {
networking.hostName = "traveldroid";
system.stateVersion = "26.05";
imports = [
./boot.nix
./hardware-configuration.nix
];
# Merge Home Manager user configurations
home-manager.users = lib.mkMerge hmUsersList;
}
@@ -1,46 +0,0 @@
{ lib, config, pkgs, inputs, ... }:
let
username = config.defaultUser or "henrov";
# Paths
assetPath = ../../../assets/hyprland/conf/hypr;
mainConfig = "${assetPath}/hyprland.conf";
# Determine Hyprland package with fallbacks
hyprlandPkg =
pkgs.hyprland or
pkgs.hyprland-git or
inputs.hyprland.packages.${pkgs.system}.default;
# Map all files in the asset folder
hyprFiles =
builtins.listToAttrs (
map (f: {
name = ".config/hypr/${f}";
value = { source = "${assetPath}/${f}"; };
}) (builtins.attrNames (builtins.readDir assetPath))
);
in
{
# System-wide package
environment.systemPackages = [ hyprlandPkg ];
# Home Manager user settings
_module.args.hmUsers = {
${username} = {
home.packages = [ hyprlandPkg ];
# Merge main config + all other files
home.file = lib.mkMerge [
hyprFiles
{
".config/hypr/hyprland.conf" = { source = mainConfig; };
}
];
# Optional module-specific settings
settings.general."col.active_border" = "0xff97cbcd 0xff89b4fa";
};
};
}
@@ -1,65 +0,0 @@
{ lib, config, ... }:
let
# --- Module variables ---
moduleName = "stylix";
username = config.defaultUser or "henrov";
# Assets directory for Stylix config
assetPath = ../../../assets/system/conf/${moduleName};
# Read all config files
programFiles = builtins.readDir assetPath;
files = lib.genAttrs (builtins.attrNames programFiles) (name: {
src = "${assetPath}/${name}";
});
# Top-level toggle for this module
enableProgram = config.enableStylix or false;
# Read the main stylix.conf
stylixConfFile = "${assetPath}/stylix.conf";
stylixConf = if builtins.pathExists stylixConfFile
then builtins.readFile stylixConfFile
else "";
# Default cursor values
cursorName = "phinger-cursors-light";
cursorSize = 24;
in
{
# --- Top-level toggle ---
options.enableStylix = lib.mkEnableOption "Enable Stylix system theming";
# --- Only apply configuration if enabled ---
config = lib.mkIf enableProgram {
# Deploy Stylix configuration files to user's XDG config
home-manager.users.${username}.xdg.configFile =
lib.mapAttrs' (name: value: {
name = "${moduleName}/${name}";
value.source = value.src;
}) files;
# Merge all session variables into a single map
home-manager.users.${username}.home.sessionVariables = lib.mkMerge [
{
STYLIX_CONF = stylixConf;
}
{
XCURSOR_THEME = cursorName;
XCURSOR_SIZE = toString cursorSize;
HYPRCURSOR_THEME = cursorName;
HYPRCURSOR_SIZE = toString cursorSize;
}
];
# Optional wallpaper helper packages (symbolic, install manually or via packages)
environment.systemPackages = [
"feh"
"st"
];
};
}
@@ -1,34 +0,0 @@
{ lib, config, pkgs, inputs, ... }:
let
# Default user fallback
username = config.defaultUser or "henrov";
# Safe package reference with flake input fallback
xdgPortalHyprlandPkg = pkgs.xdg-desktop-portal-hyprland or
inputs.xdgPortalHyprland.packages.${pkgs.system}.default;
in
{
# System-wide installation of XDG portal package
environment.systemPackages = [
xdgPortalHyprlandPkg
];
# Home Manager user configuration
_module.args.hmUsers = {
${username} = {
home.packages = [
xdgPortalHyprlandPkg
];
# Enable XDG portal for Hyprland
xdg.portal = {
enable = true;
extraPortals = [ xdgPortalHyprlandPkg ];
config.hyprland = {
"org.freedesktop.impl.portal.Screencast" = [ "hyprland" ];
};
};
};
};
}
@@ -1,8 +0,0 @@
{ config, pkgs, ... }:
{
# (NVF = Neovim/terminal flavor)
stylix.targets.nvf.enable = true;
# feh wallpaper integration
stylix.targets.feh.enable = true;
}
@@ -1,36 +0,0 @@
{ lib, pkgs, config, ... }:
let
username = config.defaultUser or "henrov";
moduleName = "kitty";
# Paths and files
assetPath = ../../../assets/system/conf/${moduleName};
programFiles = builtins.readDir assetPath;
files = lib.genAttrs (builtins.attrNames programFiles) (name: {
src = "${assetPath}/${name}";
});
in
{
# Install kitty system-wide
environment.systemPackages = [ pkgs.kitty ];
# Home Manager user-specific configuration
_module.args.hmUsers = {
${username} = {
programs.kitty.enable = true;
# Extra user config snippet
programs.kitty.extraConfig = ''
# Include the Catppuccin-Mocha theme
include themes/Catppuccin-Mocha.conf
'';
# Copy all asset files into ~/.config/kitty/
home.file = lib.mkMerge (
map (name: { ".config/${moduleName}/${name}" = { source = files.${name}.src; }; })
(builtins.attrNames files)
);
};
};
}
@@ -1,26 +0,0 @@
{ lib, config, pkgs, ... }:
let
username = config.defaultUser or "henrov";
# Paths
starshipAssets = ../../../assets/system/conf/starship.toml;
in
{
# Install Starship system-wide
environment.systemPackages = [
pkgs.starship
];
# Home Manager user settings
_module.args.hmUsers = {
${username} = {
home.packages = [
pkgs.starship
];
# Copy the config into ~/.config
home.file.".config/starship.toml".source = starshipAssets;
};
};
}
@@ -1,35 +0,0 @@
{ lib, pkgs, config, ... }:
let
username = config.defaultUser or "henrov";
programName = "zsh";
programAssets = ../../../assets/system/conf/${programName};
zshInitFile = "${programAssets}/zsh.conf";
in
{
# System-wide package
environment.systemPackages = [ pkgs.zsh ];
# Home Manager user settings
_module.args.hmUsers = {
${username} = {
# Enable Zsh + Oh-My-Zsh
programs.zsh = {
enable = true;
ohMyZsh.enable = true;
ohMyZsh.theme = "catppuccin-mocha";
ohMyZsh.plugins = [
"git"
"docker"
"direnv"
"zsh-autosuggestions"
"zsh-completions"
"zsh-history-substring-search"
];
# Inject contents of zsh.conf
shellInit = builtins.readFile zshInitFile;
};
};
};
}
@@ -1,26 +0,0 @@
{ lib, config, pkgs, ... }:
let
username = "henrov";
in
{
# NixOS user
users.users.${username} = {
isNormalUser = true;
home = "/home/${username}";
hashedPassword = "$6$S7iShgBxB.77CwmP$i0njK.2r3OL5UEvgZbmwZ0rnpZ4QyJcv8p9uCmJ4AiVPSMXkQkIwMLzyAOnJ0q8.tPLIp/7EquEIZeK8qbmgw/";
extraGroups = [ "wheel" "networkmanager" ];
};
# Home Manager user definition
_module.args.hmUsers = {
${username} = {
home.username = username;
home.homeDirectory = "/home/${username}";
home.stateVersion = "26.05";
# Example: user packages
home.packages = [ pkgs.git pkgs.vim ];
};
};
}
@@ -1,92 +0,0 @@
;;; package --- early init -*- lexical-binding: t -*-
;;; Commentary:
;;; Prevents white flash and better Emacs defaults
;;; Code:
(set-language-environment "UTF-8")
(setq-default
default-frame-alist
'((background-color . "#1e1e2e")
(bottom-divider-width . 1) ; Thin horizontal window divider
(foreground-color . "#bac2de") ; Default foreground color
(fullscreen . maximized) ; Maximize the window by default
(horizontal-scroll-bars . nil) ; No horizontal scroll-bars
(left-fringe . 8) ; Thin left fringe
(menu-bar-lines . 0) ; No menu bar
(right-divider-width . 1) ; Thin vertical window divider
(right-fringe . 8) ; Thin right fringe
(tool-bar-lines . 0) ; No tool bar
(undecorated . t) ; Remove extraneous X decorations
(vertical-scroll-bars . nil)) ; No vertical scroll-bars
user-full-name "Henrov henrov" ; ME!
;; memory configuration
;; Higher garbage collection threshold, prevents frequent gc locks, reset later
gc-cons-threshold most-positive-fixnum
;; Ignore warnings for (obsolete) elisp compilations
byte-compile-warnings '(not obsolete)
;; And other log types completely
warning-suppress-log-types '((comp) (bytecomp))
;; Large files are okay in the new millenium.
large-file-warning-threshold 100000000
;; dont show garbage collection messages at startup, will reset later
garbage-collection-messages nil
;; native compilation
package-native-compile t
native-comp-warning-on-missing-source nil
native-comp-async-report-warnings-errors 'silent
;; Read more based on system pipe capacity
read-process-output-max (max (* 10240 10240) read-process-output-max)
;; scroll configuration
scroll-margin 0 ; Lets scroll to the end of the margin
scroll-conservatively 100000 ; Never recenter the window
scroll-preserve-screen-position 1 ; Scrolling back and forth
;; frame config
;; Improve emacs startup time by not resizing to adjust for custom settings
frame-inhibit-implied-resize t
;; Dont resize based on character height / width but to exact pixels
frame-resize-pixelwise t
;; backups & files
backup-directory-alist '(("." . "~/.backups/")) ; Don't clutter
backup-by-copying t ; Don't clobber symlinks
create-lockfiles nil ; Don't have temp files
delete-old-versions t ; Cleanup automatically
kept-new-versions 6 ; Update every few times
kept-old-versions 2 ; And cleanup even more
version-control t ; Version them backups
delete-by-moving-to-trash t ; Dont delete, send to trash instead
;; startup
inhibit-startup-screen t ; I have already done the tutorial. Twice
inhibit-startup-message t ; I know I am ready
inhibit-startup-echo-area-message t ; Yep, still know it
initial-scratch-message nil ; I know it is the scratch buffer!
initial-buffer-choice nil
inhibit-startup-buffer-menu t
inhibit-x-resources t
initial-major-mode 'fundamental-mode
pgtk-wait-for-event-timeout 0.001 ; faster child frames
ad-redefinition-action 'accept ; dont care about legacy things being redefined
inhibit-compacting-font-caches t
;; tabs
tab-width 4 ; Always tab 4 spaces.
indent-tabs-mode nil ; Never use actual tabs.
;; rendering
cursor-in-non-selected-windows nil ; dont render cursors other windows
;; packages
use-package-always-defer t
load-prefer-newer t
default-input-method nil
use-dialog-box nil
use-file-dialog nil
use-package-expand-minimally t
package-enable-at-startup nil
use-package-enable-imenu-support t
auto-mode-case-fold nil ; No second pass of case-insensitive search over auto-mode-alist.
package-archives '(("melpa" . "https://melpa.org/packages/")
("gnu" . "https://elpa.gnu.org/packages/")
("nongnu" . "https://elpa.nongnu.org/nongnu/")
("melpa-stable" . "https://stable.melpa.org/packages/"))
package-archive-priorities '(("gnu" . 99)
("nongnu" . 80)
("melpa" . 70)
("melpa-stable" . 50))
)
;;; early-init.el ends here
@@ -1,101 +0,0 @@
{ lib, pkgs, config, ... }:
let
moduleName = "emacs";
username = config.defaultUser or "henrov";
# Paths to your init files (relative to this module)
emacsAssets = ../../../assets/system/conf/emacs;
initFile = "${emacsAssets}/init.el";
earlyInitFile = "${emacsAssets}/early-init.el";
# Toggle for this module
enableProgram = config.enableEmacs or false;
in
{
# Top-level toggle option
options.enableEmacs = lib.mkEnableOption "Enable Emacs configuration";
config = lib.mkIf enableProgram {
# Minimal system-wide Emacs package
environment.systemPackages = [
pkgs.emacs-pgtk.override { withTreeSitter = true; }
];
# Home Manager Emacs config
home-manager.users.${username} = {
programs.emacs = {
enable = true;
package = pkgs.emacs-pgtk.override { withTreeSitter = true; };
extraPackages = epkgs: with epkgs; [
# Core dev and language support
manualPackages.treesit-grammars.with-all-grammars
rust-mode
rustic
nix-mode
hcl-mode
# UI & workflow
nerd-icons
doom-modeline
diminish
eldoc
eldoc-box
pulsar
which-key
avy
consult
vertico
marginalia
crux
shell-pop
# Completion/snippets
nerd-icons-corfu
corfu
cape
orderless
yasnippet
yasnippet-snippets
# Utilities
rg
exec-path-from-shell
eat
f
gptel
nixpkgs-fmt
envrc
# Theming
catppuccin-theme
# Git
magit
# Editing/workflow
expreg
vundo
puni
# Error/side panels
sideline
sideline-flymake
sideline-eglot
];
# Load your init files from assets
initFile = initFile;
earlyInitFile = earlyInitFile;
};
# Useful session variables
home.sessionVariables = {
EDITOR = "emacs";
XDG_SCREENSHOTS_DIR = "~/screenshots";
};
};
};
}
@@ -1,400 +0,0 @@
;;; package --- Summary - My minimal Emacs init file -*- lexical-binding: t -*-
;;; Commentary:
;;; Simple Emacs setup I carry everywhere
;;; Code:
(setq custom-file (locate-user-emacs-file "custom.el"))
(load custom-file 'noerror) ;; no error on missing custom file
(require 'package)
(package-initialize)
(defun reset-custom-vars ()
"Resets the custom variables that were set to crazy numbers"
(setopt gc-cons-threshold (* 1024 1024 100))
(setopt garbage-collection-messages t))
(use-package emacs
:custom
(native-comp-async-query-on-exit t)
(read-answer-short t)
(use-short-answers t)
(enable-recursive-minibuffers t)
(which-func-update-delay 1.0)
(visible-bell nil)
(custom-buffer-done-kill t)
(whitespace-line-column nil)
(x-underline-at-descent-line t)
(imenu-auto-rescan t)
(uniquify-buffer-name-style 'forward)
(confirm-nonexistent-file-or-buffer nil)
(create-lockfiles nil)
(make-backup-files nil)
(kill-do-not-save-duplicates t)
(sentence-end-double-space nil)
(treesit-enabled-modes t)
:init
;; base visual
(menu-bar-mode -1) ;; no menu bar
(toggle-scroll-bar -1) ;; no scroll bar
(tool-bar-mode -1) ;; no tool bar either
(blink-cursor-mode -1) ;; stop blinking
;; font of the century
(set-frame-font "Aporetic Sans Mono 12" nil t)
:bind
(("C-<wheel-up>" . pixel-scroll-precision) ; dont zoom in please, just scroll
("C-<wheel-down>" . pixel-scroll-precision) ; dont zoom in either, just scroll
("C-x k" . kill-current-buffer)) ; kill the buffer, dont ask
:hook
(text-mode . delete-trailing-whitespace-mode)
(prog-mode . delete-trailing-whitespace-mode)
(after-init . global-display-line-numbers-mode) ;; always show line numbers
(after-init . column-number-mode) ;; column number in the mode line
(after-init . size-indication-mode) ;; file size in the mode line
(after-init . pixel-scroll-precision-mode) ;; smooth mouse scroll
(after-init . electric-pair-mode) ;; i mean ... parens should auto create
(after-init . reset-custom-vars)
)
(use-package autorevert
:ensure nil
:custom
(auto-revert-interval 3)
(auto-revert-remote-files nil)
(auto-revert-use-notify t)
(auto-revert-avoid-polling nil)
(auto-revert-verbose t)
:hook
(after-init . global-auto-revert-mode))
(use-package recentf
:ensure nil
:commands (recentf-mode recentf-cleanup)
:hook
(after-init . recentf-mode)
:custom
(recentf-auto-cleanup 'never)
(recentf-exclude
(list "\\.tar$" "\\.tbz2$" "\\.tbz$" "\\.tgz$" "\\.bz2$"
"\\.bz$" "\\.gz$" "\\.gzip$" "\\.xz$" "\\.zip$"
"\\.7z$" "\\.rar$"
"COMMIT_EDITMSG\\'"
"\\.\\(?:gz\\|gif\\|svg\\|png\\|jpe?g\\|bmp\\|xpm\\)$"
"-autoloads\\.el$" "autoload\\.el$"))
:config
;; A cleanup depth of -90 ensures that `recentf-cleanup' runs before
;; `recentf-save-list', allowing stale entries to be removed before the list
;; is saved by `recentf-save-list', which is automatically added to
;; `kill-emacs-hook' by `recentf-mode'.
(add-hook 'kill-emacs-hook #'recentf-cleanup -90))
(use-package savehist
:ensure nil
:commands (savehist-mode savehist-save)
:hook
(after-init . savehist-mode)
:custom
(savehist-autosave-interval 600)
(savehist-additional-variables
'(kill-ring ; clipboard
register-alist ; macros
mark-ring global-mark-ring ; marks
search-ring regexp-search-ring)))
(use-package hl-line
:ensure nil
:custom
(hl-line-sticky-flag nil)
(global-hl-line-sticky-flag nil)
:hook
(after-init . global-hl-line-mode))
(use-package saveplace
:ensure nil
:commands (save-place-mode save-place-local-mode)
:hook
(after-init . save-place-mode)
:custom
(save-place-limit 400))
(use-package nerd-icons
:custom
;; disable bright icon colors
(nerd-icons-color-icons nil))hells.nix
(use-package doom-modeline
:custom
(inhibit-compacting-font-caches t) ;; speed
(doom-modeline-buffer-file-name-style 'relative-from-project)
(doom-modeline-major-mode-icon nil) ;; distracting icons, no thank you
(doom-modeline-buffer-encoding nil) ;; everything is utf-8 anyway
(doom-modeline-buffer-state-icon nil) ;; the filename already shows me
(doom-modeline-lsp nil) ;; lsp state is too distracting, too often
:hook (after-init . doom-modeline-mode))
(load-theme 'catppuccin :no-confirm)
(use-package diminish :demand t) ;; declutter the modeline
(use-package eldoc
:diminish eldoc-mode
:custom
(eldoc-echo-area-use-multiline-p nil)) ;; docs for everything
(use-package eldoc-box
:defer t
:config
(set-face-background 'eldoc-box-border (catppuccin-color 'green))
(set-face-background 'eldoc-box-body (catppuccin-color 'base))
:bind
(("M-h" . eldoc-box-help-at-point)))
(use-package pulsar
:commands pulsar-global-mode pulsar-recenter-top pulsar-reveal-entry
:init
(defface pulsar-catppuccin
`((default :extend t)
(((class color) (min-colors 88) (background light))
:background ,(catppuccin-color 'sapphire))
(((class color) (min-colors 88) (background dark))
:background ,(catppuccin-color 'sapphire))
(t :inverse-video t))
"Alternative nord face for `pulsar-face'."
:group 'pulsar-faces)
:custom
(pulsar-face 'pulsar-catppuccin)
:hook
(after-init . pulsar-global-mode))
(use-package which-key
:commands which-key-mode
:diminish which-key-mode
:hook
(after-init . which-key-mode))
(use-package expreg
:bind ("M-m" . expreg-expand))
(use-package vundo) ;; undo tree
;; better structured editing
(use-package puni
:commands puni-global-mode
:hook
(after-init . puni-global-mode))
(use-package avy
:bind
("M-i" . avy-goto-char-2)
:custom
(avy-background t))
(use-package consult
:bind
("C-x b" . consult-buffer) ;; orig. switch-to-buffer
("M-y" . consult-yank-pop) ;; orig. yank-pop
("M-g M-g" . consult-goto-line) ;; orig. goto-line
("M-g i" . consult-imenu) ;; consult version is interactive
("M-g r" . consult-ripgrep) ;; find in project also works
:custom
(consult-narrow-key "<"))
(use-package vertico
:commands vertico-mode
:custom
(read-file-name-completion-ignore-case t)
(read-buffer-completion-ignore-case t)
(completion-ignore-case t)
(enable-recursive-minibuffers t)
(minibuffer-prompt-properties '(read-only t cursor-intangible t face minibuffer-prompt))
:init
(vertico-mode)
:hook
(minibuffer-setup-hook . cursor-intangible-mode))
(use-package marginalia
:commands marginalia-mode
:hook (after-init . marginalia-mode))
(use-package crux
:bind
("C-c M-e" . crux-find-user-init-file)
("C-c C-w" . crux-transpose-windows)
("C-c M-d" . crux-find-current-directory-dir-locals-file)
("C-a" . crux-move-beginning-of-line))
(use-package magit
:bind (("C-M-g" . magit-status)))
(use-package nerd-icons-corfu
:commands nerd-icons-corfu-formatter
:defines corfu-margin-formatters)
(use-package corfu
:commands global-corfu-mode
:custom
(corfu-cycle t)
(corfu-auto t)
(corfu-auto-delay 1)
(corfu-auto-prefix 3)
(corfu-separator ?_)
:hook
(after-init . global-corfu-mode)
:config
(add-to-list 'corfu-margin-formatters #'nerd-icons-corfu-formatter))
(use-package cape)
(use-package orderless
:custom
(completion-styles '(orderless partial-completion basic))
(completion-category-defaults nil)
(completion-category-overrides nil))
(use-package yasnippet
:commands yas-global-mode
:diminish yas-minor-mode
:hook
(after-init . yas-global-mode))
(use-package yasnippet-snippets :after yasnippet)
(use-package exec-path-from-shell
:commands exec-path-from-shell-initialize
:custom
(exec-path-from-shell-arguments nil)
:hook
(after-init . exec-path-from-shell-initialize))
(use-package nixpkgs-fmt
:custom
(nixpkgs-fmt-command "nixfmt"))
(use-package eat
:bind
(("C-c e p" . eat-project)
("C-c e t" . eat)))
(use-package f :demand t)
(use-package envrc
:commands envrc-global-mode
:hook
(after-init . envrc-global-mode))
(use-package gptel
:commands gptel-make-anthropic f-read-text
:config
(gptel-make-anthropic "Claude"
:stream t :key (f-read-text "/run/secrets/claude_key")))
(use-package sideline-flymake)
(use-package sideline-eglot)
(use-package sideline
:custom
(sideline-backends-right '(sideline-flymake sideline-eglot))
:hook
(eglot-managed-mode . sideline-mode)
(flymake-mode . sideline-mode))
(use-package eglot
:custom
(eglot-extend-to-xref t)
(eglot-ignored-server-capabilities '(:inlayHintProvider))
(jsonrpc-event-hook nil)
:hook
(eglot-managed-mode . eldoc-box-hover-mode)
(before-save . eldoc-format-buffer)
:bind
(:map eglot-mode-map
("C-c l a" . eglot-code-actions)
("C-c l r" . eglot-rename)
("C-c l h" . eldoc)
("C-c l g" . xref-find-references)
("C-c l w" . eglot-reconnect)))
(use-package proced
:custom
(proced-auto-update-flag t)
(proced-auto-update-interval 3)
(proced-enable-color-flag t)
(proced-show-remote-processes t))
(use-package org
:ensure t
:defer t
:commands (org-mode org-capture org-agenda)
:init
(defvar org-journal-file "~/nextcloud/org/journal.org")
(defvar org-archive-file "~/nextcloud/org/archive.org")
(defvar org-notes-file "~/nextcloud/org/notes.org")
(defvar org-inbox-file "~/nextcloud/org/inbox.org")
(defvar org-work-file "~/nextcloud/org/work.org")
(defun my/org-capture-project-target-heading ()
"Determine Org target headings from the current file's project path.
This function assumes a directory structure like '~/projects/COMPANY/PROJECT/'.
It extracts 'COMPANY' and 'PROJECT' to use as nested headlines
for an Org capture template.
If the current buffer is not visi
ting a file within such a
project structure, it returns nil, causing capture to default to
the top of the file."
(when-let* ((path (buffer-file-name))) ; Ensure we are in a file-visiting buffer
(let ((path-parts (split-string path "/" t " ")))
(when-let* ((projects-pos (cl-position "projects" path-parts :test #'string=))
(company (nth (+ 1 projects-pos) path-parts))
(project (nth (+ 2 projects-pos) path-parts)))
;; Return a list of headlines for Org to find or create.
(list company project)))))
:bind
(("C-c c" . org-capture)
("C-c i" . org-store-link)
("C-c a" . org-agenda)
:map org-mode-map
("C-c t" . org-toggle-inline-images)
("C-c l" . org-toggle-link-display))
:custom
(org-agenda-files (list org-inbox-file org-journal-file))
(org-directory "~/nextcloud/org")
(org-default-notes-file org-inbox-file)
(org-archive-location (concat org-archive-file "::* From %s"))
(org-log-done 'time)
(org-log-into-drawer t)
(org-hide-emphasis-markers t)
(org-src-fontify-natively t)
(org-src-tab-acts-natively t)
(org-capture-templates '(("t" "todo" entry (file org-inbox-file)
"* todo %?\n:PROPERTIES:\n:CREATED: %U\n:END:\n\n%a\n\n)")
("j" "Journal" entry (file+olp+datetree org-journal-file)
"* %?\n:PROPERTIES:\n:CREATED: %U\n:END:\n\n%a\n\n")
("n" "Note" entry (file org-notes-file)
"* %?\n:PROPERTIES:\n:CREATED: %U\n:END:\n\n%a\n\n")
("p" "Project Task" item
(file+function org-work-file my/org-capture-project-target-heading)
"* todo %? \n CLOCK: %U"
))
)
:config
;; Enable syntax highlighting in code blocks
(add-hook 'org-mode-hook 'turn-on-font-lock)
(add-hook 'org-mode-hook 'org-indent-mode))
;; extras
(use-package comp-run
:ensure nil
:config
(push "tramp-loaddefs.el.gz" native-comp-jit-compilation-deny-list)
(push "cl-loaddefs.el.gz" native-comp-jit-compilation-deny-list))
(use-package rustic
:custom
(rustic-lsp-client 'eglot))
(provide 'init)
;;; init.el ends here
@@ -1,66 +0,0 @@
{ lib, pkgs, config, ... }:
let
# Module name
moduleName = "flatpaks";
# Top-level toggle for this module
enableProgram = config.enableFlatpaks or false;
# Path to your Flatpak list
assetPath = ../../../assets/system/apps/flatpaks.conf;
# Resolve user safely
username = config.defaultUser or "henrov";
in
{
# --- Top-level toggle option ---
options.enableFlatpaks = lib.mkEnableOption "Enable automatic Flatpak installation";
# --- Config only applied if enabled ---
config = lib.mkIf enableProgram {
# Deploy the Flatpak conf file
environment.etc."flatpak/flatpaks.conf".source = assetPath;
# Enable system Flatpak service
services.flatpak.enable = true;
xdg.portal.enable = true;
# Systemd service to install Flatpaks from the list
systemd.services."${moduleName}-sync" = {
description = "Install Flatpak apps listed in flatpaks.conf";
wantedBy = [ "multi-user.target" ];
wants = [ "network-online.target" ];
after = [ "network-online.target" ];
serviceConfig = {
Type = "oneshot";
ExecStart = ''
set -euo pipefail
CONF="${assetPath}"
# Add Flathub if not present
if ! flatpak remotes --system --columns=name | grep -qx flathub; then
flatpak remote-add --system --if-not-exists flathub https://dl.flathub.org/repo/flathub.flatpakrepo
fi
# Install every Flatpak listed in the conf file
while IFS= read -r app || [ -n "$app" ]; do
app=$(echo "$app" | sed 's/#.*//;s/^[[:space:]]*//;s/[[:space:]]*$//')
if [ -n "$app" ]; then
if ! flatpak info --system "$app" >/dev/null 2>&1; then
flatpak install --system -y --noninteractive flathub "$app"
fi
fi
done < "$CONF"
'';
};
restartTriggers = [ assetPath ];
# Include only the packages needed for this service
path = [ pkgs.flatpak pkgs.coreutils pkgs.gnugrep pkgs.gnused ];
};
};
}
-28
View File
@@ -1,28 +0,0 @@
{ lib, pkgs, config, ... }:
let
enableProgram = config.enableThunar or false;
username = config.defaultUser or "henrov";
in
{
# Top-level toggle
options.enableThunar = lib.mkEnableOption "Enable Thunar file manager";
# Only apply config if enabled
config = lib.mkIf enableProgram {
# Install Thunar and related packages system-wide
environment.systemPackages = [
pkgs.thunar
pkgs.thunar-plugins
pkgs.xarchiver
];
# Remove invalid top-level 'home' reference
# If you want sessionVariables, define them in Home Manager instead
# Example for Home Manager:
# home-manager.users.${username}.sessionVariables = {
# FILE_MANAGER = "thunar";
# USERNAME = username;
# };
};
}
-57
View File
@@ -1,57 +0,0 @@
{ lib, config, ... }:
let
# --- Program definition ---
programName = "wofi";
# Path to assets
assetPath = ../../../assets/system/conf/${programName};
# Generate file mappings
programFiles =
if builtins.pathExists assetPath then builtins.readDir assetPath else {};
files = lib.genAttrs (builtins.attrNames programFiles) (name: {
src = "${assetPath}/${name}";
});
# Top-level toggle for this module
enableProgram = config.enableWofi or false;
# Default user
username = config.defaultUser or "henrov";
in
{
# --- Module option ---
options.enableWofi = lib.mkEnableOption "Enable Wofi terminal launcher";
# --- Config ---
config = lib.mkIf enableProgram {
# --- Deploy assets to ~/.config/wofi ---
environment.etc."${programName}".source = assetPath;
# --- Optional systemd service to sync config ---
systemd.services."${programName}-sync" = {
description = "Sync ${programName} configuration files";
wantedBy = [ "multi-user.target" ];
wants = [ "network-online.target" ];
after = [ "network-online.target" ];
serviceConfig = {
Type = "oneshot";
ExecStart = ''
set -euo pipefail
if [ -d "${assetPath}" ]; then
for f in ${lib.concatStringsSep " " (builtins.attrNames files)}; do
mkdir -p "/home/${username}/.config/${programName}"
cp -u "${assetPath}/$f" "/home/${username}/.config/${programName}/$f"
done
fi
'';
};
restartTriggers = [ assetPath ];
path = [];
};
};
}
@@ -1,62 +0,0 @@
{ lib, config, pkgs, ... }:
let
# --- Program definition ---
programName = "zenbrowser";
# Assets (optional, empty if no config)
assetPath =
if builtins.pathExists ../../../assets/system/conf/${programName}
then ../../../assets/system/conf/${programName}
else null;
programFiles =
if assetPath != null then builtins.readDir assetPath else {};
files = lib.genAttrs (builtins.attrNames programFiles) (name: {
src = "${assetPath}/${name}";
});
# Top-level toggle for this module
enableProgram = config.enableZenBrowser or false;
# Default user fallback
username = config.defaultUser or "henrov";
in
{
# --- Option ---
options.enableZenBrowser = lib.mkEnableOption "Install Zen Browser";
# --- Config ---
config = lib.mkIf enableProgram {
# --- Deploy assets (if any) ---
environment.etc."${programName}".source = assetPath;
# --- System packages ---
environment.systemPackages = [ pkgs.zen-browser ];
# --- Example systemd service to sync assets ---
systemd.services."${programName}-sync" = {
description = "Sync ${programName} configuration files";
wantedBy = [ "multi-user.target" ];
wants = [ "network-online.target" ];
after = [ "network-online.target" ];
serviceConfig = {
Type = "oneshot";
ExecStart = ''
set -euo pipefail
if [ -d "${assetPath}" ]; then
for f in ${lib.concatStringsSep " " (builtins.attrNames files)}; do
cp -u "${assetPath}/$f" "/home/${username}/.config/${programName}/$f"
done
fi
'';
};
restartTriggers = [ assetPath ];
path = [];
};
};
}
@@ -1,12 +0,0 @@
{ lib, pkgs, config, ... }:
{
options.enableFonts = lib.mkEnableOption "Enable nerd fonts";
config = lib.mkIf (config.enableFonts or false) {
fonts.packages = with pkgs; [
nerd-fonts.iosevka
nerd-fonts.fira-code
];
};
}
@@ -1,45 +0,0 @@
{ lib, config, ... }:
let
# --- Module variables ---
moduleName = "waybar";
username = config.defaultUser or "henrov";
# Assets directory (self-contained)
assetPath = ../../../assets/system/conf/${moduleName};
# Read required config files
waybarConfig = "${assetPath}/waybar.conf";
waybarStyle = "${assetPath}/style.css";
# Top-level toggle
enableProgram = config.enableWaybar or false;
in
{
# --- Option ---
options.enableWaybar =
lib.mkEnableOption "Enable Waybar status bar";
# --- Config ---
config = lib.mkIf enableProgram {
# Install Waybar (symbolic reference expected to be resolved elsewhere)
environment.systemPackages = [
"waybar"
];
# Deploy only required files to ~/.config/waybar
home-manager.users.${username}.xdg.configFile = {
"waybar/config".source =
if builtins.pathExists waybarConfig
then waybarConfig
else null;
"waybar/style.css".source =
if builtins.pathExists waybarStyle
then waybarStyle
else null;
};
};
}
-13
View File
@@ -1,13 +0,0 @@
{ config, pkgs, lib, ... }:
{
services.dbus = lib.mkForce {
enable = true; # Force this to be true
};
# Configure dbus-broker via its configuration file
environment.etc."dbus-broker/launch.conf".text = ''
[General]
LogLevel=warning
MaxConnectionsPerUser=2048
'';
}
@@ -1,41 +0,0 @@
{ lib, config, pkgs,... }:
let
coreEnabled = config.mySystem.system.core.enable or false;
in
{
options.mySystem.system.locale.enable =
lib.mkEnableOption "Network settings";
config = lib.mkIf (coreEnabled || config.mySystem.system.locale.enable) {
networking = {
useDHCP = lib.mkDefault true;
networkmanager.enable = true;
networkmanager.wifi.backend = "iwd";
wireless.iwd.enable = true;
wireless.userControlled.enable = true;
firewall = {
enable = true;
# KDE Connect: discovery + encrypted connections
allowedTCPPortRanges = [
{
from = 1714;
to = 1764;
}
];
allowedUDPPortRanges = [
{
from = 1714;
to = 1764;
}
];
};
};
# Install NetworkManager
environment.systemPackages = with pkgs; [
networkmanager
];
};
}
@@ -1,22 +0,0 @@
{ lib, config, pkgs, inputs, ... }:
let
username = config.defaultUser or "henrov";
# Wayland-specific packages
uwsmPkg = pkgs.uwsm or inputs.uwsm.packages.${pkgs.system}.default;
in
{
# System packages
environment.systemPackages = [ uwsmPkg ];
# Enable Hyprland at system level
wayland.windowManager.hyprland.enable = true;
# Home Manager user settings
_module.args.hmUsers = {
${username} = {
home.packages = [ uwsmPkg ];
};
};
}
-40
View File
@@ -1,40 +0,0 @@
{ lib, config, pkgs, inputs, ... }:
let
# Default username fallback
username = config.defaultUser or "henrov";
# Asset folder for configs
assetPath = ../../../assets/<myModuleName>/conf;
# Main configuration file
mainConfig = "${assetPath}/<mainConfigFile>";
# Determine the package: prefer Nixpkgs, fallback to -git, fallback to flake input
myPkg =
pkgs.<myPackage> or
pkgs.<myPackage>-git or
inputs.<myPackage>.packages.${pkgs.system}.default;
in
{
# Install system-wide
environment.systemPackages = [ myPkg ];
# Home Manager user settings
_module.args.hmUsers = {
${username} = {
home.packages = [ myPkg ];
# Copy main config into user's home
home.file.".config/<myModuleName>/<mainConfigFile>".source = mainConfig;
# Optional module-specific settings
settings.general = {
# Example placeholder
"example.setting" = "value";
};
# Optional: you can add more files dynamically from assetPath if needed
};
};
}
-30
View File
@@ -1,30 +0,0 @@
{ pkgs, user, ... }:
{
environment.systemPackages = with pkgs; [
gtk3 # GTK target
gtk4 # GTK target
];
# Stylix GTK target
stylix.targets.gtk.enable = true;
home-manager.users.${user.username} = {
gtk = {
enable = true;
theme = {
name = "Catppuccin-Mocha-Standard-Blue-Dark";
package = pkgs.magnetic-catppuccin-gtk;
};
iconTheme = {
name = "Papirus-Dark";
package = pkgs.papirus-icon-theme;
};
gtk3.extraConfig = {
gtk-application-prefer-dark-theme = 1;
};
gtk4.extraConfig = {
gtk-application-prefer-dark-theme = 1;
};
};
};
}
@@ -1,28 +0,0 @@
{ config, pkgs, ... }:
{
# Enable Bluetooth hardware and daemon
hardware.bluetooth = {
enable = true;
powerOnBoot = true;
packages = with pkgs; [ bluez ];
};
# Enable Bluetooth audio support in PipeWire
services.pipewire = {
config.pulse = {
bluez5.enable = true;
};
};
# Optional: Additional Bluetooth settings
hardware.bluetooth.extraConfig = ''
AutoEnable=true
DiscoverableTimeout=0
PairableTimeout=0
'';
# Install a graphical Bluetooth manager (optional)
environment.systemPackages = with pkgs; [
blueman
];
}
@@ -1,28 +0,0 @@
{ lib, config, ... }:
let
coreEnabled = config.mySystem.system.core.enable or false;
in
{
options.mySystem.system.locale.enable =
lib.mkEnableOption "Home-Manager settings";
config = lib.mkIf (coreEnabled || config.mySystem.system.locale.enable) {
# --- Home Manager Base ---
home-manager = {
backupFileExtension = "backup";
users.henrov = {
home.sessionVariables = {
TERMINAL = "kitty";
EDITOR = "emacs";
BROWSER = "zen";
};
home.stateVersion = "26.05";
};
};
};
}
@@ -1,27 +0,0 @@
{ lib, config, ... }:
let
coreEnabled = config.mySystem.system.core.enable or false;
in
{
# Top-level option for this module
options.mySystem.system.locale.enable =
lib.mkEnableOption "Enable Nix & Flake specific settings";
# Top-level container for all custom program configs (your myPrograms idea)
options.myPrograms = lib.mkOption {
type = lib.types.attrsOf lib.types.any;
default = {};
description = "Container for all custom program configurations";
};
# Apply the configuration only if core or locale is enabled
config = lib.mkIf (coreEnabled || config.mySystem.system.locale.enable) {
nix.settings = {
experimental-features = [ "nix-command" "flakes" ];
download-buffer-size = 536870912; # 512 MB
cores = 2;
max-jobs = 1;
};
};
}
@@ -1,14 +0,0 @@
{ pkgs, user, ... } :
{
environment.systemPackages = with pkgs; [
tuigreet
];
services.greetd = {
enable = true;
settings = {
default_session = {
command = pkgs.lib.mkForce "${pkgs.tuigreet}/bin/tuigreet --remember --time --time-format '%I:%M %p | %a %h | %F'";
};
};
};
}
@@ -1,23 +0,0 @@
{ lib, config, ... }:
let
coreEnabled = config.mySystem.system.core.enable or false;
in
{
options.mySystem.system.locale.enable =
lib.mkEnableOption "Services settings (printing / audio)";
config = lib.mkIf (coreEnabled || config.mySystem.system.locale.enable) {
# --- Services (Printing & Audio) ---
services.printing.enable = true;
services.pulseaudio.enable = false;
security.rtkit.enable = true;
services.pipewire = {
enable = true;
alsa.enable = true;
alsa.support32Bit = true;
pulse.enable = true;
};
};
}
Binary file not shown.