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. 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 ## Quick Start
+4 -4
View File
@@ -33,7 +33,7 @@ lib: {
}; };
}; };
}; };
default = { }; default = {};
description = "Theme overrides including wallpaper path for generated themes"; description = "Theme overrides including wallpaper path for generated themes";
}; };
primary_font = lib.mkOption { primary_font = lib.mkOption {
@@ -42,11 +42,11 @@ lib: {
}; };
vscode_settings = lib.mkOption { vscode_settings = lib.mkOption {
type = lib.types.attrs; type = lib.types.attrs;
default = { }; default = {};
}; };
monitors = lib.mkOption { monitors = lib.mkOption {
type = lib.types.listOf lib.types.str; type = lib.types.listOf lib.types.str;
default = [ ]; default = [];
}; };
scale = lib.mkOption { scale = lib.mkOption {
type = lib.types.int; type = lib.types.int;
@@ -80,7 +80,7 @@ lib: {
}; };
exclude_packages = lib.mkOption { exclude_packages = lib.mkOption {
type = lib.types.listOf lib.types.package; type = lib.types.listOf lib.types.package;
default = [ ]; default = [];
description = "Packages to exclude from the default system packages"; description = "Packages to exclude from the default system packages";
}; };
}; };
Generated
+42 -42
View File
@@ -20,11 +20,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1753216019, "lastModified": 1751740947,
"narHash": "sha256-zik7WISrR1ks2l6T1MZqZHb/OqroHdJnSnAehkE0kCk=", "narHash": "sha256-35040CHH7P3JGmhGVfEb2oJHL/A5mI2IXumhkxrBnao=",
"owner": "hyprwm", "owner": "hyprwm",
"repo": "aquamarine", "repo": "aquamarine",
"rev": "be166e11d86ba4186db93e10c54a141058bdce49", "rev": "dfc1db15a08c4cd234288f66e1199c653495301f",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -52,11 +52,11 @@
"flake-compat": { "flake-compat": {
"flake": false, "flake": false,
"locked": { "locked": {
"lastModified": 1747046372, "lastModified": 1696426674,
"narHash": "sha256-CIVLLkVgvHYbgI2UpXvIIBJ12HWgX+fjA8Xf8PUmqCY=", "narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=",
"owner": "edolstra", "owner": "edolstra",
"repo": "flake-compat", "repo": "flake-compat",
"rev": "9100a0f413b0c601e0533d1d94ffd501ce2e7885", "rev": "0f9255e01c2351cc7d116c072cb317785dd33b33",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -94,11 +94,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1755229570, "lastModified": 1751990210,
"narHash": "sha256-soZegto0xXzG2zYlu/zjknDHv0Z7tRS5EQs+Z/VRTBg=", "narHash": "sha256-krWErNDl9ggMLSfK00Q2BcoSk3+IRTSON/DiDgUzzMw=",
"owner": "nix-community", "owner": "nix-community",
"repo": "home-manager", "repo": "home-manager",
"rev": "11626a4383b458f8dc5ea3237eaa04e8ab1912f3", "rev": "218da00bfa73f2a61682417efe74549416c16ba6",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -123,11 +123,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1753964049, "lastModified": 1749155331,
"narHash": "sha256-lIqabfBY7z/OANxHoPeIrDJrFyYy9jAM4GQLzZ2feCM=", "narHash": "sha256-XR9fsI0zwLiFWfqi/pdS/VD+YNorKb3XIykgTg4l1nA=",
"owner": "hyprwm", "owner": "hyprwm",
"repo": "hyprcursor", "repo": "hyprcursor",
"rev": "44e91d467bdad8dcf8bbd2ac7cf49972540980a5", "rev": "45fcc10b4c282746d93ec406a740c43b48b4ef80",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -152,11 +152,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1754305013, "lastModified": 1751808145,
"narHash": "sha256-u+M2f0Xf1lVHzIPQ7DsNCDkM1NYxykOSsRr4t3TbSM4=", "narHash": "sha256-OXgL0XaKMmfX2rRQkt9SkJw+QNfv0jExlySt1D6O72g=",
"owner": "hyprwm", "owner": "hyprwm",
"repo": "hyprgraphics", "repo": "hyprgraphics",
"rev": "4c1d63a0f22135db123fc789f174b89544c6ec2d", "rev": "b841473a0bd4a1a74a0b64f1ec2ab199035c349f",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -181,11 +181,11 @@
"xdph": "xdph" "xdph": "xdph"
}, },
"locked": { "locked": {
"lastModified": 1755184403, "lastModified": 1751995875,
"narHash": "sha256-VI+ZPD/uIFjzYW8IcyvBgvwyDIvUe4/xh/kOHTbITX8=", "narHash": "sha256-ud9sl1RjmzAzalH2ocmGPs182xvr7GktjVIYvzJamwo=",
"owner": "hyprwm", "owner": "hyprwm",
"repo": "Hyprland", "repo": "Hyprland",
"rev": "60d769a89908c29e19100059985db15a7b6bab6a", "rev": "9517d0eaa4ef93de67dc80fecca7a826f7ad556d",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -274,11 +274,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1753819801, "lastModified": 1750371812,
"narHash": "sha256-tHe6XeNeVeKapkNM3tcjW4RuD+tB2iwwoogWJOtsqTI=", "narHash": "sha256-D868K1dVEACw17elVxRgXC6hOxY+54wIEjURztDWLk8=",
"owner": "hyprwm", "owner": "hyprwm",
"repo": "hyprland-qtutils", "repo": "hyprland-qtutils",
"rev": "b308a818b9dcaa7ab8ccab891c1b84ebde2152bc", "rev": "b13c7481e37856f322177010bdf75fccacd1adc8",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -303,11 +303,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1753622892, "lastModified": 1750371198,
"narHash": "sha256-0K+A+gmOI8IklSg5It1nyRNv0kCNL51duwnhUO/B8JA=", "narHash": "sha256-/iuJ1paQOBoSLqHflRNNGyroqfF/yvPNurxzcCT0cAE=",
"owner": "hyprwm", "owner": "hyprwm",
"repo": "hyprlang", "repo": "hyprlang",
"rev": "23f0debd2003f17bd65f851cd3f930cff8a8c809", "rev": "cee01452bca58d6cadb3224e21e370de8bc20f0b",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -328,11 +328,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1754481650, "lastModified": 1751888065,
"narHash": "sha256-6u6HdEFJh5gY6VfyMQbhP7zDdVcqOrCDTkbiHJmAtMI=", "narHash": "sha256-F2SV9WGqgtRsXIdUrl3sRe0wXlQD+kRRZcSfbepjPJY=",
"owner": "hyprwm", "owner": "hyprwm",
"repo": "hyprutils", "repo": "hyprutils",
"rev": "df6b8820c4a0835d83d0c7c7be86fbc555f1f7fd", "rev": "a8229739cf36d159001cfc203871917b83fdf917",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -353,11 +353,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1751897909, "lastModified": 1751881472,
"narHash": "sha256-FnhBENxihITZldThvbO7883PdXC/2dzW4eiNvtoV5Ao=", "narHash": "sha256-meB0SnXbwIe2trD041MLKEv6R7NZ759QwBcVIhlSBfE=",
"owner": "hyprwm", "owner": "hyprwm",
"repo": "hyprwayland-scanner", "repo": "hyprwayland-scanner",
"rev": "fcca0c61f988a9d092cbb33e906775014c61579d", "rev": "8fb426b3e5452fd9169453fd6c10f8c14ca37120",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -387,11 +387,11 @@
}, },
"nixpkgs": { "nixpkgs": {
"locked": { "locked": {
"lastModified": 1754725699, "lastModified": 1751792365,
"narHash": "sha256-iAcj9T/Y+3DBy2J0N+yF9XQQQ8IEb5swLFzs23CdP88=", "narHash": "sha256-J1kI6oAj25IG4EdVlg2hQz8NZTBNYvIS0l4wpr9KcUo=",
"owner": "NixOS", "owner": "NixOS",
"repo": "nixpkgs", "repo": "nixpkgs",
"rev": "85dbfc7aaf52ecb755f87e577ddbe6dbbdbc1054", "rev": "1fd8bada0b6117e6c7eb54aad5813023eed37ccb",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -418,11 +418,11 @@
}, },
"nixpkgs_2": { "nixpkgs_2": {
"locked": { "locked": {
"lastModified": 1755186698, "lastModified": 1751792365,
"narHash": "sha256-wNO3+Ks2jZJ4nTHMuks+cxAiVBGNuEBXsT29Bz6HASo=", "narHash": "sha256-J1kI6oAj25IG4EdVlg2hQz8NZTBNYvIS0l4wpr9KcUo=",
"owner": "NixOS", "owner": "NixOS",
"repo": "nixpkgs", "repo": "nixpkgs",
"rev": "fbcf476f790d8a217c3eab4e12033dc4a0f6d23c", "rev": "1fd8bada0b6117e6c7eb54aad5813023eed37ccb",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -442,11 +442,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1754416808, "lastModified": 1750779888,
"narHash": "sha256-c6yg0EQ9xVESx6HGDOCMcyRSjaTpNJP10ef+6fRcofA=", "narHash": "sha256-wibppH3g/E2lxU43ZQHC5yA/7kIKLGxVEnsnVK1BtRg=",
"owner": "cachix", "owner": "cachix",
"repo": "git-hooks.nix", "repo": "git-hooks.nix",
"rev": "9c52372878df6911f9afc1e2a1391f55e4dfc864", "rev": "16ec914f6fb6f599ce988427d9d94efddf25fe6d",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -506,11 +506,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1753633878, "lastModified": 1751300244,
"narHash": "sha256-js2sLRtsOUA/aT10OCDaTjO80yplqwOIaLUqEe0nMx0=", "narHash": "sha256-PFuv1TZVYvQhha0ac53E3YgdtmLShrN0t4T6xqHl0jE=",
"owner": "hyprwm", "owner": "hyprwm",
"repo": "xdg-desktop-portal-hyprland", "repo": "xdg-desktop-portal-hyprland",
"rev": "371b96bd11ad2006ed4f21229dbd1be69bed3e8a", "rev": "6115f3fdcb2c1a57b4a80a69f3c797e47607b90a",
"type": "github" "type": "github"
}, },
"original": { "original": {
+41 -49
View File
@@ -9,56 +9,48 @@
inputs.nixpkgs.follows = "nixpkgs"; inputs.nixpkgs.follows = "nixpkgs";
}; };
}; };
outputs = outputs = inputs @ {
inputs@{ self,
self, nixpkgs,
nixpkgs, hyprland,
hyprland, nix-colors,
nix-colors, home-manager,
home-manager, }: {
}: nixosModules = {
{ default = {
formatter.x86_64-linux = nixpkgs.legacyPackages.x86_64-linux.nixfmt-tree; config,
lib,
pkgs,
...
}: {
imports = [
(import ./modules/nixos/default.nix inputs)
];
nixosModules = { options.omarchy = (import ./config.nix lib).omarchyOptions;
default = config = {
{ nixpkgs.config.allowUnfree = true;
config, };
lib,
pkgs,
...
}:
{
imports = [
(import ./modules/nixos/default.nix inputs)
];
options.omarchy = (import ./config.nix lib).omarchyOptions;
config = {
nixpkgs.config.allowUnfree = true;
};
};
};
homeManagerModules = {
default =
{
config,
lib,
pkgs,
osConfig ? { },
...
}:
{
imports = [
nix-colors.homeManagerModules.default
(import ./modules/home-manager/default.nix inputs)
];
options.omarchy = (import ./config.nix lib).omarchyOptions;
config = lib.mkIf (osConfig ? omarchy) {
omarchy = osConfig.omarchy;
};
};
}; };
}; };
homeManagerModules = {
default = {
config,
lib,
pkgs,
osConfig ? {},
...
}: {
imports = [
nix-colors.homeManagerModules.default
(import ./modules/home-manager/default.nix inputs)
];
options.omarchy = (import ./config.nix lib).omarchyOptions;
config = lib.mkIf (osConfig ? omarchy) {
omarchy = osConfig.omarchy;
};
};
};
};
} }
+7 -15
View File
@@ -1,5 +1,4 @@
config: config: let
let
cfg = config.omarchy; cfg = config.omarchy;
wallpapers = { wallpapers = {
"tokyo-night" = [ "tokyo-night" = [
@@ -23,18 +22,11 @@ let
}; };
# Handle wallpaper path for generated themes and overrides # Handle wallpaper path for generated themes and overrides
wallpaper_path = wallpaper_path = if (cfg.theme == "generated_light" || cfg.theme == "generated_dark") || (cfg.theme_overrides.wallpaper_path != null)
if then toString cfg.theme_overrides.wallpaper_path
(cfg.theme == "generated_light" || cfg.theme == "generated_dark") else let
|| (cfg.theme_overrides.wallpaper_path != null) selected_wallpaper = builtins.elemAt (wallpapers.${cfg.theme}) 0;
then in "~/Pictures/Wallpapers/${selected_wallpaper}";
toString cfg.theme_overrides.wallpaper_path in {
else
let
selected_wallpaper = builtins.elemAt (wallpapers.${cfg.theme}) 0;
in
"~/Pictures/Wallpapers/${selected_wallpaper}";
in
{
inherit wallpaper_path; inherit wallpaper_path;
} }
+2 -4
View File
@@ -2,12 +2,10 @@
config, config,
pkgs, pkgs,
... ...
}: }: let
let
cfg = config.omarchy; cfg = config.omarchy;
palette = config.colorScheme.palette; palette = config.colorScheme.palette;
in in {
{
home.file = { home.file = {
".config/btop/themes/${cfg.theme}.theme" = { ".config/btop/themes/${cfg.theme}.theme" = {
text = '' text = ''
+17 -29
View File
@@ -1,36 +1,26 @@
inputs: inputs: {
{
config, config,
pkgs, pkgs,
lib, lib,
... ...
}: }: let
let packages = import ../packages.nix {inherit pkgs lib; exclude_packages = config.omarchy.exclude_packages;};
packages = import ../packages.nix {
inherit pkgs lib;
exclude_packages = config.omarchy.exclude_packages;
};
themes = import ../themes.nix; themes = import ../themes.nix;
# Handle theme selection - either predefined or generated # Handle theme selection - either predefined or generated
selectedTheme = selectedTheme = if (config.omarchy.theme == "generated_light" || config.omarchy.theme == "generated_dark")
if (config.omarchy.theme == "generated_light" || config.omarchy.theme == "generated_dark") then then null
null else themes.${config.omarchy.theme};
else
themes.${config.omarchy.theme};
# Generate color scheme from wallpaper for generated themes # Generate color scheme from wallpaper for generated themes
generatedColorScheme = generatedColorScheme = if (config.omarchy.theme == "generated_light" || config.omarchy.theme == "generated_dark")
if (config.omarchy.theme == "generated_light" || config.omarchy.theme == "generated_dark") then then (inputs.nix-colors.lib.contrib { inherit pkgs; }).colorSchemeFromPicture {
(inputs.nix-colors.lib.contrib { inherit pkgs; }).colorSchemeFromPicture { path = config.omarchy.theme_overrides.wallpaper_path;
path = config.omarchy.theme_overrides.wallpaper_path; variant = if config.omarchy.theme == "generated_light" then "light" else "dark";
variant = if config.omarchy.theme == "generated_light" then "light" else "dark"; }
} else null;
else in {
null;
in
{
imports = [ imports = [
(import ./hyprland.nix inputs) (import ./hyprland.nix inputs)
(import ./hyprlock.nix inputs) (import ./hyprlock.nix inputs)
@@ -57,16 +47,14 @@ in
}; };
home.packages = packages.homePackages; home.packages = packages.homePackages;
colorScheme = colorScheme = if (config.omarchy.theme == "generated_light" || config.omarchy.theme == "generated_dark")
if (config.omarchy.theme == "generated_light" || config.omarchy.theme == "generated_dark") then then generatedColorScheme
generatedColorScheme else inputs.nix-colors.colorSchemes.${selectedTheme.base16-theme};
else
inputs.nix-colors.colorSchemes.${selectedTheme.base16-theme};
gtk = { gtk = {
enable = true; enable = true;
theme = { theme = {
name = if config.omarchy.theme == "generated_light" then "Adwaita" else "Adwaita:dark"; name = "Adwaita-dark";
package = pkgs.gnome-themes-extra; package = pkgs.gnome-themes-extra;
}; };
}; };
+1 -2
View File
@@ -1,5 +1,4 @@
{ ... }: {...}: {
{
programs.direnv = { programs.direnv = {
enable = true; enable = true;
enableZshIntegration = true; enableZshIntegration = true;
+4 -5
View File
@@ -1,11 +1,10 @@
{ ... }: {...}: {
{
fonts.fontconfig = { fonts.fontconfig = {
enable = true; enable = true;
defaultFonts = { defaultFonts = {
serif = [ "Noto Serif" ]; serif = ["Noto Serif"];
sansSerif = [ "Noto Sans" ]; sansSerif = ["Noto Sans"];
monospace = [ "Caskaydia Mono Nerd Font" ]; monospace = ["Caskaydia Mono Nerd Font"];
}; };
}; };
} }
+2 -4
View File
@@ -2,12 +2,10 @@
config, config,
pkgs, pkgs,
... ...
}: }: let
let
cfg = config.omarchy; cfg = config.omarchy;
palette = config.colorScheme.palette; palette = config.colorScheme.palette;
in in {
{
programs.ghostty = { programs.ghostty = {
enable = true; enable = true;
settings = { settings = {
+2 -4
View File
@@ -1,8 +1,6 @@
{ config, ... }: {config, ...}: let
let
cfg = config.omarchy; cfg = config.omarchy;
in in {
{
programs.git = { programs.git = {
enable = true; enable = true;
userName = cfg.full_name; userName = cfg.full_name;
+1 -2
View File
@@ -1,5 +1,4 @@
{ ... }: {...}: {
{
services.hypridle = { services.hypridle = {
enable = true; enable = true;
settings = { settings = {
+3 -5
View File
@@ -1,11 +1,9 @@
inputs: inputs: {
{
config, config,
pkgs, pkgs,
... ...
}: }: {
{ imports = [./hyprland/configuration.nix];
imports = [ ./hyprland/configuration.nix ];
wayland.windowManager.hyprland = { wayland.windowManager.hyprland = {
enable = true; enable = true;
package = inputs.hyprland.packages.${pkgs.system}.hyprland; package = inputs.hyprland.packages.${pkgs.system}.hyprland;
+1 -2
View File
@@ -2,8 +2,7 @@
config, config,
pkgs, pkgs,
... ...
}: }: {
{
wayland.windowManager.hyprland.settings = { wayland.windowManager.hyprland.settings = {
exec-once = [ exec-once = [
# "hypridle & mako & waybar & fcitx5" # "hypridle & mako & waybar & fcitx5"
+80 -80
View File
@@ -2,103 +2,103 @@
config, config,
pkgs, pkgs,
... ...
}: }: let
let
cfg = config.omarchy; cfg = config.omarchy;
in in {
{
wayland.windowManager.hyprland.settings = { wayland.windowManager.hyprland.settings = {
bind = cfg.quick_app_bindings ++ [ bind =
"SUPER, space, exec, wofi --show drun --sort-order=alphabetical" cfg.quick_app_bindings
"SUPER SHIFT, SPACE, exec, pkill -SIGUSR1 waybar" ++ [
# "SUPER CTRL, SPACE, exec, ~/.local/share/omarchy/bin/swaybg-next" "SUPER, space, exec, wofi --show drun --sort-order=alphabetical"
# "SUPER SHIFT CTRL, SPACE, exec, ~/.local/share/omarchy/bin/omarchy-theme-next" "SUPER SHIFT, SPACE, exec, pkill -SIGUSR1 waybar"
# "SUPER CTRL, SPACE, exec, ~/.local/share/omarchy/bin/swaybg-next"
# "SUPER SHIFT CTRL, SPACE, exec, ~/.local/share/omarchy/bin/omarchy-theme-next"
"SUPER, W, killactive," "SUPER, W, killactive,"
"SUPER, Backspace, killactive," "SUPER, Backspace, killactive,"
# End active session # End active session
"SUPER, ESCAPE, exec, hyprlock" "SUPER, ESCAPE, exec, hyprlock"
"SUPER SHIFT, ESCAPE, exit," "SUPER SHIFT, ESCAPE, exit,"
"SUPER CTRL, ESCAPE, exec, reboot" "SUPER CTRL, ESCAPE, exec, reboot"
"SUPER SHIFT CTRL, ESCAPE, exec, systemctl poweroff" "SUPER SHIFT CTRL, ESCAPE, exec, systemctl poweroff"
"SUPER, K, exec, ~/.local/share/omarchy/bin/omarchy-show-keybindings" "SUPER, K, exec, ~/.local/share/omarchy/bin/omarchy-show-keybindings"
# Control tiling # Control tiling
"SUPER, J, togglesplit, # dwindle" "SUPER, J, togglesplit, # dwindle"
"SUPER, P, pseudo, # dwindle" "SUPER, P, pseudo, # dwindle"
"SUPER, V, togglefloating," "SUPER, V, togglefloating,"
"SUPER SHIFT, Plus, fullscreen," "SUPER SHIFT, Plus, fullscreen,"
# Move focus with mainMod + arrow keys # Move focus with mainMod + arrow keys
"SUPER, left, movefocus, l" "SUPER, left, movefocus, l"
"SUPER, right, movefocus, r" "SUPER, right, movefocus, r"
"SUPER, up, movefocus, u" "SUPER, up, movefocus, u"
"SUPER, down, movefocus, d" "SUPER, down, movefocus, d"
# Switch workspaces with mainMod + [0-9] # Switch workspaces with mainMod + [0-9]
"SUPER, 1, workspace, 1" "SUPER, 1, workspace, 1"
"SUPER, 2, workspace, 2" "SUPER, 2, workspace, 2"
"SUPER, 3, workspace, 3" "SUPER, 3, workspace, 3"
"SUPER, 4, workspace, 4" "SUPER, 4, workspace, 4"
"SUPER, 5, workspace, 5" "SUPER, 5, workspace, 5"
"SUPER, 6, workspace, 6" "SUPER, 6, workspace, 6"
"SUPER, 7, workspace, 7" "SUPER, 7, workspace, 7"
"SUPER, 8, workspace, 8" "SUPER, 8, workspace, 8"
"SUPER, 9, workspace, 9" "SUPER, 9, workspace, 9"
"SUPER, 0, workspace, 10" "SUPER, 0, workspace, 10"
"SUPER, comma, workspace, -1" "SUPER, comma, workspace, -1"
"SUPER, period, workspace, +1" "SUPER, period, workspace, +1"
# Move active window to a workspace with mainMod + SHIFT + [0-9] # Move active window to a workspace with mainMod + SHIFT + [0-9]
"SUPER SHIFT, 1, movetoworkspace, 1" "SUPER SHIFT, 1, movetoworkspace, 1"
"SUPER SHIFT, 2, movetoworkspace, 2" "SUPER SHIFT, 2, movetoworkspace, 2"
"SUPER SHIFT, 3, movetoworkspace, 3" "SUPER SHIFT, 3, movetoworkspace, 3"
"SUPER SHIFT, 4, movetoworkspace, 4" "SUPER SHIFT, 4, movetoworkspace, 4"
"SUPER SHIFT, 5, movetoworkspace, 5" "SUPER SHIFT, 5, movetoworkspace, 5"
"SUPER SHIFT, 6, movetoworkspace, 6" "SUPER SHIFT, 6, movetoworkspace, 6"
"SUPER SHIFT, 7, movetoworkspace, 7" "SUPER SHIFT, 7, movetoworkspace, 7"
"SUPER SHIFT, 8, movetoworkspace, 8" "SUPER SHIFT, 8, movetoworkspace, 8"
"SUPER SHIFT, 9, movetoworkspace, 9" "SUPER SHIFT, 9, movetoworkspace, 9"
"SUPER SHIFT, 0, movetoworkspace, 10" "SUPER SHIFT, 0, movetoworkspace, 10"
# Swap active window with the one next to it with mainMod + SHIFT + arrow keys # Swap active window with the one next to it with mainMod + SHIFT + arrow keys
"SUPER SHIFT, left, swapwindow, l" "SUPER SHIFT, left, swapwindow, l"
"SUPER SHIFT, right, swapwindow, r" "SUPER SHIFT, right, swapwindow, r"
"SUPER SHIFT, up, swapwindow, u" "SUPER SHIFT, up, swapwindow, u"
"SUPER SHIFT, down, swapwindow, d" "SUPER SHIFT, down, swapwindow, d"
# Resize active window # Resize active window
"SUPER, minus, resizeactive, -100 0" "SUPER, minus, resizeactive, -100 0"
"SUPER, equal, resizeactive, 100 0" "SUPER, equal, resizeactive, 100 0"
"SUPER SHIFT, minus, resizeactive, 0 -100" "SUPER SHIFT, minus, resizeactive, 0 -100"
"SUPER SHIFT, equal, resizeactive, 0 100" "SUPER SHIFT, equal, resizeactive, 0 100"
# Scroll through existing workspaces with mainMod + scroll # Scroll through existing workspaces with mainMod + scroll
"SUPER, mouse_down, workspace, e+1" "SUPER, mouse_down, workspace, e+1"
"SUPER, mouse_up, workspace, e-1" "SUPER, mouse_up, workspace, e-1"
# Control Apple Display brightness # Control Apple Display brightness
"CTRL, F1, exec, ~/.local/share/omarchy/bin/apple-display-brightness -5000" "CTRL, F1, exec, ~/.local/share/omarchy/bin/apple-display-brightness -5000"
"CTRL, F2, exec, ~/.local/share/omarchy/bin/apple-display-brightness +5000" "CTRL, F2, exec, ~/.local/share/omarchy/bin/apple-display-brightness +5000"
"SHIFT CTRL, F2, exec, ~/.local/share/omarchy/bin/apple-display-brightness +60000" "SHIFT CTRL, F2, exec, ~/.local/share/omarchy/bin/apple-display-brightness +60000"
# Super workspace floating layer # Super workspace floating layer
"SUPER, S, togglespecialworkspace, magic" "SUPER, S, togglespecialworkspace, magic"
"SUPER SHIFT, S, movetoworkspace, special:magic" "SUPER SHIFT, S, movetoworkspace, special:magic"
# Screenshots # Screenshots
", PRINT, exec, hyprshot -m region" ", PRINT, exec, hyprshot -m region"
"SHIFT, PRINT, exec, hyprshot -m window" "SHIFT, PRINT, exec, hyprshot -m window"
"CTRL, PRINT, exec, hyprshot -m output" "CTRL, PRINT, exec, hyprshot -m output"
# Color picker # Color picker
"SUPER, PRINT, exec, hyprpicker -a" "SUPER, PRINT, exec, hyprpicker -a"
# Clipse # Clipse
"CTRL SUPER, V, exec, ghostty --class clipse -e clipse" "CTRL SUPER, V, exec, ghostty --class clipse -e clipse"
]; ];
bindm = [ bindm = [
# Move/resize windows with mainMod + LMB/RMB and dragging # Move/resize windows with mainMod + LMB/RMB and dragging
@@ -3,11 +3,9 @@
pkgs, pkgs,
lib, lib,
... ...
}: }: let
let
cfg = config.omarchy; cfg = config.omarchy;
in in {
{
imports = [ imports = [
./autostart.nix ./autostart.nix
./bindings.nix ./bindings.nix
+33 -33
View File
@@ -2,10 +2,9 @@
config, config,
lib, lib,
pkgs, pkgs,
osConfig ? { }, osConfig ? {},
... ...
}: }: let
let
cfg = config.omarchy; cfg = config.omarchy;
hasNvidiaDrivers = builtins.elem "nvidia" osConfig.services.xserver.videoDrivers; hasNvidiaDrivers = builtins.elem "nvidia" osConfig.services.xserver.videoDrivers;
nvidiaEnv = [ nvidiaEnv = [
@@ -13,46 +12,47 @@ let
"LIBVA_DRIVER_NAME,nvidia" "LIBVA_DRIVER_NAME,nvidia"
"__GLX_VENDOR_LIBRARY_NAME,nvidia" "__GLX_VENDOR_LIBRARY_NAME,nvidia"
]; ];
in in {
{
wayland.windowManager.hyprland.settings = { wayland.windowManager.hyprland.settings = {
# Environment variables # Environment variables
env = (lib.optionals hasNvidiaDrivers nvidiaEnv) ++ [ env =
"GDK_SCALE,${toString cfg.scale}" (lib.optionals hasNvidiaDrivers nvidiaEnv)
++ [
"GDK_SCALE,${toString cfg.scale}"
# Cursor size # Cursor size
"XCURSOR_SIZE,24" "XCURSOR_SIZE,24"
"HYPRCURSOR_SIZE,24" "HYPRCURSOR_SIZE,24"
# Cursor theme # Cursor theme
"XCURSOR_THEME,Adwaita" "XCURSOR_THEME,Adwaita"
"HYPRCURSOR_THEME,Adwaita" "HYPRCURSOR_THEME,Adwaita"
# Force all apps to use Wayland # Force all apps to use Wayland
"GDK_BACKEND,wayland" "GDK_BACKEND,wayland"
"QT_QPA_PLATFORM,wayland" "QT_QPA_PLATFORM,wayland"
"QT_STYLE_OVERRIDE,kvantum" "QT_STYLE_OVERRIDE,kvantum"
"SDL_VIDEODRIVER,wayland" "SDL_VIDEODRIVER,wayland"
"MOZ_ENABLE_WAYLAND,1" "MOZ_ENABLE_WAYLAND,1"
"ELECTRON_OZONE_PLATFORM_HINT,wayland" "ELECTRON_OZONE_PLATFORM_HINT,wayland"
"OZONE_PLATFORM,wayland" "OZONE_PLATFORM,wayland"
# Make Chromium use XCompose and all Wayland # Make Chromium use XCompose and all Wayland
"CHROMIUM_FLAGS,\"--enable-features=UseOzonePlatform --ozone-platform=wayland --gtk-version=4\"" "CHROMIUM_FLAGS,\"--enable-features=UseOzonePlatform --ozone-platform=wayland --gtk-version=4\""
# Make .desktop files available for wofi # Make .desktop files available for wofi
"XDG_DATA_DIRS,$XDG_DATA_DIRS:$HOME/.nix-profile/share:/nix/var/nix/profiles/default/share" "XDG_DATA_DIRS,$XDG_DATA_DIRS:$HOME/.nix-profile/share:/nix/var/nix/profiles/default/share"
# Use XCompose file # Use XCompose file
"XCOMPOSEFILE,~/.XCompose" "XCOMPOSEFILE,~/.XCompose"
"EDITOR,nvim" "EDITOR,nvim"
# GTK theme # 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? # Podman compatibility. Probably need to add cfg.env?
# "DOCKER_HOST,unix://$XDG_RUNTIME_DIR/podman/podman.sock" # "DOCKER_HOST,unix://$XDG_RUNTIME_DIR/podman/podman.sock"
]; ];
xwayland = { xwayland = {
force_zero_scaling = true; force_zero_scaling = true;
+2 -3
View File
@@ -3,8 +3,7 @@
lib, lib,
pkgs, pkgs,
... ...
}: }: {
{
wayland.windowManager.hyprland.settings = { wayland.windowManager.hyprland.settings = {
# Environment variables # Environment variables
# https://wiki.hyprland.org/Configuring/Variables/#input # https://wiki.hyprland.org/Configuring/Variables/#input
@@ -12,7 +11,7 @@
kb_layout = "us"; kb_layout = "us";
# kb_variant = # kb_variant =
# kb_model = # kb_model =
kb_options = "compose:caps"; kb_options = compose:caps;
# kb_rules = # kb_rules =
follow_mouse = 1; follow_mouse = 1;
+4 -9
View File
@@ -2,18 +2,13 @@
config, config,
pkgs, pkgs,
... ...
}: }: let
let hexToRgba = hex: alpha: let
hexToRgba = in "rgba(${hex}${alpha})";
hex: alpha:
let
in
"rgba(${hex}${alpha})";
inactiveBorder = hexToRgba config.colorScheme.palette.base09 "aa"; inactiveBorder = hexToRgba config.colorScheme.palette.base09 "aa";
activeBorder = hexToRgba config.colorScheme.palette.base0D "aa"; activeBorder = hexToRgba config.colorScheme.palette.base0D "aa";
in in {
{
wayland.windowManager.hyprland.settings = { wayland.windowManager.hyprland.settings = {
general = { general = {
gaps_in = 5; gaps_in = 5;
+1 -2
View File
@@ -2,8 +2,7 @@
config, config,
pkgs, pkgs,
... ...
}: }: {
{
wayland.windowManager.hyprland.settings = { wayland.windowManager.hyprland.settings = {
windowrule = [ windowrule = [
# See https://wiki.hyprland.org/Configuring/Window-Rules/ for more # See https://wiki.hyprland.org/Configuring/Window-Rules/ for more
+3 -6
View File
@@ -1,11 +1,9 @@
inputs: inputs: {
{
config, config,
pkgs, pkgs,
lib, lib,
... ...
}: }: let
let
palette = config.colorScheme.palette; palette = config.colorScheme.palette;
convert = inputs.nix-colors.lib.conversions.hexToRGBString; convert = inputs.nix-colors.lib.conversions.hexToRGBString;
selected_wallpaper_path = (import ../../lib/selected-wallpaper.nix config).wallpaper_path; selected_wallpaper_path = (import ../../lib/selected-wallpaper.nix config).wallpaper_path;
@@ -14,8 +12,7 @@ let
surfaceRgb = "rgb(${convert ", " palette.base02})"; surfaceRgb = "rgb(${convert ", " palette.base02})";
foregroundRgb = "rgb(${convert ", " palette.base05})"; foregroundRgb = "rgb(${convert ", " palette.base05})";
foregroundMutedRgb = "rgb(${convert ", " palette.base04})"; foregroundMutedRgb = "rgb(${convert ", " palette.base04})";
in in {
{
programs.hyprlock = { programs.hyprlock = {
enable = true; enable = true;
settings = { settings = {
+2 -4
View File
@@ -2,11 +2,9 @@
config, config,
pkgs, pkgs,
... ...
}: }: let
let
selected_wallpaper_path = (import ../../lib/selected-wallpaper.nix config).wallpaper_path; selected_wallpaper_path = (import ../../lib/selected-wallpaper.nix config).wallpaper_path;
in in {
{
home.file = { home.file = {
"Pictures/Wallpapers" = { "Pictures/Wallpapers" = {
source = ../../config/themes/wallpapers; source = ../../config/themes/wallpapers;
+2 -4
View File
@@ -2,11 +2,9 @@
config, config,
pkgs, pkgs,
... ...
}: }: let
let
cfg = config.omarchy; cfg = config.omarchy;
in in {
{
services.mako = { services.mako = {
enable = true; enable = true;
+1 -2
View File
@@ -1,4 +1,3 @@
{ ... }: {...}: {
{
programs.starship.enable = true; programs.starship.enable = true;
} }
+9 -12
View File
@@ -2,13 +2,11 @@
config, config,
pkgs, pkgs,
... ...
}: }: let
let
cfg = config.omarchy; cfg = config.omarchy;
themes = import ../themes.nix; themes = import ../themes.nix;
theme = themes.${cfg.theme}; theme = themes.${cfg.theme};
in in {
{
programs.vscode = { programs.vscode = {
enable = true; enable = true;
profiles.default = { profiles.default = {
@@ -17,16 +15,15 @@ in
# to change settings on the fly. Disabling until I have time to research. # to change settings on the fly. Disabling until I have time to research.
# In the meantime themes are broken # In the meantime themes are broken
# userSettings = # userSettings =
# { # {
# "workbench.colorTheme" = theme.vscode-theme; # "workbench.colorTheme" = theme.vscode-theme;
# "vim.useCtrlKeys" = false; # "vim.useCtrlKeys" = false;
# "editor.minimap.enabled" = false; # "editor.minimap.enabled" = false;
# } # }
# // cfg.vscode_settings; # // cfg.vscode_settings;
extensions = extensions = with pkgs.vscode-extensions;
with pkgs.vscode-extensions;
[ [
bbenoist.nix bbenoist.nix
vscodevim.vim vscodevim.vim
+12 -23
View File
@@ -1,16 +1,13 @@
inputs: inputs: {
{
config, config,
pkgs, pkgs,
... ...
}: }: let
let
palette = config.colorScheme.palette; palette = config.colorScheme.palette;
convert = inputs.nix-colors.lib.conversions.hexToRGBString; convert = inputs.nix-colors.lib.conversions.hexToRGBString;
backgroundRgb = "rgb(${convert ", " palette.base00})"; backgroundRgb = "rgb(${convert ", " palette.base00})";
foregroundRgb = "rgb(${convert ", " palette.base05})"; foregroundRgb = "rgb(${convert ", " palette.base05})";
in in {
{
home.file = { home.file = {
".config/waybar/" = { ".config/waybar/" = {
source = ../../config/waybar; source = ../../config/waybar;
@@ -71,11 +68,11 @@ in
active = "󱓻"; active = "󱓻";
}; };
persistent-workspaces = { persistent-workspaces = {
"1" = [ ]; "1" = [];
"2" = [ ]; "2" = [];
"3" = [ ]; "3" = [];
"4" = [ ]; "4" = [];
"5" = [ ]; "5" = [];
}; };
}; };
cpu = { cpu = {
@@ -89,13 +86,7 @@ in
tooltip = false; tooltip = false;
}; };
network = { network = {
format-icons = [ format-icons = ["󰤯" "󰤟" "󰤢" "󰤥" "󰤨"];
"󰤯"
"󰤟"
"󰤢"
"󰤥"
"󰤨"
];
format = "{icon}"; format = "{icon}";
format-wifi = "{icon}"; format-wifi = "{icon}";
format-ethernet = "󰀂"; format-ethernet = "󰀂";
@@ -152,21 +143,19 @@ in
format-disabled = "󰂲"; format-disabled = "󰂲";
format-connected = ""; format-connected = "";
tooltip-format = "Devices connected: {num_connections}"; tooltip-format = "Devices connected: {num_connections}";
on-click = "blueberry"; on-click = "GTK_THEME=Adwaita-dark blueberry";
}; };
wireplumber = { wireplumber = {
# Changed from "pulseaudio" # Changed from "pulseaudio"
"format" = ""; "format" = "";
format-muted = "󰝟"; format-muted = "󰝟";
scroll-step = 5; scroll-step = 5;
on-click = "pavucontrol"; on-click = "GTK_THEME=Adwaita-dark pavucontrol";
tooltip-format = "Playing at {volume}%"; tooltip-format = "Playing at {volume}%";
on-click-right = "wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle"; # Updated command on-click-right = "wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle"; # Updated command
max-volume = 150; # Optional: allow volume over 100% max-volume = 150; # Optional: allow volume over 100%
}; };
tray = { tray = {spacing = 13;};
spacing = 13;
};
power-profiles-daemon = { power-profiles-daemon = {
format = "{icon}"; format = "{icon}";
tooltip-format = "Power profile: {profile}"; tooltip-format = "Power profile: {profile}";
+1 -2
View File
@@ -2,8 +2,7 @@
config, config,
pkgs, pkgs,
... ...
}: }: {
{
home.file = { home.file = {
".config/wofi/style.css" = { ".config/wofi/style.css" = {
text = '' text = ''
+1 -2
View File
@@ -1,5 +1,4 @@
{ ... }: {...}: {
{
programs.zoxide = { programs.zoxide = {
enable = true; enable = true;
enableZshIntegration = true; enableZshIntegration = true;
+3 -4
View File
@@ -1,5 +1,4 @@
{ ... }: {...}: {
{
programs.zsh = { programs.zsh = {
enable = true; enable = true;
autosuggestion.enable = true; autosuggestion.enable = true;
@@ -8,11 +7,11 @@
plugins = [ plugins = [
{ {
name = "plugins/git"; name = "plugins/git";
tags = [ "from:oh-my-zsh" ]; tags = [from:oh-my-zsh];
} }
{ {
name = "fdellwing/zsh-bat"; name = "fdellwing/zsh-bat";
tags = [ "as:command" ]; tags = [as:command];
} }
]; ];
}; };
+2 -3
View File
@@ -1,10 +1,9 @@
{ ... }: {...}: {
{
programs = { programs = {
_1password.enable = true; _1password.enable = true;
_1password-gui.enable = true; _1password-gui.enable = true;
# TODO: Dynamically get user names # TODO: Dynamically get user names
_1password-gui.polkitPolicyOwners = [ "henry" ]; _1password-gui.polkitPolicyOwners = ["henry"];
}; };
} }
+1 -2
View File
@@ -1,5 +1,4 @@
{ pkgs, ... }: {pkgs, ...}: {
{
virtualisation.containers.enable = true; virtualisation.containers.enable = true;
virtualisation = { virtualisation = {
docker.enable = true; docker.enable = true;
+4 -7
View File
@@ -1,14 +1,11 @@
inputs: inputs: {
{
config, config,
pkgs, pkgs,
... ...
}: }: let
let
cfg = config.omarchy; cfg = config.omarchy;
packages = import ../packages.nix { inherit pkgs; }; packages = import ../packages.nix {inherit pkgs;};
in in {
{
imports = [ imports = [
(import ./hyprland.nix inputs) (import ./hyprland.nix inputs)
(import ./system.nix) (import ./system.nix)
+2 -4
View File
@@ -1,10 +1,8 @@
inputs: inputs: {
{
config, config,
pkgs, pkgs,
... ...
}: }: {
{
programs.hyprland = { programs.hyprland = {
enable = true; enable = true;
# package = inputs.hyprland.packages.${pkgs.system}.hyprland; # package = inputs.hyprland.packages.${pkgs.system}.hyprland;
+4 -9
View File
@@ -3,15 +3,10 @@
pkgs, pkgs,
lib, lib,
... ...
}: }: let
let
cfg = config.omarchy; cfg = config.omarchy;
packages = import ../packages.nix { packages = import ../packages.nix {inherit pkgs lib; exclude_packages = cfg.exclude_packages;};
inherit pkgs lib; in {
exclude_packages = cfg.exclude_packages;
};
in
{
security.rtkit.enable = true; security.rtkit.enable = true;
services.pulseaudio.enable = false; services.pulseaudio.enable = false;
services.pipewire = { services.pipewire = {
@@ -41,7 +36,7 @@ in
fonts.packages = with pkgs; [ fonts.packages = with pkgs; [
noto-fonts noto-fonts
noto-fonts-color-emoji noto-fonts-emoji
nerd-fonts.caskaydia-mono nerd-fonts.caskaydia-mono
]; ];
} }
+26 -33
View File
@@ -1,8 +1,4 @@
{ {pkgs, lib, exclude_packages ? []}:
pkgs,
lib,
exclude_packages ? [ ],
}:
let let
# Essential Hyprland packages - cannot be excluded # Essential Hyprland packages - cannot be excluded
hyprlandPackages = with pkgs; [ hyprlandPackages = with pkgs; [
@@ -37,41 +33,38 @@ let
]; ];
# Discretionary packages - can be excluded by user # Discretionary packages - can be excluded by user
discretionaryPackages = discretionaryPackages = with pkgs; [
with pkgs; # TUIs
[ lazygit
# TUIs lazydocker
lazygit btop
lazydocker powertop
btop fastfetch
powertop
fastfetch
# GUIs # GUIs
chromium chromium
obsidian obsidian
vlc vlc
signal-desktop signal-desktop
# Development tools # Commercial GUIs
github-desktop typora
gh dropbox
spotify
# Containers # Development tools
docker-compose github-desktop
ffmpeg gh
]
++ lib.optionals (pkgs.system == "x86_64-linux") [ # Containers
typora docker-compose
dropbox ffmpeg
spotify ];
];
# Only allow excluding discretionary packages to prevent breaking the system # Only allow excluding discretionary packages to prevent breaking the system
filteredDiscretionaryPackages = lib.lists.subtractLists exclude_packages discretionaryPackages; filteredDiscretionaryPackages = lib.lists.subtractLists exclude_packages discretionaryPackages;
allSystemPackages = hyprlandPackages ++ systemPackages ++ filteredDiscretionaryPackages; allSystemPackages = hyprlandPackages ++ systemPackages ++ filteredDiscretionaryPackages;
in in {
{
# Regular packages # Regular packages
systemPackages = allSystemPackages; systemPackages = allSystemPackages;