Regenerated
This commit is contained in:
+150
-152
@@ -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>
|
||||
@@ -0,0 +1 @@
|
||||
/nix/store/aavn5w35bw494vfycdw46d5pg14nf5g4-home-manager-files/.config/hypr/animations.conf
|
||||
@@ -0,0 +1 @@
|
||||
/nix/store/aavn5w35bw494vfycdw46d5pg14nf5g4-home-manager-files/.config/hypr/behaviour.conf
|
||||
@@ -0,0 +1 @@
|
||||
/nix/store/aavn5w35bw494vfycdw46d5pg14nf5g4-home-manager-files/.config/hypr/bindings.conf
|
||||
@@ -0,0 +1 @@
|
||||
/nix/store/aavn5w35bw494vfycdw46d5pg14nf5g4-home-manager-files/.config/hypr/exec-once.conf
|
||||
@@ -0,0 +1 @@
|
||||
/nix/store/aavn5w35bw494vfycdw46d5pg14nf5g4-home-manager-files/.config/hypr/hypridle.conf
|
||||
@@ -0,0 +1 @@
|
||||
/nix/store/aavn5w35bw494vfycdw46d5pg14nf5g4-home-manager-files/.config/hypr/hyprland.conf
|
||||
@@ -0,0 +1 @@
|
||||
/nix/store/aavn5w35bw494vfycdw46d5pg14nf5g4-home-manager-files/.config/hypr/hyprlock.conf
|
||||
@@ -0,0 +1 @@
|
||||
/nix/store/aavn5w35bw494vfycdw46d5pg14nf5g4-home-manager-files/.config/hypr/layer-rules.conf
|
||||
@@ -0,0 +1 @@
|
||||
/nix/store/aavn5w35bw494vfycdw46d5pg14nf5g4-home-manager-files/.config/hypr/layout.conf
|
||||
@@ -0,0 +1 @@
|
||||
/nix/store/aavn5w35bw494vfycdw46d5pg14nf5g4-home-manager-files/.config/hypr/monitor-rules.conf
|
||||
@@ -0,0 +1 @@
|
||||
/nix/store/aavn5w35bw494vfycdw46d5pg14nf5g4-home-manager-files/.config/hypr/theming.conf
|
||||
@@ -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
|
||||
@@ -0,0 +1 @@
|
||||
/nix/store/aavn5w35bw494vfycdw46d5pg14nf5g4-home-manager-files/.config/kitty/kitty.conf
|
||||
@@ -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"
|
||||
@@ -0,0 +1 @@
|
||||
/nix/store/aavn5w35bw494vfycdw46d5pg14nf5g4-home-manager-files/.config/stylix/palette.html
|
||||
@@ -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);
|
||||
}
|
||||
@@ -0,0 +1 @@
|
||||
/nix/store/5dnlin4x7n2y5k4zi4wavyy519s2yq6s-waybar-config
|
||||
@@ -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 ];
|
||||
};
|
||||
};
|
||||
}
|
||||
@@ -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;
|
||||
# };
|
||||
};
|
||||
}
|
||||
@@ -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;
|
||||
};
|
||||
};
|
||||
}
|
||||
@@ -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 ];
|
||||
};
|
||||
};
|
||||
}
|
||||
@@ -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
|
||||
};
|
||||
};
|
||||
}
|
||||
@@ -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.
Reference in New Issue
Block a user