This commit is contained in:
Evan Reichard 2025-03-27 13:42:27 -04:00
parent e354c4e194
commit 4e82b684e5
17 changed files with 239 additions and 218 deletions

View File

@ -1,10 +0,0 @@
{
programs.btop = {
enable = true;
};
home.file.".config/btop/btop.conf".text =
builtins.readFile ./config/btop.conf;
home.file.".config/btop/themes/catppuccin_mocha.theme".text =
builtins.readFile ./config/catppuccin_mocha.theme;
}

View File

@ -1,71 +1,29 @@
{ pkgs, ... }:
let
inherit (pkgs.lib) optionals mkForce;
inherit (pkgs.stdenv) isLinux isDarwin;
in
{
imports = [
./btop
./direnv
./powerline
./readline
./hyprland
./waybar
];
reichardnix = {
programs.nvim.enable = true;
programs.btop.enable = true;
programs.direnv.enable = true;
programs.ghostty.enable = true;
programs.git.enable = true;
programs.k9s.enable = true;
programs.nvim.enable = true;
programs.hyprland.enable = false;
programs.aws.enable = false;
};
# Home Manager Config
home.stateVersion = "24.11";
home.username = "evanreichard";
home.homeDirectory = mkForce (if isLinux then "/home/evanreichard" else "/Users/evanreichard");
programs.home-manager.enable = true;
# Global Packages
programs.jq.enable = true;
programs.pandoc.enable = true;
home.packages = with pkgs; [
# --- Android Dev ---
android-tools
# --- AWS ---
cw
awscli2
ssm-session-manager-plugin
# --- Kubernetes ---
kubectl
kubernetes-helm
# --- Uncategorized ---
imagemagick
mosh
python311
texliveSmall # Pandoc PDF Dep
google-cloud-sdk
tldr
]
++ optionals isLinux [
ghostty
hyprpaper
firefox
]
++ optionals isDarwin [ ];
# Misc Programs
programs.jq.enable = true;
programs.k9s.enable = true;
programs.pandoc.enable = true;
# Enable Flakes & Commands
nix = {
package = mkForce pkgs.nix;
settings = {
experimental-features = "nix-command flakes";
};
};
];
# SQLite Configuration
home.file.".sqliterc".text = ''
@ -73,6 +31,7 @@ in
.mode column
'';
# Darwin Spotlight Indexing Hack
disabledModules = [ "targets/darwin/linkapps.nix" ];
# Enable Home Manager & Self Manage
home.stateVersion = "24.11";
programs.home-manager.enable = true;
}

View File

@ -1,6 +0,0 @@
{
programs.direnv = {
enable = true;
nix-direnv.enable = true;
};
}

View File

@ -1,8 +0,0 @@
{ pkgs, lib, ... }:
lib.mkIf pkgs.stdenv.isLinux {
wayland.windowManager.hyprland = {
enable = true;
extraConfig = builtins.readFile ./config/hyprland.conf;
};
}

View File

@ -1,16 +0,0 @@
{
programs.powerline-go = {
enable = true;
settings = {
git-mode = "compact";
theme = "gruvbox";
};
modules = [
"host"
"cwd"
"git"
"docker"
"venv"
];
};
}

View File

