Adding networking

This commit is contained in:
2026-03-14 12:29:41 +01:00
parent 8df20fcd79
commit 1274d0e1f0
68 changed files with 556 additions and 1262 deletions
+408 -386
View File
File diff suppressed because it is too large Load Diff
+34 -12
View File
@@ -465,6 +465,10 @@ in
git-extras
];
};
# Ensure the user is in the necessary groups
users.users.${config.users.users.${user.username}.username} = {
extraGroups = [ "networkmanager" ];
}
#+END_SRC
@@ -615,13 +619,36 @@ This sets the dbus implementation
** =assets/flake/machines/traveldroid/networking.nix=
This sets the dbus implementation
#+BEGIN_SRC nix :tangle assets/flake/machines/traveldroid/networking.nix :noweb tangle :mkdirp yes :eval never-html
{ config, pkgs, ... }:
{
config,
pkgs,
lib,
...
}:
{
# Enable NetworkManager
services.NetworkManager = {
enable = true;
dhcpcd.enable = false; # Ensure dhcpcd is disabled to avoid conflicts
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 and wofi
@@ -629,16 +656,11 @@ This sets the dbus implementation
networkmanager
wofi
];
# Ensure the user is in the necessary groups
users.users.${config.users.users."henrov".username} = {
extraGroups = [ "networkmanager" ];
};
}
#+END_SRC
** =assets/flake/machines/traveldroid/session.nix=
This sets the dbus implementation
This sets the session variables
#+BEGIN_SRC nix :tangle assets/flake/machines/traveldroid/session.nix :noweb tangle :mkdirp yes :eval never-html
{ config, pkgs, user, ... }:
{
@@ -762,7 +784,7 @@ The ./generated/top.nix file acts as an anchor or entry point for the entire cha
let
hyprlandConfigDir = "${config.home-manager.users.${user.username}.xdg.configHome}/hypr";
# Dynamically read all files in assets/hyprland/conf/
# Dynamically read all files in assets/hyprland/conf/hypr
hyprlandConfs =
lib.genAttrs (builtins.attrNames (builtins.readDir "${flakeRoot}/assets/hyprland/conf/hypr"))
(name: {
@@ -35,11 +35,4 @@
networkmanager
wofi
];
/*
# Ensure the user is in the necessary groups
users.users.${config.users.users."henrov".username} = {
extraGroups = [ "networkmanager" ];
};
*/
}
@@ -1,7 +0,0 @@
{ config, pkgs, lib, user, inputs, flakeRoot,... }:
{
imports = [
# No subfolders to import
];
# .. put any code here
}
@@ -1,7 +0,0 @@
{ config, pkgs, lib, user, inputs, flakeRoot,... }:
{
imports = [
# No subfolders to import
];
# .. put any code here
}
@@ -1,42 +0,0 @@
{
config,
pkgs,
lib,
user,
flakeRoot,
...
}:
let
hyprlandConfigDir = "${config.home-manager.users.${user.username}.xdg.configHome}/hypr";
# Dynamically read all files in assets/hyprland/conf/
hyprlandConfs =
lib.genAttrs (builtins.attrNames (builtins.readDir "${flakeRoot}/assets/hyprland/conf"))
(name: {
text = builtins.readFile "${flakeRoot}/assets/hyprland/conf/${name}";
});
in
{
# NixOS: Enable Hyprland (optional)
programs.hyprland = {
enable = true;
};
# Home Manager: Hyprland-specific configurations
home-manager.users.${user.username} = {
# Use config.home-manager.users.${user.username} instead of userConfig
home.stateVersion = config.home-manager.users.${user.username}.stateVersion or "23.11"; # Default fallback
home.username = user.username; # Use the 'user' argument
home.homeDirectory =
config.home-manager.users.${user.username}.homeDirectory or "/home/${user.username}";
wayland.windowManager.hyprland = {
enable = true;
};
# Merge dynamic Hyprland configs with existing xdg.configFile
xdg.configFile = {
# Your existing manual configs (if any)
}
// hyprlandConfs;
};
}
@@ -1,20 +0,0 @@
{
config,
pkgs,
lib,
user,
inputs,
flakeRoot,
...
}:
let
bindingsContent = builtins.readFile (flakeRoot + "/assets/hyprland/conf/bindings.conf");
in
{
home-manager.users.${user.username} = {
wayland.windowManager.hyprland = {
enable = true;
extraConfig = bindingsContent;
};
};
}
@@ -1,7 +0,0 @@
{ config, pkgs, lib, user, inputs, flakeRoot,... }:
{
imports = [
# No subfolders to import
];
# .. put any code here
}
@@ -1,7 +0,0 @@
{ config, pkgs, lib, user, inputs, flakeRoot,... }:
{
imports = [
# No subfolders to import
];
# .. put any code here
}
@@ -1,7 +0,0 @@
{ config, pkgs, lib, user, inputs, flakeRoot,... }:
{
imports = [
./wofi.nix
];
# .. put any code here
}
@@ -1,35 +0,0 @@
{ config, pkgs, lib, user, flakeRoot, ... }:
let
xdgDataHome = config.home-manager.users.${user.username}.xdg.dataHome;
in
{
# NixOS: Install Wofi system-wide (optional)
environment.systemPackages = with pkgs; [ wofi ];
# Home Manager: User-specific Wofi config
home-manager.users.${user.username} = {
# Install Wofi for the user
home.packages = with pkgs; [ wofi ];
# Wofi configuration
xdg.configFile."wofi/config".text = ''
dark
width=500
height=800
lines=10
columns=1
cache_dir=${xdgDataHome}/wofi
allow_images=true
allow_markup=true
show_drun=true
'';
# Catppuccin Mocha theme for Wofi
xdg.configFile."wofi/style.css".text = builtins.readFile "${pkgs.fetchFromGitHub {
owner = "catppuccin";
repo = "wofi";
rev = "a0c34a8e9d3a1f71b1b2a8e3b5b8e3e8b1b3b8e3"; # Replace with the correct SHA256 hash
sha256 = "0000000000000000000000000000000000000000000000000000"; # Replace with the correct SHA256 hash
}}/style-mocha.css";
};
}
@@ -1,7 +0,0 @@
{ config, pkgs, lib, user, inputs, flakeRoot,... }:
{
imports = [
# No subfolders to import
];
# .. put any code here
}
-14
View File
@@ -1,14 +0,0 @@
{ config, pkgs, lib, user, inputs, flakeRoot,... }:
{
imports = [
./hyprland.nix
./animations_effects/top.nix
./decorations/top.nix
./keyboard_binds/top.nix
./notifications/top.nix
./statusbar_tray/top.nix
./task_launcher/top.nix
./task_window_workspace_switcher/top.nix
./window_rules/top.nix
];
}
@@ -1,7 +0,0 @@
{ config, pkgs, lib, user, inputs, flakeRoot,... }:
{
imports = [
# No subfolders to import
];
# .. put any code here
}
@@ -1,7 +0,0 @@
{ config, pkgs, lib, user, inputs, flakeRoot,... }:
{
imports = [
# No subfolders to import
];
# .. put any code here
}
@@ -1,7 +0,0 @@
{ config, pkgs, lib, user, inputs, flakeRoot,... }:
{
imports = [
# No subfolders to import
];
# .. put any code here
}
@@ -1,24 +0,0 @@
{
config,
pkgs,
lib,
user,
inputs,
flakeRoot,
...
}:
let
bindingsContent = builtins.readFile (flakeRoot + "/assets/hyprland/conf/bindings.conf");
userConfig = import (flakeRoot + "/assets/flake/users/henrov.nix");
in
{
home-manager.users.${user.username} = {
home.stateVersion = userConfig.stateVersion;
home.username = userConfig.username;
home.homeDirectory = userConfig.homeDirectory;
wayland.windowManager.hyprland = {
enable = true;
extraConfig = bindingsContent;
};
};
}
@@ -1,7 +0,0 @@
{ config, pkgs, lib, user, inputs, flakeRoot,... }:
{
imports = [
# No subfolders to import
];
# .. put any code here
}
@@ -1,7 +0,0 @@
{ config, pkgs, lib, user, inputs, flakeRoot,... }:
{
imports = [
# No subfolders to import
];
# .. put any code here
}
@@ -1,7 +0,0 @@
{ config, pkgs, lib, user, inputs, flakeRoot,... }:
{
imports = [
# No subfolders to import
];
# .. put any code here
}
@@ -1,4 +0,0 @@
{ config, pkgs, lib, user, inputs, flakeRoot,... }:
{
# .. put any code here
}
@@ -1,7 +0,0 @@
{ config, pkgs, lib, user, inputs, flakeRoot,... }:
{
imports = [
# No subfolders to import
];
# .. put any code here
}
-14
View File
@@ -1,14 +0,0 @@
{ config, pkgs, lib, user, inputs, flakeRoot,... }:
{
imports = [
./animations_effects/top.nix
./decorations/top.nix
./keyboard_binds/top.nix
./notifications/top.nix
./statusbar_tray/top.nix
./task_launcher/top.nix
./task_window_workspace_switcher/top.nix
./window_rules/top.nix
];
# .. put any code here
}
@@ -1,7 +0,0 @@
{ config, pkgs, lib, user, inputs, flakeRoot,... }:
{
imports = [
# No subfolders to import
];
# .. put any code here
}
@@ -1,7 +0,0 @@
{ config, pkgs, lib, user, inputs, flakeRoot,... }:
{
imports = [
# No subfolders to import
];
# .. put any code here
}
@@ -1,7 +0,0 @@
{ config, pkgs, lib, user, inputs, flakeRoot,... }:
{
imports = [
# No subfolders to import
];
# .. put any code here
}
@@ -1,7 +0,0 @@
{ config, pkgs, lib, user, inputs, flakeRoot,... }:
{
imports = [
# No subfolders to import
];
# .. put any code here
}
@@ -1,7 +0,0 @@
{ config, pkgs, lib, user, inputs, flakeRoot,... }:
{
imports = [
# No subfolders to import
];
# .. put any code here
}
@@ -1,7 +0,0 @@
{ config, pkgs, lib, user, inputs, flakeRoot,... }:
{
imports = [
# No subfolders to import
];
# .. put any code here
}
@@ -1,59 +0,0 @@
{ config, pkgs, lib, user, ... }:
let
kittyConfigDir = "${config.home-manager.users.${user.username}.xdg.configHome}/kitty";
in
{
home-manager.users.${user.username} = {
programs.kitty = {
enable = true;
settings = {
font_family = "JetBrainsMono Nerd Font";
font_size = 12.0;
cursor = "Beam";
cursor_blink_interval = -1;
shell = "${pkgs.zsh}/bin/zsh";
};
};
# Catppuccin Mocha theme for Kitty (embedded)
xdg.configFile."kitty/kitty.conf".text = lib.concatStringsSep "\n" [
"# Catppuccin Mocha theme"
"background #1e1e2e"
"foreground #cdd6f4"
"selection_background #f5e0dc"
"selection_foreground #1e1e2e"
"url_color #f5e0dc"
"cursor #f5e0dc"
"cursor_text_color #1e1e2e"
"color0 #45475a"
"color8 #585b70"
"color1 #f38ba8"
"color9 #f38ba8"
"color2 #a6e3a1"
"color10 #a6e3a1"
"color3 #f9e2af"
"color11 #f9e2af"
"color4 #89b4fa"
"color12 #89b4fa"
"color5 #f5c2e7"
"color13 #f5c2e7"
"color6 #94e2d5"
"color14 #94e2d5"
"color7 #bac2de"
"color15 #bac2de"
"# Window settings"
"background_opacity 0.9"
"font_size 12.0"
"cursor_shape Beam"
];
};
}
@@ -1,27 +0,0 @@
{ config, pkgs, lib, user, ... }:
{
home-manager.users.${user.username} = {
programs.starship = {
enable = true;
};
# Catppuccin Mocha theme for Starship
xdg.configFile."starship.toml".text = ''
format = "$all"
[character]
success_symbol = "[](bold green)"
error_symbol = "[](bold red)"
[directory]
style = "bold lavender"
[git_branch]
symbol = " "
style = "bold maroon"
[package]
disabled = true
'';
};
}
@@ -1,9 +0,0 @@
{ config, pkgs, lib, user, inputs, flakeRoot,... }:
{
imports = [
./kitty.nix
./starship.nix
./zsh.nix
];
# .. put any code here
}
@@ -1,61 +0,0 @@
{ config, pkgs, lib, user, ... }:
let
zshConfigDir = "${config.home-manager.users.${user.username}.xdg.configHome}/zsh";
in
{
home-manager.users.${user.username} = {
programs.zsh = {
enable = true;
enableCompletion = true;
autosuggestion.enable = true;
syntaxHighlighting.enable = true;
oh-my-zsh = {
enable = true;
theme = "agnoster";
plugins = [
"git"
"zsh-autosuggestions"
"zsh-syntax-highlighting"
"docker"
"kubectl"
"history"
"command-not-found"
"extract"
];
};
shellAliases = {
ls = "exa --icons -a --group-directories-first";
ll = "exa --icons -la --group-directories-first";
};
};
# Consolidated .zshrc
xdg.configFile."zsh/.zshrc".text = lib.concatStringsSep "\n" [
"# Oh-My-Zsh"
"export ZSH=\"${zshConfigDir}\""
"source \"${pkgs.zsh}/share/zsh/functions/Newuser/zsh-newuser-install\""
"source \"${zshConfigDir}/oh-my-zsh.sh\""
""
"# Zsh options"
"setopt AUTO_CD"
"setopt CORRECT"
"setopt INTERACTIVE_COMMENTS"
""
"# Starship"
"eval \"$(starship init zsh)\""
""
"# fzf"
"source \"${pkgs.fzf}/shell/key-bindings.zsh\""
"source \"${pkgs.fzf}/shell/completion.zsh\""
""
"# User customizations"
"source \"${zshConfigDir}/custom.zsh\" 2>/dev/null"
];
# User customizations
xdg.configFile."zsh/custom.zsh".text = ''
export EDITOR="nvim"
export PATH="$HOME/.local/bin:$PATH"
'';
};
}
@@ -1,12 +0,0 @@
{ config, pkgs, lib, user, inputs, flakeRoot,... }:
{
imports = [
./accessibility/top.nix
./file_management/top.nix
./gaming/top.nix
./media_playback_editing/top.nix
./office_productivity/top.nix
./terminal_shell/top.nix
];
# .. put any code here
}
@@ -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,9 +0,0 @@
{ config, pkgs, lib, user, inputs, flakeRoot,... }:
{
imports = [
./wayland.nix
./login-tuigreeter.nix
# ./login-lightdm.nix
];
# .. put any code here
}
@@ -1,35 +0,0 @@
{ config, pkgs, lib, user, ... }:
{
# Enable essential services for a Wayland session
services.dbus.enable = true;
services.pipewire = {
enable = true;
alsa.enable = true;
pulse.enable = true;
wireplumber.enable = true;
};
# XDG Desktop Portal settings for better application integration
xdg.portal = {
enable = true;
config.common.default = [ "hyprland" "gtk" ];
};
# Environment variables for a Wayland session
environment.sessionVariables = {
XDG_SESSION_TYPE = "wayland";
XDG_CURRENT_DESKTOP = "Hyprland";
XCURSOR_SIZE = "24";
};
# Home Manager Wayland configurations
home-manager.users.${user.username} = {
xdg.portal = {
enable = true;
extraPortals = with pkgs; [ xdg-desktop-portal-hyprland ];
config.hyprland = {
"org.freedesktop.impl.portal.Screencast" = [ "hyprland" ];
};
};
};
}
@@ -1,7 +0,0 @@
{ config, pkgs, lib, user, inputs, flakeRoot,... }:
{
imports = [
# No subfolders to import
];
# .. put any code here
}
@@ -1,7 +0,0 @@
{ config, pkgs, lib, user, inputs, flakeRoot,... }:
{
imports = [
# No subfolders to import
];
# .. put any code here
}
@@ -1,7 +0,0 @@
{ config, pkgs, lib, user, inputs, flakeRoot,... }:
{
imports = [
# No subfolders to import
];
# .. put any code here
}
@@ -1,11 +0,0 @@
{ config, pkgs, lib, user, inputs, flakeRoot,... }:
{
imports = [
./databases/top.nix
./devops_ci_cd/top.nix
./programming_languages/top.nix
./virtualization/top.nix
./web_development/top.nix
];
# .. put any code here
}
@@ -1,7 +0,0 @@
{ config, pkgs, lib, user, inputs, flakeRoot,... }:
{
imports = [
# No subfolders to import
];
# .. put any code here
}
@@ -1,7 +0,0 @@
{ config, pkgs, lib, user, inputs, flakeRoot,... }:
{
imports = [
# No subfolders to import
];
# .. put any code here
}
@@ -1,7 +0,0 @@
{ config, pkgs, lib, user, inputs, flakeRoot,... }:
{
imports = [
# No subfolders to import
];
# .. put any code here
}
@@ -1,7 +0,0 @@
{ config, pkgs, lib, user, inputs, flakeRoot,... }:
{
imports = [
# No subfolders to import
];
# .. put any code here
}
@@ -1,7 +0,0 @@
{ config, pkgs, lib, user, inputs, flakeRoot,... }:
{
imports = [
# No subfolders to import
];
# .. put any code here
}
@@ -1,7 +0,0 @@
{ config, pkgs, lib, user, inputs, flakeRoot,... }:
{
imports = [
# No subfolders to import
];
# .. put any code here
}
@@ -1,7 +0,0 @@
{ config, pkgs, lib, user, inputs, flakeRoot,... }:
{
imports = [
# No subfolders to import
];
# .. put any code here
}
@@ -1,7 +0,0 @@
{ config, pkgs, lib, user, inputs, flakeRoot,... }:
{
imports = [
# No subfolders to import
];
# .. put any code here
}
@@ -1,7 +0,0 @@
{ config, pkgs, lib, user, inputs, flakeRoot,... }:
{
imports = [
# No subfolders to import
];
# .. put any code here
}
@@ -1,7 +0,0 @@
{ config, pkgs, lib, user, inputs, flakeRoot,... }:
{
imports = [
# No subfolders to import
];
# .. put any code here
}
@@ -1,7 +0,0 @@
{ config, pkgs, lib, user, inputs, flakeRoot,... }:
{
imports = [
# No subfolders to import
];
# .. put any code here
}
@@ -1,7 +0,0 @@
{ config, pkgs, lib, user, inputs, flakeRoot,... }:
{
imports = [
# No subfolders to import
];
# .. put any code here
}
@@ -1,7 +0,0 @@
{ config, pkgs, lib, user, inputs, flakeRoot,... }:
{
imports = [
# No subfolders to import
];
# .. put any code here
}
@@ -1,7 +0,0 @@
{ config, pkgs, lib, user, inputs, flakeRoot,... }:
{
imports = [
# No subfolders to import
];
# .. put any code here
}
@@ -1,7 +0,0 @@
{ config, pkgs, lib, user, inputs, flakeRoot,... }:
{
imports = [
# No subfolders to import
];
# .. put any code here
}
@@ -1,19 +0,0 @@
{ config, pkgs, lib, user, inputs, flakeRoot,... }:
{
imports = [
./audio/top.nix
./backups/top.nix
./bluetooth/top.nix
./disk_management/top.nix
./hardware_sensors/top.nix
./logging_monitoring/top.nix
./login_manager/top.nix
./monitor_setup/top.nix
./networking/top.nix
./power_management/top.nix
./printers_scanners/top.nix
./security/top.nix
./system_updates/top.nix
];
# .. put any code here
}
-10
View File
@@ -1,10 +0,0 @@
{ config, pkgs, lib, user, inputs, flakeRoot,... }:
{
imports = [
./applications/top.nix
./core/top.nix
./development/top.nix
./system_management/top.nix
];
# .. put any code here
}
-8
View File
@@ -1,8 +0,0 @@
{ config, pkgs, lib, ... }:
{
imports = [
./system/top.nix
./hyprland/top.nix
# ./mangowc/top.nix
];
}
+9 -7
View File
@@ -6,13 +6,14 @@
flakeRoot,
...
}:
let
hyprlandConfigDir = "${config.home-manager.users.${user.username}.xdg.configHome}/hypr";
# Dynamically read all files in assets/hyprland/conf/
# Dynamically read all files in assets/hyprland/conf/hypr
hyprlandConfs =
lib.genAttrs (builtins.attrNames (builtins.readDir "${flakeRoot}/assets/hyprland/conf"))
lib.genAttrs (builtins.attrNames (builtins.readDir "${flakeRoot}/assets/hyprland/conf/hypr"))
(name: {
text = builtins.readFile "${flakeRoot}/assets/hyprland/conf/${name}";
text = builtins.readFile "${flakeRoot}/assets/hyprland/conf/hypr/${name}";
});
in
{
@@ -33,10 +34,11 @@ in
enable = true;
};
# Merge dynamic Hyprland configs with existing xdg.configFile
# Ensure the Hyprland config directory exists
xdg.configFile = {
# Your existing manual configs (if any)
}
// hyprlandConfs;
"hypr/.keep" = {
text = "";
};
} // hyprlandConfs;
};
}
@@ -8,7 +8,7 @@
...
}:
let
bindingsContent = builtins.readFile (flakeRoot + "/assets/hyprland/conf/bindings.conf");
bindingsContent = builtins.readFile (flakeRoot + "/assets/hyprland/conf/hypr/bindings.conf");
in
{
home-manager.users.${user.username} = {
@@ -1,24 +1 @@
{
config,
pkgs,
lib,
user,
inputs,
flakeRoot,
...
}:
let
bindingsContent = builtins.readFile (flakeRoot + "/assets/hyprland/conf/bindings.conf");
userConfig = import (flakeRoot + "/assets/flake/users/henrov.nix");
in
{
home-manager.users.${user.username} = {
home.stateVersion = userConfig.stateVersion;
home.username = userConfig.username;
home.homeDirectory = userConfig.homeDirectory;
wayland.windowManager.hyprland = {
enable = true;
extraConfig = bindingsContent;
};
};
}
# Your code here...
@@ -1,4 +1,4 @@
{ config, pkgs, lib, user, ... }:
{ config, pkgs, lib, user, flakeRoot, ... }:
let
kittyConfigDir = "${config.home-manager.users.${user.username}.xdg.configHome}/kitty";
in
@@ -6,54 +6,14 @@ in
home-manager.users.${user.username} = {
programs.kitty = {
enable = true;
settings = {
font_family = "JetBrainsMono Nerd Font";
font_size = 12.0;
cursor = "Beam";
cursor_blink_interval = -1;
shell = "${pkgs.zsh}/bin/zsh";
};
};
# Catppuccin Mocha theme for Kitty (embedded)
# Copy the actual kitty.conf (not a symlink)
xdg.configFile."kitty/kitty.conf".text = lib.concatStringsSep "\n" [
"# Catppuccin Mocha theme"
"background #1e1e2e"
"foreground #cdd6f4"
"selection_background #f5e0dc"
"selection_foreground #1e1e2e"
"url_color #f5e0dc"
"cursor #f5e0dc"
"cursor_text_color #1e1e2e"
"color0 #45475a"
"color8 #585b70"
"color1 #f38ba8"
"color9 #f38ba8"
"color2 #a6e3a1"
"color10 #a6e3a1"
"color3 #f9e2af"
"color11 #f9e2af"
"color4 #89b4fa"
"color12 #89b4fa"
"color5 #f5c2e7"
"color13 #f5c2e7"
"color6 #94e2d5"
"color14 #94e2d5"
"color7 #bac2de"
"color15 #bac2de"
"# Window settings"
"background_opacity 0.9"
"font_size 12.0"
"cursor_shape Beam"
(builtins.readFile "${flakeRoot}/assets/system/conf/kitty/kitty.conf")
];
# Copy the theme file
xdg.configFile."kitty/Catppuccin-Mocha.conf".source = "${flakeRoot}/assets/system/conf/kitty/Catppuccin-Mocha.conf";
};
}
@@ -1,27 +1,16 @@
{ config, pkgs, lib, user, ... }:
{
home-manager.users.${user.username} = {
programs.starship = {
enable = true;
};
# Catppuccin Mocha theme for Starship
xdg.configFile."starship.toml".text = ''
format = "$all"
[character]
success_symbol = "[](bold green)"
error_symbol = "[](bold red)"
[directory]
style = "bold lavender"
[git_branch]
symbol = " "
style = "bold maroon"
[package]
disabled = true
'';
lib,
config,
pkgs,
flakeRoot,
...
}:
let
starshipConfig = lib.importTOML (flakeRoot + "/assets/system/conf/starship.toml");
in
{
programs.starship = {
enable = true;
settings = starshipConfig;
};
}
@@ -1,61 +1,95 @@
{ config, pkgs, lib, user, ... }:
let
zshConfigDir = "${config.home-manager.users.${user.username}.xdg.configHome}/zsh";
in
{
home-manager.users.${user.username} = {
lib,
config,
pkgs,
...
}:
{
# --- NixOS Configuration ---
environment.systemPackages = with pkgs; [
zsh
git
docker
];
# --- Home Manager Configuration ---
home-manager.users.henrov = {
programs.zsh = {
enable = true;
enableCompletion = true;
autosuggestion.enable = true;
syntaxHighlighting.enable = true;
# Enable oh-my-zsh and use its plugins
oh-my-zsh = {
enable = true;
theme = "agnoster";
plugins = [
"git"
"docker"
"direnv"
"zsh-autosuggestions"
"zsh-syntax-highlighting"
"docker"
"kubectl"
"history"
"command-not-found"
"extract"
"zsh-completions"
"zsh-history-substring-search"
];
theme = "agnoster"; # Fallback, overridden below
};
shellAliases = {
ls = "exa --icons -a --group-directories-first";
ll = "exa --icons -la --group-directories-first";
};
# Source Nixpkgs-provided plugins explicitly
initContent = ''
# Source plugins installed by Nix
source ${pkgs.zsh-autosuggestions}/share/zsh-autosuggestions/zsh-autosuggestions.zsh
source ${pkgs.zsh-syntax-highlighting}/share/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh
source ${pkgs.zsh-history-substring-search}/share/zsh-history-substring-search/zsh-history-substring-search.zsh
# Catppuccin Mocha theme for oh-my-zsh
local mocha_base="#1E1E2E"
local mocha_surface0="#313244"
local mocha_text="#CDD6F4"
local mocha_lavender="#B4BEFE"
local mocha_blue="#89B4FA"
local mocha_sapphire="#74C7EC"
local mocha_teal="#94E2D5"
local mocha_green="#A6E3A1"
local mocha_yellow="#F9E2AF"
local mocha_peach="#FAB387"
local mocha_maroon="#EBA0AC"
local mocha_red="#F38BA8"
local mocha_mauve="#CBA6F7"
local mocha_pink="#F5C2E7"
local mocha_flamingo="#F2CDCD"
local mocha_rosewater="#F5E0DC"
# Prompt
PROMPT='%{$fg[$mocha_blue]%}%n%{$reset_color%}@%{$fg[$mocha_peach]%}%m%{$reset_color%} %{$fg[$mocha_lavender]%}%~%{$reset_color%} %{$fg[$mocha_red]%}$%{$reset_color%} '
RPROMPT='%{$fg[$mocha_green]%}%T%{$reset_color%}'
# Git prompt
ZSH_THEME_GIT_PROMPT_PREFIX="%{$fg[$mocha_yellow]%}(%{$reset_color%}"
ZSH_THEME_GIT_PROMPT_SUFFIX="%{$fg[$mocha_yellow]%})%{$reset_color%}"
ZSH_THEME_GIT_PROMPT_DIRTY="%{$fg[$mocha_red]%}%{$reset_color%}"
ZSH_THEME_GIT_PROMPT_CLEAN="%{$fg[$mocha_green]%}%{$reset_color%}"
ZSH_THEME_GIT_PROMPT_AHEAD="%{$fg[$mocha_blue]%}%{$reset_color%}"
ZSH_THEME_GIT_PROMPT_BEHIND="%{$fg[$mocha_blue]%}%{$reset_color%}"
ZSH_THEME_GIT_PROMPT_UNTRACKED="%{$fg[$mocha_pink]%}?%{$reset_color%}"
ZSH_THEME_GIT_PROMPT_STAGED="%{$fg[$mocha_sapphire]%}+%{$reset_color%}"
ZSH_THEME_GIT_PROMPT_UNSTAGED="%{$fg[$mocha_red]%}!%{$reset_color%}"
# Virtualenv/pyenv
ZSH_THEME_VIRTUAL_ENV_PREFIX="(%{$fg[$mocha_teal]%}"
ZSH_THEME_VIRTUAL_ENV_SUFFIX="%{$reset_color%})"
# Right prompt with Git status
RPROMPT='$(git_prompt_info) %{$fg[$mocha_green]%}%T%{$reset_color%}'
# Set the custom theme
ZSH_THEME="catppuccin-mocha"
'';
};
# Consolidated .zshrc
xdg.configFile."zsh/.zshrc".text = lib.concatStringsSep "\n" [
"# Oh-My-Zsh"
"export ZSH=\"${zshConfigDir}\""
"source \"${pkgs.zsh}/share/zsh/functions/Newuser/zsh-newuser-install\""
"source \"${zshConfigDir}/oh-my-zsh.sh\""
""
"# Zsh options"
"setopt AUTO_CD"
"setopt CORRECT"
"setopt INTERACTIVE_COMMENTS"
""
"# Starship"
"eval \"$(starship init zsh)\""
""
"# fzf"
"source \"${pkgs.fzf}/shell/key-bindings.zsh\""
"source \"${pkgs.fzf}/shell/completion.zsh\""
""
"# User customizations"
"source \"${zshConfigDir}/custom.zsh\" 2>/dev/null"
# Home Manager packages (optional)
home.packages = with pkgs; [
direnv
git-extras
];
# User customizations
xdg.configFile."zsh/custom.zsh".text = ''
export EDITOR="nvim"
export PATH="$HOME/.local/bin:$PATH"
'';
};
}
@@ -1,6 +1,8 @@
{ config, pkgs, lib, user, inputs, flakeRoot,... }:
{
imports = [
./packages.nix
./flatpaks.nix
./accessibility/top.nix
./file_management/top.nix
./gaming/top.nix
@@ -8,5 +10,5 @@
./office_productivity/top.nix
./terminal_shell/top.nix
];
# .. put any code here
nixpkgs.config.allowUnfree = true;
}
+3 -1
View File
@@ -2,8 +2,10 @@
{
imports = [
./wayland.nix
./eww.nix
./waybar.nix
./login-tuigreeter.nix
# ./login-lightdm.nix
#./login-lightdm.nix
];
# .. put any code here
}
@@ -1,28 +1,5 @@
{ config, pkgs, lib, user, ... }:
{
# Enable essential services for a Wayland session
services.dbus.enable = true;
services.pipewire = {
enable = true;
alsa.enable = true;
pulse.enable = true;
wireplumber.enable = true;
};
# XDG Desktop Portal settings for better application integration
xdg.portal = {
enable = true;
config.common.default = [ "hyprland" "gtk" ];
};
# Environment variables for a Wayland session
environment.sessionVariables = {
XDG_SESSION_TYPE = "wayland";
XDG_CURRENT_DESKTOP = "Hyprland";
XCURSOR_SIZE = "24";
};
# Home Manager Wayland configurations
home-manager.users.${user.username} = {
xdg.portal = {
enable = true;