10 Commits

Author SHA1 Message Date
Henry Sipp 308e0f85a0 Revise README for clarity on project status
Updated README to reflect personal usage of Arch Omarchy and contribution invitation.
2025-11-12 20:12:10 -06:00
cguentherTUChemnitz 128a95235f fixing build failure against current nixos-unstable: error: 'noto-fonts-emoji' has been renamed to/replaced by 'noto-fonts-color-emoji' (#26) 2025-11-09 18:34:45 -06:00
Gaétan Lepage fba993c589 Format project with official nixfmt formatter (#21)
* Set nix official formatter for the flake

* format the entire project
2025-10-15 15:09:51 -05:00
Henry Sipp 98b3c63572 Update README.md 2025-09-29 15:58:34 -05:00
Henry Sipp 254ad6756a Update README.md 2025-09-24 19:35:16 -05:00
coco 9409ecce21 Update input.nix (#14)
building the system configuration...
warning: Git tree '/home/coco/nixos-dotfiles' is dirty
error:
       … while calling the 'head' builtin
         at /nix/store/x2k3b38vdbrpxsf262lpwlmpf8nggbxj-source/lib/attrsets.nix:1534:13:
         1533|           if length values == 1 || pred here (elemAt values 1) (head values) then
         1534|             head values
             |             ^
         1535|           else

       … while evaluating the attribute 'value'
         at /nix/store/x2k3b38vdbrpxsf262lpwlmpf8nggbxj-source/lib/modules.nix:1083:7:
         1082|     // {
         1083|       value = addErrorContext "while evaluating the option `${showOption loc}':" value;
             |       ^
         1084|       inherit (res.defsFinal') highestPrio;

       (stack trace truncated; use '--show-trace' to show the full trace)

       error: URL literals are deprecated, allow using them with --extra-deprecated-features url-literals
       at /nix/store/l1xywynici5593h7ml1h05rkhx3j92qp-source/modules/home-manager/hyprland/input.nix:14:20:
           13|       # kb_model =
           14|       kb_options = compose:caps;
             |                    ^
           15|       # kb_rules =
2025-09-02 21:19:02 -05:00
Spencer Heywood dd77b809b1 only use x86_64-linux exclusive packages when on that arch (#9) 2025-08-25 00:09:29 -05:00
Mark Dickie 23e8b2371f Simple flake update to get hyprland 0.50 (#10) 2025-08-25 00:09:11 -05:00
Henry Sipp 9adcae932c Temp hack for light mode themes gtk 2025-07-28 10:33:17 -05:00
Henry Sipp 7d7a7a9f11 Update generated theme config (#7)
* Update theme system

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