2 Commits

Author SHA1 Message Date
Henry Sipp ad2dfc9af3 Fixes 2025-07-28 10:15:50 -05:00
Henry Sipp e3f8ea40cf Update theme system 2025-07-28 09:21:43 -05:00
36 changed files with 330 additions and 424 deletions
+1 -2
View File
@@ -2,9 +2,8 @@
Omarchy-nix (Omanix?) is an opinionated NixOS flake to help you get started as fast as possible with NixOS and Hyprland. It is primarily a reimplementation of [DHH's Omarchy](https://github.com/basecamp/omarchy) project - an opinionated Arch/Hyprland setup for modern web development.
__This isn't meant to be full feature parity with Omarchy and likely never will be, especially with how fast the feature development and funding has been for that project. Instead, think of this as more of a launch pad to get your own similar Nix config set up!__
This was mostly spun up in a weekend so if you have any issues please let me know, my goal is to eventually make this as seamless an install experience as Omarchy itself!
I've personally moved to using regular Arch Omarchy full-time for a number of reasons. I'm not actively working on this repo but if you'd like to contribute please send a PR :)
## Quick Start
Generated
+42 -42
View File
@@ -20,11 +20,11 @@
]
},
"locked": {
"lastModified": 1753216019,
"narHash": "sha256-zik7WISrR1ks2l6T1MZqZHb/OqroHdJnSnAehkE0kCk=",
"lastModified": 1751740947,
"narHash": "sha256-35040CHH7P3JGmhGVfEb2oJHL/A5mI2IXumhkxrBnao=",
"owner": "hyprwm",
"repo": "aquamarine",
"rev": "be166e11d86ba4186db93e10c54a141058bdce49",
"rev": "dfc1db15a08c4cd234288f66e1199c653495301f",
"type": "github"
},
"original": {
@@ -52,11 +52,11 @@
"flake-compat": {
"flake": false,
"locked": {
"lastModified": 1747046372,
"narHash": "sha256-CIVLLkVgvHYbgI2UpXvIIBJ12HWgX+fjA8Xf8PUmqCY=",
"lastModified": 1696426674,
"narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=",
"owner": "edolstra",
"repo": "flake-compat",
"rev": "9100a0f413b0c601e0533d1d94ffd501ce2e7885",
"rev": "0f9255e01c2351cc7d116c072cb317785dd33b33",
"type": "github"
},
"original": {
@@ -94,11 +94,11 @@
]
},
"locked": {
"lastModified": 1755229570,
"narHash": "sha256-soZegto0xXzG2zYlu/zjknDHv0Z7tRS5EQs+Z/VRTBg=",
"lastModified": 1751990210,
"narHash": "sha256-krWErNDl9ggMLSfK00Q2BcoSk3+IRTSON/DiDgUzzMw=",
"owner": "nix-community",
"repo": "home-manager",
"rev": "11626a4383b458f8dc5ea3237eaa04e8ab1912f3",
"rev": "218da00bfa73f2a61682417efe74549416c16ba6",
"type": "github"
},
"original": {
@@ -123,11 +123,11 @@
]
},
"locked": {
"lastModified": 1753964049,
"narHash": "sha256-lIqabfBY7z/OANxHoPeIrDJrFyYy9jAM4GQLzZ2feCM=",
"lastModified": 1749155331,
"narHash": "sha256-XR9fsI0zwLiFWfqi/pdS/VD+YNorKb3XIykgTg4l1nA=",
"owner": "hyprwm",
"repo": "hyprcursor",
"rev": "44e91d467bdad8dcf8bbd2ac7cf49972540980a5",
"rev": "45fcc10b4c282746d93ec406a740c43b48b4ef80",
"type": "github"
},
"original": {
@@ -152,11 +152,11 @@
]
},
"locked": {
"lastModified": 1754305013,
"narHash": "sha256-u+M2f0Xf1lVHzIPQ7DsNCDkM1NYxykOSsRr4t3TbSM4=",
"lastModified": 1751808145,
"narHash": "sha256-OXgL0XaKMmfX2rRQkt9SkJw+QNfv0jExlySt1D6O72g=",
"owner": "hyprwm",
"repo": "hyprgraphics",
"rev": "4c1d63a0f22135db123fc789f174b89544c6ec2d",
"rev": "b841473a0bd4a1a74a0b64f1ec2ab199035c349f",
"type": "github"
},
"original": {
@@ -181,11 +181,11 @@
"xdph": "xdph"
},
"locked": {
"lastModified": 1755184403,
"narHash": "sha256-VI+ZPD/uIFjzYW8IcyvBgvwyDIvUe4/xh/kOHTbITX8=",
"lastModified": 1751995875,
"narHash": "sha256-ud9sl1RjmzAzalH2ocmGPs182xvr7GktjVIYvzJamwo=",
"owner": "hyprwm",
"repo": "Hyprland",
"rev": "60d769a89908c29e19100059985db15a7b6bab6a",
"rev": "9517d0eaa4ef93de67dc80fecca7a826f7ad556d",
"type": "github"
},
"original": {
@@ -274,11 +274,11 @@
]
},
"locked": {
"lastModified": 1753819801,
"narHash": "sha256-tHe6XeNeVeKapkNM3tcjW4RuD+tB2iwwoogWJOtsqTI=",
"lastModified": 1750371812,
"narHash": "sha256-D868K1dVEACw17elVxRgXC6hOxY+54wIEjURztDWLk8=",
"owner": "hyprwm",
"repo": "hyprland-qtutils",
"rev": "b308a818b9dcaa7ab8ccab891c1b84ebde2152bc",
"rev": "b13c7481e37856f322177010bdf75fccacd1adc8",
"type": "github"
},
"original": {
@@ -303,11 +303,11 @@
]
},
"locked": {
"lastModified": 1753622892,
"narHash": "sha256-0K+A+gmOI8IklSg5It1nyRNv0kCNL51duwnhUO/B8JA=",
"lastModified": 1750371198,
"narHash": "sha256-/iuJ1paQOBoSLqHflRNNGyroqfF/yvPNurxzcCT0cAE=",
"owner": "hyprwm",
"repo": "hyprlang",
"rev": "23f0debd2003f17bd65f851cd3f930cff8a8c809",
"rev": "cee01452bca58d6cadb3224e21e370de8bc20f0b",
"type": "github"
},
"original": {
@@ -328,11 +328,11 @@
]
},
"locked": {
"lastModified": 1754481650,
"narHash": "sha256-6u6HdEFJh5gY6VfyMQbhP7zDdVcqOrCDTkbiHJmAtMI=",
"lastModified": 1751888065,
"narHash": "sha256-F2SV9WGqgtRsXIdUrl3sRe0wXlQD+kRRZcSfbepjPJY=",
"owner": "hyprwm",
"repo": "hyprutils",
"rev": "df6b8820c4a0835d83d0c7c7be86fbc555f1f7fd",
"rev": "a8229739cf36d159001cfc203871917b83fdf917",
"type": "github"
},
"original": {
@@ -353,11 +353,11 @@
]
},
"locked": {
"lastModified": 1751897909,
"narHash": "sha256-FnhBENxihITZldThvbO7883PdXC/2dzW4eiNvtoV5Ao=",
"lastModified": 1751881472,
"narHash": "sha256-meB0SnXbwIe2trD041MLKEv6R7NZ759QwBcVIhlSBfE=",
"owner": "hyprwm",
"repo": "hyprwayland-scanner",
"rev": "fcca0c61f988a9d092cbb33e906775014c61579d",
"rev": "8fb426b3e5452fd9169453fd6c10f8c14ca37120",
"type": "github"
},
"original": {
@@ -387,11 +387,11 @@
},
"nixpkgs": {
"locked": {
"lastModified": 1754725699,
"narHash": "sha256-iAcj9T/Y+3DBy2J0N+yF9XQQQ8IEb5swLFzs23CdP88=",
"lastModified": 1751792365,
"narHash": "sha256-J1kI6oAj25IG4EdVlg2hQz8NZTBNYvIS0l4wpr9KcUo=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "85dbfc7aaf52ecb755f87e577ddbe6dbbdbc1054",
"rev": "1fd8bada0b6117e6c7eb54aad5813023eed37ccb",
"type": "github"
},
"original": {
@@ -418,11 +418,11 @@
},
"nixpkgs_2": {
"locked": {
"lastModified": 1755186698,
"narHash": "sha256-wNO3+Ks2jZJ4nTHMuks+cxAiVBGNuEBXsT29Bz6HASo=",
"lastModified": 1751792365,
"narHash": "sha256-J1kI6oAj25IG4EdVlg2hQz8NZTBNYvIS0l4wpr9KcUo=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "fbcf476f790d8a217c3eab4e12033dc4a0f6d23c",
"rev": "1fd8bada0b6117e6c7eb54aad5813023eed37ccb",
"type": "github"
},
"original": {
@@ -442,11 +442,11 @@
]
},
"locked": {
"lastModified": 1754416808,
"narHash": "sha256-c6yg0EQ9xVESx6HGDOCMcyRSjaTpNJP10ef+6fRcofA=",
"lastModified": 1750779888,
"narHash": "sha256-wibppH3g/E2lxU43ZQHC5yA/7kIKLGxVEnsnVK1BtRg=",
"owner": "cachix",
"repo": "git-hooks.nix",
"rev": "9c52372878df6911f9afc1e2a1391f55e4dfc864",
"rev": "16ec914f6fb6f599ce988427d9d94efddf25fe6d",
"type": "github"
},
"original": {
@@ -506,11 +506,11 @@
]
},
"locked": {
"lastModified": 1753633878,
"narHash": "sha256-js2sLRtsOUA/aT10OCDaTjO80yplqwOIaLUqEe0nMx0=",
"lastModified": 1751300244,
"narHash": "sha256-PFuv1TZVYvQhha0ac53E3YgdtmLShrN0t4T6xqHl0jE=",
"owner": "hyprwm",
"repo": "xdg-desktop-portal-hyprland",
"rev": "371b96bd11ad2006ed4f21229dbd1be69bed3e8a",
"rev": "6115f3fdcb2c1a57b4a80a69f3c797e47607b90a",
"type": "github"
},
"original": {
+6 -14
View File
@@ -9,26 +9,20 @@
inputs.nixpkgs.follows = "nixpkgs";
};
};
outputs =
inputs@{
outputs = inputs @ {
self,
nixpkgs,
hyprland,
nix-colors,
home-manager,
}:
{
formatter.x86_64-linux = nixpkgs.legacyPackages.x86_64-linux.nixfmt-tree;
}: {
nixosModules = {
default =
{
default = {
config,
lib,
pkgs,
...
}:
{
}: {
imports = [
(import ./modules/nixos/default.nix inputs)
];
@@ -41,15 +35,13 @@
};
homeManagerModules = {
default =
{
default = {
config,
lib,
pkgs,
osConfig ? {},
...
}:
{
}: {
imports = [
nix-colors.homeManagerModules.default
(import ./modules/home-manager/default.nix inputs)
+6 -14
View File
@@ -1,5 +1,4 @@
config:
let
config: let
cfg = config.omarchy;
wallpapers = {
"tokyo-night" = [
@@ -23,18 +22,11 @@ let
};
# Handle wallpaper path for generated themes and overrides
wallpaper_path =
if
(cfg.theme == "generated_light" || cfg.theme == "generated_dark")
|| (cfg.theme_overrides.wallpaper_path != null)
then
toString cfg.theme_overrides.wallpaper_path
else
let
wallpaper_path = if (cfg.theme == "generated_light" || cfg.theme == "generated_dark") || (cfg.theme_overrides.wallpaper_path != null)
then toString cfg.theme_overrides.wallpaper_path
else let
selected_wallpaper = builtins.elemAt (wallpapers.${cfg.theme}) 0;
in
"~/Pictures/Wallpapers/${selected_wallpaper}";
in
{
in "~/Pictures/Wallpapers/${selected_wallpaper}";
in {
inherit wallpaper_path;
}
+2 -4
View File
@@ -2,12 +2,10 @@
config,
pkgs,
...
}:
let
}: let
cfg = config.omarchy;
palette = config.colorScheme.palette;
in
{
in {
home.file = {
".config/btop/themes/${cfg.theme}.theme" = {
text = ''
+14 -26
View File
@@ -1,36 +1,26 @@
inputs:
{
inputs: {
config,
pkgs,
lib,
...
}:
let
packages = import ../packages.nix {
inherit pkgs lib;
exclude_packages = config.omarchy.exclude_packages;
};
}: let
packages = import ../packages.nix {inherit pkgs lib; exclude_packages = config.omarchy.exclude_packages;};
themes = import ../themes.nix;
# Handle theme selection - either predefined or generated
selectedTheme =
if (config.omarchy.theme == "generated_light" || config.omarchy.theme == "generated_dark") then
null
else
themes.${config.omarchy.theme};
selectedTheme = if (config.omarchy.theme == "generated_light" || config.omarchy.theme == "generated_dark")
then null
else themes.${config.omarchy.theme};
# Generate color scheme from wallpaper for generated themes
generatedColorScheme =
if (config.omarchy.theme == "generated_light" || config.omarchy.theme == "generated_dark") then
(inputs.nix-colors.lib.contrib { inherit pkgs; }).colorSchemeFromPicture {
generatedColorScheme = if (config.omarchy.theme == "generated_light" || config.omarchy.theme == "generated_dark")
then (inputs.nix-colors.lib.contrib { inherit pkgs; }).colorSchemeFromPicture {
path = config.omarchy.theme_overrides.wallpaper_path;
variant = if config.omarchy.theme == "generated_light" then "light" else "dark";
}
else
null;
in
{
else null;
in {
imports = [
(import ./hyprland.nix inputs)
(import ./hyprlock.nix inputs)
@@ -57,16 +47,14 @@ in
};
home.packages = packages.homePackages;
colorScheme =
if (config.omarchy.theme == "generated_light" || config.omarchy.theme == "generated_dark") then
generatedColorScheme
else
inputs.nix-colors.colorSchemes.${selectedTheme.base16-theme};
colorScheme = if (config.omarchy.theme == "generated_light" || config.omarchy.theme == "generated_dark")
then generatedColorScheme
else inputs.nix-colors.colorSchemes.${selectedTheme.base16-theme};
gtk = {
enable = true;
theme = {
name = if config.omarchy.theme == "generated_light" then "Adwaita" else "Adwaita:dark";
name = "Adwaita-dark";
package = pkgs.gnome-themes-extra;
};
};
+1 -2
View File
@@ -1,5 +1,4 @@
{ ... }:
{
{...}: {
programs.direnv = {
enable = true;
enableZshIntegration = true;
+1 -2
View File
@@ -1,5 +1,4 @@
{ ... }:
{
{...}: {
fonts.fontconfig = {
enable = true;
defaultFonts = {
+2 -4
View File
@@ -2,12 +2,10 @@
config,
pkgs,
...
}:
let
}: let
cfg = config.omarchy;
palette = config.colorScheme.palette;
in
{
in {
programs.ghostty = {
enable = true;
settings = {
+2 -4
View File
@@ -1,8 +1,6 @@
{ config, ... }:
let
{config, ...}: let
cfg = config.omarchy;
in
{
in {
programs.git = {
enable = true;
userName = cfg.full_name;
+1 -2
View File
@@ -1,5 +1,4 @@
{ ... }:
{
{...}: {
services.hypridle = {
enable = true;
settings = {
+2 -4
View File
@@ -1,10 +1,8 @@
inputs:
{
inputs: {
config,
pkgs,
...
}:
{
}: {
imports = [./hyprland/configuration.nix];
wayland.windowManager.hyprland = {
enable = true;
+1 -2
View File
@@ -2,8 +2,7 @@
config,
pkgs,
...
}:
{
}: {
wayland.windowManager.hyprland.settings = {
exec-once = [
# "hypridle & mako & waybar & fcitx5"
+5 -5
View File
@@ -2,13 +2,13 @@
config,
pkgs,
...
}:
let
}: let
cfg = config.omarchy;
in
{
in {
wayland.windowManager.hyprland.settings = {
bind = cfg.quick_app_bindings ++ [
bind =
cfg.quick_app_bindings
++ [
"SUPER, space, exec, wofi --show drun --sort-order=alphabetical"
"SUPER SHIFT, SPACE, exec, pkill -SIGUSR1 waybar"
# "SUPER CTRL, SPACE, exec, ~/.local/share/omarchy/bin/swaybg-next"
@@ -3,11 +3,9 @@
pkgs,
lib,
...
}:
let
}: let
cfg = config.omarchy;
in
{
in {
imports = [
./autostart.nix
./bindings.nix
+6 -6
View File
@@ -4,8 +4,7 @@
pkgs,
osConfig ? {},
...
}:
let
}: let
cfg = config.omarchy;
hasNvidiaDrivers = builtins.elem "nvidia" osConfig.services.xserver.videoDrivers;
nvidiaEnv = [
@@ -13,11 +12,12 @@ let
"LIBVA_DRIVER_NAME,nvidia"
"__GLX_VENDOR_LIBRARY_NAME,nvidia"
];
in
{
in {
wayland.windowManager.hyprland.settings = {
# Environment variables
env = (lib.optionals hasNvidiaDrivers nvidiaEnv) ++ [
env =
(lib.optionals hasNvidiaDrivers nvidiaEnv)
++ [
"GDK_SCALE,${toString cfg.scale}"
# Cursor size
@@ -48,7 +48,7 @@ in
"EDITOR,nvim"
# GTK theme
"GTK_THEME,${if cfg.theme == "generated_light" then "Adwaita" else "Adwaita:dark"}"
"GTK_THEME,Adwaita:dark"
# Podman compatibility. Probably need to add cfg.env?
# "DOCKER_HOST,unix://$XDG_RUNTIME_DIR/podman/podman.sock"
+2 -3
View File
@@ -3,8 +3,7 @@
lib,
pkgs,
...
}:
{
}: {
wayland.windowManager.hyprland.settings = {
# Environment variables
# https://wiki.hyprland.org/Configuring/Variables/#input
@@ -12,7 +11,7 @@
kb_layout = "us";
# kb_variant =
# kb_model =
kb_options = "compose:caps";
kb_options = compose:caps;
# kb_rules =
follow_mouse = 1;
+4 -9
View File
@@ -2,18 +2,13 @@
config,
pkgs,
...
}:
let
hexToRgba =
hex: alpha:
let
in
"rgba(${hex}${alpha})";
}: let
hexToRgba = hex: alpha: let
in "rgba(${hex}${alpha})";
inactiveBorder = hexToRgba config.colorScheme.palette.base09 "aa";
activeBorder = hexToRgba config.colorScheme.palette.base0D "aa";
in
{
in {
wayland.windowManager.hyprland.settings = {
general = {
gaps_in = 5;
+1 -2
View File
@@ -2,8 +2,7 @@
config,
pkgs,
...
}:
{
}: {
wayland.windowManager.hyprland.settings = {
windowrule = [
# See https://wiki.hyprland.org/Configuring/Window-Rules/ for more
+3 -6
View File
@@ -1,11 +1,9 @@
inputs:
{
inputs: {
config,
pkgs,
lib,
...
}:
let
}: let
palette = config.colorScheme.palette;
convert = inputs.nix-colors.lib.conversions.hexToRGBString;
selected_wallpaper_path = (import ../../lib/selected-wallpaper.nix config).wallpaper_path;
@@ -14,8 +12,7 @@ let
surfaceRgb = "rgb(${convert ", " palette.base02})";
foregroundRgb = "rgb(${convert ", " palette.base05})";
foregroundMutedRgb = "rgb(${convert ", " palette.base04})";
in
{
in {
programs.hyprlock = {
enable = true;
settings = {
+2 -4
View File
@@ -2,11 +2,9 @@
config,
pkgs,
...
}:
let
}: let
selected_wallpaper_path = (import ../../lib/selected-wallpaper.nix config).wallpaper_path;
in
{
in {
home.file = {
"Pictures/Wallpapers" = {
source = ../../config/themes/wallpapers;
+2 -4
View File
@@ -2,11 +2,9 @@
config,
pkgs,
...
}:
let
}: let
cfg = config.omarchy;
in
{
in {
services.mako = {
enable = true;
+1 -2
View File
@@ -1,4 +1,3 @@
{ ... }:
{
{...}: {
programs.starship.enable = true;
}
+3 -6
View File
@@ -2,13 +2,11 @@
config,
pkgs,
...
}:
let
}: let
cfg = config.omarchy;
themes = import ../themes.nix;
theme = themes.${cfg.theme};
in
{
in {
programs.vscode = {
enable = true;
profiles.default = {
@@ -25,8 +23,7 @@ in
# // cfg.vscode_settings;
extensions =
with pkgs.vscode-extensions;
extensions = with pkgs.vscode-extensions;
[
bbenoist.nix
vscodevim.vim
+7 -18
View File
@@ -1,16 +1,13 @@
inputs:
{
inputs: {
config,
pkgs,
...
}:
let
}: let
palette = config.colorScheme.palette;
convert = inputs.nix-colors.lib.conversions.hexToRGBString;
backgroundRgb = "rgb(${convert ", " palette.base00})";
foregroundRgb = "rgb(${convert ", " palette.base05})";
in
{
in {
home.file = {
".config/waybar/" = {
source = ../../config/waybar;
@@ -89,13 +86,7 @@ in
tooltip = false;
};
network = {
format-icons = [
"󰤯"
"󰤟"
"󰤢"
"󰤥"
"󰤨"
];
format-icons = ["󰤯" "󰤟" "󰤢" "󰤥" "󰤨"];
format = "{icon}";
format-wifi = "{icon}";
format-ethernet = "󰀂";
@@ -152,21 +143,19 @@ in
format-disabled = "󰂲";
format-connected = "";
tooltip-format = "Devices connected: {num_connections}";
on-click = "blueberry";
on-click = "GTK_THEME=Adwaita-dark blueberry";
};
wireplumber = {
# Changed from "pulseaudio"
"format" = "";
format-muted = "󰝟";
scroll-step = 5;
on-click = "pavucontrol";
on-click = "GTK_THEME=Adwaita-dark pavucontrol";
tooltip-format = "Playing at {volume}%";
on-click-right = "wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle"; # Updated command
max-volume = 150; # Optional: allow volume over 100%
};
tray = {
spacing = 13;
};
tray = {spacing = 13;};
power-profiles-daemon = {
format = "{icon}";
tooltip-format = "Power profile: {profile}";
+1 -2
View File
@@ -2,8 +2,7 @@
config,
pkgs,
...
}:
{
}: {
home.file = {
".config/wofi/style.css" = {
text = ''
+1 -2
View File
@@ -1,5 +1,4 @@
{ ... }:
{
{...}: {
programs.zoxide = {
enable = true;
enableZshIntegration = true;
+3 -4
View File
@@ -1,5 +1,4 @@
{ ... }:
{
{...}: {
programs.zsh = {
enable = true;
autosuggestion.enable = true;
@@ -8,11 +7,11 @@
plugins = [
{
name = "plugins/git";
tags = [ "from:oh-my-zsh" ];
tags = [from:oh-my-zsh];
}
{
name = "fdellwing/zsh-bat";
tags = [ "as:command" ];
tags = [as:command];
}
];
};
+1 -2
View File
@@ -1,5 +1,4 @@
{ ... }:
{
{...}: {
programs = {
_1password.enable = true;
_1password-gui.enable = true;
+1 -2
View File
@@ -1,5 +1,4 @@
{ pkgs, ... }:
{
{pkgs, ...}: {
virtualisation.containers.enable = true;
virtualisation = {
docker.enable = true;
+3 -6
View File
@@ -1,14 +1,11 @@
inputs:
{
inputs: {
config,
pkgs,
...
}:
let
}: let
cfg = config.omarchy;
packages = import ../packages.nix {inherit pkgs;};
in
{
in {
imports = [
(import ./hyprland.nix inputs)
(import ./system.nix)
+2 -4
View File
@@ -1,10 +1,8 @@
inputs:
{
inputs: {
config,
pkgs,
...
}:
{
}: {
programs.hyprland = {
enable = true;
# package = inputs.hyprland.packages.${pkgs.system}.hyprland;
+4 -9
View File
@@ -3,15 +3,10 @@
pkgs,
lib,
...
}:
let
}: let
cfg = config.omarchy;
packages = import ../packages.nix {
inherit pkgs lib;
exclude_packages = cfg.exclude_packages;
};
in
{
packages = import ../packages.nix {inherit pkgs lib; exclude_packages = cfg.exclude_packages;};
in {
security.rtkit.enable = true;
services.pulseaudio.enable = false;
services.pipewire = {
@@ -41,7 +36,7 @@ in
fonts.packages = with pkgs; [
noto-fonts
noto-fonts-color-emoji
noto-fonts-emoji
nerd-fonts.caskaydia-mono
];
}
+8 -15
View File
@@ -1,8 +1,4 @@
{
pkgs,
lib,
exclude_packages ? [ ],
}:
{pkgs, lib, exclude_packages ? []}:
let
# Essential Hyprland packages - cannot be excluded
hyprlandPackages = with pkgs; [
@@ -37,9 +33,7 @@ let
];
# Discretionary packages - can be excluded by user
discretionaryPackages =
with pkgs;
[
discretionaryPackages = with pkgs; [
# TUIs
lazygit
lazydocker
@@ -53,6 +47,11 @@ let
vlc
signal-desktop
# Commercial GUIs
typora
dropbox
spotify
# Development tools
github-desktop
gh
@@ -60,18 +59,12 @@ let
# Containers
docker-compose
ffmpeg
]
++ lib.optionals (pkgs.system == "x86_64-linux") [
typora
dropbox
spotify
];
# Only allow excluding discretionary packages to prevent breaking the system
filteredDiscretionaryPackages = lib.lists.subtractLists exclude_packages discretionaryPackages;
allSystemPackages = hyprlandPackages ++ systemPackages ++ filteredDiscretionaryPackages;
in
{
in {
# Regular packages
systemPackages = allSystemPackages;