My Nix Configuration

[flake] Add DMS configuration

pyrox.dev 7068e0b6 1c654df2

verified
Changed files
+260 -30
homeModules
nixosModules
default-config
homes
thehedgehog-zaphod
+132 -11
flake.lock
···
"nixpkgs": [
"nixpkgs"
],
-
"quickshell": "quickshell"
+
"quickshell": [
+
"quickshell"
+
]
},
"locked": {
"lastModified": 1760418315,
···
"url": "https://install.determinate.systems/determinate-nixd/tag/v3.11.3/x86_64-linux"
}
},
+
"dgop": {
+
"inputs": {
+
"nixpkgs": [
+
"dms",
+
"nixpkgs"
+
]
+
},
+
"locked": {
+
"lastModified": 1760238269,
+
"narHash": "sha256-7CeGZM/Z/5Qt3AYByCRohGYGR1MRuXYzTTbkV/JxyAs=",
+
"owner": "AvengeMedia",
+
"repo": "dgop",
+
"rev": "95acdfce2d323e28fa8f5a4f345160962034f2b5",
+
"type": "github"
+
},
+
"original": {
+
"owner": "AvengeMedia",
+
"repo": "dgop",
+
"type": "github"
+
}
+
},
"dix": {
"inputs": {
"flake-parts": [],
···
"original": {
"type": "tarball",
"url": "https://flakehub.com/f/DeterminateSystems/nix-src/%2A"
+
}
+
},
+
"dms": {
+
"inputs": {
+
"dgop": "dgop",
+
"dms-cli": "dms-cli",
+
"nixpkgs": [
+
"nixpkgs"
+
],
+
"quickshell": [
+
"quickshell"
+
]
+
},
+
"locked": {
+
"lastModified": 1760542313,
+
"narHash": "sha256-J/ANjUUyNqwFq+/T971SvRhPntjkNI+qeCQGnRR4QBU=",
+
"owner": "AvengeMedia",
+
"repo": "DankMaterialShell",
+
"rev": "e2db03495962fb73bfd287bc78922cc59b868de6",
+
"type": "github"
+
},
+
"original": {
+
"owner": "AvengeMedia",
+
"repo": "DankMaterialShell",
+
"type": "github"
+
}
+
},
+
"dms-cli": {
+
"inputs": {
+
"nixpkgs": [
+
"dms",
+
"nixpkgs"
+
]
+
},
+
"locked": {
+
"lastModified": 1760241259,
+
"narHash": "sha256-DlLGn+4M6tIafoDsHr2WhHG2hrHrC24S2IL3+KAvjEU=",
+
"owner": "AvengeMedia",
+
"repo": "danklinux",
+
"rev": "dae4c3ff4ce0feb930361c399747edb29d081775",
+
"type": "github"
+
},
+
"original": {
+
"owner": "AvengeMedia",
+
"repo": "danklinux",
+
"type": "github"
+
}
+
},
+
"dms-plugins": {
+
"flake": false,
+
"locked": {
+
"lastModified": 1760541058,
+
"narHash": "sha256-JG/QE1O/qWxISOJ1HvTWPPV1D6bRgZ7SIKR6xFbLZwI=",
+
"owner": "AvengeMedia",
+
"repo": "dms-plugins",
+
"rev": "003366ee0e521f15e382a695fc8d9f3b38109b77",
+
"type": "github"
+
},
+
"original": {
+
"owner": "AvengeMedia",
+
"repo": "dms-plugins",
+
"type": "github"
+
}
+
},
+
"dms-power-usage": {
+
"flake": false,
+
"locked": {
+
"lastModified": 1760429135,
+
"narHash": "sha256-M/H4nlAzUFrxZ01ldaR/YH1hqVN4vlBrkaCUqjtMaTM=",
+
"owner": "Daniel-42-z",
+
"repo": "dms-power-usage",
+
"rev": "3f75b651d90210c6f9442a099cf14262ac47750d",
+
"type": "github"
+
},
+
"original": {
+
"owner": "Daniel-42-z",
+
"repo": "dms-power-usage",
+
"type": "github"
+
}
+
},
+
"dms-wp-shuffler": {
+
"flake": false,
+
"locked": {
+
"lastModified": 1760505388,
+
"narHash": "sha256-1Kz3vvNMA99NSf33R5f0zh6vGzCPQFLYuXmaH5e1aGQ=",
+
"owner": "Daniel-42-z",
+
"repo": "dms-wallpaper-shuffler",
+
"rev": "71d9dd8398f255ddb81c4158ea0291554cb0c767",
+
"type": "github"
+
},
+
"original": {
+
"owner": "Daniel-42-z",
+
"repo": "dms-wallpaper-shuffler",
+
"type": "github"
}
},
"easy-hosts": {
···
"quickshell": {
"inputs": {
"nixpkgs": [
-
"caelestia",
"nixpkgs"
]
},
"locked": {
-
"lastModified": 1760228179,
-
"narHash": "sha256-4Z6k7lv3Zcgk3K+4h60LpqB9wCkR+utkYERU735U068=",
-
"ref": "refs/heads/master",
-
"rev": "c9d3ffb6043c5bf3f3009202bad7e0e5132c4a25",
-
"revCount": 693,
-
"type": "git",
-
"url": "https://git.outfoxxed.me/outfoxxed/quickshell"
+
"lastModified": 1760315601,
+
"narHash": "sha256-cvguRikKX0yXZ7jaK4Gt3qB1I33T5TzYZQf0Ampx8ko=",
+
"owner": "quickshell-mirror",
+
"repo": "quickshell",
+
"rev": "00858812f25b748d08b075a0d284093685fa3ffd",
+
"type": "github"
},
"original": {
-
"type": "git",
-
"url": "https://git.outfoxxed.me/outfoxxed/quickshell"
+
"owner": "quickshell-mirror",
+
"repo": "quickshell",
+
"type": "github"
}
},
"root": {
···
"ctp": "ctp",
"determinate": "determinate",
"dix": "dix",
+
"dms": "dms",
+
"dms-plugins": "dms-plugins",
+
"dms-power-usage": "dms-power-usage",
+
"dms-wp-shuffler": "dms-wp-shuffler",
"easy-hosts": "easy-hosts",
"flake-compat": "flake-compat",
"flake-parts": "flake-parts",
···
"nix-index-database": "nix-index-database",
"nixpkgs": "nixpkgs_2",
"nixpkgs-stalwart-fix": "nixpkgs-stalwart-fix",
+
"quickshell": "quickshell",
"tangled": "tangled"
}
},
+23 -1
flake.nix
···
caelestia = {
url = "github:caelestia-dots/shell";
inputs.nixpkgs.follows = "nixpkgs";
+
inputs.quickshell.follows = "quickshell";
};
ctp = {
url = "github:catppuccin/nix";
···
nix.follows = "dix";
};
};
+
dms = {
+
url = "github:AvengeMedia/DankMaterialShell";
+
inputs.nixpkgs.follows = "nixpkgs";
+
inputs.quickshell.follows = "quickshell";
+
};
+
# DMS Plugins
+
dms-wp-shuffler = {
+
url = "github:Daniel-42-z/dms-wallpaper-shuffler";
+
flake = false;
+
};
+
dms-power-usage = {
+
url = "github:Daniel-42-z/dms-power-usage";
+
flake = false;
+
};
+
dms-plugins = {
+
url = "github:AvengeMedia/dms-plugins";
+
flake = false;
+
};
easy-hosts.url = "github:tgirlcloud/easy-hosts";
golink = {
url = "github:tailscale/golink";
···
};
my-pkgs = {
url = "git+https://git.pyrox.dev/pyrox/pkgs";
+
inputs.nixpkgs.follows = "nixpkgs";
+
};
+
quickshell = {
+
url = "github:quickshell-mirror/quickshell";
inputs.nixpkgs.follows = "nixpkgs";
};
tangled = {
···
_module.args.pkgs = import inputs.nixpkgs {
inherit system;
overlays = [
-
# inputs.self.overlays.pyronet-packages
inputs.self.overlays.openssh-fixperms
inputs.golink.overlays.default
];
+2
homeModules/all-modules.nix
···
inputs.nix-index-database.homeModules.nix-index
inputs.ctp.homeModules.catppuccin
+
inputs.caelestia.homeManagerModules.default
+
inputs.dms.homeModules.dankMaterialShell.default
];
}
+5 -1
homeModules/default.nix
···
-
{ inputs, flake-parts-lib, ... }:
+
{
+
inputs,
+
flake-parts-lib,
+
...
+
}:
{
flake.homeModules = {
wayland = import ./wayland;
+22 -1
homeModules/profiles/desktop/default.nix
···
}:
let
cfg = config.py.profiles.desktop;
+
shell = cfg.shell;
inherit (lib) mkIf mkDefault mkEnableOption;
in
{
-
options.py.profiles.desktop.enable = mkEnableOption "Desktop Config";
+
options.py.profiles.desktop = {
+
enable = mkEnableOption "Desktop Config";
+
shell = lib.mkOption {
+
type = lib.types.enum [
+
"caelestia"
+
"dms"
+
];
+
default = "caelestia";
+
description = "The desktop shell to use in the graphical environment";
+
};
+
caelestia = lib.mkOption {
+
type = lib.types.bool;
+
default = (if (shell == "caelestia") then true else false);
+
description = "Enable caelestia shell";
+
};
+
dms = lib.mkOption {
+
type = lib.types.bool;
+
default = (if (shell == "dms") then true else false);
+
description = "Enable DMS";
+
};
+
};
config = mkIf cfg.enable {
py.profiles.base.enable = true;
py.profiles.cli.enable = true;
+22
homeModules/programs/caelestia/default.nix
···
+
{
+
config,
+
lib,
+
...
+
}:
+
let
+
cfg = config.py.profiles.desktop.caelestia;
+
in
+
{
+
config = lib.mkIf cfg {
+
programs.caelestia = {
+
enable = true;
+
settings = builtins.fromJSON (builtins.readFile ./caelestia-shell.json);
+
systemd = {
+
enable = true;
+
target = "graphical-session.target";
+
};
+
cli.enable = true;
+
cli.settings = builtins.fromJSON (builtins.readFile ./caelestia-cli.json);
+
};
+
};
+
}
+2
homeModules/programs/default.nix
···
{
imports = [
+
./caelestia
./chromium
+
./dms
./firefox
./fish
./ghostty
+21
homeModules/programs/dms/default.nix
···
+
{
+
config,
+
lib,
+
...
+
}:
+
let
+
cfg = config.py.profiles.desktop.dms;
+
in
+
{
+
config = lib.mkIf cfg {
+
programs.dankMaterialShell = {
+
enable = true;
+
enableSystemd = true;
+
enableNightMode = false;
+
enableDynamicTheming = false;
+
enableAudioWavelength = false;
+
enableCalendarEvents = false;
+
enableSystemSound = false;
+
};
+
};
+
}
+1 -1
homeModules/wayland/default.nix
···
enable = true;
enableXdgAutostart = true;
};
-
settings = import ./settings.nix;
+
settings = (import ./settings.nix { inherit lib config; });
plugins = [
pkgs.hyprlandPlugins.hy3
];
+10 -2
homeModules/wayland/keybindings.nix
···
+
{ lib, shell }:
{
"$mod" = "SUPER";
"$satty" = "satty -f -";
···
bind = [
"SUPER_SHIFT, F, exec, MOZ_DISABLE_RDD_SANDBOX=1 firefox"
"$mod, Return, exec, ghostty"
-
"$mod, X, global, caelestia:session"
-
"$mod, D, global, caelestia:launcher"
"SUPER_SHIFT, E, exit"
# Media Binds
···
# Screenshots
"SHIFT, F3, exec, hyprshot -m output --raw -z -s | $satty"
"SHIFT, F4, exec, hyprshot -m region --raw -z -s | $satty"
+
]
+
++ lib.optionals (shell == "caelestia") [
+
"$mod, X, global, caelestia:session"
+
"$mod, D, global, caelestia:launcher"
+
]
+
++ lib.optionals (shell == "dms") [
+
"$mod, X, exec, dms ipc call powermenu toggle"
+
"SUPER_SHIFT, X, exec, dms ipc call lock lock"
+
"$mod, D, exec, dms ipc call spotlight toggle"
];
bindm = [
+7 -1
homeModules/wayland/settings.nix
···
+
{ config, lib, ... }:
let
-
keybinds = import ./keybindings.nix;
+
shell = config.py.profiles.desktop.shell;
+
keybinds = (import ./keybindings.nix { inherit lib shell; });
monitors = import ./monitors.nix;
variables = import ./variables.nix;
plugins = import ./plugins.nix;
···
{
animation = [
"global, 1, 4, default"
+
];
+
exec-once = lib.optionals (shell == "dms") [
+
"dms run"
+
"bash -c \"wl-paste --watch cliphist store &\""
];
}
// keybinds
+1
nixosModules/default-config/nixpkgsConfig.nix
···
inputs.self.overlays.openssh-fixperms
inputs.self.overlays.hy3-fixes
inputs.golink.overlays.default
+
inputs.quickshell.overlays.default
];
config = {
allowUnfree = true;
nixosModules/homes/thehedgehog-zaphod/caelestia-cli.json homeModules/programs/caelestia/caelestia-cli.json
nixosModules/homes/thehedgehog-zaphod/caelestia-shell.json homeModules/programs/caelestia/caelestia-shell.json
+12 -12
nixosModules/homes/thehedgehog-zaphod/default.nix
···
{
pkgs,
+
lib,
inputs,
...
}:
+
let
+
shell = "dms";
+
in
{
home-manager.users.thehedgehog = {
-
imports = [
-
inputs.caelestia.homeManagerModules.default
-
];
home.packages = [
pkgs.mindustry
pkgs.signal-desktop
···
GDK_BACKEND = "wayland,x11,*";
NIXOS_OZONE_WL = "1";
};
-
py.profiles.desktop.enable = true;
-
programs.caelestia = {
+
py.profiles.desktop = {
enable = true;
-
settings = builtins.fromJSON (builtins.readFile ./caelestia-shell.json);
-
systemd = {
-
enable = true;
-
target = "graphical-session.target";
-
};
-
cli.enable = true;
-
cli.settings = builtins.fromJSON (builtins.readFile ./caelestia-cli.json);
+
shell = "dms";
+
};
+
programs.dankMaterialShell.plugins = lib.mkIf (shell == "dms") {
+
dms-wallpaper-shuffler.src = inputs.dms-wp-shuffler;
+
dms-power-usage.src = inputs.dms-power-usage;
+
DankPomodoroTimer.src = "${inputs.dms-plugins}/DankPomodoroTimer";
+
DankBatteryAlerts.src = "${inputs.dms-plugins}/DankBatteryAlerts";
};
};
}