diff --git a/flake.lock b/flake.lock
index 02567bc..397ec1e 100644
--- a/flake.lock
+++ b/flake.lock
@@ -60,6 +60,74 @@
"type": "github"
}
},
+ "base16": {
+ "inputs": {
+ "fromYaml": "fromYaml"
+ },
+ "locked": {
+ "lastModified": 1755819240,
+ "narHash": "sha256-qcMhnL7aGAuFuutH4rq9fvAhCpJWVHLcHVZLtPctPlo=",
+ "owner": "SenchoPens",
+ "repo": "base16.nix",
+ "rev": "75ed5e5e3fce37df22e49125181fa37899c3ccd6",
+ "type": "github"
+ },
+ "original": {
+ "owner": "SenchoPens",
+ "repo": "base16.nix",
+ "type": "github"
+ }
+ },
+ "base16-fish": {
+ "flake": false,
+ "locked": {
+ "lastModified": 1754405784,
+ "narHash": "sha256-l9xHIy+85FN+bEo6yquq2IjD1rSg9fjfjpyGP1W8YXo=",
+ "owner": "tomyun",
+ "repo": "base16-fish",
+ "rev": "23ae20a0093dca0d7b39d76ba2401af0ccf9c561",
+ "type": "github"
+ },
+ "original": {
+ "owner": "tomyun",
+ "repo": "base16-fish",
+ "rev": "23ae20a0093dca0d7b39d76ba2401af0ccf9c561",
+ "type": "github"
+ }
+ },
+ "base16-helix": {
+ "flake": false,
+ "locked": {
+ "lastModified": 1752979451,
+ "narHash": "sha256-0CQM+FkYy0fOO/sMGhOoNL80ftsAzYCg9VhIrodqusM=",
+ "owner": "tinted-theming",
+ "repo": "base16-helix",
+ "rev": "27cf1e66e50abc622fb76a3019012dc07c678fac",
+ "type": "github"
+ },
+ "original": {
+ "owner": "tinted-theming",
+ "repo": "base16-helix",
+ "type": "github"
+ }
+ },
+ "base16-vim": {
+ "flake": false,
+ "locked": {
+ "lastModified": 1732806396,
+ "narHash": "sha256-e0bpPySdJf0F68Ndanwm+KWHgQiZ0s7liLhvJSWDNsA=",
+ "owner": "tinted-theming",
+ "repo": "base16-vim",
+ "rev": "577fe8125d74ff456cf942c733a85d769afe58b7",
+ "type": "github"
+ },
+ "original": {
+ "owner": "tinted-theming",
+ "repo": "base16-vim",
+ "rev": "577fe8125d74ff456cf942c733a85d769afe58b7",
+ "type": "github"
+ }
+ },
"brew-src": {
"flake": false,
"locked": {
@@ -174,6 +242,22 @@
"type": "github"
}
},
+ "firefox-gnome-theme": {
+ "flake": false,
+ "locked": {
+ "lastModified": 1758112371,
+ "narHash": "sha256-lizRM2pj6PHrR25yimjyFn04OS4wcdbc38DCdBVa2rk=",
+ "owner": "rafaelmardojai",
+ "repo": "firefox-gnome-theme",
+ "rev": "0909cfe4a2af8d358ad13b20246a350e14c2473d",
+ "type": "github"
+ },
+ "original": {
+ "owner": "rafaelmardojai",
+ "repo": "firefox-gnome-theme",
+ "type": "github"
+ }
+ },
"flake-compat": {
"flake": false,
"locked": {
@@ -307,6 +391,27 @@
"type": "github"
}
},
+ "flake-parts_3": {
+ "inputs": {
+ "nixpkgs-lib": [
+ "stylix",
+ "nixpkgs"
+ ]
+ },
+ "locked": {
+ "lastModified": 1756770412,
+ "narHash": "sha256-+uWLQZccFHwqpGqr2Yt5VsW/PbeJVTn9Dk6SHWhNRPw=",
+ "owner": "hercules-ci",
+ "repo": "flake-parts",
+ "rev": "4524271976b625a4a605beefd893f270620fd751",
+ "type": "github"
+ },
+ "original": {
+ "owner": "hercules-ci",
+ "repo": "flake-parts",
+ "type": "github"
+ }
+ },
"flake-schemas": {
"locked": {
"lastModified": 1721999734,
@@ -397,6 +502,22 @@
"type": "github"
}
},
+ "fromYaml": {
+ "flake": false,
+ "locked": {
+ "lastModified": 1731966426,
+ "narHash": "sha256-lq95WydhbUTWig/JpqiB7oViTcHFP8Lv41IGtayokA8=",
+ "owner": "SenchoPens",
+ "repo": "fromYaml",
+ "rev": "106af9e2f715e2d828df706c386a685698f3223b",
+ "type": "github"
+ },
+ "original": {
+ "owner": "SenchoPens",
+ "repo": "fromYaml",
+ "type": "github"
+ }
+ },
"gitignore": {
"inputs": {
"nixpkgs": [
@@ -440,6 +561,25 @@
"type": "github"
}
},
+ "gnome-shell": {
+ "flake": false,
+ "locked": {
+ "host": "gitlab.gnome.org",
+ "lastModified": 1762869044,
+ "narHash": "sha256-nwm/GJ2Syigf7VccLAZ66mFC8mZJFqpJmIxSGKl7+Ds=",
+ "owner": "GNOME",
+ "repo": "gnome-shell",
+ "rev": "680e3d195a92203f28d4bf8c6e8bb537cc3ed4ad",
+ "type": "gitlab"
+ },
+ "original": {
+ "host": "gitlab.gnome.org",
+ "owner": "GNOME",
+ "ref": "gnome-49",
+ "repo": "gnome-shell",
+ "type": "gitlab"
+ }
+ },
"home-manager": {
"inputs": {
"nixpkgs": [
@@ -1222,6 +1362,31 @@
"type": "github"
}
},
+ "nur": {
+ "inputs": {
+ "flake-parts": [
+ "stylix",
+ "flake-parts"
+ ],
+ "nixpkgs": [
+ "stylix",
+ "nixpkgs"
+ ]
+ },
+ "locked": {
+ "lastModified": 1758998580,
+ "narHash": "sha256-VLx0z396gDCGSiowLMFz5XRO/XuNV+4EnDYjdJhHvUk=",
+ "owner": "nix-community",
+ "repo": "NUR",
+ "rev": "ba8d9c98f5f4630bcb0e815ab456afd90c930728",
+ "type": "github"
+ },
+ "original": {
+ "owner": "nix-community",
+ "repo": "NUR",
+ "type": "github"
+ }
+ },
"pre-commit-hooks-nix": {
"inputs": {
"flake-compat": [
@@ -1347,6 +1512,7 @@
"snowfall-lib": "snowfall-lib",
"sops-nix": "sops-nix",
"steam-rom-manager": "steam-rom-manager",
+ "stylix": "stylix",
"treefmt-nix": "treefmt-nix"
}
},
@@ -1475,6 +1641,40 @@
"type": "github"
}
},
+ "stylix": {
+ "inputs": {
+ "base16": "base16",
+ "base16-fish": "base16-fish",
+ "base16-helix": "base16-helix",
+ "base16-vim": "base16-vim",
+ "firefox-gnome-theme": "firefox-gnome-theme",
+ "flake-parts": "flake-parts_3",
+ "gnome-shell": "gnome-shell",
+ "nixpkgs": [
+ "nixpkgs"
+ ],
+ "nur": "nur",
+ "systems": "systems_4",
+ "tinted-foot": "tinted-foot",
+ "tinted-kitty": "tinted-kitty",
+ "tinted-schemes": "tinted-schemes",
+ "tinted-tmux": "tinted-tmux",
+ "tinted-zed": "tinted-zed"
+ },
+ "locked": {
+ "lastModified": 1764550443,
+ "narHash": "sha256-ArO2V1YEHmEILilTj4KPtqF4gqc1q2HBrrrmygQ/UyU=",
+ "owner": "nix-community",
+ "repo": "stylix",
+ "rev": "794b6e1fa75177ebfeb32967f135858a1ab1ba15",
+ "type": "github"
+ },
+ "original": {
+ "owner": "nix-community",
+ "repo": "stylix",
+ "type": "github"
+ }
+ },
"systems": {
"locked": {
"lastModified": 1689347949,
@@ -1520,6 +1720,102 @@
"type": "github"
}
},
+ "systems_4": {
+ "locked": {
+ "lastModified": 1681028828,
+ "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
+ "owner": "nix-systems",
+ "repo": "default",
+ "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
+ "type": "github"
+ },
+ "original": {
+ "owner": "nix-systems",
+ "repo": "default",
+ "type": "github"
+ }
+ },
+ "tinted-foot": {
+ "flake": false,
+ "locked": {
+ "lastModified": 1726913040,
+ "narHash": "sha256-+eDZPkw7efMNUf3/Pv0EmsidqdwNJ1TaOum6k7lngDQ=",
+ "owner": "tinted-theming",
+ "repo": "tinted-foot",
+ "rev": "fd1b924b6c45c3e4465e8a849e67ea82933fcbe4",
+ "type": "github"
+ },
+ "original": {
+ "owner": "tinted-theming",
+ "repo": "tinted-foot",
+ "rev": "fd1b924b6c45c3e4465e8a849e67ea82933fcbe4",
+ "type": "github"
+ }
+ },
+ "tinted-kitty": {
+ "flake": false,
+ "locked": {
+ "lastModified": 1735730497,
+ "narHash": "sha256-4KtB+FiUzIeK/4aHCKce3V9HwRvYaxX+F1edUrfgzb8=",
+ "owner": "tinted-theming",
+ "repo": "tinted-kitty",
+ "rev": "de6f888497f2c6b2279361bfc790f164bfd0f3fa",
+ "type": "github"
+ },
+ "original": {
+ "owner": "tinted-theming",
+ "repo": "tinted-kitty",
+ "type": "github"
+ }
+ },
+ "tinted-schemes": {
+ "flake": false,
+ "locked": {
+ "lastModified": 1757716333,
+ "narHash": "sha256-d4km8W7w2zCUEmPAPUoLk1NlYrGODuVa3P7St+UrqkM=",
+ "owner": "tinted-theming",
+ "repo": "schemes",
+ "rev": "317a5e10c35825a6c905d912e480dfe8e71c7559",
+ "type": "github"
+ },
+ "original": {
+ "owner": "tinted-theming",
+ "repo": "schemes",
+ "type": "github"
+ }
+ },
+ "tinted-tmux": {
+ "flake": false,
+ "locked": {
+ "lastModified": 1757811970,
+ "narHash": "sha256-n5ZJgmzGZXOD9pZdAl1OnBu3PIqD+X3vEBUGbTi4JiI=",
+ "owner": "tinted-theming",
+ "repo": "tinted-tmux",
+ "rev": "d217ba31c846006e9e0ae70775b0ee0f00aa6b1e",
+ "type": "github"
+ },
+ "original": {
+ "owner": "tinted-theming",
+ "repo": "tinted-tmux",
+ "type": "github"
+ }
+ },
+ "tinted-zed": {
+ "flake": false,
+ "locked": {
+ "lastModified": 1757811247,
+ "narHash": "sha256-4EFOUyLj85NRL3OacHoLGEo0wjiRJzfsXtR4CZWAn6w=",
+ "owner": "tinted-theming",
+ "repo": "base16-zed",
+ "rev": "824fe0aacf82b3c26690d14e8d2cedd56e18404e",
+ "type": "github"
+ },
+ "original": {
+ "owner": "tinted-theming",
+ "repo": "base16-zed",
+ "type": "github"
+ }
+ },
"treefmt-nix": {
"inputs": {
"nixpkgs": [
diff --git a/flake.nix b/flake.nix
index 12f87b7..5c94deb 100644
--- a/flake.nix
+++ b/flake.nix
@@ -91,6 +91,11 @@
url = "github:cpick/nix-rosetta-builder";
inputs.nixpkgs.follows = "nixpkgs";
};
+
+ stylix = {
+ url = "github:nix-community/stylix";
+ inputs.nixpkgs.follows = "nixpkgs";
+ };
};
# We will handle this in the next section.
@@ -117,6 +122,7 @@
sops-nix.nixosModules.sops
home-manager.nixosModules.home-manager
nix-index-database.nixosModules.nix-index
+ stylix.nixosModules.stylix
];
# common darwin modules
@@ -126,6 +132,7 @@
nix-plist-manager.darwinModules.default
nix-rosetta-builder.darwinModules.default
nix-index-database.darwinModules.nix-index
+ stylix.darwinModules.stylix
];
# Host config
diff --git a/homes/aarch64-darwin/mattjallen@macbook-pro/default.nix b/homes/aarch64-darwin/mattjallen@macbook-pro/default.nix
index 9dccfbd..542c854 100755
--- a/homes/aarch64-darwin/mattjallen@macbook-pro/default.nix
+++ b/homes/aarch64-darwin/mattjallen@macbook-pro/default.nix
@@ -1,9 +1,11 @@
{
lib,
pkgs,
+ namespace,
...
}:
let
+ inherit (lib.${namespace}) enabled disabled;
shellAliases = {
update-switch = "darwin-rebuild switch --flake ~/nix-config";
update-flake = "nix flake update ~/nix-config";
@@ -135,9 +137,9 @@ in
};
dock = {
animateOpeningApplications = true;
- automaticallyHideAndShowTheDock.enabled = false;
+ automaticallyHideAndShowTheDock = enabled;
doubleClickAWindowsTitleBarTo = "Minimize";
- magnification.enabled = false;
+ magnification = disabled;
minimizeWindowsIntoApplicationIcon = true;
minimizeWindowsUsing = "Genie Effect";
positionOnScreen = "Bottom";
@@ -254,11 +256,11 @@ in
};
# Manage bug in compilations - who uses manpages in 2024 anyways? :P
- manual.manpages.enable = false;
+ manual.manpages = enabled;
# Override defaults that arent supported
programs = {
- mangohud.enable = lib.mkForce false;
+ mangohud = lib.mkForce disabled;
nh = {
flake = lib.mkForce "/Users/mattjallen/nix-config";
@@ -266,8 +268,8 @@ in
};
services = {
- pass-secret-service.enable = lib.mkForce false;
- nextcloud-client.enable = lib.mkForce false;
+ pass-secret-service = lib.mkForce disabled;
+ nextcloud-client = lib.mkForce disabled;
kdeconnect = {
enable = false;
indicator = false;
diff --git a/homes/aarch64-linux/matt@macbook-pro-nixos/default.nix b/homes/aarch64-linux/matt@macbook-pro-nixos/default.nix
index 5b08b26..1243767 100755
--- a/homes/aarch64-linux/matt@macbook-pro-nixos/default.nix
+++ b/homes/aarch64-linux/matt@macbook-pro-nixos/default.nix
@@ -1,19 +1,17 @@
{
+ lib,
pkgs,
namespace,
- config,
...
}:
let
- theme = config.mjallen.theme.palette;
+ inherit (lib.${namespace}) enabled disabled;
shellAliases = {
update-boot = "sudo nixos-rebuild boot --max-jobs 10 --build-host admin@10.0.1.3";
update-switch = "sudo nixos-rebuild switch --max-jobs 10 --build-host admin@10.0.1.3";
update-flake = "nix flake update mac-nixpkgs mac-nixos-apple-silicon mac-home-manager mac-impermanence mac-sops-nix --flake /etc/nixos";
update-nas = "nixos-rebuild switch --use-remote-sudo --target-host admin@10.0.1.3 --build-host admin@10.0.1.3 --flake ~/nix-config#jallen-nas";
};
- fontName = "JetBrainsMono NFM";
- fontPackage = pkgs.nerd-fonts.jetbrains-mono;
# Displays
display = {
input = "eDP-1";
@@ -77,20 +75,15 @@ in
};
};
programs = {
- btop.enable = true;
+ btop = enabled;
kitty = {
enable = true;
- font = {
- name = fontName;
- package = fontPackage;
- };
};
mako = {
enable = true;
- fontName = fontName;
};
- nwg-dock.enable = true;
- nwg-drawer.enable = true;
+ nwg-dock = enabled;
+ nwg-drawer = enabled;
nwg-panel = {
enable = true;
defaultApps = {
@@ -103,8 +96,8 @@ in
layer = "bottom";
temperature = {
- cpu.enable = true;
- gpu.enable = true;
+ cpu = enabled;
+ gpu = enabled;
};
extraModules = {
@@ -120,21 +113,20 @@ in
extraModulesStyle = ''
#custom-lights {
- color: ${theme.frost.nord8};
- background-color: ${theme.polarNight.nord0};
- ${theme.defaultOpacity}
- ${theme.borderLeft}
+ color: @base0C;
+ opacity: 0.85;
+ background-color: @base00;
}
#custom-lights:hover {
- background: ${theme.polarNight.nord3};
+ background: @base03;
}
'';
windowOffset = 75;
};
- wlogout.enable = true;
- wofi.enable = true;
+ wlogout = enabled;
+ wofi = enabled;
};
};
@@ -149,7 +141,7 @@ in
];
programs = {
- password-store.enable = true;
+ password-store = enabled;
zsh.shellAliases = shellAliases;
};
diff --git a/homes/aarch64-linux/matt@pi4/default.nix b/homes/aarch64-linux/matt@pi4/default.nix
index 252b2e3..34a6ebf 100755
--- a/homes/aarch64-linux/matt@pi4/default.nix
+++ b/homes/aarch64-linux/matt@pi4/default.nix
@@ -1,4 +1,7 @@
{ lib, namespace, ... }:
+let
+ inherit (lib.${namespace}) enabled disabled;
+in
{
home.username = "matt";
@@ -53,11 +56,11 @@
};
programs = {
- mangohud.enable = lib.mkForce true;
+ mangohud = lib.mkForce enabled;
};
services = {
- nextcloud-client.enable = lib.mkForce false;
+ nextcloud-client = lib.mkForce disabled;
kdeconnect = {
enable = false;
indicator = false;
diff --git a/homes/aarch64-linux/matt@pi5/default.nix b/homes/aarch64-linux/matt@pi5/default.nix
index 8ddcabd..55d8acc 100755
--- a/homes/aarch64-linux/matt@pi5/default.nix
+++ b/homes/aarch64-linux/matt@pi5/default.nix
@@ -1,8 +1,11 @@
{
config,
+ lib,
+ namespace,
...
}:
let
+ inherit (lib.${namespace}) enabled disabled;
shellAliases = {
update-boot = "sudo nixos-rebuild boot --max-jobs 10 --build-host admin@10.0.1.3";
update-switch = "sudo nixos-rebuild switch --max-jobs 10 --build-host admin@10.0.1.3";
@@ -59,7 +62,7 @@ in
};
services = {
- nextcloud-client.enable = false;
+ nextcloud-client = lib.mkForce disabled;
kdeconnect = {
enable = false;
indicator = false;
diff --git a/homes/aarch64-linux/root@macbook-pro-nixos/default.nix b/homes/aarch64-linux/root@macbook-pro-nixos/default.nix
new file mode 100644
index 0000000..b7675aa
--- /dev/null
+++ b/homes/aarch64-linux/root@macbook-pro-nixos/default.nix
@@ -0,0 +1,18 @@
+{
+ lib,
+ namespace,
+ ...
+}:
+let
+ inherit (lib.${namespace}) enabled disabled;
+in
+{
+ home.username = "root";
+ services = {
+ nextcloud-client = lib.mkForce disabled;
+ kdeconnect = {
+ enable = false;
+ indicator = false;
+ };
+ };
+}
diff --git a/homes/aarch64-linux/root@pi4/default.nix b/homes/aarch64-linux/root@pi4/default.nix
new file mode 100644
index 0000000..b7675aa
--- /dev/null
+++ b/homes/aarch64-linux/root@pi4/default.nix
@@ -0,0 +1,18 @@
+{
+ lib,
+ namespace,
+ ...
+}:
+let
+ inherit (lib.${namespace}) enabled disabled;
+in
+{
+ home.username = "root";
+ services = {
+ nextcloud-client = lib.mkForce disabled;
+ kdeconnect = {
+ enable = false;
+ indicator = false;
+ };
+ };
+}
diff --git a/homes/aarch64-linux/root@pi5/default.nix b/homes/aarch64-linux/root@pi5/default.nix
new file mode 100644
index 0000000..b7675aa
--- /dev/null
+++ b/homes/aarch64-linux/root@pi5/default.nix
@@ -0,0 +1,18 @@
+{
+ lib,
+ namespace,
+ ...
+}:
+let
+ inherit (lib.${namespace}) enabled disabled;
+in
+{
+ home.username = "root";
+ services = {
+ nextcloud-client = lib.mkForce disabled;
+ kdeconnect = {
+ enable = false;
+ indicator = false;
+ };
+ };
+}
diff --git a/homes/x86_64-linux/deck@steamdeck/default.nix b/homes/x86_64-linux/deck@steamdeck/default.nix
index 6df2840..299ad88 100755
--- a/homes/x86_64-linux/deck@steamdeck/default.nix
+++ b/homes/x86_64-linux/deck@steamdeck/default.nix
@@ -1,5 +1,6 @@
-{ pkgs, namespace, ... }:
+{ lib, pkgs, namespace, ... }:
let
+ inherit (lib.${namespace}) enabled disabled;
shellAliases = {
update-boot = "sudo nixos-rebuild boot --max-jobs 10 --build-host admin@10.0.1.3";
update-switch = "sudo nixos-rebuild switch --max-jobs 10";
@@ -10,7 +11,7 @@ in
{
home.username = "deck";
- ${namespace}.desktop.gnome.enable = true;
+ ${namespace}.desktop.gnome = enabled;
sops = {
age.keyFile = "/home/deck/.config/sops/age/keys.txt";
@@ -40,7 +41,7 @@ in
};
emulators = {
- ryujinx.enable = true;
+ ryujinx = enabled;
dolphin-gamecube = {
enable = true;
@@ -58,8 +59,8 @@ in
extraArgs = "-b -e \"\${filePath}\"";
};
- pcsx2.enable = true;
- mgba.enable = true;
+ pcsx2 = enabled;
+ mgba = enabled;
"Non-SRM Shortcuts" = {
enable = true;
diff --git a/homes/x86_64-linux/matt@matt-nixos/default.nix b/homes/x86_64-linux/matt@matt-nixos/default.nix
index 9672194..c541ed4 100755
--- a/homes/x86_64-linux/matt@matt-nixos/default.nix
+++ b/homes/x86_64-linux/matt@matt-nixos/default.nix
@@ -104,17 +104,8 @@ in
};
};
btop = enabled;
- kitty = {
- enable = true;
- font = {
- name = "JetBrainsMono NFM";
- package = pkgs.nerd-fonts.jetbrains-mono;
- };
- };
- mako = {
- enable = true;
- fontName = "JetBrainsMono NFM";
- };
+ kitty = enabled;
+ mako = enabled;
nwg-dock = enabled;
nwg-drawer = enabled;
nwg-panel = {
@@ -130,8 +121,8 @@ in
network.interface = "wlp9s0";
temperature = {
- cpu.enable = true;
- gpu.enable = true;
+ cpu = enabled;
+ gpu = enabled;
};
extraModules = {
@@ -147,14 +138,14 @@ in
extraModulesStyle = ''
#custom-lights {
- color: ${theme.frost.nord8};
- background-color: ${theme.polarNight.nord0};
- ${theme.defaultOpacity}
- border-left: 5px solid ${theme.frost.nord8};
+ color: @base0C;
+ background-color: @base00;
+ opacity: 0.85;
+ border-left: 5px solid @base0C;
}
#custom-lights:hover {
- background: ${theme.polarNight.nord3};
+ background: @base03;
}
'';
};
diff --git a/homes/x86_64-linux/root@jallen-nas/default.nix b/homes/x86_64-linux/root@jallen-nas/default.nix
new file mode 100644
index 0000000..b7675aa
--- /dev/null
+++ b/homes/x86_64-linux/root@jallen-nas/default.nix
@@ -0,0 +1,18 @@
+{
+ lib,
+ namespace,
+ ...
+}:
+let
+ inherit (lib.${namespace}) enabled disabled;
+in
+{
+ home.username = "root";
+ services = {
+ nextcloud-client = lib.mkForce disabled;
+ kdeconnect = {
+ enable = false;
+ indicator = false;
+ };
+ };
+}
diff --git a/homes/x86_64-linux/root@matt-nixos/default.nix b/homes/x86_64-linux/root@matt-nixos/default.nix
new file mode 100644
index 0000000..b7675aa
--- /dev/null
+++ b/homes/x86_64-linux/root@matt-nixos/default.nix
@@ -0,0 +1,18 @@
+{
+ lib,
+ namespace,
+ ...
+}:
+let
+ inherit (lib.${namespace}) enabled disabled;
+in
+{
+ home.username = "root";
+ services = {
+ nextcloud-client = lib.mkForce disabled;
+ kdeconnect = {
+ enable = false;
+ indicator = false;
+ };
+ };
+}
diff --git a/homes/x86_64-linux/root@nuc-nixos/default.nix b/homes/x86_64-linux/root@nuc-nixos/default.nix
new file mode 100644
index 0000000..b7675aa
--- /dev/null
+++ b/homes/x86_64-linux/root@nuc-nixos/default.nix
@@ -0,0 +1,18 @@
+{
+ lib,
+ namespace,
+ ...
+}:
+let
+ inherit (lib.${namespace}) enabled disabled;
+in
+{
+ home.username = "root";
+ services = {
+ nextcloud-client = lib.mkForce disabled;
+ kdeconnect = {
+ enable = false;
+ indicator = false;
+ };
+ };
+}
diff --git a/homes/x86_64-linux/root@steamdeck/default.nix b/homes/x86_64-linux/root@steamdeck/default.nix
new file mode 100644
index 0000000..b7675aa
--- /dev/null
+++ b/homes/x86_64-linux/root@steamdeck/default.nix
@@ -0,0 +1,18 @@
+{
+ lib,
+ namespace,
+ ...
+}:
+let
+ inherit (lib.${namespace}) enabled disabled;
+in
+{
+ home.username = "root";
+ services = {
+ nextcloud-client = lib.mkForce disabled;
+ kdeconnect = {
+ enable = false;
+ indicator = false;
+ };
+ };
+}
diff --git a/modules/darwin/home/default.nix b/modules/darwin/home/default.nix
index 2fb3f7f..f49cf70 100644
--- a/modules/darwin/home/default.nix
+++ b/modules/darwin/home/default.nix
@@ -45,6 +45,7 @@
sops-nix.homeManagerModules.sops
nix-plist-manager.homeManagerModules.default
nix-index-database.homeModules.nix-index
+ stylix.homeModules.stylix
# Add any other external HM modules here
];
diff --git a/modules/home/desktop/theme/default.nix b/modules/home/desktop/theme/default.nix
deleted file mode 100644
index 1317f16..0000000
--- a/modules/home/desktop/theme/default.nix
+++ /dev/null
@@ -1,191 +0,0 @@
-{ config, lib, ... }:
-with lib;
-let
- cfg = config.mjallen.theme;
-
- mkPalettePath = name: lib.snowfall.fs.get-file "modules/home/desktop/theme/palettes/${name}.nix";
-
- cap =
- s:
- let
- len = builtins.stringLength s;
- in
- (lib.toUpper (builtins.substring 0 1 s)) + (builtins.substring 1 (len - 1) s);
-in
-{
- options.mjallen.theme = {
- name = mkOption {
- type = types.enum [
- "nord"
- "dracula"
- "everforest"
- ];
- default = "nord";
- description = "Global theme palette name.";
- };
-
- # This is the palette file other modules should import.
- # It exports a normalized schema with colors, tokens, and compat maps.
- paletteFile = mkOption {
- type = types.path;
- default = mkPalettePath "nord";
- description = "Path to a palette nix file exporting a normalized schema (and compat maps).";
- };
-
- # Exposed tokens (derived from paletteFile)
- tokens = mkOption {
- type = types.attrs;
- default = { };
- description = "Derived tokens from the selected palette (set automatically).";
- };
-
- # Expose the imported palette (actual colors + compat groups)
- palette = mkOption {
- type = types.attrs;
- default = { };
- description = "Imported palette attrset from the selected paletteFile (set automatically).";
- };
-
- gtk = {
- enable = mkOption {
- type = types.bool;
- default = true;
- description = "Manage GTK theme using global theme settings.";
- };
-
- # e.g. Colloid-Dark-Compact-*
- color = mkOption {
- type = types.enum [
- "dark"
- "light"
- ];
- default = "dark";
- description = "GTK color variant.";
- };
-
- size = mkOption {
- type = types.enum [
- "standard"
- "compact"
- ];
- default = "compact";
- description = "GTK size variant.";
- };
-
- accent = mkOption {
- type = types.enum [
- "default"
- "purple"
- "pink"
- "red"
- "orange"
- "yellow"
- "green"
- "teal"
- "grey"
- "all"
- ];
- default = "all";
- description = "GTK accent (Colloid themeVariants).";
- };
-
- tweak = mkOption {
- type = types.enum [
- "normal"
- "rimless"
- "float"
- "black"
- ];
- default = "normal";
- description = "GTK tweak (Colloid tweaks).";
- };
-
- themeName = mkOption {
- type = types.nullOr types.str;
- default = null;
- description = "Explicit GTK theme name override. If null, computed from color/size/accent.";
- };
- };
-
- icons = {
- # Colloid icon scheme usually supports several named schemes. Default follows palette name.
- scheme = mkOption {
- type = types.enum [
- "default"
- "nord"
- "dracula"
- "gruvbox"
- "everforest"
- "catppuccin"
- ];
- default = cfg.name;
- description = "Icon scheme to use (Colloid schemeVariants).";
- };
-
- variant = mkOption {
- type = types.enum [
- "default"
- "purple"
- "pink"
- "red"
- "orange"
- "yellow"
- "green"
- "teal"
- "grey"
- "all"
- ];
- default = "all";
- description = "Icon variant (Colloid colorVariants).";
- };
-
- themeName = mkOption {
- type = types.nullOr types.str;
- default = null;
- description = "Explicit icon theme name override. If null, computed from scheme/variant.";
- };
- };
- };
-
- # Wire derived defaults that depend on other options.
- config = {
- # Keep paletteFile following the chosen name unless user overrides it explicitly.
- mjallen.theme.paletteFile = mkDefault (mkPalettePath cfg.name);
-
- # Pull tokens directly from the palette file for convenience
- mjallen.theme.tokens = mkDefault (
- let
- pal = import cfg.paletteFile;
- in
- pal.tokens or { }
- );
-
- # Expose the imported palette for convenience
- mjallen.theme.palette = mkDefault (import cfg.paletteFile);
-
- # Default per-program palette path (can still be overridden per program)
- mjallen.programs.waybar.theme.file = mkDefault cfg.paletteFile;
- mjallen.programs.kitty.theme.file = mkDefault cfg.paletteFile;
- mjallen.programs.mako.theme.file = mkDefault cfg.paletteFile;
- mjallen.programs.wofi.theme.file = mkDefault cfg.paletteFile;
- mjallen.programs.btop.theme.file = mkDefault cfg.paletteFile;
- mjallen.programs.nwg-dock.theme.file = mkDefault cfg.paletteFile;
- mjallen.programs.nwg-drawer.theme.file = mkDefault cfg.paletteFile;
- mjallen.programs.wlogout.theme.file = mkDefault cfg.paletteFile;
-
- # Computed GTK/Icon theme names if not overridden
- _module.args.mjallenThemeComputed = {
- gtkTheme =
- if cfg.gtk.themeName != null then
- cfg.gtk.themeName
- else
- "Colloid-${cap cfg.gtk.color}-${cap cfg.gtk.size}";
-
- iconTheme =
- if cfg.icons.themeName != null then
- cfg.icons.themeName
- else
- "Colloid-${cap cfg.icons.scheme}-${cap cfg.gtk.color}";
- };
- };
-}
diff --git a/modules/home/desktop/theme/nord.nix b/modules/home/desktop/theme/nord.nix
deleted file mode 100644
index a195900..0000000
--- a/modules/home/desktop/theme/nord.nix
+++ /dev/null
@@ -1,62 +0,0 @@
-{
- # Nord colors
- # Opacity Hex alpha
- # 100% FF
- # 75% BF
- # 50% 80
- # 25% 40
- # 10% 1A
- # 0% 00
- polarNight = {
- nord0 = "#2e3440";
- nord1 = "#3b4252";
- nord2 = "#434c5e";
- nord3 = "#4c566a";
- };
- snowStorm = {
- nord4 = "#d8dee9";
- nord5 = "#e5e9f0";
- nord6 = "#eceff4";
- };
- frost = {
- nord7 = "#8fbcbb";
- nord8 = "#88c0d0";
- nord9 = "#81a1c1";
- nord10 = "#5e81ac";
- };
- aurora = {
- nord11 = "#bf616a";
- nord12 = "#d08770";
- nord13 = "#ebcb8b";
- nord14 = "#a3be8c";
- nord15 = "#b48ead";
- };
-
- defaultOpacity = "opacity: 0.85;";
- defaultBorderRadius = "border-radius: 1rem;";
- defaultCenterOptions = ''
- padding-top: 0.2rem;
- padding-bottom: 0.2rem;
- padding-left: 0.5rem;
- padding-right: 0.5rem;
- margin: 3px 0;
- '';
- borderRight = ''
- padding-top: 0.2rem;
- padding-bottom: 0.2rem;
- padding-left: 0.5rem;
- padding-right: 0.5rem;
- margin: 3px 0;
- border-radius: 0rem 1rem 1rem 0rem;
- margin-right: 0.5rem;
- '';
- borderLeft = ''
- padding-top: 0.2rem;
- padding-bottom: 0.2rem;
- padding-left: 0.5rem;
- padding-right: 0.5rem;
- margin: 3px 0;
- border-radius: 1rem 0rem 0rem 1rem;
- margin-left: 0.5rem;
- '';
-}
diff --git a/modules/home/desktop/theme/palettes/dracula.nix b/modules/home/desktop/theme/palettes/dracula.nix
deleted file mode 100644
index 3707213..0000000
--- a/modules/home/desktop/theme/palettes/dracula.nix
+++ /dev/null
@@ -1,90 +0,0 @@
-rec {
- # Normalized semantic colors (theme-agnostic) - Dracula
- colors = {
- bg = "#282a36";
- bgAlt = "#343746";
- surface = "#343746";
- surfaceAlt = "#44475a";
- border = "#44475a";
-
- text = "#f8f8f2";
- textMuted = "#e2e2dc";
-
- primary = "#6272a4"; # dark blue
- info = "#8be9fd"; # cyan
- accent = "#bd93f9"; # purple
- success = "#50fa7b"; # green
- warning = "#f1fa8c"; # yellow
- danger = "#ff5555"; # red
- };
-
- # Shared styling tokens for CSS consumers
- tokens = {
- opacity = "opacity: 0.90;";
- borderRadius = "border-radius: 0.8rem;";
-
- centerOptions = ''
- padding-top: 0.25rem;
- padding-bottom: 0.25rem;
- padding-left: 0.5rem;
- padding-right: 0.5rem;
- margin: 3px 0;
- '';
-
- borderRight = ''
- padding-top: 0.25rem;
- padding-bottom: 0.25rem;
- padding-left: 0.5rem;
- padding-right: 0.5rem;
- margin: 3px 0;
- border-radius: 0rem 0.8rem 0.8rem 0rem;
- margin-right: 0.5rem;
- '';
-
- borderLeft = ''
- padding-top: 0.25rem;
- padding-bottom: 0.25rem;
- padding-left: 0.5rem;
- padding-right: 0.5rem;
- margin: 3px 0;
- border-radius: 0.8rem 0rem 0rem 0.8rem;
- margin-left: 0.5rem;
- '';
- };
-
- # Legacy token aliases for back-compat
- defaultOpacity = tokens.opacity;
- defaultBorderRadius = tokens.borderRadius;
- defaultCenterOptions = tokens.centerOptions;
- borderRight = tokens.borderRight;
- borderLeft = tokens.borderLeft;
-
- # Back-compat: Nord-shaped groups for existing modules (approximate mappings)
- polarNight = {
- nord0 = "#282a36";
- nord1 = "#343746";
- nord2 = "#3b3e4a";
- nord3 = "#44475a";
- };
-
- snowStorm = {
- nord4 = "#e2e2dc";
- nord5 = "#f1f1ea";
- nord6 = "#f8f8f2";
- };
-
- frost = {
- nord7 = "#50fa7b"; # using green as one of the frost group
- nord8 = "#8be9fd"; # cyan
- nord9 = "#6272a4"; # blue
- nord10 = "#bd93f9"; # purple (as highlight)
- };
-
- aurora = {
- nord11 = "#ff5555"; # red
- nord12 = "#ffb86c"; # orange
- nord13 = "#f1fa8c"; # yellow
- nord14 = "#50fa7b"; # green
- nord15 = "#bd93f9"; # magenta/purple
- };
-}
diff --git a/modules/home/desktop/theme/palettes/everforest.nix b/modules/home/desktop/theme/palettes/everforest.nix
deleted file mode 100644
index 2d0ada6..0000000
--- a/modules/home/desktop/theme/palettes/everforest.nix
+++ /dev/null
@@ -1,90 +0,0 @@
-rec {
- # Normalized semantic colors (Everforest - Dark)
- colors = {
- bg = "#2b3339";
- bgAlt = "#323c41";
- surface = "#323c41";
- surfaceAlt = "#3a444a";
- border = "#414b51";
-
- text = "#d3c6aa";
- textMuted = "#9da9a0";
-
- primary = "#7fbbb3"; # blue/aqua
- info = "#83c092"; # teal
- accent = "#d699b6"; # magenta
- success = "#a7c080"; # green
- warning = "#dbbc7f"; # yellow
- danger = "#e67e80"; # red
- };
-
- # Shared styling tokens for CSS consumers
- tokens = {
- opacity = "opacity: 0.85;";
- borderRadius = "border-radius: 1rem;";
-
- centerOptions = ''
- padding-top: 0.2rem;
- padding-bottom: 0.2rem;
- padding-left: 0.5rem;
- padding-right: 0.5rem;
- margin: 3px 0;
- '';
-
- borderRight = ''
- padding-top: 0.2rem;
- padding-bottom: 0.2rem;
- padding-left: 0.5rem;
- padding-right: 0.5rem;
- margin: 3px 0;
- border-radius: 0rem 1rem 1rem 0rem;
- margin-right: 0.5rem;
- '';
-
- borderLeft = ''
- padding-top: 0.2rem;
- padding-bottom: 0.2rem;
- padding-left: 0.5rem;
- padding-right: 0.5rem;
- margin: 3px 0;
- border-radius: 1rem 0rem 0rem 1rem;
- margin-left: 0.5rem;
- '';
- };
-
- # Legacy token aliases for back-compat
- defaultOpacity = tokens.opacity;
- defaultBorderRadius = tokens.borderRadius;
- defaultCenterOptions = tokens.centerOptions;
- borderRight = tokens.borderRight;
- borderLeft = tokens.borderLeft;
-
- # Back-compat: Nord-shaped groups for existing modules (approximate mappings)
- polarNight = {
- nord0 = "#2b3339";
- nord1 = "#323c41";
- nord2 = "#3a444a";
- nord3 = "#414b51";
- };
-
- snowStorm = {
- nord4 = "#c6d0b5";
- nord5 = "#e0dcc7";
- nord6 = "#d3c6aa";
- };
-
- frost = {
- nord7 = "#a7c080"; # green
- nord8 = "#83c092"; # teal
- nord9 = "#7fbbb3"; # aqua/blue
- nord10 = "#7fbbb3"; # reuse
- };
-
- aurora = {
- nord11 = "#e67e80"; # red
- nord12 = "#e69875"; # orange
- nord13 = "#dbbc7f"; # yellow
- nord14 = "#a7c080"; # green
- nord15 = "#d699b6"; # magenta
- };
-}
diff --git a/modules/home/desktop/theme/palettes/nord.nix b/modules/home/desktop/theme/palettes/nord.nix
deleted file mode 100644
index 0b25fd7..0000000
--- a/modules/home/desktop/theme/palettes/nord.nix
+++ /dev/null
@@ -1,90 +0,0 @@
-rec {
- # Normalized semantic colors (theme-agnostic)
- colors = {
- bg = "#2e3440";
- bgAlt = "#3b4252";
- surface = "#3b4252";
- surfaceAlt = "#434c5e";
- border = "#4c566a";
-
- text = "#eceff4";
- textMuted = "#e5e9f0";
-
- primary = "#5e81ac"; # blue
- info = "#88c0d0"; # cyan/teal
- accent = "#b48ead"; # purple
- success = "#a3be8c"; # green
- warning = "#ebcb8b"; # yellow
- danger = "#bf616a"; # red
- };
-
- # Shared styling tokens for CSS consumers
- tokens = {
- opacity = "opacity: 0.85;";
- borderRadius = "border-radius: 1rem;";
-
- centerOptions = ''
- padding-top: 0.2rem;
- padding-bottom: 0.2rem;
- padding-left: 0.5rem;
- padding-right: 0.5rem;
- margin: 3px 0;
- '';
-
- borderRight = ''
- padding-top: 0.2rem;
- padding-bottom: 0.2rem;
- padding-left: 0.5rem;
- padding-right: 0.5rem;
- margin: 3px 0;
- border-radius: 0rem 1rem 1rem 0rem;
- margin-right: 0.5rem;
- '';
-
- borderLeft = ''
- padding-top: 0.2rem;
- padding-bottom: 0.2rem;
- padding-left: 0.5rem;
- padding-right: 0.5rem;
- margin: 3px 0;
- border-radius: 1rem 0rem 0rem 1rem;
- margin-left: 0.5rem;
- '';
- };
-
- # Legacy token aliases for back-compat
- defaultOpacity = tokens.opacity;
- defaultBorderRadius = tokens.borderRadius;
- defaultCenterOptions = tokens.centerOptions;
- borderRight = tokens.borderRight;
- borderLeft = tokens.borderLeft;
-
- # Back-compat: Nord-shaped groups for existing modules
- polarNight = {
- nord0 = "#2e3440";
- nord1 = "#3b4252";
- nord2 = "#434c5e";
- nord3 = "#4c566a";
- };
-
- snowStorm = {
- nord4 = "#d8dee9";
- nord5 = "#e5e9f0";
- nord6 = "#eceff4";
- };
-
- frost = {
- nord7 = "#8fbcbb";
- nord8 = "#88c0d0";
- nord9 = "#81a1c1";
- nord10 = "#5e81ac";
- };
-
- aurora = {
- nord11 = "#bf616a";
- nord12 = "#d08770";
- nord13 = "#ebcb8b";
- nord14 = "#a3be8c";
- nord15 = "#b48ead";
- };
-}
diff --git a/modules/home/home/default.nix b/modules/home/home/default.nix
index 3037426..eee99c8 100644
--- a/modules/home/home/default.nix
+++ b/modules/home/home/default.nix
@@ -2,9 +2,13 @@
config,
lib,
pkgs,
+ namespace,
hasDestopEnvironment ? true,
...
}:
+let
+ inherit (lib.${namespace}) enabled disabled;
+in
{
home = {
enableNixpkgsReleaseCheck = lib.mkDefault false;
@@ -51,15 +55,15 @@
};
programs = {
- nix-index-database.comma.enable = true;
- btop.enable = lib.mkDefault true;
- fastfetch.enable = lib.mkDefault true;
- home-manager.enable = lib.mkDefault true;
+ nix-index-database.comma = enabled;
+ btop = lib.mkDefault enabled;
+ fastfetch = lib.mkDefault enabled;
+ home-manager = lib.mkDefault enabled;
java = {
enable = lib.mkDefault true;
};
mangohud.enable = lib.mkDefault hasDestopEnvironment;
- password-store.enable = true;
+ password-store = enabled;
nh = {
enable = true;
flake = "/etc/nixos";
@@ -122,7 +126,7 @@
services = {
nextcloud-client.enable = lib.mkDefault hasDestopEnvironment;
- pass-secret-service.enable = lib.mkDefault true;
+ pass-secret-service = lib.mkDefault enabled;
kdeconnect = {
enable = lib.mkDefault hasDestopEnvironment;
indicator = lib.mkDefault true;
diff --git a/modules/home/programs/btop/default.nix b/modules/home/programs/btop/default.nix
index 2c998b6..6f95ef8 100755
--- a/modules/home/programs/btop/default.nix
+++ b/modules/home/programs/btop/default.nix
@@ -2,7 +2,6 @@
with lib;
let
cfg = config.mjallen.programs.btop;
- palette = import cfg.theme.file;
in
{
imports = [ ./options.nix ];
@@ -10,8 +9,6 @@ in
programs.btop = {
enable = true;
settings = {
- color_theme = "global";
- theme_background = true;
truecolor = true;
force_tty = false;
presets = "cpu:1:default,proc:0:default cpu:0:default,mem:0:default,net:0:default cpu:0:block,net:0:tty";
@@ -75,52 +72,6 @@ in
selected_battery = "Auto";
log_level = "WARNING";
};
- themes = {
- global = ''
- theme[main_bg]="${palette.colors.bg}"
- theme[main_fg]="${palette.colors.text}"
- theme[title]="${palette.colors.text}"
- theme[hi_fg]="${palette.colors.info}"
- theme[selected_bg]="${palette.colors.bgAlt}"
- theme[selected_fg]="${palette.colors.info}"
- theme[inactive_fg]="${palette.colors.surfaceAlt}"
- theme[graph_text]="${palette.colors.text}"
- theme[meter_bg]="${palette.colors.bgAlt}"
- theme[proc_misc]="${palette.colors.text}"
- theme[cpu_box]="${palette.colors.accent}"
- theme[mem_box]="${palette.colors.success}"
- theme[net_box]="${palette.colors.warning}"
- theme[proc_box]="${palette.colors.danger}"
- theme[div_line]="${palette.colors.bgAlt}"
- theme[temp_start]="${palette.colors.success}"
- theme[temp_mid]="${palette.colors.warning}"
- theme[temp_end]="${palette.colors.danger}"
- theme[cpu_start]="${palette.colors.accent}"
- theme[cpu_mid]="${palette.colors.warning}"
- theme[cpu_end]="${palette.colors.danger}"
- theme[free_start]="${palette.colors.success}"
- theme[free_mid]="${palette.colors.warning}"
- theme[free_end]="${palette.colors.warning}"
- theme[cached_start]="${palette.colors.success}"
- theme[cached_mid]="${palette.colors.warning}"
- theme[cached_end]="${palette.colors.warning}"
- theme[available_start]="${palette.colors.text}"
- theme[available_mid]="${palette.colors.danger}"
- theme[available_end]="${palette.colors.danger}"
- theme[used_start]="${palette.colors.success}"
- theme[used_mid]="${palette.colors.warning}"
- theme[used_end]="${palette.colors.danger}"
- theme[download_start]="${palette.colors.info}"
- theme[download_mid]="${palette.colors.info}"
- theme[download_end]="${palette.colors.warning}"
- theme[upload_start]="${palette.colors.info}"
- theme[upload_mid]="${palette.colors.info}"
- theme[upload_end]="${palette.colors.warning}"
- theme[process_start]="${palette.colors.accent}"
- theme[process_mid]="${palette.colors.warning}"
- theme[process_end]="${palette.colors.danger}"
- '';
- };
};
};
}
diff --git a/modules/home/programs/btop/options.nix b/modules/home/programs/btop/options.nix
index 3917198..c85c2e9 100644
--- a/modules/home/programs/btop/options.nix
+++ b/modules/home/programs/btop/options.nix
@@ -3,19 +3,5 @@ with lib;
{
options.mjallen.programs.btop = {
enable = mkEnableOption "enable btop";
-
- theme = mkOption {
- type = types.submodule {
- options = {
- file = mkOption {
- type = types.path;
- default = lib.snowfall.fs.get-file "modules/home/desktop/theme/palettes/nord.nix";
- description = "Nix file exporting a palette attrset.";
- };
- };
- };
- default = { };
- description = "btop theme palette configuration.";
- };
};
}
diff --git a/modules/home/programs/hyprland/default.nix b/modules/home/programs/hyprland/default.nix
index b4d4c6c..43675cd 100644
--- a/modules/home/programs/hyprland/default.nix
+++ b/modules/home/programs/hyprland/default.nix
@@ -7,12 +7,11 @@
with lib;
let
cfg = config.mjallen.programs.hyprland;
- drawer = "nwg-drawer -fm nautilus -term kitty -mb 10 -mt 10 -ml 10 -mr 10 -pbuseicontheme -i ${config.gtk.iconTheme.name}";
+ drawer = "nwg-drawer -fm nautilus -term kitty -mb 10 -mt 10 -ml 10 -mr 10 -pbuseicontheme -i ${config.stylix.icons.dark}";
in
{
imports = [
./options.nix
- ./theme.nix
];
config = mkIf cfg.enable {
@@ -83,8 +82,8 @@ in
GTK_CSD = "0";
GTK_THEME = config.gtk.theme.name;
GTK_USE_PORTAL = "1";
- HYPRCURSOR_THEME = config.home.pointerCursor.name;
- HYPRCURSOR_SIZE = config.home.pointerCursor.size;
+ HYPRCURSOR_THEME = config.stylix.cursor.name;
+ HYPRCURSOR_SIZE = config.stylix.cursor.size;
MOZ_ENABLE_WAYLAND = "1";
NIXOS_OZONE_WL = "1";
NIXOS_XDG_OPEN_USE_PORTAL = "1";
@@ -95,8 +94,8 @@ in
QT_WAYLAND_DISABLE_WINDOWDECORATION = "1";
SDL_VIDEODRIVER = "wayland";
TERMINAL = "${cfg.defaultApps.terminal.pname}";
- XCURSOR_THEME = config.home.pointerCursor.name;
- XCURSOR_SIZE = config.home.pointerCursor.size;
+ XCURSOR_THEME = config.stylix.cursor.name;
+ XCURSOR_SIZE = config.stylix.cursor.size;
XDG_CACHE_HOME = "\${HOME}/.cache";
XDG_CONFIG_HOME = "\${HOME}/.config";
XDG_CURRENT_DESKTOP = "Hyprland";
@@ -176,14 +175,14 @@ in
{
monitor = "";
path = "/run/wallpaper.jpg"; # supports png, jpg, webp (no animations, though)
- color = "rgba(25, 20, 20, 1.0)";
+ color = mkForce "rgba(25, 20, 20, 1.0)";
# all these options are taken from hyprland, see https://wiki.hyprland.org/Configuring/Variables/#blur for explanations
- blur_passes = "3"; # 0 disables blurring
- blur_size = "7";
+ blur_passes = mkForce "3"; # 0 disables blurring
+ blur_size = mkForce "7";
noise = "0.0117";
contrast = "0.8916";
- brightness = "0.8172";
+ brightness = mkForce "0.8172";
vibrancy = "0.1696";
vibrancy_darkness = "0.0";
}
@@ -193,9 +192,9 @@ in
{
monitor = cfg.primaryDisplay;
text = "cmd[update:1000] echo -e \"$(LC_TIME=en_US.UTF-8 date +\"%A, %B %d\")\"";
- color = "#eceff4";
+ color = config.lib.stylix.colors.base06;
font_size = "25";
- font_family = "JetBrainsMono NFM";
+ font_family = lib.mkDefault config.stylix.fonts.monospace.name;
position = "0, 350";
halign = "center";
valign = "center";
@@ -204,9 +203,9 @@ in
{
monitor = cfg.primaryDisplay;
text = "cmd[update:1000] echo \"$(date +\"%I:%M\")\"";
- color = "#eceff4";
+ color = config.lib.stylix.colors.base06;
font_size = "120";
- font_family = "JetBrainsMono NFM Bold";
+ font_family = lib.mkDefault "${config.stylix.fonts.monospace.name} Bold";
position = "0, 230";
halign = "center";
valign = "center";
@@ -214,13 +213,13 @@ in
{
monitor = cfg.primaryDisplay;
text = "$USER";
- color = "#eceff4";
+ color = config.lib.stylix.colors.base06;
outline_thickness = 2;
dots_size = 0.2;
dots_spacing = 0.2;
dots_center = true;
font_size = 18;
- font_family = "JetBrainsMono NFM Bold";
+ font_family = lib.mkDefault "${config.stylix.fonts.monospace.name} Bold";
position = "0, 0";
halign = "center";
valign = "center";
@@ -229,9 +228,9 @@ in
{
monitor = cfg.primaryDisplay;
text = "cmd[update:30000] waybar-weather --hyprlock";
- color = "#eceff4";
+ color = config.lib.stylix.colors.base06;
font_size = "25";
- font_family = "JetBrainsMono NFM";
+ font_family = lib.mkDefault config.stylix.fonts.monospace.name;
position = "-100, 100";
halign = "right";
valign = "bottom";
@@ -240,9 +239,9 @@ in
{
monitor = cfg.primaryDisplay;
text = "cmd[update:1000] waybar-media";
- color = "#eceff4";
+ color = config.lib.stylix.colors.base06;
font_size = "15";
- font_family = "JetBrainsMono NFM";
+ font_family = lib.mkDefault config.stylix.fonts.monospace.name;
position = "100, 100";
halign = "left";
valign = "bottom";
@@ -265,16 +264,16 @@ in
{
size = "200, 50";
position = "0, -80";
- font_family = "JetBrainsMono NFM";
+ font_family = lib.mkDefault config.stylix.fonts.monospace.name;
monitor = cfg.primaryDisplay;
dots_center = true;
fade_on_empty = true;
- font_color = "#eceff4";
- inner_color = "#4c566a";
- outer_color = "#2e3440";
+ font_color = config.lib.stylix.colors.base06;
+ inner_color = config.lib.stylix.colors.base03;
+ outer_color = config.lib.stylix.colors.base00;
bothlock_color = -1;
outline_thickness = 5;
- placeholder_text = ''Password...'';
+ placeholder_text = ''Password...'';
shadow_passes = 2;
}
];
@@ -486,8 +485,8 @@ in
gaps_in = 5;
gaps_out = 10;
border_size = 1;
- "col.active_border" = "rgb(8aadf4) rgb(24273A) rgb(24273A) rgb(8aadf4) 45deg";
- "col.inactive_border" = "rgb(24273A) rgb(24273A) rgb(24273A) rgb(24273A) 45deg";
+ # "col.active_border" = "rgb(8aadf4) rgb(24273A) rgb(24273A) rgb(8aadf4) 45deg";
+ # "col.inactive_border" = "rgb(24273A) rgb(24273A) rgb(24273A) rgb(24273A) 45deg";
layout = "dwindle";
allow_tearing = cfg.allowTearing;
};
diff --git a/modules/home/programs/hyprland/options.nix b/modules/home/programs/hyprland/options.nix
index 1c3ea60..1f242a6 100644
--- a/modules/home/programs/hyprland/options.nix
+++ b/modules/home/programs/hyprland/options.nix
@@ -152,18 +152,6 @@ with lib;
description = "Any extra configuration options";
};
- iconThemeName = mkOption {
- type = types.str;
- default = "Colloid-Dark";
- description = "Icon theme name";
- };
-
- gtkThemeName = mkOption {
- type = types.str;
- default = "Colloid-Dark";
- description = "GTK theme name";
- };
-
defaultApps = mkOption {
type = types.submodule {
options = {
diff --git a/modules/home/programs/hyprland/theme.nix b/modules/home/programs/hyprland/theme.nix
deleted file mode 100644
index 6d6b3b7..0000000
--- a/modules/home/programs/hyprland/theme.nix
+++ /dev/null
@@ -1,100 +0,0 @@
-{
- config,
- lib,
- pkgs,
- mjallenThemeComputed,
- ...
-}:
-with lib;
-let
- cfg = config.mjallen.programs.hyprland;
-
- # Pull from global theme options
- themeSize = config.mjallen.theme.gtk.size; # "standard" | "compact"
- themeAccent = config.mjallen.theme.gtk.accent; # "default" | ... | "all"
- themeTweak = config.mjallen.theme.gtk.tweak; # "normal" | "rimless" | "float" | "black"
- themeColor = config.mjallen.theme.gtk.color; # "light" | "dark"
- iconThemeVariant = config.mjallen.theme.icons.variant; # "default" | ... | "all"
- iconScheme = config.mjallen.theme.icons.scheme; # "default" | "nord" | "dracula" | ...
-
- # Cursor
- cursorTheme = "macOS";
- cursorThemePkg = pkgs.apple-cursor;
- cursorSize = 24;
-
- # GTK
- gtkTheme = mjallenThemeComputed.gtkTheme;
- gtkThemePkg = pkgs.colloid-gtk-theme.override {
- sizeVariants = [ themeSize ];
- colorVariants = [ themeColor ];
- themeVariants = [ themeAccent ];
- tweaks = [ themeTweak ];
- };
-
- # Icons
- iconTheme = mjallenThemeComputed.iconTheme;
- iconThemePkg = pkgs.colloid-icon-theme.override {
- schemeVariants = [ iconScheme ];
- colorVariants = [ iconThemeVariant ];
- };
-
- # Fonts
- fontName = "JetBrainsMono NFM";
- fontPackage = pkgs.nerd-fonts.jetbrains-mono;
- fontSize = 12;
-in
-{
- config = mkIf cfg.enable {
- home = {
- pointerCursor = {
- gtk.enable = true;
- package = cursorThemePkg;
- name = cursorTheme;
- size = cursorSize;
- };
- };
-
- dconf = {
- enable = true;
- settings = {
- "org/gnome/desktop/interface".color-scheme = "prefer-dark";
- "org/gnome/desktop/interface".cursor-theme = cursorTheme;
- "org/gnome/desktop/interface".gtk-theme = gtkTheme;
- "org/gnome/desktop/interface".icon-theme = iconTheme;
- };
- };
-
- gtk = {
- enable = true;
-
- cursorTheme = {
- name = cursorTheme;
- package = cursorThemePkg;
- };
-
- theme = {
- name = gtkTheme;
- package = gtkThemePkg;
- };
-
- iconTheme = {
- name = iconTheme;
- package = iconThemePkg;
- };
-
- gtk3.extraConfig = {
- gtk-application-prefer-dark-theme = true;
- };
-
- gtk4.extraConfig = {
- gtk-application-prefer-dark-theme = true;
- };
-
- font = {
- name = fontName;
- package = fontPackage;
- size = fontSize;
- };
- };
- };
-}
diff --git a/modules/home/programs/kitty/default.nix b/modules/home/programs/kitty/default.nix
index f0e4678..74a6685 100755
--- a/modules/home/programs/kitty/default.nix
+++ b/modules/home/programs/kitty/default.nix
@@ -2,7 +2,6 @@
with lib;
let
cfg = config.mjallen.programs.kitty;
- palette = import cfg.theme.file;
in
{
imports = [ ./options.nix ];
@@ -12,94 +11,14 @@ in
enable = true;
shellIntegration.enableZshIntegration = true;
- font = {
- name = cfg.font.name;
- package = cfg.font.package;
- size = cfg.font.size;
- };
-
settings = {
- bold_font = "auto";
+ bold_font = "auto";
italic_font = "auto";
bold_italic_font = "auto";
mouse_hide_wait = "2.0";
cursor_shape = "block";
url_style = "dotted";
confirm_os_window_close = "0";
- background_opacity = "0.85";
-
- # The basic colors
- foreground = palette.colors.text;
- background = palette.colors.bg;
- selection_foreground = palette.colors.bg;
- selection_background = palette.colors.accent;
-
- # Cursor colors
- cursor = palette.colors.accent;
- cursor_text_color = palette.colors.bg;
-
- # URL underline color when hovering with mouse
- url_color = palette.colors.accent;
-
- # Kitty window border colors
- active_border_color = palette.colors.primary;
- inactive_border_color = palette.colors.bgAlt;
- bell_border_color = palette.colors.warning;
-
- # OS Window titlebar colors
- wayland_titlebar_color = palette.colors.bg;
- macos_titlebar_color = palette.colors.bg;
-
- # Tab bar colors
- active_tab_foreground = palette.colors.border;
- active_tab_background = palette.colors.accent;
- inactive_tab_foreground = palette.colors.text;
- inactive_tab_background = palette.colors.bgAlt;
- tab_bar_background = palette.colors.border;
-
- # Colors for marks (marked text in the terminal)
- mark1_foreground = palette.colors.bg;
- mark1_background = palette.colors.primary;
- mark2_foreground = palette.colors.bg;
- mark2_background = palette.colors.accent;
- mark3_foreground = palette.colors.bg;
- mark3_background = palette.colors.info;
-
- # The 16 terminal colors
-
- # black
- color0 = palette.colors.bg;
-
- # Autosuggestion
- color8 = palette.colors.primary;
-
- # red
- color1 = palette.colors.danger;
- color9 = palette.colors.danger;
-
- # green
- color2 = palette.colors.success;
- color10 = palette.colors.success;
-
- # yellow
- color3 = palette.colors.warning;
- color11 = palette.colors.warning;
-
- # blue
- color4 = palette.colors.primary;
- color12 = palette.colors.primary;
-
- # magenta
- color5 = palette.colors.accent;
- color13 = palette.colors.accent;
-
- # cyan
- color6 = palette.colors.info;
- color14 = palette.colors.info;
-
- # white
- color7 = palette.colors.textMuted;
- color15 = palette.colors.text;
};
};
};
diff --git a/modules/home/programs/kitty/options.nix b/modules/home/programs/kitty/options.nix
index ee76467..0385fe3 100644
--- a/modules/home/programs/kitty/options.nix
+++ b/modules/home/programs/kitty/options.nix
@@ -6,34 +6,5 @@ in
{
options.mjallen.programs.kitty = {
enable = mkEnableOption "enable kitty terminal";
-
- font = {
- name = mkOption {
- type = types.str;
- default = "DejaVu Sans";
- };
-
- package = mkOpt types.package pkgs.dejavu_fonts "Default font package";
-
- size = mkOption {
- type = with types; int;
- default = 12;
- };
- };
-
- theme = mkOption {
- type = types.submodule {
- options = {
- file = mkOption {
- type = types.path;
- # Fallback default; global theme module sets this via mkDefault
- default = lib.snowfall.fs.get-file "modules/home/desktop/theme/palettes/nord.nix";
- description = "Nix file exporting a palette attrset.";
- };
- };
- };
- default = { };
- description = "Kitty theme palette configuration.";
- };
};
}
diff --git a/modules/home/programs/mako/default.nix b/modules/home/programs/mako/default.nix
index 5d06360..d988683 100755
--- a/modules/home/programs/mako/default.nix
+++ b/modules/home/programs/mako/default.nix
@@ -2,7 +2,6 @@
with lib;
let
cfg = config.mjallen.programs.mako;
- palette = import cfg.theme.file;
in
{
imports = [ ./options.nix ];
@@ -10,7 +9,7 @@ in
services.mako = {
enable = true;
settings = {
- font = cfg.fontName;
+ font = mkDefault cfg.fontName;
icons = true;
ignore-timeout = true;
sort = "-time";
@@ -22,10 +21,10 @@ in
max-icon-size = 64;
default-timeout = 5000;
- background-color = palette.colors.bg;
- text-color = palette.colors.text;
- border-color = palette.colors.primary;
- progress-color = "over ${palette.colors.info}";
+ # background-color = mkDefault config.lib.stylix.colors.base00;
+ # text-color = mkDefault config.lib.stylix.colors.base06;
+ # border-color = mkDefault config.lib.stylix.colors.base0F;
+ # progress-color = mkDefault "over ${config.lib.stylix.colors.base0C}";
};
};
};
diff --git a/modules/home/programs/mako/options.nix b/modules/home/programs/mako/options.nix
index 623a7fe..a920ab2 100644
--- a/modules/home/programs/mako/options.nix
+++ b/modules/home/programs/mako/options.nix
@@ -8,19 +8,5 @@ with lib;
type = types.str;
default = "DejaVu Sans";
};
-
- theme = mkOption {
- type = types.submodule {
- options = {
- file = mkOption {
- type = types.path;
- default = lib.snowfall.fs.get-file "modules/home/desktop/theme/palettes/nord.nix";
- description = "Nix file exporting a palette attrset.";
- };
- };
- };
- default = { };
- description = "Mako theme palette configuration.";
- };
};
}
diff --git a/modules/home/programs/nwg-dock/default.nix b/modules/home/programs/nwg-dock/default.nix
index 15fbf30..fbdcf04 100644
--- a/modules/home/programs/nwg-dock/default.nix
+++ b/modules/home/programs/nwg-dock/default.nix
@@ -18,11 +18,11 @@ in
home.file = {
".config/nwg-dock-hyprland/drawer.css".text = ''
window {
- background: ${palette.colors.bg};
+ background: ${config.lib.stylix.colors.base00};
border-radius: 10px;
border-style: none;
border-width: 1px;
- border-color: ${palette.colors.accent}b0
+ border-color: ${config.lib.stylix.colors.base0E}b0
}
#box {
@@ -33,14 +33,14 @@ in
active {
/* This is to underline the button representing the currently active window */
border-bottom: solid 1px;
- border-color: ${palette.colors.success}1a
+ border-color: ${config.lib.stylix.colors.base0B}1a
}
button, image {
background: none;
border-style: none;
box-shadow: none;
- color: ${palette.colors.primary}
+ color: ${config.lib.stylix.colors.base0F}
}
button {
@@ -52,7 +52,7 @@ in
}
button:hover {
- background-color: ${palette.colors.bg}1a;
+ background-color: ${config.lib.stylix.colors.base00}1a;
border-radius: 2px;
}
diff --git a/modules/home/programs/nwg-dock/options.nix b/modules/home/programs/nwg-dock/options.nix
index 47c63cb..a37808f 100644
--- a/modules/home/programs/nwg-dock/options.nix
+++ b/modules/home/programs/nwg-dock/options.nix
@@ -3,19 +3,5 @@ with lib;
{
options.mjallen.programs.nwg-dock = {
enable = mkEnableOption "enable nwg-dock";
-
- theme = mkOption {
- type = types.submodule {
- options = {
- file = mkOption {
- type = types.path;
- default = lib.snowfall.fs.get-file "modules/home/desktop/theme/palettes/nord.nix";
- description = "Nix file exporting a palette attrset.";
- };
- };
- };
- default = { };
- description = "nwg-dock theme palette configuration.";
- };
};
}
diff --git a/modules/home/programs/nwg-drawer/default.nix b/modules/home/programs/nwg-drawer/default.nix
index 63efdfa..4bd19d0 100644
--- a/modules/home/programs/nwg-drawer/default.nix
+++ b/modules/home/programs/nwg-drawer/default.nix
@@ -18,13 +18,13 @@ in
home.file = {
".config/nwg-drawer/drawer.css".text = ''
window {
- background-color: ${palette.colors.bg}bf;
- color: ${palette.colors.textMuted}00
+ background-color: ${config.lib.stylix.colors.base00}bf;
+ color: ${config.lib.stylix.colors.base05}00
}
/* search entry */
entry {
- background-color: ${palette.colors.bgAlt}0f
+ background-color: ${config.lib.stylix.colors.base01}0f
}
button, image {
@@ -33,7 +33,7 @@ in
}
button:hover {
- background-color: ${palette.colors.primary}1a
+ background-color: ${config.lib.stylix.colors.base0F}1a
}
/* in case you wanted to give category buttons a different look */
@@ -43,12 +43,12 @@ in
#pinned-box {
padding-bottom: 5px;
- border-bottom: 1px dotted ${palette.colors.border}
+ border-bottom: 1px dotted ${config.lib.stylix.colors.base03}
}
#files-box {
padding: 5px;
- border: 1px dotted ${palette.colors.border};
+ border: 1px dotted ${config.lib.stylix.colors.base03};
border-radius: 15px
}
'';
diff --git a/modules/home/programs/nwg-drawer/options.nix b/modules/home/programs/nwg-drawer/options.nix
index aff37cd..a837354 100644
--- a/modules/home/programs/nwg-drawer/options.nix
+++ b/modules/home/programs/nwg-drawer/options.nix
@@ -3,19 +3,5 @@ with lib;
{
options.mjallen.programs.nwg-drawer = {
enable = mkEnableOption "enable nwg-drawer";
-
- theme = mkOption {
- type = types.submodule {
- options = {
- file = mkOption {
- type = types.path;
- default = lib.snowfall.fs.get-file "modules/home/desktop/theme/palettes/nord.nix";
- description = "Nix file exporting a palette attrset.";
- };
- };
- };
- default = { };
- description = "nwg-drawer theme palette configuration.";
- };
};
}
diff --git a/modules/home/programs/waybar/default.nix b/modules/home/programs/waybar/default.nix
index 4522b4c..8305ce4 100755
--- a/modules/home/programs/waybar/default.nix
+++ b/modules/home/programs/waybar/default.nix
@@ -2,324 +2,233 @@
with lib;
let
cfg = config.mjallen.programs.waybar;
- palette = import cfg.theme.file;
-
- defaultOpacity = palette.tokens.opacity or "opacity: 0.85;";
- defaultBorderRadius = palette.tokens.borderRadius or "border-radius: 1rem;";
- defaultCenterOptions =
- palette.tokens.centerOptions or ''
- padding-top: 0.2rem;
- padding-bottom: 0.2rem;
- padding-left: 0.5rem;
- padding-right: 0.5rem;
- margin: 3px 0;
- '';
- borderRight =
- palette.tokens.borderRight or ''
- padding-top: 0.2rem;
- padding-bottom: 0.2rem;
- padding-left: 0.5rem;
- padding-right: 0.5rem;
- margin: 3px 0;
- border-radius: 0rem 1rem 1rem 0rem;
- margin-right: 0.5rem;
- '';
- borderLeft = ''
- padding-top: 0.2rem;
- padding-bottom: 0.2rem;
- padding-left: 0.5rem;
- padding-right: 0.5rem;
- margin: 3px 0;
- border-radius: 1rem 0rem 0rem 1rem;
- margin-left: 0.5rem;
- '';
baseStyle =
if cfg.style.file != null then
builtins.readFile cfg.style.file
else
''
- .blink_me {
- animation: blinker 1s linear infinite;
- }
-
+ /* =============================================================================
+ ANIMATIONS & GLOBAL OVERRIDES
+ ============================================================================= */
@keyframes blinker {
- 50% {
- color: ${palette.colors.danger};
- }
+ 50% { color: @base08; }
}
+ /* Override Stylix font settings */
* {
- font-family:
- Jetbrains Mono Nerd Font,
- monospace;
+ font-family: "Jetbrains Mono Nerd Font", monospace;
font-size: 14px;
min-height: 0;
}
+ /* =============================================================================
+ MAIN BAR & TOOLTIPS
+ ============================================================================= */
+ window#waybar {
+ background: transparent;
+ }
+
#waybar {
background: transparent;
- color: ${palette.colors.text};
+ color: @base06;
margin: 5px 5px;
}
- #workspaces {
- background-color: ${palette.colors.bg};
- ${defaultBorderRadius}
- ${defaultOpacity}
- ${defaultCenterOptions}
- margin-left: 0.6rem;
- }
-
- #workspaces button {
- color: ${palette.colors.primary};
- ${defaultBorderRadius}
- padding: 0.4rem;
- }
-
- #workspaces button.active {
- color: ${palette.colors.info};
- ${defaultBorderRadius}
- }
-
- #workspaces button:hover {
- color: ${palette.colors.info};
- ${defaultBorderRadius}
- }
-
- #workspaces button.focused {
- color: ${palette.colors.text};
- background: ${palette.colors.warning};
- ${defaultBorderRadius}
- }
-
- #workspaces button.urgent {
- color: ${palette.colors.bg};
- background: ${palette.colors.text};
- ${defaultBorderRadius}
- }
-
#tooltip {
- background: ${palette.colors.bg};
- border-color: ${palette.colors.bg};
- ${defaultBorderRadius}
- border-width: 1rem;
+ background: @base00;
+ border-color: @base00;
+ border-radius: 1rem;
+ border-width: 2px; /* Reduced from 1rem which is usually too thick */
border-style: solid;
}
- #window {
- color: ${palette.colors.accent};
- background-color: ${palette.colors.bg};
- ${defaultOpacity}
- ${defaultBorderRadius}
- ${defaultCenterOptions}
- margin-left: 4rem;
- margin-right: ${toString cfg.windowOffset}rem;
- }
-
- /* make window module transparent when no windows present */
- #window.empty {
- background-color: transparent;
- }
-
- #custom-power {
- color: ${palette.colors.primary};
- background-color: ${palette.colors.bg};
- ${defaultOpacity}
- ${defaultCenterOptions}
- border-radius: 0;
- }
-
+ /* Right-click menu styling */
menu {
border-radius: 15px;
- background: ${palette.colors.bg};
- color: ${palette.colors.text};
+ background: @base00;
+ color: @base06;
}
menuitem {
border-radius: 15px;
}
- #custom-weather {
- color: ${palette.colors.primary};
- background-color: ${palette.colors.bg};
- ${defaultOpacity}
- ${defaultCenterOptions}
- border-radius: 0;
+ /* =============================================================================
+ WORKSPACES
+ ============================================================================= */
+ #workspaces {
+ background-color: @base00;
+ border-radius: 1rem;
+ opacity: 0.85;
+ padding: 0.2rem 0.5rem;
+ margin: 3px 0 3px 0.6rem;
}
- #custom-notifications {
- color: ${palette.colors.primary};
- background-color: ${palette.colors.bg};
- ${defaultOpacity}
- ${defaultCenterOptions}
- border-radius: 0;
+ #workspaces button {
+ color: @base0F;
+ border-radius: 1rem;
+ padding: 0.4rem;
+ /* Border handled by stylix, but we add specific colors below */
}
- #custom-notifications.notify {
- color: ${palette.colors.danger};
+ #workspaces button.active,
+ #workspaces button:hover {
+ color: @base0C;
+ border-radius: 1rem;
}
+ #workspaces button.focused {
+ color: @base06;
+ background: @base0A;
+ border-radius: 1rem;
+ }
+
+ #workspaces button.urgent {
+ color: @base00;
+ background: @base06;
+ border-radius: 1rem;
+ }
+
+ /* =============================================================================
+ WINDOW TITLE
+ ============================================================================= */
+ #window {
+ color: @base0E;
+ background-color: @base00;
+ opacity: 0.85;
+ border-radius: 1rem;
+ padding: 0.2rem 0.5rem;
+ margin: 3px 0;
+
+ margin-left: 4rem;
+ margin-right: 75rem; /* This is very large, likely a centering hack */
+ }
+
+ #window.empty {
+ background-color: transparent;
+ }
+
+ /* =============================================================================
+ SHARED MODULE STYLES
+ ============================================================================= */
+ /* This block applies the standard "Nord Background" style to all modules
+ to avoid repeating code for every single ID. */
+ #custom-power,
+ #custom-weather,
+ #custom-notifications,
+ #battery,
+ #clock,
+ #idle_inhibitor,
+ #network,
+ #bluetooth,
+ #wireplumber,
+ #keyboard-state,
+ #temperature,
+ #custom-left-end,
+ #custom-right-end,
+ #custom-lights,
+ #tray {
+ background-color: @base00;
+ opacity: 0.85;
+ padding: 0.2rem 0.5rem;
+ margin: 3px 0;
+ border-radius: 0; /* Default to square, rounded manually below */
+ }
+
+ /* Common Hover Effect */
+ #idle_inhibitor:hover,
+ #network:hover,
+ #bluetooth:hover,
+ #wireplumber:hover,
+ #temperature:hover,
+ #custom-lights:hover {
+ background: @base02;
+ }
+
+ /* =============================================================================
+ MODULE SPECIFIC COLORS
+ ============================================================================= */
+
+ #custom-power,
+ #custom-weather,
+ #custom-notifications {
+ color: @base0F;
+ }
+
+ #custom-notifications.notify { color: @base08; }
#custom-notifications.alert {
- animation-name: blinker;
- animation-duration: 3s;
- animation-timing-function: linear;
- animation-iteration-count: infinite;
+ animation: blinker 3s linear infinite;
}
#battery {
- color: ${palette.colors.accent};
- background-color: ${palette.colors.bg};
- ${defaultOpacity}
- ${defaultCenterOptions}
- border-radius: 0;
+ color: @base0E;
min-width: 3rem;
}
- #clock {
- color: ${palette.colors.primary};
- background-color: ${palette.colors.bg};
- ${defaultOpacity}
- ${defaultCenterOptions}
- border-radius: 0;
- }
-
- /* ------------- */
+ #clock { color: @base0F; }
#idle_inhibitor {
- color: ${palette.colors.primary};
- background-color: ${palette.colors.bg};
- ${defaultOpacity}
- ${defaultCenterOptions}
- border-radius: 0;
+ color: @base0F;
padding-right: 1rem;
}
- #idle_inhibitor:hover {
- background: ${palette.colors.surfaceAlt};
- }
-
#network {
- color: ${palette.colors.accent};
- background-color: ${palette.colors.bg};
- ${defaultOpacity}
- ${defaultCenterOptions}
- border-radius: 0;
+ color: @base0E;
padding-right: 15px;
}
- #network:hover {
- background: ${palette.colors.surfaceAlt};
- }
+ #bluetooth { color: @base0F; }
- #bluetooth {
- color: ${palette.colors.primary};
- background-color: ${palette.colors.bg};
- ${defaultOpacity}
- ${defaultCenterOptions}
- border-radius: 0;
- }
-
- #bluetooth:hover {
- background: ${palette.colors.surfaceAlt};
- }
-
- #wireplumber.source {
- color: ${palette.colors.info};
- background-color: ${palette.colors.bg};
- ${defaultOpacity}
- ${defaultCenterOptions}
- border-radius: 0;
+ /* --- Audio source/sink --- */
+ #wireplumber.source,
+ #wireplumber.sink {
+ color: @base0C;
}
#wireplumber.source.muted {
- animation-name: blinker;
- animation-duration: 2s;
- animation-timing-function: linear;
- animation-iteration-count: infinite;
+ animation: blinker 2s linear infinite;
padding-right: 1rem;
}
- #wireplumber.source:hover {
- background: ${palette.colors.surfaceAlt};
- }
-
- #wireplumber.sink {
- color: ${palette.colors.info};
- background-color: ${palette.colors.bg};
- ${defaultOpacity}
- ${defaultCenterOptions}
- border-radius: 0;
- }
-
#wireplumber.sink.muted {
- animation-name: blinker;
- animation-duration: 5s;
- animation-timing-function: linear;
- animation-iteration-count: infinite;
+ animation: blinker 5s linear infinite;
}
- #wireplumber.sink:hover {
- background: ${palette.colors.surfaceAlt};
- }
-
- #keyboard-state.numlock {
- color: ${palette.colors.info};
- background-color: ${palette.colors.bg};
- ${defaultOpacity}
- ${defaultCenterOptions}
- border-radius: 0;
- }
-
- #keyboard-state.capslock {
- color: ${palette.colors.primary};
- background-color: ${palette.colors.bg};
- ${defaultOpacity}
- ${defaultCenterOptions}
- border-radius: 0;
- }
+ /* --- Keyboard --- */
+ #keyboard-state.numlock { color: @base0C; }
+ #keyboard-state.capslock { color: @base0F; }
+ /* --- Temperature --- */
+ #temperature,
#temperature.gpu {
- color: ${palette.colors.primary};
- background-color: ${palette.colors.bg};
- ${defaultOpacity}
- ${defaultCenterOptions}
- border-radius: 0;
+ color: @base0F;
}
- #temperature.gpu:hover {
- background: ${palette.colors.surfaceAlt};
- }
-
- #temperature {
- color: ${palette.colors.primary};
- background-color: ${palette.colors.bg};
- ${defaultOpacity}
- ${defaultCenterOptions}
- border-radius: 0
- }
-
- /* ------------- */
-
+ /* --- Tray --- */
#tray {
- background-color: ${palette.colors.bg};
- ${defaultOpacity}
- ${defaultCenterOptions}
- ${defaultBorderRadius}
+ border-radius: 1rem;
margin-right: 0.6rem;
}
- /* ------------- */
-
+ /* =============================================================================
+ DECORATIVE END CAPS & EXTRAS
+ ============================================================================= */
#custom-left-end {
- background-color: ${palette.colors.bg};
- ${defaultOpacity}
- ${borderLeft}
+ border-radius: 1rem 0 0 1rem;
+ margin-left: 0.5rem;
}
#custom-right-end {
- background-color: ${palette.colors.bg};
- ${defaultOpacity}
- ${borderRight}
+ border-radius: 0 1rem 1rem 0;
+ margin-right: 0.5rem;
+ }
+
+ #custom-lights {
+ color: @base0C;
+ /* Re-declaring background here to ensure specific override logic if needed */
+ background-color: @base00;
+ border-radius: 1rem 0 0 1rem;
+ margin-left: 0.5rem;
}
'';
in
@@ -596,10 +505,10 @@ in
calendar = {
mode = "month";
format = {
- months = "{}";
- days = "{}";
- weekdays = "{}";
- today = "{}";
+ months = "{}";
+ days = "{}";
+ weekdays = "{}";
+ today = "{}";
};
};
};
diff --git a/modules/home/programs/waybar/options.nix b/modules/home/programs/waybar/options.nix
index c5db66a..93d2c91 100644
--- a/modules/home/programs/waybar/options.nix
+++ b/modules/home/programs/waybar/options.nix
@@ -41,21 +41,6 @@ in
description = "Right margin offset for the hyprland/window module (in rem).";
};
- # Theme
- theme = mkOption {
- type = submodule {
- options = {
- file = mkOption {
- type = path;
- default = lib.snowfall.fs.get-file "modules/home/desktop/theme/palettes/nord.nix";
- description = "Nix file exporting a palette attrset (e.g., Nord).";
- };
- };
- };
- default = { };
- description = "Theme configuration.";
- };
-
# Layout
layout = mkOption {
type = submodule {
diff --git a/modules/home/programs/wlogout/default.nix b/modules/home/programs/wlogout/default.nix
index f66e874..26e394d 100644
--- a/modules/home/programs/wlogout/default.nix
+++ b/modules/home/programs/wlogout/default.nix
@@ -53,13 +53,13 @@ in
}
window {
- background-color: ${palette.colors.bg}f0
+ background-color: ${config.lib.stylix.colors.base00}f0
}
button {
margin: 8px;
- color: ${palette.colors.info};
- background-color: ${palette.colors.bgAlt};
+ color: ${config.lib.stylix.colors.base0C};
+ background-color: ${config.lib.stylix.colors.base01};
border-style: solid;
border-width: 2px;
background-repeat: no-repeat;
@@ -70,8 +70,8 @@ in
button:active,
button:focus,
button:hover {
- color: ${palette.colors.info};
- background-color: ${palette.colors.surfaceAlt};
+ color: ${config.lib.stylix.colors.base0C};
+ background-color: ${config.lib.stylix.colors.base02Alt};
outline-style: none;
}
diff --git a/modules/home/programs/wlogout/options.nix b/modules/home/programs/wlogout/options.nix
index d980170..292f6b2 100644
--- a/modules/home/programs/wlogout/options.nix
+++ b/modules/home/programs/wlogout/options.nix
@@ -3,24 +3,5 @@ with lib;
{
options.mjallen.programs.wlogout = {
enable = mkEnableOption "enable wlogout";
-
- fontName = mkOption {
- type = types.str;
- default = "Deja Vu Sans";
- };
-
- theme = mkOption {
- type = types.submodule {
- options = {
- file = mkOption {
- type = types.path;
- default = lib.snowfall.fs.get-file "modules/home/desktop/theme/palettes/nord.nix";
- description = "Nix file exporting a palette attrset.";
- };
- };
- };
- default = { };
- description = "wlogout theme palette configuration.";
- };
};
}
diff --git a/modules/home/programs/wofi/default.nix b/modules/home/programs/wofi/default.nix
index 3cf93e8..5f61d74 100755
--- a/modules/home/programs/wofi/default.nix
+++ b/modules/home/programs/wofi/default.nix
@@ -20,9 +20,9 @@ in
window {
margin: 0px;
padding: 10px;
- border: 0.16em solid ${palette.colors.accent};
+ border: 0.16em solid ${config.lib.stylix.colors.base0E};
border-radius: 0.1em;
- background-color: ${palette.colors.bg};
+ background-color: ${config.lib.stylix.colors.base00};
}
/* Inner Box */
@@ -30,7 +30,7 @@ in
margin: 5px;
padding: 10px;
border: none;
- background-color: ${palette.colors.bg};
+ background-color: ${config.lib.stylix.colors.base00};
}
/* Outer Box */
@@ -38,7 +38,7 @@ in
margin: 5px;
padding: 10px;
border: none;
- background-color: ${palette.colors.bg};
+ background-color: ${config.lib.stylix.colors.base00};
}
/* Scroll */
@@ -46,7 +46,7 @@ in
margin: 0px;
padding: 10px;
border: none;
- background-color: ${palette.colors.bg};
+ background-color: ${config.lib.stylix.colors.base00};
}
/* Input */
@@ -55,46 +55,46 @@ in
padding: 10px;
border: none;
border-radius: 0.1em;
- color: ${palette.colors.text};
- background-color: ${palette.colors.bg};
+ color: ${config.lib.stylix.colors.base06};
+ background-color: ${config.lib.stylix.colors.base00};
}
#input image {
border: none;
- color: ${palette.colors.danger};
+ color: ${config.lib.stylix.colors.base08};
}
#input * {
- outline: 4px solid ${palette.colors.danger}!important;
+ outline: 4px solid ${config.lib.stylix.colors.base08}!important;
}
/* Text */
#text {
margin: 5px;
border: none;
- color: ${palette.colors.text};
+ color: ${config.lib.stylix.colors.base06};
}
#entry {
- background-color: ${palette.colors.bg};
+ background-color: ${config.lib.stylix.colors.base00};
}
#entry arrow {
border: none;
- color: ${palette.colors.accent};
+ color: ${config.lib.stylix.colors.base0E};
}
/* Selected Entry */
#entry:selected {
- border: 0.11em solid ${palette.colors.accent};
+ border: 0.11em solid ${config.lib.stylix.colors.base0E};
}
#entry:selected #text {
- color: ${palette.colors.info};
+ color: ${config.lib.stylix.colors.base0C};
}
#entry:drop(active) {
- background-color: ${palette.colors.accent}!important;
+ background-color: ${config.lib.stylix.colors.base0E}!important;
}
'';
};
diff --git a/modules/home/programs/wofi/options.nix b/modules/home/programs/wofi/options.nix
index f47e584..8389599 100644
--- a/modules/home/programs/wofi/options.nix
+++ b/modules/home/programs/wofi/options.nix
@@ -8,19 +8,5 @@ with lib;
type = types.str;
default = "Deja Vu Sans";
};
-
- theme = mkOption {
- type = types.submodule {
- options = {
- file = mkOption {
- type = types.path;
- default = lib.snowfall.fs.get-file "modules/home/desktop/theme/palettes/nord.nix";
- description = "Nix file exporting a palette attrset.";
- };
- };
- };
- default = { };
- description = "Wofi theme palette configuration.";
- };
};
}
diff --git a/modules/home/stylix/default.nix b/modules/home/stylix/default.nix
new file mode 100644
index 0000000..e11f823
--- /dev/null
+++ b/modules/home/stylix/default.nix
@@ -0,0 +1,86 @@
+{ config, pkgs, ... }:
+let
+ # # Pull from global theme options
+ # themeSize = "standard"; # "standard" | "compact"
+ # themeAccent = "default"; # "default" | ... | "all"
+ # themeTweak = "normal"; # "normal" | "rimless" | "float" | "black"
+ # themeColor = "dark"; # "light" | "dark"
+ # iconThemeVariant = "default"; # "default" | ... | "all"
+ # iconScheme = "nord"; # "default" | "nord" | "dracula" | ...
+
+ # # GTK
+ # gtkTheme = "Colloid-dark-standard";
+ # gtkThemePkg = pkgs.colloid-gtk-theme.override {
+ # sizeVariants = [ themeSize ];
+ # colorVariants = [ themeColor ];
+ # themeVariants = [ themeAccent ];
+ # tweaks = [ themeTweak ];
+ # };
+
+ # # Icons
+ # iconTheme = "Colloid-nord-dark";
+ # iconThemePkg = pkgs.colloid-icon-theme.override {
+ # schemeVariants = [ iconScheme ];
+ # colorVariants = [ iconThemeVariant ];
+ # };
+in
+{
+ stylix = {
+ enable = true;
+ enableReleaseChecks = false;
+ base16Scheme = "${pkgs.base16-schemes}/share/themes/nord.yaml";
+
+ cursor = {
+ name = "macOS";
+ size = 24;
+ package = pkgs.apple-cursor;
+ };
+
+ fonts = {
+ serif = {
+ package = pkgs.dejavu_fonts;
+ name = "DejaVu Serif";
+ };
+
+ sansSerif = {
+ package = pkgs.dejavu_fonts;
+ name = "DejaVu Sans";
+ };
+
+ monospace = {
+ package = pkgs.nerd-fonts.jetbrains-mono;
+ name = "JetBrainsMono NFM";
+ };
+
+ emoji = {
+ package = pkgs.noto-fonts-color-emoji;
+ name = "Noto Color Emoji";
+ };
+
+ sizes = {
+ applications = 12;
+ desktop = 14;
+ popups = config.stylix.fonts.sizes.desktop;
+ terminal = config.stylix.fonts.sizes.applications;
+ };
+ };
+
+ icons = {
+ enable = true;
+ package = pkgs.colloid-icon-theme;
+ dark = "Colloid-nord-dark";
+ light = "Colloid-nord-light";
+ };
+
+ opacity = {
+ terminal = 0.85;
+ };
+
+ targets = {
+ hyprlock.enable = false;
+ gnome.enable = false;
+ # gtk.enable = false;
+ qt.enable = false;
+ };
+ };
+}
\ No newline at end of file
diff --git a/modules/nixos/home/default.nix b/modules/nixos/home/default.nix
index f3f6d07..d78d83d 100644
--- a/modules/nixos/home/default.nix
+++ b/modules/nixos/home/default.nix
@@ -65,6 +65,7 @@ in
sops-nix.homeManagerModules.sops
nix-plist-manager.homeManagerModules.default
nix-index-database.homeModules.nix-index
+ stylix.homeModules.stylix
# Add any other external HM modules here
]
++ (if (!isArm) then with inputs; [ steam-rom-manager.homeManagerModules.default ] else [ ])
diff --git a/modules/nixos/programs/default.nix b/modules/nixos/programs/default.nix
index aca1189..441e82a 100644
--- a/modules/nixos/programs/default.nix
+++ b/modules/nixos/programs/default.nix
@@ -14,7 +14,7 @@ in
{
programs = {
nix-index-database.comma.enable = true;
- zsh.enable = lib.mkDefault true;
+ zsh.enable = lib.mkForce true;
gnupg.agent = {
enable = lib.mkDefault true;
enableSSHSupport = lib.mkDefault true;
diff --git a/modules/nixos/services/common/default.nix b/modules/nixos/services/common/default.nix
index 498d9de..42a1527 100644
--- a/modules/nixos/services/common/default.nix
+++ b/modules/nixos/services/common/default.nix
@@ -1,4 +1,4 @@
-{ lib, pkgs, ... }:
+{ lib, config, ... }:
{
services = {
@@ -7,8 +7,8 @@
hwRender = true;
fonts = [
{
- name = "JetBrainsMono NFM";
- package = pkgs.nerd-fonts.jetbrains-mono;
+ name = lib.mkDefault config.stylix.fonts.monospace;
+ package = lib.mkDefault config.stylix.fonts.monospace.package;
}
];
};
diff --git a/modules/nixos/shell/default.nix b/modules/nixos/shell/default.nix
index 9d4e472..814512b 100644
--- a/modules/nixos/shell/default.nix
+++ b/modules/nixos/shell/default.nix
@@ -1,7 +1,7 @@
{ lib, ... }:
{
programs = {
- zsh.enable = lib.mkDefault true;
+ zsh.enable = lib.mkForce true;
gnupg.agent = {
enable = lib.mkDefault true;
enableSSHSupport = lib.mkDefault true;
diff --git a/modules/nixos/user/default.nix b/modules/nixos/user/default.nix
index 3eac56b..25b8042 100644
--- a/modules/nixos/user/default.nix
+++ b/modules/nixos/user/default.nix
@@ -69,51 +69,58 @@ in
users = {
mutableUsers = cfg.mutableUsers;
groups.${cfg.group}.gid = lib.mkForce (if cfg.group != "wheel" then cfg.gid else 1);
- users.${cfg.name} = {
- inherit (cfg)
- name
- uid
- linger
- packages
- password
- hashedPassword
- hashedPasswordFile
- ;
+ users = {
+ root = {
+ isSystemUser = true;
+ isNormalUser = false;
+ shell = lib.mkForce pkgs.zsh;
+ };
+ ${cfg.name} = {
+ inherit (cfg)
+ name
+ uid
+ linger
+ packages
+ password
+ hashedPassword
+ hashedPasswordFile
+ ;
- extraGroups = [
- "wheel"
- "keys"
- "networkmanager"
- "ratbagd"
- "scanner"
- "systemd-journal"
- "mpd"
- "audio"
- "video"
- "input"
- "plugdev"
- "lp"
- "tss"
- "power"
- "nix"
- "i2c"
- "media"
- "nscd"
- "avahi"
- "podman"
- "libvirtd"
- ]
- ++ cfg.extraGroups;
+ extraGroups = [
+ "wheel"
+ "keys"
+ "networkmanager"
+ "ratbagd"
+ "scanner"
+ "systemd-journal"
+ "mpd"
+ "audio"
+ "video"
+ "input"
+ "plugdev"
+ "lp"
+ "tss"
+ "power"
+ "nix"
+ "i2c"
+ "media"
+ "nscd"
+ "avahi"
+ "podman"
+ "libvirtd"
+ ]
+ ++ cfg.extraGroups;
- group = cfg.group;
- home = "/home/${cfg.name}";
- isNormalUser = true;
- shell = lib.mkForce pkgs.zsh;
+ group = cfg.group;
+ home = "/home/${cfg.name}";
+ isNormalUser = true;
+ shell = lib.mkForce pkgs.zsh;
- # SSH keys - combine user-specific and common keys
- openssh.authorizedKeys.keys = cfg.sshKeys ++ (lib.optionals cfg.enableCommonSshKeys commonSshKeys);
- }
- // cfg.extraOptions;
+ # SSH keys - combine user-specific and common keys
+ openssh.authorizedKeys.keys = cfg.sshKeys ++ (lib.optionals cfg.enableCommonSshKeys commonSshKeys);
+ }
+ // cfg.extraOptions;
+ };
};
assertions = [
{
diff --git a/systems/aarch64-linux/pi4/default.nix b/systems/aarch64-linux/pi4/default.nix
index c1d596f..9dff7cc 100755
--- a/systems/aarch64-linux/pi4/default.nix
+++ b/systems/aarch64-linux/pi4/default.nix
@@ -3,7 +3,8 @@
# https://search.nixos.org/options and in the NixOS manual (`nixos-help`).
{
- pkgs,
+ lib,
+ config,
namespace,
...
}:
@@ -77,8 +78,8 @@
hwRender = true;
fonts = [
{
- name = "JetBrainsMono NFM";
- package = pkgs.nerd-fonts.jetbrains-mono;
+ name = lib.mkDefault config.stylix.fonts.monospace.name;
+ package = lib.mkDefault config.stylix.fonts.monospace.package;
}
];
};