mirror of
https://github.com/henrysipp/omarchy-nix.git
synced 2026-06-06 10:49:25 -05:00
Compare commits
10 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 308e0f85a0 | |||
| 128a95235f | |||
| fba993c589 | |||
| 98b3c63572 | |||
| 254ad6756a | |||
| 9409ecce21 | |||
| dd77b809b1 | |||
| 23e8b2371f | |||
| 9adcae932c | |||
| 7d7a7a9f11 |
@@ -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.
|
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
|
## Quick Start
|
||||||
|
|
||||||
@@ -69,21 +70,39 @@ Omarchy-nix includes several predefined themes:
|
|||||||
- `gruvbox`
|
- `gruvbox`
|
||||||
- `gruvbox-light`
|
- `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
|
```nix
|
||||||
{
|
{
|
||||||
omarchy = {
|
omarchy = {
|
||||||
theme = "custom";
|
theme = "generated_dark"; # or "generated_light"
|
||||||
customTheme = {
|
theme_overrides = {
|
||||||
wallpaperPath = ./path/to/your/wallpaper.png;
|
wallpaper_path = ./path/to/your/wallpaper.png;
|
||||||
variant = "dark"; # or "light" for light themes
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
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
|
## License
|
||||||
|
|
||||||
|
|||||||
+11
-14
@@ -17,27 +17,24 @@ lib: {
|
|||||||
"nord"
|
"nord"
|
||||||
"gruvbox"
|
"gruvbox"
|
||||||
"gruvbox-light"
|
"gruvbox-light"
|
||||||
"custom"
|
"generated_light"
|
||||||
|
"generated_dark"
|
||||||
]) lib.types.str;
|
]) lib.types.str;
|
||||||
default = "tokyo-night";
|
default = "tokyo-night";
|
||||||
description = "Theme to use for Omarchy configuration";
|
description = "Theme to use for Omarchy configuration";
|
||||||
};
|
};
|
||||||
customTheme = lib.mkOption {
|
theme_overrides = lib.mkOption {
|
||||||
type = lib.types.submodule {
|
type = lib.types.submodule {
|
||||||
options = {
|
options = {
|
||||||
wallpaperPath = lib.mkOption {
|
wallpaper_path = lib.mkOption {
|
||||||
type = lib.types.path;
|
type = lib.types.nullOr lib.types.path;
|
||||||
|
default = null;
|
||||||
description = "Path to the wallpaper image to extract colors from";
|
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 = {};
|
default = { };
|
||||||
description = "Custom theme configuration when theme is set to 'custom'";
|
description = "Theme overrides including wallpaper path for generated themes";
|
||||||
};
|
};
|
||||||
primary_font = lib.mkOption {
|
primary_font = lib.mkOption {
|
||||||
type = lib.types.str;
|
type = lib.types.str;
|
||||||
@@ -45,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;
|
||||||
@@ -83,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
@@ -20,11 +20,11 @@
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1751740947,
|
"lastModified": 1753216019,
|
||||||
"narHash": "sha256-35040CHH7P3JGmhGVfEb2oJHL/A5mI2IXumhkxrBnao=",
|
"narHash": "sha256-zik7WISrR1ks2l6T1MZqZHb/OqroHdJnSnAehkE0kCk=",
|
||||||
"owner": "hyprwm",
|
"owner": "hyprwm",
|
||||||
"repo": "aquamarine",
|
"repo": "aquamarine",
|
||||||
"rev": "dfc1db15a08c4cd234288f66e1199c653495301f",
|
"rev": "be166e11d86ba4186db93e10c54a141058bdce49",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -52,11 +52,11 @@
|
|||||||
"flake-compat": {
|
"flake-compat": {
|
||||||
"flake": false,
|
"flake": false,
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1696426674,
|
"lastModified": 1747046372,
|
||||||
"narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=",
|
"narHash": "sha256-CIVLLkVgvHYbgI2UpXvIIBJ12HWgX+fjA8Xf8PUmqCY=",
|
||||||
"owner": "edolstra",
|
"owner": "edolstra",
|
||||||
"repo": "flake-compat",
|
"repo": "flake-compat",
|
||||||
"rev": "0f9255e01c2351cc7d116c072cb317785dd33b33",
|
"rev": "9100a0f413b0c601e0533d1d94ffd501ce2e7885",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -94,11 +94,11 @@
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1751990210,
|
"lastModified": 1755229570,
|
||||||
"narHash": "sha256-krWErNDl9ggMLSfK00Q2BcoSk3+IRTSON/DiDgUzzMw=",
|
"narHash": "sha256-soZegto0xXzG2zYlu/zjknDHv0Z7tRS5EQs+Z/VRTBg=",
|
||||||
"owner": "nix-community",
|
"owner": "nix-community",
|
||||||
"repo": "home-manager",
|
"repo": "home-manager",
|
||||||
"rev": "218da00bfa73f2a61682417efe74549416c16ba6",
|
"rev": "11626a4383b458f8dc5ea3237eaa04e8ab1912f3",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -123,11 +123,11 @@
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1749155331,
|
"lastModified": 1753964049,
|
||||||
"narHash": "sha256-XR9fsI0zwLiFWfqi/pdS/VD+YNorKb3XIykgTg4l1nA=",
|
"narHash": "sha256-lIqabfBY7z/OANxHoPeIrDJrFyYy9jAM4GQLzZ2feCM=",
|
||||||
"owner": "hyprwm",
|
"owner": "hyprwm",
|
||||||
"repo": "hyprcursor",
|
"repo": "hyprcursor",
|
||||||
"rev": "45fcc10b4c282746d93ec406a740c43b48b4ef80",
|
"rev": "44e91d467bdad8dcf8bbd2ac7cf49972540980a5",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -152,11 +152,11 @@
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1751808145,
|
"lastModified": 1754305013,
|
||||||
"narHash": "sha256-OXgL0XaKMmfX2rRQkt9SkJw+QNfv0jExlySt1D6O72g=",
|
"narHash": "sha256-u+M2f0Xf1lVHzIPQ7DsNCDkM1NYxykOSsRr4t3TbSM4=",
|
||||||
"owner": "hyprwm",
|
"owner": "hyprwm",
|
||||||
"repo": "hyprgraphics",
|
"repo": "hyprgraphics",
|
||||||
"rev": "b841473a0bd4a1a74a0b64f1ec2ab199035c349f",
|
"rev": "4c1d63a0f22135db123fc789f174b89544c6ec2d",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -181,11 +181,11 @@
|
|||||||
"xdph": "xdph"
|
"xdph": "xdph"
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1751995875,
|
"lastModified": 1755184403,
|
||||||
"narHash": "sha256-ud9sl1RjmzAzalH2ocmGPs182xvr7GktjVIYvzJamwo=",
|
"narHash": "sha256-VI+ZPD/uIFjzYW8IcyvBgvwyDIvUe4/xh/kOHTbITX8=",
|
||||||
"owner": "hyprwm",
|
"owner": "hyprwm",
|
||||||
"repo": "Hyprland",
|
"repo": "Hyprland",
|
||||||
"rev": "9517d0eaa4ef93de67dc80fecca7a826f7ad556d",
|
"rev": "60d769a89908c29e19100059985db15a7b6bab6a",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -274,11 +274,11 @@
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1750371812,
|
"lastModified": 1753819801,
|
||||||
"narHash": "sha256-D868K1dVEACw17elVxRgXC6hOxY+54wIEjURztDWLk8=",
|
"narHash": "sha256-tHe6XeNeVeKapkNM3tcjW4RuD+tB2iwwoogWJOtsqTI=",
|
||||||
"owner": "hyprwm",
|
"owner": "hyprwm",
|
||||||
"repo": "hyprland-qtutils",
|
"repo": "hyprland-qtutils",
|
||||||
"rev": "b13c7481e37856f322177010bdf75fccacd1adc8",
|
"rev": "b308a818b9dcaa7ab8ccab891c1b84ebde2152bc",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -303,11 +303,11 @@
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1750371198,
|
"lastModified": 1753622892,
|
||||||
"narHash": "sha256-/iuJ1paQOBoSLqHflRNNGyroqfF/yvPNurxzcCT0cAE=",
|
"narHash": "sha256-0K+A+gmOI8IklSg5It1nyRNv0kCNL51duwnhUO/B8JA=",
|
||||||
"owner": "hyprwm",
|
"owner": "hyprwm",
|
||||||
"repo": "hyprlang",
|
"repo": "hyprlang",
|
||||||
"rev": "cee01452bca58d6cadb3224e21e370de8bc20f0b",
|
"rev": "23f0debd2003f17bd65f851cd3f930cff8a8c809",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -328,11 +328,11 @@
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1751888065,
|
"lastModified": 1754481650,
|
||||||
"narHash": "sha256-F2SV9WGqgtRsXIdUrl3sRe0wXlQD+kRRZcSfbepjPJY=",
|
"narHash": "sha256-6u6HdEFJh5gY6VfyMQbhP7zDdVcqOrCDTkbiHJmAtMI=",
|
||||||
"owner": "hyprwm",
|
"owner": "hyprwm",
|
||||||
"repo": "hyprutils",
|
"repo": "hyprutils",
|
||||||
"rev": "a8229739cf36d159001cfc203871917b83fdf917",
|
"rev": "df6b8820c4a0835d83d0c7c7be86fbc555f1f7fd",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -353,11 +353,11 @@
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1751881472,
|
"lastModified": 1751897909,
|
||||||
"narHash": "sha256-meB0SnXbwIe2trD041MLKEv6R7NZ759QwBcVIhlSBfE=",
|
"narHash": "sha256-FnhBENxihITZldThvbO7883PdXC/2dzW4eiNvtoV5Ao=",
|
||||||
"owner": "hyprwm",
|
"owner": "hyprwm",
|
||||||
"repo": "hyprwayland-scanner",
|
"repo": "hyprwayland-scanner",
|
||||||
"rev": "8fb426b3e5452fd9169453fd6c10f8c14ca37120",
|
"rev": "fcca0c61f988a9d092cbb33e906775014c61579d",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -387,11 +387,11 @@
|
|||||||
},
|
},
|
||||||
"nixpkgs": {
|
"nixpkgs": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1751792365,
|
"lastModified": 1754725699,
|
||||||
"narHash": "sha256-J1kI6oAj25IG4EdVlg2hQz8NZTBNYvIS0l4wpr9KcUo=",
|
"narHash": "sha256-iAcj9T/Y+3DBy2J0N+yF9XQQQ8IEb5swLFzs23CdP88=",
|
||||||
"owner": "NixOS",
|
"owner": "NixOS",
|
||||||
"repo": "nixpkgs",
|
"repo": "nixpkgs",
|
||||||
"rev": "1fd8bada0b6117e6c7eb54aad5813023eed37ccb",
|
"rev": "85dbfc7aaf52ecb755f87e577ddbe6dbbdbc1054",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -418,11 +418,11 @@
|
|||||||
},
|
},
|
||||||
"nixpkgs_2": {
|
"nixpkgs_2": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1751792365,
|
"lastModified": 1755186698,
|
||||||
"narHash": "sha256-J1kI6oAj25IG4EdVlg2hQz8NZTBNYvIS0l4wpr9KcUo=",
|
"narHash": "sha256-wNO3+Ks2jZJ4nTHMuks+cxAiVBGNuEBXsT29Bz6HASo=",
|
||||||
"owner": "NixOS",
|
"owner": "NixOS",
|
||||||
"repo": "nixpkgs",
|
"repo": "nixpkgs",
|
||||||
"rev": "1fd8bada0b6117e6c7eb54aad5813023eed37ccb",
|
"rev": "fbcf476f790d8a217c3eab4e12033dc4a0f6d23c",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -442,11 +442,11 @@
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1750779888,
|
"lastModified": 1754416808,
|
||||||
"narHash": "sha256-wibppH3g/E2lxU43ZQHC5yA/7kIKLGxVEnsnVK1BtRg=",
|
"narHash": "sha256-c6yg0EQ9xVESx6HGDOCMcyRSjaTpNJP10ef+6fRcofA=",
|
||||||
"owner": "cachix",
|
"owner": "cachix",
|
||||||
"repo": "git-hooks.nix",
|
"repo": "git-hooks.nix",
|
||||||
"rev": "16ec914f6fb6f599ce988427d9d94efddf25fe6d",
|
"rev": "9c52372878df6911f9afc1e2a1391f55e4dfc864",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -506,11 +506,11 @@
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1751300244,
|
"lastModified": 1753633878,
|
||||||
"narHash": "sha256-PFuv1TZVYvQhha0ac53E3YgdtmLShrN0t4T6xqHl0jE=",
|
"narHash": "sha256-js2sLRtsOUA/aT10OCDaTjO80yplqwOIaLUqEe0nMx0=",
|
||||||
"owner": "hyprwm",
|
"owner": "hyprwm",
|
||||||
"repo": "xdg-desktop-portal-hyprland",
|
"repo": "xdg-desktop-portal-hyprland",
|
||||||
"rev": "6115f3fdcb2c1a57b4a80a69f3c797e47607b90a",
|
"rev": "371b96bd11ad2006ed4f21229dbd1be69bed3e8a",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
|||||||
@@ -9,48 +9,56 @@
|
|||||||
inputs.nixpkgs.follows = "nixpkgs";
|
inputs.nixpkgs.follows = "nixpkgs";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
outputs = inputs @ {
|
outputs =
|
||||||
self,
|
inputs@{
|
||||||
nixpkgs,
|
self,
|
||||||
hyprland,
|
nixpkgs,
|
||||||
nix-colors,
|
hyprland,
|
||||||
home-manager,
|
nix-colors,
|
||||||
}: {
|
home-manager,
|
||||||
nixosModules = {
|
}:
|
||||||
default = {
|
{
|
||||||
config,
|
formatter.x86_64-linux = nixpkgs.legacyPackages.x86_64-linux.nixfmt-tree;
|
||||||
lib,
|
|
||||||
pkgs,
|
|
||||||
...
|
|
||||||
}: {
|
|
||||||
imports = [
|
|
||||||
(import ./modules/nixos/default.nix inputs)
|
|
||||||
];
|
|
||||||
|
|
||||||
options.omarchy = (import ./config.nix lib).omarchyOptions;
|
nixosModules = {
|
||||||
config = {
|
default =
|
||||||
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;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
config: let
|
config:
|
||||||
|
let
|
||||||
cfg = config.omarchy;
|
cfg = config.omarchy;
|
||||||
wallpapers = {
|
wallpapers = {
|
||||||
"tokyo-night" = [
|
"tokyo-night" = [
|
||||||
@@ -21,12 +22,19 @@ config: let
|
|||||||
];
|
];
|
||||||
};
|
};
|
||||||
|
|
||||||
# Handle custom wallpaper path
|
# Handle wallpaper path for generated themes and overrides
|
||||||
wallpaper_path = if cfg.theme == "custom"
|
wallpaper_path =
|
||||||
then toString cfg.customTheme.wallpaperPath
|
if
|
||||||
else let
|
(cfg.theme == "generated_light" || cfg.theme == "generated_dark")
|
||||||
selected_wallpaper = builtins.elemAt (wallpapers.${cfg.theme}) 0;
|
|| (cfg.theme_overrides.wallpaper_path != null)
|
||||||
in "~/Pictures/Wallpapers/${selected_wallpaper}";
|
then
|
||||||
in {
|
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;
|
inherit wallpaper_path;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2,10 +2,12 @@
|
|||||||
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 = ''
|
||||||
|
|||||||
@@ -1,26 +1,36 @@
|
|||||||
inputs: {
|
inputs:
|
||||||
|
{
|
||||||
config,
|
config,
|
||||||
pkgs,
|
pkgs,
|
||||||
lib,
|
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;
|
themes = import ../themes.nix;
|
||||||
|
|
||||||
# Handle theme selection - either predefined or custom
|
# Handle theme selection - either predefined or generated
|
||||||
selectedTheme = if config.omarchy.theme == "custom"
|
selectedTheme =
|
||||||
then themes.custom
|
if (config.omarchy.theme == "generated_light" || config.omarchy.theme == "generated_dark") then
|
||||||
else themes.${config.omarchy.theme};
|
null
|
||||||
|
else
|
||||||
# Generate color scheme - either from predefined or from wallpaper
|
themes.${config.omarchy.theme};
|
||||||
generatedColorScheme = if config.omarchy.theme == "custom"
|
|
||||||
then (inputs.nix-colors.lib.contrib { inherit pkgs; }).colorSchemeFromPicture {
|
# Generate color scheme from wallpaper for generated themes
|
||||||
path = config.omarchy.customTheme.wallpaperPath;
|
generatedColorScheme =
|
||||||
variant = config.omarchy.customTheme.variant;
|
if (config.omarchy.theme == "generated_light" || config.omarchy.theme == "generated_dark") then
|
||||||
}
|
(inputs.nix-colors.lib.contrib { inherit pkgs; }).colorSchemeFromPicture {
|
||||||
else null;
|
path = config.omarchy.theme_overrides.wallpaper_path;
|
||||||
in {
|
variant = if config.omarchy.theme == "generated_light" then "light" else "dark";
|
||||||
|
}
|
||||||
|
else
|
||||||
|
null;
|
||||||
|
in
|
||||||
|
{
|
||||||
imports = [
|
imports = [
|
||||||
(import ./hyprland.nix inputs)
|
(import ./hyprland.nix inputs)
|
||||||
(import ./hyprlock.nix inputs)
|
(import ./hyprlock.nix inputs)
|
||||||
@@ -47,14 +57,16 @@ in {
|
|||||||
};
|
};
|
||||||
home.packages = packages.homePackages;
|
home.packages = packages.homePackages;
|
||||||
|
|
||||||
colorScheme = if config.omarchy.theme == "custom"
|
colorScheme =
|
||||||
then generatedColorScheme
|
if (config.omarchy.theme == "generated_light" || config.omarchy.theme == "generated_dark") then
|
||||||
else inputs.nix-colors.colorSchemes.${selectedTheme.base16-theme};
|
generatedColorScheme
|
||||||
|
else
|
||||||
|
inputs.nix-colors.colorSchemes.${selectedTheme.base16-theme};
|
||||||
|
|
||||||
gtk = {
|
gtk = {
|
||||||
enable = true;
|
enable = true;
|
||||||
theme = {
|
theme = {
|
||||||
name = "Adwaita-dark";
|
name = if config.omarchy.theme == "generated_light" then "Adwaita" else "Adwaita:dark";
|
||||||
package = pkgs.gnome-themes-extra;
|
package = pkgs.gnome-themes-extra;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
{...}: {
|
{ ... }:
|
||||||
|
{
|
||||||
programs.direnv = {
|
programs.direnv = {
|
||||||
enable = true;
|
enable = true;
|
||||||
enableZshIntegration = true;
|
enableZshIntegration = true;
|
||||||
|
|||||||
@@ -1,10 +1,11 @@
|
|||||||
{...}: {
|
{ ... }:
|
||||||
|
{
|
||||||
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,10 +2,12 @@
|
|||||||
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 = {
|
||||||
|
|||||||
@@ -1,6 +1,8 @@
|
|||||||
{config, ...}: let
|
{ config, ... }:
|
||||||
|
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,4 +1,5 @@
|
|||||||
{...}: {
|
{ ... }:
|
||||||
|
{
|
||||||
services.hypridle = {
|
services.hypridle = {
|
||||||
enable = true;
|
enable = true;
|
||||||
settings = {
|
settings = {
|
||||||
|
|||||||
@@ -1,9 +1,11 @@
|
|||||||
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;
|
||||||
|
|||||||
@@ -2,7 +2,8 @@
|
|||||||
config,
|
config,
|
||||||
pkgs,
|
pkgs,
|
||||||
...
|
...
|
||||||
}: {
|
}:
|
||||||
|
{
|
||||||
wayland.windowManager.hyprland.settings = {
|
wayland.windowManager.hyprland.settings = {
|
||||||
exec-once = [
|
exec-once = [
|
||||||
# "hypridle & mako & waybar & fcitx5"
|
# "hypridle & mako & waybar & fcitx5"
|
||||||
|
|||||||
@@ -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 =
|
bind = cfg.quick_app_bindings ++ [
|
||||||
cfg.quick_app_bindings
|
"SUPER, space, exec, wofi --show drun --sort-order=alphabetical"
|
||||||
++ [
|
"SUPER SHIFT, SPACE, exec, pkill -SIGUSR1 waybar"
|
||||||
"SUPER, space, exec, wofi --show drun --sort-order=alphabetical"
|
# "SUPER CTRL, SPACE, exec, ~/.local/share/omarchy/bin/swaybg-next"
|
||||||
"SUPER SHIFT, SPACE, exec, pkill -SIGUSR1 waybar"
|
# "SUPER SHIFT CTRL, SPACE, exec, ~/.local/share/omarchy/bin/omarchy-theme-next"
|
||||||
# "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, period, workspace, +1"
|
|
||||||
|
|
||||||
# Move active window to a workspace with mainMod + SHIFT + [0-9]
|
"SUPER, comma, workspace, -1"
|
||||||
"SUPER SHIFT, 1, movetoworkspace, 1"
|
"SUPER, period, workspace, +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
|
# Move active window to a workspace with mainMod + SHIFT + [0-9]
|
||||||
"SUPER SHIFT, left, swapwindow, l"
|
"SUPER SHIFT, 1, movetoworkspace, 1"
|
||||||
"SUPER SHIFT, right, swapwindow, r"
|
"SUPER SHIFT, 2, movetoworkspace, 2"
|
||||||
"SUPER SHIFT, up, swapwindow, u"
|
"SUPER SHIFT, 3, movetoworkspace, 3"
|
||||||
"SUPER SHIFT, down, swapwindow, d"
|
"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"
|
||||||
|
|
||||||
# Resize active window
|
# Swap active window with the one next to it with mainMod + SHIFT + arrow keys
|
||||||
"SUPER, minus, resizeactive, -100 0"
|
"SUPER SHIFT, left, swapwindow, l"
|
||||||
"SUPER, equal, resizeactive, 100 0"
|
"SUPER SHIFT, right, swapwindow, r"
|
||||||
"SUPER SHIFT, minus, resizeactive, 0 -100"
|
"SUPER SHIFT, up, swapwindow, u"
|
||||||
"SUPER SHIFT, equal, resizeactive, 0 100"
|
"SUPER SHIFT, down, swapwindow, d"
|
||||||
|
|
||||||
# Scroll through existing workspaces with mainMod + scroll
|
# Resize active window
|
||||||
"SUPER, mouse_down, workspace, e+1"
|
"SUPER, minus, resizeactive, -100 0"
|
||||||
"SUPER, mouse_up, workspace, e-1"
|
"SUPER, equal, resizeactive, 100 0"
|
||||||
|
"SUPER SHIFT, minus, resizeactive, 0 -100"
|
||||||
|
"SUPER SHIFT, equal, resizeactive, 0 100"
|
||||||
|
|
||||||
# Control Apple Display brightness
|
# Scroll through existing workspaces with mainMod + scroll
|
||||||
"CTRL, F1, exec, ~/.local/share/omarchy/bin/apple-display-brightness -5000"
|
"SUPER, mouse_down, workspace, e+1"
|
||||||
"CTRL, F2, exec, ~/.local/share/omarchy/bin/apple-display-brightness +5000"
|
"SUPER, mouse_up, workspace, e-1"
|
||||||
"SHIFT CTRL, F2, exec, ~/.local/share/omarchy/bin/apple-display-brightness +60000"
|
|
||||||
|
|
||||||
# Super workspace floating layer
|
# Control Apple Display brightness
|
||||||
"SUPER, S, togglespecialworkspace, magic"
|
"CTRL, F1, exec, ~/.local/share/omarchy/bin/apple-display-brightness -5000"
|
||||||
"SUPER SHIFT, S, movetoworkspace, special:magic"
|
"CTRL, F2, exec, ~/.local/share/omarchy/bin/apple-display-brightness +5000"
|
||||||
|
"SHIFT CTRL, F2, exec, ~/.local/share/omarchy/bin/apple-display-brightness +60000"
|
||||||
|
|
||||||
# Screenshots
|
# Super workspace floating layer
|
||||||
", PRINT, exec, hyprshot -m region"
|
"SUPER, S, togglespecialworkspace, magic"
|
||||||
"SHIFT, PRINT, exec, hyprshot -m window"
|
"SUPER SHIFT, S, movetoworkspace, special:magic"
|
||||||
"CTRL, PRINT, exec, hyprshot -m output"
|
|
||||||
|
|
||||||
# Color picker
|
# Screenshots
|
||||||
"SUPER, PRINT, exec, hyprpicker -a"
|
", PRINT, exec, hyprshot -m region"
|
||||||
|
"SHIFT, PRINT, exec, hyprshot -m window"
|
||||||
|
"CTRL, PRINT, exec, hyprshot -m output"
|
||||||
|
|
||||||
# Clipse
|
# Color picker
|
||||||
"CTRL SUPER, V, exec, ghostty --class clipse -e clipse"
|
"SUPER, PRINT, exec, hyprpicker -a"
|
||||||
];
|
|
||||||
|
# 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,9 +3,11 @@
|
|||||||
pkgs,
|
pkgs,
|
||||||
lib,
|
lib,
|
||||||
...
|
...
|
||||||
}: let
|
}:
|
||||||
|
let
|
||||||
cfg = config.omarchy;
|
cfg = config.omarchy;
|
||||||
in {
|
in
|
||||||
|
{
|
||||||
imports = [
|
imports = [
|
||||||
./autostart.nix
|
./autostart.nix
|
||||||
./bindings.nix
|
./bindings.nix
|
||||||
|
|||||||
@@ -2,9 +2,10 @@
|
|||||||
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 = [
|
||||||
@@ -12,47 +13,46 @@
|
|||||||
"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 =
|
env = (lib.optionals hasNvidiaDrivers nvidiaEnv) ++ [
|
||||||
(lib.optionals hasNvidiaDrivers nvidiaEnv)
|
"GDK_SCALE,${toString cfg.scale}"
|
||||||
++ [
|
|
||||||
"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,Adwaita:dark"
|
|
||||||
|
|
||||||
# Podman compatibility. Probably need to add cfg.env?
|
# GTK theme
|
||||||
# "DOCKER_HOST,unix://$XDG_RUNTIME_DIR/podman/podman.sock"
|
"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"
|
||||||
|
];
|
||||||
|
|
||||||
xwayland = {
|
xwayland = {
|
||||||
force_zero_scaling = true;
|
force_zero_scaling = true;
|
||||||
|
|||||||
@@ -3,7 +3,8 @@
|
|||||||
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
|
||||||
@@ -11,7 +12,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;
|
||||||
|
|||||||
@@ -2,13 +2,18 @@
|
|||||||
config,
|
config,
|
||||||
pkgs,
|
pkgs,
|
||||||
...
|
...
|
||||||
}: let
|
}:
|
||||||
hexToRgba = hex: alpha: let
|
let
|
||||||
in "rgba(${hex}${alpha})";
|
hexToRgba =
|
||||||
|
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;
|
||||||
|
|||||||
@@ -2,7 +2,8 @@
|
|||||||
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
|
||||||
|
|||||||
@@ -1,9 +1,11 @@
|
|||||||
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;
|
||||||
@@ -12,7 +14,8 @@ inputs: {
|
|||||||
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,9 +2,11 @@
|
|||||||
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,9 +2,11 @@
|
|||||||
config,
|
config,
|
||||||
pkgs,
|
pkgs,
|
||||||
...
|
...
|
||||||
}: let
|
}:
|
||||||
|
let
|
||||||
cfg = config.omarchy;
|
cfg = config.omarchy;
|
||||||
in {
|
in
|
||||||
|
{
|
||||||
services.mako = {
|
services.mako = {
|
||||||
enable = true;
|
enable = true;
|
||||||
|
|
||||||
|
|||||||
@@ -1,3 +1,4 @@
|
|||||||
{...}: {
|
{ ... }:
|
||||||
|
{
|
||||||
programs.starship.enable = true;
|
programs.starship.enable = true;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2,28 +2,31 @@
|
|||||||
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 = {
|
||||||
|
|
||||||
# This is actually turning out to be super annoying whenever I need
|
# This is actually turning out to be super annoying whenever I need
|
||||||
# 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;
|
|
||||||
|
|
||||||
extensions = with pkgs.vscode-extensions;
|
# // cfg.vscode_settings;
|
||||||
|
|
||||||
|
extensions =
|
||||||
|
with pkgs.vscode-extensions;
|
||||||
[
|
[
|
||||||
bbenoist.nix
|
bbenoist.nix
|
||||||
vscodevim.vim
|
vscodevim.vim
|
||||||
|
|||||||
@@ -1,12 +1,16 @@
|
|||||||
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})";
|
||||||
in {
|
foregroundRgb = "rgb(${convert ", " palette.base05})";
|
||||||
|
in
|
||||||
|
{
|
||||||
home.file = {
|
home.file = {
|
||||||
".config/waybar/" = {
|
".config/waybar/" = {
|
||||||
source = ../../config/waybar;
|
source = ../../config/waybar;
|
||||||
@@ -16,7 +20,7 @@ in {
|
|||||||
text = ''
|
text = ''
|
||||||
@define-color background ${backgroundRgb};
|
@define-color background ${backgroundRgb};
|
||||||
* {
|
* {
|
||||||
color: white;
|
color: ${foregroundRgb};
|
||||||
}
|
}
|
||||||
|
|
||||||
window#waybar {
|
window#waybar {
|
||||||
@@ -67,11 +71,11 @@ in {
|
|||||||
active = "";
|
active = "";
|
||||||
};
|
};
|
||||||
persistent-workspaces = {
|
persistent-workspaces = {
|
||||||
"1" = [];
|
"1" = [ ];
|
||||||
"2" = [];
|
"2" = [ ];
|
||||||
"3" = [];
|
"3" = [ ];
|
||||||
"4" = [];
|
"4" = [ ];
|
||||||
"5" = [];
|
"5" = [ ];
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
cpu = {
|
cpu = {
|
||||||
@@ -85,7 +89,13 @@ 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 = "";
|
||||||
@@ -142,19 +152,21 @@ in {
|
|||||||
format-disabled = "";
|
format-disabled = "";
|
||||||
format-connected = "";
|
format-connected = "";
|
||||||
tooltip-format = "Devices connected: {num_connections}";
|
tooltip-format = "Devices connected: {num_connections}";
|
||||||
on-click = "GTK_THEME=Adwaita-dark blueberry";
|
on-click = "blueberry";
|
||||||
};
|
};
|
||||||
wireplumber = {
|
wireplumber = {
|
||||||
# Changed from "pulseaudio"
|
# Changed from "pulseaudio"
|
||||||
"format" = "";
|
"format" = "";
|
||||||
format-muted = "";
|
format-muted = "";
|
||||||
scroll-step = 5;
|
scroll-step = 5;
|
||||||
on-click = "GTK_THEME=Adwaita-dark pavucontrol";
|
on-click = "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 = {spacing = 13;};
|
tray = {
|
||||||
|
spacing = 13;
|
||||||
|
};
|
||||||
power-profiles-daemon = {
|
power-profiles-daemon = {
|
||||||
format = "{icon}";
|
format = "{icon}";
|
||||||
tooltip-format = "Power profile: {profile}";
|
tooltip-format = "Power profile: {profile}";
|
||||||
|
|||||||
@@ -2,7 +2,8 @@
|
|||||||
config,
|
config,
|
||||||
pkgs,
|
pkgs,
|
||||||
...
|
...
|
||||||
}: {
|
}:
|
||||||
|
{
|
||||||
home.file = {
|
home.file = {
|
||||||
".config/wofi/style.css" = {
|
".config/wofi/style.css" = {
|
||||||
text = ''
|
text = ''
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
{...}: {
|
{ ... }:
|
||||||
|
{
|
||||||
programs.zoxide = {
|
programs.zoxide = {
|
||||||
enable = true;
|
enable = true;
|
||||||
enableZshIntegration = true;
|
enableZshIntegration = true;
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
{...}: {
|
{ ... }:
|
||||||
|
{
|
||||||
programs.zsh = {
|
programs.zsh = {
|
||||||
enable = true;
|
enable = true;
|
||||||
autosuggestion.enable = true;
|
autosuggestion.enable = true;
|
||||||
@@ -7,11 +8,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" ];
|
||||||
}
|
}
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -1,9 +1,10 @@
|
|||||||
{...}: {
|
{ ... }:
|
||||||
|
{
|
||||||
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,4 +1,5 @@
|
|||||||
{pkgs, ...}: {
|
{ pkgs, ... }:
|
||||||
|
{
|
||||||
virtualisation.containers.enable = true;
|
virtualisation.containers.enable = true;
|
||||||
virtualisation = {
|
virtualisation = {
|
||||||
docker.enable = true;
|
docker.enable = true;
|
||||||
|
|||||||
@@ -1,11 +1,14 @@
|
|||||||
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)
|
||||||
|
|||||||
@@ -1,8 +1,10 @@
|
|||||||
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;
|
||||||
|
|||||||
@@ -3,10 +3,15 @@
|
|||||||
pkgs,
|
pkgs,
|
||||||
lib,
|
lib,
|
||||||
...
|
...
|
||||||
}: let
|
}:
|
||||||
|
let
|
||||||
cfg = config.omarchy;
|
cfg = config.omarchy;
|
||||||
packages = import ../packages.nix {inherit pkgs lib; exclude_packages = cfg.exclude_packages;};
|
packages = import ../packages.nix {
|
||||||
in {
|
inherit pkgs lib;
|
||||||
|
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 = {
|
||||||
@@ -36,7 +41,7 @@ in {
|
|||||||
|
|
||||||
fonts.packages = with pkgs; [
|
fonts.packages = with pkgs; [
|
||||||
noto-fonts
|
noto-fonts
|
||||||
noto-fonts-emoji
|
noto-fonts-color-emoji
|
||||||
nerd-fonts.caskaydia-mono
|
nerd-fonts.caskaydia-mono
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|||||||
+33
-26
@@ -1,4 +1,8 @@
|
|||||||
{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; [
|
||||||
@@ -33,38 +37,41 @@ let
|
|||||||
];
|
];
|
||||||
|
|
||||||
# Discretionary packages - can be excluded by user
|
# Discretionary packages - can be excluded by user
|
||||||
discretionaryPackages = with pkgs; [
|
discretionaryPackages =
|
||||||
# TUIs
|
with pkgs;
|
||||||
lazygit
|
[
|
||||||
lazydocker
|
# TUIs
|
||||||
btop
|
lazygit
|
||||||
powertop
|
lazydocker
|
||||||
fastfetch
|
btop
|
||||||
|
powertop
|
||||||
|
fastfetch
|
||||||
|
|
||||||
# GUIs
|
# GUIs
|
||||||
chromium
|
chromium
|
||||||
obsidian
|
obsidian
|
||||||
vlc
|
vlc
|
||||||
signal-desktop
|
signal-desktop
|
||||||
|
|
||||||
# Commercial GUIs
|
# Development tools
|
||||||
typora
|
github-desktop
|
||||||
dropbox
|
gh
|
||||||
spotify
|
|
||||||
|
|
||||||
# Development tools
|
# Containers
|
||||||
github-desktop
|
docker-compose
|
||||||
gh
|
ffmpeg
|
||||||
|
]
|
||||||
# Containers
|
++ lib.optionals (pkgs.system == "x86_64-linux") [
|
||||||
docker-compose
|
typora
|
||||||
ffmpeg
|
dropbox
|
||||||
];
|
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;
|
||||||
|
|
||||||
|
|||||||
+1
-1
@@ -29,7 +29,7 @@
|
|||||||
base16-theme = "gruvbox-light-medium";
|
base16-theme = "gruvbox-light-medium";
|
||||||
vscode-theme = "Gruvbox Light Medium";
|
vscode-theme = "Gruvbox Light Medium";
|
||||||
};
|
};
|
||||||
|
|
||||||
"custom" = {
|
"custom" = {
|
||||||
# Custom themes don't have predefined base16 schemes (generated dynamically)
|
# Custom themes don't have predefined base16 schemes (generated dynamically)
|
||||||
# VSCode theme fallback for custom color schemes
|
# VSCode theme fallback for custom color schemes
|
||||||
|
|||||||
Reference in New Issue
Block a user