forked from Shinonome/omarchy-nix
Cleanup
This commit is contained in:
@@ -0,0 +1,61 @@
|
|||||||
|
# Omarchy Nix
|
||||||
|
|
||||||
|
Omarchy-nix is an opinionated NixOS flake to help you get started as fast as possible with NixOS and Hyprland. It is primarily reimplementation of [DHH's Omarchy](https://github.com/basecamp/omarchy) project - an opinionated Arch/Hyprland setup for modern web development.
|
||||||
|
|
||||||
|
|
||||||
|
## Quick Start
|
||||||
|
|
||||||
|
To get started you'll first need to set up a fresh [NixOS](https://nixos.org/) install. Just download and create a bootable USB and you should be good to go.
|
||||||
|
|
||||||
|
|
||||||
|
Once ready, add this flake to your system configuration, you'll also need [home-manager](https://github.com/nix-community/home-manager) as well:
|
||||||
|
|
||||||
|
```nix
|
||||||
|
{
|
||||||
|
inputs = {
|
||||||
|
nixpkgs.url = "github:nixos/nixpkgs/nixos-25.05";
|
||||||
|
omarchy-nix = {
|
||||||
|
url = "github:henrysipp/omarchy-nix";
|
||||||
|
inputs.nixpkgs.follows = "nixpkgs";
|
||||||
|
inputs.home-manager.follows = "home-manager";
|
||||||
|
};
|
||||||
|
home-manager = {
|
||||||
|
url = "github:nix-community/home-manager";
|
||||||
|
inputs.nixpkgs.follows = "nixpkgs";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
outputs = { nixpkgs, omarchy-nix, home-manager, ... }: {
|
||||||
|
nixosConfigurations.your-hostname = nixpkgs.lib.nixosSystem {
|
||||||
|
modules = [
|
||||||
|
omarchy-nix.nixosModules.default
|
||||||
|
home-manager.nixosModules.home-manager #Add this import
|
||||||
|
{
|
||||||
|
# Configure omarchy
|
||||||
|
omarchy = {
|
||||||
|
full_name = "Your Name";
|
||||||
|
email_address = "your.email@example.com";
|
||||||
|
theme = "tokyo-night";
|
||||||
|
};
|
||||||
|
|
||||||
|
home-manager = {
|
||||||
|
users.your-username = {
|
||||||
|
imports = [ omarchy-nix.homeManagerModules.default ]; # And this one
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
|
];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
## Configuration Options
|
||||||
|
|
||||||
|
I've specified some basic configuration options to help you get started with initial setup, as well as some simple overrides for common configuration settings I found I was modifying often. These are likely subject to change with future versions as I iron things out.
|
||||||
|
|
||||||
|
Refer to [the root configuration](https://github.com/henrysipp/omarchy-nix/blob/main/config.nix) file for more information on what options are available.
|
||||||
|
|
||||||
|
## License
|
||||||
|
|
||||||
|
This project is released under the MIT License, same as the original Omarchy.
|
||||||
-41
@@ -1,41 +0,0 @@
|
|||||||
lib: {
|
|
||||||
omarchyOptions = {
|
|
||||||
full_name = lib.mkOption {
|
|
||||||
type = lib.types.str;
|
|
||||||
description = "Main user's full name";
|
|
||||||
};
|
|
||||||
email_address = lib.mkOption {
|
|
||||||
type = lib.types.str;
|
|
||||||
description = "Main user's email address";
|
|
||||||
};
|
|
||||||
theme = lib.mkOption {
|
|
||||||
type = lib.types.enum ["tokyo-night" "kanagawa" "catppuccin"];
|
|
||||||
default = "tokyo-night";
|
|
||||||
description = "Theme to use for Omarchy configuration";
|
|
||||||
};
|
|
||||||
primary_font = lib.mkOption {
|
|
||||||
type = lib.types.str;
|
|
||||||
default = "Liberation Sans 11";
|
|
||||||
};
|
|
||||||
vscode_settings = lib.mkOption {
|
|
||||||
type = lib.types.attrs;
|
|
||||||
default = {};
|
|
||||||
};
|
|
||||||
quickAppBindings = lib.mkOption {
|
|
||||||
type = lib.types.listOf lib.types.str;
|
|
||||||
description = "A list of single keystroke key bindings to launch common apps.";
|
|
||||||
default = [
|
|
||||||
"SUPER, return, exec, $terminal"
|
|
||||||
"SUPER, F, exec, $fileManager"
|
|
||||||
"SUPER, B, exec, $browser"
|
|
||||||
"SUPER, M, exec, $music"
|
|
||||||
"SUPER, N, exec, $terminal -e nvim"
|
|
||||||
"SUPER, T, exec, $terminal -e btop"
|
|
||||||
"SUPER, D, exec, $terminal -e lazydocker"
|
|
||||||
"SUPER, G, exec, $messenger"
|
|
||||||
"SUPER, O, exec, obsidian -disable-gpu"
|
|
||||||
"SUPER, slash, exec, $passwordManager"
|
|
||||||
];
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
||||||
Generated
+3
-3
@@ -94,11 +94,11 @@
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1750973805,
|
"lastModified": 1751131846,
|
||||||
"narHash": "sha256-BZXgag7I0rnL/HMHAsBz3tQrfKAibpY2vovexl2lS+Y=",
|
"narHash": "sha256-VqXwSsEpmQlVUK0Y6FZ4YQwB63zWWD6ziHgQW2zEiUA=",
|
||||||
"owner": "nix-community",
|
"owner": "nix-community",
|
||||||
"repo": "home-manager",
|
"repo": "home-manager",
|
||||||
"rev": "080e8b48b0318b38143d5865de9334f46d51fce3",
|
"rev": "da077f20db88a173629624a30380658840d377b3",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
|||||||
@@ -32,6 +32,7 @@
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
homeManagerModules = {
|
homeManagerModules = {
|
||||||
default = {
|
default = {
|
||||||
config,
|
config,
|
||||||
|
|||||||
@@ -13,25 +13,13 @@ in {
|
|||||||
# Window settings
|
# Window settings
|
||||||
window = {
|
window = {
|
||||||
padding = {
|
padding = {
|
||||||
x = 10;
|
x = 14;
|
||||||
y = 10;
|
y = 14;
|
||||||
};
|
};
|
||||||
dynamic_padding = true;
|
|
||||||
decorations = "none";
|
decorations = "none";
|
||||||
opacity = 0.95;
|
opacity = 0.95;
|
||||||
blur = true;
|
|
||||||
startup_mode = "Windowed";
|
|
||||||
title = "Alacritty";
|
|
||||||
dynamic_title = true;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
# Scrolling
|
|
||||||
scrolling = {
|
|
||||||
history = 10000;
|
|
||||||
multiplier = 3;
|
|
||||||
};
|
|
||||||
|
|
||||||
# Font configuration
|
|
||||||
font = {
|
font = {
|
||||||
normal = {
|
normal = {
|
||||||
family = cfg.primary_font;
|
family = cfg.primary_font;
|
||||||
@@ -77,135 +65,6 @@ in {
|
|||||||
|
|
||||||
selection.background = theme.primary;
|
selection.background = theme.primary;
|
||||||
};
|
};
|
||||||
# // (
|
|
||||||
# if theme ? orange
|
|
||||||
# then {
|
|
||||||
# indexed_colors =
|
|
||||||
# [
|
|
||||||
# {
|
|
||||||
# index = 16;
|
|
||||||
# color = theme.orange;
|
|
||||||
# }
|
|
||||||
# ]
|
|
||||||
# ++ (
|
|
||||||
# if theme ? rosewater
|
|
||||||
# then [
|
|
||||||
# {
|
|
||||||
# index = 17;
|
|
||||||
# color = theme.rosewater;
|
|
||||||
# }
|
|
||||||
# ]
|
|
||||||
# else []
|
|
||||||
# )
|
|
||||||
# ++ (
|
|
||||||
# if theme ? peach
|
|
||||||
# then [
|
|
||||||
# {
|
|
||||||
# index = 18;
|
|
||||||
# color = theme.peach;
|
|
||||||
# }
|
|
||||||
# ]
|
|
||||||
# else []
|
|
||||||
# );
|
|
||||||
# }
|
|
||||||
# else {}
|
|
||||||
# );
|
|
||||||
|
|
||||||
# Bell
|
|
||||||
bell = {
|
|
||||||
animation = "EaseOutExpo";
|
|
||||||
duration = 0;
|
|
||||||
color = theme.warning;
|
|
||||||
};
|
|
||||||
|
|
||||||
# Mouse
|
|
||||||
mouse = {
|
|
||||||
hide_when_typing = true;
|
|
||||||
bindings = [
|
|
||||||
{
|
|
||||||
mouse = "Middle";
|
|
||||||
action = "PasteSelection";
|
|
||||||
}
|
|
||||||
];
|
|
||||||
};
|
|
||||||
|
|
||||||
# Key bindings
|
|
||||||
keyboard.bindings = [
|
|
||||||
# Copy/Paste
|
|
||||||
{
|
|
||||||
key = "C";
|
|
||||||
mods = "Control|Shift";
|
|
||||||
action = "Copy";
|
|
||||||
}
|
|
||||||
{
|
|
||||||
key = "V";
|
|
||||||
mods = "Control|Shift";
|
|
||||||
action = "Paste";
|
|
||||||
}
|
|
||||||
# Search
|
|
||||||
{
|
|
||||||
key = "F";
|
|
||||||
mods = "Control|Shift";
|
|
||||||
action = "SearchForward";
|
|
||||||
}
|
|
||||||
{
|
|
||||||
key = "B";
|
|
||||||
mods = "Control|Shift";
|
|
||||||
action = "SearchBackward";
|
|
||||||
}
|
|
||||||
# Font size
|
|
||||||
{
|
|
||||||
key = "Plus";
|
|
||||||
mods = "Control";
|
|
||||||
action = "IncreaseFontSize";
|
|
||||||
}
|
|
||||||
{
|
|
||||||
key = "Minus";
|
|
||||||
mods = "Control";
|
|
||||||
action = "DecreaseFontSize";
|
|
||||||
}
|
|
||||||
{
|
|
||||||
key = "Key0";
|
|
||||||
mods = "Control";
|
|
||||||
action = "ResetFontSize";
|
|
||||||
}
|
|
||||||
# New window
|
|
||||||
{
|
|
||||||
key = "Return";
|
|
||||||
mods = "Control|Shift";
|
|
||||||
action = "SpawnNewInstance";
|
|
||||||
}
|
|
||||||
];
|
|
||||||
|
|
||||||
# Cursor
|
|
||||||
cursor = {
|
|
||||||
style = {
|
|
||||||
shape = "Block";
|
|
||||||
blinking = "Off";
|
|
||||||
};
|
|
||||||
unfocused_hollow = true;
|
|
||||||
thickness = 0.15;
|
|
||||||
};
|
|
||||||
|
|
||||||
# Live config reload
|
|
||||||
general.live_config_reload = true;
|
|
||||||
|
|
||||||
# Shell
|
|
||||||
terminal.shell = {
|
|
||||||
program = "${pkgs.zsh}/bin/zsh";
|
|
||||||
args = ["--login"];
|
|
||||||
};
|
|
||||||
|
|
||||||
# Working directory
|
|
||||||
working_directory = "None";
|
|
||||||
|
|
||||||
# Debug
|
|
||||||
debug = {
|
|
||||||
render_timer = false;
|
|
||||||
persistent_logging = false;
|
|
||||||
log_level = "Warn";
|
|
||||||
print_events = false;
|
|
||||||
};
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -19,29 +19,22 @@
|
|||||||
else hexToRgba theme.foreground "ff";
|
else hexToRgba theme.foreground "ff";
|
||||||
in {
|
in {
|
||||||
wayland.windowManager.hyprland.settings = {
|
wayland.windowManager.hyprland.settings = {
|
||||||
# Refer to https://wiki.hyprland.org/Configuring/Variables/
|
|
||||||
|
|
||||||
# https://wiki.hyprland.org/Configuring/Variables/#general
|
|
||||||
general = {
|
general = {
|
||||||
gaps_in = 5;
|
gaps_in = 5;
|
||||||
gaps_out = 10;
|
gaps_out = 10;
|
||||||
|
|
||||||
border_size = 2;
|
border_size = 2;
|
||||||
|
|
||||||
# https://wiki.hyprland.org/Configuring/Variables/#variable-types for info about colors
|
|
||||||
"col.active_border" = activeBorder;
|
"col.active_border" = activeBorder;
|
||||||
"col.inactive_border" = hexToRgba theme.surface_variant "aa";
|
"col.inactive_border" = hexToRgba theme.surface_variant "aa";
|
||||||
|
|
||||||
# Set to true enable resizing windows by clicking and dragging on borders and gaps
|
|
||||||
resize_on_border = false;
|
resize_on_border = false;
|
||||||
|
|
||||||
# Please see https://wiki.hyprland.org/Configuring/Tearing/ before you turn this on
|
|
||||||
allow_tearing = false;
|
allow_tearing = false;
|
||||||
|
|
||||||
layout = "dwindle";
|
layout = "dwindle";
|
||||||
};
|
};
|
||||||
|
|
||||||
# https://wiki.hyprland.org/Configuring/Variables/#decoration
|
|
||||||
decoration = {
|
decoration = {
|
||||||
rounding = 0;
|
rounding = 0;
|
||||||
|
|
||||||
@@ -52,7 +45,6 @@ in {
|
|||||||
color = hexToRgba theme.background "ee";
|
color = hexToRgba theme.background "ee";
|
||||||
};
|
};
|
||||||
|
|
||||||
# https://wiki.hyprland.org/Configuring/Variables/#blur
|
|
||||||
blur = {
|
blur = {
|
||||||
enabled = true;
|
enabled = true;
|
||||||
size = 3;
|
size = 3;
|
||||||
@@ -62,12 +54,10 @@ in {
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
# https://wiki.hyprland.org/Configuring/Variables/#animations
|
|
||||||
animations = {
|
animations = {
|
||||||
enabled = true; # yes, please :)
|
enabled = true; # yes, please :)
|
||||||
|
|
||||||
# Default animations, see https://wiki.hyprland.org/Configuring/Animations/ for more
|
# Default animations, see https://wiki.hyprland.org/Configuring/Animations/ for more
|
||||||
|
|
||||||
bezier = [
|
bezier = [
|
||||||
"easeOutQuint,0.23,1,0.32,1"
|
"easeOutQuint,0.23,1,0.32,1"
|
||||||
"easeInOutCubic,0.65,0.05,0.36,1"
|
"easeInOutCubic,0.65,0.05,0.36,1"
|
||||||
@@ -94,29 +84,16 @@ in {
|
|||||||
];
|
];
|
||||||
};
|
};
|
||||||
|
|
||||||
# Ref https://wiki.hyprland.org/Configuring/Workspace-Rules/
|
|
||||||
# "Smart gaps" / "No gaps when only"
|
|
||||||
# uncomment all if you wish to use that.
|
|
||||||
# workspace = w[tv1], gapsout:0, gapsin:0
|
|
||||||
# workspace = f[1], gapsout:0, gapsin:0
|
|
||||||
# windowrule = bordersize 0, floating:0, onworkspace:w[tv1]
|
|
||||||
# windowrule = rounding 0, floating:0, onworkspace:w[tv1]
|
|
||||||
# windowrule = bordersize 0, floating:0, onworkspace:f[1]
|
|
||||||
# windowrule = rounding 0, floating:0, onworkspace:f[1]
|
|
||||||
|
|
||||||
# See https://wiki.hyprland.org/Configuring/Dwindle-Layout/ for more
|
|
||||||
dwindle = {
|
dwindle = {
|
||||||
pseudotile = true; # Master switch for pseudotiling. Enabling is bound to mainMod + P in the keybinds section below
|
pseudotile = true;
|
||||||
preserve_split = true; # You probably want this
|
preserve_split = true;
|
||||||
force_split = 2; # Always split on the right
|
force_split = 2;
|
||||||
};
|
};
|
||||||
|
|
||||||
# See https://wiki.hyprland.org/Configuring/Master-Layout/ for more
|
|
||||||
master = {
|
master = {
|
||||||
new_status = "master";
|
new_status = "master";
|
||||||
};
|
};
|
||||||
|
|
||||||
# https://wiki.hyprland.org/Configuring/Variables/#misc
|
|
||||||
misc = {
|
misc = {
|
||||||
disable_hyprland_logo = true;
|
disable_hyprland_logo = true;
|
||||||
disable_splash_rendering = true;
|
disable_splash_rendering = true;
|
||||||
|
|||||||
@@ -11,7 +11,7 @@
|
|||||||
# Force chromium into a tile to deal with --app bug
|
# Force chromium into a tile to deal with --app bug
|
||||||
"tile, class:^(chromium)$"
|
"tile, class:^(chromium)$"
|
||||||
|
|
||||||
# Just dash of opacity
|
# Just dash of transparency
|
||||||
"opacity 0.97 0.9, class:.*"
|
"opacity 0.97 0.9, class:.*"
|
||||||
"opacity 1 0.97, class:^(chromium|google-chrome|google-chrome-unstable)$"
|
"opacity 1 0.97, class:^(chromium|google-chrome|google-chrome-unstable)$"
|
||||||
"opacity 0.97 0.9, initialClass:^(chrome-.*-Default)$ # web apps"
|
"opacity 0.97 0.9, initialClass:^(chrome-.*-Default)$ # web apps"
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
{inputs, ...}: {
|
{
|
||||||
config,
|
config,
|
||||||
pkgs,
|
pkgs,
|
||||||
...
|
...
|
||||||
|
|||||||
@@ -21,10 +21,6 @@
|
|||||||
alsa.enable = true;
|
alsa.enable = true;
|
||||||
pulse.enable = true;
|
pulse.enable = true;
|
||||||
jack.enable = true;
|
jack.enable = true;
|
||||||
|
|
||||||
# use the example session manager (no others are packaged yet so this is enabled by default,
|
|
||||||
# no need to redefine it in your config for now)
|
|
||||||
#media-session.enable = true;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
services.greetd = {
|
services.greetd = {
|
||||||
|
|||||||
Reference in New Issue
Block a user