@ -1,10 +0,0 @@
{
programs.readline = {
enable = true;
extraConfig = ''
# Approximate VIM Dracula Colors
set vi-ins-mode-string \1\e[01;38;5;23;48;5;231m\2 I \1\e[38;5;231;48;5;238m\2\1\e[0m\2
set vi-cmd-mode-string \1\e[01;38;5;22;48;5;148m\2 C \1\e[38;5;148;48;5;238m\2\1\e[0m\2
'';
};
}

View File

@ -1,114 +0,0 @@
{ lib, pkgs, ... }:
lib.mkIf pkgs.stdenv.isLinux {
programs.waybar = {
enable = true;
style = builtins.readFile ./config/style.css;
settings = [{
layer = "top";
position = "top";
mod = "dock";
exclusive = true;
passtrough = false;
gtk-layer-shell = true;
height = 0;
modules-left = [
"hyprland/workspaces"
"custom/divider"
"custom/divider"
"cpu"
"custom/divider"
"memory"
];
modules-center = [ "hyprland/window" ];
modules-right = [
"tray"
"network"
"custom/divider"
"backlight"
"custom/divider"
"pulseaudio"
"custom/divider"
"battery"
"custom/divider"
"clock"
];
"hyprland/window" = { format = "{}"; };
"wlr/workspaces" = {
on-scroll-up = "hyprctl dispatch workspace e+1";
on-scroll-down = "hyprctl dispatch workspace e-1";
all-outputs = true;
on-click = "activate";
};
battery = { format = "󰁹 {}%"; };
cpu = {
interval = 10;
format = "󰻠 {}%";
max-length = 10;
on-click = "";
};
memory = {
interval = 30;
format = " {}%";
format-alt = " {used:0.1f}G";
max-length = 10;
};
backlight = {
format = "󰖨 {}";
device = "acpi_video0";
};
tray = {
icon-size = 13;
tooltip = false;
spacing = 10;
};
network = {
format = "󰖩 {essid}";
format-disconnected = "󰖪 disconnected";
};
clock = {
format = " {:%I:%M %p %m/%d} ";
tooltip-format = ''
<big>{:%Y %B}</big>
<tt><small>{calendar}</small></tt>'';
};
pulseaudio = {
format = "{icon} {volume}%";
tooltip = false;
format-muted = " Muted";
on-click = "pamixer -t";
on-scroll-up = "pamixer -i 5";
on-scroll-down = "pamixer -d 5";
scroll-step = 5;
format-icons = {
headphone = "";
hands-free = "";
headset = "";
phone = "";
portable = "";
car = "";
default = [ "" "" "" ];
};
};
"pulseaudio#microphone" = {
format = "{format_source}";
tooltip = false;
format-source = " {volume}%";
format-source-muted = " Muted";
on-click = "pamixer --default-source -t";
on-scroll-up = "pamixer --default-source -i 5";
on-scroll-down = "pamixer --default-source -d 5";
scroll-step = 5;
};
"custom/divider" = {
format = " | ";
interval = "once";
tooltip = false;
};
"custom/endright" = {
format = "_";
interval = "once";
tooltip = false;
};
}];
};
}

View File

@ -0,0 +1,18 @@
{ lib, pkgs, config, namespace, ... }:
let
inherit (lib) mkIf;
cfg = config.${namespace}.programs.aws;
in
{
options.${namespace}.programs.aws = {
enable = lib.mkEnableOption "AWS";
};
config = mkIf cfg.enable {
home.packages = with pkgs; [
cw
awscli2
ssm-session-manager-plugin
];
};
}

View File

@ -0,0 +1,19 @@
{ lib, config, namespace, ... }:
let
inherit (lib) mkIf;
cfg = config.${namespace}.programs.btop;
in
{
options.${namespace}.programs.btop = {
enable = lib.mkEnableOption "btop";
};
config = mkIf cfg.enable {
programs.btop.enable = true;
home.file.".config/btop/btop.conf".text =
builtins.readFile ./config/btop.conf;
home.file.".config/btop/themes/catppuccin_mocha.theme".text =
builtins.readFile ./config/catppuccin_mocha.theme;
};
}

View File

@ -0,0 +1,17 @@
{ lib, config, namespace, ... }:
let
inherit (lib) mkIf;
cfg = config.${namespace}.programs.direnv;
in
{
options.${namespace}.programs.direnv = {
enable = lib.mkEnableOption "direnv";
};
config = mkIf cfg.enable {
programs.direnv = {
enable = true;
nix-direnv.enable = true;
};
};
}

View File

@ -26,6 +26,30 @@ in
'';
};
programs.powerline-go = {
enable = true;
settings = {
git-mode = "compact";
theme = "gruvbox";
};
modules = [
"host"
"cwd"
"git"
"docker"
"venv"
];
};
programs.readline = {
enable = true;
extraConfig = ''
# Approximate VIM Dracula Colors
set vi-ins-mode-string \1\e[01;38;5;23;48;5;231m\2 I \1\e[38;5;231;48;5;238m\2\1\e[0m\2
set vi-cmd-mode-string \1\e[01;38;5;22;48;5;148m\2 C \1\e[38;5;148;48;5;238m\2\1\e[0m\2
'';
};
home.packages = with pkgs; [
# Pending Darwin @ https://github.com/NixOS/nixpkgs/pull/369788
# ghostty

View File

@ -0,0 +1,129 @@
{ lib, config, namespace, ... }:
let
inherit (lib) mkIf;
cfg = config.${namespace}.programs.hyprland;
in
{
options.${namespace}.programs.hyprland = {
enable = lib.mkEnableOption "Hyprland";
};
config = mkIf cfg.enable {
wayland.windowManager.hyprland = {
enable = true;
extraConfig = builtins.readFile ./config/hyprland.conf;
};
programs.waybar = {
enable = true;
style = builtins.readFile ./config/waybar-style.css;
settings = [{
layer = "top";
position = "top";
mod = "dock";
exclusive = true;
passtrough = false;
gtk-layer-shell = true;
height = 0;
modules-left = [
"hyprland/workspaces"
"custom/divider"
"custom/divider"
"cpu"
"custom/divider"
"memory"
];
modules-center = [ "hyprland/window" ];
modules-right = [
"tray"
"network"
"custom/divider"
"backlight"
"custom/divider"
"pulseaudio"
"custom/divider"
"battery"
"custom/divider"
"clock"
];
"hyprland/window" = { format = "{}"; };
"wlr/workspaces" = {
on-scroll-up = "hyprctl dispatch workspace e+1";
on-scroll-down = "hyprctl dispatch workspace e-1";
all-outputs = true;
on-click = "activate";
};
battery = { format = "󰁹 {}%"; };
cpu = {
interval = 10;
format = "󰻠 {}%";
max-length = 10;
on-click = "";
};
memory = {
interval = 30;
format = " {}%";
format-alt = " {used:0.1f}G";
max-length = 10;
};
backlight = {
format = "󰖨 {}";
device = "acpi_video0";
};
tray = {
icon-size = 13;
tooltip = false;
spacing = 10;
};
network = {
format = "󰖩 {essid}";
format-disconnected = "󰖪 disconnected";
};
clock = {
format = " {:%I:%M %p %m/%d} ";
tooltip-format = ''
<big>{:%Y %B}</big>
<tt><small>{calendar}</small></tt>'';
};
pulseaudio = {
format = "{icon} {volume}%";
tooltip = false;
format-muted = " Muted";
on-click = "pamixer -t";
on-scroll-up = "pamixer -i 5";
on-scroll-down = "pamixer -d 5";
scroll-step = 5;
format-icons = {
headphone = "";
hands-free = "";
headset = "";
phone = "";
portable = "";
car = "";
default = [ "" "" "" ];
};
};
"pulseaudio#microphone" = {
format = "{format_source}";
tooltip = false;
format-source = " {volume}%";
format-source-muted = " Muted";
on-click = "pamixer --default-source -t";
on-scroll-up = "pamixer --default-source -i 5";
on-scroll-down = "pamixer --default-source -d 5";
scroll-step = 5;
};
"custom/divider" = {
format = " | ";
interval = "once";
tooltip = false;
};
"custom/endright" = {
format = "_";
interval = "once";
tooltip = false;
};
}];
};
};
}

View File

@ -0,0 +1,19 @@
{ lib, pkgs, config, namespace, ... }:
let
inherit (lib) mkIf;
cfg = config.${namespace}.programs.k9s;
in
{
options.${namespace}.programs.k9s = {
enable = lib.mkEnableOption "k9s";
};
config = mkIf cfg.enable {
programs.k9s.enable = true;
home.packages = with pkgs; [
kubectl
kubernetes-helm
];
};
}