My desktop Background image is a famous wallpaper from Unsplash by Samuel Ferrara:
To achieve consistent theming, I am using the Stylix module:
stylix.url = "github:danth/stylix";
It provides a NixOS module which also auto-loads Home-Manager integration:
inputs.stylix.nixosModules.stylix
{ lib, pkgs, ... }:
{
stylix = {
enable = true;
base16Scheme = "${pkgs.base16-schemes}/share/themes/rose-pine-moon.yaml";
image = ../assets/aerial-photography-of-mountain-and-river.jpg;
cursor = {
package = pkgs.cz-Hickson-cursors;
name = "cz-Hickson-white";
size = 24;
};
fonts = {
monospace = {
package = pkgs.berkeley-mono-typeface;
name = "Berkeley Mono";
};
};
};
boot.plymouth.enable = true;
home-manager.sharedModules = [
{
dconf.settings."org/gnome/desktop/interface".color-scheme = lib.mkForce "prefer-dark";
}
{
stylix.iconTheme = {
enable = true;
package = pkgs.papirus-icon-theme;
dark = "Papirus-Dark";
light = "Papirus-Light";
};
}
];
specialisation.day.configuration = {
stylix = {
polarity = lib.mkForce "light";
base16Scheme = lib.mkForce "${pkgs.base16-schemes}/share/themes/rose-pine-dawn.yaml";
cursor.name = lib.mkForce "cz-Hickson-black";
};
home-manager.sharedModules = [
{
dconf.settings."org/gnome/desktop/interface".color-scheme = lib.mkOverride 49 "prefer-light";
}
];
};
}
The cursor and monospace font configured are not part of nixpkgs
, their definition are cz-Hickson Cursors and Berkeley Mono Font.
{ pkgs, ... }:
{
fonts.packages = [
pkgs.nerd-fonts.symbols-only
];
}
Stylix
currently doesn’t support Niri
background setting, so we need to do it ourselves:
{ lib, pkgs, config, ... }:
{
programs.niri.settings = {
spawn-at-startup = [
{ command = [ (lib.getExe pkgs.swaybg) "--image" "${config.stylix.image}" "--mode" config.stylix.imageScalingMode ]; }
];
};
}
{ lib, pkgs, config, ... }:
{
services.darkman = {
enable = true;
settings.usegeoclue = true;
darkModeScripts.color-scheme-dark = ''
doas /nix/var/nix/profiles/system/bin/switch-to-configuration test
echo dark > $XDG_RUNTIME_DIR/color-scheme
'';
lightModeScripts.color-scheme-light = ''
doas /nix/var/nix/profiles/system/specialisation/day/bin/switch-to-configuration test
echo light > $XDG_RUNTIME_DIR/color-scheme
'';
};
}
{
security.doas.extraRules = [
{
groups = [ "wheel" ];
cmd = "/nix/var/nix/profiles/system/bin/switch-to-configuration";
args = [ "test" ];
noPass = true;
keepEnv = true;
}
{
groups = [ "wheel" ];
cmd = "/nix/var/nix/profiles/system/specialisation/day/bin/switch-to-configuration";
args = [ "test" ];
noPass = true;
keepEnv = true;
}
];
}